commit be77d03fb71290c4b2e32eccb4eb62fa8de33068 Author: 3minbe <80878623+3minbe@users.noreply.github.com> Date: Fri Jan 3 23:49:59 2025 +0900 First Commit diff --git a/DBC_GUI.py b/DBC_GUI.py new file mode 100644 index 0000000..3763f65 --- /dev/null +++ b/DBC_GUI.py @@ -0,0 +1,98 @@ +import tkinter as tk +from tkinter import filedialog, messagebox +import os +import json +import datetime + +config_file = "config.json" + +def load_last_path(): + if os.path.exists(config_file): + with open(config_file, "r") as f: + config = json.load(f) + return config.get("last_path", os.path.join(os.path.join(os.environ['USERPROFILE']), 'Desktop')) + return os.path.join(os.path.join(os.environ['USERPROFILE']), 'Desktop') + +def save_last_path(path): + with open(config_file, "w") as f: + json.dump({"last_path": path}, f) + +last_path = load_last_path() + +def on_open(): + global last_path + file_paths = filedialog.askopenfilenames( + initialdir=last_path, + filetypes=[("DBC files", "*.dbc"), ("All files", "*.*")] + ) + if file_paths: + last_path = os.path.dirname(file_paths[0]) + save_last_path(last_path) + + existing_files = [chk.cget("text") for chk in file_listbox_inner.winfo_children() if isinstance(chk, tk.Checkbutton)] + + for file_path in file_paths: + file_name = os.path.basename(file_path) + if file_name in existing_files: + messagebox.showwarning("경고", f"동일한 파일이 존재합니다 \n\n {file_name}") + else: + var = tk.BooleanVar() + chk = tk.Checkbutton(file_listbox_inner, text=file_name, variable=var, anchor='w', bg=file_listbox.cget("bg")) + chk.var = var + chk.pack(anchor='w', fill=tk.X, padx=5, pady=2) + separator = tk.Frame(file_listbox_inner, height=1, bg="gray", width=760) + separator.pack(fill=tk.X, padx=5, pady=2) + + setList(file_paths, file_listbox_inner) + +def setList(file_paths, tree): + for file_path in file_paths: + dir, file = os.path.split(file_path) + fsize = os.path.getsize(file_path) + mtime = os.path.getmtime(file_path) + mtimestamp = datetime.datetime.fromtimestamp(int(mtime)) + + tree.insert('', 'end', values=(file, file, dir, str(fsize), str(mtimestamp))) + +def on_exit(): + root.destroy() + +root = tk.Tk() +root.title("DBC to C Converter") +root.geometry("1000x800") # 창 크기 설정 + +# ...existing code... + +top_frame = tk.Frame(root) +top_frame.pack(side=tk.TOP, anchor="ne") + +convert_button = tk.Button(top_frame, text="변환") +convert_button.pack(side=tk.RIGHT) + +exit_button = tk.Button(top_frame, text="종료", command=on_exit) +exit_button.pack(side=tk.RIGHT) + +middle_frame = tk.Frame(root) +middle_frame.pack(expand=True) + +file_listbox = tk.Canvas(middle_frame, width=780, bd=2, relief=tk.SOLID) +file_listbox.pack(side=tk.LEFT, fill=tk.Y, expand=False, padx=10, pady=10) + +file_listbox_inner = tk.Frame(file_listbox, padx=5, pady=5, bg=file_listbox.cget("bg")) +file_listbox.create_window((0, 0), window=file_listbox_inner, anchor='nw') + +# 기본 구분선 추가 +separator = tk.Frame(file_listbox_inner, height=1, bg="gray", width=780) +separator.pack(fill=tk.X, padx=5, pady=2) + +scrollbar_listbox = tk.Scrollbar(middle_frame, orient=tk.HORIZONTAL, command=file_listbox.xview) +scrollbar_listbox.pack(side=tk.BOTTOM, fill=tk.X) +scrollbar_listbox.config(width=20) # 스크롤바 너비 설정 +file_listbox.config(xscrollcommand=scrollbar_listbox.set) + +open_button = tk.Button(middle_frame, text="추가", command=on_open) +open_button.pack(side=tk.LEFT) + +# ...existing code... + +root.mainloop() diff --git a/Test.py b/Test.py new file mode 100644 index 0000000..ee614c4 --- /dev/null +++ b/Test.py @@ -0,0 +1,202 @@ +import os +import tkinter as tk +from tkinter import filedialog, ttk +from tkinter import messagebox +from datetime import datetime + +class MainView(tk.Tk): + def __init__(self): + super().__init__() + self.setupUI() + self.setButtons() + self.sortTreeView('파일명', True) # 기본 파일명 오름차순 정렬 + + def setupUI(self): + self.title("DBC to C Converter") + self.geometry("800x600") + + self.tree = ttk.Treeview(self, columns=('파일명', '파일경로', '파일크기'), show='headings') + self.tree.heading('파일명', text='파일명', command=lambda: self.sortTreeView('파일명', False)) + self.tree.heading('파일경로', text='파일경로', command=lambda: self.sortTreeView('파일경로', False)) + self.tree.heading('파일크기', text='파일크기', command=lambda: self.sortTreeView('파일크기', False)) + self.tree.pack(fill=tk.BOTH, expand=True) + + for col in self.tree['columns']: + if col == '파일크기': + self.tree.column(col, width=100, stretch=tk.NO) # 파일크기 열의 너비를 작게 설정 + else: + self.tree.column(col, stretch=tk.YES) + + self.tree.bind("", self.onTreeMotion) + self.tree.bind("", self.onTreeLeave) # 마우스가 Treeview를 떠날 때 이벤트 바인딩 + self.tree.bind("", self.onTreeDoubleClick) # 더블클릭 이벤트 바인딩 + self.tree.bind("", self.onRightClick) # 우클릭 이벤트 바인딩 + + self.alert_frame = tk.Frame(self) + self.alert_frame.pack(fill=tk.BOTH, expand=True) + + self.alert_text = tk.Text(self.alert_frame, height=5, state='disabled', wrap='word') + self.alert_text.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) + self.alert_text.tag_configure("spacing", spacing3=10) # 행 간격 설정 + + self.scrollbar = tk.Scrollbar(self.alert_frame, command=self.alert_text.yview) + self.scrollbar.pack(side=tk.RIGHT, fill=tk.Y) + self.alert_text.config(yscrollcommand=self.scrollbar.set) + + self.button_frame = tk.Frame(self) + self.button_frame.pack(fill=tk.X) + + self.btn_list = tk.Button(self.button_frame, text="파일 추가", command=self.FilesOpen) + self.btn_list.grid(row=0, column=0, padx=5, pady=5) + + self.btn_delete = tk.Button(self.button_frame, text="파일 삭제", command=self.deleteSelectedFiles) + self.btn_delete.grid(row=0, column=1, padx=5, pady=5) + + self.btn_delete_all = tk.Button(self.button_frame, text="모든 파일 삭제", command=self.deleteAllFiles) + self.btn_delete_all.grid(row=0, column=2, padx=5, pady=5) + + self.btn_clear_alerts = tk.Button(self.button_frame, text="알림창 내용 삭제", command=self.clearAlerts) + self.btn_clear_alerts.grid(row=0, column=3, padx=5, pady=5) + + self.tree.bind("", self.onTreeClick) + + def setButtons(self): + self.btn_list.config(command=self.FilesOpen) + self.btn_delete.config(command=self.deleteSelectedFiles) + self.btn_delete_all.config(command=self.deleteAllFiles) + self.btn_clear_alerts.config(command=self.clearAlerts) + + def FilesOpen(self): + file_paths = filedialog.askopenfilenames( + filetypes=[("DBC 파일", "*.dbc"), ("모든 파일", "*.*")] + ) + if file_paths: + existing_files = [self.tree.item(item, 'values')[0] for item in self.tree.get_children()] + duplicate_files = [os.path.split(file_path)[1] for file_path in file_paths if os.path.split(file_path)[1] in existing_files] + new_files = [file_path for file_path in file_paths if os.path.split(file_path)[1] not in existing_files] + + if duplicate_files: + self.showDuplicateFilesWarning(duplicate_files, new_files, [os.path.split(file_path)[1] for file_path in new_files]) + self.updateAlertText(f"중복 파일 경고", duplicate_files) + if new_files: + self.populateTreeView(new_files) + self.updateAlertText(f"파일 추가 완료", [os.path.split(file_path)[1] for file_path in new_files]) + + def deleteSelectedFiles(self): + selected_items = self.tree.selection() + deleted_files = [self.tree.item(item, 'values')[0] for item in selected_items] # 파일 이름으로 변경 + for item in selected_items: + self.tree.delete(item) + self.updateAlertText(f"파일 삭제 완료", deleted_files) + + def deleteAllFiles(self): + all_items = self.tree.get_children() + deleted_files = [self.tree.item(item, 'values')[0] for item in all_items] + for item in all_items: + self.tree.delete(item) + self.updateAlertText(f"모든 파일 삭제 완료", deleted_files) + + def clearAlerts(self): + self.alert_text.config(state='normal') + self.alert_text.delete('1.0', tk.END) + self.alert_text.config(state='disabled') + + def onTreeClick(self, event): + if self.tree.identify_region(event.x, event.y) == "nothing": + self.tree.selection_remove(self.tree.selection()) + + def onTreeMotion(self, event): + if hasattr(self.tree, 'tooltip'): + self.tree.tooltip.destroy() + region = self.tree.identify_region(event.x, event.y) + if region == "cell": + column = self.tree.identify_column(event.x) + item = self.tree.identify_row(event.y) + if column in ('#1', '#2'): # 파일명, 파일경로 열에 대해서만 툴팁 표시 + value = self.tree.item(item, "values")[int(column[1:]) - 1] + self.tree.tooltip = tk.Toplevel(self.tree) + self.tree.tooltip.wm_overrideredirect(True) + self.tree.tooltip.wm_geometry(f"+{event.x_root + 20}+{event.y_root + 10}") + label = tk.Label(self.tree.tooltip, text=value, background="yellow", relief="solid", borderwidth=1, font=("Arial", 10, "normal")) + label.pack() + + def onTreeLeave(self, event): + if hasattr(self.tree, 'tooltip'): + self.tree.tooltip.destroy() + + def onTreeDoubleClick(self, event): + region = self.tree.identify_region(event.x, event.y) + if region == "cell": + column = self.tree.identify_column(event.x) + item = self.tree.identify_row(event.y) + values = self.tree.item(item, "values") + if column == '#1': # 파일명을 더블클릭한 경우 + file_path = os.path.join(values[1], values[0]) + os.startfile(file_path) + elif column == '#2': # 경로를 더블클릭한 경우 + os.startfile(values[1]) + + def onRightClick(self, event): + region = self.tree.identify_region(event.x, event.y) + if region == "cell": + column = self.tree.identify_column(event.x) + item = self.tree.identify_row(event.y) + self.tree.selection_set(item) # 우클릭한 항목을 선택 + values = self.tree.item(item, "values") + menu = tk.Menu(self, tearoff=0) + menu.add_command(label="파일 열기", command=lambda: os.startfile(os.path.join(values[1], values[0]))) + menu.add_command(label="폴더 열기", command=lambda: os.startfile(values[1])) + menu.add_command(label="경로 복사", command=lambda: self.clipboard_append(os.path.join(values[1], values[0]))) + menu.add_command(label="파일 삭제", command=lambda: self.deleteFile(item)) + menu.post(event.x_root, event.y_root) + + def deleteFile(self, item): + file_name = self.tree.item(item, 'values')[0] + self.tree.delete(item) + self.updateAlertText(f"파일 삭제 완료", [file_name]) + + def populateTreeView(self, file_paths): + def format_file_size(size_in_bytes): + size_in_kb = size_in_bytes / 1024 + return f"{size_in_kb:.2f} KB" + + for file_path in file_paths: + directory, file = os.path.split(file_path) + fsize = format_file_size(os.path.getsize(file_path)) + self.tree.insert('', 'end', values=(file, directory, fsize)) + + def updateAlertText(self, message, file_list): + current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") + self.alert_text.config(state='normal') + self.alert_text.insert(tk.END, f"[{current_time}] {message}\n", "spacing") + for file in file_list: + self.alert_text.insert(tk.END, f" - {file}\n", "spacing") + self.alert_text.config(state='disabled') + self.alert_text.see(tk.END) + + def showDuplicateFilesWarning(self, duplicate_files, new_files, new_files_names): + duplicate_files_str = "\n".join(duplicate_files) + new_files_str = "\n".join(new_files_names) + if new_files: + messagebox.showwarning("중복 파일 경고", f"중복 파일이 존재합니다\n\n{duplicate_files_str}\n\n\n중복 파일을 제외한 신규 파일을 추가합니다\n\n{new_files_str}", parent=self) + else: + messagebox.showwarning("중복 파일 경고", f"중복 파일이 존재합합니다\n\n{duplicate_files_str}", parent=self) + + def sortTreeView(self, col, reverse): + items = [(self.tree.set(k, col), k) for k in self.tree.get_children('')] + items.sort(reverse=reverse) + + for index, (val, k) in enumerate(items): + self.tree.move(k, '', index) + + # 헤딩에 삼각형 추가 + for col_name in self.tree['columns']: + if col_name == col: + direction = '▲' if reverse else '▼' + self.tree.heading(col_name, text=f"{col_name} {direction}", command=lambda _col=col_name: self.sortTreeView(_col, not reverse)) + else: + self.tree.heading(col_name, text=col_name, command=lambda _col=col_name: self.sortTreeView(_col, False)) + +if __name__ == '__main__': + app = MainView() + app.mainloop() \ No newline at end of file diff --git a/venv/Lib/site-packages/PIL/BdfFontFile.py b/venv/Lib/site-packages/PIL/BdfFontFile.py new file mode 100644 index 0000000..bc1416c --- /dev/null +++ b/venv/Lib/site-packages/PIL/BdfFontFile.py @@ -0,0 +1,133 @@ +# +# 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 __future__ import annotations + +from typing import BinaryIO + +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: BinaryIO, +) -> ( + tuple[ + str, + int, + tuple[tuple[int, int], tuple[int, int, int, int], tuple[int, int, int, int]], + Image.Image, + ] + | None +): + # 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 = bytearray() + while True: + s = f.readline() + if not s or s[:7] == b"ENDCHAR": + break + bitmap += s[:-1] + + # The word BBX + # followed by the width in x (BBw), height in y (BBh), + # and x and y displacement (BBxoff0, BByoff0) + # of the lower left corner from the origin of the character. + width, height, x_disp, y_disp = (int(p) for p in props["BBX"].split()) + + # The word DWIDTH + # followed by the width in x and y of the character in device pixels. + dwx, dwy = (int(p) for p in props["DWIDTH"].split()) + + bbox = ( + (dwx, dwy), + (x_disp, -y_disp - height, width + x_disp, -y_disp), + (0, 0, width, height), + ) + + try: + im = Image.frombytes("1", (width, height), bitmap, "hex", "1") + except ValueError: + # deal with zero-width characters + im = Image.new("1", (width, height)) + + return id, int(props["ENCODING"]), bbox, im + + +class BdfFontFile(FontFile.FontFile): + """Font file plugin for the X11 BDF format.""" + + def __init__(self, fp: BinaryIO) -> None: + super().__init__() + + s = fp.readline() + if s[:13] != b"STARTFONT 2.1": + msg = "not a valid BDF file" + raise SyntaxError(msg) + + 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 0000000..c932b3b --- /dev/null +++ b/venv/Lib/site-packages/PIL/BlpImagePlugin.py @@ -0,0 +1,501 @@ +""" +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. +""" + +from __future__ import annotations + +import abc +import os +import struct +from enum import IntEnum +from io import BytesIO +from typing import IO + +from . import Image, ImageFile + + +class Format(IntEnum): + JPEG = 0 + + +class Encoding(IntEnum): + UNCOMPRESSED = 1 + DXT = 2 + UNCOMPRESSED_RAW_BGRA = 3 + + +class AlphaEncoding(IntEnum): + DXT1 = 0 + DXT3 = 1 + DXT5 = 7 + + +def unpack_565(i: int) -> tuple[int, int, int]: + return ((i >> 11) & 0x1F) << 3, ((i >> 5) & 0x3F) << 2, (i & 0x1F) << 3 + + +def decode_dxt1( + data: bytes, alpha: bool = False +) -> tuple[bytearray, bytearray, bytearray, bytearray]: + """ + 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_index in range(blocks): + # Decode next 8-byte block. + idx = block_index * 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: bytes) -> tuple[bytearray, bytearray, bytearray, bytearray]: + """ + 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_index in range(blocks): + idx = block_index * 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: bytes) -> tuple[bytearray, bytearray, bytearray, bytearray]: + """ + 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_index in range(blocks): + idx = block_index * 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 + + +def _accept(prefix: bytes) -> bool: + return prefix[:4] in (b"BLP1", b"BLP2") + + +class BlpImageFile(ImageFile.ImageFile): + """ + Blizzard Mipmap Format + """ + + format = "BLP" + format_description = "Blizzard Mipmap Format" + + def _open(self) -> None: + self.magic = self.fp.read(4) + if not _accept(self.magic): + msg = f"Bad BLP magic {repr(self.magic)}" + raise BLPFormatError(msg) + + compression = struct.unpack(" tuple[int, int]: + try: + self._read_header() + self._load() + except struct.error as e: + msg = "Truncated BLP file" + raise OSError(msg) from e + return -1, 0 + + @abc.abstractmethod + def _load(self) -> None: + pass + + def _read_header(self) -> None: + self._offsets = struct.unpack("<16I", self._safe_read(16 * 4)) + self._lengths = struct.unpack("<16I", self._safe_read(16 * 4)) + + def _safe_read(self, length: int) -> bytes: + assert self.fd is not None + return ImageFile._safe_read(self.fd, length) + + def _read_palette(self) -> list[tuple[int, int, int, int]]: + ret = [] + for i in range(256): + try: + b, g, r, a = struct.unpack("<4B", self._safe_read(4)) + except struct.error: + break + ret.append((b, g, r, a)) + return ret + + def _read_bgra( + self, palette: list[tuple[int, int, int, int]], alpha: bool + ) -> bytearray: + data = bytearray() + _data = BytesIO(self._safe_read(self._lengths[0])) + while True: + try: + (offset,) = struct.unpack(" None: + self._compression, self._encoding, alpha = self.args + + if self._compression == Format.JPEG: + self._decode_jpeg_stream() + + elif self._compression == 1: + if self._encoding in (4, 5): + palette = self._read_palette() + data = self._read_bgra(palette, alpha) + self.set_as_raw(data) + else: + msg = f"Unsupported BLP encoding {repr(self._encoding)}" + raise BLPFormatError(msg) + else: + msg = f"Unsupported BLP compression {repr(self._encoding)}" + raise BLPFormatError(msg) + + def _decode_jpeg_stream(self) -> None: + from .JpegImagePlugin import JpegImageFile + + (jpeg_header_size,) = struct.unpack(" None: + self._compression, self._encoding, alpha, self._alpha_encoding = self.args + + palette = self._read_palette() + + assert self.fd is not None + self.fd.seek(self._offsets[0]) + + if self._compression == 1: + # Uncompressed or DirectX compression + + if self._encoding == Encoding.UNCOMPRESSED: + data = self._read_bgra(palette, alpha) + + elif self._encoding == Encoding.DXT: + data = bytearray() + if self._alpha_encoding == AlphaEncoding.DXT1: + linesize = (self.state.xsize + 3) // 4 * 8 + for yb in range((self.state.ysize + 3) // 4): + for d in decode_dxt1(self._safe_read(linesize), alpha): + data += d + + elif self._alpha_encoding == AlphaEncoding.DXT3: + linesize = (self.state.xsize + 3) // 4 * 16 + for yb in range((self.state.ysize + 3) // 4): + for d in decode_dxt3(self._safe_read(linesize)): + data += d + + elif self._alpha_encoding == AlphaEncoding.DXT5: + linesize = (self.state.xsize + 3) // 4 * 16 + for yb in range((self.state.ysize + 3) // 4): + for d in decode_dxt5(self._safe_read(linesize)): + data += d + else: + msg = f"Unsupported alpha encoding {repr(self._alpha_encoding)}" + raise BLPFormatError(msg) + else: + msg = f"Unknown BLP encoding {repr(self._encoding)}" + raise BLPFormatError(msg) + + else: + msg = f"Unknown BLP compression {repr(self._compression)}" + raise BLPFormatError(msg) + + self.set_as_raw(data) + + +class BLPEncoder(ImageFile.PyEncoder): + _pushes_fd = True + + def _write_palette(self) -> bytes: + data = b"" + assert self.im is not None + palette = self.im.getpalette("RGBA", "RGBA") + for i in range(len(palette) // 4): + r, g, b, a = palette[i * 4 : (i + 1) * 4] + data += struct.pack("<4B", b, g, r, a) + while len(data) < 256 * 4: + data += b"\x00" * 4 + return data + + def encode(self, bufsize: int) -> tuple[int, int, bytes]: + palette_data = self._write_palette() + + offset = 20 + 16 * 4 * 2 + len(palette_data) + data = struct.pack("<16I", offset, *((0,) * 15)) + + assert self.im is not None + w, h = self.im.size + data += struct.pack("<16I", w * h, *((0,) * 15)) + + data += palette_data + + for y in range(h): + for x in range(w): + data += struct.pack(" None: + if im.mode != "P": + msg = "Unsupported BLP image mode" + raise ValueError(msg) + + magic = b"BLP1" if im.encoderinfo.get("blp_version") == "BLP1" else b"BLP2" + fp.write(magic) + + assert im.palette is not None + fp.write(struct.pack(" 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: bytes) -> bool: + return prefix[:2] == b"BM" + + +def _dib_accept(prefix: bytes) -> bool: + return i32(prefix) in [12, 40, 52, 56, 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: int = 0, offset: int = 0) -> None: + """Read relevant info about the BMP""" + read, seek = self.fp.read, self.fp.seek + if header: + seek(header) + # read bmp header size @offset 14 (this is part of the header size) + file_info: dict[str, bool | int | tuple[int, ...]] = { + "header_size": i32(read(4)), + "direction": -1, + } + + # -------------------- If requested, read header at a specific position + # read the rest of the bmp header, without its size + assert isinstance(file_info["header_size"], int) + header_data = ImageFile._safe_read(self.fp, file_info["header_size"] - 4) + + # ------------------------------- Windows Bitmap v2, IBM OS/2 Bitmap v1 + # ----- This format has different offsets because of width/height types + # 12: BITMAPCOREHEADER/OS21XBITMAPHEADER + if file_info["header_size"] == 12: + file_info["width"] = i16(header_data, 0) + file_info["height"] = i16(header_data, 2) + file_info["planes"] = i16(header_data, 4) + file_info["bits"] = i16(header_data, 6) + file_info["compression"] = self.COMPRESSIONS["RAW"] + file_info["palette_padding"] = 3 + + # --------------------------------------------- Windows Bitmap v3 to v5 + # 40: BITMAPINFOHEADER + # 52: BITMAPV2HEADER + # 56: BITMAPV3HEADER + # 64: BITMAPCOREHEADER2/OS22XBITMAPHEADER + # 108: BITMAPV4HEADER + # 124: BITMAPV5HEADER + elif file_info["header_size"] in (40, 52, 56, 64, 108, 124): + file_info["y_flip"] = header_data[7] == 0xFF + file_info["direction"] = 1 if file_info["y_flip"] else -1 + file_info["width"] = i32(header_data, 0) + file_info["height"] = ( + i32(header_data, 4) + if not file_info["y_flip"] + else 2**32 - i32(header_data, 4) + ) + file_info["planes"] = i16(header_data, 8) + file_info["bits"] = i16(header_data, 10) + file_info["compression"] = i32(header_data, 12) + # byte size of pixel data + file_info["data_size"] = i32(header_data, 16) + file_info["pixels_per_meter"] = ( + i32(header_data, 20), + i32(header_data, 24), + ) + file_info["colors"] = i32(header_data, 28) + file_info["palette_padding"] = 4 + assert isinstance(file_info["pixels_per_meter"], tuple) + self.info["dpi"] = tuple(x / 39.3701 for x in file_info["pixels_per_meter"]) + if file_info["compression"] == self.COMPRESSIONS["BITFIELDS"]: + masks = ["r_mask", "g_mask", "b_mask"] + if len(header_data) >= 48: + if len(header_data) >= 52: + masks.append("a_mask") + else: + file_info["a_mask"] = 0x0 + for idx, mask in enumerate(masks): + file_info[mask] = i32(header_data, 36 + 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 masks: + file_info[mask] = i32(read(4)) + assert isinstance(file_info["r_mask"], int) + assert isinstance(file_info["g_mask"], int) + assert isinstance(file_info["b_mask"], int) + assert isinstance(file_info["a_mask"], int) + 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: + msg = f"Unsupported BMP header type ({file_info['header_size']})" + raise OSError(msg) + + # ------------------ Special case : header is reported 40, which + # ---------------------- is shorter than real size for bpp >= 16 + assert isinstance(file_info["width"], int) + assert isinstance(file_info["height"], int) + self._size = file_info["width"], file_info["height"] + + # ------- If color count was not found in the header, compute from bits + assert isinstance(file_info["bits"], int) + file_info["colors"] = ( + file_info["colors"] + if file_info.get("colors", 0) + else (1 << file_info["bits"]) + ) + assert isinstance(file_info["colors"], int) + if offset == 14 + file_info["header_size"] and file_info["bits"] <= 8: + offset += 4 * file_info["colors"] + + # ---------------------- Check bit depth for unusual unsupported values + self._mode, raw_mode = BIT2MODE.get(file_info["bits"], ("", "")) + if not self.mode: + msg = f"Unsupported BMP pixel depth ({file_info['bits']})" + raise OSError(msg) + + # ---------------- Process BMP with Bitfields compression (not palette) + decoder_name = "raw" + if file_info["compression"] == self.COMPRESSIONS["BITFIELDS"]: + SUPPORTED: dict[int, list[tuple[int, ...]]] = { + 32: [ + (0xFF0000, 0xFF00, 0xFF, 0x0), + (0xFF000000, 0xFF0000, 0xFF00, 0x0), + (0xFF000000, 0xFF00, 0xFF, 0x0), + (0xFF000000, 0xFF0000, 0xFF00, 0xFF), + (0xFF, 0xFF00, 0xFF0000, 0xFF000000), + (0xFF0000, 0xFF00, 0xFF, 0xFF000000), + (0xFF000000, 0xFF00, 0xFF, 0xFF0000), + (0x0, 0x0, 0x0, 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, (0xFF000000, 0xFF00, 0xFF, 0x0)): "BGXR", + (32, (0xFF000000, 0xFF0000, 0xFF00, 0xFF)): "ABGR", + (32, (0xFF, 0xFF00, 0xFF0000, 0xFF000000)): "RGBA", + (32, (0xFF0000, 0xFF00, 0xFF, 0xFF000000)): "BGRA", + (32, (0xFF000000, 0xFF00, 0xFF, 0xFF0000)): "BGAR", + (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"]] + ): + assert isinstance(file_info["rgba_mask"], tuple) + 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"]] + ): + assert isinstance(file_info["rgb_mask"], tuple) + raw_mode = MASK_MODES[(file_info["bits"], file_info["rgb_mask"])] + else: + msg = "Unsupported BMP bitfields layout" + raise OSError(msg) + else: + msg = "Unsupported BMP bitfields layout" + raise OSError(msg) + elif file_info["compression"] == self.COMPRESSIONS["RAW"]: + if file_info["bits"] == 32 and header == 22: # 32-bit .cur offset + raw_mode, self._mode = "BGRA", "RGBA" + elif file_info["compression"] in ( + self.COMPRESSIONS["RLE8"], + self.COMPRESSIONS["RLE4"], + ): + decoder_name = "bmp_rle" + else: + msg = f"Unsupported BMP compression ({file_info['compression']})" + raise OSError(msg) + + # --------------- 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): + msg = f"Unsupported BMP Palette size ({file_info['colors']})" + raise OSError(msg) + else: + assert isinstance(file_info["palette_padding"], int) + padding = file_info["palette_padding"] + palette = read(padding * file_info["colors"]) + grayscale = True + indices = ( + (0, 255) + if file_info["colors"] == 2 + else list(range(file_info["colors"])) + ) + + # ----------------- Check if grayscale and ignore palette if so + for ind, val in enumerate(indices): + rgb = palette[ind * padding : ind * padding + 3] + if rgb != o8(val) * 3: + grayscale = False + + # ------- If all colors are gray, white or black, ditch palette + if grayscale: + 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"] + args: list[Any] = [raw_mode] + if decoder_name == "bmp_rle": + args.append(file_info["compression"] == self.COMPRESSIONS["RLE4"]) + else: + assert isinstance(file_info["width"], int) + args.append(((file_info["width"] * file_info["bits"] + 31) >> 3) & (~3)) + args.append(file_info["direction"]) + self.tile = [ + ImageFile._Tile( + decoder_name, + (0, 0, file_info["width"], file_info["height"]), + offset or self.fp.tell(), + tuple(args), + ) + ] + + def _open(self) -> None: + """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): + msg = "Not a BMP file" + raise SyntaxError(msg) + # read the start position of the BMP image data (u32) + offset = i32(head_data, 10) + # load bitmap information (offset=raster info) + self._bitmap(offset=offset) + + +class BmpRleDecoder(ImageFile.PyDecoder): + _pulls_fd = True + + def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]: + assert self.fd is not None + rle4 = self.args[1] + data = bytearray() + x = 0 + dest_length = self.state.xsize * self.state.ysize + while len(data) < dest_length: + pixels = self.fd.read(1) + byte = self.fd.read(1) + if not pixels or not byte: + break + num_pixels = pixels[0] + if num_pixels: + # encoded mode + if x + num_pixels > self.state.xsize: + # Too much data for row + num_pixels = max(0, self.state.xsize - x) + if rle4: + first_pixel = o8(byte[0] >> 4) + second_pixel = o8(byte[0] & 0x0F) + for index in range(num_pixels): + if index % 2 == 0: + data += first_pixel + else: + data += second_pixel + else: + data += byte * num_pixels + x += num_pixels + else: + if byte[0] == 0: + # end of line + while len(data) % self.state.xsize != 0: + data += b"\x00" + x = 0 + elif byte[0] == 1: + # end of bitmap + break + elif byte[0] == 2: + # delta + bytes_read = self.fd.read(2) + if len(bytes_read) < 2: + break + right, up = self.fd.read(2) + data += b"\x00" * (right + up * self.state.xsize) + x = len(data) % self.state.xsize + else: + # absolute mode + if rle4: + # 2 pixels per byte + byte_count = byte[0] // 2 + bytes_read = self.fd.read(byte_count) + for byte_read in bytes_read: + data += o8(byte_read >> 4) + data += o8(byte_read & 0x0F) + else: + byte_count = byte[0] + bytes_read = self.fd.read(byte_count) + data += bytes_read + if len(bytes_read) < byte_count: + break + x += byte[0] + + # align to 16-bit word boundary + if self.fd.tell() % 2 != 0: + self.fd.seek(1, os.SEEK_CUR) + rawmode = "L" if self.mode == "L" else "P" + self.set_as_raw(bytes(data), rawmode, (0, self.args[-1])) + return -1, 0 + + +# ============================================================================= +# Image plugin for the DIB format (BMP alias) +# ============================================================================= +class DibImageFile(BmpImageFile): + format = "DIB" + format_description = "Windows Bitmap" + + def _open(self) -> None: + 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: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + _save(im, fp, filename, False) + + +def _save( + im: Image.Image, fp: IO[bytes], filename: str | bytes, bitmap_header: bool = True +) -> None: + try: + rawmode, bits, colors = SAVE[im.mode] + except KeyError as e: + msg = f"cannot write mode {im.mode} as BMP" + raise OSError(msg) from e + + info = im.encoderinfo + + dpi = info.get("dpi", (96, 96)) + + # 1 meter == 39.3701 inches + ppm = tuple(int(x * 39.3701 + 0.5) for x in dpi) + + stride = ((im.size[0] * bits + 7) // 8 + 3) & (~3) + header = 40 # or 64 for OS/2 version 2 + image = stride * im.size[1] + + if im.mode == "1": + palette = b"".join(o8(i) * 4 for i in (0, 255)) + elif im.mode == "L": + palette = b"".join(o8(i) * 4 for i in range(256)) + elif im.mode == "P": + palette = im.im.getpalette("RGB", "BGRX") + colors = len(palette) // 4 + else: + palette = None + + # bitmap header + if bitmap_header: + offset = 14 + header + colors * 4 + file_size = offset + image + if file_size > 2**32 - 1: + msg = "File size is too large for the BMP format" + raise ValueError(msg) + 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 palette: + fp.write(palette) + + ImageFile._save( + im, fp, [ImageFile._Tile("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_decoder("bmp_rle", BmpRleDecoder) + +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 0000000..0ee2f65 --- /dev/null +++ b/venv/Lib/site-packages/PIL/BufrStubImagePlugin.py @@ -0,0 +1,76 @@ +# +# 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 __future__ import annotations + +from typing import IO + +from . import Image, ImageFile + +_handler = None + + +def register_handler(handler: ImageFile.StubHandler | None) -> None: + """ + Install application-specific BUFR image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +# -------------------------------------------------------------------- +# Image adapter + + +def _accept(prefix: bytes) -> bool: + return prefix[:4] == b"BUFR" or prefix[:4] == b"ZCZC" + + +class BufrStubImageFile(ImageFile.StubImageFile): + format = "BUFR" + format_description = "BUFR" + + def _open(self) -> None: + offset = self.fp.tell() + + if not _accept(self.fp.read(4)): + msg = "Not a BUFR file" + raise SyntaxError(msg) + + 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) -> ImageFile.StubHandler | None: + return _handler + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if _handler is None or not hasattr(_handler, "save"): + msg = "BUFR save handler not installed" + raise OSError(msg) + _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 0000000..ec9e66c --- /dev/null +++ b/venv/Lib/site-packages/PIL/ContainerIO.py @@ -0,0 +1,173 @@ +# +# 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. +# +from __future__ import annotations + +import io +from collections.abc import Iterable +from typing import IO, AnyStr, NoReturn + + +class ContainerIO(IO[AnyStr]): + """ + A file object that provides read access to a part of an existing + file (for example a TAR file). + """ + + def __init__(self, file: IO[AnyStr], offset: int, length: int) -> None: + """ + Create file object. + + :param file: Existing file. + :param offset: Start of region, in bytes. + :param length: Size of region, in bytes. + """ + self.fh: IO[AnyStr] = file + self.pos = 0 + self.offset = offset + self.length = length + self.fh.seek(offset) + + ## + # Always false. + + def isatty(self) -> bool: + return False + + def seekable(self) -> bool: + return True + + def seek(self, offset: int, mode: int = io.SEEK_SET) -> int: + """ + 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. + :returns: Offset from start of region, in bytes. + """ + 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) + return self.pos + + def tell(self) -> int: + """ + Get current file pointer. + + :returns: Offset from start of region, in bytes. + """ + return self.pos + + def readable(self) -> bool: + return True + + def read(self, n: int = -1) -> AnyStr: + """ + Read data. + + :param n: Number of bytes to read. If omitted, zero or negative, + read until end of region. + :returns: An 8-bit string. + """ + if n > 0: + n = min(n, self.length - self.pos) + else: + n = self.length - self.pos + if n <= 0: # EOF + return b"" if "b" in self.fh.mode else "" # type: ignore[return-value] + self.pos = self.pos + n + return self.fh.read(n) + + def readline(self, n: int = -1) -> AnyStr: + """ + Read a line of text. + + :param n: Number of bytes to read. If omitted, zero or negative, + read until end of line. + :returns: An 8-bit string. + """ + s: AnyStr = b"" if "b" in self.fh.mode else "" # type: ignore[assignment] + 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 or len(s) == n: + break + return s + + def readlines(self, n: int | None = -1) -> list[AnyStr]: + """ + Read multiple lines of text. + + :param n: Number of lines to read. If omitted, zero, negative or None, + read until end of region. + :returns: A list of 8-bit strings. + """ + lines = [] + while True: + s = self.readline() + if not s: + break + lines.append(s) + if len(lines) == n: + break + return lines + + def writable(self) -> bool: + return False + + def write(self, b: AnyStr) -> NoReturn: + raise NotImplementedError() + + def writelines(self, lines: Iterable[AnyStr]) -> NoReturn: + raise NotImplementedError() + + def truncate(self, size: int | None = None) -> int: + raise NotImplementedError() + + def __enter__(self) -> ContainerIO[AnyStr]: + return self + + def __exit__(self, *args: object) -> None: + self.close() + + def __iter__(self) -> ContainerIO[AnyStr]: + return self + + def __next__(self) -> AnyStr: + line = self.readline() + if not line: + msg = "end of region" + raise StopIteration(msg) + return line + + def fileno(self) -> int: + return self.fh.fileno() + + def flush(self) -> None: + self.fh.flush() + + def close(self) -> None: + self.fh.close() diff --git a/venv/Lib/site-packages/PIL/CurImagePlugin.py b/venv/Lib/site-packages/PIL/CurImagePlugin.py new file mode 100644 index 0000000..c4be0ce --- /dev/null +++ b/venv/Lib/site-packages/PIL/CurImagePlugin.py @@ -0,0 +1,75 @@ +# +# 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 __future__ import annotations + +from . import BmpImagePlugin, Image, ImageFile +from ._binary import i16le as i16 +from ._binary import i32le as i32 + +# +# -------------------------------------------------------------------- + + +def _accept(prefix: bytes) -> bool: + 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) -> None: + offset = self.fp.tell() + + # check magic + s = self.fp.read(6) + if not _accept(s): + msg = "not a CUR file" + raise SyntaxError(msg) + + # 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 s[0] > m[0] and s[1] > m[1]: + m = s + if not m: + msg = "No cursors were found" + raise TypeError(msg) + + # 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] = ImageFile._Tile(d, (0, 0) + self.size, o, a) + + +# +# -------------------------------------------------------------------- + +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 0000000..f67f27d --- /dev/null +++ b/venv/Lib/site-packages/PIL/DcxImagePlugin.py @@ -0,0 +1,80 @@ +# +# 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 __future__ import annotations + +from . import Image +from ._binary import i32le as i32 +from .PcxImagePlugin import PcxImageFile + +MAGIC = 0x3ADE68B1 # QUIZ: what's this value, then? + + +def _accept(prefix: bytes) -> bool: + 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) -> None: + # Header + s = self.fp.read(4) + if not _accept(s): + msg = "not a DCX file" + raise SyntaxError(msg) + + # 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 = -1 + self.n_frames = len(self._offset) + self.is_animated = self.n_frames > 1 + self.seek(0) + + def seek(self, frame: int) -> None: + 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) -> int: + return self.frame + + +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 0000000..9349e28 --- /dev/null +++ b/venv/Lib/site-packages/PIL/DdsImagePlugin.py @@ -0,0 +1,573 @@ +""" +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/ +""" + +from __future__ import annotations + +import io +import struct +import sys +from enum import IntEnum, IntFlag +from typing import IO + +from . import Image, ImageFile, ImagePalette +from ._binary import i32le as i32 +from ._binary import o8 +from ._binary import o32le as o32 + +# Magic ("DDS ") +DDS_MAGIC = 0x20534444 + + +# DDS flags +class DDSD(IntFlag): + CAPS = 0x1 + HEIGHT = 0x2 + WIDTH = 0x4 + PITCH = 0x8 + PIXELFORMAT = 0x1000 + MIPMAPCOUNT = 0x20000 + LINEARSIZE = 0x80000 + DEPTH = 0x800000 + + +# DDS caps +class DDSCAPS(IntFlag): + COMPLEX = 0x8 + TEXTURE = 0x1000 + MIPMAP = 0x400000 + + +class DDSCAPS2(IntFlag): + CUBEMAP = 0x200 + CUBEMAP_POSITIVEX = 0x400 + CUBEMAP_NEGATIVEX = 0x800 + CUBEMAP_POSITIVEY = 0x1000 + CUBEMAP_NEGATIVEY = 0x2000 + CUBEMAP_POSITIVEZ = 0x4000 + CUBEMAP_NEGATIVEZ = 0x8000 + VOLUME = 0x200000 + + +# Pixel Format +class DDPF(IntFlag): + ALPHAPIXELS = 0x1 + ALPHA = 0x2 + FOURCC = 0x4 + PALETTEINDEXED8 = 0x20 + RGB = 0x40 + LUMINANCE = 0x20000 + + +# dxgiformat.h +class DXGI_FORMAT(IntEnum): + UNKNOWN = 0 + R32G32B32A32_TYPELESS = 1 + R32G32B32A32_FLOAT = 2 + R32G32B32A32_UINT = 3 + R32G32B32A32_SINT = 4 + R32G32B32_TYPELESS = 5 + R32G32B32_FLOAT = 6 + R32G32B32_UINT = 7 + R32G32B32_SINT = 8 + R16G16B16A16_TYPELESS = 9 + R16G16B16A16_FLOAT = 10 + R16G16B16A16_UNORM = 11 + R16G16B16A16_UINT = 12 + R16G16B16A16_SNORM = 13 + R16G16B16A16_SINT = 14 + R32G32_TYPELESS = 15 + R32G32_FLOAT = 16 + R32G32_UINT = 17 + R32G32_SINT = 18 + R32G8X24_TYPELESS = 19 + D32_FLOAT_S8X24_UINT = 20 + R32_FLOAT_X8X24_TYPELESS = 21 + X32_TYPELESS_G8X24_UINT = 22 + R10G10B10A2_TYPELESS = 23 + R10G10B10A2_UNORM = 24 + R10G10B10A2_UINT = 25 + R11G11B10_FLOAT = 26 + R8G8B8A8_TYPELESS = 27 + R8G8B8A8_UNORM = 28 + R8G8B8A8_UNORM_SRGB = 29 + R8G8B8A8_UINT = 30 + R8G8B8A8_SNORM = 31 + R8G8B8A8_SINT = 32 + R16G16_TYPELESS = 33 + R16G16_FLOAT = 34 + R16G16_UNORM = 35 + R16G16_UINT = 36 + R16G16_SNORM = 37 + R16G16_SINT = 38 + R32_TYPELESS = 39 + D32_FLOAT = 40 + R32_FLOAT = 41 + R32_UINT = 42 + R32_SINT = 43 + R24G8_TYPELESS = 44 + D24_UNORM_S8_UINT = 45 + R24_UNORM_X8_TYPELESS = 46 + X24_TYPELESS_G8_UINT = 47 + R8G8_TYPELESS = 48 + R8G8_UNORM = 49 + R8G8_UINT = 50 + R8G8_SNORM = 51 + R8G8_SINT = 52 + R16_TYPELESS = 53 + R16_FLOAT = 54 + D16_UNORM = 55 + R16_UNORM = 56 + R16_UINT = 57 + R16_SNORM = 58 + R16_SINT = 59 + R8_TYPELESS = 60 + R8_UNORM = 61 + R8_UINT = 62 + R8_SNORM = 63 + R8_SINT = 64 + A8_UNORM = 65 + R1_UNORM = 66 + R9G9B9E5_SHAREDEXP = 67 + R8G8_B8G8_UNORM = 68 + G8R8_G8B8_UNORM = 69 + BC1_TYPELESS = 70 + BC1_UNORM = 71 + BC1_UNORM_SRGB = 72 + BC2_TYPELESS = 73 + BC2_UNORM = 74 + BC2_UNORM_SRGB = 75 + BC3_TYPELESS = 76 + BC3_UNORM = 77 + BC3_UNORM_SRGB = 78 + BC4_TYPELESS = 79 + BC4_UNORM = 80 + BC4_SNORM = 81 + BC5_TYPELESS = 82 + BC5_UNORM = 83 + BC5_SNORM = 84 + B5G6R5_UNORM = 85 + B5G5R5A1_UNORM = 86 + B8G8R8A8_UNORM = 87 + B8G8R8X8_UNORM = 88 + R10G10B10_XR_BIAS_A2_UNORM = 89 + B8G8R8A8_TYPELESS = 90 + B8G8R8A8_UNORM_SRGB = 91 + B8G8R8X8_TYPELESS = 92 + B8G8R8X8_UNORM_SRGB = 93 + BC6H_TYPELESS = 94 + BC6H_UF16 = 95 + BC6H_SF16 = 96 + BC7_TYPELESS = 97 + BC7_UNORM = 98 + BC7_UNORM_SRGB = 99 + AYUV = 100 + Y410 = 101 + Y416 = 102 + NV12 = 103 + P010 = 104 + P016 = 105 + OPAQUE_420 = 106 + YUY2 = 107 + Y210 = 108 + Y216 = 109 + NV11 = 110 + AI44 = 111 + IA44 = 112 + P8 = 113 + A8P8 = 114 + B4G4R4A4_UNORM = 115 + P208 = 130 + V208 = 131 + V408 = 132 + SAMPLER_FEEDBACK_MIN_MIP_OPAQUE = 189 + SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE = 190 + + +class D3DFMT(IntEnum): + UNKNOWN = 0 + R8G8B8 = 20 + A8R8G8B8 = 21 + X8R8G8B8 = 22 + R5G6B5 = 23 + X1R5G5B5 = 24 + A1R5G5B5 = 25 + A4R4G4B4 = 26 + R3G3B2 = 27 + A8 = 28 + A8R3G3B2 = 29 + X4R4G4B4 = 30 + A2B10G10R10 = 31 + A8B8G8R8 = 32 + X8B8G8R8 = 33 + G16R16 = 34 + A2R10G10B10 = 35 + A16B16G16R16 = 36 + A8P8 = 40 + P8 = 41 + L8 = 50 + A8L8 = 51 + A4L4 = 52 + V8U8 = 60 + L6V5U5 = 61 + X8L8V8U8 = 62 + Q8W8V8U8 = 63 + V16U16 = 64 + A2W10V10U10 = 67 + D16_LOCKABLE = 70 + D32 = 71 + D15S1 = 73 + D24S8 = 75 + D24X8 = 77 + D24X4S4 = 79 + D16 = 80 + D32F_LOCKABLE = 82 + D24FS8 = 83 + D32_LOCKABLE = 84 + S8_LOCKABLE = 85 + L16 = 81 + VERTEXDATA = 100 + INDEX16 = 101 + INDEX32 = 102 + Q16W16V16U16 = 110 + R16F = 111 + G16R16F = 112 + A16B16G16R16F = 113 + R32F = 114 + G32R32F = 115 + A32B32G32R32F = 116 + CxV8U8 = 117 + A1 = 118 + A2B10G10R10_XR_BIAS = 119 + BINARYBUFFER = 199 + + UYVY = i32(b"UYVY") + R8G8_B8G8 = i32(b"RGBG") + YUY2 = i32(b"YUY2") + G8R8_G8B8 = i32(b"GRGB") + DXT1 = i32(b"DXT1") + DXT2 = i32(b"DXT2") + DXT3 = i32(b"DXT3") + DXT4 = i32(b"DXT4") + DXT5 = i32(b"DXT5") + DX10 = i32(b"DX10") + BC4S = i32(b"BC4S") + BC4U = i32(b"BC4U") + BC5S = i32(b"BC5S") + BC5U = i32(b"BC5U") + ATI1 = i32(b"ATI1") + ATI2 = i32(b"ATI2") + MULTI2_ARGB8 = i32(b"MET1") + + +# Backward compatibility layer +module = sys.modules[__name__] +for item in DDSD: + assert item.name is not None + setattr(module, f"DDSD_{item.name}", item.value) +for item1 in DDSCAPS: + assert item1.name is not None + setattr(module, f"DDSCAPS_{item1.name}", item1.value) +for item2 in DDSCAPS2: + assert item2.name is not None + setattr(module, f"DDSCAPS2_{item2.name}", item2.value) +for item3 in DDPF: + assert item3.name is not None + setattr(module, f"DDPF_{item3.name}", item3.value) + +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_FOURCC = D3DFMT.DXT1 +DXT3_FOURCC = D3DFMT.DXT3 +DXT5_FOURCC = D3DFMT.DXT5 + +DXGI_FORMAT_R8G8B8A8_TYPELESS = DXGI_FORMAT.R8G8B8A8_TYPELESS +DXGI_FORMAT_R8G8B8A8_UNORM = DXGI_FORMAT.R8G8B8A8_UNORM +DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = DXGI_FORMAT.R8G8B8A8_UNORM_SRGB +DXGI_FORMAT_BC5_TYPELESS = DXGI_FORMAT.BC5_TYPELESS +DXGI_FORMAT_BC5_UNORM = DXGI_FORMAT.BC5_UNORM +DXGI_FORMAT_BC5_SNORM = DXGI_FORMAT.BC5_SNORM +DXGI_FORMAT_BC6H_UF16 = DXGI_FORMAT.BC6H_UF16 +DXGI_FORMAT_BC6H_SF16 = DXGI_FORMAT.BC6H_SF16 +DXGI_FORMAT_BC7_TYPELESS = DXGI_FORMAT.BC7_TYPELESS +DXGI_FORMAT_BC7_UNORM = DXGI_FORMAT.BC7_UNORM +DXGI_FORMAT_BC7_UNORM_SRGB = DXGI_FORMAT.BC7_UNORM_SRGB + + +class DdsImageFile(ImageFile.ImageFile): + format = "DDS" + format_description = "DirectDraw Surface" + + def _open(self) -> None: + if not _accept(self.fp.read(4)): + msg = "not a DDS file" + raise SyntaxError(msg) + (header_size,) = struct.unpack(" None: + pass + + +class DdsRgbDecoder(ImageFile.PyDecoder): + _pulls_fd = True + + def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]: + assert self.fd is not None + bitcount, masks = self.args + + # Some masks will be padded with zeros, e.g. R 0b11 G 0b1100 + # Calculate how many zeros each mask is padded with + mask_offsets = [] + # And the maximum value of each channel without the padding + mask_totals = [] + for mask in masks: + offset = 0 + if mask != 0: + while mask >> (offset + 1) << (offset + 1) == mask: + offset += 1 + mask_offsets.append(offset) + mask_totals.append(mask >> offset) + + data = bytearray() + bytecount = bitcount // 8 + dest_length = self.state.xsize * self.state.ysize * len(masks) + while len(data) < dest_length: + value = int.from_bytes(self.fd.read(bytecount), "little") + for i, mask in enumerate(masks): + masked_value = value & mask + # Remove the zero padding, and scale it to 8 bits + data += o8( + int(((masked_value >> mask_offsets[i]) / mask_totals[i]) * 255) + ) + self.set_as_raw(data) + return -1, 0 + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if im.mode not in ("RGB", "RGBA", "L", "LA"): + msg = f"cannot write mode {im.mode} as DDS" + raise OSError(msg) + + alpha = im.mode[-1] == "A" + if im.mode[0] == "L": + pixel_flags = DDPF.LUMINANCE + rawmode = im.mode + if alpha: + rgba_mask = [0x000000FF, 0x000000FF, 0x000000FF] + else: + rgba_mask = [0xFF000000, 0xFF000000, 0xFF000000] + else: + pixel_flags = DDPF.RGB + rawmode = im.mode[::-1] + rgba_mask = [0x00FF0000, 0x0000FF00, 0x000000FF] + + if alpha: + r, g, b, a = im.split() + im = Image.merge("RGBA", (a, r, g, b)) + if alpha: + pixel_flags |= DDPF.ALPHAPIXELS + rgba_mask.append(0xFF000000 if alpha else 0) + + flags = DDSD.CAPS | DDSD.HEIGHT | DDSD.WIDTH | DDSD.PITCH | DDSD.PIXELFORMAT + bitcount = len(im.getbands()) * 8 + pitch = (im.width * bitcount + 7) // 8 + + fp.write( + o32(DDS_MAGIC) + + struct.pack( + "<7I", + 124, # header size + flags, # flags + im.height, + im.width, + pitch, + 0, # depth + 0, # mipmaps + ) + + struct.pack("11I", *((0,) * 11)) # reserved + # pfsize, pfflags, fourcc, bitcount + + struct.pack("<4I", 32, pixel_flags, 0, bitcount) + + struct.pack("<4I", *rgba_mask) # dwRGBABitMask + + struct.pack("<5I", DDSCAPS.TEXTURE, 0, 0, 0, 0) + ) + ImageFile._save(im, fp, [ImageFile._Tile("raw", (0, 0) + im.size, 0, rawmode)]) + + +def _accept(prefix: bytes) -> bool: + return prefix[:4] == b"DDS " + + +Image.register_open(DdsImageFile.format, DdsImageFile, _accept) +Image.register_decoder("dds_rgb", DdsRgbDecoder) +Image.register_save(DdsImageFile.format, _save) +Image.register_extension(DdsImageFile.format, ".dds") diff --git a/venv/Lib/site-packages/PIL/EpsImagePlugin.py b/venv/Lib/site-packages/PIL/EpsImagePlugin.py new file mode 100644 index 0000000..36ba15e --- /dev/null +++ b/venv/Lib/site-packages/PIL/EpsImagePlugin.py @@ -0,0 +1,474 @@ +# +# The Python Imaging Library. +# $Id$ +# +# EPS file handling +# +# History: +# 1995-09-01 fl Created (0.1) +# 1996-05-18 fl Don't choke on "atend" fields, Ghostscript interface (0.2) +# 1996-08-22 fl Don't choke on floating point BoundingBox values +# 1996-08-23 fl Handle files from Macintosh (0.3) +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.4) +# 2003-09-07 fl Check gs.close status (from Federico Di Gregorio) (0.5) +# 2014-05-07 e Handling of EPS with binary preview and fixed resolution +# resizing +# +# 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. +# +from __future__ import annotations + +import io +import os +import re +import subprocess +import sys +import tempfile +from typing import IO + +from . import Image, ImageFile +from ._binary import i32le as i32 + +# -------------------------------------------------------------------- + + +split = re.compile(r"^%%([^:]*):[ \t]*(.*)[ \t]*$") +field = re.compile(r"^%[%!\w]([^:]*)[ \t]*$") + +gs_binary: str | bool | None = None +gs_windows_binary = None + + +def has_ghostscript() -> bool: + global gs_binary, gs_windows_binary + if gs_binary is None: + if sys.platform.startswith("win"): + if gs_windows_binary is None: + import shutil + + for binary in ("gswin32c", "gswin64c", "gs"): + if shutil.which(binary) is not None: + gs_windows_binary = binary + break + else: + gs_windows_binary = False + gs_binary = gs_windows_binary + else: + try: + subprocess.check_call(["gs", "--version"], stdout=subprocess.DEVNULL) + gs_binary = "gs" + except OSError: + gs_binary = False + return gs_binary is not False + + +def Ghostscript( + tile: list[ImageFile._Tile], + size: tuple[int, int], + fp: IO[bytes], + scale: int = 1, + transparency: bool = False, +) -> Image.core.ImagingCore: + """Render an image using Ghostscript""" + global gs_binary + if not has_ghostscript(): + msg = "Unable to locate Ghostscript on paths" + raise OSError(msg) + assert isinstance(gs_binary, str) + + # Unpack decoder tile + args = tile[0].args + assert isinstance(args, tuple) + length, bbox = args + + # Hack to support hi-res rendering + scale = int(scale) or 1 + width = size[0] * scale + height = size[1] * scale + # resolution is dependent on bbox and size + res_x = 72.0 * width / (bbox[2] - bbox[0]) + res_y = 72.0 * height / (bbox[3] - bbox[1]) + + out_fd, outfile = tempfile.mkstemp() + os.close(out_fd) + + infile_temp = None + if hasattr(fp, "name") and os.path.exists(fp.name): + infile = fp.name + else: + in_fd, infile_temp = tempfile.mkstemp() + os.close(in_fd) + infile = infile_temp + + # Ignore length and offset! + # Ghostscript can read it + # Copy whole file to read in Ghostscript + with open(infile_temp, "wb") as f: + # fetch length of fp + fp.seek(0, io.SEEK_END) + fsize = fp.tell() + # ensure start position + # go back + fp.seek(0) + lengthfile = fsize + while lengthfile > 0: + s = fp.read(min(lengthfile, 100 * 1024)) + if not s: + break + lengthfile -= len(s) + f.write(s) + + if transparency: + # "RGBA" + device = "pngalpha" + else: + # "pnmraw" automatically chooses between + # PBM ("1"), PGM ("L"), and PPM ("RGB"). + device = "pnmraw" + + # Build Ghostscript command + command = [ + gs_binary, + "-q", # quiet mode + f"-g{width:d}x{height:d}", # set output geometry (pixels) + f"-r{res_x:f}x{res_y:f}", # set input DPI (dots per inch) + "-dBATCH", # exit after processing + "-dNOPAUSE", # don't pause between pages + "-dSAFER", # safe mode + f"-sDEVICE={device}", + f"-sOutputFile={outfile}", # output file + # adjust for image origin + "-c", + f"{-bbox[0]} {-bbox[1]} translate", + "-f", + infile, # input file + # showpage (see https://bugs.ghostscript.com/show_bug.cgi?id=698272) + "-c", + "showpage", + ] + + # 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) + with Image.open(outfile) as out_im: + out_im.load() + return out_im.im.copy() + finally: + try: + os.unlink(outfile) + if infile_temp: + os.unlink(infile_temp) + except OSError: + pass + + +def _accept(prefix: bytes) -> bool: + 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) -> None: + (length, offset) = self._find_offset(self.fp) + + # go to offset - start of "%!PS" + self.fp.seek(offset) + + self._mode = "RGB" + + # When reading header comments, the first comment is used. + # When reading trailer comments, the last comment is used. + bounding_box: list[int] | None = None + imagedata_size: tuple[int, int] | None = None + + byte_arr = bytearray(255) + bytes_mv = memoryview(byte_arr) + bytes_read = 0 + reading_header_comments = True + reading_trailer_comments = False + trailer_reached = False + + def check_required_header_comments() -> None: + """ + The EPS specification requires that some headers exist. + This should be checked when the header comments formally end, + when image data starts, or when the file ends, whichever comes first. + """ + if "PS-Adobe" not in self.info: + msg = 'EPS header missing "%!PS-Adobe" comment' + raise SyntaxError(msg) + if "BoundingBox" not in self.info: + msg = 'EPS header missing "%%BoundingBox" comment' + raise SyntaxError(msg) + + def read_comment(s: str) -> bool: + nonlocal bounding_box, reading_trailer_comments + try: + m = split.match(s) + except re.error as e: + msg = "not an EPS file" + raise SyntaxError(msg) from e + + if not m: + return False + + k, v = m.group(1, 2) + self.info[k] = v + if k == "BoundingBox": + if v == "(atend)": + reading_trailer_comments = True + elif not bounding_box or (trailer_reached and reading_trailer_comments): + try: + # Note: The DSC spec says that BoundingBox + # fields should be integers, but some drivers + # put floating point values there anyway. + bounding_box = [int(float(i)) for i in v.split()] + except Exception: + pass + return True + + while True: + byte = self.fp.read(1) + if byte == b"": + # if we didn't read a byte we must be at the end of the file + if bytes_read == 0: + if reading_header_comments: + check_required_header_comments() + break + elif byte in b"\r\n": + # if we read a line ending character, ignore it and parse what + # we have already read. if we haven't read any other characters, + # continue reading + if bytes_read == 0: + continue + else: + # ASCII/hexadecimal lines in an EPS file must not exceed + # 255 characters, not including line ending characters + if bytes_read >= 255: + # only enforce this for lines starting with a "%", + # otherwise assume it's binary data + if byte_arr[0] == ord("%"): + msg = "not an EPS file" + raise SyntaxError(msg) + else: + if reading_header_comments: + check_required_header_comments() + reading_header_comments = False + # reset bytes_read so we can keep reading + # data until the end of the line + bytes_read = 0 + byte_arr[bytes_read] = byte[0] + bytes_read += 1 + continue + + if reading_header_comments: + # Load EPS header + + # if this line doesn't start with a "%", + # or does start with "%%EndComments", + # then we've reached the end of the header/comments + if byte_arr[0] != ord("%") or bytes_mv[:13] == b"%%EndComments": + check_required_header_comments() + reading_header_comments = False + continue + + s = str(bytes_mv[:bytes_read], "latin-1") + if not read_comment(s): + m = field.match(s) + if m: + k = m.group(1) + if k[:8] == "PS-Adobe": + self.info["PS-Adobe"] = 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: + msg = "bad EPS header" + raise OSError(msg) + elif bytes_mv[:11] == b"%ImageData:": + # Check for an "ImageData" descriptor + # https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/#50577413_pgfId-1035096 + + # If we've already read an "ImageData" descriptor, + # don't read another one. + if imagedata_size: + bytes_read = 0 + continue + + # Values: + # columns + # rows + # bit depth (1 or 8) + # mode (1: L, 2: LAB, 3: RGB, 4: CMYK) + # number of padding channels + # block size (number of bytes per row per channel) + # binary/ascii (1: binary, 2: ascii) + # data start identifier (the image data follows after a single line + # consisting only of this quoted value) + image_data_values = byte_arr[11:bytes_read].split(None, 7) + columns, rows, bit_depth, mode_id = ( + int(value) for value in image_data_values[:4] + ) + + if bit_depth == 1: + self._mode = "1" + elif bit_depth == 8: + try: + self._mode = self.mode_map[mode_id] + except ValueError: + break + else: + break + + # Parse the columns and rows after checking the bit depth and mode + # in case the bit depth and/or mode are invalid. + imagedata_size = columns, rows + elif bytes_mv[:5] == b"%%EOF": + break + elif trailer_reached and reading_trailer_comments: + # Load EPS trailer + s = str(bytes_mv[:bytes_read], "latin-1") + read_comment(s) + elif bytes_mv[:9] == b"%%Trailer": + trailer_reached = True + bytes_read = 0 + + # A "BoundingBox" is always required, + # even if an "ImageData" descriptor size exists. + if not bounding_box: + msg = "cannot determine EPS bounding box" + raise OSError(msg) + + # An "ImageData" size takes precedence over the "BoundingBox". + self._size = imagedata_size or ( + bounding_box[2] - bounding_box[0], + bounding_box[3] - bounding_box[1], + ) + + self.tile = [ + ImageFile._Tile("eps", (0, 0) + self.size, offset, (length, bounding_box)) + ] + + def _find_offset(self, fp: IO[bytes]) -> tuple[int, int]: + s = fp.read(4) + + if s == b"%!PS": + # for HEAD without binary preview + fp.seek(0, io.SEEK_END) + length = fp.tell() + offset = 0 + elif i32(s) == 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 + s = fp.read(8) + offset = i32(s) + length = i32(s, 4) + else: + msg = "not an EPS file" + raise SyntaxError(msg) + + return length, offset + + def load( + self, scale: int = 1, transparency: bool = False + ) -> Image.core.PixelAccess | None: + # Load EPS via Ghostscript + if self.tile: + self.im = Ghostscript(self.tile, self.size, self.fp, scale, transparency) + self._mode = self.im.mode + self._size = self.im.size + self.tile = [] + return Image.Image.load(self) + + def load_seek(self, pos: int) -> None: + # we can't incrementally load, so force ImageFile.parser to + # use our custom load method by defining this method. + pass + + +# -------------------------------------------------------------------- + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes, eps: int = 1) -> None: + """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, b"image") + elif im.mode == "RGB": + operator = (8, 3, b"false 3 colorimage") + elif im.mode == "CMYK": + operator = (8, 4, b"false 4 colorimage") + else: + msg = "image mode is not supported" + raise ValueError(msg) + + if eps: + # write EPS header + fp.write(b"%!PS-Adobe-3.0 EPSF-3.0\n") + fp.write(b"%%Creator: PIL 0.1 EpsEncode\n") + # fp.write("%%CreationDate: %s"...) + fp.write(b"%%%%BoundingBox: 0 0 %d %d\n" % im.size) + fp.write(b"%%Pages: 1\n") + fp.write(b"%%EndComments\n") + fp.write(b"%%Page: 1 1\n") + fp.write(b"%%ImageData: %d %d " % im.size) + fp.write(b'%d %d 0 1 1 "%s"\n' % operator) + + # image header + fp.write(b"gsave\n") + fp.write(b"10 dict begin\n") + fp.write(b"/buf %d string def\n" % (im.size[0] * operator[1])) + fp.write(b"%d %d scale\n" % im.size) + fp.write(b"%d %d 8\n" % im.size) # <= bits + fp.write(b"[%d 0 0 -%d 0 %d]\n" % (im.size[0], im.size[1], im.size[1])) + fp.write(b"{ currentfile buf readhexstring pop } bind\n") + fp.write(operator[2] + b"\n") + if hasattr(fp, "flush"): + fp.flush() + + ImageFile._save(im, fp, [ImageFile._Tile("eps", (0, 0) + im.size)]) + + fp.write(b"\n%%%%EndBinary\n") + fp.write(b"grestore end\n") + if hasattr(fp, "flush"): + fp.flush() + + +# -------------------------------------------------------------------- + + +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 0000000..2280d5c --- /dev/null +++ b/venv/Lib/site-packages/PIL/ExifTags.py @@ -0,0 +1,382 @@ +# +# 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. +""" +from __future__ import annotations + +from enum import IntEnum + + +class Base(IntEnum): + # possibly incomplete + InteropIndex = 0x0001 + ProcessingSoftware = 0x000B + NewSubfileType = 0x00FE + SubfileType = 0x00FF + ImageWidth = 0x0100 + ImageLength = 0x0101 + BitsPerSample = 0x0102 + Compression = 0x0103 + PhotometricInterpretation = 0x0106 + Thresholding = 0x0107 + CellWidth = 0x0108 + CellLength = 0x0109 + FillOrder = 0x010A + DocumentName = 0x010D + ImageDescription = 0x010E + Make = 0x010F + Model = 0x0110 + StripOffsets = 0x0111 + Orientation = 0x0112 + SamplesPerPixel = 0x0115 + RowsPerStrip = 0x0116 + StripByteCounts = 0x0117 + MinSampleValue = 0x0118 + MaxSampleValue = 0x0119 + XResolution = 0x011A + YResolution = 0x011B + PlanarConfiguration = 0x011C + PageName = 0x011D + FreeOffsets = 0x0120 + FreeByteCounts = 0x0121 + GrayResponseUnit = 0x0122 + GrayResponseCurve = 0x0123 + T4Options = 0x0124 + T6Options = 0x0125 + ResolutionUnit = 0x0128 + PageNumber = 0x0129 + TransferFunction = 0x012D + Software = 0x0131 + DateTime = 0x0132 + Artist = 0x013B + HostComputer = 0x013C + Predictor = 0x013D + WhitePoint = 0x013E + PrimaryChromaticities = 0x013F + ColorMap = 0x0140 + HalftoneHints = 0x0141 + TileWidth = 0x0142 + TileLength = 0x0143 + TileOffsets = 0x0144 + TileByteCounts = 0x0145 + SubIFDs = 0x014A + InkSet = 0x014C + InkNames = 0x014D + NumberOfInks = 0x014E + DotRange = 0x0150 + TargetPrinter = 0x0151 + ExtraSamples = 0x0152 + SampleFormat = 0x0153 + SMinSampleValue = 0x0154 + SMaxSampleValue = 0x0155 + TransferRange = 0x0156 + ClipPath = 0x0157 + XClipPathUnits = 0x0158 + YClipPathUnits = 0x0159 + Indexed = 0x015A + JPEGTables = 0x015B + OPIProxy = 0x015F + JPEGProc = 0x0200 + JpegIFOffset = 0x0201 + JpegIFByteCount = 0x0202 + JpegRestartInterval = 0x0203 + JpegLosslessPredictors = 0x0205 + JpegPointTransforms = 0x0206 + JpegQTables = 0x0207 + JpegDCTables = 0x0208 + JpegACTables = 0x0209 + YCbCrCoefficients = 0x0211 + YCbCrSubSampling = 0x0212 + YCbCrPositioning = 0x0213 + ReferenceBlackWhite = 0x0214 + XMLPacket = 0x02BC + RelatedImageFileFormat = 0x1000 + RelatedImageWidth = 0x1001 + RelatedImageLength = 0x1002 + Rating = 0x4746 + RatingPercent = 0x4749 + ImageID = 0x800D + CFARepeatPatternDim = 0x828D + BatteryLevel = 0x828F + Copyright = 0x8298 + ExposureTime = 0x829A + FNumber = 0x829D + IPTCNAA = 0x83BB + ImageResources = 0x8649 + ExifOffset = 0x8769 + InterColorProfile = 0x8773 + ExposureProgram = 0x8822 + SpectralSensitivity = 0x8824 + GPSInfo = 0x8825 + ISOSpeedRatings = 0x8827 + OECF = 0x8828 + Interlace = 0x8829 + TimeZoneOffset = 0x882A + SelfTimerMode = 0x882B + SensitivityType = 0x8830 + StandardOutputSensitivity = 0x8831 + RecommendedExposureIndex = 0x8832 + ISOSpeed = 0x8833 + ISOSpeedLatitudeyyy = 0x8834 + ISOSpeedLatitudezzz = 0x8835 + ExifVersion = 0x9000 + DateTimeOriginal = 0x9003 + DateTimeDigitized = 0x9004 + OffsetTime = 0x9010 + OffsetTimeOriginal = 0x9011 + OffsetTimeDigitized = 0x9012 + ComponentsConfiguration = 0x9101 + CompressedBitsPerPixel = 0x9102 + ShutterSpeedValue = 0x9201 + ApertureValue = 0x9202 + BrightnessValue = 0x9203 + ExposureBiasValue = 0x9204 + MaxApertureValue = 0x9205 + SubjectDistance = 0x9206 + MeteringMode = 0x9207 + LightSource = 0x9208 + Flash = 0x9209 + FocalLength = 0x920A + Noise = 0x920D + ImageNumber = 0x9211 + SecurityClassification = 0x9212 + ImageHistory = 0x9213 + TIFFEPStandardID = 0x9216 + MakerNote = 0x927C + UserComment = 0x9286 + SubsecTime = 0x9290 + SubsecTimeOriginal = 0x9291 + SubsecTimeDigitized = 0x9292 + AmbientTemperature = 0x9400 + Humidity = 0x9401 + Pressure = 0x9402 + WaterDepth = 0x9403 + Acceleration = 0x9404 + CameraElevationAngle = 0x9405 + XPTitle = 0x9C9B + XPComment = 0x9C9C + XPAuthor = 0x9C9D + XPKeywords = 0x9C9E + XPSubject = 0x9C9F + FlashPixVersion = 0xA000 + ColorSpace = 0xA001 + ExifImageWidth = 0xA002 + ExifImageHeight = 0xA003 + RelatedSoundFile = 0xA004 + ExifInteroperabilityOffset = 0xA005 + FlashEnergy = 0xA20B + SpatialFrequencyResponse = 0xA20C + FocalPlaneXResolution = 0xA20E + FocalPlaneYResolution = 0xA20F + FocalPlaneResolutionUnit = 0xA210 + SubjectLocation = 0xA214 + ExposureIndex = 0xA215 + SensingMethod = 0xA217 + FileSource = 0xA300 + SceneType = 0xA301 + CFAPattern = 0xA302 + CustomRendered = 0xA401 + ExposureMode = 0xA402 + WhiteBalance = 0xA403 + DigitalZoomRatio = 0xA404 + FocalLengthIn35mmFilm = 0xA405 + SceneCaptureType = 0xA406 + GainControl = 0xA407 + Contrast = 0xA408 + Saturation = 0xA409 + Sharpness = 0xA40A + DeviceSettingDescription = 0xA40B + SubjectDistanceRange = 0xA40C + ImageUniqueID = 0xA420 + CameraOwnerName = 0xA430 + BodySerialNumber = 0xA431 + LensSpecification = 0xA432 + LensMake = 0xA433 + LensModel = 0xA434 + LensSerialNumber = 0xA435 + CompositeImage = 0xA460 + CompositeImageCount = 0xA461 + CompositeImageExposureTimes = 0xA462 + Gamma = 0xA500 + PrintImageMatching = 0xC4A5 + DNGVersion = 0xC612 + DNGBackwardVersion = 0xC613 + UniqueCameraModel = 0xC614 + LocalizedCameraModel = 0xC615 + CFAPlaneColor = 0xC616 + CFALayout = 0xC617 + LinearizationTable = 0xC618 + BlackLevelRepeatDim = 0xC619 + BlackLevel = 0xC61A + BlackLevelDeltaH = 0xC61B + BlackLevelDeltaV = 0xC61C + WhiteLevel = 0xC61D + DefaultScale = 0xC61E + DefaultCropOrigin = 0xC61F + DefaultCropSize = 0xC620 + ColorMatrix1 = 0xC621 + ColorMatrix2 = 0xC622 + CameraCalibration1 = 0xC623 + CameraCalibration2 = 0xC624 + ReductionMatrix1 = 0xC625 + ReductionMatrix2 = 0xC626 + AnalogBalance = 0xC627 + AsShotNeutral = 0xC628 + AsShotWhiteXY = 0xC629 + BaselineExposure = 0xC62A + BaselineNoise = 0xC62B + BaselineSharpness = 0xC62C + BayerGreenSplit = 0xC62D + LinearResponseLimit = 0xC62E + CameraSerialNumber = 0xC62F + LensInfo = 0xC630 + ChromaBlurRadius = 0xC631 + AntiAliasStrength = 0xC632 + ShadowScale = 0xC633 + DNGPrivateData = 0xC634 + MakerNoteSafety = 0xC635 + CalibrationIlluminant1 = 0xC65A + CalibrationIlluminant2 = 0xC65B + BestQualityScale = 0xC65C + RawDataUniqueID = 0xC65D + OriginalRawFileName = 0xC68B + OriginalRawFileData = 0xC68C + ActiveArea = 0xC68D + MaskedAreas = 0xC68E + AsShotICCProfile = 0xC68F + AsShotPreProfileMatrix = 0xC690 + CurrentICCProfile = 0xC691 + CurrentPreProfileMatrix = 0xC692 + ColorimetricReference = 0xC6BF + CameraCalibrationSignature = 0xC6F3 + ProfileCalibrationSignature = 0xC6F4 + AsShotProfileName = 0xC6F6 + NoiseReductionApplied = 0xC6F7 + ProfileName = 0xC6F8 + ProfileHueSatMapDims = 0xC6F9 + ProfileHueSatMapData1 = 0xC6FA + ProfileHueSatMapData2 = 0xC6FB + ProfileToneCurve = 0xC6FC + ProfileEmbedPolicy = 0xC6FD + ProfileCopyright = 0xC6FE + ForwardMatrix1 = 0xC714 + ForwardMatrix2 = 0xC715 + PreviewApplicationName = 0xC716 + PreviewApplicationVersion = 0xC717 + PreviewSettingsName = 0xC718 + PreviewSettingsDigest = 0xC719 + PreviewColorSpace = 0xC71A + PreviewDateTime = 0xC71B + RawImageDigest = 0xC71C + OriginalRawFileDigest = 0xC71D + SubTileBlockSize = 0xC71E + RowInterleaveFactor = 0xC71F + ProfileLookTableDims = 0xC725 + ProfileLookTableData = 0xC726 + OpcodeList1 = 0xC740 + OpcodeList2 = 0xC741 + OpcodeList3 = 0xC74E + NoiseProfile = 0xC761 + + +"""Maps EXIF tags to tag names.""" +TAGS = { + **{i.value: i.name for i in Base}, + 0x920C: "SpatialFrequencyResponse", + 0x9214: "SubjectLocation", + 0x9215: "ExposureIndex", + 0x828E: "CFAPattern", + 0x920B: "FlashEnergy", + 0x9216: "TIFF/EPStandardID", +} + + +class GPS(IntEnum): + GPSVersionID = 0x00 + GPSLatitudeRef = 0x01 + GPSLatitude = 0x02 + GPSLongitudeRef = 0x03 + GPSLongitude = 0x04 + GPSAltitudeRef = 0x05 + GPSAltitude = 0x06 + GPSTimeStamp = 0x07 + GPSSatellites = 0x08 + GPSStatus = 0x09 + GPSMeasureMode = 0x0A + GPSDOP = 0x0B + GPSSpeedRef = 0x0C + GPSSpeed = 0x0D + GPSTrackRef = 0x0E + GPSTrack = 0x0F + GPSImgDirectionRef = 0x10 + GPSImgDirection = 0x11 + GPSMapDatum = 0x12 + GPSDestLatitudeRef = 0x13 + GPSDestLatitude = 0x14 + GPSDestLongitudeRef = 0x15 + GPSDestLongitude = 0x16 + GPSDestBearingRef = 0x17 + GPSDestBearing = 0x18 + GPSDestDistanceRef = 0x19 + GPSDestDistance = 0x1A + GPSProcessingMethod = 0x1B + GPSAreaInformation = 0x1C + GPSDateStamp = 0x1D + GPSDifferential = 0x1E + GPSHPositioningError = 0x1F + + +"""Maps EXIF GPS tags to tag names.""" +GPSTAGS = {i.value: i.name for i in GPS} + + +class Interop(IntEnum): + InteropIndex = 0x0001 + InteropVersion = 0x0002 + RelatedImageFileFormat = 0x1000 + RelatedImageWidth = 0x1001 + RelatedImageHeight = 0x1002 + + +class IFD(IntEnum): + Exif = 0x8769 + GPSInfo = 0x8825 + MakerNote = 0x927C + Makernote = 0x927C # Deprecated + Interop = 0xA005 + IFD1 = -1 + + +class LightSource(IntEnum): + Unknown = 0x00 + Daylight = 0x01 + Fluorescent = 0x02 + Tungsten = 0x03 + Flash = 0x04 + Fine = 0x09 + Cloudy = 0x0A + Shade = 0x0B + DaylightFluorescent = 0x0C + DayWhiteFluorescent = 0x0D + CoolWhiteFluorescent = 0x0E + WhiteFluorescent = 0x0F + StandardLightA = 0x11 + StandardLightB = 0x12 + StandardLightC = 0x13 + D55 = 0x14 + D65 = 0x15 + D75 = 0x16 + D50 = 0x17 + ISO = 0x18 + Other = 0xFF diff --git a/venv/Lib/site-packages/PIL/FitsImagePlugin.py b/venv/Lib/site-packages/PIL/FitsImagePlugin.py new file mode 100644 index 0000000..6bbd264 --- /dev/null +++ b/venv/Lib/site-packages/PIL/FitsImagePlugin.py @@ -0,0 +1,152 @@ +# +# The Python Imaging Library +# $Id$ +# +# FITS file handling +# +# Copyright (c) 1998-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import gzip +import math + +from . import Image, ImageFile + + +def _accept(prefix: bytes) -> bool: + return prefix[:6] == b"SIMPLE" + + +class FitsImageFile(ImageFile.ImageFile): + format = "FITS" + format_description = "FITS" + + def _open(self) -> None: + assert self.fp is not None + + headers: dict[bytes, bytes] = {} + header_in_progress = False + decoder_name = "" + while True: + header = self.fp.read(80) + if not header: + msg = "Truncated FITS file" + raise OSError(msg) + keyword = header[:8].strip() + if keyword in (b"SIMPLE", b"XTENSION"): + header_in_progress = True + elif headers and not header_in_progress: + # This is now a data unit + break + elif keyword == b"END": + # Seek to the end of the header unit + self.fp.seek(math.ceil(self.fp.tell() / 2880) * 2880) + if not decoder_name: + decoder_name, offset, args = self._parse_headers(headers) + + header_in_progress = False + continue + + if decoder_name: + # Keep going to read past the headers + continue + + value = header[8:].split(b"/")[0].strip() + if value.startswith(b"="): + value = value[1:].strip() + if not headers and (not _accept(keyword) or value != b"T"): + msg = "Not a FITS file" + raise SyntaxError(msg) + headers[keyword] = value + + if not decoder_name: + msg = "No image data" + raise ValueError(msg) + + offset += self.fp.tell() - 80 + self.tile = [ImageFile._Tile(decoder_name, (0, 0) + self.size, offset, args)] + + def _get_size( + self, headers: dict[bytes, bytes], prefix: bytes + ) -> tuple[int, int] | None: + naxis = int(headers[prefix + b"NAXIS"]) + if naxis == 0: + return None + + if naxis == 1: + return 1, int(headers[prefix + b"NAXIS1"]) + else: + return int(headers[prefix + b"NAXIS1"]), int(headers[prefix + b"NAXIS2"]) + + def _parse_headers( + self, headers: dict[bytes, bytes] + ) -> tuple[str, int, tuple[str | int, ...]]: + prefix = b"" + decoder_name = "raw" + offset = 0 + if ( + headers.get(b"XTENSION") == b"'BINTABLE'" + and headers.get(b"ZIMAGE") == b"T" + and headers[b"ZCMPTYPE"] == b"'GZIP_1 '" + ): + no_prefix_size = self._get_size(headers, prefix) or (0, 0) + number_of_bits = int(headers[b"BITPIX"]) + offset = no_prefix_size[0] * no_prefix_size[1] * (number_of_bits // 8) + + prefix = b"Z" + decoder_name = "fits_gzip" + + size = self._get_size(headers, prefix) + if not size: + return "", 0, () + + self._size = size + + number_of_bits = int(headers[prefix + b"BITPIX"]) + if number_of_bits == 8: + self._mode = "L" + elif number_of_bits == 16: + self._mode = "I;16" + elif number_of_bits == 32: + self._mode = "I" + elif number_of_bits in (-32, -64): + self._mode = "F" + + args: tuple[str | int, ...] + if decoder_name == "raw": + args = (self.mode, 0, -1) + else: + args = (number_of_bits,) + return decoder_name, offset, args + + +class FitsGzipDecoder(ImageFile.PyDecoder): + _pulls_fd = True + + def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]: + assert self.fd is not None + value = gzip.decompress(self.fd.read()) + + rows = [] + offset = 0 + number_of_bits = min(self.args[0] // 8, 4) + for y in range(self.state.ysize): + row = bytearray() + for x in range(self.state.xsize): + row += value[offset + (4 - number_of_bits) : offset + 4] + offset += 4 + rows.append(row) + self.set_as_raw(bytes([pixel for row in rows[::-1] for pixel in row])) + return -1, 0 + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(FitsImageFile.format, FitsImageFile, _accept) +Image.register_decoder("fits_gzip", FitsGzipDecoder) + +Image.register_extensions(FitsImageFile.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 0000000..b534b30 --- /dev/null +++ b/venv/Lib/site-packages/PIL/FliImagePlugin.py @@ -0,0 +1,175 @@ +# +# 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 __future__ import annotations + +import os + +from . import Image, ImageFile, ImagePalette +from ._binary import i16le as i16 +from ._binary import i32le as i32 +from ._binary import o8 + +# +# decoder + + +def _accept(prefix: bytes) -> bool: + return ( + len(prefix) >= 6 + and i16(prefix, 4) in [0xAF11, 0xAF12] + and i16(prefix, 14) in [0, 3] # flags + ) + + +## +# 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) -> None: + # HEAD + s = self.fp.read(128) + if not (_accept(s) and s[20:22] == b"\x00\x00"): + msg = "not an FLI/FLC file" + raise SyntaxError(msg) + + # frames + self.n_frames = i16(s, 6) + self.is_animated = self.n_frames > 1 + + # image characteristics + self._mode = "P" + self._size = i16(s, 8), i16(s, 10) + + # animation speed + duration = i32(s, 16) + magic = i16(s, 4) + 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) == 0xF100: + # prefix chunk; ignore it + self.__offset = self.__offset + i32(s) + self.fp.seek(self.__offset) + s = self.fp.read(16) + + if i16(s, 4) == 0xF1FA: + # look for palette chunk + number_of_subchunks = i16(s, 6) + chunk_size: int | None = None + for _ in range(number_of_subchunks): + if chunk_size is not None: + self.fp.seek(chunk_size - 6, os.SEEK_CUR) + s = self.fp.read(6) + chunk_type = i16(s, 4) + if chunk_type in (4, 11): + self._palette(palette, 2 if chunk_type == 11 else 0) + break + chunk_size = i32(s) + if not chunk_size: + break + + self.palette = ImagePalette.raw( + "RGB", b"".join(o8(r) + o8(g) + o8(b) for (r, g, b) in 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: list[tuple[int, int, int]], shift: int) -> None: + # load palette + + i = 0 + for e in range(i16(self.fp.read(2))): + s = self.fp.read(2) + i = i + s[0] + n = s[1] + if n == 0: + n = 256 + s = self.fp.read(n * 3) + for n in range(0, len(s), 3): + r = s[n] << shift + g = s[n + 1] << shift + b = s[n + 2] << shift + palette[i] = (r, g, b) + i += 1 + + def seek(self, frame: int) -> None: + 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: int) -> None: + 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: + msg = f"cannot seek to frame {frame}" + raise ValueError(msg) + self.__frame = frame + + # move to next frame + self.fp = self._fp + self.fp.seek(self.__offset) + + s = self.fp.read(4) + if not s: + msg = "missing frame size" + raise EOFError(msg) + + framesize = i32(s) + + self.decodermaxblock = framesize + self.tile = [ImageFile._Tile("fli", (0, 0) + self.size, self.__offset)] + + self.__offset += framesize + + def tell(self) -> int: + return self.__frame + + +# +# 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 0000000..1e0c1c1 --- /dev/null +++ b/venv/Lib/site-packages/PIL/FontFile.py @@ -0,0 +1,134 @@ +# +# 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. +# +from __future__ import annotations + +import os +from typing import BinaryIO + +from . import Image, _binary + +WIDTH = 800 + + +def puti16( + fp: BinaryIO, values: tuple[int, int, int, int, int, int, int, int, int, int] +) -> None: + """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: Image.Image | None = None + + def __init__(self) -> None: + self.info: dict[bytes, bytes | int] = {} + self.glyph: list[ + tuple[ + tuple[int, int], + tuple[int, int, int, int], + tuple[int, int, int, int], + Image.Image, + ] + | None + ] = [None] * 256 + + def __getitem__(self, ix: int) -> ( + tuple[ + tuple[int, int], + tuple[int, int, int, int], + tuple[int, int, int, int], + Image.Image, + ] + | None + ): + return self.glyph[ix] + + def compile(self) -> None: + """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.glyph: + 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: list[ + tuple[tuple[int, int], tuple[int, int, int, int], tuple[int, int, int, int]] + | None + ] = [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] + 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: str) -> None: + """Save font""" + + self.compile() + + # font data + if not self.bitmap: + msg = "No bitmap created" + raise ValueError(msg) + 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(f";;;;;;{self.ysize};\n".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 0000000..4cfcb06 --- /dev/null +++ b/venv/Lib/site-packages/PIL/FpxImagePlugin.py @@ -0,0 +1,257 @@ +# +# 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. +# +from __future__ import annotations + +import olefile + +from . import Image, ImageFile +from ._binary import 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: bytes) -> bool: + return prefix[:8] == olefile.MAGIC + + +## +# Image plugin for the FlashPix images. + + +class FpxImageFile(ImageFile.ImageFile): + format = "FPX" + format_description = "FlashPix" + + def _open(self) -> None: + # + # 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: + msg = "not an FPX file; invalid OLE file" + raise SyntaxError(msg) from e + + root = self.ole.root + if not root or root.clsid != "56616700-C154-11CE-8553-00AA00A1F95B": + msg = "not an FPX file; bad root CLSID" + raise SyntaxError(msg) + + self._open_index(1) + + def _open_index(self, index: int = 1) -> None: + # + # get the Image Contents Property Set + + prop = self.ole.getproperties( + [f"Data Object Store {index:06d}", "\005Image Contents"] + ) + + # size (highest resolution) + + assert isinstance(prop[0x1000002], int) + assert isinstance(prop[0x1000003], int) + 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] + + if not isinstance(s, bytes) or (bands := i32(s, 4)) > 4: + msg = "Invalid number of bands" + raise OSError(msg) + + # note: for now, we ignore the "uncalibrated" flag + colors = tuple(i32(s, 8 + i * 4) & 0x7FFFFFFF for i in range(bands)) + + self._mode, self.rawmode = MODES[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: int = 1, subimage: int = 0) -> None: + # + # setup tile descriptors for a given subimage + + stream = [ + f"Data Object Store {index:06d}", + f"Resolution {subimage:04d}", + "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: + msg = "subimage mismatch" + raise OSError(msg) + + # 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): + x1 = min(xsize, x + xtile) + y1 = min(ysize, y + ytile) + + compression = i32(s, i + 8) + + if compression == 0: + self.tile.append( + ImageFile._Tile( + "raw", + (x, y, x1, y1), + i32(s, i) + 28, + self.rawmode, + ) + ) + + elif compression == 1: + # FIXME: the fill decoder is not implemented + self.tile.append( + ImageFile._Tile( + "fill", + (x, y, x1, y1), + i32(s, i) + 28, + (self.rawmode, s[12:16]), + ) + ) + + elif compression == 2: + internal_color_conversion = s[14] + jpeg_tables = 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( + ImageFile._Tile( + "jpeg", + (x, y, x1, y1), + 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: + msg = "unknown/invalid compression" + raise OSError(msg) + + x = x + xtile + if x >= xsize: + x, y = 0, y + ytile + if y >= ysize: + break # isn't really required + + self.stream = stream + self._fp = self.fp + self.fp = None + + def load(self) -> Image.core.PixelAccess | None: + if not self.fp: + self.fp = self.ole.openstream(self.stream[:2] + ["Subimage 0000 Data"]) + + return ImageFile.ImageFile.load(self) + + def close(self) -> None: + self.ole.close() + super().close() + + def __exit__(self, *args: object) -> None: + self.ole.close() + super().__exit__() + + +# +# -------------------------------------------------------------------- + + +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 0000000..0516b76 --- /dev/null +++ b/venv/Lib/site-packages/PIL/FtexImagePlugin.py @@ -0,0 +1,115 @@ +""" +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. +""" + +from __future__ import annotations + +import struct +from enum import IntEnum +from io import BytesIO + +from . import Image, ImageFile + +MAGIC = b"FTEX" + + +class Format(IntEnum): + DXT1 = 0 + UNCOMPRESSED = 1 + + +class FtexImageFile(ImageFile.ImageFile): + format = "FTEX" + format_description = "Texture File Format (IW2:EOC)" + + def _open(self) -> None: + if not _accept(self.fp.read(4)): + msg = "not an FTEX file" + raise SyntaxError(msg) + struct.unpack(" None: + pass + + +def _accept(prefix: bytes) -> bool: + return prefix[:4] == MAGIC + + +Image.register_open(FtexImageFile.format, FtexImageFile, _accept) +Image.register_extensions(FtexImageFile.format, [".ftc", ".ftu"]) diff --git a/venv/Lib/site-packages/PIL/GbrImagePlugin.py b/venv/Lib/site-packages/PIL/GbrImagePlugin.py new file mode 100644 index 0000000..f319d7e --- /dev/null +++ b/venv/Lib/site-packages/PIL/GbrImagePlugin.py @@ -0,0 +1,103 @@ +# +# The Python Imaging Library +# +# load a GIMP brush file +# +# History: +# 96-03-14 fl Created +# 16-01-08 es Version 2 +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# Copyright (c) Eric Soroos 2016. +# +# See the README file for information on usage and redistribution. +# +# +# See https://github.com/GNOME/gimp/blob/mainline/devel-docs/gbr.txt for +# format documentation. +# +# This code Interprets version 1 and 2 .gbr files. +# Version 1 files are obsolete, and should not be used for new +# brushes. +# Version 2 files are saved by GIMP v2.8 (at least) +# Version 3 files have a format specifier of 18 for 16bit floats in +# the color depth field. This is currently unsupported by Pillow. +from __future__ import annotations + +from . import Image, ImageFile +from ._binary import i32be as i32 + + +def _accept(prefix: bytes) -> bool: + return len(prefix) >= 8 and i32(prefix, 0) >= 20 and i32(prefix, 4) in (1, 2) + + +## +# Image plugin for the GIMP brush format. + + +class GbrImageFile(ImageFile.ImageFile): + format = "GBR" + format_description = "GIMP brush file" + + def _open(self) -> None: + header_size = i32(self.fp.read(4)) + if header_size < 20: + msg = "not a GIMP brush" + raise SyntaxError(msg) + version = i32(self.fp.read(4)) + if version not in (1, 2): + msg = f"Unsupported GIMP brush version: {version}" + raise SyntaxError(msg) + + 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: + msg = "not a GIMP brush" + raise SyntaxError(msg) + if color_depth not in (1, 4): + msg = f"Unsupported GIMP brush color depth: {color_depth}" + raise SyntaxError(msg) + + 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": + msg = "not a GIMP brush, bad magic number" + raise SyntaxError(msg) + 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) -> Image.core.PixelAccess | None: + if self._im is None: + self.im = Image.core.new(self.mode, self.size) + self.frombytes(self.fp.read(self._data_size)) + return Image.Image.load(self) + + +# +# 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 0000000..fc4801e --- /dev/null +++ b/venv/Lib/site-packages/PIL/GdImageFile.py @@ -0,0 +1,102 @@ +# +# 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 __future__ import annotations + +from typing import IO + +from . import ImageFile, ImagePalette, UnidentifiedImageError +from ._binary import i16be as i16 +from ._binary import i32be as i32 +from ._typing import StrOrBytesPath + + +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) -> None: + # Header + assert self.fp is not None + + s = self.fp.read(1037) + + if i16(s) not in [65534, 65535]: + msg = "Not a valid GD 2.x .gd file" + raise SyntaxError(msg) + + self._mode = "L" # FIXME: "P" + self._size = i16(s, 2), i16(s, 4) + + true_color = s[6] + true_color_offset = 2 if true_color else 0 + + # transparency index + tindex = i32(s, 7 + true_color_offset) + if tindex < 256: + self.info["transparency"] = tindex + + self.palette = ImagePalette.raw( + "XBGR", s[7 + true_color_offset + 4 : 7 + true_color_offset + 4 + 256 * 4] + ) + + self.tile = [ + ImageFile._Tile( + "raw", + (0, 0) + self.size, + 7 + true_color_offset + 4 + 256 * 4, + "L", + ) + ] + + +def open(fp: StrOrBytesPath | IO[bytes], mode: str = "r") -> GdImageFile: + """ + Load texture from a GD image file. + + :param fp: 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": + msg = "bad mode" + raise ValueError(msg) + + try: + return GdImageFile(fp) + except SyntaxError as e: + msg = "cannot identify this image file" + raise UnidentifiedImageError(msg) 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 0000000..47022d5 --- /dev/null +++ b/venv/Lib/site-packages/PIL/GifImagePlugin.py @@ -0,0 +1,1197 @@ +# +# 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. +# +from __future__ import annotations + +import itertools +import math +import os +import subprocess +from enum import IntEnum +from functools import cached_property +from typing import IO, TYPE_CHECKING, Any, Literal, NamedTuple, Union + +from . import ( + Image, + ImageChops, + ImageFile, + ImageMath, + ImageOps, + ImagePalette, + ImageSequence, +) +from ._binary import i16le as i16 +from ._binary import o8 +from ._binary import o16le as o16 + +if TYPE_CHECKING: + from . import _imaging + from ._typing import Buffer + + +class LoadingStrategy(IntEnum): + """.. versionadded:: 9.1.0""" + + RGB_AFTER_FIRST = 0 + RGB_AFTER_DIFFERENT_PALETTE_ONLY = 1 + RGB_ALWAYS = 2 + + +#: .. versionadded:: 9.1.0 +LOADING_STRATEGY = LoadingStrategy.RGB_AFTER_FIRST + +# -------------------------------------------------------------------- +# Identify/read GIF files + + +def _accept(prefix: bytes) -> bool: + 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) -> bytes | None: + s = self.fp.read(1) + if s and s[0]: + return self.fp.read(s[0]) + return None + + def _is_palette_needed(self, p: bytes) -> bool: + for i in range(0, len(p), 3): + if not (i // 3 == p[i] == p[i + 1] == p[i + 2]): + return True + return False + + def _open(self) -> None: + # Screen + s = self.fp.read(13) + if not _accept(s): + msg = "not a GIF file" + raise SyntaxError(msg) + + self.info["version"] = s[:6] + self._size = i16(s, 6), i16(s, 8) + flags = s[10] + bits = (flags & 7) + 1 + + if flags & 128: + # get global palette + self.info["background"] = s[11] + # check if palette contains colour indices + p = self.fp.read(3 << bits) + if self._is_palette_needed(p): + p = ImagePalette.raw("RGB", p) + self.global_palette = self.palette = p + + self._fp = self.fp # FIXME: hack + self.__rewind = self.fp.tell() + self._n_frames: int | None = None + self._seek(0) # get ready to read first frame + + @property + def n_frames(self) -> int: + if self._n_frames is None: + current = self.tell() + try: + while True: + self._seek(self.tell() + 1, False) + except EOFError: + self._n_frames = self.tell() + 1 + self.seek(current) + return self._n_frames + + @cached_property + def is_animated(self) -> bool: + if self._n_frames is not None: + return self._n_frames != 1 + + current = self.tell() + if current: + return True + + try: + self._seek(1, False) + is_animated = True + except EOFError: + is_animated = False + + self.seek(current) + return is_animated + + def seek(self, frame: int) -> None: + if not self._seek_check(frame): + return + if frame < self.__frame: + 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) + msg = "no more images in GIF file" + raise EOFError(msg) from e + + def _seek(self, frame: int, update_image: bool = True) -> None: + if frame == 0: + # rewind + self.__offset = 0 + self.dispose: _imaging.ImagingCore | None = None + self.__frame = -1 + self._fp.seek(self.__rewind) + self.disposal_method = 0 + if "comment" in self.info: + del self.info["comment"] + else: + # ensure that the previous frame was loaded + if self.tile and update_image: + self.load() + + if frame != self.__frame + 1: + msg = f"cannot seek to frame {frame}" + raise ValueError(msg) + + self.fp = self._fp + if self.__offset: + # backup to last frame + self.fp.seek(self.__offset) + while self.data(): + pass + self.__offset = 0 + + s = self.fp.read(1) + if not s or s == b";": + msg = "no more images in GIF file" + raise EOFError(msg) + + palette: ImagePalette.ImagePalette | Literal[False] | None = None + + info: dict[str, Any] = {} + frame_transparency = None + interlace = None + frame_dispose_extent = None + while True: + if not s: + 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 s[0] == 249 and block is not None: + # + # graphic control extension + # + flags = block[0] + if flags & 1: + frame_transparency = block[3] + info["duration"] = i16(block, 1) * 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 s[0] == 254: + # + # comment extension + # + comment = b"" + + # Read this comment block + while block: + comment += block + block = self.data() + + if "comment" in info: + # If multiple comment blocks in frame, separate with \n + info["comment"] += b"\n" + comment + else: + info["comment"] = comment + s = None + continue + elif s[0] == 255 and frame == 0 and block is not None: + # + # application extension + # + info["extension"] = block, self.fp.tell() + if block[:11] == b"NETSCAPE2.0": + block = self.data() + if block and len(block) >= 3 and block[0] == 1: + self.info["loop"] = i16(block, 1) + 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]) and update_image: + self._size = max(x1, self.size[0]), max(y1, self.size[1]) + Image._decompression_bomb_check(self._size) + frame_dispose_extent = x0, y0, x1, y1 + flags = s[8] + + interlace = (flags & 64) != 0 + + if flags & 128: + bits = (flags & 7) + 1 + p = self.fp.read(3 << bits) + if self._is_palette_needed(p): + palette = ImagePalette.raw("RGB", p) + else: + palette = False + + # image data + bits = self.fp.read(1)[0] + self.__offset = self.fp.tell() + break + s = None + + if interlace is None: + msg = "image not found in GIF frame" + raise EOFError(msg) + + self.__frame = frame + if not update_image: + return + + self.tile = [] + + if self.dispose: + self.im.paste(self.dispose, self.dispose_extent) + + self._frame_palette = palette if palette is not None else self.global_palette + self._frame_transparency = frame_transparency + if frame == 0: + if self._frame_palette: + if LOADING_STRATEGY == LoadingStrategy.RGB_ALWAYS: + self._mode = "RGBA" if frame_transparency is not None else "RGB" + else: + self._mode = "P" + else: + self._mode = "L" + + if palette: + self.palette = palette + elif self.global_palette: + from copy import copy + + self.palette = copy(self.global_palette) + else: + self.palette = None + else: + if self.mode == "P": + if ( + LOADING_STRATEGY != LoadingStrategy.RGB_AFTER_DIFFERENT_PALETTE_ONLY + or palette + ): + if "transparency" in self.info: + self.im.putpalettealpha(self.info["transparency"], 0) + self.im = self.im.convert("RGBA", Image.Dither.FLOYDSTEINBERG) + self._mode = "RGBA" + del self.info["transparency"] + else: + self._mode = "RGB" + self.im = self.im.convert("RGB", Image.Dither.FLOYDSTEINBERG) + + def _rgb(color: int) -> tuple[int, int, int]: + if self._frame_palette: + if color * 3 + 3 > len(self._frame_palette.palette): + color = 0 + return tuple(self._frame_palette.palette[color * 3 : color * 3 + 3]) + else: + return (color, color, color) + + self.dispose = None + self.dispose_extent = frame_dispose_extent + if self.dispose_extent and self.disposal_method >= 2: + try: + if self.disposal_method == 2: + # replace with background colour + + # only dispose the extent in this frame + x0, y0, x1, y1 = self.dispose_extent + dispose_size = (x1 - x0, y1 - y0) + + Image._decompression_bomb_check(dispose_size) + + # by convention, attempt to use transparency first + dispose_mode = "P" + color = self.info.get("transparency", frame_transparency) + if color is not None: + if self.mode in ("RGB", "RGBA"): + dispose_mode = "RGBA" + color = _rgb(color) + (0,) + else: + color = self.info.get("background", 0) + if self.mode in ("RGB", "RGBA"): + dispose_mode = "RGB" + color = _rgb(color) + self.dispose = Image.core.fill(dispose_mode, dispose_size, color) + else: + # replace with previous contents + if self._im is not None: + # only dispose the extent in this frame + self.dispose = self._crop(self.im, self.dispose_extent) + elif frame_transparency is not None: + x0, y0, x1, y1 = self.dispose_extent + dispose_size = (x1 - x0, y1 - y0) + + Image._decompression_bomb_check(dispose_size) + dispose_mode = "P" + color = frame_transparency + if self.mode in ("RGB", "RGBA"): + dispose_mode = "RGBA" + color = _rgb(frame_transparency) + (0,) + self.dispose = Image.core.fill( + dispose_mode, dispose_size, color + ) + except AttributeError: + pass + + if interlace is not None: + transparency = -1 + if frame_transparency is not None: + if frame == 0: + if LOADING_STRATEGY != LoadingStrategy.RGB_ALWAYS: + self.info["transparency"] = frame_transparency + elif self.mode not in ("RGB", "RGBA"): + transparency = frame_transparency + self.tile = [ + ImageFile._Tile( + "gif", + (x0, y0, x1, y1), + self.__offset, + (bits, interlace, transparency), + ) + ] + + if info.get("comment"): + self.info["comment"] = info["comment"] + for k in ["duration", "extension"]: + if k in info: + self.info[k] = info[k] + elif k in self.info: + del self.info[k] + + def load_prepare(self) -> None: + temp_mode = "P" if self._frame_palette else "L" + self._prev_im = None + if self.__frame == 0: + if self._frame_transparency is not None: + self.im = Image.core.fill( + temp_mode, self.size, self._frame_transparency + ) + elif self.mode in ("RGB", "RGBA"): + self._prev_im = self.im + if self._frame_palette: + self.im = Image.core.fill("P", self.size, self._frame_transparency or 0) + self.im.putpalette("RGB", *self._frame_palette.getdata()) + else: + self._im = None + if not self._prev_im and self._im is not None and self.size != self.im.size: + expanded_im = Image.core.fill(self.im.mode, self.size) + if self._frame_palette: + expanded_im.putpalette("RGB", *self._frame_palette.getdata()) + expanded_im.paste(self.im, (0, 0) + self.im.size) + + self.im = expanded_im + self._mode = temp_mode + self._frame_palette = None + + super().load_prepare() + + def load_end(self) -> None: + if self.__frame == 0: + if self.mode == "P" and LOADING_STRATEGY == LoadingStrategy.RGB_ALWAYS: + if self._frame_transparency is not None: + self.im.putpalettealpha(self._frame_transparency, 0) + self._mode = "RGBA" + else: + self._mode = "RGB" + self.im = self.im.convert(self.mode, Image.Dither.FLOYDSTEINBERG) + return + if not self._prev_im: + return + if self.size != self._prev_im.size: + if self._frame_transparency is not None: + expanded_im = Image.core.fill("RGBA", self.size) + else: + expanded_im = Image.core.fill("P", self.size) + expanded_im.putpalette("RGB", "RGB", self.im.getpalette()) + expanded_im = expanded_im.convert("RGB") + expanded_im.paste(self._prev_im, (0, 0) + self._prev_im.size) + + self._prev_im = expanded_im + assert self._prev_im is not None + if self._frame_transparency is not None: + self.im.putpalettealpha(self._frame_transparency, 0) + frame_im = self.im.convert("RGBA") + else: + frame_im = self.im.convert("RGB") + + assert self.dispose_extent is not None + frame_im = self._crop(frame_im, self.dispose_extent) + + self.im = self._prev_im + self._mode = self.im.mode + if frame_im.mode == "RGBA": + self.im.paste(frame_im, self.dispose_extent, frame_im) + else: + self.im.paste(frame_im, self.dispose_extent) + + def tell(self) -> int: + return self.__frame + + +# -------------------------------------------------------------------- +# Write GIF files + + +RAWMODE = {"1": "L", "L": "L", "P": "P"} + + +def _normalize_mode(im: Image.Image) -> Image.Image: + """ + 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. + + :param im: Image object + :returns: Image object + """ + if im.mode in RAWMODE: + im.load() + return im + if Image.getmodebase(im.mode) == "RGB": + im = im.convert("P", palette=Image.Palette.ADAPTIVE) + assert im.palette is not None + if im.palette.mode == "RGBA": + for rgba in im.palette.colors: + if rgba[3] == 0: + im.info["transparency"] = im.palette.colors[rgba] + break + return im + return im.convert("L") + + +_Palette = Union[bytes, bytearray, list[int], ImagePalette.ImagePalette] + + +def _normalize_palette( + im: Image.Image, palette: _Palette | None, info: dict[str, Any] +) -> Image.Image: + """ + 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(palette.palette) + + if im.mode == "P": + if not source_palette: + im_palette = im.getpalette(None) + assert im_palette is not None + source_palette = bytearray(im_palette) + 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) + assert source_palette is not None + + if palette: + used_palette_colors: list[int | None] = [] + assert im.palette is not None + for i in range(0, len(source_palette), 3): + source_color = tuple(source_palette[i : i + 3]) + index = im.palette.colors.get(source_color) + if index in used_palette_colors: + index = None + used_palette_colors.append(index) + for i, index in enumerate(used_palette_colors): + if index is None: + for j in range(len(used_palette_colors)): + if j not in used_palette_colors: + used_palette_colors[i] = j + break + dest_map: list[int] = [] + for index in used_palette_colors: + assert index is not None + dest_map.append(index) + im = im.remap_palette(dest_map) + else: + optimized_palette_colors = _get_optimize(im, info) + if optimized_palette_colors is not None: + im = im.remap_palette(optimized_palette_colors, source_palette) + if "transparency" in info: + try: + info["transparency"] = optimized_palette_colors.index( + info["transparency"] + ) + except ValueError: + del info["transparency"] + return im + + assert im.palette is not None + im.palette.palette = source_palette + return im + + +def _write_single_frame( + im: Image.Image, + fp: IO[bytes], + palette: _Palette | None, +) -> None: + im_out = _normalize_mode(im) + for k, v in im_out.info.items(): + if isinstance(k, str): + 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, [ImageFile._Tile("gif", (0, 0) + im.size, 0, RAWMODE[im_out.mode])] + ) + + fp.write(b"\0") # end of image data + + +def _getbbox( + base_im: Image.Image, im_frame: Image.Image +) -> tuple[Image.Image, tuple[int, int, int, int] | None]: + palette_bytes = [ + bytes(im.palette.palette) if im.palette else b"" for im in (base_im, im_frame) + ] + if palette_bytes[0] != palette_bytes[1]: + im_frame = im_frame.convert("RGBA") + base_im = base_im.convert("RGBA") + delta = ImageChops.subtract_modulo(im_frame, base_im) + return delta, delta.getbbox(alpha_only=False) + + +class _Frame(NamedTuple): + im: Image.Image + bbox: tuple[int, int, int, int] | None + encoderinfo: dict[str, Any] + + +def _write_multiple_frames( + im: Image.Image, fp: IO[bytes], palette: _Palette | None +) -> bool: + duration = im.encoderinfo.get("duration") + disposal = im.encoderinfo.get("disposal", im.info.get("disposal")) + + im_frames: list[_Frame] = [] + previous_im: Image.Image | None = None + 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(): + if k == "transparency": + continue + if isinstance(k, str): + im.encoderinfo.setdefault(k, v) + + encoderinfo = im.encoderinfo.copy() + if "transparency" in im_frame.info: + encoderinfo.setdefault("transparency", im_frame.info["transparency"]) + im_frame = _normalize_palette(im_frame, palette, encoderinfo) + if isinstance(duration, (list, tuple)): + encoderinfo["duration"] = duration[frame_count] + elif duration is None and "duration" in im_frame.info: + encoderinfo["duration"] = im_frame.info["duration"] + if isinstance(disposal, (list, tuple)): + encoderinfo["disposal"] = disposal[frame_count] + frame_count += 1 + + diff_frame = None + if im_frames and previous_im: + # delta frame + delta, bbox = _getbbox(previous_im, im_frame) + if not bbox: + # This frame is identical to the previous frame + if encoderinfo.get("duration"): + im_frames[-1].encoderinfo["duration"] += encoderinfo["duration"] + continue + if im_frames[-1].encoderinfo.get("disposal") == 2: + if background_im is None: + color = im.encoderinfo.get( + "transparency", im.info.get("transparency", (0, 0, 0)) + ) + background = _get_background(im_frame, color) + background_im = Image.new("P", im_frame.size, background) + first_palette = im_frames[0].im.palette + assert first_palette is not None + background_im.putpalette(first_palette, first_palette.mode) + bbox = _getbbox(background_im, im_frame)[1] + elif encoderinfo.get("optimize") and im_frame.mode != "1": + if "transparency" not in encoderinfo: + assert im_frame.palette is not None + try: + encoderinfo["transparency"] = ( + im_frame.palette._new_color_index(im_frame) + ) + except ValueError: + pass + if "transparency" in encoderinfo: + # When the delta is zero, fill the image with transparency + diff_frame = im_frame.copy() + fill = Image.new("P", delta.size, encoderinfo["transparency"]) + if delta.mode == "RGBA": + r, g, b, a = delta.split() + mask = ImageMath.lambda_eval( + lambda args: args["convert"]( + args["max"]( + args["max"]( + args["max"](args["r"], args["g"]), args["b"] + ), + args["a"], + ) + * 255, + "1", + ), + r=r, + g=g, + b=b, + a=a, + ) + else: + if delta.mode == "P": + # Convert to L without considering palette + delta_l = Image.new("L", delta.size) + delta_l.putdata(delta.getdata()) + delta = delta_l + mask = ImageMath.lambda_eval( + lambda args: args["convert"](args["im"] * 255, "1"), + im=delta, + ) + diff_frame.paste(fill, mask=ImageOps.invert(mask)) + else: + bbox = None + previous_im = im_frame + im_frames.append(_Frame(diff_frame or im_frame, bbox, encoderinfo)) + + if len(im_frames) == 1: + if "duration" in im.encoderinfo: + # Since multiple frames will not be written, use the combined duration + im.encoderinfo["duration"] = im_frames[0].encoderinfo["duration"] + return False + + 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 + if not palette: + 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 + + +def _save_all(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + _save(im, fp, filename, save_all=True) + + +def _save( + im: Image.Image, fp: IO[bytes], filename: str | bytes, save_all: bool = False +) -> None: + # 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.setdefault("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: Image.Image) -> int: + interlace = im.encoderinfo.get("interlace", 1) + + # workaround for @PIL153 + if min(im.size) < 16: + interlace = 0 + + return interlace + + +def _write_local_header( + fp: IO[bytes], im: Image.Image, offset: tuple[int, int], flags: int +) -> None: + try: + transparency = im.encoderinfo["transparency"] + except KeyError: + transparency = None + + if "duration" in im.encoderinfo: + duration = int(im.encoderinfo["duration"] / 10) + else: + duration = 0 + + disposal = int(im.encoderinfo.get("disposal", 0)) + + if transparency is not None or duration != 0 or disposal: + packed_flag = 1 if transparency is not None else 0 + packed_flag |= disposal << 2 + + fp.write( + b"!" + + o8(249) # extension intro + + o8(4) # length + + o8(packed_flag) # packed fields + + o16(duration) # duration + + o8(transparency or 0) # transparency index + + 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: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + # 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 + assert quant_proc.stdout is not None + 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: Image.Image, info: dict[str, Any]) -> list[int] | None: + """ + 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"): + # 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 max(used_palette_colors) >= len(used_palette_colors): + return used_palette_colors + + assert im.palette is not None + num_palette_colors = len(im.palette.palette) // Image.getmodebands( + im.palette.mode + ) + current_palette_size = 1 << (num_palette_colors - 1).bit_length() + if ( + # check that the palette would become smaller when saved + len(used_palette_colors) <= current_palette_size // 2 + # check that the palette is not already the smallest possible size + and current_palette_size > 2 + ): + return used_palette_colors + return None + + +def _get_color_table_size(palette_bytes: bytes) -> int: + # 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: bytes) -> 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: Image.Image) -> bytes: + """ + Gets the palette for inclusion in the gif header + + :param im: Image object + :returns: Bytes, len<=768 suitable for inclusion in gif header + """ + if not im.palette: + return b"" + + palette = bytes(im.palette.palette) + if im.palette.mode == "RGBA": + palette = b"".join(palette[i * 4 : i * 4 + 3] for i in range(len(palette) // 3)) + return palette + + +def _get_background( + im: Image.Image, + info_background: int | tuple[int, int, int] | tuple[int, int, int, int] | None, +) -> int: + background = 0 + if info_background: + if isinstance(info_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 + assert im.palette is not None + try: + background = im.palette.getcolor(info_background, im) + except ValueError as e: + if str(e) not in ( + # If all 256 colors are in use, + # then there is no need for the background color + "cannot allocate more than 256 colors", + # Ignore non-opaque WebP background + "cannot add non-opaque RGBA color to RGB palette", + ): + raise + else: + background = info_background + return background + + +def _get_global_header(im: Image.Image, info: dict[str, Any]) -> list[bytes]: + """Return a list of strings representing a GIF header""" + + # Header Block + # https://www.matthewflickinger.com/lab/whatsinagif/bits_and_bytes.asp + + version = b"87a" + if im.info.get("version") == b"89a" or ( + info + and ( + "transparency" in info + or info.get("loop") is not None + or info.get("duration") + or info.get("comment") + ) + ): + 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) + + header = [ + 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), + ] + if info.get("loop") is not None: + header.append( + b"!" + + o8(255) # extension intro + + o8(11) + + b"NETSCAPE2.0" + + o8(3) + + o8(1) + + o16(info["loop"]) # number of loops + + o8(0) + ) + if info.get("comment"): + comment_block = b"!" + o8(254) # extension intro + + comment = info["comment"] + if isinstance(comment, str): + comment = comment.encode() + for i in range(0, len(comment), 255): + subblock = comment[i : i + 255] + comment_block += o8(len(subblock)) + subblock + + comment_block += o8(0) + header.append(comment_block) + return header + + +def _write_frame_data( + fp: IO[bytes], + im_frame: Image.Image, + offset: tuple[int, int], + params: dict[str, Any], +) -> None: + try: + im_frame.encoderinfo = params + + # local image header + _write_local_header(fp, im_frame, offset, 0) + + ImageFile._save( + im_frame, + fp, + [ImageFile._Tile("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: Image.Image, palette: _Palette | None = None, info: dict[str, Any] | None = None +) -> tuple[list[bytes], list[int] | 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) + + """ + if info is None: + info = {} + + used_palette_colors = _get_optimize(im, 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 + + +def getdata( + im: Image.Image, offset: tuple[int, int] = (0, 0), **params: Any +) -> list[bytes]: + """ + Legacy Method + + Return a list of strings representing this image. + The first string is a local image header, the rest contains + encoded image data. + + To specify duration, add the time in milliseconds, + e.g. ``getdata(im_frame, duration=1000)`` + + :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 + + """ + from io import BytesIO + + class Collector(BytesIO): + data = [] + + def write(self, data: Buffer) -> int: + self.data.append(data) + return len(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 0000000..220eac5 --- /dev/null +++ b/venv/Lib/site-packages/PIL/GimpGradientFile.py @@ -0,0 +1,149 @@ +# +# 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 __future__ import annotations + +from math import log, pi, sin, sqrt +from typing import IO, Callable + +from ._binary import o8 + +EPSILON = 1e-10 +"""""" # Enable auto-doc for data member + + +def linear(middle: float, pos: float) -> float: + 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: float, pos: float) -> float: + return pos ** (log(0.5) / log(max(middle, EPSILON))) + + +def sine(middle: float, pos: float) -> float: + return (sin((-pi / 2.0) + pi * linear(middle, pos)) + 1.0) / 2.0 + + +def sphere_increasing(middle: float, pos: float) -> float: + return sqrt(1.0 - (linear(middle, pos) - 1.0) ** 2) + + +def sphere_decreasing(middle: float, pos: float) -> float: + 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: ( + list[ + tuple[ + float, + float, + float, + list[float], + list[float], + Callable[[float, float], float], + ] + ] + | None + ) = None + + def getpalette(self, entries: int = 256) -> tuple[bytes, str]: + assert self.gradient is not None + 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: IO[bytes]) -> None: + if fp.readline()[:13] != b"GIMP Gradient": + msg = "not a GIMP gradient file" + raise SyntaxError(msg) + + 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) + + self.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: + msg = "cannot handle HSV colour space" + raise OSError(msg) + + self.gradient.append((x0, x1, xm, rgb0, rgb1, segment)) diff --git a/venv/Lib/site-packages/PIL/GimpPaletteFile.py b/venv/Lib/site-packages/PIL/GimpPaletteFile.py new file mode 100644 index 0000000..4cad0eb --- /dev/null +++ b/venv/Lib/site-packages/PIL/GimpPaletteFile.py @@ -0,0 +1,58 @@ +# +# 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. +# +from __future__ import annotations + +import re +from typing import IO + +from ._binary import o8 + + +class GimpPaletteFile: + """File handler for GIMP's palette format.""" + + rawmode = "RGB" + + def __init__(self, fp: IO[bytes]) -> None: + palette = [o8(i) * 3 for i in range(256)] + + if fp.readline()[:12] != b"GIMP Palette": + msg = "not a GIMP palette file" + raise SyntaxError(msg) + + for i in range(256): + s = fp.readline() + if not s: + break + + # skip fields and comment lines + if re.match(rb"\w+:|#", s): + continue + if len(s) > 100: + msg = "bad palette file" + raise SyntaxError(msg) + + v = tuple(map(int, s.split()[:3])) + if len(v) != 3: + msg = "bad palette entry" + raise ValueError(msg) + + palette[i] = o8(v[0]) + o8(v[1]) + o8(v[2]) + + self.palette = b"".join(palette) + + def getpalette(self) -> tuple[bytes, str]: + 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 0000000..e9aa084 --- /dev/null +++ b/venv/Lib/site-packages/PIL/GribStubImagePlugin.py @@ -0,0 +1,76 @@ +# +# 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 __future__ import annotations + +from typing import IO + +from . import Image, ImageFile + +_handler = None + + +def register_handler(handler: ImageFile.StubHandler | None) -> None: + """ + Install application-specific GRIB image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +# -------------------------------------------------------------------- +# Image adapter + + +def _accept(prefix: bytes) -> bool: + return prefix[:4] == b"GRIB" and prefix[7] == 1 + + +class GribStubImageFile(ImageFile.StubImageFile): + format = "GRIB" + format_description = "GRIB" + + def _open(self) -> None: + offset = self.fp.tell() + + if not _accept(self.fp.read(8)): + msg = "Not a GRIB file" + raise SyntaxError(msg) + + 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) -> ImageFile.StubHandler | None: + return _handler + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if _handler is None or not hasattr(_handler, "save"): + msg = "GRIB save handler not installed" + raise OSError(msg) + _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 0000000..cc9e73d --- /dev/null +++ b/venv/Lib/site-packages/PIL/Hdf5StubImagePlugin.py @@ -0,0 +1,76 @@ +# +# 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 __future__ import annotations + +from typing import IO + +from . import Image, ImageFile + +_handler = None + + +def register_handler(handler: ImageFile.StubHandler | None) -> None: + """ + Install application-specific HDF5 image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +# -------------------------------------------------------------------- +# Image adapter + + +def _accept(prefix: bytes) -> bool: + return prefix[:8] == b"\x89HDF\r\n\x1a\n" + + +class HDF5StubImageFile(ImageFile.StubImageFile): + format = "HDF5" + format_description = "HDF5" + + def _open(self) -> None: + offset = self.fp.tell() + + if not _accept(self.fp.read(8)): + msg = "Not an HDF file" + raise SyntaxError(msg) + + 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) -> ImageFile.StubHandler | None: + return _handler + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if _handler is None or not hasattr(_handler, "save"): + msg = "HDF5 save handler not installed" + raise OSError(msg) + _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 0000000..9757b2b --- /dev/null +++ b/venv/Lib/site-packages/PIL/IcnsImagePlugin.py @@ -0,0 +1,412 @@ +# +# 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. +# 2020-04-04 Allow saving on all operating systems. +# +# Copyright (c) 2004 by Bob Ippolito. +# Copyright (c) 2004 by Secret Labs. +# Copyright (c) 2004 by Fredrik Lundh. +# Copyright (c) 2014 by Alastair Houghton. +# Copyright (c) 2020 by Pan Jing. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import io +import os +import struct +import sys +from typing import IO + +from . import Image, ImageFile, PngImagePlugin, features +from ._deprecate import deprecate + +enable_jpeg2k = features.check_codec("jpg_2000") +if enable_jpeg2k: + from . import Jpeg2KImagePlugin + +MAGIC = b"icns" +HEADERSIZE = 8 + + +def nextheader(fobj: IO[bytes]) -> tuple[bytes, int]: + return struct.unpack(">4sI", fobj.read(HEADERSIZE)) + + +def read_32t( + fobj: IO[bytes], start_length: tuple[int, int], size: tuple[int, int, int] +) -> dict[str, Image.Image]: + # 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": + msg = "Unknown signature, expecting 0x00000000" + raise SyntaxError(msg) + return read_32(fobj, (start + 4, length - 4), size) + + +def read_32( + fobj: IO[bytes], start_length: tuple[int, int], size: tuple[int, int, int] +) -> dict[str, Image.Image]: + """ + 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_int = byte[0] + if byte_int & 0x80: + blocksize = byte_int - 125 + byte = fobj.read(1) + for i in range(blocksize): + data.append(byte) + else: + blocksize = byte_int + 1 + data.append(fobj.read(blocksize)) + bytesleft -= blocksize + if bytesleft <= 0: + break + if bytesleft != 0: + msg = f"Error reading channel [{repr(bytesleft)} left]" + raise SyntaxError(msg) + 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: IO[bytes], start_length: tuple[int, int], size: tuple[int, int, int] +) -> dict[str, Image.Image]: + # 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: IO[bytes], start_length: tuple[int, int], size: tuple[int, int, int] +) -> dict[str, Image.Image]: + (start, length) = start_length + fobj.seek(start) + sig = fobj.read(12) + + im: Image.Image + if sig[:8] == b"\x89PNG\x0d\x0a\x1a\x0a": + fobj.seek(start) + im = PngImagePlugin.PngImageFile(fobj) + Image._decompression_bomb_check(im.size) + 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: + msg = ( + "Unsupported icon subimage format (rebuild PIL " + "with JPEG 2000 support to fix this)" + ) + raise ValueError(msg) + # j2k, jpc or j2c + fobj.seek(start) + jp2kstream = fobj.read(length) + f = io.BytesIO(jp2kstream) + im = Jpeg2KImagePlugin.Jpeg2KImageFile(f) + Image._decompression_bomb_check(im.size) + if im.mode != "RGBA": + im = im.convert("RGBA") + return {"RGBA": im} + else: + msg = "Unsupported icon subimage format" + raise ValueError(msg) + + +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: IO[bytes]) -> None: + """ + fobj is a file-like object as an icns resource + """ + # signature : (start, length) + self.dct = {} + self.fobj = fobj + sig, filesize = nextheader(fobj) + if not _accept(sig): + msg = "not an icns file" + raise SyntaxError(msg) + i = HEADERSIZE + while i < filesize: + sig, blocksize = nextheader(fobj) + if blocksize <= 0: + msg = "invalid block header" + raise SyntaxError(msg) + i += HEADERSIZE + blocksize -= HEADERSIZE + self.dct[sig] = (i, blocksize) + fobj.seek(blocksize, io.SEEK_CUR) + i += blocksize + + def itersizes(self) -> list[tuple[int, int, int]]: + 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) -> tuple[int, int, int]: + sizes = self.itersizes() + if not sizes: + msg = "No 32bit icon resources found" + raise SyntaxError(msg) + return max(sizes) + + def dataforsize(self, size: tuple[int, int, int]) -> dict[str, Image.Image]: + """ + 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: tuple[int, int] | tuple[int, int, int] | None = None + ) -> Image.Image: + if size is None: + size = self.bestsize() + elif len(size) == 2: + size = (size[0], size[1], 1) + channels = self.dataforsize(size) + + im = channels.get("RGBA") + if im: + return im + + im = channels["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) -> None: + 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 # type: ignore[override] + def size(self) -> tuple[int, int] | tuple[int, int, int]: + return self._size + + @size.setter + def size(self, value: tuple[int, int] | tuple[int, int, int]) -> None: + if len(value) == 3: + deprecate("Setting size to (width, height, scale)", 12, "load(scale)") + if value in self.info["sizes"]: + self._size = value # type: ignore[assignment] + return + else: + # Check that a matching size exists, + # or that there is a scale that would create a size that matches + for size in self.info["sizes"]: + simple_size = size[0] * size[2], size[1] * size[2] + scale = simple_size[0] // value[0] + if simple_size[1] / value[1] == scale: + self._size = value + return + msg = "This is not one of the allowed sizes of this image" + raise ValueError(msg) + + def load(self, scale: int | None = None) -> Image.core.PixelAccess | None: + if scale is not None or len(self.size) == 3: + if scale is None and len(self.size) == 3: + scale = self.size[2] + assert scale is not None + width, height = self.size[:2] + self.size = width * scale, height * scale + self.best_size = width, height, scale + + px = Image.Image.load(self) + if self._im is not None and self.im.size == self.size: + # Already loaded + return px + 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 + px = im.load() + + self.im = im.im + self._mode = im.mode + self.size = im.size + + return px + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + """ + Saves the image as a series of PNG files, + that are then combined into a .icns file. + """ + if hasattr(fp, "flush"): + fp.flush() + + sizes = { + b"ic07": 128, + b"ic08": 256, + b"ic09": 512, + b"ic10": 1024, + b"ic11": 32, + b"ic12": 64, + b"ic13": 256, + b"ic14": 512, + } + provided_images = {im.width: im for im in im.encoderinfo.get("append_images", [])} + size_streams = {} + for size in set(sizes.values()): + image = ( + provided_images[size] + if size in provided_images + else im.resize((size, size)) + ) + + temp = io.BytesIO() + image.save(temp, "png") + size_streams[size] = temp.getvalue() + + entries = [] + for type, size in sizes.items(): + stream = size_streams[size] + entries.append((type, HEADERSIZE + len(stream), stream)) + + # Header + fp.write(MAGIC) + file_length = HEADERSIZE # Header + file_length += HEADERSIZE + 8 * len(entries) # TOC + file_length += sum(entry[1] for entry in entries) + fp.write(struct.pack(">i", file_length)) + + # TOC + fp.write(b"TOC ") + fp.write(struct.pack(">i", HEADERSIZE + len(entries) * HEADERSIZE)) + for entry in entries: + fp.write(entry[0]) + fp.write(struct.pack(">i", entry[1])) + + # Data + for entry in entries: + fp.write(entry[0]) + fp.write(struct.pack(">i", entry[1])) + fp.write(entry[2]) + + if hasattr(fp, "flush"): + fp.flush() + + +def _accept(prefix: bytes) -> bool: + return prefix[:4] == MAGIC + + +Image.register_open(IcnsImageFile.format, IcnsImageFile, _accept) +Image.register_extension(IcnsImageFile.format, ".icns") + +Image.register_save(IcnsImageFile.format, _save) +Image.register_mime(IcnsImageFile.format, "image/icns") + +if __name__ == "__main__": + if len(sys.argv) < 2: + print("Syntax: python3 IcnsImagePlugin.py [file]") + sys.exit() + + with open(sys.argv[1], "rb") as fp: + imf = IcnsImageFile(fp) + for size in imf.info["sizes"]: + width, height, scale = imf.size = size + imf.save(f"out-{width}-{height}-{scale}.png") + 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 0000000..e879f18 --- /dev/null +++ b/venv/Lib/site-packages/PIL/IcoImagePlugin.py @@ -0,0 +1,381 @@ +# +# 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 +from __future__ import annotations + +import warnings +from io import BytesIO +from math import ceil, log +from typing import IO, NamedTuple + +from . import BmpImagePlugin, Image, ImageFile, PngImagePlugin +from ._binary import i16le as i16 +from ._binary import i32le as i32 +from ._binary import o8 +from ._binary import o16le as o16 +from ._binary import o32le as o32 + +# +# -------------------------------------------------------------------- + +_MAGIC = b"\0\0\1\0" + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + fp.write(_MAGIC) # (2+2) + bmp = im.encoderinfo.get("bitmap_format") == "bmp" + sizes = im.encoderinfo.get( + "sizes", + [(16, 16), (24, 24), (32, 32), (48, 48), (64, 64), (128, 128), (256, 256)], + ) + frames = [] + provided_ims = [im] + im.encoderinfo.get("append_images", []) + width, height = im.size + for size in sorted(set(sizes)): + if size[0] > width or size[1] > height or size[0] > 256 or size[1] > 256: + continue + + for provided_im in provided_ims: + if provided_im.size != size: + continue + frames.append(provided_im) + if bmp: + bits = BmpImagePlugin.SAVE[provided_im.mode][1] + bits_used = [bits] + for other_im in provided_ims: + if other_im.size != size: + continue + bits = BmpImagePlugin.SAVE[other_im.mode][1] + if bits not in bits_used: + # Another image has been supplied for this size + # with a different bit depth + frames.append(other_im) + bits_used.append(bits) + break + else: + # TODO: invent a more convenient method for proportional scalings + frame = provided_im.copy() + frame.thumbnail(size, Image.Resampling.LANCZOS, reducing_gap=None) + frames.append(frame) + fp.write(o16(len(frames))) # idCount(2) + offset = fp.tell() + len(frames) * 16 + for frame in frames: + width, height = frame.size + # 0 means 256 + fp.write(o8(width if width < 256 else 0)) # bWidth(1) + fp.write(o8(height if height < 256 else 0)) # bHeight(1) + + bits, colors = BmpImagePlugin.SAVE[frame.mode][1:] if bmp else (32, 0) + fp.write(o8(colors)) # bColorCount(1) + fp.write(b"\0") # bReserved(1) + fp.write(b"\0\0") # wPlanes(2) + fp.write(o16(bits)) # wBitCount(2) + + image_io = BytesIO() + if bmp: + frame.save(image_io, "dib") + + if bits != 32: + and_mask = Image.new("1", size) + ImageFile._save( + and_mask, + image_io, + [ImageFile._Tile("raw", (0, 0) + size, 0, ("1", 0, -1))], + ) + else: + frame.save(image_io, "png") + image_io.seek(0) + image_bytes = image_io.read() + if bmp: + image_bytes = image_bytes[:8] + o32(height * 2) + image_bytes[12:] + bytes_len = len(image_bytes) + fp.write(o32(bytes_len)) # dwBytesInRes(4) + fp.write(o32(offset)) # dwImageOffset(4) + current = fp.tell() + fp.seek(offset) + fp.write(image_bytes) + offset = offset + bytes_len + fp.seek(current) + + +def _accept(prefix: bytes) -> bool: + return prefix[:4] == _MAGIC + + +class IconHeader(NamedTuple): + width: int + height: int + nb_color: int + reserved: int + planes: int + bpp: int + size: int + offset: int + dim: tuple[int, int] + square: int + color_depth: int + + +class IcoFile: + def __init__(self, buf: IO[bytes]) -> None: + """ + Parse image from file-like object containing ico file data + """ + + # check magic + s = buf.read(6) + if not _accept(s): + msg = "not an ICO file" + raise SyntaxError(msg) + + self.buf = buf + self.entry = [] + + # Number of items in file + self.nb_items = i16(s, 4) + + # Get headers for each item + for i in range(self.nb_items): + s = buf.read(16) + + # See Wikipedia + width = s[0] or 256 + height = s[1] or 256 + + # No. of colors in image (0 if >=8bpp) + nb_color = s[2] + bpp = i16(s, 6) + icon_header = IconHeader( + width=width, + height=height, + nb_color=nb_color, + reserved=s[3], + planes=i16(s, 4), + bpp=i16(s, 6), + size=i32(s, 8), + offset=i32(s, 12), + dim=(width, height), + square=width * height, + # See Wikipedia notes about color depth. + # We need this just to differ images with equal sizes + color_depth=bpp or (nb_color != 0 and ceil(log(nb_color, 2))) or 256, + ) + + 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.square, reverse=True) + + def sizes(self) -> set[tuple[int, int]]: + """ + Get a set of all available icon sizes and color depths. + """ + return {(h.width, h.height) for h in self.entry} + + def getentryindex(self, size: tuple[int, int], bpp: int | bool = False) -> int: + 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: tuple[int, int], bpp: int | bool = False) -> Image.Image: + """ + Get an image from the icon + """ + return self.frame(self.getentryindex(size, bpp)) + + def frame(self, idx: int) -> Image.Image: + """ + 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) + + im: Image.Image + if data[:8] == PngImagePlugin._MAGIC: + # png frame + im = PngImagePlugin.PngImageFile(self.buf) + Image._decompression_bomb_check(im.size) + 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] = ImageFile._Tile(d, (0, 0) + im.size, o, a) + + # figure out where AND mask image starts + if header.bpp == 32: + # 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 + try: + mask = Image.frombuffer( + "L", # 8bpp + im.size, # (w, h) + alpha_bytes, # source chars + "raw", # raw decoder + ("L", 0, -1), # 8bpp inverted, unpadded, reversed + ) + except ValueError: + if ImageFile.LOAD_TRUNCATED_IMAGES: + mask = None + else: + raise + 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 + + total_bytes = int((w * im.size[1]) / 8) + and_mask_offset = header.offset + header.size - total_bytes + + self.buf.seek(and_mask_offset) + mask_data = self.buf.read(total_bytes) + + # convert raw data to image + try: + 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 + ) + except ValueError: + if ImageFile.LOAD_TRUNCATED_IMAGES: + mask = None + else: + raise + + # now we have two images, im is XOR image and mask is AND image + + # apply mask image as alpha channel + if mask: + 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. If you are unable to view the icon in Windows, convert the + image to "RGBA" mode before saving. + + 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) -> None: + self.ico = IcoFile(self.fp) + self.info["sizes"] = self.ico.sizes() + self.size = self.ico.entry[0].dim + self.load() + + @property + def size(self) -> tuple[int, int]: + return self._size + + @size.setter + def size(self, value: tuple[int, int]) -> None: + if value not in self.info["sizes"]: + msg = "This is not one of the allowed sizes of this image" + raise ValueError(msg) + self._size = value + + def load(self) -> Image.core.PixelAccess | None: + if self._im is not None and self.im.size == self.size: + # Already loaded + return Image.Image.load(self) + 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.palette: + self.palette = im.palette + 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 + return None + + def load_seek(self, pos: int) -> None: + # 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 0000000..b4215a0 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImImagePlugin.py @@ -0,0 +1,386 @@ +# +# 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. +# +from __future__ import annotations + +import os +import re +from typing import IO, Any + +from . import Image, ImageFile, ImagePalette + +# -------------------------------------------------------------------- +# 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": ("RGB", "RGBX;L"), + "CMYK image": ("CMYK", "CMYK;L"), + "YCC image": ("YCbCr", "YCbCr;L"), +} + +# ifunc95 extensions +for i in ["8", "8S", "16", "16S", "32", "32F"]: + OPEN[f"L {i} image"] = ("F", f"F;{i}") + OPEN[f"L*{i} image"] = ("F", f"F;{i}") +for i in ["16", "16L", "16B"]: + OPEN[f"L {i} image"] = (f"I;{i}", f"I;{i}") + OPEN[f"L*{i} image"] = (f"I;{i}", f"I;{i}") +for i in ["32S"]: + OPEN[f"L {i} image"] = ("I", f"I;{i}") + OPEN[f"L*{i} image"] = ("I", f"I;{i}") +for j in range(2, 33): + OPEN[f"L*{j} image"] = ("F", f"F;{j}") + + +# -------------------------------------------------------------------- +# Read IM directory + +split = re.compile(rb"^([A-Za-z][^:]*):[ \t]*(.*)[ \t]*$") + + +def number(s: Any) -> float: + 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) -> None: + # 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): + msg = "not an IM file" + raise SyntaxError(msg) + 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: + msg = "not an IM file" + raise SyntaxError(msg) + + 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: + msg = "not an IM file" + raise SyntaxError(msg) 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: + msg = f"Syntax error in IM header: {s.decode('ascii', 'replace')}" + raise SyntaxError(msg) + + if not n: + msg = "Not an IM file" + raise SyntaxError(msg) + + # Basic attributes + self._size = self.info[SIZE] + self._mode = self.info[MODE] + + # Skip forward to start of image data + while s and s[:1] != b"\x1A": + s = self.fp.read(1) + if not s: + msg = "File truncated" + raise SyntaxError(msg) + + 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 palette[i] != i: + linear = 0 + else: + greyscale = 0 + if self.mode in ["L", "LA", "P", "PA"]: + if greyscale: + if not linear: + self.lut = list(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 = list(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 = [ + ImageFile._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 = [ + ImageFile._Tile("raw", (0, 0) + self.size, offs, ("G", 0, -1)), + ImageFile._Tile("raw", (0, 0) + self.size, offs + size, ("R", 0, -1)), + ImageFile._Tile( + "raw", (0, 0) + self.size, offs + 2 * size, ("B", 0, -1) + ), + ] + else: + # LabEye/IFUNC files + self.tile = [ + ImageFile._Tile("raw", (0, 0) + self.size, offs, (self.rawmode, 0, -1)) + ] + + @property + def n_frames(self) -> int: + return self.info[FRAMES] + + @property + def is_animated(self) -> bool: + return self.info[FRAMES] > 1 + + def seek(self, frame: int) -> None: + 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 = [ + ImageFile._Tile("raw", (0, 0) + self.size, offs, (self.rawmode, 0, -1)) + ] + + def tell(self) -> int: + return self.frame + + +# +# -------------------------------------------------------------------- +# 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: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + try: + image_type, rawmode = SAVE[im.mode] + except KeyError as e: + msg = f"Cannot save {im.mode} images as IM" + raise ValueError(msg) from e + + frames = im.encoderinfo.get("frames", 1) + + fp.write(f"Image type: {image_type} image\r\n".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 + if isinstance(filename, bytes): + filename = filename.decode("ascii") + name, ext = os.path.splitext(os.path.basename(filename)) + name = "".join([name[: 92 - len(ext)], ext]) + + fp.write(f"Name: {name}\r\n".encode("ascii")) + fp.write(f"Image size (x*y): {im.size[0]}*{im.size[1]}\r\n".encode("ascii")) + fp.write(f"File size (no of images): {frames}\r\n".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"]: + im_palette = im.im.getpalette("RGB", "RGB;L") + colors = len(im_palette) // 3 + palette = b"" + for i in range(3): + palette += im_palette[colors * i : colors * (i + 1)] + palette += b"\x00" * (256 - colors) + fp.write(palette) # 768 bytes + ImageFile._save( + im, fp, [ImageFile._Tile("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 0000000..dff3d06 --- /dev/null +++ b/venv/Lib/site-packages/PIL/Image.py @@ -0,0 +1,4197 @@ +# +# 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. +# + +from __future__ import annotations + +import abc +import atexit +import builtins +import io +import logging +import math +import os +import re +import struct +import sys +import tempfile +import warnings +from collections.abc import Callable, Iterator, MutableMapping, Sequence +from enum import IntEnum +from types import ModuleType +from typing import ( + IO, + TYPE_CHECKING, + Any, + Literal, + Protocol, + cast, +) + +# VERSION was removed in Pillow 6.0.0. +# PILLOW_VERSION was removed in Pillow 9.0.0. +# Use __version__ instead. +from . import ( + ExifTags, + ImageMode, + TiffTags, + UnidentifiedImageError, + __version__, + _plugins, +) +from ._binary import i32le, o32be, o32le +from ._deprecate import deprecate +from ._util import DeferredError, is_path + +ElementTree: ModuleType | None +try: + from defusedxml import ElementTree +except ImportError: + ElementTree = None + +logger = logging.getLogger(__name__) + + +class DecompressionBombWarning(RuntimeWarning): + pass + + +class DecompressionBombError(Exception): + pass + + +WARN_POSSIBLE_FORMATS: bool = False + +# Limit to around a quarter gigabyte for a 24-bit (3 bpp) image +MAX_IMAGE_PIXELS: int | None = 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): + msg = ( + "The _imaging extension was built for another version of Pillow or PIL:\n" + f"Core version: {getattr(core, 'PILLOW_VERSION', None)}\n" + f"Pillow version: {__version__}" + ) + raise ImportError(msg) + +except ImportError as v: + core = DeferredError.new(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 + + +def isImageType(t: Any) -> TypeGuard[Image]: + """ + 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 + """ + deprecate("Image.isImageType(im)", 12, "isinstance(im, Image.Image)") + return hasattr(t, "im") + + +# +# Constants + + +# transpose +class Transpose(IntEnum): + 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) +class Transform(IntEnum): + AFFINE = 0 + EXTENT = 1 + PERSPECTIVE = 2 + QUAD = 3 + MESH = 4 + + +# resampling filters (also defined in Imaging.h) +class Resampling(IntEnum): + NEAREST = 0 + BOX = 4 + BILINEAR = 2 + HAMMING = 5 + BICUBIC = 3 + LANCZOS = 1 + + +_filters_support = { + Resampling.BOX: 0.5, + Resampling.BILINEAR: 1.0, + Resampling.HAMMING: 1.0, + Resampling.BICUBIC: 2.0, + Resampling.LANCZOS: 3.0, +} + + +# dithers +class Dither(IntEnum): + NONE = 0 + ORDERED = 1 # Not yet implemented + RASTERIZE = 2 # Not yet implemented + FLOYDSTEINBERG = 3 # default + + +# palettes/quantizers +class Palette(IntEnum): + WEB = 0 + ADAPTIVE = 1 + + +class Quantize(IntEnum): + MEDIANCUT = 0 + MAXCOVERAGE = 1 + FASTOCTREE = 2 + LIBIMAGEQUANT = 3 + + +module = sys.modules[__name__] +for enum in (Transpose, Transform, Resampling, Dither, Palette, Quantize): + for item in enum: + setattr(module, item.name, item.value) + + +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 + +if TYPE_CHECKING: + import mmap + from xml.etree.ElementTree import Element + + from IPython.lib.pretty import PrettyPrinter + + from . import ImageFile, ImageFilter, ImagePalette, ImageQt, TiffImagePlugin + from ._typing import CapsuleType, NumpyArray, StrOrBytesPath, TypeGuard +ID: list[str] = [] +OPEN: dict[ + str, + tuple[ + Callable[[IO[bytes], str | bytes], ImageFile.ImageFile], + Callable[[bytes], bool | str] | None, + ], +] = {} +MIME: dict[str, str] = {} +SAVE: dict[str, Callable[[Image, IO[bytes], str | bytes], None]] = {} +SAVE_ALL: dict[str, Callable[[Image, IO[bytes], str | bytes], None]] = {} +EXTENSION: dict[str, str] = {} +DECODERS: dict[str, type[ImageFile.PyDecoder]] = {} +ENCODERS: dict[str, type[ImageFile.PyEncoder]] = {} + +# -------------------------------------------------------------------- +# Modes + +_ENDIAN = "<" if sys.byteorder == "little" else ">" + + +def _conv_type_shape(im: Image) -> tuple[tuple[int, ...], str]: + m = ImageMode.getmode(im.mode) + shape: tuple[int, ...] = (im.height, im.width) + extra = len(m.bands) + if extra != 1: + shape += (extra,) + return shape, m.typestr + + +MODES = [ + "1", + "CMYK", + "F", + "HSV", + "I", + "I;16", + "I;16B", + "I;16L", + "I;16N", + "L", + "LA", + "La", + "LAB", + "P", + "PA", + "RGB", + "RGBA", + "RGBa", + "RGBX", + "YCbCr", +] + +# raw modes that may be memory mapped. NOTE: if you change this, you +# may have to modify the stride calculation in map.c too! +_MAPMODES = ("L", "P", "RGBX", "RGBA", "CMYK", "I;16", "I;16L", "I;16B") + + +def getmodebase(mode: str) -> str: + """ + Gets the "base" mode for given mode. This function returns "L" for + images that contain grayscale data, and "RGB" for images that + contain color data. + + :param mode: Input mode. + :returns: "L" or "RGB". + :exception KeyError: If the input mode was not a standard mode. + """ + return ImageMode.getmode(mode).basemode + + +def getmodetype(mode: str) -> str: + """ + Gets the storage type mode. Given a mode, this function returns a + single-layer mode suitable for storing individual bands. + + :param mode: Input mode. + :returns: "L", "I", or "F". + :exception KeyError: If the input mode was not a standard mode. + """ + return ImageMode.getmode(mode).basetype + + +def getmodebandnames(mode: str) -> tuple[str, ...]: + """ + Gets a list of individual band names. Given a mode, this function returns + a tuple containing the names of individual bands (use + :py:method:`~PIL.Image.getmodetype` to get the mode used to store each + individual band. + + :param mode: Input mode. + :returns: A tuple containing band names. The length of the tuple + gives the number of bands in an image of the given mode. + :exception KeyError: If the input mode was not a standard mode. + """ + return ImageMode.getmode(mode).bands + + +def getmodebands(mode: str) -> int: + """ + Gets the number of individual bands for this mode. + + :param mode: Input mode. + :returns: The number of bands in this mode. + :exception KeyError: If the input mode was not a standard mode. + """ + return len(ImageMode.getmode(mode).bands) + + +# -------------------------------------------------------------------- +# Helpers + +_initialized = 0 + + +def preinit() -> None: + """ + Explicitly loads BMP, GIF, JPEG, PPM and PPM file format drivers. + + It is called when opening or saving images. + """ + + global _initialized + if _initialized >= 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 + + _initialized = 1 + + +def init() -> bool: + """ + Explicitly initializes the Python Imaging Library. This function + loads all available file format drivers. + + It is called when opening or saving images if :py:meth:`~preinit()` is + insufficient, and by :py:meth:`~PIL.features.pilinfo`. + """ + + global _initialized + if _initialized >= 2: + return False + + parent_name = __name__.rpartition(".")[0] + for plugin in _plugins: + try: + logger.debug("Importing %s", plugin) + __import__(f"{parent_name}.{plugin}", globals(), locals(), []) + except ImportError as e: + logger.debug("Image: failed to import %s: %s", plugin, e) + + if OPEN or SAVE: + _initialized = 2 + return True + return False + + +# -------------------------------------------------------------------- +# Codec factories (used by tobytes/frombytes and ImageFile.load) + + +def _getdecoder( + mode: str, decoder_name: str, args: Any, extra: tuple[Any, ...] = () +) -> core.ImagingDecoder | ImageFile.PyDecoder: + # 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, f"{decoder_name}_decoder") + except AttributeError as e: + msg = f"decoder {decoder_name} not available" + raise OSError(msg) from e + return decoder(mode, *args + extra) + + +def _getencoder( + mode: str, encoder_name: str, args: Any, extra: tuple[Any, ...] = () +) -> core.ImagingEncoder | ImageFile.PyEncoder: + # 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, f"{encoder_name}_encoder") + except AttributeError as e: + msg = f"encoder {encoder_name} not available" + raise OSError(msg) from e + return encoder(mode, *args + extra) + + +# -------------------------------------------------------------------- +# Simple expression analyzer + + +class ImagePointTransform: + """ + Used with :py:meth:`~PIL.Image.Image.point` for single band images with more than + 8 bits, this represents an affine transformation, where the value is multiplied by + ``scale`` and ``offset`` is added. + """ + + def __init__(self, scale: float, offset: float) -> None: + self.scale = scale + self.offset = offset + + def __neg__(self) -> ImagePointTransform: + return ImagePointTransform(-self.scale, -self.offset) + + def __add__(self, other: ImagePointTransform | float) -> ImagePointTransform: + if isinstance(other, ImagePointTransform): + return ImagePointTransform( + self.scale + other.scale, self.offset + other.offset + ) + return ImagePointTransform(self.scale, self.offset + other) + + __radd__ = __add__ + + def __sub__(self, other: ImagePointTransform | float) -> ImagePointTransform: + return self + -other + + def __rsub__(self, other: ImagePointTransform | float) -> ImagePointTransform: + return other + -self + + def __mul__(self, other: ImagePointTransform | float) -> ImagePointTransform: + if isinstance(other, ImagePointTransform): + return NotImplemented + return ImagePointTransform(self.scale * other, self.offset * other) + + __rmul__ = __mul__ + + def __truediv__(self, other: ImagePointTransform | float) -> ImagePointTransform: + if isinstance(other, ImagePointTransform): + return NotImplemented + return ImagePointTransform(self.scale / other, self.offset / other) + + +def _getscaleoffset( + expr: Callable[[ImagePointTransform], ImagePointTransform | float] +) -> tuple[float, float]: + a = expr(ImagePointTransform(1, 0)) + return (a.scale, a.offset) if isinstance(a, ImagePointTransform) else (0, a) + + +# -------------------------------------------------------------------- +# Implementation wrapper + + +class SupportsGetData(Protocol): + def getdata( + self, + ) -> tuple[Transform, Sequence[int]]: ... + + +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: str | None = None + format_description: str | None = None + _close_exclusive_fp_after_loading = True + + def __init__(self) -> None: + # FIXME: take "new" parameters / other image? + # FIXME: turn mode and size into delegating properties? + self._im: core.ImagingCore | DeferredError | None = None + self._mode = "" + self._size = (0, 0) + self.palette: ImagePalette.ImagePalette | None = None + self.info: dict[str | tuple[int, int], Any] = {} + self.readonly = 0 + self._exif: Exif | None = None + + @property + def im(self) -> core.ImagingCore: + if isinstance(self._im, DeferredError): + raise self._im.ex + assert self._im is not None + return self._im + + @im.setter + def im(self, im: core.ImagingCore) -> None: + self._im = im + + @property + def width(self) -> int: + return self.size[0] + + @property + def height(self) -> int: + return self.size[1] + + @property + def size(self) -> tuple[int, int]: + return self._size + + @property + def mode(self) -> str: + return self._mode + + def _new(self, im: core.ImagingCore) -> Image: + 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 _close_fp(self): + if getattr(self, "_fp", False): + if self._fp != self.fp: + self._fp.close() + self._fp = DeferredError(ValueError("Operation on closed image")) + if self.fp: + self.fp.close() + + def __exit__(self, *args): + if hasattr(self, "fp"): + if getattr(self, "_exclusive_fp", False): + self._close_fp() + self.fp = None + + def close(self) -> None: + """ + 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 required to close images that have multiple frames or + have not had their file read and closed by the + :py:meth:`~PIL.Image.Image.load` method. See :ref:`file-handling` for + more information. + """ + if hasattr(self, "fp"): + try: + self._close_fp() + self.fp = None + except Exception as msg: + logger.debug("Error closing: %s", msg) + + if getattr(self, "map", None): + self.map: mmap.mmap | None = 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 = DeferredError(ValueError("Operation on closed image")) + + def _copy(self) -> None: + self.load() + self.im = self.im.copy() + self.readonly = 0 + + def _ensure_mutable(self) -> None: + if self.readonly: + self._copy() + else: + self.load() + + def _dump( + self, file: str | None = None, format: str | None = None, **options: Any + ) -> str: + suffix = "" + if format: + suffix = f".{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: object) -> bool: + if self.__class__ is not other.__class__: + return False + assert isinstance(other, Image) + return ( + self.mode == other.mode + and self.size == other.size + and self.info == other.info + and self.getpalette() == other.getpalette() + and self.tobytes() == other.tobytes() + ) + + def __repr__(self) -> str: + return ( + f"<{self.__class__.__module__}.{self.__class__.__name__} " + f"image mode={self.mode} size={self.size[0]}x{self.size[1]} " + f"at 0x{id(self):X}>" + ) + + def _repr_pretty_(self, p: PrettyPrinter, cycle: bool) -> None: + """IPython plain text display support""" + + # Same as __repr__ but without unpredictable id(self), + # to keep Jupyter notebook `text/plain` output stable. + p.text( + f"<{self.__class__.__module__}.{self.__class__.__name__} " + f"image mode={self.mode} size={self.size[0]}x{self.size[1]}>" + ) + + def _repr_image(self, image_format: str, **kwargs: Any) -> bytes | None: + """Helper function for iPython display hook. + + :param image_format: Image format. + :returns: image as bytes, saved into the given format. + """ + b = io.BytesIO() + try: + self.save(b, image_format, **kwargs) + except Exception: + return None + return b.getvalue() + + def _repr_png_(self) -> bytes | None: + """iPython display hook support for PNG format. + + :returns: PNG version of the image as bytes + """ + return self._repr_image("PNG", compress_level=1) + + def _repr_jpeg_(self) -> bytes | None: + """iPython display hook support for JPEG format. + + :returns: JPEG version of the image as bytes + """ + return self._repr_image("JPEG") + + @property + def __array_interface__(self) -> dict[str, str | bytes | int | tuple[int, ...]]: + # numpy array interface support + new: dict[str, str | bytes | int | tuple[int, ...]] = {"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() + new["shape"], new["typestr"] = _conv_type_shape(self) + return new + + def __getstate__(self) -> list[Any]: + im_data = self.tobytes() # load image first + return [self.info, self.mode, self.size, self.getpalette(), im_data] + + def __setstate__(self, state: list[Any]) -> None: + Image.__init__(self) + info, mode, size, palette, data = state[:5] + 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: str = "raw", *args: Any) -> bytes: + """ + 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. + + A list of C encoders can be seen under + codecs section of the function array in + :file:`_imaging.c`. Python encoders are + registered within the relevant plugins. + :param args: Extra arguments to the encoder. + :returns: A :py:class:`bytes` object. + """ + + encoder_args: Any = args + if len(encoder_args) == 1 and isinstance(encoder_args[0], tuple): + # may pass tuple instead of argument list + encoder_args = encoder_args[0] + + if encoder_name == "raw" and encoder_args == (): + encoder_args = self.mode + + self.load() + + if self.width == 0 or self.height == 0: + return b"" + + # unpack data + e = _getencoder(self.mode, encoder_name, encoder_args) + e.setimage(self.im) + + bufsize = max(65536, self.size[0] * 4) # see RawEncode.c + + output = [] + while True: + bytes_consumed, errcode, data = e.encode(bufsize) + output.append(data) + if errcode: + break + if errcode < 0: + msg = f"encoder error {errcode} in tobytes" + raise RuntimeError(msg) + + return b"".join(output) + + def tobitmap(self, name: str = "image") -> bytes: + """ + 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": + msg = "not a bitmap" + raise ValueError(msg) + data = self.tobytes("xbm") + return b"".join( + [ + f"#define {name}_width {self.size[0]}\n".encode("ascii"), + f"#define {name}_height {self.size[1]}\n".encode("ascii"), + f"static char {name}_bits[] = {{\n".encode("ascii"), + data, + b"};", + ] + ) + + def frombytes( + self, + data: bytes | bytearray | SupportsArrayInterface, + decoder_name: str = "raw", + *args: Any, + ) -> None: + """ + 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. + """ + + if self.width == 0 or self.height == 0: + return + + decoder_args: Any = args + if len(decoder_args) == 1 and isinstance(decoder_args[0], tuple): + # may pass tuple instead of argument list + decoder_args = decoder_args[0] + + # default format + if decoder_name == "raw" and decoder_args == (): + decoder_args = self.mode + + # unpack data + d = _getdecoder(self.mode, decoder_name, decoder_args) + d.setimage(self.im) + s = d.decode(data) + + if s[0] >= 0: + msg = "not enough image data" + raise ValueError(msg) + if s[1] != 0: + msg = "cannot decode image data" + raise ValueError(msg) + + def load(self) -> core.PixelAccess | None: + """ + 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: :py:class:`.PixelAccess` + """ + if self._im is not None and self.palette and self.palette.dirty: + # realize palette + mode, arr = self.palette.getdata() + self.im.putpalette(self.palette.mode, mode, arr) + self.palette.dirty = 0 + self.palette.rawmode = None + if "transparency" in self.info and mode in ("LA", "PA"): + if isinstance(self.info["transparency"], int): + self.im.putpalettealpha(self.info["transparency"], 0) + else: + self.im.putpalettealphas(self.info["transparency"]) + self.palette.mode = "RGBA" + else: + self.palette.palette = self.im.getpalette( + self.palette.mode, self.palette.mode + ) + + if self._im is not None: + return self.im.pixel_access(self.readonly) + return None + + def verify(self) -> None: + """ + 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: str | None = None, + matrix: tuple[float, ...] | None = None, + dither: Dither | None = None, + palette: Palette = Palette.WEB, + colors: int = 256, + ) -> Image: + """ + 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. + + This supports all possible conversions between "L", "RGB" and "CMYK". The + ``matrix`` argument only supports "L" and "RGB". + + When translating a color image to grayscale (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 grayscale ("L") or "RGB" + image into a bilevel (mode "1") image uses Floyd-Steinberg + dither to approximate the original image luminosity levels. If + dither is ``None``, all values larger than 127 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. + + When converting from "PA", if an "RGBA" palette is present, the alpha + channel from the image will be used instead of the values from the palette. + + :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:`Dither.NONE` or :data:`Dither.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:`Palette.WEB` or + :data:`Palette.ADAPTIVE`. + :param colors: Number of colors to use for the :data:`Palette.ADAPTIVE` + palette. Defaults to 256. + :rtype: :py:class:`~PIL.Image.Image` + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + if mode in ("BGR;15", "BGR;16", "BGR;24"): + deprecate(mode, 12) + + self.load() + + has_transparency = "transparency" in self.info + if not mode and self.mode == "P": + # determine default mode + if self.palette: + mode = self.palette.mode + else: + mode = "RGB" + if mode == "RGB" and has_transparency: + mode = "RGBA" + if not mode or (mode == self.mode and not matrix): + return self.copy() + + if matrix: + # matrix conversion + if mode not in ("L", "RGB"): + msg = "illegal conversion" + raise ValueError(msg) + im = self.im.convert_matrix(mode, matrix) + new_im = self._new(im) + if has_transparency and self.im.bands == 3: + transparency = new_im.info["transparency"] + + def convert_transparency( + m: tuple[float, ...], v: tuple[int, int, int] + ) -> int: + value = m[0] * v[0] + m[1] * v[1] + m[2] * v[2] + m[3] * 0.5 + return max(0, min(255, int(value))) + + 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_im.info["transparency"] = transparency + return new_im + + 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", "I;16") and mode in ("LA", "RGBA")) or ( + self.mode == "RGB" and mode in ("La", "LA", "RGBa", "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 = new(self.mode, (1, 1)) + if self.mode == "P": + assert self.palette is not None + trns_im.putpalette(self.palette, self.palette.mode) + if isinstance(t, tuple): + err = "Couldn't allocate a palette color for transparency" + assert trns_im.palette is not None + try: + t = trns_im.palette.getcolor(t, self) + except ValueError as e: + if str(e) == "cannot allocate more than 256 colors": + # If all 256 colors are in use, + # then there is no need for transparency + t = None + else: + raise ValueError(err) from e + if t is None: + trns = None + else: + 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 in ("LA", "PA", "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: + msg = "Transparency for P mode should be bytes or int" + raise ValueError(msg) + + if mode == "P" and palette == Palette.ADAPTIVE: + im = self.im.quantize(colors) + new_im = self._new(im) + from . import ImagePalette + + new_im.palette = ImagePalette.ImagePalette( + "RGB", new_im.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_im.info["transparency"] + if trns is not None: + try: + new_im.info["transparency"] = new_im.palette.getcolor( + cast(tuple[int, ...], trns), # trns was converted to RGB + new_im, + ) + except Exception: + # if we can't make a transparent color, don't leave the old + # transparency hanging around to mess us up. + del new_im.info["transparency"] + warnings.warn("Couldn't allocate palette entry for transparency") + return new_im + + if "LAB" in (self.mode, mode): + im = self + if mode == "LAB": + if im.mode not in ("RGB", "RGBA", "RGBX"): + im = im.convert("RGBA") + other_mode = im.mode + else: + other_mode = mode + if other_mode in ("RGB", "RGBA", "RGBX"): + from . import ImageCms + + srgb = ImageCms.createProfile("sRGB") + lab = ImageCms.createProfile("LAB") + profiles = [lab, srgb] if im.mode == "LAB" else [srgb, lab] + transform = ImageCms.buildTransform( + profiles[0], profiles[1], im.mode, mode + ) + return transform.apply(im) + + # colorspace conversion + if dither is None: + dither = Dither.FLOYDSTEINBERG + + try: + im = self.im.convert(mode, dither) + except ValueError: + try: + # normalize source image and try again + modebase = getmodebase(self.mode) + if modebase == self.mode: + raise + im = self.im.convert(modebase) + im = im.convert(mode, dither) + except KeyError as e: + msg = "illegal conversion" + raise ValueError(msg) from e + + new_im = self._new(im) + if mode == "P" and palette != Palette.ADAPTIVE: + from . import ImagePalette + + new_im.palette = ImagePalette.ImagePalette("RGB", im.getpalette("RGB")) + 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" and new_im.palette: + try: + new_im.info["transparency"] = new_im.palette.getcolor( + cast(tuple[int, ...], trns), new_im # trns was converted to RGB + ) + except ValueError as e: + del new_im.info["transparency"] + if str(e) != "cannot allocate more than 256 colors": + # If all 256 colors are in use, + # then there is no need for transparency + warnings.warn( + "Couldn't allocate palette entry for transparency" + ) + else: + new_im.info["transparency"] = trns + return new_im + + def quantize( + self, + colors: int = 256, + method: int | None = None, + kmeans: int = 0, + palette: Image | None = None, + dither: Dither = Dither.FLOYDSTEINBERG, + ) -> Image: + """ + Convert the image to 'P' mode with the specified number + of colors. + + :param colors: The desired number of colors, <= 256 + :param method: :data:`Quantize.MEDIANCUT` (median cut), + :data:`Quantize.MAXCOVERAGE` (maximum coverage), + :data:`Quantize.FASTOCTREE` (fast octree), + :data:`Quantize.LIBIMAGEQUANT` (libimagequant; check support + using :py:func:`PIL.features.check_feature` with + ``feature="libimagequant"``). + + By default, :data:`Quantize.MEDIANCUT` will be used. + + The exception to this is RGBA images. :data:`Quantize.MEDIANCUT` + and :data:`Quantize.MAXCOVERAGE` do not support RGBA images, so + :data:`Quantize.FASTOCTREE` is used by default instead. + :param kmeans: Integer greater than or equal to zero. + :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:`Dither.NONE` or :data:`Dither.FLOYDSTEINBERG` + (default). + :returns: A new image + """ + + self.load() + + if method is None: + # defaults: + method = Quantize.MEDIANCUT + if self.mode == "RGBA": + method = Quantize.FASTOCTREE + + if self.mode == "RGBA" and method not in ( + Quantize.FASTOCTREE, + Quantize.LIBIMAGEQUANT, + ): + # Caller specified an invalid mode. + msg = ( + "Fast Octree (method == 2) and libimagequant (method == 3) " + "are the only valid methods for quantizing RGBA images" + ) + raise ValueError(msg) + + if palette: + # use palette from reference image + palette.load() + if palette.mode != "P": + msg = "bad mode for palette image" + raise ValueError(msg) + if self.mode not in {"RGB", "L"}: + msg = "only RGB or L mode images can be quantized to a palette" + raise ValueError(msg) + im = self.im.convert("P", dither, palette.im) + new_im = self._new(im) + assert palette.palette is not None + new_im.palette = palette.palette.copy() + return new_im + + if kmeans < 0: + msg = "kmeans must not be negative" + raise ValueError(msg) + + im = self._new(self.im.quantize(colors, method, kmeans)) + + from . import ImagePalette + + mode = im.im.getpalettemode() + palette_data = im.im.getpalette(mode, mode)[: colors * len(mode)] + im.palette = ImagePalette.ImagePalette(mode, palette_data) + + return im + + def copy(self) -> Image: + """ + 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: tuple[float, float, float, float] | None = None) -> Image: + """ + 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() + + if box[2] < box[0]: + msg = "Coordinate 'right' is less than 'left'" + raise ValueError(msg) + elif box[3] < box[1]: + msg = "Coordinate 'lower' is less than 'upper'" + raise ValueError(msg) + + self.load() + return self._new(self._crop(self.im, box)) + + def _crop( + self, im: core.ImagingCore, box: tuple[float, float, float, float] + ) -> core.ImagingCore: + """ + 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: str | None, size: tuple[int, int] | None + ) -> tuple[str, tuple[int, int, float, float]] | None: + """ + 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 grayscale 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 in pixels, as a 2-tuple: + (width, height). + """ + pass + + def _expand(self, xmargin: int, ymargin: int | None = None) -> Image: + if ymargin is None: + ymargin = xmargin + self.load() + return self._new(self.im.expand(xmargin, ymargin)) + + def filter(self, filter: ImageFilter.Filter | type[ImageFilter.Filter]) -> Image: + """ + 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 callable(filter): + filter = filter() + if not hasattr(filter, "filter"): + msg = "filter argument should be ImageFilter.Filter instance or class" + raise TypeError(msg) + + multiband = isinstance(filter, ImageFilter.MultibandFilter) + if self.im.bands == 1 or multiband: + return self._new(filter.filter(self.im)) + + ims = [ + self._new(filter.filter(self.im.getband(c))) for c in range(self.im.bands) + ] + return merge(self.mode, ims) + + def getbands(self) -> tuple[str, ...]: + """ + 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, *, alpha_only: bool = True) -> tuple[int, int, int, int] | None: + """ + Calculates the bounding box of the non-zero regions in the + image. + + :param alpha_only: Optional flag, defaulting to ``True``. + If ``True`` and the image has an alpha channel, trim transparent pixels. + Otherwise, trim pixels when all channels are zero. + Keyword-only argument. + :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(alpha_only) + + def getcolors( + self, maxcolors: int = 256 + ) -> list[tuple[int, tuple[int, ...]]] | list[tuple[int, float]] | None: + """ + Returns a list of colors used in this image. + + The colors will be in the image's mode. For example, an RGB image will + return a tuple of (red, green, blue) color values, and a P image will + return the index of the color in the palette. + + :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: list[tuple[int, float]] = [(h[i], i) for i in range(256) if h[i]] + if len(out) > maxcolors: + return None + return out + return self.im.getcolors(maxcolors) + + def getdata(self, band: int | None = None) -> core.ImagingCore: + """ + 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) -> tuple[float, float] | tuple[tuple[int, int], ...]: + """ + Gets 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: + return tuple(self.im.getband(i).getextrema() for i in range(self.im.bands)) + return self.im.getextrema() + + def getxmp(self) -> dict[str, Any]: + """ + Returns a dictionary containing the XMP tags. + Requires defusedxml to be installed. + + :returns: XMP tags in a dictionary. + """ + + def get_name(tag: str) -> str: + return re.sub("^{[^}]+}", "", tag) + + def get_value(element: Element) -> str | dict[str, Any] | None: + value: dict[str, Any] = {get_name(k): v for k, v in element.attrib.items()} + children = list(element) + if children: + for child in children: + name = get_name(child.tag) + child_value = get_value(child) + if name in value: + if not isinstance(value[name], list): + value[name] = [value[name]] + value[name].append(child_value) + else: + value[name] = child_value + elif value: + if element.text: + value["text"] = element.text + else: + return element.text + return value + + if ElementTree is None: + warnings.warn("XMP data cannot be read without defusedxml dependency") + return {} + if "xmp" not in self.info: + return {} + root = ElementTree.fromstring(self.info["xmp"].rstrip(b"\x00")) + return {get_name(root.tag): get_value(root)} + + def getexif(self) -> Exif: + """ + Gets EXIF data from the image. + + :returns: an :py:class:`~PIL.Image.Exif` object. + """ + if self._exif is None: + self._exif = Exif() + elif self._exif._loaded: + return self._exif + self._exif._loaded = True + + exif_info = self.info.get("exif") + if exif_info is None: + if "Raw profile type exif" in self.info: + exif_info = bytes.fromhex( + "".join(self.info["Raw profile type exif"].split("\n")[3:]) + ) + elif hasattr(self, "tag_v2"): + self._exif.bigtiff = self.tag_v2._bigtiff + self._exif.endian = self.tag_v2._endian + self._exif.load_from_fp(self.fp, self.tag_v2._offset) + if exif_info is not None: + self._exif.load(exif_info) + + # XMP tags + if ExifTags.Base.Orientation not in self._exif: + xmp_tags = self.info.get("XML:com.adobe.xmp") + if xmp_tags: + match = re.search(r'tiff:Orientation(="|>)([0-9])', xmp_tags) + if match: + self._exif[ExifTags.Base.Orientation] = int(match[2]) + + return self._exif + + def _reload_exif(self) -> None: + if self._exif is None or not self._exif._loaded: + return + self._exif._loaded = False + self.getexif() + + def get_child_images(self) -> list[ImageFile.ImageFile]: + child_images = [] + exif = self.getexif() + ifds = [] + if ExifTags.Base.SubIFDs in exif: + subifd_offsets = exif[ExifTags.Base.SubIFDs] + if subifd_offsets: + if not isinstance(subifd_offsets, tuple): + subifd_offsets = (subifd_offsets,) + for subifd_offset in subifd_offsets: + ifds.append((exif._get_ifd_dict(subifd_offset), subifd_offset)) + ifd1 = exif.get_ifd(ExifTags.IFD.IFD1) + if ifd1 and ifd1.get(ExifTags.Base.JpegIFOffset): + assert exif._info is not None + ifds.append((ifd1, exif._info.next)) + + offset = None + for ifd, ifd_offset in ifds: + current_offset = self.fp.tell() + if offset is None: + offset = current_offset + + fp = self.fp + if ifd is not None: + thumbnail_offset = ifd.get(ExifTags.Base.JpegIFOffset) + if thumbnail_offset is not None: + thumbnail_offset += getattr(self, "_exif_offset", 0) + self.fp.seek(thumbnail_offset) + data = self.fp.read(ifd.get(ExifTags.Base.JpegIFByteCount)) + fp = io.BytesIO(data) + + with open(fp) as im: + from . import TiffImagePlugin + + if thumbnail_offset is None and isinstance( + im, TiffImagePlugin.TiffImageFile + ): + im._frame_pos = [ifd_offset] + im._seek(0) + im.load() + child_images.append(im) + + if offset is not None: + self.fp.seek(offset) + return child_images + + def getim(self) -> CapsuleType: + """ + Returns a capsule that points to the internal image memory. + + :returns: A capsule object. + """ + + self.load() + return self.im.ptr + + def getpalette(self, rawmode: str | None = "RGB") -> list[int] | None: + """ + Returns the image palette as a list. + + :param rawmode: The mode in which to return the palette. ``None`` will + return the palette in its current mode. + + .. versionadded:: 9.1.0 + + :returns: A list of color values [r, g, b, ...], or None if the + image has no palette. + """ + + self.load() + try: + mode = self.im.getpalettemode() + except ValueError: + return None # no palette + if rawmode is None: + rawmode = mode + return list(self.im.getpalette(mode, rawmode)) + + @property + def has_transparency_data(self) -> bool: + """ + Determine if an image has transparency data, whether in the form of an + alpha channel, a palette with an alpha channel, or a "transparency" key + in the info dictionary. + + Note the image might still appear solid, if all of the values shown + within are opaque. + + :returns: A boolean. + """ + if ( + self.mode in ("LA", "La", "PA", "RGBA", "RGBa") + or "transparency" in self.info + ): + return True + if self.mode == "P": + assert self.palette is not None + return self.palette.mode.endswith("A") + return False + + def apply_transparency(self) -> None: + """ + If a P mode image has a "transparency" key in the info dictionary, + remove the key and instead apply the transparency to the palette. + Otherwise, the image is unchanged. + """ + if self.mode != "P" or "transparency" not in self.info: + return + + from . import ImagePalette + + palette = self.getpalette("RGBA") + assert palette is not None + transparency = self.info["transparency"] + if isinstance(transparency, bytes): + for i, alpha in enumerate(transparency): + palette[i * 4 + 3] = alpha + else: + palette[transparency * 4 + 3] = 0 + self.palette = ImagePalette.ImagePalette("RGBA", bytes(palette)) + self.palette.dirty = 1 + + del self.info["transparency"] + + def getpixel( + self, xy: tuple[int, int] | list[int] + ) -> float | tuple[int, ...] | None: + """ + 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() + return self.im.getpixel(tuple(xy)) + + def getprojection(self) -> tuple[list[int], list[int]]: + """ + 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 list(x), list(y) + + def histogram( + self, mask: Image | None = None, extrema: tuple[float, float] | None = None + ) -> list[int]: + """ + 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. Counts are grouped into 256 bins for each band, even if + the image has more than 8 bits per band. 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 grayscale ("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 grayscale 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"): + return self.im.histogram( + extrema if extrema is not None else self.getextrema() + ) + return self.im.histogram() + + def entropy( + self, mask: Image | None = None, extrema: tuple[float, float] | None = None + ) -> float: + """ + Calculates and returns the entropy for the image. + + A bilevel image (mode "1") is treated as a grayscale ("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 grayscale 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"): + return self.im.entropy( + extrema if extrema is not None else self.getextrema() + ) + return self.im.entropy() + + def paste( + self, + im: Image | str | float | tuple[float, ...], + box: Image | tuple[int, int, int, int] | tuple[int, int] | None = None, + mask: Image | None = None, + ) -> 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", "LA", "RGBA" + or "RGBa" images (if present, 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, float 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 isinstance(box, Image): + if mask is not None: + msg = "If using second argument as mask, third argument must be None" + raise ValueError(msg) + # 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 isinstance(im, Image): + size = im.size + elif isinstance(mask, Image): + size = mask.size + else: + # FIXME: use self.size here? + msg = "cannot determine region size; use 4-item box" + raise ValueError(msg) + box += (box[0] + size[0], box[1] + size[1]) + + source: core.ImagingCore | str | float | tuple[float, ...] + if isinstance(im, str): + from . import ImageColor + + source = ImageColor.getcolor(im, self.mode) + elif isinstance(im, Image): + im.load() + if self.mode != im.mode: + if self.mode != "RGB" or im.mode not in ("LA", "RGBA", "RGBa"): + # should use an adapter for this! + im = im.convert(self.mode) + source = im.im + else: + source = im + + self._ensure_mutable() + + if mask: + mask.load() + self.im.paste(source, box, mask.im) + else: + self.im.paste(source, box) + + def alpha_composite( + self, im: Image, dest: Sequence[int] = (0, 0), source: Sequence[int] = (0, 0) + ) -> None: + """'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)): + msg = "Source must be a list or tuple" + raise ValueError(msg) + if not isinstance(dest, (list, tuple)): + msg = "Destination must be a list or tuple" + raise ValueError(msg) + + if len(source) == 4: + overlay_crop_box = tuple(source) + elif len(source) == 2: + overlay_crop_box = tuple(source) + im.size + else: + msg = "Source must be a sequence of length 2 or 4" + raise ValueError(msg) + + if not len(dest) == 2: + msg = "Destination must be a sequence of length 2" + raise ValueError(msg) + if min(source) < 0: + msg = "Source must be non-negative" + raise ValueError(msg) + + # over image, crop if it's not the whole image. + if overlay_crop_box == (0, 0) + im.size: + overlay = im + else: + overlay = im.crop(overlay_crop_box) + + # target for the paste + box = tuple(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: ( + Sequence[float] + | NumpyArray + | Callable[[int], float] + | Callable[[ImagePointTransform], ImagePointTransform | float] + | ImagePointHandler + ), + mode: str | None = None, + ) -> Image: + """ + 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. + + It may also be an :py:class:`~PIL.Image.ImagePointHandler` + object:: + + class Example(Image.ImagePointHandler): + def point(self, im: Image) -> Image: + # Return result + :param mode: Output mode (default is same as input). 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) # type: ignore[arg-type] + return self._new(self.im.point_transform(scale, offset)) + # for other modes, convert the function to a table + flatLut = [lut(i) for i in range(256)] * self.im.bands # type: ignore[arg-type] + else: + flatLut = lut + + if self.mode == "F": + # FIXME: _imaging returns a confusing error message for this case + msg = "point operation not supported for this mode" + raise ValueError(msg) + + if mode != "F": + flatLut = [round(i) for i in flatLut] + return self._new(self.im.point(flatLut, mode)) + + def putalpha(self, alpha: Image | int) -> None: + """ + 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. + """ + + 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"): + msg = "alpha channel could not be added" + raise ValueError(msg) from e # sanity check + self.im = im + self._mode = self.im.mode + except KeyError as e: + msg = "illegal image mode" + raise ValueError(msg) from e + + if self.mode in ("LA", "PA"): + band = 1 + else: + band = 3 + + if isinstance(alpha, Image): + # alpha layer + if alpha.mode not in ("1", "L"): + msg = "illegal image mode" + raise ValueError(msg) + 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: Sequence[float] | Sequence[Sequence[int]] | core.ImagingCore | NumpyArray, + scale: float = 1.0, + offset: float = 0.0, + ) -> None: + """ + Copies pixel data from a flattened sequence object into the image. The + values should start at the upper left corner (0, 0), continue to the + end of the line, followed directly by the first value of the second + line, and so on. Data will be read 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 flattened 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: ImagePalette.ImagePalette | bytes | Sequence[int], + rawmode: str = "RGB", + ) -> None: + """ + Attaches a palette to this image. The image must be a "P", "PA", "L" + or "LA" image. + + The palette sequence must contain at most 256 colors, made up of one + integer value for each channel in the raw mode. + For example, if the raw mode is "RGB", then it can contain at most 768 + values, made up of red, green and blue values for the corresponding pixel + index in the 256 colors. + If the raw mode is "RGBA", then it can contain at most 1024 values, + containing red, green, blue and alpha values. + + Alternatively, an 8-bit string may be used instead of an integer sequence. + + :param data: A palette sequence (either a list or a string). + :param rawmode: The raw mode of the palette. Either "RGB", "RGBA", or a mode + that can be transformed to "RGB" or "RGBA" (e.g. "R", "BGR;15", "RGBA;L"). + """ + from . import ImagePalette + + if self.mode not in ("L", "LA", "P", "PA"): + msg = "illegal image mode" + raise ValueError(msg) + if isinstance(data, ImagePalette.ImagePalette): + if data.rawmode is not None: + palette = ImagePalette.raw(data.rawmode, data.palette) + else: + palette = ImagePalette.ImagePalette(palette=data.palette) + palette.dirty = 1 + 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 = "RGBA" if "A" in rawmode else "RGB" + self.load() # install new palette + + def putpixel( + self, xy: tuple[int, int], value: float | tuple[int, ...] | list[int] + ) -> None: + """ + 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 and PA 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.mode in ("P", "PA") + and isinstance(value, (list, tuple)) + and len(value) in [3, 4] + ): + # RGB or RGBA value for a P or PA image + if self.mode == "PA": + alpha = value[3] if len(value) == 4 else 255 + value = value[:3] + assert self.palette is not None + palette_index = self.palette.getcolor(tuple(value), self) + value = (palette_index, alpha) if self.mode == "PA" else palette_index + return self.im.putpixel(xy, value) + + def remap_palette( + self, dest_map: list[int], source_palette: bytes | bytearray | None = None + ) -> Image: + """ + 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"): + msg = "illegal image mode" + raise ValueError(msg) + + bands = 3 + palette_mode = "RGB" + if source_palette is None: + if self.mode == "P": + self.load() + palette_mode = self.im.getpalettemode() + if palette_mode == "RGBA": + bands = 4 + source_palette = self.im.getpalette(palette_mode, palette_mode) + else: # L-mode + source_palette = bytearray(i // 3 for i in range(768)) + elif len(source_palette) > 768: + bands = 4 + palette_mode = "RGBA" + + palette_bytes = b"" + new_positions = [0] * 256 + + # pick only the used colors from the palette + for i, oldPosition in enumerate(dest_map): + palette_bytes += source_palette[ + oldPosition * bands : oldPosition * bands + bands + ] + 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( + palette_mode, palette=mapping_palette * bands + ) + # 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(palette_mode, palette_mode + ";L", m_im.palette.tobytes()) + + m_im = m_im.convert("L") + + m_im.putpalette(palette_bytes, palette_mode) + m_im.palette = ImagePalette.ImagePalette(palette_mode, palette=palette_bytes) + + if "transparency" in self.info: + try: + m_im.info["transparency"] = dest_map.index(self.info["transparency"]) + except ValueError: + if "transparency" in m_im.info: + del m_im.info["transparency"] + + return m_im + + def _get_safe_box( + self, + size: tuple[int, int], + resample: Resampling, + box: tuple[float, float, float, float], + ) -> tuple[int, int, int, int]: + """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: tuple[int, int] | list[int] | NumpyArray, + resample: int | None = None, + box: tuple[float, float, float, float] | None = None, + reducing_gap: float | None = None, + ) -> Image: + """ + Returns a resized copy of this image. + + :param size: The requested size in pixels, as a tuple or array: + (width, height). + :param resample: An optional resampling filter. This can be + one of :py:data:`Resampling.NEAREST`, :py:data:`Resampling.BOX`, + :py:data:`Resampling.BILINEAR`, :py:data:`Resampling.HAMMING`, + :py:data:`Resampling.BICUBIC` or :py:data:`Resampling.LANCZOS`. + If the image has mode "1" or "P", it is always set to + :py:data:`Resampling.NEAREST`. If the image mode is "BGR;15", + "BGR;16" or "BGR;24", then the default filter is + :py:data:`Resampling.NEAREST`. Otherwise, the default filter is + :py:data:`Resampling.BICUBIC`. 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 is None: + bgr = self.mode.startswith("BGR;") + resample = Resampling.NEAREST if bgr else Resampling.BICUBIC + elif resample not in ( + Resampling.NEAREST, + Resampling.BILINEAR, + Resampling.BICUBIC, + Resampling.LANCZOS, + Resampling.BOX, + Resampling.HAMMING, + ): + msg = f"Unknown resampling filter ({resample})." + + filters = [ + f"{filter[1]} ({filter[0]})" + for filter in ( + (Resampling.NEAREST, "Image.Resampling.NEAREST"), + (Resampling.LANCZOS, "Image.Resampling.LANCZOS"), + (Resampling.BILINEAR, "Image.Resampling.BILINEAR"), + (Resampling.BICUBIC, "Image.Resampling.BICUBIC"), + (Resampling.BOX, "Image.Resampling.BOX"), + (Resampling.HAMMING, "Image.Resampling.HAMMING"), + ) + ] + msg += f" Use {', '.join(filters[:-1])} or {filters[-1]}" + raise ValueError(msg) + + if reducing_gap is not None and reducing_gap < 1.0: + msg = "reducing_gap must be 1.0 or greater" + raise ValueError(msg) + + if box is None: + box = (0, 0) + self.size + + size = tuple(size) + if self.size == size and box == (0, 0) + self.size: + return self.copy() + + if self.mode in ("1", "P"): + resample = Resampling.NEAREST + + if self.mode in ["LA", "RGBA"] and resample != Resampling.NEAREST: + im = self.convert({"LA": "La", "RGBA": "RGBa"}[self.mode]) + im = im.resize(size, resample, box) + return im.convert(self.mode) + + self.load() + + if reducing_gap is not None and resample != Resampling.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, cast(Resampling, resample), box) + factor = (factor_x, factor_y) + self = ( + self.reduce(factor, box=reduce_box) + if callable(self.reduce) + else 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: int | tuple[int, int], + box: tuple[int, int, int, int] | None = None, + ) -> Image: + """ + Returns a copy of the image reduced ``factor`` times. + If the size of the image is not dividable by ``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 + + if factor == (1, 1) and box == (0, 0) + self.size: + return self.copy() + + if self.mode in ["LA", "RGBA"]: + im = self.convert({"LA": "La", "RGBA": "RGBa"}[self.mode]) + im = im.reduce(factor, box) + return im.convert(self.mode) + + self.load() + + return self._new(self.im.reduce(factor, box)) + + def rotate( + self, + angle: float, + resample: Resampling = Resampling.NEAREST, + expand: int | bool = False, + center: tuple[float, float] | None = None, + translate: tuple[int, int] | None = None, + fillcolor: float | tuple[float, ...] | str | None = None, + ) -> Image: + """ + 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:`Resampling.NEAREST` (use nearest neighbour), + :py:data:`Resampling.BILINEAR` (linear interpolation in a 2x2 + environment), or :py:data:`Resampling.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:`Resampling.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(Transpose.ROTATE_180) + if angle in (90, 270) and (expand or self.width == self.height): + return self.transpose( + Transpose.ROTATE_90 if angle == 90 else 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: + center = (w / 2, h / 2) + + 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: float, y: float, matrix: list[float]) -> tuple[float, float]: + (a, b, c, d, e, f) = matrix + return a * x + b * y + c, d * x + e * y + f + + matrix[2], matrix[5] = transform( + -center[0] - post_trans[0], -center[1] - post_trans[1], matrix + ) + matrix[2] += center[0] + matrix[5] += center[1] + + if expand: + # calculate output size + xx = [] + yy = [] + for x, y in ((0, 0), (w, 0), (w, h), (0, h)): + transformed_x, transformed_y = transform(x, y, matrix) + xx.append(transformed_x) + yy.append(transformed_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), Transform.AFFINE, matrix, resample, fillcolor=fillcolor + ) + + def save( + self, fp: StrOrBytesPath | IO[bytes], format: str | None = None, **params: Any + ) -> None: + """ + 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), os.PathLike 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: str | bytes = "" + open_fp = False + if is_path(fp): + filename = os.fspath(fp) + open_fp = True + elif fp == sys.stdout: + try: + fp = sys.stdout.buffer + except AttributeError: + pass + if not filename and hasattr(fp, "name") and is_path(fp.name): + # only set the name for metadata purposes + filename = os.fspath(fp.name) + + # may mutate self! + self._ensure_mutable() + + save_all = params.pop("save_all", False) + self.encoderinfo = {**getattr(self, "encoderinfo", {}), **params} + self.encoderconfig: tuple[Any, ...] = () + + preinit() + + filename_ext = os.path.splitext(filename)[1].lower() + ext = filename_ext.decode() if isinstance(filename_ext, bytes) else filename_ext + + if not format: + if ext not in EXTENSION: + init() + try: + format = EXTENSION[ext] + except KeyError as e: + msg = f"unknown file extension: {ext}" + raise ValueError(msg) from e + + if format.upper() not in SAVE: + init() + if save_all: + save_handler = SAVE_ALL[format.upper()] + else: + save_handler = SAVE[format.upper()] + + created = False + if open_fp: + created = not os.path.exists(filename) + 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") + else: + fp = cast(IO[bytes], fp) + + try: + save_handler(self, fp, filename) + except Exception: + if open_fp: + fp.close() + if created: + try: + os.remove(filename) + except PermissionError: + pass + raise + finally: + try: + del self.encoderinfo + except AttributeError: + pass + if open_fp: + fp.close() + + def seek(self, frame: int) -> None: + """ + 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`. + + If defined, :attr:`~PIL.Image.Image.n_frames` refers to the + number of available frames. + + :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: + msg = "no more images in file" + raise EOFError(msg) + + def show(self, title: str | None = None) -> 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 **xdg-open**, **display**, + **gm**, **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. + """ + + _show(self, title=title) + + def split(self) -> tuple[Image, ...]: + """ + 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: + return (self.copy(),) + return tuple(map(self._new, self.im.split())) + + def getchannel(self, channel: int | str) -> Image: + """ + 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: + msg = f'The image has no channel "{channel}"' + raise ValueError(msg) from e + + return self._new(self.im.getband(channel)) + + def tell(self) -> int: + """ + Returns the current frame number. See :py:meth:`~PIL.Image.Image.seek`. + + If defined, :attr:`~PIL.Image.Image.n_frames` refers to the + number of available frames. + + :returns: Frame number, starting with 0. + """ + return 0 + + def thumbnail( + self, + size: tuple[float, float], + resample: Resampling = Resampling.BICUBIC, + reducing_gap: float | None = 2.0, + ) -> None: + """ + 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: The requested size in pixels, as a 2-tuple: + (width, height). + :param resample: Optional resampling filter. This can be one + of :py:data:`Resampling.NEAREST`, :py:data:`Resampling.BOX`, + :py:data:`Resampling.BILINEAR`, :py:data:`Resampling.HAMMING`, + :py:data:`Resampling.BICUBIC` or :py:data:`Resampling.LANCZOS`. + If omitted, it defaults to :py:data:`Resampling.BICUBIC`. + (was :py:data:`Resampling.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 + """ + + provided_size = tuple(map(math.floor, size)) + + def preserve_aspect_ratio() -> tuple[int, int] | None: + def round_aspect(number: float, key: Callable[[int], float]) -> int: + return max(min(math.floor(number), math.ceil(number), key=key), 1) + + x, y = provided_size + if x >= self.width and y >= self.height: + return None + + 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) + ) + return x, y + + preserved_size = preserve_aspect_ratio() + if preserved_size is None: + return + final_size = preserved_size + + box = None + if reducing_gap is not None: + res = self.draft( + None, (int(size[0] * reducing_gap), int(size[1] * reducing_gap)) + ) + if res is not None: + box = res[1] + + if self.size != final_size: + im = self.resize(final_size, resample, box=box, reducing_gap=reducing_gap) + + self.im = im.im + self._size = final_size + self._mode = self.im.mode + + self.readonly = 0 + + # FIXME: the different transform methods need further explanation + # instead of bloating the method docs, add a separate chapter. + def transform( + self, + size: tuple[int, int], + method: Transform | ImageTransformHandler | SupportsGetData, + data: Sequence[Any] | None = None, + resample: int = Resampling.NEAREST, + fill: int = 1, + fillcolor: float | tuple[float, ...] | str | None = None, + ) -> Image: + """ + 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 in pixels, as a 2-tuple: + (width, height). + :param method: The transformation method. This is one of + :py:data:`Transform.EXTENT` (cut out a rectangular subregion), + :py:data:`Transform.AFFINE` (affine transform), + :py:data:`Transform.PERSPECTIVE` (perspective transform), + :py:data:`Transform.QUAD` (map a quadrilateral to a rectangle), or + :py:data:`Transform.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(self, size, data, resample, fill=1): + # Return result + + Implementations of :py:class:`~PIL.Image.ImageTransformHandler` + for some of the :py:class:`Transform` methods are provided + in :py:mod:`~PIL.ImageTransform`. + + It may also be an object with a ``method.getdata`` method + that returns a tuple supplying new ``method`` and ``data`` values:: + + class Example: + def getdata(self): + method = Image.Transform.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:`Resampling.NEAREST` (use nearest neighbour), + :py:data:`Resampling.BILINEAR` (linear interpolation in a 2x2 + environment), or :py:data:`Resampling.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:`Resampling.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 in ("LA", "RGBA") and resample != Resampling.NEAREST: + return ( + self.convert({"LA": "La", "RGBA": "RGBa"}[self.mode]) + .transform(size, method, data, resample, fill, fillcolor) + .convert(self.mode) + ) + + 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: + msg = "missing method data" + raise ValueError(msg) + + im = new(self.mode, size, fillcolor) + if self.mode == "P" and self.palette: + im.palette = self.palette.copy() + im.info = self.info.copy() + if method == Transform.MESH: + # list of quads + for box, quad in data: + im.__transformer( + box, self, Transform.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: tuple[int, int, int, int], + image: Image, + method: Transform, + data: Sequence[float], + resample: int = Resampling.NEAREST, + fill: bool = True, + ) -> None: + w = box[2] - box[0] + h = box[3] - box[1] + + if method == Transform.AFFINE: + data = data[:6] + + elif method == Transform.EXTENT: + # convert extent to an affine transform + x0, y0, x1, y1 = data + xs = (x1 - x0) / w + ys = (y1 - y0) / h + method = Transform.AFFINE + data = (xs, 0, x0, 0, ys, y0) + + elif method == Transform.PERSPECTIVE: + data = data[:8] + + elif method == Transform.QUAD: + # quadrilateral warp. data specifies the four corners + # given as NW, SW, SE, and NE. + nw = data[: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: + msg = "unknown transformation method" + raise ValueError(msg) + + if resample not in ( + Resampling.NEAREST, + Resampling.BILINEAR, + Resampling.BICUBIC, + ): + if resample in (Resampling.BOX, Resampling.HAMMING, Resampling.LANCZOS): + unusable: dict[int, str] = { + Resampling.BOX: "Image.Resampling.BOX", + Resampling.HAMMING: "Image.Resampling.HAMMING", + Resampling.LANCZOS: "Image.Resampling.LANCZOS", + } + msg = unusable[resample] + f" ({resample}) cannot be used." + else: + msg = f"Unknown resampling filter ({resample})." + + filters = [ + f"{filter[1]} ({filter[0]})" + for filter in ( + (Resampling.NEAREST, "Image.Resampling.NEAREST"), + (Resampling.BILINEAR, "Image.Resampling.BILINEAR"), + (Resampling.BICUBIC, "Image.Resampling.BICUBIC"), + ) + ] + msg += f" Use {', '.join(filters[:-1])} or {filters[-1]}" + raise ValueError(msg) + + image.load() + + self.load() + + if image.mode in ("1", "P"): + resample = Resampling.NEAREST + + self.im.transform(box, image.im, method, data, resample, fill) + + def transpose(self, method: Transpose) -> Image: + """ + Transpose image (flip or rotate in 90 degree steps) + + :param method: One of :py:data:`Transpose.FLIP_LEFT_RIGHT`, + :py:data:`Transpose.FLIP_TOP_BOTTOM`, :py:data:`Transpose.ROTATE_90`, + :py:data:`Transpose.ROTATE_180`, :py:data:`Transpose.ROTATE_270`, + :py:data:`Transpose.TRANSPOSE` or :py:data:`Transpose.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: int) -> Image: + """ + 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) -> ImageQt.ImageQt: + """Returns a QImage copy of this image""" + from . import ImageQt + + if not ImageQt.qt_is_installed: + msg = "Qt bindings are not installed" + raise ImportError(msg) + return ImageQt.toqimage(self) + + def toqpixmap(self) -> ImageQt.QPixmap: + """Returns a QPixmap copy of this image""" + from . import ImageQt + + if not ImageQt.qt_is_installed: + msg = "Qt bindings are not installed" + raise ImportError(msg) + return ImageQt.toqpixmap(self) + + +# -------------------------------------------------------------------- +# Abstract handlers. + + +class ImagePointHandler: + """ + Used as a mixin by point transforms + (for use with :py:meth:`~PIL.Image.Image.point`) + """ + + @abc.abstractmethod + def point(self, im: Image) -> Image: + pass + + +class ImageTransformHandler: + """ + Used as a mixin by geometry transforms + (for use with :py:meth:`~PIL.Image.Image.transform`) + """ + + @abc.abstractmethod + def transform( + self, + size: tuple[int, int], + image: Image, + **options: Any, + ) -> Image: + pass + + +# -------------------------------------------------------------------- +# Factories + +# +# Debugging + + +def _wedge() -> Image: + """Create grayscale wedge (for debugging only)""" + + return Image()._new(core.wedge("L")) + + +def _check_size(size: Any) -> None: + """ + Common check to enforce type and sanity check on size tuples + + :param size: Should be a 2 tuple of (width, height) + :returns: None, or raises a ValueError + """ + + if not isinstance(size, (list, tuple)): + msg = "Size must be a list or tuple" + raise ValueError(msg) + if len(size) != 2: + msg = "Size must be a sequence of length 2" + raise ValueError(msg) + if size[0] < 0 or size[1] < 0: + msg = "Width and height must be >= 0" + raise ValueError(msg) + + +def new( + mode: str, + size: tuple[int, int] | list[int], + color: float | tuple[float, ...] | str | None = 0, +) -> Image: + """ + 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 or HSV 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. + """ + + if mode in ("BGR;15", "BGR;16", "BGR;24"): + deprecate(mode, 12) + + _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 all(isinstance(i, int) for i in color) + ): + color_ints: tuple[int, ...] = cast(tuple[int, ...], tuple(color)) + if len(color_ints) == 3 or len(color_ints) == 4: + # RGB or RGBA value for a P image + from . import ImagePalette + + im.palette = ImagePalette.ImagePalette() + color = im.palette.getcolor(color_ints) + return im._new(core.fill(mode, size, color)) + + +def frombytes( + mode: str, + size: tuple[int, int], + data: bytes | bytearray | SupportsArrayInterface, + decoder_name: str = "raw", + *args: Any, +) -> Image: + """ + 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 Codec `. + + 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) + + im = new(mode, size) + if im.width != 0 and im.height != 0: + decoder_args: Any = args + if len(decoder_args) == 1 and isinstance(decoder_args[0], tuple): + # may pass tuple instead of argument list + decoder_args = decoder_args[0] + + if decoder_name == "raw" and decoder_args == (): + decoder_args = mode + + im.frombytes(data, decoder_name, decoder_args) + return im + + +def frombuffer( + mode: str, + size: tuple[int, int], + data: bytes | SupportsArrayInterface, + decoder_name: str = "raw", + *args: Any, +) -> Image: + """ + 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 + :py:class:`~io.BytesIO` object, and use :py:func:`~PIL.Image.open` to load it. + + 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, (0, 0)) + im = im._new(core.map_buffer(data, size, decoder_name, 0, args)) + if mode == "P": + from . import ImagePalette + + im.palette = ImagePalette.ImagePalette("RGB", im.im.getpalette("RGB")) + im.readonly = 1 + return im + + return frombytes(mode, size, data, decoder_name, args) + + +class SupportsArrayInterface(Protocol): + """ + An object that has an ``__array_interface__`` dictionary. + """ + + @property + def __array_interface__(self) -> dict[str, Any]: + raise NotImplementedError() + + +def fromarray(obj: SupportsArrayInterface, mode: str | None = None) -> Image: + """ + Creates an image memory from an object exporting the array interface + (using the buffer protocol):: + + from PIL import Image + import numpy as np + a = np.zeros((5, 5)) + im = Image.fromarray(a) + + If ``obj`` is not contiguous, then the ``tobytes`` method is called + and :py:func:`~PIL.Image.frombuffer` is used. + + In the case of NumPy, be aware that Pillow modes do not always correspond + to NumPy dtypes. Pillow modes only offer 1-bit pixels, 8-bit pixels, + 32-bit signed integer pixels, and 32-bit floating point pixels. + + Pillow images can also be converted to arrays:: + + from PIL import Image + import numpy as np + im = Image.open("hopper.jpg") + a = np.asarray(im) + + When converting Pillow images to arrays however, only pixel values are + transferred. This means that P and PA mode images will lose their palette. + + :param obj: Object with array interface + :param mode: Optional mode to use when reading ``obj``. Will be determined from + type if ``None``. + + This will not be used to convert the data after reading, but will be used to + change how the data is read:: + + from PIL import Image + import numpy as np + a = np.full((1, 1), 300) + im = Image.fromarray(a, mode="L") + im.getpixel((0, 0)) # 44 + im = Image.fromarray(a, mode="RGB") + im.getpixel((0, 0)) # (44, 1, 0) + + See: :ref:`concept-modes` for general information about 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: + msg = "Cannot handle this data type" + raise TypeError(msg) from e + try: + mode, rawmode = _fromarray_typemap[typekey] + except KeyError as e: + typekey_shape, typestr = typekey + msg = f"Cannot handle this data type: {typekey_shape}, {typestr}" + raise TypeError(msg) 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: + msg = f"Too many dimensions: {ndim} > {ndmax}." + raise ValueError(msg) + + size = 1 if ndim == 1 else shape[1], shape[0] + if strides is not None: + if hasattr(obj, "tobytes"): + obj = obj.tobytes() + elif hasattr(obj, "tostring"): + obj = obj.tostring() + else: + msg = "'strides' requires either tobytes() or tostring()" + raise ValueError(msg) + + return frombuffer(mode, size, obj, "raw", rawmode, 0, 1) + + +def fromqimage(im: ImageQt.QImage) -> ImageFile.ImageFile: + """Creates an image instance from a QImage image""" + from . import ImageQt + + if not ImageQt.qt_is_installed: + msg = "Qt bindings are not installed" + raise ImportError(msg) + return ImageQt.fromqimage(im) + + +def fromqpixmap(im: ImageQt.QPixmap) -> ImageFile.ImageFile: + """Creates an image instance from a QPixmap image""" + from . import ImageQt + + if not ImageQt.qt_is_installed: + msg = "Qt bindings are not installed" + raise ImportError(msg) + 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: + ((1, 1), f"{_ENDIAN}i4"): ("I", "I"), + ((1, 1), f"{_ENDIAN}f4"): ("F", "F"), +} + + +def _decompression_bomb_check(size: tuple[int, int]) -> None: + if MAX_IMAGE_PIXELS is None: + return + + pixels = max(1, size[0]) * max(1, size[1]) + + if pixels > 2 * MAX_IMAGE_PIXELS: + msg = ( + f"Image size ({pixels} pixels) exceeds limit of {2 * MAX_IMAGE_PIXELS} " + "pixels, could be decompression bomb DOS attack." + ) + raise DecompressionBombError(msg) + + if pixels > MAX_IMAGE_PIXELS: + warnings.warn( + f"Image size ({pixels} pixels) exceeds limit of {MAX_IMAGE_PIXELS} pixels, " + "could be decompression bomb DOS attack.", + DecompressionBombWarning, + ) + + +def open( + fp: StrOrBytesPath | IO[bytes], + mode: Literal["r"] = "r", + formats: list[str] | tuple[str, ...] | None = None, +) -> ImageFile.ImageFile: + """ + 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), os.PathLike object or a file object. + The file object must implement ``file.read``, + ``file.seek``, and ``file.tell`` methods, + and be opened in binary mode. The file object will also seek to zero + before reading. + :param mode: The mode. If given, this argument must be "r". + :param formats: A list or tuple of formats to attempt to load the file in. + This can be used to restrict the set of formats checked. + Pass ``None`` to try all supported formats. You can print the set of + available formats by running ``python3 -m PIL`` or using + the :py:func:`PIL.features.pilinfo` function. + :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``. + :exception TypeError: If ``formats`` is not ``None``, a list or a tuple. + """ + + if mode != "r": + msg = f"bad mode {repr(mode)}" # type: ignore[unreachable] + raise ValueError(msg) + elif isinstance(fp, io.StringIO): + msg = ( # type: ignore[unreachable] + "StringIO cannot be used to open an image. " + "Binary data must be used instead." + ) + raise ValueError(msg) + + if formats is None: + formats = ID + elif not isinstance(formats, (list, tuple)): + msg = "formats must be a list or tuple" # type: ignore[unreachable] + raise TypeError(msg) + + exclusive_fp = False + filename: str | bytes = "" + if is_path(fp): + filename = os.fspath(fp) + + if filename: + fp = builtins.open(filename, "rb") + exclusive_fp = True + else: + fp = cast(IO[bytes], fp) + + try: + fp.seek(0) + except (AttributeError, io.UnsupportedOperation): + fp = io.BytesIO(fp.read()) + exclusive_fp = True + + prefix = fp.read(16) + + preinit() + + warning_messages: list[str] = [] + + def _open_core( + fp: IO[bytes], + filename: str | bytes, + prefix: bytes, + formats: list[str] | tuple[str, ...], + ) -> ImageFile.ImageFile | None: + for i in formats: + i = i.upper() + if i not in OPEN: + init() + try: + factory, accept = OPEN[i] + result = not accept or accept(prefix) + if isinstance(result, str): + warning_messages.append(result) + elif result: + fp.seek(0) + im = factory(fp, filename) + _decompression_bomb_check(im.size) + return im + except (SyntaxError, IndexError, TypeError, struct.error) as e: + if WARN_POSSIBLE_FORMATS: + warning_messages.append(i + " opening failed. " + str(e)) + except BaseException: + if exclusive_fp: + fp.close() + raise + return None + + im = _open_core(fp, filename, prefix, formats) + + if im is None and formats is ID: + checked_formats = ID.copy() + if init(): + im = _open_core( + fp, + filename, + prefix, + tuple(format for format in formats if format not in checked_formats), + ) + + if im: + im._exclusive_fp = exclusive_fp + return im + + if exclusive_fp: + fp.close() + for message in warning_messages: + warnings.warn(message) + msg = "cannot identify image file %r" % (filename if filename else fp) + raise UnidentifiedImageError(msg) + + +# +# Image processing. + + +def alpha_composite(im1: Image, im2: Image) -> Image: + """ + 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: Image, im2: Image, alpha: float) -> Image: + """ + 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: Image, image2: Image, mask: Image) -> Image: + """ + 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: Image, *args: Callable[[int], float]) -> Image: + """ + 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: str, bands: Sequence[Image]) -> Image: + """ + 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: + msg = "wrong number of bands" + raise ValueError(msg) + for band in bands[1:]: + if band.mode != getmodetype(mode): + msg = "mode mismatch" + raise ValueError(msg) + if band.size != bands[0].size: + msg = "size mismatch" + raise ValueError(msg) + 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: str, + factory: ( + Callable[[IO[bytes], str | bytes], ImageFile.ImageFile] + | type[ImageFile.ImageFile] + ), + accept: Callable[[bytes], bool | str] | None = None, +) -> 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() + if id not in ID: + ID.append(id) + OPEN[id] = factory, accept + + +def register_mime(id: str, mimetype: str) -> None: + """ + Registers an image MIME type by populating ``Image.MIME``. This function + should not be used in application code. + + ``Image.MIME`` provides a mapping from image format identifiers to mime + formats, but :py:meth:`~PIL.ImageFile.ImageFile.get_format_mimetype` can + provide a different result for specific images. + + :param id: An image format identifier. + :param mimetype: The image MIME type for this format. + """ + MIME[id.upper()] = mimetype + + +def register_save( + id: str, driver: Callable[[Image, IO[bytes], str | bytes], None] +) -> None: + """ + 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: str, driver: Callable[[Image, IO[bytes], str | bytes], None] +) -> None: + """ + 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: str, extension: str) -> None: + """ + 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: str, extensions: list[str]) -> None: + """ + 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() -> dict[str, str]: + """ + Returns a dictionary containing all file extensions belonging + to registered plugins + """ + init() + return EXTENSION + + +def register_decoder(name: str, decoder: type[ImageFile.PyDecoder]) -> None: + """ + Registers an image decoder. This function should not be + used in application code. + + :param name: The name of the decoder + :param decoder: An ImageFile.PyDecoder object + + .. versionadded:: 4.1.0 + """ + DECODERS[name] = decoder + + +def register_encoder(name: str, encoder: type[ImageFile.PyEncoder]) -> None: + """ + Registers an image encoder. This function should not be + used in application code. + + :param name: The name of the encoder + :param encoder: An ImageFile.PyEncoder object + + .. versionadded:: 4.1.0 + """ + ENCODERS[name] = encoder + + +# -------------------------------------------------------------------- +# Simple display support. + + +def _show(image: Image, **options: Any) -> None: + from . import ImageShow + + ImageShow.show(image, **options) + + +# -------------------------------------------------------------------- +# Effects + + +def effect_mandelbrot( + size: tuple[int, int], extent: tuple[float, float, float, float], quality: int +) -> Image: + """ + 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, y1). + :param quality: Quality. + """ + return Image()._new(core.effect_mandelbrot(size, extent, quality)) + + +def effect_noise(size: tuple[int, int], sigma: float) -> Image: + """ + 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: str) -> Image: + """ + 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: str) -> Image: + """ + 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: dict[str, str] | None = None) -> None: + env_dict = env if env is not None else 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_dict: + continue + + var = env_dict[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 = int(var) * units + except ValueError: + warnings.warn(f"{var_name} is not int") + continue + + try: + setter(var_int) + except ValueError as e: + warnings.warn(f"{var_name}: {e}") + + +_apply_env_variables() +atexit.register(core.clear_cache) + + +if TYPE_CHECKING: + _ExifBase = MutableMapping[int, Any] +else: + _ExifBase = MutableMapping + + +class Exif(_ExifBase): + """ + This class provides read and write access to EXIF image data:: + + from PIL import Image + im = Image.open("exif.png") + exif = im.getexif() # Returns an instance of this class + + Information can be read and written, iterated over or deleted:: + + print(exif[274]) # 1 + exif[274] = 2 + for k, v in exif.items(): + print("Tag", k, "Value", v) # Tag 274 Value 2 + del exif[274] + + To access information beyond IFD0, :py:meth:`~PIL.Image.Exif.get_ifd` + returns a dictionary:: + + from PIL import ExifTags + im = Image.open("exif_gps.jpg") + exif = im.getexif() + gps_ifd = exif.get_ifd(ExifTags.IFD.GPSInfo) + print(gps_ifd) + + Other IFDs include ``ExifTags.IFD.Exif``, ``ExifTags.IFD.MakerNote``, + ``ExifTags.IFD.Interop`` and ``ExifTags.IFD.IFD1``. + + :py:mod:`~PIL.ExifTags` also has enum classes to provide names for data:: + + print(exif[ExifTags.Base.Software]) # PIL + print(gps_ifd[ExifTags.GPS.GPSDateStamp]) # 1999:99:99 99:99:99 + """ + + endian: str | None = None + bigtiff = False + _loaded = False + + def __init__(self) -> None: + self._data: dict[int, Any] = {} + self._hidden_data: dict[int, Any] = {} + self._ifds: dict[int, dict[int, Any]] = {} + self._info: TiffImagePlugin.ImageFileDirectory_v2 | None = None + self._loaded_exif: bytes | None = None + + def _fixup(self, value: Any) -> Any: + try: + if len(value) == 1 and isinstance(value, tuple): + return value[0] + except Exception: + pass + return value + + def _fixup_dict(self, src_dict: dict[int, Any]) -> dict[int, Any]: + # Helper function + # 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, offset: int, group: int | None = None + ) -> dict[int, Any] | None: + try: + # an offset pointer to the location of the nested embedded IFD. + # It should be a long, but may be corrupted. + self.fp.seek(offset) + except (KeyError, TypeError): + return None + else: + from . import TiffImagePlugin + + info = TiffImagePlugin.ImageFileDirectory_v2(self.head, group=group) + info.load(self.fp) + return self._fixup_dict(dict(info)) + + def _get_head(self) -> bytes: + version = b"\x2B" if self.bigtiff else b"\x2A" + if self.endian == "<": + head = b"II" + version + b"\x00" + o32le(8) + else: + head = b"MM\x00" + version + o32be(8) + if self.bigtiff: + head += o32le(8) if self.endian == "<" else o32be(8) + head += b"\x00\x00\x00\x00" + return head + + def load(self, data: bytes) -> None: + # 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._hidden_data.clear() + self._ifds.clear() + while data and data.startswith(b"Exif\x00\x00"): + data = data[6:] + if not data: + self._info = None + return + + self.fp: IO[bytes] = 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) + + def load_from_fp(self, fp: IO[bytes], offset: int | None = None) -> None: + self._loaded_exif = None + self._data.clear() + self._hidden_data.clear() + self._ifds.clear() + + # process dictionary + from . import TiffImagePlugin + + self.fp = fp + if offset is not None: + self.head = self._get_head() + else: + self.head = self.fp.read(8) + self._info = TiffImagePlugin.ImageFileDirectory_v2(self.head) + if self.endian is None: + self.endian = self._info._endian + if offset is None: + offset = self._info.next + self.fp.tell() + self.fp.seek(offset) + self._info.load(self.fp) + + def _get_merged_dict(self) -> dict[int, Any]: + merged_dict = dict(self) + + # get EXIF extension + if ExifTags.IFD.Exif in self: + ifd = self._get_ifd_dict(self[ExifTags.IFD.Exif], ExifTags.IFD.Exif) + if ifd: + merged_dict.update(ifd) + + # GPS + if ExifTags.IFD.GPSInfo in self: + merged_dict[ExifTags.IFD.GPSInfo] = self._get_ifd_dict( + self[ExifTags.IFD.GPSInfo], ExifTags.IFD.GPSInfo + ) + + return merged_dict + + def tobytes(self, offset: int = 8) -> bytes: + from . import TiffImagePlugin + + head = self._get_head() + ifd = TiffImagePlugin.ImageFileDirectory_v2(ifh=head) + for tag, ifd_dict in self._ifds.items(): + if tag not in self: + ifd[tag] = ifd_dict + for tag, value in self.items(): + if tag in [ + ExifTags.IFD.Exif, + ExifTags.IFD.GPSInfo, + ] and not isinstance(value, dict): + value = self.get_ifd(tag) + if ( + tag == ExifTags.IFD.Exif + and ExifTags.IFD.Interop in value + and not isinstance(value[ExifTags.IFD.Interop], dict) + ): + value = value.copy() + value[ExifTags.IFD.Interop] = self.get_ifd(ExifTags.IFD.Interop) + ifd[tag] = value + return b"Exif\x00\x00" + head + ifd.tobytes(offset) + + def get_ifd(self, tag: int) -> dict[int, Any]: + if tag not in self._ifds: + if tag == ExifTags.IFD.IFD1: + if self._info is not None and self._info.next != 0: + ifd = self._get_ifd_dict(self._info.next) + if ifd is not None: + self._ifds[tag] = ifd + elif tag in [ExifTags.IFD.Exif, ExifTags.IFD.GPSInfo]: + offset = self._hidden_data.get(tag, self.get(tag)) + if offset is not None: + ifd = self._get_ifd_dict(offset, tag) + if ifd is not None: + self._ifds[tag] = ifd + elif tag in [ExifTags.IFD.Interop, ExifTags.IFD.MakerNote]: + if ExifTags.IFD.Exif not in self._ifds: + self.get_ifd(ExifTags.IFD.Exif) + tag_data = self._ifds[ExifTags.IFD.Exif][tag] + if tag == ExifTags.IFD.MakerNote: + from .TiffImagePlugin import ImageFileDirectory_v2 + + if tag_data[:8] == b"FUJIFILM": + ifd_offset = i32le(tag_data, 8) + ifd_data = tag_data[ifd_offset:] + + makernote = {} + for i in range(0, struct.unpack(" 4: + (offset,) = struct.unpack("H", tag_data[:2])[0]): + ifd_tag, typ, count, data = struct.unpack( + ">HHL4s", tag_data[i * 12 + 2 : (i + 1) * 12 + 2] + ) + if ifd_tag == 0x1101: + # CameraInfo + (offset,) = struct.unpack(">L", data) + self.fp.seek(offset) + + camerainfo: dict[str, int | bytes] = { + "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 + )[0] + + self.fp.read(4) + camerainfo["Category"] = self.fp.read(2) + + makernote = {0x1101: camerainfo} + self._ifds[tag] = makernote + else: + # Interop + ifd = self._get_ifd_dict(tag_data, tag) + if ifd is not None: + self._ifds[tag] = ifd + ifd = self._ifds.setdefault(tag, {}) + if tag == ExifTags.IFD.Exif and self._hidden_data: + ifd = { + k: v + for (k, v) in ifd.items() + if k not in (ExifTags.IFD.Interop, ExifTags.IFD.MakerNote) + } + return ifd + + def hide_offsets(self) -> None: + for tag in (ExifTags.IFD.Exif, ExifTags.IFD.GPSInfo): + if tag in self: + self._hidden_data[tag] = self[tag] + del self[tag] + + def __str__(self) -> str: + if self._info is not None: + # Load all keys into self._data + for tag in self._info: + self[tag] + + return str(self._data) + + def __len__(self) -> int: + keys = set(self._data) + if self._info is not None: + keys.update(self._info) + return len(keys) + + def __getitem__(self, tag: int) -> Any: + 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]) + del self._info[tag] + return self._data[tag] + + def __contains__(self, tag: object) -> bool: + return tag in self._data or (self._info is not None and tag in self._info) + + def __setitem__(self, tag: int, value: Any) -> None: + if self._info is not None and tag in self._info: + del self._info[tag] + self._data[tag] = value + + def __delitem__(self, tag: int) -> None: + if self._info is not None and tag in self._info: + del self._info[tag] + else: + del self._data[tag] + + def __iter__(self) -> Iterator[int]: + 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 0000000..29a5c99 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageChops.py @@ -0,0 +1,311 @@ +# +# 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 __future__ import annotations + +from . import Image + + +def constant(image: Image.Image, value: int) -> Image.Image: + """Fill a channel with a given gray level. + + :rtype: :py:class:`~PIL.Image.Image` + """ + + return Image.new("L", image.size, value) + + +def duplicate(image: Image.Image) -> Image.Image: + """Copy a channel. Alias for :py:meth:`PIL.Image.Image.copy`. + + :rtype: :py:class:`~PIL.Image.Image` + """ + + return image.copy() + + +def invert(image: Image.Image) -> Image.Image: + """ + Invert an image (channel). :: + + out = MAX - image + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image.load() + return image._new(image.im.chop_invert()) + + +def lighter(image1: Image.Image, image2: Image.Image) -> Image.Image: + """ + Compares the two images, pixel by pixel, and returns a new image containing + the lighter values. :: + + 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: Image.Image, image2: Image.Image) -> Image.Image: + """ + Compares the two images, pixel by pixel, and returns a new image containing + the darker values. :: + + 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: Image.Image, image2: Image.Image) -> Image.Image: + """ + Returns the absolute value of the pixel-by-pixel difference between the two + images. :: + + 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: Image.Image, image2: Image.Image) -> Image.Image: + """ + 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. :: + + 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: Image.Image, image2: Image.Image) -> Image.Image: + """ + Superimposes two inverted images on top of each other. :: + + 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: Image.Image, image2: Image.Image) -> Image.Image: + """ + 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: Image.Image, image2: Image.Image) -> Image.Image: + """ + 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: Image.Image, image2: Image.Image) -> Image.Image: + """ + 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: Image.Image, image2: Image.Image, scale: float = 1.0, offset: float = 0 +) -> Image.Image: + """ + Adds two images, dividing the result by scale and adding the + offset. If omitted, scale defaults to 1.0, and offset to 0.0. :: + + 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: Image.Image, image2: Image.Image, scale: float = 1.0, offset: float = 0 +) -> Image.Image: + """ + Subtracts two images, dividing the result by scale and adding the offset. + If omitted, scale defaults to 1.0, and offset to 0.0. :: + + 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: Image.Image, image2: Image.Image) -> Image.Image: + """Add two images, without clipping the result. :: + + 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: Image.Image, image2: Image.Image) -> Image.Image: + """Subtract two images, without clipping the result. :: + + 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: Image.Image, image2: Image.Image) -> Image.Image: + """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. :: + + 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: Image.Image, image2: Image.Image) -> Image.Image: + """Logical OR between two images. + + Both of the images must have mode "1". :: + + 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: Image.Image, image2: Image.Image) -> Image.Image: + """Logical XOR between two images. + + Both of the images must have mode "1". :: + + 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: Image.Image, image2: Image.Image, alpha: float) -> Image.Image: + """Blend images using constant transparency weight. Alias for + :py:func:`PIL.Image.blend`. + + :rtype: :py:class:`~PIL.Image.Image` + """ + + return Image.blend(image1, image2, alpha) + + +def composite( + image1: Image.Image, image2: Image.Image, mask: Image.Image +) -> Image.Image: + """Create composite using transparency mask. Alias for + :py:func:`PIL.Image.composite`. + + :rtype: :py:class:`~PIL.Image.Image` + """ + + return Image.composite(image1, image2, mask) + + +def offset(image: Image.Image, xoffset: int, yoffset: int | None = None) -> Image.Image: + """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 image: Input image. + :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 0000000..fdfbee7 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageCms.py @@ -0,0 +1,1125 @@ +# The Python Imaging Library. +# $Id$ + +# Optional color management support, based on Kevin Cazabon's PyCMS +# library. + +# Originally released under LGPL. Graciously donated to PIL in +# March 2009, for distribution under the standard PIL license + +# 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. +from __future__ import annotations + +import operator +import sys +from enum import IntEnum, IntFlag +from functools import reduce +from typing import Any, Literal, SupportsFloat, SupportsInt, Union + +from . import Image, __version__ +from ._deprecate import deprecate +from ._typing import SupportsRead + +try: + from . import _imagingcms as core + + _CmsProfileCompatible = Union[ + str, SupportsRead[bytes], core.CmsProfile, "ImageCmsProfile" + ] +except ImportError as ex: + # Allow error import for doc purposes, but error out when accessing + # anything in core. + from ._util import DeferredError + + core = DeferredError.new(ex) + +_DESCRIPTION = """ +pyCMS + + a Python / PIL interface to the littleCMS ICC Color Management System + Copyright (C) 2002-2003 Kevin Cazabon + kevin@cazabon.com + https://www.cazabon.com + + pyCMS home page: https://www.cazabon.com/pyCMS + littleCMS home page: https://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" + + +def __getattr__(name: str) -> Any: + if name == "DESCRIPTION": + deprecate("PIL.ImageCms.DESCRIPTION", 12) + return _DESCRIPTION + elif name == "VERSION": + deprecate("PIL.ImageCms.VERSION", 12) + return _VERSION + elif name == "FLAGS": + deprecate("PIL.ImageCms.FLAGS", 12, "PIL.ImageCms.Flags") + return _FLAGS + msg = f"module '{__name__}' has no attribute '{name}'" + raise AttributeError(msg) + + +# --------------------------------------------------------------------. + + +# +# intent/direction values + + +class Intent(IntEnum): + PERCEPTUAL = 0 + RELATIVE_COLORIMETRIC = 1 + SATURATION = 2 + ABSOLUTE_COLORIMETRIC = 3 + + +class Direction(IntEnum): + INPUT = 0 + OUTPUT = 1 + PROOF = 2 + + +# +# flags + + +class Flags(IntFlag): + """Flags and documentation are taken from ``lcms2.h``.""" + + NONE = 0 + NOCACHE = 0x0040 + """Inhibit 1-pixel cache""" + NOOPTIMIZE = 0x0100 + """Inhibit optimizations""" + NULLTRANSFORM = 0x0200 + """Don't transform anyway""" + GAMUTCHECK = 0x1000 + """Out of Gamut alarm""" + SOFTPROOFING = 0x4000 + """Do softproofing""" + BLACKPOINTCOMPENSATION = 0x2000 + NOWHITEONWHITEFIXUP = 0x0004 + """Don't fix scum dot""" + HIGHRESPRECALC = 0x0400 + """Use more memory to give better accuracy""" + LOWRESPRECALC = 0x0800 + """Use less memory to minimize resources""" + # this should be 8BITS_DEVICELINK, but that is not a valid name in Python: + USE_8BITS_DEVICELINK = 0x0008 + """Create 8 bits devicelinks""" + GUESSDEVICECLASS = 0x0020 + """Guess device class (for ``transform2devicelink``)""" + KEEP_SEQUENCE = 0x0080 + """Keep profile sequence for devicelink creation""" + FORCE_CLUT = 0x0002 + """Force CLUT optimization""" + CLUT_POST_LINEARIZATION = 0x0001 + """create postlinearization tables if possible""" + CLUT_PRE_LINEARIZATION = 0x0010 + """create prelinearization tables if possible""" + NONEGATIVES = 0x8000 + """Prevent negative numbers in floating point transforms""" + COPY_ALPHA = 0x04000000 + """Alpha channels are copied on ``cmsDoTransform()``""" + NODEFAULTRESOURCEDEF = 0x01000000 + + _GRIDPOINTS_1 = 1 << 16 + _GRIDPOINTS_2 = 2 << 16 + _GRIDPOINTS_4 = 4 << 16 + _GRIDPOINTS_8 = 8 << 16 + _GRIDPOINTS_16 = 16 << 16 + _GRIDPOINTS_32 = 32 << 16 + _GRIDPOINTS_64 = 64 << 16 + _GRIDPOINTS_128 = 128 << 16 + + @staticmethod + def GRIDPOINTS(n: int) -> Flags: + """ + Fine-tune control over number of gridpoints + + :param n: :py:class:`int` in range ``0 <= n <= 255`` + """ + return Flags.NONE | ((n & 0xFF) << 16) + + +_MAX_FLAG = reduce(operator.or_, 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 +} + + +# --------------------------------------------------------------------. +# Experimental PIL-level API +# --------------------------------------------------------------------. + +## +# Profile. + + +class ImageCmsProfile: + def __init__(self, profile: str | SupportsRead[bytes] | core.CmsProfile) -> None: + """ + :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): + if sys.platform == "win32": + profile_bytes_path = profile.encode() + try: + profile_bytes_path.decode("ascii") + except UnicodeDecodeError: + with open(profile, "rb") as f: + self._set(core.profile_frombytes(f.read())) + return + self._set(core.profile_open(profile), profile) + elif hasattr(profile, "read"): + self._set(core.profile_frombytes(profile.read())) + elif isinstance(profile, core.CmsProfile): + self._set(profile) + else: + msg = "Invalid type for Profile" # type: ignore[unreachable] + raise TypeError(msg) + + def _set(self, profile: core.CmsProfile, filename: str | None = None) -> None: + self.profile = profile + self.filename = filename + self.product_name = None # profile.product_name + self.product_info = None # profile.product_info + + def tobytes(self) -> bytes: + """ + 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: ImageCmsProfile, + output: ImageCmsProfile, + input_mode: str, + output_mode: str, + intent: Intent = Intent.PERCEPTUAL, + proof: ImageCmsProfile | None = None, + proof_intent: Intent = Intent.ABSOLUTE_COLORIMETRIC, + flags: Flags = Flags.NONE, + ): + supported_modes = ( + "RGB", + "RGBA", + "RGBX", + "CMYK", + "I;16", + "I;16L", + "I;16B", + "YCbCr", + "LAB", + "L", + "1", + ) + for mode in (input_mode, output_mode): + if mode not in supported_modes: + deprecate( + mode, + 12, + { + "L;16": "I;16 or I;16L", + "L:16B": "I;16B", + "YCCA": "YCbCr", + "YCC": "YCbCr", + }.get(mode), + ) + 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: Image.Image) -> Image.Image: + return self.apply(im) + + def apply(self, im: Image.Image, imOut: Image.Image | None = None) -> Image.Image: + if imOut is None: + imOut = Image.new(self.output_mode, im.size, None) + self.transform.apply(im.getim(), imOut.getim()) + imOut.info["icc_profile"] = self.output_profile.tobytes() + return imOut + + def apply_in_place(self, im: Image.Image) -> Image.Image: + if im.mode != self.output_mode: + msg = "mode mismatch" + raise ValueError(msg) # wrong output mode + self.transform.apply(im.getim(), im.getim()) + im.info["icc_profile"] = self.output_profile.tobytes() + return im + + +def get_display_profile(handle: SupportsInt | None = None) -> ImageCmsProfile | 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 . import ImageWin # type: ignore[unused-ignore, unreachable] + + if isinstance(handle, ImageWin.HDC): + profile = core.get_display_profile_win32(int(handle), 1) + else: + profile = core.get_display_profile_win32(int(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: Image.Image, + inputProfile: _CmsProfileCompatible, + outputProfile: _CmsProfileCompatible, + renderingIntent: Intent = Intent.PERCEPTUAL, + outputMode: str | None = None, + inPlace: bool = False, + flags: Flags = Flags.NONE, +) -> Image.Image | None: + """ + (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): + msg = "renderingIntent must be an integer between 0 and 3" + raise PyCMSError(msg) + + if not isinstance(flags, int) or not (0 <= flags <= _MAX_FLAG): + msg = f"flags must be an integer between 0 and {_MAX_FLAG}" + raise PyCMSError(msg) + + 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: str | SupportsRead[bytes] | core.CmsProfile, +) -> ImageCmsProfile: + """ + (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: _CmsProfileCompatible, + outputProfile: _CmsProfileCompatible, + inMode: str, + outMode: str, + renderingIntent: Intent = Intent.PERCEPTUAL, + flags: Flags = Flags.NONE, +) -> ImageCmsTransform: + """ + (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): + msg = "renderingIntent must be an integer between 0 and 3" + raise PyCMSError(msg) + + if not isinstance(flags, int) or not (0 <= flags <= _MAX_FLAG): + msg = f"flags must be an integer between 0 and {_MAX_FLAG}" + raise PyCMSError(msg) + + 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: _CmsProfileCompatible, + outputProfile: _CmsProfileCompatible, + proofProfile: _CmsProfileCompatible, + inMode: str, + outMode: str, + renderingIntent: Intent = Intent.PERCEPTUAL, + proofRenderingIntent: Intent = Intent.ABSOLUTE_COLORIMETRIC, + flags: Flags = Flags.SOFTPROOFING, +) -> ImageCmsTransform: + """ + (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): + msg = "renderingIntent must be an integer between 0 and 3" + raise PyCMSError(msg) + + if not isinstance(flags, int) or not (0 <= flags <= _MAX_FLAG): + msg = f"flags must be an integer between 0 and {_MAX_FLAG}" + raise PyCMSError(msg) + + 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: Image.Image, transform: ImageCmsTransform, inPlace: bool = False +) -> Image.Image | None: + """ + (pyCMS) Applies a transform to a given image. + + If ``im.mode != transform.input_mode``, a :exc:`PyCMSError` is raised. + + If ``inPlace`` is ``True`` and ``transform.input_mode != transform.output_mode``, a + :exc:`PyCMSError` is raised. + + If ``im.mode``, ``transform.input_mode`` or ``transform.output_mode`` 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.input_mode`` and ``transform.output_mode`` 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.output_mode``. + + :param im: An :py:class:`~PIL.Image.Image` object, and ``im.mode`` must be the same + as the ``input_mode`` 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: Literal["LAB", "XYZ", "sRGB"], colorTemp: SupportsFloat = 0 +) -> core.CmsProfile: + """ + (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 number 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"]: + msg = ( + f"Color space not supported for on-the-fly profile creation ({colorSpace})" + ) + raise PyCMSError(msg) + + if colorSpace == "LAB": + try: + colorTemp = float(colorTemp) + except (TypeError, ValueError) as e: + msg = f'Color temperature must be numeric, "{colorTemp}" not valid' + raise PyCMSError(msg) from e + + try: + return core.createProfile(colorSpace, colorTemp) + except (TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getProfileName(profile: _CmsProfileCompatible) -> str: + """ + + (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 (model and len(model) > 30): + return f"{model}\n" + return f"{model} - {manufacturer}\n" + + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getProfileInfo(profile: _CmsProfileCompatible) -> str: + """ + (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 + elements = [element for element in (description, cpright) if element] + return "\r\n\r\n".join(elements) + "\r\n\r\n" + + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getProfileCopyright(profile: _CmsProfileCompatible) -> str: + """ + (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: _CmsProfileCompatible) -> str: + """ + (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: _CmsProfileCompatible) -> str: + """ + (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: _CmsProfileCompatible) -> str: + """ + (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: _CmsProfileCompatible) -> int: + """ + (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: _CmsProfileCompatible, intent: Intent, direction: Direction +) -> Literal[-1, 1]: + """ + (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() -> tuple[str, str | None, str, str]: + """ + (pyCMS) Fetches versions. + """ + + deprecate( + "PIL.ImageCms.versions()", + 12, + '(PIL.features.version("littlecms2"), sys.version, PIL.__version__)', + ) + return _VERSION, core.littlecms_version, sys.version.split()[0], __version__ diff --git a/venv/Lib/site-packages/PIL/ImageColor.py b/venv/Lib/site-packages/PIL/ImageColor.py new file mode 100644 index 0000000..9a15a8e --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageColor.py @@ -0,0 +1,320 @@ +# +# 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. +# +from __future__ import annotations + +import re +from functools import lru_cache + +from . import Image + + +@lru_cache +def getrgb(color: str) -> tuple[int, int, int] | tuple[int, int, int, int]: + """ + Convert a color string to an RGB or RGBA 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])`` + """ + if len(color) > 100: + msg = "color specifier is too long" + raise ValueError(msg) + color = color.lower() + + rgb = colormap.get(color, None) + if rgb: + if isinstance(rgb, tuple): + return rgb + rgb_tuple = getrgb(rgb) + assert len(rgb_tuple) == 3 + colormap[color] = rgb_tuple + return rgb_tuple + + # 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_floats = hls_to_rgb( + float(m.group(1)) / 360.0, + float(m.group(3)) / 100.0, + float(m.group(2)) / 100.0, + ) + return ( + int(rgb_floats[0] * 255 + 0.5), + int(rgb_floats[1] * 255 + 0.5), + int(rgb_floats[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_floats = hsv_to_rgb( + float(m.group(1)) / 360.0, + float(m.group(2)) / 100.0, + float(m.group(3)) / 100.0, + ) + return ( + int(rgb_floats[0] * 255 + 0.5), + int(rgb_floats[1] * 255 + 0.5), + int(rgb_floats[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)) + msg = f"unknown color specifier: {repr(color)}" + raise ValueError(msg) + + +@lru_cache +def getcolor(color: str, mode: str) -> int | tuple[int, ...]: + """ + Same as :py:func:`~PIL.ImageColor.getrgb` for most modes. However, if + ``mode`` is HSV, converts the RGB value to a HSV value, or if ``mode`` is + not color or a palette image, converts the RGB value to a grayscale value. + If the string cannot be parsed, this function raises a :py:exc:`ValueError` + exception. + + .. versionadded:: 1.1.4 + + :param color: A color string + :param mode: Convert result to this mode + :return: ``graylevel, (graylevel, alpha) or (red, green, blue[, alpha])`` + """ + # same as getrgb, but converts the result to the given mode + rgb, alpha = getrgb(color), 255 + if len(rgb) == 4: + alpha = rgb[3] + rgb = rgb[:3] + + if mode == "HSV": + from colorsys import rgb_to_hsv + + r, g, b = rgb + h, s, v = rgb_to_hsv(r / 255, g / 255, b / 255) + return int(h * 255), int(s * 255), int(v * 255) + elif Image.getmodebase(mode) == "L": + r, g, b = rgb + # ITU-R Recommendation 601-2 for nonlinear RGB + # scaled to 24 bits to match the convert's implementation. + graylevel = (r * 19595 + g * 38470 + b * 7471 + 0x8000) >> 16 + if mode[-1] == "A": + return graylevel, alpha + return graylevel + elif mode[-1] == "A": + return rgb + (alpha,) + return rgb + + +colormap: dict[str, str | tuple[int, int, int]] = { + # 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 0000000..d8e4c0c --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageDraw.py @@ -0,0 +1,1218 @@ +# +# 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. +# +from __future__ import annotations + +import math +import struct +from collections.abc import Sequence +from types import ModuleType +from typing import TYPE_CHECKING, Any, AnyStr, Callable, Union, cast + +from . import Image, ImageColor +from ._deprecate import deprecate +from ._typing import Coords + +# experimental access to the outline API +Outline: Callable[[], Image.core._Outline] | None +try: + Outline = Image.core.outline +except AttributeError: + Outline = None + +if TYPE_CHECKING: + from . import ImageDraw2, ImageFont + +_Ink = Union[float, tuple[int, ...], str] + +""" +A simple 2D drawing interface for PIL images. +

+Application code should use the Draw factory, instead of +directly. +""" + + +class ImageDraw: + font: ( + ImageFont.ImageFont | ImageFont.FreeTypeFont | ImageFont.TransposedFont | None + ) = None + + def __init__(self, im: Image.Image, mode: str | None = None) -> 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: + msg = "mode mismatch" + raise ValueError(msg) + if mode == "P": + self.palette = im.palette + else: + self.palette = None + self._image = im + 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 = False + + def getfont( + self, + ) -> ImageFont.ImageFont | ImageFont.FreeTypeFont | ImageFont.TransposedFont: + """ + Get the current default font. + + To set the default font for this ImageDraw instance:: + + from PIL import ImageDraw, ImageFont + draw.font = ImageFont.truetype("Tests/fonts/FreeMono.ttf") + + To set the default font for all future ImageDraw instances:: + + from PIL import ImageDraw, ImageFont + ImageDraw.ImageDraw.font = ImageFont.truetype("Tests/fonts/FreeMono.ttf") + + If the current default font is ``None``, + it is initialized with ``ImageFont.load_default()``. + + :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 _getfont( + self, font_size: float | None + ) -> ImageFont.ImageFont | ImageFont.FreeTypeFont | ImageFont.TransposedFont: + if font_size is not None: + from . import ImageFont + + return ImageFont.load_default(font_size) + else: + return self.getfont() + + def _getink( + self, ink: _Ink | None, fill: _Ink | None = None + ) -> tuple[int | None, int | None]: + result_ink = None + result_fill = None + if ink is None and fill is None: + if self.fill: + result_fill = self.ink + else: + result_ink = self.ink + else: + if ink is not None: + if isinstance(ink, str): + ink = ImageColor.getcolor(ink, self.mode) + if self.palette and isinstance(ink, tuple): + ink = self.palette.getcolor(ink, self._image) + result_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 isinstance(fill, tuple): + fill = self.palette.getcolor(fill, self._image) + result_fill = self.draw.draw_ink(fill) + return result_ink, result_fill + + def arc( + self, + xy: Coords, + start: float, + end: float, + fill: _Ink | None = None, + width: int = 1, + ) -> None: + """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: Sequence[int], bitmap: Image.Image, fill: _Ink | None = None + ) -> 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: Coords, + start: float, + end: float, + fill: _Ink | None = None, + outline: _Ink | None = None, + width: int = 1, + ) -> None: + """Draw a chord.""" + ink, fill_ink = self._getink(outline, fill) + if fill_ink is not None: + self.draw.draw_chord(xy, start, end, fill_ink, 1) + if ink is not None and ink != fill_ink and width != 0: + self.draw.draw_chord(xy, start, end, ink, 0, width) + + def ellipse( + self, + xy: Coords, + fill: _Ink | None = None, + outline: _Ink | None = None, + width: int = 1, + ) -> None: + """Draw an ellipse.""" + ink, fill_ink = self._getink(outline, fill) + if fill_ink is not None: + self.draw.draw_ellipse(xy, fill_ink, 1) + if ink is not None and ink != fill_ink and width != 0: + self.draw.draw_ellipse(xy, ink, 0, width) + + def circle( + self, + xy: Sequence[float], + radius: float, + fill: _Ink | None = None, + outline: _Ink | None = None, + width: int = 1, + ) -> None: + """Draw a circle given center coordinates and a radius.""" + ellipse_xy = (xy[0] - radius, xy[1] - radius, xy[0] + radius, xy[1] + radius) + self.ellipse(ellipse_xy, fill, outline, width) + + def line( + self, + xy: Coords, + fill: _Ink | None = None, + width: int = 0, + joint: str | None = None, + ) -> 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: + points: Sequence[Sequence[float]] + if isinstance(xy[0], (list, tuple)): + points = cast(Sequence[Sequence[float]], xy) + else: + points = [ + cast(Sequence[float], tuple(xy[i : i + 2])) + for i in range(0, len(xy), 2) + ] + for i in range(1, len(points) - 1): + point = points[i] + angles = [ + math.degrees(math.atan2(end[0] - start[0], start[1] - end[1])) + % 360 + for start, end in ( + (points[i - 1], point), + (point, points[i + 1]), + ) + ] + if angles[0] == angles[1]: + # This is a straight line, so no joint is required + continue + + def coord_at_angle( + coord: Sequence[float], angle: float + ) -> tuple[float, ...]: + 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: + gap_coords = [ + coord_at_angle(point, angles[0] + 90), + point, + coord_at_angle(point, angles[1] + 90), + ] + else: + gap_coords = [ + coord_at_angle(point, angles[0] - 90), + point, + coord_at_angle(point, angles[1] - 90), + ] + self.line(gap_coords, fill, width=3) + + def shape( + self, + shape: Image.core._Outline, + fill: _Ink | None = None, + outline: _Ink | None = None, + ) -> None: + """(Experimental) Draw a shape.""" + shape.close() + ink, fill_ink = self._getink(outline, fill) + if fill_ink is not None: + self.draw.draw_outline(shape, fill_ink, 1) + if ink is not None and ink != fill_ink: + self.draw.draw_outline(shape, ink, 0) + + def pieslice( + self, + xy: Coords, + start: float, + end: float, + fill: _Ink | None = None, + outline: _Ink | None = None, + width: int = 1, + ) -> None: + """Draw a pieslice.""" + ink, fill_ink = self._getink(outline, fill) + if fill_ink is not None: + self.draw.draw_pieslice(xy, start, end, fill_ink, 1) + if ink is not None and ink != fill_ink and width != 0: + self.draw.draw_pieslice(xy, start, end, ink, 0, width) + + def point(self, xy: Coords, fill: _Ink | None = None) -> 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: Coords, + fill: _Ink | None = None, + outline: _Ink | None = None, + width: int = 1, + ) -> None: + """Draw a polygon.""" + ink, fill_ink = self._getink(outline, fill) + if fill_ink is not None: + self.draw.draw_polygon(xy, fill_ink, 1) + if ink is not None and ink != fill_ink and width != 0: + if width == 1: + self.draw.draw_polygon(xy, ink, 0, width) + elif self.im is not None: + # To avoid expanding the polygon outwards, + # use the fill as a mask + mask = Image.new("1", self.im.size) + mask_ink = self._getink(1)[0] + + fill_im = mask.copy() + draw = Draw(fill_im) + draw.draw.draw_polygon(xy, mask_ink, 1) + + ink_im = mask.copy() + draw = Draw(ink_im) + width = width * 2 - 1 + draw.draw.draw_polygon(xy, mask_ink, 0, width) + + mask.paste(ink_im, mask=fill_im) + + im = Image.new(self.mode, self.im.size) + draw = Draw(im) + draw.draw.draw_polygon(xy, ink, 0, width) + self.im.paste(im.im, (0, 0) + im.size, mask.im) + + def regular_polygon( + self, + bounding_circle: Sequence[Sequence[float] | float], + n_sides: int, + rotation: float = 0, + fill: _Ink | None = None, + outline: _Ink | None = None, + width: int = 1, + ) -> None: + """Draw a regular polygon.""" + xy = _compute_regular_polygon_vertices(bounding_circle, n_sides, rotation) + self.polygon(xy, fill, outline, width) + + def rectangle( + self, + xy: Coords, + fill: _Ink | None = None, + outline: _Ink | None = None, + width: int = 1, + ) -> None: + """Draw a rectangle.""" + ink, fill_ink = self._getink(outline, fill) + if fill_ink is not None: + self.draw.draw_rectangle(xy, fill_ink, 1) + if ink is not None and ink != fill_ink and width != 0: + self.draw.draw_rectangle(xy, ink, 0, width) + + def rounded_rectangle( + self, + xy: Coords, + radius: float = 0, + fill: _Ink | None = None, + outline: _Ink | None = None, + width: int = 1, + *, + corners: tuple[bool, bool, bool, bool] | None = None, + ) -> None: + """Draw a rounded rectangle.""" + if isinstance(xy[0], (list, tuple)): + (x0, y0), (x1, y1) = cast(Sequence[Sequence[float]], xy) + else: + x0, y0, x1, y1 = cast(Sequence[float], xy) + if x1 < x0: + msg = "x1 must be greater than or equal to x0" + raise ValueError(msg) + if y1 < y0: + msg = "y1 must be greater than or equal to y0" + raise ValueError(msg) + if corners is None: + corners = (True, True, True, True) + + d = radius * 2 + + x0 = round(x0) + y0 = round(y0) + x1 = round(x1) + y1 = round(y1) + full_x, full_y = False, False + if all(corners): + full_x = d >= x1 - x0 - 1 + if full_x: + # The two left and two right corners are joined + d = x1 - x0 + full_y = d >= y1 - y0 - 1 + if full_y: + # The two top and two bottom corners are joined + d = y1 - y0 + if full_x and full_y: + # If all corners are joined, that is a circle + return self.ellipse(xy, fill, outline, width) + + if d == 0 or not any(corners): + # If the corners have no curve, + # or there are no corners, + # that is a rectangle + return self.rectangle(xy, fill, outline, width) + + r = int(d // 2) + ink, fill_ink = self._getink(outline, fill) + + def draw_corners(pieslice: bool) -> None: + parts: tuple[tuple[tuple[float, float, float, float], int, int], ...] + if full_x: + # Draw top and bottom halves + parts = ( + ((x0, y0, x0 + d, y0 + d), 180, 360), + ((x0, y1 - d, x0 + d, y1), 0, 180), + ) + elif full_y: + # Draw left and right halves + parts = ( + ((x0, y0, x0 + d, y0 + d), 90, 270), + ((x1 - d, y0, x1, y0 + d), 270, 90), + ) + else: + # Draw four separate corners + parts = tuple( + part + for i, part in enumerate( + ( + ((x0, y0, x0 + d, y0 + d), 180, 270), + ((x1 - d, y0, x1, y0 + d), 270, 360), + ((x1 - d, y1 - d, x1, y1), 0, 90), + ((x0, y1 - d, x0 + d, y1), 90, 180), + ) + ) + if corners[i] + ) + for part in parts: + if pieslice: + self.draw.draw_pieslice(*(part + (fill_ink, 1))) + else: + self.draw.draw_arc(*(part + (ink, width))) + + if fill_ink is not None: + draw_corners(True) + + if full_x: + self.draw.draw_rectangle((x0, y0 + r + 1, x1, y1 - r - 1), fill_ink, 1) + elif x1 - r - 1 > x0 + r + 1: + self.draw.draw_rectangle((x0 + r + 1, y0, x1 - r - 1, y1), fill_ink, 1) + if not full_x and not full_y: + left = [x0, y0, x0 + r, y1] + if corners[0]: + left[1] += r + 1 + if corners[3]: + left[3] -= r + 1 + self.draw.draw_rectangle(left, fill_ink, 1) + + right = [x1 - r, y0, x1, y1] + if corners[1]: + right[1] += r + 1 + if corners[2]: + right[3] -= r + 1 + self.draw.draw_rectangle(right, fill_ink, 1) + if ink is not None and ink != fill_ink and width != 0: + draw_corners(False) + + if not full_x: + top = [x0, y0, x1, y0 + width - 1] + if corners[0]: + top[0] += r + 1 + if corners[1]: + top[2] -= r + 1 + self.draw.draw_rectangle(top, ink, 1) + + bottom = [x0, y1 - width + 1, x1, y1] + if corners[3]: + bottom[0] += r + 1 + if corners[2]: + bottom[2] -= r + 1 + self.draw.draw_rectangle(bottom, ink, 1) + if not full_y: + left = [x0, y0, x0 + width - 1, y1] + if corners[0]: + left[1] += r + 1 + if corners[3]: + left[3] -= r + 1 + self.draw.draw_rectangle(left, ink, 1) + + right = [x1 - width + 1, y0, x1, y1] + if corners[1]: + right[1] += r + 1 + if corners[2]: + right[3] -= r + 1 + self.draw.draw_rectangle(right, ink, 1) + + def _multiline_check(self, text: AnyStr) -> bool: + split_character = "\n" if isinstance(text, str) else b"\n" + + return split_character in text + + def _multiline_split(self, text: AnyStr) -> list[AnyStr]: + return text.split("\n" if isinstance(text, str) else b"\n") + + def _multiline_spacing( + self, + font: ImageFont.ImageFont | ImageFont.FreeTypeFont | ImageFont.TransposedFont, + spacing: float, + stroke_width: float, + ) -> float: + return ( + self.textbbox((0, 0), "A", font, stroke_width=stroke_width)[3] + + stroke_width + + spacing + ) + + def text( + self, + xy: tuple[float, float], + text: AnyStr, + fill: _Ink | None = None, + font: ( + ImageFont.ImageFont + | ImageFont.FreeTypeFont + | ImageFont.TransposedFont + | None + ) = None, + anchor: str | None = None, + spacing: float = 4, + align: str = "left", + direction: str | None = None, + features: list[str] | None = None, + language: str | None = None, + stroke_width: float = 0, + stroke_fill: _Ink | None = None, + embedded_color: bool = False, + *args: Any, + **kwargs: Any, + ) -> None: + """Draw text.""" + if embedded_color and self.mode not in ("RGB", "RGBA"): + msg = "Embedded color supported only in RGB and RGBA modes" + raise ValueError(msg) + + if font is None: + font = self._getfont(kwargs.get("font_size")) + + if self._multiline_check(text): + return self.multiline_text( + xy, + text, + fill, + font, + anchor, + spacing, + align, + direction, + features, + language, + stroke_width, + stroke_fill, + embedded_color, + ) + + def getink(fill: _Ink | None) -> int: + ink, fill_ink = self._getink(fill) + if ink is None: + assert fill_ink is not None + return fill_ink + return ink + + def draw_text(ink: int, stroke_width: float = 0) -> None: + mode = self.fontmode + if stroke_width == 0 and embedded_color: + mode = "RGBA" + coord = [] + for i in range(2): + coord.append(int(xy[i])) + start = (math.modf(xy[0])[0], math.modf(xy[1])[0]) + try: + mask, offset = font.getmask2( # type: ignore[union-attr,misc] + text, + mode, + direction=direction, + features=features, + language=language, + stroke_width=stroke_width, + anchor=anchor, + ink=ink, + start=start, + *args, + **kwargs, + ) + coord = [coord[0] + offset[0], coord[1] + offset[1]] + except AttributeError: + try: + mask = font.getmask( # type: ignore[misc] + text, + mode, + direction, + features, + language, + stroke_width, + anchor, + ink, + start=start, + *args, + **kwargs, + ) + except TypeError: + mask = font.getmask(text) + if mode == "RGBA": + # font.getmask2(mode="RGBA") returns color in RGB bands and mask in A + # extract mask and set text alpha + color, mask = mask, mask.getband(3) + ink_alpha = struct.pack("i", ink)[3] + color.fillband(3, ink_alpha) + x, y = coord + if self.im is not None: + self.im.paste( + color, (x, y, x + mask.size[0], y + mask.size[1]), mask + ) + else: + 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) + else: + # Only draw normal text + draw_text(ink) + + def multiline_text( + self, + xy: tuple[float, float], + text: AnyStr, + fill: _Ink | None = None, + font: ( + ImageFont.ImageFont + | ImageFont.FreeTypeFont + | ImageFont.TransposedFont + | None + ) = None, + anchor: str | None = None, + spacing: float = 4, + align: str = "left", + direction: str | None = None, + features: list[str] | None = None, + language: str | None = None, + stroke_width: float = 0, + stroke_fill: _Ink | None = None, + embedded_color: bool = False, + *, + font_size: float | None = None, + ) -> None: + if direction == "ttb": + msg = "ttb direction is unsupported for multiline text" + raise ValueError(msg) + + if anchor is None: + anchor = "la" + elif len(anchor) != 2: + msg = "anchor must be a 2 character string" + raise ValueError(msg) + elif anchor[1] in "tb": + msg = "anchor not supported for multiline text" + raise ValueError(msg) + + if font is None: + font = self._getfont(font_size) + + widths = [] + max_width: float = 0 + lines = self._multiline_split(text) + line_spacing = self._multiline_spacing(font, spacing, stroke_width) + for line in lines: + line_width = self.textlength( + line, font, direction=direction, features=features, language=language + ) + widths.append(line_width) + max_width = max(max_width, line_width) + + top = xy[1] + if anchor[1] == "m": + top -= (len(lines) - 1) * line_spacing / 2.0 + elif anchor[1] == "d": + top -= (len(lines) - 1) * line_spacing + + for idx, line in enumerate(lines): + left = xy[0] + width_difference = max_width - widths[idx] + + # first align left by anchor + if anchor[0] == "m": + left -= width_difference / 2.0 + elif anchor[0] == "r": + left -= width_difference + + # then align by align parameter + if align == "left": + pass + elif align == "center": + left += width_difference / 2.0 + elif align == "right": + left += width_difference + else: + msg = 'align must be "left", "center" or "right"' + raise ValueError(msg) + + self.text( + (left, top), + line, + fill, + font, + anchor, + direction=direction, + features=features, + language=language, + stroke_width=stroke_width, + stroke_fill=stroke_fill, + embedded_color=embedded_color, + ) + top += line_spacing + + def textlength( + self, + text: AnyStr, + font: ( + ImageFont.ImageFont + | ImageFont.FreeTypeFont + | ImageFont.TransposedFont + | None + ) = None, + direction: str | None = None, + features: list[str] | None = None, + language: str | None = None, + embedded_color: bool = False, + *, + font_size: float | None = None, + ) -> float: + """Get the length of a given string, in pixels with 1/64 precision.""" + if self._multiline_check(text): + msg = "can't measure length of multiline text" + raise ValueError(msg) + if embedded_color and self.mode not in ("RGB", "RGBA"): + msg = "Embedded color supported only in RGB and RGBA modes" + raise ValueError(msg) + + if font is None: + font = self._getfont(font_size) + mode = "RGBA" if embedded_color else self.fontmode + return font.getlength(text, mode, direction, features, language) + + def textbbox( + self, + xy: tuple[float, float], + text: AnyStr, + font: ( + ImageFont.ImageFont + | ImageFont.FreeTypeFont + | ImageFont.TransposedFont + | None + ) = None, + anchor: str | None = None, + spacing: float = 4, + align: str = "left", + direction: str | None = None, + features: list[str] | None = None, + language: str | None = None, + stroke_width: float = 0, + embedded_color: bool = False, + *, + font_size: float | None = None, + ) -> tuple[float, float, float, float]: + """Get the bounding box of a given string, in pixels.""" + if embedded_color and self.mode not in ("RGB", "RGBA"): + msg = "Embedded color supported only in RGB and RGBA modes" + raise ValueError(msg) + + if font is None: + font = self._getfont(font_size) + + if self._multiline_check(text): + return self.multiline_textbbox( + xy, + text, + font, + anchor, + spacing, + align, + direction, + features, + language, + stroke_width, + embedded_color, + ) + + mode = "RGBA" if embedded_color else self.fontmode + bbox = font.getbbox( + text, mode, direction, features, language, stroke_width, anchor + ) + return bbox[0] + xy[0], bbox[1] + xy[1], bbox[2] + xy[0], bbox[3] + xy[1] + + def multiline_textbbox( + self, + xy: tuple[float, float], + text: AnyStr, + font: ( + ImageFont.ImageFont + | ImageFont.FreeTypeFont + | ImageFont.TransposedFont + | None + ) = None, + anchor: str | None = None, + spacing: float = 4, + align: str = "left", + direction: str | None = None, + features: list[str] | None = None, + language: str | None = None, + stroke_width: float = 0, + embedded_color: bool = False, + *, + font_size: float | None = None, + ) -> tuple[float, float, float, float]: + if direction == "ttb": + msg = "ttb direction is unsupported for multiline text" + raise ValueError(msg) + + if anchor is None: + anchor = "la" + elif len(anchor) != 2: + msg = "anchor must be a 2 character string" + raise ValueError(msg) + elif anchor[1] in "tb": + msg = "anchor not supported for multiline text" + raise ValueError(msg) + + if font is None: + font = self._getfont(font_size) + + widths = [] + max_width: float = 0 + lines = self._multiline_split(text) + line_spacing = self._multiline_spacing(font, spacing, stroke_width) + for line in lines: + line_width = self.textlength( + line, + font, + direction=direction, + features=features, + language=language, + embedded_color=embedded_color, + ) + widths.append(line_width) + max_width = max(max_width, line_width) + + top = xy[1] + if anchor[1] == "m": + top -= (len(lines) - 1) * line_spacing / 2.0 + elif anchor[1] == "d": + top -= (len(lines) - 1) * line_spacing + + bbox: tuple[float, float, float, float] | None = None + + for idx, line in enumerate(lines): + left = xy[0] + width_difference = max_width - widths[idx] + + # first align left by anchor + if anchor[0] == "m": + left -= width_difference / 2.0 + elif anchor[0] == "r": + left -= width_difference + + # then align by align parameter + if align == "left": + pass + elif align == "center": + left += width_difference / 2.0 + elif align == "right": + left += width_difference + else: + msg = 'align must be "left", "center" or "right"' + raise ValueError(msg) + + bbox_line = self.textbbox( + (left, top), + line, + font, + anchor, + direction=direction, + features=features, + language=language, + stroke_width=stroke_width, + embedded_color=embedded_color, + ) + if bbox is None: + bbox = bbox_line + else: + bbox = ( + min(bbox[0], bbox_line[0]), + min(bbox[1], bbox_line[1]), + max(bbox[2], bbox_line[2]), + max(bbox[3], bbox_line[3]), + ) + + top += line_spacing + + if bbox is None: + return xy[0], xy[1], xy[0], xy[1] + return bbox + + +def Draw(im: Image.Image, mode: str | None = None) -> ImageDraw: + """ + 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 getattr(im, "getdraw")(mode) + except AttributeError: + return ImageDraw(im, mode) + + +def getdraw( + im: Image.Image | None = None, hints: list[str] | None = None +) -> tuple[ImageDraw2.Draw | None, ModuleType]: + """ + :param im: The image to draw in. + :param hints: An optional list of hints. Deprecated. + :returns: A (drawing context, drawing resource factory) tuple. + """ + if hints is not None: + deprecate("'hints' parameter", 12) + from . import ImageDraw2 + + draw = ImageDraw2.Draw(im) if im is not None else None + return draw, ImageDraw2 + + +def floodfill( + image: Image.Image, + xy: tuple[int, int], + value: float | tuple[int, ...], + border: float | tuple[int, ...] | None = None, + thresh: float = 0, +) -> None: + """ + .. warning:: This method is 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() + assert pixel is not None + 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 not in (value, border) + if fill: + pixel[s, t] = value + new_edge.add((s, t)) + full_edge = edge # discard pixels processed + edge = new_edge + + +def _compute_regular_polygon_vertices( + bounding_circle: Sequence[Sequence[float] | float], n_sides: int, rotation: float +) -> list[tuple[float, float]]: + """ + Generate a list of vertices for a 2D regular polygon. + + :param bounding_circle: The bounding circle is a sequence defined + by a point and radius. The polygon is inscribed in this circle. + (e.g. ``bounding_circle=(x, y, r)`` or ``((x, y), r)``) + :param n_sides: Number of sides + (e.g. ``n_sides=3`` for a triangle, ``6`` for a hexagon) + :param rotation: Apply an arbitrary rotation to the polygon + (e.g. ``rotation=90``, applies a 90 degree rotation) + :return: List of regular polygon vertices + (e.g. ``[(25, 50), (50, 50), (50, 25), (25, 25)]``) + + How are the vertices computed? + 1. Compute the following variables + - theta: Angle between the apothem & the nearest polygon vertex + - side_length: Length of each polygon edge + - centroid: Center of bounding circle (1st, 2nd elements of bounding_circle) + - polygon_radius: Polygon radius (last element of bounding_circle) + - angles: Location of each polygon vertex in polar grid + (e.g. A square with 0 degree rotation => [225.0, 315.0, 45.0, 135.0]) + + 2. For each angle in angles, get the polygon vertex at that angle + The vertex is computed using the equation below. + X= xcos(φ) + ysin(φ) + Y= −xsin(φ) + ycos(φ) + + Note: + φ = angle in degrees + x = 0 + y = polygon_radius + + The formula above assumes rotation around the origin. + In our case, we are rotating around the centroid. + To account for this, we use the formula below + X = xcos(φ) + ysin(φ) + centroid_x + Y = −xsin(φ) + ycos(φ) + centroid_y + """ + # 1. Error Handling + # 1.1 Check `n_sides` has an appropriate value + if not isinstance(n_sides, int): + msg = "n_sides should be an int" # type: ignore[unreachable] + raise TypeError(msg) + if n_sides < 3: + msg = "n_sides should be an int > 2" + raise ValueError(msg) + + # 1.2 Check `bounding_circle` has an appropriate value + if not isinstance(bounding_circle, (list, tuple)): + msg = "bounding_circle should be a sequence" + raise TypeError(msg) + + if len(bounding_circle) == 3: + if not all(isinstance(i, (int, float)) for i in bounding_circle): + msg = "bounding_circle should only contain numeric data" + raise ValueError(msg) + + *centroid, polygon_radius = cast(list[float], list(bounding_circle)) + elif len(bounding_circle) == 2 and isinstance(bounding_circle[0], (list, tuple)): + if not all( + isinstance(i, (int, float)) for i in bounding_circle[0] + ) or not isinstance(bounding_circle[1], (int, float)): + msg = "bounding_circle should only contain numeric data" + raise ValueError(msg) + + if len(bounding_circle[0]) != 2: + msg = "bounding_circle centre should contain 2D coordinates (e.g. (x, y))" + raise ValueError(msg) + + centroid = cast(list[float], list(bounding_circle[0])) + polygon_radius = cast(float, bounding_circle[1]) + else: + msg = ( + "bounding_circle should contain 2D coordinates " + "and a radius (e.g. (x, y, r) or ((x, y), r) )" + ) + raise ValueError(msg) + + if polygon_radius <= 0: + msg = "bounding_circle radius should be > 0" + raise ValueError(msg) + + # 1.3 Check `rotation` has an appropriate value + if not isinstance(rotation, (int, float)): + msg = "rotation should be an int or float" # type: ignore[unreachable] + raise ValueError(msg) + + # 2. Define Helper Functions + def _apply_rotation(point: list[float], degrees: float) -> tuple[float, float]: + return ( + round( + point[0] * math.cos(math.radians(360 - degrees)) + - point[1] * math.sin(math.radians(360 - degrees)) + + centroid[0], + 2, + ), + round( + point[1] * math.cos(math.radians(360 - degrees)) + + point[0] * math.sin(math.radians(360 - degrees)) + + centroid[1], + 2, + ), + ) + + def _compute_polygon_vertex(angle: float) -> tuple[float, float]: + start_point = [polygon_radius, 0] + return _apply_rotation(start_point, angle) + + def _get_angles(n_sides: int, rotation: float) -> list[float]: + angles = [] + degrees = 360 / n_sides + # Start with the bottom left polygon vertex + current_angle = (270 - 0.5 * degrees) + rotation + for _ in range(0, n_sides): + angles.append(current_angle) + current_angle += degrees + if current_angle > 360: + current_angle -= 360 + return angles + + # 3. Variable Declarations + angles = _get_angles(n_sides, rotation) + + # 4. Compute Vertices + return [_compute_polygon_vertex(angle) for angle in angles] + + +def _color_diff( + color1: float | tuple[int, ...], color2: float | tuple[int, ...] +) -> float: + """ + Uses 1-norm distance to calculate difference between two values. + """ + first = color1 if isinstance(color1, tuple) else (color1,) + second = color2 if isinstance(color2, tuple) else (color2,) + + return sum(abs(first[i] - second[i]) for i in range(0, len(second))) diff --git a/venv/Lib/site-packages/PIL/ImageDraw2.py b/venv/Lib/site-packages/PIL/ImageDraw2.py new file mode 100644 index 0000000..3d68658 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageDraw2.py @@ -0,0 +1,243 @@ +# +# 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 __future__ import annotations + +from typing import Any, AnyStr, BinaryIO + +from . import Image, ImageColor, ImageDraw, ImageFont, ImagePath +from ._typing import Coords, StrOrBytesPath + + +class Pen: + """Stores an outline color and width.""" + + def __init__(self, color: str, width: int = 1, opacity: int = 255) -> None: + self.color = ImageColor.getrgb(color) + self.width = width + + +class Brush: + """Stores a fill color""" + + def __init__(self, color: str, opacity: int = 255) -> None: + self.color = ImageColor.getrgb(color) + + +class Font: + """Stores a TrueType font and color""" + + def __init__( + self, color: str, file: StrOrBytesPath | BinaryIO, size: float = 12 + ) -> None: + # 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: Image.Image | str, + size: tuple[int, int] | list[int] | None = None, + color: float | tuple[float, ...] | str | None = None, + ) -> None: + if isinstance(image, str): + if size is None: + msg = "If image argument is mode string, size must be a list or tuple" + raise ValueError(msg) + image = Image.new(image, size, color) + self.draw = ImageDraw.Draw(image) + self.image = image + self.transform: tuple[float, float, float, float, float, float] | None = None + + def flush(self) -> Image.Image: + return self.image + + def render( + self, + op: str, + xy: Coords, + pen: Pen | Brush | None, + brush: Brush | Pen | None = None, + **kwargs: Any, + ) -> 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: + path = ImagePath.Path(xy) + path.transform(self.transform) + xy = path + # render the item + if op in ("arc", "line"): + kwargs.setdefault("fill", outline) + else: + kwargs.setdefault("fill", fill) + kwargs.setdefault("outline", outline) + if op == "line": + kwargs.setdefault("width", width) + getattr(self.draw, op)(xy, **kwargs) + + def settransform(self, offset: tuple[float, float]) -> None: + """Sets a transformation offset.""" + (xoffset, yoffset) = offset + self.transform = (1, 0, xoffset, 0, 1, yoffset) + + def arc( + self, + xy: Coords, + pen: Pen | Brush | None, + start: float, + end: float, + *options: Any, + ) -> None: + """ + 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, pen, *options, start=start, end=end) + + def chord( + self, + xy: Coords, + pen: Pen | Brush | None, + start: float, + end: float, + *options: Any, + ) -> None: + """ + 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, pen, *options, start=start, end=end) + + def ellipse(self, xy: Coords, pen: Pen | Brush | None, *options: Any) -> None: + """ + Draws an ellipse inside the given bounding box. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.ellipse` + """ + self.render("ellipse", xy, pen, *options) + + def line(self, xy: Coords, pen: Pen | Brush | None, *options: Any) -> None: + """ + Draws a line between the coordinates in the ``xy`` list. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.line` + """ + self.render("line", xy, pen, *options) + + def pieslice( + self, + xy: Coords, + pen: Pen | Brush | None, + start: float, + end: float, + *options: Any, + ) -> None: + """ + 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, pen, *options, start=start, end=end) + + def polygon(self, xy: Coords, pen: Pen | Brush | None, *options: Any) -> None: + """ + 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, pen, *options) + + def rectangle(self, xy: Coords, pen: Pen | Brush | None, *options: Any) -> None: + """ + Draws a rectangle. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.rectangle` + """ + self.render("rectangle", xy, pen, *options) + + def text(self, xy: tuple[float, float], text: AnyStr, font: Font) -> None: + """ + Draws the string at the given position. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.text` + """ + if self.transform: + path = ImagePath.Path(xy) + path.transform(self.transform) + xy = path + self.draw.text(xy, text, font=font.font, fill=font.color) + + def textbbox( + self, xy: tuple[float, float], text: AnyStr, font: Font + ) -> tuple[float, float, float, float]: + """ + Returns bounding box (in pixels) of given text. + + :return: ``(left, top, right, bottom)`` bounding box + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.textbbox` + """ + if self.transform: + path = ImagePath.Path(xy) + path.transform(self.transform) + xy = path + return self.draw.textbbox(xy, text, font=font.font) + + def textlength(self, text: AnyStr, font: Font) -> float: + """ + Returns length (in pixels) of given text. + This is the amount by which following text should be offset. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.textlength` + """ + return self.draw.textlength(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 0000000..0e7e6dd --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageEnhance.py @@ -0,0 +1,113 @@ +# +# 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 __future__ import annotations + +from . import Image, ImageFilter, ImageStat + + +class _Enhance: + image: Image.Image + degenerate: Image.Image + + def enhance(self, factor: float) -> Image.Image: + """ + 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: Image.Image) -> None: + self.image = image + self.intermediate_mode = "L" + if "A" in image.getbands(): + self.intermediate_mode = "LA" + + if self.intermediate_mode != image.mode: + image = image.convert(self.intermediate_mode).convert(image.mode) + self.degenerate = image + + +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 gray image. A factor of 1.0 gives the original image. + """ + + def __init__(self, image: Image.Image) -> None: + self.image = image + if image.mode != "L": + image = image.convert("L") + mean = int(ImageStat.Stat(image).mean[0] + 0.5) + self.degenerate = Image.new("L", image.size, mean) + if self.degenerate.mode != self.image.mode: + self.degenerate = self.degenerate.convert(self.image.mode) + + if "A" in self.image.getbands(): + self.degenerate.putalpha(self.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: Image.Image) -> None: + 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: Image.Image) -> None: + 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 0000000..5d0f87a --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageFile.py @@ -0,0 +1,832 @@ +# +# 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. +# +from __future__ import annotations + +import abc +import io +import itertools +import os +import struct +import sys +from typing import IO, TYPE_CHECKING, Any, NamedTuple, cast + +from . import Image +from ._deprecate import deprecate +from ._util import is_path + +if TYPE_CHECKING: + from ._typing import StrOrBytesPath + +MAXBLOCK = 65536 + +SAFEBLOCK = 1024 * 1024 + +LOAD_TRUNCATED_IMAGES = False +"""Whether or not to load truncated image files. User code may change this.""" + +ERRORS = { + -1: "image buffer overrun error", + -2: "decoding error", + -3: "unknown error", + -8: "bad configuration", + -9: "out of memory error", +} +""" +Dict of known error codes returned from :meth:`.PyDecoder.decode`, +:meth:`.PyEncoder.encode` :meth:`.PyEncoder.encode_to_pyfd` and +:meth:`.PyEncoder.encode_to_file`. +""" + + +# +# -------------------------------------------------------------------- +# Helpers + + +def _get_oserror(error: int, *, encoder: bool) -> OSError: + try: + msg = Image.core.getcodecstatus(error) + except AttributeError: + msg = ERRORS.get(error) + if not msg: + msg = f"{'encoder' if encoder else 'decoder'} error {error}" + msg += f" when {'writing' if encoder else 'reading'} image file" + return OSError(msg) + + +def raise_oserror(error: int) -> OSError: + deprecate( + "raise_oserror", + 12, + action="It is only useful for translating error codes returned by a codec's " + "decode() method, which ImageFile already does automatically.", + ) + raise _get_oserror(error, encoder=False) + + +def _tilesort(t: _Tile) -> int: + # sort on offset + return t[2] + + +class _Tile(NamedTuple): + codec_name: str + extents: tuple[int, int, int, int] | None + offset: int = 0 + args: tuple[Any, ...] | str | None = None + + +# +# -------------------------------------------------------------------- +# ImageFile base class + + +class ImageFile(Image.Image): + """Base class for image file format handlers.""" + + def __init__( + self, fp: StrOrBytesPath | IO[bytes], filename: str | bytes | None = None + ) -> None: + super().__init__() + + self._min_frame = 0 + + self.custom_mimetype: str | None = None + + self.tile: list[_Tile] = [] + """ A list of tile descriptors """ + + self.readonly = 1 # until we know better + + self.decoderconfig: tuple[Any, ...] = () + self.decodermaxblock = MAXBLOCK + + if is_path(fp): + # filename + self.fp = open(fp, "rb") + self.filename = os.fspath(fp) + self._exclusive_fp = True + else: + # stream + self.fp = cast(IO[bytes], fp) + self.filename = filename if filename is not None else "" + # can be overridden + self._exclusive_fp = False + + 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 or self.size[1] <= 0: + msg = "not identified by this driver" + raise SyntaxError(msg) + except BaseException: + # close the file only if we have opened it this constructor + if self._exclusive_fp: + self.fp.close() + raise + + def _open(self) -> None: + pass + + def get_format_mimetype(self) -> str | None: + if self.custom_mimetype: + return self.custom_mimetype + if self.format is not None: + return Image.MIME.get(self.format.upper()) + return None + + def __setstate__(self, state: list[Any]) -> None: + self.tile = [] + super().__setstate__(state) + + def verify(self) -> None: + """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) -> Image.core.PixelAccess | None: + """Load image data based on tile list""" + + if not self.tile and self._im is None: + msg = "cannot load this image" + raise OSError(msg) + + pixel = Image.Image.load(self) + if not self.tile: + return pixel + + self.map: mmap.mmap | None = 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 + if hasattr(self, "load_read"): + read = self.load_read + # don't use mmap if there are custom read/seek functions + use_mmap = False + else: + read = self.fp.read + + if hasattr(self, "load_seek"): + seek = self.load_seek + use_mmap = False + else: + seek = self.fp.seek + + if use_mmap: + # try memory mapping + decoder_name, extents, offset, args = self.tile[0] + if isinstance(args, str): + args = (args, 0, 1) + if ( + decoder_name == "raw" + and isinstance(args, tuple) + and len(args) >= 3 + and args[0] == self.mode + and args[0] in Image._MAPMODES + ): + try: + # use mmap, if possible + import mmap + + with open(self.filename) as fp: + self.map = mmap.mmap(fp.fileno(), 0, access=mmap.ACCESS_READ) + if offset + self.size[1] * args[1] > self.map.size(): + msg = "buffer is not large enough" + raise OSError(msg) + 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) + + # FIXME: This is a hack to handle TIFF's JpegTables tag. + prefix = getattr(self, "tile_prefix", b"") + + # Remove consecutive duplicates that only differ by their offset + self.tile = [ + list(tiles)[-1] + for _, tiles in itertools.groupby( + self.tile, lambda tile: (tile[0], tile[1], tile[3]) + ) + ] + for decoder_name, extents, offset, args in self.tile: + seek(offset) + decoder = Image._getdecoder( + self.mode, decoder_name, args, self.decoderconfig + ) + try: + decoder.setimage(self.im, extents) + if decoder.pulls_fd: + decoder.setfd(self.fp) + err_code = decoder.decode(b"")[1] + 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: + msg = "image file is truncated" + raise OSError(msg) from e + + if not s: # truncated jpeg + if LOAD_TRUNCATED_IMAGES: + break + else: + msg = ( + "image file is truncated " + f"({len(b)} bytes not processed)" + ) + raise OSError(msg) + + 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 _get_oserror(err_code, encoder=False) + + return Image.Image.load(self) + + def load_prepare(self) -> None: + # create image memory if necessary + if self._im is None: + self.im = Image.core.new(self.mode, self.size) + # create palette (optional) + if self.mode == "P": + Image.Image.load(self) + + def load_end(self) -> None: + # may be overridden + pass + + # may be defined for contained formats + # def load_seek(self, pos: int) -> None: + # pass + + # may be defined for blocked formats (e.g. PNG) + # def load_read(self, read_bytes: int) -> bytes: + # pass + + def _seek_check(self, frame: int) -> bool: + 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 >= getattr(self, "n_frames") + self._min_frame + ) + ): + msg = "attempt to seek outside sequence" + raise EOFError(msg) + + return self.tell() != frame + + +class StubHandler: + def open(self, im: StubImageFile) -> None: + pass + + @abc.abstractmethod + def load(self, im: StubImageFile) -> Image.Image: + pass + + +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) -> None: + msg = "StubImageFile subclass must implement _open" + raise NotImplementedError(msg) + + def load(self) -> Image.core.PixelAccess | None: + loader = self._load() + if loader is None: + msg = f"cannot find loader for this {self.format} file" + raise OSError(msg) + image = loader.load(self) + assert image is not None + # become the other object (!) + self.__class__ = image.__class__ # type: ignore[assignment] + self.__dict__ = image.__dict__ + return image.load() + + def _load(self) -> StubHandler | None: + """(Hook) Find actual image loader.""" + msg = "StubImageFile subclass must implement _load" + raise NotImplementedError(msg) + + +class Parser: + """ + Incremental image parser. This class implements the standard + feed/close consumer interface. + """ + + incremental = None + image: Image.Image | None = None + data: bytes | None = None + decoder: Image.core.ImagingDecoder | PyDecoder | None = None + offset = 0 + finished = 0 + + def reset(self) -> None: + """ + (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: bytes) -> None: + """ + (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 _get_oserror(e, encoder=False) + 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: + 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) -> Parser: + return self + + def __exit__(self, *args: object) -> None: + self.close() + + def close(self) -> Image.Image: + """ + (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: + msg = "image was incomplete" + raise OSError(msg) + if not self.image: + msg = "cannot parse this image" + raise OSError(msg) + 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: Image.Image, fp: IO[bytes], tile: list[_Tile], bufsize: int = 0) -> None: + """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 + try: + fh = fp.fileno() + fp.flush() + _encode_tile(im, fp, tile, bufsize, fh) + except (AttributeError, io.UnsupportedOperation) as exc: + _encode_tile(im, fp, tile, bufsize, None, exc) + if hasattr(fp, "flush"): + fp.flush() + + +def _encode_tile( + im: Image.Image, + fp: IO[bytes], + tile: list[_Tile], + bufsize: int, + fh: int | None, + exc: BaseException | None = None, +) -> None: + for encoder_name, extents, offset, args in tile: + if offset > 0: + fp.seek(offset) + encoder = Image._getencoder(im.mode, encoder_name, args, im.encoderconfig) + try: + encoder.setimage(im.im, extents) + if encoder.pushes_fd: + encoder.setfd(fp) + errcode = encoder.encode_to_pyfd()[1] + else: + if exc: + # compress to Python file-compatible object + while True: + errcode, data = encoder.encode(bufsize)[1:] + fp.write(data) + if errcode: + break + else: + # slight speedup: compress to real file object + assert fh is not None + errcode = encoder.encode_to_file(fh, bufsize) + if errcode < 0: + raise _get_oserror(errcode, encoder=True) from exc + finally: + encoder.cleanup() + + +def _safe_read(fp: IO[bytes], size: int) -> bytes: + """ + 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 size bytes of data. + + Raises an OSError if the file is truncated and the read cannot be completed + + """ + if size <= 0: + return b"" + if size <= SAFEBLOCK: + data = fp.read(size) + if len(data) < size: + msg = "Truncated File Read" + raise OSError(msg) + return data + blocks: list[bytes] = [] + remaining_size = size + while remaining_size > 0: + block = fp.read(min(remaining_size, SAFEBLOCK)) + if not block: + break + blocks.append(block) + remaining_size -= len(block) + if sum(len(block) for block in blocks) < size: + msg = "Truncated File Read" + raise OSError(msg) + return b"".join(blocks) + + +class PyCodecState: + def __init__(self) -> None: + self.xsize = 0 + self.ysize = 0 + self.xoff = 0 + self.yoff = 0 + + def extents(self) -> tuple[int, int, int, int]: + return self.xoff, self.yoff, self.xoff + self.xsize, self.yoff + self.ysize + + +class PyCodec: + fd: IO[bytes] | None + + def __init__(self, mode: str, *args: Any) -> None: + self.im: Image.core.ImagingCore | None = None + self.state = PyCodecState() + self.fd = None + self.mode = mode + self.init(args) + + def init(self, args: tuple[Any, ...]) -> None: + """ + Override to perform codec specific initialization + + :param args: Tuple of arg items from the tile entry + :returns: None + """ + self.args = args + + def cleanup(self) -> None: + """ + Override to perform codec specific cleanup + + :returns: None + """ + pass + + def setfd(self, fd: IO[bytes]) -> None: + """ + 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: Image.core.ImagingCore, + extents: tuple[int, int, int, int] | None = None, + ) -> None: + """ + Called from ImageFile to set the core output image for the codec + + :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: + msg = "Size cannot be negative" + raise ValueError(msg) + + if ( + self.state.xsize + self.state.xoff > self.im.size[0] + or self.state.ysize + self.state.yoff > self.im.size[1] + ): + msg = "Tile cannot extend outside image" + raise ValueError(msg) + + +class PyDecoder(PyCodec): + """ + Python implementation of a format decoder. Override this class and + add the decoding logic in the :meth:`decode` method. + + See :ref:`Writing Your Own File Codec in Python` + """ + + _pulls_fd = False + + @property + def pulls_fd(self) -> bool: + return self._pulls_fd + + def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]: + """ + 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 -1 for the bytes consumed. + Err codes are from :data:`.ImageFile.ERRORS`. + """ + msg = "unavailable in base decoder" + raise NotImplementedError(msg) + + def set_as_raw( + self, data: bytes, rawmode: str | None = None, extra: tuple[Any, ...] = () + ) -> 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 + :param extra: Extra arguments for the decoder. + :returns: None + """ + + if not rawmode: + rawmode = self.mode + d = Image._getdecoder(self.mode, "raw", rawmode, extra) + assert self.im is not None + d.setimage(self.im, self.state.extents()) + s = d.decode(data) + + if s[0] >= 0: + msg = "not enough image data" + raise ValueError(msg) + if s[1] != 0: + msg = "cannot decode image data" + raise ValueError(msg) + + +class PyEncoder(PyCodec): + """ + Python implementation of a format encoder. Override this class and + add the decoding logic in the :meth:`encode` method. + + See :ref:`Writing Your Own File Codec in Python` + """ + + _pushes_fd = False + + @property + def pushes_fd(self) -> bool: + return self._pushes_fd + + def encode(self, bufsize: int) -> tuple[int, int, bytes]: + """ + Override to perform the encoding process. + + :param bufsize: Buffer size. + :returns: A tuple of ``(bytes encoded, errcode, bytes)``. + If finished with encoding return 1 for the error code. + Err codes are from :data:`.ImageFile.ERRORS`. + """ + msg = "unavailable in base encoder" + raise NotImplementedError(msg) + + def encode_to_pyfd(self) -> tuple[int, int]: + """ + If ``pushes_fd`` is ``True``, then this method will be used, + and ``encode()`` will only be called once. + + :returns: A tuple of ``(bytes consumed, errcode)``. + Err codes are from :data:`.ImageFile.ERRORS`. + """ + if not self.pushes_fd: + return 0, -8 # bad configuration + bytes_consumed, errcode, data = self.encode(0) + if data: + assert self.fd is not None + self.fd.write(data) + return bytes_consumed, errcode + + def encode_to_file(self, fh: int, bufsize: int) -> int: + """ + :param fh: File handle. + :param bufsize: Buffer size. + + :returns: If finished successfully, return 0. + Otherwise, return an error code. Err codes are from + :data:`.ImageFile.ERRORS`. + """ + errcode = 0 + while errcode == 0: + status, errcode, buf = self.encode(bufsize) + if status > 0: + os.write(fh, buf[status:]) + return errcode diff --git a/venv/Lib/site-packages/PIL/ImageFilter.py b/venv/Lib/site-packages/PIL/ImageFilter.py new file mode 100644 index 0000000..b350e56 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageFilter.py @@ -0,0 +1,605 @@ +# +# 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. +# +from __future__ import annotations + +import abc +import functools +from collections.abc import Sequence +from types import ModuleType +from typing import TYPE_CHECKING, Any, Callable, cast + +if TYPE_CHECKING: + from . import _imaging + from ._typing import NumpyArray + + +class Filter: + @abc.abstractmethod + def filter(self, image: _imaging.ImagingCore) -> _imaging.ImagingCore: + pass + + +class MultibandFilter(Filter): + pass + + +class BuiltinFilter(MultibandFilter): + filterargs: tuple[Any, ...] + + def filter(self, image: _imaging.ImagingCore) -> _imaging.ImagingCore: + if image.mode == "P": + msg = "cannot filter palette images" + raise ValueError(msg) + return image.filter(*self.filterargs) + + +class Kernel(BuiltinFilter): + """ + Create a convolution kernel. This only supports 3x3 and 5x5 integer and floating + point kernels. + + Kernels can only be applied to "L" and "RGB" images. + + :param size: Kernel size, given as (width, height). This must be (3,3) or (5,5). + :param kernel: A sequence containing kernel weights. The kernel will be flipped + vertically before being applied to the image. + :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: tuple[int, int], + kernel: Sequence[float], + scale: float | None = None, + offset: float = 0, + ) -> None: + 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): + msg = "not enough coefficients in kernel" + raise ValueError(msg) + 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: int, rank: int) -> None: + self.size = size + self.rank = rank + + def filter(self, image: _imaging.ImagingCore) -> _imaging.ImagingCore: + if image.mode == "P": + msg = "cannot filter palette images" + raise ValueError(msg) + 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: int = 3) -> None: + 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: int = 3) -> None: + 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: int = 3) -> None: + 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: int = 3) -> None: + self.size = size + + def filter(self, image: _imaging.ImagingCore) -> _imaging.ImagingCore: + return image.modefilter(self.size) + + +class GaussianBlur(MultibandFilter): + """Blurs the image with a sequence of extended box filters, which + approximates a Gaussian kernel. For details on accuracy see + + + :param radius: Standard deviation of the Gaussian kernel. Either a sequence of two + numbers for x and y, or a single number for both. + """ + + name = "GaussianBlur" + + def __init__(self, radius: float | Sequence[float] = 2) -> None: + self.radius = radius + + def filter(self, image: _imaging.ImagingCore) -> _imaging.ImagingCore: + xy = self.radius + if isinstance(xy, (int, float)): + xy = (xy, xy) + if xy == (0, 0): + return image.copy() + return image.gaussian_blur(xy) + + +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 a direction. Either a sequence of two numbers for + x and y, or a single number for both. + + 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: float | Sequence[float]) -> None: + xy = radius if isinstance(radius, (tuple, list)) else (radius, radius) + if xy[0] < 0 or xy[1] < 0: + msg = "radius must be >= 0" + raise ValueError(msg) + self.radius = radius + + def filter(self, image: _imaging.ImagingCore) -> _imaging.ImagingCore: + xy = self.radius + if isinstance(xy, (int, float)): + xy = (xy, xy) + if xy == (0, 0): + return image.copy() + return image.box_blur(xy) + + +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 + + """ + + name = "UnsharpMask" + + def __init__( + self, radius: float = 2, percent: int = 150, threshold: int = 3 + ) -> None: + self.radius = radius + self.percent = percent + self.threshold = threshold + + def filter(self, image: _imaging.ImagingCore) -> _imaging.ImagingCore: + 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: int | tuple[int, int, int], + table: Sequence[float] | Sequence[Sequence[int]] | NumpyArray, + channels: int = 3, + target_mode: str | None = None, + **kwargs: bool, + ) -> None: + if channels not in (3, 4): + msg = "Only 3 or 4 output channels are supported" + raise ValueError(msg) + 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 + + numpy: ModuleType | None = None + if hasattr(table, "shape"): + try: + import numpy + except ImportError: + pass + + if numpy and isinstance(table, numpy.ndarray): + numpy_table: NumpyArray = table + if copy_table: + numpy_table = numpy_table.copy() + + if numpy_table.shape in [ + (items * channels,), + (items, channels), + (size[2], size[1], size[0], channels), + ]: + table = numpy_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)): + raw_table = cast(Sequence[Sequence[int]], table) + flat_table: list[int] = [] + for pixel in raw_table: + if len(pixel) != channels: + msg = ( + "The elements of the table should " + f"have a length of {channels}." + ) + raise ValueError(msg) + flat_table.extend(pixel) + table = flat_table + + if wrong_size or len(table) != items * channels: + msg = ( + "The table should have either channels * size**3 float items " + "or size**3 items of channels-sized tuples with floats. " + f"Table should be: {channels}x{size[0]}x{size[1]}x{size[2]}. " + f"Actual length: {len(table)}" + ) + raise ValueError(msg) + self.table = table + + @staticmethod + def _check_size(size: Any) -> tuple[int, int, int]: + try: + _, _, _ = size + except ValueError as e: + msg = "Size should be either an integer or a tuple of three integers." + raise ValueError(msg) from e + except TypeError: + size = (size, size, size) + size = tuple(int(x) for x in size) + for size_1d in size: + if not 2 <= size_1d <= 65: + msg = "Size should be in [2, 65] range." + raise ValueError(msg) + return size + + @classmethod + def generate( + cls, + size: int | tuple[int, int, int], + callback: Callable[[float, float, float], tuple[float, ...]], + channels: int = 3, + target_mode: str | None = None, + ) -> Color3DLUT: + """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. + """ + size_1d, size_2d, size_3d = cls._check_size(size) + if channels not in (3, 4): + msg = "Only 3 or 4 output channels are supported" + raise ValueError(msg) + + table: list[float] = [0] * (size_1d * size_2d * size_3d * channels) + idx_out = 0 + for b in range(size_3d): + for g in range(size_2d): + for r in range(size_1d): + table[idx_out : idx_out + channels] = callback( + r / (size_1d - 1), g / (size_2d - 1), b / (size_3d - 1) + ) + idx_out += channels + + return cls( + (size_1d, size_2d, size_3d), + table, + channels=channels, + target_mode=target_mode, + _copy_table=False, + ) + + def transform( + self, + callback: Callable[..., tuple[float, ...]], + with_normals: bool = False, + channels: int | None = None, + target_mode: str | None = None, + ) -> Color3DLUT: + """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): + msg = "Only 3 or 4 output channels are supported" + raise ValueError(msg) + ch_in = self.channels + ch_out = channels or ch_in + size_1d, size_2d, size_3d = self.size + + table: list[float] = [0] * (size_1d * size_2d * size_3d * ch_out) + idx_in = 0 + idx_out = 0 + for b in range(size_3d): + for g in range(size_2d): + for r in range(size_1d): + values = self.table[idx_in : idx_in + ch_in] + if with_normals: + values = callback( + r / (size_1d - 1), + g / (size_2d - 1), + b / (size_3d - 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) -> str: + r = [ + f"{self.__class__.__name__} from {self.table.__class__.__name__}", + "size={:d}x{:d}x{:d}".format(*self.size), + f"channels={self.channels:d}", + ] + if self.mode: + r.append(f"target_mode={self.mode}") + return "<{}>".format(" ".join(r)) + + def filter(self, image: _imaging.ImagingCore) -> _imaging.ImagingCore: + from . import Image + + return image.color_lut_3d( + self.mode or image.mode, + Image.Resampling.BILINEAR, + 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 0000000..d8c2655 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageFont.py @@ -0,0 +1,1338 @@ +# +# 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. +# + +from __future__ import annotations + +import base64 +import os +import sys +import warnings +from enum import IntEnum +from io import BytesIO +from types import ModuleType +from typing import IO, TYPE_CHECKING, Any, BinaryIO, TypedDict, cast + +from . import Image, features +from ._typing import StrOrBytesPath +from ._util import DeferredError, is_path + +if TYPE_CHECKING: + from . import ImageFile + from ._imaging import ImagingFont + from ._imagingft import Font + + +class Axis(TypedDict): + minimum: int | None + default: int | None + maximum: int | None + name: bytes | None + + +class Layout(IntEnum): + BASIC = 0 + RAQM = 1 + + +MAX_STRING_LENGTH = 1_000_000 + + +core: ModuleType | DeferredError +try: + from . import _imagingft as core +except ImportError as ex: + core = DeferredError.new(ex) + + +def _string_length_check(text: str | bytes | bytearray) -> None: + if MAX_STRING_LENGTH is not None and len(text) > MAX_STRING_LENGTH: + msg = "too many characters in string" + raise ValueError(msg) + + +# 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""" + + font: ImagingFont + + def _load_pilfont(self, filename: str) -> None: + with open(filename, "rb") as fp: + image: ImageFile.ImageFile | None = None + root = os.path.splitext(filename)[0] + + for ext in (".png", ".gif", ".pbm"): + if image: + image.close() + try: + fullname = root + ext + image = Image.open(fullname) + except Exception: + pass + else: + if image and image.mode in ("1", "L"): + break + else: + if image: + image.close() + + msg = f"cannot find glyph data file {root}.{{gif|pbm|png}}" + raise OSError(msg) + + self.file = fullname + + self._load_pilfont_data(fp, image) + image.close() + + def _load_pilfont_data(self, file: IO[bytes], image: Image.Image) -> None: + # read PILfont header + if file.readline() != b"PILfont\n": + msg = "Not a PILfont file" + raise SyntaxError(msg) + 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"): + msg = "invalid font image mode" + raise TypeError(msg) + + image.load() + + self.font = Image.core.font(image.im, data) + + def getmask( + self, text: str | bytes, mode: str = "", *args: Any, **kwargs: Any + ) -> Image.core.ImagingCore: + """ + 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. + """ + _string_length_check(text) + Image._decompression_bomb_check(self.font.getsize(text)) + return self.font.getmask(text, mode) + + def getbbox( + self, text: str | bytes | bytearray, *args: Any, **kwargs: Any + ) -> tuple[int, int, int, int]: + """ + Returns bounding box (in pixels) of given text. + + .. versionadded:: 9.2.0 + + :param text: Text to render. + + :return: ``(left, top, right, bottom)`` bounding box + """ + _string_length_check(text) + width, height = self.font.getsize(text) + return 0, 0, width, height + + def getlength( + self, text: str | bytes | bytearray, *args: Any, **kwargs: Any + ) -> int: + """ + Returns length (in pixels) of given text. + This is the amount by which following text should be offset. + + .. versionadded:: 9.2.0 + """ + _string_length_check(text) + width, height = self.font.getsize(text) + return width + + +## +# Wrapper for FreeType fonts. Application code should use the +# truetype factory function to create font objects. + + +class FreeTypeFont: + """FreeType font wrapper (requires _imagingft service)""" + + font: Font + font_bytes: bytes + + def __init__( + self, + font: StrOrBytesPath | BinaryIO, + size: float = 10, + index: int = 0, + encoding: str = "", + layout_engine: Layout | None = None, + ) -> None: + # FIXME: use service provider instead + + if isinstance(core, DeferredError): + raise core.ex + + if size <= 0: + msg = f"font size must be greater than 0, not {size}" + raise ValueError(msg) + + self.path = font + self.size = size + self.index = index + self.encoding = encoding + + try: + from packaging.version import parse as parse_version + except ImportError: + pass + else: + if freetype_version := features.version_module("freetype2"): + if parse_version(freetype_version) < parse_version("2.9.1"): + warnings.warn( + "Support for FreeType 2.9.0 is deprecated and will be removed " + "in Pillow 12 (2025-10-15). Please upgrade to FreeType 2.9.1 " + "or newer, preferably FreeType 2.10.4 which fixes " + "CVE-2020-15999.", + DeprecationWarning, + ) + + 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: + warnings.warn( + "Raqm layout was requested, but Raqm is not available. " + "Falling back to basic layout." + ) + layout_engine = Layout.BASIC + + self.layout_engine = layout_engine + + def load_from_bytes(f: IO[bytes]) -> None: + self.font_bytes = f.read() + self.font = core.getfont( + "", size, index, encoding, self.font_bytes, layout_engine + ) + + if is_path(font): + font = os.fspath(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(cast(IO[bytes], font)) + + def __getstate__(self) -> list[Any]: + return [self.path, self.size, self.index, self.encoding, self.layout_engine] + + def __setstate__(self, state: list[Any]) -> None: + path, size, index, encoding, layout_engine = state + FreeTypeFont.__init__(self, path, size, index, encoding, layout_engine) + + def getname(self) -> tuple[str | None, str | None]: + """ + :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) -> tuple[int, int]: + """ + :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 getlength( + self, + text: str | bytes, + mode: str = "", + direction: str | None = None, + features: list[str] | None = None, + language: str | None = None, + ) -> float: + """ + Returns length (in pixels with 1/64 precision) of given text when rendered + in font with provided direction, features, and language. + + This is the amount by which following text should be offset. + Text bounding box may extend past the length in some fonts, + e.g. when using italics or accents. + + The result is returned as a float; it is a whole number if using basic layout. + + Note that the sum of two lengths may not equal the length of a concatenated + string due to kerning. If you need to adjust for kerning, include the following + character and subtract its length. + + For example, instead of :: + + hello = font.getlength("Hello") + world = font.getlength("World") + hello_world = hello + world # not adjusted for kerning + assert hello_world == font.getlength("HelloWorld") # may fail + + use :: + + hello = font.getlength("HelloW") - font.getlength("W") # adjusted for kerning + world = font.getlength("World") + hello_world = hello + world # adjusted for kerning + assert hello_world == font.getlength("HelloWorld") # True + + or disable kerning with (requires libraqm) :: + + hello = draw.textlength("Hello", font, features=["-kern"]) + world = draw.textlength("World", font, features=["-kern"]) + hello_world = hello + world # kerning is disabled, no need to adjust + assert hello_world == draw.textlength("HelloWorld", font, features=["-kern"]) + + .. versionadded:: 8.0.0 + + :param text: Text to measure. + :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. + + :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 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://learn.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. + + :return: Either width for horizontal text, or height for vertical text. + """ + _string_length_check(text) + return self.font.getlength(text, mode, direction, features, language) / 64 + + def getbbox( + self, + text: str | bytes, + mode: str = "", + direction: str | None = None, + features: list[str] | None = None, + language: str | None = None, + stroke_width: float = 0, + anchor: str | None = None, + ) -> tuple[float, float, float, float]: + """ + Returns bounding box (in pixels) of given text relative to given anchor + when rendered in font with provided direction, features, and language. + + Use :py:meth:`getlength()` to get the offset of following text with + 1/64 pixel precision. The bounding box includes extra margins for + some fonts, e.g. italics or accents. + + .. versionadded:: 8.0.0 + + :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. + + :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 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://learn.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. + + :param stroke_width: The width of the text stroke. + + :param anchor: The text anchor alignment. Determines the relative location of + the anchor to the text. The default alignment is top left, + specifically ``la`` for horizontal text and ``lt`` for + vertical text. See :ref:`text-anchors` for details. + + :return: ``(left, top, right, bottom)`` bounding box + """ + _string_length_check(text) + size, offset = self.font.getsize( + text, mode, direction, features, language, anchor + ) + left, top = offset[0] - stroke_width, offset[1] - stroke_width + width, height = size[0] + 2 * stroke_width, size[1] + 2 * stroke_width + return left, top, left + width, top + height + + def getmask( + self, + text: str | bytes, + mode: str = "", + direction: str | None = None, + features: list[str] | None = None, + language: str | None = None, + stroke_width: float = 0, + anchor: str | None = None, + ink: int = 0, + start: tuple[float, float] | None = None, + ) -> Image.core.ImagingCore: + """ + Create a bitmap for the text. + + If the font uses antialiasing, the bitmap should have mode ``L`` and use a + maximum value of 255. If the font has embedded color data, the bitmap + should have mode ``RGBA``. 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://learn.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 + + :param anchor: The text anchor alignment. Determines the relative location of + the anchor to the text. The default alignment is top left, + specifically ``la`` for horizontal text and ``lt`` for + vertical text. See :ref:`text-anchors` for details. + + .. versionadded:: 8.0.0 + + :param ink: Foreground ink for rendering in RGBA mode. + + .. versionadded:: 8.0.0 + + :param start: Tuple of horizontal and vertical offset, as text may render + differently when starting at fractional coordinates. + + .. versionadded:: 9.4.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, + anchor=anchor, + ink=ink, + start=start, + )[0] + + def getmask2( + self, + text: str | bytes, + mode: str = "", + direction: str | None = None, + features: list[str] | None = None, + language: str | None = None, + stroke_width: float = 0, + anchor: str | None = None, + ink: int = 0, + start: tuple[float, float] | None = None, + *args: Any, + **kwargs: Any, + ) -> tuple[Image.core.ImagingCore, tuple[int, int]]: + """ + Create a bitmap for the text. + + If the font uses antialiasing, the bitmap should have mode ``L`` and use a + maximum value of 255. If the font has embedded color data, the bitmap + should have mode ``RGBA``. 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://learn.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 + + :param anchor: The text anchor alignment. Determines the relative location of + the anchor to the text. The default alignment is top left, + specifically ``la`` for horizontal text and ``lt`` for + vertical text. See :ref:`text-anchors` for details. + + .. versionadded:: 8.0.0 + + :param ink: Foreground ink for rendering in RGBA mode. + + .. versionadded:: 8.0.0 + + :param start: Tuple of horizontal and vertical offset, as text may render + differently when starting at fractional coordinates. + + .. versionadded:: 9.4.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 + """ + _string_length_check(text) + if start is None: + start = (0, 0) + + def fill(width: int, height: int) -> Image.core.ImagingCore: + size = (width, height) + Image._decompression_bomb_check(size) + return Image.core.fill("RGBA" if mode == "RGBA" else "L", size) + + return self.font.render( + text, + fill, + mode, + direction, + features, + language, + stroke_width, + anchor, + ink, + start[0], + start[1], + ) + + def font_variant( + self, + font: StrOrBytesPath | BinaryIO | None = None, + size: float | None = None, + index: int | None = None, + encoding: str | None = None, + layout_engine: Layout | None = None, + ) -> FreeTypeFont: + """ + 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. + """ + if font is None: + try: + font = BytesIO(self.font_bytes) + except AttributeError: + font = self.path + return FreeTypeFont( + font=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) -> list[bytes]: + """ + :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: + msg = "FreeType 2.9.1 or greater is required" + raise NotImplementedError(msg) from e + return [name.replace(b"\x00", b"") for name in names] + + def set_variation_by_name(self, name: str | bytes) -> None: + """ + :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) + 1 + + 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) -> list[Axis]: + """ + :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: + msg = "FreeType 2.9.1 or greater is required" + raise NotImplementedError(msg) from e + for axis in axes: + if axis["name"]: + axis["name"] = axis["name"].replace(b"\x00", b"") + return axes + + def set_variation_by_axes(self, axes: list[float]) -> None: + """ + :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: + msg = "FreeType 2.9.1 or greater is required" + raise NotImplementedError(msg) from e + + +class TransposedFont: + """Wrapper for writing rotated or mirrored text""" + + def __init__( + self, font: ImageFont | FreeTypeFont, orientation: Image.Transpose | None = 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.Transpose.FLIP_LEFT_RIGHT, Image.Transpose.FLIP_TOP_BOTTOM, + Image.Transpose.ROTATE_90, Image.Transpose.ROTATE_180, or + Image.Transpose.ROTATE_270. + """ + self.font = font + self.orientation = orientation # any 'transpose' argument, or None + + def getmask( + self, text: str | bytes, mode: str = "", *args: Any, **kwargs: Any + ) -> Image.core.ImagingCore: + im = self.font.getmask(text, mode, *args, **kwargs) + if self.orientation is not None: + return im.transpose(self.orientation) + return im + + def getbbox( + self, text: str | bytes, *args: Any, **kwargs: Any + ) -> tuple[int, int, float, float]: + # TransposedFont doesn't support getmask2, move top-left point to (0, 0) + # this has no effect on ImageFont and simulates anchor="lt" for FreeTypeFont + left, top, right, bottom = self.font.getbbox(text, *args, **kwargs) + width = right - left + height = bottom - top + if self.orientation in (Image.Transpose.ROTATE_90, Image.Transpose.ROTATE_270): + return 0, 0, height, width + return 0, 0, width, height + + def getlength(self, text: str | bytes, *args: Any, **kwargs: Any) -> float: + if self.orientation in (Image.Transpose.ROTATE_90, Image.Transpose.ROTATE_270): + msg = "text length is undefined for text rotated by 90 or 270 degrees" + raise ValueError(msg) + return self.font.getlength(text, *args, **kwargs) + + +def load(filename: str) -> ImageFont: + """ + Load a font file. This function loads a font object from the given + bitmap font file, and returns the corresponding font object. For loading TrueType + or OpenType fonts instead, see :py:func:`~PIL.ImageFont.truetype`. + + :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: StrOrBytesPath | BinaryIO, + size: float = 10, + index: int = 0, + encoding: str = "", + layout_engine: Layout | None = None, +) -> FreeTypeFont: + """ + 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. For loading bitmap fonts instead, see :py:func:`~PIL.ImageFont.load` + and :py:func:`~PIL.ImageFont.load_path`. + + Pillow uses FreeType to open font files. On Windows, be aware that FreeType + will keep the file open as long as the FreeTypeFont object exists. Windows + limits the number of files that can be open in C at once to 512, so if many + fonts are opened simultaneously and that limit is approached, an + ``OSError`` may be thrown, reporting that FreeType "cannot open resource". + A workaround would be to copy the file(s) into memory, and open that instead. + + 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, + * :file:`/Library/Fonts/`, :file:`/System/Library/Fonts/` + and :file:`~/Library/Fonts/` on macOS. + * :file:`~/.local/share/fonts`, :file:`/usr/local/share/fonts`, + and :file:`/usr/share/fonts` on Linux; or those specified by + the ``XDG_DATA_HOME`` and ``XDG_DATA_DIRS`` environment variables + for user-installed and system-wide fonts, respectively. + + :param size: The requested size, in pixels. + :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: + :attr:`.ImageFont.Layout.BASIC` or :attr:`.ImageFont.Layout.RAQM`. + If it is available, Raqm layout will be used by default. + Otherwise, basic layout will be used. + + Raqm layout is recommended for all non-English text. If Raqm layout + is not required, basic layout will have better performance. + + 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. + :exception ValueError: If the font size is not greater than zero. + """ + + def freetype(font: StrOrBytesPath | BinaryIO) -> FreeTypeFont: + return FreeTypeFont(font, size, index, encoding, layout_engine) + + try: + return freetype(font) + except OSError: + if not is_path(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"): + data_home = os.environ.get("XDG_DATA_HOME") + if not data_home: + # The freedesktop spec defines the following default directory for + # when XDG_DATA_HOME is unset or empty. This user-level directory + # takes precedence over system-level directories. + data_home = os.path.expanduser("~/.local/share") + xdg_dirs = [data_home] + + data_dirs = os.environ.get("XDG_DATA_DIRS") + if not data_dirs: + # Similarly, defaults are defined for the system-level directories + data_dirs = "/usr/local/share:/usr/share" + xdg_dirs += data_dirs.split(":") + + dirs += [os.path.join(xdg_dir, "fonts") for xdg_dir in xdg_dirs] + 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: str | bytes) -> ImageFont: + """ + 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. + """ + if not isinstance(filename, str): + filename = filename.decode("utf-8") + for directory in sys.path: + try: + return load(os.path.join(directory, filename)) + except OSError: + pass + msg = f'cannot find font file "{filename}" in sys.path' + if os.path.exists(filename): + msg += f', did you mean ImageFont.load("{filename}") instead?' + + raise OSError(msg) + + +def load_default_imagefont() -> ImageFont: + 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 + + +def load_default(size: float | None = None) -> FreeTypeFont | ImageFont: + """If FreeType support is available, load a version of Aileron Regular, + https://dotcolon.net/font/aileron, with a more limited character set. + + Otherwise, load a "better than nothing" font. + + .. versionadded:: 1.1.4 + + :param size: The font size of Aileron Regular. + + .. versionadded:: 10.1.0 + + :return: A font object. + """ + if isinstance(core, ModuleType) or size is not None: + return truetype( + BytesIO( + base64.b64decode( + b""" +AAEAAAAPAIAAAwBwRkZUTYwDlUAAADFoAAAAHEdERUYAqADnAAAo8AAAACRHUE9ThhmITwAAKfgAA +AduR1NVQnHxefoAACkUAAAA4k9TLzJovoHLAAABeAAAAGBjbWFw5lFQMQAAA6gAAAGqZ2FzcP//AA +MAACjoAAAACGdseWYmRXoPAAAGQAAAHfhoZWFkE18ayQAAAPwAAAA2aGhlYQboArEAAAE0AAAAJGh +tdHjjERZ8AAAB2AAAAdBsb2NhuOexrgAABVQAAADqbWF4cAC7AEYAAAFYAAAAIG5hbWUr+h5lAAAk +OAAAA6Jwb3N0D3oPTQAAJ9wAAAEKAAEAAAABGhxJDqIhXw889QALA+gAAAAA0Bqf2QAAAADhCh2h/ +2r/LgOxAyAAAAAIAAIAAAAAAAAAAQAAA8r/GgAAA7j/av9qA7EAAQAAAAAAAAAAAAAAAAAAAHQAAQ +AAAHQAQwAFAAAAAAACAAAAAQABAAAAQAAAAAAAAAADAfoBkAAFAAgCigJYAAAASwKKAlgAAAFeADI +BPgAAAAAFAAAAAAAAAAAAAAcAAAAAAAAAAAAAAABVS1dOAEAAIPsCAwL/GgDIA8oA5iAAAJMAAAAA +AhICsgAAACAAAwH0AAAAAAAAAU0AAADYAAAA8gA5AVMAVgJEAEYCRAA1AuQAKQKOAEAAsAArATsAZ +AE7AB4CMABVAkQAUADc/+EBEgAgANwAJQEv//sCRAApAkQAggJEADwCRAAtAkQAIQJEADkCRAArAk +QAMgJEACwCRAAxANwAJQDc/+ECRABnAkQAUAJEAEQB8wAjA1QANgJ/AB0CcwBkArsALwLFAGQCSwB +kAjcAZALGAC8C2gBkAQgAZAIgADcCYQBkAj8AZANiAGQCzgBkAuEALwJWAGQC3QAvAmsAZAJJADQC +ZAAiAqoAXgJuACADuAAaAnEAGQJFABMCTwAuATMAYgEv//sBJwAiAkQAUAH0ADIBLAApAhMAJAJjA +EoCEQAeAmcAHgIlAB4BIgAVAmcAHgJRAEoA7gA+AOn/8wIKAEoA9wBGA1cASgJRAEoCSgAeAmMASg +JnAB4BSgBKAcsAGAE5ABQCUABCAgIAAQMRAAEB4v/6AgEAAQHOABQBLwBAAPoAYAEvACECRABNA0Y +AJAItAHgBKgAcAkQAUAEsAHQAygAgAi0AOQD3ADYA9wAWAaEANgGhABYCbAAlAYMAeAGDADkA6/9q +AhsAFAIKABUB/QAVAAAAAwAAAAMAAAAcAAEAAAAAAKQAAwABAAAAHAAEAIgAAAAeABAAAwAOAH4Aq +QCrALEAtAC3ALsgGSAdICYgOiBEISL7Av//AAAAIACpAKsAsAC0ALcAuyAYIBwgJiA5IEQhIvsB// +//4/+5/7j/tP+y/7D/reBR4E/gR+A14CzfTwVxAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAEGAAABAAAAAAAAAAECAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAMEBQYHCAkKCwwNDg8QERIT +FBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMT +U5PUFFSU1RVVldYWVpbXF1eX2BhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAA +AAAAAAYnFmAAAAAABlAAAAAAAAAAAAAAAAAAAAAAAAAAAAY2htAAAAAAAAAABrbGlqAAAAAHAAbm9 +ycwBnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmACYAJgAmAD4AUgCCAMoBCgFO +AVwBcgGIAaYBvAHKAdYB6AH2AgwCIAJKAogCpgLWAw4DIgNkA5wDugPUA+gD/AQQBEYEogS8BPoFJ +gVSBWoFgAWwBcoF1gX6BhQGJAZMBmgGiga0BuIHGgdUB2YHkAeiB8AH3AfyCAoIHAgqCDoITghcCG +oIogjSCPoJKglYCXwJwgnqCgIKKApACl4Klgq8CtwLDAs8C1YLjAuyC9oL7gwMDCYMSAxgDKAMrAz +qDQoNTA1mDYQNoA2uDcAN2g3oDfYODA4iDkoOXA5sDnoOnA7EDvwAAAAFAAAAAAH0ArwAAwAGAAkA +DAAPAAAxESERAxMhExcRASELARETAfT6qv6syKr+jgFUqsiqArz9RAGLAP/+1P8B/v3VAP8BLP4CA +P8AAgA5//IAuQKyAAMACwAANyMDMwIyFhQGIiY0oE4MZk84JCQ4JLQB/v3AJDgkJDgAAgBWAeUBPA +LfAAMABwAAEyMnMxcjJzOmRgpagkYKWgHl+vr6AAAAAAIARgAAAf4CsgAbAB8AAAEHMxUjByM3Iwc +jNyM1MzcjNTM3MwczNzMHMxUrAQczAZgdZXEvOi9bLzovWmYdZXEvOi9bLzovWp9bHlsBn4w429vb +2ziMONvb29s4jAAAAAMANf+mAg4DDAAfACYALAAAJRQGBxUjNS4BJzMeARcRLgE0Njc1MxUeARcjJ +icVHgEBFBYXNQ4BExU+ATU0Ag5xWDpgcgRcBz41Xl9oVTpVYwpcC1ttXP6cLTQuM5szOrVRZwlOTQ +ZqVzZECAEAGlukZAlOTQdrUG8O7iNlAQgxNhDlCDj+8/YGOjReAAAAAAUAKf/yArsCvAAHAAsAFQA +dACcAABIyFhQGIiY0EyMBMwQiBhUUFjI2NTQSMhYUBiImNDYiBhUUFjI2NTR5iFBQiFCVVwHAV/5c +OiMjOiPmiFBQiFCxOiMjOiMCvFaSVlaS/ZoCsjIzMC80NC8w/uNWklZWkhozMC80NC8wAAAAAgBA/ +/ICbgLAACIALgAAARUjEQYjIiY1NDY3LgE1NDYzMhcVJiMiBhUUFhcWOwE1MxUFFBYzMjc1IyIHDg +ECbmBcYYOOVkg7R4hsQjY4Q0RNRD4SLDxW/pJUXzksPCkUUk0BgUb+zBVUZ0BkDw5RO1huCkULQzp +COAMBcHDHRz0J/AIHRQAAAAEAKwHlAIUC3wADAAATIycze0YKWgHl+gAAAAABAGT/sAEXAwwACQAA +EzMGEBcjLgE0Nt06dXU6OUBAAwzG/jDGVePs4wAAAAEAHv+wANEDDAAJAAATMx4BFAYHIzYQHjo5Q +EA5OnUDDFXj7ONVxgHQAAAAAQBVAFIB2wHbAA4AAAE3FwcXBycHJzcnNxcnMwEtmxOfcTJjYzJxnx +ObCj4BKD07KYolmZkliik7PbMAAQBQAFUB9AIlAAsAAAEjFSM1IzUzNTMVMwH0tTq1tTq1AR/Kyjj +OzgAAAAAB/+H/iACMAGQABAAANwcjNzOMWlFOXVrS3AAAAQAgAP8A8gE3AAMAABMjNTPy0tIA/zgA +AQAl//IApQByAAcAADYyFhQGIiY0STgkJDgkciQ4JCQ4AAAAAf/7/+IBNALQAAMAABcjEzM5Pvs+H +gLuAAAAAAIAKf/yAhsCwAADAAcAABIgECA2IBAgKQHy/g5gATL+zgLA/TJEAkYAAAAAAQCCAAABlg +KyAAgAAAERIxEHNTc2MwGWVr6SIygCsv1OAldxW1sWAAEAPAAAAg4CwAAZAAA3IRUhNRM+ATU0JiM +iDwEjNz4BMzIWFRQGB7kBUv4x+kI2QTt+EAFWAQp8aGVtSl5GRjEA/0RVLzlLmAoKa3FsUkNxXQAA +AAEALf/yAhYCwAAqAAABHgEVFAYjIi8BMxceATMyNjU0KwE1MzI2NTQmIyIGDwEjNz4BMzIWFRQGA +YxBSZJo2RUBVgEHV0JBUaQREUBUQzc5TQcBVgEKfGhfcEMBbxJbQl1x0AoKRkZHPn9GSD80QUVCCg +pfbGBPOlgAAAACACEAAAIkArIACgAPAAAlIxUjNSE1ATMRMyMRBg8BAiRXVv6qAVZWV60dHLCurq4 +rAdn+QgFLMibzAAABADn/8gIZArIAHQAAATIWFRQGIyIvATMXFjMyNjU0JiMiByMTIRUhBzc2ATNv +d5Fl1RQBVgIad0VSTkVhL1IwAYj+vh8rMAHHgGdtgcUKCoFXTU5bYgGRRvAuHQAAAAACACv/8gITA +sAAFwAjAAABMhYVFAYjIhE0NjMyFh8BIycmIyIDNzYTMjY1NCYjIgYVFBYBLmp7imr0l3RZdAgBXA +IYZ5wKJzU6QVNJSz5SUAHSgWltiQFGxcNlVQoKdv7sPiz+ZF1LTmJbU0lhAAAAAQAyAAACGgKyAAY +AAAEVASMBITUCGv6oXAFL/oECsij9dgJsRgAAAAMALP/xAhgCwAAWACAALAAAAR4BFRQGIyImNTQ2 +Ny4BNTQ2MhYVFAYmIgYVFBYyNjU0AzI2NTQmIyIGFRQWAZQ5S5BmbIpPOjA7ecp5P2F8Q0J8RIVJS +0pLTEtOAW0TXTxpZ2ZqPF0SE1A3VWVlVTdQ/UU0N0RENzT9/ko+Ok1NOj1LAAIAMf/yAhkCwAAXAC +MAAAEyERQGIyImLwEzFxYzMhMHBiMiJjU0NhMyNjU0JiMiBhUUFgEl9Jd0WXQIAVwCGGecCic1SWp +7imo+UlBAQVNJAsD+usXDZVUKCnYBFD4sgWltif5kW1NJYV1LTmIAAAACACX/8gClAiAABwAPAAAS +MhYUBiImNBIyFhQGIiY0STgkJDgkJDgkJDgkAiAkOCQkOP52JDgkJDgAAAAC/+H/iAClAiAABwAMA +AASMhYUBiImNBMHIzczSTgkJDgkaFpSTl4CICQ4JCQ4/mba5gAAAQBnAB4B+AH0AAYAAAENARUlNS +UB+P6qAVb+bwGRAbCmpkbJRMkAAAIAUAC7AfQBuwADAAcAAAEhNSERITUhAfT+XAGk/lwBpAGDOP8 +AOAABAEQAHgHVAfQABgAAARUFNS0BNQHV/m8BVv6qAStEyUSmpkYAAAAAAgAj//IB1ALAABgAIAAA +ATIWFRQHDgEHIz4BNz4BNTQmIyIGByM+ARIyFhQGIiY0AQRibmktIAJWBSEqNig+NTlHBFoDezQ4J +CQ4JALAZ1BjaS03JS1DMD5LLDQ/SUVgcv2yJDgkJDgAAAAAAgA2/5gDFgKYADYAQgAAAQMGFRQzMj +Y1NCYjIg4CFRQWMzI2NxcGIyImNTQ+AjMyFhUUBiMiJwcGIyImNTQ2MzIfATcHNzYmIyIGFRQzMjY +Cej8EJjJJlnBAfGQ+oHtAhjUYg5OPx0h2k06Os3xRWQsVLjY5VHtdPBwJETcJDyUoOkZEJz8B0f74 +EQ8kZl6EkTFZjVOLlyknMVm1pmCiaTq4lX6CSCknTVRmmR8wPdYnQzxuSWVGAAIAHQAAAncCsgAHA +AoAACUjByMTMxMjATMDAcj+UVz4dO5d/sjPZPT0ArL9TgE6ATQAAAADAGQAAAJMArIAEAAbACcAAA +EeARUUBgcGKwERMzIXFhUUJRUzMjc2NTQnJiMTPgE1NCcmKwEVMzIBvkdHZkwiNt7LOSGq/oeFHBt +hahIlSTM+cB8Yj5UWAW8QT0VYYgwFArIEF5Fv1eMED2NfDAL93AU+N24PBP0AAAAAAQAv//ICjwLA +ABsAAAEyFh8BIycmIyIGFRQWMzI/ATMHDgEjIiY1NDYBdX+PCwFWAiKiaHx5ZaIiAlYBCpWBk6a0A +sCAagoKpqN/gaOmCgplhcicn8sAAAIAZAAAAp8CsgAMABkAAAEeARUUBgcGKwERMzITPgE1NCYnJi +sBETMyAY59lJp8IzXN0jUVWmdjWRs5d3I4Aq4QqJWUug8EArL9mQ+PeHGHDgX92gAAAAABAGQAAAI +vArIACwAAJRUhESEVIRUhFSEVAi/+NQHB/pUBTf6zRkYCskbwRvAAAAABAGQAAAIlArIACQAAExUh +FSERIxEhFboBQ/69VgHBAmzwRv7KArJGAAAAAAEAL//yAo8CwAAfAAABMxEjNQcGIyImNTQ2MzIWH +wEjJyYjIgYVFBYzMjY1IwGP90wfPnWTprSSf48LAVYCIqJofHllVG+hAU3+s3hARsicn8uAagoKpq +N/gaN1XAAAAAEAZAAAAowCsgALAAABESMRIREjETMRIRECjFb+hFZWAXwCsv1OAS7+0gKy/sQBPAA +AAAABAGQAAAC6ArIAAwAAMyMRM7pWVgKyAAABADf/8gHoArIAEwAAAREUBw4BIyImLwEzFxYzMjc2 +NREB6AIFcGpgbQIBVgIHfXQKAQKy/lYxIltob2EpKYyEFD0BpwAAAAABAGQAAAJ0ArIACwAACQEjA +wcVIxEzEQEzATsBJ3ntQlZWAVVlAWH+nwEnR+ACsv6RAW8AAQBkAAACLwKyAAUAACUVIREzEQIv/j +VWRkYCsv2UAAABAGQAAAMUArIAFAAAAREjETQ3BgcDIwMmJxYVESMRMxsBAxRWAiMxemx8NxsCVo7 +MywKy/U4BY7ZLco7+nAFmoFxLtP6dArL9lwJpAAAAAAEAZAAAAoACsgANAAAhIwEWFREjETMBJjUR +MwKAhP67A1aEAUUDVAJeeov+pwKy/aJ5jAFZAAAAAgAv//ICuwLAAAkAEwAAEiAWFRQGICY1NBIyN +jU0JiIGFRTbATSsrP7MrNrYenrYegLAxaKhxsahov47nIeIm5uIhwACAGQAAAJHArIADgAYAAABHg +EVFAYHBisBESMRMzITNjQnJisBETMyAZRUX2VOHzuAVtY7GlxcGDWIiDUCrgtnVlVpCgT+5gKy/rU +V1BUF/vgAAAACAC//zAK9AsAAEgAcAAAlFhcHJiMiBwYjIiY1NDYgFhUUJRQWMjY1NCYiBgI9PUMx +UDcfKh8omqysATSs/dR62Hp62HpICTg7NgkHxqGixcWitbWHnJyHiJubAAIAZAAAAlgCsgAXACMAA +CUWFyMmJyYnJisBESMRMzIXHgEVFAYHFiUzMjc+ATU0JyYrAQIqDCJfGQwNWhAhglbiOx9QXEY1Tv +6bhDATMj1lGSyMtYgtOXR0BwH+1wKyBApbU0BSESRAAgVAOGoQBAABADT/8gIoAsAAJQAAATIWFyM +uASMiBhUUFhceARUUBiMiJiczHgEzMjY1NCYnLgE1NDYBOmd2ClwGS0E6SUNRdW+HZnKKC1wPWkQ9 +Uk1cZGuEAsBwXUJHNjQ3OhIbZVZZbm5kREo+NT5DFRdYUFdrAAAAAAEAIgAAAmQCsgAHAAABIxEjE +SM1IQJk9lb2AkICbP2UAmxGAAEAXv/yAmQCsgAXAAABERQHDgEiJicmNREzERQXHgEyNjc2NRECZA +IIgfCBCAJWAgZYmlgGAgKy/k0qFFxzc1wUKgGz/lUrEkRQUEQSKwGrAAAAAAEAIAAAAnoCsgAGAAA +hIwMzGwEzAYJ07l3N1FwCsv2PAnEAAAEAGgAAA7ECsgAMAAABAyMLASMDMxsBMxsBA7HAcZyicrZi +kaB0nJkCsv1OAlP9rQKy/ZsCW/2kAmYAAAEAGQAAAm8CsgALAAAhCwEjEwMzGwEzAxMCCsrEY/bkY +re+Y/D6AST+3AFcAVb+5gEa/q3+oQAAAQATAAACUQKyAAgAAAERIxEDMxsBMwFdVvRjwLphARD+8A +EQAaL+sQFPAAABAC4AAAI5ArIACQAAJRUhNQEhNSEVAQI5/fUBof57Aen+YUZGQgIqRkX92QAAAAA +BAGL/sAEFAwwABwAAARUjETMVIxEBBWlpowMMOP0UOANcAAAB//v/4gE0AtAAAwAABSMDMwE0Pvs+ +HgLuAAAAAQAi/7AAxQMMAAcAABcjNTMRIzUzxaNpaaNQOALsOAABAFAA1wH0AmgABgAAJQsBIxMzE +wGwjY1GsESw1wFZ/qcBkf5vAAAAAQAy/6oBwv/iAAMAAAUhNSEBwv5wAZBWOAAAAAEAKQJEALYCsg +ADAAATIycztjhVUAJEbgAAAAACACT/8gHQAiAAHQAlAAAhJwcGIyImNTQ2OwE1NCcmIyIHIz4BMzI +XFh0BFBcnMjY9ASYVFAF6CR0wVUtgkJoiAgdgaQlaBm1Zrg4DCuQ9R+5MOSFQR1tbDiwUUXBUXowf +J8c9SjRORzYSgVwAAAAAAgBK//ICRQLfABEAHgAAATIWFRQGIyImLwEVIxEzETc2EzI2NTQmIyIGH +QEUFgFUcYCVbiNJEyNWVigySElcU01JXmECIJd4i5QTEDRJAt/+3jkq/hRuZV55ZWsdX14AAQAe// +IB9wIgABgAAAEyFhcjJiMiBhUUFjMyNjczDgEjIiY1NDYBF152DFocbEJXU0A1Rw1aE3pbaoKQAiB +oWH5qZm1tPDlaXYuLgZcAAAACAB7/8gIZAt8AEQAeAAABESM1BwYjIiY1NDYzMhYfAREDMjY9ATQm +IyIGFRQWAhlWKDJacYCVbiNJEyOnSV5hQUlcUwLf/SFVOSqXeIuUExA0ARb9VWVrHV9ebmVeeQACA +B7/8gH9AiAAFQAbAAABFAchHgEzMjY3Mw4BIyImNTQ2MzIWJyIGByEmAf0C/oAGUkA1SwlaD4FXbI +WObmt45UBVBwEqDQEYFhNjWD84W16Oh3+akU9aU60AAAEAFQAAARoC8gAWAAATBh0BMxUjESMRIzU +zNTQ3PgEzMhcVJqcDbW1WOTkDB0k8Hx5oAngVITRC/jQBzEIsJRs5PwVHEwAAAAIAHv8uAhkCIAAi +AC8AAAERFAcOASMiLwEzFx4BMzI2NzY9AQcGIyImNTQ2MzIWHwE1AzI2PQE0JiMiBhUUFgIZAQSEd +NwRAVcBBU5DTlUDASgyWnGAlW4jSRMjp0leYUFJXFMCEv5wSh1zeq8KCTI8VU0ZIQk5Kpd4i5QTED +RJ/iJlax1fXm5lXnkAAQBKAAACCgLkABcAAAEWFREjETQnLgEHDgEdASMRMxE3NjMyFgIIAlYCBDs +6RVRWViE5UVViAYUbQP7WASQxGzI7AQJyf+kC5P7TPSxUAAACAD4AAACsAsAABwALAAASMhYUBiIm +NBMjETNeLiAgLiBiVlYCwCAuICAu/WACEgAC//P/LgCnAsAABwAVAAASMhYUBiImNBcRFAcGIyInN +RY3NjURWS4gIC4gYgMLcRwNSgYCAsAgLiAgLo79wCUbZAJGBzMOHgJEAAAAAQBKAAACCALfAAsAAC +EnBxUjETMREzMHEwGTwTJWVvdu9/rgN6kC3/4oAQv6/ugAAQBG//wA3gLfAA8AABMRFBceATcVBiM +iJicmNRGcAQIcIxkkKi4CAQLf/bkhERoSBD4EJC8SNAJKAAAAAQBKAAADEAIgACQAAAEWFREjETQn +JiMiFREjETQnJiMiFREjETMVNzYzMhYXNzYzMhYDCwVWBAxedFYEDF50VlYiJko7ThAvJkpEVAGfI +jn+vAEcQyRZ1v76ARxDJFnW/voCEk08HzYtRB9HAAAAAAEASgAAAgoCIAAWAAABFhURIxE0JyYjIg +YdASMRMxU3NjMyFgIIAlYCCXBEVVZWITlRVWIBhRtA/tYBJDEbbHR/6QISWz0sVAAAAAACAB7/8gI +sAiAABwARAAASIBYUBiAmNBIyNjU0JiIGFRSlAQCHh/8Ah7ieWlqeWgIgn/Cfn/D+s3ZfYHV1YF8A +AgBK/zwCRQIgABEAHgAAATIWFRQGIyImLwERIxEzFTc2EzI2NTQmIyIGHQEUFgFUcYCVbiNJEyNWV +igySElcU01JXmECIJd4i5QTEDT+8wLWVTkq/hRuZV55ZWsdX14AAgAe/zwCGQIgABEAHgAAAREjEQ +cGIyImNTQ2MzIWHwE1AzI2PQE0JiMiBhUUFgIZVigyWnGAlW4jSRMjp0leYUFJXFMCEv0qARk5Kpd +4i5QTEDRJ/iJlax1fXm5lXnkAAQBKAAABPgIeAA0AAAEyFxUmBhURIxEzFTc2ARoWDkdXVlYwIwIe +B0EFVlf+0gISU0cYAAEAGP/yAa0CIAAjAAATMhYXIyYjIgYVFBYXHgEVFAYjIiYnMxYzMjY1NCYnL +gE1NDbkV2MJWhNdKy04PF1XbVhWbgxaE2ktOjlEUllkAiBaS2MrJCUoEBlPQkhOVFZoKCUmLhIWSE +BIUwAAAAEAFP/4ARQCiQAXAAATERQXHgE3FQYjIiYnJjURIzUzNTMVMxWxAQMmMx8qMjMEAUdHVmM +BzP7PGw4mFgY/BSwxDjQBNUJ7e0IAAAABAEL/8gICAhIAFwAAAREjNQcGIyImJyY1ETMRFBceATMy +Nj0BAgJWITlRT2EKBVYEBkA1RFECEv3uWj4qTToiOQE+/tIlJC43c4DpAAAAAAEAAQAAAfwCEgAGA +AABAyMDMxsBAfzJaclfop8CEv3uAhL+LQHTAAABAAEAAAMLAhIADAAAAQMjCwEjAzMbATMbAQMLqW +Z2dmapY3t0a3Z7AhL97gG+/kICEv5AAcD+QwG9AAAB//oAAAHWAhIACwAAARMjJwcjEwMzFzczARq +8ZIuKY763ZoWFYwEO/vLV1QEMAQbNzQAAAQAB/y4B+wISABEAAAEDDgEjIic1FjMyNj8BAzMbAQH7 +2iFZQB8NDRIpNhQH02GenQIS/cFVUAJGASozEwIt/i4B0gABABQAAAGxAg4ACQAAJRUhNQEhNSEVA +QGx/mMBNP7iAYL+zkREQgGIREX+ewAAAAABAED/sAEOAwwALAAAASMiBhUUFxYVFAYHHgEVFAcGFR +QWOwEVIyImNTQ3NjU0JzU2NTQnJjU0NjsBAQ4MKiMLDS4pKS4NCyMqDAtERAwLUlILDERECwLUGBk +WTlsgKzUFBTcrIFtOFhkYOC87GFVMIkUIOAhFIkxVGDsvAAAAAAEAYP84AJoDIAADAAAXIxEzmjo6 +yAPoAAEAIf+wAO8DDAAsAAATFQYVFBcWFRQGKwE1MzI2NTQnJjU0NjcuATU0NzY1NCYrATUzMhYVF +AcGFRTvUgsMREQLDCojCw0uKSkuDQsjKgwLREQMCwF6OAhFIkxVGDsvOBgZFk5bICs1BQU3KyBbTh +YZGDgvOxhVTCJFAAABAE0A3wH2AWQAEwAAATMUIyImJyYjIhUjNDMyFhcWMzIBvjhuGywtQR0xOG4 +bLC1BHTEBZIURGCNMhREYIwAAAwAk/94DIgLoAAcAEQApAAAAIBYQBiAmECQgBhUUFiA2NTQlMhYX +IyYjIgYUFjMyNjczDgEjIiY1NDYBAQFE3d3+vN0CB/7wubkBELn+xVBnD1wSWDo+QTcqOQZcEmZWX +HN2Aujg/rbg4AFKpr+Mjb6+jYxbWEldV5ZZNShLVn5na34AAgB4AFIB9AGeAAUACwAAAQcXIyc3Mw +cXIyc3AUqJiUmJifOJiUmJiQGepqampqampqYAAAIAHAHSAQ4CwAAHAA8AABIyFhQGIiY0NiIGFBY +yNjRgakREakSTNCEhNCECwEJqQkJqCiM4IyM4AAAAAAIAUAAAAfQCCwALAA8AAAEzFSMVIzUjNTM1 +MxMhNSEBP7W1OrW1OrX+XAGkAVs4tLQ4sP31OAAAAQB0AkQBAQKyAAMAABMjNzOsOD1QAkRuAAAAA +AEAIADsAKoBdgAHAAASMhYUBiImNEg6KCg6KAF2KDooKDoAAAIAOQBSAbUBngAFAAsAACUHIzcnMw +UHIzcnMwELiUmJiUkBM4lJiYlJ+KampqampqYAAAABADYB5QDhAt8ABAAAEzczByM2Xk1OXQHv8Po +AAQAWAeUAwQLfAAQAABMHIzczwV5NTl0C1fD6AAIANgHlAYsC3wAEAAkAABM3MwcjPwEzByM2Xk1O +XapeTU5dAe/w+grw+gAAAgAWAeUBawLfAAQACQAAEwcjNzMXByM3M8FeTU5dql5NTl0C1fD6CvD6A +AADACX/8gI1AHIABwAPABcAADYyFhQGIiY0NjIWFAYiJjQ2MhYUBiImNEk4JCQ4JOw4JCQ4JOw4JC +Q4JHIkOCQkOCQkOCQkOCQkOCQkOAAAAAEAeABSAUoBngAFAAABBxcjJzcBSomJSYmJAZ6mpqamAAA +AAAEAOQBSAQsBngAFAAAlByM3JzMBC4lJiYlJ+KampgAAAf9qAAABgQKyAAMAACsBATM/VwHAVwKy +AAAAAAIAFAHIAdwClAAHABQAABMVIxUjNSM1BRUjNwcjJxcjNTMXN9pKMkoByDICKzQqATJLKysCl +CmjoykBy46KiY3Lm5sAAQAVAAABvALyABgAAAERIxEjESMRIzUzNTQ3NjMyFxUmBgcGHQEBvFbCVj +k5AxHHHx5iVgcDAg798gHM/jQBzEIOJRuWBUcIJDAVIRYAAAABABX//AHkAvIAJQAAJR4BNxUGIyI +mJyY1ESYjIgcGHQEzFSMRIxEjNTM1NDc2MzIXERQBowIcIxkkKi4CAR4nXgwDbW1WLy8DEbNdOmYa +EQQ/BCQvEjQCFQZWFSEWQv40AcxCDiUblhP9uSEAAAAAAAAWAQ4AAQAAAAAAAAATACgAAQAAAAAAA +QAHAEwAAQAAAAAAAgAHAGQAAQAAAAAAAwAaAKIAAQAAAAAABAAHAM0AAQAAAAAABQA8AU8AAQAAAA +AABgAPAawAAQAAAAAACAALAdQAAQAAAAAACQALAfgAAQAAAAAACwAXAjQAAQAAAAAADAAXAnwAAwA +BBAkAAAAmAAAAAwABBAkAAQAOADwAAwABBAkAAgAOAFQAAwABBAkAAwA0AGwAAwABBAkABAAOAL0A +AwABBAkABQB4ANUAAwABBAkABgAeAYwAAwABBAkACAAWAbwAAwABBAkACQAWAeAAAwABBAkACwAuA +gQAAwABBAkADAAuAkwATgBvACAAUgBpAGcAaAB0AHMAIABSAGUAcwBlAHIAdgBlAGQALgAATm8gUm +lnaHRzIFJlc2VydmVkLgAAQQBpAGwAZQByAG8AbgAAQWlsZXJvbgAAUgBlAGcAdQBsAGEAcgAAUmV +ndWxhcgAAMQAuADEAMAAyADsAVQBLAFcATgA7AEEAaQBsAGUAcgBvAG4ALQBSAGUAZwB1AGwAYQBy +AAAxLjEwMjtVS1dOO0FpbGVyb24tUmVndWxhcgAAQQBpAGwAZQByAG8AbgAAQWlsZXJvbgAAVgBlA +HIAcwBpAG8AbgAgADEALgAxADAAMgA7AFAAUwAgADAAMAAxAC4AMQAwADIAOwBoAG8AdABjAG8Abg +B2ACAAMQAuADAALgA3ADAAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA1ADgAMwAyADk +AAFZlcnNpb24gMS4xMDI7UFMgMDAxLjEwMjtob3Rjb252IDEuMC43MDttYWtlb3RmLmxpYjIuNS41 +ODMyOQAAQQBpAGwAZQByAG8AbgAtAFIAZQBnAHUAbABhAHIAAEFpbGVyb24tUmVndWxhcgAAUwBvA +HIAYQAgAFMAYQBnAGEAbgBvAABTb3JhIFNhZ2FubwAAUwBvAHIAYQAgAFMAYQBnAGEAbgBvAABTb3 +JhIFNhZ2FubwAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGQAbwB0AGMAbwBsAG8AbgAuAG4AZQB0AAB +odHRwOi8vd3d3LmRvdGNvbG9uLm5ldAAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGQAbwB0AGMAbwBs +AG8AbgAuAG4AZQB0AABodHRwOi8vd3d3LmRvdGNvbG9uLm5ldAAAAAACAAAAAAAA/4MAMgAAAAAAA +AAAAAAAAAAAAAAAAAAAAHQAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATAB +QAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAA +xADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0A +TgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAIsAqQCDAJMAjQDDAKoAtgC3A +LQAtQCrAL4AvwC8AIwAwADBAAAAAAAB//8AAgABAAAADAAAABwAAAACAAIAAwBxAAEAcgBzAAIABA +AAAAIAAAABAAAACgBMAGYAAkRGTFQADmxhdG4AGgAEAAAAAP//AAEAAAAWAANDQVQgAB5NT0wgABZ +ST00gABYAAP//AAEAAAAA//8AAgAAAAEAAmxpZ2EADmxvY2wAFAAAAAEAAQAAAAEAAAACAAYAEAAG +AAAAAgASADQABAAAAAEATAADAAAAAgAQABYAAQAcAAAAAQABAE8AAQABAGcAAQABAE8AAwAAAAIAE +AAWAAEAHAAAAAEAAQAvAAEAAQBnAAEAAQAvAAEAGgABAAgAAgAGAAwAcwACAE8AcgACAEwAAQABAE +kAAAABAAAACgBGAGAAAkRGTFQADmxhdG4AHAAEAAAAAP//AAIAAAABABYAA0NBVCAAFk1PTCAAFlJ +PTSAAFgAA//8AAgAAAAEAAmNwc3AADmtlcm4AFAAAAAEAAAAAAAEAAQACAAYADgABAAAAAQASAAIA +AAACAB4ANgABAAoABQAFAAoAAgABACQAPQAAAAEAEgAEAAAAAQAMAAEAOP/nAAEAAQAkAAIGigAEA +AAFJAXKABoAGQAA//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAD/sv+4/+z/7v/MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAD/xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9T/6AAAAAD/8QAA +ABD/vQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7gAAAAAAAAAAAAAAAAAA//MAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAP/5AAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/gAAD/4AAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//L/9AAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAA/+gAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/zAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/mAAAAAAAAAAAAAAAAAAD +/4gAA//AAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+AAAAAAAAP/OAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/zv/qAAAAAP/0AAAACAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/ZAAD/egAA/1kAAAAA/5D/rgAAAAAAAAAAAA +AAAAAAAAAAAAAAAAD/9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAD/8AAA/7b/8P+wAAD/8P/E/98AAAAA/8P/+P/0//oAAAAAAAAAAAAA//gA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+AAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/w//C/9MAAP/SAAD/9wAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAD/yAAA/+kAAAAA//QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9wAAAAD//QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAP/cAAAAAAAAAAAAAAAA/7YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAP/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/6AAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAkAFAAEAAAAAQACwAAABcA +BgAAAAAAAAAIAA4AAAAAAAsAEgAAAAAAAAATABkAAwANAAAAAQAJAAAAAAAAAAAAAAAAAAAAGAAAA +AAABwAAAAAAAAAAAAAAFQAFAAAAAAAYABgAAAAUAAAACgAAAAwAAgAPABEAFgAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAEAEQBdAAYAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAcAAAAAAAAABwAAAAAACAAAAAAAAAAAAAcAAAAHAAAAEwAJ +ABUADgAPAAAACwAQAAAAAAAAAAAAAAAAAAUAGAACAAIAAgAAAAIAGAAXAAAAGAAAABYAFgACABYAA +gAWAAAAEQADAAoAFAAMAA0ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAEgAGAAEAHgAkAC +YAJwApACoALQAuAC8AMgAzADcAOAA5ADoAPAA9AEUASABOAE8AUgBTAFUAVwBZAFoAWwBcAF0AcwA +AAAAAAQAAAADa3tfFAAAAANAan9kAAAAA4QodoQ== +""" + ) + ), + 10 if size is None else size, + layout_engine=Layout.BASIC, + ) + return load_default_imagefont() diff --git a/venv/Lib/site-packages/PIL/ImageGrab.py b/venv/Lib/site-packages/PIL/ImageGrab.py new file mode 100644 index 0000000..fe27bfa --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageGrab.py @@ -0,0 +1,183 @@ +# +# 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. +# +from __future__ import annotations + +import io +import os +import shutil +import subprocess +import sys +import tempfile + +from . import Image + + +def grab( + bbox: tuple[int, int, int, int] | None = None, + include_layered_windows: bool = False, + all_screens: bool = False, + xdisplay: str | None = None, +) -> Image.Image: + im: Image.Image + if xdisplay is None: + if sys.platform == "darwin": + fh, filepath = tempfile.mkstemp(".png") + os.close(fh) + args = ["screencapture"] + if bbox: + left, top, right, bottom = bbox + args += ["-R", f"{left},{top},{right-left},{bottom-top}"] + subprocess.call(args + ["-x", filepath]) + im = Image.open(filepath) + im.load() + os.unlink(filepath) + if bbox: + im_resized = im.resize((right - left, bottom - top)) + im.close() + return im_resized + 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 + # Cast to Optional[str] needed for Windows and macOS. + display_name: str | None = xdisplay + try: + if not Image.core.HAVE_XCB: + msg = "Pillow was built without XCB support" + raise OSError(msg) + size, data = Image.core.grabscreen_x11(display_name) + except OSError: + if ( + display_name is None + and sys.platform not in ("darwin", "win32") + and shutil.which("gnome-screenshot") + ): + fh, filepath = tempfile.mkstemp(".png") + os.close(fh) + subprocess.call(["gnome-screenshot", "-f", filepath]) + im = Image.open(filepath) + im.load() + os.unlink(filepath) + if bbox: + im_cropped = im.crop(bbox) + im.close() + return im_cropped + return im + else: + raise + else: + im = Image.frombytes("RGB", size, data, "raw", "BGRX", size[0] * 4, 1) + if bbox: + im = im.crop(bbox) + return im + + +def grabclipboard() -> Image.Image | list[str] | None: + if sys.platform == "darwin": + p = subprocess.run( + ["osascript", "-e", "get the clipboard as «class PNGf»"], + capture_output=True, + ) + if p.returncode != 0: + return None + + import binascii + + data = io.BytesIO(binascii.unhexlify(p.stdout[11:-3])) + return Image.open(data) + 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): + 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: + if os.getenv("WAYLAND_DISPLAY"): + session_type = "wayland" + elif os.getenv("DISPLAY"): + session_type = "x11" + else: # Session type check failed + session_type = None + + if shutil.which("wl-paste") and session_type in ("wayland", None): + args = ["wl-paste", "-t", "image"] + elif shutil.which("xclip") and session_type in ("x11", None): + args = ["xclip", "-selection", "clipboard", "-t", "image/png", "-o"] + else: + msg = "wl-paste or xclip is required for ImageGrab.grabclipboard() on Linux" + raise NotImplementedError(msg) + + p = subprocess.run(args, capture_output=True) + if p.returncode != 0: + err = p.stderr + for silent_error in [ + # wl-paste, when the clipboard is empty + b"Nothing is copied", + # Ubuntu/Debian wl-paste, when the clipboard is empty + b"No selection", + # Ubuntu/Debian wl-paste, when an image isn't available + b"No suitable type of content copied", + # wl-paste or Ubuntu/Debian xclip, when an image isn't available + b" not available", + # xclip, when an image isn't available + b"cannot convert ", + # xclip, when the clipboard isn't initialized + b"xclip: Error: There is no owner for the ", + ]: + if silent_error in err: + return None + msg = f"{args[0]} error" + if err: + msg += f": {err.strip().decode()}" + raise ChildProcessError(msg) + + data = io.BytesIO(p.stdout) + im = Image.open(data) + im.load() + return im diff --git a/venv/Lib/site-packages/PIL/ImageMath.py b/venv/Lib/site-packages/PIL/ImageMath.py new file mode 100644 index 0000000..484797f --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageMath.py @@ -0,0 +1,368 @@ +# +# 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. +# +from __future__ import annotations + +import builtins +from types import CodeType +from typing import Any, Callable + +from . import Image, _imagingmath +from ._deprecate import deprecate + + +class _Operand: + """Wraps an image operand, providing standard operators""" + + def __init__(self, im: Image.Image): + self.im = im + + def __fixup(self, im1: _Operand | float) -> Image.Image: + # 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: + msg = f"unsupported mode: {im1.im.mode}" + raise ValueError(msg) + else: + # argument was a constant + if isinstance(im1, (int, float)) 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: str, + im1: _Operand | float, + im2: _Operand | float | None = None, + mode: str | None = None, + ) -> _Operand: + im_1 = self.__fixup(im1) + if im2 is None: + # unary operation + out = Image.new(mode or im_1.mode, im_1.size, None) + try: + op = getattr(_imagingmath, f"{op}_{im_1.mode}") + except AttributeError as e: + msg = f"bad operand type for '{op}'" + raise TypeError(msg) from e + _imagingmath.unop(op, out.getim(), im_1.getim()) + else: + # binary operation + im_2 = self.__fixup(im2) + if im_1.mode != im_2.mode: + # convert both arguments to floating point + if im_1.mode != "F": + im_1 = im_1.convert("F") + if im_2.mode != "F": + im_2 = im_2.convert("F") + if im_1.size != im_2.size: + # crop both arguments to a common size + size = ( + min(im_1.size[0], im_2.size[0]), + min(im_1.size[1], im_2.size[1]), + ) + if im_1.size != size: + im_1 = im_1.crop((0, 0) + size) + if im_2.size != size: + im_2 = im_2.crop((0, 0) + size) + out = Image.new(mode or im_1.mode, im_1.size, None) + try: + op = getattr(_imagingmath, f"{op}_{im_1.mode}") + except AttributeError as e: + msg = f"bad operand type for '{op}'" + raise TypeError(msg) from e + _imagingmath.binop(op, out.getim(), im_1.getim(), im_2.getim()) + return _Operand(out) + + # unary operators + def __bool__(self) -> bool: + # an image is "true" if it contains at least one non-zero pixel + return self.im.getbbox() is not None + + def __abs__(self) -> _Operand: + return self.apply("abs", self) + + def __pos__(self) -> _Operand: + return self + + def __neg__(self) -> _Operand: + return self.apply("neg", self) + + # binary operators + def __add__(self, other: _Operand | float) -> _Operand: + return self.apply("add", self, other) + + def __radd__(self, other: _Operand | float) -> _Operand: + return self.apply("add", other, self) + + def __sub__(self, other: _Operand | float) -> _Operand: + return self.apply("sub", self, other) + + def __rsub__(self, other: _Operand | float) -> _Operand: + return self.apply("sub", other, self) + + def __mul__(self, other: _Operand | float) -> _Operand: + return self.apply("mul", self, other) + + def __rmul__(self, other: _Operand | float) -> _Operand: + return self.apply("mul", other, self) + + def __truediv__(self, other: _Operand | float) -> _Operand: + return self.apply("div", self, other) + + def __rtruediv__(self, other: _Operand | float) -> _Operand: + return self.apply("div", other, self) + + def __mod__(self, other: _Operand | float) -> _Operand: + return self.apply("mod", self, other) + + def __rmod__(self, other: _Operand | float) -> _Operand: + return self.apply("mod", other, self) + + def __pow__(self, other: _Operand | float) -> _Operand: + return self.apply("pow", self, other) + + def __rpow__(self, other: _Operand | float) -> _Operand: + return self.apply("pow", other, self) + + # bitwise + def __invert__(self) -> _Operand: + return self.apply("invert", self) + + def __and__(self, other: _Operand | float) -> _Operand: + return self.apply("and", self, other) + + def __rand__(self, other: _Operand | float) -> _Operand: + return self.apply("and", other, self) + + def __or__(self, other: _Operand | float) -> _Operand: + return self.apply("or", self, other) + + def __ror__(self, other: _Operand | float) -> _Operand: + return self.apply("or", other, self) + + def __xor__(self, other: _Operand | float) -> _Operand: + return self.apply("xor", self, other) + + def __rxor__(self, other: _Operand | float) -> _Operand: + return self.apply("xor", other, self) + + def __lshift__(self, other: _Operand | float) -> _Operand: + return self.apply("lshift", self, other) + + def __rshift__(self, other: _Operand | float) -> _Operand: + return self.apply("rshift", self, other) + + # logical + def __eq__(self, other: _Operand | float) -> _Operand: # type: ignore[override] + return self.apply("eq", self, other) + + def __ne__(self, other: _Operand | float) -> _Operand: # type: ignore[override] + return self.apply("ne", self, other) + + def __lt__(self, other: _Operand | float) -> _Operand: + return self.apply("lt", self, other) + + def __le__(self, other: _Operand | float) -> _Operand: + return self.apply("le", self, other) + + def __gt__(self, other: _Operand | float) -> _Operand: + return self.apply("gt", self, other) + + def __ge__(self, other: _Operand | float) -> _Operand: + return self.apply("ge", self, other) + + +# conversions +def imagemath_int(self: _Operand) -> _Operand: + return _Operand(self.im.convert("I")) + + +def imagemath_float(self: _Operand) -> _Operand: + return _Operand(self.im.convert("F")) + + +# logical +def imagemath_equal(self: _Operand, other: _Operand | float | None) -> _Operand: + return self.apply("eq", self, other, mode="I") + + +def imagemath_notequal(self: _Operand, other: _Operand | float | None) -> _Operand: + return self.apply("ne", self, other, mode="I") + + +def imagemath_min(self: _Operand, other: _Operand | float | None) -> _Operand: + return self.apply("min", self, other) + + +def imagemath_max(self: _Operand, other: _Operand | float | None) -> _Operand: + return self.apply("max", self, other) + + +def imagemath_convert(self: _Operand, mode: str) -> _Operand: + return _Operand(self.im.convert(mode)) + + +ops = { + "int": imagemath_int, + "float": imagemath_float, + "equal": imagemath_equal, + "notequal": imagemath_notequal, + "min": imagemath_min, + "max": imagemath_max, + "convert": imagemath_convert, +} + + +def lambda_eval( + expression: Callable[[dict[str, Any]], Any], + options: dict[str, Any] = {}, + **kw: Any, +) -> Any: + """ + Returns the result of an image function. + + :py:mod:`~PIL.ImageMath` only supports single-layer images. To process multi-band + images, use the :py:meth:`~PIL.Image.Image.split` method or + :py:func:`~PIL.Image.merge` function. + + :param expression: A function that receives a dictionary. + :param options: Values to add to the function's dictionary. Deprecated. + You can instead use one or more keyword arguments. + :param **kw: Values to add to the function's dictionary. + :return: The expression result. This is usually an image object, but can + also be an integer, a floating point value, or a pixel tuple, + depending on the expression. + """ + + if options: + deprecate( + "ImageMath.lambda_eval options", + 12, + "ImageMath.lambda_eval keyword arguments", + ) + + args: dict[str, Any] = ops.copy() + args.update(options) + args.update(kw) + for k, v in args.items(): + if isinstance(v, Image.Image): + args[k] = _Operand(v) + + out = expression(args) + try: + return out.im + except AttributeError: + return out + + +def unsafe_eval( + expression: str, + options: dict[str, Any] = {}, + **kw: Any, +) -> Any: + """ + Evaluates an image expression. This uses Python's ``eval()`` function to process + the expression string, and carries the security risks of doing so. It is not + recommended to process expressions without considering this. + :py:meth:`~lambda_eval` is a more secure alternative. + + :py:mod:`~PIL.ImageMath` only supports single-layer images. To process multi-band + images, use the :py:meth:`~PIL.Image.Image.split` method or + :py:func:`~PIL.Image.merge` function. + + :param expression: A string containing a Python-style expression. + :param options: Values to add to the evaluation context. Deprecated. + You can instead use one or more keyword arguments. + :param **kw: Values to add to the evaluation context. + :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. + """ + + if options: + deprecate( + "ImageMath.unsafe_eval options", + 12, + "ImageMath.unsafe_eval keyword arguments", + ) + + # build execution namespace + args: dict[str, Any] = ops.copy() + for k in list(options.keys()) + list(kw.keys()): + if "__" in k or hasattr(builtins, k): + msg = f"'{k}' not allowed" + raise ValueError(msg) + + args.update(options) + args.update(kw) + for k, v in args.items(): + if isinstance(v, Image.Image): + args[k] = _Operand(v) + + compiled_code = compile(expression, "", "eval") + + def scan(code: CodeType) -> None: + for const in code.co_consts: + if type(const) is type(compiled_code): + scan(const) + + for name in code.co_names: + if name not in args and name != "abs": + msg = f"'{name}' not allowed" + raise ValueError(msg) + + scan(compiled_code) + out = builtins.eval(expression, {"__builtins": {"abs": abs}}, args) + try: + return out.im + except AttributeError: + return out + + +def eval( + expression: str, + _dict: dict[str, Any] = {}, + **kw: Any, +) -> Any: + """ + Evaluates an image expression. + + Deprecated. Use lambda_eval() or unsafe_eval() instead. + + :param expression: A string containing a Python-style expression. + :param _dict: 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. + + .. deprecated:: 10.3.0 + """ + + deprecate( + "ImageMath.eval", + 12, + "ImageMath.lambda_eval or ImageMath.unsafe_eval", + ) + return unsafe_eval(expression, _dict, **kw) diff --git a/venv/Lib/site-packages/PIL/ImageMode.py b/venv/Lib/site-packages/PIL/ImageMode.py new file mode 100644 index 0000000..92a08d2 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageMode.py @@ -0,0 +1,92 @@ +# +# 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. +# +from __future__ import annotations + +import sys +from functools import lru_cache +from typing import NamedTuple + +from ._deprecate import deprecate + + +class ModeDescriptor(NamedTuple): + """Wrapper for mode strings.""" + + mode: str + bands: tuple[str, ...] + basemode: str + basetype: str + typestr: str + + def __str__(self) -> str: + return self.mode + + +@lru_cache +def getmode(mode: str) -> ModeDescriptor: + """Gets a mode descriptor for the given mode.""" + endian = "<" if sys.byteorder == "little" else ">" + + modes = { + # core modes + # Bits need to be extended to bytes + "1": ("L", "L", ("1",), "|b1"), + "L": ("L", "L", ("L",), "|u1"), + "I": ("L", "I", ("I",), f"{endian}i4"), + "F": ("L", "F", ("F",), f"{endian}f4"), + "P": ("P", "L", ("P",), "|u1"), + "RGB": ("RGB", "L", ("R", "G", "B"), "|u1"), + "RGBX": ("RGB", "L", ("R", "G", "B", "X"), "|u1"), + "RGBA": ("RGB", "L", ("R", "G", "B", "A"), "|u1"), + "CMYK": ("RGB", "L", ("C", "M", "Y", "K"), "|u1"), + "YCbCr": ("RGB", "L", ("Y", "Cb", "Cr"), "|u1"), + # UNDONE - unsigned |u1i1i1 + "LAB": ("RGB", "L", ("L", "A", "B"), "|u1"), + "HSV": ("RGB", "L", ("H", "S", "V"), "|u1"), + # extra experimental modes + "RGBa": ("RGB", "L", ("R", "G", "B", "a"), "|u1"), + "BGR;15": ("RGB", "L", ("B", "G", "R"), "|u1"), + "BGR;16": ("RGB", "L", ("B", "G", "R"), "|u1"), + "BGR;24": ("RGB", "L", ("B", "G", "R"), "|u1"), + "LA": ("L", "L", ("L", "A"), "|u1"), + "La": ("L", "L", ("L", "a"), "|u1"), + "PA": ("RGB", "L", ("P", "A"), "|u1"), + } + if mode in modes: + if mode in ("BGR;15", "BGR;16", "BGR;24"): + deprecate(mode, 12) + base_mode, base_type, bands, type_str = modes[mode] + return ModeDescriptor(mode, bands, base_mode, base_type, type_str) + + mapping_modes = { + # I;16 == I;16L, and I;32 == I;32L + "I;16": "u2", + "I;16BS": ">i2", + "I;16N": f"{endian}u2", + "I;16NS": f"{endian}i2", + "I;32": "u4", + "I;32L": "i4", + "I;32LS": " +from __future__ import annotations + +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: list[str] | None = None, op_name: str | None = None + ) -> None: + if patterns is not None: + self.patterns = patterns + else: + self.patterns = [] + self.lut: bytearray | None = 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: + msg = f"Unknown pattern {op_name}!" + raise Exception(msg) + + self.patterns = known_patterns[op_name] + + def add_patterns(self, patterns: list[str]) -> None: + self.patterns += patterns + + def build_default_lut(self) -> None: + 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) -> bytearray | None: + return self.lut + + def _string_permute(self, pattern: str, permutation: list[int]) -> str: + """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: str, options: str, basic_result: int + ) -> list[tuple[str, int]]: + """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[:n]: + patterns.append((self._string_permute(pattern, MIRROR_MATRIX), res)) + + # negate + if "N" in options: + n = len(patterns) + for pattern, res in patterns[: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) -> bytearray: + """Compile all patterns into a morphology lut. + + TBD :Build based on (file) morphlut:modify_lut + """ + self.build_default_lut() + assert self.lut is not None + 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: + msg = 'Syntax error in pattern "' + p + '"' + raise Exception(msg) + 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 + compiled_patterns = [] + for pattern in patterns: + p = pattern[0].replace(".", "X").replace("X", "[01]") + compiled_patterns.append((re.compile(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 pattern, r in compiled_patterns: + if pattern.match(bitpattern): + self.lut[i] = [0, 1][r] + + return self.lut + + +class MorphOp: + """A class for binary morphological operators""" + + def __init__( + self, + lut: bytearray | None = None, + op_name: str | None = None, + patterns: list[str] | None = None, + ) -> 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: Image.Image) -> tuple[int, Image.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: + msg = "No operator loaded" + raise Exception(msg) + + if image.mode != "L": + msg = "Image mode must be L" + raise ValueError(msg) + outimage = Image.new(image.mode, image.size, None) + count = _imagingmorph.apply(bytes(self.lut), image.getim(), outimage.getim()) + return count, outimage + + def match(self, image: Image.Image) -> list[tuple[int, int]]: + """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: + msg = "No operator loaded" + raise Exception(msg) + + if image.mode != "L": + msg = "Image mode must be L" + raise ValueError(msg) + return _imagingmorph.match(bytes(self.lut), image.getim()) + + def get_on_pixels(self, image: Image.Image) -> list[tuple[int, int]]: + """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": + msg = "Image mode must be L" + raise ValueError(msg) + return _imagingmorph.get_on_pixels(image.getim()) + + def load_lut(self, filename: str) -> None: + """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 + msg = "Wrong size operator file!" + raise Exception(msg) + + def save_lut(self, filename: str) -> None: + """Save an operator to an mrl file""" + if self.lut is None: + msg = "No operator loaded" + raise Exception(msg) + with open(filename, "wb") as f: + f.write(self.lut) + + def set_lut(self, lut: bytearray | None) -> None: + """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 0000000..bb29cc0 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageOps.py @@ -0,0 +1,731 @@ +# +# 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. +# +from __future__ import annotations + +import functools +import operator +import re +from collections.abc import Sequence +from typing import Protocol, cast + +from . import ExifTags, Image, ImagePalette + +# +# helpers + + +def _border(border: int | tuple[int, ...]) -> tuple[int, int, int, int]: + 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: str | int | tuple[int, ...], mode: str) -> int | tuple[int, ...]: + if isinstance(color, str): + from . import ImageColor + + color = ImageColor.getcolor(color, mode) + return color + + +def _lut(image: Image.Image, lut: list[int]) -> Image.Image: + if image.mode == "P": + # FIXME: apply to lookup table, not image data + msg = "mode P support coming soon" + raise NotImplementedError(msg) + elif image.mode in ("L", "RGB"): + if image.mode == "RGB" and len(lut) == 256: + lut = lut + lut + lut + return image.point(lut) + else: + msg = f"not supported for mode {image.mode}" + raise OSError(msg) + + +# +# actions + + +def autocontrast( + image: Image.Image, + cutoff: float | tuple[float, float] = 0, + ignore: int | Sequence[int] | None = None, + mask: Image.Image | None = None, + preserve_tone: bool = False, +) -> Image.Image: + """ + Maximize (normalize) image contrast. This function calculates a + histogram of the input image (or mask region), 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: The percent to cut off from the histogram on the low and + high ends. Either a tuple of (low, high), or a single + number for both. + :param ignore: The background pixel value (use None for no background). + :param mask: Histogram used in contrast operation is computed using pixels + within the mask. If no mask is given the entire image is used + for histogram computation. + :param preserve_tone: Preserve image tone in Photoshop-like style autocontrast. + + .. versionadded:: 8.2.0 + + :return: An image. + """ + if preserve_tone: + histogram = image.convert("L").histogram(mask) + else: + histogram = image.histogram(mask) + + lut = [] + for layer in range(0, len(histogram), 256): + h = histogram[layer : layer + 256] + if ignore is not None: + # get rid of outliers + if isinstance(ignore, int): + h[ignore] = 0 + else: + for ix in ignore: + h[ix] = 0 + if cutoff: + # cut off pixels from both ends of the histogram + if not isinstance(cutoff, tuple): + cutoff = (cutoff, cutoff) + # get number of pixels + n = 0 + for ix in range(256): + n = n + h[ix] + # remove cutoff% pixels from the low end + cut = int(n * cutoff[0] // 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 high end + cut = int(n * cutoff[1] // 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: Image.Image, + black: str | tuple[int, ...], + white: str | tuple[int, ...], + mid: str | int | tuple[int, ...] | None = None, + blackpoint: int = 0, + whitepoint: int = 255, + midpoint: int = 127, +) -> Image.Image: + """ + 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 + rgb_black = cast(Sequence[int], _color(black, "RGB")) + rgb_white = cast(Sequence[int], _color(white, "RGB")) + rgb_mid = cast(Sequence[int], _color(mid, "RGB")) if mid is not None else None + + # Empty lists for the mapping + red = [] + green = [] + blue = [] + + # Create the low-end values + for i in range(0, blackpoint): + red.append(rgb_black[0]) + green.append(rgb_black[1]) + blue.append(rgb_black[2]) + + # Create the mapping (2-color) + if rgb_mid is None: + range_map = range(0, whitepoint - blackpoint) + + for i in range_map: + red.append( + rgb_black[0] + i * (rgb_white[0] - rgb_black[0]) // len(range_map) + ) + green.append( + rgb_black[1] + i * (rgb_white[1] - rgb_black[1]) // len(range_map) + ) + blue.append( + rgb_black[2] + i * (rgb_white[2] - rgb_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( + rgb_black[0] + i * (rgb_mid[0] - rgb_black[0]) // len(range_map1) + ) + green.append( + rgb_black[1] + i * (rgb_mid[1] - rgb_black[1]) // len(range_map1) + ) + blue.append( + rgb_black[2] + i * (rgb_mid[2] - rgb_black[2]) // len(range_map1) + ) + for i in range_map2: + red.append(rgb_mid[0] + i * (rgb_white[0] - rgb_mid[0]) // len(range_map2)) + green.append( + rgb_mid[1] + i * (rgb_white[1] - rgb_mid[1]) // len(range_map2) + ) + blue.append(rgb_mid[2] + i * (rgb_white[2] - rgb_mid[2]) // len(range_map2)) + + # Create the high-end values + for i in range(0, 256 - whitepoint): + red.append(rgb_white[0]) + green.append(rgb_white[1]) + blue.append(rgb_white[2]) + + # Return converted image + image = image.convert("RGB") + return _lut(image, red + green + blue) + + +def contain( + image: Image.Image, size: tuple[int, int], method: int = Image.Resampling.BICUBIC +) -> Image.Image: + """ + Returns a resized version of the image, set to the maximum width and height + within the requested size, while maintaining the original aspect ratio. + + :param image: The image to resize. + :param size: The requested output size in pixels, given as a + (width, height) tuple. + :param method: Resampling method to use. Default is + :py:attr:`~PIL.Image.Resampling.BICUBIC`. + See :ref:`concept-filters`. + :return: An image. + """ + + im_ratio = image.width / image.height + dest_ratio = size[0] / size[1] + + if im_ratio != dest_ratio: + if im_ratio > dest_ratio: + new_height = round(image.height / image.width * size[0]) + if new_height != size[1]: + size = (size[0], new_height) + else: + new_width = round(image.width / image.height * size[1]) + if new_width != size[0]: + size = (new_width, size[1]) + return image.resize(size, resample=method) + + +def cover( + image: Image.Image, size: tuple[int, int], method: int = Image.Resampling.BICUBIC +) -> Image.Image: + """ + Returns a resized version of the image, so that the requested size is + covered, while maintaining the original aspect ratio. + + :param image: The image to resize. + :param size: The requested output size in pixels, given as a + (width, height) tuple. + :param method: Resampling method to use. Default is + :py:attr:`~PIL.Image.Resampling.BICUBIC`. + See :ref:`concept-filters`. + :return: An image. + """ + + im_ratio = image.width / image.height + dest_ratio = size[0] / size[1] + + if im_ratio != dest_ratio: + if im_ratio < dest_ratio: + new_height = round(image.height / image.width * size[0]) + if new_height != size[1]: + size = (size[0], new_height) + else: + new_width = round(image.width / image.height * size[1]) + if new_width != size[0]: + size = (new_width, size[1]) + return image.resize(size, resample=method) + + +def pad( + image: Image.Image, + size: tuple[int, int], + method: int = Image.Resampling.BICUBIC, + color: str | int | tuple[int, ...] | None = None, + centering: tuple[float, float] = (0.5, 0.5), +) -> Image.Image: + """ + Returns a resized and padded version of the image, expanded to fill the + requested aspect ratio and size. + + :param image: The image to resize and crop. + :param size: The requested output size in pixels, given as a + (width, height) tuple. + :param method: Resampling method to use. Default is + :py:attr:`~PIL.Image.Resampling.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. + """ + + resized = contain(image, size, method) + if resized.size == size: + out = resized + else: + out = Image.new(image.mode, size, color) + if resized.palette: + palette = resized.getpalette() + if palette is not None: + out.putpalette(palette) + if resized.width != size[0]: + x = round((size[0] - resized.width) * max(0, min(centering[0], 1))) + out.paste(resized, (x, 0)) + else: + y = round((size[1] - resized.height) * max(0, min(centering[1], 1))) + out.paste(resized, (0, y)) + return out + + +def crop(image: Image.Image, border: int = 0) -> Image.Image: + """ + 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: Image.Image, factor: float, resample: int = Image.Resampling.BICUBIC +) -> Image.Image: + """ + 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: Resampling method to use. Default is + :py:attr:`~PIL.Image.Resampling.BICUBIC`. + See :ref:`concept-filters`. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + if factor == 1: + return image.copy() + elif factor <= 0: + msg = "the factor must be greater than 0" + raise ValueError(msg) + else: + size = (round(factor * image.width), round(factor * image.height)) + return image.resize(size, resample) + + +class SupportsGetMesh(Protocol): + """ + An object that supports the ``getmesh`` method, taking an image as an + argument, and returning a list of tuples. Each tuple contains two tuples, + the source box as a tuple of 4 integers, and a tuple of 8 integers for the + final quadrilateral, in order of top left, bottom left, bottom right, top + right. + """ + + def getmesh( + self, image: Image.Image + ) -> list[ + tuple[tuple[int, int, int, int], tuple[int, int, int, int, int, int, int, int]] + ]: ... + + +def deform( + image: Image.Image, + deformer: SupportsGetMesh, + resample: int = Image.Resampling.BILINEAR, +) -> Image.Image: + """ + 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.Transform.MESH, deformer.getmesh(image), resample + ) + + +def equalize(image: Image.Image, mask: Image.Image | None = None) -> Image.Image: + """ + 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: Image.Image, + border: int | tuple[int, ...] = 0, + fill: str | int | tuple[int, ...] = 0, +) -> Image.Image: + """ + 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 + color = _color(fill, image.mode) + if image.palette: + palette = ImagePalette.ImagePalette(palette=image.getpalette()) + if isinstance(color, tuple) and (len(color) == 3 or len(color) == 4): + color = palette.getcolor(color) + else: + palette = None + out = Image.new(image.mode, (width, height), color) + if palette: + out.putpalette(palette.palette) + out.paste(image, (left, top)) + return out + + +def fit( + image: Image.Image, + size: tuple[int, int], + method: int = Image.Resampling.BICUBIC, + bleed: float = 0.0, + centering: tuple[float, float] = (0.5, 0.5), +) -> Image.Image: + """ + Returns a resized 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 resize and crop. + :param size: The requested output size in pixels, given as a + (width, height) tuple. + :param method: Resampling method to use. Default is + :py:attr:`~PIL.Image.Resampling.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 + # https://www.cazabon.com + + centering_x, centering_y = centering + + if not 0.0 <= centering_x <= 1.0: + centering_x = 0.5 + if not 0.0 <= centering_y <= 1.0: + centering_y = 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_x + crop_top = bleed_pixels[1] + (live_size[1] - crop_height) * centering_y + + 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: Image.Image) -> Image.Image: + """ + Flip the image vertically (top to bottom). + + :param image: The image to flip. + :return: An image. + """ + return image.transpose(Image.Transpose.FLIP_TOP_BOTTOM) + + +def grayscale(image: Image.Image) -> Image.Image: + """ + Convert the image to grayscale. + + :param image: The image to convert. + :return: An image. + """ + return image.convert("L") + + +def invert(image: Image.Image) -> Image.Image: + """ + Invert (negate) the image. + + :param image: The image to invert. + :return: An image. + """ + lut = list(range(255, -1, -1)) + return image.point(lut) if image.mode == "1" else _lut(image, lut) + + +def mirror(image: Image.Image) -> Image.Image: + """ + Flip image horizontally (left to right). + + :param image: The image to mirror. + :return: An image. + """ + return image.transpose(Image.Transpose.FLIP_LEFT_RIGHT) + + +def posterize(image: Image.Image, bits: int) -> Image.Image: + """ + 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. + """ + mask = ~(2 ** (8 - bits) - 1) + lut = [i & mask for i in range(256)] + return _lut(image, lut) + + +def solarize(image: Image.Image, threshold: int = 128) -> Image.Image: + """ + Invert all pixel values above a threshold. + + :param image: The image to solarize. + :param threshold: All pixels above this grayscale 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: Image.Image, *, in_place: bool = False) -> Image.Image | None: + """ + If an image has an EXIF Orientation tag, other than 1, transpose the image + accordingly, and remove the orientation data. + + :param image: The image to transpose. + :param in_place: Boolean. Keyword-only argument. + 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 transposition applied. If there is no transposition, a copy of the + image will be returned. + """ + image.load() + image_exif = image.getexif() + orientation = image_exif.get(ExifTags.Base.Orientation, 1) + method = { + 2: Image.Transpose.FLIP_LEFT_RIGHT, + 3: Image.Transpose.ROTATE_180, + 4: Image.Transpose.FLIP_TOP_BOTTOM, + 5: Image.Transpose.TRANSPOSE, + 6: Image.Transpose.ROTATE_270, + 7: Image.Transpose.TRANSVERSE, + 8: Image.Transpose.ROTATE_90, + }.get(orientation) + if method is not None: + if in_place: + image.im = image.im.transpose(method) + image._size = image.im.size + else: + transposed_image = image.transpose(method) + exif_image = image if in_place else transposed_image + + exif = exif_image.getexif() + if ExifTags.Base.Orientation in exif: + del exif[ExifTags.Base.Orientation] + if "exif" in exif_image.info: + exif_image.info["exif"] = exif.tobytes() + elif "Raw profile type exif" in exif_image.info: + exif_image.info["Raw profile type exif"] = exif.tobytes().hex() + for key in ("XML:com.adobe.xmp", "xmp"): + if key in exif_image.info: + for pattern in ( + r'tiff:Orientation="([0-9])"', + r"([0-9])", + ): + value = exif_image.info[key] + exif_image.info[key] = ( + re.sub(pattern, "", value) + if isinstance(value, str) + else re.sub(pattern.encode(), b"", value) + ) + if not in_place: + return transposed_image + elif not in_place: + return image.copy() + return None diff --git a/venv/Lib/site-packages/PIL/ImagePalette.py b/venv/Lib/site-packages/PIL/ImagePalette.py new file mode 100644 index 0000000..183f855 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImagePalette.py @@ -0,0 +1,285 @@ +# +# 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. +# +from __future__ import annotations + +import array +from collections.abc import Sequence +from typing import IO, TYPE_CHECKING + +from . import GimpGradientFile, GimpPaletteFile, ImageColor, PaletteFile + +if TYPE_CHECKING: + from . import Image + + +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. The list must consist of + all channels for one color followed by the next color (e.g. RGBRGBRGB). + Defaults to an empty palette. + """ + + def __init__( + self, + mode: str = "RGB", + palette: Sequence[int] | bytes | bytearray | None = None, + ) -> None: + self.mode = mode + self.rawmode: str | None = None # if set, palette contains raw data + self.palette = palette or bytearray() + self.dirty: int | None = None + + @property + def palette(self) -> Sequence[int] | bytes | bytearray: + return self._palette + + @palette.setter + def palette(self, palette: Sequence[int] | bytes | bytearray) -> None: + self._colors: dict[tuple[int, ...], int] | None = None + self._palette = palette + + @property + def colors(self) -> dict[tuple[int, ...], int]: + if self._colors is None: + mode_len = len(self.mode) + self._colors = {} + for i in range(0, len(self.palette), mode_len): + color = tuple(self.palette[i : i + mode_len]) + if color in self._colors: + continue + self._colors[color] = i // mode_len + return self._colors + + @colors.setter + def colors(self, colors: dict[tuple[int, ...], int]) -> None: + self._colors = colors + + def copy(self) -> ImagePalette: + new = ImagePalette() + + new.mode = self.mode + new.rawmode = self.rawmode + if self.palette is not None: + new.palette = self.palette[:] + new.dirty = self.dirty + + return new + + def getdata(self) -> tuple[str, Sequence[int] | bytes | bytearray]: + """ + 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, self.tobytes() + + def tobytes(self) -> bytes: + """Convert palette to bytes. + + .. warning:: This method is experimental. + """ + if self.rawmode: + msg = "palette contains raw palette data" + raise ValueError(msg) + if isinstance(self.palette, bytes): + return self.palette + arr = array.array("B", self.palette) + return arr.tobytes() + + # Declare tostring as an alias for tobytes + tostring = tobytes + + def _new_color_index( + self, image: Image.Image | None = None, e: Exception | None = None + ) -> int: + if not isinstance(self.palette, bytearray): + self._palette = bytearray(self.palette) + index = len(self.palette) // 3 + special_colors: tuple[int | tuple[int, ...] | None, ...] = () + if image: + special_colors = ( + image.info.get("background"), + image.info.get("transparency"), + ) + while index in special_colors: + index += 1 + if index >= 256: + if image: + # Search for an unused index + for i, count in reversed(list(enumerate(image.histogram()))): + if count == 0 and i not in special_colors: + index = i + break + if index >= 256: + msg = "cannot allocate more than 256 colors" + raise ValueError(msg) from e + return index + + def getcolor( + self, + color: tuple[int, ...], + image: Image.Image | None = None, + ) -> int: + """Given an rgb tuple, allocate palette entry. + + .. warning:: This method is experimental. + """ + if self.rawmode: + msg = "palette contains raw palette data" + raise ValueError(msg) + if isinstance(color, tuple): + if self.mode == "RGB": + if len(color) == 4: + if color[3] != 255: + msg = "cannot add non-opaque RGBA color to RGB palette" + raise ValueError(msg) + color = color[:3] + elif self.mode == "RGBA": + if len(color) == 3: + color += (255,) + try: + return self.colors[color] + except KeyError as e: + # allocate new color slot + index = self._new_color_index(image, e) + assert isinstance(self._palette, bytearray) + self.colors[color] = index + if index * 3 < len(self.palette): + self._palette = ( + self._palette[: index * 3] + + bytes(color) + + self._palette[index * 3 + 3 :] + ) + else: + self._palette += bytes(color) + self.dirty = 1 + return index + else: + msg = f"unknown color specifier: {repr(color)}" # type: ignore[unreachable] + raise ValueError(msg) + + def save(self, fp: str | IO[str]) -> None: + """Save palette to text file. + + .. warning:: This method is experimental. + """ + if self.rawmode: + msg = "palette contains raw palette data" + raise ValueError(msg) + if isinstance(fp, str): + fp = open(fp, "w") + fp.write("# Palette\n") + fp.write(f"# Mode: {self.mode}\n") + for i in range(256): + fp.write(f"{i}") + for j in range(i * len(self.mode), (i + 1) * len(self.mode)): + try: + fp.write(f" {self.palette[j]}") + except IndexError: + fp.write(" 0") + fp.write("\n") + fp.close() + + +# -------------------------------------------------------------------- +# Internal + + +def raw(rawmode: str, data: Sequence[int] | bytes | bytearray) -> ImagePalette: + palette = ImagePalette() + palette.rawmode = rawmode + palette.palette = data + palette.dirty = 1 + return palette + + +# -------------------------------------------------------------------- +# Factories + + +def make_linear_lut(black: int, white: float) -> list[int]: + if black == 0: + return [int(white * i // 255) for i in range(256)] + + msg = "unavailable when black is non-zero" + raise NotImplementedError(msg) # FIXME + + +def make_gamma_lut(exp: float) -> list[int]: + return [int(((i / 255.0) ** exp) * 255.0 + 0.5) for i in range(256)] + + +def negative(mode: str = "RGB") -> ImagePalette: + palette = list(range(256 * len(mode))) + palette.reverse() + return ImagePalette(mode, [i // len(mode) for i in palette]) + + +def random(mode: str = "RGB") -> ImagePalette: + from random import randint + + palette = [randint(0, 255) for _ in range(256 * len(mode))] + return ImagePalette(mode, palette) + + +def sepia(white: str = "#fff0c0") -> ImagePalette: + bands = [make_linear_lut(0, band) for band in ImageColor.getrgb(white)] + return ImagePalette("RGB", [bands[i % 3][i // 3] for i in range(256 * 3)]) + + +def wedge(mode: str = "RGB") -> ImagePalette: + palette = list(range(256 * len(mode))) + return ImagePalette(mode, [i // len(mode) for i in palette]) + + +def load(filename: str) -> tuple[bytes, str]: + # FIXME: supports GIMP gradients only + + with open(filename, "rb") as fp: + paletteHandlers: list[ + type[ + GimpPaletteFile.GimpPaletteFile + | GimpGradientFile.GimpGradientFile + | PaletteFile.PaletteFile + ] + ] = [ + GimpPaletteFile.GimpPaletteFile, + GimpGradientFile.GimpGradientFile, + PaletteFile.PaletteFile, + ] + for paletteHandler in paletteHandlers: + try: + fp.seek(0) + lut = paletteHandler(fp).getpalette() + if lut: + break + except (SyntaxError, ValueError): + pass + else: + msg = "cannot load palette" + raise OSError(msg) + + 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 0000000..77e8a60 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImagePath.py @@ -0,0 +1,20 @@ +# +# 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 __future__ import annotations + +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 0000000..2cc40f8 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageQt.py @@ -0,0 +1,219 @@ +# +# 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. +# +from __future__ import annotations + +import sys +from io import BytesIO +from typing import TYPE_CHECKING, Any, Callable, Union + +from . import Image +from ._util import is_path + +if TYPE_CHECKING: + import PyQt6 + import PySide6 + + from . import ImageFile + + QBuffer: type + QByteArray = Union[PyQt6.QtCore.QByteArray, PySide6.QtCore.QByteArray] + QIODevice = Union[PyQt6.QtCore.QIODevice, PySide6.QtCore.QIODevice] + QImage = Union[PyQt6.QtGui.QImage, PySide6.QtGui.QImage] + QPixmap = Union[PyQt6.QtGui.QPixmap, PySide6.QtGui.QPixmap] + +qt_version: str | None +qt_versions = [ + ["6", "PyQt6"], + ["side6", "PySide6"], +] + +# If a version has already been imported, attempt it first +qt_versions.sort(key=lambda version: version[1] in sys.modules, reverse=True) +for version, qt_module in qt_versions: + try: + qRgba: Callable[[int, int, int, int], int] + if qt_module == "PyQt6": + from PyQt6.QtCore import QBuffer, QIODevice + from PyQt6.QtGui import QImage, QPixmap, qRgba + elif qt_module == "PySide6": + from PySide6.QtCore import QBuffer, QIODevice + from PySide6.QtGui import QImage, QPixmap, qRgba + except (ImportError, RuntimeError): + continue + qt_is_installed = True + qt_version = version + break +else: + qt_is_installed = False + qt_version = None + + +def rgb(r: int, g: int, b: int, a: int = 255) -> int: + """(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: QImage | QPixmap) -> ImageFile.ImageFile: + """ + :param im: QImage or PIL ImageQt object + """ + buffer = QBuffer() + qt_openmode: object + if qt_version == "6": + try: + qt_openmode = getattr(QIODevice, "OpenModeFlag") + except AttributeError: + qt_openmode = getattr(QIODevice, "OpenMode") + else: + qt_openmode = QIODevice + buffer.open(getattr(qt_openmode, "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: QPixmap) -> ImageFile.ImageFile: + return fromqimage(im) + + +def align8to32(bytes: bytes, width: int, mode: str) -> bytes: + """ + converts each scanline of data from 8 bit to 32 bit aligned + """ + + bits_per_pixel = {"1": 1, "L": 8, "P": 8, "I;16": 16}[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 = [ + bytes[i * bytes_per_line : (i + 1) * bytes_per_line] + b"\x00" * extra_padding + for i in range(len(bytes) // bytes_per_line) + ] + + return b"".join(new_data) + + +def _toqclass_helper(im: Image.Image | str | QByteArray) -> dict[str, Any]: + data = None + colortable = None + exclusive_fp = False + + # 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 is_path(im): + im = Image.open(im) + exclusive_fp = True + assert isinstance(im, Image.Image) + + qt_format = getattr(QImage, "Format") if qt_version == "6" else QImage + if im.mode == "1": + format = getattr(qt_format, "Format_Mono") + elif im.mode == "L": + format = getattr(qt_format, "Format_Indexed8") + colortable = [rgb(i, i, i) for i in range(256)] + elif im.mode == "P": + format = getattr(qt_format, "Format_Indexed8") + palette = im.getpalette() + assert palette is not None + colortable = [rgb(*palette[i : i + 3]) for i in range(0, len(palette), 3)] + elif im.mode == "RGB": + # Populate the 4th channel with 255 + im = im.convert("RGBA") + + data = im.tobytes("raw", "BGRA") + format = getattr(qt_format, "Format_RGB32") + elif im.mode == "RGBA": + data = im.tobytes("raw", "BGRA") + format = getattr(qt_format, "Format_ARGB32") + elif im.mode == "I;16": + im = im.point(lambda i: i * 256) + + format = getattr(qt_format, "Format_Grayscale16") + else: + if exclusive_fp: + im.close() + msg = f"unsupported image mode {repr(im.mode)}" + raise ValueError(msg) + + size = im.size + __data = data or align8to32(im.tobytes(), size[0], im.mode) + if exclusive_fp: + im.close() + return {"data": __data, "size": size, "format": format, "colortable": colortable} + + +if qt_is_installed: + + class ImageQt(QImage): # type: ignore[misc] + def __init__(self, im: Image.Image | str | QByteArray) -> None: + """ + 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["size"][0], + im_data["size"][1], + im_data["format"], + ) + if im_data["colortable"]: + self.setColorTable(im_data["colortable"]) + + +def toqimage(im: Image.Image | str | QByteArray) -> ImageQt: + return ImageQt(im) + + +def toqpixmap(im: Image.Image | str | QByteArray) -> QPixmap: + qimage = toqimage(im) + pixmap = getattr(QPixmap, "fromImage")(qimage) + if qt_version == "6": + pixmap.detach() + return pixmap diff --git a/venv/Lib/site-packages/PIL/ImageSequence.py b/venv/Lib/site-packages/PIL/ImageSequence.py new file mode 100644 index 0000000..a6fc340 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageSequence.py @@ -0,0 +1,86 @@ +# +# 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. +# + +## +from __future__ import annotations + +from typing import Callable + +from . import Image + + +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: Image.Image) -> None: + if not hasattr(im, "seek"): + msg = "im must have seek method" + raise AttributeError(msg) + self.im = im + self.position = getattr(self.im, "_min_frame", 0) + + def __getitem__(self, ix: int) -> Image.Image: + try: + self.im.seek(ix) + return self.im + except EOFError as e: + msg = "end of sequence" + raise IndexError(msg) from e + + def __iter__(self) -> Iterator: + return self + + def __next__(self) -> Image.Image: + try: + self.im.seek(self.position) + self.position += 1 + return self.im + except EOFError as e: + msg = "end of sequence" + raise StopIteration(msg) from e + + +def all_frames( + im: Image.Image | list[Image.Image], + func: Callable[[Image.Image], Image.Image] | None = None, +) -> list[Image.Image]: + """ + 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 0000000..d62893d --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageShow.py @@ -0,0 +1,360 @@ +# +# 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. +# +from __future__ import annotations + +import abc +import os +import shutil +import subprocess +import sys +from shlex import quote +from typing import Any + +from . import Image + +_viewers = [] + + +def register(viewer: type[Viewer] | Viewer, order: int = 1) -> None: + """ + The :py:func:`register` function is used to register additional viewers:: + + from PIL import ImageShow + ImageShow.register(MyViewer()) # MyViewer will be used as a last resort + ImageShow.register(MySecondViewer(), 0) # MySecondViewer will be prioritised + ImageShow.register(ImageShow.XVViewer(), 0) # XVViewer will be prioritised + + :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. + """ + if isinstance(viewer, type) and issubclass(viewer, Viewer): + viewer = viewer() + if order > 0: + _viewers.append(viewer) + else: + _viewers.insert(0, viewer) + + +def show(image: Image.Image, title: str | None = None, **options: Any) -> bool: + 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 True + return False + + +class Viewer: + """Base class for viewers.""" + + # main api + + def show(self, image: Image.Image, **options: Any) -> int: + """ + The main function for displaying an image. + Converts the given image to the target format and displays it. + """ + + 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: str | None = None + """The format to convert the image into.""" + options: dict[str, Any] = {} + """Additional options used to convert the image.""" + + def get_format(self, image: Image.Image) -> str | None: + """Return format name, or ``None`` to save as PGM/PPM.""" + return self.format + + def get_command(self, file: str, **options: Any) -> str: + """ + Returns the command used to display the file. + Not implemented in the base class. + """ + msg = "unavailable in base viewer" + raise NotImplementedError(msg) + + def save_image(self, image: Image.Image) -> str: + """Save to temporary file and return filename.""" + return image._dump(format=self.get_format(image), **self.options) + + def show_image(self, image: Image.Image, **options: Any) -> int: + """Display the given image.""" + return self.show_file(self.save_image(image), **options) + + def show_file(self, path: str, **options: Any) -> int: + """ + Display given file. + """ + if not os.path.exists(path): + raise FileNotFoundError + os.system(self.get_command(path, **options)) # nosec + return 1 + + +# -------------------------------------------------------------------- + + +class WindowsViewer(Viewer): + """The default viewer on Windows is the default system application for PNG files.""" + + format = "PNG" + options = {"compress_level": 1, "save_all": True} + + def get_command(self, file: str, **options: Any) -> str: + return ( + f'start "Pillow" /WAIT "{file}" ' + "&& ping -n 4 127.0.0.1 >NUL " + f'&& del /f "{file}"' + ) + + def show_file(self, path: str, **options: Any) -> int: + """ + Display given file. + """ + if not os.path.exists(path): + raise FileNotFoundError + subprocess.Popen( + self.get_command(path, **options), + shell=True, + creationflags=getattr(subprocess, "CREATE_NO_WINDOW"), + ) # nosec + return 1 + + +if sys.platform == "win32": + register(WindowsViewer) + + +class MacViewer(Viewer): + """The default viewer on macOS using ``Preview.app``.""" + + format = "PNG" + options = {"compress_level": 1, "save_all": True} + + def get_command(self, file: str, **options: Any) -> str: + # on darwin open returns immediately resulting in the temp + # file removal while app is opening + command = "open -a Preview.app" + command = f"({command} {quote(file)}; sleep 20; rm -f {quote(file)})&" + return command + + def show_file(self, path: str, **options: Any) -> int: + """ + Display given file. + """ + if not os.path.exists(path): + raise FileNotFoundError + subprocess.call(["open", "-a", "Preview.app", path]) + executable = sys.executable or shutil.which("python3") + if executable: + subprocess.Popen( + [ + executable, + "-c", + "import os, sys, time; time.sleep(20); os.remove(sys.argv[1])", + path, + ] + ) + return 1 + + +if sys.platform == "darwin": + register(MacViewer) + + +class UnixViewer(Viewer): + format = "PNG" + options = {"compress_level": 1, "save_all": True} + + @abc.abstractmethod + def get_command_ex(self, file: str, **options: Any) -> tuple[str, str]: + pass + + def get_command(self, file: str, **options: Any) -> str: + command = self.get_command_ex(file, **options)[0] + return f"{command} {quote(file)}" + + +class XDGViewer(UnixViewer): + """ + The freedesktop.org ``xdg-open`` command. + """ + + def get_command_ex(self, file: str, **options: Any) -> tuple[str, str]: + command = executable = "xdg-open" + return command, executable + + def show_file(self, path: str, **options: Any) -> int: + """ + Display given file. + """ + if not os.path.exists(path): + raise FileNotFoundError + subprocess.Popen(["xdg-open", path]) + return 1 + + +class DisplayViewer(UnixViewer): + """ + The ImageMagick ``display`` command. + This viewer supports the ``title`` parameter. + """ + + def get_command_ex( + self, file: str, title: str | None = None, **options: Any + ) -> tuple[str, str]: + command = executable = "display" + if title: + command += f" -title {quote(title)}" + return command, executable + + def show_file(self, path: str, **options: Any) -> int: + """ + Display given file. + """ + if not os.path.exists(path): + raise FileNotFoundError + args = ["display"] + title = options.get("title") + if title: + args += ["-title", title] + args.append(path) + + subprocess.Popen(args) + return 1 + + +class GmDisplayViewer(UnixViewer): + """The GraphicsMagick ``gm display`` command.""" + + def get_command_ex(self, file: str, **options: Any) -> tuple[str, str]: + executable = "gm" + command = "gm display" + return command, executable + + def show_file(self, path: str, **options: Any) -> int: + """ + Display given file. + """ + if not os.path.exists(path): + raise FileNotFoundError + subprocess.Popen(["gm", "display", path]) + return 1 + + +class EogViewer(UnixViewer): + """The GNOME Image Viewer ``eog`` command.""" + + def get_command_ex(self, file: str, **options: Any) -> tuple[str, str]: + executable = "eog" + command = "eog -n" + return command, executable + + def show_file(self, path: str, **options: Any) -> int: + """ + Display given file. + """ + if not os.path.exists(path): + raise FileNotFoundError + subprocess.Popen(["eog", "-n", path]) + return 1 + + +class XVViewer(UnixViewer): + """ + The X Viewer ``xv`` command. + This viewer supports the ``title`` parameter. + """ + + def get_command_ex( + self, file: str, title: str | None = None, **options: Any + ) -> tuple[str, str]: + # note: xv is pretty outdated. most modern systems have + # imagemagick's display command instead. + command = executable = "xv" + if title: + command += f" -name {quote(title)}" + return command, executable + + def show_file(self, path: str, **options: Any) -> int: + """ + Display given file. + """ + if not os.path.exists(path): + raise FileNotFoundError + args = ["xv"] + title = options.get("title") + if title: + args += ["-name", title] + args.append(path) + + subprocess.Popen(args) + return 1 + + +if sys.platform not in ("win32", "darwin"): # unixoids + if shutil.which("xdg-open"): + register(XDGViewer) + if shutil.which("display"): + register(DisplayViewer) + if shutil.which("gm"): + register(GmDisplayViewer) + if shutil.which("eog"): + register(EogViewer) + if shutil.which("xv"): + register(XVViewer) + + +class IPythonViewer(Viewer): + """The viewer for IPython frontends.""" + + def show_image(self, image: Image.Image, **options: Any) -> int: + ipython_display(image) + return 1 + + +try: + from IPython.display import display as ipython_display +except ImportError: + pass +else: + register(IPythonViewer) + + +if __name__ == "__main__": + if len(sys.argv) < 2: + print("Syntax: python3 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 0000000..8bc5045 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageStat.py @@ -0,0 +1,160 @@ +# +# 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. +# +from __future__ import annotations + +import math +from functools import cached_property + +from . import Image + + +class Stat: + def __init__( + self, image_or_list: Image.Image | list[int], mask: Image.Image | None = None + ) -> None: + """ + Calculate statistics for the given image. If a mask is included, + only the regions covered by that mask are included in the + statistics. You can also pass in a previously calculated histogram. + + :param image: A PIL image, or a precalculated histogram. + + .. note:: + + For a PIL image, calculations rely on the + :py:meth:`~PIL.Image.Image.histogram` method. The pixel counts are + grouped into 256 bins, even if the image has more than 8 bits per + channel. So ``I`` and ``F`` mode images have a maximum ``mean``, + ``median`` and ``rms`` of 255, and cannot have an ``extrema`` maximum + of more than 255. + + :param mask: An optional mask. + """ + if isinstance(image_or_list, Image.Image): + self.h = image_or_list.histogram(mask) + elif isinstance(image_or_list, list): + self.h = image_or_list + else: + msg = "first argument must be image or list" # type: ignore[unreachable] + raise TypeError(msg) + self.bands = list(range(len(self.h) // 256)) + + @cached_property + def extrema(self) -> list[tuple[int, int]]: + """ + Min/max values for each band in the image. + + .. note:: + This relies on the :py:meth:`~PIL.Image.Image.histogram` method, and + simply returns the low and high bins used. This is correct for + images with 8 bits per channel, but fails for other modes such as + ``I`` or ``F``. Instead, use :py:meth:`~PIL.Image.Image.getextrema` to + return per-band extrema for the image. This is more correct and + efficient because, for non-8-bit modes, the histogram method uses + :py:meth:`~PIL.Image.Image.getextrema` to determine the bins used. + """ + + def minmax(histogram: list[int]) -> tuple[int, int]: + res_min, res_max = 255, 0 + for i in range(256): + if histogram[i]: + res_min = i + break + for i in range(255, -1, -1): + if histogram[i]: + res_max = i + break + return res_min, res_max + + return [minmax(self.h[i:]) for i in range(0, len(self.h), 256)] + + @cached_property + def count(self) -> list[int]: + """Total number of pixels for each band in the image.""" + return [sum(self.h[i : i + 256]) for i in range(0, len(self.h), 256)] + + @cached_property + def sum(self) -> list[float]: + """Sum of all pixels for each band in the image.""" + + v = [] + for i in range(0, len(self.h), 256): + layer_sum = 0.0 + for j in range(256): + layer_sum += j * self.h[i + j] + v.append(layer_sum) + return v + + @cached_property + def sum2(self) -> list[float]: + """Squared sum of all pixels for each band in the image.""" + + 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 + + @cached_property + def mean(self) -> list[float]: + """Average (arithmetic mean) pixel level for each band in the image.""" + return [self.sum[i] / self.count[i] for i in self.bands] + + @cached_property + def median(self) -> list[int]: + """Median pixel level for each band in the image.""" + + 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 + + @cached_property + def rms(self) -> list[float]: + """RMS (root-mean-square) for each band in the image.""" + return [math.sqrt(self.sum2[i] / self.count[i]) for i in self.bands] + + @cached_property + def var(self) -> list[float]: + """Variance for each band in the image.""" + return [ + (self.sum2[i] - (self.sum[i] ** 2.0) / self.count[i]) / self.count[i] + for i in self.bands + ] + + @cached_property + def stddev(self) -> list[float]: + """Standard deviation for each band in the image.""" + return [math.sqrt(self.var[i]) for i in self.bands] + + +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 0000000..bf29fdb --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageTk.py @@ -0,0 +1,290 @@ +# +# 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. +# +from __future__ import annotations + +import tkinter +from io import BytesIO +from typing import TYPE_CHECKING, Any, cast + +from . import Image, ImageFile + +if TYPE_CHECKING: + from ._typing import CapsuleType + +# -------------------------------------------------------------------- +# Check for Tkinter interface hooks + + +def _get_image_from_kw(kw: dict[str, Any]) -> ImageFile.ImageFile | None: + source = None + if "file" in kw: + source = kw.pop("file") + elif "data" in kw: + source = BytesIO(kw.pop("data")) + if not source: + return None + return Image.open(source) + + +def _pyimagingtkcall( + command: str, photo: PhotoImage | tkinter.PhotoImage, ptr: CapsuleType +) -> None: + tk = photo.tk + try: + tk.call(command, photo, repr(ptr)) + except tkinter.TclError: + # activate Tkinter hook + # may raise an error if it cannot attach to Tkinter + from . import _imagingtk + + _imagingtk.tkinit(tk.interpaddr()) + tk.call(command, photo, repr(ptr)) + + +# -------------------------------------------------------------------- +# 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: Image.Image | str | None = None, + size: tuple[int, int] | None = None, + **kw: Any, + ) -> None: + # Tk compatibility: file or data + if image is None: + image = _get_image_from_kw(kw) + + if image is None: + msg = "Image is required" + raise ValueError(msg) + elif isinstance(image, str): + mode = image + image = None + + if size is None: + msg = "If first argument is mode, size is required" + raise ValueError(msg) + else: + # got an image instead of a mode + mode = image.mode + if mode == "P": + # palette mapped data + image.apply_transparency() + image.load() + mode = image.palette.mode if image.palette else "RGB" + size = image.size + kw["width"], kw["height"] = size + + 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) -> None: + try: + name = self.__photo.name + except AttributeError: + return + self.__photo.name = None + try: + self.__photo.tk.call("image", "delete", name) + except Exception: + pass # ignore internal errors + + def __str__(self) -> str: + """ + 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) -> int: + """ + Get the width of the image. + + :return: The width, in pixels. + """ + return self.__size[0] + + def height(self) -> int: + """ + Get the height of the image. + + :return: The height, in pixels. + """ + return self.__size[1] + + def paste(self, im: Image.Image) -> 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. + """ + # convert to blittable + ptr = im.getim() + image = im.im + if not image.isblock() or im.mode != self.__mode: + block = Image.core.new_block(self.__mode, im.size) + image.convert2(block, image) # convert directly between buffers + ptr = block.ptr + + _pyimagingtkcall("PyImagingPhoto", self.__photo, ptr) + + +# -------------------------------------------------------------------- +# 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: Image.Image | None = None, **kw: Any) -> None: + # Tk compatibility: file or data + if image is None: + image = _get_image_from_kw(kw) + + if image is None: + msg = "Image is required" + raise ValueError(msg) + self.__mode = image.mode + self.__size = image.size + + self.__photo = tkinter.BitmapImage(data=image.tobitmap(), **kw) + + def __del__(self) -> None: + try: + name = self.__photo.name + except AttributeError: + return + self.__photo.name = None + try: + self.__photo.tk.call("image", "delete", name) + except Exception: + pass # ignore internal errors + + def width(self) -> int: + """ + Get the width of the image. + + :return: The width, in pixels. + """ + return self.__size[0] + + def height(self) -> int: + """ + Get the height of the image. + + :return: The height, in pixels. + """ + return self.__size[1] + + def __str__(self) -> str: + """ + 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: PhotoImage) -> Image.Image: + """Copies the contents of a PhotoImage to a PIL image memory.""" + im = Image.new("RGBA", (photo.width(), photo.height())) + + _pyimagingtkcall("PyImagingPhotoGet", photo, im.getim()) + + return im + + +def _show(image: Image.Image, title: str | None) -> None: + """Helper for the Image.show method.""" + + class UI(tkinter.Label): + def __init__(self, master: tkinter.Toplevel, im: Image.Image) -> None: + self.image: BitmapImage | PhotoImage + if im.mode == "1": + self.image = BitmapImage(im, foreground="white", master=master) + else: + self.image = PhotoImage(im, master=master) + if TYPE_CHECKING: + image = cast(tkinter._Image, self.image) + else: + image = self.image + super().__init__(master, image=image, bg="black", bd=0) + + if not getattr(tkinter, "_default_root"): + msg = "tkinter not initialized" + raise OSError(msg) + 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 0000000..a3d8f44 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageTransform.py @@ -0,0 +1,136 @@ +# +# 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 __future__ import annotations + +from collections.abc import Sequence +from typing import Any + +from . import Image + + +class Transform(Image.ImageTransformHandler): + """Base class for other transforms defined in :py:mod:`~PIL.ImageTransform`.""" + + method: Image.Transform + + def __init__(self, data: Sequence[Any]) -> None: + self.data = data + + def getdata(self) -> tuple[Image.Transform, Sequence[int]]: + return self.method, self.data + + def transform( + self, + size: tuple[int, int], + image: Image.Image, + **options: Any, + ) -> Image.Image: + """Perform the transform. Called from :py:meth:`.Image.transform`.""" + # 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:`.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.Transform.AFFINE + + +class PerspectiveTransform(Transform): + """ + Define a perspective image transform. + + This function takes an 8-tuple (a, b, c, d, e, f, g, h). For each pixel + (x, y) in the output image, the new value is taken from a position + ((a x + b y + c) / (g x + h y + 1), (d x + e y + f) / (g x + h y + 1)) 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:`.Image.transform` + + :param matrix: An 8-tuple (a, b, c, d, e, f, g, h). + """ + + method = Image.Transform.PERSPECTIVE + + +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:`.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.Transform.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:`.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.Transform.QUAD + + +class MeshTransform(Transform): + """ + Define a mesh image transform. A mesh transform consists of one or more + individual quad transforms. + + See :py:meth:`.Image.transform` + + :param data: A list of (bbox, quad) tuples. + """ + + method = Image.Transform.MESH diff --git a/venv/Lib/site-packages/PIL/ImageWin.py b/venv/Lib/site-packages/PIL/ImageWin.py new file mode 100644 index 0000000..98c28f2 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageWin.py @@ -0,0 +1,247 @@ +# +# 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 __future__ import annotations + +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: int) -> None: + self.dc = dc + + def __int__(self) -> int: + 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: int) -> None: + self.wnd = wnd + + def __int__(self) -> int: + 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 graylevels + are allocated. For an "RGB" image, a 6x6x6 colour cube is used, together + with 20 graylevels. + + 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: Image.Image | str, size: tuple[int, int] | None = None + ) -> None: + if isinstance(image, str): + mode = image + image = "" + if size is None: + msg = "If first argument is mode, size is required" + raise ValueError(msg) + else: + mode = image.mode + size = image.size + 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: + assert not isinstance(image, str) + self.paste(image) + + def expose(self, handle: int | HDC | HWND) -> None: + """ + 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 + ``CDC.GetHandleAttrib()`` to get a suitable handle. + """ + handle_int = int(handle) + if isinstance(handle, HWND): + dc = self.image.getdc(handle_int) + try: + self.image.expose(dc) + finally: + self.image.releasedc(handle_int, dc) + else: + self.image.expose(handle_int) + + def draw( + self, + handle: int | HDC | HWND, + dst: tuple[int, int, int, int], + src: tuple[int, int, int, int] | None = None, + ) -> 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 src is None: + src = (0, 0) + self.size + handle_int = int(handle) + if isinstance(handle, HWND): + dc = self.image.getdc(handle_int) + try: + self.image.draw(dc, dst, src) + finally: + self.image.releasedc(handle_int, dc) + else: + self.image.draw(handle_int, dst, src) + + def query_palette(self, handle: int | HDC | HWND) -> int: + """ + 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: The number of entries that were changed (if one or more entries, + this indicates that the image should be redrawn). + """ + handle_int = int(handle) + if isinstance(handle, HWND): + handle = self.image.getdc(handle_int) + try: + result = self.image.query_palette(handle) + finally: + self.image.releasedc(handle, handle) + else: + result = self.image.query_palette(handle_int) + return result + + def paste( + self, im: Image.Image, box: tuple[int, int, int, int] | None = None + ) -> 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: bytes) -> None: + """ + Load display memory contents from byte data. + + :param buffer: A buffer containing display data (usually + data returned from :py:func:`~PIL.ImageWin.Dib.tobytes`) + """ + self.image.frombytes(buffer) + + def tobytes(self) -> bytes: + """ + 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: str = "PIL", width: int | None = None, height: int | None = None + ) -> None: + self.hwnd = Image.core.createwindow( + title, self.__dispatcher, width or 0, height or 0 + ) + + def __dispatcher(self, action: str, *args: int) -> None: + getattr(self, f"ui_handle_{action}")(*args) + + def ui_handle_clear(self, dc: int, x0: int, y0: int, x1: int, y1: int) -> None: + pass + + def ui_handle_damage(self, x0: int, y0: int, x1: int, y1: int) -> None: + pass + + def ui_handle_destroy(self) -> None: + pass + + def ui_handle_repair(self, dc: int, x0: int, y0: int, x1: int, y1: int) -> None: + pass + + def ui_handle_resize(self, width: int, height: int) -> None: + pass + + def mainloop(self) -> None: + Image.core.eventloop() + + +class ImageWindow(Window): + """Create an image window which displays the given image.""" + + def __init__(self, image: Image.Image | Dib, title: str = "PIL") -> None: + 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: int, x0: int, y0: int, x1: int, y1: int) -> None: + 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 0000000..068cd5c --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImtImagePlugin.py @@ -0,0 +1,103 @@ +# +# 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. +# +from __future__ import annotations + +import re + +from . import Image, ImageFile + +# +# -------------------------------------------------------------------- + +field = re.compile(rb"([a-z]*) ([^ \r\n]*)") + + +## +# Image plugin for IM Tools images. + + +class ImtImageFile(ImageFile.ImageFile): + format = "IMT" + format_description = "IM Tools" + + def _open(self) -> None: + # Quick rejection: if there's not a LF among the first + # 100 bytes, this is (probably) not a text header. + + assert self.fp is not None + + buffer = self.fp.read(100) + if b"\n" not in buffer: + msg = "not an IM file" + raise SyntaxError(msg) + + xsize = ysize = 0 + + while True: + if buffer: + s = buffer[:1] + buffer = buffer[1:] + else: + s = self.fp.read(1) + if not s: + break + + if s == b"\x0C": + # image data begins + self.tile = [ + ImageFile._Tile( + "raw", + (0, 0) + self.size, + self.fp.tell() - len(buffer), + self.mode, + ) + ] + + break + + else: + # read key/value pair + if b"\n" not in buffer: + buffer += self.fp.read(100) + lines = buffer.split(b"\n") + s += lines.pop(0) + buffer = b"\n".join(lines) + 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 == b"width": + xsize = int(v) + self._size = xsize, ysize + elif k == b"height": + ysize = int(v) + self._size = xsize, ysize + elif k == b"pixel" and v == b"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 0000000..60ab7c8 --- /dev/null +++ b/venv/Lib/site-packages/PIL/IptcImagePlugin.py @@ -0,0 +1,249 @@ +# +# 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. +# +from __future__ import annotations + +from collections.abc import Sequence +from io import BytesIO +from typing import cast + +from . import Image, ImageFile +from ._binary import i16be as i16 +from ._binary import i32be as i32 +from ._deprecate import deprecate + +COMPRESSION = {1: "raw", 5: "jpeg"} + + +def __getattr__(name: str) -> bytes: + if name == "PAD": + deprecate("IptcImagePlugin.PAD", 12) + return b"\0\0\0\0" + msg = f"module '{__name__}' has no attribute '{name}'" + raise AttributeError(msg) + + +# +# Helpers + + +def _i(c: bytes) -> int: + return i32((b"\0\0\0\0" + c)[-4:]) + + +def _i8(c: int | bytes) -> int: + return c if isinstance(c, int) else c[0] + + +def i(c: bytes) -> int: + """.. deprecated:: 10.2.0""" + deprecate("IptcImagePlugin.i", 12) + return _i(c) + + +def dump(c: Sequence[int | bytes]) -> None: + """.. deprecated:: 10.2.0""" + deprecate("IptcImagePlugin.dump", 12) + for i in c: + print(f"{_i8(i):02x}", 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: tuple[int, int]) -> int: + return _i(self.info[key]) + + def field(self) -> tuple[tuple[int, int] | None, int]: + # + # get a IPTC field header + s = self.fp.read(5) + if not s.strip(b"\x00"): + return None, 0 + + tag = s[1], s[2] + + # syntax + if s[0] != 0x1C or tag[0] not in [1, 2, 3, 4, 5, 6, 7, 8, 9, 240]: + msg = "invalid IPTC/NAA file" + raise SyntaxError(msg) + + # field size + size = s[3] + if size > 132: + msg = "illegal field length in IPTC/NAA file" + raise OSError(msg) + 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) -> None: + # 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 = self.info[(3, 60)][0] + component = self.info[(3, 60)][1] + if (3, 65) in self.info: + id = 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: + msg = "Unknown IPTC image compression" + raise OSError(msg) from e + + # tile + if tag == (8, 10): + self.tile = [ + ImageFile._Tile("iptc", (0, 0) + self.size, offset, compression) + ] + + def load(self) -> Image.core.PixelAccess | None: + if len(self.tile) != 1 or self.tile[0][0] != "iptc": + return ImageFile.ImageFile.load(self) + + offset, compression = self.tile[0][2:] + + self.fp.seek(offset) + + # Copy image data to temporary file + o = BytesIO() + if compression == "raw": + # To simplify access to the extracted file, + # prepend a PPM header + o.write(b"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) + + with Image.open(o) as _im: + _im.load() + self.im = _im.im + return None + + +Image.register_open(IptcImageFile.format, IptcImageFile) + +Image.register_extension(IptcImageFile.format, ".iim") + + +def getiptcinfo( + im: ImageFile.ImageFile, +) -> dict[tuple[int, int], bytes | list[bytes]] | None: + """ + 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 JpegImagePlugin, TiffImagePlugin + + data = None + + info: dict[tuple[int, int], bytes | list[bytes]] = {} + if isinstance(im, IptcImageFile): + # return info dictionary right away + for k, v in im.info.items(): + if isinstance(k, tuple): + info[k] = v + return 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_v2[TiffImagePlugin.IPTC_NAA_CHUNK] + except KeyError: + pass + + if data is None: + return None # no properties + + # create an IptcImagePlugin object without initializing it + class FakeImage: + pass + + fake_im = FakeImage() + fake_im.__class__ = IptcImageFile # type: ignore[assignment] + iptc_im = cast(IptcImageFile, fake_im) + + # parse the IPTC information chunk + iptc_im.info = {} + iptc_im.fp = BytesIO(data) + + try: + iptc_im._open() + except (IndexError, KeyError): + pass # expected failure + + for k, v in iptc_im.info.items(): + if isinstance(k, tuple): + info[k] = v + return info diff --git a/venv/Lib/site-packages/PIL/Jpeg2KImagePlugin.py b/venv/Lib/site-packages/PIL/Jpeg2KImagePlugin.py new file mode 100644 index 0000000..6782835 --- /dev/null +++ b/venv/Lib/site-packages/PIL/Jpeg2KImagePlugin.py @@ -0,0 +1,443 @@ +# +# The Python Imaging Library +# $Id$ +# +# JPEG2000 file handling +# +# History: +# 2014-03-12 ajh Created +# 2021-06-30 rogermb Extract dpi information from the 'resc' header box +# +# Copyright (c) 2014 Coriolis Systems Limited +# Copyright (c) 2014 Alastair Houghton +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import io +import os +import struct +from collections.abc import Callable +from typing import IO, cast + +from . import Image, ImageFile, ImagePalette, _binary + + +class BoxReader: + """ + A small helper class to read fields stored in JPEG2000 header boxes + and to easily step into and read sub-boxes. + """ + + def __init__(self, fp: IO[bytes], length: int = -1) -> None: + self.fp = fp + self.has_length = length >= 0 + self.length = length + self.remaining_in_box = -1 + + def _can_read(self, num_bytes: int) -> bool: + if self.has_length and self.fp.tell() + num_bytes > self.length: + # Outside box: ensure we don't read past the known file length + return False + if self.remaining_in_box >= 0: + # Inside box contents: ensure read does not go past box boundaries + return num_bytes <= self.remaining_in_box + else: + return True # No length known, just read + + def _read_bytes(self, num_bytes: int) -> bytes: + if not self._can_read(num_bytes): + msg = "Not enough data in header" + raise SyntaxError(msg) + + data = self.fp.read(num_bytes) + if len(data) < num_bytes: + msg = f"Expected to read {num_bytes} bytes but only got {len(data)}." + raise OSError(msg) + + if self.remaining_in_box > 0: + self.remaining_in_box -= num_bytes + return data + + def read_fields(self, field_format: str) -> tuple[int | bytes, ...]: + size = struct.calcsize(field_format) + data = self._read_bytes(size) + return struct.unpack(field_format, data) + + def read_boxes(self) -> BoxReader: + size = self.remaining_in_box + data = self._read_bytes(size) + return BoxReader(io.BytesIO(data), size) + + def has_next_box(self) -> bool: + if self.has_length: + return self.fp.tell() + self.remaining_in_box < self.length + else: + return True + + def next_box_type(self) -> bytes: + # Skip the rest of the box if it has not been read + if self.remaining_in_box > 0: + self.fp.seek(self.remaining_in_box, os.SEEK_CUR) + self.remaining_in_box = -1 + + # Read the length and type of the next box + lbox, tbox = cast(tuple[int, bytes], self.read_fields(">I4s")) + if lbox == 1: + lbox = cast(int, self.read_fields(">Q")[0]) + hlen = 16 + else: + hlen = 8 + + if lbox < hlen or not self._can_read(lbox - hlen): + msg = "Invalid header length" + raise SyntaxError(msg) + + self.remaining_in_box = lbox - hlen + return tbox + + +def _parse_codestream(fp: IO[bytes]) -> tuple[tuple[int, int], str]: + """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 = _binary.i16be(hdr) + siz = hdr + fp.read(lsiz - 2) + lsiz, rsiz, xsiz, ysiz, xosiz, yosiz, _, _, _, _, csiz = struct.unpack_from( + ">HHIIIIIIIIH", siz + ) + + size = (xsiz - xosiz, ysiz - yosiz) + if csiz == 1: + ssiz = struct.unpack_from(">B", siz, 38) + if (ssiz[0] & 0x7F) + 1 > 8: + mode = "I;16" + else: + mode = "L" + elif csiz == 2: + mode = "LA" + elif csiz == 3: + mode = "RGB" + elif csiz == 4: + mode = "RGBA" + else: + msg = "unable to determine J2K image mode" + raise SyntaxError(msg) + + return size, mode + + +def _res_to_dpi(num: int, denom: int, exp: int) -> float | None: + """Convert JPEG2000's (numerator, denominator, exponent-base-10) resolution, + calculated as (num / denom) * 10^exp and stored in dots per meter, + to floating-point dots per inch.""" + if denom == 0: + return None + return (254 * num * (10**exp)) / (10000 * denom) + + +def _parse_jp2_header( + fp: IO[bytes], +) -> tuple[ + tuple[int, int], + str, + str | None, + tuple[float, float] | None, + ImagePalette.ImagePalette | None, +]: + """Parse the JP2 header box to extract size, component count, + color space information, and optionally DPI information, + returning a (size, mode, mimetype, dpi) tuple.""" + + # Find the JP2 header box + reader = BoxReader(fp) + header = None + mimetype = None + while reader.has_next_box(): + tbox = reader.next_box_type() + + if tbox == b"jp2h": + header = reader.read_boxes() + break + elif tbox == b"ftyp": + if reader.read_fields(">4s")[0] == b"jpx ": + mimetype = "image/jpx" + assert header is not None + + size = None + mode = None + bpc = None + nc = None + dpi = None # 2-tuple of DPI info, or None + palette = None + + while header.has_next_box(): + tbox = header.next_box_type() + + if tbox == b"ihdr": + height, width, nc, bpc = header.read_fields(">IIHB") + assert isinstance(height, int) + assert isinstance(width, int) + assert isinstance(bpc, int) + size = (width, height) + 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" + elif tbox == b"colr" and nc == 4: + meth, _, _, enumcs = header.read_fields(">BBBI") + if meth == 1 and enumcs == 12: + mode = "CMYK" + elif tbox == b"pclr" and mode in ("L", "LA"): + ne, npc = header.read_fields(">HB") + assert isinstance(ne, int) + assert isinstance(npc, int) + max_bitdepth = 0 + for bitdepth in header.read_fields(">" + ("B" * npc)): + assert isinstance(bitdepth, int) + if bitdepth > max_bitdepth: + max_bitdepth = bitdepth + if max_bitdepth <= 8: + palette = ImagePalette.ImagePalette("RGBA" if npc == 4 else "RGB") + for i in range(ne): + color: list[int] = [] + for value in header.read_fields(">" + ("B" * npc)): + assert isinstance(value, int) + color.append(value) + palette.getcolor(tuple(color)) + mode = "P" if mode == "L" else "PA" + elif tbox == b"res ": + res = header.read_boxes() + while res.has_next_box(): + tres = res.next_box_type() + if tres == b"resc": + vrcn, vrcd, hrcn, hrcd, vrce, hrce = res.read_fields(">HHHHBB") + assert isinstance(vrcn, int) + assert isinstance(vrcd, int) + assert isinstance(hrcn, int) + assert isinstance(hrcd, int) + assert isinstance(vrce, int) + assert isinstance(hrce, int) + hres = _res_to_dpi(hrcn, hrcd, hrce) + vres = _res_to_dpi(vrcn, vrcd, vrce) + if hres is not None and vres is not None: + dpi = (hres, vres) + break + + if size is None or mode is None: + msg = "Malformed JP2 header" + raise SyntaxError(msg) + + return size, mode, mimetype, dpi, palette + + +## +# Image plugin for JPEG2000 images. + + +class Jpeg2KImageFile(ImageFile.ImageFile): + format = "JPEG2000" + format_description = "JPEG 2000 (ISO 15444)" + + def _open(self) -> None: + sig = self.fp.read(4) + if sig == b"\xff\x4f\xff\x51": + self.codec = "j2k" + self._size, self._mode = _parse_codestream(self.fp) + self._parse_comment() + 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, dpi, self.palette = header + if dpi is not None: + self.info["dpi"] = dpi + if self.fp.read(12).endswith(b"jp2c\xff\x4f\xff\x51"): + hdr = self.fp.read(2) + length = _binary.i16be(hdr) + self.fp.seek(length - 2, os.SEEK_CUR) + self._parse_comment() + else: + msg = "not a JPEG 2000 file" + raise SyntaxError(msg) + + 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 = [ + ImageFile._Tile( + "jpeg2k", + (0, 0) + self.size, + 0, + (self.codec, self._reduce, self.layers, fd, length), + ) + ] + + def _parse_comment(self) -> None: + while True: + marker = self.fp.read(2) + if not marker: + break + typ = marker[1] + if typ in (0x90, 0xD9): + # Start of tile or end of codestream + break + hdr = self.fp.read(2) + length = _binary.i16be(hdr) + if typ == 0x64: + # Comment + self.info["comment"] = self.fp.read(length - 2)[2:] + break + else: + self.fp.seek(length - 2, os.SEEK_CUR) + + @property # type: ignore[override] + def reduce( + self, + ) -> ( + Callable[[int | tuple[int, int], tuple[int, int, int, int] | None], Image.Image] + | int + ): + # 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: int) -> None: + self._reduce = value + + def load(self) -> Image.core.PixelAccess | None: + 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] + assert isinstance(t[3], tuple) + t3 = (t[3][0], self._reduce, self.layers, t[3][3], t[3][4]) + self.tile = [ImageFile._Tile(t[0], (0, 0) + self.size, t[2], t3)] + + return ImageFile.ImageFile.load(self) + + +def _accept(prefix: bytes) -> bool: + 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: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + # Get the keyword arguments + info = im.encoderinfo + + if isinstance(filename, str): + filename = filename.encode() + if filename.endswith(b".j2k") or info.get("no_jp2", False): + kind = "j2k" + else: + kind = "jp2" + + 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 + ) + ): + msg = "quality_layers must be a sequence of numbers" + raise ValueError(msg) + + 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") + mct = info.get("mct", 0) + signed = info.get("signed", False) + comment = info.get("comment") + if isinstance(comment, str): + comment = comment.encode() + plt = info.get("plt", False) + + 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, + mct, + signed, + fd, + comment, + plt, + ) + + ImageFile._save(im, fp, [ImageFile._Tile("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 0000000..457690a --- /dev/null +++ b/venv/Lib/site-packages/PIL/JpegImagePlugin.py @@ -0,0 +1,905 @@ +# +# 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. +# +from __future__ import annotations + +import array +import io +import math +import os +import struct +import subprocess +import sys +import tempfile +import warnings +from typing import IO, TYPE_CHECKING, Any + +from . import Image, ImageFile +from ._binary import i16be as i16 +from ._binary import i32be as i32 +from ._binary import o8 +from ._binary import o16be as o16 +from ._deprecate import deprecate +from .JpegPresets import presets + +if TYPE_CHECKING: + from .MpoImagePlugin import MpoImageFile + +# +# Parser + + +def Skip(self: JpegImageFile, marker: int) -> None: + n = i16(self.fp.read(2)) - 2 + ImageFile._safe_read(self.fp, n) + + +def APP(self: JpegImageFile, marker: int) -> None: + # + # 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 = f"APP{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 = s[7] + jfif_density = i16(s, 8), i16(s, 10) + except Exception: + pass + else: + if jfif_unit == 1: + self.info["dpi"] = jfif_density + elif jfif_unit == 2: # cm + # 1 dpcm = 2.54 dpi + self.info["dpi"] = tuple(d * 2.54 for d in jfif_density) + self.info["jfif_unit"] = jfif_unit + self.info["jfif_density"] = jfif_density + elif marker == 0xFFE1 and s[:6] == b"Exif\0\0": + # extract EXIF information + if "exif" in self.info: + self.info["exif"] += s[6:] + else: + self.info["exif"] = s + self._exif_offset = self.fp.tell() - n + 6 + elif marker == 0xFFE1 and s[:29] == b"http://ns.adobe.com/xap/1.0/\x00": + self.info["xmp"] = s.split(b"\x00", 1)[1] + 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 = 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 + photoshop[code] = { + "XResolution": i32(data, 0) / 65536, + "DisplayedUnitsX": i16(data, 4), + "YResolution": i32(data, 8) / 65536, + "DisplayedUnitsY": i16(data, 12), + } + else: + 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 = s[11] + except IndexError: + 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 + + +def COM(self: JpegImageFile, marker: int) -> None: + # + # 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: JpegImageFile, marker: int) -> None: + # + # 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 = s[0] + if self.bits != 8: + msg = f"cannot handle {self.bits}-bit layers" + raise SyntaxError(msg) + + self.layers = s[5] + if self.layers == 1: + self._mode = "L" + elif self.layers == 3: + self._mode = "RGB" + elif self.layers == 4: + self._mode = "CMYK" + else: + msg = f"cannot handle {self.layers}-layer images" + raise SyntaxError(msg) + + 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 self.icclist[0][13] == len(self.icclist): + profile = [p[14:] for p in self.icclist] + 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], t[1] // 16, t[1] & 15, t[2])) + + +def DQT(self: JpegImageFile, marker: int) -> None: + # + # Define quantization table. 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): + v = s[0] + precision = 1 if (v // 16 == 0) else 2 # in bytes + qt_length = 1 + precision * 64 + if len(s) < qt_length: + msg = "bad quantization table marker" + raise SyntaxError(msg) + data = array.array("B" if precision == 1 else "H", s[1:qt_length]) + if sys.byteorder == "little" and precision > 1: + data.byteswap() # the values are always big-endian + self.quantization[v & 15] = [data[i] for i in zigzag_index] + s = s[qt_length:] + + +# +# 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: bytes) -> bool: + # Magic number was taken from https://en.wikipedia.org/wiki/JPEG + return prefix[: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) -> None: + s = self.fp.read(3) + + if not _accept(s): + msg = "not a JPEG file" + raise SyntaxError(msg) + s = b"\xFF" + + # Create attributes + self.bits = self.layers = 0 + self._exif_offset = 0 + + # JPEG specifics (internal) + self.layer: list[tuple[int, int, int, int]] = [] + self._huffman_dc: dict[Any, Any] = {} + self._huffman_ac: dict[Any, Any] = {} + self.quantization: dict[int, list[int]] = {} + self.app: dict[str, bytes] = {} # compatibility + self.applist: list[tuple[str, bytes]] = [] + self.icclist: list[bytes] = [] + + while True: + i = s[0] + 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 = [ + ImageFile._Tile("jpeg", (0, 0) + self.size, 0, (rawmode, "")) + ] + # self.__offset = self.fp.tell() + break + s = self.fp.read(1) + elif i in {0, 0xFFFF}: + # padded marker or junk; move on + s = b"\xff" + elif i == 0xFF00: # Skip extraneous data (escaped 0xFF) + s = self.fp.read(1) + else: + msg = "no marker found" + raise SyntaxError(msg) + + self._read_dpi_from_exif() + + def __getattr__(self, name: str) -> Any: + if name in ("huffman_ac", "huffman_dc"): + deprecate(name, 12) + return getattr(self, "_" + name) + raise AttributeError(name) + + def __getstate__(self) -> list[Any]: + return super().__getstate__() + [self.layers, self.layer] + + def __setstate__(self, state: list[Any]) -> None: + super().__setstate__(state) + self.layers, self.layer = state[5:] + + def load_read(self, read_bytes: int) -> 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 and not hasattr(self, "_ended"): + # Premature EOF. + # Pretend file is finished adding EOI marker + self._ended = True + return b"\xFF\xD9" + + return s + + def draft( + self, mode: str | None, size: tuple[int, int] | None + ) -> tuple[str, tuple[int, int, float, float]] | None: + if len(self.tile) != 1: + return None + + # Protect from second call + if self.decoderconfig: + return None + + d, e, o, a = self.tile[0] + scale = 1 + original_size = self.size + + assert isinstance(a, tuple) + 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 + assert e is not None + 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 = [ImageFile._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) -> None: + # 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: + try: + os.unlink(path) + except OSError: + pass + + msg = "Invalid Filename" + raise ValueError(msg) + + 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) -> dict[int, Any] | None: + return _getexif(self) + + def _read_dpi_from_exif(self) -> None: + # If DPI isn't in JPEG header, fetch from EXIF + if "dpi" in self.info or "exif" not in self.info: + return + 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 math.isnan(dpi): + msg = "DPI is not a number" + raise ValueError(msg) + if resolution_unit == 3: # cm + # 1 dpcm = 2.54 dpi + dpi *= 2.54 + self.info["dpi"] = dpi, dpi + except ( + struct.error, # truncated EXIF + KeyError, # dpi not included + SyntaxError, # invalid/unreadable EXIF + TypeError, # dpi is an invalid float + ValueError, # dpi is an invalid float + ZeroDivisionError, # invalid dpi rational value + ): + self.info["dpi"] = 72, 72 + + def _getmp(self) -> dict[int, Any] | None: + return _getmp(self) + + +def _getexif(self: JpegImageFile) -> dict[int, Any] | None: + if "exif" not in self.info: + return None + return self.getexif()._get_merged_dict() + + +def _getmp(self: JpegImageFile) -> dict[int, Any] | None: + # 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 plugin. + + # 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 + from . import TiffImagePlugin + + try: + info = TiffImagePlugin.ImageFileDirectory_v2(head) + file_contents.seek(info.next) + info.load(file_contents) + mp = dict(info) + except Exception as e: + msg = "malformed MP Index (unreadable directory)" + raise SyntaxError(msg) from e + # it's an error not to have a number of images + try: + quant = mp[0xB001] + except KeyError as e: + msg = "malformed MP Index (no number of images)" + raise SyntaxError(msg) from e + # get MP entries + mpentries = [] + try: + rawmpentries = mp[0xB002] + for entrynum in range(0, quant): + unpackedentry = struct.unpack_from( + f"{endianness}LLLHH", 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: + msg = "unsupported picture format in MPO" + raise SyntaxError(msg) + 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: + msg = "malformed MP Index (bad MP Entry)" + raise SyntaxError(msg) 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 get_sampling(im: Image.Image) -> int: + # 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 isinstance(im, JpegImageFile) 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: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if im.width == 0 or im.height == 0: + msg = "cannot write empty image as JPEG" + raise ValueError(msg) + + try: + rawmode = RAWMODE[im.mode] + except KeyError as e: + msg = f"cannot write mode {im.mode} as JPEG" + raise OSError(msg) 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): + msg = "Invalid quality setting" + raise ValueError(msg) + 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": + msg = "Cannot use 'keep' when original image is not a JPEG" + raise ValueError(msg) + subsampling = get_sampling(im) + + def validate_qtables( + qtables: ( + str | tuple[list[int], ...] | list[list[int]] | dict[int, list[int]] | None + ) + ) -> list[list[int]] | None: + 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: + msg = "Invalid quantization table" + raise ValueError(msg) 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 = [ + qtables[key] for key in range(len(qtables)) if key in qtables + ] + elif isinstance(qtables, tuple): + qtables = list(qtables) + if not (0 < len(qtables) < 5): + msg = "None or too many quantization tables" + raise ValueError(msg) + for idx, table in enumerate(qtables): + try: + if len(table) != 64: + msg = "Invalid quantization table" + raise TypeError(msg) + table_array = array.array("H", table) + except TypeError as e: + msg = "Invalid quantization table" + raise ValueError(msg) from e + else: + qtables[idx] = list(table_array) + return qtables + + if qtables == "keep": + if im.format != "JPEG": + msg = "Cannot use 'keep' when original image is not a JPEG" + raise ValueError(msg) + qtables = getattr(im, "quantization", None) + qtables = validate_qtables(qtables) + + extra = info.get("extra", b"") + + MAX_BYTES_IN_MARKER = 65533 + xmp = info.get("xmp") + if xmp: + overhead_len = 29 # b"http://ns.adobe.com/xap/1.0/\x00" + max_data_bytes_in_marker = MAX_BYTES_IN_MARKER - overhead_len + if len(xmp) > max_data_bytes_in_marker: + msg = "XMP data is too long" + raise ValueError(msg) + size = o16(2 + overhead_len + len(xmp)) + extra += b"\xFF\xE1" + size + b"http://ns.adobe.com/xap/1.0/\x00" + xmp + + icc_profile = info.get("icc_profile") + if icc_profile: + overhead_len = 14 # b"ICC_PROFILE\0" + o8(i) + o8(len(markers)) + max_data_bytes_in_marker = MAX_BYTES_IN_MARKER - 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 = o16(2 + overhead_len + len(marker)) + extra += ( + b"\xFF\xE2" + + size + + b"ICC_PROFILE\0" + + o8(i) + + o8(len(markers)) + + marker + ) + i += 1 + + comment = info.get("comment", im.info.get("comment")) + + # "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() + if len(exif) > MAX_BYTES_IN_MARKER: + msg = "EXIF data is too long" + raise ValueError(msg) + + # get keyword arguments + im.encoderconfig = ( + quality, + progressive, + info.get("smooth", 0), + optimize, + info.get("keep_rgb", False), + info.get("streamtype", 0), + dpi[0], + dpi[1], + subsampling, + info.get("restart_marker_blocks", 0), + info.get("restart_marker_rows", 0), + qtables, + comment, + 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] + if exif: + bufsize += len(exif) + 5 + if extra: + bufsize += len(extra) + 1 + else: + # 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(bufsize, len(exif) + 5, len(extra) + 1) + + ImageFile._save( + im, fp, [ImageFile._Tile("jpeg", (0, 0) + im.size, 0, rawmode)], bufsize + ) + + +def _save_cjpeg(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + # 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: IO[bytes], filename: str | bytes | None = None +) -> JpegImageFile | MpoImageFile: + im = JpegImageFile(fp, filename) + try: + mpheader = im._getmp() + if mpheader is not None and mpheader[45057] > 1: + for segment, content in im.applist: + if segment == "APP1" and b' hdrgm:Version="' in content: + # Ultra HDR images are not yet supported + return im + # 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 0000000..d0e64a3 --- /dev/null +++ b/venv/Lib/site-packages/PIL/JpegPresets.py @@ -0,0 +1,242 @@ +""" +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 +:func:`.JpegImagePlugin.get_sampling` function. + +In JPEG compressed data a JPEG marker is used instead of an EXIF tag. +(ref.: https://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 lists. You can pass this dict +directly as the qtables argument when saving a JPEG. + +The quantization table format in presets is a list with sublists. These formats +are interchangeable. + +Libjpeg ref.: +https://web.archive.org/web/20120328125543/http://www.jpegcameras.com/libjpeg/libjpeg-3.html + +""" + +from __future__ import annotations + +# 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 0000000..5dd031b --- /dev/null +++ b/venv/Lib/site-packages/PIL/McIdasImagePlugin.py @@ -0,0 +1,80 @@ +# +# 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. +# +from __future__ import annotations + +import struct + +from . import Image, ImageFile + + +def _accept(prefix: bytes) -> bool: + return prefix[: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) -> None: + # parse area file directory + assert self.fp is not None + + s = self.fp.read(256) + if not _accept(s) or len(s) != 256: + msg = "not an McIdas area file" + raise SyntaxError(msg) + + 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: + msg = "unsupported McIdas format" + raise SyntaxError(msg) + + 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 = [ + ImageFile._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 0000000..5f23a34 --- /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. +# +from __future__ import annotations + +import olefile + +from . import Image, TiffImagePlugin + +# +# -------------------------------------------------------------------- + + +def _accept(prefix: bytes) -> bool: + 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) -> None: + # 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: + msg = "not an MIC file; invalid OLE file" + raise SyntaxError(msg) from e + + # find ACI subfiles with Image members (maybe not the + # best way to identify MIC files, but what the... ;-) + + self.images = [ + path + for path in self.ole.listdir() + if path[1:] and path[0][-4:] == ".ACI" and path[1] == "Image" + ] + + # if we didn't find any images, this is probably not + # an MIC file. + if not self.images: + msg = "not an MIC file; no image entries" + raise SyntaxError(msg) + + self.frame = -1 + self._n_frames = len(self.images) + self.is_animated = self._n_frames > 1 + + self.__fp = self.fp + self.seek(0) + + def seek(self, frame: int) -> None: + if not self._seek_check(frame): + return + try: + filename = self.images[frame] + except IndexError as e: + msg = "no such frame" + raise EOFError(msg) from e + + self.fp = self.ole.openstream(filename) + + TiffImagePlugin.TiffImageFile._open(self) + + self.frame = frame + + def tell(self) -> int: + return self.frame + + def close(self) -> None: + self.__fp.close() + self.ole.close() + super().close() + + def __exit__(self, *args: object) -> None: + self.__fp.close() + self.ole.close() + super().__exit__() + + +# +# -------------------------------------------------------------------- + +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 0000000..ad4d3e9 --- /dev/null +++ b/venv/Lib/site-packages/PIL/MpegImagePlugin.py @@ -0,0 +1,88 @@ +# +# 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 __future__ import annotations + +from . import Image, ImageFile +from ._binary import i8 +from ._typing import SupportsRead + +# +# Bitstream parser + + +class BitStream: + def __init__(self, fp: SupportsRead[bytes]) -> None: + self.fp = fp + self.bits = 0 + self.bitbuffer = 0 + + def next(self) -> int: + return i8(self.fp.read(1)) + + def peek(self, bits: int) -> int: + 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: int) -> None: + 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: int) -> int: + v = self.peek(bits) + self.bits = self.bits - bits + return v + + +def _accept(prefix: bytes) -> bool: + return prefix[:4] == b"\x00\x00\x01\xb3" + + +## +# 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) -> None: + assert self.fp is not None + + s = BitStream(self.fp) + if s.read(32) != 0x1B3: + msg = "not an MPEG file" + raise SyntaxError(msg) + + self._mode = "RGB" + self._size = s.read(12), s.read(12) + + +# -------------------------------------------------------------------- +# Registry stuff + +Image.register_open(MpegImageFile.format, MpegImageFile, _accept) + +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 0000000..71f89a0 --- /dev/null +++ b/venv/Lib/site-packages/PIL/MpoImagePlugin.py @@ -0,0 +1,190 @@ +# +# 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 __future__ import annotations + +import itertools +import os +import struct +from typing import IO, Any, cast + +from . import ( + Image, + ImageFile, + ImageSequence, + JpegImagePlugin, + TiffImagePlugin, +) +from ._binary import o32le + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + JpegImagePlugin._save(im, fp, filename) + + +def _save_all(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + append_images = im.encoderinfo.get("append_images", []) + if not append_images and not getattr(im, "is_animated", False): + _save(im, fp, filename) + return + + mpf_offset = 28 + offsets: list[int] = [] + for imSequence in itertools.chain([im], append_images): + for im_frame in ImageSequence.Iterator(imSequence): + if not offsets: + # APP2 marker + im_frame.encoderinfo["extra"] = ( + b"\xFF\xE2" + struct.pack(">H", 6 + 82) + b"MPF\0" + b" " * 82 + ) + exif = im_frame.encoderinfo.get("exif") + if isinstance(exif, Image.Exif): + exif = exif.tobytes() + im_frame.encoderinfo["exif"] = exif + if exif: + mpf_offset += 4 + len(exif) + + JpegImagePlugin._save(im_frame, fp, filename) + offsets.append(fp.tell()) + else: + im_frame.save(fp, "JPEG") + offsets.append(fp.tell() - offsets[-1]) + + ifd = TiffImagePlugin.ImageFileDirectory_v2() + ifd[0xB000] = b"0100" + ifd[0xB001] = len(offsets) + + mpentries = b"" + data_offset = 0 + for i, size in enumerate(offsets): + if i == 0: + mptype = 0x030000 # Baseline MP Primary Image + else: + mptype = 0x000000 # Undefined + mpentries += struct.pack(" None: + 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: dict[int, Any] | None = None) -> None: + self.mpinfo = mpheader if mpheader is not None else self._getmp() + if self.mpinfo is None: + msg = "Image appears to be a malformed MPO file" + raise ValueError(msg) + 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: int) -> None: + self._fp.seek(pos) + + def seek(self, frame: int) -> None: + if not self._seek_check(frame): + return + self.fp = self._fp + self.offset = self.__mpoffsets[frame] + + original_exif = self.info.get("exif") + if "exif" in self.info: + del self.info["exif"] + + self.fp.seek(self.offset + 2) # skip SOI marker + if not self.fp.read(2): + msg = "No data found for frame" + raise ValueError(msg) + self.fp.seek(self.offset) + JpegImagePlugin.JpegImageFile._open(self) + if self.info.get("exif") != original_exif: + self._reload_exif() + + self.tile = [ + ImageFile._Tile("jpeg", (0, 0) + self.size, self.offset, self.tile[0][-1]) + ] + self.__frame = frame + + def tell(self) -> int: + return self.__frame + + @staticmethod + def adopt( + jpeg_instance: JpegImagePlugin.JpegImageFile, + mpheader: dict[int, Any] | None = None, + ) -> MpoImageFile: + """ + 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 + mpo_instance = cast(MpoImageFile, jpeg_instance) + mpo_instance._after_jpeg_open(mpheader) + return mpo_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_save_all(MpoImageFile.format, _save_all) + +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 0000000..ef6ae87 --- /dev/null +++ b/venv/Lib/site-packages/PIL/MspImagePlugin.py @@ -0,0 +1,200 @@ +# +# 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: https://www.fileformat.info/format/mspaint/egff.htm +from __future__ import annotations + +import io +import struct +from typing import IO + +from . import Image, ImageFile +from ._binary import i16le as i16 +from ._binary import o16le as o16 + +# +# read MSP files + + +def _accept(prefix: bytes) -> bool: + 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) -> None: + # Header + assert self.fp is not None + + s = self.fp.read(32) + if not _accept(s): + msg = "not an MSP file" + raise SyntaxError(msg) + + # Header checksum + checksum = 0 + for i in range(0, 32, 2): + checksum = checksum ^ i16(s, i) + if checksum != 0: + msg = "bad MSP checksum" + raise SyntaxError(msg) + + self._mode = "1" + self._size = i16(s, 4), i16(s, 6) + + if s[:4] == b"DanM": + self.tile = [ImageFile._Tile("raw", (0, 0) + self.size, 32, "1")] + else: + self.tile = [ImageFile._Tile("MSP", (0, 0) + self.size, 32)] + + +class MspDecoder(ImageFile.PyDecoder): + # The algo for the MSP decoder is from + # https://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: bytes | Image.SupportsArrayInterface) -> tuple[int, int]: + assert self.fd is not None + + img = io.BytesIO() + blank_line = bytearray((0xFF,) * ((self.state.xsize + 7) // 8)) + try: + self.fd.seek(32) + rowmap = struct.unpack_from( + f"<{self.state.ysize}H", self.fd.read(self.state.ysize * 2) + ) + except struct.error as e: + msg = "Truncated MSP file in row map" + raise OSError(msg) 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: + msg = f"Truncated MSP file, expected {rowlen} bytes on row {x}" + raise OSError(msg) + idx = 0 + while idx < rowlen: + runtype = 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: + msg = f"Corrupted MSP file in row {x}" + raise OSError(msg) from e + + self.set_as_raw(img.getvalue(), "1") + + return -1, 0 + + +Image.register_decoder("MSP", MspDecoder) + + +# +# write MSP files (uncompressed only) + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if im.mode != "1": + msg = f"cannot write mode {im.mode} as MSP" + raise OSError(msg) + + # 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, [ImageFile._Tile("raw", (0, 0) + im.size, 32, "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 0000000..02939d2 --- /dev/null +++ b/venv/Lib/site-packages/PIL/PSDraw.py @@ -0,0 +1,234 @@ +# +# 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. +# +from __future__ import annotations + +import sys +from typing import IO, TYPE_CHECKING + +from . import EpsImagePlugin + +## +# Simple PostScript graphics interface. + + +class PSDraw: + """ + Sets up printing to the given file. If ``fp`` is omitted, + ``sys.stdout.buffer`` is assumed. + """ + + def __init__(self, fp: IO[bytes] | None = None) -> None: + if not fp: + fp = sys.stdout.buffer + self.fp = fp + + def begin_document(self, id: str | None = None) -> None: + """Set up printing of a document. (Write PostScript DSC header.)""" + # FIXME: incomplete + self.fp.write( + b"%!PS-Adobe-3.0\n" + b"save\n" + b"/showpage { } def\n" + b"%%EndComments\n" + b"%%BeginDocument\n" + ) + # self.fp.write(ERROR_PS) # debugging! + self.fp.write(EDROFF_PS) + self.fp.write(VDI_PS) + self.fp.write(b"%%EndProlog\n") + self.isofont: dict[bytes, int] = {} + + def end_document(self) -> None: + """Ends printing. (Write PostScript DSC footer.)""" + self.fp.write(b"%%EndDocument\nrestore showpage\n%%End\n") + if hasattr(self.fp, "flush"): + self.fp.flush() + + def setfont(self, font: str, size: int) -> None: + """ + Selects which font to use. + + :param font: A PostScript font name + :param size: Size in points. + """ + font_bytes = bytes(font, "UTF-8") + if font_bytes not in self.isofont: + # reencode font + self.fp.write( + b"/PSDraw-%s ISOLatin1Encoding /%s E\n" % (font_bytes, font_bytes) + ) + self.isofont[font_bytes] = 1 + # rough + self.fp.write(b"/F0 %d /PSDraw-%s F\n" % (size, font_bytes)) + + def line(self, xy0: tuple[int, int], xy1: tuple[int, int]) -> None: + """ + 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). + """ + self.fp.write(b"%d %d %d %d Vl\n" % (*xy0, *xy1)) + + def rectangle(self, box: tuple[int, int, int, int]) -> None: + """ + Draws a rectangle. + + :param box: A tuple of four integers, specifying left, bottom, width and + height. + """ + self.fp.write(b"%d %d M 0 %d %d Vr\n" % box) + + def text(self, xy: tuple[int, int], text: str) -> None: + """ + Draws text at the given position. You must use + :py:meth:`~PIL.PSDraw.PSDraw.setfont` before calling this method. + """ + text_bytes = bytes(text, "UTF-8") + text_bytes = b"\\(".join(text_bytes.split(b"(")) + text_bytes = b"\\)".join(text_bytes.split(b")")) + self.fp.write(b"%d %d M (%s) S\n" % (xy + (text_bytes,))) + + if TYPE_CHECKING: + from . import Image + + def image( + self, box: tuple[int, int, int, int], im: Image.Image, dpi: int | None = None + ) -> 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 # grayscale + # 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(b"gsave\n%f %f translate\n" % (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(b"%f %f scale\n" % (sx, sy)) + EpsImagePlugin._save(im, self.fp, "", 0) + self.fp.write(b"\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 = b"""\ +/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 = b"""\ +/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 0 exch rlineto + exch neg 0 rlineto + 0 exch neg rlineto + setgray fill } 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 = b"""\ +/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 0000000..81652e5 --- /dev/null +++ b/venv/Lib/site-packages/PIL/PaletteFile.py @@ -0,0 +1,54 @@ +# +# 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 __future__ import annotations + +from typing import IO + +from ._binary import o8 + + +class PaletteFile: + """File handler for Teragon-style palette files.""" + + rawmode = "RGB" + + def __init__(self, fp: IO[bytes]) -> None: + palette = [o8(i) * 3 for i in range(256)] + + while True: + s = fp.readline() + + if not s: + break + if s[:1] == b"#": + continue + if len(s) > 100: + msg = "bad palette file" + raise SyntaxError(msg) + + 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: + palette[i] = o8(r) + o8(g) + o8(b) + + self.palette = b"".join(palette) + + def getpalette(self) -> tuple[bytes, str]: + 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 0000000..b332453 --- /dev/null +++ b/venv/Lib/site-packages/PIL/PalmImagePlugin.py @@ -0,0 +1,232 @@ +# +# The Python Imaging Library. +# $Id$ +# + +## +# Image plugin for Palm pixmap images (output only). +## +from __future__ import annotations + +from typing import IO + +from . import Image, ImageFile +from ._binary import o8 +from ._binary import 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: + image = Image.new("L", (1, len(_Palm8BitColormapValues))) + image.putdata(list(range(len(_Palm8BitColormapValues)))) + palettedata: tuple[int, ...] = () + 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: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + 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 grayscale from white (0) to black (1) + bpp = im.encoderinfo["bpp"] + maxval = (1 << bpp) - 1 + shift = 8 - bpp + im = im.point(lambda x: 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"] + maxval = (1 << bpp) - 1 + im = im.point(lambda x: maxval - (x & maxval)) + else: + msg = f"cannot write mode {im.mode} as Palm" + raise OSError(msg) + + # we ignore the palette here + im._mode = "P" + rawmode = f"P;{bpp}" + version = 1 + + elif im.mode == "1": + # monochrome -- write it inverted, as is the Palm standard + rawmode = "1;I" + bpp = 1 + version = 0 + + else: + msg = f"cannot write mode {im.mode} as Palm" + raise OSError(msg) + + # + # 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: + assert im.palette is not None + 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, [ImageFile._Tile("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 0000000..ac40383 --- /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 __future__ import annotations + +from . import Image, ImageFile + +## +# 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) -> None: + # rough + assert self.fp is not None + + self.fp.seek(2048) + s = self.fp.read(2048) + + if s[:4] != b"PCD_": + msg = "not a PCD file" + raise SyntaxError(msg) + + orientation = 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 = [ImageFile._Tile("pcd", (0, 0) + self.size, 96 * 2048)] + + def load_end(self) -> None: + 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 0000000..0d1968b --- /dev/null +++ b/venv/Lib/site-packages/PIL/PcfFontFile.py @@ -0,0 +1,254 @@ +# +# 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. +# +from __future__ import annotations + +import io +from typing import BinaryIO, Callable + +from . import FontFile, Image +from ._binary import i8 +from ._binary import i16be as b16 +from ._binary import i16le as l16 +from ._binary import i32be as b32 +from ._binary import 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: list[Callable[[int], int]] = [ + 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: bytes, o: int) -> bytes: + 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: BinaryIO, charset_encoding: str = "iso8859-1"): + self.charset_encoding = charset_encoding + + magic = l32(fp.read(4)) + if magic != PCF_MAGIC: + msg = "not a PCF file" + raise SyntaxError(msg) + + 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, ix in enumerate(encoding): + if ix is not None: + ( + xsize, + ysize, + left, + right, + width, + ascent, + descent, + attributes, + ) = metrics[ix] + self.glyph[ch] = ( + (width, 0), + (left, descent - ysize, xsize + left, descent), + (0, 0, xsize, ysize), + bitmaps[ix], + ) + + def _getformat( + self, tag: int + ) -> tuple[BinaryIO, int, Callable[[bytes], int], Callable[[bytes], int]]: + 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) -> dict[bytes, bytes | int]: + # + # font properties + + properties = {} + + fp, format, i16, i32 = self._getformat(PCF_PROPERTIES) + + nprops = i32(fp.read(4)) + + # read property description + p = [(i32(fp.read(4)), i8(fp.read(1)), i32(fp.read(4))) for _ in range(nprops)] + + 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: + property_value: bytes | int = sz(data, v) if s else v + properties[sz(data, k)] = property_value + + return properties + + def _load_metrics(self) -> list[tuple[int, int, int, int, int, int, int, int]]: + # + # font metrics + + metrics: list[tuple[int, int, int, int, int, int, int, int]] = [] + + 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: list[tuple[int, int, int, int, int, int, int, int]] + ) -> list[Image.Image]: + # + # bitmap data + + fp, format, i16, i32 = self._getformat(PCF_BITMAPS) + + nbitmaps = i32(fp.read(4)) + + if nbitmaps != len(metrics): + msg = "Wrong number of bitmaps" + raise OSError(msg) + + offsets = [i32(fp.read(4)) for _ in range(nbitmaps)] + + bitmap_sizes = [i32(fp.read(4)) for _ in range(4)] + + # byteorder = format & 4 # non-zero => MSB + bitorder = format & 8 # non-zero => MSB + padindex = format & 3 + + bitmapsize = bitmap_sizes[padindex] + offsets.append(bitmapsize) + + data = fp.read(bitmapsize) + + pad = BYTES_PER_ROW[padindex] + mode = "1;R" + if bitorder: + mode = "1" + + bitmaps = [] + for i in range(nbitmaps): + xsize, ysize = metrics[i][:2] + b, e = offsets[i : i + 2] + bitmaps.append( + Image.frombytes("1", (xsize, ysize), data[b:e], "raw", mode, pad(xsize)) + ) + + return bitmaps + + def _load_encoding(self) -> list[int | None]: + fp, format, i16, i32 = self._getformat(PCF_BDF_ENCODINGS) + + first_col, last_col = i16(fp.read(2)), i16(fp.read(2)) + first_row, last_row = i16(fp.read(2)), i16(fp.read(2)) + + i16(fp.read(2)) # default + + nencoding = (last_col - first_col + 1) * (last_row - first_row + 1) + + # map character code to bitmap index + encoding: list[int | None] = [None] * min(256, nencoding) + + encoding_offsets = [i16(fp.read(2)) for _ in range(nencoding)] + + for i in range(first_col, len(encoding)): + try: + encoding_offset = encoding_offsets[ + ord(bytearray([i]).decode(self.charset_encoding)) + ] + if encoding_offset != 0xFFFF: + encoding[i] = encoding_offset + 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 0000000..32436ce --- /dev/null +++ b/venv/Lib/site-packages/PIL/PcxImagePlugin.py @@ -0,0 +1,229 @@ +# +# 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. +# +from __future__ import annotations + +import io +import logging +from typing import IO + +from . import Image, ImageFile, ImagePalette +from ._binary import i16le as i16 +from ._binary import o8 +from ._binary import o16le as o16 + +logger = logging.getLogger(__name__) + + +def _accept(prefix: bytes) -> bool: + return prefix[0] == 10 and prefix[1] in [0, 2, 3, 5] + + +## +# Image plugin for Paintbrush images. + + +class PcxImageFile(ImageFile.ImageFile): + format = "PCX" + format_description = "Paintbrush" + + def _open(self) -> None: + # header + assert self.fp is not None + + s = self.fp.read(128) + if not _accept(s): + msg = "not a PCX file" + raise SyntaxError(msg) + + # 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]: + msg = "bad PCX image size" + raise SyntaxError(msg) + logger.debug("BBox: %s %s %s %s", *bbox) + + # format + version = s[1] + bits = s[3] + planes = s[65] + provided_stride = i16(s, 66) + logger.debug( + "PCX version %s, bits %s, planes %s, stride %s", + version, + bits, + planes, + provided_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 = f"P;{planes}L" + 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 s[0] == 12: + # check if the palette is linear grayscale + 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: + msg = "unknown PCX mode" + raise OSError(msg) + + self._mode = mode + self._size = bbox[2] - bbox[0], bbox[3] - bbox[1] + + # Don't trust the passed in stride. + # Calculate the approximate position for ourselves. + # CVE-2020-35653 + stride = (self._size[0] * bits + 7) // 8 + + # While the specification states that this must be even, + # not all images follow this + if provided_stride != stride: + stride += stride % 2 + + bbox = (0, 0) + self.size + logger.debug("size: %sx%s", *self.size) + + self.tile = [ + ImageFile._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: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + try: + version, bits, planes, rawmode = SAVE[im.mode] + except KeyError as e: + msg = f"Cannot save {im.mode} images as PCX" + raise ValueError(msg) 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, [ImageFile._Tile("pcx", (0, 0) + im.size, 0, (rawmode, bits * planes))] + ) + + if im.mode == "P": + # colour palette + fp.write(o8(12)) + palette = im.im.getpalette("RGB", "RGB") + palette += b"\x00" * (768 - len(palette)) + fp.write(palette) # 768 bytes + elif im.mode == "L": + # grayscale 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 0000000..e9c20dd --- /dev/null +++ b/venv/Lib/site-packages/PIL/PdfImagePlugin.py @@ -0,0 +1,311 @@ +# +# 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). +## +from __future__ import annotations + +import io +import math +import os +import time +from typing import IO, Any + +from . import Image, ImageFile, ImageSequence, PdfParser, __version__, features + +# +# -------------------------------------------------------------------- + +# object ids: +# 1. catalogue +# 2. pages +# 3. image +# 4. page +# 5. page contents + + +def _save_all(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + _save(im, fp, filename, save_all=True) + + +## +# (Internal) Image save plugin for the PDF format. + + +def _write_image( + im: Image.Image, + filename: str | bytes, + existing_pdf: PdfParser.PdfParser, + image_refs: list[PdfParser.IndirectReference], +) -> tuple[PdfParser.IndirectReference, str]: + # FIXME: Should replace ASCIIHexDecode with RunLengthDecode + # (packbits) or LZWDecode (tiff/lzw compression). Note that + # PDF 1.2 also supports Flatedecode (zip compression). + + params = None + decode = None + + # + # Get image characteristics + + width, height = im.size + + dict_obj: dict[str, Any] = {"BitsPerComponent": 8} + if im.mode == "1": + if features.check("libtiff"): + decode_filter = "CCITTFaxDecode" + dict_obj["BitsPerComponent"] = 1 + params = PdfParser.PdfArray( + [ + PdfParser.PdfDict( + { + "K": -1, + "BlackIs1": True, + "Columns": width, + "Rows": height, + } + ) + ] + ) + else: + decode_filter = "DCTDecode" + dict_obj["ColorSpace"] = PdfParser.PdfName("DeviceGray") + procset = "ImageB" # grayscale + elif im.mode == "L": + decode_filter = "DCTDecode" + # params = f"<< /Predictor 15 /Columns {width-2} >>" + dict_obj["ColorSpace"] = PdfParser.PdfName("DeviceGray") + procset = "ImageB" # grayscale + elif im.mode == "LA": + decode_filter = "JPXDecode" + # params = f"<< /Predictor 15 /Columns {width-2} >>" + procset = "ImageB" # grayscale + dict_obj["SMaskInData"] = 1 + elif im.mode == "P": + decode_filter = "ASCIIHexDecode" + palette = im.getpalette() + assert palette is not None + dict_obj["ColorSpace"] = [ + PdfParser.PdfName("Indexed"), + PdfParser.PdfName("DeviceRGB"), + len(palette) // 3 - 1, + PdfParser.PdfBinary(palette), + ] + procset = "ImageI" # indexed color + + if "transparency" in im.info: + smask = im.convert("LA").getchannel("A") + smask.encoderinfo = {} + + image_ref = _write_image(smask, filename, existing_pdf, image_refs)[0] + dict_obj["SMask"] = image_ref + elif im.mode == "RGB": + decode_filter = "DCTDecode" + dict_obj["ColorSpace"] = PdfParser.PdfName("DeviceRGB") + procset = "ImageC" # color images + elif im.mode == "RGBA": + decode_filter = "JPXDecode" + procset = "ImageC" # color images + dict_obj["SMaskInData"] = 1 + elif im.mode == "CMYK": + decode_filter = "DCTDecode" + dict_obj["ColorSpace"] = PdfParser.PdfName("DeviceCMYK") + procset = "ImageC" # color images + decode = [1, 0, 1, 0, 1, 0, 1, 0] + else: + msg = f"cannot save mode {im.mode}" + raise ValueError(msg) + + # + # image + + op = io.BytesIO() + + if decode_filter == "ASCIIHexDecode": + ImageFile._save(im, op, [ImageFile._Tile("hex", (0, 0) + im.size, 0, im.mode)]) + elif decode_filter == "CCITTFaxDecode": + im.save( + op, + "TIFF", + compression="group4", + # use a single strip + strip_size=math.ceil(width / 8) * height, + ) + elif decode_filter == "DCTDecode": + Image.SAVE["JPEG"](im, op, filename) + elif decode_filter == "JPXDecode": + del dict_obj["BitsPerComponent"] + Image.SAVE["JPEG2000"](im, op, filename) + else: + msg = f"unsupported PDF filter ({decode_filter})" + raise ValueError(msg) + + stream = op.getvalue() + filter: PdfParser.PdfArray | PdfParser.PdfName + if decode_filter == "CCITTFaxDecode": + stream = stream[8:] + filter = PdfParser.PdfArray([PdfParser.PdfName(decode_filter)]) + else: + filter = PdfParser.PdfName(decode_filter) + + image_ref = image_refs.pop(0) + existing_pdf.write_obj( + image_ref, + stream=stream, + Type=PdfParser.PdfName("XObject"), + Subtype=PdfParser.PdfName("Image"), + Width=width, # * 72.0 / x_resolution, + Height=height, # * 72.0 / y_resolution, + Filter=filter, + Decode=decode, + DecodeParms=params, + **dict_obj, + ) + + return image_ref, procset + + +def _save( + im: Image.Image, fp: IO[bytes], filename: str | bytes, save_all: bool = False +) -> None: + is_appending = im.encoderinfo.get("append", False) + filename_str = filename.decode() if isinstance(filename, bytes) else filename + if is_appending: + existing_pdf = PdfParser.PdfParser(f=fp, filename=filename_str, mode="r+b") + else: + existing_pdf = PdfParser.PdfParser(f=fp, filename=filename_str, mode="w+b") + + dpi = im.encoderinfo.get("dpi") + if dpi: + x_resolution = dpi[0] + y_resolution = dpi[1] + else: + x_resolution = y_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(f"created by Pillow {__version__} PDF driver") + + # + # 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) + number_of_pages = 0 + image_refs = [] + page_refs = [] + contents_refs = [] + for im in ims: + im_number_of_pages = 1 + if save_all: + im_number_of_pages = getattr(im, "n_frames", 1) + number_of_pages += im_number_of_pages + for i in range(im_number_of_pages): + image_refs.append(existing_pdf.next_object_id(0)) + if im.mode == "P" and "transparency" in im.info: + 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() + + page_number = 0 + for im_sequence in ims: + im_pages: ImageSequence.Iterator | list[Image.Image] = ( + ImageSequence.Iterator(im_sequence) if save_all else [im_sequence] + ) + for im in im_pages: + image_ref, procset = _write_image(im, filename, existing_pdf, image_refs) + + # + # page + + existing_pdf.write_page( + page_refs[page_number], + Resources=PdfParser.PdfDict( + ProcSet=[PdfParser.PdfName("PDF"), PdfParser.PdfName(procset)], + XObject=PdfParser.PdfDict(image=image_ref), + ), + MediaBox=[ + 0, + 0, + im.width * 72.0 / x_resolution, + im.height * 72.0 / y_resolution, + ], + Contents=contents_refs[page_number], + ) + + # + # page contents + + page_contents = b"q %f 0 0 %f 0 0 cm /image Do Q\n" % ( + im.width * 72.0 / x_resolution, + im.height * 72.0 / y_resolution, + ) + + existing_pdf.write_obj(contents_refs[page_number], stream=page_contents) + + page_number += 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 0000000..7cb2d24 --- /dev/null +++ b/venv/Lib/site-packages/PIL/PdfParser.py @@ -0,0 +1,1073 @@ +from __future__ import annotations + +import calendar +import codecs +import collections +import mmap +import os +import re +import time +import zlib +from typing import IO, TYPE_CHECKING, Any, NamedTuple, Union + + +# see 7.9.2.2 Text String Type on page 86 and D.3 PDFDocEncoding Character Set +# on page 656 +def encode_text(s: str) -> bytes: + 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: bytes) -> str: + 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: bool, error_message: str) -> None: + if not condition: + raise PdfFormatError(error_message) + + +class IndirectReferenceTuple(NamedTuple): + object_id: int + generation: int + + +class IndirectReference(IndirectReferenceTuple): + def __str__(self) -> str: + return f"{self.object_id} {self.generation} R" + + def __bytes__(self) -> bytes: + return self.__str__().encode("us-ascii") + + def __eq__(self, other: object) -> bool: + if self.__class__ is not other.__class__: + return False + assert isinstance(other, IndirectReference) + return other.object_id == self.object_id and other.generation == self.generation + + def __ne__(self, other: object) -> bool: + return not (self == other) + + def __hash__(self) -> int: + return hash((self.object_id, self.generation)) + + +class IndirectObjectDef(IndirectReference): + def __str__(self) -> str: + return f"{self.object_id} {self.generation} obj" + + +class XrefTable: + def __init__(self) -> None: + self.existing_entries: dict[int, tuple[int, int]] = ( + {} + ) # object ID => (offset, generation) + self.new_entries: dict[int, tuple[int, int]] = ( + {} + ) # object ID => (offset, generation) + self.deleted_entries = {0: 65536} # object ID => generation + self.reading_finished = False + + def __setitem__(self, key: int, value: tuple[int, int]) -> None: + 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: int) -> tuple[int, int]: + try: + return self.new_entries[key] + except KeyError: + return self.existing_entries[key] + + def __delitem__(self, key: int) -> None: + 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: + msg = f"object ID {key} cannot be deleted because it doesn't exist" + raise IndexError(msg) + + def __contains__(self, key: int) -> bool: + return key in self.existing_entries or key in self.new_entries + + def __len__(self) -> int: + return len( + set(self.existing_entries.keys()) + | set(self.new_entries.keys()) + | set(self.deleted_entries.keys()) + ) + + def keys(self) -> set[int]: + return ( + set(self.existing_entries.keys()) - set(self.deleted_entries.keys()) + ) | set(self.new_entries.keys()) + + def write(self, f: IO[bytes]) -> int: + 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: int | None = 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 = [] + 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, + f"expected the next deleted object ID to be {object_id}, " + f"instead found {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: + name: bytes + + def __init__(self, name: PdfName | bytes | str) -> None: + 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) -> str: + return self.name.decode("us-ascii") + + def __eq__(self, other: object) -> bool: + return ( + isinstance(other, PdfName) and other.name == self.name + ) or other == self.name + + def __hash__(self) -> int: + return hash(self.name) + + def __repr__(self) -> str: + return f"{self.__class__.__name__}({repr(self.name)})" + + @classmethod + def from_pdf_stream(cls, data: bytes) -> PdfName: + return cls(PdfParser.interpret_name(data)) + + allowed_chars = set(range(33, 127)) - {ord(c) for c in "#%/()<>[]{}"} + + def __bytes__(self) -> bytes: + 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[Any]): + def __bytes__(self) -> bytes: + return b"[ " + b" ".join(pdf_repr(x) for x in self) + b" ]" + + +if TYPE_CHECKING: + _DictBase = collections.UserDict[Union[str, bytes], Any] +else: + _DictBase = collections.UserDict + + +class PdfDict(_DictBase): + def __setattr__(self, key: str, value: Any) -> None: + if key == "data": + collections.UserDict.__setattr__(self, key, value) + else: + self[key.encode("us-ascii")] = value + + def __getattr__(self, key: str) -> str | time.struct_time: + 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) -> bytes: + 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: list[int] | bytes) -> None: + self.data = data + + def __bytes__(self) -> bytes: + return b"<%s>" % b"".join(b"%02X" % b for b in self.data) + + +class PdfStream: + def __init__(self, dictionary: PdfDict, buf: bytes) -> None: + self.dictionary = dictionary + self.buf = buf + + def decode(self) -> bytes: + try: + filter = self.dictionary[b"Filter"] + except KeyError: + return self.buf + if filter == b"FlateDecode": + try: + expected_length = self.dictionary[b"DL"] + except KeyError: + expected_length = self.dictionary[b"Length"] + return zlib.decompress(self.buf, bufsize=int(expected_length)) + else: + msg = f"stream filter {repr(filter)} unknown/unsupported" + raise NotImplementedError(msg) + + +def pdf_repr(x: Any) -> bytes: + 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, float)): + 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: str | None = None, + f: IO[bytes] | None = None, + buf: bytes | bytearray | None = None, + start_offset: int = 0, + mode: str = "rb", + ) -> None: + if buf and f: + msg = "specify buf or f or filename, but not both buf and f" + raise RuntimeError(msg) + self.filename = filename + self.buf: bytes | bytearray | mmap.mmap | None = 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 = 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: dict[IndirectReference, Any] = {} + self.root_ref: IndirectReference | None + self.info_ref: IndirectReference | None + self.pages_ref: IndirectReference | None + self.last_xref_section_offset: int | None + if self.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 = PdfDict() + self.pages: list[IndirectReference] = [] + self.orig_pages: list[IndirectReference] = [] + self.pages_ref = None + self.last_xref_section_offset = None + self.trailer_dict: dict[bytes, Any] = {} + self.xref_table = XrefTable() + self.xref_table.reading_finished = True + if f: + self.seek_end() + + def __enter__(self) -> PdfParser: + return self + + def __exit__(self, *args: object) -> None: + self.close() + + def start_writing(self) -> None: + self.close_buf() + self.seek_end() + + def close_buf(self) -> None: + if isinstance(self.buf, mmap.mmap): + self.buf.close() + self.buf = None + + def close(self) -> None: + 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) -> None: + assert self.f is not None + self.f.seek(0, os.SEEK_END) + + def write_header(self) -> None: + assert self.f is not None + self.f.write(b"%PDF-1.4\n") + + def write_comment(self, s: str) -> None: + assert self.f is not None + self.f.write(f"% {s}\n".encode()) + + def write_catalog(self) -> IndirectReference: + assert self.f is not None + 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) -> None: + 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: IndirectReference | None = None + ) -> None: + assert self.f is not 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: dict[str | bytes, Any] = { + 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: int | IndirectReference | None, *objs: Any, **dict_obj: Any + ) -> IndirectReference: + obj_ref = self.pages[ref] if isinstance(ref, int) else 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(obj_ref, *objs, **dict_obj) + + def write_obj( + self, ref: IndirectReference | None, *objs: Any, **dict_obj: Any + ) -> IndirectReference: + assert self.f is not None + 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) -> None: + 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: IO[bytes]) -> bytes | mmap.mmap: + 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) -> None: + assert self.buf is not None + self.file_size_total = len(self.buf) + self.file_size_this = self.file_size_total - self.start_offset + self.read_trailer() + check_format_condition( + self.trailer_dict.get(b"Root") is not None, "Root is missing" + ) + self.root_ref = self.trailer_dict[b"Root"] + assert self.root_ref is not None + 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( + self.root.get(b"Pages") is not None, "/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"] + assert self.pages_ref is not None + 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: int | None = None) -> IndirectReference: + 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 = rb"[][()<>{}/%]" + delimiter_or_ws = rb"[][()<>{}/%\000\011\012\014\015\040]" + whitespace = rb"[\000\011\012\014\015\040]" + whitespace_or_hex = rb"[\000\011\012\014\015\0400-9a-fA-F]" + whitespace_optional = whitespace + b"*" + whitespace_mandatory = whitespace + b"+" + # No "\012" aka "\n" or "\015" aka "\r": + whitespace_optional_no_nl = rb"[\000\011\014\040]*" + newline_only = rb"[\r\n]+" + newline = whitespace_optional_no_nl + newline_only + whitespace_optional_no_nl + re_trailer_end = re.compile( + whitespace_mandatory + + rb"trailer" + + whitespace_optional + + rb"<<(.*>>)" + + newline + + rb"startxref" + + newline + + rb"([0-9]+)" + + newline + + rb"%%EOF" + + whitespace_optional + + rb"$", + re.DOTALL, + ) + re_trailer_prev = re.compile( + whitespace_optional + + rb"trailer" + + whitespace_optional + + rb"<<(.*?>>)" + + newline + + rb"startxref" + + newline + + rb"([0-9]+)" + + newline + + rb"%%EOF" + + whitespace_optional, + re.DOTALL, + ) + + def read_trailer(self) -> None: + assert self.buf is not None + 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 is not None, "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 + assert m is not None + 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: int) -> None: + assert self.buf is not None + 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 is not None, "previous trailer not found") + assert m is not None + 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 + + rb"/([!-$&'*-.0-;=?-Z\\^-z|~]+)(?=" + + delimiter_or_ws + + rb")" + ) + re_dict_start = re.compile(whitespace_optional + rb"<<") + re_dict_end = re.compile(whitespace_optional + rb">>" + whitespace_optional) + + @classmethod + def interpret_trailer(cls, trailer_data: bytes) -> dict[bytes, Any]: + 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 is not None 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)) + assert isinstance(key, bytes) + value, value_offset = cls.get_value(trailer_data, m.end()) + trailer[key] = value + if value_offset is None: + break + offset = value_offset + 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(rb"([^#]*)(#([0-9a-fA-F]{2}))?") + + @classmethod + def interpret_name(cls, raw: bytes, as_text: bool = False) -> str | bytes: + 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 + rb"null(?=" + delimiter_or_ws + rb")") + re_true = re.compile(whitespace_optional + rb"true(?=" + delimiter_or_ws + rb")") + re_false = re.compile(whitespace_optional + rb"false(?=" + delimiter_or_ws + rb")") + re_int = re.compile( + whitespace_optional + rb"([-+]?[0-9]+)(?=" + delimiter_or_ws + rb")" + ) + re_real = re.compile( + whitespace_optional + + rb"([-+]?([0-9]+\.[0-9]*|[0-9]*\.[0-9]+))(?=" + + delimiter_or_ws + + rb")" + ) + re_array_start = re.compile(whitespace_optional + rb"\[") + re_array_end = re.compile(whitespace_optional + rb"]") + re_string_hex = re.compile( + whitespace_optional + rb"<(" + whitespace_or_hex + rb"*)>" + ) + re_string_lit = re.compile(whitespace_optional + rb"\(") + re_indirect_reference = re.compile( + whitespace_optional + + rb"([-+]?[0-9]+)" + + whitespace_mandatory + + rb"([-+]?[0-9]+)" + + whitespace_mandatory + + rb"R(?=" + + delimiter_or_ws + + rb")" + ) + re_indirect_def_start = re.compile( + whitespace_optional + + rb"([-+]?[0-9]+)" + + whitespace_mandatory + + rb"([-+]?[0-9]+)" + + whitespace_mandatory + + rb"obj(?=" + + delimiter_or_ws + + rb")" + ) + re_indirect_def_end = re.compile( + whitespace_optional + rb"endobj(?=" + delimiter_or_ws + rb")" + ) + re_comment = re.compile( + rb"(" + whitespace_optional + rb"%[^\r\n]*" + newline + rb")*" + ) + re_stream_start = re.compile(whitespace_optional + rb"stream\r?\n") + re_stream_end = re.compile( + whitespace_optional + rb"endstream(?=" + delimiter_or_ws + rb")" + ) + + @classmethod + def get_value( + cls, + data: bytes | bytearray | mmap.mmap, + offset: int, + expect_indirect: IndirectReference | None = None, + max_nesting: int = -1, + ) -> tuple[Any, int | None]: + 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, object_offset = cls.get_value( + data, m.end(), max_nesting=max_nesting - 1 + ) + if object_offset is None: + return object, None + m = cls.re_indirect_def_end.match(data, object_offset) + check_format_condition( + m is not None, "indirect object definition end not found" + ) + assert m is not None + 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: dict[Any, Any] = {} + m = cls.re_dict_end.match(data, offset) + current_offset: int | None = offset + while not m: + assert current_offset is not None + key, current_offset = cls.get_value( + data, current_offset, max_nesting=max_nesting - 1 + ) + if current_offset is None: + return result, None + value, current_offset = cls.get_value( + data, current_offset, max_nesting=max_nesting - 1 + ) + result[key] = value + if current_offset is None: + return result, None + m = cls.re_dict_end.match(data, current_offset) + current_offset = m.end() + m = cls.re_stream_start.match(data, current_offset) + if m: + stream_len = result.get(b"Length") + if stream_len is None or not isinstance(stream_len, int): + msg = f"bad or missing Length in stream dict ({stream_len})" + raise PdfFormatError(msg) + stream_data = data[m.end() : m.end() + stream_len] + m = cls.re_stream_end.match(data, m.end() + stream_len) + check_format_condition(m is not None, "stream end not found") + assert m is not None + current_offset = m.end() + return PdfStream(PdfDict(result), stream_data), current_offset + return PdfDict(result), current_offset + m = cls.re_array_start.match(data, offset) + if m: + offset = m.end() + results = [] + m = cls.re_array_end.match(data, offset) + current_offset = offset + while not m: + assert current_offset is not None + value, current_offset = cls.get_value( + data, current_offset, max_nesting=max_nesting - 1 + ) + results.append(value) + if current_offset is None: + return results, None + m = cls.re_array_end.match(data, current_offset) + return results, 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) + msg = f"unrecognized object: {repr(data[offset : offset + 32])}" + raise PdfFormatError(msg) + + re_lit_str_token = re.compile( + rb"(\\[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: bytes | bytearray | mmap.mmap, offset: int + ) -> tuple[bytes, int]: + 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() + msg = "unfinished literal string" + raise PdfFormatError(msg) + + re_xref_section_start = re.compile(whitespace_optional + rb"xref" + newline) + re_xref_subsection_start = re.compile( + whitespace_optional + + rb"([0-9]+)" + + whitespace_mandatory + + rb"([0-9]+)" + + whitespace_optional + + newline_only + ) + re_xref_entry = re.compile(rb"([0-9]{10}) ([0-9]{5}) ([fn])( \r| \n|\r\n)") + + def read_xref_table(self, xref_section_offset: int) -> int: + assert self.buf is not None + subsection_found = False + m = self.re_xref_section_start.match( + self.buf, xref_section_offset + self.start_offset + ) + check_format_condition(m is not None, "xref section start not found") + assert m is not None + 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 is not None, "xref entry not found") + assert m is not None + offset = m.end() + is_free = m.group(3) == b"f" + if not is_free: + generation = int(m.group(2)) + new_entry = (int(m.group(1)), generation) + if i not in self.xref_table: + self.xref_table[i] = new_entry + return offset + + def read_indirect(self, ref: IndirectReference, max_nesting: int = -1) -> Any: + offset, generation = self.xref_table[ref[0]] + check_format_condition( + generation == ref[1], + f"expected to find generation {ref[1]} for object ID {ref[0]} in xref " + f"table, instead found generation {generation} at offset {offset}", + ) + assert self.buf is not None + 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: PdfDict | None = None + ) -> list[IndirectReference]: + page_node = node if node is not None else self.page_tree_root + check_format_condition( + page_node[b"Type"] == b"Pages", "/Type of page tree node is not /Pages" + ) + pages = [] + for kid in page_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 0000000..5c465bb --- /dev/null +++ b/venv/Lib/site-packages/PIL/PixarImagePlugin.py @@ -0,0 +1,72 @@ +# +# 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 __future__ import annotations + +from . import Image, ImageFile +from ._binary import i16le as i16 + +# +# helpers + + +def _accept(prefix: bytes) -> bool: + 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) -> None: + # assuming a 4-byte magic label + assert self.fp is not None + + s = self.fp.read(4) + if not _accept(s): + msg = "not a PIXAR file" + raise SyntaxError(msg) + + # read rest of header + s = s + self.fp.read(508) + + self._size = i16(s, 418), i16(s, 416) + + # get channel/depth descriptions + mode = i16(s, 424), i16(s, 426) + + if mode == (14, 2): + self._mode = "RGB" + # FIXME: to be continued... + + # create tile descriptor (assuming "dumped") + self.tile = [ImageFile._Tile("raw", (0, 0) + self.size, 1024, self.mode)] + + +# +# -------------------------------------------------------------------- + +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 0000000..4b97992 --- /dev/null +++ b/venv/Lib/site-packages/PIL/PngImagePlugin.py @@ -0,0 +1,1544 @@ +# +# 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. +# +from __future__ import annotations + +import itertools +import logging +import re +import struct +import warnings +import zlib +from collections.abc import Callable +from enum import IntEnum +from typing import IO, TYPE_CHECKING, Any, NamedTuple, NoReturn, cast + +from . import Image, ImageChops, ImageFile, ImagePalette, ImageSequence +from ._binary import i16be as i16 +from ._binary import i32be as i32 +from ._binary import o8 +from ._binary import o16be as o16 +from ._binary import o32be as o32 + +if TYPE_CHECKING: + from . import _imaging + +logger = logging.getLogger(__name__) + +is_cid = re.compile(rb"\w\w\w\w").match + + +_MAGIC = b"\211PNG\r\n\032\n" + + +_MODES = { + # supported bits/color combinations, and corresponding modes/rawmodes + # Grayscale + (1, 0): ("1", "1"), + (2, 0): ("L", "L;2"), + (4, 0): ("L", "L;4"), + (8, 0): ("L", "L"), + (16, 0): ("I;16", "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"), + # Grayscale 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*$") + +MAX_TEXT_CHUNK = ImageFile.SAFEBLOCK +""" +Maximum decompressed size for a iTXt or zTXt chunk. +Eliminates decompression bombs where compressed chunks can expand 1000x. +See :ref:`Text in PNG File Format`. +""" +MAX_TEXT_MEMORY = 64 * MAX_TEXT_CHUNK +""" +Set the maximum total text chunk size. +See :ref:`Text in PNG File Format`. +""" + + +# APNG frame disposal modes +class Disposal(IntEnum): + OP_NONE = 0 + """ + No disposal is done on this frame before rendering the next frame. + See :ref:`Saving APNG sequences`. + """ + OP_BACKGROUND = 1 + """ + This frame’s modified region is cleared to fully transparent black before rendering + the next frame. + See :ref:`Saving APNG sequences`. + """ + OP_PREVIOUS = 2 + """ + This frame’s modified region is reverted to the previous frame’s contents before + rendering the next frame. + See :ref:`Saving APNG sequences`. + """ + + +# APNG frame blend modes +class Blend(IntEnum): + OP_SOURCE = 0 + """ + All color components of this frame, including alpha, overwrite the previous output + image contents. + See :ref:`Saving APNG sequences`. + """ + OP_OVER = 1 + """ + This frame should be alpha composited with the previous output image contents. + See :ref:`Saving APNG sequences`. + """ + + +def _safe_zlib_decompress(s: bytes) -> bytes: + dobj = zlib.decompressobj() + plaintext = dobj.decompress(s, MAX_TEXT_CHUNK) + if dobj.unconsumed_tail: + msg = "Decompressed data too large for PngImagePlugin.MAX_TEXT_CHUNK" + raise ValueError(msg) + return plaintext + + +def _crc32(data: bytes, seed: int = 0) -> int: + return zlib.crc32(data, seed) & 0xFFFFFFFF + + +# -------------------------------------------------------------------- +# Support classes. Suitable for PNG and related formats like MNG etc. + + +class ChunkStream: + def __init__(self, fp: IO[bytes]) -> None: + self.fp: IO[bytes] | None = fp + self.queue: list[tuple[bytes, int, int]] | None = [] + + def read(self) -> tuple[bytes, int, int]: + """Fetch a new chunk. Returns header information.""" + cid = None + + assert self.fp is not 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: + msg = f"broken PNG file (chunk {repr(cid)})" + raise SyntaxError(msg) + + return cid, pos, length + + def __enter__(self) -> ChunkStream: + return self + + def __exit__(self, *args: object) -> None: + self.close() + + def close(self) -> None: + self.queue = self.fp = None + + def push(self, cid: bytes, pos: int, length: int) -> None: + assert self.queue is not None + self.queue.append((cid, pos, length)) + + def call(self, cid: bytes, pos: int, length: int) -> bytes: + """Call the appropriate chunk handler""" + + logger.debug("STREAM %r %s %s", cid, pos, length) + return getattr(self, f"chunk_{cid.decode('ascii')}")(pos, length) + + def crc(self, cid: bytes, data: bytes) -> None: + """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 (cid[0] >> 5 & 1): + self.crc_skip(cid, data) + return + + assert self.fp is not None + try: + crc1 = _crc32(data, _crc32(cid)) + crc2 = i32(self.fp.read(4)) + if crc1 != crc2: + msg = f"broken PNG file (bad header checksum in {repr(cid)})" + raise SyntaxError(msg) + except struct.error as e: + msg = f"broken PNG file (incomplete checksum in {repr(cid)})" + raise SyntaxError(msg) from e + + def crc_skip(self, cid: bytes, data: bytes) -> None: + """Read checksum""" + + assert self.fp is not None + self.fp.read(4) + + def verify(self, endchunk: bytes = b"IEND") -> list[bytes]: + # Simple approach; just calculate checksum for all remaining + # blocks. Must be called directly after open. + + cids = [] + + assert self.fp is not None + while True: + try: + cid, pos, length = self.read() + except struct.error as e: + msg = "truncated PNG file" + raise OSError(msg) 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 + + """ + + lang: str | bytes | None + tkey: str | bytes | None + + @staticmethod + def __new__( + cls, text: str, lang: str | None = None, tkey: str | None = None + ) -> iTXt: + """ + :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) -> None: + self.chunks: list[tuple[bytes, bytes, bool]] = [] + + def add(self, cid: bytes, data: bytes, after_idat: bool = False) -> None: + """Appends an arbitrary chunk. Use with caution. + + :param cid: a byte string, 4 bytes long. + :param data: a byte string of the encoded data + :param after_idat: for use with private chunks. Whether the chunk + should be written after IDAT + + """ + + self.chunks.append((cid, data, after_idat)) + + def add_itxt( + self, + key: str | bytes, + value: str | bytes, + lang: str | bytes = "", + tkey: str | bytes = "", + zip: bool = False, + ) -> None: + """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: str | bytes, value: str | bytes | iTXt, zip: bool = False + ) -> None: + """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 if value.lang is not None else b"", + value.tkey if value.tkey is not None else b"", + 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 _RewindState(NamedTuple): + info: dict[str | tuple[int, int], Any] + tile: list[ImageFile._Tile] + seq_num: int | None + + +class PngStream(ChunkStream): + def __init__(self, fp: IO[bytes]) -> None: + super().__init__(fp) + + # local copies of Image attributes + self.im_info: dict[str | tuple[int, int], Any] = {} + self.im_text: dict[str, str | iTXt] = {} + self.im_size = (0, 0) + self.im_mode = "" + self.im_tile: list[ImageFile._Tile] = [] + self.im_palette: tuple[str, bytes] | None = None + self.im_custom_mimetype: str | None = None + self.im_n_frames: int | None = None + self._seq_num: int | None = None + self.rewind_state = _RewindState({}, [], None) + + self.text_memory = 0 + + def check_text_memory(self, chunklen: int) -> None: + self.text_memory += chunklen + if self.text_memory > MAX_TEXT_MEMORY: + msg = ( + "Too much memory used in text chunks: " + f"{self.text_memory}>MAX_TEXT_MEMORY" + ) + raise ValueError(msg) + + def save_rewind(self) -> None: + self.rewind_state = _RewindState( + self.im_info.copy(), + self.im_tile, + self._seq_num, + ) + + def rewind(self) -> None: + self.im_info = self.rewind_state.info.copy() + self.im_tile = self.rewind_state.tile + self._seq_num = self.rewind_state.seq_num + + def chunk_iCCP(self, pos: int, length: int) -> bytes: + # ICC profile + assert self.fp is not None + 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]) + comp_method = s[i + 1] + logger.debug("Compression method %s", comp_method) + if comp_method != 0: + msg = f"Unknown compression method {comp_method} in iCCP chunk" + raise SyntaxError(msg) + 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: int, length: int) -> bytes: + # image header + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + if length < 13: + if ImageFile.LOAD_TRUNCATED_IMAGES: + return s + msg = "Truncated IHDR chunk" + raise ValueError(msg) + self.im_size = i32(s, 0), i32(s, 4) + try: + self.im_mode, self.im_rawmode = _MODES[(s[8], s[9])] + except Exception: + pass + if s[12]: + self.im_info["interlace"] = 1 + if s[11]: + msg = "unknown filter category" + raise SyntaxError(msg) + return s + + def chunk_IDAT(self, pos: int, length: int) -> NoReturn: + # image data + if "bbox" in self.im_info: + tile = [ImageFile._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 = [ImageFile._Tile("zip", (0, 0) + self.im_size, pos, self.im_rawmode)] + self.im_tile = tile + self.im_idat = length + msg = "image data found" + raise EOFError(msg) + + def chunk_IEND(self, pos: int, length: int) -> NoReturn: + msg = "end of PNG image" + raise EOFError(msg) + + def chunk_PLTE(self, pos: int, length: int) -> bytes: + # palette + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + if self.im_mode == "P": + self.im_palette = "RGB", s + return s + + def chunk_tRNS(self, pos: int, length: int) -> bytes: + # transparency + assert self.fp is not None + 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;16"): + 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: int, length: int) -> bytes: + # gamma setting + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + self.im_info["gamma"] = i32(s) / 100000.0 + return s + + def chunk_cHRM(self, pos: int, length: int) -> bytes: + # chromaticity, 8 unsigned ints, actual value is scaled by 100,000 + # WP x,y, Red x,y, Green x,y Blue x,y + + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + raw_vals = struct.unpack(f">{len(s) // 4}I", s) + self.im_info["chromaticity"] = tuple(elt / 100000.0 for elt in raw_vals) + return s + + def chunk_sRGB(self, pos: int, length: int) -> bytes: + # srgb rendering intent, 1 byte + # 0 perceptual + # 1 relative colorimetric + # 2 saturation + # 3 absolute colorimetric + + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + if length < 1: + if ImageFile.LOAD_TRUNCATED_IMAGES: + return s + msg = "Truncated sRGB chunk" + raise ValueError(msg) + self.im_info["srgb"] = s[0] + return s + + def chunk_pHYs(self, pos: int, length: int) -> bytes: + # pixels per unit + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + if length < 9: + if ImageFile.LOAD_TRUNCATED_IMAGES: + return s + msg = "Truncated pHYs chunk" + raise ValueError(msg) + px, py = i32(s, 0), i32(s, 4) + unit = s[8] + if unit == 1: # meter + dpi = px * 0.0254, py * 0.0254 + self.im_info["dpi"] = dpi + elif unit == 0: + self.im_info["aspect"] = px, py + return s + + def chunk_tEXt(self, pos: int, length: int) -> bytes: + # text + assert self.fp is not None + 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_str = k.decode("latin-1", "strict") + v_str = v.decode("latin-1", "replace") + + self.im_info[k_str] = v if k == b"exif" else v_str + self.im_text[k_str] = v_str + self.check_text_memory(len(v_str)) + + return s + + def chunk_zTXt(self, pos: int, length: int) -> bytes: + # compressed text + assert self.fp is not None + 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 = v[0] + else: + comp_method = 0 + if comp_method != 0: + msg = f"Unknown compression method {comp_method} in zTXt chunk" + raise SyntaxError(msg) + 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_str = k.decode("latin-1", "strict") + v_str = v.decode("latin-1", "replace") + + self.im_info[k_str] = self.im_text[k_str] = v_str + self.check_text_memory(len(v_str)) + + return s + + def chunk_iTXt(self, pos: int, length: int) -> bytes: + # international text + assert self.fp is not None + 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 = r[0], 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 + if k == b"XML:com.adobe.xmp": + self.im_info["xmp"] = v + try: + k_str = k.decode("latin-1", "strict") + lang_str = lang.decode("utf-8", "strict") + tk_str = tk.decode("utf-8", "strict") + v_str = v.decode("utf-8", "strict") + except UnicodeError: + return s + + self.im_info[k_str] = self.im_text[k_str] = iTXt(v_str, lang_str, tk_str) + self.check_text_memory(len(v_str)) + + return s + + def chunk_eXIf(self, pos: int, length: int) -> bytes: + assert self.fp is not None + 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: int, length: int) -> bytes: + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + if length < 8: + if ImageFile.LOAD_TRUNCATED_IMAGES: + return s + msg = "APNG contains truncated acTL chunk" + raise ValueError(msg) + 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: int, length: int) -> bytes: + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + if length < 26: + if ImageFile.LOAD_TRUNCATED_IMAGES: + return s + msg = "APNG contains truncated fcTL chunk" + raise ValueError(msg) + 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 + ): + msg = "APNG contains frame sequence errors" + raise SyntaxError(msg) + 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: + msg = "APNG contains invalid frames" + raise SyntaxError(msg) + 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"] = s[24] + self.im_info["blend"] = s[25] + return s + + def chunk_fdAT(self, pos: int, length: int) -> bytes: + assert self.fp is not None + if length < 4: + if ImageFile.LOAD_TRUNCATED_IMAGES: + s = ImageFile._safe_read(self.fp, length) + return s + msg = "APNG contains truncated fDAT chunk" + raise ValueError(msg) + s = ImageFile._safe_read(self.fp, 4) + seq = i32(s) + if self._seq_num != seq - 1: + msg = "APNG contains frame sequence errors" + raise SyntaxError(msg) + self._seq_num = seq + return self.chunk_IDAT(pos + 4, length - 4) + + +# -------------------------------------------------------------------- +# PNG reader + + +def _accept(prefix: bytes) -> bool: + return prefix[:8] == _MAGIC + + +## +# Image plugin for PNG images. + + +class PngImageFile(ImageFile.ImageFile): + format = "PNG" + format_description = "Portable network graphics" + + def _open(self) -> None: + if not _accept(self.fp.read(8)): + msg = "not a PNG file" + raise SyntaxError(msg) + self._fp = self.fp + self.__frame = 0 + + # + # Parse headers up to the first IDAT or fDAT chunk + + self.private_chunks: list[tuple[bytes, bytes] | tuple[bytes, bytes, bool]] = [] + self.png: PngStream | None = 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) + if cid[1:2].islower(): + self.private_chunks.append((cid, s)) + + 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: dict[str, str | iTXt] | None = 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) -> dict[str, str | iTXt]: + # 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) + assert self._text is not None + return self._text + + def verify(self) -> None: + """Verify PNG file""" + + if self.fp is None: + msg = "verify must be called directly after open" + raise RuntimeError(msg) + + # back up to beginning of IDAT block + self.fp.seek(self.tile[0][2] - 8) + + assert self.png is not None + self.png.verify() + self.png.close() + + if self._exclusive_fp: + self.fp.close() + self.fp = None + + def seek(self, frame: int) -> None: + 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) + msg = "no more images in APNG file" + raise EOFError(msg) from e + + def _seek(self, frame: int, rewind: bool = False) -> None: + assert self.png is not None + + self.dispose: _imaging.ImagingCore | None + dispose_extent = None + if frame == 0: + if rewind: + self._fp.seek(self.__rewind) + self.png.rewind() + self.__prepare_idat = self.__rewind_idat + self._im = 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") + dispose_extent = self.info.get("bbox") + self.__frame = 0 + else: + if frame != self.__frame + 1: + msg = f"cannot seek to frame {frame}" + raise ValueError(msg) + + # ensure previous frame was loaded + self.load() + + if self.dispose: + self.im.paste(self.dispose, self.dispose_extent) + self._prev_im = self.im.copy() + + 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": + msg = "No more images in APNG file" + raise EOFError(msg) + if cid == b"fcTL": + if frame_start: + # there must be at least one fdAT chunk between fcTL chunks + msg = "APNG missing frame data" + raise SyntaxError(msg) + 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") + dispose_extent = self.info.get("bbox") + + if not self.tile: + msg = "image not found in APNG frame" + raise EOFError(msg) + if dispose_extent: + self.dispose_extent: tuple[float, float, float, float] = dispose_extent + + # setup frame disposal (actual disposal done when needed in the next _seek()) + if self._prev_im is None and self.dispose_op == Disposal.OP_PREVIOUS: + self.dispose_op = Disposal.OP_BACKGROUND + + self.dispose = None + if self.dispose_op == Disposal.OP_PREVIOUS: + if self._prev_im: + self.dispose = self._prev_im.copy() + self.dispose = self._crop(self.dispose, self.dispose_extent) + elif self.dispose_op == Disposal.OP_BACKGROUND: + self.dispose = Image.core.fill(self.mode, self.size) + self.dispose = self._crop(self.dispose, self.dispose_extent) + + def tell(self) -> int: + return self.__frame + + def load_prepare(self) -> None: + """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: int) -> bytes: + """internal: read more image data""" + + assert self.png is not None + 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) -> None: + """internal: finished reading image data""" + assert self.png is not None + if self.__idat != 0: + self.fp.read(self.__idat) + 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 + try: + ImageFile._safe_read(self.fp, length) + except OSError as e: + if ImageFile.LOAD_TRUNCATED_IMAGES: + break + else: + raise e + except AttributeError: + logger.debug("%r %s %s (unknown)", cid, pos, length) + s = ImageFile._safe_read(self.fp, length) + if cid[1:2].islower(): + self.private_chunks.append((cid, s, True)) + self._text = self.png.im_text + if not self.is_animated: + self.png.close() + self.png = None + else: + if self._prev_im and self.blend_op == Blend.OP_OVER: + updated = self._crop(self.im, self.dispose_extent) + if self.im.mode == "RGB" and "transparency" in self.info: + mask = updated.convert_transparent( + "RGBA", self.info["transparency"] + ) + else: + if self.im.mode == "P" and "transparency" in self.info: + t = self.info["transparency"] + if isinstance(t, bytes): + updated.putpalettealphas(t) + elif isinstance(t, int): + updated.putpalettealpha(t) + mask = updated.convert("RGBA") + self._prev_im.paste(updated, self.dispose_extent, mask) + self.im = self._prev_im + + def _getexif(self) -> dict[int, Any] | None: + 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 self.getexif()._get_merged_dict() + + def getexif(self) -> Image.Exif: + if "exif" not in self.info: + self.load() + + return super().getexif() + + +# -------------------------------------------------------------------- +# PNG writer + +_OUTMODES = { + # supported PIL modes, and corresponding rawmode, bit depth and color type + "1": ("1", b"\x01", b"\x00"), + "L;1": ("L;1", b"\x01", b"\x00"), + "L;2": ("L;2", b"\x02", b"\x00"), + "L;4": ("L;4", b"\x04", b"\x00"), + "L": ("L", b"\x08", b"\x00"), + "LA": ("LA", b"\x08", b"\x04"), + "I": ("I;16B", b"\x10", b"\x00"), + "I;16": ("I;16B", b"\x10", b"\x00"), + "I;16B": ("I;16B", b"\x10", b"\x00"), + "P;1": ("P;1", b"\x01", b"\x03"), + "P;2": ("P;2", b"\x02", b"\x03"), + "P;4": ("P;4", b"\x04", b"\x03"), + "P": ("P", b"\x08", b"\x03"), + "RGB": ("RGB", b"\x08", b"\x02"), + "RGBA": ("RGBA", b"\x08", b"\x06"), +} + + +def putchunk(fp: IO[bytes], cid: bytes, *data: bytes) -> None: + """Write a PNG chunk (including CRC field)""" + + byte_data = b"".join(data) + + fp.write(o32(len(byte_data)) + cid) + fp.write(byte_data) + crc = _crc32(byte_data, _crc32(cid)) + fp.write(o32(crc)) + + +class _idat: + # wrap output from the encoder in IDAT chunks + + def __init__(self, fp: IO[bytes], chunk: Callable[..., None]) -> None: + self.fp = fp + self.chunk = chunk + + def write(self, data: bytes) -> None: + self.chunk(self.fp, b"IDAT", data) + + +class _fdat: + # wrap encoder output in fdAT chunks + + def __init__(self, fp: IO[bytes], chunk: Callable[..., None], seq_num: int) -> None: + self.fp = fp + self.chunk = chunk + self.seq_num = seq_num + + def write(self, data: bytes) -> None: + self.chunk(self.fp, b"fdAT", o32(self.seq_num), data) + self.seq_num += 1 + + +class _Frame(NamedTuple): + im: Image.Image + bbox: tuple[int, int, int, int] | None + encoderinfo: dict[str, Any] + + +def _write_multiple_frames( + im: Image.Image, + fp: IO[bytes], + chunk: Callable[..., None], + mode: str, + rawmode: str, + default_image: Image.Image | None, + append_images: list[Image.Image], +) -> Image.Image | None: + duration = im.encoderinfo.get("duration") + loop = im.encoderinfo.get("loop", im.info.get("loop", 0)) + disposal = im.encoderinfo.get("disposal", im.info.get("disposal", Disposal.OP_NONE)) + blend = im.encoderinfo.get("blend", im.info.get("blend", Blend.OP_SOURCE)) + + if default_image: + chain = itertools.chain(append_images) + else: + chain = itertools.chain([im], append_images) + + im_frames: list[_Frame] = [] + frame_count = 0 + for im_seq in chain: + for im_frame in ImageSequence.Iterator(im_seq): + if im_frame.mode == mode: + im_frame = im_frame.copy() + else: + im_frame = im_frame.convert(mode) + encoderinfo = im.encoderinfo.copy() + if isinstance(duration, (list, tuple)): + encoderinfo["duration"] = duration[frame_count] + elif duration is None and "duration" in im_frame.info: + encoderinfo["duration"] = im_frame.info["duration"] + 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 == Disposal.OP_PREVIOUS and len(im_frames) < 2: + prev_disposal = Disposal.OP_BACKGROUND + + if prev_disposal == Disposal.OP_BACKGROUND: + base_im = previous.im.copy() + 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 == Disposal.OP_PREVIOUS: + base_im = im_frames[-2].im + else: + base_im = previous.im + delta = ImageChops.subtract_modulo( + im_frame.convert("RGBA"), base_im.convert("RGBA") + ) + bbox = delta.getbbox(alpha_only=False) + if ( + not bbox + and prev_disposal == encoderinfo.get("disposal") + and prev_blend == encoderinfo.get("blend") + and "duration" in encoderinfo + ): + previous.encoderinfo["duration"] += encoderinfo["duration"] + continue + else: + bbox = None + im_frames.append(_Frame(im_frame, bbox, encoderinfo)) + + if len(im_frames) == 1 and not default_image: + return im_frames[0].im + + # animation control + chunk( + fp, + b"acTL", + o32(len(im_frames)), # 0: num_frames + o32(loop), # 4: num_plays + ) + + # default image IDAT (if it exists) + if default_image: + if im.mode != mode: + im = im.convert(mode) + ImageFile._save( + im, + cast(IO[bytes], _idat(fp, chunk)), + [ImageFile._Tile("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 + encoderinfo = frame_data.encoderinfo + frame_duration = int(round(encoderinfo.get("duration", 0))) + frame_disposal = encoderinfo.get("disposal", disposal) + frame_blend = encoderinfo.get("blend", blend) + # 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(frame_duration), # delay_numerator + o16(1000), # delay_denominator + o8(frame_disposal), # dispose_op + o8(frame_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, + cast(IO[bytes], _idat(fp, chunk)), + [ImageFile._Tile("zip", (0, 0) + im_frame.size, 0, rawmode)], + ) + else: + fdat_chunks = _fdat(fp, chunk, seq_num) + ImageFile._save( + im_frame, + cast(IO[bytes], fdat_chunks), + [ImageFile._Tile("zip", (0, 0) + im_frame.size, 0, rawmode)], + ) + seq_num = fdat_chunks.seq_num + return None + + +def _save_all(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + _save(im, fp, filename, save_all=True) + + +def _save( + im: Image.Image, + fp: IO[bytes], + filename: str | bytes, + chunk: Callable[..., None] = putchunk, + save_all: bool = False, +) -> None: + # save an image to disk (called by the save method) + + if save_all: + default_image = im.encoderinfo.get( + "default_image", im.info.get("default_image") + ) + modes = set() + sizes = set() + append_images = im.encoderinfo.get("append_images", []) + for im_seq in itertools.chain([im], append_images): + for im_frame in ImageSequence.Iterator(im_seq): + modes.add(im_frame.mode) + sizes.add(im_frame.size) + for mode in ("RGBA", "RGB", "P"): + if mode in modes: + break + else: + mode = modes.pop() + size = tuple(max(frame_size[i] for frame_size in sizes) for i in range(2)) + else: + size = im.size + mode = im.mode + + outmode = mode + if mode == "P": + # + # attempt to minimize storage requirements for palette images + if "bits" in im.encoderinfo: + # number of bits specified by user + colors = min(1 << im.encoderinfo["bits"], 256) + else: + # check palette contents + if im.palette: + colors = max(min(len(im.palette.getdata()[1]) // 3, 256), 1) + else: + colors = 256 + + if colors <= 16: + if colors <= 2: + bits = 1 + elif colors <= 4: + bits = 2 + else: + bits = 4 + outmode += f";{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, bit_depth, color_type = _OUTMODES[outmode] + except KeyError as e: + msg = f"cannot write mode {mode} as PNG" + raise OSError(msg) from e + + # + # write minimal PNG file + + fp.write(_MAGIC) + + chunk( + fp, + b"IHDR", + o32(size[0]), # 0: size + o32(size[1]), + bit_depth, + color_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 info_chunk in info.chunks: + cid, data = info_chunk[:2] + if cid in chunks: + chunks.remove(cid) + chunk(fp, cid, data) + elif cid in chunks_multiple_allowed: + chunk(fp, cid, data) + elif cid[1:2].islower(): + # Private chunk + after_idat = len(info_chunk) == 3 and info_chunk[2] + if not after_idat: + chunk(fp, cid, data) + + if im.mode == "P": + palette_byte_number = colors * 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 = colors + 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", "I;16"): + 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. + msg = "cannot use transparency for this mode" + raise OSError(msg) + else: + if im.mode == "P" and im.im.getpalettemode() == "RGBA": + alpha = im.im.getpalette("RGBA", "A") + alpha_bytes = colors + 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 info_chunk in info.chunks: + cid, data = info_chunk[:2] + if cid in chunks: + chunks.remove(cid) + chunk(fp, cid, data) + + exif = im.encoderinfo.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) + + single_im: Image.Image | None = im + if save_all: + single_im = _write_multiple_frames( + im, fp, chunk, mode, rawmode, default_image, append_images + ) + if single_im: + ImageFile._save( + single_im, + cast(IO[bytes], _idat(fp, chunk)), + [ImageFile._Tile("zip", (0, 0) + single_im.size, 0, rawmode)], + ) + + if info: + for info_chunk in info.chunks: + cid, data = info_chunk[:2] + if cid[1:2].islower(): + # Private chunk + after_idat = len(info_chunk) == 3 and info_chunk[2] + if after_idat: + chunk(fp, cid, data) + + chunk(fp, b"IEND", b"") + + if hasattr(fp, "flush"): + fp.flush() + + +# -------------------------------------------------------------------- +# PNG chunk converter + + +def getchunks(im: Image.Image, **params: Any) -> list[tuple[bytes, bytes, bytes]]: + """Return a list of PNG chunks representing this image.""" + from io import BytesIO + + chunks = [] + + def append(fp: IO[bytes], cid: bytes, *data: bytes) -> None: + byte_data = b"".join(data) + crc = o32(_crc32(byte_data, _crc32(cid))) + chunks.append((cid, byte_data, crc)) + + fp = BytesIO() + + try: + im.encoderinfo = params + _save(im, fp, "", append) + finally: + del im.encoderinfo + + return chunks + + +# -------------------------------------------------------------------- +# 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 0000000..4e779df --- /dev/null +++ b/venv/Lib/site-packages/PIL/PpmImagePlugin.py @@ -0,0 +1,375 @@ +# +# 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 __future__ import annotations + +import math +from typing import IO + +from . import Image, ImageFile +from ._binary import i16be as i16 +from ._binary import o8 +from ._binary import o32le as o32 + +# +# -------------------------------------------------------------------- + +b_whitespace = b"\x20\x09\x0a\x0b\x0c\x0d" + +MODES = { + # standard + b"P1": "1", + b"P2": "L", + b"P3": "RGB", + b"P4": "1", + b"P5": "L", + b"P6": "RGB", + # extensions + b"P0CMYK": "CMYK", + b"Pf": "F", + # PIL extensions (for test purposes only) + b"PyP": "P", + b"PyRGBA": "RGBA", + b"PyCMYK": "CMYK", +} + + +def _accept(prefix: bytes) -> bool: + return prefix[0:1] == b"P" and prefix[1] in b"0123456fy" + + +## +# Image plugin for PBM, PGM, and PPM images. + + +class PpmImageFile(ImageFile.ImageFile): + format = "PPM" + format_description = "Pbmplus image" + + def _read_magic(self) -> bytes: + assert self.fp is not None + + magic = b"" + # read until whitespace or longest available magic number + for _ in range(6): + c = self.fp.read(1) + if not c or c in b_whitespace: + break + magic += c + return magic + + def _read_token(self) -> bytes: + assert self.fp is not None + + token = b"" + while len(token) <= 10: # read until next whitespace or limit of 10 characters + c = self.fp.read(1) + if not c: + break + elif c in b_whitespace: # token ended + if not token: + # skip whitespace at start + continue + break + elif c == b"#": + # ignores rest of the line; stops at CR, LF or EOF + while self.fp.read(1) not in b"\r\n": + pass + continue + token += c + if not token: + # Token was not even 1 byte + msg = "Reached EOF while reading header" + raise ValueError(msg) + elif len(token) > 10: + msg = f"Token too long in file header: {token.decode()}" + raise ValueError(msg) + return token + + def _open(self) -> None: + assert self.fp is not None + + magic_number = self._read_magic() + try: + mode = MODES[magic_number] + except KeyError: + msg = "not a PPM file" + raise SyntaxError(msg) + self._mode = mode + + if magic_number in (b"P1", b"P4"): + self.custom_mimetype = "image/x-portable-bitmap" + elif magic_number in (b"P2", b"P5"): + self.custom_mimetype = "image/x-portable-graymap" + elif magic_number in (b"P3", b"P6"): + self.custom_mimetype = "image/x-portable-pixmap" + + self._size = int(self._read_token()), int(self._read_token()) + + decoder_name = "raw" + if magic_number in (b"P1", b"P2", b"P3"): + decoder_name = "ppm_plain" + + args: str | tuple[str | int, ...] + if mode == "1": + args = "1;I" + elif mode == "F": + scale = float(self._read_token()) + if scale == 0.0 or not math.isfinite(scale): + msg = "scale must be finite and non-zero" + raise ValueError(msg) + self.info["scale"] = abs(scale) + + rawmode = "F;32F" if scale < 0 else "F;32BF" + args = (rawmode, 0, -1) + else: + maxval = int(self._read_token()) + if not 0 < maxval < 65536: + msg = "maxval must be greater than 0 and less than 65536" + raise ValueError(msg) + if maxval > 255 and mode == "L": + self._mode = "I" + + rawmode = mode + if decoder_name != "ppm_plain": + # If maxval matches a bit depth, use the raw decoder directly + if maxval == 65535 and mode == "L": + rawmode = "I;16B" + elif maxval != 255: + decoder_name = "ppm" + + args = rawmode if decoder_name == "raw" else (rawmode, maxval) + self.tile = [ + ImageFile._Tile(decoder_name, (0, 0) + self.size, self.fp.tell(), args) + ] + + +# +# -------------------------------------------------------------------- + + +class PpmPlainDecoder(ImageFile.PyDecoder): + _pulls_fd = True + _comment_spans: bool + + def _read_block(self) -> bytes: + assert self.fd is not None + + return self.fd.read(ImageFile.SAFEBLOCK) + + def _find_comment_end(self, block: bytes, start: int = 0) -> int: + a = block.find(b"\n", start) + b = block.find(b"\r", start) + return min(a, b) if a * b > 0 else max(a, b) # lowest nonnegative index (or -1) + + def _ignore_comments(self, block: bytes) -> bytes: + if self._comment_spans: + # Finish current comment + while block: + comment_end = self._find_comment_end(block) + if comment_end != -1: + # Comment ends in this block + # Delete tail of comment + block = block[comment_end + 1 :] + break + else: + # Comment spans whole block + # So read the next block, looking for the end + block = self._read_block() + + # Search for any further comments + self._comment_spans = False + while True: + comment_start = block.find(b"#") + if comment_start == -1: + # No comment found + break + comment_end = self._find_comment_end(block, comment_start) + if comment_end != -1: + # Comment ends in this block + # Delete comment + block = block[:comment_start] + block[comment_end + 1 :] + else: + # Comment continues to next block(s) + block = block[:comment_start] + self._comment_spans = True + break + return block + + def _decode_bitonal(self) -> bytearray: + """ + This is a separate method because in the plain PBM format, all data tokens are + exactly one byte, so the inter-token whitespace is optional. + """ + data = bytearray() + total_bytes = self.state.xsize * self.state.ysize + + while len(data) != total_bytes: + block = self._read_block() # read next block + if not block: + # eof + break + + block = self._ignore_comments(block) + + tokens = b"".join(block.split()) + for token in tokens: + if token not in (48, 49): + msg = b"Invalid token for this mode: %s" % bytes([token]) + raise ValueError(msg) + data = (data + tokens)[:total_bytes] + invert = bytes.maketrans(b"01", b"\xFF\x00") + return data.translate(invert) + + def _decode_blocks(self, maxval: int) -> bytearray: + data = bytearray() + max_len = 10 + out_byte_count = 4 if self.mode == "I" else 1 + out_max = 65535 if self.mode == "I" else 255 + bands = Image.getmodebands(self.mode) + total_bytes = self.state.xsize * self.state.ysize * bands * out_byte_count + + half_token = b"" + while len(data) != total_bytes: + block = self._read_block() # read next block + if not block: + if half_token: + block = bytearray(b" ") # flush half_token + else: + # eof + break + + block = self._ignore_comments(block) + + if half_token: + block = half_token + block # stitch half_token to new block + half_token = b"" + + tokens = block.split() + + if block and not block[-1:].isspace(): # block might split token + half_token = tokens.pop() # save half token for later + if len(half_token) > max_len: # prevent buildup of half_token + msg = ( + b"Token too long found in data: %s" % half_token[: max_len + 1] + ) + raise ValueError(msg) + + for token in tokens: + if len(token) > max_len: + msg = b"Token too long found in data: %s" % token[: max_len + 1] + raise ValueError(msg) + value = int(token) + if value < 0: + msg_str = f"Channel value is negative: {value}" + raise ValueError(msg_str) + if value > maxval: + msg_str = f"Channel value too large for this mode: {value}" + raise ValueError(msg_str) + value = round(value / maxval * out_max) + data += o32(value) if self.mode == "I" else o8(value) + if len(data) == total_bytes: # finished! + break + return data + + def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]: + self._comment_spans = False + if self.mode == "1": + data = self._decode_bitonal() + rawmode = "1;8" + else: + maxval = self.args[-1] + data = self._decode_blocks(maxval) + rawmode = "I;32" if self.mode == "I" else self.mode + self.set_as_raw(bytes(data), rawmode) + return -1, 0 + + +class PpmDecoder(ImageFile.PyDecoder): + _pulls_fd = True + + def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]: + assert self.fd is not None + + data = bytearray() + maxval = self.args[-1] + in_byte_count = 1 if maxval < 256 else 2 + out_byte_count = 4 if self.mode == "I" else 1 + out_max = 65535 if self.mode == "I" else 255 + bands = Image.getmodebands(self.mode) + dest_length = self.state.xsize * self.state.ysize * bands * out_byte_count + while len(data) < dest_length: + pixels = self.fd.read(in_byte_count * bands) + if len(pixels) < in_byte_count * bands: + # eof + break + for b in range(bands): + value = ( + pixels[b] if in_byte_count == 1 else i16(pixels, b * in_byte_count) + ) + value = min(out_max, round(value / maxval * out_max)) + data += o32(value) if self.mode == "I" else o8(value) + rawmode = "I;32" if self.mode == "I" else self.mode + self.set_as_raw(bytes(data), rawmode) + return -1, 0 + + +# +# -------------------------------------------------------------------- + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if im.mode == "1": + rawmode, head = "1;I", b"P4" + elif im.mode == "L": + rawmode, head = "L", b"P5" + elif im.mode in ("I", "I;16"): + rawmode, head = "I;16B", b"P5" + elif im.mode in ("RGB", "RGBA"): + rawmode, head = "RGB", b"P6" + elif im.mode == "F": + rawmode, head = "F;32F", b"Pf" + else: + msg = f"cannot write mode {im.mode} as PPM" + raise OSError(msg) + fp.write(head + b"\n%d %d\n" % im.size) + if head == b"P6": + fp.write(b"255\n") + elif head == b"P5": + if rawmode == "L": + fp.write(b"255\n") + else: + fp.write(b"65535\n") + elif head == b"Pf": + fp.write(b"-1.0\n") + row_order = -1 if im.mode == "F" else 1 + ImageFile._save( + im, fp, [ImageFile._Tile("raw", (0, 0) + im.size, 0, (rawmode, 0, row_order))] + ) + + +# +# -------------------------------------------------------------------- + + +Image.register_open(PpmImageFile.format, PpmImageFile, _accept) +Image.register_save(PpmImageFile.format, _save) + +Image.register_decoder("ppm", PpmDecoder) +Image.register_decoder("ppm_plain", PpmPlainDecoder) + +Image.register_extensions(PpmImageFile.format, [".pbm", ".pgm", ".ppm", ".pnm", ".pfm"]) + +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 0000000..8ff5e39 --- /dev/null +++ b/venv/Lib/site-packages/PIL/PsdImagePlugin.py @@ -0,0 +1,332 @@ +# +# 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. +# +from __future__ import annotations + +import io +from functools import cached_property +from typing import IO + +from . import Image, ImageFile, ImagePalette +from ._binary import i8 +from ._binary import i16be as i16 +from ._binary import i32be as i32 +from ._binary import si16be as si16 +from ._binary import si32be as si32 + +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: bytes) -> bool: + 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) -> None: + read = self.fp.read + + # + # header + + s = read(26) + if not _accept(s) or i16(s, 4) != 1: + msg = "not a PSD file" + raise SyntaxError(msg) + + 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: + msg = "not enough channels" + raise OSError(msg) + if mode == "RGB" and psd_channels == 4: + mode = "RGBA" + channels = 4 + + 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_position = None + + size = i32(read(4)) + if size: + end = self.fp.tell() + size + size = i32(read(4)) + if size: + self._layers_position = self.fp.tell() + self._layers_size = size + self.fp.seek(end) + self._n_frames: int | None = None + + # + # 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 + + @cached_property + def layers( + self, + ) -> list[tuple[str, str, tuple[int, int, int, int], list[ImageFile._Tile]]]: + layers = [] + if self._layers_position is not None: + self._fp.seek(self._layers_position) + _layer_data = io.BytesIO(ImageFile._safe_read(self._fp, self._layers_size)) + layers = _layerinfo(_layer_data, self._layers_size) + self._n_frames = len(layers) + return layers + + @property + def n_frames(self) -> int: + if self._n_frames is None: + self._n_frames = len(self.layers) + return self._n_frames + + @property + def is_animated(self) -> bool: + return len(self.layers) > 1 + + def seek(self, layer: int) -> None: + if not self._seek_check(layer): + return + + # seek to given layer (1..max) + try: + _, mode, _, tile = self.layers[layer - 1] + self._mode = mode + self.tile = tile + self.frame = layer + self.fp = self._fp + except IndexError as e: + msg = "no such layer" + raise EOFError(msg) from e + + def tell(self) -> int: + # return layer number (0=image, 1..max=layers) + return self.frame + + +def _layerinfo( + fp: IO[bytes], ct_bytes: int +) -> list[tuple[str, str, tuple[int, int, int, int], list[ImageFile._Tile]]]: + # read layerinfo block + layers = [] + + def read(size: int) -> bytes: + return ImageFile._safe_read(fp, size) + + ct = si16(read(2)) + + # sanity check + if ct_bytes < (abs(ct) * 20): + msg = "Layer block too short for number of layers requested" + raise SyntaxError(msg) + + for _ in range(abs(ct)): + # bounding box + y0 = si32(read(4)) + x0 = si32(read(4)) + y1 = si32(read(4)) + x1 = si32(read(4)) + + # image info + bands = [] + ct_types = i16(read(2)) + if ct_types > 4: + fp.seek(ct_types * 6 + 12, io.SEEK_CUR) + size = i32(read(4)) + fp.seek(size, io.SEEK_CUR) + continue + + for _ in range(ct_types): + type = i16(read(2)) + + if type == 65535: + b = "A" + else: + b = "RGBA"[type] + + bands.append(b) + read(4) # size + + # figure out the image mode + bands.sort() + if bands == ["R"]: + mode = "L" + elif bands == ["B", "G", "R"]: + mode = "RGB" + elif bands == ["A", "B", "G", "R"]: + mode = "RGBA" + else: + mode = "" # unknown + + # skip over blend flags and extra information + read(12) # filler + name = "" + size = i32(read(4)) # length of the extra data field + if size: + data_end = fp.tell() + size + + length = i32(read(4)) + if length: + fp.seek(length - 16, io.SEEK_CUR) + + length = i32(read(4)) + if length: + fp.seek(length, io.SEEK_CUR) + + 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") + + fp.seek(data_end) + layers.append((name, mode, (x0, y0, x1, y1))) + + # get tiles + layerinfo = [] + for i, (name, mode, bbox) in enumerate(layers): + tile = [] + for m in mode: + t = _maketile(fp, m, bbox, 1) + if t: + tile.extend(t) + layerinfo.append((name, mode, bbox, tile)) + + return layerinfo + + +def _maketile( + file: IO[bytes], mode: str, bbox: tuple[int, int, int, int], channels: int +) -> list[ImageFile._Tile]: + tiles = [] + 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 + for channel in range(channels): + layer = mode[channel] + if mode == "CMYK": + layer += ";I" + tiles.append(ImageFile._Tile("raw", bbox, offset, layer)) + offset = offset + xsize * ysize + + elif compression == 1: + # + # packbits compression + i = 0 + bytecount = read(channels * ysize * 2) + offset = file.tell() + for channel in range(channels): + layer = mode[channel] + if mode == "CMYK": + layer += ";I" + tiles.append(ImageFile._Tile("packbits", bbox, offset, layer)) + for y in range(ysize): + offset = offset + i16(bytecount, i) + i += 2 + + file.seek(offset) + + if offset & 1: + read(1) # padding + + return tiles + + +# -------------------------------------------------------------------- +# registry + + +Image.register_open(PsdImageFile.format, PsdImageFile, _accept) + +Image.register_extension(PsdImageFile.format, ".psd") + +Image.register_mime(PsdImageFile.format, "image/vnd.adobe.photoshop") diff --git a/venv/Lib/site-packages/PIL/QoiImagePlugin.py b/venv/Lib/site-packages/PIL/QoiImagePlugin.py new file mode 100644 index 0000000..01cc868 --- /dev/null +++ b/venv/Lib/site-packages/PIL/QoiImagePlugin.py @@ -0,0 +1,115 @@ +# +# The Python Imaging Library. +# +# QOI support for PIL +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import os + +from . import Image, ImageFile +from ._binary import i32be as i32 + + +def _accept(prefix: bytes) -> bool: + return prefix[:4] == b"qoif" + + +class QoiImageFile(ImageFile.ImageFile): + format = "QOI" + format_description = "Quite OK Image" + + def _open(self) -> None: + if not _accept(self.fp.read(4)): + msg = "not a QOI file" + raise SyntaxError(msg) + + self._size = i32(self.fp.read(4)), i32(self.fp.read(4)) + + channels = self.fp.read(1)[0] + self._mode = "RGB" if channels == 3 else "RGBA" + + self.fp.seek(1, os.SEEK_CUR) # colorspace + self.tile = [ImageFile._Tile("qoi", (0, 0) + self._size, self.fp.tell())] + + +class QoiDecoder(ImageFile.PyDecoder): + _pulls_fd = True + _previous_pixel: bytes | bytearray | None = None + _previously_seen_pixels: dict[int, bytes | bytearray] = {} + + def _add_to_previous_pixels(self, value: bytes | bytearray) -> None: + self._previous_pixel = value + + r, g, b, a = value + hash_value = (r * 3 + g * 5 + b * 7 + a * 11) % 64 + self._previously_seen_pixels[hash_value] = value + + def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]: + assert self.fd is not None + + self._previously_seen_pixels = {} + self._add_to_previous_pixels(bytearray((0, 0, 0, 255))) + + data = bytearray() + bands = Image.getmodebands(self.mode) + dest_length = self.state.xsize * self.state.ysize * bands + while len(data) < dest_length: + byte = self.fd.read(1)[0] + value: bytes | bytearray + if byte == 0b11111110 and self._previous_pixel: # QOI_OP_RGB + value = bytearray(self.fd.read(3)) + self._previous_pixel[3:] + elif byte == 0b11111111: # QOI_OP_RGBA + value = self.fd.read(4) + else: + op = byte >> 6 + if op == 0: # QOI_OP_INDEX + op_index = byte & 0b00111111 + value = self._previously_seen_pixels.get( + op_index, bytearray((0, 0, 0, 0)) + ) + elif op == 1 and self._previous_pixel: # QOI_OP_DIFF + value = bytearray( + ( + (self._previous_pixel[0] + ((byte & 0b00110000) >> 4) - 2) + % 256, + (self._previous_pixel[1] + ((byte & 0b00001100) >> 2) - 2) + % 256, + (self._previous_pixel[2] + (byte & 0b00000011) - 2) % 256, + self._previous_pixel[3], + ) + ) + elif op == 2 and self._previous_pixel: # QOI_OP_LUMA + second_byte = self.fd.read(1)[0] + diff_green = (byte & 0b00111111) - 32 + diff_red = ((second_byte & 0b11110000) >> 4) - 8 + diff_blue = (second_byte & 0b00001111) - 8 + + value = bytearray( + tuple( + (self._previous_pixel[i] + diff_green + diff) % 256 + for i, diff in enumerate((diff_red, 0, diff_blue)) + ) + ) + value += self._previous_pixel[3:] + elif op == 3 and self._previous_pixel: # QOI_OP_RUN + run_length = (byte & 0b00111111) + 1 + value = self._previous_pixel + if bands == 3: + value = value[:3] + data += value * run_length + continue + self._add_to_previous_pixels(value) + + if bands == 3: + value = value[:3] + data += value + self.set_as_raw(data) + return -1, 0 + + +Image.register_open(QoiImageFile.format, QoiImageFile, _accept) +Image.register_decoder("qoi", QoiDecoder) +Image.register_extension(QoiImageFile.format, ".qoi") diff --git a/venv/Lib/site-packages/PIL/SgiImagePlugin.py b/venv/Lib/site-packages/PIL/SgiImagePlugin.py new file mode 100644 index 0000000..44254b7 --- /dev/null +++ b/venv/Lib/site-packages/PIL/SgiImagePlugin.py @@ -0,0 +1,247 @@ +# +# 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. +# +from __future__ import annotations + +import os +import struct +from typing import IO + +from . import Image, ImageFile +from ._binary import i16be as i16 +from ._binary import o8 + + +def _accept(prefix: bytes) -> bool: + 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) -> None: + # HEAD + assert self.fp is not None + + headlen = 512 + s = self.fp.read(headlen) + + if not _accept(s): + msg = "Not an SGI image file" + raise ValueError(msg) + + # compression : verbatim or RLE + compression = s[2] + + # bpc : 1 or 2 bytes (8bits or 16bits) + bpc = 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 == "": + msg = "Unsupported SGI image mode" + raise ValueError(msg) + + 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 = [ + ImageFile._Tile( + "SGI16", + (0, 0) + self.size, + headlen, + (self.mode, 0, orientation), + ) + ] + else: + self.tile = [] + offset = headlen + for layer in self.mode: + self.tile.append( + ImageFile._Tile( + "raw", (0, 0) + self.size, offset, (layer, 0, orientation) + ) + ) + offset += pagesize + elif compression == 1: + self.tile = [ + ImageFile._Tile( + "sgi_rle", (0, 0) + self.size, headlen, (rawmode, orientation, bpc) + ) + ] + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if im.mode not in {"RGB", "RGBA", "L"}: + msg = "Unsupported SGI image mode" + raise ValueError(msg) + + # 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): + msg = "Unsupported number of bytes per pixel" + raise ValueError(msg) + + # Flip the image, since the origin of SGI file is the bottom-left corner + orientation = -1 + # Define the file as SGI File Format + magic_number = 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 in {1, 2}: + z = 1 + + # assert we've got the right number of bands. + if len(im.getbands()) != z: + msg = f"incorrect number of bands in SGI write: {z} vs {len(im.getbands())}" + raise ValueError(msg) + + # Minimum Byte value + pinmin = 0 + # Maximum Byte value (255 = 8bits per pixel) + pinmax = 255 + # Image name (79 characters max, truncated below in write) + img_name = os.path.splitext(os.path.basename(filename))[0] + if isinstance(img_name, str): + img_name = img_name.encode("ascii", "ignore") + # Standard representation of pixel in the file + colormap = 0 + fp.write(struct.pack(">h", magic_number)) + 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", img_name)) # truncates to 79 chars + fp.write(struct.pack("s", b"")) # force null byte after img_name + 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)) + + if hasattr(fp, "flush"): + fp.flush() + + +class SGI16Decoder(ImageFile.PyDecoder): + _pulls_fd = True + + def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]: + assert self.fd is not None + assert self.im is not None + + 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 0000000..3a87d00 --- /dev/null +++ b/venv/Lib/site-packages/PIL/SpiderImagePlugin.py @@ -0,0 +1,326 @@ +# +# 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 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 +# +from __future__ import annotations + +import os +import struct +import sys +from typing import IO, TYPE_CHECKING, Any, cast + +from . import Image, ImageFile + + +def isInt(f: Any) -> int: + 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: tuple[float, ...]) -> int: + 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: str) -> int: + 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) -> None: + # 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: + msg = "not a valid Spider file" + raise SyntaxError(msg) + except struct.error as e: + msg = "not a valid Spider file" + raise SyntaxError(msg) from e + + h = (99,) + t # add 1 value : spider header index starts at 1 + iform = int(h[5]) + if iform != 1: + msg = "not a Spider 2D image" + raise SyntaxError(msg) + + 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: + msg = "inconsistent stack header values" + raise SyntaxError(msg) + + if self.bigendian: + self.rawmode = "F;32BF" + else: + self.rawmode = "F;32F" + self._mode = "F" + + self.tile = [ImageFile._Tile("raw", (0, 0) + self.size, offset, self.rawmode)] + self._fp = self.fp # FIXME: hack + + @property + def n_frames(self) -> int: + return self._nimages + + @property + def is_animated(self) -> bool: + return self._nimages > 1 + + # 1st image index is zero (although SPIDER imgnumber starts at 1) + def tell(self) -> int: + if self.imgnumber < 1: + return 0 + else: + return self.imgnumber - 1 + + def seek(self, frame: int) -> None: + if self.istack == 0: + msg = "attempt to seek in a non-stack file" + raise EOFError(msg) + 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: int = 255) -> Image.Image: + extrema = self.getextrema() + assert isinstance(extrema[0], float) + minimum, maximum = cast(tuple[float, float], extrema) + m: float = 1 + if maximum != minimum: + m = depth / (maximum - minimum) + b = -m * minimum + return self.point(lambda i: i * m + b).convert("L") + + if TYPE_CHECKING: + from . import ImageTk + + # returns a ImageTk.PhotoImage object, after rescaling to 0..255 + def tkPhotoImage(self) -> ImageTk.PhotoImage: + from . import ImageTk + + return ImageTk.PhotoImage(self.convert2byte(), palette=256) + + +# -------------------------------------------------------------------- +# Image series + + +# given a list of filenames, return a list of images +def loadImageSeries(filelist: list[str] | None = None) -> list[Image.Image] | 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 None + + byte_imgs = [] + for img in filelist: + if not os.path.exists(img): + print(f"unable to find {img}") + continue + try: + with Image.open(img) as im: + assert isinstance(im, SpiderImageFile) + byte_im = im.convert2byte() + except Exception: + if not isSpiderImage(img): + print(f"{img} is not a Spider image file") + continue + byte_im.info["filename"] = img + byte_imgs.append(byte_im) + return byte_imgs + + +# -------------------------------------------------------------------- +# For saving images in Spider format + + +def makeSpiderHeader(im: Image.Image) -> list[bytes]: + 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 + nvalues = int(labbyt / 4) + if nvalues < 23: + return [] + + hdr = [0.0] * nvalues + + # NB these are Fortran indices + hdr[1] = 1.0 # nslice (=1 for an image) + hdr[2] = float(nrow) # number of rows per slice + hdr[3] = float(nrow) # number of records in the image + 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 + return [struct.pack("f", v) for v in hdr] + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if im.mode[0] != "F": + im = im.convert("F") + + hdr = makeSpiderHeader(im) + if len(hdr) < 256: + msg = "Error creating Spider header" + raise OSError(msg) + + # write the SPIDER header + fp.writelines(hdr) + + rawmode = "F;32NF" # 32-bit native floating point + ImageFile._save(im, fp, [ImageFile._Tile("raw", (0, 0) + im.size, 0, rawmode)]) + + +def _save_spider(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + # get the filename extension and register it with Image + filename_ext = os.path.splitext(filename)[1] + ext = filename_ext.decode() if isinstance(filename_ext, bytes) else filename_ext + 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: python3 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(f"image: {im}") + print(f"format: {im.format}") + print(f"size: {im.size}") + print(f"mode: {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.Transpose.FLIP_LEFT_RIGHT) + print( + f"saving a flipped version of {os.path.basename(filename)} " + f"as {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 0000000..8912379 --- /dev/null +++ b/venv/Lib/site-packages/PIL/SunImagePlugin.py @@ -0,0 +1,145 @@ +# +# 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 __future__ import annotations + +from . import Image, ImageFile, ImagePalette +from ._binary import i32be as i32 + + +def _accept(prefix: bytes) -> bool: + 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) -> None: + # 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; + + assert self.fp is not None + + # HEAD + s = self.fp.read(32) + if not _accept(s): + msg = "not an SUN raster file" + raise SyntaxError(msg) + + offset = 32 + + self._size = i32(s, 4), i32(s, 8) + + depth = i32(s, 12) + # data_length = i32(s, 16) # unreliable, ignore. + file_type = i32(s, 20) + palette_type = i32(s, 24) # 0: None, 1: RGB, 2: Raw/arbitrary + palette_length = i32(s, 28) + + 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: + msg = "Unsupported Mode/Bit Depth" + raise SyntaxError(msg) + + if palette_length: + if palette_length > 1024: + msg = "Unsupported Color Palette Length" + raise SyntaxError(msg) + + if palette_type != 1: + msg = "Unsupported Palette Type" + raise SyntaxError(msg) + + 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 = [ + ImageFile._Tile("raw", (0, 0) + self.size, offset, (rawmode, stride)) + ] + elif file_type == 2: + self.tile = [ + ImageFile._Tile("sun_rle", (0, 0) + self.size, offset, rawmode) + ] + else: + msg = "Unsupported Sun Raster file type" + raise SyntaxError(msg) + + +# +# 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 0000000..779288b --- /dev/null +++ b/venv/Lib/site-packages/PIL/TarIO.py @@ -0,0 +1,57 @@ +# +# 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. +# +from __future__ import annotations + +import io + +from . import ContainerIO + + +class TarIO(ContainerIO.ContainerIO[bytes]): + """A file object that provides read access to a given member of a TAR file.""" + + def __init__(self, tarfile: str, file: str) -> None: + """ + 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: + msg = "unexpected end of tar file" + raise OSError(msg) + + name = s[:100].decode("utf-8") + i = name.find("\0") + if i == 0: + msg = "cannot find subfile" + raise OSError(msg) + 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) diff --git a/venv/Lib/site-packages/PIL/TgaImagePlugin.py b/venv/Lib/site-packages/PIL/TgaImagePlugin.py new file mode 100644 index 0000000..90d5b5c --- /dev/null +++ b/venv/Lib/site-packages/PIL/TgaImagePlugin.py @@ -0,0 +1,264 @@ +# +# 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. +# +from __future__ import annotations + +import warnings +from typing import IO + +from . import Image, ImageFile, ImagePalette +from ._binary import i16le as i16 +from ._binary import o8 +from ._binary import 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): "BGRA;15Z", + (2, 24): "BGR", + (2, 32): "BGRA", +} + + +## +# Image plugin for Targa files. + + +class TgaImageFile(ImageFile.ImageFile): + format = "TGA" + format_description = "Targa" + + def _open(self) -> None: + # process header + assert self.fp is not None + + s = self.fp.read(18) + + id_len = s[0] + + colormaptype = s[1] + imagetype = s[2] + + depth = s[16] + + flags = 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) + ): + msg = "not a TGA file" + raise SyntaxError(msg) + + # 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" if colormaptype else "L" + elif imagetype in (2, 10): + self._mode = "RGB" if depth == 24 else "RGBA" + else: + msg = "unknown TGA mode" + raise SyntaxError(msg) + + # orientation + orientation = flags & 0x30 + self._flip_horizontally = orientation in [0x10, 0x30] + if orientation in [0x20, 0x30]: + orientation = 1 + elif orientation in [0, 0x10]: + orientation = -1 + else: + msg = "unknown TGA orientation" + raise SyntaxError(msg) + + 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), s[7] + if mapdepth == 16: + self.palette = ImagePalette.raw( + "BGRA;15Z", bytes(2 * start) + self.fp.read(2 * size) + ) + self.palette.mode = "RGBA" + elif mapdepth == 24: + self.palette = ImagePalette.raw( + "BGR", bytes(3 * start) + self.fp.read(3 * size) + ) + elif mapdepth == 32: + self.palette = ImagePalette.raw( + "BGRA", bytes(4 * start) + self.fp.read(4 * size) + ) + else: + msg = "unknown TGA map depth" + raise SyntaxError(msg) + + # setup tile descriptor + try: + rawmode = MODES[(imagetype & 7, depth)] + if imagetype & 8: + # compressed + self.tile = [ + ImageFile._Tile( + "tga_rle", + (0, 0) + self.size, + self.fp.tell(), + (rawmode, orientation, depth), + ) + ] + else: + self.tile = [ + ImageFile._Tile( + "raw", + (0, 0) + self.size, + self.fp.tell(), + (rawmode, 0, orientation), + ) + ] + except KeyError: + pass # cannot decode + + def load_end(self) -> None: + if self._flip_horizontally: + self.im = self.im.transpose(Image.Transpose.FLIP_LEFT_RIGHT) + + +# +# -------------------------------------------------------------------- +# 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: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + try: + rawmode, bits, colormaptype, imagetype = SAVE[im.mode] + except KeyError as e: + msg = f"cannot write mode {im.mode} as TGA" + raise OSError(msg) 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: + palette = im.im.getpalette("RGB", "BGR") + colormaplength, colormapentry = len(palette) // 3, 24 + else: + colormaplength, colormapentry = 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(0) # 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(palette) + + if rle: + ImageFile._save( + im, + fp, + [ImageFile._Tile("tga_rle", (0, 0) + im.size, 0, (rawmode, orientation))], + ) + else: + ImageFile._save( + im, + fp, + [ImageFile._Tile("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 0000000..61eb152 --- /dev/null +++ b/venv/Lib/site-packages/PIL/TiffImagePlugin.py @@ -0,0 +1,2297 @@ +# +# 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. +# +from __future__ import annotations + +import io +import itertools +import logging +import math +import os +import struct +import warnings +from collections.abc import Iterator, MutableMapping +from fractions import Fraction +from numbers import Number, Rational +from typing import IO, TYPE_CHECKING, Any, Callable, NoReturn, cast + +from . import ExifTags, Image, ImageFile, ImageOps, ImagePalette, TiffTags +from ._binary import i16be as i16 +from ._binary import i32be as i32 +from ._binary import o8 +from ._deprecate import deprecate +from ._typing import StrOrBytesPath +from ._util import is_path +from .TiffTags import TYPES + +if TYPE_CHECKING: + from ._typing import Buffer, IntegralLike + +logger = logging.getLogger(__name__) + +# Set these to true to force use of libtiff for reading or writing. +READ_LIBTIFF = False +WRITE_LIBTIFF = False +STRIP_SIZE = 65536 + +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 +OSUBFILETYPE = 255 +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 +TILEWIDTH = 322 +TILELENGTH = 323 +TILEOFFSETS = 324 +TILEBYTECOUNTS = 325 +SUBIFD = 330 +EXTRASAMPLES = 338 +SAMPLEFORMAT = 339 +JPEGTABLES = 347 +YCBCRSUBSAMPLING = 530 +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, (2,), 1, (8,), ()): ("L", "L"), + (MM, 1, (2,), 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, 0, (1,), 1, (16,), ()): ("I;16", "I;16"), + (II, 1, (1,), 1, (16,), ()): ("I;16", "I;16"), + (MM, 1, (1,), 1, (16,), ()): ("I;16B", "I;16B"), + (II, 1, (1,), 2, (16,), ()): ("I;16", "I;16R"), + (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,)): ("RGB", "RGBX"), + (MM, 2, (1,), 1, (8, 8, 8, 8), (0,)): ("RGB", "RGBX"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8), (0, 0)): ("RGB", "RGBXX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8), (0, 0)): ("RGB", "RGBXX"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (0, 0, 0)): ("RGB", "RGBXXX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (0, 0, 0)): ("RGB", "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,)): ("RGB", "RGBX;16L"), + (MM, 2, (1,), 1, (16, 16, 16, 16), (0,)): ("RGB", "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), (0,)): ("P", "PX"), + (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"), + (MM, 5, (1,), 1, (16, 16, 16, 16), ()): ("CMYK", "CMYK;16B"), + (II, 6, (1,), 1, (8,), ()): ("L", "L"), + (MM, 6, (1,), 1, (8,), ()): ("L", "L"), + # 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"), +} + +MAX_SAMPLESPERPIXEL = max(len(key_tp[4]) for key_tp in OPEN_INFO) + +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 + b"MM\x00\x2B", # BigTIFF with big-endian byte order + b"II\x2B\x00", # BigTIFF with little-endian byte order +] + +if not getattr(Image.core, "libtiff_support_custom_tags", True): + deprecate("Support for LibTIFF earlier than version 4", 12) + + +def _accept(prefix: bytes) -> bool: + return prefix[:4] in PREFIXES + + +def _limit_rational( + val: float | Fraction | IFDRational, max_val: int +) -> tuple[IntegralLike, IntegralLike]: + 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: IFDRational, max_val: int, min_val: int +) -> tuple[IntegralLike, IntegralLike]: + frac = Fraction(val) + n_d: tuple[IntegralLike, IntegralLike] = frac.numerator, frac.denominator + + if min(float(i) for i in n_d) < min_val: + n_d = _limit_rational(val, abs(min_val)) + + n_d_float = tuple(float(i) for i in n_d) + if max(n_d_float) > max_val: + n_d = _limit_rational(n_d_float[0] / n_d_float[1], max_val) + + return n_d + + +## +# Wrapper for TIFF IFDs. + +_load_dispatch = {} +_write_dispatch = {} + + +def _delegate(op: str) -> Any: + def delegate( + self: IFDRational, *args: tuple[float, ...] + ) -> bool | float | Fraction: + return getattr(self._val, op)(*args) + + return delegate + + +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: float | Fraction | IFDRational, denominator: int = 1 + ) -> None: + """ + :param value: either an integer numerator, a + float/rational/other number, or an IFDRational + :param denominator: Optional integer denominator + """ + self._val: Fraction | float + 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: + if TYPE_CHECKING: + self._numerator = cast(IntegralLike, value) + else: + self._numerator = value + self._denominator = denominator + + if denominator == 0: + self._val = float("nan") + elif denominator == 1: + self._val = Fraction(value) + elif int(value) == value: + self._val = Fraction(int(value), denominator) + else: + self._val = Fraction(value / denominator) + + @property + def numerator(self) -> IntegralLike: + return self._numerator + + @property + def denominator(self) -> int: + return self._denominator + + def limit_rational(self, max_denominator: int) -> tuple[IntegralLike, int]: + """ + + :param max_denominator: Integer, the maximum denominator value + :returns: Tuple of (numerator, denominator) + """ + + if self.denominator == 0: + return self.numerator, self.denominator + + assert isinstance(self._val, Fraction) + f = self._val.limit_denominator(max_denominator) + return f.numerator, f.denominator + + def __repr__(self) -> str: + return str(float(self._val)) + + def __hash__(self) -> int: + return self._val.__hash__() + + def __eq__(self, other: object) -> bool: + val = self._val + if isinstance(other, IFDRational): + other = other._val + if isinstance(other, float): + val = float(val) + return val == other + + def __getstate__(self) -> list[float | Fraction | IntegralLike]: + return [self._val, self._numerator, self._denominator] + + def __setstate__(self, state: list[float | Fraction | IntegralLike]) -> None: + IFDRational.__init__(self, 0) + _val, _numerator, _denominator = state + assert isinstance(_val, (float, Fraction)) + self._val = _val + if TYPE_CHECKING: + self._numerator = cast(IntegralLike, _numerator) + else: + self._numerator = _numerator + assert isinstance(_denominator, int) + self._denominator = _denominator + + """ 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__") + # Python >= 3.11 + if hasattr(Fraction, "__int__"): + __int__ = _delegate("__int__") + + +_LoaderFunc = Callable[["ImageFileDirectory_v2", bytes, bool], Any] + + +def _register_loader(idx: int, size: int) -> Callable[[_LoaderFunc], _LoaderFunc]: + def decorator(func: _LoaderFunc) -> _LoaderFunc: + 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: int) -> Callable[[Callable[..., Any]], Callable[..., Any]]: + def decorator(func: Callable[..., Any]) -> Callable[..., Any]: + _write_dispatch[idx] = func # noqa: F821 + return func + + return decorator + + +def _register_basic(idx_fmt_name: tuple[int, str, str]) -> None: + from .TiffTags import TYPES + + idx, fmt, name = idx_fmt_name + TYPES[idx] = name + size = struct.calcsize(f"={fmt}") + + def basic_handler( + self: ImageFileDirectory_v2, data: bytes, legacy_api: bool = True + ) -> tuple[Any, ...]: + return self._unpack(f"{len(data) // size}{fmt}", data) + + _load_dispatch[idx] = size, basic_handler # noqa: F821 + _write_dispatch[idx] = lambda self, *values: ( # noqa: F821 + b"".join(self._pack(fmt, value) for value in values) + ) + + +if TYPE_CHECKING: + _IFDv2Base = MutableMapping[int, Any] +else: + _IFDv2Base = MutableMapping + + +class ImageFileDirectory_v2(_IFDv2Base): + """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 + :attr:`~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 + :py:data:`.TiffTags.TYPES` + + .. versionadded:: 3.0.0 + + '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 + :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1`, 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``. + + """ + + _load_dispatch: dict[int, tuple[int, _LoaderFunc]] = {} + _write_dispatch: dict[int, Callable[..., Any]] = {} + + def __init__( + self, + ifh: bytes = b"II\x2A\x00\x00\x00\x00\x00", + prefix: bytes | None = None, + group: int | None = None, + ) -> 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 not _accept(ifh): + msg = f"not a TIFF file (header {repr(ifh)} not valid)" + raise SyntaxError(msg) + self._prefix = prefix if prefix is not None else ifh[:2] + if self._prefix == MM: + self._endian = ">" + elif self._prefix == II: + self._endian = "<" + else: + msg = "not a TIFF IFD" + raise SyntaxError(msg) + self._bigtiff = ifh[2] == 43 + self.group = group + self.tagtype: dict[int, int] = {} + """ Dictionary of tag types """ + self.reset() + self.next = ( + self._unpack("Q", ifh[8:])[0] + if self._bigtiff + else self._unpack("L", ifh[4:])[0] + ) + self._legacy_api = False + + prefix = property(lambda self: self._prefix) + offset = property(lambda self: self._offset) + + @property + def legacy_api(self) -> bool: + return self._legacy_api + + @legacy_api.setter + def legacy_api(self, value: bool) -> NoReturn: + msg = "Not allowing setting of legacy api" + raise Exception(msg) + + def reset(self) -> None: + self._tags_v1: dict[int, Any] = {} # will remain empty if legacy_api is false + self._tags_v2: dict[int, Any] = {} # main tag storage + self._tagdata: dict[int, bytes] = {} + self.tagtype = {} # added 2008-06-05 by Florian Hoech + self._next = None + self._offset: int | None = None + + def __str__(self) -> str: + return str(dict(self)) + + def named(self) -> dict[str, Any]: + """ + :returns: dict of name|key: value + + Returns the complete tag dictionary, with named tags where possible. + """ + return { + TiffTags.lookup(code, self.group).name: value + for code, value in self.items() + } + + def __len__(self) -> int: + return len(set(self._tagdata) | set(self._tags_v2)) + + def __getitem__(self, tag: int) -> Any: + 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: object) -> bool: + return tag in self._tags_v2 or tag in self._tagdata + + def __setitem__(self, tag: int, value: Any) -> None: + self._setitem(tag, value, self.legacy_api) + + def _setitem(self, tag: int, value: Any, legacy_api: bool) -> None: + basetypes = (Number, bytes, str) + + info = TiffTags.lookup(tag, self.group) + 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): + for v in values: + assert isinstance(v, IFDRational) + if v < 0: + self.tagtype[tag] = TiffTags.SIGNED_RATIONAL + break + else: + self.tagtype[tag] = TiffTags.RATIONAL + elif all(isinstance(v, int) for v in values): + short = True + signed_short = True + long = True + for v in values: + assert isinstance(v, int) + if short and not (0 <= v < 2**16): + short = False + if signed_short and not (-(2**15) < v < 2**15): + signed_short = False + if long and v < 0: + long = False + if short: + self.tagtype[tag] = TiffTags.SHORT + elif signed_short: + self.tagtype[tag] = TiffTags.SIGNED_SHORT + elif long: + self.tagtype[tag] = TiffTags.LONG + else: + self.tagtype[tag] = 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 = [ + v.encode("ascii", "replace") if isinstance(v, str) else v + for v in values + ] + elif self.tagtype[tag] == TiffTags.RATIONAL: + values = [float(v) if isinstance(v, int) else v for v in values] + + is_ifd = self.tagtype[tag] == TiffTags.LONG and isinstance(values, dict) + if not is_ifd: + values = tuple( + info.cvt_enum(value) if isinstance(value, str) else 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 not is_ifd and ( + (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( + f"Metadata Warning, tag {tag} had too many entries: " + f"{len(values)}, expected 1" + ) + dest[tag] = values[0] + + else: + # Spec'd length > 1 or undefined + # Unspec'd, and length > 1 + dest[tag] = values + + def __delitem__(self, tag: int) -> None: + self._tags_v2.pop(tag, None) + self._tags_v1.pop(tag, None) + self._tagdata.pop(tag, None) + + def __iter__(self) -> Iterator[int]: + return iter(set(self._tagdata) | set(self._tags_v2)) + + def _unpack(self, fmt: str, data: bytes) -> tuple[Any, ...]: + return struct.unpack(self._endian + fmt, data) + + def _pack(self, fmt: str, *values: Any) -> bytes: + return struct.pack(self._endian + fmt, *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"), + (TiffTags.IFD, "L", "long"), + (TiffTags.LONG8, "Q", "long8"), + ], + ) + ) + + @_register_loader(1, 1) # Basic type, except for the legacy API. + def load_byte(self, data: bytes, legacy_api: bool = True) -> bytes: + return data + + @_register_writer(1) # Basic type, except for the legacy API. + def write_byte(self, data: bytes | int | IFDRational) -> bytes: + if isinstance(data, IFDRational): + data = int(data) + if isinstance(data, int): + data = bytes((data,)) + return data + + @_register_loader(2, 1) + def load_string(self, data: bytes, legacy_api: bool = True) -> str: + if data.endswith(b"\0"): + data = data[:-1] + return data.decode("latin-1", "replace") + + @_register_writer(2) + def write_string(self, value: str | bytes | int) -> bytes: + # remerge of https://github.com/python-pillow/Pillow/pull/1416 + if isinstance(value, int): + value = str(value) + if not isinstance(value, bytes): + value = value.encode("ascii", "replace") + return value + b"\0" + + @_register_loader(5, 8) + def load_rational( + self, data: bytes, legacy_api: bool = True + ) -> tuple[tuple[int, int] | IFDRational, ...]: + vals = self._unpack(f"{len(data) // 4}L", data) + + def combine(a: int, b: int) -> tuple[int, int] | IFDRational: + 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: IFDRational) -> bytes: + 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: bytes, legacy_api: bool = True) -> bytes: + return data + + @_register_writer(7) + def write_undefined(self, value: bytes | int | IFDRational) -> bytes: + if isinstance(value, IFDRational): + value = int(value) + if isinstance(value, int): + value = str(value).encode("ascii", "replace") + return value + + @_register_loader(10, 8) + def load_signed_rational( + self, data: bytes, legacy_api: bool = True + ) -> tuple[tuple[int, int] | IFDRational, ...]: + vals = self._unpack(f"{len(data) // 4}l", data) + + def combine(a: int, b: int) -> tuple[int, int] | IFDRational: + 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: IFDRational) -> bytes: + return b"".join( + self._pack("2l", *_limit_signed_rational(frac, 2**31 - 1, -(2**31))) + for frac in values + ) + + def _ensure_read(self, fp: IO[bytes], size: int) -> bytes: + ret = fp.read(size) + if len(ret) != size: + msg = ( + "Corrupt EXIF data. " + f"Expecting to read {size} bytes but only got {len(ret)}. " + ) + raise OSError(msg) + return ret + + def load(self, fp: IO[bytes]) -> None: + self.reset() + self._offset = fp.tell() + + try: + tag_count = ( + self._unpack("Q", self._ensure_read(fp, 8)) + if self._bigtiff + else self._unpack("H", self._ensure_read(fp, 2)) + )[0] + for i in range(tag_count): + tag, typ, count, data = ( + self._unpack("HHQ8s", self._ensure_read(fp, 20)) + if self._bigtiff + else self._unpack("HHL4s", self._ensure_read(fp, 12)) + ) + + tagname = TiffTags.lookup(tag, self.group).name + typname = TYPES.get(typ, "unknown") + msg = f"tag: {tagname} ({tag}) - type: {typname} ({typ})" + + try: + unit_size, handler = self._load_dispatch[typ] + except KeyError: + logger.debug("%s - unsupported type %s", msg, typ) + continue # ignore unsupported type + size = count * unit_size + if size > (8 if self._bigtiff else 4): + here = fp.tell() + (offset,) = self._unpack("Q" if self._bigtiff else "L", data) + msg += f" Tag Location: {here} - Data Location: {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. " + f"Expecting to read {size} bytes but only got {len(data)}." + f" Skipping tag {tag}" + ) + logger.debug(msg) + continue + + if not data: + logger.debug(msg) + continue + + self._tagdata[tag] = data + self.tagtype[tag] = typ + + msg += " - value: " + msg += f"" if size > 32 else repr(data) + + logger.debug(msg) + + (self.next,) = ( + self._unpack("Q", self._ensure_read(fp, 8)) + if self._bigtiff + else self._unpack("L", self._ensure_read(fp, 4)) + ) + except OSError as msg: + warnings.warn(str(msg)) + return + + def _get_ifh(self): + ifh = self._prefix + self._pack("H", 43 if self._bigtiff else 42) + if self._bigtiff: + ifh += self._pack("HH", 8, 0) + ifh += self._pack("Q", 16) if self._bigtiff else self._pack("L", 8) + + return ifh + + def tobytes(self, offset: int = 0) -> bytes: + # FIXME What about tagdata? + result = self._pack("Q" if self._bigtiff else "H", len(self._tags_v2)) + + entries: list[tuple[int, int, int, bytes, bytes]] = [] + offset += len(result) + len(self._tags_v2) * (20 if self._bigtiff else 12) + 4 + stripoffsets = None + + # pass 1: convert tags to binary format + # always write tags in ascending order + fmt = "Q" if self._bigtiff else "L" + fmt_size = 8 if self._bigtiff else 4 + for tag, value in sorted(self._tags_v2.items()): + if tag == STRIPOFFSETS: + stripoffsets = len(entries) + typ = self.tagtype[tag] + logger.debug("Tag %s, Type: %s, Value: %s", tag, typ, repr(value)) + is_ifd = typ == TiffTags.LONG and isinstance(value, dict) + if is_ifd: + ifd = ImageFileDirectory_v2(self._get_ifh(), group=tag) + values = self._tags_v2[tag] + for ifd_tag, ifd_value in values.items(): + ifd[ifd_tag] = ifd_value + data = ifd.tobytes(offset) + else: + values = value if isinstance(value, tuple) else (value,) + data = self._write_dispatch[typ](self, *values) + + tagname = TiffTags.lookup(tag, self.group).name + typname = "ifd" if is_ifd else TYPES.get(typ, "unknown") + msg = f"save: {tagname} ({tag}) - type: {typname} ({typ}) - value: " + msg += f"" if len(data) >= 16 else str(values) + logger.debug(msg) + + # count is sum of lengths for string and arbitrary data + if is_ifd: + count = 1 + elif 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) <= fmt_size: + entries.append((tag, typ, count, data.ljust(fmt_size, b"\0"), b"")) + else: + entries.append((tag, typ, count, self._pack(fmt, 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: + size, handler = self._load_dispatch[typ] + values = [val + offset for val in handler(self, data, self.legacy_api)] + data = self._write_dispatch[typ](self, *values) + else: + value = self._pack(fmt, self._unpack(fmt, 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("%s %s %s %s %s", tag, typ, count, repr(value), repr(data)) + result += self._pack( + "HHQ8s" if self._bigtiff else "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: IO[bytes]) -> int: + if fp.tell() == 0: # skip TIFF header on subsequent pages + fp.write(self._get_ifh()) + + 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, f"load_{name}", _load_dispatch[idx][1]) + setattr(ImageFileDirectory_v2, f"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, + :attr:`~PIL.TiffImagePlugin.ImageFileDirectory_v1.tagtype`. + + Values are returned as a tuple. + + .. deprecated:: 3.0.0 + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + self._legacy_api = True + + tags = property(lambda self: self._tags_v1) + tagdata = property(lambda self: self._tagdata) + + # defined in ImageFileDirectory_v2 + tagtype: dict[int, int] + """Dictionary of tag types""" + + @classmethod + def from_v2(cls, original: ImageFileDirectory_v2) -> ImageFileDirectory_v1: + """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) -> ImageFileDirectory_v2: + """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: object) -> bool: + return tag in self._tags_v1 or tag in self._tagdata + + def __len__(self) -> int: + return len(set(self._tagdata) | set(self._tags_v1)) + + def __iter__(self) -> Iterator[int]: + return iter(set(self._tagdata) | set(self._tags_v1)) + + def __setitem__(self, tag: int, value: Any) -> None: + for legacy_api in (False, True): + self._setitem(tag, value, legacy_api) + + def __getitem__(self, tag: int) -> Any: + 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 +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 __init__( + self, + fp: StrOrBytesPath | IO[bytes], + filename: str | bytes | None = None, + ) -> None: + self.tag_v2: ImageFileDirectory_v2 + """ Image file directory (tag dictionary) """ + + self.tag: ImageFileDirectory_v1 + """ Legacy tag entries """ + + super().__init__(fp, filename) + + def _open(self) -> None: + """Open the first image in a TIFF file""" + + # Header + ifh = self.fp.read(8) + if ifh[2] == 43: + ifh += self.fp.read(8) + + self.tag_v2 = ImageFileDirectory_v2(ifh) + + # setup frame pointers + self.__first = self.__next = self.tag_v2.next + self.__frame = -1 + self._fp = self.fp + self._frame_pos: list[int] = [] + self._n_frames: int | None = None + + logger.debug("*** TiffImageFile._open ***") + logger.debug("- __first: %s", self.__first) + logger.debug("- ifh: %s", repr(ifh)) # Use repr to avoid str(bytes) + + # and load the first frame + self._seek(0) + + @property + def n_frames(self) -> int: + current_n_frames = self._n_frames + if current_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) + assert self._n_frames is not None + return self._n_frames + + def seek(self, frame: int) -> None: + """Select a given frame as current image""" + if not self._seek_check(frame): + return + self._seek(frame) + if self._im is not None and ( + self.im.size != self._tile_size or self.im.mode != self.mode + ): + # The core image will no longer be used + self._im = None + + def _seek(self, frame: int) -> None: + self.fp = self._fp + + while len(self._frame_pos) <= frame: + if not self.__next: + msg = "no more images in TIFF file" + raise EOFError(msg) + logger.debug( + "Seeking to frame %s, on frame %s, __next %s, location: %s", + frame, + self.__frame, + self.__next, + self.fp.tell(), + ) + if self.__next >= 2**63: + msg = "Unable to seek to frame" + raise ValueError(msg) + 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) + if self.tag_v2.next in self._frame_pos: + # This IFD has already been processed + # Declare this to be the end of the image + self.__next = 0 + else: + 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) + if XMP in self.tag_v2: + self.info["xmp"] = self.tag_v2[XMP] + elif "xmp" in self.info: + del self.info["xmp"] + self._reload_exif() + # 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) -> int: + """Return the current frame number""" + return self.__frame + + def get_photoshop_blocks(self) -> dict[int, dict[str, bytes]]: + """ + Returns a dictionary of Photoshop "Image Resource Blocks". + The keys are the image resource ID. For more information, see + https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/#50577409_pgfId-1037727 + + :returns: Photoshop "Image Resource Blocks" in a dictionary. + """ + blocks = {} + val = self.tag_v2.get(ExifTags.Base.ImageResources) + if val: + while val[:4] == b"8BIM": + id = i16(val[4:6]) + n = math.ceil((val[6] + 1) / 2) * 2 + size = i32(val[6 + n : 10 + n]) + data = val[10 + n : 10 + n + size] + blocks[id] = {"data": data} + + val = val[math.ceil((10 + n + size) / 2) * 2 :] + return blocks + + def load(self) -> Image.core.PixelAccess | None: + if self.tile and self.use_load_libtiff: + return self._load_libtiff() + return super().load() + + def load_prepare(self) -> None: + if self._im is None: + Image._decompression_bomb_check(self._tile_size) + self.im = Image.core.new(self.mode, self._tile_size) + ImageFile.ImageFile.load_prepare(self) + + def load_end(self) -> None: + # 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 + + # load IFD data from fp before it is closed + exif = self.getexif() + for key in TiffTags.TAGS_V2_GROUPS: + if key not in exif: + continue + exif.get_ifd(key) + + ImageOps.exif_transpose(self, in_place=True) + if ExifTags.Base.Orientation in self.tag_v2: + del self.tag_v2[ExifTags.Base.Orientation] + + def _load_libtiff(self) -> Image.core.PixelAccess | None: + """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: + msg = "Not exactly one tile" + raise OSError(msg) + + # (self._compression, (extents tuple), + # 0, (rawmode, self._compression, fp)) + extents = self.tile[0][1] + args = 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. + try: + fp = hasattr(self.fp, "fileno") and 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: + assert isinstance(args, tuple) + args_list = list(args) + args_list[2] = fp + args = tuple(args_list) + + decoder = Image._getdecoder(self.mode, "libtiff", args, self.decoderconfig) + try: + decoder.setimage(self.im, extents) + except ValueError as e: + msg = "Couldn't set the image" + raise OSError(msg) 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) + # Save and restore the file position, because libtiff will move it + # outside of the Python runtime, and that will confuse + # io.BufferedReader and possible others. + # NOTE: This must use os.lseek(), and not fp.tell()/fp.seek(), + # because the buffer read head already may not equal the actual + # file position, and fp.seek() may just adjust it's internal + # pointer and not actually seek the OS file handle. + pos = os.lseek(fp, 0, os.SEEK_CUR) + # 4 bytes, otherwise the trace might error out + n, err = decoder.decode(b"fpfp") + os.lseek(fp, pos, os.SEEK_SET) + 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() + + 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) -> None: + """Setup this image object based on current tags""" + + if 0xBC01 in self.tag_v2: + msg = "Windows Media Photo files not yet supported" + raise OSError(msg) + + # 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: %s", self._compression) + logger.debug("- photometric_interpretation: %s", photo) + logger.debug("- planar_configuration: %s", self._planar_configuration) + logger.debug("- fill_order: %s", fillorder) + logger.debug("- YCbCr subsampling: %s", self.tag_v2.get(YCBCRSUBSAMPLING)) + + # size + try: + xsize = self.tag_v2[IMAGEWIDTH] + ysize = self.tag_v2[IMAGELENGTH] + except KeyError as e: + msg = "Missing dimensions" + raise TypeError(msg) from e + if not isinstance(xsize, int) or not isinstance(ysize, int): + msg = "Invalid dimensions" + raise ValueError(msg) + self._tile_size = xsize, ysize + orientation = self.tag_v2.get(ExifTags.Base.Orientation) + if orientation in (5, 6, 7, 8): + self._size = ysize, xsize + else: + self._size = xsize, ysize + + logger.debug("- size: %s", self.size) + + sample_format = self.tag_v2.get(SAMPLEFORMAT, (1,)) + if len(sample_format) > 1 and max(sample_format) == min(sample_format) == 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. + sample_format = (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) + bps_actual_count = len(bps_tuple) + samples_per_pixel = self.tag_v2.get( + SAMPLESPERPIXEL, + 3 if self._compression == "tiff_jpeg" and photo in (2, 6) else 1, + ) + + if samples_per_pixel > MAX_SAMPLESPERPIXEL: + # DOS check, samples_per_pixel can be a Long, and we extend the tuple below + logger.error( + "More samples per pixel than can be decoded: %s", samples_per_pixel + ) + msg = "Invalid value for samples per pixel" + raise SyntaxError(msg) + + if samples_per_pixel < bps_actual_count: + # If a file has more values in bps_tuple than expected, + # remove the excess. + bps_tuple = bps_tuple[:samples_per_pixel] + elif samples_per_pixel > bps_actual_count and bps_actual_count == 1: + # If a file has only one value in bps_tuple, when it should have more, + # presume it is the same number of bits for all of the samples. + bps_tuple = bps_tuple * samples_per_pixel + + if len(bps_tuple) != samples_per_pixel: + msg = "unknown data organization" + raise SyntaxError(msg) + + # mode: check photometric interpretation and bits per pixel + key = ( + self.tag_v2.prefix, + photo, + sample_format, + fillorder, + bps_tuple, + extra_tuple, + ) + logger.debug("format key: %s", key) + try: + self._mode, rawmode = OPEN_INFO[key] + except KeyError as e: + logger.debug("- unsupported format") + msg = "unknown pixel mode" + raise SyntaxError(msg) from e + + logger.debug("- raw mode: %s", rawmode) + logger.debug("- pil mode: %s", 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"] = (xres, yres) + elif resunit == 3: # dots per centimeter. convert to dpi + self.info["dpi"] = (xres * 2.54, yres * 2.54) + elif resunit is None: # used to default to 1, but now 2) + self.info["dpi"] = (xres, yres) + # 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: %s", key) + # this should always work, since all the + # fillorder==2 modes have a corresponding + # fillorder=1 mode + self._mode, rawmode = OPEN_INFO[key] + # YCbCr images with new jpeg compression with pixels in one plane + # unpacked straight into RGB values + if ( + photo == 6 + and self._compression == "jpeg" + and self._planar_configuration == 1 + ): + rawmode = "RGB" + # 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. + elif rawmode == "I;16": + rawmode = "I;16N" + elif rawmode.endswith(";16B") or rawmode.endswith(";16L"): + rawmode = rawmode[:-1] + "N" + + # 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(ImageFile._Tile("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 = xsize + else: + # tiled image + offsets = self.tag_v2[TILEOFFSETS] + tilewidth = self.tag_v2.get(TILEWIDTH) + h = self.tag_v2.get(TILELENGTH) + if not isinstance(tilewidth, int) or not isinstance(h, int): + msg = "Invalid tile dimensions" + raise ValueError(msg) + w = tilewidth + + 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 + + args = (tile_rawmode, int(stride), 1) + self.tile.append( + ImageFile._Tile( + self._compression, + (x, y, min(x + w, xsize), min(y + h, ysize)), + offset, + args, + ) + ) + x = x + w + if x >= xsize: + x, y = 0, y + h + if y >= ysize: + x = y = 0 + layer += 1 + else: + logger.debug("- unsupported data organization") + msg = "unknown data organization" + raise SyntaxError(msg) + + # 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)) + + +# +# -------------------------------------------------------------------- +# 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: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + try: + rawmode, prefix, photo, format, bits, extra = SAVE_INFO[im.mode] + except KeyError as e: + msg = f"cannot write mode {im.mode} as TIFF" + raise OSError(msg) from e + + encoderinfo = im.encoderinfo + encoderconfig = im.encoderconfig + + ifd = ImageFileDirectory_v2(prefix=prefix) + if encoderinfo.get("big_tiff"): + ifd._bigtiff = True + + try: + compression = encoderinfo["compression"] + except KeyError: + compression = im.info.get("compression") + if isinstance(compression, int): + # compression value may be from BMP. Ignore it + compression = None + if compression is None: + compression = "raw" + elif compression == "tiff_jpeg": + # OJPEG is obsolete, so use new-style JPEG compression instead + compression = "jpeg" + elif compression == "tiff_deflate": + compression = "tiff_adobe_deflate" + + libtiff = WRITE_LIBTIFF or compression != "raw" + + # required for color libtiff images + ifd[PLANAR_CONFIGURATION] = 1 + + ifd[IMAGEWIDTH] = im.size[0] + ifd[IMAGELENGTH] = im.size[1] + + # write any arbitrary tags passed in as an ImageFileDirectory + if "tiffinfo" in encoderinfo: + info = encoderinfo["tiffinfo"] + elif "exif" in encoderinfo: + info = encoderinfo["exif"] + if isinstance(info, bytes): + exif = Image.Exif() + exif.load(info) + info = exif + else: + info = {} + logger.debug("Tiffinfo Keys: %s", list(info)) + if isinstance(info, ImageFileDirectory_v1): + info = info.to_v2() + for key in info: + if isinstance(info, Image.Exif) and key in TiffTags.TAGS_V2_GROUPS: + ifd[key] = info.get_ifd(key) + else: + 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 + + legacy_ifd = {} + if hasattr(im, "tag"): + legacy_ifd = im.tag.to_v2() + + supplied_tags = {**legacy_ifd, **getattr(im, "tag_v2", {})} + for tag in ( + # IFD offset that may not be correct in the saved image + EXIFIFD, + # Determined by the image format and should not be copied from legacy_ifd. + SAMPLEFORMAT, + ): + if tag in supplied_tags: + del supplied_tags[tag] + + # 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: + if key == IPTC_NAA_CHUNK and im.tag_v2.tagtype[key] not in ( + TiffTags.BYTE, + TiffTags.UNDEFINED, + ): + del supplied_tags[key] + else: + 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 + icc = encoderinfo.get("icc_profile", im.info.get("icc_profile")) + if icc: + ifd[ICCPROFILE] = icc + + 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 encoderinfo: + ifd[key] = encoderinfo[name] + + dpi = encoderinfo.get("dpi") + if dpi: + ifd[RESOLUTION_UNIT] = 2 + ifd[X_RESOLUTION] = dpi[0] + ifd[Y_RESOLUTION] = dpi[1] + + 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 + + if PHOTOMETRIC_INTERPRETATION not in ifd: + ifd[PHOTOMETRIC_INTERPRETATION] = photo + elif im.mode in ("1", "L") and ifd[PHOTOMETRIC_INTERPRETATION] == 0: + if im.mode == "1": + inverted_im = im.copy() + px = inverted_im.load() + if px is not None: + for y in range(inverted_im.height): + for x in range(inverted_im.width): + px[x, y] = 0 if px[x, y] == 255 else 255 + im = inverted_im + else: + im = ImageOps.invert(im) + + if im.mode in ["P", "PA"]: + lut = im.im.getpalette("RGB", "RGB;L") + colormap = [] + colors = len(lut) // 3 + for i in range(3): + colormap += [v * 256 for v in lut[colors * i : colors * (i + 1)]] + colormap += [0] * (256 - colors) + ifd[COLORMAP] = colormap + # data orientation + w, h = ifd[IMAGEWIDTH], ifd[IMAGELENGTH] + stride = len(bits) * ((w * bits[0] + 7) // 8) + if ROWSPERSTRIP not in ifd: + # aim for given strip size (64 KB by default) when using libtiff writer + if libtiff: + im_strip_size = encoderinfo.get("strip_size", STRIP_SIZE) + rows_per_strip = 1 if stride == 0 else min(im_strip_size // stride, h) + # JPEG encoder expects multiple of 8 rows + if compression == "jpeg": + rows_per_strip = min(((rows_per_strip + 7) // 8) * 8, h) + else: + rows_per_strip = h + if rows_per_strip == 0: + rows_per_strip = 1 + ifd[ROWSPERSTRIP] = rows_per_strip + strip_byte_counts = 1 if stride == 0 else stride * ifd[ROWSPERSTRIP] + strips_per_image = (h + ifd[ROWSPERSTRIP] - 1) // ifd[ROWSPERSTRIP] + if strip_byte_counts >= 2**16: + ifd.tagtype[STRIPBYTECOUNTS] = TiffTags.LONG + ifd[STRIPBYTECOUNTS] = (strip_byte_counts,) * (strips_per_image - 1) + ( + stride * h - strip_byte_counts * (strips_per_image - 1), + ) + ifd[STRIPOFFSETS] = tuple( + range(0, strip_byte_counts * strips_per_image, strip_byte_counts) + ) # this is adjusted by IFD writer + # no compression by default: + ifd[COMPRESSION] = COMPRESSION_INFO_REV.get(compression, 1) + + if im.mode == "YCbCr": + for tag, default_value in { + YCBCRSUBSAMPLING: (1, 1), + REFERENCEBLACKWHITE: (0, 255, 128, 255, 128, 255), + }.items(): + ifd.setdefault(tag, default_value) + + blocklist = [TILEWIDTH, TILELENGTH, TILEOFFSETS, TILEBYTECOUNTS] + if libtiff: + if "quality" in encoderinfo: + quality = encoderinfo["quality"] + if not isinstance(quality, int) or quality < 0 or quality > 100: + msg = "Invalid quality setting" + raise ValueError(msg) + if compression != "jpeg": + msg = "quality setting only supported for 'jpeg' compression" + raise ValueError(msg) + 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 = fp.fileno() + except io.UnsupportedOperation: + pass + + # optional types for non core tags + types = {} + # STRIPOFFSETS and STRIPBYTECOUNTS are added by the library + # based on the data in the strip. + # OSUBFILETYPE is deprecated. + # 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. + # SUBIFD may also cause a segfault. + blocklist += [ + OSUBFILETYPE, + REFERENCEBLACKWHITE, + STRIPBYTECOUNTS, + STRIPOFFSETS, + TRANSFERFUNCTION, + SUBIFD, + ] + + # bits per sample is a single short in the tiff directory, not a list. + atts: dict[int, Any] = {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. + for tag, value in itertools.chain(ifd.items(), supplied_tags.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 getattr(Image.core, "libtiff_support_custom_tags", False): + continue + + if tag in TiffTags.TAGS_V2_GROUPS: + types[tag] = TiffTags.LONG8 + elif 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 + + if SAMPLEFORMAT in atts and len(atts[SAMPLEFORMAT]) == 1: + atts[SAMPLEFORMAT] = atts[SAMPLEFORMAT][0] + + 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) + encoder = Image._getencoder(im.mode, "libtiff", a, encoderconfig) + encoder.setimage(im.im, (0, 0) + im.size) + while True: + errcode, data = encoder.encode(ImageFile.MAXBLOCK)[1:] + if not _fp: + fp.write(data) + if errcode: + break + if errcode < 0: + msg = f"encoder error {errcode} when writing image file" + raise OSError(msg) + + else: + for tag in blocklist: + del ifd[tag] + offset = ifd.save(fp) + + ImageFile._save( + im, + fp, + [ImageFile._Tile("raw", (0, 0) + im.size, offset, (rawmode, stride, 1))], + ) + + # -- helper for multi-page save -- + if "_debug_multipage" in encoderinfo: + # just to access o32 and o16 (using correct byte order) + setattr(im, "_debug_multipage", ifd) + + +class AppendingTiffWriter(io.BytesIO): + 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 + 4, # ifd + 2, # unicode + 4, # complex + 8, # long8 + ] + + Tags = { + 273, # StripOffsets + 288, # FreeOffsets + 324, # TileOffsets + 519, # JPEGQTables + 520, # JPEGDCTables + 521, # JPEGACTables + } + + def __init__(self, fn: StrOrBytesPath | IO[bytes], new: bool = False) -> None: + self.f: IO[bytes] + if is_path(fn): + 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") + else: + self.f = cast(IO[bytes], fn) + self.close_fp = False + self.beginning = self.f.tell() + self.setup() + + def setup(self) -> None: + # Reset everything. + self.f.seek(self.beginning, os.SEEK_SET) + + self.whereToWriteNewIFDOffset: int | None = 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: + msg = "Invalid TIFF file header" + raise RuntimeError(msg) + + self.skipIFDs() + self.goToEnd() + + def finalize(self) -> None: + if self.isFirst: + return + + # fix offsets + self.f.seek(self.offsetOfNewPage) + + iimm = self.f.read(4) + if not iimm: + # Make it easy to finish a frame without committing to a new one. + return + + if iimm != self.IIMM: + msg = "IIMM of new page doesn't match IIMM of first page" + raise RuntimeError(msg) + + ifd_offset = self.readLong() + ifd_offset += self.offsetOfNewPage + assert self.whereToWriteNewIFDOffset is not None + self.f.seek(self.whereToWriteNewIFDOffset) + self.writeLong(ifd_offset) + self.f.seek(ifd_offset) + self.fixIFD() + + def newFrame(self) -> None: + # Call this to finish a frame. + self.finalize() + self.setup() + + def __enter__(self) -> AppendingTiffWriter: + return self + + def __exit__(self, *args: object) -> None: + if self.close_fp: + self.close() + + def tell(self) -> int: + return self.f.tell() - self.offsetOfNewPage + + def seek(self, offset: int, whence: int = io.SEEK_SET) -> int: + """ + :param offset: Distance to seek. + :param whence: Whether the distance is relative to the start, + end or current position. + :returns: The resulting position, relative to the start. + """ + if whence == os.SEEK_SET: + offset += self.offsetOfNewPage + + self.f.seek(offset, whence) + return self.tell() + + def goToEnd(self) -> None: + self.f.seek(0, os.SEEK_END) + pos = self.f.tell() + + # pad to 16 byte boundary + pad_bytes = 16 - pos % 16 + if 0 < pad_bytes < 16: + self.f.write(bytes(pad_bytes)) + self.offsetOfNewPage = self.f.tell() + + def setEndian(self, endian: str) -> None: + self.endian = endian + self.longFmt = f"{self.endian}L" + self.shortFmt = f"{self.endian}H" + self.tagFormat = f"{self.endian}HHL" + + def skipIFDs(self) -> None: + while True: + ifd_offset = self.readLong() + if ifd_offset == 0: + self.whereToWriteNewIFDOffset = self.f.tell() - 4 + break + + self.f.seek(ifd_offset) + num_tags = self.readShort() + self.f.seek(num_tags * 12, os.SEEK_CUR) + + def write(self, data: Buffer, /) -> int: + return self.f.write(data) + + def _fmt(self, field_size: int) -> str: + try: + return {2: "H", 4: "L", 8: "Q"}[field_size] + except KeyError: + msg = "offset is not supported" + raise RuntimeError(msg) + + def _read(self, field_size: int) -> int: + (value,) = struct.unpack( + self.endian + self._fmt(field_size), self.f.read(field_size) + ) + return value + + def readShort(self) -> int: + return self._read(2) + + def readLong(self) -> int: + return self._read(4) + + @staticmethod + def _verify_bytes_written(bytes_written: int | None, expected: int) -> None: + if bytes_written is not None and bytes_written != expected: + msg = f"wrote only {bytes_written} bytes but wanted {expected}" + raise RuntimeError(msg) + + def rewriteLastShortToLong(self, value: int) -> None: + self.f.seek(-2, os.SEEK_CUR) + bytes_written = self.f.write(struct.pack(self.longFmt, value)) + self._verify_bytes_written(bytes_written, 4) + + def _rewriteLast(self, value: int, field_size: int) -> None: + self.f.seek(-field_size, os.SEEK_CUR) + bytes_written = self.f.write( + struct.pack(self.endian + self._fmt(field_size), value) + ) + self._verify_bytes_written(bytes_written, field_size) + + def rewriteLastShort(self, value: int) -> None: + return self._rewriteLast(value, 2) + + def rewriteLastLong(self, value: int) -> None: + return self._rewriteLast(value, 4) + + def writeShort(self, value: int) -> None: + bytes_written = self.f.write(struct.pack(self.shortFmt, value)) + self._verify_bytes_written(bytes_written, 2) + + def writeLong(self, value: int) -> None: + bytes_written = self.f.write(struct.pack(self.longFmt, value)) + self._verify_bytes_written(bytes_written, 4) + + def close(self) -> None: + self.finalize() + if self.close_fp: + self.f.close() + + def fixIFD(self) -> None: + num_tags = self.readShort() + + for i in range(num_tags): + tag, field_type, count = struct.unpack(self.tagFormat, self.f.read(8)) + + field_size = self.fieldSizes[field_type] + total_size = field_size * count + is_local = total_size <= 4 + if not is_local: + offset = self.readLong() + self.offsetOfNewPage + self.rewriteLastLong(offset) + + if tag in self.Tags: + cur_pos = self.f.tell() + + if is_local: + self._fixOffsets(count, field_size) + self.f.seek(cur_pos + 4) + else: + self.f.seek(offset) + self._fixOffsets(count, field_size) + self.f.seek(cur_pos) + + elif is_local: + # skip the locally stored value that is not an offset + self.f.seek(4, os.SEEK_CUR) + + def _fixOffsets(self, count: int, field_size: int) -> None: + for i in range(count): + offset = self._read(field_size) + offset += self.offsetOfNewPage + if field_size == 2 and offset >= 65536: + # offset is now too large - we must convert shorts to longs + if count != 1: + msg = "not implemented" + raise RuntimeError(msg) # 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) + else: + self._rewriteLast(offset, field_size) + + def fixOffsets( + self, count: int, isShort: bool = False, isLong: bool = False + ) -> None: + if isShort: + field_size = 2 + elif isLong: + field_size = 4 + else: + field_size = 0 + return self._fixOffsets(count, field_size) + + +def _save_all(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + 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 0000000..86adaa4 --- /dev/null +++ b/venv/Lib/site-packages/PIL/TiffTags.py @@ -0,0 +1,562 @@ +# +# 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 __future__ import annotations + +from typing import NamedTuple + + +class _TagInfo(NamedTuple): + value: int | None + name: str + type: int | None + length: int | None + enum: dict[str, int] + + +class TagInfo(_TagInfo): + __slots__: list[str] = [] + + def __new__( + cls, + value: int | None = None, + name: str = "unknown", + type: int | None = None, + length: int | None = None, + enum: dict[str, int] | None = None, + ) -> TagInfo: + return super().__new__(cls, value, name, type, length, enum or {}) + + def cvt_enum(self, value: str) -> int | str: + # 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: int, group: int | None = None) -> TagInfo: + """ + :param tag: Integer tag number + :param group: Which :py:data:`~PIL.TiffTags.TAGS_V2_GROUPS` to look in + + .. versionadded:: 8.3.0 + + :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 + + """ + + if group is not None: + info = TAGS_V2_GROUPS[group].get(tag) if group in TAGS_V2_GROUPS else None + else: + info = TAGS_V2.get(tag) + return info or 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 +IFD = 13 +LONG8 = 16 + +_tags_v2: dict[int, tuple[str, int, int] | tuple[str, int, int, dict[str, int]]] = { + 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), + 330: ("SubIFDs", 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, 1), + 34377: ("PhotoshopInfo", BYTE, 0), + # FIXME add more tags here + 34665: ("ExifIFD", LONG, 1), + 34675: ("ICCProfile", UNDEFINED, 1), + 34853: ("GPSInfoIFD", LONG, 1), + 36864: ("ExifVersion", UNDEFINED, 1), + 37724: ("ImageSourceData", UNDEFINED, 1), + 40965: ("InteroperabilityIFD", LONG, 1), + 41730: ("CFAPattern", UNDEFINED, 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), + 40960: ("FlashPixVersion", UNDEFINED, 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 +} +_tags_v2_groups = { + # ExifIFD + 34665: { + 36864: ("ExifVersion", UNDEFINED, 1), + 40960: ("FlashPixVersion", UNDEFINED, 1), + 40965: ("InteroperabilityIFD", LONG, 1), + 41730: ("CFAPattern", UNDEFINED, 1), + }, + # GPSInfoIFD + 34853: { + 0: ("GPSVersionID", BYTE, 4), + 1: ("GPSLatitudeRef", ASCII, 2), + 2: ("GPSLatitude", RATIONAL, 3), + 3: ("GPSLongitudeRef", ASCII, 2), + 4: ("GPSLongitude", RATIONAL, 3), + 5: ("GPSAltitudeRef", BYTE, 1), + 6: ("GPSAltitude", RATIONAL, 1), + 7: ("GPSTimeStamp", RATIONAL, 3), + 8: ("GPSSatellites", ASCII, 0), + 9: ("GPSStatus", ASCII, 2), + 10: ("GPSMeasureMode", ASCII, 2), + 11: ("GPSDOP", RATIONAL, 1), + 12: ("GPSSpeedRef", ASCII, 2), + 13: ("GPSSpeed", RATIONAL, 1), + 14: ("GPSTrackRef", ASCII, 2), + 15: ("GPSTrack", RATIONAL, 1), + 16: ("GPSImgDirectionRef", ASCII, 2), + 17: ("GPSImgDirection", RATIONAL, 1), + 18: ("GPSMapDatum", ASCII, 0), + 19: ("GPSDestLatitudeRef", ASCII, 2), + 20: ("GPSDestLatitude", RATIONAL, 3), + 21: ("GPSDestLongitudeRef", ASCII, 2), + 22: ("GPSDestLongitude", RATIONAL, 3), + 23: ("GPSDestBearingRef", ASCII, 2), + 24: ("GPSDestBearing", RATIONAL, 1), + 25: ("GPSDestDistanceRef", ASCII, 2), + 26: ("GPSDestDistance", RATIONAL, 1), + 27: ("GPSProcessingMethod", UNDEFINED, 0), + 28: ("GPSAreaInformation", UNDEFINED, 0), + 29: ("GPSDateStamp", ASCII, 11), + 30: ("GPSDifferential", SHORT, 1), + }, + # InteroperabilityIFD + 40965: {1: ("InteropIndex", ASCII, 1), 2: ("InteropVersion", UNDEFINED, 1)}, +} + +# Legacy Tags structure +# these tags aren't included above, but were in the previous versions +TAGS: dict[int | tuple[int, int], str] = { + 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", +} + +TAGS_V2: dict[int, TagInfo] = {} +TAGS_V2_GROUPS: dict[int, dict[int, TagInfo]] = {} + + +def _populate() -> None: + 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) + + for group, tags in _tags_v2_groups.items(): + TAGS_V2_GROUPS[group] = {k: TagInfo(k, *v) for k, v in tags.items()} + + +_populate() +## +# Map type numbers to type names -- defined in ImageFileDirectory. + +TYPES: dict[int, str] = {} + +# +# 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(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 0000000..87e3287 --- /dev/null +++ b/venv/Lib/site-packages/PIL/WalImageFile.py @@ -0,0 +1,127 @@ +# +# 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. +""" +from __future__ import annotations + +from typing import IO + +from . import Image, ImageFile +from ._binary import i32le as i32 +from ._typing import StrOrBytesPath + + +class WalImageFile(ImageFile.ImageFile): + format = "WAL" + format_description = "Quake2 Texture" + + def _open(self) -> None: + self._mode = "P" + + # read header fields + header = self.fp.read(32 + 24 + 32 + 12) + self._size = i32(header, 32), i32(header, 36) + Image._decompression_bomb_check(self.size) + + # load pixel data + offset = i32(header, 40) + self.fp.seek(offset) + + # strings are null-terminated + self.info["name"] = header[:32].split(b"\0", 1)[0] + next_name = header[56 : 56 + 32].split(b"\0", 1)[0] + if next_name: + self.info["next_name"] = next_name + + def load(self) -> Image.core.PixelAccess | None: + if self._im is None: + self.im = Image.core.new(self.mode, self.size) + self.frombytes(self.fp.read(self.size[0] * self.size[1])) + self.putpalette(quake2palette) + return Image.Image.load(self) + + +def open(filename: StrOrBytesPath | IO[bytes]) -> WalImageFile: + """ + 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. + """ + return WalImageFile(filename) + + +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 0000000..c7f8555 --- /dev/null +++ b/venv/Lib/site-packages/PIL/WebPImagePlugin.py @@ -0,0 +1,322 @@ +from __future__ import annotations + +from io import BytesIO +from typing import IO, Any + +from . import Image, ImageFile + +try: + from . import _webp + + SUPPORTED = True +except ImportError: + SUPPORTED = False + + +_VP8_MODES_BY_IDENTIFIER = { + b"VP8 ": "RGB", + b"VP8X": "RGBA", + b"VP8L": "RGBA", # lossless +} + + +def _accept(prefix: bytes) -> bool | str: + 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 + return False + + +class WebPImageFile(ImageFile.ImageFile): + format = "WEBP" + format_description = "WebP image" + __loaded = 0 + __logical_frame = 0 + + def _open(self) -> None: + # 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 + + # 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) -> dict[int, Any] | None: + if "exif" not in self.info: + return None + return self.getexif()._get_merged_dict() + + def seek(self, frame: int) -> None: + if not self._seek_check(frame): + return + + # Set logical frame to requested position + self.__logical_frame = frame + + def _reset(self, reset: bool = True) -> None: + if reset: + self._decoder.reset() + self.__physical_frame = 0 + self.__loaded = -1 + self.__timestamp = 0 + + def _get_next(self) -> tuple[bytes, int, int]: + # 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) + msg = "failed to decode next frame in WebP file" + raise EOFError(msg) + + # 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: int) -> None: + 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) -> Image.core.PixelAccess | None: + 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 = [ImageFile._Tile("raw", (0, 0) + self.size, 0, self.rawmode)] + + return super().load() + + def load_seek(self, pos: int) -> None: + pass + + def tell(self) -> int: + return self.__logical_frame + + +def _convert_frame(im: Image.Image) -> Image.Image: + # Make sure image mode is supported + if im.mode not in ("RGBX", "RGBA", "RGB"): + im = im.convert("RGBA" if im.has_transparency_data else "RGB") + return im + + +def _save_all(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + 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: int | tuple[int, ...] = (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, 255) + else: + background = (background, background, background, 255) + + duration = im.encoderinfo.get("duration", im.info.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) + alpha_quality = im.encoderinfo.get("alpha_quality", 100) + method = im.encoderinfo.get("method", 0) + icc_profile = im.encoderinfo.get("icc_profile") or "" + 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(0 <= v < 256 for v in background) + ): + msg = f"Background color is not an RGBA tuple clamped to (0-255): {background}" + raise OSError(msg) + + # 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) + + frame = _convert_frame(ims) + + # Append the frame to the animation encoder + enc.add( + frame.getim(), + round(timestamp), + lossless, + quality, + alpha_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, round(timestamp), lossless, quality, alpha_quality, 0) + + # Get the final output from the encoder + data = enc.assemble(icc_profile, exif, xmp) + if data is None: + msg = "cannot write file as WebP (encoder returned None)" + raise OSError(msg) + + fp.write(data) + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + lossless = im.encoderinfo.get("lossless", False) + quality = im.encoderinfo.get("quality", 80) + alpha_quality = im.encoderinfo.get("alpha_quality", 100) + icc_profile = im.encoderinfo.get("icc_profile") or "" + exif = im.encoderinfo.get("exif", b"") + if isinstance(exif, Image.Exif): + exif = exif.tobytes() + if exif.startswith(b"Exif\x00\x00"): + exif = exif[6:] + xmp = im.encoderinfo.get("xmp", "") + method = im.encoderinfo.get("method", 4) + exact = 1 if im.encoderinfo.get("exact") else 0 + + im = _convert_frame(im) + + data = _webp.WebPEncode( + im.getim(), + lossless, + float(quality), + float(alpha_quality), + icc_profile, + method, + exact, + exif, + xmp, + ) + if data is None: + msg = "cannot write file as WebP (encoder returned None)" + raise OSError(msg) + + fp.write(data) + + +Image.register_open(WebPImageFile.format, WebPImageFile, _accept) +if SUPPORTED: + Image.register_save(WebPImageFile.format, _save) + 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 0000000..48e9823 --- /dev/null +++ b/venv/Lib/site-packages/PIL/WmfImagePlugin.py @@ -0,0 +1,184 @@ +# +# 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 __future__ import annotations + +from typing import IO + +from . import Image, ImageFile +from ._binary import i16le as word +from ._binary import si16le as short +from ._binary import si32le as _long + +_handler = None + + +def register_handler(handler: ImageFile.StubHandler | None) -> None: + """ + 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(ImageFile.StubHandler): + def open(self, im: ImageFile.StubImageFile) -> None: + im._mode = "RGB" + self.bbox = im.info["wmf_bbox"] + + def load(self, im: ImageFile.StubImageFile) -> Image.Image: + 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: bytes) -> bool: + 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) -> None: + 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) + if self._inch == 0: + msg = "Invalid inch" + raise ValueError(msg) + + # 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": + msg = "Unsupported WMF file format" + raise SyntaxError(msg) + + elif s[:4] == b"\x01\x00\x00\x00" 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 = 2540.0 * (x1 - x0) / (frame[2] - frame[0]) + ydpi = 2540.0 * (y1 - y0) / (frame[3] - frame[1]) + + self.info["wmf_bbox"] = x0, y0, x1, y1 + + if xdpi == ydpi: + self.info["dpi"] = xdpi + else: + self.info["dpi"] = xdpi, ydpi + + else: + msg = "Unsupported file format" + raise SyntaxError(msg) + + self._mode = "RGB" + self._size = size + + loader = self._load() + if loader: + loader.open(self) + + def _load(self) -> ImageFile.StubHandler | None: + return _handler + + def load(self, dpi: int | None = None) -> Image.core.PixelAccess | None: + if dpi is not None and self._inch is not None: + self.info["dpi"] = dpi + x0, y0, x1, y1 = self.info["wmf_bbox"] + self._size = ( + (x1 - x0) * self.info["dpi"] // self._inch, + (y1 - y0) * self.info["dpi"] // self._inch, + ) + return super().load() + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if _handler is None or not hasattr(_handler, "save"): + msg = "WMF save handler not installed" + raise OSError(msg) + _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 0000000..7533335 --- /dev/null +++ b/venv/Lib/site-packages/PIL/XVThumbImagePlugin.py @@ -0,0 +1,83 @@ +# +# 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 __future__ import annotations + +from . import Image, ImageFile, ImagePalette +from ._binary import 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: bytes) -> bool: + return prefix[:6] == _MAGIC + + +## +# Image plugin for XV thumbnail images. + + +class XVThumbImageFile(ImageFile.ImageFile): + format = "XVThumb" + format_description = "XV thumbnail image" + + def _open(self) -> None: + # check magic + assert self.fp is not None + + if not _accept(self.fp.read(6)): + msg = "not an XV thumbnail file" + raise SyntaxError(msg) + + # Skip to beginning of next line + self.fp.readline() + + # skip info comments + while True: + s = self.fp.readline() + if not s: + msg = "Unexpected EOF reading XV thumbnail file" + raise SyntaxError(msg) + if 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 = [ + ImageFile._Tile("raw", (0, 0) + self.size, self.fp.tell(), self.mode) + ] + + +# -------------------------------------------------------------------- + +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 0000000..943a044 --- /dev/null +++ b/venv/Lib/site-packages/PIL/XbmImagePlugin.py @@ -0,0 +1,98 @@ +# +# 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. +# +from __future__ import annotations + +import re +from typing import IO + +from . import Image, ImageFile + +# XBM header +xbm_head = re.compile( + rb"\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")?" + rb"[\000-\377]*_bits\[]" +) + + +def _accept(prefix: bytes) -> bool: + return prefix.lstrip()[:7] == b"#define" + + +## +# Image plugin for X11 bitmaps. + + +class XbmImageFile(ImageFile.ImageFile): + format = "XBM" + format_description = "X11 Bitmap" + + def _open(self) -> None: + assert self.fp is not None + + m = xbm_head.match(self.fp.read(512)) + + if not m: + msg = "not a XBM file" + raise SyntaxError(msg) + + 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 = [ImageFile._Tile("xbm", (0, 0) + self.size, m.end())] + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if im.mode != "1": + msg = f"cannot write mode {im.mode} as XBM" + raise OSError(msg) + + fp.write(f"#define im_width {im.size[0]}\n".encode("ascii")) + fp.write(f"#define im_height {im.size[1]}\n".encode("ascii")) + + hotspot = im.encoderinfo.get("hotspot") + if hotspot: + fp.write(f"#define im_x_hot {hotspot[0]}\n".encode("ascii")) + fp.write(f"#define im_y_hot {hotspot[1]}\n".encode("ascii")) + + fp.write(b"static char im_bits[] = {\n") + + ImageFile._save(im, fp, [ImageFile._Tile("xbm", (0, 0) + im.size)]) + + 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 0000000..b985aa5 --- /dev/null +++ b/venv/Lib/site-packages/PIL/XpmImagePlugin.py @@ -0,0 +1,125 @@ +# +# 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. +# +from __future__ import annotations + +import re + +from . import Image, ImageFile, ImagePalette +from ._binary import o8 + +# XPM header +xpm_head = re.compile(b'"([0-9]*) ([0-9]*) ([0-9]*) ([0-9]*)') + + +def _accept(prefix: bytes) -> bool: + 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) -> None: + if not _accept(self.fp.read(9)): + msg = "not an XPM file" + raise SyntaxError(msg) + + # skip forward to next string + while True: + s = self.fp.readline() + if not s: + msg = "broken XPM file" + raise SyntaxError(msg) + 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: + msg = "cannot read this XPM file" + raise ValueError(msg) + + # + # load palette description + + palette = [b"\0\0\0"] * 256 + + for _ 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 = 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[: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 + msg = "cannot read this XPM file" + raise ValueError(msg) + break + + else: + # missing colour key + msg = "cannot read this XPM file" + raise ValueError(msg) + + self._mode = "P" + self.palette = ImagePalette.raw("RGB", b"".join(palette)) + + self.tile = [ImageFile._Tile("raw", (0, 0) + self.size, self.fp.tell(), "P")] + + def load_read(self, read_bytes: int) -> bytes: + # + # load all image data in one chunk + + xsize, ysize = self.size + + s = [self.fp.readline()[1 : xsize + 1].ljust(xsize) for i in range(ysize)] + + 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 0000000..09546fe --- /dev/null +++ b/venv/Lib/site-packages/PIL/__init__.py @@ -0,0 +1,86 @@ +"""Pillow (Fork of the Python Imaging Library) + +Pillow is the friendly PIL fork by Jeffrey A. 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. + +;-) +""" + +from __future__ import annotations + +from . import _version + +# VERSION was removed in Pillow 6.0.0. +# PILLOW_VERSION was removed in Pillow 9.0.0. +# Use __version__ instead. +__version__ = _version.__version__ +del _version + + +_plugins = [ + "BlpImagePlugin", + "BmpImagePlugin", + "BufrStubImagePlugin", + "CurImagePlugin", + "DcxImagePlugin", + "DdsImagePlugin", + "EpsImagePlugin", + "FitsImagePlugin", + "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", + "QoiImagePlugin", + "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. + + If a PNG image raises this error, setting :data:`.ImageFile.LOAD_TRUNCATED_IMAGES` + to true may allow the image to be opened after all. The setting will ignore missing + data and checksum failures. + """ + + pass diff --git a/venv/Lib/site-packages/PIL/__main__.py b/venv/Lib/site-packages/PIL/__main__.py new file mode 100644 index 0000000..043156e --- /dev/null +++ b/venv/Lib/site-packages/PIL/__main__.py @@ -0,0 +1,7 @@ +from __future__ import annotations + +import sys + +from .features import pilinfo + +pilinfo(supported_formats="--report" not in sys.argv) diff --git a/venv/Lib/site-packages/PIL/__pycache__/BdfFontFile.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/BdfFontFile.cpython-310.pyc new file mode 100644 index 0000000..6267f9b Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/BdfFontFile.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/BlpImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/BlpImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..175f4f8 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/BlpImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/BmpImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/BmpImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..6533703 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/BmpImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/BufrStubImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/BufrStubImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..f7b5fbc Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/BufrStubImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/ContainerIO.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/ContainerIO.cpython-310.pyc new file mode 100644 index 0000000..aed8853 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/ContainerIO.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/CurImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/CurImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..681a715 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/CurImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/DcxImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/DcxImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..ce971e8 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/DcxImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/DdsImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/DdsImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..eacd7b6 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/DdsImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/EpsImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/EpsImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..47c530b Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/EpsImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/ExifTags.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/ExifTags.cpython-310.pyc new file mode 100644 index 0000000..d878c4c Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/ExifTags.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/FitsImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/FitsImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..be99143 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/FitsImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/FliImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/FliImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..b1f8c0c Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/FliImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/FontFile.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/FontFile.cpython-310.pyc new file mode 100644 index 0000000..837155b Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/FontFile.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/FpxImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/FpxImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..384fc99 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/FpxImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/FtexImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/FtexImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..ccea6ae Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/FtexImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/GbrImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/GbrImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..a570ac0 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/GbrImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/GdImageFile.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/GdImageFile.cpython-310.pyc new file mode 100644 index 0000000..56e3a9a Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/GdImageFile.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/GifImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/GifImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..390e4f6 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/GifImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/GimpGradientFile.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/GimpGradientFile.cpython-310.pyc new file mode 100644 index 0000000..436f3c7 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/GimpGradientFile.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/GimpPaletteFile.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/GimpPaletteFile.cpython-310.pyc new file mode 100644 index 0000000..06e5b23 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/GimpPaletteFile.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/GribStubImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/GribStubImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..1390ee0 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/GribStubImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/Hdf5StubImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/Hdf5StubImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..cbc2434 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/Hdf5StubImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/IcnsImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/IcnsImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..e6615b0 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/IcnsImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/IcoImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/IcoImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..e0bd596 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/IcoImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..25ab06f Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/ImImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/Image.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/Image.cpython-310.pyc new file mode 100644 index 0000000..e4fd474 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/Image.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageChops.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageChops.cpython-310.pyc new file mode 100644 index 0000000..9cd6872 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/ImageChops.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageCms.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageCms.cpython-310.pyc new file mode 100644 index 0000000..a0f065d Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/ImageCms.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageColor.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageColor.cpython-310.pyc new file mode 100644 index 0000000..f8b6422 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/ImageColor.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageDraw.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageDraw.cpython-310.pyc new file mode 100644 index 0000000..2c2fb60 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/ImageDraw.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageDraw2.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageDraw2.cpython-310.pyc new file mode 100644 index 0000000..3629966 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/ImageDraw2.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageEnhance.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageEnhance.cpython-310.pyc new file mode 100644 index 0000000..83c5b90 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/ImageEnhance.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageFile.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageFile.cpython-310.pyc new file mode 100644 index 0000000..3764c28 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/ImageFile.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageFilter.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageFilter.cpython-310.pyc new file mode 100644 index 0000000..873c922 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/ImageFilter.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageFont.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageFont.cpython-310.pyc new file mode 100644 index 0000000..edf3d60 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/ImageFont.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageGrab.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageGrab.cpython-310.pyc new file mode 100644 index 0000000..9884dd7 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/ImageGrab.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageMath.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageMath.cpython-310.pyc new file mode 100644 index 0000000..59d4cad Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/ImageMath.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageMode.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageMode.cpython-310.pyc new file mode 100644 index 0000000..ea0752f Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/ImageMode.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageMorph.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageMorph.cpython-310.pyc new file mode 100644 index 0000000..9481052 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/ImageMorph.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageOps.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageOps.cpython-310.pyc new file mode 100644 index 0000000..e250ece Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/ImageOps.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImagePalette.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImagePalette.cpython-310.pyc new file mode 100644 index 0000000..b3958d6 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/ImagePalette.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImagePath.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImagePath.cpython-310.pyc new file mode 100644 index 0000000..73392e8 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/ImagePath.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageQt.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageQt.cpython-310.pyc new file mode 100644 index 0000000..d92bbe1 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/ImageQt.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageSequence.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageSequence.cpython-310.pyc new file mode 100644 index 0000000..7f449a4 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/ImageSequence.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageShow.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageShow.cpython-310.pyc new file mode 100644 index 0000000..e5b5121 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/ImageShow.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageStat.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageStat.cpython-310.pyc new file mode 100644 index 0000000..df824de Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/ImageStat.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageTk.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageTk.cpython-310.pyc new file mode 100644 index 0000000..e225394 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/ImageTk.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageTransform.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageTransform.cpython-310.pyc new file mode 100644 index 0000000..900aa43 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/ImageTransform.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImageWin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImageWin.cpython-310.pyc new file mode 100644 index 0000000..0218808 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/ImageWin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/ImtImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/ImtImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..6dc0630 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/ImtImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/IptcImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/IptcImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..3da8aaf Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/IptcImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/Jpeg2KImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/Jpeg2KImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..f12a425 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/Jpeg2KImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/JpegImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/JpegImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..3226daa Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/JpegImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/JpegPresets.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/JpegPresets.cpython-310.pyc new file mode 100644 index 0000000..a09bab2 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/JpegPresets.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/McIdasImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/McIdasImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..40d10db Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/McIdasImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/MicImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/MicImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..e867560 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/MicImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/MpegImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/MpegImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..57dd8fc Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/MpegImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/MpoImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/MpoImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..3a2c44f Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/MpoImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/MspImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/MspImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..506ed76 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/MspImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/PSDraw.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/PSDraw.cpython-310.pyc new file mode 100644 index 0000000..9f887d8 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/PSDraw.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/PaletteFile.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/PaletteFile.cpython-310.pyc new file mode 100644 index 0000000..0d6b6bd Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/PaletteFile.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/PalmImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/PalmImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..d0d7905 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/PalmImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/PcdImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/PcdImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..15f8119 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/PcdImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/PcfFontFile.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/PcfFontFile.cpython-310.pyc new file mode 100644 index 0000000..424a701 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/PcfFontFile.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/PcxImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/PcxImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..18d61dc Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/PcxImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/PdfImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/PdfImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..4d3ad1d Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/PdfImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/PdfParser.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/PdfParser.cpython-310.pyc new file mode 100644 index 0000000..ae850f5 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/PdfParser.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/PixarImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/PixarImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..05db735 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/PixarImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/PngImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/PngImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..d766301 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/PngImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/PpmImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/PpmImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..0da3fde Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/PpmImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/PsdImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/PsdImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..c3c42e7 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/PsdImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/QoiImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/QoiImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..02f14b6 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/QoiImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/SgiImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/SgiImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..5987caf Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/SgiImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/SpiderImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/SpiderImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..532a6b3 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/SpiderImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/SunImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/SunImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..c502278 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/SunImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/TarIO.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/TarIO.cpython-310.pyc new file mode 100644 index 0000000..9d222e2 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/TarIO.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/TgaImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/TgaImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..5fb0cde Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/TgaImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/TiffImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/TiffImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..b48fa19 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/TiffImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/TiffTags.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/TiffTags.cpython-310.pyc new file mode 100644 index 0000000..46545c6 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/TiffTags.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/WalImageFile.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/WalImageFile.cpython-310.pyc new file mode 100644 index 0000000..b5c8621 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/WalImageFile.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/WebPImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/WebPImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..bd81b14 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/WebPImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/WmfImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/WmfImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..66a9e5e Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/WmfImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/XVThumbImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/XVThumbImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..469e098 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/XVThumbImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/XbmImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/XbmImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..bd6eb62 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/XbmImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/XpmImagePlugin.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/XpmImagePlugin.cpython-310.pyc new file mode 100644 index 0000000..b252918 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/XpmImagePlugin.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/__init__.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..6e058d1 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/__init__.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/__main__.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/__main__.cpython-310.pyc new file mode 100644 index 0000000..c045989 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/__main__.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/_binary.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/_binary.cpython-310.pyc new file mode 100644 index 0000000..3e89f6a Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/_binary.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/_deprecate.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/_deprecate.cpython-310.pyc new file mode 100644 index 0000000..086a10a Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/_deprecate.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/_tkinter_finder.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/_tkinter_finder.cpython-310.pyc new file mode 100644 index 0000000..beecf3e Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/_tkinter_finder.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/_typing.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/_typing.cpython-310.pyc new file mode 100644 index 0000000..760c4b2 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/_typing.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/_util.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/_util.cpython-310.pyc new file mode 100644 index 0000000..bd805d2 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/_util.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/_version.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/_version.cpython-310.pyc new file mode 100644 index 0000000..0bc83ae Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/_version.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/features.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/features.cpython-310.pyc new file mode 100644 index 0000000..60e1609 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/features.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/__pycache__/report.cpython-310.pyc b/venv/Lib/site-packages/PIL/__pycache__/report.cpython-310.pyc new file mode 100644 index 0000000..f13a846 Binary files /dev/null and b/venv/Lib/site-packages/PIL/__pycache__/report.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PIL/_binary.py b/venv/Lib/site-packages/PIL/_binary.py new file mode 100644 index 0000000..4594ccc --- /dev/null +++ b/venv/Lib/site-packages/PIL/_binary.py @@ -0,0 +1,112 @@ +# +# 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 __future__ import annotations + +from struct import pack, unpack_from + + +def i8(c: bytes) -> int: + return c[0] + + +def o8(i: int) -> bytes: + return bytes((i & 255,)) + + +# Input, le = little endian, be = big endian +def i16le(c: bytes, o: int = 0) -> int: + """ + 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(" int: + """ + Converts a 2-bytes (16 bits) string to a signed integer. + + :param c: string containing bytes to convert + :param o: offset of bytes to convert in string + """ + return unpack_from(" int: + """ + Converts a 2-bytes (16 bits) string to a signed integer, big endian. + + :param c: string containing bytes to convert + :param o: offset of bytes to convert in string + """ + return unpack_from(">h", c, o)[0] + + +def i32le(c: bytes, o: int = 0) -> int: + """ + Converts a 4-bytes (32 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(" int: + """ + Converts a 4-bytes (32 bits) string to a signed integer. + + :param c: string containing bytes to convert + :param o: offset of bytes to convert in string + """ + return unpack_from(" int: + """ + Converts a 4-bytes (32 bits) string to a signed integer, big endian. + + :param c: string containing bytes to convert + :param o: offset of bytes to convert in string + """ + return unpack_from(">i", c, o)[0] + + +def i16be(c: bytes, o: int = 0) -> int: + return unpack_from(">H", c, o)[0] + + +def i32be(c: bytes, o: int = 0) -> int: + return unpack_from(">I", c, o)[0] + + +# Output, le = little endian, be = big endian +def o16le(i: int) -> bytes: + return pack(" bytes: + return pack(" bytes: + return pack(">H", i) + + +def o32be(i: int) -> bytes: + return pack(">I", i) diff --git a/venv/Lib/site-packages/PIL/_deprecate.py b/venv/Lib/site-packages/PIL/_deprecate.py new file mode 100644 index 0000000..83952b3 --- /dev/null +++ b/venv/Lib/site-packages/PIL/_deprecate.py @@ -0,0 +1,69 @@ +from __future__ import annotations + +import warnings + +from . import __version__ + + +def deprecate( + deprecated: str, + when: int | None, + replacement: str | None = None, + *, + action: str | None = None, + plural: bool = False, +) -> None: + """ + Deprecations helper. + + :param deprecated: Name of thing to be deprecated. + :param when: Pillow major version to be removed in. + :param replacement: Name of replacement. + :param action: Instead of "replacement", give a custom call to action + e.g. "Upgrade to new thing". + :param plural: if the deprecated thing is plural, needing "are" instead of "is". + + Usually of the form: + + "[deprecated] is deprecated and will be removed in Pillow [when] (yyyy-mm-dd). + Use [replacement] instead." + + You can leave out the replacement sentence: + + "[deprecated] is deprecated and will be removed in Pillow [when] (yyyy-mm-dd)" + + Or with another call to action: + + "[deprecated] is deprecated and will be removed in Pillow [when] (yyyy-mm-dd). + [action]." + """ + + is_ = "are" if plural else "is" + + if when is None: + removed = "a future version" + elif when <= int(__version__.split(".")[0]): + msg = f"{deprecated} {is_} deprecated and should be removed." + raise RuntimeError(msg) + elif when == 12: + removed = "Pillow 12 (2025-10-15)" + else: + msg = f"Unknown removal version: {when}. Update {__name__}?" + raise ValueError(msg) + + if replacement and action: + msg = "Use only one of 'replacement' and 'action'" + raise ValueError(msg) + + if replacement: + action = f". Use {replacement} instead." + elif action: + action = f". {action.rstrip('.')}." + else: + action = "" + + warnings.warn( + f"{deprecated} {is_} deprecated and will be removed in {removed}{action}", + DeprecationWarning, + stacklevel=3, + ) diff --git a/venv/Lib/site-packages/PIL/_imaging.cp310-win_amd64.pyd b/venv/Lib/site-packages/PIL/_imaging.cp310-win_amd64.pyd new file mode 100644 index 0000000..0f412e6 Binary files /dev/null and b/venv/Lib/site-packages/PIL/_imaging.cp310-win_amd64.pyd differ diff --git a/venv/Lib/site-packages/PIL/_imaging.pyi b/venv/Lib/site-packages/PIL/_imaging.pyi new file mode 100644 index 0000000..998bc52 --- /dev/null +++ b/venv/Lib/site-packages/PIL/_imaging.pyi @@ -0,0 +1,31 @@ +from typing import Any + +class ImagingCore: + def __getitem__(self, index: int) -> float: ... + def __getattr__(self, name: str) -> Any: ... + +class ImagingFont: + def __getattr__(self, name: str) -> Any: ... + +class ImagingDraw: + def __getattr__(self, name: str) -> Any: ... + +class PixelAccess: + def __getitem__(self, xy: tuple[int, int]) -> float | tuple[int, ...]: ... + def __setitem__( + self, xy: tuple[int, int], color: float | tuple[int, ...] + ) -> None: ... + +class ImagingDecoder: + def __getattr__(self, name: str) -> Any: ... + +class ImagingEncoder: + def __getattr__(self, name: str) -> Any: ... + +class _Outline: + def close(self) -> None: ... + def __getattr__(self, name: str) -> Any: ... + +def font(image: ImagingCore, glyphdata: bytes) -> ImagingFont: ... +def outline() -> _Outline: ... +def __getattr__(name: str) -> Any: ... diff --git a/venv/Lib/site-packages/PIL/_imagingcms.cp310-win_amd64.pyd b/venv/Lib/site-packages/PIL/_imagingcms.cp310-win_amd64.pyd new file mode 100644 index 0000000..0185aa6 Binary files /dev/null and b/venv/Lib/site-packages/PIL/_imagingcms.cp310-win_amd64.pyd differ diff --git a/venv/Lib/site-packages/PIL/_imagingcms.pyi b/venv/Lib/site-packages/PIL/_imagingcms.pyi new file mode 100644 index 0000000..ddcf93a --- /dev/null +++ b/venv/Lib/site-packages/PIL/_imagingcms.pyi @@ -0,0 +1,143 @@ +import datetime +import sys +from typing import Literal, SupportsFloat, TypedDict + +from ._typing import CapsuleType + +littlecms_version: str | None + +_Tuple3f = tuple[float, float, float] +_Tuple2x3f = tuple[_Tuple3f, _Tuple3f] +_Tuple3x3f = tuple[_Tuple3f, _Tuple3f, _Tuple3f] + +class _IccMeasurementCondition(TypedDict): + observer: int + backing: _Tuple3f + geo: str + flare: float + illuminant_type: str + +class _IccViewingCondition(TypedDict): + illuminant: _Tuple3f + surround: _Tuple3f + illuminant_type: str + +class CmsProfile: + @property + def rendering_intent(self) -> int: ... + @property + def creation_date(self) -> datetime.datetime | None: ... + @property + def copyright(self) -> str | None: ... + @property + def target(self) -> str | None: ... + @property + def manufacturer(self) -> str | None: ... + @property + def model(self) -> str | None: ... + @property + def profile_description(self) -> str | None: ... + @property + def screening_description(self) -> str | None: ... + @property + def viewing_condition(self) -> str | None: ... + @property + def version(self) -> float: ... + @property + def icc_version(self) -> int: ... + @property + def attributes(self) -> int: ... + @property + def header_flags(self) -> int: ... + @property + def header_manufacturer(self) -> str: ... + @property + def header_model(self) -> str: ... + @property + def device_class(self) -> str: ... + @property + def connection_space(self) -> str: ... + @property + def xcolor_space(self) -> str: ... + @property + def profile_id(self) -> bytes: ... + @property + def is_matrix_shaper(self) -> bool: ... + @property + def technology(self) -> str | None: ... + @property + def colorimetric_intent(self) -> str | None: ... + @property + def perceptual_rendering_intent_gamut(self) -> str | None: ... + @property + def saturation_rendering_intent_gamut(self) -> str | None: ... + @property + def red_colorant(self) -> _Tuple2x3f | None: ... + @property + def green_colorant(self) -> _Tuple2x3f | None: ... + @property + def blue_colorant(self) -> _Tuple2x3f | None: ... + @property + def red_primary(self) -> _Tuple2x3f | None: ... + @property + def green_primary(self) -> _Tuple2x3f | None: ... + @property + def blue_primary(self) -> _Tuple2x3f | None: ... + @property + def media_white_point_temperature(self) -> float | None: ... + @property + def media_white_point(self) -> _Tuple2x3f | None: ... + @property + def media_black_point(self) -> _Tuple2x3f | None: ... + @property + def luminance(self) -> _Tuple2x3f | None: ... + @property + def chromatic_adaptation(self) -> tuple[_Tuple3x3f, _Tuple3x3f] | None: ... + @property + def chromaticity(self) -> _Tuple3x3f | None: ... + @property + def colorant_table(self) -> list[str] | None: ... + @property + def colorant_table_out(self) -> list[str] | None: ... + @property + def intent_supported(self) -> dict[int, tuple[bool, bool, bool]] | None: ... + @property + def clut(self) -> dict[int, tuple[bool, bool, bool]] | None: ... + @property + def icc_measurement_condition(self) -> _IccMeasurementCondition | None: ... + @property + def icc_viewing_condition(self) -> _IccViewingCondition | None: ... + def is_intent_supported(self, intent: int, direction: int, /) -> int: ... + +class CmsTransform: + def apply(self, id_in: CapsuleType, id_out: CapsuleType) -> int: ... + +def profile_open(profile: str, /) -> CmsProfile: ... +def profile_frombytes(profile: bytes, /) -> CmsProfile: ... +def profile_tobytes(profile: CmsProfile, /) -> bytes: ... +def buildTransform( + input_profile: CmsProfile, + output_profile: CmsProfile, + in_mode: str, + out_mode: str, + rendering_intent: int = 0, + cms_flags: int = 0, + /, +) -> CmsTransform: ... +def buildProofTransform( + input_profile: CmsProfile, + output_profile: CmsProfile, + proof_profile: CmsProfile, + in_mode: str, + out_mode: str, + rendering_intent: int = 0, + proof_intent: int = 0, + cms_flags: int = 0, + /, +) -> CmsTransform: ... +def createProfile( + color_space: Literal["LAB", "XYZ", "sRGB"], color_temp: SupportsFloat = 0.0, / +) -> CmsProfile: ... + +if sys.platform == "win32": + def get_display_profile_win32(handle: int = 0, is_dc: int = 0, /) -> str | None: ... diff --git a/venv/Lib/site-packages/PIL/_imagingft.cp310-win_amd64.pyd b/venv/Lib/site-packages/PIL/_imagingft.cp310-win_amd64.pyd new file mode 100644 index 0000000..ee259c7 Binary files /dev/null and b/venv/Lib/site-packages/PIL/_imagingft.cp310-win_amd64.pyd differ diff --git a/venv/Lib/site-packages/PIL/_imagingft.pyi b/venv/Lib/site-packages/PIL/_imagingft.pyi new file mode 100644 index 0000000..9cc9822 --- /dev/null +++ b/venv/Lib/site-packages/PIL/_imagingft.pyi @@ -0,0 +1,69 @@ +from typing import Any, Callable + +from . import ImageFont, _imaging + +class Font: + @property + def family(self) -> str | None: ... + @property + def style(self) -> str | None: ... + @property + def ascent(self) -> int: ... + @property + def descent(self) -> int: ... + @property + def height(self) -> int: ... + @property + def x_ppem(self) -> int: ... + @property + def y_ppem(self) -> int: ... + @property + def glyphs(self) -> int: ... + def render( + self, + string: str | bytes, + fill: Callable[[int, int], _imaging.ImagingCore], + mode: str, + dir: str | None, + features: list[str] | None, + lang: str | None, + stroke_width: float, + anchor: str | None, + foreground_ink_long: int, + x_start: float, + y_start: float, + /, + ) -> tuple[_imaging.ImagingCore, tuple[int, int]]: ... + def getsize( + self, + string: str | bytes | bytearray, + mode: str, + dir: str | None, + features: list[str] | None, + lang: str | None, + anchor: str | None, + /, + ) -> tuple[tuple[int, int], tuple[int, int]]: ... + def getlength( + self, + string: str | bytes, + mode: str, + dir: str | None, + features: list[str] | None, + lang: str | None, + /, + ) -> float: ... + def getvarnames(self) -> list[bytes]: ... + def getvaraxes(self) -> list[ImageFont.Axis]: ... + def setvarname(self, instance_index: int, /) -> None: ... + def setvaraxes(self, axes: list[float], /) -> None: ... + +def getfont( + filename: str | bytes, + size: float, + index: int, + encoding: str, + font_bytes: bytes, + layout_engine: int, +) -> Font: ... +def __getattr__(name: str) -> Any: ... diff --git a/venv/Lib/site-packages/PIL/_imagingmath.cp310-win_amd64.pyd b/venv/Lib/site-packages/PIL/_imagingmath.cp310-win_amd64.pyd new file mode 100644 index 0000000..cc6a87d Binary files /dev/null and b/venv/Lib/site-packages/PIL/_imagingmath.cp310-win_amd64.pyd differ diff --git a/venv/Lib/site-packages/PIL/_imagingmath.pyi b/venv/Lib/site-packages/PIL/_imagingmath.pyi new file mode 100644 index 0000000..e27843e --- /dev/null +++ b/venv/Lib/site-packages/PIL/_imagingmath.pyi @@ -0,0 +1,3 @@ +from typing import Any + +def __getattr__(name: str) -> Any: ... diff --git a/venv/Lib/site-packages/PIL/_imagingmorph.cp310-win_amd64.pyd b/venv/Lib/site-packages/PIL/_imagingmorph.cp310-win_amd64.pyd new file mode 100644 index 0000000..6e5267b Binary files /dev/null and b/venv/Lib/site-packages/PIL/_imagingmorph.cp310-win_amd64.pyd differ diff --git a/venv/Lib/site-packages/PIL/_imagingmorph.pyi b/venv/Lib/site-packages/PIL/_imagingmorph.pyi new file mode 100644 index 0000000..e27843e --- /dev/null +++ b/venv/Lib/site-packages/PIL/_imagingmorph.pyi @@ -0,0 +1,3 @@ +from typing import Any + +def __getattr__(name: str) -> Any: ... diff --git a/venv/Lib/site-packages/PIL/_imagingtk.cp310-win_amd64.pyd b/venv/Lib/site-packages/PIL/_imagingtk.cp310-win_amd64.pyd new file mode 100644 index 0000000..04cd159 Binary files /dev/null and b/venv/Lib/site-packages/PIL/_imagingtk.cp310-win_amd64.pyd differ diff --git a/venv/Lib/site-packages/PIL/_imagingtk.pyi b/venv/Lib/site-packages/PIL/_imagingtk.pyi new file mode 100644 index 0000000..e27843e --- /dev/null +++ b/venv/Lib/site-packages/PIL/_imagingtk.pyi @@ -0,0 +1,3 @@ +from typing import Any + +def __getattr__(name: str) -> Any: ... 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 0000000..beddfb0 --- /dev/null +++ b/venv/Lib/site-packages/PIL/_tkinter_finder.py @@ -0,0 +1,21 @@ +""" Find compiled module linking to Tcl / Tk libraries +""" + +from __future__ import annotations + +import sys +import tkinter + +tk = getattr(tkinter, "_tkinter") + +try: + if hasattr(sys, "pypy_find_executable"): + TKINTER_LIB = tk.tklib_cffi.__file__ + else: + TKINTER_LIB = tk.__file__ +except AttributeError: + # _tkinter may be compiled directly into Python, in which case __file__ is + # not available. load_tkinter_funcs will check the binary first in any case. + TKINTER_LIB = None + +tk_version = str(tkinter.TkVersion) diff --git a/venv/Lib/site-packages/PIL/_typing.py b/venv/Lib/site-packages/PIL/_typing.py new file mode 100644 index 0000000..34a9a81 --- /dev/null +++ b/venv/Lib/site-packages/PIL/_typing.py @@ -0,0 +1,53 @@ +from __future__ import annotations + +import os +import sys +from collections.abc import Sequence +from typing import TYPE_CHECKING, Any, Protocol, TypeVar, Union + +if TYPE_CHECKING: + from numbers import _IntegralLike as IntegralLike + + try: + import numpy.typing as npt + + NumpyArray = npt.NDArray[Any] # requires numpy>=1.21 + except (ImportError, AttributeError): + pass + +if sys.version_info >= (3, 13): + from types import CapsuleType +else: + CapsuleType = object + +if sys.version_info >= (3, 12): + from collections.abc import Buffer +else: + Buffer = Any + +if sys.version_info >= (3, 10): + from typing import TypeGuard +else: + try: + from typing_extensions import TypeGuard + except ImportError: + + class TypeGuard: # type: ignore[no-redef] + def __class_getitem__(cls, item: Any) -> type[bool]: + return bool + + +Coords = Union[Sequence[float], Sequence[Sequence[float]]] + + +_T_co = TypeVar("_T_co", covariant=True) + + +class SupportsRead(Protocol[_T_co]): + def read(self, length: int = ..., /) -> _T_co: ... + + +StrOrBytesPath = Union[str, bytes, os.PathLike[str], os.PathLike[bytes]] + + +__all__ = ["Buffer", "IntegralLike", "StrOrBytesPath", "SupportsRead", "TypeGuard"] diff --git a/venv/Lib/site-packages/PIL/_util.py b/venv/Lib/site-packages/PIL/_util.py new file mode 100644 index 0000000..8ef0d36 --- /dev/null +++ b/venv/Lib/site-packages/PIL/_util.py @@ -0,0 +1,26 @@ +from __future__ import annotations + +import os +from typing import Any, NoReturn + +from ._typing import StrOrBytesPath, TypeGuard + + +def is_path(f: Any) -> TypeGuard[StrOrBytesPath]: + return isinstance(f, (bytes, str, os.PathLike)) + + +class DeferredError: + def __init__(self, ex: BaseException): + self.ex = ex + + def __getattr__(self, elt: str) -> NoReturn: + raise self.ex + + @staticmethod + def new(ex: BaseException) -> Any: + """ + Creates an object that raises the wrapped exception ``ex`` when used, + and casts it to :py:obj:`~typing.Any` type. + """ + return DeferredError(ex) diff --git a/venv/Lib/site-packages/PIL/_version.py b/venv/Lib/site-packages/PIL/_version.py new file mode 100644 index 0000000..9938a0a --- /dev/null +++ b/venv/Lib/site-packages/PIL/_version.py @@ -0,0 +1,4 @@ +# Master version for Pillow +from __future__ import annotations + +__version__ = "11.1.0" diff --git a/venv/Lib/site-packages/PIL/_webp.cp310-win_amd64.pyd b/venv/Lib/site-packages/PIL/_webp.cp310-win_amd64.pyd new file mode 100644 index 0000000..2a8a4bc Binary files /dev/null and b/venv/Lib/site-packages/PIL/_webp.cp310-win_amd64.pyd differ diff --git a/venv/Lib/site-packages/PIL/_webp.pyi b/venv/Lib/site-packages/PIL/_webp.pyi new file mode 100644 index 0000000..e27843e --- /dev/null +++ b/venv/Lib/site-packages/PIL/_webp.pyi @@ -0,0 +1,3 @@ +from typing import Any + +def __getattr__(name: str) -> Any: ... diff --git a/venv/Lib/site-packages/PIL/features.py b/venv/Lib/site-packages/PIL/features.py new file mode 100644 index 0000000..3645e3d --- /dev/null +++ b/venv/Lib/site-packages/PIL/features.py @@ -0,0 +1,357 @@ +from __future__ import annotations + +import collections +import os +import sys +import warnings +from typing import IO + +import PIL + +from . import Image +from ._deprecate import deprecate + +modules = { + "pil": ("PIL._imaging", "PILLOW_VERSION"), + "tkinter": ("PIL._tkinter_finder", "tk_version"), + "freetype2": ("PIL._imagingft", "freetype2_version"), + "littlecms2": ("PIL._imagingcms", "littlecms_version"), + "webp": ("PIL._webp", "webpdecoder_version"), +} + + +def check_module(feature: str) -> bool: + """ + 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 feature not in modules: + msg = f"Unknown module {feature}" + raise ValueError(msg) + + module, ver = modules[feature] + + try: + __import__(module) + return True + except ModuleNotFoundError: + return False + except ImportError as ex: + warnings.warn(str(ex)) + return False + + +def version_module(feature: str) -> str | None: + """ + :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] + + return getattr(__import__(module, fromlist=[ver]), ver) + + +def get_supported_modules() -> list[str]: + """ + :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: str) -> bool: + """ + 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: + msg = f"Unknown codec {feature}" + raise ValueError(msg) + + codec, lib = codecs[feature] + + return f"{codec}_encoder" in dir(Image.core) + + +def version_codec(feature: str) -> str | None: + """ + :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, f"{lib}_version") + + if feature == "libtiff": + return version.split("\n")[0].split("Version ")[1] + + return version + + +def get_supported_codecs() -> list[str]: + """ + :returns: A list of all supported codecs. + """ + return [f for f in codecs if check_codec(f)] + + +features: dict[str, tuple[str, str | bool, str | None]] = { + "webp_anim": ("PIL._webp", True, None), + "webp_mux": ("PIL._webp", True, None), + "transp_webp": ("PIL._webp", True, None), + "raqm": ("PIL._imagingft", "HAVE_RAQM", "raqm_version"), + "fribidi": ("PIL._imagingft", "HAVE_FRIBIDI", "fribidi_version"), + "harfbuzz": ("PIL._imagingft", "HAVE_HARFBUZZ", "harfbuzz_version"), + "libjpeg_turbo": ("PIL._imaging", "HAVE_LIBJPEGTURBO", "libjpeg_turbo_version"), + "zlib_ng": ("PIL._imaging", "HAVE_ZLIBNG", "zlib_ng_version"), + "libimagequant": ("PIL._imaging", "HAVE_LIBIMAGEQUANT", "imagequant_version"), + "xcb": ("PIL._imaging", "HAVE_XCB", None), +} + + +def check_feature(feature: str) -> bool | None: + """ + 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: + msg = f"Unknown feature {feature}" + raise ValueError(msg) + + module, flag, ver = features[feature] + + if isinstance(flag, bool): + deprecate(f'check_feature("{feature}")', 12) + try: + imported_module = __import__(module, fromlist=["PIL"]) + if isinstance(flag, bool): + return flag + return getattr(imported_module, flag) + except ModuleNotFoundError: + return None + except ImportError as ex: + warnings.warn(str(ex)) + return None + + +def version_feature(feature: str) -> str | None: + """ + :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() -> list[str]: + """ + :returns: A list of all supported features. + """ + supported_features = [] + for f, (module, flag, _) in features.items(): + if flag is True: + for feature, (feature_module, _) in modules.items(): + if feature_module == module: + if check_module(feature): + supported_features.append(f) + break + elif check_feature(f): + supported_features.append(f) + return supported_features + + +def check(feature: str) -> bool | None: + """ + :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(f"Unknown feature '{feature}'.", stacklevel=2) + return False + + +def version(feature: str) -> str | None: + """ + :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() -> list[str]: + """ + :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: IO[str] | None = None, supported_formats: bool = True) -> None: + """ + Prints information about this installation of Pillow. + This function can be called with ``python3 -m PIL``. + It can also be called with ``python3 -m PIL.report`` or ``python3 -m PIL --report`` + to have "supported_formats" set to ``False``, omitting the list of all supported + image file formats. + + :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(f"Pillow {PIL.__version__}", file=out) + py_version_lines = sys.version.splitlines() + print(f"Python {py_version_lines[0].strip()}", file=out) + for py_version in py_version_lines[1:]: + print(f" {py_version.strip()}", file=out) + print("-" * 68, file=out) + print(f"Python executable is {sys.executable or 'unknown'}", file=out) + if sys.prefix != sys.base_prefix: + print(f"Environment Python files loaded from {sys.prefix}", file=out) + print(f"System Python files loaded from {sys.base_prefix}", file=out) + print("-" * 68, file=out) + print( + f"Python Pillow modules loaded from {os.path.dirname(Image.__file__)}", + file=out, + ) + print( + f"Binary Pillow modules loaded from {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"), + ("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): + v: str | None = None + if name == "jpg": + libjpeg_turbo_version = version_feature("libjpeg_turbo") + if libjpeg_turbo_version is not None: + v = "libjpeg-turbo " + libjpeg_turbo_version + if v is None: + v = version(name) + if v is not None: + version_static = name in ("pil", "jpg") + if name == "littlecms2": + # this check is also in src/_imagingcms.c:setup_module() + version_static = tuple(int(x) for x in v.split(".")) < (2, 7) + t = "compiled for" if version_static else "loaded" + if name == "zlib": + zlib_ng_version = version_feature("zlib_ng") + if zlib_ng_version is not None: + v += ", compiled for zlib-ng " + zlib_ng_version + elif name == "raqm": + for f in ("fribidi", "harfbuzz"): + v2 = version_feature(f) + if v2 is not None: + v += f", {f} {v2}" + 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 = f"{i}" + if i in Image.MIME: + line = f"{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/PIL/py.typed b/venv/Lib/site-packages/PIL/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/venv/Lib/site-packages/PIL/report.py b/venv/Lib/site-packages/PIL/report.py new file mode 100644 index 0000000..d2815e8 --- /dev/null +++ b/venv/Lib/site-packages/PIL/report.py @@ -0,0 +1,5 @@ +from __future__ import annotations + +from .features import pilinfo + +pilinfo(supported_formats=False) diff --git a/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/INSTALLER b/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/LICENSE.COMMERCIAL b/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/LICENSE.COMMERCIAL new file mode 100644 index 0000000..5dcd1f6 --- /dev/null +++ b/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/LICENSE.COMMERCIAL @@ -0,0 +1,914 @@ +QT LICENSE AGREEMENT Agreement version 4.0 + +This License Agreement (“Agreement”) is a legal agreement between The Qt +Company (as defined below) and the Licensee (as defined below) for the license +of Licensed Software (as defined below). Capitalized terms used herein are +defined in Section 1. + +WHEREAS: + +(A). Licensee wishes to use the Licensed Software for the purpose of developing +and distributing Applications and/or Devices; and + +(B). The Qt Company is willing to grant the Licensee a right to use Licensed +Software for such purpose pursuant to term and conditions of this Agreement. + +NOW, THEREFORE, THE PARTIES HEREBY AGREE AS FOLLOWS: + +1. DEFINITIONS + +“Affiliate” of a Party shall mean an entity (i) which is directly or indirectly +controlling such Party; (ii) which is under the same direct or indirect +ownership or control as such Party; or (iii) which is directly or indirectly +owned or controlled by such Party. For these purposes, an entity shall be +treated as being controlled by another if that other entity has fifty percent +(50 %) or more of the votes in such entity, is able to direct its affairs +and/or to control the composition of its board of directors or equivalent body. + +“Applications” shall mean Licensee's software products created using the +Licensed Software, which may include the Redistributables, or part +thereof. + +“Contractor(s)” shall mean third party consultants, distributors and +contractors performing services to a Party under applicable contractual +arrangement. + +“Customer(s)” shall mean Licensee’s end users to whom Licensee, directly or +indirectly, distributes copies of the Redistributables. + +“Deployment Platforms” shall mean operating systems specified in the License +Certificate, in which the Redistributables can be distributed pursuant to the +terms and conditions of this Agreement. + +“Designated User(s)” shall mean the employee(s) of Licensee or Licensee’s +Affiliates acting within the scope of their employment or Licensee's +Contractors acting within the scope of their services for Licensee and on +behalf of Licensee. Designated Users shall be named in the License Certificate. + +“Development License” shall mean the license needed by the Licensee for each +Designated User to use the Licensed Software under the license grant described +in Section 3.1 of this Agreement. + +“Development Platforms” shall mean those operating systems specified in the +License Certificate, in which the Licensed Software can be used under the +Development License, but not distributed in any form or used for any other +purpose. + +“Devices” shall mean hardware devices or products that 1) are manufactured +and/or distributed by the Licensee or its Affiliates or Contractors, and +(2)(i) incorporate or integrate the Redistributables or parts thereof; or (ii) +do not incorporate or integrate the Redistributables at the time of +distribution, but where, when used by a Customer, the main user interface or +substantial functionality of such device is provided by Application(s) or +otherwise depends on the Licensed Software. + +“Distribution License(s)” shall mean the license required for distribution of +Redistributables in connection with Devices pursuant to license grant described +in Section 3.3 of this Agreement. + +“Distribution License Packs” shall mean set of prepaid Distribution Licenses +for distribution of Redistributables, as defined in The Qt Company’s standard +price list, quote, Purchase Order confirmation or in an appendix hereto, +as the case may be. + +“Intellectual Property Rights” shall mean patents (including utility models), +design patents, and designs (whether or not capable of registration), chip +topography rights and other like protection, copyrights, trademarks, service +marks, trade names, logos or other words or symbols and any other form of +statutory protection of any kind and applications for any of the foregoing as +well as any trade secrets. + +“License Certificate” shall mean a certificate generated by The Qt Company for +each Designated User respectively upon them downloading the licensed Software. +License Certificate will be available under respective Designated User’s Qt +Account at account.qt.io and it will specify the Designated User, the +Development Platforms, Deployment Platforms and the License Term. The terms of +the License Certificate are considered part of this Agreement and shall be +updated from time to time to reflect any agreed changes to the foregoing terms +relating to Designated User’s rights to the Licensed Software. + +“License Fee” shall mean the fee charged to the Licensee for rights granted +under the terms of this Agreement. + +“License Term” shall mean the agreed validity period of the Development +License of the respective Designated User, during which time the +Designated User is entitled to use the Licensed Software, as set forth in the +respective License Certificate. + +“Licensed Software” shall mean all versions of the + +(i) Qt Toolkit (including Qt Essentials, Qt Add-Ons and Value-Add modules) as +described in http://doc.qt.io/qt-5/qtmodules.html, + +(ii). Qt Creator (including Creator IDE tool) as described in +http://doc.qt.io/qtcreator/index.html, + +(iii). Qt 3D Studio as described in http://doc.qt.io/qt3dstudio/index.html, and + +as well as corresponding online or electronic documentation, associated media +and printed materials, including the source code, example programs and the +documentation, licensed to the Licensee under this Agreement. Licensed Software +does not include Third Party Software (as defined in Section 4), Open Source +Qt, or other software products of The Qt Company (for example Qt Safe Renderer +and Qt for Automation), unless such other software products of The Qt Company +are separately agreed in writing to be included in scope of the Licensed +Software. + +“Licensee” shall mean the individual or legal entity that is party to this +Agreement, as identified on the signature page hereof. + +“Licensee’s Records” shall mean books and records that are likely to contain +information bearing on Licensee’s compliance with this Agreement or the +payments due to The Qt Company under this Agreement, including, but not limited +to: assembly logs, sales records and distribution records. + +“Modified Software” shall have the meaning as set forth in Section 2.3. + +“Online Services” shall mean any services or access to systems made available +by The Qt Company to the Licensee over the Internet relating to the Licensed +Software or for the purpose of use by the Licensee of the Licensed Software or +Support. Use of any such Online Services is discretionary for the Licensee and +some of them may be subject to additional fees. + +“Open Source Qt” shall mean the non-commercial Qt computer software products, +licensed under the terms of the GNU Lesser General Public License, version +2.1 or later (“LGPL”) or the GNU General Public License, version 2.0 or later +(“GPL”). For clarity, Open Source Qt shall not be provided nor governed under +this Agreement. + +”Party” or “Parties” shall mean Licensee and/or The Qt Company. + +"Redistributables" shall mean the portions of the Licensed Software set forth +in Appendix 1, Section 1 that may be distributed pursuant to the terms of this +Agreement in object code form only, including any relevant documentation. +Where relevant, any reference to Licensed Software in this Agreement shall +include and refer also to Redistributables. + +“Renewal Term” shall mean an extension of previous License Term as agreed +between the Parties. + +“Submitted Modified Software” shall have the meaning as set forth in +Section 2.3. + +“Support” shall mean standard developer support that is provided by The Qt +Company to assist Designated Users in using the Licensed Software in +accordance with The Qt Company’s standard support terms and as further +defined in Section 8 hereunder. + +“Taxes” shall have the meaning set forth in Section 10.5. + +“Term” shall have the meaning set forth in Section 12. + + “The Qt Company” shall mean: + +(i) in the event Licensee is an individual residing in the United States or a +legal entity incorporated in the United States or having its headquarters in +the United States, The Qt Company Inc., a Delaware corporation with its office +at 2350 Mission College Blvd., Suite 1020, Santa Clara, CA 95054, USA.; or + +(ii) in the event the Licensee is an individual residing outside of the United +States or a legal entity incorporated outside of the United States or having +its registered office outside of the United States, The Qt Company Ltd., a +Finnish company with its registered office at Bertel Jungin aukio D3A, 02600 +Espoo, Finland. + +"Third Party Software " shall have the meaning set forth in Section 4. + +“Updates” shall mean a release or version of the Licensed Software containing +bug fixes, error corrections and other changes that are generally made +available to users of the Licensed Software that have contracted for Support. +Updates are generally depicted as a change to the digits following the decimal +in the Licensed Software version number. The Qt Company shall make Updates +available to the Licensee under the Support. Updates shall be considered as +part of the Licensed Software hereunder. + +“Upgrades” shall mean a release or version of the Licensed Software containing +enhancements and new features and are generally depicted as a change to the +first digit of the Licensed Software version number. In the event Upgrades are +provided to the Licensee under this Agreement, they shall be considered as +part of the Licensed Software hereunder. + +2. OWNERSHIP + +2.1 Ownership of The Qt Company + +The Licensed Software is protected by copyright laws and international +copyright treaties, as well as other intellectual property laws and treaties. +The Licensed Software is licensed, not sold. + +All The Qt Company's Intellectual Property Rights are and shall remain the +exclusive property of The Qt Company or its licensors respectively. + +2.2 Ownership of Licensee + +All the Licensee's Intellectual Property Rights are and shall remain the +exclusive property of the Licensee or its licensors respectively. + +All Intellectual Property Rights to the Modified Software, Applications and +Devices shall remain with the Licensee and no rights thereto shall be granted +by the Licensee to The Qt Company under this Agreement (except as set forth in +Section 2.3 below). + +2.3 Modified Software + +Licensee may create bug-fixes, error corrections, patches or modifications to +the Licensed Software (“Modified Software”). Such Modified Software may break +the source or binary compatibility with the Licensed Software (including +without limitation through changing the application programming interfaces +("API") or by adding, changing or deleting any variable, method, or class +signature in the Licensed Software and/or any inter-process protocols, services +or standards in the Licensed Software libraries). To the extent that Licensee’s +Modified Software so breaks source or binary compatibility with the Licensed +Software, Licensee acknowledges that The Qt Company's ability to provide +Support may be prevented or limited and Licensee's ability to make use of +Updates may be restricted. + +Licensee may, at its sole and absolute discretion, choose to submit Modified +Software to The Qt Company (“Submitted Modified Software”) in connection with +Licensee’s Support request, service request or otherwise. In the event Licensee +does so, then, Licensee hereby grants The Qt Company a sublicensable, +assignable, irrevocable, perpetual, worldwide, non-exclusive, royalty-free and +fully paid-up license, under all of Licensee’s Intellectual Property Rights, to +reproduce, adapt, translate, modify, and prepare derivative works of, publicly +display, publicly perform, sublicense, make available and distribute such +Submitted Modified Software as The Qt Company sees fit at its free and absolute +discretion. + +3. LICENSES GRANTED + +3.1 Development with Licensed Software + +Subject to the terms of this Agreement, The Qt Company grants to Licensee a +personal, worldwide, non-exclusive, non-transferable license, valid for the +License Term, to use, modify and copy the Licensed Software by Designated Users +on the Development Platforms for the sole purposes of designing, developing, +demonstrating and testing Application(s) and/or Devices, and to provide thereto +related support and other related services to end-user Customers. + +Licensee may install copies of the Licensed Software on an unlimited number of +computers provided that (i) only the Designated Users may use the Licensed +Software, and (ii) all Designated Users must have a valid Development License +to use Licensed Software. + +Licensee may at any time designate another Designated User to replace a then- +current Designated User by notifying The Qt Company in writing, provided that +any Designated User may be replaced only once during any six-month period. + +Upon expiry of the initially agreed License Term, the respective License Terms +shall be automatically extended to one or more Renewal Term(s), unless and +until either Party notifies the other Party in writing that it does not wish to +continue the License Term, such notification to be provided to the other Party +no less than ninety (90) days before expiry of the respective License Term. +Unless otherwise agreed between the Parties, Renewal Term shall be of equal +length with the initial Term. + +Any such Renewal Term shall be subject to License Fees agreed between the +Parties or, if no advance agreement exists, subject to The Qt Company’s +standard pricing applicable at the commencement date of any such Renewal Term. + +3.2 Distribution of Applications + +Subject to the terms of this Agreement, The Qt Company grants to Licensee a +personal, worldwide, non-exclusive, non-transferable, revocable (for cause +pursuant to this Agreement) right and license, valid for the Term, to + +(i) distribute, by itself or through its Contractors, Redistributables as +installed, incorporated or integrated into Applications for execution on the +Deployment Platforms, and + +(ii) grant sublicenses to Redistributables, as distributed hereunder, for +Customers solely for Customer’s internal use and to the extent necessary in +order for the Customers to use the Applications for their respective intended +purposes. + +Right to distribute the Redistributables as part of an Application as provided +herein is not royalty-bearing but is conditional upon the Licensee having paid +the agreed Development Licenses from The Qt Company before distributing any +Redistributables to Customers. + +3.3 Distribution of Devices + +Subject to the terms of this Agreement, The Qt Company grants to Licensee a +personal, worldwide, non-exclusive, non-transferable, revocable (for cause +pursuant to this Agreement) right and license, valid for the Term, to + +(i) distribute, by itself or through one or more tiers of Contractors, +Redistributables as installed, incorporated or integrated, or intended to be +installed, incorporated or integrated into Devices for execution on the +Deployment Platforms, and + +(ii) grant sublicenses to Redistributables, as distributed hereunder, for +Customers solely for Customer’s internal use and to the extent necessary in +order for the Customers to use the Devices for their respective intended +purposes. + +Right to distribute the Redistributables with Devices as provided herein is +conditional upon the Licensee having purchased and paid the appropriate amount +of Development and Distribution Licenses from The Qt Company before +distributing any Redistributables to Customers. + +3.4 Further Requirements + +The licenses granted above in this Section 3 by The Qt Company to Licensee are +conditional and subject to Licensee's compliance with the following terms: + +(i) Licensee shall not remove or alter any copyright, trademark or other +proprietary rights notice contained in any portion of the Licensed Software; + +(ii) Applications must add primary and substantial functionality to the +Licensed Software; + +(iii) Applications may not pass on functionality which in any way makes it +possible for others to create software with the Licensed Software; provided +however that Licensee may use the Licensed Software's scripting and QML ("Qt +Quick") functionality solely in order to enable scripting, themes and styles +that augment the functionality and appearance of the Application(s) without +adding primary and substantial functionality to the Application(s); + +(iv) Applications must not compete with the Licensed Software; + +(v) Licensee shall not use The Qt Company's or any of its suppliers' names, +logos, or trademarks to market Applications, except that Licensee may use +“Built with Qt” logo to indicate that Application(s) was developed using the +Licensed Software; + +(vi) Licensee shall not distribute, sublicense or disclose source code of +Licensed Software to any third party (provided however that Licensee may +appoint employee(s) of Contractors as Designated Users to use Licensed +Software pursuant to this Agreement). Such right may be available for the +Licensee subject to a separate software development kit (“SDK”) license +agreement to be concluded with The Qt Company; + +(vii) Licensee shall not grant the Customers a right to (i) make copies of the +Redistributables except when and to the extent required to use the Applications +and/or Devices for their intended purpose, (ii) modify the Redistributables or +create derivative works thereof, (iii) decompile, disassemble or otherwise +reverse engineer Redistributables, or (iv) redistribute any copy or portion of +the Redistributables to any third party, except as part of the onward sale of +the Device on which the Redistributables are installed; + +(viii) Licensee shall not and shall cause that its Affiliates or Contractors +shall not a) in any way combine, incorporate or integrate Licensed Software +with, or use Licensed Software for creation of, any software created with or +incorporating Open Source Qt, or b) incorporate or integrate Applications +into a hardware device or product other than a Device, unless Licensee has +received an advance written permission from The Qt Company to do so. Absent +such written permission, any and all distribution by the Licensee during the +Term of a hardware device or product a) which incorporate or integrate any +part of Licensed Software or Open Source Qt; or b) where the main user +interface or substantial functionality is provided by software build with +Licensed Software or Open Source Qt or otherwise depends on the Licensed +Software or Open Source Qt, shall be considered as a Device distribution under +this Agreement and dependent on compliance thereof (including but not limited +to obligation to pay applicable License Fees for such distribution); + +(ix) Licensee shall cause all of its Affiliates and Contractors entitled to +make use of the licenses granted under this Agreement, to be contractually +bound to comply with the relevant terms of this Agreement and not to use the +Licensed Software beyond the terms hereof and for any purposes other than +operating within the scope of their services for Licensee. Licensee shall be +responsible for any and all actions and omissions of its Affiliates and +Contractors relating to the Licensed Software and use thereof (including but +not limited to payment of all applicable License Fees); + +(x) Except when and to the extent explicitly provided in this Section 3, +Licensee shall not transfer, publish, disclose, display or otherwise make +available the Licensed Software; + +; and + +(xi) Licensee shall not attempt or enlist a third party to conduct or attempt +to conduct any of the above. + +Above terms shall not be applicable if and to the extent they conflict with any +mandatory provisions of any applicable laws. + +Any use of Licensed Software beyond the provisions of this Agreement is +strictly prohibited and requires an additional license from The Qt Company. + +4. THIRD PARTY SOFTWARE + +The Licensed Software may provide links to third party libraries or code +(collectively "Third Party Software") to implement various functions. Third +Party Software does not comprise part of the Licensed Software. In some cases, +access to Third Party Software may be included in the Licensed Software. Such +Third Party Software will be listed in the ".../src/3rdparty" source tree +delivered with the Licensed Software or documented in the Licensed Software, as +such may be amended from time to time. Licensee acknowledges that use or +distribution of Third Party Software is in all respects subject to applicable +license terms of applicable third party right holders. + + 5. PRE-RELEASE CODE + +The Licensed Software may contain pre-release code and functionality marked or +otherwise stated as “Technology Preview”, “Alpha”, “Beta” or similar +designation. Such pre-release code may be present in order to provide +experimental support for new platforms or preliminary versions of one or more +new functionalities. The pre-release code may not be at the level of +performance and compatibility of a final, generally available, product +offering of the Licensed Software. The pre-release parts of the Licensed +Software may not operate correctly, may contain errors and may be substantially +modified by The Qt Company prior to the first commercial product release, if +any. The Qt Company is under no obligation to make pre-release code +commercially available, or provide any Support or Updates relating thereto. The +Qt Company assumes no liability whatsoever regarding any pre-release code, but +any use thereof is exclusively at Licensee’s own risk and expense. + +6. LIMITED WARRANTY AND WARRANTY DISCLAIMER + +The Qt Company hereby represents and warrants that it has the power and +authority to grant the rights and licenses granted to Licensee under this +Agreement. + +Except as set forth above, the Licensed Software is licensed to Licensee +"as is" and Licensee’s exclusive remedy and The Qt Company’s entire liability +for errors in the Licensed Software shall be limited, at The Qt Company’s +option, to correction of the error, replacement of the Licensed Software or +return of the applicable fees paid for the defective Licensed Software for the +time period during which the License is not able to utilize the Licensed +Software under the terms of this Agreement. + +TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE QT COMPANY ON BEHALF OF +ITSELF AND ITS LICENSORS, SUPPLIERS AND AFFILIATES, DISCLAIMS ALL OTHER +WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, ANY IMPLIED +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON- +INFRINGEMENT WITH REGARD TO THE LICENSED SOFTWARE. THE QT COMPANY DOES NOT +WARRANT THAT THE LICENSED SOFTWARE WILL SATISFY LICENSEE’S REQUIREMENTS OR THAT +IT WILL OPERATE WITHOUT DEFECT OR ERROR OR THAT THE OPERATION THEREOF WILL BE +UNINTERRUPTED. ALL USE OF AND RELIANCE ON THE LICENSED SOFTWARE IS AT THE SOLE +RISK OF AND RESPONSIBILITY OF LICENSEE. + +7. INDEMNIFICATION AND LIMITATION OF LIABILITY + +7.1 Limitation of Liability + +EXCEPT FOR (I) CASES OF GROSS NEGLIGENCE OR INTENTIONAL MISCONDUCT, AND (II) +BREACH OF CONFIDENTIALITY, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, IN NO +EVENT SHALL EITHER PARTY BE LIABLE TO THE OTHER PARTY FOR ANY LOSS OF PROFIT, +LOSS OF DATA, LOSS OF BUSINESS OR GOODWILL OR ANY OTHER INDIRECT, SPECIAL, +CONSEQUENTIAL, INCIDENTAL OR PUNITIVE COST, DAMAGES OR EXPENSE OF ANY KIND, +HOWSOEVER ARISING UNDER OR IN CONNECTION WITH THIS AGREEMENT. PARTIES +SPECIFICALLY AGREE THAT LICENSEE’S OBLIGATION TO PAY LICENSE AND OTHER FEES +CORRESPONDING TO ACTUAL USAGE OF LICENSED SOFTWARE HEREUNDER SHALL BE +CONSIDERED AS A DIRECT DAMAGE. + +EXCEPT FOR (I) CASES OF GROSS NEGLIGENCE OR INTENTIONAL MISCONDUCT, AND (II) +BREACH OF CONFIDENTIALITY, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, IN +NO EVENT SHALL EITHER PARTY’S TOTAL AGGREGATE LIABILITY UNDER THIS AGREEMENT +EXCEED THE AGGREGATE LICENSE FEES PAID OR PAYABLE TO THE QT COMPANY FROM +LICENSEE DURING THE PERIOD OF TWELVE (12) MONTHS IMMEDIATELY PRECEDING THE +EVENT RESULTING IN SUCH LIABILITY. + +THE PROVISIONS OF THIS SECTION 7 ALLOCATE THE RISKS UNDER THIS AGREEMENT +BETWEEN THE QT COMPANY AND LICENSEE AND THE PARTIES HAVE RELIED UPON THE +LIMITATIONS SET FORTH HEREIN IN DETERMINING WHETHER TO ENTER INTO THIS AGREEMENT. + +7.2 Licensee´s Indemnification + +Licensee shall indemnify and hold harmless The Qt Company from and against any +claim, injury, judgment, settlement, loss or expense, including attorneys' fees +related to: (a) Licensee’s misrepresentation in connection with The Qt Company +or the Licensed Software or breach of this Agreement, (b) the Application or +Device (except where such cause of liability is solely attributable to the +Licensed Software). + +8. SUPPORT, UPDATES AND ONLINE SERVICES + +Upon due payment of the agreed License Fees the Licensee will be eligible to +receive Support and Updates and to use the Online Services during the License +Term, provided, however, that in the event the License Term is longer than 36 +months, Support is provided only for the first 12 months, unless the Parties +specifically otherwise agree. + +Unless otherwise decided by The Company at its free and absolute discretion, +Upgrades will not be included in the Support but may be available subject to +additional fees. + +From time to time The Qt Company may change the Support terms, provided that +during the respective ongoing License Term the level of Support provided by The +Qt Company may not be reduced without the consent of the Licensee. + +Unless otherwise agreed, The Qt Company shall not be responsible for providing +any service or support to Customers. + +9. CONFIDENTIALITY + +Each Party acknowledges that during the Term of this Agreement each Party may +receive information about the other Party's business, business methods, +business plans, customers, business relations, technology, and other +information, including the terms of this Agreement, that is confidential and +of great value to the other Party, and the value of which would be +significantly reduced if disclosed to third parties (“Confidential +Information”). Accordingly, when a Party (the “Receiving Party”) receives +Confidential Information from the other Party (the “Disclosing Party”), the +Receiving Party shall only disclose such information to employees and +Contractors on a need to know basis, and shall cause its employees and +employees of its Affiliates to: (i) maintain any and all Confidential +Information in confidence; (ii) not disclose the Confidential Information to a +third party without the Disclosing Party's prior written approval; and (iii) +not, directly or indirectly, use the Confidential Information for any purpose +other than for exercising its rights and fulfilling its responsibilities +pursuant to this Agreement. Each Party shall take reasonable measures to +protect the Confidential Information of the other Party, which measures shall +not be less than the measures taken by such Party to protect its own +confidential and proprietary information. + +Obligation of confidentiality shall not apply to information that (i) is or +becomes generally known to the public through no act or omission of the +Receiving Party; (ii) was in the Receiving Party's lawful possession prior to +the disclosure hereunder and was not subject to limitations on disclosure or +use; (iii) is developed independently by employees or Contractors of the +Receiving Party or other persons working for the Receiving Party who have not +had access to the Confidential Information of the Disclosing Party, as proven +by the written records of the Receiving Party; (iv) is lawfully disclosed to +the Receiving Party without restrictions, by a third party not under an +obligation of confidentiality; or (v) the Receiving Party is legally compelled +to disclose, in which case the Receiving Party shall notify the Disclosing +Party of such compelled disclosure and assert the privileged and confidential +nature of the information and cooperate fully with the Disclosing Party to +limit the scope of disclosure and the dissemination of disclosed Confidential +Information to the minimum extent necessary. + +The obligations under this Section 9 shall continue to remain in force for a +period of five (5) years after the last disclosure, and, with respect to trade +secrets, for so long as such trade secrets are protected under applicable trade +secret laws. + +10. FEES, DELIVERY AND PAYMENT + +10.1 License Fees + +License Fees are described in The Qt Company’s standard price list, quote or +Purchase Order confirmation or in an appendix hereto, as the case may be. + +The License Fees shall not be refunded or claimed as a credit in any event or +for any reason whatsoever. + +10.2 Ordering Licenses + +Licensee may purchase Development Licenses and Distribution Licenses pursuant +to agreed pricing terms or, if no specific pricing terms have been agreed upon, +at The Qt Company's standard pricing terms applicable at the time of purchase. + +Licensee shall submit all purchase orders for Development Licenses and +Distribution Licenses to The Qt Company by email or any other method acceptable +to The Qt Company (each such order is referred to herein as a “Purchase Order”) +for confirmation, whereupon the Purchase Order shall become binding between the +Parties. + +10.3 Distribution License Packs + +Unless otherwise agreed, Distribution Licenses shall be purchased by way of +Distribution License Packs. + +Upon due payment of the ordered Distribution License Pack(s), the Licensee will +have an account of Distribution Licenses available for installing, bundling or +integrating (all jointly “installing”) the Redistributables with the Devices or +for otherwise distributing the Redistributables in accordance with this +Agreement. + +Each time Licensee “installs” or distributes a copy of Redistributables, then +one Distribution License is used, and Licensee’s account of available +Distribution Licenses is decreased accordingly. + +Licensee may “install” copies of the Redistributables so long as Licensee has +Distribution Licenses remaining on its account. + +Redistributables will be deemed to have been “installed” into a Device when one +of the following circumstances shall have occurred: a) the Redistributables +have been loaded onto the Device and used outside of the Licensee’s premises or +b) the Device has been fully tested and placed into Licensee's inventory +(or sold) for the first time (i.e., Licensee will not be required to use +(or pay for) more than one Distribution License for each individual Device, +e.g. in a situation where a Device is returned to Licensee's inventory after +delivery to a distributor or sale to a Customer). In addition, if Licensee +includes a back-up copy of the Redistributables on a CD-ROM or other storage +medium along with the product, that backup copy of the Redistributables will +not be deemed to have been “installed” and will not require an additional +Distribution License. + +10.4 Payment Terms + +License Fees and any other charges under this Agreement shall be paid by +Licensee no later than thirty (30) days from the date of the applicable invoice +from The Qt Company. + +The Qt Company will submit an invoice to Licensee after the date of this +Agreement and/or after The Qt Company receives a Purchase Order from +Licensee. + +A late payment charge of the lower of (a) one percent per month; or (b) the +interest rate stipulated by applicable law, shall be charged on any unpaid +balances that remain past due. + +The Qt Company shall have the right to suspend, terminate or withhold grants +of all rights to the Licensed Software hereunder, including but not limited to +the Developer License, Distribution License, and Support, should Licensee fail +to make payment in timely fashion. + +10.5 Taxes + +All License Fees and other charges payable hereunder are gross amounts but +exclusive of any value added tax, use tax, sales tax and other taxes, duties or +tariffs (“Taxes”). Such applicable Taxes shall be paid by Licensee, or, where +applicable, in lieu of payment of such Taxes, Licensee shall provide an +exemption certificate to The Qt Company and any applicable authority. + +11 RECORD-KEEPING AND REPORTING OBLIGATIONS; AUDIT RIGHTS + +11.1 Licensee’s Record-keeping + +Licensee shall at all times maintain accurate and up-to-date written records of +Licensee’s activities related to the use of Licensed Software and distribution +of Redistributables. The records shall be adequate to determine Licensee’s +compliance with the provisions of this Agreement and to demonstrate the number +of Designated Users and Redistributables distributed by Licensee. The records +shall conform to good accounting practices reasonably acceptable to The Qt +Company. + +Licensee shall, within thirty (30) days from receiving The Qt Company’s request +to that effect, deliver to The Qt Company a report on Licensee’s usage of +Licensed Software, such report to copies of Redistributables distributed by +Licensee during that calendar quarter, and also detailing the number of +undistributed copies of Redistributables made by Licensee and remaining in its +account contain information, in sufficient detail, on (i) amount of users +working with Licensed Software, (ii) copies of Redistributables distributed by +Licensee during that calendar quarter, (iii) number of undistributed copies of +Redistributables and corresponding number of unused Distribution Licenses +remaining on Licensee’s account, and (iv) any other information as The Qt +Company may reasonably require from time to time. + +11.2. The Qt Company’s Audit Rights + +The Qt Company or an independent auditor acting on behalf of The Qt Company’s, +may, upon at least five (5) business days’ prior written notice and at its +expense, audit Licensee with respect to the use of the Redistributables, but +not more frequently than once during each 6-month period. Such audit may be +conducted by mail, electronic means or through an in-person visit to Licensee’s +place of business. Any such in-person audit shall be conducted during regular +business hours at Licensee's facilities and shall not unreasonably interfere +with Licensee's business activities. The Qt Company or the independent auditor +acting on behalf of The Qt Company shall be entitled to inspect Licensee’s +Records. All such Licensee’s Records and use thereof shall be subject to an +obligation of confidentiality under this Agreement. + +If an audit reveals that Licensee is using the Licensed Software beyond scope +of the licenses Licensee has paid for, Licensee agrees to immediately pay The +Qt Company any amounts owed for such unauthorized use. + +In addition, in the event the audit reveals a material violation of the terms +of this Agreement (underpayment of more than 5% of License Fees shall always be +deemed a material violation for purposes of this section), then the Licensee +shall pay The Qt Company's reasonable cost of conducting such audit. + +12 TERM AND TERMINATION + +12.1 Term + +This Agreement shall enter into force upon due acceptance by both Parties and +remain in force for as long as there is any Development License(s) in force +(“Term”), unless and until terminated pursuant to the terms of this Section 12. + +12.2 Termination by The Qt Company + +The Qt Company shall have the right to terminate this Agreement upon thirty +(30) days prior written notice if the Licensee is in material breach of any +obligation of this Agreement and fails to remedy such breach within such notice +period. + +12.3 Mutual Right to Terminate + +Either Party shall have the right to terminate this Agreement immediately upon +written notice in the event that the other Party becomes insolvent, files for +any form of bankruptcy, makes any assignment for the benefit of creditors, has +a receiver, administrative receiver or officer appointed over the whole or a +substantial part of its assets, ceases to conduct business, or an act +equivalent to any of the above occurs under the laws of the jurisdiction of the +other Party. + +12.4 Parties´ Rights and Duties upon Termination + +Upon expiry or termination of the Agreement Licensee shall cease and shall +cause all Designated Users (including those of its Affiliates’ and +Contractors’) to cease using the Licensed Software and distribution of the +Redistributables under this Agreement. + +Notwithstanding the above, in the event the Agreement expires or is terminated: + +(i) as a result of The Qt Company choosing not to renew the Development +License(s) as set forth in Section 3.1, then all valid licenses possessed by +the Licensee at such date shall be extended to be valid in perpetuity under the +terms of this Agreement and Licensee is entitled to purchase additional +licenses as set forth in Section 10.2; or + +(ii) for reason other than by The Qt Company pursuant to item (i) above or +pursuant to Section 12.2, then the Licensee is entitled, for a period of six +(6) months after the effective date of termination, to continue distribution of +Devices under the Distribution Licenses paid but unused at such effective date +of termination. + +Upon any such termination the Licensee shall destroy or return to The Qt +Company all copies of the Licensed Software and all related materials and will +certify the same to The Qt Company upon its request, provided however that +Licensee may retain and exploit such copies of the Licensed Software as it may +reasonably require in providing continued support to Customers. + +Expiry or termination of this Agreement for any reason whatsoever shall not +relieve Licensee of its obligation to pay any License Fees accrued or payable +to The Qt Company prior to the effective date of termination, and Licensee +shall immediately pay to The Qt Company all such fees upon the effective date +of termination. Termination of this Agreement shall not affect any rights of +Customers to continue use of Applications and Devices (and therein incorporated +Redistributables). + +12.5 Extension in case of bankruptcy + +In the event The Qt Company is declared bankrupt under a final, non-cancellable +decision by relevant court of law, and this Agreement is not, at the date of +expiry of the Development License(s) pursuant to Section 3.1, assigned to +party, who has assumed The Qt Company’s position as a legitimate licensor of +Licensed Software under this Agreement, then all valid licenses possessed by +the Licensee at such date of expiry, and which the Licensee has not notified +for expiry, shall be extended to be valid in perpetuity under the terms of +this Agreement. + +13. GOVERNING LAW AND LEGAL VENUE + +In the event this Agreement is in the name of The Qt Company Inc., a Delaware +Corporation, then: + +(i) this Agreement shall be construed and interpreted in accordance with the +laws of the State of California, USA, excluding its choice of law provisions; + +(ii) the United Nations Convention on Contracts for the International Sale of +Goods will not apply to this Agreement; and + +(iii) any dispute, claim or controversy arising out of or relating to this +Agreement or the breach, termination, enforcement, interpretation or validity +thereof, including the determination of the scope or applicability of this +Agreement to arbitrate, shall be determined by arbitration in San Francisco, +USA, before one arbitrator. The arbitration shall be administered by JAMS +pursuant to JAMS' Streamlined Arbitration Rules and Procedures. Judgment on the +Award may be entered in any court having jurisdiction. This Section shall not +preclude parties from seeking provisional remedies in aid of arbitration from a +court of appropriate jurisdiction. + +In the event this Agreement is in the name of The Qt Company Ltd., a Finnish +Company, then: + +(i) this Agreement shall be construed and interpreted in accordance with the +laws of Finland, excluding its choice of law provisions; + +(ii) the United Nations Convention on Contracts for the International Sale of +Goods will not apply to this Agreement; and + +(iii) any disputes, controversy or claim arising out of or relating to this +Agreement, or the breach, termination or validity thereof shall be shall be +finally settled by arbitration in accordance with the Arbitration Rules of +Finland Chamber of Commerce. The arbitration tribunal shall consist of one (1), +or if either Party so requires, of three (3), arbitrators. The award shall be +final and binding and enforceable in any court of competent jurisdiction. The +arbitration shall be held in Helsinki, Finland and the process shall be +conducted in the English language. This Section shall not preclude parties from +seeking provisional remedies in aid of arbitration from a court of appropriate +jurisdiction. + +14. GENERAL PROVISIONS + +14.1 No Assignment + +Except in the case of a merger or sale of substantially all of its corporate +assets, Licensee shall not be entitled to assign or transfer all or any of its +rights, benefits and obligations under this Agreement without the prior written +consent of The Qt Company, which shall not be unreasonably withheld or delayed. +The Qt Company shall be entitled to freely assign or transfer any of its +rights, benefits or obligations under this Agreement. + +14.2 No Third Party Representations + +Licensee shall make no representations or warranties concerning the Licensed +Software on behalf of The Qt Company. Any representation or warranty Licensee +makes or purports to make on The Qt Company’s behalf shall be void as to The +Qt Company. + +14.3 Surviving Sections + +Any terms and conditions that by their nature or otherwise reasonably should +survive termination of this Agreement shall so be deemed to survive. + +14.4 Entire Agreement + +This Agreement, the exhibits hereto, the License Certificate and any applicable +Purchase Order constitute the complete agreement between the Parties and +supersedes all prior or contemporaneous discussions, representations, and +proposals, written or oral, with respect to the subject matters discussed +herein. + +In the event of any conflict or inconsistency between this Agreement and any +Purchase Order, the terms of this Agreement will prevail over the terms of the +Purchase Order with respect to such conflict or inconsistency. + +Parties specifically acknowledge and agree that this Agreement prevails over +any click-to-accept or similar agreements the Designated Users may need to +accept online upon download of the Licensed Software, as may be required by +The Qt Company’s applicable processes relating to Licensed Software. + +14.5 Modifications + +No modification of this Agreement shall be effective unless contained in a +writing executed by an authorized representative of each Party. No term or +condition contained in Licensee's Purchase Order shall apply unless expressly +accepted by The Qt Company in writing. + +14.6 Force Majeure + +Except for the payment obligations hereunder, neither Party shall be liable to +the other for any delay or non-performance of its obligations hereunder in the +event and to the extent that such delay or non-performance is due to an event +of act of God, terrorist attack or other similar unforeseeable catastrophic +event that prevents either Party for fulfilling its obligations under this +Agreement and which such Party cannot avoid or circumvent (“Force Majeure +Event”). If the Force Majeure Event results in a delay or non-performance of a +Party for a period of three (3) months or longer, then either Party shall have +the right to terminate this Agreement with immediate effect without any +liability (except for the obligations of payment arising prior to the event of +Force Majeure) towards the other Party. + +14.7 Notices + +Any notice given by one Party to the other shall be deemed properly given and +deemed received if specifically acknowledged by the receiving Party in writing +or when successfully delivered to the recipient by hand, fax, or special +courier during normal business hours on a business day to the addresses +specified for each Party on the signature page. Each communication and document +made or delivered by one Party to the other Party pursuant to this Agreement +shall be in the English language. + +14.8 Export Control + +Licensee acknowledges that the Redistributables may be subject to export +control restrictions under the applicable laws of respective countries. +Licensee shall fully comply with all applicable export license restrictions +and requirements as well as with all laws and regulations relating to the +Redistributables and exercise of licenses hereunder and shall procure all +necessary governmental authorizations, including without limitation, all +necessary licenses, approvals, permissions or consents, where necessary for the +re-exportation of the Redistributables, Applications and/or Devices. + +14.9 No Implied License + +There are no implied licenses or other implied rights granted under this +Agreement, and all rights, save for those expressly granted hereunder, shall +remain with The Qt Company and its licensors. In addition, no licenses or +immunities are granted to the combination of the Licensed Software with any +other software or hardware not delivered by The Qt Company under this Agreement. + +14.10 Attorney Fees + +The prevailing Party in any action to enforce this Agreement shall be entitled +to recover its attorney’s fees and costs in connection with such action. + +14.11 Severability + +If any provision of this Agreement shall be adjudged by any court of competent +jurisdiction to be unenforceable or invalid, that provision shall be limited or +eliminated to the minimum extent necessary so that this Agreement shall +otherwise remain in full force and effect and enforceable. + + +IN WITNESS WHEREOF, the Parties hereto, intending to be legally bound hereby, +have caused this Agreement to be executed by Licensee's authorized +representative installing the Licensed Software and accepting the terms +hereof in connection therewith. + + +Appendix 1 + +1. Parts of the Licensed Software that are permitted for distribution in +object code form only (“Redistributables”) under this Agreement: + +- The Licensed Software's Qt Essentials and Qt Add-on libraries +- The Licensed Software's configuration tool (“qtconfig”) +- The Licensed Software's help tool (“Qt Assistant”) +- The Licensed Software's internationalization tools (“Qt Linguist”, “lupdate”, +“lrelease”) +- The Licensed Software's QML (“Qt Quick”) launcher tool (“qmlscene” or +“qmlviewer”) +- The Licensed Software's installer framework +- Qt for Python (PySide2) + +2. Parts of the Licensed Software that are not permitted for distribution +include, but are not limited to: + +- The Licensed Software's source code and header files +- The Licensed Software's documentation +- The Licensed Software’s documentation generation tool (“qdoc”) +- The Licensed Software's tool for writing makefiles (“qmake”) +- The Licensed Software's Meta Object Compiler (“moc”) +- The Licensed Software's User Interface Compiler (“uic”) +- The Licensed Software's Resource Compiler (“rcc”) +- The Licensed Software's parts of the IDE tool (“Qt Creator”) +- The Licensed Software’s parts of the Design tools (“Qt 3D Studio” or “Qt +Quick Designer”) +- The Licensed Software's Emulator + diff --git a/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/LICENSE.FDL b/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/LICENSE.FDL new file mode 100644 index 0000000..938bb8d --- /dev/null +++ b/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/LICENSE.FDL @@ -0,0 +1,450 @@ + GNU Free Documentation License + Version 1.3, 3 November 2008 + + + Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +0. PREAMBLE + +The purpose of this License is to make a manual, textbook, or other +functional and useful document "free" in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. + +This License is a kind of "copyleft", which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + + +1. APPLICABILITY AND DEFINITIONS + +This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The "Document", below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as "you". You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. + +A "Modified Version" of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +A "Secondary Section" is a named appendix or a front-matter section of +the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall +subject (or to related matters) and contains nothing that could fall +directly within that overall subject. (Thus, if the Document is in +part a textbook of mathematics, a Secondary Section may not explain +any mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +The "Invariant Sections" are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. + +The "Cover Texts" are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. + +A "Transparent" copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not "Transparent" is called "Opaque". + +Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, LaTeX input format, SGML +or XML using a publicly available DTD, and standard-conforming simple +HTML, PostScript or PDF designed for human modification. Examples of +transparent image formats include PNG, XCF and JPG. Opaque formats +include proprietary formats that can be read and edited only by +proprietary word processors, SGML or XML for which the DTD and/or +processing tools are not generally available, and the +machine-generated HTML, PostScript or PDF produced by some word +processors for output purposes only. + +The "Title Page" means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, "Title Page" means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. + +The "publisher" means any person or entity that distributes copies of +the Document to the public. + +A section "Entitled XYZ" means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as "Acknowledgements", +"Dedications", "Endorsements", or "History".) To "Preserve the Title" +of such a section when you modify the Document means that it remains a +section "Entitled XYZ" according to this definition. + +The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. + +2. VERBATIM COPYING + +You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no +other conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +You may also lend copies, under the same conditions stated above, and +you may publicly display copies. + + +3. COPYING IN QUANTITY + +If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document's license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. + +It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to +give them a chance to provide you with an updated version of the +Document. + + +4. MODIFICATIONS + +You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +A. Use in the Title Page (and on the covers, if any) a title distinct + from that of the Document, and from those of previous versions + (which should, if there were any, be listed in the History section + of the Document). You may use the same title as a previous version + if the original publisher of that version gives permission. +B. List on the Title Page, as authors, one or more persons or entities + responsible for authorship of the modifications in the Modified + Version, together with at least five of the principal authors of the + Document (all of its principal authors, if it has fewer than five), + unless they release you from this requirement. +C. State on the Title page the name of the publisher of the + Modified Version, as the publisher. +D. Preserve all the copyright notices of the Document. +E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. +F. Include, immediately after the copyright notices, a license notice + giving the public permission to use the Modified Version under the + terms of this License, in the form shown in the Addendum below. +G. Preserve in that license notice the full lists of Invariant Sections + and required Cover Texts given in the Document's license notice. +H. Include an unaltered copy of this License. +I. Preserve the section Entitled "History", Preserve its Title, and add + to it an item stating at least the title, year, new authors, and + publisher of the Modified Version as given on the Title Page. If + there is no section Entitled "History" in the Document, create one + stating the title, year, authors, and publisher of the Document as + given on its Title Page, then add an item describing the Modified + Version as stated in the previous sentence. +J. Preserve the network location, if any, given in the Document for + public access to a Transparent copy of the Document, and likewise + the network locations given in the Document for previous versions + it was based on. These may be placed in the "History" section. + You may omit a network location for a work that was published at + least four years before the Document itself, or if the original + publisher of the version it refers to gives permission. +K. For any section Entitled "Acknowledgements" or "Dedications", + Preserve the Title of the section, and preserve in the section all + the substance and tone of each of the contributor acknowledgements + and/or dedications given therein. +L. Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section titles. +M. Delete any section Entitled "Endorsements". Such a section + may not be included in the Modified Version. +N. Do not retitle any existing section to be Entitled "Endorsements" + or to conflict in title with any Invariant Section. +O. Preserve any Warranty Disclaimers. + +If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +You may add a section Entitled "Endorsements", provided it contains +nothing but endorsements of your Modified Version by various +parties--for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. + + +5. COMBINING DOCUMENTS + +You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. + +The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +In the combination, you must combine any sections Entitled "History" +in the various original documents, forming one section Entitled +"History"; likewise combine any sections Entitled "Acknowledgements", +and any sections Entitled "Dedications". You must delete all sections +Entitled "Endorsements". + + +6. COLLECTIONS OF DOCUMENTS + +You may make a collection consisting of the Document and other +documents released under this License, and replace the individual +copies of this License in the various documents with a single copy +that is included in the collection, provided that you follow the rules +of this License for verbatim copying of each of the documents in all +other respects. + +You may extract a single document from such a collection, and +distribute it individually under this License, provided you insert a +copy of this License into the extracted document, and follow this +License in all other respects regarding verbatim copying of that +document. + + +7. AGGREGATION WITH INDEPENDENT WORKS + +A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an "aggregate" if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation's users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. + +If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document's Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. + + +8. TRANSLATION + +Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. + +If a section in the Document is Entitled "Acknowledgements", +"Dedications", or "History", the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. + + +9. TERMINATION + +You may not copy, modify, sublicense, or distribute the Document +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense, or distribute it is void, and +will automatically terminate your rights under this License. + +However, if you cease all violation of this License, then your license +from a particular copyright holder is reinstated (a) provisionally, +unless and until the copyright holder explicitly and finally +terminates your license, and (b) permanently, if the copyright holder +fails to notify you of the violation by some reasonable means prior to +60 days after the cessation. + +Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, receipt of a copy of some or all of the same material does +not give you any rights to use it. + + +10. FUTURE REVISIONS OF THIS LICENSE + +The Free Software Foundation may publish new, revised versions of the +GNU Free Documentation License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in +detail to address new problems or concerns. See +http://www.gnu.org/copyleft/. + +Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License "or any later version" applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. If the Document +specifies that a proxy can decide which future versions of this +License can be used, that proxy's public statement of acceptance of a +version permanently authorizes you to choose that version for the +Document. + +11. RELICENSING + +"Massive Multiauthor Collaboration Site" (or "MMC Site") means any +World Wide Web server that publishes copyrightable works and also +provides prominent facilities for anybody to edit those works. A +public wiki that anybody can edit is an example of such a server. A +"Massive Multiauthor Collaboration" (or "MMC") contained in the site +means any set of copyrightable works thus published on the MMC site. + +"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 +license published by Creative Commons Corporation, a not-for-profit +corporation with a principal place of business in San Francisco, +California, as well as future copyleft versions of that license +published by that same organization. + +"Incorporate" means to publish or republish a Document, in whole or in +part, as part of another Document. + +An MMC is "eligible for relicensing" if it is licensed under this +License, and if all works that were first published under this License +somewhere other than this MMC, and subsequently incorporated in whole or +in part into the MMC, (1) had no cover texts or invariant sections, and +(2) were thus incorporated prior to November 1, 2008. + +The operator of an MMC Site may republish an MMC contained in the site +under CC-BY-SA on the same site at any time before August 1, 2009, +provided the MMC is eligible for relicensing. + + +ADDENDUM: How to use this License for your documents + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + + Copyright (c) YEAR YOUR NAME. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.3 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. + A copy of the license is included in the section entitled "GNU + Free Documentation License". + +If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the "with...Texts." line with this: + + with the Invariant Sections being LIST THEIR TITLES, with the + Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. + +If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + +If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. diff --git a/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/LICENSE.GPL2 b/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/LICENSE.GPL2 new file mode 100644 index 0000000..d159169 --- /dev/null +++ b/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/LICENSE.GPL2 @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/LICENSE.GPLv3 b/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/LICENSE.GPLv3 new file mode 100644 index 0000000..71c4ad4 --- /dev/null +++ b/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/LICENSE.GPLv3 @@ -0,0 +1,686 @@ + GNU GENERAL PUBLIC LICENSE + + The Qt Toolkit is Copyright (C) 2015 The Qt Company Ltd. + Contact: http://www.qt.io/licensing/ + + You may use, distribute and copy the Qt Toolkit under the terms of + GNU Lesser General Public License version 3. That license references + the General Public License version 3, that is displayed below. Other + portions of the Qt Toolkit may be licensed directly under this license. + +------------------------------------------------------------------------- + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/LICENSE.GPLv3-EXCEPT b/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/LICENSE.GPLv3-EXCEPT new file mode 100644 index 0000000..b1cb1be --- /dev/null +++ b/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/LICENSE.GPLv3-EXCEPT @@ -0,0 +1,704 @@ +This is the GNU General Public License version 3, annotated with The +Qt Company GPL Exception 1.0: + +------------------------------------------------------------------------- + +The Qt Company GPL Exception 1.0 + +Exception 1: + +As a special exception you may create a larger work which contains the +output of this application and distribute that work under terms of your +choice, so long as the work is not otherwise derived from or based on +this application and so long as the work does not in itself generate +output that contains the output from this application in its original +or modified form. + +Exception 2: + +As a special exception, you have permission to combine this application +with Plugins licensed under the terms of your choice, to produce an +executable, and to copy and distribute the resulting executable under +the terms of your choice. However, the executable must be accompanied +by a prominent notice offering all users of the executable the entire +source code to this application, excluding the source code of the +independent modules, but including any changes you have made to this +application, under the terms of this license. + + +------------------------------------------------------------------------- + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/LICENSE.LGPLv3 b/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/LICENSE.LGPLv3 new file mode 100644 index 0000000..1f78e05 --- /dev/null +++ b/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/LICENSE.LGPLv3 @@ -0,0 +1,177 @@ + GNU LESSER GENERAL PUBLIC LICENSE + + The Qt Toolkit is Copyright (C) 2015 The Qt Company Ltd. + Contact: http://www.qt.io/licensing/ + + You may use, distribute and copy the Qt Toolkit under the terms of + GNU Lesser General Public License version 3, which is displayed below. + This license makes reference to the version 3 of the GNU General + Public License, which you can find in the LICENSE.GPLv3 file. + +------------------------------------------------------------------------- + + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/METADATA b/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/METADATA new file mode 100644 index 0000000..7e1835d --- /dev/null +++ b/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/METADATA @@ -0,0 +1,130 @@ +Metadata-Version: 2.1 +Name: PySide2 +Version: 5.15.2.1 +Summary: Python bindings for the Qt cross-platform application and UI framework +Home-page: https://www.pyside.org +Author: Qt for Python Team +Author-email: pyside@qt-project.org +License: LGPL +Download-URL: https://download.qt.io/official_releases/QtForPython +Keywords: Qt +Platform: UNKNOWN +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Console +Classifier: Environment :: MacOS X +Classifier: Environment :: X11 Applications :: Qt +Classifier: Environment :: Win32 (MS Windows) +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL) +Classifier: License :: Other/Proprietary License +Classifier: Operating System :: MacOS :: MacOS X +Classifier: Operating System :: POSIX +Classifier: Operating System :: POSIX :: Linux +Classifier: Operating System :: Microsoft +Classifier: Operating System :: Microsoft :: Windows +Classifier: Programming Language :: C++ +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.7 +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.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Topic :: Database +Classifier: Topic :: Software Development +Classifier: Topic :: Software Development :: Code Generators +Classifier: Topic :: Software Development :: Libraries :: Application Frameworks +Classifier: Topic :: Software Development :: User Interfaces +Classifier: Topic :: Software Development :: Widget Sets +Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <3.11 +Description-Content-Type: text/markdown +License-File: LICENSE.COMMERCIAL +License-File: LICENSE.FDL +License-File: LICENSE.GPL2 +License-File: LICENSE.GPLv3 +License-File: LICENSE.GPLv3-EXCEPT +License-File: LICENSE.LGPLv3 +Requires-Dist: shiboken2 (==5.15.2.1) + +# PySide2 + +### Introduction + +PySide2 is the official Python module from the +[Qt for Python project](http://wiki.qt.io/Qt_for_Python), +which provides access to the complete Qt 5.12+ framework. + +The Qt for Python project is developed in the open, with all facilities you'd expect +from any modern OSS project such as all code in a git repository and an open +design process. We welcome any contribution conforming to the +[Qt Contribution Agreement](https://www.qt.io/contributionagreement/). + +### Installation + +Since the release of the [Technical Preview](https://blog.qt.io/blog/2018/06/13/qt-python-5-11-released/) +it is possible to install via `pip`, both from Qt's servers +and [PyPi](https://pypi.org/project/PySide2/): + + pip install PySide2 + +#### Dependencies + +PySide2 versions following 5.12 use a C++ parser based on +[Clang](http://clang.org/). The Clang library (C-bindings), version 6.0 or +higher is required for building. Prebuilt versions of it can be downloaded from +[download.qt.io](http://download.qt.io/development_releases/prebuilt/libclang/). + +After unpacking the archive, set the environment variable *LLVM_INSTALL_DIR* to +point to the folder containing the *include* and *lib* directories of Clang: + + 7z x .../libclang-release_60-linux-Rhel7.2-gcc5.3-x86_64-clazy.7z + export LLVM_INSTALL_DIR=$PWD/libclang + +On Windows: + + 7z x .../libclang-release_60-windows-vs2015_64-clazy.7z + SET LLVM_INSTALL_DIR=%CD%\libclang + +### Building from source + +For building PySide2 from scratch, please read about +[getting started](https://wiki.qt.io/Qt_for_Python/GettingStarted). +This process will include getting the code: + + git clone https://code.qt.io/pyside/pyside-setup + cd pyside-setup + git branch --track 5.12 origin/5.12 + git checkout 5.12 + +then install the dependencies, and following the instructions per platform. +A common build command will look like: + + python setup.py install --qmake= --parallel=8 --build-tests + +You can obtain more information about the options to build PySide +and Shiboken in [our wiki](https://wiki.qt.io/Qt_for_Python/). + +### Documentation and Bugs + +You can find more information about the PySide2 module API in the +[official Qt for Python documentation](https://doc.qt.io/qtforpython/). + +If you come across any issue, please file a bug report at our +[JIRA tracker](https://bugreports.qt.io/projects/PYSIDE) following +our [guidelines](https://wiki.qt.io/Qt_for_Python/Reporting_Bugs). + +### Community + +Check *#qt-pyside*, our official IRC channel on FreeNode, +or contact us via our [mailing list](http://lists.qt-project.org/mailman/listinfo/pyside). + +### Licensing + +PySide2 is available under both Open Source (LGPLv3/GPLv2) and commercial license. +Using PyPi is the recommended installation source, because the content of the wheels is valid for both cases. +For more information, refer to the [Qt Licensing page](https://www.qt.io/licensing/). + + diff --git a/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/RECORD b/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/RECORD new file mode 100644 index 0000000..e1983e4 --- /dev/null +++ b/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/RECORD @@ -0,0 +1,2816 @@ +../../Scripts/pyside2-designer.exe,sha256=IR6ndFxmcoJw-M4tBpUrEEXYJyjcrH1CiGoRglNydjc,108445 +../../Scripts/pyside2-lupdate.exe,sha256=D0b7MAOJOM-hcfQrFVJPN6gB7EdGd2IRqhwyXLElrpQ,108437 +../../Scripts/pyside2-rcc.exe,sha256=TZ9Qy3VLwqF5OmKMvZCJN-UEJXwYhlAHcOj9YATgnm4,108435 +../../Scripts/pyside2-uic.exe,sha256=2vFOtw64obf8ArukEzr__gFX3PVPZ9eQfOU883CDLmE,108435 +PySide2-5.15.2.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +PySide2-5.15.2.1.dist-info/LICENSE.COMMERCIAL,sha256=MkqpWilPuhb_pZlbxhFPpkziIHnbi6tTmzSS6tB9TRM,48214 +PySide2-5.15.2.1.dist-info/LICENSE.FDL,sha256=K41piWZ_2BHHYv62WXxh6YvvgnWMzuH_OnJ8Ikx3CrU,23411 +PySide2-5.15.2.1.dist-info/LICENSE.GPL2,sha256=GJsa-V1mEVHgVM6hDJGz11Tk3k0_7PsHTB-ylHb3Fns,18431 +PySide2-5.15.2.1.dist-info/LICENSE.GPLv3,sha256=d2z2sKpg2pR9UE-HA6zYdyTlFtsms1jT08KwHlLWSRQ,36327 +PySide2-5.15.2.1.dist-info/LICENSE.GPLv3-EXCEPT,sha256=xUS4_6mBQczP29L1IBySbnjRe3uUK56-q2eQxnNIbws,37067 +PySide2-5.15.2.1.dist-info/LICENSE.LGPLv3,sha256=czejRE6YKI5cJdQdikFm8C_lBGedzt7AMA_4HyVSu-8,8317 +PySide2-5.15.2.1.dist-info/METADATA,sha256=R-pzzL_NAtGR-9Scs704Wngp3oe6AnpR7_aBX3wlxIo,5096 +PySide2-5.15.2.1.dist-info/RECORD,, +PySide2-5.15.2.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +PySide2-5.15.2.1.dist-info/WHEEL,sha256=Nh8rXgFQFPJCQz77Msk0Td9P_zWHDWuQGjg0Dw9j9YI,131 +PySide2-5.15.2.1.dist-info/entry_points.txt,sha256=rfDGKJY95xE8ESkOVQxGBKC7qLFSqecmZoOrZmJZYm4,218 +PySide2-5.15.2.1.dist-info/top_level.txt,sha256=sAglSLFiKVEZNT5B4d5IjU7A2W6eTqTG9LgACXCVmHI,15 +PySide2/Qt3DAnimation.pyd,sha256=6NA7SWVnchZJ62aZXa08pRD4qhfh2JprtJ-hscOV_q8,270104 +PySide2/Qt3DAnimation.pyi,sha256=MQWz1mAGmUBMaoaAM2Vt4B9MtfHTXY_t7w_AeNvoHGQ,19084 +PySide2/Qt3DCore.pyd,sha256=Oau0rBoyICBgdJcpwsM3janaryvb_xcl7Q0uSrlkExQ,287000 +PySide2/Qt3DCore.pyi,sha256=O-_fYJElwYxoRMC-zLhVMB4zM0yjzkBvUQCLPBlsppE,22729 +PySide2/Qt3DExtras.pyd,sha256=zhHwqGTrfzvGbSQVhTQRodqf0anHFBXr746JuUUncMw,539928 +PySide2/Qt3DExtras.pyi,sha256=uOQPVDI3403zs6dAqikw6bsnC28fjaS3I95c8P_uMLA,37073 +PySide2/Qt3DInput.pyd,sha256=qh5gwS2gIpmAwcRrGQjYxmQej68TnLB5O590BOED8wE,263448 +PySide2/Qt3DInput.pyi,sha256=XLvnyYxPlpUAK9R-Hcr68lLhGapgm_jx4ZPUQVsQTG8,18032 +PySide2/Qt3DLogic.pyd,sha256=wPuzRGLNt7r17lH8fVi7kcZwmjIJ8-Z2o31KrSG9va0,58136 +PySide2/Qt3DLogic.pyi,sha256=lL2yBsF-ioBRPYzx6JjsRsVP0T1qqxChyh1RFiAbMw8,2915 +PySide2/Qt3DRender.pyd,sha256=Kyyxm8ERDUkBLNf-KBC9IEvm9zxOWKoVtSyZb0WMAlc,1317656 +PySide2/Qt3DRender.pyi,sha256=DKz68bo29y7d9FqoAnbmXOCnFcoytIjyMjwMsLfc2J0,159189 +PySide2/Qt53DAnimation.dll,sha256=PlutGaEwYamU9onyEblmPyyPt-yZBmOkI_WnXmF4aV4,410904 +PySide2/Qt53DCore.dll,sha256=2CipcciEw-yxa5P4w_cdWSZR-ZQJrfAbEoyHPlW5Hw8,419608 +PySide2/Qt53DExtras.dll,sha256=7TxsY4azwBitb1MQyfOFKpnpLzvVuub9m7yMVxUxYuk,671000 +PySide2/Qt53DInput.dll,sha256=xqfmB0AkQEMsmVh5TlCUdKLz3XwceGSZh4mXfFf4ayg,359704 +PySide2/Qt53DLogic.dll,sha256=7r9pOEW4fY-xrazFiwYv_tA0SDlnkcRay23L02kTvZs,56088 +PySide2/Qt53DQuick.dll,sha256=glYHQNPVgxqVeWGKD9pNz0om1zurA0Z3Sw7-ASbxGF8,172824 +PySide2/Qt53DQuickAnimation.dll,sha256=RleOmb7UGcPHKN5W22lA1ZBtXYfNF_0ertSxqR-6cNk,64280 +PySide2/Qt53DQuickExtras.dll,sha256=6WJl2CRpv3gVaPCK2SSBGagD_SqGHWFnYlrGvPYN4WU,83224 +PySide2/Qt53DQuickInput.dll,sha256=m2a1uCCj1rdP2qRhfAGO0rnYniGQfX3z5z9r8McZgqc,60696 +PySide2/Qt53DQuickRender.dll,sha256=qckttTqhq8GvTyvhWIBsr1dlWA7HNVmk93JQlx2SMG0,166680 +PySide2/Qt53DQuickScene2D.dll,sha256=eaj8v7Kx07pI2o8CZntW0V2w69p9yNGNW1s_E9clDvM,92440 +PySide2/Qt53DRender.dll,sha256=uSwRbYaxk3S--oS0H_NhTKvVfR0Ojjdmykg8Z3vsoVc,2244376 +PySide2/Qt5Bluetooth.dll,sha256=Xl1wJQZbTUI3Gx7TyiwKfrsxIokMDJ0-1e5wt2UkTrQ,552728 +PySide2/Qt5Bodymovin.dll,sha256=k3eNfUrOtHriJDQQkWsVP0Q-DazSJvcHrL8WtvQ10Hw,196376 +PySide2/Qt5Charts.dll,sha256=eN25J0FXggdmUQ062u2z10hTv8clv27PoY5eR-v91jw,1424152 +PySide2/Qt5Concurrent.dll,sha256=ZXHMsdljeU_9P_lKpkKtUW7EPPVaOzjL3U-VVLlEMa8,38168 +PySide2/Qt5Core.dll,sha256=Qg_rpR0pakQcJDsXzVqqmv2MjEu7ES0HggtXRb5eGSg,6028568 +PySide2/Qt5DBus.dll,sha256=RI8OJ4CbgEnuHQRfIwgANUF1IwjqwZf75xuhTpuAonM,441624 +PySide2/Qt5DataVisualization.dll,sha256=NpKMBsUjSDeAfLqmYKJLbkTdnkqoIy05N0MnIkxotVU,1071384 +PySide2/Qt5Designer.dll,sha256=KRol1zNlg0A_i7bO4j9LDMinU2lpMVHT8lldSfkBGPA,4492056 +PySide2/Qt5DesignerComponents.dll,sha256=88ospGZp0vwf2mVaG4i7-vpguLttFg40yRFWTppny54,1900824 +PySide2/Qt5Gamepad.dll,sha256=UF5d8_u4yWcV1npaCzcQdATAnnfRrweVTBUFWnusnoE,107288 +PySide2/Qt5Gui.dll,sha256=XZDmc3ZodceZzDq7njQfVC583mMHcDlNbBFNkcr_jMs,7013144 +PySide2/Qt5Help.dll,sha256=_8lwtgBuzRu3Qhmu4rUKrJClPKgvfEUALtavWEvQR5s,433432 +PySide2/Qt5Location.dll,sha256=sVVFt9-x93QvJZOCK8GcVKTuKZkpOuMQyjCLuypyWPw,1650456 +PySide2/Qt5Multimedia.dll,sha256=ob5j-cZFo5mWoS142VPz1zdb0wCiu19pt8i3aKo_aQw,751384 +PySide2/Qt5MultimediaQuick.dll,sha256=Ec7moQ14IMtYq0IA4Mkhp3t30dwXgEN7pkacgk7iuCM,128280 +PySide2/Qt5MultimediaWidgets.dll,sha256=EWVoeWZVX1EaJjN_BTauskWjG_wPziDlfWLLneU350k,107288 +PySide2/Qt5Network.dll,sha256=wNX898p0fpPcJlDRAsxszpA4Ph-0f_KUgG0J3cRrEN0,1345304 +PySide2/Qt5NetworkAuth.dll,sha256=WKazD-_E7hJIuIYOAWFw1Rzs7_aeBz0MKa8HaFFVEaI,163608 +PySide2/Qt5Nfc.dll,sha256=kllQA5-12shKAckdzO6GS5csURGh-LP7FDaz7iLO9X0,143128 +PySide2/Qt5OpenGL.dll,sha256=uhANAWWVNO5rxBy0f2mjly4WtUPCvtlGTxYJa3LFiR0,325912 +PySide2/Qt5Pdf.dll,sha256=_Z4Kvb_AYiO74TgtPUCXb-SjSYVMCc7r732yV77g3JA,4474136 +PySide2/Qt5PdfWidgets.dll,sha256=ctRBDQgfQWugyX3ql8zGIL21BF9mnR-2aPoP16RsJxE,55576 +PySide2/Qt5Positioning.dll,sha256=Ild21RP4QKATXk8Nxp_5GjNFtsDMbTgAzvXHRxMadDw,320792 +PySide2/Qt5PositioningQuick.dll,sha256=Y2dyjsrn9WJVyY-xFINanhNsAjKj4s9HnloVs1TiMqM,114456 +PySide2/Qt5PrintSupport.dll,sha256=AEY6mPNk_Lai5pCBj9wBhqenoBtXCZGFtMBtk0pDK48,322328 +PySide2/Qt5Purchasing.dll,sha256=ZlL7EqPm5yJ5ux_Szet6At0jA5F85X8aDHySCojKkso,49432 +PySide2/Qt5Qml.dll,sha256=c5OoVnJY77WIpZERkdNTe2woDZGfURSRZjZaSTLB2s4,3596568 +PySide2/Qt5QmlModels.dll,sha256=EETtMzhb4EtXq4eSPgEfOxPCaP8V9gcimcGziiWyVls,443672 +PySide2/Qt5QmlWorkerScript.dll,sha256=frfSmLuUhvoAkd_DB5ywvIh2e-5avA34MPXxRT6-raY,62232 +PySide2/Qt5Quick.dll,sha256=MqSW7YV8_AY8AJihHt3UCY6Ja3elTwNd7p3xjOuYVS0,4153624 +PySide2/Qt5Quick3D.dll,sha256=u4z6bVje-1PQ18CRxNfZ6S23Rru1vTQNydN2B3MLg-g,522520 +PySide2/Qt5Quick3DAssetImport.dll,sha256=XN_hUK-z9w-3dwtRDa6emgqVjhZamM_TF35ZEwR4h98,122136 +PySide2/Qt5Quick3DRender.dll,sha256=vs2gXkhH7ejeBjVqT9m39tQE7Op793eXAIFyOse6MhI,230680 +PySide2/Qt5Quick3DRuntimeRender.dll,sha256=GuKyq7Lgjb4NUBxhBVn9-qg-k-AT-n-4WoSD5YjX6Cw,1249048 +PySide2/Qt5Quick3DUtils.dll,sha256=tM-Ke_xxLEH-Rt9te8z1w81HerTgKhHK9ihDEN1uj8A,50968 +PySide2/Qt5QuickControls2.dll,sha256=37mA_W4eDZS7vn7zZeD5MZ8qvNXmZEXWaAhlBEFoFp0,178456 +PySide2/Qt5QuickParticles.dll,sha256=o2ZirQU7MGj4QnibvOs_0CqMj3UlshlBQRdytZ1sxNs,483608 +PySide2/Qt5QuickShapes.dll,sha256=hAPqf2vwYtXjA7yfUmv8qnof9ie7FyDcC1DVh_mYPhs,220440 +PySide2/Qt5QuickTemplates2.dll,sha256=l-oGXhwDP4HnfWP1GCwH8ea8IJj9X8M0zDXIJ4JsI-4,1118488 +PySide2/Qt5QuickTest.dll,sha256=7kYoaavy-Yhxug9JpkrQ-EP7tMtz9lt6JfkoDXMtI6Y,125720 +PySide2/Qt5QuickWidgets.dll,sha256=Dk9yPTvsIMqOxgBTsw6C-r9kSodnj5WrzsLZyoOrV3g,87320 +PySide2/Qt5RemoteObjects.dll,sha256=y1GzeFXNinNd_qG4ltWLPusZmfLhdzsafn22eANX1fs,482584 +PySide2/Qt5Script.dll,sha256=Qn5hX2NmzpR2MR-LlD5aewck4iWCU77Rb-M7Q5Dmc_U,1248024 +PySide2/Qt5ScriptTools.dll,sha256=BnpMNWl8ML9VFCMSFOV1qLOPvUFeHhPqZFnmseXlukg,574232 +PySide2/Qt5Scxml.dll,sha256=f3uRtrMN94r0tcLs6-_squYyX5XsfndnZGazN_A7qM8,385816 +PySide2/Qt5Sensors.dll,sha256=3c6WwKkimwUBPQ0MAT0PDWDBUs0u8VaHfpDpooaTGRc,210712 +PySide2/Qt5SerialBus.dll,sha256=FYUsj9bokXK1q1Bm7Txf7sUS-CNSc2j6sC_gjNvt950,217880 +PySide2/Qt5SerialPort.dll,sha256=NjxJbbAzyzbZuykXrS3IuI9qy0fb52DIxAMB25vzabU,80664 +PySide2/Qt5Sql.dll,sha256=6TnEOwhiXZ6yIPAwMZpSW_g2chA8EnqSJPQY8J-ZliE,213784 +PySide2/Qt5Svg.dll,sha256=ERLqORNRzCDNTzJB38ubivJtTKws14p7U-WTzx2spV4,335640 +PySide2/Qt5Test.dll,sha256=9aM703tBBhyO-IANzy4d3DlQrMyCGFCJc1YKMwIpXkw,250136 +PySide2/Qt5TextToSpeech.dll,sha256=QftSR-dzTBUqJKtTsDaWjVm2gZK7g2dlTCDYGuHg6ho,54552 +PySide2/Qt5VirtualKeyboard.dll,sha256=Bc5HHnAuhEqSCYqqiYNpjxmJdkpKqKdK2TJKDkK5Bs4,2100504 +PySide2/Qt5WebChannel.dll,sha256=aoQRFfCwJCUXGMwvP4P-RXXIxA-rJv0X2G1edR6eF4Q,139032 +PySide2/Qt5WebEngine.dll,sha256=giRmffq5rOEwAMl3Rde7BD--Jn3S1cWYvamMIm3TUSQ,385816 +PySide2/Qt5WebEngineCore.dll,sha256=F-1_2OzAH0BVLToQNJ7q8cFFvYeERdlV1UJ4dH5mM-Q,102014232 +PySide2/Qt5WebEngineWidgets.dll,sha256=a8ewSfTP6JxygTP-n2n0tGQDfkgrDdGdZ658iPUKEzM,255768 +PySide2/Qt5WebSockets.dll,sha256=RIkBo5ozMAAooG3y8Wzx6r0b0xQQuT7NGNL8sUtXC7s,154392 +PySide2/Qt5WebView.dll,sha256=vf1hNQCCx7W6HTXauGgjaadI6TxTMq74KI8I863l-uA,83224 +PySide2/Qt5Widgets.dll,sha256=K-SP1DB_EKYRqTScuu9Brw19vEnixFrxVea5IHz2RiI,5503256 +PySide2/Qt5WinExtras.dll,sha256=EO0lNwPs1MmiA2Nq_4zyndjNWDgN7C1KuSoEayn49xc,241944 +PySide2/Qt5Xml.dll,sha256=PJpFKTwCX54hc2OTvZYqIRDwLPJzziLTwsMaLTSf9gE,218392 +PySide2/Qt5XmlPatterns.dll,sha256=KltgefkTcZpPPfjL1-qmjQaaI9RDYNZfJZ22aXpn6SU,2648344 +PySide2/QtAxContainer.pyd,sha256=3wPl0enwLTUef2cPo0IXcvFWCRo8PdgOUijpZHAdO2Q,472344 +PySide2/QtAxContainer.pyi,sha256=llBVjkEVIivQ3Ll6PfchlhMYp48CmeZO47x3eD-aaKI,10782 +PySide2/QtCharts.pyd,sha256=l6sWODrc3t_ZqA69MSMknwbnzxa9G6l4MatXi0rb4-g,898328 +PySide2/QtCharts.pyi,sha256=8LukR4Y9W06eL_CRnSLKa52Hmpi2v_YLP_C17KLPhmg,73403 +PySide2/QtConcurrent.pyd,sha256=30D2gJIGRoBRckuKcpMOlTYXEYfioebTIeN2HR7PNHg,86808 +PySide2/QtConcurrent.pyi,sha256=9L3PBxUiuMWGqrAuF39owEtz5uXqkFKnqhu-B2vD-IQ,5889 +PySide2/QtCore.pyd,sha256=EcS4hZ0uH9G7MV7bIREmYsZ01zmZKrxUWvq4lNOEjO8,3460888 +PySide2/QtCore.pyi,sha256=VjnzwazdCWgfRNsPgB3qe64gOtrjXxRxAKl6LY6pPrs,637611 +PySide2/QtDataVisualization.pyd,sha256=CVbIp6MH75IRD9Cdm3KXhTyKaFWm7KPvSEZn849lz90,772376 +PySide2/QtDataVisualization.pyi,sha256=zVxo1jf23TlzSCc3zddwNccc4rjo6Dh1dmzbz6pACSc,81781 +PySide2/QtGui.pyd,sha256=vsh4hJy6HQ_Hnm0xPlso4dqbXKkDZzpmNHaPUt8zvE8,3824920 +PySide2/QtGui.pyi,sha256=StMGJHirfCgxIG95XpOd3bsG2yeeDM6leBHrXFvfcoo,622415 +PySide2/QtHelp.pyd,sha256=J4O-jgokJgZPYGcVYGhl8gG0iQzSdEfIQPF2wI-8A_U,258840 +PySide2/QtHelp.pyi,sha256=V6oXdwgkGKzSXmhNdLbFuPqHOSnWEFD5qvrLZg1nFfA,14628 +PySide2/QtLocation.pyd,sha256=3LcI1-OoE3sQoTdReStrnOJlbm2By-BbK3AC83Eow9E,539416 +PySide2/QtLocation.pyi,sha256=atUIPt_13GPzTNyzaYEK_MHajhi4FkL1EFB5iYRP-1M,57691 +PySide2/QtMultimedia.pyd,sha256=xsUVKngZSoGC0iqlFb7Yx39VbTTEmuGBK1vb4k3TxYs,1334552 +PySide2/QtMultimedia.pyi,sha256=qEK6h-4qZczqbEcq6PEor0_c9VclihcrCK3eIBXKNac,139700 +PySide2/QtMultimediaWidgets.pyd,sha256=PaTMmBKRXTHDY0s5Sq0W0j-2PNTdnmMhrV0p-noVTJQ,168216 +PySide2/QtMultimediaWidgets.pyi,sha256=xbi_AaPPZf_drI5W7C62DfG4v6nX8Cvsb_VDVM5dHZk,6696 +PySide2/QtNetwork.pyd,sha256=ziibOhlQaT0z5HpHFD3bFW5GiQfr06Kvij6AFuHswWM,953624 +PySide2/QtNetwork.pyi,sha256=MDXd_URyQA_C1NkZ10r-XShL530Ufs3Hr-wxyTfAbSo,131669 +PySide2/QtOpenGL.pyd,sha256=L-2Zr9PtxWOtAh2EPajccVsFACCu1dTYQ9h-zvWTeQY,340760 +PySide2/QtOpenGL.pyi,sha256=qOQfGP-eQeMiU9lXlxJmsIr0gtTEqP8400hsxs68D84,45890 +PySide2/QtOpenGLFunctions.pyd,sha256=sbDr-MSdS18xKm3RXYgz7kmJ_fcYzxTu2N1rJAaugQY,9623320 +PySide2/QtOpenGLFunctions.pyi,sha256=X_xkKrlNfqCqCLPa19RaMEaT7E3Jx_eIFxsdnIsV2aY,994017 +PySide2/QtPositioning.pyd,sha256=XeCx1xFpm8zh5oKRN2LPJR7l5BGkpFi03_Mee3B7ryw,301848 +PySide2/QtPositioning.pyi,sha256=wfR9lttEwnD2R4Xuqz9OavaKTsx2lG--1LpLChPffGw,31570 +PySide2/QtPrintSupport.pyd,sha256=345Hw97Y7V8gEiWF7AXalaTzOMD1itroKTqIDeekVFo,302360 +PySide2/QtPrintSupport.pyi,sha256=gkuz0_WlI7pcfcysRJrA8Xm6GUb_VRVYH_HmZUEUy9A,29465 +PySide2/QtQml.pyd,sha256=Jw3PbTWayf5kzyeGTSzmT6VQW7JeG80atQfNI_-CIZM,382232 +PySide2/QtQml.pyi,sha256=l_PNTvAK4Us2d0TVUVAaN-Gy_bB24ShB2jJ0epXoNs4,37145 +PySide2/QtQuick.pyd,sha256=0U7zknueuwwvdAlLXY4loKOaYNXzEgku5435-SsQJSc,594712 +PySide2/QtQuick.pyi,sha256=DOreU3JkGLeWNAKJRCuImqv82bsC4pxXww_hD8Jesrg,56723 +PySide2/QtQuickControls2.pyd,sha256=1tKoWLw1Vmwhk1J3CgpN23IJQXIauCQIve82yDwyRkY,42264 +PySide2/QtQuickControls2.pyi,sha256=NNq4eInkKQJsgd6hBddrihs4J1ybtKIWjSXU2qjKyd0,3029 +PySide2/QtQuickWidgets.pyd,sha256=e8xPQCO248zAqJwg0LSDdtFJaN-7xBBMxW5ANs9YYpo,96536 +PySide2/QtQuickWidgets.pyi,sha256=wsOSpxxMqhNjZYCQNU0FUvKM6lj82qG1Qz-E1HVTdYA,6541 +PySide2/QtRemoteObjects.pyd,sha256=l8uwIZwcA72y7meLTkBeH-h3-Lt6gwn572B4DFv6uj0,204568 +PySide2/QtRemoteObjects.pyi,sha256=zLgwv6iD5bI1WAJNfe-qv9hKTPln_rtce-rh9g1V5vs,14603 +PySide2/QtScript.pyd,sha256=wdu0DZoYMM2s8hY3UzNKpW3MS-yF5NDZvg-V7YE5Jgk,251160 +PySide2/QtScript.pyi,sha256=4IDTs01KyxQIGQpt3bTjqvxsjEdr6sTs3THzagX6skk,26924 +PySide2/QtScriptTools.pyd,sha256=C1Ntu_VlSERnQK3anstlJfDP3__rXyy31mQr7YvaIcc,62232 +PySide2/QtScriptTools.pyi,sha256=awQe6LxQUrkWyJGwtS9MxGt4YFE_j1wqjE37u26cVU0,7626 +PySide2/QtScxml.pyd,sha256=LxydBE34ibE4mRGCOOzIghau5kdbRrK-OWnbXlqoTeI,268056 +PySide2/QtScxml.pyi,sha256=nUBhhrLm-SCm-c6qHYogiSZbI0N3D0-L_neWgHeZYLU,16011 +PySide2/QtSensors.pyd,sha256=tQYPHtlgtOMiX0qmtBvRaY4ZqH_rLROaHwZWrLwbht4,546072 +PySide2/QtSensors.pyi,sha256=MwowIozHaXShjpDD6g1_cBbteXy8kwVPhDvrPJv3ARg,32921 +PySide2/QtSerialPort.pyd,sha256=7Ywg8rlaV0ukpI8usEmQIlctrU1Xa1PzUOft9g_lXJU,113944 +PySide2/QtSerialPort.pyi,sha256=2rCh2cphAQxgp3tnAM2smvtSbQ-ORtRESD83UzwrLLo,15178 +PySide2/QtSql.pyd,sha256=sOyPNiTMdQcwgYzWAh7Zhi66e2_unGn0TqKO1RJKp7s,437528 +PySide2/QtSql.pyi,sha256=Z-fjQ9TX62vG9aUIpMDyQ0Fv5HeVCVWwCFeriTNTifc,35798 +PySide2/QtSvg.pyd,sha256=OfZdEa-TJgCu5--D9rOhYT_yUYyAEC2ZaCUOZiVL6MY,141592 +PySide2/QtSvg.pyi,sha256=mNMeSUUqiBWqgxGUMiERyMvzwe_1Jq3k6Y-KLpxch8A,7664 +PySide2/QtTest.pyd,sha256=l_-HgoQ-slV7-TpF4mLW8yVEhxbM-1_FfDCtJEFII7M,133400 +PySide2/QtTest.pyi,sha256=f_yQdX5cj6CSbW5_liQ5koMB3mplM9BGs58mYY-laas,19975 +PySide2/QtTextToSpeech.pyd,sha256=TrPNpMfuKuut_24EXpwgQBh9SYX5XjJ60saSXAJyy8Y,100632 +PySide2/QtTextToSpeech.pyi,sha256=X2NO57FiweWHKFVoqelCYroHVWD3b6hvltHibGw9xBU,7057 +PySide2/QtUiTools.pyd,sha256=fbyQrImdqqgUe0SKv4D-pXjJYZjE5cx1Rb3m3VnQ9x8,566552 +PySide2/QtUiTools.pyi,sha256=5nAbnKQo_e84NAv4Is7YsxVgg7TdNOe7x4KJkTh3K5k,4354 +PySide2/QtWebChannel.pyd,sha256=8dWLciAtrbl10env_4H1kcaiAgwE3p_ni4kMTT_Knvs,65304 +PySide2/QtWebChannel.pyi,sha256=VecGIj8gNOhLgu7Ci-VaCPkknXTEMdtxehfqL76JaiA,3476 +PySide2/QtWebEngine.pyd,sha256=aachhX0X8IqkV-DxvkQeN8RBJQjsq1NCth5hZdJhlT8,36120 +PySide2/QtWebEngine.pyi,sha256=TIUU_7PUf7aFioByopifq2aw96Bov4xZZAsNfGo3t04,2609 +PySide2/QtWebEngineCore.pyd,sha256=I2Xu1b1-kWSSaC2peA9-Tf0md8iOpTQh1Yb1aYUDCV0,118552 +PySide2/QtWebEngineCore.pyi,sha256=O40_IeT7STsrZeZVeyzSFm22Db-50LfDAaSPGcxGMow,14878 +PySide2/QtWebEngineProcess.exe,sha256=1wpPHny6M_qIXm7dp6JuWFzJjAtvVnZXdSewL1ozwIQ,596248 +PySide2/QtWebEngineWidgets.pyd,sha256=7HiOvWDTL-s_5fPVmsnLcW1dUq2m91UFhxMbtwu1FH8,317720 +PySide2/QtWebEngineWidgets.pyi,sha256=J02gjzrcx_A0t-ncnqeZRWR8w5_4cjok7LJMJzeRDg8,56325 +PySide2/QtWebSockets.pyd,sha256=pl1vKfk0Bl1sIgHpL8kVptNTqHAQcOVGCU9g5P_AoB4,116504 +PySide2/QtWebSockets.pyi,sha256=oQYcUrfg6L2qzwwp6dwlqM5bdv1TA9ae_-b1nQAdBV8,11480 +PySide2/QtWidgets.pyd,sha256=osnIj7hIvrrPaIlXnidMcMLu6G3T8gnUXmVtkkjv9Sk,6293272 +PySide2/QtWidgets.pyi,sha256=3zn1i9-F8GdmI3NjBBqBy266tvtHaeB_rMtw8fkKS-M,620565 +PySide2/QtWinExtras.pyd,sha256=gfNSOxCCdelpvKbUVnJPCNYDPRA56yjayvIiph9kUUk,168728 +PySide2/QtWinExtras.pyi,sha256=5UXgiFyIOZF0mHozthd_CE2Xn-k8t6aWvFFSafuesGw,16254 +PySide2/QtXml.pyd,sha256=JZpnOcyZoGi3v5_Z9WjtyXQ-ReD0EAZ_Rb9B5xtnB3U,384280 +PySide2/QtXml.pyi,sha256=fL8zdM2F0LFmO0oBhF0umz0ZKvpGQFHmZOeSi8IBJfs,32393 +PySide2/QtXmlPatterns.pyd,sha256=gxCpTIzhczQ8WYTXO8s0xhGJhCPNO8aqeMLCbG7hh-g,218904 +PySide2/QtXmlPatterns.pyi,sha256=zcnsgFavv6fi8elz4dy1GaZXig-nRpZMoMc0W4dTxQM,20489 +PySide2/__init__.py,sha256=zWjk1HKChbgROhzAaiMd_N2-2qUFKez0tIIXvcLHY9g,4784 +PySide2/__pycache__/__init__.cpython-310.pyc,, +PySide2/__pycache__/_config.cpython-310.pyc,, +PySide2/__pycache__/_git_pyside_version.cpython-310.pyc,, +PySide2/_config.py,sha256=2h5clkbTtEly77s2b-v5TvUeKLqXzmtIu3zeCO09a9Q,740 +PySide2/_git_pyside_version.py,sha256=AsngNORt8CfNgKqW5vWCRiKwxhOlO3Io_f-EvbDvZg0,2517 +PySide2/concrt140.dll,sha256=2r2wcysvwUBAztu_02nZ6zx6LmazinmJLhwF5taoUm0,333592 +PySide2/d3dcompiler_47.dll,sha256=jIjBYgEKjWuA8sBDPUzpc85iavy8jaW-aL-iumg0Hro,4467904 +PySide2/designer.exe,sha256=7I_Qc4zFadifrP9xMKckCXhPUwbH2e0WwQwFkENsk-Y,567576 +PySide2/examples/3d/3d.pyproject,sha256=gV52-qSS-gl21-kn1kLUPqtR0kWGj1RiEMQ6GzVMxm4,36 +PySide2/examples/3d/__pycache__/simple3d.cpython-310.pyc,, +PySide2/examples/3d/simple3d.py,sha256=olWLdha1uMWZ25-xmvsQ2tK6rMbFrb8IR3SQZnqSN1c,6403 +PySide2/examples/axcontainer/__pycache__/axviewer.cpython-310.pyc,, +PySide2/examples/axcontainer/axcontainer.pyproject,sha256=TRIoNj0XRkqLPxyUDBRq1YcyyJ2fOO_t-ZzAy1A3QSU,36 +PySide2/examples/axcontainer/axviewer.py,sha256=UCqazFcby_hLp4rCgp8pkxjyD-UUg2VHDixBrgeQVvs,3571 +PySide2/examples/charts/__pycache__/audio.cpython-310.pyc,, +PySide2/examples/charts/__pycache__/callout.cpython-310.pyc,, +PySide2/examples/charts/__pycache__/donutbreakdown.cpython-310.pyc,, +PySide2/examples/charts/__pycache__/legend.cpython-310.pyc,, +PySide2/examples/charts/__pycache__/lineandbar.cpython-310.pyc,, +PySide2/examples/charts/__pycache__/linechart.cpython-310.pyc,, +PySide2/examples/charts/__pycache__/logvalueaxis.cpython-310.pyc,, +PySide2/examples/charts/__pycache__/memoryusage.cpython-310.pyc,, +PySide2/examples/charts/__pycache__/modeldata.cpython-310.pyc,, +PySide2/examples/charts/__pycache__/nesteddonuts.cpython-310.pyc,, +PySide2/examples/charts/__pycache__/percentbarchart.cpython-310.pyc,, +PySide2/examples/charts/__pycache__/piechart.cpython-310.pyc,, +PySide2/examples/charts/__pycache__/temperaturerecords.cpython-310.pyc,, +PySide2/examples/charts/audio.py,sha256=MGZjkDw8zbkDAjqsEHIfZ2SJeRKruY29O4nUVDN4fbM,5134 +PySide2/examples/charts/callout.py,sha256=GxIqi2Yv1jcmUmb7povJXPUuo0JsplE9n9teH1v_mdc,10147 +PySide2/examples/charts/charts.pyproject,sha256=aYjCm1KdnXeq14ykEdKRqJvPBV5vVXiFrhPg2zjGE5Q,278 +PySide2/examples/charts/chartthemes/README.md,sha256=oc0Jp5paWlmfuL3IKy-oVdDr6J_IjXDKio0C7LDwbQU,250 +PySide2/examples/charts/chartthemes/__pycache__/main.cpython-310.pyc,, +PySide2/examples/charts/chartthemes/__pycache__/ui_themewidget.cpython-310.pyc,, +PySide2/examples/charts/chartthemes/chartthemes.pyproject,sha256=S-kPISzM55HM6u8tFXdhd0mgmntn7RhN_zngnW0TxpI,63 +PySide2/examples/charts/chartthemes/main.py,sha256=WRaJ2uvOWxSj4c3ceAMiibipa9xCczEhFrWLZ9SGiI4,16012 +PySide2/examples/charts/chartthemes/themewidget.ui,sha256=u0wu9saoYr3BQ1pbdXt3RLq9TMGeZzeZiXKkSgqaT4s,2728 +PySide2/examples/charts/chartthemes/ui_themewidget.py,sha256=8fykSYw6MSZlkBTDBJ8x5nOr0YJ762MQlwUa801YlSA,3536 +PySide2/examples/charts/donutbreakdown.py,sha256=Rl5ZsKs01ZDFLLkPXgGdxIkiWQzWxJCM_l6xeQiVR8w,7212 +PySide2/examples/charts/legend.py,sha256=dwV-efDZzuglgR_ltsIqyG8lgThya6JlgtPvQVQt1Gw,9796 +PySide2/examples/charts/lineandbar.py,sha256=J_RhX6QAdyWJvV_b1tW08WOgu9naUrtmWaZHtS8M8o0,4609 +PySide2/examples/charts/linechart.py,sha256=JnqiHnoDUrGKVI1Vp8T2CWN1Y1WCfxN2Y12_2LPvOsA,3343 +PySide2/examples/charts/logvalueaxis.py,sha256=HPe-6kH5Z0yEUydqo2OzoWjK44fa16d5fS1SAbMhDdo,3702 +PySide2/examples/charts/memoryusage.py,sha256=21WEBUBwS92rR8kJE6qUjFcIQSJGoBPfAlkVscVQExg,5141 +PySide2/examples/charts/modeldata.py,sha256=NxJtjG1PUc2KeleBZ0zL_BzwBUpFeGcsQNNH23UOfIM,6982 +PySide2/examples/charts/nesteddonuts.py,sha256=zGot7oBFyJqgN7RoM0iB5N0hAGntIyBLKbLHMgCUJZo,5307 +PySide2/examples/charts/percentbarchart.py,sha256=CXFWCdlFCx08is9Je4dxZch9nF12-D1hEjATy7U5wTE,3785 +PySide2/examples/charts/piechart.py,sha256=qXpeSPuA0b7UwGVtiDHzquE6fM-CzG9Vmrk5gDxocoo,3322 +PySide2/examples/charts/qmlpolarchart/View1.qml,sha256=OgdKhP_0TQ25tATP8hpYQs87e_96tWLSGGnB_zpoBls,2439 +PySide2/examples/charts/qmlpolarchart/View2.qml,sha256=CzMLzRaTIFatJR3eEUaxbpiZi0G9zxeoVUV7TP9WogI,4204 +PySide2/examples/charts/qmlpolarchart/View3.qml,sha256=n-t_cKCs3NlicGZiDGE777Vfk06lA3ARJte72MVa69Q,2872 +PySide2/examples/charts/qmlpolarchart/__pycache__/qmlpolarchart.cpython-310.pyc,, +PySide2/examples/charts/qmlpolarchart/main.qml,sha256=pnMxfet0_5goVHcBwrwFhi6JOnKnylSIzp7FHAyGilc,2892 +PySide2/examples/charts/qmlpolarchart/qmlpolarchart.py,sha256=zVJHMpC-Of_5DzwI7ZzjT0FD7o0YCkh-F6HGjCldcWs,2723 +PySide2/examples/charts/qmlpolarchart/qmlpolarchart.pyproject,sha256=JL1fYmeDXu9M13UqhKDlpmXQ2tI7s9ho_3Z6U_Sa_Mw,105 +PySide2/examples/charts/temperaturerecords.py,sha256=CLHYNXWQWnD70TVkH0lOgRw0d4mdh38IXKYR7zRzndI,3902 +PySide2/examples/corelib/threads/__pycache__/mandelbrot.cpython-310.pyc,, +PySide2/examples/corelib/threads/mandelbrot.py,sha256=uf-l4SZBg4YS9Iebaoox_EVZy6BCfQHRlGm4kC_aOkk,12621 +PySide2/examples/corelib/threads/threads.pyproject,sha256=NEkViYX2auhfUaXd6b5z0zHTDhOiZY47lnHVTzvnkuc,38 +PySide2/examples/corelib/tools/__pycache__/regexp.cpython-310.pyc,, +PySide2/examples/corelib/tools/codecs/__pycache__/codecs.cpython-310.pyc,, +PySide2/examples/corelib/tools/codecs/codecs.py,sha256=_OdvFdSAeem2aMRDd_CwY13FFPeHJG3iaZBOG208Qt4,9196 +PySide2/examples/corelib/tools/codecs/codecs.pyproject,sha256=k8Zycf_gCxzyqXPGO_Xa6NCwf4pG61ylQXbooJ9DibA,34 +PySide2/examples/corelib/tools/regexp.py,sha256=dYxGyzjqxFrnRFrig1r6saPq7KXIm0u4HEgxJxWgNAw,8314 +PySide2/examples/corelib/tools/settingseditor/__pycache__/settingseditor.cpython-310.pyc,, +PySide2/examples/corelib/tools/settingseditor/settingseditor.py,sha256=ozzGS4W-e6IpocsbmYbp4EELPlyPq2m-DOku-LHKRnQ,30600 +PySide2/examples/corelib/tools/settingseditor/settingseditor.pyproject,sha256=eFVoQVIAjgxif0GfU4XEJl0OpRuU5mt0OPIJOeVmnI8,42 +PySide2/examples/corelib/tools/tools.pyproject,sha256=sjO3hYm90a9SnHwRZ_Cn--EuglSymxJLcbIXoBIqBeQ,34 +PySide2/examples/datavisualization/__pycache__/bars3d.cpython-310.pyc,, +PySide2/examples/datavisualization/bars3d.py,sha256=VDGMlaKbjdQW-XwjObfLODo-xSy19cR98ZG4Vd82ywY,4542 +PySide2/examples/datavisualization/datavisualization.pyproject,sha256=Rg6oJ6Vm5dC7wEk4qFxkdmsGLHwiArTeNJBOkAgETo0,34 +PySide2/examples/declarative/__pycache__/scrolling.cpython-310.pyc,, +PySide2/examples/declarative/__pycache__/usingmodel.cpython-310.pyc,, +PySide2/examples/declarative/declarative.pyproject,sha256=sdcWLG0LKElvMqsrRBj3ECerSgePWFNwex5ba_R6DSk,66 +PySide2/examples/declarative/extending/chapter1-basics/__pycache__/basics.cpython-310.pyc,, +PySide2/examples/declarative/extending/chapter1-basics/app.qml,sha256=qaNnUwXTOeAjsP8tAIavnhG13sXC_7emjcmkBOUX_bw,2481 +PySide2/examples/declarative/extending/chapter1-basics/basics.py,sha256=dC8jGYJW0G8Vr3KAsDjZfbDfAmt7_vGEEHNK4YnUxTM,3908 +PySide2/examples/declarative/extending/chapter1-basics/chapter1-basics.pyproject,sha256=UeizRO4wOJi3Mxm5oxVYTD-akVZYxJczd5W_dcwPLXw,45 +PySide2/examples/declarative/extending/chapter2-methods/__pycache__/methods.cpython-310.pyc,, +PySide2/examples/declarative/extending/chapter2-methods/app.qml,sha256=IymCuyMy8rXSanvP8vPasjxBo6ny8ZGYUQGZHemJT-g,2634 +PySide2/examples/declarative/extending/chapter2-methods/chapter2-methods.pyproject,sha256=M_LAVQxk0KJTgrVzQPH6_UZdivabqP8c8kp03h6i7Oc,46 +PySide2/examples/declarative/extending/chapter2-methods/methods.py,sha256=xU1vBuSiYHNnM-V82_0emyk_I_pqak0QItl1kJMCTMU,4079 +PySide2/examples/declarative/extending/chapter3-bindings/__pycache__/bindings.cpython-310.pyc,, +PySide2/examples/declarative/extending/chapter3-bindings/app.qml,sha256=CramrudCOz-lbD1ypYnjUJ2xPlnZHGDF8WQ3O_K10bA,2760 +PySide2/examples/declarative/extending/chapter3-bindings/bindings.py,sha256=3CJ4ejoVmTGHv2K1QZwgKXvqJggXHzb0jSt9la-vHeI,4266 +PySide2/examples/declarative/extending/chapter3-bindings/chapter3-bindings.pyproject,sha256=Nib1ikgxmnLrGUunANHKgvMNZ22Mft3X8a1Ebs0mlg4,47 +PySide2/examples/declarative/extending/chapter4-customPropertyTypes/__pycache__/customPropertyTypes.cpython-310.pyc,, +PySide2/examples/declarative/extending/chapter4-customPropertyTypes/app.qml,sha256=oWTXwv1YuKOQwSqL6DnltiUag79Rw-SVEyXZlZlD8gs,2407 +PySide2/examples/declarative/extending/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pyproject,sha256=nOsUp3-zrRcLk82W9QZrxc01jJ-4EWOPFzEe7MO996k,58 +PySide2/examples/declarative/extending/chapter4-customPropertyTypes/customPropertyTypes.py,sha256=KD4QUnx5z4JECIAtPQ4DWEL_bOYtZG5E7t-QVFKZmL4,4355 +PySide2/examples/declarative/extending/chapter5-listproperties/__pycache__/listproperties.cpython-310.pyc,, +PySide2/examples/declarative/extending/chapter5-listproperties/app.qml,sha256=k_B_NkoWY3piJu0OyqmKQK4iX2nJ8m53jvJGjZPwLvQ,2696 +PySide2/examples/declarative/extending/chapter5-listproperties/chapter5-listproperties.pyproject,sha256=r49bdc6ex-LlJuxJZ7YwHzQZRwPpsAxAxtqLxn8kTLY,53 +PySide2/examples/declarative/extending/chapter5-listproperties/listproperties.py,sha256=AhsJ8ssLQscMXgXy9P6V_8S85dc9C9ifE6QTwIlgO0s,4748 +PySide2/examples/declarative/scrolling.py,sha256=P_nmFoGUpU-qFeBCn47GDuMtGTCBRcYtUZhTN9O8yX0,2928 +PySide2/examples/declarative/signals/pytoqml1/__pycache__/main.cpython-310.pyc,, +PySide2/examples/declarative/signals/pytoqml1/main.py,sha256=2ZiP_Y1HoaErfy3AR9qJ4ppqBMkm-cI0lvO7w1asGiM,2838 +PySide2/examples/declarative/signals/pytoqml1/pytoqml1.pyproject,sha256=33ktCMdRpNgA5qeQSs6mBjV7FZPfxtRxaH0PRCKiWow,44 +PySide2/examples/declarative/signals/pytoqml1/view.qml,sha256=tGBqOXqOTN0ewTVe_euoUmSVeJg9DqKvk4vvBjr7kKA,2657 +PySide2/examples/declarative/signals/qmltopy1/__pycache__/main.cpython-310.pyc,, +PySide2/examples/declarative/signals/qmltopy1/main.py,sha256=S3C0LdPwHwIabXtuNeFmwPW8lgizSsoJbr6rvGOm29Q,3180 +PySide2/examples/declarative/signals/qmltopy1/qmltopy1.pyproject,sha256=33ktCMdRpNgA5qeQSs6mBjV7FZPfxtRxaH0PRCKiWow,44 +PySide2/examples/declarative/signals/qmltopy1/view.qml,sha256=ZUoRfesi65TeN3nP4eQNVzaHGAssnDqSCKwqOXNKLYQ,3192 +PySide2/examples/declarative/signals/qmltopy2/__pycache__/main.cpython-310.pyc,, +PySide2/examples/declarative/signals/qmltopy2/main.py,sha256=6Opu6tUpArDjsDQ3ZMCSuouMGzFchcm6n-TtHG8A_ug,3172 +PySide2/examples/declarative/signals/qmltopy2/qmltopy2.pyproject,sha256=33ktCMdRpNgA5qeQSs6mBjV7FZPfxtRxaH0PRCKiWow,44 +PySide2/examples/declarative/signals/qmltopy2/view.qml,sha256=nRDNxrcWbpKHv_zSrTFBRIt1rRV4CWI-Vyj2c84rwkQ,2967 +PySide2/examples/declarative/signals/qmltopy3/__pycache__/main.cpython-310.pyc,, +PySide2/examples/declarative/signals/qmltopy3/main.py,sha256=e5VICaErRI8iUaQMm-ScBIqzGmvJiVMCAGAxLdoKJMo,2904 +PySide2/examples/declarative/signals/qmltopy3/qmltopy3.pyproject,sha256=33ktCMdRpNgA5qeQSs6mBjV7FZPfxtRxaH0PRCKiWow,44 +PySide2/examples/declarative/signals/qmltopy3/view.qml,sha256=NVezUEkhlP9M4s8sBrNLVhHiZLSd6PHjZHBubdTAkC8,3625 +PySide2/examples/declarative/signals/qmltopy4/__pycache__/main.cpython-310.pyc,, +PySide2/examples/declarative/signals/qmltopy4/main.py,sha256=Emig2YOdle_DDgH64G2J_v1cMrIGaIyy0VtvJFd8cfY,2924 +PySide2/examples/declarative/signals/qmltopy4/qmltopy4.pyproject,sha256=33ktCMdRpNgA5qeQSs6mBjV7FZPfxtRxaH0PRCKiWow,44 +PySide2/examples/declarative/signals/qmltopy4/view.qml,sha256=4YKQCQbyvURj1MZ99j9To_cGxnWCz05-HnnaUVQvIUA,2714 +PySide2/examples/declarative/textproperties/__pycache__/main.cpython-310.pyc,, +PySide2/examples/declarative/textproperties/main.py,sha256=DcEJnohfV9whbXH1Zeb3Vnq1x6XFHGh2Q-StrpXDjgw,3841 +PySide2/examples/declarative/textproperties/textproperties.pyproject,sha256=33ktCMdRpNgA5qeQSs6mBjV7FZPfxtRxaH0PRCKiWow,44 +PySide2/examples/declarative/textproperties/view.qml,sha256=1GxyFoAEuog7K3Yd6HNsQSFxdeG13H2uQ2LzlJgQTOc,6993 +PySide2/examples/declarative/usingmodel.py,sha256=6w15QaoOZMVMJ-NjW2knWfO6wj2LkOM-ezYTPBQVPmc,3797 +PySide2/examples/declarative/view.qml,sha256=ahW7Kubck4WN_JCVyJF2Th_Mc_9Uo54IZ6o6sPVD_S4,2594 +PySide2/examples/examples.pyproject,sha256=r9f26h_SQ33-1-03FNBgjzuy8Dz4Xh6qUtW8GJd1ejs,5399 +PySide2/examples/external/matplotlib/__pycache__/widget_3dplot.cpython-310.pyc,, +PySide2/examples/external/matplotlib/requirements.txt,sha256=vu97BW6BFLkg6XxnhwDcim6b7-krXhIPXBq5DRlWdAE,12 +PySide2/examples/external/matplotlib/widget_3dplot.py,sha256=Q9k3fKJelKsMzAS8XG7J9V1Es_kPYG5NMwZdulj-cjw,9601 +PySide2/examples/external/opencv/__pycache__/webcam_pattern_detection.cpython-310.pyc,, +PySide2/examples/external/opencv/requirements.txt,sha256=JuL543OmQdrL1LX5066CtjOgbNjBDT2z5fbjC5UZT20,15 +PySide2/examples/external/opencv/webcam_pattern_detection.py,sha256=dzV7D6PFTHK_IeSRZMd6hIuUkOyqMdW2zGQYpjrJqL0,7691 +PySide2/examples/external/scikit/__pycache__/staining_colors_separation.cpython-310.pyc,, +PySide2/examples/external/scikit/requirements.txt,sha256=FtJZEOgZuoDzkv7WUoO3r8wQG58TXJavOzpauqiF_8g,14 +PySide2/examples/external/scikit/staining_colors_separation.py,sha256=L6rX9e6PX7MXjt0Wo910FYArxR_EpUn5fnQwWbVa5qs,7406 +PySide2/examples/installer_test/__pycache__/hello.cpython-310.pyc,, +PySide2/examples/installer_test/hello.py,sha256=FFh8qlEh24AncyxrQVtslXHJz4YnYSS8PsHz50IQJ-I,3991 +PySide2/examples/installer_test/hello_app.spec,sha256=YsboCkWAxICoqDvoF5YyNqbKNXwbvReQeHKlEnqlLew,3895 +PySide2/examples/macextras/__pycache__/macpasteboardmime.cpython-310.pyc,, +PySide2/examples/macextras/macextras.pyproject,sha256=pbRV5iloWbOvPXZnv82DpsO-818D_K85HnLcpZ8gL0s,45 +PySide2/examples/macextras/macpasteboardmime.py,sha256=kRVGc9nUxcZmoaNuolOGPXBQSFn0zd32N8LQ7aW9kDY,4663 +PySide2/examples/multimedia/__pycache__/audiooutput.cpython-310.pyc,, +PySide2/examples/multimedia/__pycache__/camera.cpython-310.pyc,, +PySide2/examples/multimedia/__pycache__/player.cpython-310.pyc,, +PySide2/examples/multimedia/audiooutput.py,sha256=zD8oNAO4elartJN7Xiv22XOgkEY85EbE18rT3n0Wuhk,11307 +PySide2/examples/multimedia/camera.py,sha256=5LTKbzjtlLCQ29qEqhTasJfwvnrtV78A3qXadAMQocU,7335 +PySide2/examples/multimedia/multimedia.pyproject,sha256=-hiZ7wdXavu2xv6QI1ozB47b4UFBMRUTlONDrIdiMug,65 +PySide2/examples/multimedia/player.py,sha256=KDG2k7bnEgK39JlGAxTKBBdHGuKZWC0MOeYuG1vH-xk,7124 +PySide2/examples/multimedia/shutter.svg,sha256=HXvMhQSXDDRAkRBuyQs4sxBbHMj1wT4F95F1P1jnnNo,1491 +PySide2/examples/network/__pycache__/blockingfortuneclient.cpython-310.pyc,, +PySide2/examples/network/__pycache__/fortuneclient.cpython-310.pyc,, +PySide2/examples/network/__pycache__/fortuneserver.cpython-310.pyc,, +PySide2/examples/network/__pycache__/threadedfortuneserver.cpython-310.pyc,, +PySide2/examples/network/blockingfortuneclient.py,sha256=BadLBpqi2LJbgMsb0DZm_fJaV_tTfWDauKvBA5IvGgg,8577 +PySide2/examples/network/fortuneclient.py,sha256=vpmE5RDiwq6ntVWEY3p7LeTJ8FJV84rOUw94chiUxkQ,6776 +PySide2/examples/network/fortuneserver.py,sha256=z-jJGP-jNMefonIx7hF6kXgkQu8kAfhcfiZc09cqIxM,4693 +PySide2/examples/network/network.pyproject,sha256=2a2gT9qgd-nce0GZRdsHqzp07DEvMwdCMoqVIjE3T3Y,132 +PySide2/examples/network/threadedfortuneserver.py,sha256=rfYGQQa8_ui-ifbFjQiLW7-9aUELl_CuE03LIJzpL7g,5764 +PySide2/examples/opengl/2dpainting.py,sha256=ZG1OERQr6EGgjit7zXzBojyhEwN3DMz-4E4ji_s4lXU,6175 +PySide2/examples/opengl/__pycache__/2dpainting.cpython-310.pyc,, +PySide2/examples/opengl/__pycache__/contextinfo.cpython-310.pyc,, +PySide2/examples/opengl/__pycache__/grabber.cpython-310.pyc,, +PySide2/examples/opengl/__pycache__/hellogl.cpython-310.pyc,, +PySide2/examples/opengl/__pycache__/hellogl2.cpython-310.pyc,, +PySide2/examples/opengl/__pycache__/overpainting.cpython-310.pyc,, +PySide2/examples/opengl/__pycache__/samplebuffers.cpython-310.pyc,, +PySide2/examples/opengl/contextinfo.py,sha256=_ONeq0oHNeO4dguai_nS10AJqqy3GIIY6dJ6nL-brWs,11573 +PySide2/examples/opengl/grabber.py,sha256=v4w5JNATBkcUGXMLYiBucqG05yKEIiyVC3S6LBywaQ4,15618 +PySide2/examples/opengl/hellogl.py,sha256=uUWSUhIgFphi8RWhmb0lY65H55i6lz7DcXNQLgmK25E,9986 +PySide2/examples/opengl/hellogl2.py,sha256=dkihoGQ0Ftyl0phaqbOqkZgHHjrZ5_6cVnlBOZB3tPo,17124 +PySide2/examples/opengl/opengl.pyproject,sha256=ESRdXjVNOf13Ivuamoyht38VbZm1LUnW1Es-c1KxCgE,168 +PySide2/examples/opengl/overpainting.py,sha256=221OS9pAzdaeEpx_MAhrU4usA1V4c4ZfAW8gNjn2cBc,13821 +PySide2/examples/opengl/samplebuffers.py,sha256=JcJa3SlVdHDNIHmgkAZxErk7YLeH1Y9REHp3V4Z80-4,6760 +PySide2/examples/opengl/textures/__pycache__/textures.cpython-310.pyc,, +PySide2/examples/opengl/textures/__pycache__/textures_rc.cpython-310.pyc,, +PySide2/examples/opengl/textures/images/side1.png,sha256=8X6HJy8wBzMsIo7htHmEhrwDmh1tAhmdFuoWxTvloHM,1044 +PySide2/examples/opengl/textures/images/side2.png,sha256=RkzsgIEArO7Cq7-jB2nxxFUeck-LGhTOCNiFlDW-1vI,1768 +PySide2/examples/opengl/textures/images/side3.png,sha256=4JTF_rnFvqzAc9BtJIkkIktxgynsH_d2LUoE-CiSTwM,2323 +PySide2/examples/opengl/textures/images/side4.png,sha256=_NwUUQgRfGt_ougpu2YhRanweEjL8ka-xXZf67hJv8c,1342 +PySide2/examples/opengl/textures/images/side5.png,sha256=V4ccxX1Pgmj7nOoMuhHBlH2vYWVrLwEOKzHc_22FHpA,1959 +PySide2/examples/opengl/textures/images/side6.png,sha256=fohRWmI778Fhs70Q-JbFoM-VllT874WHqW2z0dBeOsQ,2446 +PySide2/examples/opengl/textures/textures.py,sha256=NGNKH5OimN8sVwHXzH3txgx7mUZCHPzJm2RsGX_Pelw,8414 +PySide2/examples/opengl/textures/textures.pyproject,sha256=rcQMl0JY8BoLC9xrQI5jjZAackP7ceGRU-m312tPYAs,70 +PySide2/examples/opengl/textures/textures.qrc,sha256=DCbDCYTr9gUKi7uZroEr9pC_8WKzYgiKxMJaKiyOJuo,280 +PySide2/examples/opengl/textures/textures_rc.py,sha256=ogT1j550_VkJx84vKkC_UlUAwvCPt7ZERcHGl5WFWJU,38039 +PySide2/examples/quick/customitems/painteditem/__pycache__/painteditem.cpython-310.pyc,, +PySide2/examples/quick/customitems/painteditem/main.qml,sha256=aipF-VYTyHyYFbfFLtlZPzAZfm11wZPXvDgz82yFWkI,3925 +PySide2/examples/quick/customitems/painteditem/painteditem.py,sha256=fcwxeVFTmtpzmJcEjBPbH_DU27Y8wP9ICUBGNiiMmLk,4023 +PySide2/examples/quick/customitems/painteditem/painteditem.pyproject,sha256=RO-QnXCbCMJ5lA4CSt_sqmYawfTFrMyPJNYfeZMFkrU,58 +PySide2/examples/remoteobjects/modelview/__pycache__/modelviewclient.cpython-310.pyc,, +PySide2/examples/remoteobjects/modelview/__pycache__/modelviewserver.cpython-310.pyc,, +PySide2/examples/remoteobjects/modelview/modelview.pyproject,sha256=qDfToIhIprgOop3w5XnN_Lydvmq1yfwAEwqWQDUPRQg,65 +PySide2/examples/remoteobjects/modelview/modelviewclient.py,sha256=cnR9PpUa6vT2oVjLG07YUMBHwCjBYFC1aIlbeW9PTsE,2653 +PySide2/examples/remoteobjects/modelview/modelviewserver.py,sha256=9b-TABPJWKpDuNYfRoEuLxoud-qpPnPUftFEP7YExa4,5638 +PySide2/examples/samplebinding/CMakeLists.txt,sha256=yE-G4e01xf-qNxmphVQvxRqdQ1Cb57AlXK50kGqCZnE,10745 +PySide2/examples/samplebinding/README.md,sha256=sLceTMqVpfU6mDS7YEnUSrjj0f6hrgvti3hztS21_1U,8239 +PySide2/examples/samplebinding/__pycache__/main.cpython-310.pyc,, +PySide2/examples/samplebinding/bindings.h,sha256=L0WOS3IoshxczIEJAD2rBfg39CooXL1P831F7QI4o1U,2628 +PySide2/examples/samplebinding/bindings.xml,sha256=cn58auIR8hTFhbCJ6Irc4DSI8Hht7L6tnjX9YQZLV0I,3677 +PySide2/examples/samplebinding/icecream.cpp,sha256=LEQZBFZl0YbQdNRlauSu9fgArVDkqA4hEMi-kwU3bgQ,2782 +PySide2/examples/samplebinding/icecream.h,sha256=quXnEjgWul0VBJlOka40go-b2myZLrRrwM94CZlJJ0A,2859 +PySide2/examples/samplebinding/macros.h,sha256=yV5F92OJreqkOmytCrYGYQCxmvc01txZx7Ib__EAPfA,3049 +PySide2/examples/samplebinding/main.py,sha256=awd1bPff_MzbVZp3b6HJK6pd0taR_BZtfONCGm7K4N8,3970 +PySide2/examples/samplebinding/truck.cpp,sha256=n7Go1gN0q7grH6kD--TtcHWl8kUprEUuB79lz57vcbI,4479 +PySide2/examples/samplebinding/truck.h,sha256=ymiynHqKa9_Jtr-D2QY1hMVkyUQmz5EGTvN3KAFY0zA,3336 +PySide2/examples/script/README.md,sha256=r0JLRj35qzGbfW8x4ZJ1JefqfQyu2DYgiRiWEpNoAv0,346 +PySide2/examples/script/__pycache__/helloscript.cpython-310.pyc,, +PySide2/examples/script/helloscript.py,sha256=8et80cx1HXpGDfg_5YLs_6sSNBBlay_lH9EL-cVAYOA,2536 +PySide2/examples/script/script.pyproject,sha256=BUeUSA12i1fsbWpIHODYNF8WCq_Lm5Wuk7WFbPAZjV8,52 +PySide2/examples/scriptableapplication/CMakeLists.txt,sha256=mo1H9XSEwZJq2jsxtSpJm8eFu3M_5fuwhO5vYJ2bzoc,9776 +PySide2/examples/scriptableapplication/README.md,sha256=97404JA-uEDyNAL_RIBdtd-3ZEcaQQ2bfiQF8yr7wEs,6319 +PySide2/examples/scriptableapplication/main.cpp,sha256=hzAg1gxXie4bcf23QaWB15tuVUMn19ouFhIulHzd834,2907 +PySide2/examples/scriptableapplication/mainwindow.cpp,sha256=Mv5UyvKtIzyRsZ21eswA5WOTBXTiWu_-Yumpd8bG7lk,5947 +PySide2/examples/scriptableapplication/mainwindow.h,sha256=5crHc2VM6QZoxkKqmJkZC0oy10BXIrv_4Z0Ey70eBfc,2941 +PySide2/examples/scriptableapplication/pyside2.pri,sha256=s8XrNaqTpctXr73baQT_OceMwgZ2gRn7Cg-bRmSXu6Y,2666 +PySide2/examples/scriptableapplication/pythonutils.cpp,sha256=_dCwhF5uFv2KD3g242zCuH8kF1Sz3E0zG-28g8J-114,6554 +PySide2/examples/scriptableapplication/pythonutils.h,sha256=WamXuyHBTvC1cat0tYpn0UhMB5ei9p0SESlolGLLU3Y,3045 +PySide2/examples/scriptableapplication/scriptableapplication.pro,sha256=7JsiN7cfzN7vkZY49pauKJCWPiFZdPRsdKU3G8DnOyg,3461 +PySide2/examples/scriptableapplication/scriptableapplication.xml,sha256=w7s6-2yz0lvpsc-ZnORlKiMUaf93HLIGOe4Xm9tHrw0,2703 +PySide2/examples/scriptableapplication/wrappedclasses.h,sha256=oa2QFIp_kd1RnzR90MlsMGl_-0ZJn4_A54-OKbWFWZY,2628 +PySide2/examples/sql/books/__pycache__/bookdelegate.cpython-310.pyc,, +PySide2/examples/sql/books/__pycache__/bookwindow.cpython-310.pyc,, +PySide2/examples/sql/books/__pycache__/createdb.cpython-310.pyc,, +PySide2/examples/sql/books/__pycache__/main.cpython-310.pyc,, +PySide2/examples/sql/books/__pycache__/rc_books.cpython-310.pyc,, +PySide2/examples/sql/books/__pycache__/ui_bookwindow.cpython-310.pyc,, +PySide2/examples/sql/books/bookdelegate.py,sha256=kwd2M_p6XSpas1HQweqAzGC1FsZui7gozYQXw79A0bU,5818 +PySide2/examples/sql/books/books.pyproject,sha256=FosX4lKL_IKWSzsxvPAK2o0jMOJjxPeTPGJu9cqkqmg,162 +PySide2/examples/sql/books/books.qrc,sha256=DICR9VIzyX2ZZIRGG4v8SitK52uY7RdmS1lyuiVvm-c,102 +PySide2/examples/sql/books/bookwindow.py,sha256=oc8hm3PHP2WuYL5m4E9Y6Pyjg9jZhKujgZEPSWHV-fk,6250 +PySide2/examples/sql/books/bookwindow.ui,sha256=BlkJS6sUMFxtqTMFZkefHURLstUcG-t6cxb9GFJrgx4,4873 +PySide2/examples/sql/books/createdb.py,sha256=1hvGAOH1i6527rmQuJJj5F_vgwXaSrEyrDkFpaUze8A,5131 +PySide2/examples/sql/books/images/star.png,sha256=ROGjdbsNQPjyPe6BXtdHtbhLEy4rwOsDcoWxbqQkEnE,782 +PySide2/examples/sql/books/main.py,sha256=XeAtRvaPJwGv0UDvLfz8AgK5Vh4y2IHHdAYW8DvJ5S4,2282 +PySide2/examples/sql/books/rc_books.py,sha256=WM9audx8R2Bunsr46vJoxmhWJpT8y9Ic_zfI-2eUIqk,3507 +PySide2/examples/sql/books/ui_bookwindow.py,sha256=FT1ktri-aznUd3dHsnjKsc8AafbZExEXIoEpS6Lllzg,5389 +PySide2/examples/texttospeech/__pycache__/texttospeech.cpython-310.pyc,, +PySide2/examples/texttospeech/texttospeech.py,sha256=AvrVeSmkQfR9A3W2LmwINGq8m1t7dvlnRW0vfRQXvw8,4486 +PySide2/examples/texttospeech/texttospeech.pyproject,sha256=lmF7YmPzE5TJR5mdoyxjifVVPW5epAFETmgj7XJfZlw,40 +PySide2/examples/tutorial/__pycache__/t1.cpython-310.pyc,, +PySide2/examples/tutorial/__pycache__/t10.cpython-310.pyc,, +PySide2/examples/tutorial/__pycache__/t11.cpython-310.pyc,, +PySide2/examples/tutorial/__pycache__/t12.cpython-310.pyc,, +PySide2/examples/tutorial/__pycache__/t13.cpython-310.pyc,, +PySide2/examples/tutorial/__pycache__/t14.cpython-310.pyc,, +PySide2/examples/tutorial/__pycache__/t2.cpython-310.pyc,, +PySide2/examples/tutorial/__pycache__/t3.cpython-310.pyc,, +PySide2/examples/tutorial/__pycache__/t4.cpython-310.pyc,, +PySide2/examples/tutorial/__pycache__/t5.cpython-310.pyc,, +PySide2/examples/tutorial/__pycache__/t6.cpython-310.pyc,, +PySide2/examples/tutorial/__pycache__/t7.cpython-310.pyc,, +PySide2/examples/tutorial/__pycache__/t8.cpython-310.pyc,, +PySide2/examples/tutorial/__pycache__/t9.cpython-310.pyc,, +PySide2/examples/tutorial/t1.py,sha256=FKq2BEwAOE2vCodTxn6uV6bEDhr3uoFZUVeL5dNsqLI,2238 +PySide2/examples/tutorial/t10.py,sha256=iCdL3BTmoA0_79RHUu2yT0ayPE94rgr02RuoOms0LGc,6656 +PySide2/examples/tutorial/t11.py,sha256=r4F9fEMFZ7fr3kmDcgnv9toNr2a9bfyrYSKkus8tE5I,8981 +PySide2/examples/tutorial/t12.py,sha256=2ysGZI3F-B8iSsjF1Tl7YtUrYwHJVOZnxMOMusTDQ4I,10528 +PySide2/examples/tutorial/t13.py,sha256=YMFkuHqsuzIutr_zgaLpgZqMettHnSn4MdGqkTN0eNk,13463 +PySide2/examples/tutorial/t14.py,sha256=a2dYCiBN_GoM_8jkc0aAGp0ODwuxlPA3A4pkfknTxQA,15508 +PySide2/examples/tutorial/t2.py,sha256=NLqika1TIMJ8Vw5BHWMJ7GRsTT85hA3wIvkUcvI52yY,2409 +PySide2/examples/tutorial/t3.py,sha256=CwZWNrrZFOi0X_K0_mF1YJZybEIOlcxIpP87GPd0d_4,2488 +PySide2/examples/tutorial/t4.py,sha256=Ifze6WVxkFCNHlVCwq-QfIgYMqtmYDlAAmSMMzgY7zQ,2657 +PySide2/examples/tutorial/t5.py,sha256=B8PubHJdubLgeWiOM8O8VmLCyXIyz2fjmymCOy9Cjkk,3006 +PySide2/examples/tutorial/t6.py,sha256=NCSmcOHQDs_KZ3CnxG_xh0y9pIqN20F5lE4yetZCT00,3406 +PySide2/examples/tutorial/t7.py,sha256=qDLl9bmYEIZKe0MH0cScyp3H_PgOoGVHGaoOKumz2Tk,4055 +PySide2/examples/tutorial/t8.py,sha256=DOeqkzQvLJ6_KCjDyxLdR7Q3PWbg2lL48bC6PRlDp_w,5432 +PySide2/examples/tutorial/t9.py,sha256=rY1oof6DW4woMbe7VeP5Hon_wJ4pd2qvUk_YDYXj7kc,5670 +PySide2/examples/tutorial/tutorial.pyproject,sha256=KIXTbL8iLgLyxMUAU36ntPIon4kW-PPXurgTdpIvmVc,182 +PySide2/examples/uiloader/__pycache__/uiloader.cpython-310.pyc,, +PySide2/examples/uiloader/uiloader.py,sha256=djB7KQQa9u99hHEL-9LkxX-k-VgGpG-hH7deRqRLWkM,3056 +PySide2/examples/utils/__pycache__/pyside2_config.cpython-310.pyc,, +PySide2/examples/utils/__pycache__/utils.cpython-310.pyc,, +PySide2/examples/utils/pyside2_config.py,sha256=XHvVE4gGll7dvSQctIDsvB3D_YxPR2A_zYozg9Pw00w,13407 +PySide2/examples/utils/utils.py,sha256=AMCh1bxfDHewz4iGOG_yi4evpSLjgEyOED0rcBLZf8E,2124 +PySide2/examples/webchannel/standalone/__pycache__/core.cpython-310.pyc,, +PySide2/examples/webchannel/standalone/__pycache__/dialog.cpython-310.pyc,, +PySide2/examples/webchannel/standalone/__pycache__/main.cpython-310.pyc,, +PySide2/examples/webchannel/standalone/__pycache__/ui_dialog.cpython-310.pyc,, +PySide2/examples/webchannel/standalone/__pycache__/websocketclientwrapper.cpython-310.pyc,, +PySide2/examples/webchannel/standalone/__pycache__/websockettransport.cpython-310.pyc,, +PySide2/examples/webchannel/standalone/core.py,sha256=KpfWcPdFBqWM0-GPHbZuaS6fc1cZzXqxL2UWTTMMB6M,2771 +PySide2/examples/webchannel/standalone/dialog.py,sha256=-DaQqBltGCq3dHM2hx2xfZUfQk3OxqgBV2-7_XLMkXo,2874 +PySide2/examples/webchannel/standalone/dialog.ui,sha256=b0l47T2BVQuKpOMEtDUte6hW21wQuGNHMbeYn3dTS6E,1238 +PySide2/examples/webchannel/standalone/index.html,sha256=sp57WAA3w2fV2qaxIGyQ2xfHgiIvEkx3_8qHIRufupA,3063 +PySide2/examples/webchannel/standalone/main.py,sha256=x40yJsbxoMSRAQdWbtuYv6GuAevZjtrAprHx2LzN29c,4066 +PySide2/examples/webchannel/standalone/standalone.pyproject,sha256=4xX9Qkh_hJIqSIofGDDxzme1kqtniU6y5nGAmi7uf1s,152 +PySide2/examples/webchannel/standalone/ui_dialog.py,sha256=HSU9jOg8iTWsZI0IOij19nQDziciPF_ZOMYgcwNmBjE,2020 +PySide2/examples/webchannel/standalone/websocketclientwrapper.py,sha256=f93Qb84eGXRblzYNI3mzADBHTbbBFAr-SjJoABL_WLQ,3440 +PySide2/examples/webchannel/standalone/websockettransport.py,sha256=rC1BDcLPduJSsNTZ_rP-wv3dxZ0-VfTAKo7PupGpjEA,4174 +PySide2/examples/webenginequick/__pycache__/quicknanobrowser.cpython-310.pyc,, +PySide2/examples/webenginequick/browser.qml,sha256=AsFuoYcK7-WETIaEkJkjg-F3gJV0E6mH1e5u8ZpyFt0,2241 +PySide2/examples/webenginequick/quicknanobrowser.py,sha256=OsfxjbfYJ6NHuojWzcgoA87AsXjvVTts62VePLdzd7U,2575 +PySide2/examples/webenginequick/webenginequick.pyproject,sha256=D9tYlL-YUSNQEm6350B8AXW20fsy34rctp11ppM85Bc,59 +PySide2/examples/webenginewidgets/__pycache__/simplebrowser.cpython-310.pyc,, +PySide2/examples/webenginewidgets/simplebrowser.py,sha256=aD4i88R9HOgoPWOWxsLB7gNE-v4303z2rGCQaSjK_QM,4325 +PySide2/examples/webenginewidgets/tabbedbrowser/__pycache__/bookmarkwidget.cpython-310.pyc,, +PySide2/examples/webenginewidgets/tabbedbrowser/__pycache__/browsertabwidget.cpython-310.pyc,, +PySide2/examples/webenginewidgets/tabbedbrowser/__pycache__/downloadwidget.cpython-310.pyc,, +PySide2/examples/webenginewidgets/tabbedbrowser/__pycache__/findtoolbar.cpython-310.pyc,, +PySide2/examples/webenginewidgets/tabbedbrowser/__pycache__/historywindow.cpython-310.pyc,, +PySide2/examples/webenginewidgets/tabbedbrowser/__pycache__/main.cpython-310.pyc,, +PySide2/examples/webenginewidgets/tabbedbrowser/__pycache__/webengineview.cpython-310.pyc,, +PySide2/examples/webenginewidgets/tabbedbrowser/bookmarkwidget.py,sha256=UZm9q6LgKMvx63TQveVjNd629snE04PVybOsX8NnhQ8,11331 +PySide2/examples/webenginewidgets/tabbedbrowser/browsertabwidget.py,sha256=WfwoUansQWMuJTJj-GSPVzzpUa-AQNTWUDJQFPRwUpY,10277 +PySide2/examples/webenginewidgets/tabbedbrowser/downloadwidget.py,sha256=807Lew2evDYdG4G2rOThuRAmmLPsfX_-1EqwITbhU1g,6606 +PySide2/examples/webenginewidgets/tabbedbrowser/findtoolbar.py,sha256=4l9GhMIjHSmMa9wj80ClU2A5rAy7DT-vwFpJNXxDDxU,4263 +PySide2/examples/webenginewidgets/tabbedbrowser/historywindow.py,sha256=Ud4ncrxcJrRsz4lTy5vDH-DRVs5QcJvg4968CKaiiUY,3912 +PySide2/examples/webenginewidgets/tabbedbrowser/main.py,sha256=LTyMxv9QH6GTdnL5gLCeyV_O5gpDd--O1pbiBveyZkU,16768 +PySide2/examples/webenginewidgets/tabbedbrowser/tabbedbrowser.pyproject,sha256=B41Vx0acERbaoi_1Rhb6utXTxg4Zwkrti63SyN06BEU,185 +PySide2/examples/webenginewidgets/tabbedbrowser/webengineview.py,sha256=wsgeS_Tbz_9u93NDnVCT4eLaTU54zxBaKkZXKaeH4h8,3766 +PySide2/examples/webenginewidgets/webenginewidgets.pyproject,sha256=mZV8g0ZGJ4cRtabnqDISR7oq4IbMi89gJiPi5hnoZe0,41 +PySide2/examples/widgetbinding/CMakeLists.txt,sha256=1urvR5Sb40fjDHwRK6i6mzFQE8J15ZVPycMI-_y0GRY,12928 +PySide2/examples/widgetbinding/README.md,sha256=vGLcFzfAHBharb6PLLClPCtflk5smHLfUs4KAxbeZYU,2515 +PySide2/examples/widgetbinding/__pycache__/dialog.cpython-310.pyc,, +PySide2/examples/widgetbinding/__pycache__/main.cpython-310.pyc,, +PySide2/examples/widgetbinding/__pycache__/wigglywidget.cpython-310.pyc,, +PySide2/examples/widgetbinding/bindings.h,sha256=1TNKePLg5gso1iVUriAHCB8y-Wp-oGK0sONSbFlJncg,2608 +PySide2/examples/widgetbinding/bindings.xml,sha256=X7dxSVsqwxhpm6C7wZXKEzutCQgcC03asryayelsajA,2722 +PySide2/examples/widgetbinding/dialog.py,sha256=SiYxt_dZhNkQ0_srBOjRtJBfB4I9j_CPRleZx4W1GiA,3409 +PySide2/examples/widgetbinding/macros.h,sha256=VgwhvO56tRNfUPw8_LWfyEvXDHIPHnqKC4e7tD8-U54,2806 +PySide2/examples/widgetbinding/main.py,sha256=lFCk5S9EG8oiCmqolP4vD8C_3aMbcB9OE0TM8ncsSto,2719 +PySide2/examples/widgetbinding/wigglywidget.cpp,sha256=OWk1VreSI_ByXLSUcGNNYDjeiOJs0TZgQdHkV4AGFvE,3991 +PySide2/examples/widgetbinding/wigglywidget.h,sha256=iFD6mLLOmUxypWLXI_XXfb444NzgVyODJ0xc9ZZuNE0,3045 +PySide2/examples/widgetbinding/wigglywidget.py,sha256=x0mAjWWFJdGHXV7JjaeXpzcxjq5En6jMxLMnB_fSDcQ,4145 +PySide2/examples/widgets/animation/animatedtiles/__pycache__/animatedtiles.cpython-310.pyc,, +PySide2/examples/widgets/animation/animatedtiles/__pycache__/animatedtiles_rc.cpython-310.pyc,, +PySide2/examples/widgets/animation/animatedtiles/animatedtiles.py,sha256=P_wurFeQebIFx04Za2Kja5aGVTLOn2vRc_M16BydFQQ,9022 +PySide2/examples/widgets/animation/animatedtiles/animatedtiles.pyproject,sha256=XfRjh8mFLQjXlx4U8R_NR4JYZE-FcNa2KojX-BnzO7Y,100 +PySide2/examples/widgets/animation/animatedtiles/animatedtiles.qrc,sha256=KjxYmlJ4-Uwg7CrKArprjp4qdlXTmiY9G9rr78LO5TY,335 +PySide2/examples/widgets/animation/animatedtiles/animatedtiles_rc.py,sha256=sq7ZWO1-rF6w2mrT9ccmCplFNO17AB48HkxMRncYXZg,299507 +PySide2/examples/widgets/animation/animatedtiles/images/Time-For-Lunch-2.jpg,sha256=xYOixwLywejYW-2NAa2Df6wY7k5D87hSIBfifcmx1OE,32471 +PySide2/examples/widgets/animation/animatedtiles/images/centered.png,sha256=0uxf1ekaJyM-SJ_vC2YfHB_0Td57DkrLPGkFNdRw0hI,892 +PySide2/examples/widgets/animation/animatedtiles/images/ellipse.png,sha256=ymqUm8e85pW47HsUARjBUfU_jgh5A6zpE9DRGqUk6NM,10767 +PySide2/examples/widgets/animation/animatedtiles/images/figure8.png,sha256=ky3rq7NyZtm8712lFwPo9eTX1hXWYw6uBqVvIONghJU,14050 +PySide2/examples/widgets/animation/animatedtiles/images/kinetic.png,sha256=BB5chhd-pRTdthWCfV4lYu7vONektJoIBM7ojalBA8s,6776 +PySide2/examples/widgets/animation/animatedtiles/images/random.png,sha256=uNrcXiOrsH0_BYgTWXbcW6jdmfWGWyQiLacnx4bycc8,14969 +PySide2/examples/widgets/animation/animatedtiles/images/tile.png,sha256=9X8Z_An5JYy906f3r17QHvXbxuliUIHnt87UrZqVUDM,16337 +PySide2/examples/widgets/animation/appchooser/__pycache__/appchooser.cpython-310.pyc,, +PySide2/examples/widgets/animation/appchooser/__pycache__/appchooser_rc.cpython-310.pyc,, +PySide2/examples/widgets/animation/appchooser/accessories-dictionary.png,sha256=pk9NLY6pJSmFIpp3b90PVvCHCeUFNZy10WPdszE03pw,5396 +PySide2/examples/widgets/animation/appchooser/akregator.png,sha256=NPpPvM5Fv6nHzZkh1YfHPs_Chh7iK5nKGuJbdZeyjao,4873 +PySide2/examples/widgets/animation/appchooser/appchooser.py,sha256=auZiU-yq8FgLNz9-24c4S3Xs9jen-Em_1Bagi3vhyqk,4802 +PySide2/examples/widgets/animation/appchooser/appchooser.pyproject,sha256=Gal5JhIe34kDKb25Q3SEMI85roWG5tXmI9is7oo_5vI,76 +PySide2/examples/widgets/animation/appchooser/appchooser.qrc,sha256=DvGnod3ZubUSoajvG5awSLHgW1F7G4C2PyZ38squacE,203 +PySide2/examples/widgets/animation/appchooser/appchooser_rc.py,sha256=HHnNRLRTLF8Xo0C7g7GAwBrOhbdfeWEa8BgnuvBs23U,69831 +PySide2/examples/widgets/animation/appchooser/digikam.png,sha256=klT3PjkSuDruAsX91W_uQxH-E85TM9c1sXrYQGJZwpI,3334 +PySide2/examples/widgets/animation/appchooser/k3b.png,sha256=TmScruMf5utplw68PgSpOl57NNEAkDK-A7s89vLXO2I,8220 +PySide2/examples/widgets/animation/easing/__pycache__/easing.cpython-310.pyc,, +PySide2/examples/widgets/animation/easing/__pycache__/easing_rc.cpython-310.pyc,, +PySide2/examples/widgets/animation/easing/__pycache__/ui_form.cpython-310.pyc,, +PySide2/examples/widgets/animation/easing/easing.py,sha256=ELWkg6Mj-Y54i5OvTF9Jlt0fHD9pjPaOoLtAeTf6ZKU,10300 +PySide2/examples/widgets/animation/easing/easing.pyproject,sha256=U5dt2hmhbnzHnuWsOD1VSP2GVmF7uj-KsqnMWbjSLP8,104 +PySide2/examples/widgets/animation/easing/easing.qrc,sha256=uEX_PxU6ZVSzMv_uK4_-7T39k2DYYQJWO5RkqQ4ic5g,109 +PySide2/examples/widgets/animation/easing/easing_rc.py,sha256=SbHSEIUQUpfgK9FSOMDkYqcxL4OGmdCWhL0JVL_niJw,17855 +PySide2/examples/widgets/animation/easing/form.ui,sha256=U82A9atjc5perVcJu86kPpTXt4xbTg_pGk6-Nt_uhS8,6210 +PySide2/examples/widgets/animation/easing/images/qt-logo.png,sha256=JknoBV6eiAordgXZN5UXOL5tNcVo1BcjpF4JzzvlYF8,5149 +PySide2/examples/widgets/animation/easing/ui_form.py,sha256=MeGxIeEAlB-8Rmw5JKqwO46BAY7_fM04M-RUHmTYhXs,6854 +PySide2/examples/widgets/animation/states/__pycache__/states.cpython-310.pyc,, +PySide2/examples/widgets/animation/states/__pycache__/states_rc.cpython-310.pyc,, +PySide2/examples/widgets/animation/states/states.py,sha256=ZHolbcyGkf0wJfElduq79c7bMHgUDxPJprGJagA8oIs,12851 +PySide2/examples/widgets/animation/states/states.pyproject,sha256=m-odG7eSU17OYrZIoGNSN1_kt5RrYn2o5nsTaHm636U,50 +PySide2/examples/widgets/animation/states/states_rc.py,sha256=pc3wvTBn5ewGkxR7s44Wc7VhRy28OalKP_7vIVgxy8k,145191 +PySide2/examples/widgets/codeeditor/__pycache__/codeeditor.cpython-310.pyc,, +PySide2/examples/widgets/codeeditor/__pycache__/main.cpython-310.pyc,, +PySide2/examples/widgets/codeeditor/codeeditor.py,sha256=nCq-OVrjVjA_7YyDxKn6CVtCtjmRBB-JfMqRE6qLyyE,5614 +PySide2/examples/widgets/codeeditor/main.py,sha256=iC-OYI7MlQC-Ui3GaKiWtNXnjR0LeNJ-ugL8VrN9KmY,2347 +PySide2/examples/widgets/dialogs/__pycache__/extension.cpython-310.pyc,, +PySide2/examples/widgets/dialogs/__pycache__/findfiles.cpython-310.pyc,, +PySide2/examples/widgets/dialogs/__pycache__/standarddialogs.cpython-310.pyc,, +PySide2/examples/widgets/dialogs/__pycache__/trivialwizard.cpython-310.pyc,, +PySide2/examples/widgets/dialogs/classwizard/__pycache__/classwizard.cpython-310.pyc,, +PySide2/examples/widgets/dialogs/classwizard/__pycache__/classwizard_rc.cpython-310.pyc,, +PySide2/examples/widgets/dialogs/classwizard/classwizard.py,sha256=ELeOROacgiR4XkrMtaBK3KLvCAMqmMFunq16ZmnzAds,16341 +PySide2/examples/widgets/dialogs/classwizard/classwizard.pyproject,sha256=CxIOv_SfCc1RItC6T2V3E7O0iaxdnUOAbrcmqW26rCY,116 +PySide2/examples/widgets/dialogs/classwizard/classwizard.qrc,sha256=EJwaecYIzLvQ7_asc3w6NmCFVhXYSDdWmTC5NzM_OiQ,331 +PySide2/examples/widgets/dialogs/classwizard/classwizard_rc.py,sha256=E_2VHbhBATvFIZBgv8FTQRdF5MBCPgCzri3H6-N1sF4,193412 +PySide2/examples/widgets/dialogs/classwizard/images/background.png,sha256=X9T5zZ5bXzSj5oU6mrDccj3U7ucFIW4_1KRuiIGQ3KA,22578 +PySide2/examples/widgets/dialogs/classwizard/images/banner.png,sha256=L50iksEX1Awqfzl6X1Kar-a5Z8CZ7ztB3sIBm0zESF4,3947 +PySide2/examples/widgets/dialogs/classwizard/images/logo1.png,sha256=dsOjZuPDlsq00Hny5U2t-uETfffVvR91B9RFiXz173Y,1619 +PySide2/examples/widgets/dialogs/classwizard/images/logo2.png,sha256=thyF3PSLK_kpFjSZeh5lCnpIaIC-azG0vm2xnPDWE78,1619 +PySide2/examples/widgets/dialogs/classwizard/images/logo3.png,sha256=MZIIG4ejQrS_ikBY-hpQTOVrB03u-fd5i15or0ZiMGE,1619 +PySide2/examples/widgets/dialogs/classwizard/images/watermark1.png,sha256=-ngEHTPxT5MntxRdbS5lH-gbzTh2s-ZKoEFYDmdbJx0,14516 +PySide2/examples/widgets/dialogs/classwizard/images/watermark2.png,sha256=oI11N_yTyM4DLSVt3uJY1RJUpt5WuDGU502dWxsDKl4,14912 +PySide2/examples/widgets/dialogs/dialogs.pyproject,sha256=dZ03ixMI1juwZVc1JLwt16xtMIF4zlrMYJaBd0LM-LQ,110 +PySide2/examples/widgets/dialogs/extension.py,sha256=yH6sjqxacrFNIlGkhZHal0Y1TJt2BqHT_Zkve1nDjGk,4587 +PySide2/examples/widgets/dialogs/findfiles.py,sha256=tzV-wHYlFmbA9tj6LVx1voTswJJP6MB2GspWBECdzjk,8350 +PySide2/examples/widgets/dialogs/standarddialogs.py,sha256=xC9aYXiUbB0u4DnNIGQqFUXqPzzD4AZAB-DTDavYcAY,14671 +PySide2/examples/widgets/dialogs/trivialwizard.py,sha256=7vuk-AmOx2zIT5yGcEM_TORADzVnIeW2BwjRVJnHlv4,3824 +PySide2/examples/widgets/draganddrop/draggabletext/__pycache__/draggabletext.cpython-310.pyc,, +PySide2/examples/widgets/draganddrop/draggabletext/__pycache__/draggabletext_rc.cpython-310.pyc,, +PySide2/examples/widgets/draganddrop/draggabletext/draggabletext.py,sha256=qzeHO7_8dBMYd4fZzu9bHKug-TTz9-ZXe7uAG8VVkCI,5525 +PySide2/examples/widgets/draganddrop/draggabletext/draggabletext.pyproject,sha256=VxpHEppr3WboF_km-cPBG6LfPl9FpeZ4PsYBvJ9wC5g,113 +PySide2/examples/widgets/draganddrop/draggabletext/draggabletext.qrc,sha256=5AH1E8y8nTafZgdGb23TqZWy5ttGoo8ZSm2qXeh-Who,118 +PySide2/examples/widgets/draganddrop/draggabletext/draggabletext_rc.py,sha256=5jiDJ7pYex4DjjMWV4cl_yP8NGGcln2j5ZXMw7g6Jb0,1604 +PySide2/examples/widgets/draganddrop/draggabletext/words.txt,sha256=sTVbVOj9_IbEeiI37jwehbDJcDGD5cX9fRtD6c6r6m4,288 +PySide2/examples/widgets/effects/__pycache__/lighting.cpython-310.pyc,, +PySide2/examples/widgets/effects/effects.pyproject,sha256=jyGgSzxL8nffKa-Pv_-CEOReA95qINOGp_OPulaLkSw,36 +PySide2/examples/widgets/effects/lighting.py,sha256=o-MQxdtiXATW3TpAuZ_8n5C11Ns7KU5TUdoPqwSvJMM,5319 +PySide2/examples/widgets/gallery/__pycache__/main.cpython-310.pyc,, +PySide2/examples/widgets/gallery/__pycache__/widgetgallery.cpython-310.pyc,, +PySide2/examples/widgets/gallery/gallery.pyproject,sha256=6daHdndyAVsyvfSKevdbBA7NMNHoWx9b6M3_FMGLark,52 +PySide2/examples/widgets/gallery/main.py,sha256=MCXAFVIJrWQ8F2iclnmqHfgTOgjlQ0LrwuCAD1Vfo1M,2484 +PySide2/examples/widgets/gallery/widgetgallery.py,sha256=2Aqomzr83IxUyUBlBDg-wze0mvehUPjI1K-6QzQpDSs,16656 +PySide2/examples/widgets/graphicsview/__pycache__/anchorlayout.cpython-310.pyc,, +PySide2/examples/widgets/graphicsview/__pycache__/elasticnodes.cpython-310.pyc,, +PySide2/examples/widgets/graphicsview/anchorlayout.py,sha256=GfO1RcwPdFFTbNxjBL-a7-Susm1XHyT7jfk_ds_edmM,5136 +PySide2/examples/widgets/graphicsview/collidingmice/__pycache__/collidingmice.cpython-310.pyc,, +PySide2/examples/widgets/graphicsview/collidingmice/__pycache__/mice_rc.cpython-310.pyc,, +PySide2/examples/widgets/graphicsview/collidingmice/collidingmice.py,sha256=KPeU4JXNjeDoZYzIC5PexVfDx-aqbPb-H9ZIyJA0lCE,8361 +PySide2/examples/widgets/graphicsview/collidingmice/collidingmice.pyproject,sha256=0L6XCwpQB1eTcbCXIvchO-ZHpDwk6jtUgRhQ0S11MKo,55 +PySide2/examples/widgets/graphicsview/collidingmice/mice_rc.py,sha256=f67gVQ7y-Jk-KqEhc9WZz2Xilhnf6XiSLrPM1YKztQM,15740 +PySide2/examples/widgets/graphicsview/diagramscene/__pycache__/diagramscene.cpython-310.pyc,, +PySide2/examples/widgets/graphicsview/diagramscene/__pycache__/diagramscene_rc.cpython-310.pyc,, +PySide2/examples/widgets/graphicsview/diagramscene/diagramscene.py,sha256=LPk-7myn7LiK9BYE_dJr_5WLrBEfe4PbQ89M5vm7tAU,32966 +PySide2/examples/widgets/graphicsview/diagramscene/diagramscene.pyproject,sha256=uUUrGtpQslt18U8LcQ74viapni-lZC9dhhVf7-SNacg,82 +PySide2/examples/widgets/graphicsview/diagramscene/diagramscene.qrc,sha256=t6sF1XPvDW0z1AoyZcdmjxKOYQ3gO5Wp3RVzdvysKdk,658 +PySide2/examples/widgets/graphicsview/diagramscene/diagramscene_rc.py,sha256=9fxuxwAy86eKSM1DtFxtp3UWU8dFfszpg_uikOu2DWw,16680 +PySide2/examples/widgets/graphicsview/diagramscene/images/background1.png,sha256=AzADEtR1XyS460eQcDhLwkTEu8H1rD42pgDgG99K2Lc,112 +PySide2/examples/widgets/graphicsview/diagramscene/images/background2.png,sha256=2jB91YPIf0h_0gAIoxy9b6MUMlDkQad5HflkPM5qVQI,114 +PySide2/examples/widgets/graphicsview/diagramscene/images/background3.png,sha256=nQkykGc-UjLcA2FXB5UcqfHEdFT9ygXfZQX59ne7-5I,116 +PySide2/examples/widgets/graphicsview/diagramscene/images/background4.png,sha256=LBSnUK-5SDMK-9m5e4hMGCtiX2tSF6hXqz_1I6CkeHc,96 +PySide2/examples/widgets/graphicsview/diagramscene/images/bold.png,sha256=NsCyKcwR4bx2YMq-5mVzVHOnBi7ozQVl1lHiC0nBqeA,274 +PySide2/examples/widgets/graphicsview/diagramscene/images/bringtofront.png,sha256=T3GU4njOMEKrWX2RVM70QQeFZyqHY7ppLBaSAO2pt1Y,293 +PySide2/examples/widgets/graphicsview/diagramscene/images/delete.png,sha256=ou-3ycnGFgboKEFYg0xC7o395ER4C062J27AlIJi5X4,831 +PySide2/examples/widgets/graphicsview/diagramscene/images/floodfill.png,sha256=UO70ibpA95t2lfQT_ahIhLIEw__EHk36imZcp9k8uEA,282 +PySide2/examples/widgets/graphicsview/diagramscene/images/italic.png,sha256=hAnWi5XDZ1I0X5qQ9tHcr-XIQZ9ygIbbcyJrnMW2_b0,247 +PySide2/examples/widgets/graphicsview/diagramscene/images/linecolor.png,sha256=2Lx44hVAuBjJSdNnIyLdr70wn_UBmeFjPHFHRmF1erw,145 +PySide2/examples/widgets/graphicsview/diagramscene/images/linepointer.png,sha256=dyLIQhE3HtykiF3kyjsgY-Fm1GoNrlPhLwlXYblS7S4,141 +PySide2/examples/widgets/graphicsview/diagramscene/images/pointer.png,sha256=lGYDZ0SMwFdZoYUT9-TbSqY0iE4UxieGgcimvvj4Mbo,173 +PySide2/examples/widgets/graphicsview/diagramscene/images/sendtoback.png,sha256=WL_-BMrr13Ry522i6i42iY6ilS4OJ211AHCz7IhQEsc,318 +PySide2/examples/widgets/graphicsview/diagramscene/images/textpointer.png,sha256=AFKffvb7XlkhmHa9ttR1VuKEaCFa_GM7bGLqxUAnltg,753 +PySide2/examples/widgets/graphicsview/diagramscene/images/underline.png,sha256=z_I4c98oLVnBSQ9aQVEEAkvP6m57r3JPgEqny5YMuu0,250 +PySide2/examples/widgets/graphicsview/dragdroprobot/__pycache__/dragdroprobot.cpython-310.pyc,, +PySide2/examples/widgets/graphicsview/dragdroprobot/__pycache__/dragdroprobot_rc.cpython-310.pyc,, +PySide2/examples/widgets/graphicsview/dragdroprobot/dragdroprobot.py,sha256=EOGvp5qEn18yNpDfdGhJn5xeVazoFStutYOTWXr3VRM,11037 +PySide2/examples/widgets/graphicsview/dragdroprobot/dragdroprobot.pyproject,sha256=z3nlv9kyL01DKIr1M5wwmrECRdCe9RShK_3e1nqp-Ac,85 +PySide2/examples/widgets/graphicsview/dragdroprobot/dragdroprobot.qrc,sha256=YZnfZf9d-h4v9Z2qaiJWyNkNNkUZ46QDBKdh6Y_QlYg,100 +PySide2/examples/widgets/graphicsview/dragdroprobot/dragdroprobot_rc.py,sha256=dnLEKDNvOWJ94yqGFlqnUe8UQA38XCl-cj6na5O62J4,46836 +PySide2/examples/widgets/graphicsview/dragdroprobot/images/head.png,sha256=XaZqEoFqQ_afFBVpA5K0zfN9WC0r5uESUkkVwnIfqOQ,14972 +PySide2/examples/widgets/graphicsview/elasticnodes.py,sha256=XFVWWOjgpOSWkwzs7qWjIdes2nEStFymfbp-pL8KLis,15558 +PySide2/examples/widgets/graphicsview/graphicsview.pyproject,sha256=qWyUUEwqAjw5RZbzORQSrIIOb9lv1GIj5zE2YZORQO0,59 +PySide2/examples/widgets/itemviews/__pycache__/basicsortfiltermodel.cpython-310.pyc,, +PySide2/examples/widgets/itemviews/__pycache__/fetchmore.cpython-310.pyc,, +PySide2/examples/widgets/itemviews/addressbook/__pycache__/adddialogwidget.cpython-310.pyc,, +PySide2/examples/widgets/itemviews/addressbook/__pycache__/addressbook.cpython-310.pyc,, +PySide2/examples/widgets/itemviews/addressbook/__pycache__/addresswidget.cpython-310.pyc,, +PySide2/examples/widgets/itemviews/addressbook/__pycache__/newaddresstab.cpython-310.pyc,, +PySide2/examples/widgets/itemviews/addressbook/__pycache__/tablemodel.cpython-310.pyc,, +PySide2/examples/widgets/itemviews/addressbook/adddialogwidget.py,sha256=fqf2BtzU9iRNjyf_6YuokOFgdHfPtDd0rAnXNNi66qY,3984 +PySide2/examples/widgets/itemviews/addressbook/addressbook.py,sha256=6lKKhowtOQMRtNmTRbvh5vR8WH8LXNCTFEJjSC05oPY,5162 +PySide2/examples/widgets/itemviews/addressbook/addressbook.pyproject,sha256=Tkthfe3bqI4rtnN2wsy8pLWgyWJTAUm3W9ZsczmjKRY,133 +PySide2/examples/widgets/itemviews/addressbook/addresswidget.py,sha256=-ZhnlRCujK0AXWTa3IeNHLEzaQgEMz1mJdW6QaMgnXE,10566 +PySide2/examples/widgets/itemviews/addressbook/newaddresstab.py,sha256=08YbiSc2SpkZZXrgeVNwGSXWWaUTXJQ1Pm12O8dAOOI,3571 +PySide2/examples/widgets/itemviews/addressbook/tablemodel.py,sha256=GyF48Cs05i10TvpQ3Mfpl-z3NbnzgwPquYTvKlvka_s,5523 +PySide2/examples/widgets/itemviews/basicsortfiltermodel.py,sha256=oF2VJdvXo-SPw-SGobO3ISlGPhOob7jOFiliD708aOk,9485 +PySide2/examples/widgets/itemviews/fetchmore.py,sha256=zBBNtzAiSOtUVPDnyJbagPzc0x-h8tJK_THiY42hET4,5138 +PySide2/examples/widgets/itemviews/itemviews.pyproject,sha256=dXq_gFHGUsvXRKoz-msxCFX_8BnPsNDXfPA9wPefAWo,64 +PySide2/examples/widgets/itemviews/stardelegate/__pycache__/stardelegate.cpython-310.pyc,, +PySide2/examples/widgets/itemviews/stardelegate/__pycache__/stareditor.cpython-310.pyc,, +PySide2/examples/widgets/itemviews/stardelegate/__pycache__/starrating.cpython-310.pyc,, +PySide2/examples/widgets/itemviews/stardelegate/stardelegate.py,sha256=BtBHzmgZXiwoc7ASMvahzbUEFx08UMpjX7MoD9vJNgw,7649 +PySide2/examples/widgets/itemviews/stardelegate/stardelegate.pyproject,sha256=cdgOuuyUwHULkXS99W2Nsr-27-8P8ROkQwY3b5yojIU,74 +PySide2/examples/widgets/itemviews/stardelegate/stareditor.py,sha256=GVq3Exj7hSlqWw_JQ-xTKyUj3dQfTArkTIJqZ4EB0eM,4111 +PySide2/examples/widgets/itemviews/stardelegate/starrating.py,sha256=eys3M2fx3KhSzfHxDO8JfHKIAvRJUKeFIyL1HvLChXI,4241 +PySide2/examples/widgets/layouts/__pycache__/basiclayouts.cpython-310.pyc,, +PySide2/examples/widgets/layouts/__pycache__/dynamiclayouts.cpython-310.pyc,, +PySide2/examples/widgets/layouts/__pycache__/flowlayout.cpython-310.pyc,, +PySide2/examples/widgets/layouts/basiclayouts.py,sha256=OrKolAJGkd2-gf0zI6RLmGcQUef83dG6SBJUAwqsQBc,5239 +PySide2/examples/widgets/layouts/dynamiclayouts.py,sha256=L1yHWz_raPAeHwHDigLDk6A8YhhNxuYl0u6TX5PrjFg,6971 +PySide2/examples/widgets/layouts/flowlayout.py,sha256=9mHHv49XepNnG0Yn45QW4_fpgkmv--R_KCogw2OJvOM,5812 +PySide2/examples/widgets/layouts/layouts.pyproject,sha256=2xDAuXscgMtN58g_nsBnrU8ajia2oab6n4uy7ahYQD4,78 +PySide2/examples/widgets/mainwindows/application/__pycache__/application.cpython-310.pyc,, +PySide2/examples/widgets/mainwindows/application/__pycache__/application_rc.cpython-310.pyc,, +PySide2/examples/widgets/mainwindows/application/application.py,sha256=qMBDXuefV0USEQPZ-O2GzKcBvEhtq-bNMk55rq1aJOg,10818 +PySide2/examples/widgets/mainwindows/application/application.pyproject,sha256=9tPjhxtIkyuMOX5FYnicv7uDFpJSsXeXMQ1LEipEAv8,79 +PySide2/examples/widgets/mainwindows/application/application.qrc,sha256=b4po_w6x-Hjy2KLf_lb_wCjgo2gaJk9pnozbEmV-cgk,273 +PySide2/examples/widgets/mainwindows/application/application_rc.py,sha256=CS-8JaTbPRt1TBLKcq8ipgnX03sy357aQ9SDvB7319k,27785 +PySide2/examples/widgets/mainwindows/application/images/copy.png,sha256=LxEVucHXBlC4RZcUp8QQomKdGZKiXkr57Kr6nPoSVNc,1338 +PySide2/examples/widgets/mainwindows/application/images/cut.png,sha256=Q1YuctUp80qyG5KWm8N3EpuVb3gH9cLdBHthAr3fd64,1323 +PySide2/examples/widgets/mainwindows/application/images/new.png,sha256=aHumk6yrY0C0mychzQMNq1pIICi2ScGBfqggs2vP1bw,852 +PySide2/examples/widgets/mainwindows/application/images/open.png,sha256=H8mZR8pYwK-d-N7KYHV8YQ4dFyc8U07CLav2YQGISEM,2073 +PySide2/examples/widgets/mainwindows/application/images/paste.png,sha256=2vm8BVT29T8IEiqgkRd81hmxNA2gMJZUU7zleyQ_Fis,1645 +PySide2/examples/widgets/mainwindows/application/images/save.png,sha256=VFCatbeaXzBcuHcqm7W_T-osT064l63a3CDhFlaeBYA,1187 +PySide2/examples/widgets/mainwindows/dockwidgets/__pycache__/dockwidgets.cpython-310.pyc,, +PySide2/examples/widgets/mainwindows/dockwidgets/__pycache__/dockwidgets_rc.cpython-310.pyc,, +PySide2/examples/widgets/mainwindows/dockwidgets/dockwidgets.py,sha256=7TxWj-048qWUXkuQQnCDfJDpjI8la2bvzrtClOvJ_Vs,12465 +PySide2/examples/widgets/mainwindows/dockwidgets/dockwidgets.pyproject,sha256=i38RX48Tb4Nu_-3m2zcDj4xYdZd1cs6RYD6bKlaE0T0,79 +PySide2/examples/widgets/mainwindows/dockwidgets/dockwidgets.qrc,sha256=t60Qk9P5QUmJOJiC4EeeE-oaIrB2VfH1Yeu0vxAxANM,206 +PySide2/examples/widgets/mainwindows/dockwidgets/dockwidgets_rc.py,sha256=4XEHzMfJZkQUMPMBlVxQM2DnfYKea6S6VSXLRcbjCLA,21210 +PySide2/examples/widgets/mainwindows/dockwidgets/images/new.png,sha256=zeBj5yUA2GGBTyrO_b3Hbpmgo02uso7yHpn232RHc6A,977 +PySide2/examples/widgets/mainwindows/dockwidgets/images/print.png,sha256=MOot-j9Qk8m_VhLYcuX13J_fkrIul4eQlX8_7rtCcCI,1732 +PySide2/examples/widgets/mainwindows/dockwidgets/images/save.png,sha256=SW1Cg2QXsc45zyU6afjb1q8I3B59lny_GEBX1RlCrZU,1894 +PySide2/examples/widgets/mainwindows/dockwidgets/images/undo.png,sha256=AwQVAD8uslsv7Q_QJNrfQlOsnuSs8tb4BoLiV2tbCdg,1768 +PySide2/examples/widgets/mainwindows/mdi/__pycache__/mdi.cpython-310.pyc,, +PySide2/examples/widgets/mainwindows/mdi/__pycache__/mdi_rc.cpython-310.pyc,, +PySide2/examples/widgets/mainwindows/mdi/images/copy.png,sha256=LxEVucHXBlC4RZcUp8QQomKdGZKiXkr57Kr6nPoSVNc,1338 +PySide2/examples/widgets/mainwindows/mdi/images/cut.png,sha256=Q1YuctUp80qyG5KWm8N3EpuVb3gH9cLdBHthAr3fd64,1323 +PySide2/examples/widgets/mainwindows/mdi/images/new.png,sha256=aHumk6yrY0C0mychzQMNq1pIICi2ScGBfqggs2vP1bw,852 +PySide2/examples/widgets/mainwindows/mdi/images/open.png,sha256=H8mZR8pYwK-d-N7KYHV8YQ4dFyc8U07CLav2YQGISEM,2073 +PySide2/examples/widgets/mainwindows/mdi/images/paste.png,sha256=2vm8BVT29T8IEiqgkRd81hmxNA2gMJZUU7zleyQ_Fis,1645 +PySide2/examples/widgets/mainwindows/mdi/images/save.png,sha256=VFCatbeaXzBcuHcqm7W_T-osT064l63a3CDhFlaeBYA,1187 +PySide2/examples/widgets/mainwindows/mdi/mdi.py,sha256=tNehaP4yw76dKzQGQTJm_b8xQdUInBfW20cm5xfQZRE,16971 +PySide2/examples/widgets/mainwindows/mdi/mdi.pyproject,sha256=vs3IDMW6r4ZWcPn4cTIwMSVpu8emFP0WcEn4zIp228M,55 +PySide2/examples/widgets/mainwindows/mdi/mdi.qrc,sha256=b4po_w6x-Hjy2KLf_lb_wCjgo2gaJk9pnozbEmV-cgk,273 +PySide2/examples/widgets/mainwindows/mdi/mdi_rc.py,sha256=CS-8JaTbPRt1TBLKcq8ipgnX03sy357aQ9SDvB7319k,27785 +PySide2/examples/widgets/painting/__pycache__/concentriccircles.cpython-310.pyc,, +PySide2/examples/widgets/painting/basicdrawing/__pycache__/basicdrawing.cpython-310.pyc,, +PySide2/examples/widgets/painting/basicdrawing/__pycache__/basicdrawing_rc.cpython-310.pyc,, +PySide2/examples/widgets/painting/basicdrawing/basicdrawing.py,sha256=QrwWg5X4MOXWw64CoVToWYs1iJzi4baUx5J1Mxs6QRA,15090 +PySide2/examples/widgets/painting/basicdrawing/basicdrawing.pyproject,sha256=poR8sGZ9TGzKQAPpfvLmFEqF2SEc52jJ6-h5udS6vXw,82 +PySide2/examples/widgets/painting/basicdrawing/basicdrawing.qrc,sha256=aPUgSArdMsNSYqP2uef-M3ojh6_24FQ41VAkVxUgJtU,142 +PySide2/examples/widgets/painting/basicdrawing/basicdrawing_rc.py,sha256=u86TznoUyPcPCiUGEgiloGJPpT0KaSnHEbLjyF6VBds,5511 +PySide2/examples/widgets/painting/basicdrawing/images/brick.png,sha256=SxdPlnzxbOiTwvuUUCYjKYtzLimtMBdtYlv_lSj3k1A,856 +PySide2/examples/widgets/painting/basicdrawing/images/qt-logo.png,sha256=qC21wm7cOk4_Hm1yCuxzkfOdtk0KSduQo4PyoXegBqM,533 +PySide2/examples/widgets/painting/concentriccircles.py,sha256=N-zAdlO9jdBsknSaG5hdiJUrqo2rQA_BZOSq7COoj2U,5291 +PySide2/examples/widgets/painting/painting.pyproject,sha256=jVpaNmf_oRxye5aofMeaI1UfudZXO5YP_oRdl35cED8,45 +PySide2/examples/widgets/richtext/__pycache__/orderform.cpython-310.pyc,, +PySide2/examples/widgets/richtext/__pycache__/syntaxhighlighter.cpython-310.pyc,, +PySide2/examples/widgets/richtext/orderform.py,sha256=a-LUUpZ1sVf9CksMqCmlIohpebgf2ly9JNbCZ7P-LXs,11416 +PySide2/examples/widgets/richtext/richtext.pyproject,sha256=H7QtF0Bjp-TibSAg1RwyKN0MYq6eqHLe9-hRdULLRiI,61 +PySide2/examples/widgets/richtext/syntaxhighlighter.py,sha256=mxtA5mArRlMdSyPiLKfiMvr9joaF6zTUDheOanxNL5w,8626 +PySide2/examples/widgets/richtext/syntaxhighlighter/__pycache__/syntaxhighlighter.cpython-310.pyc,, +PySide2/examples/widgets/richtext/syntaxhighlighter/__pycache__/syntaxhighlighter_rc.cpython-310.pyc,, +PySide2/examples/widgets/richtext/syntaxhighlighter/examples/example,sha256=bciuecRAOtW4xs4m3OCqxLNU49g0rFTEmN2xDUkyggI,1738 +PySide2/examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter.py,sha256=WiPfYSDZNU-idXfHFUEafKRornDBPKZ0p_E-t0pXWto,5968 +PySide2/examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter.pyproject,sha256=oN7TXpC4kkK-d6zSX3SfMWohhBiVqq2O-ZsoUHHWdxM,112 +PySide2/examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter.qrc,sha256=lZUo-0tV-TsEJs3HUQyySy86CJ8obrUQ7lts9KdDId0,116 +PySide2/examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter_rc.py,sha256=nDmaq-VOjqKEJIlQDx2bXKhlWokgoCc3tcoveGhyzHM,3616 +PySide2/examples/widgets/richtext/textobject/__pycache__/textobject.cpython-310.pyc,, +PySide2/examples/widgets/richtext/textobject/files/heart.svg,sha256=I7WvkxBdFIntdNvhfqHLyz_yXW4l-XMRTo9ZpdLJtL4,3928 +PySide2/examples/widgets/richtext/textobject/textobject.py,sha256=i9itxqCWP7wCVNDeef5hoh29NHWEI_NkD9JdGcXRhL0,4920 +PySide2/examples/widgets/richtext/textobject/textobject.pyproject,sha256=Y9Qh-6GBNoN3OKIzWQTtaJ3vtXJJmU7zW6E34o2hrdI,38 +PySide2/examples/widgets/state-machine/__pycache__/eventtrans.cpython-310.pyc,, +PySide2/examples/widgets/state-machine/__pycache__/factstates.cpython-310.pyc,, +PySide2/examples/widgets/state-machine/__pycache__/pingpong.cpython-310.pyc,, +PySide2/examples/widgets/state-machine/__pycache__/rogue.cpython-310.pyc,, +PySide2/examples/widgets/state-machine/__pycache__/trafficlight.cpython-310.pyc,, +PySide2/examples/widgets/state-machine/__pycache__/twowaybutton.cpython-310.pyc,, +PySide2/examples/widgets/state-machine/eventtrans.py,sha256=ANKqfnQpPV7WSvS7rcyukVzqXWTh42Sq7RyyNzVzilA,3616 +PySide2/examples/widgets/state-machine/factstates.py,sha256=zbBqgVcTR_LPGY8RtxIfUX6sVhJKFCgKLe8hD_-194Q,4241 +PySide2/examples/widgets/state-machine/pingpong.py,sha256=qciMCT94oXE04Ja3b2706M4Peyew-cyeERfkMUnGn5Y,3638 +PySide2/examples/widgets/state-machine/rogue.py,sha256=r3iA_Z8YJjrmFg17eJ3QQrkNEb4W_YARX6R0SmyB1F4,7625 +PySide2/examples/widgets/state-machine/state-machine.pyproject,sha256=m0SRrB8ofxsD3ap8o6FGZ56yWAVAYZzcc9Avg9W95ng,135 +PySide2/examples/widgets/state-machine/trafficlight.py,sha256=zul94z2rsMR78_SNBg5cmHXjAXWAnxfZ4hxlKh45mw0,5614 +PySide2/examples/widgets/state-machine/twowaybutton.py,sha256=ZLM2XDy50xXx_udmXFMymV8DN5YsENhFSYygDB1FyYM,2816 +PySide2/examples/widgets/systray/__pycache__/main.cpython-310.pyc,, +PySide2/examples/widgets/systray/__pycache__/rc_systray.cpython-310.pyc,, +PySide2/examples/widgets/systray/__pycache__/window.cpython-310.pyc,, +PySide2/examples/widgets/systray/images/bad.png,sha256=FpacsqG8oN6uVeSdVFP7gpta17zwU3QBManc3JRVEag,2496 +PySide2/examples/widgets/systray/images/heart.png,sha256=yv38JFWbDdTMEkTGHRHt3FbHOeIEGPkTN5X5d0R35dg,25780 +PySide2/examples/widgets/systray/images/trash.png,sha256=Akpiu2tlt1pMx3-U23YUXT4dX7QkSaTAdtsX7XmT85I,12128 +PySide2/examples/widgets/systray/main.py,sha256=oZfaFFuIEd_-bAtdrxaVU73fZbSThWF6ZxL640HCFqc,2483 +PySide2/examples/widgets/systray/rc_systray.py,sha256=vo3e39vSMvZJKiphlze7u_mVV0vAYFcMkIqEDR6s2vA,128784 +PySide2/examples/widgets/systray/systray.pyproject,sha256=yd72BcN5jnIvHrFQYyLBWessmKtAfz-EPkfkGixdYVs,60 +PySide2/examples/widgets/systray/systray.qrc,sha256=2xZ42xtpVlycWWKlW98rcdmBhm0LZDzAly9qUACz55M,181 +PySide2/examples/widgets/systray/window.py,sha256=6QTIyBgaErK3VodU3dvJBqqpG5IU6qYsycRTvO1CIFQ,11064 +PySide2/examples/widgets/threads/__pycache__/thread_signals.cpython-310.pyc,, +PySide2/examples/widgets/threads/thread_signals.py,sha256=GJE16gF6ahQKcskF1Bh7BAnJbfgBdDO_GGI6cVn3cKw,3829 +PySide2/examples/widgets/tutorials/addressbook/__pycache__/part1.cpython-310.pyc,, +PySide2/examples/widgets/tutorials/addressbook/__pycache__/part2.cpython-310.pyc,, +PySide2/examples/widgets/tutorials/addressbook/__pycache__/part3.cpython-310.pyc,, +PySide2/examples/widgets/tutorials/addressbook/__pycache__/part4.cpython-310.pyc,, +PySide2/examples/widgets/tutorials/addressbook/__pycache__/part5.cpython-310.pyc,, +PySide2/examples/widgets/tutorials/addressbook/__pycache__/part6.cpython-310.pyc,, +PySide2/examples/widgets/tutorials/addressbook/__pycache__/part7.cpython-310.pyc,, +PySide2/examples/widgets/tutorials/addressbook/addressbook.pyproject,sha256=woMi_rSrMUoawmKt43u74tYdQzoe_zSJl3ZEfjKktRo,120 +PySide2/examples/widgets/tutorials/addressbook/part1.py,sha256=5ahKKx5uY-L7IBqw4olPKColy_uyD5e8ZVt2PwXe2Vg,2978 +PySide2/examples/widgets/tutorials/addressbook/part2.py,sha256=KFGUTA6G-fLcMCxGuJY_3z836uNk1aJmA3V505pnnYs,6395 +PySide2/examples/widgets/tutorials/addressbook/part3.py,sha256=aEN9pGlj-DUXzPbnkeChTr4h3miAOfBu5lnLfG0_qWQ,8506 +PySide2/examples/widgets/tutorials/addressbook/part4.py,sha256=GqJWJSEuc8iTqAR9aSZ_CSjOA0AQYmC4ViSo5G2VOGo,11088 +PySide2/examples/widgets/tutorials/addressbook/part5.py,sha256=5iNq33dgVKdBEZpFwJimNlSy2XiV_dt16W0jT3An7yg,13084 +PySide2/examples/widgets/tutorials/addressbook/part6.py,sha256=TpAWtaJhwLHZ8RBbVOlWivBLqaY35DLLWjy8TiiYf2E,15362 +PySide2/examples/widgets/tutorials/addressbook/part7.py,sha256=GgBRNMRipMpKFENSSaavR_Pnd63PMCBAKFqqvfTURQM,17111 +PySide2/examples/widgets/widgets/__pycache__/hellogl_openglwidget_legacy.cpython-310.pyc,, +PySide2/examples/widgets/widgets/__pycache__/tetrix.cpython-310.pyc,, +PySide2/examples/widgets/widgets/hellogl_openglwidget_legacy.py,sha256=uUVucXIvXJFUKidJ1yNCsx5tzLQpWRKjMeT6tjTqUn0,10396 +PySide2/examples/widgets/widgets/tetrix.py,sha256=grI8gg9OkAah4FTSjGnGb-SRSdkgr7ZoBlz_GtrF9M0,17241 +PySide2/examples/widgets/widgets/widgets.pyproject,sha256=SoiC-9E8cLArsuWI3CUesG4x2z6U-6ngUog6LzWMswk,68 +PySide2/examples/xml/dombookmarks/__pycache__/dombookmarks.cpython-310.pyc,, +PySide2/examples/xml/dombookmarks/dombookmarks.py,sha256=mP5XgBfhESz9_Og9WDTv6zcYNk7cgFNyEPvpcWTETF8,10072 +PySide2/examples/xml/dombookmarks/dombookmarks.pyproject,sha256=jyp75TnS3yQgupsYnOFXxLzgTuUqaB88WxdRGu7dh0E,71 +PySide2/examples/xml/dombookmarks/frank.xbel,sha256=GfmRt9fxxFYLn0mnl1oGBOlgWuIjTBa5JIIo7cjln1Y,10973 +PySide2/examples/xml/dombookmarks/jennifer.xbel,sha256=GKSkBwURz1vEYqJGB6D7usYoDOpHya6521uJClRv0eU,4031 +PySide2/examples/xmlpatterns/schema/__pycache__/schema.cpython-310.pyc,, +PySide2/examples/xmlpatterns/schema/__pycache__/schema_rc.cpython-310.pyc,, +PySide2/examples/xmlpatterns/schema/__pycache__/ui_schema.cpython-310.pyc,, +PySide2/examples/xmlpatterns/schema/files/contact.xsd,sha256=2MNBnK7bajFGVMVeO1WK1fqsML7xJ_locuxaLqcQLdE,980 +PySide2/examples/xmlpatterns/schema/files/invalid_contact.xml,sha256=tvCAFXwgxBaDobCb-5032C6D7_Sx8_tQWOiPbKH2hQ4,296 +PySide2/examples/xmlpatterns/schema/files/invalid_order.xml,sha256=kiRnhrRdiPp_wJCwrIGg2qulP2HNmVkfHJBXXbZuXTQ,315 +PySide2/examples/xmlpatterns/schema/files/invalid_recipe.xml,sha256=TBYTdlmUks_bLAwBnnL9EmJY4dpCoEe1_fNjgVq63PE,611 +PySide2/examples/xmlpatterns/schema/files/order.xsd,sha256=xgOmtA7UR9Au2ljYgC3c8HzrnShe8lU1urFk-72pgjc,894 +PySide2/examples/xmlpatterns/schema/files/recipe.xsd,sha256=_iwpBV0b0DY5Ae4RkOa9yq-ZQE1g-q1pLWyMuQI2IOM,1581 +PySide2/examples/xmlpatterns/schema/files/valid_contact.xml,sha256=i58ciQPS9IoYs9wOVMeOzLI_Lsxu_TLzIYflkdf7HGc,309 +PySide2/examples/xmlpatterns/schema/files/valid_order.xml,sha256=a3xBa7txkyUK9FHvOUgLSZ1OREo1zc19ZtOCok5qX-Q,456 +PySide2/examples/xmlpatterns/schema/files/valid_recipe.xml,sha256=9Kt3zwpeZqMJtefAjdbRCzpSAa0XAqMLyXC9IHWjMrU,562 +PySide2/examples/xmlpatterns/schema/schema.py,sha256=pI-0vWyfcrgbm_vz5A3kVW7BcxeI5t9NLl1GizErFJQ,10701 +PySide2/examples/xmlpatterns/schema/schema.pyproject,sha256=os4VWCUdQKfQfQkKJJZ0lwr3TAODYSugUDMkZHufZ_M,108 +PySide2/examples/xmlpatterns/schema/schema.qrc,sha256=ronfCzQxJ5_BKvzBwIyyZpn3mgBiBtbLZTVb1lnRutc,628 +PySide2/examples/xmlpatterns/schema/schema.ui,sha256=o73IAAu7ZNBXulKtCUBMoE7eeuVyUSVWXZ_5lzhhjco,2097 +PySide2/examples/xmlpatterns/schema/schema_rc.py,sha256=s0_Y_dcicQ57TgxIJM3LSPZwWuoM0eorOBgo6YMW1aw,9490 +PySide2/examples/xmlpatterns/schema/ui_schema.py,sha256=t534DNZufJkqiEX-4dGkXH9c8ZgSK0YpjmHwq8h7hgI,3828 +PySide2/glue/qtcharts.cpp,sha256=0FFrZZVKwmZJGcRXEh_HbAdO9e88BqK4wxVg-cV8lEE,2059 +PySide2/glue/qtcore.cpp,sha256=ueXi3LLKu-DdVxcI1CUFD18qkEySd4xL9Ukh_ZZu9eI,73167 +PySide2/glue/qtdatavisualization.cpp,sha256=nZ0VEJJKF4_4bn62vUMDzBeQ9gQnWS_9D1t1y7htwAw,2045 +PySide2/glue/qtgui.cpp,sha256=e-qSPAt8a_ULLKgz8E-fq1n77UU2NIQp_4Zm3UJFs6w,17605 +PySide2/glue/qtmultimedia.cpp,sha256=9ebeP3VXjRhYf_8MhJlZiJ9ZGS8SKyJvrzKDC946ulY,2472 +PySide2/glue/qtnetwork.cpp,sha256=tuCPhm9vD5hCbaDu7iasrd8NSPb42PaRbdVUF4BBKPg,3121 +PySide2/glue/qtopengl.cpp,sha256=DHSZwAs9fX70677FJoEi_om934-P1efbPjwHXPSHgGE,3058 +PySide2/glue/qtprintsupport.cpp,sha256=5fGORfjDX38yIz1l5_ISi49B4KFlnfVPcv0Ek5dLWq8,2067 +PySide2/glue/qtqml.cpp,sha256=WESJTPxzeWyD01ZtFA4Z-awCY2iu3SEol_85ZqMOjD4,2334 +PySide2/glue/qtquick.cpp,sha256=f2_-0iD35VxO4-w2YPFzeb0oIitwrzkoXVufYajUIYk,2015 +PySide2/glue/qtscript.cpp,sha256=jh7Syhjhv0_QWCEOGV6mnCYvKajHXrjUVfKN-3AogtM,3229 +PySide2/glue/qtuitools.cpp,sha256=MX6pDB9I9IWIPpqVl5HS9KPJcYfYqNxP6jHCnEbPVV8,9203 +PySide2/glue/qtwebenginewidgets.cpp,sha256=g-G5vJz1LYNKaVS5ctvz6FKd84oLjihApGJ7bWMh31s,5785 +PySide2/glue/qtwidgets.cpp,sha256=xp55KUn2jiEvB4R---cyoob22vIhjnkjSMFCMRZ4Cwc,23880 +PySide2/glue/qtxml.cpp,sha256=o_DrXMXkss9e6eZ7v_JH1HO1kQ4Kj_Zc5I3GEET78A0,2975 +PySide2/glue/qtxmlpatterns.cpp,sha256=gptewWer48D68z9B8o45l0G5fWn_RTFTBDCQqDH5mYM,2119 +PySide2/include/Qt3DAnimation/pyside2_qt3danimation_python.h,sha256=7bRQ9RHpA4uW8SwrfFjdUhRTnq35cT0Nl11ZjdHoFhs,13356 +PySide2/include/Qt3DCore/pyside2_qt3dcore_python.h,sha256=Ai2AUqQ5-A9rrNs8nu7yxV1qTRcQm79RwwHnFoQO2LU,15915 +PySide2/include/Qt3DExtras/pyside2_qt3dextras_python.h,sha256=y0RUvEggqgkxntGDxRLQMVXoIEQdix0xelZcKG3vo34,15993 +PySide2/include/Qt3DInput/pyside2_qt3dinput_python.h,sha256=wiDCLitlju5a0R-8T4egxFr8kPDFMvqfrNbN2RjiC8I,12251 +PySide2/include/Qt3DLogic/pyside2_qt3dlogic_python.h,sha256=lzukt8sSPNicAp3q5WqdSLc2iTQQnJS-i4wzU0866X0,4376 +PySide2/include/Qt3DRender/pyside2_qt3drender_python.h,sha256=fGs9QGIzX75HpR7ycfVtG0xzIFtEcdkFWHZZmm9yZ8c,54655 +PySide2/include/QtAxContainer/pyside2_qtaxcontainer_python.h,sha256=TKX1PmxkV1G4r42N806wL2XbIX1eOkPOmNdjUsuCTFI,6297 +PySide2/include/QtCharts/pyside2_qtcharts_python.h,sha256=NVQxjDpvp-7rYualW0hmFB8pMl1O_-jBLK5jkD2oaRw,24109 +PySide2/include/QtConcurrent/pyside2_qtconcurrent_python.h,sha256=NuqzNFdLHgo1MpCxWXmkFX2plyfucv_Gxcnm_wjYxZs,5952 +PySide2/include/QtCore/pyside2_qtcore_python.h,sha256=MXtkjXitZ2J2QZfldMjhwh-bQNLELQJBIMf0wFqjrjU,101696 +PySide2/include/QtDataVisualization/pyside2_qtdatavisualization_python.h,sha256=br844-K-ZCsLd6_laD8_Lpb22TcIa4-NqEuxa4hvv6A,22891 +PySide2/include/QtGui/pyside2_qtgui_python.h,sha256=mTIMYW1u5cdspbgR5qQqsdARq2qqUCrW_CqU0Xv2068,94972 +PySide2/include/QtGui/qpytextobject.h,sha256=OwObsPZ3991COJsnBCzglAipmjasLKISt8kl9Z1dgAk,2792 +PySide2/include/QtHelp/pyside2_qthelp_python.h,sha256=x0dAeymc9omwPPBRakXcwxe9QvGwGWpvVEkIQwyFmCM,9869 +PySide2/include/QtLocation/pyside2_qtlocation_python.h,sha256=pwGwnHFB4svIMiwTA-g4Y8JegUId50X2m4NbS_rEYqI,23135 +PySide2/include/QtMultimedia/pyside2_qtmultimedia_python.h,sha256=b2VEZI_1GXsyf6ZfgSbvlunrP3Bbg1C_AMwwcepQB9o,46870 +PySide2/include/QtMultimediaWidgets/pyside2_qtmultimediawidgets_python.h,sha256=NcEEqvmui9ZOuQgSQpc8aYHE_a-wLcnQdyAiTPrSyo0,5042 +PySide2/include/QtNetwork/pyside2_qtnetwork_python.h,sha256=7Sxv4L4DlSmOx7UIdhTMM2JxnvP3DzJDggTdliINISg,33894 +PySide2/include/QtOpenGL/pyside2_qtopengl_python.h,sha256=AzHN-LVloNwrdSjqnOdzjaZRQyhUSOw4ERh8YuyP7Pc,9257 +PySide2/include/QtOpenGLFunctions/pyside2_qtopenglfunctions_python.h,sha256=-lIzix79t9ToJdmVAMxJBS1thIZYLmpEWEJQwDLZlVQ,11526 +PySide2/include/QtPositioning/pyside2_qtpositioning_python.h,sha256=TKIaFBo2z3Gm7QiOlYxGTRyQgAjQDFCzUlZIxE7QUxg,11798 +PySide2/include/QtPrintSupport/pyside2_qtprintsupport_python.h,sha256=KjBbf0VPodIBnPlaC6m0kup_4RHUmPznwucJYRGX4rg,10410 +PySide2/include/QtQml/pyside2_qtqml_python.h,sha256=tt4qaVcdB5r9o8kbr24BRdRYflDI0KTywU3cazH0dbA,14642 +PySide2/include/QtQuick/pyside2_qtquick_python.h,sha256=0k1KY-WSmvNJ7JUGZISaonl_0zAcCnRlUZFiO4GBO1A,20957 +PySide2/include/QtQuickControls2/pyside2_qtquickcontrols2_python.h,sha256=G1FTHaBf_1jUWvcbNZM7MMCj9QvPdq7m2WyZFNCylFc,4038 +PySide2/include/QtQuickWidgets/pyside2_qtquickwidgets_python.h,sha256=Yl6W6-5VIUfgxubvueJkMp91PYeScRYnyBDPZClh3jk,4656 +PySide2/include/QtRemoteObjects/pyside2_qtremoteobjects_python.h,sha256=A6g-U3LXzAs3o34MugIkRIMSi0p9m-9Dnksxtug3KD0,9074 +PySide2/include/QtScript/pyside2_qtscript_python.h,sha256=cm-fxHDhQea6FJP4-rARnbaEXhSUg3G1rua_Y_Wis7w,10408 +PySide2/include/QtScriptTools/pyside2_qtscripttools_python.h,sha256=uQ0na-8vSP3lWY2s9z_NVlvfWnkCdAhOW8y-0wmGtgY,4908 +PySide2/include/QtScxml/pyside2_qtscxml_python.h,sha256=mk0YPJvqQltzdPAjHbL1PHU7uGDTLYtvrZbPh0TKNMQ,9769 +PySide2/include/QtSensors/pyside2_qtsensors_python.h,sha256=iVpLxsWj95zHVD9LX92jVphKffhzogo0-WVCaGAbh7c,22328 +PySide2/include/QtSerialPort/pyside2_qtserialport_python.h,sha256=h9VsMe7H5UgFU22NhrVp6Zx3qh6O5bUKUwzHsgExShE,6662 +PySide2/include/QtSql/pyside2_qtsql_python.h,sha256=DCxZuFuhnnBy_eEdjZYtvB8WehAjA-t1b0WsiokSvbA,11146 +PySide2/include/QtSvg/pyside2_qtsvg_python.h,sha256=2ikXSHcPaHr_MN5DGbU-Sb-OSH91UQFlLY6tRThdGJM,4904 +PySide2/include/QtTest/pyside2_qttest_python.h,sha256=M2b_fElWA0NLdVi_k30lS8DlHoMP73FjqZq9EFQkDgE,4912 +PySide2/include/QtTextToSpeech/pyside2_qttexttospeech_python.h,sha256=N8Ya0Nx_41kNoJIm4Ro6us_vgKtuFT47keHKIQUd9WM,5364 +PySide2/include/QtUiTools/pyside2_qtuitools_python.h,sha256=WXt3wZr-k1J8Kxa4LX7tc2XPrI8G0Q3Xi5fiq8OcSLk,4122 +PySide2/include/QtWebChannel/pyside2_qtwebchannel_python.h,sha256=pzkPEYBPHj0OdBC-bAz1hWA8biAzS-6cbFwX1wmId6o,4458 +PySide2/include/QtWebEngine/pyside2_qtwebengine_python.h,sha256=jpUb9eX3LCw_c0y-XgadMtVj3tK03b9uKESk_4eBKO8,3708 +PySide2/include/QtWebEngineCore/pyside2_qtwebenginecore_python.h,sha256=lcIYPte1v3uG2ejUq8jA9Cix-ZBN3cyyRFZW0LBxaJo,8099 +PySide2/include/QtWebEngineWidgets/pyside2_qtwebenginewidgets_python.h,sha256=9mC7ZKrQpXXgtUAPlG9BqEh37qeqb2FcBCc1csEVdtY,15020 +PySide2/include/QtWebSockets/pyside2_qtwebsockets_python.h,sha256=fanrIeUfdask6X_gqW25ZssLLYFF1wMQwm5blLCReQo,5800 +PySide2/include/QtWidgets/pyside2_qtwidgets_python.h,sha256=oQ7Sbj2Xl78P_PTtuAzIA12KJHx0u7lDjyARfCI15Xs,115830 +PySide2/include/QtWinExtras/pyside2_qtwinextras_python.h,sha256=A9mgOGCaCY8PMZg3-y-7u5NuB6WxEyuelOfAbJ3AEPQ,7806 +PySide2/include/QtXml/pyside2_qtxml_python.h,sha256=kshnDHicE1kCfEYYxNftDeUgyozIAsud8nPevtP382s,11137 +PySide2/include/QtXmlPatterns/pyside2_qtxmlpatterns_python.h,sha256=oBeT4vBQWTKT-rgnd6c9gxg3VNi08n4IEOEagc7BTeQ,9140 +PySide2/include/dynamicqmetaobject.h,sha256=BM6nKVlktvVNLsG3uXFqPHq2uSLSjte9CiRwaRXLnyI,3265 +PySide2/include/feature_select.h,sha256=MLHa45qhfsiohAO_BAHKWH2_TtXwgW9LwlTcqdBhnbg,2232 +PySide2/include/pyside.h,sha256=gTeroQrpAchXUtMLqlZFsd_Uay0PnG4NxMyMQkcyHJA,6637 +PySide2/include/pyside2_global.h,sha256=xQgJA2oyqsJ0d1inF3F3THRzbTWG4FXWFW0NbcUhSmI,2729 +PySide2/include/pysideclassinfo.h,sha256=g8v1w9jNSM7NiCgS_e21J6r5R4BuxUyRsOTDdkVeyWA,2563 +PySide2/include/pysidemacros.h,sha256=lY7VfyHgP53qju8t-03lkTwLlfT6Z-K1dYVlC0vh_MM,2298 +PySide2/include/pysidemetafunction.h,sha256=c6SrE8z10OIARn8m4VdxiCRMB0QqUpLHmEJYRp913PQ,2777 +PySide2/include/pysideproperty.h,sha256=HjSTuz7ZV-xzXx7hUscRf0-DaEFVWygO2RhdeQbrik0,4136 +PySide2/include/pysideqenum.h,sha256=D-pv6fBh87qfHleF-dDSBLOIFHTnjiRD3EpZnnXI0bM,2360 +PySide2/include/pysideqflags.h,sha256=xeXGoiZMZfSv5MC8wSH93TiNfFXD6INGWODNo_k3NIE,2841 +PySide2/include/pysidesignal.h,sha256=yw2z2118FQsbd_CBow0M3kzU2Z7TJalm4Kdwtr050K0,6075 +PySide2/include/pysidestaticstrings.h,sha256=kyxKZn3hzoN_NFVeoP-nim8RCqu_XeFdFnZXgeXNirU,2328 +PySide2/include/pysideweakref.h,sha256=FrMaax97GAIsJAzRGGHhAWoHjwgVwdvi_zfh63pv9eU,2274 +PySide2/include/signalmanager.h,sha256=LDiAQzObq2gD1Xw1NoL59aTsfWTHB5GjYCVw1C9K-h4,4498 +PySide2/lconvert.exe,sha256=zpwORIOwcwLkOxTcD6xaJ_y1TGG7zel_QMAlXdyZ2B8,212760 +PySide2/libEGL.dll,sha256=8zA-_UtJV8hcsvKabs1pJh9q9hQMTGy58TvRGpRJFc0,29976 +PySide2/libGLESv2.dll,sha256=lOPJ9yNFAF8OujNHycUUPxgade2AJi-6Q5guEprdMuQ,3390232 +PySide2/linguist.exe,sha256=pWpcIN1LtSZVnR-fkrAp9OgkZEykLciChSQx9o4mFTM,1274136 +PySide2/lrelease.exe,sha256=R0iXMxJgzINHa7gdbLunA8O9afIeU65j_YxaKQ3-tAA,221464 +PySide2/lupdate.exe,sha256=nm8D5YP_-QPXd1BgfPxikptIPaBtcJrhJU-1HwrntSk,587032 +PySide2/msvcp140.dll,sha256=-HgZroxvfJDTI3oau5gJ6Mup3NDICsPwlppeaO9lLKQ,618264 +PySide2/msvcp140_1.dll,sha256=sF89_U6ZnD4RAhn7WRUcuqMidX9PPOUrZN3chT5cEFw,31512 +PySide2/msvcp140_2.dll,sha256=fV0YDI5BsZZINbJVAZHi2QVNj0vv-Jit5ns9XdJbUQE,203544 +PySide2/msvcp140_codecvt_ids.dll,sha256=HlbO6HaUCv_piDrszukTIoDQP9QoKrZVKt91--7tK6w,27416 +PySide2/opengl32sw.dll,sha256=ljZBpxj5yuJwXVKZ6um3RE6E5yqzvvlqaRUQ3QX6HaQ,20923392 +PySide2/plugins/assetimporters/assimp.dll,sha256=cCdMnNld-RSRgMYgKN0IOYzlrzgvP_8e24XPbZ8z0tk,1564440 +PySide2/plugins/assetimporters/uip.dll,sha256=jcL9w6Me11aliWj70HVpb5grrUnOfuqzM4ipDtLo8Bc,382744 +PySide2/plugins/audio/qtaudio_wasapi.dll,sha256=iVRBpIuRYJFur-gnyP59vE5sV99jLrq42aY0bZ0MC4g,103192 +PySide2/plugins/audio/qtaudio_windows.dll,sha256=d_6EDZ7EwvTHfI5KNsIzhTGTsPHfVlb2RiZYq9q-KL0,68888 +PySide2/plugins/bearer/qgenericbearer.dll,sha256=LXfWmBZ3fGt8aNgs9r5djirdqA2QUN-DG5Rr79qTqyg,58136 +PySide2/plugins/canbus/qtpassthrucanbus.dll,sha256=MN7aJNJ242H006CKSuPcQmcpIeYo6EpM1tq--uWmqJc,64280 +PySide2/plugins/canbus/qtpeakcanbus.dll,sha256=5pCDxhZuReixCzdSY0150PgbMETfUI_yf1c6iUMrOrw,53016 +PySide2/plugins/canbus/qtsysteccanbus.dll,sha256=svIA_7wwGbIryCPYvs__GqoRP8DK_GfuZVLt2_RT1X0,51480 +PySide2/plugins/canbus/qttinycanbus.dll,sha256=vDWDHyNaoCfyQuND-twKLvWqkmB5CPNEnDHKYp5pQto,49944 +PySide2/plugins/canbus/qtvectorcanbus.dll,sha256=_uCuhqLt9WyD9YM0GXg7aQWjGJZVSezlvGkBCxOX4hU,51992 +PySide2/plugins/canbus/qtvirtualcanbus.dll,sha256=Eq0CzQK5EfnRTNyDtoUqOXORTs5j7XsEuY-sqp37Y4A,55064 +PySide2/plugins/gamepads/xinputgamepad.dll,sha256=Qk4TyVO-vhjrUdl417am6vMznuwjzYzEqfo50YyIMTA,37656 +PySide2/plugins/generic/qtuiotouchplugin.dll,sha256=fN62qaKwAcbeEio4Y5ooaUQxAfY840AlSSdb161qT_s,72984 +PySide2/plugins/geometryloaders/defaultgeometryloader.dll,sha256=0-L_nZCCuk6H17kLrSZmI4m7kX2EKsClFGQwESrilEA,77080 +PySide2/plugins/geometryloaders/gltfgeometryloader.dll,sha256=0bJ5Juc_LjV4JC41U2WQUlEhTILFvsd-z8BEWm91itY,62232 +PySide2/plugins/geoservices/qtgeoservices_esri.dll,sha256=Zcjfgk19P7mvSf6dBvtzhXBVoH6-Gg7IcQNfatM6riI,154392 +PySide2/plugins/geoservices/qtgeoservices_itemsoverlay.dll,sha256=I407jkJqRy6a6W3I18ONdm-dpYKuYRWO2HjzaNndkkY,46872 +PySide2/plugins/geoservices/qtgeoservices_mapbox.dll,sha256=RS8xLh9D2hm5OcS17SFrw7Mq4hvuP4LClphbTzSi2a4,367896 +PySide2/plugins/geoservices/qtgeoservices_nokia.dll,sha256=7OmJNgLOQcqffF7DdRJnNXycO4E_Yt1l2Fjlh5NcMbE,305944 +PySide2/plugins/geoservices/qtgeoservices_osm.dll,sha256=yBZexZ86V4OU3qzQZBroAIMojiXVTUl2leY_pb2QmD8,206104 +PySide2/plugins/iconengines/qsvgicon.dll,sha256=aUh0HFl1w8a9TdBTfXOOI_7ag0oq-LDj5sC9HZIEO1U,46872 +PySide2/plugins/imageformats/qgif.dll,sha256=Ti2CpMep35RAHOvmXlBK5o47DCyL_tJC93AZ9n01vBA,44312 +PySide2/plugins/imageformats/qicns.dll,sha256=N4rWERtre0XXNQvuSZpZYVLd4T9lnn3jNhKCb8yA_9E,49944 +PySide2/plugins/imageformats/qico.dll,sha256=9HLJ2fZRoETOY2WdxhJjLix--u81Qh4gWTG7wh1o9U4,43288 +PySide2/plugins/imageformats/qjpeg.dll,sha256=K1wEn0CSm5wpIWQ5dYd-HpSLGIs0D0XpVuHTL-n_yaA,426264 +PySide2/plugins/imageformats/qpdf.dll,sha256=iEpuoLDSQ2J-tcQU71LoAAq85cIr2L-0C3wtSjxmOR0,38168 +PySide2/plugins/imageformats/qsvg.dll,sha256=Mj9S8SdWmDcLkp4f4rJ4E7685s9LfJpOVzRyZx1kxfA,37144 +PySide2/plugins/imageformats/qtga.dll,sha256=vjwdjITMnMIj55ow4k2IfdZaEgQvqKXdSwHim7YfMTs,36632 +PySide2/plugins/imageformats/qtiff.dll,sha256=zaF2PND_2e7-gE7i8pmTR1jF99lHN12FR6nN1w_ZnjQ,395032 +PySide2/plugins/imageformats/qwbmp.dll,sha256=W66RVeSFbNZvhqntpxUZ0mYD1vbmzS0ulvvEgbntJZs,35096 +PySide2/plugins/imageformats/qwebp.dll,sha256=6p6X2Y9agDgwE4yDPTAvOhKu-emznsbf94Ez-_IgcIA,515352 +PySide2/plugins/mediaservice/dsengine.dll,sha256=5vPmAS_Yw3bLZO1o8_EqvJJ78LJfmdxgE9GLf90OPao,305944 +PySide2/plugins/mediaservice/qtmedia_audioengine.dll,sha256=nh7RZiqBJgv8U-mwcrOnej5cnLBuWcRwGVg7NEic2to,72984 +PySide2/plugins/mediaservice/wmfengine.dll,sha256=MloUXeGthW8DntBnId5D1hOLOCIfvf7o4c6G3aWPAdk,213272 +PySide2/plugins/platforminputcontexts/qtvirtualkeyboardplugin.dll,sha256=R3a-F_2Vpqxv7l87p-V4aMvelWw3LjkrCbH8HQqVeGg,49432 +PySide2/plugins/platforms/qdirect2d.dll,sha256=obGGBQHKKYkqhBGYf0iVkAg8D3IPI2JsdmvRlt0xzyU,1544984 +PySide2/plugins/platforms/qminimal.dll,sha256=L_8JxGa_nV6RUyvJLItOGICbfk5qsy6cvS-plXjxUsQ,849688 +PySide2/plugins/platforms/qoffscreen.dll,sha256=D-m4KzxWAp--LbTR2RZwrhsbXmfBlExynz7fsy068Gg,759576 +PySide2/plugins/platforms/qwebgl.dll,sha256=KE47nVksuVm85aiVnGh4G3npZhJ9qXaDFCZx2BdP7MY,487192 +PySide2/plugins/platforms/qwindows.dll,sha256=mpHRZwPxHo_KyFU30D4rNLu7VAAeaB6k4xDl7VhAZ0s,1482008 +PySide2/plugins/platformthemes/qxdgdesktopportal.dll,sha256=ZHlxpJu8-O89GzIbqqWMvljd00Lx3k4FEft2APdfJMU,73496 +PySide2/plugins/playlistformats/qtmultimedia_m3u.dll,sha256=CAdjWDNcWpp-VwMJKYPAvbeWRsLFUVwpoKFrPb1EZW0,38680 +PySide2/plugins/position/qtposition_positionpoll.dll,sha256=CzJXbs_pzimlaZ_ruCz72WdTKDK0UPg6g60QfRV14wg,55576 +PySide2/plugins/position/qtposition_serialnmea.dll,sha256=Nc6EDFFCepWboRdvwIYeOuO5oPMXf58HQi0s9sCDU1U,72472 +PySide2/plugins/position/qtposition_winrt.dll,sha256=AZyYQy012uUV7y6M1hXVpBYLd7pzkdcUdZGjIOyv-r8,62232 +PySide2/plugins/printsupport/windowsprintersupport.dll,sha256=o_A6lpRa8J6JMqSSLAJVFg1hZbeso0pOd9AFEGxQzag,60184 +PySide2/plugins/qmltooling/qmldbg_debugger.dll,sha256=Wb-3jh5HsnmK7J58iSnI7sK_82o8hmlT4S5ufq8W4s4,152344 +PySide2/plugins/qmltooling/qmldbg_inspector.dll,sha256=S2YJLfNGb2XZ7oZq-YU6j7Ry0Ujqw3pINafnWSUUqLY,83224 +PySide2/plugins/qmltooling/qmldbg_local.dll,sha256=MRF5CTddYCiRTivn3C76ZOHeP_b7nghk2yCoWW0iYJs,35608 +PySide2/plugins/qmltooling/qmldbg_messages.dll,sha256=xnyQdCA-LCjIN3mBc5iul8rCXNDagvbZkbhpsxt8_Ss,33560 +PySide2/plugins/qmltooling/qmldbg_native.dll,sha256=H7YQ_AlRpJy_znHvb4Ti0r2RtNc1uBGnkZAM8vitc-g,41752 +PySide2/plugins/qmltooling/qmldbg_nativedebugger.dll,sha256=2peNXsq1bRXPwVSsZTKCF-EGXrOzwA0KFr6DOaHOK08,59672 +PySide2/plugins/qmltooling/qmldbg_preview.dll,sha256=vNG_nioDtcqxTIEZyv9XRHGTNj7YD-KI_U9Tl50vdVQ,100632 +PySide2/plugins/qmltooling/qmldbg_profiler.dll,sha256=KQjpAUN2kJ4ns_Ysun8_ZeFsHmbzdrVLtbqrgLO2Zn0,79128 +PySide2/plugins/qmltooling/qmldbg_quickprofiler.dll,sha256=TdBmChjia5iEfcmKPbKYKUerZ2HqEbNBIZER0eGzKV8,39192 +PySide2/plugins/qmltooling/qmldbg_server.dll,sha256=c4jLukjVw3Srvi5RrXUlO-Xj7lfQGcJJCe6Pkp_lCqs,69400 +PySide2/plugins/qmltooling/qmldbg_tcp.dll,sha256=8Ki4oZNBa5Lfh7GEeHjTG0dRs2cYwqcRRbM6YfkpaUQ,35096 +PySide2/plugins/renderers/openglrenderer.dll,sha256=lAKDsxzsWkWqNQ4h-QMeq1B28FoMJUfPQOOTaQc1i00,797976 +PySide2/plugins/renderplugins/scene2d.dll,sha256=VsIxwC-Ha7NdBZmArAM21EUW5L0HCGwin0v3dgRoAcM,35608 +PySide2/plugins/scenegraph/qsgd3d12backend.dll,sha256=8ROwFtfp8TwrDyQjioLMsRHpEIiAHNxEptnAh-Khr8E,304920 +PySide2/plugins/sceneparsers/gltfsceneexport.dll,sha256=1R2Pxgbtq63_2X6scTbAW4EfNPlV4Twoex5tIfulcg8,181528 +PySide2/plugins/sceneparsers/gltfsceneimport.dll,sha256=yveACKMymmrwoNzPfj3VRLmvCacHBQMHej9iPqUokts,204056 +PySide2/plugins/sensorgestures/qtsensorgestures_plugin.dll,sha256=ct1SsD55HPnLLQf5wqhGzlDv31tdTZY1fZ4BCuEJzTo,86296 +PySide2/plugins/sensorgestures/qtsensorgestures_shakeplugin.dll,sha256=GnbbDW6puR5rlYHC2fJfJF30bwYNry8MmdggmpMzZh0,36632 +PySide2/plugins/sensors/qtsensors_generic.dll,sha256=jEEjoQe0-T4nWt375g1c7RzAcEckPte8TteHMeDeRKI,47896 +PySide2/plugins/sqldrivers/qsqlite.dll,sha256=YF874isr-AjbZvapkSfIq9jMoO31IqZf4K6hqgBMkL4,1416984 +PySide2/plugins/sqldrivers/qsqlodbc.dll,sha256=yIAzJe8nIaJDTWxWnxImemzgHcvsBZCa5C-JWZbu7wc,103192 +PySide2/plugins/sqldrivers/qsqlpsql.dll,sha256=DaCkN87gdSjBnkVPnx4QcrTkuyGpHjBLEgeZ42fBE6M,84760 +PySide2/plugins/styles/qwindowsvistastyle.dll,sha256=-ZUksgjc6149EWE2ju8bcqFexQ7TnZw40yINzf9R1HY,149272 +PySide2/plugins/texttospeech/qtexttospeech_sapi.dll,sha256=l_Ot2UDcyviCFqq9x_XfvJS4juNSqFn8u_H3ZRygpHM,49432 +PySide2/plugins/virtualkeyboard/qtvirtualkeyboard_hangul.dll,sha256=XASNhNVrL8o5jZqJZRdBdNmqg5_DsJoS_66T8vnzjpo,48408 +PySide2/plugins/virtualkeyboard/qtvirtualkeyboard_openwnn.dll,sha256=Gk8zai92hrL3g4grFippcNTXVWDwRWHqxtBykopjV0c,1531672 +PySide2/plugins/virtualkeyboard/qtvirtualkeyboard_pinyin.dll,sha256=eG1uQQ6ytE6Lk7ryZqzhgPauJg-HeOhj5LY3mqOPvkE,1180440 +PySide2/plugins/virtualkeyboard/qtvirtualkeyboard_tcime.dll,sha256=vo3l5osDrAg9mTcjG3JPU6SAF8FHZos1a-FWDZ_eAOk,302872 +PySide2/plugins/virtualkeyboard/qtvirtualkeyboard_thai.dll,sha256=43kk_4DCqFdVqZ237bt7Whcic6mRAgGB3ZF0j_c2k0I,41752 +PySide2/plugins/webview/qtwebview_webengine.dll,sha256=ALSYZry0WbNcxGP5xZz65gYYINjxcBnsoB7wacH0VyY,41752 +PySide2/py.typed,sha256=w50UHeePmk6OQiSwx3368SpUCtvFYs7rmEr2NKaRHaU,34 +PySide2/pyside2-lupdate.exe,sha256=AmDR_TvwRlKxjT6HOPy3G8c-0Eqd_hOMbOdrpx1B5NA,138008 +PySide2/pyside2.abi3.dll,sha256=PCpcwg_hwAtXg_jEb1081k6bmo5MsUrBLkNjtCsrG9I,162072 +PySide2/pyside2.abi3.lib,sha256=AovRGfpRK8yZ_AgOJQSI1prei3gI3gI6BALy47q8eZM,39692 +PySide2/qml/Qt/WebSockets/qmldir,sha256=F-CMOo3Sw1-SS8-Ak4ixi_WJaqmPb6ECMFM2XNc59ng,144 +PySide2/qml/Qt/labs/animation/labsanimationplugin.dll,sha256=tAimTvMBwY_Rm3qpT9OjmDeOZDWJV3F0xsEZr3cJ_38,45848 +PySide2/qml/Qt/labs/animation/plugins.qmltypes,sha256=ehkvhJa2iOPHmDzYPmYGxNjDoOZMJOvO35SYx8cVw4E,1340 +PySide2/qml/Qt/labs/animation/qmldir,sha256=yk-ntU5finbbRnqvnKaykmExEmBaDSUY9jvlmTTY7ew,87 +PySide2/qml/Qt/labs/calendar/DayOfWeekRow.qml,sha256=F0UdLIddgT_9Zp7IxZX1DaGyiAIAQLhZeBkpVpuQsYk,2709 +PySide2/qml/Qt/labs/calendar/DayOfWeekRow.qmlc,sha256=W7pbANlsJ3NG3CkkvM36h6t0xCUw-8tp3nbn9bylONs,4404 +PySide2/qml/Qt/labs/calendar/MonthGrid.qml,sha256=DGlvOIDLMm99u09OsO2c6VG8ZDfZyUidZW3defWXvwg,2777 +PySide2/qml/Qt/labs/calendar/MonthGrid.qmlc,sha256=sJwpA6tNLI7sl01MqX5-tpoZWH5rIktyZ3CV-OI0Lx8,4912 +PySide2/qml/Qt/labs/calendar/WeekNumberColumn.qml,sha256=HopTZTzg_x3eGEn-1NzI5w4XHresvhpyBJtgeXUbJZU,2717 +PySide2/qml/Qt/labs/calendar/WeekNumberColumn.qmlc,sha256=MOmFlVbT__fUTzQAcpC6eco382xoBuIFtx3xCGb2xWI,4420 +PySide2/qml/Qt/labs/calendar/plugins.qmltypes,sha256=S-KsNaDY2FVGGJV_lfWm9sBHUkMflvqEjR6Lhs27H-E,17167 +PySide2/qml/Qt/labs/calendar/qmldir,sha256=axS3YKOePFVGuY5XJeYeBtKA2nVmm7WBA95d-B2L7vY,193 +PySide2/qml/Qt/labs/calendar/qtlabscalendarplugin.dll,sha256=_eerMMi1Nexi6ROl5zWKkX1I9X4bDQl94yDwR7c68LE,101656 +PySide2/qml/Qt/labs/folderlistmodel/plugins.qmltypes,sha256=XziIxoc5hBPhJzvHOA_fpQy9PVAuuf8_Y7QL1NZvKb0,13525 +PySide2/qml/Qt/labs/folderlistmodel/qmldir,sha256=91uzI9_CJdFx2xEuUJ40zHRQeGy3Eg30sfCFpRDftzk,128 +PySide2/qml/Qt/labs/folderlistmodel/qmlfolderlistmodelplugin.dll,sha256=Zt3CdbqljaxiUz05mTho5G2y2ImM_n-pljraPl_jySU,69400 +PySide2/qml/Qt/labs/location/locationlabsplugin.dll,sha256=ygh8mvkemytaYmGCPpjcXmXs4mPF6sSUBgI_2z2JaKY,57624 +PySide2/qml/Qt/labs/location/plugins.qmltypes,sha256=CH1NmFzCwM-b1vcrU9wxO2x8aFWQiE2RMCedMMpfTSc,9913 +PySide2/qml/Qt/labs/location/qmldir,sha256=zlLfFqFTshiaWrnS8qCxuTN4HMx6i7PkJyCO7sFKSJE,122 +PySide2/qml/Qt/labs/lottieqt/lottieqtplugin.dll,sha256=esLxZUKoko_hT5P_fWdSXvd6LoTaKNcFFiHkS2mgkbg,91928 +PySide2/qml/Qt/labs/lottieqt/plugins.qmltypes,sha256=ghBt5h9kMvka5eq-Xntf_xsQ-V92MV35L43YngPCXUI,3069 +PySide2/qml/Qt/labs/lottieqt/qmldir,sha256=wVLUtunnLPl8164NjwZKp2TZB8ApoITZI_9zgDsqU5o,75 +PySide2/qml/Qt/labs/platform/plugins.qmltypes,sha256=LhpcBXuSHKaqcL3Sjof1vpB_borTS0XdhQTl_m-SpjI,19504 +PySide2/qml/Qt/labs/platform/qmldir,sha256=LAX72WmKMpZIe4t02LI1T8CuOaRVnFqDZwK1mB-m5cA,86 +PySide2/qml/Qt/labs/platform/qtlabsplatformplugin.dll,sha256=Zxmj90C3jTTpk0FSgLaYBQ29Q7zr6Np4ZcdO931fxUU,238360 +PySide2/qml/Qt/labs/qmlmodels/labsmodelsplugin.dll,sha256=5k3RsmGjPzrVTkQJJkFuDHbTVlJ8-Y-3N1Di6W_7TGw,127256 +PySide2/qml/Qt/labs/qmlmodels/plugins.qmltypes,sha256=0C5g9GWrRlEboAb3q7A-72cJK38QsJUeBurHS9C62ng,15611 +PySide2/qml/Qt/labs/qmlmodels/qmldir,sha256=0U7_BqqVNJ8a88cUxW74XFblPQsQ6JMZY_XXjwmKjho,84 +PySide2/qml/Qt/labs/settings/plugins.qmltypes,sha256=eb8SHZd1i095gr7LcdUKOcTvZRYYVyecteU6vITEv-s,1131 +PySide2/qml/Qt/labs/settings/qmldir,sha256=SVIq9ASI5S6KHe2otR9ZHfGsyhYFM2eE631CmeWvAuw,107 +PySide2/qml/Qt/labs/settings/qmlsettingsplugin.dll,sha256=S-i58WC5YX7cAAnJjTMSJLGX-FopJzC2hfryfyAtKdg,47896 +PySide2/qml/Qt/labs/sharedimage/plugins.qmltypes,sha256=fXANKfysJjsVRT_qGxzdJFS-4O6u4MiFYP2aJO9TDUQ,250 +PySide2/qml/Qt/labs/sharedimage/qmldir,sha256=eSWN3IH7aAkGDU5v-9L4dtRS90kQ4OVVQ4GHBQGKWZQ,90 +PySide2/qml/Qt/labs/sharedimage/sharedimageplugin.dll,sha256=VdxhL5rGVtDfnUnU_fIqRwhX5DRKCtBfmZofI-t8dFE,48408 +PySide2/qml/Qt/labs/wavefrontmesh/plugins.qmltypes,sha256=iKaXZ6SHoZbhpNbTREW3LL9LhUKrJ5QW1i6F8_BsaaM,1349 +PySide2/qml/Qt/labs/wavefrontmesh/qmldir,sha256=0XxQJpJq8oWm9fYyzarbAWlQCZWH19WgxNo2w6qZV5I,122 +PySide2/qml/Qt/labs/wavefrontmesh/qmlwavefrontmeshplugin.dll,sha256=jfjFuXPGbRP48QFY3b4mzRnpgkgRA0PUhqOg24ymzWQ,50968 +PySide2/qml/Qt/test/qtestroot/plugins.qmltypes,sha256=HbX2l2cz1iFe4JTdO80P_XZVUMn8F-9sMaTFlZHjnFU,771 +PySide2/qml/Qt/test/qtestroot/qmldir,sha256=52vxQFRFjZIhRZXzXX0tsgwJdDrC5WILvyVi63T9TF4,53 +PySide2/qml/Qt3D/Animation/plugins.qmltypes,sha256=MvUtbOWrZbDUXuycJj0sRzqo7HSei0Xclxi6U1SMsm8,27530 +PySide2/qml/Qt3D/Animation/qmldir,sha256=Zzhpculp39bVihPdwXEsSkAvsHl46vIafyRj2u4qRWs,92 +PySide2/qml/Qt3D/Animation/quick3danimationplugin.dll,sha256=wKuQHchLIdWqFnDgMEcLHRs3sW-p0nM3zHHviaiO_Wg,89880 +PySide2/qml/Qt3D/Core/plugins.qmltypes,sha256=apLcYj6qi8OD2LoAfIjad_qP7QwUaAbAnVWBQQecbMc,20397 +PySide2/qml/Qt3D/Core/qmldir,sha256=12nS7qI7USEM9W7wHzu3zDUATW8xpnVACUs7Hwq07Mc,77 +PySide2/qml/Qt3D/Core/quick3dcoreplugin.dll,sha256=N4WDhwB_GFNM7nUOuqJ9x-xeK2Bk8aAPSCxJ1oYZZi4,64792 +PySide2/qml/Qt3D/Extras/plugins.qmltypes,sha256=AlB7t5lFWf-Zx4advAdDA76RoPPmMY8P1lWSNX-an2E,66719 +PySide2/qml/Qt3D/Extras/qmldir,sha256=ZZi7F7oIXxCXiVHRXSnTfDQXYQbfmL-eBIicHsz1v-Q,107 +PySide2/qml/Qt3D/Extras/quick3dextrasplugin.dll,sha256=hxHVRBzzVQQPL9hr_ibo6Au5xZXI4TRVvWRLY8PPuDw,131352 +PySide2/qml/Qt3D/Input/plugins.qmltypes,sha256=w7HP1aLVPflCo1lAreTYWOrq7tCC6ysA21vNSFjQM3c,25901 +PySide2/qml/Qt3D/Input/qmldir,sha256=sQfCqIlkopIC8-Us88NDTlMOh1GVwkZkABaehDOkfuc,80 +PySide2/qml/Qt3D/Input/quick3dinputplugin.dll,sha256=X2JQM87qF63g7RNw1fO52u1aL27Jd7ox2gcE-i00rFI,87832 +PySide2/qml/Qt3D/Logic/plugins.qmltypes,sha256=3kl9-9BM3F2MSNe5qF4KdvnZ_gVfMYNJjhY3XCJUA64,639 +PySide2/qml/Qt3D/Logic/qmldir,sha256=GAQ8QSMvDEtPjGlhDeSXG2olt5YBvpT0WUFnpBfXU0A,80 +PySide2/qml/Qt3D/Logic/quick3dlogicplugin.dll,sha256=WNKcmDi8w7XRfkIpJTCZ9OX7FYYC79EOgoh2lL5UuKg,33560 +PySide2/qml/Qt3D/Render/plugins.qmltypes,sha256=n_1Ts8g2FTbCYLssbwOo6HaJccvlDGACMpnX06Rb6dI,153426 +PySide2/qml/Qt3D/Render/qmldir,sha256=M0V9VV-zUd-R9a5TssIs4BfEda10xddeFfLmJwWNtQA,83 +PySide2/qml/Qt3D/Render/quick3drenderplugin.dll,sha256=Kbti3dJH-wsGlaKzAop1VAx0Fkco7cZsoygMlm1f24w,322840 +PySide2/qml/QtBluetooth/declarative_bluetooth.dll,sha256=BleC44ab9Wf9m0lFvGG3HbYBjRo2XGZTctwG6PFGwLo,90904 +PySide2/qml/QtBluetooth/plugins.qmltypes,sha256=vu51l3evp1iOX2DRer75cTA2Hdy1ae4n5ZuZ8YZEV04,15195 +PySide2/qml/QtBluetooth/qmldir,sha256=hFDP76dCDo5vc4upzMdvZ60UARVFMbMUKDh0rMMHLyg,108 +PySide2/qml/QtCharts/designer/ChartViewSpecifics.qml,sha256=s5W1ZJcEGXU5ZsaVaHAL4uo49QxCTOEgSNGqE9D1Na8,4987 +PySide2/qml/QtCharts/designer/default/AreaSeries.qml,sha256=aQGymKARzXzCW25auATDiGmeAUZ3ZnVw2gB6zAZTzqg,1719 +PySide2/qml/QtCharts/designer/default/BarSeries.qml,sha256=_eT2c6OQz042zM5iT3q2m-BmYWBr44s3lSGQaedhtF8,1682 +PySide2/qml/QtCharts/designer/default/BoxPlotSeries.qml,sha256=j586QEnrY12fqEoQBd5ENSoPBAiH14XeYJ4FjSiTqd4,1725 +PySide2/qml/QtCharts/designer/default/HorizontalBarSeries.qml,sha256=Fj5dSxeRAw0wzgxRZfv1zwKPhELjAb1G1EpnTUAkxqA,1702 +PySide2/qml/QtCharts/designer/default/HorizontalPercentBarSeries.qml,sha256=aQoi7BTWpVdkLJzALB9IR3O2ny9P4ZRG99peLSEaSio,1716 +PySide2/qml/QtCharts/designer/default/HorizontalStackedBarSeries.qml,sha256=18_lq_GbGVSOC7M8PDzCdY3GUeKMIOccXiMg7uT09as,1716 +PySide2/qml/QtCharts/designer/default/LineSeries.qml,sha256=Lg5rxwoIHZJR3VvIieeURj4N4sX8RwNPN7nZFWAHeMw,1659 +PySide2/qml/QtCharts/designer/default/PercentBarSeries.qml,sha256=gK5A_-nbiy88i5aPeVfd9ts-Hp6e4UiwTI4uPs-hEWI,1696 +PySide2/qml/QtCharts/designer/default/PieSeries.qml,sha256=zfU8UfLlH9cfedvod-3pYUN0maLssg9fJqr6GDiy7P4,1673 +PySide2/qml/QtCharts/designer/default/PolarAreaSeries.qml,sha256=zkhhPGnEJwqcH8uZOoqTR16n6dlKCHJyUETfgnRerCQ,2322 +PySide2/qml/QtCharts/designer/default/PolarLineSeries.qml,sha256=bzeAcnmKBM8uigXv-tgFh3QAoHQrDMprI3r9uxAoAKw,1895 +PySide2/qml/QtCharts/designer/default/PolarScatterSeries.qml,sha256=PykqDoY74bkA9WOYPrHfEQqHqgjjjD4ADvyBOmDB_1s,1865 +PySide2/qml/QtCharts/designer/default/PolarSplineSeries.qml,sha256=0hiLmThXzfNy6hFNcNfbeJ1CUsM_P13xVwmltLBfIqw,1899 +PySide2/qml/QtCharts/designer/default/ScatterSeries.qml,sha256=gczj3heFdWBZNjLO6DhgBHcE2m7nT2dz5rtDjc8OgSA,1657 +PySide2/qml/QtCharts/designer/default/SplineSeries.qml,sha256=rv6Hql2PADUQ7rbiKBeIjmZMl5LRTuCbsYyVWxViQBc,1661 +PySide2/qml/QtCharts/designer/default/StackedBarSeries.qml,sha256=gPhuz6lfILnwgDP0xBiAm6Ub8-7LVDDemusXkTVjXcU,1696 +PySide2/qml/QtCharts/designer/images/areaseries-chart-icon.png,sha256=rw5XoBuHyyANG2T5FD8EY0s28KdEpRQCI2t6mq8nx-Q,1483 +PySide2/qml/QtCharts/designer/images/areaseries-chart-icon16.png,sha256=4hE61jbR8KzaougsRkMQyxwcsfJG7t6BhNALrkv89GE,1340 +PySide2/qml/QtCharts/designer/images/areaseries-polar-icon.png,sha256=_mQ5GbuGbMPOzu9Gzuas0pNy6vyZ59GmHXkTQc8fp7Y,1665 +PySide2/qml/QtCharts/designer/images/areaseries-polar-icon16.png,sha256=MShk2-_yo40mLBVjYOjvvjRe4LOIp3iuEfmlFl-0uI0,1361 +PySide2/qml/QtCharts/designer/images/barseries-icon.png,sha256=eTPXO7QVAL4v6InyxeWeQoT1fHy8bOPiupbSX7qOaV0,1104 +PySide2/qml/QtCharts/designer/images/barseries-icon16.png,sha256=RZkAJGIv5UgpJ0b0QDqGQstdhUjtNE-YNBEkLxUHcxs,1088 +PySide2/qml/QtCharts/designer/images/boxplotseries-chart-icon.png,sha256=OtF1UlH1V53B3vjv-Z_tOsNtckEU03GuV9Jyz4-RBy0,1154 +PySide2/qml/QtCharts/designer/images/boxplotseries-chart-icon16.png,sha256=2AnDrQHSobN0NqvyPvr5KsC8DWikqEnI0UbTWOnE6oA,1138 +PySide2/qml/QtCharts/designer/images/horizontalbarseries-icon.png,sha256=oUE1szLzU_gjgU5BrCJ7SENFr0VghcuaH9P-sc_zN1U,1104 +PySide2/qml/QtCharts/designer/images/horizontalbarseries-icon16.png,sha256=KPg-B2lb2V3hYKNETmUvajhNLF6mjifZkt3tO3CvRko,1098 +PySide2/qml/QtCharts/designer/images/horizontalpercentbarseries-icon.png,sha256=2h4tFuoQ6rv-GwTlmhqq_sUchWFtDiXpT9BoXudrqXE,1124 +PySide2/qml/QtCharts/designer/images/horizontalpercentbarseries-icon16.png,sha256=Femsw69LAdA7z9A8KyGHKlaGfxfl31ie_BK7MrAGtlw,1116 +PySide2/qml/QtCharts/designer/images/horizontalstackedbarseries-icon.png,sha256=Q4PlZUvsrsupbJIyV4Q9GN8wmyiw19ZoYiHwBBcHdoI,1125 +PySide2/qml/QtCharts/designer/images/horizontalstackedbarseries-icon16.png,sha256=F9rxlV2JIARv88RjeX7ACJ7g8-DPCy7LL62gQC_4GEA,1116 +PySide2/qml/QtCharts/designer/images/lineseries-chart-icon.png,sha256=gvY96fH--FCi--8vZ9BAtE4l5Xn3l93dYsBCHyLhT8g,1353 +PySide2/qml/QtCharts/designer/images/lineseries-chart-icon16.png,sha256=jyBlLqSMZ5JrvKGKjyaLTiylQg_V5HAL22KxMd_0p6I,1242 +PySide2/qml/QtCharts/designer/images/lineseries-polar-icon.png,sha256=enKvdm8Rp_VKnVHEQ84usrVFF9-KNElCDHnpMhT7_pE,1661 +PySide2/qml/QtCharts/designer/images/lineseries-polar-icon16.png,sha256=NKWxanciZt00gekH2bXv2yLWaRsNmn0VaVS_9iGs8bE,1379 +PySide2/qml/QtCharts/designer/images/percentbarseries-icon.png,sha256=L8sqk9Cdzy-IsaN2-GLXLQIB8qDv-kiT_k0Ps5UKT-4,1126 +PySide2/qml/QtCharts/designer/images/percentbarseries-icon16.png,sha256=yd2ISj0HA2AwS1xdUrpH2LaC53kDcG5Sk_NVGi9lze8,1114 +PySide2/qml/QtCharts/designer/images/pieseries-chart-icon.png,sha256=KrxTl23-fgE3j576ZHTMUpV434HK5cXyCEk-ho8F_5M,1501 +PySide2/qml/QtCharts/designer/images/pieseries-chart-icon16.png,sha256=hCYB_MGRvXAuqtf9CWNyoCQisXcdznuQavFOBMFvmjY,1285 +PySide2/qml/QtCharts/designer/images/scatterseries-chart-icon.png,sha256=fyGsoxZU8woajABwpR43_Zm93excWxZdVdys8WZF_Bk,1166 +PySide2/qml/QtCharts/designer/images/scatterseries-chart-icon16.png,sha256=5r72gZQWXnnIvXJ37VBVyNz5Z56KJjrWrxAEmtTES3A,1172 +PySide2/qml/QtCharts/designer/images/scatterseries-polar-icon.png,sha256=uTFmmMeTD9TQ5JJLrPkXCdkmND-q3Us3QpKhHLw-dHU,1575 +PySide2/qml/QtCharts/designer/images/scatterseries-polar-icon16.png,sha256=_RmoxhSEjzN6zJZVI2PWEl9IEQRpAkqa3sbftWPPvdg,1344 +PySide2/qml/QtCharts/designer/images/splineseries-chart-icon.png,sha256=y3Wlkk3KJVM7go0g67A6UqKrCPhzf0__-pOgzhs_B-w,1413 +PySide2/qml/QtCharts/designer/images/splineseries-chart-icon16.png,sha256=Udka3dc60JqS5RQM1VnE_Gro9vrG5dqtZQH77tzduvc,1289 +PySide2/qml/QtCharts/designer/images/splineseries-polar-icon.png,sha256=opxKbpkaGCRds_hLQSd2H5FduY4u62Fr-uNlsncbVKg,1652 +PySide2/qml/QtCharts/designer/images/splineseries-polar-icon16.png,sha256=olsA2o5drYHZKw923quGKZOYKvEjkv96jYod6kd4UQk,1357 +PySide2/qml/QtCharts/designer/images/stackedbarseries-icon.png,sha256=n7wsQ9xR89Pc1O4amEFBf43efIvAMKBhvoinBYez5qE,1127 +PySide2/qml/QtCharts/designer/images/stackedbarseries-icon16.png,sha256=Z1msU15F3wmVgLJvixE_MrOdB8uAMZCkGGtCbTnC8q0,1116 +PySide2/qml/QtCharts/designer/qtcharts.metainfo,sha256=vRi4ZaebUUBHUqq6QJXTrjQv9igjZYNBZpUGX1d2vaY,6806 +PySide2/qml/QtCharts/plugins.qmltypes,sha256=YRDksNN2aqky2g7Jn2AkiAx96KFdSgBXcIaeIh-fpK4,120546 +PySide2/qml/QtCharts/qmldir,sha256=IIN5UAFALBnoD_81FX893Vj07MKadGyjgVwXWVG7pBo,70 +PySide2/qml/QtCharts/qtchartsqml2.dll,sha256=s7UFf31SRdZ0VIDlXZdfXEamV3HlMP952mXtKNJbMaw,477464 +PySide2/qml/QtDataVisualization/datavisualizationqml2.dll,sha256=wH7_VOL2rRo96J0ndw3NbNIddTwu4qFRMeY1N4Y3E4c,278808 +PySide2/qml/QtDataVisualization/designer/Bars3DSpecifics.qml,sha256=hK3TnI0soukREDyGmFbNJ_WbuqUPJbgNoT9G_Pd0Bho,16261 +PySide2/qml/QtDataVisualization/designer/Scatter3DSpecifics.qml,sha256=HjBoMuU86T_a_LV1c8l0iSGEkMm8LHnQmEVdiVL5Oec,7706 +PySide2/qml/QtDataVisualization/designer/Surface3DSpecifics.qml,sha256=n6gTRUYBwadDdOKRS_AmkNOCfhbC5qKbkYwHdSdz-7w,14048 +PySide2/qml/QtDataVisualization/designer/default/Bars3D.qml,sha256=8oidAi1ZsfipgdCHItZZPj3XFz6XQMXPfekZFcErk_k,1939 +PySide2/qml/QtDataVisualization/designer/default/Scatter3D.qml,sha256=c2Sl3jyA7UYgBB2DhT8OmMnfmG3M0d5XXP1yKHUwuWA,1871 +PySide2/qml/QtDataVisualization/designer/default/Surface3D.qml,sha256=5EmT5nWgL3EnSjKFvRYztniIX8oyHYjP81BcZ1pOhI8,1963 +PySide2/qml/QtDataVisualization/designer/images/bars3d-icon.png,sha256=sw2Veb3-LVATl4_XOCFll3WVyGcoypDHrPE7Fqn3Hmw,1352 +PySide2/qml/QtDataVisualization/designer/images/bars3d-icon16.png,sha256=BV8kGYX3PKu4HTCrpaTE6jZSE-2JSB66E4xgtbdL47o,1232 +PySide2/qml/QtDataVisualization/designer/images/scatter3d-icon.png,sha256=_OG0BkZppvhtYLtPkcg8iIVuhYUxhMSfckcscWYXv44,1271 +PySide2/qml/QtDataVisualization/designer/images/scatter3d-icon16.png,sha256=6-8S3sD_tecSABJyHrhxzzoWSWeQcUT0UlO7mp_ROMM,1146 +PySide2/qml/QtDataVisualization/designer/images/surface3d-icon.png,sha256=bhSyTtFWqYPCPPbwT3gupBKZHOYFjDAzr8QveHtgKVw,1413 +PySide2/qml/QtDataVisualization/designer/images/surface3d-icon16.png,sha256=icw6Em8cChKdhQWcOlbqqO0wfjMDzrLrlxo7p46oTMQ,1231 +PySide2/qml/QtDataVisualization/designer/qtdatavisualization.metainfo,sha256=OQANP7oENxYEGGTHYnL-pks6lguPkmuGfOYY1iQYz7Q,1272 +PySide2/qml/QtDataVisualization/plugins.qmltypes,sha256=-sr4Tr55-Lss8Urs6-BR2QdjtoMzYE2G-38gDzj_vxM,91545 +PySide2/qml/QtDataVisualization/qmldir,sha256=eXdC1ciCRPfYDNJPPSeBzg8bq6C2ebrocXhtPyWmH3Q,101 +PySide2/qml/QtGamepad/declarative_gamepad.dll,sha256=WH1cFmB-qWiX8bW0kij_XytGAktSf3ZLQKPi_Af_fYI,51480 +PySide2/qml/QtGamepad/plugins.qmltypes,sha256=QZDyrVW5nYb3AHzMZoAOm_yKn4V2ztfD780zFMGgsyo,18653 +PySide2/qml/QtGamepad/qmldir,sha256=ZuI5hXX-ssB_GmMMbRsx09-SUgFYzVdTuqq8XEzlit0,99 +PySide2/qml/QtGraphicalEffects/Blend.qml,sha256=rrZ-CeCIeEhPDBNRqI-CPUqdBjxZ7zP1Y5l0ei8FhkE,19778 +PySide2/qml/QtGraphicalEffects/BrightnessContrast.qml,sha256=mAYL_RI9LuigD8bp6hx2k5DvRJyuaTQ7hLPTYCdpy7E,6585 +PySide2/qml/QtGraphicalEffects/ColorOverlay.qml,sha256=MNlzYO_hPAKXdFE-YXa_aMj6x8h_jgPd5FjIMheEuhI,5095 +PySide2/qml/QtGraphicalEffects/Colorize.qml,sha256=yXvOqBHcWdSA6YVxlqxVPUhjulN4MEC9_H9eM51CmGU,7876 +PySide2/qml/QtGraphicalEffects/ConicalGradient.qml,sha256=8zHhz6Exw4OGA5SDM6FyaIeBdibm11aelUDghN8NYHU,10264 +PySide2/qml/QtGraphicalEffects/Desaturate.qml,sha256=pN_zmVGSZ_rPsvIgM8ZaA_H0cncc7x35HNhxTMdV65g,5079 +PySide2/qml/QtGraphicalEffects/DirectionalBlur.qml,sha256=jmC7fJLZdyONUoCFh7oNymZNYRkni1RFO_B2V8gVyHI,11031 +PySide2/qml/QtGraphicalEffects/Displace.qml,sha256=1XW8jAQZtC2hiBwRKr12-J_j5NEV0u9muqYMk5Hy4j4,7217 +PySide2/qml/QtGraphicalEffects/DropShadow.qml,sha256=8RAfQYFvPFGO93B3y9y-sV9PgRnbO938CVnKPExF_fM,12506 +PySide2/qml/QtGraphicalEffects/FastBlur.qml,sha256=APbsoes6FzDAnWZX6KAPu_rElE1tY6wvtkvWTUj2SRo,13881 +PySide2/qml/QtGraphicalEffects/GammaAdjust.qml,sha256=9Ep3yAZ9Dg_rRc803PkDzl3iWcSB546FPtp7k0DNl2E,6235 +PySide2/qml/QtGraphicalEffects/GaussianBlur.qml,sha256=zJUz1Hxhpw6ZeIKWKocNxLu0ZriLfVSpJ3yPurFoscs,13602 +PySide2/qml/QtGraphicalEffects/Glow.qml,sha256=ketmJMSJxQbFTsr9weyXA6JqZkmVyDO6dLadP0jAmxg,10025 +PySide2/qml/QtGraphicalEffects/HueSaturation.qml,sha256=R-kFTVMJkO1FZQ8qvY6SEqP_XWOy4grrskmz9BQhZgI,7419 +PySide2/qml/QtGraphicalEffects/InnerShadow.qml,sha256=C7ta8uWP82lpN1YNpQLchE15Kibh78c_elFl5BAiQ4Y,12859 +PySide2/qml/QtGraphicalEffects/LevelAdjust.qml,sha256=h7Kt4_nmxcew5fLrLx758OVD1Cj8YqytWM2NOp_XsYg,15891 +PySide2/qml/QtGraphicalEffects/LinearGradient.qml,sha256=IfPiz0L4pClFgAjvoVXG7phP2dLZb6W1ybAnq5u0XuM,10829 +PySide2/qml/QtGraphicalEffects/MaskedBlur.qml,sha256=cLXJQ38JP7wr_USMfAiMCifBFB5fWSxCpDaujxnLAUM,7807 +PySide2/qml/QtGraphicalEffects/OpacityMask.qml,sha256=Lj3nxANLH50zdqgnz0qakQ42QxtdXF0ALC_cKrwFBW4,5585 +PySide2/qml/QtGraphicalEffects/RadialBlur.qml,sha256=ZdFlEnScm48wcmVDSkwJurMYjknE79x0Bl-x9PD7y3A,12345 +PySide2/qml/QtGraphicalEffects/RadialGradient.qml,sha256=kr1m4Ql_IEEaJ3QaNGyI5Htvnsa1YP5aS6L3VrRBiuo,13745 +PySide2/qml/QtGraphicalEffects/RectangularGlow.qml,sha256=1CoC2SCQFm7IeEJfKAYQNMl28wEtGrZmNCfiL4R3W0E,9305 +PySide2/qml/QtGraphicalEffects/RecursiveBlur.qml,sha256=oV7G0AFoszaQBMQG5ROnHBwQgt8vZuoIapuVbiMYnl0,11649 +PySide2/qml/QtGraphicalEffects/ThresholdMask.qml,sha256=LzWT9Pvskhod4DMcRDUFsPcKouQINMWhF14piHRYW0Y,7462 +PySide2/qml/QtGraphicalEffects/ZoomBlur.qml,sha256=V9P7n_TU9dPNM_y_Re8VbMdKO9GjmnbLa-r5j4Z2bf4,11760 +PySide2/qml/QtGraphicalEffects/plugins.qmltypes,sha256=Y1DBfRZnVj6x37p1_lxDh8zD8Y-OoeJmZI9d9GPBzPE,327 +PySide2/qml/QtGraphicalEffects/private/DropShadowBase.qml,sha256=jPAJQfIm-4sVpHb7LKkC5T2LcJIHeomlDc9NOzk7iZY,3802 +PySide2/qml/QtGraphicalEffects/private/DropShadowBase.qmlc,sha256=DuNHFcVN10u4UOgNOTs1nLcd5gziXP3CD5-n7843_i8,7424 +PySide2/qml/QtGraphicalEffects/private/FastGlow.qml,sha256=rSIhKVChyNmwn2-gOT-MDnAs-swFJBsNXfDT0rqc76U,9961 +PySide2/qml/QtGraphicalEffects/private/FastGlow.qmlc,sha256=P6du-ml8Sf_zHXbFCb3ZsjQHZo2Jb_8aQ3YorhGU89M,21704 +PySide2/qml/QtGraphicalEffects/private/FastInnerShadow.qml,sha256=w-39p8NnfZRoHgAsHOYtG-oHSgSmIyvDmFNEcPCeJXg,10099 +PySide2/qml/QtGraphicalEffects/private/FastInnerShadow.qmlc,sha256=mikK05JbpZIEqi6uIEsxOrWTdM8D8oFS0i7WV_lvAH0,22064 +PySide2/qml/QtGraphicalEffects/private/FastMaskedBlur.qml,sha256=0hxVIyJ8wkRDxaM9idepV72iN26uFrnStvvlrtfWhDM,7916 +PySide2/qml/QtGraphicalEffects/private/FastMaskedBlur.qmlc,sha256=sxDsR5uwBKwZ_BgyJCxMIkx1fZ7afhrgrlrb22NHz3w,20108 +PySide2/qml/QtGraphicalEffects/private/GaussianDirectionalBlur.qml,sha256=iD0di_YumO59RZDWR9wbXgskITxkb-n2yRyAa1niJ38,12752 +PySide2/qml/QtGraphicalEffects/private/GaussianDirectionalBlur.qmlc,sha256=s5GwYqvDshXL3Qa4nWRq3Ju01JsVl_ckKuE3yazRKL8,26696 +PySide2/qml/QtGraphicalEffects/private/GaussianGlow.qml,sha256=BNmmNDX2yHI6B0QnR1DjBTddY1Mt19IVUmUBxm3QxpA,3823 +PySide2/qml/QtGraphicalEffects/private/GaussianGlow.qmlc,sha256=D3eWopmN--uwS8UbrrKXXifgrluDe91mJg3iyPTWuxw,7616 +PySide2/qml/QtGraphicalEffects/private/GaussianInnerShadow.qml,sha256=5H20BIjDyq6Bgm9KBwviLy_D0nIPaeY1nnzwJxIbtSQ,4345 +PySide2/qml/QtGraphicalEffects/private/GaussianInnerShadow.qmlc,sha256=yJBhlwllmCcF70Fi6cHt15WuuPhE6VVta0qif3Q8feg,9408 +PySide2/qml/QtGraphicalEffects/private/GaussianMaskedBlur.qml,sha256=mKOfNyvHptyDpOflG1bSqoHkWNsbOqBYULPCLPTC-dw,4041 +PySide2/qml/QtGraphicalEffects/private/GaussianMaskedBlur.qmlc,sha256=If_Q9P3EGRQaGFqeGVeps2gEN3Lnz3giyWlLikfvRZ8,7908 +PySide2/qml/QtGraphicalEffects/private/qmldir,sha256=12gcTAySfwfu-GOhVuJUveC_60ig7qiPE1uAMlqnf98,446 +PySide2/qml/QtGraphicalEffects/private/qtgraphicaleffectsprivate.dll,sha256=_mFTm_2vQgDlQ8fWZ5GRzJuQjgG-cEonxki4BtiJHRA,66840 +PySide2/qml/QtGraphicalEffects/qmldir,sha256=ozrGSk2kGRZup7SY9bVXO4sPPZBox1BsaRHxf665R_A,1016 +PySide2/qml/QtGraphicalEffects/qtgraphicaleffectsplugin.dll,sha256=60Vh_ty1gyAj_iGIOcdhNtMZKBCh2iCeZvVz-zchGC4,71448 +PySide2/qml/QtLocation/declarative_location.dll,sha256=iFJC5a9lWKWBH-KFZaISuuSt7K8L3ouyMTVsfFKKpuY,185624 +PySide2/qml/QtLocation/plugins.qmltypes,sha256=sv2GQEKF9Zw8DjThOB7_MMTkUNHjKOsNFJmIYYHScao,70426 +PySide2/qml/QtLocation/qmldir,sha256=2EbLEOQJqhaiFrQ11QExP0t6Yur-EVjVLrxtjLos820,114 +PySide2/qml/QtMultimedia/Video.qml,sha256=YBpetGkTPkgTUG4959Wej2yj0cgI399mAmNGJiD_gT4,17795 +PySide2/qml/QtMultimedia/declarative_multimedia.dll,sha256=CPJBR8nUeK_KRNzMHiPHf3lLdqnkqG-9CLRR3XPW7vs,281368 +PySide2/qml/QtMultimedia/plugins.qmltypes,sha256=NBhSJMb4LY3gZWusQ-qFUxYme4Yu4SnxNLOsU6VKDs4,79219 +PySide2/qml/QtMultimedia/qmldir,sha256=vjgxIJRjQFqWWnxmoXjU__0MLxDeFo6_hRzAll0sINM,140 +PySide2/qml/QtNfc/declarative_nfc.dll,sha256=-2ZQHrJaL5TiSHrG_D3slAMq7FrIjzceOS1f5dk5xDM,68888 +PySide2/qml/QtNfc/plugins.qmltypes,sha256=FNjomEEHOQZ_3jjtTMu_1YFUqd_v4HIeriCPWpy5lj4,3433 +PySide2/qml/QtNfc/qmldir,sha256=4pk_6SdF6_bKDRVUKT2zRRYcpBmidmMutyuJlG93Jwc,90 +PySide2/qml/QtPositioning/declarative_positioning.dll,sha256=1LUkc9dTgMEEXOAWI5tJ9AIg0ZvPr2CrZ1CmkyKWF3I,73496 +PySide2/qml/QtPositioning/plugins.qmltypes,sha256=iCf7QHoKDaxYeqWLphoXsoZX4oqe8uIRcgKsslPVew0,12433 +PySide2/qml/QtPositioning/qmldir,sha256=0it1dvTnuhmzZmYJsZQxH536RB-NRoumS63NhX8cAIA,123 +PySide2/qml/QtPurchasing/declarative_purchasing.dll,sha256=S2SItPqCTzhtGUTPx_dRlgbqWGtiZaMn8ojt1m3y-Yw,51992 +PySide2/qml/QtPurchasing/plugins.qmltypes,sha256=j2lI5oMnOuyBLam9Y7Fttc1aQBuM9tRRo8NvZkWOQWw,3618 +PySide2/qml/QtPurchasing/qmldir,sha256=8N1wz_79Nz6_OeK9tF6JhqPQfjtCYzVAF6g-Nfuel0U,111 +PySide2/qml/QtQml/Models.2/modelsplugin.dll,sha256=UK66cjUhP5nyc5DIuK_NKmyd1iXJQIbEb1jvNDjVRy8,28952 +PySide2/qml/QtQml/Models.2/plugins.qmltypes,sha256=0XWKszxXQfcKerbh3D3h7_hYyQ4ckfRc3vtrC8zSt10,31557 +PySide2/qml/QtQml/Models.2/qmldir,sha256=YvUPm5rjueZijdJmCxjTJsQXlFhuDXay5A9vpLGC4Kc,90 +PySide2/qml/QtQml/RemoteObjects/plugins.qmltypes,sha256=6q9b8CN2r2u6YXDqHViDk8t5G7ZzwcGKGODvmaqITl0,2504 +PySide2/qml/QtQml/RemoteObjects/qmldir,sha256=RreTK2Q8EfxAJouu3FgASnDxE1xQzeXUvCt4QYZPvBI,91 +PySide2/qml/QtQml/RemoteObjects/qtqmlremoteobjects.dll,sha256=b13T5kFIyfKCg6UK52BNtwpOSH99pbZ0gO7x2762lVc,37144 +PySide2/qml/QtQml/StateMachine/plugins.qmltypes,sha256=Anqu7Cw2pZxxn2dszd9DH-OkKMmiM0Wn-uTiejznpnM,6347 +PySide2/qml/QtQml/StateMachine/qmldir,sha256=U0RBWxkofBY7MDG7B6L86MwW-NBxVoK_gD1JfQVX-d4,115 +PySide2/qml/QtQml/StateMachine/qtqmlstatemachine.dll,sha256=yCVqlOxGNPe-O-cw6s0rJKfVStdKs5xdRIPyRrT4hzA,80664 +PySide2/qml/QtQml/WorkerScript.2/plugins.qmltypes,sha256=3B6EFmXmYeM7e6pp4n6Y_eol173HshUat8wtN9XTGZ4,975 +PySide2/qml/QtQml/WorkerScript.2/qmldir,sha256=PEG7mS0ievwcYTpP7cEnEhxLyXA_Y5jKybCHZv0_Y8k,89 +PySide2/qml/QtQml/WorkerScript.2/workerscriptplugin.dll,sha256=79MQZ0m6wpPYNW-6q4fJn0NI69oOK4Gjd2aR_YVHwBA,28952 +PySide2/qml/QtQml/plugins.qmltypes,sha256=_cbg_ZaGZBcVX8qa4CMzm4nkDKs-nJ5ZPhxuysKoKCE,8979 +PySide2/qml/QtQml/qmldir,sha256=JlAjSxr9gFbC6o2YdJ--efUQHQ2bawXrGyoxPX7yvBs,142 +PySide2/qml/QtQml/qmlplugin.dll,sha256=c_QplKK4VVEmQKkKNOC8ISGeyOhPlFfxoxg9Kbekcqw,29464 +PySide2/qml/QtQuick.2/plugins.qmltypes,sha256=J_LaqQil1wrP4KR3HPXSPt0xOnKrNwHMVgtVoGr9y58,204690 +PySide2/qml/QtQuick.2/qmldir,sha256=tvYwVq3mklqgcNOyvUEz0m6A306icZ6BrZACfhlmGug,131 +PySide2/qml/QtQuick.2/qtquick2plugin.dll,sha256=6B9-fZpQehgKSFg8iL_XIpVIGCuNvS6idbeBabk6F7g,29976 +PySide2/qml/QtQuick/Controls.2/AbstractButton.qml,sha256=c8FlLQMmBJ2dQ-8k0V7d5HTRp2S9ffy487g8KCPZhcE,2196 +PySide2/qml/QtQuick/Controls.2/Action.qml,sha256=Uj3g770s2740KrqwHorrGrDMAdhAridxL4cyRkbbHUg,1846 +PySide2/qml/QtQuick/Controls.2/ActionGroup.qml,sha256=r3r7T4_W6YyttI5tb973jvSNhhfAfR4OqpJ9P_D1ABw,1851 +PySide2/qml/QtQuick/Controls.2/ApplicationWindow.qml,sha256=E673KcCowQtNLHzcLQfECIN7xLAbq48eS38PVlvnhbU,2206 +PySide2/qml/QtQuick/Controls.2/BusyIndicator.qml,sha256=nV8ri3MkPG-mti7bsqfhCkYf2L4p2dxPijUtsrib9yw,2598 +PySide2/qml/QtQuick/Controls.2/Button.qml,sha256=sosfcm3dXLQIxx9H7GLZ9OVVS698gToUQI7YnhnQw1o,3597 +PySide2/qml/QtQuick/Controls.2/ButtonGroup.qml,sha256=E5TQp708ENAzQm5fuVy533X7w_4ili8VL56zNINlKP4,1851 +PySide2/qml/QtQuick/Controls.2/CheckBox.qml,sha256=N2w2-LuB69bXygm8ytlfnvMHuiBS2jjdByKLdInFuvk,4022 +PySide2/qml/QtQuick/Controls.2/CheckDelegate.qml,sha256=-kZ0kyu5tPNXF0hEC0FBoMI6bduHDegIQIHGuSbMXlc,4478 +PySide2/qml/QtQuick/Controls.2/ComboBox.qml,sha256=Gh05_om0KSS6SEr8lIXpy0xbSTrMry22SrJYvp4MtB4,5934 +PySide2/qml/QtQuick/Controls.2/Container.qml,sha256=mjXcfufO10RI1Z_hKh4MKJVphkvMXvDPZDtzqKzr4P8,2175 +PySide2/qml/QtQuick/Controls.2/Control.qml,sha256=w2ww_YPM0Io0x4aE6pX6kCd3EIw6MoVYDctRulZQ0-0,2189 +PySide2/qml/QtQuick/Controls.2/DelayButton.qml,sha256=1TQJ_pTPq59gSFyEcmE7t4BvEGLCld2d8fvbYeGqf1M,4163 +PySide2/qml/QtQuick/Controls.2/Dial.qml,sha256=DwArEfhF7Cuj-o2kDOta3aBQ4N5fdbjwfJiqtEmW4QA,3493 +PySide2/qml/QtQuick/Controls.2/Dialog.qml,sha256=WpxfzyUVEQewpNt4YU75TCFSsaXOJT-moVAeRhHPd9I,3310 +PySide2/qml/QtQuick/Controls.2/DialogButtonBox.qml,sha256=QJE31l8rccWXKzt-W_Reg3YBWe1eV5iAIERdjIShGAY,2924 +PySide2/qml/QtQuick/Controls.2/Drawer.qml,sha256=koJn5WJ6FSF72pi6c5ZZGMus_DW5IDVSNKB9mzA8IzQ,3301 +PySide2/qml/QtQuick/Controls.2/Frame.qml,sha256=2yVhJKmUxjAPnWR-Jyil0CkOp75TIqISxQG0d4Gjs90,2366 +PySide2/qml/QtQuick/Controls.2/Fusion/ApplicationWindow.qml,sha256=fAC4GVhqaAqEOUjM3tQtXkxrgggTJLMC0_FPGPeB8u8,2160 +PySide2/qml/QtQuick/Controls.2/Fusion/BusyIndicator.qml,sha256=0LXs1pvUcFmczYYCiBr4_aH4-JvmbijodPAEKWyAKpg,2864 +PySide2/qml/QtQuick/Controls.2/Fusion/Button.qml,sha256=2Qu63_RbFGM1juxJQFZ5mrFWCH7G8DeXYUubBzHi6FM,2936 +PySide2/qml/QtQuick/Controls.2/Fusion/ButtonPanel.qml,sha256=JPamcTiTcVGfOM4VHmQkNde8VO5IxmwxCA_Z-NRUW3k,3115 +PySide2/qml/QtQuick/Controls.2/Fusion/CheckBox.qml,sha256=Zhg-UNAcFtP6TWix77Mx9wXW6d2mH6ZxMbJUzSvAO3s,3199 +PySide2/qml/QtQuick/Controls.2/Fusion/CheckDelegate.qml,sha256=J7h34DJlg5qsls7GE5l5e0CaNGcJXjSqcVIkvAJ6zFw,3676 +PySide2/qml/QtQuick/Controls.2/Fusion/CheckIndicator.qml,sha256=q3G2X9zLWqce1BCIhejKEZBvPHciamVRAU4OkfkGznE,3722 +PySide2/qml/QtQuick/Controls.2/Fusion/ComboBox.qml,sha256=9JuMP9dEFu7d7GTpjUWgmhOvkG-LsGiKxwCzv20MOS8,6762 +PySide2/qml/QtQuick/Controls.2/Fusion/DelayButton.qml,sha256=B7Q1DcKkJEPuWKCx9f-46b1_NvIB87-6OpAelJaOScA,4553 +PySide2/qml/QtQuick/Controls.2/Fusion/Dial.qml,sha256=oiCpILE2tCsAZL5tEJwMU4APDF3pfXuUC6RBHIsHpHM,3255 +PySide2/qml/QtQuick/Controls.2/Fusion/Dialog.qml,sha256=3KjTFYDuYo-EGRKcldFBr3OPU73OYE-muOMQRjf8wyg,3604 +PySide2/qml/QtQuick/Controls.2/Fusion/DialogButtonBox.qml,sha256=0n5U1xH7FeqUeB50-SZ410Dylqve8iY0ON3nshAgo7w,2867 +PySide2/qml/QtQuick/Controls.2/Fusion/Drawer.qml,sha256=2UUFYYd0pxJMR8cc_SeJvU5P3uHWfX_e6JTzQtXOzyI,3673 +PySide2/qml/QtQuick/Controls.2/Fusion/Frame.qml,sha256=DsYA6VQUprHE6nb56W3dVN7x4taZSj99w-xxSkbPmkI,2474 +PySide2/qml/QtQuick/Controls.2/Fusion/GroupBox.qml,sha256=19dH8FpWcJfnD_zrY1kG9sHxA1TCZ2y7uaWmWQ_ZpUI,3141 +PySide2/qml/QtQuick/Controls.2/Fusion/HorizontalHeaderView.qml,sha256=D-XxBZHlTLkgCJcSn77KV4ZjX6FqexQ_yJONje3PIa0,3065 +PySide2/qml/QtQuick/Controls.2/Fusion/ItemDelegate.qml,sha256=1dMREp7ixxKNWslEh418HYmDDZam8IZlx3KXbWqkhpU,3257 +PySide2/qml/QtQuick/Controls.2/Fusion/Label.qml,sha256=PiLw0j9O4Xy8s6rg6bXpwiHjO4iHQE1L8aCv46epiCs,2085 +PySide2/qml/QtQuick/Controls.2/Fusion/Menu.qml,sha256=x4ONXzdV680KVoGZmzSgoEno7Hs8Ddaqzze_izScqjI,3391 +PySide2/qml/QtQuick/Controls.2/Fusion/MenuBar.qml,sha256=eNvXb7e9PkgdbWNLbQjCegzvPNQwDxzNv1muklcJweI,2899 +PySide2/qml/QtQuick/Controls.2/Fusion/MenuBarItem.qml,sha256=8kl6mgwXEujVkgveUBoGmnQiGpc3zMnBtnY8HNn3h2I,3076 +PySide2/qml/QtQuick/Controls.2/Fusion/MenuItem.qml,sha256=g5tLn1037b2fennfBQ2SvWFYe-bYZ97jzlDeUxC70_g,4312 +PySide2/qml/QtQuick/Controls.2/Fusion/MenuSeparator.qml,sha256=_AnvEoszD93r1tJK_nqxwaXkRgZDD959gNQ6TawksuA,2526 +PySide2/qml/QtQuick/Controls.2/Fusion/Page.qml,sha256=Ow-XD8M5HJ_PXzPQ_wv2lAgYnK-HaJGA9OjiFQvgIS4,2683 +PySide2/qml/QtQuick/Controls.2/Fusion/PageIndicator.qml,sha256=g6B4Jg0UeMuxFK90SSQLz93J2KT3QTCAA9DyCX25wJc,2845 +PySide2/qml/QtQuick/Controls.2/Fusion/Pane.qml,sha256=v0NBftSl4DNQ4NeA99DJnGGCENLmh-dD7vN34KwUO50,2409 +PySide2/qml/QtQuick/Controls.2/Fusion/Popup.qml,sha256=ugen8EifbMr-c3DcqDZ2-A6Nhu2QpOCDjMP1cHGBiFg,2627 +PySide2/qml/QtQuick/Controls.2/Fusion/ProgressBar.qml,sha256=nLSS7B477aYbOZ2zIruja3Q-45Gf_fLuHAJUVjjly0k,4445 +PySide2/qml/QtQuick/Controls.2/Fusion/RadioButton.qml,sha256=Ik9_iRTIAJNYjW5UEfTu3orA9MbtoyqX8etKZFuNVPQ,3202 +PySide2/qml/QtQuick/Controls.2/Fusion/RadioDelegate.qml,sha256=gsjmHzpekYRd5VGddKnnssZxMOCoGMzWCQhBgXuuaT8,3676 +PySide2/qml/QtQuick/Controls.2/Fusion/RadioIndicator.qml,sha256=oDoUygWSNrXBKQvCx9wKnOXgUd802Ifya-pXRdy8C6A,3186 +PySide2/qml/QtQuick/Controls.2/Fusion/RangeSlider.qml,sha256=NmQGznQi1vCpwAzaSPtkHkvnv4dmAI7SMmjzw5RA4DU,3855 +PySide2/qml/QtQuick/Controls.2/Fusion/RoundButton.qml,sha256=5Smqn5ZY-ZhFzscQi5GinK9kCg5g87vhqX_G9ePGbvQ,4110 +PySide2/qml/QtQuick/Controls.2/Fusion/ScrollBar.qml,sha256=L-cr6ePDi6dYu0ltXVw_R7AB6uq0cWt8gvAEVxNWZuQ,3290 +PySide2/qml/QtQuick/Controls.2/Fusion/ScrollIndicator.qml,sha256=Xsvek5GKCgSeKHQbXml_XscWr5YjtJ-ZZl6T_B7kZ9s,3060 +PySide2/qml/QtQuick/Controls.2/Fusion/Slider.qml,sha256=iEO-pDEFdKCSdpnd9LXQ-HL0kMcKQJXHOm714BHNnzU,3031 +PySide2/qml/QtQuick/Controls.2/Fusion/SliderGroove.qml,sha256=TtOdFUFoqTAjJtFdEde1AWAoDzbGIzEifU7ybdC88FE,3771 +PySide2/qml/QtQuick/Controls.2/Fusion/SliderHandle.qml,sha256=WK2jDiFAzoQYr8t_Q1R9mkAyGgCCDtCaUFeYm2w8a3s,3181 +PySide2/qml/QtQuick/Controls.2/Fusion/SpinBox.qml,sha256=CvvaojV2-VvrEJJQ7euN-kHmZ2cy14CUDbBlO4PFAco,6907 +PySide2/qml/QtQuick/Controls.2/Fusion/SplitView.qml,sha256=jtq1F4KFNkpbpNXYX37XF3zeItjI5e5Yy6xSJEOrmj8,2632 +PySide2/qml/QtQuick/Controls.2/Fusion/SwipeDelegate.qml,sha256=MRQQQjSS1bFFodlHkjr6LIpfgQTXJNnrdJ4yVg_0BmM,3364 +PySide2/qml/QtQuick/Controls.2/Fusion/Switch.qml,sha256=xI8Z4tbgUP4U0uWIuidKy--5mC4SgdMD1Djir-KpvjI,3192 +PySide2/qml/QtQuick/Controls.2/Fusion/SwitchDelegate.qml,sha256=fN2nsONgURwQ2UioowvYysbQBCb3cGZBZndlm9Ld2Uc,3754 +PySide2/qml/QtQuick/Controls.2/Fusion/SwitchIndicator.qml,sha256=VH_RxveNy3IyqFGg3_j46FcStrXYZ7M9JqLdzlZQqZM,5133 +PySide2/qml/QtQuick/Controls.2/Fusion/TabBar.qml,sha256=WztuiPqzfyA1Vjo-ZXZJyJCHw6pOiG0pdyvY8MwNjPg,3121 +PySide2/qml/QtQuick/Controls.2/Fusion/TabButton.qml,sha256=STNIxFkGqgGhey2nGPuVHRZ4TyxdSMIn-BZULT-uCgk,3862 +PySide2/qml/QtQuick/Controls.2/Fusion/TextArea.qml,sha256=W72xAythzoLH0BjRLnbxAcEQRe9c3ZkTvgd5N6j1CDs,3392 +PySide2/qml/QtQuick/Controls.2/Fusion/TextField.qml,sha256=0yIDvL8tDKmDfHkCMZOR7fgjwxP5W0g9CgnYP-C6cT4,4120 +PySide2/qml/QtQuick/Controls.2/Fusion/ToolBar.qml,sha256=6nUUvamO5xjw1QHVuF20TNOWNtRVdlHyafSCvC4FrRM,3252 +PySide2/qml/QtQuick/Controls.2/Fusion/ToolButton.qml,sha256=JhgqoMV_7wL2ofny0VYfU19FN6_fTuxP3sqMPHbcn40,2923 +PySide2/qml/QtQuick/Controls.2/Fusion/ToolSeparator.qml,sha256=0umcS8L6t8j_BpAhKUeyL6KZrLJ5gwn-RexNMWO_DGU,2757 +PySide2/qml/QtQuick/Controls.2/Fusion/ToolTip.qml,sha256=lkehurywZjApJMxjTdC1gw7ozI8XDWTPAybK9T9lsFY,3063 +PySide2/qml/QtQuick/Controls.2/Fusion/Tumbler.qml,sha256=DpC-4zKuTH0J16rjo3HuUJyn7zaMeDXr8Dn8gKMarU8,3356 +PySide2/qml/QtQuick/Controls.2/Fusion/VerticalHeaderView.qml,sha256=cx7p0fqw2G7uESSHvcW6Hiv1R9cN6Uwayz_O7RoA4js,3062 +PySide2/qml/QtQuick/Controls.2/Fusion/plugins.qmltypes,sha256=P5mYSaYqwKu7pivJBcnJVVNeFjLiMBEuY_jIhtIBNWU,16065 +PySide2/qml/QtQuick/Controls.2/Fusion/qmldir,sha256=dLLiJoyiQdnZTOiQwQLduVO-CaTgZngyoZaWmkWn_sc,149 +PySide2/qml/QtQuick/Controls.2/Fusion/qtquickcontrols2fusionstyleplugin.dll,sha256=Sh0STIhrC8KHXVVZCJN83nW9jpaBWYb--3fZfJ7OlVs,617240 +PySide2/qml/QtQuick/Controls.2/GroupBox.qml,sha256=LGHiRc1X520uk-hUQ7QpiTkUB5wFcuiJFhZh06lGg3Q,2992 +PySide2/qml/QtQuick/Controls.2/HorizontalHeaderView.qml,sha256=x_dHVbP8Q429y0FZML6q2nnkWlQEJCgtrs9fU47jSJo,2836 +PySide2/qml/QtQuick/Controls.2/Imagine/ApplicationWindow.qml,sha256=tAbgLroozlzOD9wt--z15eM0iTZdVC-TBJF8pGlUkn4,2791 +PySide2/qml/QtQuick/Controls.2/Imagine/BusyIndicator.qml,sha256=wuf1QifnJp6q1ZppSmvaficP_0QNuXHsZWxGPsbAzns,3737 +PySide2/qml/QtQuick/Controls.2/Imagine/Button.qml,sha256=bhcauiYk_CNVqB0Qr2KqC1TSpd6p1QRbfsDR7449xxs,4372 +PySide2/qml/QtQuick/Controls.2/Imagine/CheckBox.qml,sha256=5Y39KWvg3zn66RbYxkh8RCc42NWF9nkXKqMfTjhxSdo,4671 +PySide2/qml/QtQuick/Controls.2/Imagine/CheckDelegate.qml,sha256=3hSyhGa-AfYJmmAeMcz2ruK30iVzkEU1WLMSw0EJ1ws,5024 +PySide2/qml/QtQuick/Controls.2/Imagine/ComboBox.qml,sha256=JaHmJDd35HA2tCRrudM9356LTSMf0Djs_3sxlXJA40A,7602 +PySide2/qml/QtQuick/Controls.2/Imagine/DelayButton.qml,sha256=EirirzVJIxMC7mk9ct2fx3BgqFOuJuVvZyLwic2tYKY,5557 +PySide2/qml/QtQuick/Controls.2/Imagine/Dial.qml,sha256=OwS0uj6OPpbc9B0cu7pA9zT3wVUP0h59W2LJVJx7smE,4328 +PySide2/qml/QtQuick/Controls.2/Imagine/Dialog.qml,sha256=mzLMuv1U32mUWsuJSDiOytbCh8QArYHxUw100WCN0W0,4382 +PySide2/qml/QtQuick/Controls.2/Imagine/DialogButtonBox.qml,sha256=BZUP3eruxVkdy1OHnlH71yQJJt9iVUa0_7Yx14ErWl0,3498 +PySide2/qml/QtQuick/Controls.2/Imagine/Drawer.qml,sha256=9WLHzYKme4Mxe5nQLfcC44KM5CSNyWupATTB_7yfRSs,3851 +PySide2/qml/QtQuick/Controls.2/Imagine/Frame.qml,sha256=oWxKlPvXFIaOAqHz0vB3_LuCoFL23lhtebdcuhRYWFA,3019 +PySide2/qml/QtQuick/Controls.2/Imagine/GroupBox.qml,sha256=lViDVfMrVeQx_bmoCLQ4qu7vpsjGvEMT2kgnYlGpESY,4025 +PySide2/qml/QtQuick/Controls.2/Imagine/HorizontalHeaderView.qml,sha256=x_dHVbP8Q429y0FZML6q2nnkWlQEJCgtrs9fU47jSJo,2836 +PySide2/qml/QtQuick/Controls.2/Imagine/ItemDelegate.qml,sha256=_KZhVMYoN5Z0mPYie4Cy8ZjLyc4YAIJrpJRBnS-4T70,3906 +PySide2/qml/QtQuick/Controls.2/Imagine/Label.qml,sha256=iWkvurnSV05YaAApuBCEUWk-YOkFulnhK7sgbQj8QSQ,2598 +PySide2/qml/QtQuick/Controls.2/Imagine/Menu.qml,sha256=LHReCfAb3dyYDdH9fZvFn4UvjNTTGTbodE-8aG0comc,4174 +PySide2/qml/QtQuick/Controls.2/Imagine/MenuItem.qml,sha256=wI2HHcVHDmETkIP9yRusPxze7FoI8tZbaiNKPQGrofk,5765 +PySide2/qml/QtQuick/Controls.2/Imagine/MenuSeparator.qml,sha256=jFSqMs8E93nZ9lLsEHuBfcFnHCAS26eMVRIiGVrWxXc,3342 +PySide2/qml/QtQuick/Controls.2/Imagine/Page.qml,sha256=VybZ_yM89KWCtJ72sEYqa4wrH43TGsHj2lLp7gS9Ruo,3309 +PySide2/qml/QtQuick/Controls.2/Imagine/PageIndicator.qml,sha256=U-XvQ0BehlMToGmYrk_00YyYBLuvqfPuNzM0MUaz4k0,3719 +PySide2/qml/QtQuick/Controls.2/Imagine/Pane.qml,sha256=mPlwCF75Fy5Qz0FpFyEUCqjhkY5qvqsxWCF2QEF7IOA,3017 +PySide2/qml/QtQuick/Controls.2/Imagine/Popup.qml,sha256=EwWM51BJD-GVc9DlBV_EWubgIBoCosM_3zKlvFMQnws,3481 +PySide2/qml/QtQuick/Controls.2/Imagine/ProgressBar.qml,sha256=drW1Zr3vQvoCpmlerRLadaVUhbpZUOWG6OCTeWFTfgc,5987 +PySide2/qml/QtQuick/Controls.2/Imagine/RadioButton.qml,sha256=18Z87F6jwEdksAbkOrUuzmmtkkT-uugnnym3JisSiso,4484 +PySide2/qml/QtQuick/Controls.2/Imagine/RadioDelegate.qml,sha256=sok8Rv3l0nTYgcUL26Sx7bc578Rhxh7kqoL5evZJCsE,4820 +PySide2/qml/QtQuick/Controls.2/Imagine/RangeSlider.qml,sha256=apFggXaEsHEDXHfJCbXANEuRRGsxtcDbdnlDlbL-bKk,6578 +PySide2/qml/QtQuick/Controls.2/Imagine/RoundButton.qml,sha256=oJsGvzBWre0_zaD-sAaAmBe5v4RJUsrLaNfaxCb2SKg,4387 +PySide2/qml/QtQuick/Controls.2/Imagine/ScrollBar.qml,sha256=47xf_BtvKVO-0MNd4jaX5W6B2rxBMDxEdcNaCNmkLw0,4876 +PySide2/qml/QtQuick/Controls.2/Imagine/ScrollIndicator.qml,sha256=QKACXWhH7qWda-r0Lfx1t7TEqfrC1yQR-oj6Ej7GUGw,4374 +PySide2/qml/QtQuick/Controls.2/Imagine/Slider.qml,sha256=ThBrHh_zLM8rRBeYAJmDnGahT6jTXJ9tvm4obrf7Gc4,5371 +PySide2/qml/QtQuick/Controls.2/Imagine/SpinBox.qml,sha256=czcT71IBFXcCLYkD2IEcDWd0hrt0sY3fiopXWMV819E,6103 +PySide2/qml/QtQuick/Controls.2/Imagine/SplitView.qml,sha256=17NVHz577hlKEH1y43l5kLYwitvL9ivldrXmec9eaac,2796 +PySide2/qml/QtQuick/Controls.2/Imagine/StackView.qml,sha256=Tk6PkUdM9tHfKcd-phylXvzC59wPXZ6cNsw5nUfZihk,3793 +PySide2/qml/QtQuick/Controls.2/Imagine/SwipeDelegate.qml,sha256=lo8yu2TUd1SwsstccoSFN4m5-QL1yOU9M191LwRzTpo,4014 +PySide2/qml/QtQuick/Controls.2/Imagine/SwipeView.qml,sha256=r0zm_RnTWqvn6TkpcBzclt3Y1ei-BErBSwIEXhmwqno,3771 +PySide2/qml/QtQuick/Controls.2/Imagine/Switch.qml,sha256=2MwP-vBKcrO7KUyBNcL0_QtW67pLRQ366pdGBAlab8k,5835 +PySide2/qml/QtQuick/Controls.2/Imagine/SwitchDelegate.qml,sha256=NQCMUsUTMxgVD8VIWaIKdvgNhI__T4XDe5m2ROIdziE,6334 +PySide2/qml/QtQuick/Controls.2/Imagine/TabBar.qml,sha256=VqubiyreazTwxkOfNuv8IACLwg4u2Jy_qupbMrxnc6I,3663 +PySide2/qml/QtQuick/Controls.2/Imagine/TabButton.qml,sha256=QIDAW3w9EhRnpGBkp5R6I3d3yDu80E0QQDlRawWRH10,3681 +PySide2/qml/QtQuick/Controls.2/Imagine/TextArea.qml,sha256=_j7qg-F7BlPJUgSVTBwTSS0XGCpAKc5vh9TsVO3QxX4,4254 +PySide2/qml/QtQuick/Controls.2/Imagine/TextField.qml,sha256=wLeAKNYocB3Nx0n14j6jRwKzizc5a5NOdGgWb8wXDRs,4191 +PySide2/qml/QtQuick/Controls.2/Imagine/ToolBar.qml,sha256=HA9fuDffI_043t3hqGGqiPLRnP9miIGTZC4RHY7ax_Y,3161 +PySide2/qml/QtQuick/Controls.2/Imagine/ToolButton.qml,sha256=OUvcZypthAYBck-WATEl8c9W126sx8TsnDgM3A1KK7U,3830 +PySide2/qml/QtQuick/Controls.2/Imagine/ToolSeparator.qml,sha256=3iuAGUyIjpNMPGnIH1A6sIgmW3YeBANyU5O-9FM9d5g,3546 +PySide2/qml/QtQuick/Controls.2/Imagine/ToolTip.qml,sha256=BsCLXzjPAUIKXbfHkyT5LjIykXAQkDIRqjw5R_nsJVs,3620 +PySide2/qml/QtQuick/Controls.2/Imagine/Tumbler.qml,sha256=ZSNvDygZo1L-TbT1ujV2AAN2ut6-_FKSoZA-ytmOTIA,3981 +PySide2/qml/QtQuick/Controls.2/Imagine/VerticalHeaderView.qml,sha256=HU8_HQ27jK4NOSwlVoicljmhpRsFXke9qr7b0zvUqTQ,2833 +PySide2/qml/QtQuick/Controls.2/Imagine/plugins.qmltypes,sha256=BPQVfoDX1OW27I2ciHWdFi77_IGpBJHcFNwgOh8BtsA,13648 +PySide2/qml/QtQuick/Controls.2/Imagine/qmldir,sha256=8eZHqYE3ZK2bvQ8c8cJBYdy2-IKMPQiQf0sCMsdQsdQ,184 +PySide2/qml/QtQuick/Controls.2/Imagine/qtquickcontrols2imaginestyleplugin.dll,sha256=od0bpwFl7JKL6ZKc-aQGJChAd52zDQhcb92E4TH3FKY,1617688 +PySide2/qml/QtQuick/Controls.2/ItemDelegate.qml,sha256=Tn6e60HqUBE1_yW7nCBwLzmWDK8gYtsRpfFK9LL_Ip4,3287 +PySide2/qml/QtQuick/Controls.2/Label.qml,sha256=Ka1YY94AYkMCfaC0kLR09hCX9CR3V3y2-GFnz1BY_zY,2006 +PySide2/qml/QtQuick/Controls.2/Material/ApplicationWindow.qml,sha256=OZe33DIY-ju2ataKqy03L8xckyIltO5o6emyUwBj6zI,2301 +PySide2/qml/QtQuick/Controls.2/Material/BoxShadow.qml,sha256=iL-uZPJZi0WR46caZOhSDk-UhVtEJ8OG8ms62gSEp3k,2911 +PySide2/qml/QtQuick/Controls.2/Material/BusyIndicator.qml,sha256=uIvvcsyy33IscyTHpbnVt6fa0Vfx5CX0NmosuHZK_hQ,2640 +PySide2/qml/QtQuick/Controls.2/Material/Button.qml,sha256=FW5Z9a2iOPdsDuR-MOWhBRSzXd8UtsrsyQLKbvTJ_pk,4891 +PySide2/qml/QtQuick/Controls.2/Material/CheckBox.qml,sha256=8GeM9ec1NeaDozrohDr_Qn40TIoBWO1hwRmWXK0JYTk,3651 +PySide2/qml/QtQuick/Controls.2/Material/CheckDelegate.qml,sha256=OFnpBsZ-OPBJwLmaR2p__HbxWa2Gcxb5cyrhm73JG7o,4065 +PySide2/qml/QtQuick/Controls.2/Material/CheckIndicator.qml,sha256=igPV_jrQx4P3YR-tntWrerdYlSE7PYuDzqR4UwwqzV4,4154 +PySide2/qml/QtQuick/Controls.2/Material/ComboBox.qml,sha256=s387PA0uPj1aSiMnVf8Pz-m691gt1qeWKwkxmz1EtEw,7689 +PySide2/qml/QtQuick/Controls.2/Material/CursorDelegate.qml,sha256=HIlFdv0gzt2geRnMJAHMnRWpDv-ycq_DHR3asxU3w_8,2616 +PySide2/qml/QtQuick/Controls.2/Material/DelayButton.qml,sha256=HulRO2B7dg4Me8W-j3lKbFot-papRtL15YdEZ7A9azM,4471 +PySide2/qml/QtQuick/Controls.2/Material/Dial.qml,sha256=9DAnRu0JF84UVTS5uB_g-qAlUxz17QSoGnKZT6I05Fw,3543 +PySide2/qml/QtQuick/Controls.2/Material/Dialog.qml,sha256=A2OzEyTJ7yb6K7VAM0d02gplRZUd0GoUnmuDKmv2x-w,4358 +PySide2/qml/QtQuick/Controls.2/Material/DialogButtonBox.qml,sha256=igx3G62OoN5gyLVZXDrd9qbneFQmyst9V_MNeSFSQEU,3207 +PySide2/qml/QtQuick/Controls.2/Material/Drawer.qml,sha256=XzdROnvdDa3P3ENYgttBmaIkEU7EHfjJJQqhSD-UKMQ,3867 +PySide2/qml/QtQuick/Controls.2/Material/ElevationEffect.qml,sha256=TiI2Negnlbt6iQnBXR8nOe5-YHNEGH0wuSm12N2wmAg,10030 +PySide2/qml/QtQuick/Controls.2/Material/Frame.qml,sha256=VLfp0YCSvYrgPpM2VU9Iz1F4wwRFfHD_EH9KL9r4EPA,2710 +PySide2/qml/QtQuick/Controls.2/Material/GroupBox.qml,sha256=vfvIamUdtf32Wj-8t8vZG78pXYRWEro2njF_xKXbOrk,3408 +PySide2/qml/QtQuick/Controls.2/Material/HorizontalHeaderView.qml,sha256=2PMz4-xuBXvjZKBDZ3qOOidiOEwF_PsqUGkYTdv-7pk,2968 +PySide2/qml/QtQuick/Controls.2/Material/ItemDelegate.qml,sha256=1P8wgOZMCRyslqek9vf-jy-Uj0aNcN05JxqkjQL2swY,3570 +PySide2/qml/QtQuick/Controls.2/Material/Label.qml,sha256=uCBTwWKKuXtPwuxLAB5zaLhIOwMFwVzLW6KbL2Hnrg4,2008 +PySide2/qml/QtQuick/Controls.2/Material/Menu.qml,sha256=QTGZ2BRrvxMKJqUHU7P47LiiYVil13wy1rHrIrV7Osg,4162 +PySide2/qml/QtQuick/Controls.2/Material/MenuBar.qml,sha256=xi2we01Cn5vQz4jq75sVrYzbWDIsdlbVW-WTYETrEkA,2604 +PySide2/qml/QtQuick/Controls.2/Material/MenuBarItem.qml,sha256=86Ma487v6q5P2poXP9PtsN2BfWkiNhIFcth09_0oOPM,3442 +PySide2/qml/QtQuick/Controls.2/Material/MenuItem.qml,sha256=p-GyOYxcv_WR_jQnD8gA4t667IEGiXRNWLqqFJVYphk,4788 +PySide2/qml/QtQuick/Controls.2/Material/MenuSeparator.qml,sha256=jP0cQji3IcL_xqu0Ey9WcORaZ2itXLrHQT_cW7-02S8,2400 +PySide2/qml/QtQuick/Controls.2/Material/Page.qml,sha256=3vqp62giSTlWvKOUKr_9jEHsENQGU-vkgUegDDIaS7c,2588 +PySide2/qml/QtQuick/Controls.2/Material/PageIndicator.qml,sha256=96cbWSdE6hqIhDI4tVdrTc2TvJI9eVhdO-DFT3ScGpY,2795 +PySide2/qml/QtQuick/Controls.2/Material/Pane.qml,sha256=FY0fKnwRbaR0if99AiMUp5GYqcEHhPsEt3exmpkGooQ,2594 +PySide2/qml/QtQuick/Controls.2/Material/Popup.qml,sha256=slUH5f79IrrRziHAz3kQxEh4nupd27dNexe9tAWc5v8,3464 +PySide2/qml/QtQuick/Controls.2/Material/ProgressBar.qml,sha256=mseBFrAsG8tNzekRcLELjde_Uy8LgA6BvTyUj1zalWw,2820 +PySide2/qml/QtQuick/Controls.2/Material/RadioButton.qml,sha256=qdrrVi_O6E2o6JZFbF6P7N5OSYQu3b24e7RfngA4y5k,3654 +PySide2/qml/QtQuick/Controls.2/Material/RadioDelegate.qml,sha256=Ac7EZ2m34Wo__IQSPLvtAJpdVl89RVNkx57RwKAAbQ8,4065 +PySide2/qml/QtQuick/Controls.2/Material/RadioIndicator.qml,sha256=MCF14_ryCTyHmzOIcmiPkZNXnKaBte5Ch4B8xIelbdY,2519 +PySide2/qml/QtQuick/Controls.2/Material/RangeSlider.qml,sha256=kRnHDwNHW01a8leTAphrBpSrT6bOtJN7MR57AKVhHE8,4757 +PySide2/qml/QtQuick/Controls.2/Material/RectangularGlow.qml,sha256=5K3i5cFgC-_irjEiEDW1vu4zrLuTldtpEcMrEXwQowA,8309 +PySide2/qml/QtQuick/Controls.2/Material/RoundButton.qml,sha256=a6kb3hi_LK413hgV8qG4yM-GdlkAwWs1mc2WUPf233Q,4702 +PySide2/qml/QtQuick/Controls.2/Material/ScrollBar.qml,sha256=rjJr0E_QeiQX9Vg_Kwa_to7hZpONHGUfMxmPbkZly5E,3771 +PySide2/qml/QtQuick/Controls.2/Material/ScrollIndicator.qml,sha256=pmujws60dmypWabJSXHk-z-ysz_GFX7IniL53sa4tc0,2967 +PySide2/qml/QtQuick/Controls.2/Material/Slider.qml,sha256=vvVKwimGpkq4U52QVo_BoBf-DszNGTH1ahkQ5CnQuSI,3963 +PySide2/qml/QtQuick/Controls.2/Material/SliderHandle.qml,sha256=vmQho7nRWN46lLn3N96FOEMkFLw9KrlJd9Mc4frnVe4,2932 +PySide2/qml/QtQuick/Controls.2/Material/SpinBox.qml,sha256=Vjyok-RHeHbtXbban5gdDm1gZiN4x9S3cFOxImMXxAk,6225 +PySide2/qml/QtQuick/Controls.2/Material/SplitView.qml,sha256=QkjWcD0F1BSA_68Sq-_GPwILIEIhaE1z1klXrdw6i08,3315 +PySide2/qml/QtQuick/Controls.2/Material/StackView.qml,sha256=CcSZ3py233RGT9WmbJpYrxbjT_3j4MZ6wS0ODIGs-tY,3885 +PySide2/qml/QtQuick/Controls.2/Material/SwipeDelegate.qml,sha256=sZ6w7FiUWQFj8J97ZqI2yzDqLGPj55hG6rxAKaN5LxM,3887 +PySide2/qml/QtQuick/Controls.2/Material/SwipeView.qml,sha256=30imQGUn_VI0LL0A1Q1PdJ0CMIagGBTqj8bFUKL8U-M,2830 +PySide2/qml/QtQuick/Controls.2/Material/Switch.qml,sha256=5lyJSuZTJCg2vth4m3Loogio10P4QKc-m2vd7e3RGjE,3612 +PySide2/qml/QtQuick/Controls.2/Material/SwitchDelegate.qml,sha256=yJfdSA0SZD8ko1exlpt4uR2mt-ipUN8gkoVgEKuKjgc,4104 +PySide2/qml/QtQuick/Controls.2/Material/SwitchIndicator.qml,sha256=8BQGZGuzFuea_PJ23cWbxwukbeWFYrEXOmrfM3KNx_Q,3330 +PySide2/qml/QtQuick/Controls.2/Material/TabBar.qml,sha256=35GEnaNS6wpvpQrTAYgBS8juiSdnbvIQi33fVaO6l7g,3437 +PySide2/qml/QtQuick/Controls.2/Material/TabButton.qml,sha256=bYfgxj0qCAt8Zyij49-_j3kgMgNOp3BxAgJZLxvVMrE,3208 +PySide2/qml/QtQuick/Controls.2/Material/TextArea.qml,sha256=zTFRCi2EYPwTHlqU11PQuSP1BibldRMd7JyUy37lQMY,3727 +PySide2/qml/QtQuick/Controls.2/Material/TextField.qml,sha256=CamQ2KcwkdpFH-RtUYF1pNeUuelV_0WSDQ6dj0BjRY4,3820 +PySide2/qml/QtQuick/Controls.2/Material/ToolBar.qml,sha256=ae8cS_Aynrn-Lm3ex-WEo-OEMCUMo9ntzDgYHW5E5jY,2656 +PySide2/qml/QtQuick/Controls.2/Material/ToolButton.qml,sha256=jTr9jRmVlWWfQiEhaKvPVbfRrCEqZhZXO8CD9zzKGyE,3602 +PySide2/qml/QtQuick/Controls.2/Material/ToolSeparator.qml,sha256=WV54leUy8p-cotoyUBUiuMg2BmQjjcgsd5PHOuvMPR8,2489 +PySide2/qml/QtQuick/Controls.2/Material/ToolTip.qml,sha256=YIXwaCFL-wbEU_G2cVdqxYUHKgJjjYceISt__L_Os-I,3206 +PySide2/qml/QtQuick/Controls.2/Material/Tumbler.qml,sha256=HvaU_z12EQQj2UX57VlIuoZYfb0TC7uVPBuI8_fAhyk,3317 +PySide2/qml/QtQuick/Controls.2/Material/VerticalHeaderView.qml,sha256=tY3q3s8ZI02S_MA1wLdzJxtM_czyTNBuMA98gZA8pDM,2965 +PySide2/qml/QtQuick/Controls.2/Material/plugins.qmltypes,sha256=Zc6oh_x48lC6xh5OS2vJ8hyUQ_dMoWxkYbgIV0xb_Zg,19745 +PySide2/qml/QtQuick/Controls.2/Material/qmldir,sha256=vXipRVY16sM18v0pQyOTm3C1kG3DwmyDRBkgQTFX5TM,155 +PySide2/qml/QtQuick/Controls.2/Material/qtquickcontrols2materialstyleplugin.dll,sha256=ykowr702Fka9E__ZC3XSJik7KRkiMIBexck5Kq578dY,751384 +PySide2/qml/QtQuick/Controls.2/Menu.qml,sha256=Bx9cY4Q3u8s8aZL_pp9KRZ8UjQYMNC8dD15sEiIB50M,3132 +PySide2/qml/QtQuick/Controls.2/MenuBar.qml,sha256=6EWDw5thDbwuibnShOaFDU3ID9fCFRujpV1L6pkmJio,2515 +PySide2/qml/QtQuick/Controls.2/MenuBarItem.qml,sha256=JSZ3N89KBDBjG8gLUJZHtgW5A9nCuzmn0PoF3zk59bI,2994 +PySide2/qml/QtQuick/Controls.2/MenuItem.qml,sha256=KtFGpEp3PoEFu6GpoaJVLU9kwJkMfsSOOpjVkEQ5i8Q,4379 +PySide2/qml/QtQuick/Controls.2/MenuSeparator.qml,sha256=WKhIyUWBSg4jPnddwwj3GfqzeQAmaHeQ1mt5dECMX2w,2442 +PySide2/qml/QtQuick/Controls.2/Page.qml,sha256=TUrBEE_VjnDfUUsqtdRrA3ukicuWxkUFo9ZyrabMmIQ,2604 +PySide2/qml/QtQuick/Controls.2/PageIndicator.qml,sha256=Q0M69sH1OlcMjPz9zN-kHYgGy_yfG7liyhLqRs9MCm0,2763 +PySide2/qml/QtQuick/Controls.2/Pane.qml,sha256=sBglApwhOaTs-bwc48E3nRn0o9f4Y1vbwKnbwosTwto,2331 +PySide2/qml/QtQuick/Controls.2/Popup.qml,sha256=dcMjmHYdFuDodeJulYTvZ8_NGh9PKTjzyGpX4XM0zyw,2592 +PySide2/qml/QtQuick/Controls.2/ProgressBar.qml,sha256=cAAHJaQSv4hCRPXnoXCiO8L0uWvmNsQvgwBn-j9P9yg,2735 +PySide2/qml/QtQuick/Controls.2/RadioButton.qml,sha256=EU_1Ag6TWS7YQ2hXbuwjqz-ZkSnYwru3_K-rNgP8KNk,3713 +PySide2/qml/QtQuick/Controls.2/RadioDelegate.qml,sha256=s9u_wUcrXKn1yDasFLyEfoeBVa_YdfgctgCp7HafFIw,4169 +PySide2/qml/QtQuick/Controls.2/RangeSlider.qml,sha256=gaKoffTUSlAjFwGJ386Adv6MQguNaRL-wjJJ1WqNbQ4,5005 +PySide2/qml/QtQuick/Controls.2/RoundButton.qml,sha256=Pwbg8cwiItWsOZSd1qpQxby4i9m_7LAzDKbtYqRsU_Q,3633 +PySide2/qml/QtQuick/Controls.2/ScrollBar.qml,sha256=q-a7r18x5d7aMIZCPsiTW65Cb5RaVTJwGYKz4SBoV_o,3211 +PySide2/qml/QtQuick/Controls.2/ScrollIndicator.qml,sha256=TjOifHDtCSuP9duImm8q39_HgFJaxGLiSc5CiATJ8uA,2981 +PySide2/qml/QtQuick/Controls.2/ScrollView.qml,sha256=4TOAbRCXFvezVfHWQ6GP7mWaZKzB2OJwiaVo6C6007Q,2725 +PySide2/qml/QtQuick/Controls.2/Slider.qml,sha256=K0NdTkSBeliWVMKkHXdYeV3R4Uj939ni4ZLRJ501T9g,3923 +PySide2/qml/QtQuick/Controls.2/SpinBox.qml,sha256=eoohmx6F_b3ipJwWhwbLKcQVMHIMtOnQgkkhBKSfGg8,5365 +PySide2/qml/QtQuick/Controls.2/SplitView.qml,sha256=-jOOEcHVylbUK8sZUsMH767Yn_nmKHCnaMXKQPO8SHU,2605 +PySide2/qml/QtQuick/Controls.2/StackView.qml,sha256=z6-aEyWzYGD550iegKVGLxH5-pnl945N1tbdCxAiLwk,2879 +PySide2/qml/QtQuick/Controls.2/SwipeDelegate.qml,sha256=1GgE7iIxgKA8GLRSXZu-oU6MSlWZCM_7aSS_0jQLuD8,3262 +PySide2/qml/QtQuick/Controls.2/SwipeView.qml,sha256=eQ8c8_qU_Xx-1HQRIeuNrvYD_N8HqcQ9G5s7FHy6r2o,2821 +PySide2/qml/QtQuick/Controls.2/Switch.qml,sha256=0mluELEFTFhqYmTCCk6nCSDZR8LAOhwPuO4SYZePcB0,3947 +PySide2/qml/QtQuick/Controls.2/SwitchDelegate.qml,sha256=VYySjzx0R0yClhGqKdVO7ZxZjgITlD_uiKVGkqgae90,4489 +PySide2/qml/QtQuick/Controls.2/TabBar.qml,sha256=VPqUbQIfeLLjWzjzdpsDb1lDJZ-GwotDYuGE-vy5rQE,2773 +PySide2/qml/QtQuick/Controls.2/TabButton.qml,sha256=d33J73uCeCha-YROD0ZTR9Mh0PW5QlRI4YkfeCV6AIU,2987 +PySide2/qml/QtQuick/Controls.2/TextArea.qml,sha256=-RLE31nCK1P4Xwvwxce-F438Zs4sMoyGWY_WyTGtwag,3313 +PySide2/qml/QtQuick/Controls.2/TextField.qml,sha256=j3kuvqVscvspHfyg2wxdk6F4KSR4EAjjVVBPXxSrWds,3571 +PySide2/qml/QtQuick/Controls.2/ToolBar.qml,sha256=RO8CrS-xaA2cjwfoYPMfZVnTF2iCEdaGakin2fYXefw,2343 +PySide2/qml/QtQuick/Controls.2/ToolButton.qml,sha256=z_oHpLdO05bpdIVHgsqK-I6ok4qZ1qTPAICBM_1gnw8,2998 +PySide2/qml/QtQuick/Controls.2/ToolSeparator.qml,sha256=fLQg4N3gHAtDuX-wBoz9xLSIAiAVgwmPWr8SnTaf3a4,2492 +PySide2/qml/QtQuick/Controls.2/ToolTip.qml,sha256=ns0KJJLX58xBMAaISXp_nvMSFkFzw7-lnWGcUTw2qEM,2763 +PySide2/qml/QtQuick/Controls.2/Tumbler.qml,sha256=-pNwJWX0M2Yew8v1uaGaSR9Z_5LGs9Ra6Dw_70T7on4,3289 +PySide2/qml/QtQuick/Controls.2/Universal/ApplicationWindow.qml,sha256=7oHTLocb_TXmn40W0_u1MrBIsRjNNuhoABmJOdqK7Ck,2442 +PySide2/qml/QtQuick/Controls.2/Universal/BusyIndicator.qml,sha256=K8SDJv8_lsm0W9ufQNWMQkfwo_rtG2FiBT5ikA2yloE,2614 +PySide2/qml/QtQuick/Controls.2/Universal/Button.qml,sha256=C61COwLCARcHoXWloEGQEtdss0dWTit1XRVWMyz-6l4,3611 +PySide2/qml/QtQuick/Controls.2/Universal/CheckBox.qml,sha256=XZSYdNYTw58GfmyK7c7YfIkEHYEsgsjJyZqUD7u-bdA,3231 +PySide2/qml/QtQuick/Controls.2/Universal/CheckDelegate.qml,sha256=zKSK0LIuUXrESHcTVjSY70x0J3PpUjZn-4nqFs4fU4Q,4189 +PySide2/qml/QtQuick/Controls.2/Universal/CheckIndicator.qml,sha256=0ajFu0No0GMYhhTyVhBNELUdCtGTKzsS5-X1AivnGOE,3964 +PySide2/qml/QtQuick/Controls.2/Universal/ComboBox.qml,sha256=MA-KiVp2kdNTzIkPZL8tCehNd_Hhz9TGuxga2Nljvdw,7147 +PySide2/qml/QtQuick/Controls.2/Universal/DelayButton.qml,sha256=BqtHYVp5mG1Vmly3-jm21U0S2-Z8SuwSZTRbMEWa-yc,3597 +PySide2/qml/QtQuick/Controls.2/Universal/Dial.qml,sha256=ynj4MXbGQ8qsaKpJ3f4JMCtay7oJyu0ygEklr7NWwPU,3648 +PySide2/qml/QtQuick/Controls.2/Universal/Dialog.qml,sha256=AHQLxzsnJiufFAA6XIaFRZbyYG_R8OIJQeAH1qZNZ44,3544 +PySide2/qml/QtQuick/Controls.2/Universal/DialogButtonBox.qml,sha256=5k7pgz4I2eLFCrRIiXSIkLgt-3WaS00CWZp--RX5kdw,3141 +PySide2/qml/QtQuick/Controls.2/Universal/Drawer.qml,sha256=J9uVRz1ycLIQNuf35e6mb2PWBuE0zTx6EI3DmJKWcK0,3272 +PySide2/qml/QtQuick/Controls.2/Universal/Frame.qml,sha256=ek6DXjW5ek7ndAQsRdvRsSUNgBQdNRc0JDwv0l-Tjv8,2362 +PySide2/qml/QtQuick/Controls.2/Universal/GroupBox.qml,sha256=95WzviptSliF1UzACh7OlevHB6Ed37riBUbPRmc9B7I,3031 +PySide2/qml/QtQuick/Controls.2/Universal/HorizontalHeaderView.qml,sha256=c1l4n4auh4n2Os81ZmYidc7qFM0vlzz06XJME0CNcHM,2999 +PySide2/qml/QtQuick/Controls.2/Universal/ItemDelegate.qml,sha256=K76eMupJHKp7vOAwZMs-kynWYKAeEHzWvirWK9R3j-I,3649 +PySide2/qml/QtQuick/Controls.2/Universal/Label.qml,sha256=zDJk3g75QWyGnXc27lCjAxDiZ9bsiQ8950Hlam02COE,2013 +PySide2/qml/QtQuick/Controls.2/Universal/Menu.qml,sha256=unKP5MdU_Kim2bGgihFJKP4ooP6_lH3zue60YFit04c,3188 +PySide2/qml/QtQuick/Controls.2/Universal/MenuBar.qml,sha256=x25tJ8LlSZJNYm8wNeUMastcgMHif28uVj3It60H3Ak,2568 +PySide2/qml/QtQuick/Controls.2/Universal/MenuBarItem.qml,sha256=rHP04N-_sWm90O5gTT2nCpNcgTJi9JEX6dnvfO-cRgw,3579 +PySide2/qml/QtQuick/Controls.2/Universal/MenuItem.qml,sha256=rQC6Eb74AyA7O2jQjBfSa0hIVGhH0-3XgC2Wim7MNyM,5073 +PySide2/qml/QtQuick/Controls.2/Universal/MenuSeparator.qml,sha256=vkLRvBlrpuKEnAtTb1uLlTLPmiEriDjojEMeMTXwQMs,2533 +PySide2/qml/QtQuick/Controls.2/Universal/Page.qml,sha256=VOS-deU1W-H-IuCxbFH7gfl0r5_KTEh9eOSsStORshQ,2585 +PySide2/qml/QtQuick/Controls.2/Universal/PageIndicator.qml,sha256=W0LT6Bff_vIPMyi7tz-J4R5S8yxTWd6ZnYmLCdd0f_Y,2769 +PySide2/qml/QtQuick/Controls.2/Universal/Pane.qml,sha256=CerOAyDOPiCtgNL7Op5-bx1CwOsvhMLuVpr0NF8bKMs,2312 +PySide2/qml/QtQuick/Controls.2/Universal/Popup.qml,sha256=_NDM9ftueyD_sG56pKD0nBi7alyDKl47XQ9y64_IV-g,2618 +PySide2/qml/QtQuick/Controls.2/Universal/ProgressBar.qml,sha256=yrrY9lWe8KONh6XHv4UEw0SLg2T8u4ykgQGY0050_5Q,2783 +PySide2/qml/QtQuick/Controls.2/Universal/RadioButton.qml,sha256=0EXKw7s-sY9VXBui4Y240p8LoGGOHAMeQw1OD-syJcQ,3234 +PySide2/qml/QtQuick/Controls.2/Universal/RadioDelegate.qml,sha256=qKDG4WfKIVusytnjQ9EaLyWZCciOOx3IityLBinVJhs,4189 +PySide2/qml/QtQuick/Controls.2/Universal/RadioIndicator.qml,sha256=5EMFzFV5A2HjJ-6aTgMjEHCEi51gb4VOakNjgxCrkb8,3462 +PySide2/qml/QtQuick/Controls.2/Universal/RangeSlider.qml,sha256=xu6AqoVvYYw_63d-uWwymue1fSxT2ZC8NFSLTOq2jJg,5735 +PySide2/qml/QtQuick/Controls.2/Universal/RoundButton.qml,sha256=SDAWUGPOpGgw_jfd71aVoTcvOtzltAzZehd1OQTj0JE,3650 +PySide2/qml/QtQuick/Controls.2/Universal/ScrollBar.qml,sha256=06LFKitOMcVF6r6YIjq7BGpCC0b7kz_6xHhQFNO69Y0,3798 +PySide2/qml/QtQuick/Controls.2/Universal/ScrollIndicator.qml,sha256=MUCdx5GrlpD5rLHFWByeqmAYfBIWmiSQMOwKItB63Wk,3070 +PySide2/qml/QtQuick/Controls.2/Universal/Slider.qml,sha256=TiXpx79SgAZ12TS7JLXyu8e-6R8LE5yub5NNRT41Tqc,4658 +PySide2/qml/QtQuick/Controls.2/Universal/SpinBox.qml,sha256=RLCWtEFefLGQgvWAhuD14XJmlPIGpDZIcqPDYJU9cFI,6648 +PySide2/qml/QtQuick/Controls.2/Universal/SplitView.qml,sha256=sF2i-YJDLWvudgTdBODo_11c0WDkFWpxwnq38df8YZ8,2682 +PySide2/qml/QtQuick/Controls.2/Universal/StackView.qml,sha256=H7LBd58wtDHSv_NZSNt5mrQJUo85dC8jJb9WAeXtt-w,3388 +PySide2/qml/QtQuick/Controls.2/Universal/SwipeDelegate.qml,sha256=oYRbIfn7UWPgDb4MLrZ2GTDcFcvQTSnGJP0HdISagb4,3841 +PySide2/qml/QtQuick/Controls.2/Universal/Switch.qml,sha256=QdOhVk8N8ESlQcvPlszgQExpCbGYwYtfemsHnnZu28s,3230 +PySide2/qml/QtQuick/Controls.2/Universal/SwitchDelegate.qml,sha256=YYOVKnjpUT-QNDJE_3-5TtcfwkMpUz-8-YPxOnOAXgs,4191 +PySide2/qml/QtQuick/Controls.2/Universal/SwitchIndicator.qml,sha256=tD7az7yRVQI2l1znfOHsfwphHkOZxkIoS7vENBniQyI,3749 +PySide2/qml/QtQuick/Controls.2/Universal/TabBar.qml,sha256=LtEGDI4IhuNu9jufOkAddel-9UwW8qnzst2EY9AToBQ,2859 +PySide2/qml/QtQuick/Controls.2/Universal/TabButton.qml,sha256=E8aIAFodOKlD5MlxgUBn44j1KI8eryUyRO5ETkRW-Wc,3082 +PySide2/qml/QtQuick/Controls.2/Universal/TextArea.qml,sha256=VB6I-piefVaWHnlpZF5NpABLq3NC2b5aU0UscWsFOBo,4336 +PySide2/qml/QtQuick/Controls.2/Universal/TextField.qml,sha256=vJvjIDPsLvXJ_xQNfyHRKyk1V99v0oXPRn562JXSDlM,4319 +PySide2/qml/QtQuick/Controls.2/Universal/ToolBar.qml,sha256=MVGehulSJifEK5VoUiYhPO2ewxKZegDVUphHAJ4OZ4k,2359 +PySide2/qml/QtQuick/Controls.2/Universal/ToolButton.qml,sha256=6zU_fvy4x34e0j6mEv7J85TUldXaS-OoUc_5siBywjk,3315 +PySide2/qml/QtQuick/Controls.2/Universal/ToolSeparator.qml,sha256=QvtRTNksnIeoDt5L1kh1jPVPdMwF0zOKt2Mm-8TQmh8,2564 +PySide2/qml/QtQuick/Controls.2/Universal/ToolTip.qml,sha256=jD9KGtSAuBk0qRFxxn1hZR85yH_f_vNIBF1JLm6tMrY,2919 +PySide2/qml/QtQuick/Controls.2/Universal/Tumbler.qml,sha256=OxeVikrdvVc2Ww7kGt1PP4DxzrNcno_xJo5wa3ruatk,3319 +PySide2/qml/QtQuick/Controls.2/Universal/VerticalHeaderView.qml,sha256=_roJrI8bnL2lnQ6sSraERkFMByCm_uGTUf4coaEmEuA,2996 +PySide2/qml/QtQuick/Controls.2/Universal/plugins.qmltypes,sha256=NCJXjv021CRobw_qWKbbbivmBt60yjWEFD7NI9k5lRY,13897 +PySide2/qml/QtQuick/Controls.2/Universal/qmldir,sha256=EVA0Tt6xV_qgKajZOnm2xtgOl7SS1n8atjbvsVbnsZ0,158 +PySide2/qml/QtQuick/Controls.2/Universal/qtquickcontrols2universalstyleplugin.dll,sha256=Ue8R7ZPkETr0MaRZ2DImpAfxRYvGAXK0hFDRXZ0o1BM,611608 +PySide2/qml/QtQuick/Controls.2/VerticalHeaderView.qml,sha256=HU8_HQ27jK4NOSwlVoicljmhpRsFXke9qr7b0zvUqTQ,2833 +PySide2/qml/QtQuick/Controls.2/designer/AbstractButtonSection.qml,sha256=gYVSnRQjUGi80EOt9ViA3-UEzqM4cEnr6sxT3GsFCUc,4189 +PySide2/qml/QtQuick/Controls.2/designer/BusyIndicatorSpecifics.qml,sha256=pvc2wnE7CPaqpctRAZ-7OTrGxXt1715ABdKe_0ipKpg,2627 +PySide2/qml/QtQuick/Controls.2/designer/ButtonSection.qml,sha256=HVcbq6uwTOX-VbHQ8d02LqzDBL3nEl3tDSGNnObfA8Q,3105 +PySide2/qml/QtQuick/Controls.2/designer/ButtonSpecifics.qml,sha256=nNAjeEiOjdyJHLwedxi-GXCIpijQcQDtLWdrlY9XuB4,2192 +PySide2/qml/QtQuick/Controls.2/designer/CheckBoxSpecifics.qml,sha256=OdwEZgwvT8ApcQmLniYaL3EjiHxWX1JYInjdubd3H74,2226 +PySide2/qml/QtQuick/Controls.2/designer/CheckDelegateSpecifics.qml,sha256=FQ_Hrer0dRzZFEDGng2WcfFB5bTEOe-IbchjJWJBqJg,2296 +PySide2/qml/QtQuick/Controls.2/designer/CheckSection.qml,sha256=cKbf-acjtOLzEu1I9bqOPsfGQlL69N1WU1kpTSaolng,2661 +PySide2/qml/QtQuick/Controls.2/designer/ComboBoxSpecifics.qml,sha256=e0prqPFlzq1yEj-bw-waUsrLq_yHBmvzUs8jMKxU-jc,4090 +PySide2/qml/QtQuick/Controls.2/designer/ContainerSection.qml,sha256=_RnY7R1h-D1n_DY8LiinY3LN1NiM-akOuy901eX9CaI,2336 +PySide2/qml/QtQuick/Controls.2/designer/ControlSection.qml,sha256=-nn2jrCR2KcxK58mJGVh_YVY6JGVGno0F49wjj9ACDw,3881 +PySide2/qml/QtQuick/Controls.2/designer/ControlSpecifics.qml,sha256=NPFOWzbeAXQNyKfFcf-M5lvOt_xMJvkG4QwIdztkSuY,2066 +PySide2/qml/QtQuick/Controls.2/designer/DelayButtonSpecifics.qml,sha256=zkUZbksEKCaoD-FT7cftZ5bRmRXdobkcgs3tMxhOEgQ,2736 +PySide2/qml/QtQuick/Controls.2/designer/DialSpecifics.qml,sha256=a4zCwGGk41C7E7nBK_TKr0yPdNtuBURc87exVtax8Xo,5949 +PySide2/qml/QtQuick/Controls.2/designer/FrameSpecifics.qml,sha256=s7qCD_hr9e3nEWVDNCOTqyJ5wt6zfCPOPSQKHxFPFu8,2123 +PySide2/qml/QtQuick/Controls.2/designer/GroupBoxSpecifics.qml,sha256=3tvXeosAJ2K1pa62Xjac99qpdn_mg2DV-GVMxgVi_UU,2579 +PySide2/qml/QtQuick/Controls.2/designer/InsetSection.qml,sha256=ei_60psZ8LPS4NNppEk9ybfcykF5rQHlobzIyHaFthE,4075 +PySide2/qml/QtQuick/Controls.2/designer/ItemDelegateSection.qml,sha256=GNoUyRxxD4z6acZ2ED0mIc1-D7ojx1v2QOHtN37oujE,2321 +PySide2/qml/QtQuick/Controls.2/designer/ItemDelegateSpecifics.qml,sha256=ggfGA8neUdmVQwLdnfVZod9w4KllivYmNyKbWiQ37sM,2198 +PySide2/qml/QtQuick/Controls.2/designer/LabelSpecifics.qml,sha256=locBuTGVH_edzwngfVapHlD0AJ2ZKGyitMNI_DVVBII,2823 +PySide2/qml/QtQuick/Controls.2/designer/PaddingSection.qml,sha256=vtWOukWF8oDvvVhp3EcwvbxGhj05Lby-buMkGvCGCew,3681 +PySide2/qml/QtQuick/Controls.2/designer/PageIndicatorSpecifics.qml,sha256=QWwd0cDgxALBIozbBS37EhA9N2IOctcNF2zR4_LmB_Y,3464 +PySide2/qml/QtQuick/Controls.2/designer/PageSpecifics.qml,sha256=Oi0GKQUovZC7_uflMid1QzQLwzdBlwvh8M17dD9i9g0,3512 +PySide2/qml/QtQuick/Controls.2/designer/PaneSection.qml,sha256=oQUXOY6NyAClh9lL-GWMBYCpkRWADn641tr4sNnFmIc,2819 +PySide2/qml/QtQuick/Controls.2/designer/PaneSpecifics.qml,sha256=s7qCD_hr9e3nEWVDNCOTqyJ5wt6zfCPOPSQKHxFPFu8,2123 +PySide2/qml/QtQuick/Controls.2/designer/ProgressBarSpecifics.qml,sha256=lNqwalsP1WjlueYiqcy3JgfTcdGEmXDdbbrjNV0dNxI,4195 +PySide2/qml/QtQuick/Controls.2/designer/RadioButtonSpecifics.qml,sha256=B5Ed_0sxKN4p-4MiOniHj56XLzWllkKYYcfqeVaSOy0,2133 +PySide2/qml/QtQuick/Controls.2/designer/RadioDelegateSpecifics.qml,sha256=ggfGA8neUdmVQwLdnfVZod9w4KllivYmNyKbWiQ37sM,2198 +PySide2/qml/QtQuick/Controls.2/designer/RangeSliderSpecifics.qml,sha256=asY5tfaFh2KuH5OKpkkOsi1Ix3fHDZuJIxXpaDxideI,6769 +PySide2/qml/QtQuick/Controls.2/designer/RoundButtonSpecifics.qml,sha256=gH__NPY__dINnUEMFwwchUzMs6QMrlBsvy7tOLOXYKk,2757 +PySide2/qml/QtQuick/Controls.2/designer/ScrollViewSpecifics.qml,sha256=z7uD24dUHn7frZS8I56-4pXGDi5AyP5dsI-9Ixwyi_I,3195 +PySide2/qml/QtQuick/Controls.2/designer/SliderSpecifics.qml,sha256=DZ1o__SjRduWT5sV1xJjSI6kgEUlPp4e6GTEd9ZTqy0,6079 +PySide2/qml/QtQuick/Controls.2/designer/SpinBoxSpecifics.qml,sha256=ZksIv7zVjdQG1_h2-lf-_eoGpwm_9eAzYT2QjQYi11A,4921 +PySide2/qml/QtQuick/Controls.2/designer/StackViewSpecifics.qml,sha256=NPFOWzbeAXQNyKfFcf-M5lvOt_xMJvkG4QwIdztkSuY,2066 +PySide2/qml/QtQuick/Controls.2/designer/SwipeDelegateSpecifics.qml,sha256=ggfGA8neUdmVQwLdnfVZod9w4KllivYmNyKbWiQ37sM,2198 +PySide2/qml/QtQuick/Controls.2/designer/SwipeViewSpecifics.qml,sha256=8Nh75kEhOw_4kMLkBp4yaBqHRkbzllycaSfTLeeDNdc,3100 +PySide2/qml/QtQuick/Controls.2/designer/SwitchDelegateSpecifics.qml,sha256=RbM1BfHdu9vjsg01EXBq3_4Uo6QRzq5svpLM1Lc7CmY,2141 +PySide2/qml/QtQuick/Controls.2/designer/SwitchSpecifics.qml,sha256=B5Ed_0sxKN4p-4MiOniHj56XLzWllkKYYcfqeVaSOy0,2133 +PySide2/qml/QtQuick/Controls.2/designer/TabBarSpecifics.qml,sha256=7u8nJlC0ifRDGbVJBXVRWpjOUKsEUDQCu5uif19Watc,3675 +PySide2/qml/QtQuick/Controls.2/designer/TabButtonSpecifics.qml,sha256=B5Ed_0sxKN4p-4MiOniHj56XLzWllkKYYcfqeVaSOy0,2133 +PySide2/qml/QtQuick/Controls.2/designer/TextAreaSpecifics.qml,sha256=x-2Wx81FSPaOVfDwPc8eThorodhAyTq-iaCaFBu2JDU,3437 +PySide2/qml/QtQuick/Controls.2/designer/TextFieldSpecifics.qml,sha256=pKRnMhtKLe-5PzdER9Oy5ZO9C2EnBIq9MGQqMrCDP_E,3338 +PySide2/qml/QtQuick/Controls.2/designer/ToolBarSpecifics.qml,sha256=Pw7Fuag4zRVbpEJqfZGpgw0wC7LsCOBGhViYFdeiDBw,2670 +PySide2/qml/QtQuick/Controls.2/designer/ToolButtonSpecifics.qml,sha256=nNAjeEiOjdyJHLwedxi-GXCIpijQcQDtLWdrlY9XuB4,2192 +PySide2/qml/QtQuick/Controls.2/designer/ToolSeparatorSpecifics.qml,sha256=BQpIQEmHHHRRErHMMhvx7u9hdI2Alwe1yx2UZXjWfNc,2578 +PySide2/qml/QtQuick/Controls.2/designer/TumblerSpecifics.qml,sha256=WMXSRy49NnUEgahhfSIvimZtrPxcE9guQljY3lqawZA,3510 +PySide2/qml/QtQuick/Controls.2/designer/images/busyindicator-icon.png,sha256=AuD6mCVIltgOZT9iI2cOyvWyiekya1ad7aaPubOpJO0,320 +PySide2/qml/QtQuick/Controls.2/designer/images/busyindicator-icon16.png,sha256=JzM5e2VeXOXuOKic5MR-YIzEOcYUeRkcx2njyyBH_Kw,229 +PySide2/qml/QtQuick/Controls.2/designer/images/busyindicator-icon@2x.png,sha256=4M3VBnQGp69ywzq6i7593LZ7NcOqIyylOPAkPTX528k,643 +PySide2/qml/QtQuick/Controls.2/designer/images/button-icon.png,sha256=i1cK_Pk_n_fSKZ0WidNytX35xDKUbCjsVojUNwcN2MA,162 +PySide2/qml/QtQuick/Controls.2/designer/images/button-icon16.png,sha256=vr3uhIzxtgQdX-HgCwZKoW98_1EXo7pyUR5w5pxSuIg,145 +PySide2/qml/QtQuick/Controls.2/designer/images/button-icon@2x.png,sha256=gsGbMbsK7XVGqnGpvZCcgQVtcsC5HAtoRvQnvcA6c4o,259 +PySide2/qml/QtQuick/Controls.2/designer/images/checkbox-icon.png,sha256=ExHdliPUdvrSbsgsZiL1IYHoxVcwnTsOS5ZEEK5J3SQ,258 +PySide2/qml/QtQuick/Controls.2/designer/images/checkbox-icon16.png,sha256=x5tLnDx8lcipp_OHt1ZQA5BKuSdU2Ai2O2A2lad4K9E,230 +PySide2/qml/QtQuick/Controls.2/designer/images/checkbox-icon@2x.png,sha256=gUl97GEPukCStv6nCImO9TeMVWz1BUfbdF8NK7CxXg4,336 +PySide2/qml/QtQuick/Controls.2/designer/images/combobox-icon.png,sha256=Eznw7mevSBcwJGzebCKU51OJy_vYiufpLpeOJMVHfh8,156 +PySide2/qml/QtQuick/Controls.2/designer/images/combobox-icon16.png,sha256=XIZpu69TE1zZqQjH3pCnZeaqYykdTzgYiy_YzrfULrM,155 +PySide2/qml/QtQuick/Controls.2/designer/images/combobox-icon@2x.png,sha256=KlW3KjvEKrApL74SWeJ_T637CMGdsqYBJSOqj7IhylI,185 +PySide2/qml/QtQuick/Controls.2/designer/images/delaybutton-icon.png,sha256=moes6FiETOMCF-aSJ0-W6wZPw-o6_XzSLnNIG7c_PTw,189 +PySide2/qml/QtQuick/Controls.2/designer/images/delaybutton-icon16.png,sha256=9iq1VzlQFV9Srht5EaftVH6Hd4WIPXcwfNWVPd-qDVs,160 +PySide2/qml/QtQuick/Controls.2/designer/images/delaybutton-icon@2x.png,sha256=U_A4Wx5ayg9sr104iV7F9doa-2H5m-j82ghttENCut0,286 +PySide2/qml/QtQuick/Controls.2/designer/images/dial-icon.png,sha256=uSB5KWW4L15qYFBYTK0jF36uA81TFwOFjJfH-eFWKx0,267 +PySide2/qml/QtQuick/Controls.2/designer/images/dial-icon16.png,sha256=XTTBiXCtuhxuHPS_8dEIaWEPnGNFZuZHZEc9yXjNNYk,243 +PySide2/qml/QtQuick/Controls.2/designer/images/dial-icon@2x.png,sha256=jlhl3qUOJkvEVKR0tfkpAqD3vtqihB9-lnuKl0G_4Wo,505 +PySide2/qml/QtQuick/Controls.2/designer/images/frame-icon.png,sha256=NPosRXTTZA7HGrKjge54GZXkdyoGCvpr2PubE1dyGKE,121 +PySide2/qml/QtQuick/Controls.2/designer/images/frame-icon16.png,sha256=L4qBbUL9X5HGEGyJ3O55NpfpgBQZz5Neze6QJGPicg0,117 +PySide2/qml/QtQuick/Controls.2/designer/images/frame-icon@2x.png,sha256=RXZo_HUEKDvxF3ke3D75AYGK6Fc4f94dDh8XtCB0EmY,125 +PySide2/qml/QtQuick/Controls.2/designer/images/groupbox-icon.png,sha256=_5Iwk56v38A8Mfbb-bQtyOX8bnaQRji9CvBGErtsPYg,133 +PySide2/qml/QtQuick/Controls.2/designer/images/groupbox-icon16.png,sha256=m6pR98Ljbm-2iuJfQXA06cv-Z6cmPVIaOTBKNs6FgaM,125 +PySide2/qml/QtQuick/Controls.2/designer/images/groupbox-icon@2x.png,sha256=i_quhGBqO5glK7kDbxNXMPb-xLSXaoMkWdrhAUAl84U,136 +PySide2/qml/QtQuick/Controls.2/designer/images/itemdelegate-icon.png,sha256=q1-9Jlpp80pKq_BkWUzl3Z20l_ngt4EJu7bK4kjuLm4,127 +PySide2/qml/QtQuick/Controls.2/designer/images/itemdelegate-icon16.png,sha256=LtSeXRDz7_aM1X-fXKGOFknXnWRDDNDCfC83nDHixbo,124 +PySide2/qml/QtQuick/Controls.2/designer/images/itemdelegate-icon@2x.png,sha256=Nc0ZBkdYnQBCfgPzR_uaDmj7qhjzVWOT-KmXjIMoe7g,133 +PySide2/qml/QtQuick/Controls.2/designer/images/label-icon.png,sha256=5mgwIzNx0h4N0WE-TNloyK3d3ThFncozLrEYTTAAWy0,206 +PySide2/qml/QtQuick/Controls.2/designer/images/label-icon16.png,sha256=jOX6LCJ9V62_m2i6pCo3ZdgeNOgzLEE-SY6YkHS-hwE,182 +PySide2/qml/QtQuick/Controls.2/designer/images/label-icon@2x.png,sha256=zLw2vjG6W1dlcHU_qSGBuIfpoEj5FVssxjC63y8imz4,284 +PySide2/qml/QtQuick/Controls.2/designer/images/page-icon.png,sha256=ZxVx5RnVE5P2fH72Flq-3yy89qWt7HYNYvdHdzN5FhA,190 +PySide2/qml/QtQuick/Controls.2/designer/images/page-icon16.png,sha256=oRBLfElzZ7BU6nu3sTBCq89uJwG1tP0tMuTwwojGHIs,148 +PySide2/qml/QtQuick/Controls.2/designer/images/page-icon@2x.png,sha256=RwwHzwfwLtKRdBQzqtiKuA8ex2cdZAPew9dPfuE7uAM,195 +PySide2/qml/QtQuick/Controls.2/designer/images/pageindicator-icon.png,sha256=9GT6W7wg9gRxoXR7RV-1mCw043hgKFjrxUooEo1Tyq8,179 +PySide2/qml/QtQuick/Controls.2/designer/images/pageindicator-icon16.png,sha256=xVGY-qzO71WYKj7OvlTuTaXGAt4_JfHKin4ORzkKQtU,158 +PySide2/qml/QtQuick/Controls.2/designer/images/pageindicator-icon@2x.png,sha256=9209tuifk7ipQid5Hfdnk0HEK6ocgdNikLDD6rbLh90,207 +PySide2/qml/QtQuick/Controls.2/designer/images/pane-icon.png,sha256=9oWkjszjhuE1YxvqUCHZUrdvED2VkcXwoI4-4SgJUQg,93 +PySide2/qml/QtQuick/Controls.2/designer/images/pane-icon16.png,sha256=Uqn9k7k9idUhedWUE9nmbDDk3LdyUX0nebULMz2L8rs,92 +PySide2/qml/QtQuick/Controls.2/designer/images/pane-icon@2x.png,sha256=ty6bXN18ySKBelEeRL0nVzho73hBtFakwi_5_GEJLTo,96 +PySide2/qml/QtQuick/Controls.2/designer/images/progressbar-icon.png,sha256=az8do91MosuEFkBwZH0ozJ-ySQ6KvOwkY56n9PN4n9g,101 +PySide2/qml/QtQuick/Controls.2/designer/images/progressbar-icon16.png,sha256=0ml5aCmalq7NkVwiiR2y4l8wWbudWk4gfs0VYRX80qg,92 +PySide2/qml/QtQuick/Controls.2/designer/images/progressbar-icon@2x.png,sha256=p-Z_IZhG1Pggxk8sa-fFjJpfBI7Hje-btjSg3ENHmEE,127 +PySide2/qml/QtQuick/Controls.2/designer/images/radiobutton-icon.png,sha256=p4EXywIMoV8Cs7zP8mguXdU3QIIIcuSb4PWSlGF52XA,279 +PySide2/qml/QtQuick/Controls.2/designer/images/radiobutton-icon16.png,sha256=VtGquyQDkPOvMyJ89HVy3bYEtVgRRHOd7rQipONZgYI,218 +PySide2/qml/QtQuick/Controls.2/designer/images/radiobutton-icon@2x.png,sha256=M6V7KyEOQADHMgDrYurk4_21PnUvL8jO5QMsKWfSvcU,482 +PySide2/qml/QtQuick/Controls.2/designer/images/rangeslider-icon.png,sha256=bxtfjZQ5mhuzcteLlYEBYh0EwgMDJNzlSNVw3BQKno4,269 +PySide2/qml/QtQuick/Controls.2/designer/images/rangeslider-icon16.png,sha256=aGTrWQ7N6hneql2dhYFk6fD-1ls_kvy6-08fK2eL3Kk,231 +PySide2/qml/QtQuick/Controls.2/designer/images/rangeslider-icon@2x.png,sha256=LNvahzLhU1aMFeCIqGWoIvl0OxtDfH2xNBwpFxmfKK0,282 +PySide2/qml/QtQuick/Controls.2/designer/images/roundbutton-icon.png,sha256=mbm4AxK43q9rnzmuPZvtwgU8E-YK9giksEl6wwCr7Vc,229 +PySide2/qml/QtQuick/Controls.2/designer/images/roundbutton-icon16.png,sha256=2-s5k4HyBcWfoltf7umP-q90TqSjOa5C86SXqaQe8u0,186 +PySide2/qml/QtQuick/Controls.2/designer/images/roundbutton-icon@2x.png,sha256=0p4teKle_KuoOR6jWl8cCXvmZr-Hj8uy2RJi1gAhMSk,381 +PySide2/qml/QtQuick/Controls.2/designer/images/scrollview-icon.png,sha256=lcORIgthbpczqdT7jGdUMAad10yjw35N75IVjDobdeI,110 +PySide2/qml/QtQuick/Controls.2/designer/images/scrollview-icon16.png,sha256=OCgky0lo44SxqF3moiLr8261aR9Kc25yk1gP5iqfqoE,116 +PySide2/qml/QtQuick/Controls.2/designer/images/scrollview-icon@2x.png,sha256=BG6R4ZG02584xjEAT_Jhw6OR7WvRCCH8vXWjZ7mQRcI,145 +PySide2/qml/QtQuick/Controls.2/designer/images/slider-icon.png,sha256=Ymh6YfwI5IhWP3be7xw9-hOk1GsbKYntC46XuOooaoA,190 +PySide2/qml/QtQuick/Controls.2/designer/images/slider-icon16.png,sha256=ofPkxbOVXieuJrlq02EcaOo6DIIfeeJuMDcFD3faMNI,156 +PySide2/qml/QtQuick/Controls.2/designer/images/slider-icon@2x.png,sha256=4lSfPt9_BZxzhngKy3uDcoIiZxPfjjNeog6q5G1VgpI,227 +PySide2/qml/QtQuick/Controls.2/designer/images/spinbox-icon.png,sha256=pLYlz4qVFPsJm_bsELs-PLhe7Bll5VnH0qlFtMzp-gc,144 +PySide2/qml/QtQuick/Controls.2/designer/images/spinbox-icon16.png,sha256=itI_yBz1YYLF2KcL6SVTneMbzqDytrVLuFkqca5jRUU,151 +PySide2/qml/QtQuick/Controls.2/designer/images/spinbox-icon@2x.png,sha256=3g2NI6FHGQ6aWh2XgolT0qr3OTgDO-XGSL1iHM6FM_A,178 +PySide2/qml/QtQuick/Controls.2/designer/images/stackview-icon.png,sha256=jQ7ES6U884HIBiSu8Yzolicwvm-OvhWJDLMqC4w0d7c,162 +PySide2/qml/QtQuick/Controls.2/designer/images/stackview-icon16.png,sha256=C-y2-1aQjW6ZI2k_BoXQ0D6KFKZaA7gjdlkUuusHvys,151 +PySide2/qml/QtQuick/Controls.2/designer/images/stackview-icon@2x.png,sha256=ixlq_6Ehs0I7LlUrbAAPTfQZ3OqThHB95avPXrbSZTQ,167 +PySide2/qml/QtQuick/Controls.2/designer/images/swipeview-icon.png,sha256=5YVq1PqVy7rUn40zcFVQp0pxj9s5jrgucX7Yt8gvFNE,163 +PySide2/qml/QtQuick/Controls.2/designer/images/swipeview-icon16.png,sha256=mN00gGCJQ9vP35w1UITwOYi9ekeVZME-7lK2A9dEyQ0,152 +PySide2/qml/QtQuick/Controls.2/designer/images/swipeview-icon@2x.png,sha256=xsy4laH7UUIyl6AhlOTZoawuWnvWkJA_7KRYWC-Q3s0,184 +PySide2/qml/QtQuick/Controls.2/designer/images/switch-icon.png,sha256=yPbUyxhpdQtRLczppgX-liXt12EXJT3EG64MPU3LDJc,205 +PySide2/qml/QtQuick/Controls.2/designer/images/switch-icon16.png,sha256=hpA5OlGHAM7QDaEyLCQ4um9kmMVK_cMJVg6N6hqVMRk,160 +PySide2/qml/QtQuick/Controls.2/designer/images/switch-icon@2x.png,sha256=d8u48iOoMFuAQV6YJ_luLv58AKGpR-NtMpdx-_kCgqM,314 +PySide2/qml/QtQuick/Controls.2/designer/images/textarea-icon.png,sha256=WiZtcAAUlsLqkRI-pZUig5QlfpN-DfGfPz6V_6AKDEc,149 +PySide2/qml/QtQuick/Controls.2/designer/images/textarea-icon16.png,sha256=QejiUqvspJvW778VH-AqzxIP6reYCHXUbupajmWdlmo,133 +PySide2/qml/QtQuick/Controls.2/designer/images/textarea-icon@2x.png,sha256=9RzhM918su10yNq4XndcRucFv8kdYhKo0EsMVDLIIqE,163 +PySide2/qml/QtQuick/Controls.2/designer/images/textfield-icon.png,sha256=3QRT_QT_qa7fWqyXj9Ty4iEH-0bW8oacusTeWQPhUAo,154 +PySide2/qml/QtQuick/Controls.2/designer/images/textfield-icon16.png,sha256=mo8-sqFOxVF0lfaHQCNR-74uBqBEAdA9KU4lRJE7YvQ,147 +PySide2/qml/QtQuick/Controls.2/designer/images/textfield-icon@2x.png,sha256=hbjdvDcHiknxUfK_8ICzPbVLbgwqj-agRLg9mjFIots,172 +PySide2/qml/QtQuick/Controls.2/designer/images/toolbar-icon.png,sha256=CRxg9rp0iZqwvSr8RUdVZZ-n07QKmh8fLo_1V6vKaX4,131 +PySide2/qml/QtQuick/Controls.2/designer/images/toolbar-icon16.png,sha256=tSZdEkVAoD4fp97DFgshCwukglfScrd_L5jMF6zRx1Q,114 +PySide2/qml/QtQuick/Controls.2/designer/images/toolbar-icon@2x.png,sha256=KGp-X0fB-PZwCP8TQ-zjXNUjauloLmVWOYxNGWgrJAY,140 +PySide2/qml/QtQuick/Controls.2/designer/images/toolbutton-icon.png,sha256=kl1sH5NJGbWeHz4UKy56OLDU9tXKL-Z--38jeyLDAKA,141 +PySide2/qml/QtQuick/Controls.2/designer/images/toolbutton-icon16.png,sha256=FYx1NTHXm5J804QSVoj6gT1Cgsyl0je-fom43Wbn_YU,128 +PySide2/qml/QtQuick/Controls.2/designer/images/toolbutton-icon@2x.png,sha256=q2SOOJ7EKCdHMA4AopOh3X3bVvY-Iy2iQdm2amYAlZA,158 +PySide2/qml/QtQuick/Controls.2/designer/images/toolseparator-icon.png,sha256=sRmP61AlVKJU-cHz2GwZNOeTh2YGzhkjRY0IOM4e8RQ,111 +PySide2/qml/QtQuick/Controls.2/designer/images/toolseparator-icon16.png,sha256=t7ABD0X1hqJCJfB1dq1FaTJ-6UjFHFj3dEXGcJYixfY,123 +PySide2/qml/QtQuick/Controls.2/designer/images/toolseparator-icon@2x.png,sha256=W0Gy9TZ1FrCBOeMRUKxIwWolYTa5bC0z7Lu1AqqCQOw,131 +PySide2/qml/QtQuick/Controls.2/designer/images/tumbler-icon.png,sha256=ZrwYsPFpzzwXwe6Vk4tOal9RdZSneZg56yRGjwXqBRE,132 +PySide2/qml/QtQuick/Controls.2/designer/images/tumbler-icon16.png,sha256=36f9DcpxLHe6tBYebo1cLf7tdtO_11t6GUv9WYjrVeE,127 +PySide2/qml/QtQuick/Controls.2/designer/images/tumbler-icon@2x.png,sha256=fS7hXcIpeuTG43begVewDxNh_JP-N0sqFw9LnS-QUQ4,153 +PySide2/qml/QtQuick/Controls.2/designer/qtquickcontrols2.metainfo,sha256=PvnetLp_Jfwv3GtiUNqDuNRtvYr7k-k3jYVWg_yRjGk,15567 +PySide2/qml/QtQuick/Controls.2/plugins.qmltypes,sha256=hq3EPS-w46ySXn561UXHcdXLRUI_DjUtaMN5_JogU2A,33341 +PySide2/qml/QtQuick/Controls.2/qmldir,sha256=e0BBdbuOKw04IudTIMjW0Jxhu1P0UTwjWn0ErH00_Vc,140 +PySide2/qml/QtQuick/Controls.2/qtquickcontrols2plugin.dll,sha256=zLsKAXwKbSWThaXpEHaOzNqgclW8Oug13cbKNMGvE7w,651544 +PySide2/qml/QtQuick/Controls/ApplicationWindow.qml,sha256=idrLiAeY3kBDQ7fHxgGWTqnbjJTG2A6USI8WtMtoehA,10075 +PySide2/qml/QtQuick/Controls/ApplicationWindow.qmlc,sha256=6eJwqwlR4aGtx1Vxx44BzBejR4nh4gDJVqhrYNyCHAk,14112 +PySide2/qml/QtQuick/Controls/BusyIndicator.qml,sha256=X4-5Xe4SQvqYHAIB2C4AlIgMiPmOu3UW1faSpjy2T48,3172 +PySide2/qml/QtQuick/Controls/BusyIndicator.qmlc,sha256=S7DkXU6JIDB2ol-4KWHQUR4KRiqBgApiyNCvf-JGQVI,1840 +PySide2/qml/QtQuick/Controls/Button.qml,sha256=4w8ldICbSj1oBM1kBf1WoetZ8OvWP8z63ifMEuRcnqo,4722 +PySide2/qml/QtQuick/Controls/Button.qmlc,sha256=V_aek7dAwhO7XywK_Z_Zpezs5yRG2nI3t_9FyXKoU8s,6288 +PySide2/qml/QtQuick/Controls/Calendar.qml,sha256=1bw0O3mAPbsfKOKp6IYU8H25LQSruyyH35qD3_R_wCE,14053 +PySide2/qml/QtQuick/Controls/Calendar.qmlc,sha256=CpSJ7BjV1la6g3qZe8Rnbl0tK1Futyf4K7QLTDQj93o,11360 +PySide2/qml/QtQuick/Controls/CheckBox.qml,sha256=wpcvhcpLzx1fETZORsKX1w9hH0P3YY_X53tCE2PjpL8,7217 +PySide2/qml/QtQuick/Controls/CheckBox.qmlc,sha256=EcgDA0Pxo3Bj7fWrE-XdD07c-PpTzg1UBsaulDbO2Mw,5416 +PySide2/qml/QtQuick/Controls/ComboBox.qml,sha256=7I1tYgMdFkjaD3zxdOf9cHr3POytOnsdU7tv8Gzubu0,26551 +PySide2/qml/QtQuick/Controls/ComboBox.qmlc,sha256=zLSFElLbZHqhAXplQn5TP7CnUPXq5zSpL8bmSGuw604,32600 +PySide2/qml/QtQuick/Controls/GroupBox.qml,sha256=Ejxkd3PV2IWj2y9eW7-xO1HyyIaXg860jV-Tyw40AeM,9280 +PySide2/qml/QtQuick/Controls/GroupBox.qmlc,sha256=PFSMR4-3Ar0jFwxIihC2DbFPhQbldUBQwg5xkZ66HhY,11916 +PySide2/qml/QtQuick/Controls/Label.qml,sha256=8p1vnTUfcfzZBplsajN5WJMz21PoZyeL0P7cZQSprkw,3212 +PySide2/qml/QtQuick/Controls/Label.qmlc,sha256=x0kKRF8eCEPijcwNagLiSBSWI-A7my9Qi9krH6cr4-U,2456 +PySide2/qml/QtQuick/Controls/Menu.qml,sha256=4N9-e9ZCqlNef_1cGz6joeIByAtVR0mwVIOr4yLmI_s,5447 +PySide2/qml/QtQuick/Controls/Menu.qmlc,sha256=NpDu6rbBPwndq2kfET-ObZNsJUjlz29JFkdlqrOvMgU,6360 +PySide2/qml/QtQuick/Controls/MenuBar.qml,sha256=0AMZw5xdiroy1IDop1Q7fpspE5Uf4kA3xdyJ7ff3sIQ,13079 +PySide2/qml/QtQuick/Controls/MenuBar.qmlc,sha256=qubsBsegBAL4HJHrp26rbKkoQyI0QiVG-72Bb4LptZc,25688 +PySide2/qml/QtQuick/Controls/Private/AbstractCheckable.qml,sha256=8exrNiC26ws9Q1zpJgf8PmoilxZZWTi1ui5ha4-tW8g,6050 +PySide2/qml/QtQuick/Controls/Private/AbstractCheckable.qmlc,sha256=o1qQ2jDQvYV-TnSjozAPNipmbmvJ0Nbuz6D00Ui8SEM,8988 +PySide2/qml/QtQuick/Controls/Private/BasicButton.qml,sha256=FlG8nAvMMhv8FGLU3mpRAH3JM7FZmAZGZW50szziOdc,8298 +PySide2/qml/QtQuick/Controls/Private/BasicButton.qmlc,sha256=u9U3KigBurLFYOhz68rALaqa90SrjLZ5GjHl0plewRM,14344 +PySide2/qml/QtQuick/Controls/Private/BasicTableView.qml,sha256=0cbwQM3ceEmNX8fi7jsqiulPF3LwSvd-I0n2C68Ykyk,33191 +PySide2/qml/QtQuick/Controls/Private/BasicTableView.qmlc,sha256=J-4-_X3SrAc753hbQmuck2t8dD4gBo6cW2PwMm963LQ,49500 +PySide2/qml/QtQuick/Controls/Private/CalendarHeaderModel.qml,sha256=9OosNUYvdrFCIx3IO1NrH5PwMDeb4RW6oTGTTKtNgCE,3841 +PySide2/qml/QtQuick/Controls/Private/CalendarHeaderModel.qmlc,sha256=vYh34VLYTEIuEPQW4Ztgr9IOhQs7Z03TnXouFrLFaUc,4668 +PySide2/qml/QtQuick/Controls/Private/CalendarUtils.js,sha256=ceeyIK-bYrLryu5bk9Q1xaM7xoSM8p94W84IKFjBAKs,5714 +PySide2/qml/QtQuick/Controls/Private/CalendarUtils.jsc,sha256=ByWN-ianEcc7hmCjVI5ttnCZ3lDWP1d4rCyvzTG61d8,3384 +PySide2/qml/QtQuick/Controls/Private/ColumnMenuContent.qml,sha256=l1u8gNovG9BX8P68j08vTLpzCHXyTx3RqxmrnBQkFEw,9417 +PySide2/qml/QtQuick/Controls/Private/ColumnMenuContent.qmlc,sha256=SOO5JhQmlteXzfTCYZu6YmM1mvsROM4jSj8CIxB2-Jg,21192 +PySide2/qml/QtQuick/Controls/Private/ContentItem.qml,sha256=6ryDIr4mNkYhq7BVyPxgVnSW8DKDzLKd9SKC5an8HLI,4611 +PySide2/qml/QtQuick/Controls/Private/ContentItem.qmlc,sha256=tpKgF-TDsfZpoFbbnkO2xHiONTYYUoo3NfIUEym1mXw,6476 +PySide2/qml/QtQuick/Controls/Private/Control.qml,sha256=rmDHYdFt8c_DMI3x1gDVrtQDuVN3tWuHClsIr5_uR2o,3391 +PySide2/qml/QtQuick/Controls/Private/Control.qmlc,sha256=kw_Dk2aSS3Dh9Yw4ho15DVxOioPgIWvyyVXvMvHK4l4,4768 +PySide2/qml/QtQuick/Controls/Private/EditMenu.qml,sha256=RrY9kP80NkRQbXiMbu65mVb1Wmy-KX3dmY_HQ4GWuWg,3383 +PySide2/qml/QtQuick/Controls/Private/EditMenu.qmlc,sha256=ar1Df-OpL_68A-MjeEFoljkIophia8kZ82zSumOrrLE,4436 +PySide2/qml/QtQuick/Controls/Private/EditMenu_base.qml,sha256=B25HFES3pRLQ0Z85ttyDb3pQ1QSQWcsmoK7MzN71VDk,5989 +PySide2/qml/QtQuick/Controls/Private/EditMenu_base.qmlc,sha256=-tZIcuvPQ6k27w8qIjrdCFoBxErFsl0S5ZNG65wZC2E,14016 +PySide2/qml/QtQuick/Controls/Private/FastGlow.qml,sha256=VF3o8WTKX0nqc_eggwX7EoBrx7JlT92bCxTCdb90PPU,9830 +PySide2/qml/QtQuick/Controls/Private/FastGlow.qmlc,sha256=-ymSgQ6o4vO2PdA-GzTzcqRUyqXt7qjp1TtXkVC3doI,21368 +PySide2/qml/QtQuick/Controls/Private/FocusFrame.qml,sha256=pMbwkE_jpCiYpKa2YkkQda5dEKggFyBYv4jNFWxzOyw,2653 +PySide2/qml/QtQuick/Controls/Private/FocusFrame.qmlc,sha256=hBB9mn1V5_oOGF5N-0P-6mvMUZUv_GUIYyxjaMb5xiU,3948 +PySide2/qml/QtQuick/Controls/Private/HoverButton.qml,sha256=837myBpAIwnMSetpqVAKQeebRmDrjYZV4x0u5lVxQ84,2931 +PySide2/qml/QtQuick/Controls/Private/HoverButton.qmlc,sha256=cTrmKbu42yoUztk19fiGR7U8hmP185Mk1k9EIDQOjfo,5640 +PySide2/qml/QtQuick/Controls/Private/MenuContentItem.qml,sha256=zRDiOBLJnrY_w0wiao-nOa5NKtdRu8Ny3jf-HY7lU8s,11186 +PySide2/qml/QtQuick/Controls/Private/MenuContentItem.qmlc,sha256=KG1c5jsB3yC8f1VZNJa0_l31Wlr5TdXN_T8ZQS3NCP8,26160 +PySide2/qml/QtQuick/Controls/Private/MenuContentScroller.qml,sha256=x-xUQEwxaHJr2MhO384DABOcTI0AM97ebHW9vxgzAyE,3156 +PySide2/qml/QtQuick/Controls/Private/MenuContentScroller.qmlc,sha256=egjwv6FnpnfUfPUn3SStqxk3mp_FM5RAOen_ik4LaBU,5160 +PySide2/qml/QtQuick/Controls/Private/MenuItemSubControls.qml,sha256=dufxcP4VfHjn2ALcB5jK_XSbW1UNKj_esmmfvJwLCas,2220 +PySide2/qml/QtQuick/Controls/Private/MenuItemSubControls.qmlc,sha256=nXRQ6uFjpCJErYt2Crb6QTMWCn3G2_08Cqt3F-sZV90,916 +PySide2/qml/QtQuick/Controls/Private/ModalPopupBehavior.qml,sha256=rSJr-vRU4_wUcN_fSHBgvMTOh8bB4E-fQdP-4rFjGV4,4605 +PySide2/qml/QtQuick/Controls/Private/ModalPopupBehavior.qmlc,sha256=OOiBAv9gR5hlr35KYsteufUiQJlyPPZEXde51bJtg3M,7412 +PySide2/qml/QtQuick/Controls/Private/ScrollBar.qml,sha256=D19Rz-6D57q1E_av8jKVilSVLTjWX8arUtCoc7_sgHc,9203 +PySide2/qml/QtQuick/Controls/Private/ScrollBar.qmlc,sha256=jTq8g6szCnsDfEmo77ln8k9w8gHHCjhOw_1B9eZpxpA,17008 +PySide2/qml/QtQuick/Controls/Private/ScrollViewHelper.qml,sha256=yFDuTzp65Bg0cAk5zRWYRdm6st08FaH78Ljstlg0LaE,9257 +PySide2/qml/QtQuick/Controls/Private/ScrollViewHelper.qmlc,sha256=QKnZ8d-SgBs3u8KdwT22TOKwlEYUzNPPhxHBep_YLkY,20956 +PySide2/qml/QtQuick/Controls/Private/SourceProxy.qml,sha256=PDNevGCmDrzqOypGijQbKvOTXfCriPEI9Rem3bHk7ig,4873 +PySide2/qml/QtQuick/Controls/Private/SourceProxy.qmlc,sha256=89rZTKjcnO1NC1U9GTsstCxH4P2H3rBE-ENoCmJoSls,5700 +PySide2/qml/QtQuick/Controls/Private/StackView.js,sha256=SBgNNeNn7_RoktmeW7BSEPCTD4fxqy7hLJ9kIojgODY,2361 +PySide2/qml/QtQuick/Controls/Private/StackView.jsc,sha256=l3u9an5zHcKMzhw2rSUWqHEwMgYJA8Hal7OLcgO7Wy4,1224 +PySide2/qml/QtQuick/Controls/Private/StackViewSlideDelegate.qml,sha256=obXJdYJbRTxagPLElplVx8CvWnGry2Oqyfwasn17qgA,4863 +PySide2/qml/QtQuick/Controls/Private/StackViewSlideDelegate.qmlc,sha256=bkiK8SmWg92e9jdnhdl2fkmhTvzKpkc4mHtaORlCLWg,7956 +PySide2/qml/QtQuick/Controls/Private/Style.qml,sha256=sY6d6fvXt8yprAi6rVIWxpUULN_MQbfK832VzUi8U68,2266 +PySide2/qml/QtQuick/Controls/Private/Style.qmlc,sha256=wR6i_c7ZuhE59GOiYc7C3ONmadZEFjFO3jjME00bPFQ,1052 +PySide2/qml/QtQuick/Controls/Private/SystemPaletteSingleton.qml,sha256=5W873P2HnIaT-qmiefBZ2TICyhfKJG1dGoMc8Ar0IIA,3425 +PySide2/qml/QtQuick/Controls/Private/SystemPaletteSingleton.qmlc,sha256=kq6U3uRgNbTXA8zl8Ali3X4-evpmfB9PkkPaP7G2EAU,3668 +PySide2/qml/QtQuick/Controls/Private/TabBar.qml,sha256=1_S4hsUN1-pqVO70jDRlDlrK_jA7MyBE0xYrodjpY5k,12756 +PySide2/qml/QtQuick/Controls/Private/TabBar.qmlc,sha256=tNXQnmEstTBPTK7t-cj0y2NJIZ3AaiVLUDXXasdT1go,33936 +PySide2/qml/QtQuick/Controls/Private/TableViewItemDelegateLoader.qml,sha256=-YnMUmYpKK2W8mlcknrnqQMHFtK4syo1WN5Ipx82gFM,4634 +PySide2/qml/QtQuick/Controls/Private/TableViewItemDelegateLoader.qmlc,sha256=hPv7T95RyQBFGDlb7RG7lHkVN7i7xK1EDrmbosRcIQw,7872 +PySide2/qml/QtQuick/Controls/Private/TableViewSelection.qml,sha256=7Rk1WRw_mmOj9hI4Oc46i4hp0DUISVg-3bbwdf_4ko8,7164 +PySide2/qml/QtQuick/Controls/Private/TableViewSelection.qmlc,sha256=pZmH-D3P5uNsYYZdfyIFRg69Ht_kC7fOkla-cZj-fMQ,5852 +PySide2/qml/QtQuick/Controls/Private/TextHandle.qml,sha256=W3qQQ8ks_LyShXnBNBUk8DTqyDdJT6Qg7coEmNUDQvM,5192 +PySide2/qml/QtQuick/Controls/Private/TextHandle.qmlc,sha256=JRMMOTrMw5KIjYG6_r49Gf4gMVAiqYkQd_WvZSoxY2I,7640 +PySide2/qml/QtQuick/Controls/Private/TextInputWithHandles.qml,sha256=KMRah_XM63rJ3v_WkQ-x4VY-Cy-j40kT07a9OwDF-4k,8229 +PySide2/qml/QtQuick/Controls/Private/TextInputWithHandles.qmlc,sha256=OeO_vh71dq4YDkZ_zFUpbRi6EEYR7TpBEdqH0ZFH12Q,16656 +PySide2/qml/QtQuick/Controls/Private/TextSingleton.qml,sha256=hknUEdsaa9Aq5jB2ov4rEFC69kq6y6lYkww-UuzxmI8,2020 +PySide2/qml/QtQuick/Controls/Private/TextSingleton.qmlc,sha256=q46d-glYxh1kCI4XlpB5QaAYFBtpYzLNpsib41GdCYs,516 +PySide2/qml/QtQuick/Controls/Private/ToolMenuButton.qml,sha256=ehNpFbF5zHX5UtHle2IiFqyIQpXgha7MCH05I_W1sLo,4615 +PySide2/qml/QtQuick/Controls/Private/ToolMenuButton.qmlc,sha256=MsjLgeVinD23dCx6bxr8e9LStoyhZamgRYTPnEO-YcU,10244 +PySide2/qml/QtQuick/Controls/Private/TreeViewItemDelegateLoader.qml,sha256=6OCYpiK0HAkVKPYcYR_b_vUsncUMMkw1kbLob7IThPw,5059 +PySide2/qml/QtQuick/Controls/Private/TreeViewItemDelegateLoader.qmlc,sha256=ahn0dquuTd7wcSFFWJpWb-UTIQHIpbpo8GkxX3xQ_z8,10400 +PySide2/qml/QtQuick/Controls/Private/qmldir,sha256=-kNGhvarxygT8ShaL-Et3P8PGX7XGe8rFVdoHfc5_-w,1486 +PySide2/qml/QtQuick/Controls/Private/style.js,sha256=4zfHMyWuGHYxcqMouBmwNub0LEEqd0VHMbFKxfBaHj0,2540 +PySide2/qml/QtQuick/Controls/Private/style.jsc,sha256=EBaMtnqO3o_J-tDHQpGAONW19wEOjlzFmVRJ4tE5hqY,1976 +PySide2/qml/QtQuick/Controls/ProgressBar.qml,sha256=TzW8Yliig7JQrEW--pxtacSer0gF0kqph95vhKTXPpE,5692 +PySide2/qml/QtQuick/Controls/ProgressBar.qmlc,sha256=NBjj2rnl6spAL6AQKKO8FkN8ObiGzFlzpxFtO2TBqUY,6284 +PySide2/qml/QtQuick/Controls/RadioButton.qml,sha256=aXUb8UAc0CdfEmmj_xJF6UyatglLUUQuhKB2F0LRJyQ,3653 +PySide2/qml/QtQuick/Controls/RadioButton.qmlc,sha256=Tt7cLHEn6m052g2X13jea70cnwvW34udT556yXl-O8o,2432 +PySide2/qml/QtQuick/Controls/ScrollView.qml,sha256=UIXVYiK8lwgI_socoWNLCVwsbM1mkfaTweutKrfuAww,14604 +PySide2/qml/QtQuick/Controls/ScrollView.qmlc,sha256=Dr-qnfViDtG1f_jZ-Ce0PdvQMVpIyOLOkmeRLnhp0gE,21108 +PySide2/qml/QtQuick/Controls/Slider.qml,sha256=PYEZiHsDCdgN1JQL2KcNHSFWHsDbHIqgnzwpWInH-CU,12350 +PySide2/qml/QtQuick/Controls/Slider.qmlc,sha256=gKtygw01VZl3GTDBa8BnSpFYti5tQfzJ18-Ds4to0ZY,18972 +PySide2/qml/QtQuick/Controls/SpinBox.qml,sha256=YaWRJliO2dCiqwt2nWGNbjRoYdqOlVYkvjgJUk6BEX8,13281 +PySide2/qml/QtQuick/Controls/SpinBox.qmlc,sha256=EZWKI__6PzBNONillySsaN992lCu6zY5TNToyLYHR_g,26356 +PySide2/qml/QtQuick/Controls/SplitView.qml,sha256=tQA3j6Zb53oPCP4mt3F4nZAlkbDkaQi0O3qqyAzpF4g,25742 +PySide2/qml/QtQuick/Controls/SplitView.qmlc,sha256=KEPNP99GtotVGl8jpX2DY0pq5U78mWV6tV2637fAQ5M,29456 +PySide2/qml/QtQuick/Controls/StackView.qml,sha256=VxURdarHBGMnSrzLzz5X4IvUzG58S9luNkbQPXxQdm4,43458 +PySide2/qml/QtQuick/Controls/StackView.qmlc,sha256=kUNC2w0DjcAlMAymIT53X2YgKdcBdz0Otbja1ZLLeoQ,16788 +PySide2/qml/QtQuick/Controls/StackViewDelegate.qml,sha256=aTX0QcwPq-UfEC9HSV9hrc7SoxxYipwcbQNiDJQKCz8,3701 +PySide2/qml/QtQuick/Controls/StackViewDelegate.qmlc,sha256=_83UrK6QBc54dkAeUuu4pIJ4Zg90e852nUbAl2qIoEw,1856 +PySide2/qml/QtQuick/Controls/StackViewTransition.qml,sha256=FOZWMjM-2f4V2H4TgSLnbLlC1eTg9Yd266Js23OVPgY,2535 +PySide2/qml/QtQuick/Controls/StackViewTransition.qmlc,sha256=xoMVkHvtoa_zweqmHYJsJfcWSYyaGjADy_XSd5vNCAo,876 +PySide2/qml/QtQuick/Controls/StatusBar.qml,sha256=pCABWa2ih5_znZStpSxk5dkQ3Hs3U0OOj5MEvT3XGis,6358 +PySide2/qml/QtQuick/Controls/StatusBar.qmlc,sha256=eBJy6FhBsjOvQvsXTOJ8jFAIodlSTDvxiRz9zvvjPLg,8396 +PySide2/qml/QtQuick/Controls/Styles/Base/ApplicationWindowStyle.qml,sha256=WmZ9oDt31O8B2am_ncoWhkXhArEUdnh0GJK454XqbFQ,5195 +PySide2/qml/QtQuick/Controls/Styles/Base/ApplicationWindowStyle.qmlc,sha256=Buhk8PQI2HlmMa6OKZ2ICMS3AoZOEr5MtpjMU0ih7Hw,7340 +PySide2/qml/QtQuick/Controls/Styles/Base/BasicTableViewStyle.qml,sha256=0CRGRwulzVHjkO4bb3gICUKwmXStCJCIl1eVtVzlnc8,6586 +PySide2/qml/QtQuick/Controls/Styles/Base/BasicTableViewStyle.qmlc,sha256=6oZABiWBLeBTJ4iJWNyWNYmFlrom9z0OF9JeHgD9ap4,11796 +PySide2/qml/QtQuick/Controls/Styles/Base/BusyIndicatorStyle.qml,sha256=iMxStQ7JD7jbbdHLqBmS8ynd9OLiQ4dCtvaMfuXu-AM,4455 +PySide2/qml/QtQuick/Controls/Styles/Base/BusyIndicatorStyle.qmlc,sha256=CUiO_hMo6ymmg_d5gqhOZ3hCQTsL40m4I1PIGC7pU54,6948 +PySide2/qml/QtQuick/Controls/Styles/Base/ButtonStyle.qml,sha256=48Bb8yR64EeZHQW9h8n9j9KCv6ZTceijbd896rXJf94,6821 +PySide2/qml/QtQuick/Controls/Styles/Base/ButtonStyle.qmlc,sha256=84onl15BAa0Se7e6tXuc8obC9e8qUUpkxlJJjWcDglI,15648 +PySide2/qml/QtQuick/Controls/Styles/Base/CalendarStyle.qml,sha256=827IpO1AWWo0HnAX-_E2NQkej6isj1CXIXBqncRxYtI,30093 +PySide2/qml/QtQuick/Controls/Styles/Base/CalendarStyle.qmlc,sha256=HaT0_mnJi73VFYqMlYXvX1FDOnpIOegNKMQ0kgSWbCY,46884 +PySide2/qml/QtQuick/Controls/Styles/Base/CheckBoxStyle.qml,sha256=TK_uM5BkDr28m_whu9VdY5BbXCkyN-4LX80llth1pK4,7275 +PySide2/qml/QtQuick/Controls/Styles/Base/CheckBoxStyle.qmlc,sha256=LdK564HyMavGRfUg4AHCLXD3ZuWKx9HCKL1UCxje8mU,16588 +PySide2/qml/QtQuick/Controls/Styles/Base/CircularButtonStyle.qml,sha256=wjDzfpSzRwM7mx0jDYHS219Im2jbfndhhf1v8VaXWK4,3387 +PySide2/qml/QtQuick/Controls/Styles/Base/CircularButtonStyle.qmlc,sha256=_BZV-FMeH7WnW2vwDVAngPKpF_0N8qQAxnML3xoDtq4,7332 +PySide2/qml/QtQuick/Controls/Styles/Base/CircularGaugeStyle.qml,sha256=Xd1FnQ5W9CZyyiObXt2WUKtEK1-dYhBb2hl5CyIIggk,18599 +PySide2/qml/QtQuick/Controls/Styles/Base/CircularGaugeStyle.qmlc,sha256=mSsvxZWlDcqUZe7MswIc9IggKax4yL9cZ5VqK7PyQmo,18432 +PySide2/qml/QtQuick/Controls/Styles/Base/CircularTickmarkLabelStyle.qml,sha256=flgsp7rUHb_3LlP4If5sX5K2GaiDylZzhtCKKmkhlfo,13701 +PySide2/qml/QtQuick/Controls/Styles/Base/CircularTickmarkLabelStyle.qmlc,sha256=Iv_02BCy0USVufsLh4JTgmM1qqsKgltm_f0yz1kv1Uo,24312 +PySide2/qml/QtQuick/Controls/Styles/Base/ComboBoxStyle.qml,sha256=ft2gD2hIeH20vTigRBjS-Zq6JtQpav1no_Z6vsMMSUk,12375 +PySide2/qml/QtQuick/Controls/Styles/Base/ComboBoxStyle.qmlc,sha256=CTSq3-UhjJQj7Fl2LoWJMUohoKApuJmn2aQ2K5l0ie0,25684 +PySide2/qml/QtQuick/Controls/Styles/Base/CommonStyleHelper.qml,sha256=df63lUA4_GBaehEVksFrgyhnFuT9UJYV_dwkGfp62Y4,2688 +PySide2/qml/QtQuick/Controls/Styles/Base/CommonStyleHelper.qmlc,sha256=rMJGO4-Il5l_2ueZxavD3CAsN7SZ8wiCRONbYCOdV8I,2564 +PySide2/qml/QtQuick/Controls/Styles/Base/DelayButtonStyle.qml,sha256=c0GYrptosgkxBz7OxYCzkkAGpAISo5eiaFSsujxg0I4,7477 +PySide2/qml/QtQuick/Controls/Styles/Base/DelayButtonStyle.qmlc,sha256=Urzo4tfxKVwviszTe9yB9hIlwerdg_eJBU4gapJjzBw,16832 +PySide2/qml/QtQuick/Controls/Styles/Base/DialStyle.qml,sha256=aNOMIrduKNmUtYep7drc34doKg8meFUf5ntoxzcQe04,13309 +PySide2/qml/QtQuick/Controls/Styles/Base/DialStyle.qmlc,sha256=D_F6zrFO7VTbgUorKS3D1f-PcvUKpt0M6nVmOVFq_uw,18992 +PySide2/qml/QtQuick/Controls/Styles/Base/FocusFrameStyle.qml,sha256=Sm_fwcgTQda0En3XbPMKRs3x6ggBVjJ8ZB2TZZrRDks,2195 +PySide2/qml/QtQuick/Controls/Styles/Base/FocusFrameStyle.qmlc,sha256=Pak0PwHDAC6alSvTQlQxxcgcyiAoMFpOAhHGGBOLQfE,796 +PySide2/qml/QtQuick/Controls/Styles/Base/GaugeStyle.qml,sha256=R3IPs2AKZOeC0jwxa4jioLjATdtBRcTz_HFciOXErFg,22836 +PySide2/qml/QtQuick/Controls/Styles/Base/GaugeStyle.qmlc,sha256=IhoZaTaM8IJ0CjHZaUFleMEFz_RuVF7s0_2y04K_V7g,30776 +PySide2/qml/QtQuick/Controls/Styles/Base/GroupBoxStyle.qml,sha256=qHytWwuj_g5n8YPuR_M7D5LnM-0xUIIcDedtitej1mQ,4956 +PySide2/qml/QtQuick/Controls/Styles/Base/GroupBoxStyle.qmlc,sha256=zV21LjfHHyMn6NaAgP3yuzX7p6LQJE4tPwGn_fkRvWA,11064 +PySide2/qml/QtQuick/Controls/Styles/Base/HandleStyle.qml,sha256=DEnu1OATzW2SGnOjYq4LSSiMkTd8sab9HZo8GnnbeNA,2849 +PySide2/qml/QtQuick/Controls/Styles/Base/HandleStyle.qmlc,sha256=IwZicY2ixq9JW0YvQvF6u0srkVtmVX3JGWEWxph4QSc,3656 +PySide2/qml/QtQuick/Controls/Styles/Base/HandleStyleHelper.qml,sha256=CLNDK8oCAUTu5jqOulT82d5qutOTaOMW6l6z9ifowRM,3955 +PySide2/qml/QtQuick/Controls/Styles/Base/HandleStyleHelper.qmlc,sha256=-qnyJ9NEwwyiDnZIezH4uhAYOCnvZEfeMoZRGxiqd_k,3404 +PySide2/qml/QtQuick/Controls/Styles/Base/MenuBarStyle.qml,sha256=ELA4C3NY3HrXCl2ikr7oJ4pxcSScjmtk3dvcTWTWiFo,5266 +PySide2/qml/QtQuick/Controls/Styles/Base/MenuBarStyle.qmlc,sha256=ku4PwrgFav6C_zTcGA9NWvYyJE1Oz4XP0WL9qhR3sXA,5312 +PySide2/qml/QtQuick/Controls/Styles/Base/MenuStyle.qml,sha256=ifjw_FCQjhnsLs_TmsU2Y-lUiIEuiwWWYYTiWxE53xE,19028 +PySide2/qml/QtQuick/Controls/Styles/Base/MenuStyle.qmlc,sha256=fX3k-d3PIUs29MKqDpJfLxyxkm7AofGh2OUTFKMUixE,27256 +PySide2/qml/QtQuick/Controls/Styles/Base/PieMenuStyle.qml,sha256=Lhgd2k475rIbUUHHsjXpP7JeqlTSH7MDi7-GHJtEUwY,13619 +PySide2/qml/QtQuick/Controls/Styles/Base/PieMenuStyle.qmlc,sha256=UpspejCq0A7mgkG2AykJJ7ak3srdqPm_adi3h7fOSJY,19552 +PySide2/qml/QtQuick/Controls/Styles/Base/ProgressBarStyle.qml,sha256=0_qvpmMLzQPoHd4th0hsvNDEpbIHhcdDQvN-ACtloq8,9671 +PySide2/qml/QtQuick/Controls/Styles/Base/ProgressBarStyle.qmlc,sha256=R6vjqxsemyzzZnlcUOKEtjne5eLFlEd1KioQ7_CQenA,19268 +PySide2/qml/QtQuick/Controls/Styles/Base/RadioButtonStyle.qml,sha256=paAIEFLzrkyNl0csoa1q1n6MSgV1gUPLGMqOmRFN-6o,6421 +PySide2/qml/QtQuick/Controls/Styles/Base/RadioButtonStyle.qmlc,sha256=_9hqrc1rhnmiLK_xI2f9GRUZWpr1nlfKMo9jAY_Ap10,14128 +PySide2/qml/QtQuick/Controls/Styles/Base/ScrollViewStyle.qml,sha256=jokVTL95RtdlUUm39q7XdSjJWojz92d8LRV535o9vfg,17548 +PySide2/qml/QtQuick/Controls/Styles/Base/ScrollViewStyle.qmlc,sha256=SqtRrHo1u3DAFcFGMo-SHoxU1t6h6X_QE1xsM7jtNUw,35988 +PySide2/qml/QtQuick/Controls/Styles/Base/SliderStyle.qml,sha256=Kn0r_INKSpAu5gNhpmk1XNoOQBgj9CE3uDUE-Xvgcj0,9011 +PySide2/qml/QtQuick/Controls/Styles/Base/SliderStyle.qmlc,sha256=pEQVB7JtAyXsf_304S5Rp-ik9KPHe6a3iGbTxnVHY3k,19176 +PySide2/qml/QtQuick/Controls/Styles/Base/SpinBoxStyle.qml,sha256=yS6m1jPktcscK1RwltZ6q2R2qcdJPsqXc4NaL_pOIvc,9683 +PySide2/qml/QtQuick/Controls/Styles/Base/SpinBoxStyle.qmlc,sha256=wAxJh2usrTV3HgIyWPtp3P1Lt7zzAbh5viQd6-8v8E0,16484 +PySide2/qml/QtQuick/Controls/Styles/Base/StatusBarStyle.qml,sha256=6cFE2I2rDRRvOzICMxO-Fmv0_HPlifQUP0QXZBeJ89c,3884 +PySide2/qml/QtQuick/Controls/Styles/Base/StatusBarStyle.qmlc,sha256=-ZSGjNmMod2m9vo5H3My3UNn0N9nl-FOBr-vQhXJfjE,3764 +PySide2/qml/QtQuick/Controls/Styles/Base/StatusIndicatorStyle.qml,sha256=UFU85orbhpIpreN95W01F5R-ykosAJig8_dlMppm6xo,9088 +PySide2/qml/QtQuick/Controls/Styles/Base/StatusIndicatorStyle.qmlc,sha256=LVdXh2awgl9crWO6xmXzqB4TKmEMRyy-GZjRo4ekhxw,13600 +PySide2/qml/QtQuick/Controls/Styles/Base/SwitchStyle.qml,sha256=VvAcQ15b0LbtfP8itoZRqiyrYBiVYoTpciD2ukbEczM,6038 +PySide2/qml/QtQuick/Controls/Styles/Base/SwitchStyle.qmlc,sha256=rtI71t3hxzScPWnDURtGgBbTOfJy3v-0FJB6g9JpJKg,13932 +PySide2/qml/QtQuick/Controls/Styles/Base/TabViewStyle.qml,sha256=pTEZNFAbUCnuK-L2t1sA6JIOoF0OlndvriMIpelVsgA,7770 +PySide2/qml/QtQuick/Controls/Styles/Base/TabViewStyle.qmlc,sha256=7ZS91j1mFHQMxFW2oveaRQKxI8se1KM0P1_gtQZAsuY,11868 +PySide2/qml/QtQuick/Controls/Styles/Base/TableViewStyle.qml,sha256=jnFyRTUeOy0368L4aiG-cN4fI-QAxNh85_X6X34Vybs,2116 +PySide2/qml/QtQuick/Controls/Styles/Base/TableViewStyle.qmlc,sha256=qxX6kUR1JhbUH2F0XYSFOmdCsp8HFOPy_s9gTMMIqIg,1004 +PySide2/qml/QtQuick/Controls/Styles/Base/TextAreaStyle.qml,sha256=-dYnJ2ef-xfUJznVnw9RmMJGUGScAc8NwSTsQTvWutw,6192 +PySide2/qml/QtQuick/Controls/Styles/Base/TextAreaStyle.qmlc,sha256=iC2PJXlC_XqnXgkCGFUJvzUQQyOTROehY2C3FQihuyk,3804 +PySide2/qml/QtQuick/Controls/Styles/Base/TextFieldStyle.qml,sha256=7W2MFPzv-RfG7vhXcjuAhfREpFa5UESgHbZangICyLw,8423 +PySide2/qml/QtQuick/Controls/Styles/Base/TextFieldStyle.qmlc,sha256=CyvQ6ymJCSiizhyzV3EhbYM1bmQS7i7EqZ8se9VRxPI,11912 +PySide2/qml/QtQuick/Controls/Styles/Base/ToggleButtonStyle.qml,sha256=SewDhDHiTHE_IjBU2-Wp2NQQbXhfXuLRCLX8cQPEwMY,10258 +PySide2/qml/QtQuick/Controls/Styles/Base/ToggleButtonStyle.qmlc,sha256=sdE_Z5GoUwKrLAx5bFHOYcexDzfpRoWMQ-i2Xx3wLdA,19112 +PySide2/qml/QtQuick/Controls/Styles/Base/ToolBarStyle.qml,sha256=gtR2_TZ15fSq9iLvAhGDXYWfutbnGP1fEA6awyjqSg4,4448 +PySide2/qml/QtQuick/Controls/Styles/Base/ToolBarStyle.qmlc,sha256=q36Kwj7eU49g7tMUW0vQGL36VVueTcxqoj3JoCYrR1Y,4316 +PySide2/qml/QtQuick/Controls/Styles/Base/ToolButtonStyle.qml,sha256=GVtzRjbztVeJzAe62hNNN6ola-mJ1L3o4QRWxZjeq_A,4334 +PySide2/qml/QtQuick/Controls/Styles/Base/ToolButtonStyle.qmlc,sha256=Bbm5IU8u3N7poFJPKZ0k_eVwxdU6cjw7zwt63jtOxkE,10104 +PySide2/qml/QtQuick/Controls/Styles/Base/TreeViewStyle.qml,sha256=g4ydaHPUfO1kwwiYHogmXyz4D0JUC5RBGyjDpe-TA0k,2813 +PySide2/qml/QtQuick/Controls/Styles/Base/TreeViewStyle.qmlc,sha256=IFfJpbpK6-hLkQ_74JjHzDf572KcOjSOorPPIKce0kk,5060 +PySide2/qml/QtQuick/Controls/Styles/Base/TumblerStyle.qml,sha256=0jqQ2x2LDdfkn3-Dz5yLpRCyoUElpFLyIvggaIIkV68,12873 +PySide2/qml/QtQuick/Controls/Styles/Base/TumblerStyle.qmlc,sha256=z4AX4D9jktqIWzn3JII2cQf5X55hg9OrSD3q0xkFB_s,14420 +PySide2/qml/QtQuick/Controls/Styles/Base/images/arrow-down.png,sha256=DQ8G0Ok8ii8o2mg4uwvcm0bcebvwh2252339hrEzy5s,99 +PySide2/qml/QtQuick/Controls/Styles/Base/images/arrow-down@2x.png,sha256=t4ujbvld67AtUha8miuS9qnqIK6Q05hetEgpo1iJSto,138 +PySide2/qml/QtQuick/Controls/Styles/Base/images/arrow-left.png,sha256=4-9GpaSMSI8q9-RkQOKMvykqjmQBRN_K-JZoJAmZTBo,98 +PySide2/qml/QtQuick/Controls/Styles/Base/images/arrow-left@2x.png,sha256=xcPRXIykF-Zlaf39ae3oP2qfM4Uk5Vwh_9hvEYgOTI0,139 +PySide2/qml/QtQuick/Controls/Styles/Base/images/arrow-right.png,sha256=raMcq98zkxQGT5BesHKgiV7AcjLoKHqaIrqCo0-t03g,99 +PySide2/qml/QtQuick/Controls/Styles/Base/images/arrow-right@2x.png,sha256=IAcBjzKbRhNkpOA4rVygMhUqPSWwY5TTLhuh7b8twn4,148 +PySide2/qml/QtQuick/Controls/Styles/Base/images/arrow-up.png,sha256=0G2oScAIB5UH9JUWlsDASdCAy8wF11cFXYyY7CPIELg,112 +PySide2/qml/QtQuick/Controls/Styles/Base/images/arrow-up@2x.png,sha256=46c8SvkYZl0v91_jZ-IH_XGtlv-VAtUSBYapLUB27TQ,155 +PySide2/qml/QtQuick/Controls/Styles/Base/images/button.png,sha256=vhXaG1351NsGu8VWc3MeP94j6Co5g656VgudoSA6Za0,554 +PySide2/qml/QtQuick/Controls/Styles/Base/images/button_down.png,sha256=KS2hVkzqU_xjID0BhPwPKEnBaaw-yUigNEwxtnSto-w,203 +PySide2/qml/QtQuick/Controls/Styles/Base/images/check.png,sha256=9HKQ4T2AIQ7brWZ3EGgUbSwrgfxEREjK1N3F1fr3M9A,176 +PySide2/qml/QtQuick/Controls/Styles/Base/images/check@2x.png,sha256=9kXz1UZBVb6Q-0cL-7zMsNSoIbG716Gc_eRiNTOH_Hg,417 +PySide2/qml/QtQuick/Controls/Styles/Base/images/editbox.png,sha256=sgbuTYa2onmrqt741nRJUGa8o1NHm_Tqer_cxkX_w-o,416 +PySide2/qml/QtQuick/Controls/Styles/Base/images/focusframe.png,sha256=2ycqdZPTzWaqK--UXJas9ivAvf5FjhHOIMcrzvXM6s0,271 +PySide2/qml/QtQuick/Controls/Styles/Base/images/groupbox.png,sha256=RHDoNL8ajC6wJdZR7Vu8cWgaqJg4iuF_iyduitZBoLg,225 +PySide2/qml/QtQuick/Controls/Styles/Base/images/header.png,sha256=_vUtAKlVs11Q-q_AjJ8MbFXUvDWwEAAgDhPbRLWeyb0,383 +PySide2/qml/QtQuick/Controls/Styles/Base/images/knob.png,sha256=RV0F3fctdrWjyLRjP7GUk1EdpOBHGdMI3np_FStRa20,1703 +PySide2/qml/QtQuick/Controls/Styles/Base/images/leftanglearrow.png,sha256=g9lsbPgurudoTcZjswcrEM7lwbPJ-fHEn6e6Ms_6vEA,206 +PySide2/qml/QtQuick/Controls/Styles/Base/images/needle.png,sha256=3gvUeCirnGkppUUtlrXGrBO5nA4_zBWciF7BWkzT4sc,2036 +PySide2/qml/QtQuick/Controls/Styles/Base/images/progress-indeterminate.png,sha256=EN1ZFfA1KuOlixJQ5ElmBTerNv8LcN5vVNPiKvTt8NM,1453 +PySide2/qml/QtQuick/Controls/Styles/Base/images/rightanglearrow.png,sha256=yyZDaMDUgB1NtMVmU_V2cdBCxZGuJIJMYuJNVUWJDec,228 +PySide2/qml/QtQuick/Controls/Styles/Base/images/scrollbar-handle-horizontal.png,sha256=7owcSxHopKULCNdZdYOg081058ubd95H_oz-5xs-S14,825 +PySide2/qml/QtQuick/Controls/Styles/Base/images/scrollbar-handle-transient.png,sha256=v-MmMlihRM2dK4W2zkyhVhTmzta7smN1nerO-DxhzpI,153 +PySide2/qml/QtQuick/Controls/Styles/Base/images/scrollbar-handle-vertical.png,sha256=MpUBeEp3V2FTHA6CsudMycukZMCjjpPbMyMFTF8RfVY,839 +PySide2/qml/QtQuick/Controls/Styles/Base/images/slider-groove.png,sha256=0ry5TdvLWAO5Jw94LtUse24NH6mq99v-bkGXHAzr9G0,565 +PySide2/qml/QtQuick/Controls/Styles/Base/images/slider-handle.png,sha256=x4QFsVZJfI6Eq_y5c0D_4c70WZ3SfD7EvI_SgvkLVW8,524 +PySide2/qml/QtQuick/Controls/Styles/Base/images/spinner_large.png,sha256=wfofAYYat7tUi-3XMKSxIMeXmH3xDPe9KAlUQ4fHrh8,4723 +PySide2/qml/QtQuick/Controls/Styles/Base/images/spinner_medium.png,sha256=D2IPIYAS7W_zCAkEbO1co3IydFS1nAtNlQFjm7_9POA,1621 +PySide2/qml/QtQuick/Controls/Styles/Base/images/spinner_small.png,sha256=jDHm837uJ-a-wC2_tkUrnwgx1lhuR9zkOS6fuqB-ztU,998 +PySide2/qml/QtQuick/Controls/Styles/Base/images/tab.png,sha256=V7GuCYjGFQgnBWmM442CsK7Ea8ERQazGLxZVSvHyeCA,390 +PySide2/qml/QtQuick/Controls/Styles/Base/images/tab_selected.png,sha256=sRj4jY1XIB4rvR8doB_jSNMBHvyDs_kJshx6stq7h-8,437 +PySide2/qml/QtQuick/Controls/Styles/Desktop/ApplicationWindowStyle.qml,sha256=Bek_ONfJ_GHeeD252i7LKTJ-79DB2Mmzmtm5AiTHFwo,2037 +PySide2/qml/QtQuick/Controls/Styles/Desktop/ApplicationWindowStyle.qmlc,sha256=WAc8pT5v3JIhN5tIQAlhzRjSC5EZmwcMFJbYQ4OcLGg,580 +PySide2/qml/QtQuick/Controls/Styles/Desktop/BusyIndicatorStyle.qml,sha256=JpsUpDknnBso4tZgk-QsjOyfnsSmmWYzsmPKymRg-sk,2033 +PySide2/qml/QtQuick/Controls/Styles/Desktop/BusyIndicatorStyle.qmlc,sha256=UavZP9hLruvC2geHZbYWBEyM0laknU2s-QgLxWeLWTA,572 +PySide2/qml/QtQuick/Controls/Styles/Desktop/ButtonStyle.qml,sha256=Vr14ejOtwSnUEJLKouOLrAdPCr65Qwyi7hNFZtEqVbA,2728 +PySide2/qml/QtQuick/Controls/Styles/Desktop/ButtonStyle.qmlc,sha256=-5-TcID6VWOaGfJEqDA1T_S_g1Gk2e2BdgO1qpjjKfA,3888 +PySide2/qml/QtQuick/Controls/Styles/Desktop/CalendarStyle.qml,sha256=FfUNB5FEWBjpM-gGULqhapTTuUA7IW2H_sG140DR8mc,2027 +PySide2/qml/QtQuick/Controls/Styles/Desktop/CalendarStyle.qmlc,sha256=hAWdm42nMnZZtht4nTb7y8F5tKWg7HeuZ8ZhzWX_3R8,564 +PySide2/qml/QtQuick/Controls/Styles/Desktop/CheckBoxStyle.qml,sha256=5M4-LDVv3BH31a5AKWAs2-X0DhA81IIoGo2fjubrmTY,4043 +PySide2/qml/QtQuick/Controls/Styles/Desktop/CheckBoxStyle.qmlc,sha256=2dKJLkywTHPjfMlq7LTXClvJU1U8wdo8I4MeZodQCvA,10368 +PySide2/qml/QtQuick/Controls/Styles/Desktop/ComboBoxStyle.qml,sha256=uOyIGjXPfpAVTSQTzc1TwrExVWwi6W9UL9k0-jrjTIM,5292 +PySide2/qml/QtQuick/Controls/Styles/Desktop/ComboBoxStyle.qmlc,sha256=2las7k8bce0EJbecWxac0z0kjVnp0oQa-ELcRWptfj8,12384 +PySide2/qml/QtQuick/Controls/Styles/Desktop/FocusFrameStyle.qml,sha256=gwfO742G8uMHtnocSgszr3uDzEll9pixWWCEHSCxnyk,2261 +PySide2/qml/QtQuick/Controls/Styles/Desktop/FocusFrameStyle.qmlc,sha256=L2Hc769GLWQFeTF1xKyOPBnGhIv5q8OilLvNbxLLSAs,1344 +PySide2/qml/QtQuick/Controls/Styles/Desktop/GroupBoxStyle.qml,sha256=aFjbAfogrYNVm7XbubtqdxHIxpWexT_r1NCpxTcM9Zs,3230 +PySide2/qml/QtQuick/Controls/Styles/Desktop/GroupBoxStyle.qmlc,sha256=TKcK3YWv_QCJDozWBqv9knbR9vnwlmU7w8Lp_i6Bpbc,6616 +PySide2/qml/QtQuick/Controls/Styles/Desktop/MenuBarStyle.qml,sha256=F38hHuFWh-IxsqeQFy1crdY4AWgxrz5KVcT57ts34qw,3238 +PySide2/qml/QtQuick/Controls/Styles/Desktop/MenuBarStyle.qmlc,sha256=gvxXrYeYhF2HbIg0xsr-N6L0hbd3GBhZI58yJXR4aDw,5604 +PySide2/qml/QtQuick/Controls/Styles/Desktop/MenuStyle.qml,sha256=r3W7CQXWRqGhU2HWQquGodOJaV1rz-6Ckc2oV_hODLY,4683 +PySide2/qml/QtQuick/Controls/Styles/Desktop/MenuStyle.qmlc,sha256=q28xYjbbEtQFo4Z26EpFlSVrGgGglraFKgsrZM811P0,9780 +PySide2/qml/QtQuick/Controls/Styles/Desktop/ProgressBarStyle.qml,sha256=N07KlY7zayMkq77EXheeEVcPbeWpH4rT8lWTk7JA7Sg,2916 +PySide2/qml/QtQuick/Controls/Styles/Desktop/ProgressBarStyle.qmlc,sha256=N5uc6Mlsa_B5uNKd4kmsFc_zPsOU2SvvR5dDjICsKYM,4212 +PySide2/qml/QtQuick/Controls/Styles/Desktop/RadioButtonStyle.qml,sha256=1nPg9_rYQHSjdmAcpWREXpqLQoz1DDfqWdBaerWST2o,4128 +PySide2/qml/QtQuick/Controls/Styles/Desktop/RadioButtonStyle.qmlc,sha256=Pe8D7v93VvtkfHVazx9lQq66gaxozdQ4nMZ01oYYnJY,10500 +PySide2/qml/QtQuick/Controls/Styles/Desktop/RowItemSingleton.qml,sha256=XBHtkRLz0obdA1HMUWaus897S8iEfAo1Qi37wU-086Q,2070 +PySide2/qml/QtQuick/Controls/Styles/Desktop/RowItemSingleton.qmlc,sha256=GVl-cLATp-nS5wIzalz9llj0GnSF998RdgUyU_Z08Hw,684 +PySide2/qml/QtQuick/Controls/Styles/Desktop/ScrollViewStyle.qml,sha256=pvDLpHZ0rzcnCNYAJQagUU_I8cbfkiQWtEVJvbXQiAY,3920 +PySide2/qml/QtQuick/Controls/Styles/Desktop/ScrollViewStyle.qmlc,sha256=6dNQQBmtJCzmSW9PEVm_ydxdGl4m8xWL5LW6lNH4Icw,9328 +PySide2/qml/QtQuick/Controls/Styles/Desktop/SliderStyle.qml,sha256=Z9OpS3WgGv7ghkTN7Q45PMMYCRb-bcm_S357FHJ-1YI,2912 +PySide2/qml/QtQuick/Controls/Styles/Desktop/SliderStyle.qmlc,sha256=xz5ZiDTyYIExTntNBc6e_AnbRsYX28B54JbVqH9mHZQ,5956 +PySide2/qml/QtQuick/Controls/Styles/Desktop/SpinBoxStyle.qml,sha256=vGqiNFhTZqQtxE2Q8VuvLNxgH0FY6aLpep6M5L2r4V0,5470 +PySide2/qml/QtQuick/Controls/Styles/Desktop/SpinBoxStyle.qmlc,sha256=lizkR5V5hypRD37Ex6M17HqWuvVLLBK3vXLevUduCYQ,14728 +PySide2/qml/QtQuick/Controls/Styles/Desktop/StatusBarStyle.qml,sha256=pgXhRr1kbJT131QzCVb881WqmUgio_GdLo_I3Hxv3HI,2491 +PySide2/qml/QtQuick/Controls/Styles/Desktop/StatusBarStyle.qmlc,sha256=v3CMCuuUbbFdeSwzVytld_poWWUkh1LLoCGng7mN5Tc,2460 +PySide2/qml/QtQuick/Controls/Styles/Desktop/SwitchStyle.qml,sha256=ID8FccMB8yFXNsBkcYHYxAz33GyWxMIv7jJ6DyZDBI0,2113 +PySide2/qml/QtQuick/Controls/Styles/Desktop/SwitchStyle.qmlc,sha256=5rMLMPOQJ350e38IkpsDKxW4QK8fFCoYBPqXbtUa-FA,820 +PySide2/qml/QtQuick/Controls/Styles/Desktop/TabViewStyle.qml,sha256=-o0jNFd09nPsLiVf_Xc7T3nJQCsdlv1rWdr4KWs4gyI,5403 +PySide2/qml/QtQuick/Controls/Styles/Desktop/TabViewStyle.qmlc,sha256=7ldKstwOA4NXhBW0VIasO8GSXmDUu-3WW0LWj2DZNVo,14220 +PySide2/qml/QtQuick/Controls/Styles/Desktop/TableViewStyle.qml,sha256=15GAwLLR_f4dmeGC1e48KCYkAs_6gXggN55mYYyXYRQ,5378 +PySide2/qml/QtQuick/Controls/Styles/Desktop/TableViewStyle.qmlc,sha256=5F1OVHin2syjLnvicR0bAxdYovPmOQGiXUcfEO8ZzgU,13648 +PySide2/qml/QtQuick/Controls/Styles/Desktop/TextAreaStyle.qml,sha256=xrADY0InUJ5l8L9R2nyTPd6e3u3seTmptOxqAy0VznY,2739 +PySide2/qml/QtQuick/Controls/Styles/Desktop/TextAreaStyle.qmlc,sha256=hZndD7t3LezE-q3pHmSBT4ZTh693ZBP9evcTFRJc_G8,3808 +PySide2/qml/QtQuick/Controls/Styles/Desktop/TextFieldStyle.qml,sha256=RpzHAXo96qV-Wtd_Z9ksSXMBWNTN09TOSgVlkWtL8EY,3377 +PySide2/qml/QtQuick/Controls/Styles/Desktop/TextFieldStyle.qmlc,sha256=nLmID43eb2yKqbpBBRRCr-wCJiA6SmGOrW2Cy8nlgvg,7608 +PySide2/qml/QtQuick/Controls/Styles/Desktop/ToolBarStyle.qml,sha256=GaH2UxTRMGM_Ey38wGMnZ4cJRu3sHsMJTXfH6_He3qI,2560 +PySide2/qml/QtQuick/Controls/Styles/Desktop/ToolBarStyle.qmlc,sha256=TutSXwUKPVQuiWiXbE13myDEU_3gdAmvnjNtGyyLSDI,2784 +PySide2/qml/QtQuick/Controls/Styles/Desktop/ToolButtonStyle.qml,sha256=6riqZmCvxgC7Rjh5De52Eokibzdt7FBI_xMiyumWLqg,2679 +PySide2/qml/QtQuick/Controls/Styles/Desktop/ToolButtonStyle.qmlc,sha256=q_AwXZI04sFQ91sboP8u_OWGz0rhmW1cjYQEkYDnwGQ,4156 +PySide2/qml/QtQuick/Controls/Styles/Desktop/TreeViewStyle.qml,sha256=8l9NiNfpGmQs8fFIQpA5im--Vsow6NJkFnT8Kvlb4ow,2851 +PySide2/qml/QtQuick/Controls/Styles/Desktop/TreeViewStyle.qmlc,sha256=T1lUe_UH03xVE7-OoJAJIQytWGJUZScMb9iKTD7_v3U,3740 +PySide2/qml/QtQuick/Controls/Styles/Desktop/qmldir,sha256=VUU-InLE41r2TGl6ke4IKHKjNznoj5vxjoEoxas7xM4,72 +PySide2/qml/QtQuick/Controls/Styles/Flat/plugins.qmltypes,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +PySide2/qml/QtQuick/Controls/Styles/Flat/qmldir,sha256=qEoIu5WnAsgMJJaBt8Dm9CFz_qYZEklhJD9IBO1s2nA,126 +PySide2/qml/QtQuick/Controls/Styles/Flat/qtquickextrasflatplugin.dll,sha256=pL5TmqMr9uP4HNL_JQa-LrtW2bi_ZonBOlsF0m9vpl4,834840 +PySide2/qml/QtQuick/Controls/Styles/qmldir,sha256=e7lLzJ-n2EnBDthPR2rXlRph1I_o947VIBlWQZ040Fw,1575 +PySide2/qml/QtQuick/Controls/Switch.qml,sha256=sTqzfJ5GOpz45U7EkifQ2b_B4jBaxjPFIQGx68H3ZOo,5331 +PySide2/qml/QtQuick/Controls/Switch.qmlc,sha256=CiXBZyZO4tZpNM63Owm74TXHylYWB1C14rchp_5aJqc,7648 +PySide2/qml/QtQuick/Controls/Tab.qml,sha256=SYp1cqzBooWFd5hkjz_uqsdzZFVVc61yJfsqlJoFOfM,3001 +PySide2/qml/QtQuick/Controls/Tab.qmlc,sha256=NLhXNTknP0guMs8uFa04x56sWYQri5HGHwFy9p3Rz3c,2212 +PySide2/qml/QtQuick/Controls/TabView.qml,sha256=bQddWSoRjKvQSIC4BoE9RH3Y04thKCpjBdK22MziofE,10775 +PySide2/qml/QtQuick/Controls/TabView.qmlc,sha256=bSb0ZtWeW_M8gzQyy5qTl8mdjE1V8OFfzEZsDtfFMsA,16284 +PySide2/qml/QtQuick/Controls/TableView.qml,sha256=ELRlC2GWSCsiF8VZOhtwLh6F5ntYdp1oUxTHCG6GbM0,11555 +PySide2/qml/QtQuick/Controls/TableView.qmlc,sha256=frQlhkmJQuHLCaTJc1pGEoXkozVeAw_29GpU9FszEEc,19824 +PySide2/qml/QtQuick/Controls/TableViewColumn.qml,sha256=rQf1-ztyeRwK7KD-RHB8rsAX_fA2tU39Zh2GLKKFM4s,6804 +PySide2/qml/QtQuick/Controls/TableViewColumn.qmlc,sha256=bWqEHwhn8w_Sdx5qXe9_icCabecwJ2HVn-uGtvUhgE8,3940 +PySide2/qml/QtQuick/Controls/TextArea.qml,sha256=_mfORgHoK0lU7G46fmrpE2eqrKQVZcCUBSNuBlyeUNY,36631 +PySide2/qml/QtQuick/Controls/TextArea.qmlc,sha256=tut-7SD7X7JXSPS3NYBrJrX4RwXZ-tc_xNQvD4yZjhM,36040 +PySide2/qml/QtQuick/Controls/TextField.qml,sha256=Cl7snmveWjGNaVNR6uoRh5KdCL2WFmcikM77QreEsnw,23187 +PySide2/qml/QtQuick/Controls/TextField.qmlc,sha256=Hlb_OkQXCXyDIrhoEL57ghfFEMnKo1psHtDzECYtJag,17192 +PySide2/qml/QtQuick/Controls/ToolBar.qml,sha256=pv2_AIlrZrkSyEvYQ5RjfcQYx7JVM_3uE83ywMUwgJ4,7444 +PySide2/qml/QtQuick/Controls/ToolBar.qmlc,sha256=doXlQbQl64_6N2bpthw3lQglb-SDwnu7ssirkrH3-Bg,11004 +PySide2/qml/QtQuick/Controls/ToolButton.qml,sha256=PQ--4AR5odb-vD9HIj-JAtNxpZr4TymMP80NEybirpk,3229 +PySide2/qml/QtQuick/Controls/ToolButton.qmlc,sha256=vc2SfZ6OKyfiPX4BpCWg8b3BYZqF48jqeopTaxoa3I8,1196 +PySide2/qml/QtQuick/Controls/TreeView.qml,sha256=B77uCtujdb2elkisbfvhio_jzp3qG8VvPv0uAX8ve5s,17067 +PySide2/qml/QtQuick/Controls/TreeView.qmlc,sha256=VSiHpxue6Nw5F1aXVycOr0hKQzq_Q0Q_RZNauocd12U,25496 +PySide2/qml/QtQuick/Controls/plugins.qmltypes,sha256=mYDd6466sIzjl9maVD3JzcHklkAm75xz1roC_kOtLeM,157929 +PySide2/qml/QtQuick/Controls/qmldir,sha256=371csHvd0aI0K4KkQs1KRQTYfQTfefMIO7o6AxiIvj4,212 +PySide2/qml/QtQuick/Controls/qtquickcontrolsplugin.dll,sha256=HswXAYViwHRqHeAFCNVyqDboUNuY0_7sS_nCniBE_4E,342808 +PySide2/qml/QtQuick/Dialogs/DefaultColorDialog.qml,sha256=KbgWco4bRFDntQ3akofWEFK8wmXReLzRZywn-xQx_tU,16805 +PySide2/qml/QtQuick/Dialogs/DefaultColorDialog.qmlc,sha256=ibxLwypnnBzJHB3wxeODU9WTRHqnHvSxUpBkMRSmUs8,38880 +PySide2/qml/QtQuick/Dialogs/DefaultDialogWrapper.qml,sha256=Cf29wwmLp33SJhuM2P2Dhm2Zjrm_qfaF2lxD_3jOdG0,8343 +PySide2/qml/QtQuick/Dialogs/DefaultDialogWrapper.qmlc,sha256=NuwiYU8dgfnii4eaeRoj71pzhnBwJu8YRh0HkqZU6EY,15744 +PySide2/qml/QtQuick/Dialogs/DefaultFileDialog.qml,sha256=dWLd-yrGJqJT-jmH_O1d961-Ic5h6q8QLwBcxYb-a70,21837 +PySide2/qml/QtQuick/Dialogs/DefaultFileDialog.qmlc,sha256=AX-2KGdKWTPuxTz6A5mXewgY6Tr9B6RGziIbJ5s_Dm4,49208 +PySide2/qml/QtQuick/Dialogs/DefaultFontDialog.qml,sha256=R-ToRyxxlZocwS-whXKQ5lWskBxo0gkCSoABJVXwx9g,18789 +PySide2/qml/QtQuick/Dialogs/DefaultFontDialog.qmlc,sha256=sbsQ4UAV2XItFEBhM21Dh7yvxeUuEVVaXr_RWDFErmw,38616 +PySide2/qml/QtQuick/Dialogs/DefaultMessageDialog.qml,sha256=yqo0wqrfMtDruqzxd0TFeXt51NN3Mh-IE5s_E6FKthw,12934 +PySide2/qml/QtQuick/Dialogs/DefaultMessageDialog.qmlc,sha256=ivUSelAkrjugEJ-Tf3Bt4lrUaURje-WdaSHUYCG5QE4,31056 +PySide2/qml/QtQuick/Dialogs/Private/dialogsprivateplugin.dll,sha256=-DkS_741gADidkELXv8NumCOS-m7NNdLRjjtCw5CYJM,57624 +PySide2/qml/QtQuick/Dialogs/Private/plugins.qmltypes,sha256=nydIMStGLJvWGhY4uR0vDjavCI2gbFXeOF0hYpkyWJI,12562 +PySide2/qml/QtQuick/Dialogs/Private/qmldir,sha256=MoznKB_xDvDZCnU6cWkSZW0_l0dmJKWEqLUIRxJ_oA0,128 +PySide2/qml/QtQuick/Dialogs/WidgetColorDialog.qml,sha256=aaZbZNcLIygliqGjW1Lh_E16T_vCtFi8jKSN1buyjI8,2046 +PySide2/qml/QtQuick/Dialogs/WidgetColorDialog.qmlc,sha256=1lEcJ6Sszl2mX2LB15IirQOobaC8n1iJFJ4JmEI37iI,628 +PySide2/qml/QtQuick/Dialogs/WidgetFileDialog.qml,sha256=J13XRd59-6LP4gUTxy-R27zzqeeafFxYJt3hFkB_gxw,2045 +PySide2/qml/QtQuick/Dialogs/WidgetFileDialog.qmlc,sha256=tIpI9YO_IbUpaeB4y-giwSXj98Xn5VlqRHhaY7lYGgo,628 +PySide2/qml/QtQuick/Dialogs/WidgetFontDialog.qml,sha256=3DbVpOcTpc7tjod8sW0wJylT5zbJn7-TMHUiAoHjou4,2045 +PySide2/qml/QtQuick/Dialogs/WidgetFontDialog.qmlc,sha256=2jQTRkMUdbUQ_KwSaOWfUI7noqZpbmGtUlUWKMHZmUI,628 +PySide2/qml/QtQuick/Dialogs/WidgetMessageDialog.qml,sha256=3JGk5odpbEqoPlodbgW_3o8_roM4aRmC5C8ygq-aHm4,2048 +PySide2/qml/QtQuick/Dialogs/WidgetMessageDialog.qmlc,sha256=PWzIy03v80ZyMNcEfiHiOETcAoDL-_vLvXkYYDYR4uY,628 +PySide2/qml/QtQuick/Dialogs/dialogplugin.dll,sha256=umidywEoMmnoygNqOnKfnYF8M0hztDY81YZ6CDFkGcw,146712 +PySide2/qml/QtQuick/Dialogs/images/checkers.png,sha256=qfqrruEf3OahaVT0taz7jM6CuVa9qONlNuL6KlVlgz4,80 +PySide2/qml/QtQuick/Dialogs/images/checkmark.png,sha256=xk9WUkkheNPnfDWMgWkgCoGb5QrlV9xanXHB93qi7Hs,809 +PySide2/qml/QtQuick/Dialogs/images/copy.png,sha256=LxEVucHXBlC4RZcUp8QQomKdGZKiXkr57Kr6nPoSVNc,1338 +PySide2/qml/QtQuick/Dialogs/images/critical.png,sha256=EfnRtFHly5o8B1OH1WrtEa_fX_OryHSxIiHmldXfnJU,253 +PySide2/qml/QtQuick/Dialogs/images/crosshairs.png,sha256=MLSmyVpgatjpZJ9V3JqhAgY3rPhQ0gTjGQS3FEv0lpo,876 +PySide2/qml/QtQuick/Dialogs/images/information.png,sha256=hIeOYfdgUBZhH7tJwH8ZY8SCO0EggWIHL7zaMJYzAbc,254 +PySide2/qml/QtQuick/Dialogs/images/question.png,sha256=mOjdg_rAR7Qvs95p8nM7h2l8qKM_VK4S5l0tiIZ--Ao,257 +PySide2/qml/QtQuick/Dialogs/images/slider_handle.png,sha256=j6XUg9g_5KkyDVJKU5bGxN-A9I5VOw_fNEs2V2I2rN8,1551 +PySide2/qml/QtQuick/Dialogs/images/sunken_frame.png,sha256=tOb3WiVqgVOsNigkqLfaopx3AI2BLHjd-kj5FqJsn2A,623 +PySide2/qml/QtQuick/Dialogs/images/warning.png,sha256=BUCKEkopPfVcpdPrYvNzyVQHX8fu-QPJbyVZqfPb7tA,224 +PySide2/qml/QtQuick/Dialogs/images/window_border.png,sha256=m2sTzzBgkb4SdMYtDdVAA5Nc2-Kv3foj1xvjNg5EITo,371 +PySide2/qml/QtQuick/Dialogs/plugins.qmltypes,sha256=doCFy6zohUo9CU3BP-2j8VIdZHF2r2giQ21uHx7qfpg,17475 +PySide2/qml/QtQuick/Dialogs/qml/ColorSlider.qml,sha256=CcD1lAPIg7492Gairba-X1vkDtmr9zEJyHumYnhD8_8,5169 +PySide2/qml/QtQuick/Dialogs/qml/ColorSlider.qmlc,sha256=63eATU1PQvKvRh34UECwbIp8gGfjnBckv573OTGSIZU,10732 +PySide2/qml/QtQuick/Dialogs/qml/DefaultWindowDecoration.qml,sha256=J-rT1pZ4E8xccqNXU20DU9amxE1RmdwPe8kYmT86-EY,2923 +PySide2/qml/QtQuick/Dialogs/qml/DefaultWindowDecoration.qmlc,sha256=cxY6TW-5f6d1EYNJp8aJHM_2lwMCmIEG5DX_n15A69w,5116 +PySide2/qml/QtQuick/Dialogs/qml/IconButtonStyle.qml,sha256=yXsVRAz5DqvxVdbqjb1Y_pgh0NSlt2iO6oRDLN9ektw,2578 +PySide2/qml/QtQuick/Dialogs/qml/IconButtonStyle.qmlc,sha256=korNeS5WqxViRGRJoRk8kB2nv8HFj7LGQFzrMS6-ynI,3976 +PySide2/qml/QtQuick/Dialogs/qml/IconGlyph.qml,sha256=nhG39g6f3jx_kjgB8ibCIRAkob7d54zfypQWLlO2zS8,2253 +PySide2/qml/QtQuick/Dialogs/qml/IconGlyph.qmlc,sha256=3okr8wctxDgwvTslTlpvZKtrwsiTb1FqNr7MgjEJ2Y8,2476 +PySide2/qml/QtQuick/Dialogs/qml/icons.ttf,sha256=9QMNwjayAqXGwve_3ZSKq7UkpDmL9FOVMQzGy63wEwA,17372 +PySide2/qml/QtQuick/Dialogs/qml/qmldir,sha256=8dzLLDtRRugQvQoJ9mb_dIesAfMOunnymUBeJOA-07I,103 +PySide2/qml/QtQuick/Dialogs/qmldir,sha256=37lofafvZBfxSivVly4LgBU1qAAX3I6MDH5lU-U16jA,295 +PySide2/qml/QtQuick/Extras/CircularGauge.qml,sha256=JPECI-iSXDZaX8weeSJMblk6Nho4ocK5VZeOTrc0BYo,5676 +PySide2/qml/QtQuick/Extras/CircularGauge.qmlc,sha256=qEsB-VHg4UN8XpjqKqB3WP9-0wEwW0sJkZ_d64iwvdE,2304 +PySide2/qml/QtQuick/Extras/DelayButton.qml,sha256=62NgHwcjpga-HkIcTkb-BWEFcwyywMQiVU_5nv5RwKo,5726 +PySide2/qml/QtQuick/Extras/DelayButton.qmlc,sha256=7tPNP-HL3fqG2M_lENb44ZpKo8atK-68h71Xp30Tf2M,4736 +PySide2/qml/QtQuick/Extras/Dial.qml,sha256=yiNT2DAWJD-G2CfyLlzfg7XVX5waxWwMwf-WIV92iOc,7052 +PySide2/qml/QtQuick/Extras/Dial.qmlc,sha256=RZy8M_jH_C1raiANLcRqCgTvKhCorYxV1zJPvpLET-U,7660 +PySide2/qml/QtQuick/Extras/Gauge.qml,sha256=ZeQ3Ap1xzkhofSCPajFi93Wpc_UF-ZcrSH1S8eM4JAA,6678 +PySide2/qml/QtQuick/Extras/Gauge.qmlc,sha256=aHRT_10-sd0KKKUqZNmGImcmAsFPPOfCNPBUkG4sNWI,4692 +PySide2/qml/QtQuick/Extras/PieMenu.qml,sha256=WBIbFzH10z2ZwRiW8jmaBGQdiOIVjJ53fgIA34jZtu8,29354 +PySide2/qml/QtQuick/Extras/PieMenu.qmlc,sha256=iD4ahg8GxerusL7aJnyAua4ObqlVwxL_X-br3XxDk2s,23240 +PySide2/qml/QtQuick/Extras/Private/CircularButton.qml,sha256=wOUs2kbtfbFS09ZMzR1L9aJA9JrHYQfbKnuxYdlBK7k,2233 +PySide2/qml/QtQuick/Extras/Private/CircularButton.qmlc,sha256=Ww4c-ROzw3CxGV_WCYaG8TbHksAvtgmmm8OSnWsIFdM,1300 +PySide2/qml/QtQuick/Extras/Private/CircularButtonStyleHelper.qml,sha256=SV8OkstkEurNg39--c23dWBvD-BGSeGQYozyl_2oFDc,6177 +PySide2/qml/QtQuick/Extras/Private/CircularButtonStyleHelper.qmlc,sha256=ulcdjOsgKGThTPRSobMRN1OMfL2d4uDZnpCWzwoQLcQ,10020 +PySide2/qml/QtQuick/Extras/Private/CircularTickmarkLabel.qml,sha256=QYP-DmBAd8c7j8H0XH-XEJXADT0eSIpOQeaztcMWiYw,5261 +PySide2/qml/QtQuick/Extras/Private/CircularTickmarkLabel.qmlc,sha256=P7Ka182m4GmTsMKGQFx-cVDI9MyhivIPM2f6vWnNnvw,4968 +PySide2/qml/QtQuick/Extras/Private/Handle.qml,sha256=HO7khjcjmwfRBmSFheckG5HuEk666wfc9j2BGn5FxEo,4681 +PySide2/qml/QtQuick/Extras/Private/Handle.qmlc,sha256=5BMDM-DCHkHJu4l9wFQexn1ys2kzlmnhLWpN-u7R8Gg,6240 +PySide2/qml/QtQuick/Extras/Private/PieMenuIcon.qml,sha256=olKBQa-NaY5NHdBq9zxUHWoW4sDFoJavw6vZUfnXT90,4559 +PySide2/qml/QtQuick/Extras/Private/PieMenuIcon.qmlc,sha256=YWuJCkdijyxQ4zTM3ElFHm3cgVrWwl0ZDEl_3VsedAE,4800 +PySide2/qml/QtQuick/Extras/Private/TextSingleton.qml,sha256=9Ljs4eFVCunVRuGy-pHFS3bah0ZA7cGaj2Tc8NESXz4,2020 +PySide2/qml/QtQuick/Extras/Private/TextSingleton.qmlc,sha256=0mZILdANY8xJ3KIQyV_JPV7eIkg06YpHJMFZUktueDo,516 +PySide2/qml/QtQuick/Extras/Private/qmldir,sha256=6ZxJyMrtETrLJndEcDOFU-Blj_IcbLmyU03iANpGa4c,31 +PySide2/qml/QtQuick/Extras/StatusIndicator.qml,sha256=mUznpetgz02iEBkmP7upsYME2HtxH241KOT0BGULxsE,4261 +PySide2/qml/QtQuick/Extras/StatusIndicator.qmlc,sha256=W4xYML_BcfqUwMvuwUQe1OES_uz1wP0wMaUnJ4sFXC0,1932 +PySide2/qml/QtQuick/Extras/ToggleButton.qml,sha256=5PPVUp4v1R2kjnULnAu_mEWhnNWaM1maFQAh9B3otTo,3008 +PySide2/qml/QtQuick/Extras/ToggleButton.qmlc,sha256=OE_QqZDsbEQx9YVjALgXwLPy6hju_hNHF4vG-HJrtxg,1380 +PySide2/qml/QtQuick/Extras/Tumbler.qml,sha256=ikciwW4Z77oL-2RzwiN42AE5dd49PfvlzFtuKf4O8dw,18368 +PySide2/qml/QtQuick/Extras/Tumbler.qmlc,sha256=QFHEsgfrvwtr7tFCVicZ8XfMnQQV_1j7TUc7Xx9g2II,27396 +PySide2/qml/QtQuick/Extras/TumblerColumn.qml,sha256=ElC9lgcSwA9-Be_6EqgdvQ-ojic_tExjcMKajIReO_U,5447 +PySide2/qml/QtQuick/Extras/TumblerColumn.qmlc,sha256=0kAqLyIky5N3uTuKbFGTRZ6ktXuwryoA_PhGs0F4ScU,2804 +PySide2/qml/QtQuick/Extras/designer/CircularGaugeSpecifics.qml,sha256=-hs8AAOEgcjtJfTbf5mWx71NVczrXmdKMQehD2NxodY,4173 +PySide2/qml/QtQuick/Extras/designer/CircularGaugeSpecifics.qmlc,sha256=1mRdEx10cg7YExHy7rpcLi8aOdRT1jLUTnTk_KygMUY,6684 +PySide2/qml/QtQuick/Extras/designer/DelayButtonSpecifics.qml,sha256=eDBPMRzFTPOshg8fbQtGklqiraqb-yJ9VFkvOq5nVVg,3500 +PySide2/qml/QtQuick/Extras/designer/DelayButtonSpecifics.qmlc,sha256=vtvwDoS5TCeUCLXHY_ItMuly9Kw56eO6Ney5H117bAI,4500 +PySide2/qml/QtQuick/Extras/designer/DialSpecifics.qml,sha256=0eiLDSFXEdxIaTiwjE2et5Nfola5NSAk51b8b3EOBBE,4707 +PySide2/qml/QtQuick/Extras/designer/DialSpecifics.qmlc,sha256=UWw0uQEP70xXHLM9FXMAmfl9i0L77Xt30n__Jvbb0cc,7644 +PySide2/qml/QtQuick/Extras/designer/GaugeSpecifics.qml,sha256=i5p3929Ginm6nWDbF-8WAVLfBmH0CO3gSJi5dsAHVZU,4909 +PySide2/qml/QtQuick/Extras/designer/GaugeSpecifics.qmlc,sha256=r7b5-eGg7_mWEWtxEf8r2sC4FUlQQqoPlJ1xohmV5nE,5892 +PySide2/qml/QtQuick/Extras/designer/PictureSpecifics.qml,sha256=stMzzNWt_ykz4yuTd7uxje1t7fhtQvQ5rVG5uTvvy8w,3061 +PySide2/qml/QtQuick/Extras/designer/PictureSpecifics.qmlc,sha256=bk6HIlhAUl35s6hbpL_twM2AaNH6Tf39fWN4906-Awg,4800 +PySide2/qml/QtQuick/Extras/designer/PieMenuSpecifics.qml,sha256=AIvbUkU4b-2nHdeomUftcWtyJJXsXDZcCvgM7WxhgEI,4017 +PySide2/qml/QtQuick/Extras/designer/PieMenuSpecifics.qmlc,sha256=YYLQFfXmHqM1JCcmgMsZa6C7NRgvvHkxt0UVCPe5pEM,7040 +PySide2/qml/QtQuick/Extras/designer/StatusIndicatorSpecifics.qml,sha256=NySQTTZvK6BiPYfXIcs0slyV3Mg3iwwQtev3YiJYdA4,2940 +PySide2/qml/QtQuick/Extras/designer/StatusIndicatorSpecifics.qmlc,sha256=Ktxp16OBct8s3Z4Zsnl5VnQWzCKncDujGVBIhDsgDy0,4472 +PySide2/qml/QtQuick/Extras/designer/ToggleButtonSpecifics.qml,sha256=K1NDt73bl3OUWLuboDcXboryWXX4bkKLLxTvjkYDMxo,3470 +PySide2/qml/QtQuick/Extras/designer/ToggleButtonSpecifics.qmlc,sha256=Sm2sBoMtta6hSTx3Z-yBQHiqYjTQulSZU0cbps2c7jo,4356 +PySide2/qml/QtQuick/Extras/designer/images/circulargauge-icon.png,sha256=P_VsuaQOGLpa8CKgSMcOg6AqjUIhLzPPfU73k3LA2kE,373 +PySide2/qml/QtQuick/Extras/designer/images/circulargauge-icon16.png,sha256=ev6CyhO1D0adjfgQStR2HqROjM9vSH3H26_O1JoMyjI,249 +PySide2/qml/QtQuick/Extras/designer/images/delaybutton-icon.png,sha256=fHk8J0H0rYn-uRH6hfpxwqA9UE5IMbgpH9uyG-_9W38,343 +PySide2/qml/QtQuick/Extras/designer/images/delaybutton-icon16.png,sha256=10agnBdzQWkJ1T8JfEhdk5__TU24rqfczuaccwXog-g,220 +PySide2/qml/QtQuick/Extras/designer/images/dial-icon.png,sha256=S99v4K2ZB8EycwVQ000EVnuIQHB9GJ52xIF9DmpSsVA,326 +PySide2/qml/QtQuick/Extras/designer/images/dial-icon16.png,sha256=Mnn70T76iuOgMrtOHDH5Pn8w1_AO7OPIkcTfaj4_oSY,217 +PySide2/qml/QtQuick/Extras/designer/images/gauge-icon.png,sha256=Le-p25H-0zRiRiWbEdt6zWkgNFqSOX1HFyBHIorwbEY,189 +PySide2/qml/QtQuick/Extras/designer/images/gauge-icon16.png,sha256=GuYfUwrhbBmXGAziDKewHdlAJpqJTHSnGer31c1X53k,163 +PySide2/qml/QtQuick/Extras/designer/images/picture-icon.png,sha256=_KrtYG3Z2l5DFjj6aIsnk0jeLfwmW_hh9ioE0V8R90w,220 +PySide2/qml/QtQuick/Extras/designer/images/picture-icon16.png,sha256=s8aorBpuGJc0fVzT0BFBjZN7Yoo-Dfck_lwoTZV2ZZQ,177 +PySide2/qml/QtQuick/Extras/designer/images/piemenu-icon.png,sha256=RGfBoggpyxjYAH965vqku8dVmZA3C2xnxKtpPF4Hz0U,378 +PySide2/qml/QtQuick/Extras/designer/images/piemenu-icon16.png,sha256=VpPa72ekIS0a_jWuwB0wxvz2ygaQL2xFCVxK1_i-jFo,242 +PySide2/qml/QtQuick/Extras/designer/images/statusindicator-icon.png,sha256=tN59vI7Lq3VQB4lqNXjdVDXBBfW02JDSkstgSZVaTjk,316 +PySide2/qml/QtQuick/Extras/designer/images/statusindicator-icon16.png,sha256=5WJyDgDB7lI9_KLzhgpn3lxl-WTtHdmXsw4o1DHeoV0,212 +PySide2/qml/QtQuick/Extras/designer/images/togglebutton-icon.png,sha256=aH_W4DZcP-UskrGDBNkCMG1xc_hL9cU9glhF0a60ev4,340 +PySide2/qml/QtQuick/Extras/designer/images/togglebutton-icon16.png,sha256=i9rPOIYQkU_MS1mm3Z8zym7MBTwa4FtyumJSAvRedMg,223 +PySide2/qml/QtQuick/Extras/designer/images/tumbler-icon.png,sha256=nM3jjfaqro1nNi78QSg-K8IYN58A2RXXDJs4K4EhUFE,187 +PySide2/qml/QtQuick/Extras/designer/images/tumbler-icon16.png,sha256=IFtoxnT3a44My2Mwxaa0onGXJBMAMmvZIKb532LqDnk,1130 +PySide2/qml/QtQuick/Extras/designer/qtquickextras.metainfo,sha256=UjoDp80x5zGkQEr2uWTFxJe4ZjUIbdDOtVCTFIfFTKY,3455 +PySide2/qml/QtQuick/Extras/plugins.qmltypes,sha256=jXWw0eDvmvNJaYm_sor2_IF1Kg0UiqcuLUV78HwpKfY,30070 +PySide2/qml/QtQuick/Extras/qmldir,sha256=qxrIU5KdvLmUlcIJjCrroG57PrCszj29LA8PbHQhFCc,164 +PySide2/qml/QtQuick/Extras/qtquickextrasplugin.dll,sha256=P2WBlp4HSMbUIjdry5lLn8PsshR_AYsiJJKqChcgyQw,83224 +PySide2/qml/QtQuick/Layouts/plugins.qmltypes,sha256=4ZtmtyASr6DNgNHtzw1IfTamMxDOTvcQAGT5UMyp3IY,4774 +PySide2/qml/QtQuick/Layouts/qmldir,sha256=y1hcL8Bu3KS5XJ7gQBfNOEyucDVujdRoq9fE_R5kC1k,130 +PySide2/qml/QtQuick/Layouts/qquicklayoutsplugin.dll,sha256=Md36Yjjccugt7M_Pir_CKuk2cqbF70wNNTHsKBBat8E,118552 +PySide2/qml/QtQuick/LocalStorage/plugins.qmltypes,sha256=ISyATpiUgOL6ZwXssHay0O04te6K_r06_Cvnfp7Ot0o,657 +PySide2/qml/QtQuick/LocalStorage/qmldir,sha256=WA3bgdZwoV6M3SJhTuKPOlhedvF3JwvhSvbjFsXBjhU,120 +PySide2/qml/QtQuick/LocalStorage/qmllocalstorageplugin.dll,sha256=1J8axER89rHDHwWnjUmte3zFu8YuUi6PtwjdFvL5u5M,59672 +PySide2/qml/QtQuick/Particles.2/particlesplugin.dll,sha256=lzpD8FwmtjatlZURXsiyKzuMe1Lu5SoSzpjOX1Xu4F4,29464 +PySide2/qml/QtQuick/Particles.2/plugins.qmltypes,sha256=r98U7vpdoVMzoNBzGMFYGqzJH8gZGg-7_s03PpjbdKc,47258 +PySide2/qml/QtQuick/Particles.2/qmldir,sha256=Mu5LAjoOlux44pzUFHoiO0xIxp4Vx_6Vgqj47yuhC7k,112 +PySide2/qml/QtQuick/Pdf/pdfplugin.dll,sha256=KKy_dIhGVg6EUka8DPGFqgczX8oaiD5Yw0rRhTCaPo0,134424 +PySide2/qml/QtQuick/Pdf/plugins.qmltypes,sha256=QF78PVntM6kvjus2XDetPltjml0543tzeXVLq4AGYqc,2150 +PySide2/qml/QtQuick/Pdf/qml/PdfMultiPageView.qml,sha256=G-E9cyYXoFqFThvKXYbKpAN08CXjNTGHhDtSH0vBbFI,22854 +PySide2/qml/QtQuick/Pdf/qml/PdfPageView.qml,sha256=BErxwak1CDKK-wcRevM9lu50tnvToKxwdJ9LWOO-HBg,10406 +PySide2/qml/QtQuick/Pdf/qml/PdfScrollablePageView.qml,sha256=Z-b5xBWLO3845N4bpHthDre4qOFwk9xrS_VapUL4JEA,13654 +PySide2/qml/QtQuick/Pdf/qmldir,sha256=VwDBt_zZmjwU9vWDnkNw0VOCQfqQ3BuzZ2OxWSTVVBU,94 +PySide2/qml/QtQuick/PrivateWidgets/plugins.qmltypes,sha256=18vNNKWbnrfCsNEgd-q8j_y5CR16_cpFYz9RGjxnDV4,11455 +PySide2/qml/QtQuick/PrivateWidgets/qmldir,sha256=17BJNhrIeyhROMIJHUifhMxxzMUXo9aHSfX8v5YzR_M,120 +PySide2/qml/QtQuick/PrivateWidgets/widgetsplugin.dll,sha256=seTavLHBBhBTn_vbnc1tslmAO4Dd4sxj3lHnkqLtO7E,133400 +PySide2/qml/QtQuick/Scene2D/plugins.qmltypes,sha256=trHzi-Uo2EPF2KVsLCbi2IVdTRhHDSlPYgJFcZVheJM,2365 +PySide2/qml/QtQuick/Scene2D/qmldir,sha256=0ayrRGXH0gmRyqv16zn9pA2Cx2fgV1kgGMNGq0QpHuw,85 +PySide2/qml/QtQuick/Scene2D/qtquickscene2dplugin.dll,sha256=rk5r6nBEqKzYWuivdogE0jRwF0Xgwm6OiQrHG6BMfYE,35096 +PySide2/qml/QtQuick/Scene3D/plugins.qmltypes,sha256=08VBsnq4Ot0uzOUBm_QvR7mnHIutsGI4x7PG0hIcHKI,3129 +PySide2/qml/QtQuick/Scene3D/qmldir,sha256=YECgrWzrP91ZM8Qkvpa45nrAGWivMoNFpepEEN8kp4I,85 +PySide2/qml/QtQuick/Scene3D/qtquickscene3dplugin.dll,sha256=uSorRGA7saZeuoSoxyKnOI5liR1dt-NGW_qFJioJhM0,102168 +PySide2/qml/QtQuick/Shapes/plugins.qmltypes,sha256=oNlBEFJfCqUIuehhr-2TW35j9AEcaaIiOpkEF3UtUcs,5523 +PySide2/qml/QtQuick/Shapes/qmldir,sha256=WWSvWPKgNx6cWk_YdRTgBsEqfZfiPluOVqD4a9oA1kw,101 +PySide2/qml/QtQuick/Shapes/qmlshapesplugin.dll,sha256=yBm0rX4JyGRxNqowcANPqAzWskHtOIH1Cy6UGcsBTbo,29464 +PySide2/qml/QtQuick/Templates.2/plugins.qmltypes,sha256=XfCSfOArjE-yjdky9Bl3AZMpsqNI48wUIIGccZRgzm4,129347 +PySide2/qml/QtQuick/Templates.2/qmldir,sha256=sk8sSv-afxAvKiW89VLZH2NxYOVeBTWDKYsKFsk67yM,142 +PySide2/qml/QtQuick/Templates.2/qtquicktemplates2plugin.dll,sha256=fdBlmhCwW8z4IjS4cb87ZStlBRaTsdI-7M3ZrYo4aE4,358168 +PySide2/qml/QtQuick/Timeline/plugins.qmltypes,sha256=ceIrbbewPgSmo8a60-UXVthJs5_TUcQoWGVeCnOCfhc,2094 +PySide2/qml/QtQuick/Timeline/qmldir,sha256=UOUmaQ-MOX2RNkNqG0Tx2TrgNj9dq6uYSBuHiOQq3RM,134 +PySide2/qml/QtQuick/Timeline/qtquicktimelineplugin.dll,sha256=uWg0KCZqUqi3tRaGrbUj75II5M3NouVkqKrJaFEZ1Bs,69400 +PySide2/qml/QtQuick/VirtualKeyboard/Settings/plugins.qmltypes,sha256=wM9DhObIsqcDNhF6dXjVRVa40s_gqxHdcYGLlac1Fzk,2057 +PySide2/qml/QtQuick/VirtualKeyboard/Settings/qmldir,sha256=RqOSx6XZ6rB0Z5F-AoqEZl8NgQ38Gk2o0GCFjlGkGv0,182 +PySide2/qml/QtQuick/VirtualKeyboard/Settings/qtquickvirtualkeyboardsettingsplugin.dll,sha256=RmgqS-sHqWUB-94d5_BNpcnArwgIwJV5L0CFQcnuYt4,35096 +PySide2/qml/QtQuick/VirtualKeyboard/Styles/plugins.qmltypes,sha256=GDfit9Ee1iS6h-RAygyJAlWvM7ewnlM-7cnKoO35jFA,40965 +PySide2/qml/QtQuick/VirtualKeyboard/Styles/qmldir,sha256=cR9ApawjxA5Y5MEnOpx7_Rrqg25GEk1E1GRW3bXoRpI,176 +PySide2/qml/QtQuick/VirtualKeyboard/Styles/qtquickvirtualkeyboardstylesplugin.dll,sha256=DHKagGYD9_h7UBD8I3TGpGnhfji1ccCLh7gzlkmeH3g,64280 +PySide2/qml/QtQuick/VirtualKeyboard/plugins.qmltypes,sha256=SQ6Z5tITxGln0xIe2nhOn-xaAKg4ONvu_mgGPj6o7MY,108220 +PySide2/qml/QtQuick/VirtualKeyboard/qmldir,sha256=mh8uQbd0mBTkRGQGdDYB66OcGDaQujclcBHBDBvgNz0,341 +PySide2/qml/QtQuick/VirtualKeyboard/qtquickvirtualkeyboardplugin.dll,sha256=81jmBuKdT77S4nQ5sqKRyuLbRauupotw0vYOoDdafsw,65304 +PySide2/qml/QtQuick/Window.2/plugins.qmltypes,sha256=c98lT6Gao162zXoi0Nsy6YDqHIZlTBCriYf827RBg5Y,14715 +PySide2/qml/QtQuick/Window.2/qmldir,sha256=jYi4FUfhVz-Mkd-ZjqgmCOCnl3CwFMgvdgpnOItBlFo,122 +PySide2/qml/QtQuick/Window.2/windowplugin.dll,sha256=iWE6yweBQjZZ0fLEdJRrhTnN_vVI1Uu3936aeJ-upG0,58136 +PySide2/qml/QtQuick/XmlListModel/plugins.qmltypes,sha256=ubzcE3m5iZW4229nmx7HoW9XK5PJDDKF9iom7iCSVdg,12500 +PySide2/qml/QtQuick/XmlListModel/qmldir,sha256=Bu2exf6kvOEpwzgkH94UmeKDnSuu1-ZNDdr3qArtp6U,138 +PySide2/qml/QtQuick/XmlListModel/qmlxmllistmodelplugin.dll,sha256=s9a1VxqWF_6VQwOaJl4IKlLwcDpDz_D7HjTquQCJyd4,88856 +PySide2/qml/QtQuick3D/Effects/AdditiveColorGradient.qml,sha256=39PQZXPmSPi-g9EoK-fbZA_3RK5e85yyzqiS1dpmtbk,1801 +PySide2/qml/QtQuick3D/Effects/Blur.qml,sha256=p05KI0yZesqeKND6S1AFe7cqwAVZcQJBAIcmMq9NzLk,1659 +PySide2/qml/QtQuick3D/Effects/BrushStrokes.qml,sha256=Pp642nTSdDx1FMouJUNXs3-msxPw0taa2ef-38YSTaQ,2298 +PySide2/qml/QtQuick3D/Effects/ChromaticAberration.qml,sha256=jQrI8bIPyU6JyN8afHqaQ7FUTlVh66kwnc436o5nsH8,2414 +PySide2/qml/QtQuick3D/Effects/ColorMaster.qml,sha256=-d0WI_eFQBTECqAXZWEkRTwLKl68VooMw2XIeqo7TQ0,1849 +PySide2/qml/QtQuick3D/Effects/DepthOfFieldHQBlur.qml,sha256=SYNd7OqFX-gTUN9TIAW4KMJqYA6kzcxGz3Fi7O2wLyQ,3156 +PySide2/qml/QtQuick3D/Effects/Desaturate.qml,sha256=paorsowpsGiTfVWDGKAHtqa-iiivEu-UGM31bgjEhAQ,1676 +PySide2/qml/QtQuick3D/Effects/DistortionRipple.qml,sha256=e03BNVQJBu5Kk8vWQcPX0iYuKjJDDooG5xo_8I4ZOKI,2080 +PySide2/qml/QtQuick3D/Effects/DistortionSphere.qml,sha256=GgIPL3ybmLSciWgBGVnH21xeP0NEz5_Qhdr7sYKo28I,1957 +PySide2/qml/QtQuick3D/Effects/DistortionSpiral.qml,sha256=zo_ULWcMWYQaUN-eojUVI11tEVHWGLoDw9S9bwpt1n0,1967 +PySide2/qml/QtQuick3D/Effects/EdgeDetect.qml,sha256=wSsjofMn6VlVexL-t0DHU8_bMtmPTAdmBFjR1n-bwX4,1819 +PySide2/qml/QtQuick3D/Effects/Emboss.qml,sha256=oi4FKUZYdc6cf50CtRakKmeK56rT4AoapxDdnjOAQgs,1678 +PySide2/qml/QtQuick3D/Effects/Flip.qml,sha256=nPCINyBMyEqLT9ErJ-969hoAtqLNyKN-P_8hxJu65ks,1709 +PySide2/qml/QtQuick3D/Effects/Fxaa.qml,sha256=SGf07zQ6kLJpRzEyoherAbacPoGVM9cR67MVSEqrLZc,2358 +PySide2/qml/QtQuick3D/Effects/GaussianBlur.qml,sha256=T6ElYJw_qsWTj7g1izrgBLBkWlD9cAHSP1Qs-bn7TLc,2433 +PySide2/qml/QtQuick3D/Effects/HDRBloomTonemap.qml,sha256=7ATno46q-Vj6iH38bZPzm67FqGcyb07qET5KB6IoDKE,4952 +PySide2/qml/QtQuick3D/Effects/MotionBlur.qml,sha256=qZz5EOiVNAmmnb590WaIW7aAiSpPimf5K3MjoXnMHXs,3625 +PySide2/qml/QtQuick3D/Effects/SCurveTonemap.qml,sha256=P7BzUz53RGcF2u2DhlazjM98eDPJGkt_xib4zqVxMtg,2315 +PySide2/qml/QtQuick3D/Effects/Scatter.qml,sha256=46TLQqOx4DU6M5yvjR1TU80IZdELKavzsD1ama92nxU,2044 +PySide2/qml/QtQuick3D/Effects/TiltShift.qml,sha256=l2z31_MqA9fEsQlO28nk8pQvTQYFqm5-qF-CRW97L9E,3007 +PySide2/qml/QtQuick3D/Effects/Vignette.qml,sha256=bjdHj5kUIn3i6scJTRLkC4MlHhSRuw1CSCZoosnDvkQ,1803 +PySide2/qml/QtQuick3D/Effects/designer/AdditiveColorGradientSection.qml,sha256=zL9il1ra9_LB4q5IZU07tVO8NZ3qQ5TWfyChyV1N8yU,2104 +PySide2/qml/QtQuick3D/Effects/designer/AdditiveColorGradientSpecifics.qml,sha256=4IP8uY9rOqQwB8NactC6o3eL7gkvUeeYUXIe1ETLNO0,1539 +PySide2/qml/QtQuick3D/Effects/designer/BlurSection.qml,sha256=J0PDQ1hGYzfZjwpjHQXa1sOwhGlu7xA1htAWPMnUac0,2057 +PySide2/qml/QtQuick3D/Effects/designer/BlurSpecifics.qml,sha256=d_L95i9KvmX4Fmn8WL0Lb9iGGOqi_0vRGSJVZ7HT3TE,1522 +PySide2/qml/QtQuick3D/Effects/designer/BrushStrokesSection.qml,sha256=rSVILJC4v-pFsDwybZ-qiLHT0FKzdkXf-PtZyINQC9E,3522 +PySide2/qml/QtQuick3D/Effects/designer/BrushStrokesSpecifics.qml,sha256=WdX5mVnt-1MxrlZVwt3U3YXdgTbvQKvMPL6vjWPVfl8,1530 +PySide2/qml/QtQuick3D/Effects/designer/ChromaticAberrationSection.qml,sha256=d_hW__-dNwDOZ-K0aAh5VGZpbMk4_OO8n-rxX2XgJAU,3115 +PySide2/qml/QtQuick3D/Effects/designer/ChromaticAberrationSpecifics.qml,sha256=QaypIWDW7h_cO5MN-l78Xsg83b52TEJwtRghpuKkWlc,1537 +PySide2/qml/QtQuick3D/Effects/designer/ColorMasterSection.qml,sha256=l0DWns077DIEyIY5z1FZyEHeKmML5JGy8IsIx0ldDdg,3480 +PySide2/qml/QtQuick3D/Effects/designer/ColorMasterSpecifics.qml,sha256=gJex4BGudiIcNsnU-VvWpLHZslkd9cdN3Ups8RGaLFo,1529 +PySide2/qml/QtQuick3D/Effects/designer/DepthOfFieldHQBlurSection.qml,sha256=Jesw2BAJusPunlSXIXD6UWBLvyawlnARgrCinwyRuT4,2926 +PySide2/qml/QtQuick3D/Effects/designer/DepthOfFieldHQBlurSpecifics.qml,sha256=SLaD8bCyvHTAZT_uThw1adGYkjFRyVSjTmYiWxN2Py0,1536 +PySide2/qml/QtQuick3D/Effects/designer/DesaturateSection.qml,sha256=r8YhR3O5YFBSLWQY38C_LUuMB9W0oWQNDk7rEwdJ_qU,2067 +PySide2/qml/QtQuick3D/Effects/designer/DesaturateSpecifics.qml,sha256=xIS2u0YBQ5_OqWZBJnrKf1Q3RbJTFtXdph7o8hknEYk,1528 +PySide2/qml/QtQuick3D/Effects/designer/DistortionRippleSection.qml,sha256=eQt7JHXn-bMwNABuMa447_QK5WWG50DEqXANXeZlBsM,5054 +PySide2/qml/QtQuick3D/Effects/designer/DistortionRippleSpecifics.qml,sha256=z0gZEE5jCCF-B-aip1bIbkTgTc_MsQbffOasu0lqi3g,1534 +PySide2/qml/QtQuick3D/Effects/designer/DistortionSphereSection.qml,sha256=NRLq-55LAjpE6xLsU6gLjS5KkKmNuJsN57rTFNFcT9Y,4231 +PySide2/qml/QtQuick3D/Effects/designer/DistortionSphereSpecifics.qml,sha256=RX1GrZUQ2ei1Ac_5aQY3QInXuIN0jvSovKuE167f3_Y,1534 +PySide2/qml/QtQuick3D/Effects/designer/DistortionSpiralSection.qml,sha256=gtCUutKtR0q8wLKm6fR_CG4FHEVYnEpQy0sHStS-Q7Q,4204 +PySide2/qml/QtQuick3D/Effects/designer/DistortionSpiralSpecifics.qml,sha256=OF4WHSI-PozH7OMVNYt3l7hUH2tMsn6Dn0nBtreFjOM,1534 +PySide2/qml/QtQuick3D/Effects/designer/EdgeDetectSection.qml,sha256=4Q7gGCSCGUxeQuBm4t79bNZ26mooJktuEZgFENWa8NQ,2062 +PySide2/qml/QtQuick3D/Effects/designer/EdgeDetectSpecifics.qml,sha256=_rgtiQlYP5F4gWO4F5LjukIJBI0R59KZGrVRuJNiBqA,1528 +PySide2/qml/QtQuick3D/Effects/designer/EffectSection.qml,sha256=VKS6diTIbr3Gg5E7ITzEN7B4lT9PwaPfvfl3GKt9IOY,2203 +PySide2/qml/QtQuick3D/Effects/designer/EffectSpecifics.qml,sha256=A-2wJzo201zFR3uI46Hd_5h0HNj7RfTr1i-xDTuzAKs,1524 +PySide2/qml/QtQuick3D/Effects/designer/EmbossSection.qml,sha256=0S-VBySFV2meUklL735FkKih5gG9xz12-TXC2rqcxzM,2063 +PySide2/qml/QtQuick3D/Effects/designer/EmbossSpecifics.qml,sha256=_8gyheixxaBMj0lMWPEbpi3drJhNV7T6MpE13G8ajIY,1524 +PySide2/qml/QtQuick3D/Effects/designer/FlipSection.qml,sha256=qEhbooJ4jAQlnGQxuBVGjkad9Pj8jMTEpXdibdxRrlg,2397 +PySide2/qml/QtQuick3D/Effects/designer/FlipSpecifics.qml,sha256=DvlnFOv-3da1Oe75SO7QeTzPTe25FR8EH-cFVdPdLSY,1522 +PySide2/qml/QtQuick3D/Effects/designer/FxaaSection.qml,sha256=GQr5rmnKZIpD2jVcZ1gjFU4vLir5axIyp0vjCHeps0E,1516 +PySide2/qml/QtQuick3D/Effects/designer/FxaaSpecifics.qml,sha256=sY09NcZPER0bR5lUH5KIXP9nK1Bz7gQzmXgTRQk-7dw,1522 +PySide2/qml/QtQuick3D/Effects/designer/GaussianBlurSection.qml,sha256=HLXZeAEyO53wHwmA14y97M7biYdh-7rWxiz2N7xzZiY,2020 +PySide2/qml/QtQuick3D/Effects/designer/GaussianBlurSpecifics.qml,sha256=COsFz6fKTCgOhYUlP9_OujI3thFLrSrDOWZnEUVgweE,1530 +PySide2/qml/QtQuick3D/Effects/designer/HDRBloomTonemapSection.qml,sha256=XNosKYXOPN3bitu0-GlEg-kP5VoOYLJSXA9Dy5JYTAY,4425 +PySide2/qml/QtQuick3D/Effects/designer/HDRBloomTonemapSpecifics.qml,sha256=v9CdvlCbXcl4Up7bHmImA_HPbTq1CzemGpo7_IV24ls,1533 +PySide2/qml/QtQuick3D/Effects/designer/IdComboBox.qml,sha256=G8wM3pft_HK4twZmp6nXP9_gcdvMNdzVxxfAR8sIzdg,4199 +PySide2/qml/QtQuick3D/Effects/designer/MotionBlurSection.qml,sha256=CA1rt3wkJ1DgbQcE-CsQ2q0-rG5jX8nwCqfTZQC7-yg,2559 +PySide2/qml/QtQuick3D/Effects/designer/MotionBlurSpecifics.qml,sha256=1hT7DqZNrfGLKMLXSNpSUC0Npge3l8FRbqskVz56IEg,1528 +PySide2/qml/QtQuick3D/Effects/designer/SCurveTonemapSection.qml,sha256=fOLsFgNwDZTgRirLYS0oSzPUiWMhAuQZluPjcOt_8Kk,6483 +PySide2/qml/QtQuick3D/Effects/designer/SCurveTonemapSpecifics.qml,sha256=6mwLiGfeMAnSHoliT6Q6Q7oBTlb_lHBEAdDDot4f_Kg,1531 +PySide2/qml/QtQuick3D/Effects/designer/ScatterSection.qml,sha256=FY6kN3Xs2FbwOfyz3zUdqmHFkP28_nDyfbq4DwSEgxA,3506 +PySide2/qml/QtQuick3D/Effects/designer/ScatterSpecifics.qml,sha256=_z2EB4S5lfvBq6__Y3DONL9gLQdQlMOo0_p_7HIOpGA,1525 +PySide2/qml/QtQuick3D/Effects/designer/TiltShiftSection.qml,sha256=vgUO2tL1msyH0E6U_uuAWvc_JJ3yWwXCwAC-HunHlTQ,3827 +PySide2/qml/QtQuick3D/Effects/designer/TiltShiftSpecifics.qml,sha256=rRHh79qnAQDc247-d7ZOc124OoTOxl8Tw0xoo88v6Uo,1527 +PySide2/qml/QtQuick3D/Effects/designer/VignetteSection.qml,sha256=-k2Fy4RVwd5plnOkgYThHMtelQ4_kKBST0iJb8nujDw,2840 +PySide2/qml/QtQuick3D/Effects/designer/VignetteSpecifics.qml,sha256=iHctYim8K7Fk-ijzkvB-G2P2WmBMzB72zGqbBg3Bwb0,1526 +PySide2/qml/QtQuick3D/Effects/designer/effectlib.metainfo,sha256=O6DsinmVwRa159Ach0h9m4X4VunNbcm_Y5SIPTWQXzs,12027 +PySide2/qml/QtQuick3D/Effects/designer/images/effect.png,sha256=dA-d2BfgwUmZsBb-znbJnfSygGWst4zoGVUrxuxXZ3M,411 +PySide2/qml/QtQuick3D/Effects/designer/images/effect16.png,sha256=szEHoRHnmp90mT2L2EPvP1XBMr27QDgFPUMh6plejbE,321 +PySide2/qml/QtQuick3D/Effects/designer/images/effect@2x.png,sha256=fEh1QkGnSjrmmP0hkpOtyE_H617-j4GyGNd21DQrsm0,714 +PySide2/qml/QtQuick3D/Effects/designer/source/effect_template.qml,sha256=3aN_j8gxnV0KaZSjQ8dVqVe0PlCy183l9A60mleYqX0,1673 +PySide2/qml/QtQuick3D/Effects/maps/brushnoise.png,sha256=_R72ChlNd82OPTIXG-KkaC2SMiBgCLtreLCXY6Awnls,61885 +PySide2/qml/QtQuick3D/Effects/maps/white.png,sha256=0QpSFOTU9uxNxu0J7Mf3n7NG8oH41rsiO3H7d4BXH2w,155 +PySide2/qml/QtQuick3D/Effects/plugins.qmltypes,sha256=CyfSC0JHbEiqouKF7xBQ5S08pGLunGmKKdb-XPFMnGw,740 +PySide2/qml/QtQuick3D/Effects/qmldir,sha256=QQZsCtl-ySCuhHM4m_ZIGPCUCYBLj9_SDLRG_T50Ves,873 +PySide2/qml/QtQuick3D/Effects/qtquick3deffectplugin.dll,sha256=qffwH-6JtKmtihbReQRcVzVegH9cllYz5tKQGkNkc0c,118040 +PySide2/qml/QtQuick3D/Helpers/AxisHelper.qml,sha256=jO5fMI9lAX7Yzv364HxXrIgNcngT2U9vsKjFKhYKvz4,3597 +PySide2/qml/QtQuick3D/Helpers/DebugView.qml,sha256=qwZT4GzpjRFlPyUobtL1ulZTr85J_8NosVbx_F9yOno,2313 +PySide2/qml/QtQuick3D/Helpers/WasdController.qml,sha256=F6qJ9tJ7mxX89Ky3kcPiHKPNstseoniMR7uuuJ5cN_g,9374 +PySide2/qml/QtQuick3D/Helpers/meshes/axisGrid.mesh,sha256=taa7WIDChjp_KIkO_LqC1LBgZAmraMRGMbIhLpiYmjE,128684 +PySide2/qml/QtQuick3D/Helpers/plugins.qmltypes,sha256=SKUIfMCGN3UgpedKVESsk49K3c7VWixlgiQvyDwrmoY,2448 +PySide2/qml/QtQuick3D/Helpers/qmldir,sha256=6b1RT1G_FyFDqBkcb-hLXWKjQeq2BO7ps7z3fhpWyVw,232 +PySide2/qml/QtQuick3D/Helpers/qtquick3dhelpersplugin.dll,sha256=TzxssOKAG3pFjzy416k9Pmg6XfmO0-RxlPrKXRH6ZAc,44824 +PySide2/qml/QtQuick3D/Materials/AluminumAnodizedEmissiveMaterial.qml,sha256=xxybNLRWA8acBsDUPxQjDJAO3xPJnsggvnDZpWT13y0,3608 +PySide2/qml/QtQuick3D/Materials/AluminumAnodizedMaterial.qml,sha256=o9MiOmvOOMjdChQ_iT-40GNL-Jmr5-eYThJj_jmWQmk,2742 +PySide2/qml/QtQuick3D/Materials/AluminumBrushedMaterial.qml,sha256=2juR4R9ZnB94FVGp1msP8_K9O4yyPf2UavjpfJby0xY,4902 +PySide2/qml/QtQuick3D/Materials/AluminumEmissiveMaterial.qml,sha256=gnF8N7qxke2RB2XX0cGG5xsRV_N8N11yb2WZnFV6dkQ,4874 +PySide2/qml/QtQuick3D/Materials/AluminumMaterial.qml,sha256=50kDLBAImpAmlI60fO5rtfispZA7zNzzJgfYeyom4WY,3950 +PySide2/qml/QtQuick3D/Materials/CopperMaterial.qml,sha256=tE3Ey0BKULcNP1NE6vTPi4YIMERl_bB-EbQHdmP31tI,2544 +PySide2/qml/QtQuick3D/Materials/FrostedGlassMaterial.qml,sha256=ZCyIzGrRP-kvEIYG1MUgKTxfMWoi0zutUXsI02OvMeg,7751 +PySide2/qml/QtQuick3D/Materials/FrostedGlassSinglePassMaterial.qml,sha256=JukYNdrvRwHf6IEhjHADunkNSCy4TlVb0VE-XkF_oaI,4634 +PySide2/qml/QtQuick3D/Materials/GlassMaterial.qml,sha256=DQIOr0qstjAJj6GxKHIOEV5c4WtjAZjes6mpsYLMItA,2906 +PySide2/qml/QtQuick3D/Materials/GlassRefractiveMaterial.qml,sha256=vf56pMSKM4yQ_9wgucCeJ48e6b9yokLKaCAsM8cvo74,3414 +PySide2/qml/QtQuick3D/Materials/PaperArtisticMaterial.qml,sha256=-LV0K0CVbFHDgXfox_o4OR8ype5jnFzap1vtXIoYhFs,3616 +PySide2/qml/QtQuick3D/Materials/PaperOfficeMaterial.qml,sha256=eCrs-BwsQZxINykcP09mt-6N4sb6PdbS_nbVG7dMeO4,3369 +PySide2/qml/QtQuick3D/Materials/PlasticStructuredRedEmissiveMaterial.qml,sha256=_dYH4XpEWXbo5hgO7P2Y6aAOCnZD-fizWTmvrmMNMpc,4636 +PySide2/qml/QtQuick3D/Materials/PlasticStructuredRedMaterial.qml,sha256=CXkwUOnaeqT7mppqFTmqbJ1rfJgQG_XMbOnQ2hssu8k,3808 +PySide2/qml/QtQuick3D/Materials/SteelMilledConcentricMaterial.qml,sha256=TpGq9dA8KVpAb0zgVM9mF_c52VZfAZPqFUsjxbi37hI,3493 +PySide2/qml/QtQuick3D/Materials/designer/AluminumAnodizedEmissiveMaterialSection.qml,sha256=01d-c85YO-2sjLi-Dzj2TnyGDSlJHVKyoSmErQLRM6c,6347 +PySide2/qml/QtQuick3D/Materials/designer/AluminumAnodizedEmissiveMaterialSpecifics.qml,sha256=9S6qRPUivD9dOOVffuVQCT71bGwB8UqPuznZUNC9NxY,1550 +PySide2/qml/QtQuick3D/Materials/designer/AluminumAnodizedMaterialSection.qml,sha256=K0X0sgT1jiASwgnXKXEKUlR6dDyhqZ8GDe72oWYzfn8,4471 +PySide2/qml/QtQuick3D/Materials/designer/AluminumAnodizedMaterialSpecifics.qml,sha256=w7mg2Cnpn1r_Uq4HKn5dGgEY7FUYvzW2oJuPB0_eiZE,1542 +PySide2/qml/QtQuick3D/Materials/designer/AluminumBrushedMaterialSection.qml,sha256=XkpN5Aq3_3JKeVzop-_gDjBLRJEoFsB1uEGMmAkuqLw,10710 +PySide2/qml/QtQuick3D/Materials/designer/AluminumBrushedMaterialSpecifics.qml,sha256=bndM_uhP_-gR94yQWYgM-ubvXWUN3H2kzWRZdUfa6vI,1541 +PySide2/qml/QtQuick3D/Materials/designer/AluminumEmissiveMaterialSection.qml,sha256=KbfNgZlWNEVr83GfhI3v5XOyHkdFwXSjQt9KR37ZaMk,15432 +PySide2/qml/QtQuick3D/Materials/designer/AluminumEmissiveMaterialSpecifics.qml,sha256=VHVU9Z-uzcH4ZiorwSUxwF6Maze0XfHhRgTYPekiITk,1542 +PySide2/qml/QtQuick3D/Materials/designer/AluminumMaterialSection.qml,sha256=quaMMvwF4zhyLrOMdChoImNZacQwEOziEOmgsbjiZmQ,10859 +PySide2/qml/QtQuick3D/Materials/designer/AluminumMaterialSpecifics.qml,sha256=tQGv7bKwSZwSAFDh2L_BBB35DOdBofuiLZxAY2xDMy8,1534 +PySide2/qml/QtQuick3D/Materials/designer/CopperMaterialSection.qml,sha256=FsNw0Pv5PQuWdarte0028UvVQ1Olic88Wb6D9iXx9CQ,4474 +PySide2/qml/QtQuick3D/Materials/designer/CopperMaterialSpecifics.qml,sha256=A7Cp1S_Lh_EA-6JpeWzSXO-9AYQ909q0ysUXOJvzoc8,1532 +PySide2/qml/QtQuick3D/Materials/designer/CustomMaterialSection.qml,sha256=CON99dBHnzrEuSdgC9pDG78uGrwbBqB_mhXjn7TvncI,6158 +PySide2/qml/QtQuick3D/Materials/designer/CustomMaterialSpecifics.qml,sha256=NYyuVQLIPZ2jWz4KCofFwldAeLMPsRQ7WI0vQWmn51I,1532 +PySide2/qml/QtQuick3D/Materials/designer/FrostedGlassMaterialSection.qml,sha256=Jal0-HQ64U5VXTp9WK9OCfmE0LCGgoFAKR92l0yRnHA,18232 +PySide2/qml/QtQuick3D/Materials/designer/FrostedGlassMaterialSpecifics.qml,sha256=QEMGFusdRY3fGa_a_XXhAl0N2loxmkY1zF-9zDkf_ys,1538 +PySide2/qml/QtQuick3D/Materials/designer/FrostedGlassSinglePassMaterialSection.qml,sha256=UUxKvi4utOb07L7x1fT9uWqcgX9FEe1FIcH_3defpxA,15685 +PySide2/qml/QtQuick3D/Materials/designer/FrostedGlassSinglePassMaterialSpecifics.qml,sha256=hvZV1r4QxF-DZH_ovjwgZSJ1aNPr8kI8IHl6EJrITZo,1548 +PySide2/qml/QtQuick3D/Materials/designer/GlassMaterialSection.qml,sha256=7W5OJxkuFQnAaUdjrXxhj98Y-OYLEREd0ZrevM4rZ4I,6116 +PySide2/qml/QtQuick3D/Materials/designer/GlassMaterialSpecifics.qml,sha256=d707zNV3npaqu02hygl2ewN4TFrAF5AeOwGh7Vge5Rk,1531 +PySide2/qml/QtQuick3D/Materials/designer/GlassRefractiveMaterialSection.qml,sha256=rB4n7tIV6hy3JVixI9rd88U__Wjt5nB5KxvTlrd9XpY,6102 +PySide2/qml/QtQuick3D/Materials/designer/GlassRefractiveMaterialSpecifics.qml,sha256=0nASWvxDk0Hbg3VUd9XoCzdjDAaZSiAw6CzxcMBoMq0,1541 +PySide2/qml/QtQuick3D/Materials/designer/IdComboBox.qml,sha256=G8wM3pft_HK4twZmp6nXP9_gcdvMNdzVxxfAR8sIzdg,4199 +PySide2/qml/QtQuick3D/Materials/designer/PaperArtisticMaterialSection.qml,sha256=XRYDlIehQgd1fcpa87ZhSeHtmz8KaMWHq-Ls32zteOw,10256 +PySide2/qml/QtQuick3D/Materials/designer/PaperArtisticMaterialSpecifics.qml,sha256=mn0EP0D7yRsI3bviA4ocjtvOvXyiIjJEByIqr3I5Fn0,1539 +PySide2/qml/QtQuick3D/Materials/designer/PaperOfficeMaterialSection.qml,sha256=MR8RBzcKLoab-cQ53lAtRiSRbSgMuwJQ6YuhTy80j6c,9521 +PySide2/qml/QtQuick3D/Materials/designer/PaperOfficeMaterialSpecifics.qml,sha256=HgU5acOXmhs5puTYIpIdhgX7ZncO_7NGHbVxukkAJ2M,1537 +PySide2/qml/QtQuick3D/Materials/designer/PlasticStructuredRedEmissiveMaterialSection.qml,sha256=UKdJ4nhZRgdeeyRcFJW03qNxhZNiJn6HNh-wlf_oAgU,10134 +PySide2/qml/QtQuick3D/Materials/designer/PlasticStructuredRedEmissiveMaterialSpecifics.qml,sha256=-LFMIuCF8_ckruGNmnsDjg5UJLj7UTd8KB-_ILdYaYk,1554 +PySide2/qml/QtQuick3D/Materials/designer/PlasticStructuredRedMaterialSection.qml,sha256=PKTxpPRfAqxIU7ygFedAwZMqOts_Qrf-pC_XpFMSzWM,8258 +PySide2/qml/QtQuick3D/Materials/designer/PlasticStructuredRedMaterialSpecifics.qml,sha256=3vI-sjE-ulR5eaACDKTopY1tOdGId-xbIb5oGLTul1Q,1546 +PySide2/qml/QtQuick3D/Materials/designer/SteelMilledConcentricMaterialSection.qml,sha256=fyvF2RxiaIqzBd4cbAFTuYsm8PAFWB3kstfDbiKgOWU,7612 +PySide2/qml/QtQuick3D/Materials/designer/SteelMilledConcentricMaterialSpecifics.qml,sha256=NP9wBKdGVhpYYPeBoNW1viepSdgoXguHDN1-x9BCX_s,1547 +PySide2/qml/QtQuick3D/Materials/designer/images/custommaterial.png,sha256=2Vp-CAJy9YTs5HohFQ-oao9JU4o_8Aak-s_EksUYevE,563 +PySide2/qml/QtQuick3D/Materials/designer/images/custommaterial16.png,sha256=CUsVGRVi95SZyKKTQII6JrxgJRQc--MuPpNzJeKXnfA,347 +PySide2/qml/QtQuick3D/Materials/designer/images/custommaterial@2x.png,sha256=IKkJPnSENBJB9N8e-qPqievAaR0aAcZVscbT3Hgg3wM,1171 +PySide2/qml/QtQuick3D/Materials/designer/materiallib.metainfo,sha256=d5L9ANKhNgWa58CdVN9RSvZfk5f28C2slPiuh9nj4vg,9358 +PySide2/qml/QtQuick3D/Materials/designer/source/custommaterial_template.qml,sha256=2Jk_RqleesLnNU0oBO_EakCeBW6nISrzugvz5Rszn6w,1964 +PySide2/qml/QtQuick3D/Materials/maps/art_paper_normal.png,sha256=wnGA266QLkcYvXmmTjbxUKC--QEKvCE4NWhKZal0m9w,517044 +PySide2/qml/QtQuick3D/Materials/maps/art_paper_trans.png,sha256=87G8NXdFCkwVg6wlnmqBuOJNGRRGg7-FNP_tgD9dgoc,428034 +PySide2/qml/QtQuick3D/Materials/maps/brushed_a.png,sha256=HLcIJgxbcFQ9TORHO59iFWH9S7cAV_IE8aPK5GvW1LI,196175 +PySide2/qml/QtQuick3D/Materials/maps/brushed_full_contrast.png,sha256=JWP8CcanN2aN6G97w7oonvr048gEj69I3vnkavBxuLE,161293 +PySide2/qml/QtQuick3D/Materials/maps/concentric_milled_steel.png,sha256=lCtnupmuCJ-llTgz0HDeCnNTZ3s7jZtJk4_NKWb0uTI,4216 +PySide2/qml/QtQuick3D/Materials/maps/concentric_milled_steel_aniso.png,sha256=VJ1Lo0YVT9NuhbNU3aSi2Zkj9P8G0ACc8GIdK4va3aA,92352 +PySide2/qml/QtQuick3D/Materials/maps/emissive.png,sha256=AwA6oBAm6US3VEcHj1dY0P-rhU0D6c6AeAoXRBEHP38,334 +PySide2/qml/QtQuick3D/Materials/maps/emissive_mask.png,sha256=AwA6oBAm6US3VEcHj1dY0P-rhU0D6c6AeAoXRBEHP38,334 +PySide2/qml/QtQuick3D/Materials/maps/grunge_b.png,sha256=L60sfzTox0tRxLwE1g3w6yOL7TDRiyvqqCxR9B1LnNE,402701 +PySide2/qml/QtQuick3D/Materials/maps/grunge_d.png,sha256=R3LtZ_Ib4n6C1gVALDifpmtq6nhQioj1Sv63J45oa4s,151503 +PySide2/qml/QtQuick3D/Materials/maps/paper_diffuse.png,sha256=EAWldXGytRHcSJZCc2-88tNGGkbLX4yILTz-TqtTdc4,339022 +PySide2/qml/QtQuick3D/Materials/maps/paper_trans.png,sha256=BGddlbRoDO7wlALO5EOe8m7PsS5Kooa_FOzFBd_AIDI,322968 +PySide2/qml/QtQuick3D/Materials/maps/randomGradient1D.png,sha256=ucN5-ILTht34j2rEXryd72MsI9PDpOC3KMXWm40pnm8,618 +PySide2/qml/QtQuick3D/Materials/maps/randomGradient2D.png,sha256=AW8Kao_trXHJTRgQbryGQcTLdmWrzELTgIoaXBYTouw,738 +PySide2/qml/QtQuick3D/Materials/maps/randomGradient3D.png,sha256=pl3G34M78E-JWzw2_sRr3-NZ2hfYnHmpvyr1CfAkU1M,748 +PySide2/qml/QtQuick3D/Materials/maps/randomGradient4D.png,sha256=1FmqegCOGx4rAxBbth5q1QBNA-Z8bKEQTcjl-WKAq34,535 +PySide2/qml/QtQuick3D/Materials/maps/shadow.png,sha256=AwA6oBAm6US3VEcHj1dY0P-rhU0D6c6AeAoXRBEHP38,334 +PySide2/qml/QtQuick3D/Materials/maps/spherical_checker.png,sha256=bEWDwAD_FnYdM0EHH47stCsJ2HVZW-e3rtBjH2mm6QI,11066 +PySide2/qml/QtQuick3D/Materials/plugins.qmltypes,sha256=9iGo9MuAWIS9bfHPouEFU6UQkGBp1WrKappdJ1Bgtk0,1989 +PySide2/qml/QtQuick3D/Materials/qmldir,sha256=ztpTRl_g3z42e8Eml8JO8EBrSI0TMWr4b-OK7t0_b64,1099 +PySide2/qml/QtQuick3D/Materials/qtquick3dmaterialplugin.dll,sha256=a-qBLGJiAwdjjqZ8WAsZWJiA5Xsn9OCjRsz458AJVd0,84760 +PySide2/qml/QtQuick3D/designer/AreaLightSection.qml,sha256=5wJ4RowlzAHqlXvhav9S6oL91HGKESZKpdZNupRKjFI,4183 +PySide2/qml/QtQuick3D/designer/AreaLightSpecifics.qml,sha256=XnfvXDcNVGw0-jC8t_knRjMU0HADVwhYPzvsmnktifU,1584 +PySide2/qml/QtQuick3D/designer/BlendingSection.qml,sha256=0a5XL24SvEljmcjf1_WyPTlITdcUPI4fV5s8UBUtv9A,2762 +PySide2/qml/QtQuick3D/designer/BlendingSpecifics.qml,sha256=L4VqUgfdYnjFrI_PP7KKVYkIr1Dn0_AasYZBJXQzxdc,1526 +PySide2/qml/QtQuick3D/designer/BufferBlitSection.qml,sha256=V1l8aATCaN-EHbRlcXIIcuSczikwQUoAz9HRAZrrPWY,2395 +PySide2/qml/QtQuick3D/designer/BufferBlitSpecifics.qml,sha256=ci-O8nk8JFCmDSJ6q0ydivxaYZ-vVTy16L06KVDXCQc,1528 +PySide2/qml/QtQuick3D/designer/BufferInputSection.qml,sha256=IY1xHnatludSr4RXTgJkpaPNtFzSOaZPM4wnbyEbmmM,2374 +PySide2/qml/QtQuick3D/designer/BufferInputSpecifics.qml,sha256=tu6u-3A3aUxXamQk9kL0cCDQI6j-iXZLNoqRFqV1RSM,1529 +PySide2/qml/QtQuick3D/designer/BufferSection.qml,sha256=d9u4KVuAQL3CaWpYxxciBenGj887jsCyE_27WgsxspE,4202 +PySide2/qml/QtQuick3D/designer/BufferSpecifics.qml,sha256=AxCriZgGIY8_B8KPgjwZimEeVpwrgo4nLIVOcoHtqF8,1524 +PySide2/qml/QtQuick3D/designer/CullModeSection.qml,sha256=8WRLvXQPJ7qA9VDDUFE5tH81WHBDTA4txL_l8D_52uk,1965 +PySide2/qml/QtQuick3D/designer/CullModeSpecifics.qml,sha256=J2KZm50lxcVeAE_LDnKRo8o1Wyza-NZKVz_B1Kcaq34,1526 +PySide2/qml/QtQuick3D/designer/CustomCameraSection.qml,sha256=8Dw86d-FRuz2NLVngnz7510aQjQc9-CM8WKX5TomcHU,1578 +PySide2/qml/QtQuick3D/designer/CustomCameraSpecifics.qml,sha256=SvSLFN--JvvOHhLhWK1sJ_yQ2FTbY3iy_j-PAAMEc2A,1587 +PySide2/qml/QtQuick3D/designer/DefaultMaterialSection.qml,sha256=Q-rZfWvgzWCt9ak-3XzgEN4K35fNKx4yDu34LyrdM0o,15389 +PySide2/qml/QtQuick3D/designer/DefaultMaterialSpecifics.qml,sha256=RfsUe_tQiu50B_xA82WpmESnB4bff3DxQNotDXjBYLY,1594 +PySide2/qml/QtQuick3D/designer/DepthInputSection.qml,sha256=-BTuD-sG_uRgf9L81C1btyqgupjl52g3DywAk0eWqBc,1990 +PySide2/qml/QtQuick3D/designer/DepthInputSpecifics.qml,sha256=4KUML7FKVdrlhfhX5SW8AC6CIudFWDSe8pPUgrN1c34,1528 +PySide2/qml/QtQuick3D/designer/DirectionalLightSection.qml,sha256=QzAoh2_xmpLD-hU2jIZ2SZsbl1Ifiti3Fh6QXW9cdWY,3179 +PySide2/qml/QtQuick3D/designer/DirectionalLightSpecifics.qml,sha256=nAyh2Dpyda_OWHTvYZHnLIElHZZmMt0tCoTOrdjGads,1591 +PySide2/qml/QtQuick3D/designer/FrustumCameraSection.qml,sha256=nJ4kQqSHj4B1-fqfyrEuZZSGgIZm4E3EsjwsNS4T8gE,3322 +PySide2/qml/QtQuick3D/designer/FrustumCameraSpecifics.qml,sha256=tSa7BMOY9B1y1-91RtbQy923p0v50aLuCVclFWv1d_U,1658 +PySide2/qml/QtQuick3D/designer/IdComboBox.qml,sha256=boL6_YGd9wINmgZaGkaUskzaK_RPwwFoDL5nmC4EaCw,4199 +PySide2/qml/QtQuick3D/designer/MaterialSection.qml,sha256=Kn6Jg3TjoO_tVYcqMK9DDQt0EB8RsCBpHM8wmKl7OZs,3453 +PySide2/qml/QtQuick3D/designer/ModelSection.qml,sha256=4j7gG20HiZL4gy-T53UbDIGP3z4RtAlMQhi6-XoyPaQ,6116 +PySide2/qml/QtQuick3D/designer/ModelSpecifics.qml,sha256=ZpDHFM0oDtWtHi0h2zI9YUwTTn46mcIk4ziAK0IRBV4,1580 +PySide2/qml/QtQuick3D/designer/NodeSection.qml,sha256=knzeAnVgLKJUPQjvXZ8g8jAUg4ZCws0J2C5k8iGGsSg,13149 +PySide2/qml/QtQuick3D/designer/NodeSpecifics.qml,sha256=4FyxlBit115mB4-oDyJScp0IW179H0-Vce_Nawf6JoI,1522 +PySide2/qml/QtQuick3D/designer/Object3DSection.qml,sha256=x8wXD6Y_rPKQ34amjecDt1khBk3npA1rlWOKjoTYTVU,1472 +PySide2/qml/QtQuick3D/designer/OrthographicCameraSection.qml,sha256=wD8OgPxMBz6XXNmQ_6nKUzmYASArnfyIiiCGNIzhsSk,2465 +PySide2/qml/QtQuick3D/designer/OrthographicCameraSpecifics.qml,sha256=HoDg1yoSmOYoAVNc6Xj7p7pLoBeFlK8rTwvMXleHcA0,1593 +PySide2/qml/QtQuick3D/designer/PassSection.qml,sha256=o9YD7RXOZHjVIuK-U1RR5LkPPDtvo6Q7PlKtn4mn_d4,3465 +PySide2/qml/QtQuick3D/designer/PassSpecifics.qml,sha256=I7Nk8LkeDtLQ1WBsZo4b8S9T5ob_3bB8H5x8WGjgjAs,1522 +PySide2/qml/QtQuick3D/designer/PerspectiveCameraSection.qml,sha256=m0SHJOpE8JO5br7tVMrf4fgP9p4uA4p8pDY16lt72FY,3318 +PySide2/qml/QtQuick3D/designer/PerspectiveCameraSpecifics.qml,sha256=ZPRJC-djpZSThP6x8HaJizgujnpZm0BYzAKNoF3xn00,1592 +PySide2/qml/QtQuick3D/designer/PointLightSection.qml,sha256=mfumgyAb5h1_f0eiTlBlYg7mgZe4Xl5Pod5gv0BZDJU,4685 +PySide2/qml/QtQuick3D/designer/PointLightSpecifics.qml,sha256=EgG9JiLJ-A-FafJ1u1CxUA_5fUT3ieMZ2fM-20gS6uk,1585 +PySide2/qml/QtQuick3D/designer/PrincipledMaterialSection.qml,sha256=H0cxD1kay9gC_UI-zm45ZSKRdkV2cLaXZLsUeaxVF4E,15682 +PySide2/qml/QtQuick3D/designer/PrincipledMaterialSpecifics.qml,sha256=_5I0fZLzsgUhGsQvxz8jTQtjMJ83FwO3pH4agc0g8vQ,1597 +PySide2/qml/QtQuick3D/designer/RenderStateSection.qml,sha256=2P965JSc4dMd2KxJBNsFOBTvArgXkZtZE-6UHqfYBKs,2433 +PySide2/qml/QtQuick3D/designer/RenderStateSpecifics.qml,sha256=GZWGDZYUXjmpBHekpuUrNihauRwkvTgXqGfsU1CJPCA,1529 +PySide2/qml/QtQuick3D/designer/SceneEnvironmentSection.qml,sha256=gMjuXrBKEONyzcQOf3YbCNdOHu0SoRS0s-ved2-yRCU,11935 +PySide2/qml/QtQuick3D/designer/SceneEnvironmentSpecifics.qml,sha256=UiSocSeH4W_Ni5WJQmk46QA77CiYBvU5vcJ4Irj1Jh0,1534 +PySide2/qml/QtQuick3D/designer/SetUniformValueSection.qml,sha256=32KgYq945hi3CReJKb-CZUdl86KhW-QS0q7xnAe0dDo,2429 +PySide2/qml/QtQuick3D/designer/SetUniformValueSpecifics.qml,sha256=85ka554h-foPTQyAOdqRqTjmaFuiPqQ3Y9U77-VHpN0,1533 +PySide2/qml/QtQuick3D/designer/ShaderInfoSection.qml,sha256=uy4GZvSO-So01OseXYLGtQLMV5ltt7yScmzI7Wkc1b8,2754 +PySide2/qml/QtQuick3D/designer/ShaderInfoSpecifics.qml,sha256=7Vsmj3FIcx4FCj7e6PqdwITJaj7lE4kfNtYDjNzkc3A,1528 +PySide2/qml/QtQuick3D/designer/ShaderSection.qml,sha256=C7O8lxDQe1SJ7a74hNkOflGnVsxgz2JQP6P6_enJdTk,2270 +PySide2/qml/QtQuick3D/designer/ShaderSpecifics.qml,sha256=mmZGuq-JQuPVGsHZTsPGJkSMBCJWtCe6sfK4OabD2bA,1524 +PySide2/qml/QtQuick3D/designer/ShadowSection.qml,sha256=apCSAponXBqAa3cD-230HO-tKFLSzSoEvG9q9KnzBrk,4701 +PySide2/qml/QtQuick3D/designer/SpotLightSection.qml,sha256=toq-J8Mgph29jY4khsjw5N2paE9KGw5hw0G6cBaxJ_4,5611 +PySide2/qml/QtQuick3D/designer/SpotLightSpecifics.qml,sha256=xnFSYWl9Fs1BC5H5G0DOSGgw6iTcJWghoeswDxJzqvM,1584 +PySide2/qml/QtQuick3D/designer/TextureInputSection.qml,sha256=8p79aL0G8ciAwzqjzLRZ-cJh90qr7Xh6uA-kFL_Nodc,2363 +PySide2/qml/QtQuick3D/designer/TextureInputSpecifics.qml,sha256=gB7RBgFl_dYgTrRcuz05KZHSZG9yWTJHd1h8YzfnH4g,1530 +PySide2/qml/QtQuick3D/designer/TextureSection.qml,sha256=T3CrlQffQ1M4nZK3mGkjOyVpU5u_V9J6acte6-o1uzM,6952 +PySide2/qml/QtQuick3D/designer/TextureSpecifics.qml,sha256=4o1CkKmza52d8f42aPotx8E6SvXv3sCiC2FlgT85fH4,1525 +PySide2/qml/QtQuick3D/designer/View3DSection.qml,sha256=xYBPVA0OOycqD6Qd-SusHR0AN0xniARLHYOJujU1Bw0,2677 +PySide2/qml/QtQuick3D/designer/View3DSpecifics.qml,sha256=B2V6x44CBB8bGPguVgZlZ-n06PyXEvkOw2Hb3k13Ft0,1524 +PySide2/qml/QtQuick3D/designer/images/camera.png,sha256=a3Kbc0KnAvy2WXvZ3yCHn9JA9hBx2Ig_xnkPxnyxp6Y,276 +PySide2/qml/QtQuick3D/designer/images/camera16.png,sha256=UtQN6H_A8pCf0rZkWA6eS6cIFuSFzY3muKlUN_XAHCo,241 +PySide2/qml/QtQuick3D/designer/images/camera@2x.png,sha256=kzcYnTSawd0FtIgr7rz4iM1nkN2X0UpV9B_o4ZihA70,385 +PySide2/qml/QtQuick3D/designer/images/cone.png,sha256=ntPrpduJ0g-DEBqh4NwFxMr7xe1A7ctGOsikJZqYrkA,412 +PySide2/qml/QtQuick3D/designer/images/cone16.png,sha256=DevDONMnQMhOm3XtDiHOH2JI17TefWgs6liu8tv56ZE,277 +PySide2/qml/QtQuick3D/designer/images/cone@2x.png,sha256=I6JPOxXN33pXx3XdBCgN4k1DAQSqrZBVX03j2NFXW4A,731 +PySide2/qml/QtQuick3D/designer/images/cube.png,sha256=xz1ntISSxkXtLo_ts-zfawMtnOc9m65EMlN4EbIXIDg,369 +PySide2/qml/QtQuick3D/designer/images/cube16.png,sha256=OzPgTX7w7VMI96_tosFp-1IZK8xJ9VqKpsa6xjncHb0,190 +PySide2/qml/QtQuick3D/designer/images/cube@2x.png,sha256=M74_hruchGBVQmDjMZIPJ92TVPNHgg0gg1VAGGXNUJ8,733 +PySide2/qml/QtQuick3D/designer/images/cylinder.png,sha256=n22Rvd9HMTmwO89dkBiufWl_EHjNgup8oqe58Fkg9Jo,445 +PySide2/qml/QtQuick3D/designer/images/cylinder16.png,sha256=dWMz6YYeRIb2Ya0vNd5se3vje9nvo5ifrmyAshwjTKM,336 +PySide2/qml/QtQuick3D/designer/images/cylinder@2x.png,sha256=4Zbq7Pw2Rmiqcc4WwblILySsn48KikzncbK9-2_rtls,789 +PySide2/qml/QtQuick3D/designer/images/dummy.png,sha256=-8NwxUGpMeIu66UVe0fzD8YMfilYC5tJBHA7bheRC_M,375 +PySide2/qml/QtQuick3D/designer/images/dummy16.png,sha256=IDZ6vbNiHwu75HPcLBZwgxgwPGADVt06U8lGXIppTiI,253 +PySide2/qml/QtQuick3D/designer/images/dummy@2x.png,sha256=rAztmEYpBRDzL_sRXSnlMpRC_sAbZSeoY-v1QcqMjtU,499 +PySide2/qml/QtQuick3D/designer/images/group.png,sha256=8evnJdpO790pKxLLKk7CqAPOP8Hg6h2eJy8In2Z3A88,496 +PySide2/qml/QtQuick3D/designer/images/group16.png,sha256=6zSv-oxhBOm1-uH6FqPDdiIB-yuxkzl3DSFQSRXU3oQ,284 +PySide2/qml/QtQuick3D/designer/images/group@2x.png,sha256=t1ZTX3qXY-U8YSwG2OUGL4KYW1OQAZ4ZuMa2ktLGtlw,822 +PySide2/qml/QtQuick3D/designer/images/light.png,sha256=8sBVt9PhFjqMYvGa4xZWfRoj-3bifa4iJDUPJ9dBFa8,443 +PySide2/qml/QtQuick3D/designer/images/light16.png,sha256=e8tLxar9Hq8QYJCPZW5CDcV0TGEOJ0O9m1-thmsZewc,281 +PySide2/qml/QtQuick3D/designer/images/light@2x.png,sha256=b3aWJRpScRLEgkTn8SofQ2WbP1-bY9rBIv79M-j8PAE,748 +PySide2/qml/QtQuick3D/designer/images/material.png,sha256=zB4WdLI5cwvOyTvg4rk8Zl7MIOVwmL5jfaQBq6xMoFs,333 +PySide2/qml/QtQuick3D/designer/images/material16.png,sha256=KNxamCJLo0GL1kuuyEzjvJ4W3t54OPeX8IUhDZBAlJc,314 +PySide2/qml/QtQuick3D/designer/images/material@2x.png,sha256=ir4FHfgBlIqHaKQF72xh7M5gvcxsbL_mjgtxXhKuJac,621 +PySide2/qml/QtQuick3D/designer/images/model16.png,sha256=OzPgTX7w7VMI96_tosFp-1IZK8xJ9VqKpsa6xjncHb0,190 +PySide2/qml/QtQuick3D/designer/images/plane.png,sha256=o_Q0Mk8WKkKOBG4dbwIVFYIo7Cm2uaDVejm_QPQU-Bk,154 +PySide2/qml/QtQuick3D/designer/images/plane16.png,sha256=ml9okqmd7g0PxYAKjkgFdRX8nqVVa3AafD87i5Vbu-w,204 +PySide2/qml/QtQuick3D/designer/images/plane@2x.png,sha256=6eJcwbLtYhMYZLK3blAL8vSByPe42if8VBkeENxmhoI,181 +PySide2/qml/QtQuick3D/designer/images/scene.png,sha256=8Yh4eztWAfvgMphRXFqVQWy7IKrACSssrm6sgPFMtpo,172 +PySide2/qml/QtQuick3D/designer/images/scene16.png,sha256=IVa857_NKRvzxRFwrLpPQIj2SV4aBEKkGY6ruTSjm4Y,219 +PySide2/qml/QtQuick3D/designer/images/scene@2x.png,sha256=Q8X2dKBjWSGuZtohXzKNK-FTz4ru70jG6AUWjny2FN0,201 +PySide2/qml/QtQuick3D/designer/images/shadercommand.png,sha256=pSvjfnSL8c5lpWCJrvrgYCA0_iiEDDBvFephOJ2gAoc,160 +PySide2/qml/QtQuick3D/designer/images/shadercommand16.png,sha256=IYzkDt4zfseisNNEsI8x5RsDeFxhfMB7UzjL6pEGd4Y,112 +PySide2/qml/QtQuick3D/designer/images/shadercommand@2x.png,sha256=MldZ57fCCOz_PLGB4IM7itTfgXeFiMK-Hx3wTjFxR2Q,145 +PySide2/qml/QtQuick3D/designer/images/shaderutil.png,sha256=PAl7Ro4M6OUPTwu5H7YSFQ-fyKJWbvp02Dm1K8590Fs,304 +PySide2/qml/QtQuick3D/designer/images/shaderutil16.png,sha256=MiN6h68ppidWb9AbBFuGS_iRbcUC4m9F_mp6hbDwxw8,191 +PySide2/qml/QtQuick3D/designer/images/shaderutil@2x.png,sha256=a_u9POpI2XcSNjdb-oQ3-s0eRfrgguDmdEHPV90ajN4,525 +PySide2/qml/QtQuick3D/designer/images/sphere.png,sha256=YpzYFmxZgsX9I8dyeaguR4moVAzsgQ_-ab_oRia4cR0,233 +PySide2/qml/QtQuick3D/designer/images/sphere16.png,sha256=gOVZdDEKzCa18JL-4UjK-MfGxMKr-AWNYSZIlQSqO4Y,212 +PySide2/qml/QtQuick3D/designer/images/sphere@2x.png,sha256=aY718aLnGaqzlduyK_6YjMgU_bT5WVpZV5z8V7BcJa8,381 +PySide2/qml/QtQuick3D/designer/images/texture.png,sha256=XsDKyT9qfGQRVUPjfGz7vsoFwE89Ve4BxFW624hmWQE,278 +PySide2/qml/QtQuick3D/designer/images/texture16.png,sha256=EE5nFQU3jW1EJe5rSDXUU4gKus-cTb-F_Z11q0Ck0Us,300 +PySide2/qml/QtQuick3D/designer/images/texture@2x.png,sha256=192C4HZBChk83v3FqyYl6A_eq1s4G0RHak_w4bxuuTw,433 +PySide2/qml/QtQuick3D/designer/images/view3D.png,sha256=4g1gkECHsIjs1OXy5BdbtL6bLAVPlDsdsB7cIQYYpiQ,255 +PySide2/qml/QtQuick3D/designer/images/view3D16.png,sha256=ZC_QBSG-rojZES2zjq5WhgVnTcJCXxCGUimGP8kM3h0,242 +PySide2/qml/QtQuick3D/designer/images/view3D@2x.png,sha256=5TZhSZNSqaDWy64b6pJmeYiA3ltXKCWmNFUM2XBOwRA,411 +PySide2/qml/QtQuick3D/designer/quick3d.metainfo,sha256=rsD8eBOSP3nCIXzFrQ4O0IyJOVH938Kvi7xrbGcm4fI,16823 +PySide2/qml/QtQuick3D/designer/source/cone_model_template.qml,sha256=4x4Evd5C-6J_yPH3gVcBiKSfjN3i1CU07FiaLVjx-xY,1556 +PySide2/qml/QtQuick3D/designer/source/cube_model_template.qml,sha256=AsBDoHYBYVNfAVzxqX2OwZ2RRYP22UqkHU2RuP9pfD4,1556 +PySide2/qml/QtQuick3D/designer/source/cylinder_model_template.qml,sha256=AiqhjCKoO33xXTqST7wtOStWr6mziwnBM1Yama6X1dE,1568 +PySide2/qml/QtQuick3D/designer/source/plane_model_template.qml,sha256=J3oibYy3GyMiMjT2w8UseQWIczvnZzh68aM34oLXWzs,1561 +PySide2/qml/QtQuick3D/designer/source/sphere_model_template.qml,sha256=EI0CS2tDdLcohHueXQjfbu7EEktnEvFoJMtyQj9KQpQ,1562 +PySide2/qml/QtQuick3D/designer/source/view3D_template.qml,sha256=ei4nH4DIqIpU1RZ16iJ_VOa6NJsMw3ML7-66kOjQRy0,2155 +PySide2/qml/QtQuick3D/plugins.qmltypes,sha256=JJZjmFcu9TTkkdGZQReyFvk-zqMSbMM1yYMVrx58N1Y,73364 +PySide2/qml/QtQuick3D/qmldir,sha256=tkfqaGrW299P4FEbHy_hIlL68fWPfXOPpdUpCRRtYLU,113 +PySide2/qml/QtQuick3D/qquick3dplugin.dll,sha256=Rouw2udZc7G-x9Uq540naVXvz0W8r5KWv-nMy_RnPfY,132888 +PySide2/qml/QtRemoteObjects/plugins.qmltypes,sha256=oPKnVIFTaH5-0yHbqwdzRHg-FCeadTVo3hzcxp4fra4,4215 +PySide2/qml/QtRemoteObjects/qmldir,sha256=v6GCj5TOoLSq6YmbD34aWcqXPmZVa0OFAG18hlQjsAU,81 +PySide2/qml/QtRemoteObjects/qtremoteobjects.dll,sha256=-sqEsxcu_hhASSJSeSnjhVvEPGxLyxdWKPX7S7pU6Dw,53528 +PySide2/qml/QtScxml/declarative_scxml.dll,sha256=7uHq186wrKCuZIZqQzBOTviMAYjZDkH4YBRGq9eKwIg,65816 +PySide2/qml/QtScxml/plugins.qmltypes,sha256=EyioYGcc-ZllbtXqEREdo-VOB1sHwulAzJc8jBCSTcU,5608 +PySide2/qml/QtScxml/qmldir,sha256=f26MP69WwidrL1HFlkabtuZpQAuOmlK90EVlDCbClFs,107 +PySide2/qml/QtSensors/declarative_sensors.dll,sha256=EfDDebWKfDjJ92IIc5FGXjyFikIvss_hxw0r5Br8_Mk,210712 +PySide2/qml/QtSensors/plugins.qmltypes,sha256=9SHqj1MamcyadSJvcCUX-pA9Vt3Qr1hKGAEAbAlXQNE,21807 +PySide2/qml/QtSensors/qmldir,sha256=rQzDpftRJ108-YfVJiktPKTQHvz2nvaDGXe9o7aVRck,111 +PySide2/qml/QtTest/SignalSpy.qml,sha256=q2TiIo4JqLgZRSVyNKr2nOWsxJPxdQpd927az4g3AUU,9212 +PySide2/qml/QtTest/TestCase.qml,sha256=TWW3H8NBYQsbYd0hXroh3MVohIAWBxMbTdq4GM7GqW0,77687 +PySide2/qml/QtTest/plugins.qmltypes,sha256=c1_WYzPVFKE9Yzpwi9BIODGu3FZ4EVEOJfvVSveDoXY,13848 +PySide2/qml/QtTest/qmldir,sha256=GPLL8rv_yNVJ9MvXLHvEYiYHx1Vbjgu9SwJuGFNewCY,201 +PySide2/qml/QtTest/qmltestplugin.dll,sha256=GIhEVbqYgVIaxHDOC9d4tW-lSLs8wBJ-GiqMGnbYKZo,67352 +PySide2/qml/QtTest/testlogger.js,sha256=ICPqsynA91NPv1V1lWdaKqywG4qNYYuf6Ma_EDQCm6c,3375 +PySide2/qml/QtWebChannel/declarative_webchannel.dll,sha256=QKtKd-HjBitUHuuJgILFI7TFXFXZWuuDurbWFuashxE,33560 +PySide2/qml/QtWebChannel/plugins.qmltypes,sha256=OmG70hdvq6DxO5Xm5Nfj2rDnszyZ746DCgRYLRN97sY,2329 +PySide2/qml/QtWebChannel/qmldir,sha256=IZ3Vpg_XktJ4GHoZEq8yBv237I9JIweucTsaWvFy6ug,108 +PySide2/qml/QtWebEngine/Controls1Delegates/AlertDialog.qml,sha256=ll8xi47_k8VksEjPuE6vBKbjdPAPcu198JhnoanZmBs,2051 +PySide2/qml/QtWebEngine/Controls1Delegates/AuthenticationDialog.qml,sha256=ZHXdsLSLLU_oSWkIh0_Lo9bWQVzjqOJuhELTKSsoHjI,4536 +PySide2/qml/QtWebEngine/Controls1Delegates/ColorDialog.qml,sha256=Icsk2k2zkMcRi6PB3QfK-Z6RlZ-fJK56Cxt-7CiVDqY,2151 +PySide2/qml/QtWebEngine/Controls1Delegates/ConfirmDialog.qml,sha256=aElMHvEHAMyliCKwb6xVE5P8NdYs8vJB7UoXZlEfv6E,2112 +PySide2/qml/QtWebEngine/Controls1Delegates/FilePicker.qml,sha256=0rBiD_imH-nU4HWx3BkCuBi1cpw_JZpKcheZVm7c1X4,2116 +PySide2/qml/QtWebEngine/Controls1Delegates/Menu.qml,sha256=ljibu8e8T0O9qOJsH0RbPK7n5ZRQNlZQKZwaOGV-6kc,2395 +PySide2/qml/QtWebEngine/Controls1Delegates/MenuItem.qml,sha256=U4GN-JumjduxQdfWHTyJYfQgyPKgVTEAW39_tE7GUSc,2053 +PySide2/qml/QtWebEngine/Controls1Delegates/MenuSeparator.qml,sha256=kqLvUzEdciyShdtuNrcy5CA8CrlsEKxmHzfp_hY02Kw,2056 +PySide2/qml/QtWebEngine/Controls1Delegates/PromptDialog.qml,sha256=29WZP_l-imm8iBj46c4Hcqw1KhCOROTz1Wd510WpsOE,3288 +PySide2/qml/QtWebEngine/Controls1Delegates/ToolTip.qml,sha256=fNJFpfukztaLAX8_tc8tua4EjU-NM9oRO0wLx5n7OoM,3182 +PySide2/qml/QtWebEngine/Controls1Delegates/TouchHandle.qml,sha256=eKTzNL2civpUlYzNAIeLUHV3uzspmNHl7sRwYJVlOOA,1998 +PySide2/qml/QtWebEngine/Controls1Delegates/TouchSelectionMenu.qml,sha256=ofBXdHHTRdpUIpbWfeZMzJQ5ODnZdG0ziXK8xp8MNa8,5582 +PySide2/qml/QtWebEngine/Controls1Delegates/qmldir,sha256=tIUjqq_J1RzMrqPtiYtxXyKcD3bHbod7sRXN3HVYDDk,258 +PySide2/qml/QtWebEngine/Controls2Delegates/AlertDialog.qml,sha256=Cr6EDzQn6NKhSB_EmtWgxrasuX0cICGf9O5aAfZPnj0,3620 +PySide2/qml/QtWebEngine/Controls2Delegates/AuthenticationDialog.qml,sha256=8YpU44YZTt_ygJ1-_7YDLk3Lxm56adbWqpYf7Pt51sY,4742 +PySide2/qml/QtWebEngine/Controls2Delegates/ConfirmDialog.qml,sha256=oS9SGjPJitiGDcFlQvFJLzMWzoeguq2FW9JIf3IS4gs,3918 +PySide2/qml/QtWebEngine/Controls2Delegates/Menu.qml,sha256=a6YJzC5_9GbfnCR3QRNTVlCgS28z51cN1IR-ooWu2lw,2395 +PySide2/qml/QtWebEngine/Controls2Delegates/MenuItem.qml,sha256=fzD_GAIzkmS7nGvGiBvqEE03UE9GblRG-wwGHS5Z7dQ,2053 +PySide2/qml/QtWebEngine/Controls2Delegates/MenuSeparator.qml,sha256=R9pGU-4ExYaYG3zxMSWSzw5HdPrPOW23OyhnPWriSr4,2007 +PySide2/qml/QtWebEngine/Controls2Delegates/PromptDialog.qml,sha256=VCaFAt_nA7eScdyAybrw_6yJFh-grp01NnkILreTIiU,3986 +PySide2/qml/QtWebEngine/Controls2Delegates/ToolTip.qml,sha256=RObuSz6hxLQsYOP5DAmK1aN13VWhEouszPTDi6JeXIs,2046 +PySide2/qml/QtWebEngine/Controls2Delegates/information.png,sha256=hIeOYfdgUBZhH7tJwH8ZY8SCO0EggWIHL7zaMJYzAbc,254 +PySide2/qml/QtWebEngine/Controls2Delegates/qmldir,sha256=sU4YEw6KaG-3QSi3xNyY_itEFAbDZZBA75-nHStu_LI,58 +PySide2/qml/QtWebEngine/Controls2Delegates/question.png,sha256=mOjdg_rAR7Qvs95p8nM7h2l8qKM_VK4S5l0tiIZ--Ao,257 +PySide2/qml/QtWebEngine/plugins.qmltypes,sha256=gQajyQ2JRlEws8Hw00AXZaZVGBhASZRxKEu6Spmm20E,65955 +PySide2/qml/QtWebEngine/qmldir,sha256=AzvCZ4YMF_qHYpnQetMKMMw2Rqz-1qLbkg_E94_ALLg,102 +PySide2/qml/QtWebEngine/qtwebengineplugin.dll,sha256=IN4c5Ft_9gqzkqEVzO9fkVo8-k3b_zAJZs05-XablZE,113944 +PySide2/qml/QtWebSockets/declarative_qmlwebsockets.dll,sha256=EVJNGJ90wflMhDAEolXSqxQfpA8nEKPY_gu-TmXLdEQ,55576 +PySide2/qml/QtWebSockets/plugins.qmltypes,sha256=MtYfsk6VUtmrDXRAcx97FuC83fhps9y5moAvtpNKGVI,3604 +PySide2/qml/QtWebSockets/qmldir,sha256=IxC22BpmjLMs16IOYdeyhCgJJuPr-MZ2zaikPE6GmHc,123 +PySide2/qml/QtWebView/declarative_webview.dll,sha256=NbiEgqMKUtLlP8-StSY9oQaSV-fPskX61rnmv-mShCw,41752 +PySide2/qml/QtWebView/plugins.qmltypes,sha256=s9rPk_Ra80sbL4sdzKsVeyea4XUUQ0Ecp6w96v2xPGA,3262 +PySide2/qml/QtWebView/qmldir,sha256=ylgMHWb8sVP49_5IeUcMbv4H21DS3vYG4fu_1v5Axek,124 +PySide2/qml/QtWinExtras/JumpListDestination.qml,sha256=ehgxUqwQSuS2dsmv7LV5JgUO3FxMYEb2e_lrRXmw7qc,2631 +PySide2/qml/QtWinExtras/JumpListLink.qml,sha256=8xB4m9nFVjDQII4XMNExqc9Sw_8fZ2d0hTFafynab4U,3100 +PySide2/qml/QtWinExtras/JumpListSeparator.qml,sha256=C673K6kQCsovUI1YNyENH68OMMEWFTjBPQio6TzWkHQ,2423 +PySide2/qml/QtWinExtras/plugins.qmltypes,sha256=9wVNmyY-6_XdilYqlUZpyY5ngq1fifF_avCxoYjCjDU,8396 +PySide2/qml/QtWinExtras/qml_winextras.dll,sha256=VhOUf3b6cZba1qlJTN6L5Y41IPCXNy2d-tGvdHmjwXo,106264 +PySide2/qml/QtWinExtras/qmldir,sha256=cUXHI4-p2X3C58uQq7xmlbIzPRhlR_enaR5ZOP6emc8,202 +PySide2/qml/builtins.qmltypes,sha256=qxr7a5zeCYD6OdvQf1JzBoiHj1eJW_fRJMKt5tqGi9A,60508 +PySide2/qt.conf,sha256=dxKx-eHM-rgVae65VReRuW_4s9t9-JCGzdwjNshSe9Y,21 +PySide2/qtdiag.exe,sha256=e5DEwn9Lu7i3B8t79ytM2ocVnNogcVuHA_twacfUOHM,80152 +PySide2/rcc.exe,sha256=MNVTSLtVQps3WkDvLtfGTPdVxQBkCrERqPhu7dBVWpc,1089816 +PySide2/resources/icudtl.dat,sha256=WUY34QuPXJcVdBNSjwy_W8ZbSrnnn1-jT-JoCSZV7Fc,10505952 +PySide2/resources/qtwebengine_devtools_resources.pak,sha256=r5vmXGPUprbGogToq4p0zX0biS0iZ3-P1D2rDBfMR-w,1768648 +PySide2/resources/qtwebengine_resources.pak,sha256=X5a7i3N5LMq5YdwGsRkP8teqZeJLvM2Ab__KJBQMvpw,2284161 +PySide2/resources/qtwebengine_resources_100p.pak,sha256=frjlMmF5jwDuWD5iPOPZvhB6H0zy_IjWZ1QNIw2gRwg,640623 +PySide2/resources/qtwebengine_resources_200p.pak,sha256=3uu6MCrOv6Josxelf1a6YxMl7b8FP_MqjXgyNH0e1E0,781396 +PySide2/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +PySide2/scripts/__pycache__/__init__.cpython-310.pyc,, +PySide2/scripts/__pycache__/pyside_tool.cpython-310.pyc,, +PySide2/scripts/pyside_tool.py,sha256=AX0oHCHgzcsnQwyM-FTwteh0-qwFBIjDUr9H66uCJgM,3249 +PySide2/support/__init__.py,sha256=XuhTCLidR8HmNUUN0mftrQu4Azd3kma9M5Bl1Up_CEg,1977 +PySide2/support/__pycache__/__init__.cpython-310.pyc,, +PySide2/support/__pycache__/__init__.cpython-36.pyc,sha256=-O_FfowchUX6Z7nhrLz79Tjwg1jvV9IZJamE507zq8Q,216 +PySide2/support/__pycache__/deprecated.cpython-310.pyc,, +PySide2/support/__pycache__/deprecated.cpython-36.pyc,sha256=RLRWn4zqenbEq9xgnuZ7f_HtGTpSbwAIDq2S0YX3rCs,1089 +PySide2/support/__pycache__/generate_pyi.cpython-310.pyc,, +PySide2/support/deprecated.py,sha256=1saZw4PGKJOz2KfuGTsExY8PTt_XB2VojgWYGZNMTBE,3140 +PySide2/support/generate_pyi.py,sha256=fYMAPWkZDj4ms3G-wTJHgK6Hr0wiUhpn0KaS1hj9UtA,12958 +PySide2/translations/assistant_ar.qm,sha256=1YVz8BpQqJKUJxXFdfAG0G8OuQ8PTNFerK3T0097VOo,19837 +PySide2/translations/assistant_bg.qm,sha256=KdCr3y4KfvHz67cuBCfUg9QttH93ulcy5Rg_kvUPMy0,27244 +PySide2/translations/assistant_cs.qm,sha256=YY3bpHIVNJ8VIum4NpZhu7WcWSVpHEWSf_n6S7_Ivuk,53210 +PySide2/translations/assistant_da.qm,sha256=6XygGMS0j6zjdcwgvTsT8xH41aG45ZkS-i7EytGRWIQ,25254 +PySide2/translations/assistant_de.qm,sha256=CXngoIly46GbRVJ4lmddK7Hk75-jSLQ-uomHECz7SW4,25232 +PySide2/translations/assistant_en.qm,sha256=mVm1ELFdGJN4SK0TAH4wRZ0umTxn5WS62_wY-TVpXIU,16 +PySide2/translations/assistant_es.qm,sha256=8wvfdIsYXS_j63VBm2j1-CXBYvv9C-cdUuIIyfERtFk,26846 +PySide2/translations/assistant_fr.qm,sha256=NR7tA7Jj2BDRvINTv4YDhuO-6h8fF2otPLJPa6_YCg4,26920 +PySide2/translations/assistant_hu.qm,sha256=ziVmUDlJ8vozIdhTpnu-JHk1hIctn1nPB-xw0QXPeQg,26379 +PySide2/translations/assistant_ja.qm,sha256=PtjMAXj0JhUxpljSwzUtz_Z6BdRATRm6Am-D0rw8ndM,21516 +PySide2/translations/assistant_ko.qm,sha256=p987uUOwYZauXP8k3S8a-11OgkQdEJ1sgCxG4OzLUO4,20561 +PySide2/translations/assistant_pl.qm,sha256=4rbAR_KADFKxVrNV17kpKSlSopwsAAx3I4r7GPlYNW4,26186 +PySide2/translations/assistant_ru.qm,sha256=nvlnrXTEfMsy-pVlRMQ7eUey0sLDaalPTWuhESJHT7Y,24583 +PySide2/translations/assistant_sk.qm,sha256=AVLSmkLeqsZkWR6sN9MKG20aoHT4jjs3ICmW3L070Sc,52510 +PySide2/translations/assistant_sl.qm,sha256=e03-70ewGTwXwTEWMCQYYdi_BFBcsS7M9Rn2BZDTuaU,41894 +PySide2/translations/assistant_tr.qm,sha256=8fthOs-wV4GHjOBxR4TuEXeweF0TVBxNQIT6aYodJow,25928 +PySide2/translations/assistant_uk.qm,sha256=ob59kD9S7kGegHi2fQx7kONeW3Ul7AO8kHVKZKOot24,25632 +PySide2/translations/assistant_zh_CN.qm,sha256=zBqU5Q0Mz7CvzaFo3gMPP32irySYYs7OiquPleFP914,13585 +PySide2/translations/assistant_zh_TW.qm,sha256=WqYr95wjgYbdBjTrk_RhPgHIF9wsGX_XgJzZoiCoQh0,21452 +PySide2/translations/designer_ar.qm,sha256=G13Dhn86GBr8yIodVX8VhEyDk70zwXvoUABN31kdIGQ,139157 +PySide2/translations/designer_bg.qm,sha256=MBFHFC5KQC__7J6MmQLL3tDGMUn_-PRq-RPip-zGqao,153945 +PySide2/translations/designer_cs.qm,sha256=Bp4NafY7sij-mTHxcinLJ4ErLXsOkBUVsZAlkOOomh4,154340 +PySide2/translations/designer_da.qm,sha256=3WFeEZfBkRSnYKFnbTfnuY167sUvteKfj8ThZ6L12EM,143574 +PySide2/translations/designer_de.qm,sha256=bmsxUacukS0qcA4g-943mTTflFN1cRYDG5rh2JR6Xqk,155860 +PySide2/translations/designer_en.qm,sha256=mVm1ELFdGJN4SK0TAH4wRZ0umTxn5WS62_wY-TVpXIU,16 +PySide2/translations/designer_es.qm,sha256=juM1smueON_1o9bto5XxKrtOGPp2uNaAt3TR55hLTv4,151742 +PySide2/translations/designer_fr.qm,sha256=lhyg18f-zhInzzO__XRAl-oH67DEX6GVwpJ6U6SgZQo,154036 +PySide2/translations/designer_hu.qm,sha256=6KpiwoAH_DpWoY41paSZA5FVQ9An2HnCIVwzanfd1TE,149796 +PySide2/translations/designer_ja.qm,sha256=Mdq9P4S6AkwXRiBXBcUVNydtl7gQpQYRVAsJtdVpNV4,122454 +PySide2/translations/designer_ko.qm,sha256=7DsM7Iu15SNInYLIMBNNLR84KClTjWklBrJGK_VcTOE,123106 +PySide2/translations/designer_pl.qm,sha256=9BMD5RFs3F-tGwGfLDIa0Mj_FSrFkJu14zsIb5QvGmw,148420 +PySide2/translations/designer_ru.qm,sha256=jjutKVZwsBUaLbUNOkholsn4j-6vh_ato1PIx__Hyi0,152420 +PySide2/translations/designer_sk.qm,sha256=yEdoz8NH0r42VvR1YwNvFP6JVDY-DizOgL_MAZnqICY,144032 +PySide2/translations/designer_sl.qm,sha256=61SNTyygZgUpsSxgwBd_eARtiFdUV5bPnU_Z29dLc94,152204 +PySide2/translations/designer_tr.qm,sha256=Q4yVDTlUfRDvmY-Fo5etmzGtVFGh5NAfrIOZ4iIZVx4,142269 +PySide2/translations/designer_uk.qm,sha256=dvLLYyVCAkM4YIb1wRx7wNMHBbD0qEKmUnM-hwZR3vg,148416 +PySide2/translations/designer_zh_CN.qm,sha256=Wm80AXX8oQloNhlVLHLe5N-OXkhjCxDxd8IJLwHjoO4,112428 +PySide2/translations/designer_zh_TW.qm,sha256=vbHRDZsNoJUXrknyBuSdTHPgPt4WpGamiYDTlbn69YQ,112050 +PySide2/translations/linguist_ar.qm,sha256=STeBhs9o-z6RWG5IjUdj2tKr8fv4d93DSHOLLP21Rx4,45963 +PySide2/translations/linguist_bg.qm,sha256=Tb93f7RjsX5p5Bmd0TbhNzt_HXZaoCwQ8hgjm3NW_Yw,48198 +PySide2/translations/linguist_cs.qm,sha256=6K-70qlrc3HJXtY3Pqf_1wC-AFVT3Ts68MEWY3qx2Yo,87779 +PySide2/translations/linguist_da.qm,sha256=JtuijqebXB4-wUmv8AZFPR9S818K_ABxZeubIRloVMI,48378 +PySide2/translations/linguist_de.qm,sha256=aR30AxSlD6AYsOX3pbNFYqOgzP1IqqCahzuAep-ldQ0,51310 +PySide2/translations/linguist_en.qm,sha256=mVm1ELFdGJN4SK0TAH4wRZ0umTxn5WS62_wY-TVpXIU,16 +PySide2/translations/linguist_es.qm,sha256=hdSHrYYV6AfS0n6wa42pvc-BQ6uIMJckhV9rxOCaxvk,49406 +PySide2/translations/linguist_fr.qm,sha256=xmzwHIVYCZGoCPn5e3GJh5YlQ8h5g46qWW__SaAEwpM,50278 +PySide2/translations/linguist_hu.qm,sha256=maijZBwJTiEmbzLCS7rnuLfa3e97PyCLFnFaujFR0UI,48041 +PySide2/translations/linguist_it.qm,sha256=r4UkAsS2suu52Gq_gU7joSA30Dcd51vAfdZBJkM-vko,47373 +PySide2/translations/linguist_ja.qm,sha256=PJhut3dqWWSE5TdVImf3_7vEOGq34ygLAsDueoPj4pU,36964 +PySide2/translations/linguist_ko.qm,sha256=SSWvRgya2brEXIPX6JvY3dAaHd4x6deklMSoyk6FZWQ,37607 +PySide2/translations/linguist_pl.qm,sha256=dz_unASX7Zmf0VRM09IeElGVB_rEXOVF5Ijz3kMvj_w,49777 +PySide2/translations/linguist_ru.qm,sha256=KEz_dwTWa1NW0jfxCuYbgiuU4t_pgqpEPnkb1camy4g,48667 +PySide2/translations/linguist_sk.qm,sha256=A-z_VF4YFnVowK-0-iFxKHbf4BYAHsoZ9zgj7GlHZyI,84315 +PySide2/translations/linguist_sl.qm,sha256=t1p74VbgEH5jXzERkxQ50BNNdduL1GEPhkfSgxUsE9k,46526 +PySide2/translations/linguist_sv.qm,sha256=PB6wpHgr_V7A_TTKHnMVhaafxfjPCsrLu0Lal3IJ8yU,47382 +PySide2/translations/linguist_tr.qm,sha256=0V7hXaK669AEHWbEY_85x63dhJyyC2yghHuDR7NiDqg,48222 +PySide2/translations/linguist_uk.qm,sha256=XVsbomAKyTuxi1nu9QS1S_LFgzYkMPDwkYqWU1DadUQ,47773 +PySide2/translations/linguist_zh_CN.qm,sha256=oPjQ1Rub5g7WlTcMDuQ4Sa25iyxoLVa2ieIRqevP8PU,31605 +PySide2/translations/linguist_zh_TW.qm,sha256=iuC8MleiUVsmpvDsD9lVFqtkoC60vjXGkVReON7iVOM,35065 +PySide2/translations/qt_ar.qm,sha256=qKGw1vlY5zZtHIVr5hAAEG0-f8mT-5MWdTaYkrkALQs,130 +PySide2/translations/qt_bg.qm,sha256=nhzk2RhSNSBD2RkfGpkoOPkZy6fi8tm7EWHklOi_X14,153 +PySide2/translations/qt_ca.qm,sha256=Fxx0JLJNhQKrU8s3hP802Pz64mVXz4r0393sZIWswv4,153 +PySide2/translations/qt_cs.qm,sha256=PAy_0ZSQ1n0bO56UTDpNmp5_h9euNeiNXVoAdzSbWyE,157 +PySide2/translations/qt_da.qm,sha256=tQNhYc6AjHKOX9qYX3kttWWDH9Ac8AsoJUd5DANzU6I,153 +PySide2/translations/qt_de.qm,sha256=WAW4_zdHhJeU4tcGYdc3xpwV8a52PDjhcISx5agekVM,153 +PySide2/translations/qt_en.qm,sha256=mVm1ELFdGJN4SK0TAH4wRZ0umTxn5WS62_wY-TVpXIU,16 +PySide2/translations/qt_es.qm,sha256=4l5D8Eb2ECL_6HGi9zxqEu38XD79lYwOAZpyGGCgU7A,153 +PySide2/translations/qt_fa.qm,sha256=spKvsHY7jHwwpa9zcr_BLYoNAL891KAAcV2fV22cGjk,293121 +PySide2/translations/qt_fi.qm,sha256=BIykLc5Pr1_CHYQ1duPG_ZYxRuzHhVTn5fNNB_ZPshM,117 +PySide2/translations/qt_fr.qm,sha256=hiQDPYSeZwsSyVMjN_y_Jg8ghI4ET-53h8_irJK-KNs,153 +PySide2/translations/qt_gd.qm,sha256=Sd-FWgBKF5UDOK8xRkZvbfTVhSQQvQtY6oDg0CA6nSQ,70 +PySide2/translations/qt_gl.qm,sha256=IEoBrH3ra1uuGTr-y9HlDRjHO_fZS63rK7_fYSPE7ZM,323590 +PySide2/translations/qt_he.qm,sha256=wRPRTiGNVAK2Ftq-onlpxvg4UmdkaMXvBR3d77PuAjU,83 +PySide2/translations/qt_help_ar.qm,sha256=IiCIyXUtHMO6uYXvLcd-WueFeNzhimHsFbOfAuWIFj0,8743 +PySide2/translations/qt_help_bg.qm,sha256=y83R4LuuMy2A3bCihgVvF8gk-ijTU9f98S_JfZ9v4FQ,10599 +PySide2/translations/qt_help_ca.qm,sha256=7NQoOmYPLPcoSbMjgQ1-rdBjEgtvVh4FqhJDpbKAlGo,7444 +PySide2/translations/qt_help_cs.qm,sha256=SsVvxj5ACUO6sT8dTEGFAhOJCOHUiMJK7mEx09F1Uqo,15297 +PySide2/translations/qt_help_da.qm,sha256=a7CSVSo5hocRn21SFF8Ev4Nzl3RG2PAMDcvVa5aCnw8,4795 +PySide2/translations/qt_help_de.qm,sha256=mWJSP7rp8eTDtcPBaGDQWSkcsw3F6-Wl7aTINqA_7R4,7570 +PySide2/translations/qt_help_en.qm,sha256=mVm1ELFdGJN4SK0TAH4wRZ0umTxn5WS62_wY-TVpXIU,16 +PySide2/translations/qt_help_es.qm,sha256=_RayefjPaQd_delNkMnAeir_85SKV543ifX_teX0IC0,10704 +PySide2/translations/qt_help_fr.qm,sha256=aH41HAYvaIqv9s8FIY1gF7gLGhtCONHTAlClXuQcX-0,10922 +PySide2/translations/qt_help_gl.qm,sha256=c5miSGCZdHc_YIZsh7eOp9-8T3UDE9aS94hs12OIPJ8,10891 +PySide2/translations/qt_help_hu.qm,sha256=cPM7VpwpQvQcbWNOpqYcuNgOsscBG61I72266Wd5YNU,10284 +PySide2/translations/qt_help_it.qm,sha256=MW_o0IFeK0s5aJW-s47xpAQxkVteBU34D0wM1Vbybks,10612 +PySide2/translations/qt_help_ja.qm,sha256=rmA7LA1DTUDN5DP_y6ZfnuJ5eKnhkxYAe-f-eCpbi0c,7917 +PySide2/translations/qt_help_ko.qm,sha256=8RxkaU6ONOHSxGwaHRXWup8tt7Yd5P31TspauXfD4FI,5708 +PySide2/translations/qt_help_pl.qm,sha256=zGy02MVAhiJGcvLknmI8jLfAwc1luNXs1C_JujpgZb0,9673 +PySide2/translations/qt_help_ru.qm,sha256=VXtkTm2l8exyDvk5ZWFwh-TR9AsklMxapSTPN5YQjec,7288 +PySide2/translations/qt_help_sk.qm,sha256=9B4z4deQvQ0-sYDx-HW8GR_nR3NijyXCytleFALmaGc,10388 +PySide2/translations/qt_help_sl.qm,sha256=LslV5mJAfrzY3NrlqqIeQQjgtbCu4OnbcSwnBylDU18,10363 +PySide2/translations/qt_help_tr.qm,sha256=697KDP7nqUQd64ALq_2XxjvE5CHaiFxVs71Jcl66zSU,4629 +PySide2/translations/qt_help_uk.qm,sha256=SXz8RzaEaS7kTXo3lej7InDFcGn9nrmKYV3Smrm-inw,9750 +PySide2/translations/qt_help_zh_CN.qm,sha256=wCqqIJI_GK3atSC-XLhO_UxyM5a9wktMmnLUBvEBx7Q,6441 +PySide2/translations/qt_help_zh_TW.qm,sha256=NpfxZg1_KsmzesM80cfsrgitvSZxDn4Adkl8zdyLyDA,9301 +PySide2/translations/qt_hu.qm,sha256=uyRqq9UB4Uztix_8E2nj1dJlZ6rmKz6tTZTCL7d8NHE,146 +PySide2/translations/qt_it.qm,sha256=kReqwtB7yG36VaKbiCXtJ8cJMwD8yQ4UPhNeAOhfCdc,153 +PySide2/translations/qt_ja.qm,sha256=I0V86OROIzxvhdVqTuaizs2Hyce93m2LipJZAu7RzZw,146 +PySide2/translations/qt_ko.qm,sha256=TMGvN-dx8KQ4mISc_yzUKoIEUbjSsuiJMQMWKdeB2wU,146 +PySide2/translations/qt_lt.qm,sha256=R-tfl0Z992kmFCHVSlvqETHJ-5tjiHkdOLtldDNbZL8,165383 +PySide2/translations/qt_lv.qm,sha256=A0Z3OAQqFWduUEugLLMm3Nt3OxcfraPNYreg4FZDFKA,89 +PySide2/translations/qt_pl.qm,sha256=vX3QwsqxGalz3BDDv_dJnZcouSi1QfhgVpIbMMjbeOY,161 +PySide2/translations/qt_pt.qm,sha256=LB57v1FopktDdS3UxUdgHAvebWEPhnH6PjrzhZfoR4M,70334 +PySide2/translations/qt_ru.qm,sha256=ZJKyZ2CMb7dpB72Pz8jx71fp9Ou8LoGsqBcVqIOI-Uo,164 +PySide2/translations/qt_sk.qm,sha256=tq3_2In_lr8ZXLmXMn59cAWoFcrWeCP6aRWhnC2btmg,157 +PySide2/translations/qt_sl.qm,sha256=xE4DE6lBTMDkkLZbDANvoRvKlZNTsiiIZUe8LISSA08,228428 +PySide2/translations/qt_sv.qm,sha256=S0tv9_0jfJ2gMBtJRhMuaGU9Fetfrzjkxfv-uxLdl_c,65851 +PySide2/translations/qt_tr.qm,sha256=9XSiz9RxWIXD299a5gmVJSZzvZT9qpWG9-BYb2wawO4,110 +PySide2/translations/qt_uk.qm,sha256=8WIeaA4WQvlGPksH5-eLUPmnvbfDIdcwIDnLNAXL3qQ,164 +PySide2/translations/qt_zh_CN.qm,sha256=KM3nXXsyyB_vHUYww3t5ph3sJLNXYy_wDWNlpX2L5Ds,117347 +PySide2/translations/qt_zh_TW.qm,sha256=dR7NoMM-Bh2RJBJoNX-9L2t_cKERbnFPKNIu_WHseho,141 +PySide2/translations/qtbase_ar.qm,sha256=4D_mjYMgFUNpj9f-Jn3V38W_0ZUUfnT_LxmsNJFAEmM,160017 +PySide2/translations/qtbase_bg.qm,sha256=5Eisnj8Wwp6yevMBLv4hBS2qePq_s0zW3_L2nuO9PNs,165337 +PySide2/translations/qtbase_ca.qm,sha256=UulPzJSQiJtVgSxUM9AJtEvcLcMXDrVbGvRE70quHX8,210159 +PySide2/translations/qtbase_cs.qm,sha256=AwKLQt9UeScDceTDvcffL1bLvm3alWooZKxvZBWGH-g,174701 +PySide2/translations/qtbase_da.qm,sha256=fR5cozELVNEEwZvyq9QCs45YTocDmnDhU8Spr3SyXCI,181387 +PySide2/translations/qtbase_de.qm,sha256=VTwEaDXbmt7xWVT6mldmJTZrqL_RZjcDjEvNKOXrrOE,220467 +PySide2/translations/qtbase_en.qm,sha256=mVm1ELFdGJN4SK0TAH4wRZ0umTxn5WS62_wY-TVpXIU,16 +PySide2/translations/qtbase_es.qm,sha256=T_2la6O7VBSrBILR3eZKbyJuNIj2t_PxGhUOAfU_pMg,165170 +PySide2/translations/qtbase_fi.qm,sha256=5H_hNxPhhNB_pEld3gxYmw6PVi6RV0o1WKk2NEOk-nI,179941 +PySide2/translations/qtbase_fr.qm,sha256=7bMqkzzvN2omNmNOFOKXfO1ihOSqmkrH4ikvnKVMOEo,166167 +PySide2/translations/qtbase_gd.qm,sha256=Y7Q53UQTmqOu1UwuvgP6m8d_IsFO2Puo7_JghEW7Iz0,189580 +PySide2/translations/qtbase_he.qm,sha256=4evKFq_omUNW-BygB_vbnd-GWEIBD-kIkj2HO2h8rT8,138690 +PySide2/translations/qtbase_hu.qm,sha256=xhtnu50ehPCrB5K2UY_gVUFKaORNDHvHyGJ3OAD6gpk,160494 +PySide2/translations/qtbase_it.qm,sha256=fH3ItFv05B_sYAIasT2cdlW-AHuBI9uNdTehGetko2Y,161172 +PySide2/translations/qtbase_ja.qm,sha256=y6OCrMRNNoDUAPLGJd6T0MS9cqkBAnae39H-kcubYXs,129911 +PySide2/translations/qtbase_ko.qm,sha256=AXntGxNuHLP1gzUeqixUW6PYOm7j-CwyUFkmoaX18YM,156799 +PySide2/translations/qtbase_lv.qm,sha256=hG4EdXOuQMg2ccO6f3PifvwkuYyCcB2g35lz5XQXi7I,153608 +PySide2/translations/qtbase_pl.qm,sha256=zpkDKjsL-KutdYiVzCKDcIjq2Z_S0lFOLRgGkwgc_lc,162982 +PySide2/translations/qtbase_ru.qm,sha256=PaZgVmj5F40RqDjEUVR4CE3PtPnPIvmdepK0ktucIks,203767 +PySide2/translations/qtbase_sk.qm,sha256=1YauLDFAdM85hBf97LQHCdVHjf6wpnwv5g1Qnum1ntc,125763 +PySide2/translations/qtbase_tr.qm,sha256=agv25w55IMKxk-dukvePMVk2lV07BqwDnZF_LgbEMoE,194487 +PySide2/translations/qtbase_uk.qm,sha256=Ubj_VbN9xZB9Y3qN3aEvvoFoUrAkTHTrTw-4SGenhuA,158274 +PySide2/translations/qtbase_zh_TW.qm,sha256=CF0p6vm7t4iy8lA9dKHvljqUEc62AEQSVM5JoSDhq2M,127849 +PySide2/translations/qtconnectivity_bg.qm,sha256=jVmlbFjLdyZdNg_77mehMcD9XiF3a6pcQlrMTdHjVlo,47342 +PySide2/translations/qtconnectivity_ca.qm,sha256=VvrpUOzwpUaa05Tb16niAhTP-oeGBN72q-xQwclpwkQ,51887 +PySide2/translations/qtconnectivity_da.qm,sha256=qDV2jhHNdByX465z4-W5jlUsCiO6r1NkGZtiQplN3SU,45569 +PySide2/translations/qtconnectivity_de.qm,sha256=DbPAOsCaelB411_O1-6NH1sfK-h4IeXvc0e9WR8xrN4,49383 +PySide2/translations/qtconnectivity_en.qm,sha256=mVm1ELFdGJN4SK0TAH4wRZ0umTxn5WS62_wY-TVpXIU,16 +PySide2/translations/qtconnectivity_es.qm,sha256=hQWZlYJ79HPukzgJGHEqZxRh-vy8YqhAahej7fxLqRU,46591 +PySide2/translations/qtconnectivity_hu.qm,sha256=XN77hp7VV1FBWhbURSirEy54-_U_lDutm8hLJ6zKRyo,43428 +PySide2/translations/qtconnectivity_ko.qm,sha256=yriGJRya5BR5hrssTrtt33a6vFuNZWm8E4EmE0IQMNk,37040 +PySide2/translations/qtconnectivity_pl.qm,sha256=ZP79rueSrjj8Bp8H4zmjwiAMCxiH-beFUnvz5NOm36Y,31377 +PySide2/translations/qtconnectivity_ru.qm,sha256=Ko3M-V4Mge9Gff1QhW47OJds-7qHW8ZNmBk7bFjeCJY,49914 +PySide2/translations/qtconnectivity_tr.qm,sha256=C7jNzSwO9EhxqYPxOPmkaiXw_P8nUPgcvP0kPb6IM6o,45805 +PySide2/translations/qtconnectivity_uk.qm,sha256=jfgAJufNS4HImOykg0iCv7SFWLalXCy4UAYbjxlHzvg,42223 +PySide2/translations/qtdeclarative_bg.qm,sha256=-sGrJv4NwjAnpisqYxRPgx0dkbg-PG4WERMK5dJDBiw,70152 +PySide2/translations/qtdeclarative_da.qm,sha256=8qMLSzoK_mWq_lL-Y08k3G2iJNYgbgHA3gD64_L4HcM,69319 +PySide2/translations/qtdeclarative_de.qm,sha256=j346o0Nsh7z_cRN1HpqFdvKXB1UieSmgJPKUOrS0hx4,74839 +PySide2/translations/qtdeclarative_en.qm,sha256=mVm1ELFdGJN4SK0TAH4wRZ0umTxn5WS62_wY-TVpXIU,16 +PySide2/translations/qtdeclarative_es.qm,sha256=4h-9Kbf37u5A6D4o3c7HZ-LNVDcYTIbZYUo20h0KOJY,59875 +PySide2/translations/qtdeclarative_fi.qm,sha256=7L3-V86szVU0TQyB46I6Q3x2VMw-fpNxAwV2EHUxBi8,65815 +PySide2/translations/qtdeclarative_fr.qm,sha256=2x8WzZ0btV06lX78trU5MMv3zJLFoMHXqeT-1SOe0ks,61420 +PySide2/translations/qtdeclarative_hu.qm,sha256=STkeNZ1WV7SrTrVzZITIBIYMA_T6XO8gMNjfbN7V_Rk,60508 +PySide2/translations/qtdeclarative_ja.qm,sha256=SFEOgyNRr4cH-6bax1W0PWUYLHuCYpaAXbRj8vhDHGk,45301 +PySide2/translations/qtdeclarative_ko.qm,sha256=yWlhkbyYqX-OLTOOR028OxhrVivjGFFkyQ6yBKSghMM,49579 +PySide2/translations/qtdeclarative_lv.qm,sha256=F63mXOuY2tqYKNr4mQRyv7io6kl7qN6-fSciE4mEumU,53940 +PySide2/translations/qtdeclarative_pl.qm,sha256=or1zCU2mWV71j0gxlpTu828H920BT93YqMNUY0lpEoA,64190 +PySide2/translations/qtdeclarative_ru.qm,sha256=WrOdq_CFWDoL1NmIlM7-xLHXiOggu1G7YIUfj1B5MZY,67138 +PySide2/translations/qtdeclarative_sk.qm,sha256=-VNg588QFp4rszc8T6UVPTXxhDR01-zkIy5wMOlFqbM,48654 +PySide2/translations/qtdeclarative_tr.qm,sha256=ZwEvr-wBW1VwmPnOomYYsOGLVnxCRFX5o_NUkkN_nec,69650 +PySide2/translations/qtdeclarative_uk.qm,sha256=hyRsepYlKwYR3QP8jx9Fkcvk8Qwo1J5FkR_KaG2tcsk,63981 +PySide2/translations/qtlocation_bg.qm,sha256=7x3dCKNNHjO0SPUswmFtB3hsb7q5hlAAKvCLmGc3v1M,42381 +PySide2/translations/qtlocation_ca.qm,sha256=uxerTHamuZXx3CTdBuGxtyug35jqPLIPw9KZep3Fzeo,46319 +PySide2/translations/qtlocation_da.qm,sha256=435Z5h1Jh97y1Kd2MIYXG4aq_rBf0OZPa6kKUMiCUDo,44056 +PySide2/translations/qtlocation_de.qm,sha256=oOsM_zHBN9Mh4_HAzc77tMUrhv3DH6dMaXXy5Nm28j4,47076 +PySide2/translations/qtlocation_en.qm,sha256=mVm1ELFdGJN4SK0TAH4wRZ0umTxn5WS62_wY-TVpXIU,16 +PySide2/translations/qtlocation_es.qm,sha256=AxLsCseH8cCcmw_xLBM46bVWKcYXGYF6KwBoAAq8MJM,23400 +PySide2/translations/qtlocation_fi.qm,sha256=0OKkek6ZAiqmEriCcfv7TW8wnN4oqXLjqD00mq9RcP4,43724 +PySide2/translations/qtlocation_fr.qm,sha256=TWF-dOkRL6tLypPIVG8_L6Qpz-VEZYWB1MEq7pWY89U,22158 +PySide2/translations/qtlocation_hu.qm,sha256=yI4h3-Zace4Bz-XoNlC1j4T7GOZ95r-5oVdojF5JLao,23755 +PySide2/translations/qtlocation_ko.qm,sha256=UbHfd6SHeB5F3EVx3riZb9P1yIcuiV-uYYKS72-c5JU,35336 +PySide2/translations/qtlocation_pl.qm,sha256=Yhs0Z3InD5BcrKRVxnyn1yDX9erkr71kMo83qwMBwwc,42325 +PySide2/translations/qtlocation_ru.qm,sha256=io4iMnXgN_d4ophBXmXmSu7r9rfpreLBS5SMfJ9Mq7c,43278 +PySide2/translations/qtlocation_tr.qm,sha256=i3onCPYa3VlAYcXDKshEca5HXb8fjkLiK5zIS_lB5nk,44395 +PySide2/translations/qtlocation_uk.qm,sha256=GRBiHOcQoj8vzmA8s7eNokokyd9Jez8mUF7dSnOLAOQ,24159 +PySide2/translations/qtmultimedia_ar.qm,sha256=X8EEFOFowRYbhZClwXPRQNMbF89FDwrJPmZuv3ov-Qg,11486 +PySide2/translations/qtmultimedia_bg.qm,sha256=rdhnX7wjUftsg5ftNpMvmFU3gt1M4EmO_FuJsFCshiY,13683 +PySide2/translations/qtmultimedia_ca.qm,sha256=marljOcpMStO04232KpCx3DqpMw_ZpYm-b65Z2vCHvI,14877 +PySide2/translations/qtmultimedia_cs.qm,sha256=bxFuei_e_oSokN8XGNI15h1XMb98Lj5XqDj27J7t4Po,15906 +PySide2/translations/qtmultimedia_da.qm,sha256=OdkCQRBkzFxf1FdC8XaAIqGueVNwB0Gy9gjjgH4ZEQo,13659 +PySide2/translations/qtmultimedia_de.qm,sha256=fRVBRovQn0o054WV2uvc_Xv3FxXDS_lcLczkG_VIQVU,15006 +PySide2/translations/qtmultimedia_en.qm,sha256=mVm1ELFdGJN4SK0TAH4wRZ0umTxn5WS62_wY-TVpXIU,16 +PySide2/translations/qtmultimedia_es.qm,sha256=CGaRG_1MbnjTUX6imN5lPK7wtySK76zbpSNudWWpsqU,17046 +PySide2/translations/qtmultimedia_fi.qm,sha256=YovnLB3HBlKrMC4vjMufPDKOf93ffY0cXOIQVqm6hPI,13883 +PySide2/translations/qtmultimedia_fr.qm,sha256=Yi-yq2bSJMlGu76LSwbMtF6ksTaLoOgioHutS3xLvTY,16502 +PySide2/translations/qtmultimedia_hu.qm,sha256=WJ2Fe5bLHI5tywGMjNr3G_BtMaoScYZ_hXIYPJOU-Nc,16463 +PySide2/translations/qtmultimedia_it.qm,sha256=rKjU3RReZx2CflgklvICgdxVmskefhP4jPUIvC1jAe0,17194 +PySide2/translations/qtmultimedia_ja.qm,sha256=-aiIWGxCwiiUzLQYAlfC3nApn_XVQAh7wzTadKjdWWk,14337 +PySide2/translations/qtmultimedia_ko.qm,sha256=9RKl6YVTXQMJ9zfmFW9ZWa6bZAXmX_dquuWhOTMvLHo,11006 +PySide2/translations/qtmultimedia_pl.qm,sha256=PEy3EfalnlsZ5K3A0Ka-Y8C7VfFWJq1kDbG_0dE2NmQ,12237 +PySide2/translations/qtmultimedia_ru.qm,sha256=MsERhBXyWjeNNWzwFlI5PI-QYxRbyPipPE-ZIWb6nU0,14109 +PySide2/translations/qtmultimedia_sk.qm,sha256=gvVE8x_7DOgDQPRFrSyOK6V5aUE--bXRD-QyK7lqaFE,9896 +PySide2/translations/qtmultimedia_tr.qm,sha256=HHmoLc0DFOvsNQKT__6eLNNczGvWPEScF41C7x2jdc8,13295 +PySide2/translations/qtmultimedia_uk.qm,sha256=6_ZzGEkPcMdltQtsxOs81MDquf8QoZvESgSJskzs2DQ,15781 +PySide2/translations/qtmultimedia_zh_TW.qm,sha256=mBSSvTt6g7KA994pa-gNVfwxUKRTWPk3ReS-Pd7sXLc,9951 +PySide2/translations/qtquickcontrols2_ar.qm,sha256=xc7sk0ycz-NPLbkvndw3otOUHX6j15kkIsNB_YrPeD0,640 +PySide2/translations/qtquickcontrols2_bg.qm,sha256=5_GFXSuWn2vSX64RYcFI_aeXfThj1GZUPqcLtxWeoGM,707 +PySide2/translations/qtquickcontrols2_ca.qm,sha256=qi6BUxjxYO8k-UKmesEPCOw6RJhYL59CF5-XzckbfdM,899 +PySide2/translations/qtquickcontrols2_da.qm,sha256=U4OmV1RSRTDd_UYfrXz4o_YKOcErSgptHzPazI6SQPs,855 +PySide2/translations/qtquickcontrols2_en.qm,sha256=mVm1ELFdGJN4SK0TAH4wRZ0umTxn5WS62_wY-TVpXIU,16 +PySide2/translations/qtquickcontrols2_hu.qm,sha256=-ap5oUmh6eQIU6UBUa8aUNdUGz7b_Z-2RdwO4KkLfqk,350 +PySide2/translations/qtquickcontrols2_ko.qm,sha256=Tkd_rEQBtZ2Fhn33N-YPV_7_D8qRPD3qHlEET_iTlfk,690 +PySide2/translations/qtquickcontrols2_tr.qm,sha256=MoROgPsUgJybjJAYhvuD6lY1Xi-UcPpWFsuW-HEzYp8,819 +PySide2/translations/qtquickcontrols2_uk.qm,sha256=pSdN1MTt_smZG0T7SVjaVGdE17KjLkJ2soa9nNkfDNk,9439 +PySide2/translations/qtquickcontrols2_zh_TW.qm,sha256=xsiz0odNCs_zacKGz8RFkGS_S1gcrNpuz3C0SoSeO-I,647 +PySide2/translations/qtquickcontrols_bg.qm,sha256=E-um7uU5-kVwqHhJXu840KfdZoZaGrpt7d8o1yOLs3M,30 +PySide2/translations/qtquickcontrols_ca.qm,sha256=u1sOEbT0JbCPoxX5bqCFjgzpxxQ56IY50iKHWTqQN_M,5113 +PySide2/translations/qtquickcontrols_da.qm,sha256=FY5knwUJcmghqkV1VlvZiUPJ6ptdOeMwXpD1YH4vQ_w,4917 +PySide2/translations/qtquickcontrols_de.qm,sha256=UEcsLplfXzzCOP8Rjsfe2eIgh7WjX3hnGgzgyoVtMOk,5198 +PySide2/translations/qtquickcontrols_en.qm,sha256=mVm1ELFdGJN4SK0TAH4wRZ0umTxn5WS62_wY-TVpXIU,16 +PySide2/translations/qtquickcontrols_fi.qm,sha256=nCkGi9ObuXFU1WHtQ4K5qrB3c1uxqRVOYqzKzj1g8BU,5077 +PySide2/translations/qtquickcontrols_fr.qm,sha256=N1fAOPRHtHXhnSJhmwGO-3PVOYcNB1JCmD9MPGaAJQk,5532 +PySide2/translations/qtquickcontrols_ja.qm,sha256=I-W0Q1P7h80Cy1IgiBT1zvPv2OWlOGn9HHgOEDBvBXY,4356 +PySide2/translations/qtquickcontrols_ko.qm,sha256=ixEaxv9qQ3J38uZY_v-Ws6LL0RK1iJcCNCxTGBCFKMk,4342 +PySide2/translations/qtquickcontrols_ru.qm,sha256=N0TjVJWI3MjnYCZOOni4E52o2jcGJgHa-xf6zeEX6io,5085 +PySide2/translations/qtquickcontrols_tr.qm,sha256=wr3-z0a_gp0soZ0kWK9ujqsIrkv1bqOktJgZ7ndrLEM,4967 +PySide2/translations/qtquickcontrols_uk.qm,sha256=AC_OxieLQsIOWlj9nkSc8ZfPTeElFzcZD159K9Q0TSU,5091 +PySide2/translations/qtquickcontrols_zh_TW.qm,sha256=vKugFQurZZMIy_A2QcDzPq2wJ3-O_ZJX2mrBIkVKiQk,4187 +PySide2/translations/qtscript_ar.qm,sha256=0fh66Q_w25XHOH8A71IbNsZROR3_szTn45NWwmTg5Oo,5045 +PySide2/translations/qtscript_bg.qm,sha256=hL8V-thUNBkt9eNrtY9C2eAR2Cp0lJlmR-yam_mZHTs,5398 +PySide2/translations/qtscript_ca.qm,sha256=tW4qmCALkjLx46QN00BbnVHVVbQL_EJozcdkFZmLdgw,5404 +PySide2/translations/qtscript_cs.qm,sha256=_iXJo4NYglRwQ5NeDjznb_1rNUssb1FKy5TVQvfMddM,5197 +PySide2/translations/qtscript_da.qm,sha256=PTB7M7UAJh7nrkx1J_knG-dAKZARcZ1J4Z3MptawG_k,4954 +PySide2/translations/qtscript_de.qm,sha256=ZddC4rA9j4uNPqOAP3iXMR5LDhD__GopZ64a_i3TVJU,5239 +PySide2/translations/qtscript_en.qm,sha256=mVm1ELFdGJN4SK0TAH4wRZ0umTxn5WS62_wY-TVpXIU,16 +PySide2/translations/qtscript_es.qm,sha256=205vHh_LmWLnPyKxiE8qReZ_6ML8C5VAcSdDy3NPtOg,5417 +PySide2/translations/qtscript_fi.qm,sha256=-BjQV-ZxAIi5nF0nUBqD9udQ1Z_04ao3zeOjdTthgEQ,5254 +PySide2/translations/qtscript_fr.qm,sha256=dUGsPuyWZYCnWyYbV-oRyMIHavqd1Z9vBOKFnOqwN18,5461 +PySide2/translations/qtscript_he.qm,sha256=fd7iJoLILcieE1b9dcnovCoaOkT8Tzr8YQ50e74sUCk,4803 +PySide2/translations/qtscript_hu.qm,sha256=9Fph9dt0QemYra4lAhAUAItu_bglmplpu-Qok653AjA,5192 +PySide2/translations/qtscript_it.qm,sha256=uwKIZmdqRD3X6R6WfSsRT3FeiTjM1yg_uesyfbTq4E4,5383 +PySide2/translations/qtscript_ja.qm,sha256=n-qvv_Wi6iS2F0yNniOqO3ZR43KvEHh14s1UGU278G0,4611 +PySide2/translations/qtscript_ko.qm,sha256=ta4vp3UH-IDTkmJbj1qksWvjEuU7hczAOWYSKjlUlnc,4407 +PySide2/translations/qtscript_lv.qm,sha256=T6FxZ1gtNBEYp_sYM0C66Gufn7OeUz4KjnePgnbK8gc,5273 +PySide2/translations/qtscript_pl.qm,sha256=nbfSwBi36v1WcCxedYeRmEQAU-vbY2I9dYFiUr0k6o4,5263 +PySide2/translations/qtscript_ru.qm,sha256=6CKpv3t2S9rK8nq2O40XTLfHcz-JusYteqnUxd7os0s,5276 +PySide2/translations/qtscript_sk.qm,sha256=g8Esd2eLhi1DGFij18pqH2ngPAIFA14pV3B7IQlQ1cA,5315 +PySide2/translations/qtscript_tr.qm,sha256=vl5jW4ZbIHlvxFu_BDITwGAzYCMOUY_QzvhN_s8QT8o,5110 +PySide2/translations/qtscript_uk.qm,sha256=6hY8t7Hmh4RScG9QPyGZHhniRco_yOrBce5UBpY26lQ,5208 +PySide2/translations/qtserialport_de.qm,sha256=HU1Gqcv2bYMTQ0y2F30eBc2TthBiMHxwRJjf14q2OGw,2487 +PySide2/translations/qtserialport_en.qm,sha256=mVm1ELFdGJN4SK0TAH4wRZ0umTxn5WS62_wY-TVpXIU,16 +PySide2/translations/qtserialport_es.qm,sha256=Rg_Io79dskz1cO0Mr3LDDXVKFoWbP4AUPta5u2p4Nws,2507 +PySide2/translations/qtserialport_ja.qm,sha256=lkHMe8QAop7D_FT2nHKuJfGQsZmBfc0LT1ZPz1sB1jg,1744 +PySide2/translations/qtserialport_ko.qm,sha256=nIRH-MBpmzGPiuJu9TUAtegM4GthXhrxqSBboW9_baA,1627 +PySide2/translations/qtserialport_pl.qm,sha256=fYIAKFeXJnvesqYwiIEAw14KBqasvTxSVNyrAidlYU8,2002 +PySide2/translations/qtserialport_ru.qm,sha256=qpBpykJiQNA1uhMvPyuc8tVYY0Zt_HRaGhVr2hr4lWU,2370 +PySide2/translations/qtserialport_uk.qm,sha256=llpx75t-l27eNINHHQcny5921fKA0ran-1Q-o9reyZo,2424 +PySide2/translations/qtwebengine_ca.qm,sha256=XFrDH4YBICHPPDcgTv1ydyYC3pxRaln5dnd6lZwYZK0,8674 +PySide2/translations/qtwebengine_de.qm,sha256=HzAbXZtHR68Cb7BNZ549Gb2-hVLLnrUgFwQREqELVjY,14586 +PySide2/translations/qtwebengine_en.qm,sha256=mVm1ELFdGJN4SK0TAH4wRZ0umTxn5WS62_wY-TVpXIU,16 +PySide2/translations/qtwebengine_es.qm,sha256=p8pK1NF9E2FA9RnE-k5Ze3NbdWGp9-E_95m2J2GU_KA,8435 +PySide2/translations/qtwebengine_ko.qm,sha256=OE3egBOleHWl6RQqCCpsAdT1UGwzm1QPj8GdzhYz_KU,5922 +PySide2/translations/qtwebengine_locales/am.pak,sha256=E7B9GUMUvV-3XCVFccAUsuAyEFaC6F3R377xaerphJM,385851 +PySide2/translations/qtwebengine_locales/ar.pak,sha256=TpkKPpWsDO2k7nQ4ZNSje60KuwCICWaWtCZDVw7yAKA,394778 +PySide2/translations/qtwebengine_locales/bg.pak,sha256=RkOCJkuIrMKXL-UQoPtq226-3UxhILOJziCbWnF4PEA,438171 +PySide2/translations/qtwebengine_locales/bn.pak,sha256=MUDv0X6in9xz9k-vq-k_URX49X3RNqmsX6q_QLNXjiU,570318 +PySide2/translations/qtwebengine_locales/ca.pak,sha256=gRajCkcPv1bdCMEvksgPsVp1B67FeMtXHDJKm3uZgWg,272206 +PySide2/translations/qtwebengine_locales/cs.pak,sha256=MuetlZDQYtsUTNLfdsPvg5RMSWLje5gqkLfNsCaWd6k,278338 +PySide2/translations/qtwebengine_locales/da.pak,sha256=wRj_aJMb8gQDDRgLHZaDc4ypDaYP4br_0-v9JYtg2lY,249710 +PySide2/translations/qtwebengine_locales/de.pak,sha256=qr5wTkCGe5V2qaYpURbWno1lXWWXemG7SMNYA-J8RVk,271192 +PySide2/translations/qtwebengine_locales/el.pak,sha256=vQrFVf9mz8EYXt_eN6PGcmno1SNBVF_VST4GFcjj3v8,481940 +PySide2/translations/qtwebengine_locales/en-GB.pak,sha256=xcwPlwX44xWDsRz5jcguiEfMtnZ-gb6byfoX9V-hUVI,222760 +PySide2/translations/qtwebengine_locales/en-US.pak,sha256=Zz4MpU6enubCyOHNVMATMwM35PT3rn1TvA0TnDzJfOo,225330 +PySide2/translations/qtwebengine_locales/es-419.pak,sha256=CYX0lEkOfXJ4pulJ-BR6nFJVg2wzxEpMsX26dlQLrm0,267145 +PySide2/translations/qtwebengine_locales/es.pak,sha256=VaTjdrQ57nUzJA0AbrgGh9sizujKSIbsUgolVI8t5f4,271644 +PySide2/translations/qtwebengine_locales/et.pak,sha256=M3TIS5lwQjrv6bE-cLW4HRnzfdmYf7Ba2-JRZlVDotM,241693 +PySide2/translations/qtwebengine_locales/fa.pak,sha256=tgzbMhIYc9SXFD-kR51lmu1WuRw43VYd6Nn6qG4hFbk,386880 +PySide2/translations/qtwebengine_locales/fi.pak,sha256=7Z-ZnKDCbJUPV7VM9d1cRY-n97ohNNNHkrok8f5kEkA,249865 +PySide2/translations/qtwebengine_locales/fil.pak,sha256=rRmjEZ5vgtYRGWam3mlCOXCx2S99JyM1h1-Gdi4YgRE,277239 +PySide2/translations/qtwebengine_locales/fr.pak,sha256=hvdFSlAmSEExFiGdhqqAj4EfJkNo0wHqDWCIjSy1KsI,293185 +PySide2/translations/qtwebengine_locales/gu.pak,sha256=1FEOUebiaybpMsMpwBPqP2dcRSm1n__8utDuc2fB6Ik,546397 +PySide2/translations/qtwebengine_locales/he.pak,sha256=EIGjBzwgx2Zn3Lx0c6rYTbMXoZBe3pTuQt4o5VMwb44,332324 +PySide2/translations/qtwebengine_locales/hi.pak,sha256=4z0lB3ZLV26fVa31mmUfm10MschC8w_i0efzp1V8VsE,562479 +PySide2/translations/qtwebengine_locales/hr.pak,sha256=aFhBhXwjESIZO46Iki0iWuwvn8a-yxUEIatOJcjfpAw,265409 +PySide2/translations/qtwebengine_locales/hu.pak,sha256=m99sXcw8wF5CjoAAR44O635mjIg0oQQef-9SoWxI_VU,287517 +PySide2/translations/qtwebengine_locales/id.pak,sha256=-CNFJVqU2j63znWuFyTixp0EQNSVKY3TxCz5Y0HYaH8,240855 +PySide2/translations/qtwebengine_locales/it.pak,sha256=6cuhUnHC0ut_mdsMpZIufWJJjEHcqcxCLrdr7EOAH7M,263218 +PySide2/translations/qtwebengine_locales/ja.pak,sha256=CsMk5hUBZ_yuV2yxeQUpSQgPoX2Cec07-TMiKDT9rHk,325738 +PySide2/translations/qtwebengine_locales/kn.pak,sha256=EUn8D2xiadD2ABe8pUazZAIhuU5Kwi8Hl8sHfHSRck0,636392 +PySide2/translations/qtwebengine_locales/ko.pak,sha256=9sxUB_RLQs4da6HJNNdbkBNpTHackExjQMP9DKGYGJo,274156 +PySide2/translations/qtwebengine_locales/lt.pak,sha256=CFNsLrRfr0tV13H9FrgkuDRIPGnKJEMmQGr7ROsDCEM,284024 +PySide2/translations/qtwebengine_locales/lv.pak,sha256=GZYa9kq0wkBEIuyfoGr8AhOAWRHivVQHTnguv5Ez2K0,282993 +PySide2/translations/qtwebengine_locales/ml.pak,sha256=UefR0Xv1CuhgogJyzoVHaKnavwvSTip7hjRjkUMtCDc,670878 +PySide2/translations/qtwebengine_locales/mr.pak,sha256=sRqZ8YkoCsD9q7J0xdoSf8pvmv4wxmb52n0nuM87sKY,538690 +PySide2/translations/qtwebengine_locales/ms.pak,sha256=ISJ6wZUlPTM23CjPj239vVZEtzltKjDak1HDyunH3rQ,249690 +PySide2/translations/qtwebengine_locales/nb.pak,sha256=6VsXSanmvC9VrZSGEfQ8amlJhrOCE8mTi5XpBh0Hqc0,245071 +PySide2/translations/qtwebengine_locales/nl.pak,sha256=av9yKIizs1ypQp2SWfq6i9URPnMTajMl7z9Nl01mIrA,255609 +PySide2/translations/qtwebengine_locales/pl.pak,sha256=MP_UESfvN2ODsLP-WmiFHoKM8ErXdwUazeFZvv63Koc,276286 +PySide2/translations/qtwebengine_locales/pt-BR.pak,sha256=A73pw6EqdUHjuagj1rxfF3Pj0chqOOP3POIpDFFGZ-E,263682 +PySide2/translations/qtwebengine_locales/pt-PT.pak,sha256=zZsBqpREa5PRMzz3Zo93BU4R6CuEcVxFkRMmYYAGGZ4,267225 +PySide2/translations/qtwebengine_locales/ro.pak,sha256=raaf_srNAR0XNToo3ALs4cWrVxOXdzhIvvW5YguFPP0,273676 +PySide2/translations/qtwebengine_locales/ru.pak,sha256=ZPwAeirvtgQOF8nU6bSLw_sHQa0L7rjDnAFYRGX5eb8,434094 +PySide2/translations/qtwebengine_locales/sk.pak,sha256=RS2IWMw6iT9XpLwdqpSBxOZrBdLoCMeGkzOUdBl1pio,282116 +PySide2/translations/qtwebengine_locales/sl.pak,sha256=QTMGp4BJ_L6RczLZNRpm6ub7c8FtaY5YpoFFoljkF54,267993 +PySide2/translations/qtwebengine_locales/sr.pak,sha256=etdWHFYTpsvANzletpUzbAmBXTtOyvvIrDF7lN8aj2M,414440 +PySide2/translations/qtwebengine_locales/sv.pak,sha256=WKjca9k9_4ZqJYBcUku4vjBvyGcNcKsJHIB02RpDrBY,246640 +PySide2/translations/qtwebengine_locales/sw.pak,sha256=IQRoFg1g3zjqCOsAticlZ1wqgETlxOpcgHy3CwXUZCQ,253108 +PySide2/translations/qtwebengine_locales/ta.pak,sha256=b3pbAvylpPsrzVrw0Cr1RQvdbWzCbqrXy5wDSh8nJDM,644342 +PySide2/translations/qtwebengine_locales/te.pak,sha256=wSZFS3cK0wwBGRfroNWto_l8L0-lGDV9PoF1WkX_DV8,606959 +PySide2/translations/qtwebengine_locales/th.pak,sha256=kIn1SPJD2b2jI-FqbEQGaCeq1mmePj2VwMzx4oksjaU,513944 +PySide2/translations/qtwebengine_locales/tr.pak,sha256=SutFQmZUJPlusxaVc6Tmhk7jge2ZVUqAAu81oUpTJbo,262046 +PySide2/translations/qtwebengine_locales/uk.pak,sha256=HaQfV-3CDJw3rX5g54EF0vSqXKIc-Z-mgqQwEJ0OoLA,433020 +PySide2/translations/qtwebengine_locales/vi.pak,sha256=2zNoBHlbL6vXsx39lsFoAWy8XNXCSX2aa1QDrx3GR_U,305810 +PySide2/translations/qtwebengine_locales/zh-CN.pak,sha256=RgKGlUqOo2N2SnN6b0GUr3rSRXLHQrALSpRZuleQB5Q,227055 +PySide2/translations/qtwebengine_locales/zh-TW.pak,sha256=1jaGwB1KR4B47q0qgXFsIcCntNXOgfV4EaqdZnK7A5k,227199 +PySide2/translations/qtwebengine_pl.qm,sha256=6ytcviYrQ985e-C5eKy6ZhcXCsdbkfcewqQV5kBF4gQ,8770 +PySide2/translations/qtwebengine_ru.qm,sha256=t1spl_au3CFSwKCt9GG9XYzBb11yRkht6uArk1s2hlI,14376 +PySide2/translations/qtwebengine_uk.qm,sha256=jMmkFJva7cVQgrrDAt1YtZoD6vyDDuyXRQef9bOQPYU,9249 +PySide2/translations/qtwebsockets_ca.qm,sha256=v8UyoeiOIGSGnt2kiW3yS3RK144x9WAG6qqSz4JFKsA,9664 +PySide2/translations/qtwebsockets_de.qm,sha256=aHV-r8cD9ZxcTDCeVAgUTevzAjYuHxYo1arWEMckSkw,10404 +PySide2/translations/qtwebsockets_en.qm,sha256=mVm1ELFdGJN4SK0TAH4wRZ0umTxn5WS62_wY-TVpXIU,16 +PySide2/translations/qtwebsockets_es.qm,sha256=jMtDaQKdYsUbvubSEKhBM3qHNjgqzqA9Zkoon9bxJxk,9679 +PySide2/translations/qtwebsockets_fr.qm,sha256=hUO-L4aTZ0jYvacPQ504VDBvzlrFyUrP02of-hbqHnE,9639 +PySide2/translations/qtwebsockets_ja.qm,sha256=ff4pfCdSranRGTP1VdKmFvuS9LTzwnu6eDqDq2W2H5s,7270 +PySide2/translations/qtwebsockets_ko.qm,sha256=vztx6rsgu8rCfF-GcbtwYOnqt7xoIbqPCdLWfugjZ7Y,7131 +PySide2/translations/qtwebsockets_pl.qm,sha256=SvkV3iEzq06Ta0rEhcoZ7TTsCKM5n5V2Xuem8rngdGE,7599 +PySide2/translations/qtwebsockets_ru.qm,sha256=bG4umRTyW60IfYL1oEOL-qm4uWW8sV5vH2nX_yLmng0,9562 +PySide2/translations/qtwebsockets_uk.qm,sha256=lzSl3_uImRGl2abrTqj4Hl945IMpzidH6TW833aI2Zk,9160 +PySide2/translations/qtxmlpatterns_bg.qm,sha256=qB1dgjCPdxsoC0QEsNe9V-g_EkZ46wG8tpptcEQZScc,112896 +PySide2/translations/qtxmlpatterns_ca.qm,sha256=StQ1Q31rlGlsQMLxqUmsc_eiBfVDce1pq5JQnWQDa8Y,114190 +PySide2/translations/qtxmlpatterns_cs.qm,sha256=N6qtp3DqHpqgjXjmso1GzSo5CAmF6UWwfsNCJ-Gt8Nk,109606 +PySide2/translations/qtxmlpatterns_da.qm,sha256=PmcWwlgPL7h3rRW4aoEgrSwYInW29qp2i33RxXNL5r0,1771 +PySide2/translations/qtxmlpatterns_de.qm,sha256=FQropFfQudgYR9ceGa07ZmdNcj86xgtIoWU3-jSLBOw,118069 +PySide2/translations/qtxmlpatterns_en.qm,sha256=mVm1ELFdGJN4SK0TAH4wRZ0umTxn5WS62_wY-TVpXIU,16 +PySide2/translations/qtxmlpatterns_es.qm,sha256=On55E5YRq0BVztvYRLmVYVYLELnC5BqOrutamnBNfFo,114789 +PySide2/translations/qtxmlpatterns_fr.qm,sha256=_F8nnVhwuyRPcEVsiLXmoei9mQy-StLt2VvzvGSRPZY,115909 +PySide2/translations/qtxmlpatterns_hu.qm,sha256=Vhrl-cAyIbWTfY6ODG8XpCq7bowN94dm009tyDgL5bI,115164 +PySide2/translations/qtxmlpatterns_it.qm,sha256=9gF5G2EmXyAGynt8zgwnxiCfPeqJbLkISezxits7zfQ,5107 +PySide2/translations/qtxmlpatterns_ja.qm,sha256=oUeW4d31Fr6ArsIwBH9lO3YPdW8h-JhfzCa9-tlcsqY,81631 +PySide2/translations/qtxmlpatterns_ko.qm,sha256=5h-Qlpj-mLz1vzmc8OGlXhhUhS1JVDF3tricSThkSUA,83097 +PySide2/translations/qtxmlpatterns_pl.qm,sha256=3jtF8c94ZP8_scJt873KQzdIJsQh6UIn5kHLDVk1Jo8,110977 +PySide2/translations/qtxmlpatterns_ru.qm,sha256=odI0RNTBLtnAdsggBYdZ0ajTuSCrHCu4P23gzwyNscM,107618 +PySide2/translations/qtxmlpatterns_sk.qm,sha256=Wj5Htnc71T_uln9fHOGDlSKaEq8RyryeImhOWL3DeHI,33325 +PySide2/translations/qtxmlpatterns_uk.qm,sha256=blQwsfGkkudQ68AjmE30XpqI89un1ovknv4SmZWNWe8,7942 +PySide2/translations/qtxmlpatterns_zh_TW.qm,sha256=VsfxMURvyW4PG9e5k3PDYwo5LIM_lz7d2D6v5o7cq3k,30964 +PySide2/typesystems/core_common.xml,sha256=lOaAKX4hAZr1N_DE1VRrmfSxpprCjQTOit7_4UC0bfc,15704 +PySide2/typesystems/datavisualization_common.xml,sha256=LaOMXwIisgtaSvgl5lluIDibRWXhFyY2gOgipB_qC3w,3504 +PySide2/typesystems/glue/plugins.h,sha256=3lT1aTeDw6rLCId7_beEx5FWnJc7Fi5W5cFeOi8QAwg,2593 +PySide2/typesystems/glue/qeasingcurve_glue.cpp,sha256=mbcs4u-C9OvXhcI_YlQ4CImq_9d_OXjvOXo2EIViO7w,5082 +PySide2/typesystems/glue/qeasingcurve_glue.h,sha256=kToCp9j2DfjFzjMNV2ywWwvJIc-6KcUn44gR0kdwOHQ,2640 +PySide2/typesystems/glue/qscript_value_iterator_glue.cpp,sha256=EjvV21D0RbJM5rX8jM1PRdV-fG3qMJaFUJGEu0JamL4,201 +PySide2/typesystems/gui_common.xml,sha256=FtKtCwMVGJB7lcX9ziB4S9JA30HmMTSOOCfLmE8vDxU,12041 +PySide2/typesystems/opengl_common.xml,sha256=ZKD_AFhfUvD2FBkdFW5AfhGJhK1IoBUUUtB6veMsnDs,2785 +PySide2/typesystems/openglfunctions_common.xml,sha256=YJsxMhQpkjJgkmPHTzx9LOWHuC3D0jk6s2mkwsIJ6IE,2297 +PySide2/typesystems/typesystem_3danimation.xml,sha256=0gV7_P24P3xG6EE5kcsY3UuvTu_jFiIdh1oamsv0vwU,3723 +PySide2/typesystems/typesystem_3dcore.xml,sha256=Pq7oguTYXpb-90NpyUXtxSgn_gQPvpLWCOfsIH4Xeos,5414 +PySide2/typesystems/typesystem_3dextras.xml,sha256=bHAypIzDq0hufL8gW-eF5WXwSNZTYGyPrcsBo4ZQOxk,4199 +PySide2/typesystems/typesystem_3dinput.xml,sha256=LG8hzaEnG1eD8LkaHggGyOiehwpTGs-y5-00-gvyLsI,4234 +PySide2/typesystems/typesystem_3dlogic.xml,sha256=0o82VvS4d6K-1TcJug80csHUwag-3j2MqUAe3Sig1LA,2263 +PySide2/typesystems/typesystem_3drender.xml,sha256=DmVpFi3Oa2crPniWncvDSZco1nMslbq3UxzBQrXmWZU,12119 +PySide2/typesystems/typesystem_axcontainer.xml,sha256=Kzntgj5gapdy272snVxtrL6KjM7XBGvo3a_rzUw_548,3693 +PySide2/typesystems/typesystem_charts.xml,sha256=FDAY-6Lt8ZwtLSbB8abIgZZE7XG468ddaRJgo3kj-wo,13123 +PySide2/typesystems/typesystem_concurrent.xml,sha256=qcOqW5ExlAxWRKZjLsNqHXad7VcLFLE3WAuTHQMv6mo,3465 +PySide2/typesystems/typesystem_core.xml,sha256=MNRgg6W4KDXQEf0xn4uU77BQORSV5jRPdCbSYHxU5jY,2167 +PySide2/typesystems/typesystem_core_common.xml,sha256=7OVrV6kPi_eKr37gMYa6AFw45dSMVtkrVg2z5Jmxghg,165582 +PySide2/typesystems/typesystem_core_mac.xml,sha256=EqbfEUxIkNgdC2P9wJVFBbhG9fcHzE6fBROzuZ0n8V8,2906 +PySide2/typesystems/typesystem_core_win.xml,sha256=i8QWCoLRvT6IrvUPz_Tvzx0b2ixgCnzsJc54CXVm6r8,4113 +PySide2/typesystems/typesystem_core_x11.xml,sha256=uqILkArwkvpel7lQ6njrJY3Gh-HWR8VUwELD5Y_aDoA,3289 +PySide2/typesystems/typesystem_datavisualization.xml,sha256=lfAJ8CRE3juqI-IqUd3wzr1WxCkhc8stnBza5TAAtZc,19295 +PySide2/typesystems/typesystem_gui.xml,sha256=3fqHTKLvT-DeAgPifLpqg11aEiVhMgJKsWI1VIHodQE,2229 +PySide2/typesystems/typesystem_gui_common.xml,sha256=f0-qOvLVk4qAcU4VSzYP6g23dQnRgun0dRVw67MLbNQ,142889 +PySide2/typesystems/typesystem_gui_mac.xml,sha256=5XkD0DBQR1-xC8EkOc694_GDsojmlhz2189UkqC1pbk,2467 +PySide2/typesystems/typesystem_gui_win.xml,sha256=eExwJ-RkqcxWJiGcEDy5gEBBsAqFJ0iMJu0UcVxrPRk,2026 +PySide2/typesystems/typesystem_gui_x11.xml,sha256=eExwJ-RkqcxWJiGcEDy5gEBBsAqFJ0iMJu0UcVxrPRk,2026 +PySide2/typesystems/typesystem_help.xml,sha256=FU64oLHiG-p7wQ7vHdtZAnLe49_avsGnDIfB6jcJ04g,3277 +PySide2/typesystems/typesystem_location.xml,sha256=lzR9oL-BVH3E8Z-fpE9X6Yw843WBl1JSYPg2qZqXdIk,5130 +PySide2/typesystems/typesystem_multimedia.xml,sha256=gX7BmeYz_k-CZTuZzS5VgInOGv5XDK4LI3pAg-dRGKw,2219 +PySide2/typesystems/typesystem_multimedia_common.xml,sha256=yda5vZTKkQe1nbMz_F0N5ZfeagNbJz1krSJkD3ovIRM,16699 +PySide2/typesystems/typesystem_multimedia_forward_declarations.xml,sha256=USqOjWRF1p0pqGpNvXyxjR_2mM5cD7s1YTpcp_stn7c,2129 +PySide2/typesystems/typesystem_multimediawidgets.xml,sha256=pz59HdkZrugTZuWm41I376i6RAIqvl3GNjg-0PXlpoQ,2493 +PySide2/typesystems/typesystem_network.xml,sha256=r1E1_VDZ3b2rJM-gqeHbB5HLj-kKzHmdF2EQiCOWWj0,14623 +PySide2/typesystems/typesystem_opengl.xml,sha256=ps4-FG_dCKDxO0VNvsBn2_T_IaSdgcoc4dFhOebnBxg,30043 +PySide2/typesystems/typesystem_openglfunctions.xml,sha256=-eF5AQ2HEH2nCL4k4fwin-asLDUd_rxubwrwfoaybGs,18538 +PySide2/typesystems/typesystem_openglfunctions_modifications1_0.xml,sha256=1rh4VSVzhKNKkiVI_dvqi1SPYw-gd_HJtxPs4uQGlII,2403 +PySide2/typesystems/typesystem_openglfunctions_modifications1_0_compat.xml,sha256=njH5FATnpBrzhs-t1_kXJVNdutNGqj0r0rfvVDb3Mtk,4801 +PySide2/typesystems/typesystem_openglfunctions_modifications1_1.xml,sha256=7nyKOEFBcA2AJG7dFX56yPObXqyJLDx4uruk5uVVICM,2125 +PySide2/typesystems/typesystem_openglfunctions_modifications1_1_compat.xml,sha256=qpyf7FqWjePiNyGOu8Z2mtS2tee85HXn_EtXbzwmRi4,2143 +PySide2/typesystems/typesystem_openglfunctions_modifications1_2_compat.xml,sha256=-pGMkiOCpA00A7j1P7saPST7OT7-BXwodFGXBU3I4qA,2234 +PySide2/typesystems/typesystem_openglfunctions_modifications1_3_compat.xml,sha256=9pnqbYJatcTOhuJ95LaYnsmGJsCKMJUt8vnUnLMxIko,2236 +PySide2/typesystems/typesystem_openglfunctions_modifications1_4.xml,sha256=isXOm5A7yxsIh6QhFE_IT7HFKLU94LXhPVXuhgr0840,2278 +PySide2/typesystems/typesystem_openglfunctions_modifications1_4_compat.xml,sha256=89F2NBt7Fhm7JLUF2m83PwiD_No2CRZbF3uaHSDf6RU,2362 +PySide2/typesystems/typesystem_openglfunctions_modifications2_0.xml,sha256=qsnIo4RnRGrbKh9nRzp7WRnVn1lqHowM3vGKwKSka_Y,2347 +PySide2/typesystems/typesystem_openglfunctions_modifications2_0_compat.xml,sha256=Q1nmgLlR9UVXAcWaj3CcnjKTx1HhXc6g0KfgRT2D0qs,51 +PySide2/typesystems/typesystem_openglfunctions_modifications2_1.xml,sha256=pVM2lmZ3dqPWwLqhfMmHbryfWHo5LIa2BPSoPtA3BJU,2090 +PySide2/typesystems/typesystem_openglfunctions_modifications3_0.xml,sha256=xLdh9x-eEze2SEUa8pRjwmxabdv00vqOflkmuRYveLw,2215 +PySide2/typesystems/typesystem_openglfunctions_modifications3_3.xml,sha256=M8N1GRDvAUMVJve_NkHBiF41YVR6GNtcatPZRJcGg8I,2229 +PySide2/typesystems/typesystem_openglfunctions_modifications3_3a.xml,sha256=egJl4c9j3W5CeyaHE6qkkcuk3jvqmHXqNbWdfOHGxrQ,2678 +PySide2/typesystems/typesystem_openglfunctions_modifications4_0.xml,sha256=9M9HB-GEr5sD3qSfHgpI-g1i0hiMAdlVbl3_3rmrcbc,2222 +PySide2/typesystems/typesystem_openglfunctions_modifications4_1.xml,sha256=QsBIq1mTvEsE_GXKm3d_WoQgVs3gaZszJFzwPjV96BQ,2866 +PySide2/typesystems/typesystem_openglfunctions_modifications4_3.xml,sha256=7JEiVVtIrNDmBsv-IMsYHcVgFLBnrO3G5DqRfdPLnU0,2093 +PySide2/typesystems/typesystem_openglfunctions_modifications4_4.xml,sha256=uTkhswBYlhbgJ-nrTK54vYwPmIGPhGhY5TydAg89mIE,2874 +PySide2/typesystems/typesystem_openglfunctions_modifications4_4_core.xml,sha256=fG8uMSkfanyyyUnJP3-3x-PciEw0yk9XU-MEt4zKcVs,2085 +PySide2/typesystems/typesystem_openglfunctions_modifications4_5.xml,sha256=2ZZw4QFExr2ch_Jc2FSQ8gIzDwWMU0S66omZlpdAPDo,2872 +PySide2/typesystems/typesystem_openglfunctions_modifications4_5_core.xml,sha256=2un2QnnO7DbhkCX4C3ZQ4DB71cQR2kd101DJgFIRcHE,1960 +PySide2/typesystems/typesystem_openglfunctions_modifications_va.xml,sha256=emAlWI5GJ71yTfEI9SYNtQ6uCHAhIqZ75JSWuzm0LR4,2097 +PySide2/typesystems/typesystem_positioning.xml,sha256=lUEjaU3alGmV0JvizKOX0Ft3QeaL_Dv_GWhdNlnnyfw,3442 +PySide2/typesystems/typesystem_printsupport.xml,sha256=yh4ZoWUB7UKjYhX6ejK-abf4wBXIWjermGFe8ekIKRk,2181 +PySide2/typesystems/typesystem_printsupport_common.xml,sha256=K0_l5jj38KYC3Klizb9YbsXRyhPg9aoGQ-lD_EQ0yDs,5171 +PySide2/typesystems/typesystem_qml.xml,sha256=vzm_sKD3-cWJ2CK0HDDg8uekPzmCaSK6VQvW4wWbvBo,11311 +PySide2/typesystems/typesystem_quick.xml,sha256=zlvz5EfWz48k9aCEnTP_clIFg61nX4JGV62LvZXXowo,7635 +PySide2/typesystems/typesystem_quickcontrols2.xml,sha256=uKEIjfjKh8SviPOOG3-Fq3k6uw-stBWwQ_8sfYn3qQA,2172 +PySide2/typesystems/typesystem_quickwidgets.xml,sha256=P8RHmEriYqgmwB9dnIAGClrtNJWpjLvdAPGPqeqREsU,2515 +PySide2/typesystems/typesystem_remoteobjects.xml,sha256=WR4CByIhS7hihC0_3JeWy8ZGkB9bEaBOpU89SVzy9z8,3561 +PySide2/typesystems/typesystem_script.xml,sha256=C25tIv-SGjqOYI-aWdm0Wl3YJlPv49I_1P4oLDErPSY,4774 +PySide2/typesystems/typesystem_scripttools.xml,sha256=FrZO5X2pxh61_toOfn6uULW8WFpm8ZMs_mf2rykmaqw,2581 +PySide2/typesystems/typesystem_scxml.xml,sha256=hmrYTQbNHLBhf-D3wjB2XytmIFEwEohskEWZPxO5GvA,3968 +PySide2/typesystems/typesystem_sensors.xml,sha256=BGgMqq0U3AbVby1MTvNNPs9S3-4FExUjsullkQEMHTQ,5586 +PySide2/typesystems/typesystem_serialport.xml,sha256=zN1d1Qc302zI4vebLAEadQ64790Sc7iF5mLa9tucH3A,2615 +PySide2/typesystems/typesystem_sql.xml,sha256=QtbZCPiOiv1egF5Fo8ruNTohxafAKSkSuPfAdivdL1A,8730 +PySide2/typesystems/typesystem_svg.xml,sha256=FHPuW8i1xD-jRVDFt-R9KhgUWXpK3WrSx124BD00P_U,3120 +PySide2/typesystems/typesystem_test.xml,sha256=bmc8O5sj3HSTIwqWNLErDYgkr90nRkk-q4w7qsghax4,8532 +PySide2/typesystems/typesystem_texttospeech.xml,sha256=mTNVrGPgJBUl0TAimVYnPJOU_WkVFDVqr6KfuClpm8U,2360 +PySide2/typesystems/typesystem_uitools.xml,sha256=GwisG92vQkyTa3DFJEI3npIBs6IatsLKiNBYA_oepW4,7199 +PySide2/typesystems/typesystem_webchannel.xml,sha256=Fp3ib7Q_KSi5L0SnqVDb7sOm7QlkclZCSgDEr3c0yl0,2489 +PySide2/typesystems/typesystem_webengine.xml,sha256=qV-HJtZTC9rfW0_nuYCuLcCml9OHG38LSNP0153TFak,2149 +PySide2/typesystems/typesystem_webenginecore.xml,sha256=ggU_gvygTz1ljLnQuDxsGi_Fa7qcbdDcW2koC1_70tk,3153 +PySide2/typesystems/typesystem_webenginewidgets.xml,sha256=qJk2ahVpFB9XFug3NIgPOnMXi7mSNfdHnMyUCjQv6oM,5987 +PySide2/typesystems/typesystem_websockets.xml,sha256=bkd8EVyi4DoR2yRukyNdveO_2ZEt_EErBomWOe9cB_g,3471 +PySide2/typesystems/typesystem_widgets.xml,sha256=iIN1FHMkq_UmKESgLYheE7AaRMzVEKvkzfbL1d64QMI,2240 +PySide2/typesystems/typesystem_widgets_common.xml,sha256=As4hK4vI8Gp4EEPiuHlo66t1PS2RFtZ5ahyjKhN4cSM,155910 +PySide2/typesystems/typesystem_widgets_mac.xml,sha256=2jgmPYRuEz_n_9xtX7i3Vb7aQfsX5vzeesSrJtwj-Z0,2512 +PySide2/typesystems/typesystem_widgets_win.xml,sha256=iYdp1WR-ce-FTzInnu8ee-z8kSykxlFd1Azb3mqoEWs,2030 +PySide2/typesystems/typesystem_widgets_x11.xml,sha256=iYdp1WR-ce-FTzInnu8ee-z8kSykxlFd1Azb3mqoEWs,2030 +PySide2/typesystems/typesystem_winextras.xml,sha256=MM7U3GxeKqg9b4Z0Nk2yDvZHM_hbVnnwQRpwfZo8t98,3146 +PySide2/typesystems/typesystem_xml.xml,sha256=OUtrLMZW7xIZpRK4sYgETDTY49op_keZlITAW5uPEbI,18551 +PySide2/typesystems/typesystem_xmlpatterns.xml,sha256=LHvl-6neMA8E1OmgfkjkzP3zt3F_wjRgkeGb6gyPT2o,6599 +PySide2/typesystems/webkitwidgets_common.xml,sha256=UdoV8yELMjct52umg3MLVInLtsPZnU6azg8fP4uc-5Q,3437 +PySide2/typesystems/widgets_common.xml,sha256=nLFup-dYXkj2CybSRbIGTu11foC9sm-JpR9-fySNyBw,4006 +PySide2/typesystems/xml_common.xml,sha256=72y1sA40O6xYauuVSjKT8mGEAlGw9XmhyUDn-7Zgoyk,2731 +PySide2/ucrtbase.dll,sha256=lJUukHeBxo0iKU_DjTRjqGu6zyhdY37rGIn3z0HGkSk,917184 +PySide2/uic.exe,sha256=jqZ11r6o_4X11RkA3VT_woPPG4QH8zHkwJtnk_4B7iE,383256 +PySide2/vcamp140.dll,sha256=eubgjToI0UgX7cI6FdwT2965TFBgM_4Qw5FLkgNTB98,454424 +PySide2/vccorlib140.dll,sha256=QbavlITIYIBMaeAMnX_uIu_l92nFE1WTb8neJIIh3pQ,366360 +PySide2/vcomp140.dll,sha256=u8tqS50RPEbRN2LlaH4U2VxZnjTaWcO0xIc7hqbwZTw,160024 +PySide2/vcruntime140.dll,sha256=YYMpkONk3KW_osYdkw8ArKrm0aqjEwOSQDRVrpoRJaU,89880 +PySide2/vcruntime140_1.dll,sha256=bMQxXazrBSKBbGBng0RGbLRSQmJn9wx_quklNhZ053Q,44312 diff --git a/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/REQUESTED b/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/WHEEL b/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/WHEEL new file mode 100644 index 0000000..b113761 --- /dev/null +++ b/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.37.0) +Root-Is-Purelib: false +Tag: cp35.cp36.cp37.cp38.cp39.cp310-none-win_amd64 + diff --git a/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/entry_points.txt b/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/entry_points.txt new file mode 100644 index 0000000..99baa4a --- /dev/null +++ b/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/entry_points.txt @@ -0,0 +1,6 @@ +[console_scripts] +pyside2-designer = PySide2.scripts.pyside_tool:designer +pyside2-lupdate = PySide2.scripts.pyside_tool:main +pyside2-rcc = PySide2.scripts.pyside_tool:rcc +pyside2-uic = PySide2.scripts.pyside_tool:uic + diff --git a/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/top_level.txt b/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/top_level.txt new file mode 100644 index 0000000..b62c9bd --- /dev/null +++ b/venv/Lib/site-packages/PySide2-5.15.2.1.dist-info/top_level.txt @@ -0,0 +1,2 @@ +PySide2 +QtCore diff --git a/venv/Lib/site-packages/PySide2/Qt3DAnimation.pyd b/venv/Lib/site-packages/PySide2/Qt3DAnimation.pyd new file mode 100644 index 0000000..dbad769 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt3DAnimation.pyd differ diff --git a/venv/Lib/site-packages/PySide2/Qt3DAnimation.pyi b/venv/Lib/site-packages/PySide2/Qt3DAnimation.pyi new file mode 100644 index 0000000..2efff73 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/Qt3DAnimation.pyi @@ -0,0 +1,354 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.Qt3DAnimation, except for defaults which are replaced by "...". +""" + +# Module PySide2.Qt3DAnimation +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtGui +import PySide2.Qt3DCore +import PySide2.Qt3DRender +import PySide2.Qt3DAnimation + + +class Qt3DAnimation(Shiboken.Object): + + class QAbstractAnimation(PySide2.QtCore.QObject): + KeyframeAnimation : Qt3DAnimation.QAbstractAnimation = ... # 0x1 + MorphingAnimation : Qt3DAnimation.QAbstractAnimation = ... # 0x2 + VertexBlendAnimation : Qt3DAnimation.QAbstractAnimation = ... # 0x3 + + class AnimationType(object): + KeyframeAnimation : Qt3DAnimation.QAbstractAnimation.AnimationType = ... # 0x1 + MorphingAnimation : Qt3DAnimation.QAbstractAnimation.AnimationType = ... # 0x2 + VertexBlendAnimation : Qt3DAnimation.QAbstractAnimation.AnimationType = ... # 0x3 + def animationName(self) -> str: ... + def animationType(self) -> PySide2.Qt3DAnimation.Qt3DAnimation.QAbstractAnimation.AnimationType: ... + def duration(self) -> float: ... + def position(self) -> float: ... + def setAnimationName(self, name:str) -> None: ... + def setDuration(self, duration:float) -> None: ... + def setPosition(self, position:float) -> None: ... + + class QAbstractAnimationClip(PySide2.Qt3DCore.QNode): + def duration(self) -> float: ... + + class QAbstractChannelMapping(PySide2.Qt3DCore.QNode): ... + + class QAbstractClipAnimator(PySide2.Qt3DCore.QComponent): + Infinite : Qt3DAnimation.QAbstractClipAnimator = ... # -0x1 + + class Loops(object): + Infinite : Qt3DAnimation.QAbstractClipAnimator.Loops = ... # -0x1 + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def clock(self) -> PySide2.Qt3DAnimation.Qt3DAnimation.QClock: ... + def isRunning(self) -> bool: ... + def loopCount(self) -> int: ... + def normalizedTime(self) -> float: ... + def setClock(self, clock:PySide2.Qt3DAnimation.Qt3DAnimation.QClock) -> None: ... + def setLoopCount(self, loops:int) -> None: ... + def setNormalizedTime(self, timeFraction:float) -> None: ... + def setRunning(self, running:bool) -> None: ... + def start(self) -> None: ... + def stop(self) -> None: ... + + class QAbstractClipBlendNode(PySide2.Qt3DCore.QNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + + class QAdditiveClipBlend(PySide2.Qt3DAnimation.QAbstractClipBlendNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def additiveClip(self) -> PySide2.Qt3DAnimation.Qt3DAnimation.QAbstractClipBlendNode: ... + def additiveFactor(self) -> float: ... + def baseClip(self) -> PySide2.Qt3DAnimation.Qt3DAnimation.QAbstractClipBlendNode: ... + def setAdditiveClip(self, additiveClip:PySide2.Qt3DAnimation.Qt3DAnimation.QAbstractClipBlendNode) -> None: ... + def setAdditiveFactor(self, additiveFactor:float) -> None: ... + def setBaseClip(self, baseClip:PySide2.Qt3DAnimation.Qt3DAnimation.QAbstractClipBlendNode) -> None: ... + + class QAnimationAspect(PySide2.Qt3DCore.QAbstractAspect): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + + class QAnimationCallback(Shiboken.Object): + OnOwningThread : Qt3DAnimation.QAnimationCallback = ... # 0x0 + OnThreadPool : Qt3DAnimation.QAnimationCallback = ... # 0x1 + + class Flag(object): + OnOwningThread : Qt3DAnimation.QAnimationCallback.Flag = ... # 0x0 + OnThreadPool : Qt3DAnimation.QAnimationCallback.Flag = ... # 0x1 + + def __init__(self) -> None: ... + + def valueChanged(self, value:typing.Any) -> None: ... + + class QAnimationClip(PySide2.Qt3DAnimation.QAbstractAnimationClip): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + + class QAnimationClipLoader(PySide2.Qt3DAnimation.QAbstractAnimationClip): + NotReady : Qt3DAnimation.QAnimationClipLoader = ... # 0x0 + Ready : Qt3DAnimation.QAnimationClipLoader = ... # 0x1 + Error : Qt3DAnimation.QAnimationClipLoader = ... # 0x2 + + class Status(object): + NotReady : Qt3DAnimation.QAnimationClipLoader.Status = ... # 0x0 + Ready : Qt3DAnimation.QAnimationClipLoader.Status = ... # 0x1 + Error : Qt3DAnimation.QAnimationClipLoader.Status = ... # 0x2 + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + @typing.overload + def __init__(self, source:PySide2.QtCore.QUrl, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def setSource(self, source:PySide2.QtCore.QUrl) -> None: ... + def source(self) -> PySide2.QtCore.QUrl: ... + def status(self) -> PySide2.Qt3DAnimation.Qt3DAnimation.QAnimationClipLoader.Status: ... + + class QAnimationController(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def activeAnimationGroup(self) -> int: ... + def addAnimationGroup(self, animationGroups:PySide2.Qt3DAnimation.Qt3DAnimation.QAnimationGroup) -> None: ... + def animationGroupList(self) -> typing.List: ... + def entity(self) -> PySide2.Qt3DCore.Qt3DCore.QEntity: ... + def getAnimationIndex(self, name:str) -> int: ... + def getGroup(self, index:int) -> PySide2.Qt3DAnimation.Qt3DAnimation.QAnimationGroup: ... + def position(self) -> float: ... + def positionOffset(self) -> float: ... + def positionScale(self) -> float: ... + def recursive(self) -> bool: ... + def removeAnimationGroup(self, animationGroups:PySide2.Qt3DAnimation.Qt3DAnimation.QAnimationGroup) -> None: ... + def setActiveAnimationGroup(self, index:int) -> None: ... + def setAnimationGroups(self, animationGroups:typing.List) -> None: ... + def setEntity(self, entity:PySide2.Qt3DCore.Qt3DCore.QEntity) -> None: ... + def setPosition(self, position:float) -> None: ... + def setPositionOffset(self, offset:float) -> None: ... + def setPositionScale(self, scale:float) -> None: ... + def setRecursive(self, recursive:bool) -> None: ... + + class QAnimationGroup(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def addAnimation(self, animation:PySide2.Qt3DAnimation.Qt3DAnimation.QAbstractAnimation) -> None: ... + def animationList(self) -> typing.List: ... + def duration(self) -> float: ... + def name(self) -> str: ... + def position(self) -> float: ... + def removeAnimation(self, animation:PySide2.Qt3DAnimation.Qt3DAnimation.QAbstractAnimation) -> None: ... + def setAnimations(self, animations:typing.List) -> None: ... + def setName(self, name:str) -> None: ... + def setPosition(self, position:float) -> None: ... + + class QBlendedClipAnimator(PySide2.Qt3DAnimation.QAbstractClipAnimator): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def blendTree(self) -> PySide2.Qt3DAnimation.Qt3DAnimation.QAbstractClipBlendNode: ... + def setBlendTree(self, blendTree:PySide2.Qt3DAnimation.Qt3DAnimation.QAbstractClipBlendNode) -> None: ... + + class QClipAnimator(PySide2.Qt3DAnimation.QAbstractClipAnimator): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def clip(self) -> PySide2.Qt3DAnimation.Qt3DAnimation.QAbstractAnimationClip: ... + def setClip(self, clip:PySide2.Qt3DAnimation.Qt3DAnimation.QAbstractAnimationClip) -> None: ... + + class QClock(PySide2.Qt3DCore.QNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def playbackRate(self) -> float: ... + def setPlaybackRate(self, playbackRate:float) -> None: ... + + class QKeyFrame(Shiboken.Object): + ConstantInterpolation : Qt3DAnimation.QKeyFrame = ... # 0x0 + LinearInterpolation : Qt3DAnimation.QKeyFrame = ... # 0x1 + BezierInterpolation : Qt3DAnimation.QKeyFrame = ... # 0x2 + + class InterpolationType(object): + ConstantInterpolation : Qt3DAnimation.QKeyFrame.InterpolationType = ... # 0x0 + LinearInterpolation : Qt3DAnimation.QKeyFrame.InterpolationType = ... # 0x1 + BezierInterpolation : Qt3DAnimation.QKeyFrame.InterpolationType = ... # 0x2 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, coords:PySide2.QtGui.QVector2D) -> None: ... + @typing.overload + def __init__(self, coords:PySide2.QtGui.QVector2D, lh:PySide2.QtGui.QVector2D, rh:PySide2.QtGui.QVector2D) -> None: ... + + def coordinates(self) -> PySide2.QtGui.QVector2D: ... + def interpolationType(self) -> PySide2.Qt3DAnimation.Qt3DAnimation.QKeyFrame.InterpolationType: ... + def leftControlPoint(self) -> PySide2.QtGui.QVector2D: ... + def rightControlPoint(self) -> PySide2.QtGui.QVector2D: ... + def setCoordinates(self, coords:PySide2.QtGui.QVector2D) -> None: ... + def setInterpolationType(self, interp:PySide2.Qt3DAnimation.Qt3DAnimation.QKeyFrame.InterpolationType) -> None: ... + def setLeftControlPoint(self, lh:PySide2.QtGui.QVector2D) -> None: ... + def setRightControlPoint(self, rh:PySide2.QtGui.QVector2D) -> None: ... + + class QKeyframeAnimation(PySide2.Qt3DAnimation.QAbstractAnimation): + None_ : Qt3DAnimation.QKeyframeAnimation = ... # 0x0 + Constant : Qt3DAnimation.QKeyframeAnimation = ... # 0x1 + Repeat : Qt3DAnimation.QKeyframeAnimation = ... # 0x2 + + class RepeatMode(object): + None_ : Qt3DAnimation.QKeyframeAnimation.RepeatMode = ... # 0x0 + Constant : Qt3DAnimation.QKeyframeAnimation.RepeatMode = ... # 0x1 + Repeat : Qt3DAnimation.QKeyframeAnimation.RepeatMode = ... # 0x2 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def addKeyframe(self, keyframe:PySide2.Qt3DCore.Qt3DCore.QTransform) -> None: ... + def easing(self) -> PySide2.QtCore.QEasingCurve: ... + def endMode(self) -> PySide2.Qt3DAnimation.Qt3DAnimation.QKeyframeAnimation.RepeatMode: ... + def framePositions(self) -> typing.List: ... + def keyframeList(self) -> typing.List: ... + def removeKeyframe(self, keyframe:PySide2.Qt3DCore.Qt3DCore.QTransform) -> None: ... + def setEasing(self, easing:PySide2.QtCore.QEasingCurve) -> None: ... + def setEndMode(self, mode:PySide2.Qt3DAnimation.Qt3DAnimation.QKeyframeAnimation.RepeatMode) -> None: ... + def setFramePositions(self, positions:typing.List) -> None: ... + def setKeyframes(self, keyframes:typing.List) -> None: ... + def setStartMode(self, mode:PySide2.Qt3DAnimation.Qt3DAnimation.QKeyframeAnimation.RepeatMode) -> None: ... + def setTarget(self, target:PySide2.Qt3DCore.Qt3DCore.QTransform) -> None: ... + def setTargetName(self, name:str) -> None: ... + def startMode(self) -> PySide2.Qt3DAnimation.Qt3DAnimation.QKeyframeAnimation.RepeatMode: ... + def target(self) -> PySide2.Qt3DCore.Qt3DCore.QTransform: ... + def targetName(self) -> str: ... + + class QLerpClipBlend(PySide2.Qt3DAnimation.QAbstractClipBlendNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def blendFactor(self) -> float: ... + def endClip(self) -> PySide2.Qt3DAnimation.Qt3DAnimation.QAbstractClipBlendNode: ... + def setBlendFactor(self, blendFactor:float) -> None: ... + def setEndClip(self, endClip:PySide2.Qt3DAnimation.Qt3DAnimation.QAbstractClipBlendNode) -> None: ... + def setStartClip(self, startClip:PySide2.Qt3DAnimation.Qt3DAnimation.QAbstractClipBlendNode) -> None: ... + def startClip(self) -> PySide2.Qt3DAnimation.Qt3DAnimation.QAbstractClipBlendNode: ... + + class QMorphTarget(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def addAttribute(self, attribute:PySide2.Qt3DRender.Qt3DRender.QAttribute) -> None: ... + def attributeList(self) -> typing.List: ... + def attributeNames(self) -> typing.List: ... + @staticmethod + def fromGeometry(geometry:PySide2.Qt3DRender.Qt3DRender.QGeometry, attributes:typing.Sequence) -> PySide2.Qt3DAnimation.Qt3DAnimation.QMorphTarget: ... + def removeAttribute(self, attribute:PySide2.Qt3DRender.Qt3DRender.QAttribute) -> None: ... + def setAttributes(self, attributes:typing.List) -> None: ... + + class QMorphingAnimation(PySide2.Qt3DAnimation.QAbstractAnimation): + Normalized : Qt3DAnimation.QMorphingAnimation = ... # 0x0 + Relative : Qt3DAnimation.QMorphingAnimation = ... # 0x1 + + class Method(object): + Normalized : Qt3DAnimation.QMorphingAnimation.Method = ... # 0x0 + Relative : Qt3DAnimation.QMorphingAnimation.Method = ... # 0x1 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def addMorphTarget(self, target:PySide2.Qt3DAnimation.Qt3DAnimation.QMorphTarget) -> None: ... + def easing(self) -> PySide2.QtCore.QEasingCurve: ... + def getWeights(self, positionIndex:int) -> typing.List: ... + def interpolator(self) -> float: ... + def method(self) -> PySide2.Qt3DAnimation.Qt3DAnimation.QMorphingAnimation.Method: ... + def morphTargetList(self) -> typing.List: ... + def removeMorphTarget(self, target:PySide2.Qt3DAnimation.Qt3DAnimation.QMorphTarget) -> None: ... + def setEasing(self, easing:PySide2.QtCore.QEasingCurve) -> None: ... + def setMethod(self, method:PySide2.Qt3DAnimation.Qt3DAnimation.QMorphingAnimation.Method) -> None: ... + def setMorphTargets(self, targets:typing.List) -> None: ... + def setTarget(self, target:PySide2.Qt3DRender.Qt3DRender.QGeometryRenderer) -> None: ... + def setTargetName(self, name:str) -> None: ... + def setTargetPositions(self, targetPositions:typing.List) -> None: ... + def setWeights(self, positionIndex:int, weights:typing.List) -> None: ... + def target(self) -> PySide2.Qt3DRender.Qt3DRender.QGeometryRenderer: ... + def targetName(self) -> str: ... + def targetPositions(self) -> typing.List: ... + + class QSkeletonMapping(PySide2.Qt3DAnimation.QAbstractChannelMapping): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def setSkeleton(self, skeleton:PySide2.Qt3DCore.Qt3DCore.QAbstractSkeleton) -> None: ... + def skeleton(self) -> PySide2.Qt3DCore.Qt3DCore.QAbstractSkeleton: ... + + class QVertexBlendAnimation(PySide2.Qt3DAnimation.QAbstractAnimation): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def addMorphTarget(self, target:PySide2.Qt3DAnimation.Qt3DAnimation.QMorphTarget) -> None: ... + def interpolator(self) -> float: ... + def morphTargetList(self) -> typing.List: ... + def removeMorphTarget(self, target:PySide2.Qt3DAnimation.Qt3DAnimation.QMorphTarget) -> None: ... + def setMorphTargets(self, targets:typing.List) -> None: ... + def setTarget(self, target:PySide2.Qt3DRender.Qt3DRender.QGeometryRenderer) -> None: ... + def setTargetName(self, name:str) -> None: ... + def setTargetPositions(self, targetPositions:typing.List) -> None: ... + def target(self) -> PySide2.Qt3DRender.Qt3DRender.QGeometryRenderer: ... + def targetName(self) -> str: ... + def targetPositions(self) -> typing.List: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/Qt3DCore.pyd b/venv/Lib/site-packages/PySide2/Qt3DCore.pyd new file mode 100644 index 0000000..f7ddd3d Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt3DCore.pyd differ diff --git a/venv/Lib/site-packages/PySide2/Qt3DCore.pyi b/venv/Lib/site-packages/PySide2/Qt3DCore.pyi new file mode 100644 index 0000000..297a9ef --- /dev/null +++ b/venv/Lib/site-packages/PySide2/Qt3DCore.pyi @@ -0,0 +1,474 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.Qt3DCore, except for defaults which are replaced by "...". +""" + +# Module PySide2.Qt3DCore +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtGui +import PySide2.Qt3DCore + + +class Qt3DCore(Shiboken.Object): + AllChanges : Qt3DCore = ... # -0x1 + NodeCreated : Qt3DCore = ... # 0x1 + NodeDeleted : Qt3DCore = ... # 0x2 + PropertyUpdated : Qt3DCore = ... # 0x4 + PropertyValueAdded : Qt3DCore = ... # 0x8 + PropertyValueRemoved : Qt3DCore = ... # 0x10 + ComponentAdded : Qt3DCore = ... # 0x20 + ComponentRemoved : Qt3DCore = ... # 0x40 + CommandRequested : Qt3DCore = ... # 0x80 + CallbackTriggered : Qt3DCore = ... # 0x100 + + class ChangeFlag(object): + AllChanges : Qt3DCore.ChangeFlag = ... # -0x1 + NodeCreated : Qt3DCore.ChangeFlag = ... # 0x1 + NodeDeleted : Qt3DCore.ChangeFlag = ... # 0x2 + PropertyUpdated : Qt3DCore.ChangeFlag = ... # 0x4 + PropertyValueAdded : Qt3DCore.ChangeFlag = ... # 0x8 + PropertyValueRemoved : Qt3DCore.ChangeFlag = ... # 0x10 + ComponentAdded : Qt3DCore.ChangeFlag = ... # 0x20 + ComponentRemoved : Qt3DCore.ChangeFlag = ... # 0x40 + CommandRequested : Qt3DCore.ChangeFlag = ... # 0x80 + CallbackTriggered : Qt3DCore.ChangeFlag = ... # 0x100 + + class ChangeFlags(object): ... + + class QAbstractAspect(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def rootEntityId(self) -> PySide2.Qt3DCore.Qt3DCore.QNodeId: ... + def unregisterBackendType(self, arg__1:PySide2.QtCore.QMetaObject) -> None: ... + + class QAbstractSkeleton(PySide2.Qt3DCore.QNode): + def jointCount(self) -> int: ... + + class QArmature(PySide2.Qt3DCore.QComponent): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def setSkeleton(self, skeleton:PySide2.Qt3DCore.Qt3DCore.QAbstractSkeleton) -> None: ... + def skeleton(self) -> PySide2.Qt3DCore.Qt3DCore.QAbstractSkeleton: ... + + class QAspectEngine(PySide2.QtCore.QObject): + Manual : Qt3DCore.QAspectEngine = ... # 0x0 + Automatic : Qt3DCore.QAspectEngine = ... # 0x1 + + class RunMode(object): + Manual : Qt3DCore.QAspectEngine.RunMode = ... # 0x0 + Automatic : Qt3DCore.QAspectEngine.RunMode = ... # 0x1 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def aspects(self) -> typing.List: ... + def executeCommand(self, command:str) -> typing.Any: ... + def processFrame(self) -> None: ... + @typing.overload + def registerAspect(self, aspect:PySide2.Qt3DCore.Qt3DCore.QAbstractAspect) -> None: ... + @typing.overload + def registerAspect(self, name:str) -> None: ... + def runMode(self) -> PySide2.Qt3DCore.Qt3DCore.QAspectEngine.RunMode: ... + def setRunMode(self, mode:PySide2.Qt3DCore.Qt3DCore.QAspectEngine.RunMode) -> None: ... + @typing.overload + def unregisterAspect(self, aspect:PySide2.Qt3DCore.Qt3DCore.QAbstractAspect) -> None: ... + @typing.overload + def unregisterAspect(self, name:str) -> None: ... + + class QAspectJob(Shiboken.Object): + + def __init__(self) -> None: ... + + def run(self) -> None: ... + + class QBackendNode(Shiboken.Object): + ReadOnly : Qt3DCore.QBackendNode = ... # 0x0 + ReadWrite : Qt3DCore.QBackendNode = ... # 0x1 + + class Mode(object): + ReadOnly : Qt3DCore.QBackendNode.Mode = ... # 0x0 + ReadWrite : Qt3DCore.QBackendNode.Mode = ... # 0x1 + + def __init__(self, mode:PySide2.Qt3DCore.Qt3DCore.QBackendNode.Mode=...) -> None: ... + + def isEnabled(self) -> bool: ... + def mode(self) -> PySide2.Qt3DCore.Qt3DCore.QBackendNode.Mode: ... + def peerId(self) -> PySide2.Qt3DCore.Qt3DCore.QNodeId: ... + def setEnabled(self, enabled:bool) -> None: ... + + class QComponent(PySide2.Qt3DCore.QNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def entities(self) -> typing.List: ... + def isShareable(self) -> bool: ... + def setShareable(self, isShareable:bool) -> None: ... + + class QComponentAddedChange(PySide2.Qt3DCore.QSceneChange): + + @typing.overload + def __init__(self, component:PySide2.Qt3DCore.Qt3DCore.QComponent, entity:PySide2.Qt3DCore.Qt3DCore.QEntity) -> None: ... + @typing.overload + def __init__(self, entity:PySide2.Qt3DCore.Qt3DCore.QEntity, component:PySide2.Qt3DCore.Qt3DCore.QComponent) -> None: ... + + def componentId(self) -> PySide2.Qt3DCore.Qt3DCore.QNodeId: ... + def componentMetaObject(self) -> PySide2.QtCore.QMetaObject: ... + def entityId(self) -> PySide2.Qt3DCore.Qt3DCore.QNodeId: ... + + class QComponentRemovedChange(PySide2.Qt3DCore.QSceneChange): + + @typing.overload + def __init__(self, component:PySide2.Qt3DCore.Qt3DCore.QComponent, entity:PySide2.Qt3DCore.Qt3DCore.QEntity) -> None: ... + @typing.overload + def __init__(self, entity:PySide2.Qt3DCore.Qt3DCore.QEntity, component:PySide2.Qt3DCore.Qt3DCore.QComponent) -> None: ... + + def componentId(self) -> PySide2.Qt3DCore.Qt3DCore.QNodeId: ... + def componentMetaObject(self) -> PySide2.QtCore.QMetaObject: ... + def entityId(self) -> PySide2.Qt3DCore.Qt3DCore.QNodeId: ... + + class QDynamicPropertyUpdatedChange(PySide2.Qt3DCore.QPropertyUpdatedChangeBase): + + def __init__(self, subjectId:PySide2.Qt3DCore.Qt3DCore.QNodeId) -> None: ... + + def propertyName(self) -> PySide2.QtCore.QByteArray: ... + def setPropertyName(self, name:PySide2.QtCore.QByteArray) -> None: ... + def setValue(self, value:typing.Any) -> None: ... + def value(self) -> typing.Any: ... + + class QEntity(PySide2.Qt3DCore.QNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def addComponent(self, comp:PySide2.Qt3DCore.Qt3DCore.QComponent) -> None: ... + def components(self) -> typing.List: ... + def parentEntity(self) -> PySide2.Qt3DCore.Qt3DCore.QEntity: ... + def removeComponent(self, comp:PySide2.Qt3DCore.Qt3DCore.QComponent) -> None: ... + + class QJoint(PySide2.Qt3DCore.QNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def addChildJoint(self, joint:PySide2.Qt3DCore.Qt3DCore.QJoint) -> None: ... + def childJoints(self) -> typing.List: ... + def inverseBindMatrix(self) -> PySide2.QtGui.QMatrix4x4: ... + def name(self) -> str: ... + def removeChildJoint(self, joint:PySide2.Qt3DCore.Qt3DCore.QJoint) -> None: ... + def rotation(self) -> PySide2.QtGui.QQuaternion: ... + def rotationX(self) -> float: ... + def rotationY(self) -> float: ... + def rotationZ(self) -> float: ... + def scale(self) -> PySide2.QtGui.QVector3D: ... + def setInverseBindMatrix(self, inverseBindMatrix:PySide2.QtGui.QMatrix4x4) -> None: ... + def setName(self, name:str) -> None: ... + def setRotation(self, rotation:PySide2.QtGui.QQuaternion) -> None: ... + def setRotationX(self, rotationX:float) -> None: ... + def setRotationY(self, rotationY:float) -> None: ... + def setRotationZ(self, rotationZ:float) -> None: ... + def setScale(self, scale:PySide2.QtGui.QVector3D) -> None: ... + def setToIdentity(self) -> None: ... + def setTranslation(self, translation:PySide2.QtGui.QVector3D) -> None: ... + def translation(self) -> PySide2.QtGui.QVector3D: ... + + class QNode(PySide2.QtCore.QObject): + TrackFinalValues : Qt3DCore.QNode = ... # 0x0 + DontTrackValues : Qt3DCore.QNode = ... # 0x1 + TrackAllValues : Qt3DCore.QNode = ... # 0x2 + + class PropertyTrackingMode(object): + TrackFinalValues : Qt3DCore.QNode.PropertyTrackingMode = ... # 0x0 + DontTrackValues : Qt3DCore.QNode.PropertyTrackingMode = ... # 0x1 + TrackAllValues : Qt3DCore.QNode.PropertyTrackingMode = ... # 0x2 + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def blockNotifications(self, block:bool) -> bool: ... + def childNodes(self) -> typing.List: ... + def clearPropertyTracking(self, propertyName:str) -> None: ... + def clearPropertyTrackings(self) -> None: ... + def defaultPropertyTrackingMode(self) -> PySide2.Qt3DCore.Qt3DCore.QNode.PropertyTrackingMode: ... + def id(self) -> PySide2.Qt3DCore.Qt3DCore.QNodeId: ... + def isEnabled(self) -> bool: ... + def notificationsBlocked(self) -> bool: ... + def parentNode(self) -> PySide2.Qt3DCore.Qt3DCore.QNode: ... + def propertyTracking(self, propertyName:str) -> PySide2.Qt3DCore.Qt3DCore.QNode.PropertyTrackingMode: ... + def setDefaultPropertyTrackingMode(self, mode:PySide2.Qt3DCore.Qt3DCore.QNode.PropertyTrackingMode) -> None: ... + def setEnabled(self, isEnabled:bool) -> None: ... + @typing.overload + def setParent(self, parent:PySide2.Qt3DCore.Qt3DCore.QNode) -> None: ... + @typing.overload + def setParent(self, parent:PySide2.QtCore.QObject) -> None: ... + def setPropertyTracking(self, propertyName:str, trackMode:PySide2.Qt3DCore.Qt3DCore.QNode.PropertyTrackingMode) -> None: ... + + class QNodeCommand(PySide2.Qt3DCore.QSceneChange): + + def __init__(self, id:PySide2.Qt3DCore.Qt3DCore.QNodeId) -> None: ... + + def commandId(self) -> int: ... + def data(self) -> typing.Any: ... + def inReplyTo(self) -> int: ... + def name(self) -> str: ... + def setData(self, data:typing.Any) -> None: ... + def setName(self, name:str) -> None: ... + def setReplyToCommandId(self, id:int) -> None: ... + + class QNodeCreatedChangeBase(PySide2.Qt3DCore.QSceneChange): + + def __init__(self, node:PySide2.Qt3DCore.Qt3DCore.QNode) -> None: ... + + def isNodeEnabled(self) -> bool: ... + def parentId(self) -> PySide2.Qt3DCore.Qt3DCore.QNodeId: ... + + class QNodeDestroyedChange(PySide2.Qt3DCore.QSceneChange): + + def __init__(self, node:PySide2.Qt3DCore.Qt3DCore.QNode, subtreeIdsAndTypes:typing.List) -> None: ... + + def subtreeIdsAndTypes(self) -> typing.List: ... + + class QNodeId(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QNodeId:PySide2.Qt3DCore.Qt3DCore.QNodeId) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @staticmethod + def createId() -> PySide2.Qt3DCore.Qt3DCore.QNodeId: ... + def id(self) -> int: ... + def isNull(self) -> bool: ... + + class QNodeIdTypePair(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QNodeIdTypePair:PySide2.Qt3DCore.Qt3DCore.QNodeIdTypePair) -> None: ... + @typing.overload + def __init__(self, _id:PySide2.Qt3DCore.Qt3DCore.QNodeId, _type:PySide2.QtCore.QMetaObject) -> None: ... + + @staticmethod + def __copy__() -> None: ... + + class QPropertyNodeAddedChange(PySide2.Qt3DCore.QStaticPropertyValueAddedChangeBase): + + def __init__(self, subjectId:PySide2.Qt3DCore.Qt3DCore.QNodeId, node:PySide2.Qt3DCore.Qt3DCore.QNode) -> None: ... + + def addedNodeId(self) -> PySide2.Qt3DCore.Qt3DCore.QNodeId: ... + + class QPropertyNodeRemovedChange(PySide2.Qt3DCore.QStaticPropertyValueRemovedChangeBase): + + def __init__(self, subjectId:PySide2.Qt3DCore.Qt3DCore.QNodeId, node:PySide2.Qt3DCore.Qt3DCore.QNode) -> None: ... + + def removedNodeId(self) -> PySide2.Qt3DCore.Qt3DCore.QNodeId: ... + + class QPropertyUpdatedChange(PySide2.Qt3DCore.QStaticPropertyUpdatedChangeBase): + + def __init__(self, subjectId:PySide2.Qt3DCore.Qt3DCore.QNodeId) -> None: ... + + def setValue(self, value:typing.Any) -> None: ... + def value(self) -> typing.Any: ... + + class QPropertyUpdatedChangeBase(PySide2.Qt3DCore.QSceneChange): + + def __init__(self, subjectId:PySide2.Qt3DCore.Qt3DCore.QNodeId) -> None: ... + + + class QPropertyValueAddedChange(PySide2.Qt3DCore.QStaticPropertyValueAddedChangeBase): + + def __init__(self, subjectId:PySide2.Qt3DCore.Qt3DCore.QNodeId) -> None: ... + + def addedValue(self) -> typing.Any: ... + def setAddedValue(self, value:typing.Any) -> None: ... + + class QPropertyValueAddedChangeBase(PySide2.Qt3DCore.QSceneChange): + + def __init__(self, subjectId:PySide2.Qt3DCore.Qt3DCore.QNodeId) -> None: ... + + + class QPropertyValueRemovedChange(PySide2.Qt3DCore.QStaticPropertyValueRemovedChangeBase): + + def __init__(self, subjectId:PySide2.Qt3DCore.Qt3DCore.QNodeId) -> None: ... + + def removedValue(self) -> typing.Any: ... + def setRemovedValue(self, value:typing.Any) -> None: ... + + class QPropertyValueRemovedChangeBase(PySide2.Qt3DCore.QSceneChange): + + def __init__(self, subjectId:PySide2.Qt3DCore.Qt3DCore.QNodeId) -> None: ... + + + class QSceneChange(Shiboken.Object): + BackendNodes : Qt3DCore.QSceneChange = ... # 0x1 + Nodes : Qt3DCore.QSceneChange = ... # 0x10 + DeliverToAll : Qt3DCore.QSceneChange = ... # 0x11 + + class DeliveryFlag(object): + BackendNodes : Qt3DCore.QSceneChange.DeliveryFlag = ... # 0x1 + Nodes : Qt3DCore.QSceneChange.DeliveryFlag = ... # 0x10 + DeliverToAll : Qt3DCore.QSceneChange.DeliveryFlag = ... # 0x11 + + class DeliveryFlags(object): ... + + def __init__(self, type:PySide2.Qt3DCore.Qt3DCore.ChangeFlag, subjectId:PySide2.Qt3DCore.Qt3DCore.QNodeId) -> None: ... + + def deliveryFlags(self) -> PySide2.Qt3DCore.Qt3DCore.QSceneChange.DeliveryFlags: ... + def setDeliveryFlags(self, flags:PySide2.Qt3DCore.Qt3DCore.QSceneChange.DeliveryFlags) -> None: ... + def subjectId(self) -> PySide2.Qt3DCore.Qt3DCore.QNodeId: ... + def type(self) -> PySide2.Qt3DCore.Qt3DCore.ChangeFlag: ... + + class QSkeleton(PySide2.Qt3DCore.QAbstractSkeleton): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def rootJoint(self) -> PySide2.Qt3DCore.Qt3DCore.QJoint: ... + def setRootJoint(self, rootJoint:PySide2.Qt3DCore.Qt3DCore.QJoint) -> None: ... + + class QSkeletonLoader(PySide2.Qt3DCore.QAbstractSkeleton): + NotReady : Qt3DCore.QSkeletonLoader = ... # 0x0 + Ready : Qt3DCore.QSkeletonLoader = ... # 0x1 + Error : Qt3DCore.QSkeletonLoader = ... # 0x2 + + class Status(object): + NotReady : Qt3DCore.QSkeletonLoader.Status = ... # 0x0 + Ready : Qt3DCore.QSkeletonLoader.Status = ... # 0x1 + Error : Qt3DCore.QSkeletonLoader.Status = ... # 0x2 + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + @typing.overload + def __init__(self, source:PySide2.QtCore.QUrl, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def isCreateJointsEnabled(self) -> bool: ... + def rootJoint(self) -> PySide2.Qt3DCore.Qt3DCore.QJoint: ... + def setCreateJointsEnabled(self, enabled:bool) -> None: ... + def setSource(self, source:PySide2.QtCore.QUrl) -> None: ... + def source(self) -> PySide2.QtCore.QUrl: ... + def status(self) -> PySide2.Qt3DCore.Qt3DCore.QSkeletonLoader.Status: ... + + class QStaticPropertyUpdatedChangeBase(PySide2.Qt3DCore.QPropertyUpdatedChangeBase): + + def __init__(self, subjectId:PySide2.Qt3DCore.Qt3DCore.QNodeId) -> None: ... + + def propertyName(self) -> bytes: ... + def setPropertyName(self, name:bytes) -> None: ... + + class QStaticPropertyValueAddedChangeBase(PySide2.Qt3DCore.QPropertyValueAddedChangeBase): + + def __init__(self, subjectId:PySide2.Qt3DCore.Qt3DCore.QNodeId) -> None: ... + + def propertyName(self) -> bytes: ... + def setPropertyName(self, name:bytes) -> None: ... + + class QStaticPropertyValueRemovedChangeBase(PySide2.Qt3DCore.QPropertyValueRemovedChangeBase): + + def __init__(self, subjectId:PySide2.Qt3DCore.Qt3DCore.QNodeId) -> None: ... + + def propertyName(self) -> bytes: ... + def setPropertyName(self, name:bytes) -> None: ... + + class QTransform(PySide2.Qt3DCore.QComponent): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + @staticmethod + def fromAxes(xAxis:PySide2.QtGui.QVector3D, yAxis:PySide2.QtGui.QVector3D, zAxis:PySide2.QtGui.QVector3D) -> PySide2.QtGui.QQuaternion: ... + @typing.overload + @staticmethod + def fromAxesAndAngles(axis1:PySide2.QtGui.QVector3D, angle1:float, axis2:PySide2.QtGui.QVector3D, angle2:float) -> PySide2.QtGui.QQuaternion: ... + @typing.overload + @staticmethod + def fromAxesAndAngles(axis1:PySide2.QtGui.QVector3D, angle1:float, axis2:PySide2.QtGui.QVector3D, angle2:float, axis3:PySide2.QtGui.QVector3D, angle3:float) -> PySide2.QtGui.QQuaternion: ... + @typing.overload + @staticmethod + def fromAxisAndAngle(axis:PySide2.QtGui.QVector3D, angle:float) -> PySide2.QtGui.QQuaternion: ... + @typing.overload + @staticmethod + def fromAxisAndAngle(x:float, y:float, z:float, angle:float) -> PySide2.QtGui.QQuaternion: ... + @typing.overload + @staticmethod + def fromEulerAngles(eulerAngles:PySide2.QtGui.QVector3D) -> PySide2.QtGui.QQuaternion: ... + @typing.overload + @staticmethod + def fromEulerAngles(pitch:float, yaw:float, roll:float) -> PySide2.QtGui.QQuaternion: ... + def matrix(self) -> PySide2.QtGui.QMatrix4x4: ... + @staticmethod + def rotateAround(point:PySide2.QtGui.QVector3D, angle:float, axis:PySide2.QtGui.QVector3D) -> PySide2.QtGui.QMatrix4x4: ... + @staticmethod + def rotateFromAxes(xAxis:PySide2.QtGui.QVector3D, yAxis:PySide2.QtGui.QVector3D, zAxis:PySide2.QtGui.QVector3D) -> PySide2.QtGui.QMatrix4x4: ... + def rotation(self) -> PySide2.QtGui.QQuaternion: ... + def rotationX(self) -> float: ... + def rotationY(self) -> float: ... + def rotationZ(self) -> float: ... + def scale(self) -> float: ... + def scale3D(self) -> PySide2.QtGui.QVector3D: ... + def setMatrix(self, matrix:PySide2.QtGui.QMatrix4x4) -> None: ... + def setRotation(self, rotation:PySide2.QtGui.QQuaternion) -> None: ... + def setRotationX(self, rotationX:float) -> None: ... + def setRotationY(self, rotationY:float) -> None: ... + def setRotationZ(self, rotationZ:float) -> None: ... + def setScale(self, scale:float) -> None: ... + def setScale3D(self, scale:PySide2.QtGui.QVector3D) -> None: ... + def setTranslation(self, translation:PySide2.QtGui.QVector3D) -> None: ... + def translation(self) -> PySide2.QtGui.QVector3D: ... + def worldMatrix(self) -> PySide2.QtGui.QMatrix4x4: ... + @staticmethod + def qHash(id:PySide2.Qt3DCore.Qt3DCore.QNodeId, seed:int=...) -> int: ... + @staticmethod + def qIdForNode(node:PySide2.Qt3DCore.Qt3DCore.QNode) -> PySide2.Qt3DCore.Qt3DCore.QNodeId: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/Qt3DExtras.pyd b/venv/Lib/site-packages/PySide2/Qt3DExtras.pyd new file mode 100644 index 0000000..0f946b4 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt3DExtras.pyd differ diff --git a/venv/Lib/site-packages/PySide2/Qt3DExtras.pyi b/venv/Lib/site-packages/PySide2/Qt3DExtras.pyi new file mode 100644 index 0000000..97baf52 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/Qt3DExtras.pyi @@ -0,0 +1,698 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.Qt3DExtras, except for defaults which are replaced by "...". +""" + +# Module PySide2.Qt3DExtras +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtGui +import PySide2.Qt3DCore +import PySide2.Qt3DRender +import PySide2.Qt3DExtras + + +class Qt3DExtras(Shiboken.Object): + + class QAbstractCameraController(PySide2.Qt3DCore.QEntity): + + class InputState(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, InputState:PySide2.Qt3DExtras.Qt3DExtras.QAbstractCameraController.InputState) -> None: ... + + @staticmethod + def __copy__() -> None: ... + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def acceleration(self) -> float: ... + def camera(self) -> PySide2.Qt3DRender.Qt3DRender.QCamera: ... + def deceleration(self) -> float: ... + def linearSpeed(self) -> float: ... + def lookSpeed(self) -> float: ... + def setAcceleration(self, acceleration:float) -> None: ... + def setCamera(self, camera:PySide2.Qt3DRender.Qt3DRender.QCamera) -> None: ... + def setDeceleration(self, deceleration:float) -> None: ... + def setLinearSpeed(self, linearSpeed:float) -> None: ... + def setLookSpeed(self, lookSpeed:float) -> None: ... + + class QAbstractSpriteSheet(PySide2.Qt3DCore.QNode): + def currentIndex(self) -> int: ... + def setCurrentIndex(self, currentIndex:int) -> None: ... + def setTexture(self, texture:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture) -> None: ... + def texture(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractTexture: ... + def textureTransform(self) -> PySide2.QtGui.QMatrix3x3: ... + + class QConeGeometry(PySide2.Qt3DRender.QGeometry): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def bottomRadius(self) -> float: ... + def hasBottomEndcap(self) -> bool: ... + def hasTopEndcap(self) -> bool: ... + def indexAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def length(self) -> float: ... + def normalAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def positionAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def rings(self) -> int: ... + def setBottomRadius(self, bottomRadius:float) -> None: ... + def setHasBottomEndcap(self, hasBottomEndcap:bool) -> None: ... + def setHasTopEndcap(self, hasTopEndcap:bool) -> None: ... + def setLength(self, length:float) -> None: ... + def setRings(self, rings:int) -> None: ... + def setSlices(self, slices:int) -> None: ... + def setTopRadius(self, topRadius:float) -> None: ... + def slices(self) -> int: ... + def texCoordAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def topRadius(self) -> float: ... + def updateIndices(self) -> None: ... + def updateVertices(self) -> None: ... + + class QConeMesh(PySide2.Qt3DRender.QGeometryRenderer): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def bottomRadius(self) -> float: ... + def hasBottomEndcap(self) -> bool: ... + def hasTopEndcap(self) -> bool: ... + def length(self) -> float: ... + def rings(self) -> int: ... + def setBottomRadius(self, bottomRadius:float) -> None: ... + def setFirstInstance(self, firstInstance:int) -> None: ... + def setGeometry(self, geometry:PySide2.Qt3DRender.Qt3DRender.QGeometry) -> None: ... + def setHasBottomEndcap(self, hasBottomEndcap:bool) -> None: ... + def setHasTopEndcap(self, hasTopEndcap:bool) -> None: ... + def setIndexOffset(self, indexOffset:int) -> None: ... + def setInstanceCount(self, instanceCount:int) -> None: ... + def setLength(self, length:float) -> None: ... + def setPrimitiveRestartEnabled(self, enabled:bool) -> None: ... + def setPrimitiveType(self, primitiveType:PySide2.Qt3DRender.Qt3DRender.QGeometryRenderer.PrimitiveType) -> None: ... + def setRestartIndexValue(self, index:int) -> None: ... + def setRings(self, rings:int) -> None: ... + def setSlices(self, slices:int) -> None: ... + def setTopRadius(self, topRadius:float) -> None: ... + def setVertexCount(self, vertexCount:int) -> None: ... + def slices(self) -> int: ... + def topRadius(self) -> float: ... + + class QCuboidGeometry(PySide2.Qt3DRender.QGeometry): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def indexAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def normalAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def positionAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def setXExtent(self, xExtent:float) -> None: ... + def setXYMeshResolution(self, resolution:PySide2.QtCore.QSize) -> None: ... + def setXZMeshResolution(self, resolution:PySide2.QtCore.QSize) -> None: ... + def setYExtent(self, yExtent:float) -> None: ... + def setYZMeshResolution(self, resolution:PySide2.QtCore.QSize) -> None: ... + def setZExtent(self, zExtent:float) -> None: ... + def tangentAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def texCoordAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def updateIndices(self) -> None: ... + def updateVertices(self) -> None: ... + def xExtent(self) -> float: ... + def xyMeshResolution(self) -> PySide2.QtCore.QSize: ... + def xzMeshResolution(self) -> PySide2.QtCore.QSize: ... + def yExtent(self) -> float: ... + def yzMeshResolution(self) -> PySide2.QtCore.QSize: ... + def zExtent(self) -> float: ... + + class QCuboidMesh(PySide2.Qt3DRender.QGeometryRenderer): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def setFirstInstance(self, firstInstance:int) -> None: ... + def setGeometry(self, geometry:PySide2.Qt3DRender.Qt3DRender.QGeometry) -> None: ... + def setIndexOffset(self, indexOffset:int) -> None: ... + def setInstanceCount(self, instanceCount:int) -> None: ... + def setPrimitiveRestartEnabled(self, enabled:bool) -> None: ... + def setPrimitiveType(self, primitiveType:PySide2.Qt3DRender.Qt3DRender.QGeometryRenderer.PrimitiveType) -> None: ... + def setRestartIndexValue(self, index:int) -> None: ... + def setVertexCount(self, vertexCount:int) -> None: ... + def setXExtent(self, xExtent:float) -> None: ... + def setXYMeshResolution(self, resolution:PySide2.QtCore.QSize) -> None: ... + def setXZMeshResolution(self, resolution:PySide2.QtCore.QSize) -> None: ... + def setYExtent(self, yExtent:float) -> None: ... + def setYZMeshResolution(self, resolution:PySide2.QtCore.QSize) -> None: ... + def setZExtent(self, zExtent:float) -> None: ... + def xExtent(self) -> float: ... + def xyMeshResolution(self) -> PySide2.QtCore.QSize: ... + def xzMeshResolution(self) -> PySide2.QtCore.QSize: ... + def yExtent(self) -> float: ... + def yzMeshResolution(self) -> PySide2.QtCore.QSize: ... + def zExtent(self) -> float: ... + + class QCylinderGeometry(PySide2.Qt3DRender.QGeometry): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def indexAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def length(self) -> float: ... + def normalAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def positionAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def radius(self) -> float: ... + def rings(self) -> int: ... + def setLength(self, length:float) -> None: ... + def setRadius(self, radius:float) -> None: ... + def setRings(self, rings:int) -> None: ... + def setSlices(self, slices:int) -> None: ... + def slices(self) -> int: ... + def texCoordAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def updateIndices(self) -> None: ... + def updateVertices(self) -> None: ... + + class QCylinderMesh(PySide2.Qt3DRender.QGeometryRenderer): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def length(self) -> float: ... + def radius(self) -> float: ... + def rings(self) -> int: ... + def setFirstInstance(self, firstInstance:int) -> None: ... + def setGeometry(self, geometry:PySide2.Qt3DRender.Qt3DRender.QGeometry) -> None: ... + def setIndexOffset(self, indexOffset:int) -> None: ... + def setInstanceCount(self, instanceCount:int) -> None: ... + def setLength(self, length:float) -> None: ... + def setPrimitiveRestartEnabled(self, enabled:bool) -> None: ... + def setPrimitiveType(self, primitiveType:PySide2.Qt3DRender.Qt3DRender.QGeometryRenderer.PrimitiveType) -> None: ... + def setRadius(self, radius:float) -> None: ... + def setRestartIndexValue(self, index:int) -> None: ... + def setRings(self, rings:int) -> None: ... + def setSlices(self, slices:int) -> None: ... + def setVertexCount(self, vertexCount:int) -> None: ... + def slices(self) -> int: ... + + class QDiffuseMapMaterial(PySide2.Qt3DRender.QMaterial): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def ambient(self) -> PySide2.QtGui.QColor: ... + def diffuse(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractTexture: ... + def setAmbient(self, color:PySide2.QtGui.QColor) -> None: ... + def setDiffuse(self, diffuse:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture) -> None: ... + def setShininess(self, shininess:float) -> None: ... + def setSpecular(self, specular:PySide2.QtGui.QColor) -> None: ... + def setTextureScale(self, textureScale:float) -> None: ... + def shininess(self) -> float: ... + def specular(self) -> PySide2.QtGui.QColor: ... + def textureScale(self) -> float: ... + + class QDiffuseSpecularMapMaterial(PySide2.Qt3DRender.QMaterial): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def ambient(self) -> PySide2.QtGui.QColor: ... + def diffuse(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractTexture: ... + def setAmbient(self, ambient:PySide2.QtGui.QColor) -> None: ... + def setDiffuse(self, diffuse:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture) -> None: ... + def setShininess(self, shininess:float) -> None: ... + def setSpecular(self, specular:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture) -> None: ... + def setTextureScale(self, textureScale:float) -> None: ... + def shininess(self) -> float: ... + def specular(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractTexture: ... + def textureScale(self) -> float: ... + + class QDiffuseSpecularMaterial(PySide2.Qt3DRender.QMaterial): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def ambient(self) -> PySide2.QtGui.QColor: ... + def diffuse(self) -> typing.Any: ... + def isAlphaBlendingEnabled(self) -> bool: ... + def normal(self) -> typing.Any: ... + def setAlphaBlendingEnabled(self, enabled:bool) -> None: ... + def setAmbient(self, ambient:PySide2.QtGui.QColor) -> None: ... + def setDiffuse(self, diffuse:typing.Any) -> None: ... + def setNormal(self, normal:typing.Any) -> None: ... + def setShininess(self, shininess:float) -> None: ... + def setSpecular(self, specular:typing.Any) -> None: ... + def setTextureScale(self, textureScale:float) -> None: ... + def shininess(self) -> float: ... + def specular(self) -> typing.Any: ... + def textureScale(self) -> float: ... + + class QExtrudedTextGeometry(PySide2.Qt3DRender.QGeometry): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def extrusionLength(self) -> float: ... + def font(self) -> PySide2.QtGui.QFont: ... + def indexAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def normalAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def positionAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def setDepth(self, extrusionLength:float) -> None: ... + def setFont(self, font:PySide2.QtGui.QFont) -> None: ... + def setText(self, text:str) -> None: ... + def text(self) -> str: ... + + class QExtrudedTextMesh(PySide2.Qt3DRender.QGeometryRenderer): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def depth(self) -> float: ... + def font(self) -> PySide2.QtGui.QFont: ... + def setDepth(self, depth:float) -> None: ... + def setFont(self, font:PySide2.QtGui.QFont) -> None: ... + def setText(self, text:str) -> None: ... + def text(self) -> str: ... + + class QFirstPersonCameraController(PySide2.Qt3DExtras.QAbstractCameraController): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + + class QForwardRenderer(PySide2.Qt3DRender.QTechniqueFilter): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def buffersToClear(self) -> PySide2.Qt3DRender.Qt3DRender.QClearBuffers.BufferType: ... + def camera(self) -> PySide2.Qt3DCore.Qt3DCore.QEntity: ... + def clearColor(self) -> PySide2.QtGui.QColor: ... + def externalRenderTargetSize(self) -> PySide2.QtCore.QSize: ... + def gamma(self) -> float: ... + def isFrustumCullingEnabled(self) -> bool: ... + def setBuffersToClear(self, arg__1:PySide2.Qt3DRender.Qt3DRender.QClearBuffers.BufferType) -> None: ... + def setCamera(self, camera:PySide2.Qt3DCore.Qt3DCore.QEntity) -> None: ... + def setClearColor(self, clearColor:PySide2.QtGui.QColor) -> None: ... + def setExternalRenderTargetSize(self, size:PySide2.QtCore.QSize) -> None: ... + def setFrustumCullingEnabled(self, enabled:bool) -> None: ... + def setGamma(self, gamma:float) -> None: ... + def setShowDebugOverlay(self, showDebugOverlay:bool) -> None: ... + def setSurface(self, surface:PySide2.QtCore.QObject) -> None: ... + def setViewportRect(self, viewportRect:PySide2.QtCore.QRectF) -> None: ... + def showDebugOverlay(self) -> bool: ... + def surface(self) -> PySide2.QtCore.QObject: ... + def viewportRect(self) -> PySide2.QtCore.QRectF: ... + + class QGoochMaterial(PySide2.Qt3DRender.QMaterial): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def alpha(self) -> float: ... + def beta(self) -> float: ... + def cool(self) -> PySide2.QtGui.QColor: ... + def diffuse(self) -> PySide2.QtGui.QColor: ... + def setAlpha(self, alpha:float) -> None: ... + def setBeta(self, beta:float) -> None: ... + def setCool(self, cool:PySide2.QtGui.QColor) -> None: ... + def setDiffuse(self, diffuse:PySide2.QtGui.QColor) -> None: ... + def setShininess(self, shininess:float) -> None: ... + def setSpecular(self, specular:PySide2.QtGui.QColor) -> None: ... + def setWarm(self, warm:PySide2.QtGui.QColor) -> None: ... + def shininess(self) -> float: ... + def specular(self) -> PySide2.QtGui.QColor: ... + def warm(self) -> PySide2.QtGui.QColor: ... + + class QMetalRoughMaterial(PySide2.Qt3DRender.QMaterial): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def ambientOcclusion(self) -> typing.Any: ... + def baseColor(self) -> typing.Any: ... + def metalness(self) -> typing.Any: ... + def normal(self) -> typing.Any: ... + def roughness(self) -> typing.Any: ... + def setAmbientOcclusion(self, ambientOcclusion:typing.Any) -> None: ... + def setBaseColor(self, baseColor:typing.Any) -> None: ... + def setMetalness(self, metalness:typing.Any) -> None: ... + def setNormal(self, normal:typing.Any) -> None: ... + def setRoughness(self, roughness:typing.Any) -> None: ... + def setTextureScale(self, textureScale:float) -> None: ... + def textureScale(self) -> float: ... + + class QMorphPhongMaterial(PySide2.Qt3DRender.QMaterial): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def ambient(self) -> PySide2.QtGui.QColor: ... + def diffuse(self) -> PySide2.QtGui.QColor: ... + def interpolator(self) -> float: ... + def setAmbient(self, ambient:PySide2.QtGui.QColor) -> None: ... + def setDiffuse(self, diffuse:PySide2.QtGui.QColor) -> None: ... + def setInterpolator(self, interpolator:float) -> None: ... + def setShininess(self, shininess:float) -> None: ... + def setSpecular(self, specular:PySide2.QtGui.QColor) -> None: ... + def shininess(self) -> float: ... + def specular(self) -> PySide2.QtGui.QColor: ... + + class QNormalDiffuseMapAlphaMaterial(PySide2.Qt3DExtras.QNormalDiffuseMapMaterial): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + + class QNormalDiffuseMapMaterial(PySide2.Qt3DRender.QMaterial): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def ambient(self) -> PySide2.QtGui.QColor: ... + def diffuse(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractTexture: ... + def normal(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractTexture: ... + def setAmbient(self, ambient:PySide2.QtGui.QColor) -> None: ... + def setDiffuse(self, diffuse:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture) -> None: ... + def setNormal(self, normal:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture) -> None: ... + def setShininess(self, shininess:float) -> None: ... + def setSpecular(self, specular:PySide2.QtGui.QColor) -> None: ... + def setTextureScale(self, textureScale:float) -> None: ... + def shininess(self) -> float: ... + def specular(self) -> PySide2.QtGui.QColor: ... + def textureScale(self) -> float: ... + + class QNormalDiffuseSpecularMapMaterial(PySide2.Qt3DRender.QMaterial): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def ambient(self) -> PySide2.QtGui.QColor: ... + def diffuse(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractTexture: ... + def normal(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractTexture: ... + def setAmbient(self, ambient:PySide2.QtGui.QColor) -> None: ... + def setDiffuse(self, diffuse:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture) -> None: ... + def setNormal(self, normal:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture) -> None: ... + def setShininess(self, shininess:float) -> None: ... + def setSpecular(self, specular:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture) -> None: ... + def setTextureScale(self, textureScale:float) -> None: ... + def shininess(self) -> float: ... + def specular(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractTexture: ... + def textureScale(self) -> float: ... + + class QOrbitCameraController(PySide2.Qt3DExtras.QAbstractCameraController): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def setZoomInLimit(self, zoomInLimit:float) -> None: ... + def zoomInLimit(self) -> float: ... + + class QPerVertexColorMaterial(PySide2.Qt3DRender.QMaterial): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + + class QPhongAlphaMaterial(PySide2.Qt3DRender.QMaterial): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def alpha(self) -> float: ... + def ambient(self) -> PySide2.QtGui.QColor: ... + def blendFunctionArg(self) -> PySide2.Qt3DRender.Qt3DRender.QBlendEquation.BlendFunction: ... + def destinationAlphaArg(self) -> PySide2.Qt3DRender.Qt3DRender.QBlendEquationArguments.Blending: ... + def destinationRgbArg(self) -> PySide2.Qt3DRender.Qt3DRender.QBlendEquationArguments.Blending: ... + def diffuse(self) -> PySide2.QtGui.QColor: ... + def setAlpha(self, alpha:float) -> None: ... + def setAmbient(self, ambient:PySide2.QtGui.QColor) -> None: ... + def setBlendFunctionArg(self, blendFunctionArg:PySide2.Qt3DRender.Qt3DRender.QBlendEquation.BlendFunction) -> None: ... + def setDestinationAlphaArg(self, destinationAlphaArg:PySide2.Qt3DRender.Qt3DRender.QBlendEquationArguments.Blending) -> None: ... + def setDestinationRgbArg(self, destinationRgbArg:PySide2.Qt3DRender.Qt3DRender.QBlendEquationArguments.Blending) -> None: ... + def setDiffuse(self, diffuse:PySide2.QtGui.QColor) -> None: ... + def setShininess(self, shininess:float) -> None: ... + def setSourceAlphaArg(self, sourceAlphaArg:PySide2.Qt3DRender.Qt3DRender.QBlendEquationArguments.Blending) -> None: ... + def setSourceRgbArg(self, sourceRgbArg:PySide2.Qt3DRender.Qt3DRender.QBlendEquationArguments.Blending) -> None: ... + def setSpecular(self, specular:PySide2.QtGui.QColor) -> None: ... + def shininess(self) -> float: ... + def sourceAlphaArg(self) -> PySide2.Qt3DRender.Qt3DRender.QBlendEquationArguments.Blending: ... + def sourceRgbArg(self) -> PySide2.Qt3DRender.Qt3DRender.QBlendEquationArguments.Blending: ... + def specular(self) -> PySide2.QtGui.QColor: ... + + class QPhongMaterial(PySide2.Qt3DRender.QMaterial): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def ambient(self) -> PySide2.QtGui.QColor: ... + def diffuse(self) -> PySide2.QtGui.QColor: ... + def setAmbient(self, ambient:PySide2.QtGui.QColor) -> None: ... + def setDiffuse(self, diffuse:PySide2.QtGui.QColor) -> None: ... + def setShininess(self, shininess:float) -> None: ... + def setSpecular(self, specular:PySide2.QtGui.QColor) -> None: ... + def shininess(self) -> float: ... + def specular(self) -> PySide2.QtGui.QColor: ... + + class QPlaneGeometry(PySide2.Qt3DRender.QGeometry): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def height(self) -> float: ... + def indexAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def mirrored(self) -> bool: ... + def normalAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def positionAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def resolution(self) -> PySide2.QtCore.QSize: ... + def setHeight(self, height:float) -> None: ... + def setMirrored(self, mirrored:bool) -> None: ... + def setResolution(self, resolution:PySide2.QtCore.QSize) -> None: ... + def setWidth(self, width:float) -> None: ... + def tangentAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def texCoordAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def updateIndices(self) -> None: ... + def updateVertices(self) -> None: ... + def width(self) -> float: ... + + class QPlaneMesh(PySide2.Qt3DRender.QGeometryRenderer): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def height(self) -> float: ... + def meshResolution(self) -> PySide2.QtCore.QSize: ... + def mirrored(self) -> bool: ... + def setFirstInstance(self, firstInstance:int) -> None: ... + def setGeometry(self, geometry:PySide2.Qt3DRender.Qt3DRender.QGeometry) -> None: ... + def setHeight(self, height:float) -> None: ... + def setIndexOffset(self, indexOffset:int) -> None: ... + def setInstanceCount(self, instanceCount:int) -> None: ... + def setMeshResolution(self, resolution:PySide2.QtCore.QSize) -> None: ... + def setMirrored(self, mirrored:bool) -> None: ... + def setPrimitiveRestartEnabled(self, enabled:bool) -> None: ... + def setPrimitiveType(self, primitiveType:PySide2.Qt3DRender.Qt3DRender.QGeometryRenderer.PrimitiveType) -> None: ... + def setRestartIndexValue(self, index:int) -> None: ... + def setVertexCount(self, vertexCount:int) -> None: ... + def setWidth(self, width:float) -> None: ... + def width(self) -> float: ... + + class QSkyboxEntity(PySide2.Qt3DCore.QEntity): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def baseName(self) -> str: ... + def extension(self) -> str: ... + def isGammaCorrectEnabled(self) -> bool: ... + def setBaseName(self, path:str) -> None: ... + def setExtension(self, extension:str) -> None: ... + def setGammaCorrectEnabled(self, enabled:bool) -> None: ... + + class QSphereGeometry(PySide2.Qt3DRender.QGeometry): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def generateTangents(self) -> bool: ... + def indexAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def normalAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def positionAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def radius(self) -> float: ... + def rings(self) -> int: ... + def setGenerateTangents(self, gen:bool) -> None: ... + def setRadius(self, radius:float) -> None: ... + def setRings(self, rings:int) -> None: ... + def setSlices(self, slices:int) -> None: ... + def slices(self) -> int: ... + def tangentAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def texCoordAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def updateIndices(self) -> None: ... + def updateVertices(self) -> None: ... + + class QSphereMesh(PySide2.Qt3DRender.QGeometryRenderer): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def generateTangents(self) -> bool: ... + def radius(self) -> float: ... + def rings(self) -> int: ... + def setFirstInstance(self, firstInstance:int) -> None: ... + def setGenerateTangents(self, gen:bool) -> None: ... + def setGeometry(self, geometry:PySide2.Qt3DRender.Qt3DRender.QGeometry) -> None: ... + def setIndexOffset(self, indexOffset:int) -> None: ... + def setPrimitiveRestartEnabled(self, enabled:bool) -> None: ... + def setPrimitiveType(self, primitiveType:PySide2.Qt3DRender.Qt3DRender.QGeometryRenderer.PrimitiveType) -> None: ... + def setRadius(self, radius:float) -> None: ... + def setRestartIndexValue(self, index:int) -> None: ... + def setRings(self, rings:int) -> None: ... + def setSlices(self, slices:int) -> None: ... + def setVertexCount(self, vertexCount:int) -> None: ... + def slices(self) -> int: ... + + class QSpriteGrid(PySide2.Qt3DExtras.QAbstractSpriteSheet): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def columns(self) -> int: ... + def rows(self) -> int: ... + def setColumns(self, columns:int) -> None: ... + def setRows(self, rows:int) -> None: ... + + class QSpriteSheet(PySide2.Qt3DExtras.QAbstractSpriteSheet): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + @typing.overload + def addSprite(self, sprite:PySide2.Qt3DExtras.Qt3DExtras.QSpriteSheetItem) -> None: ... + @typing.overload + def addSprite(self, x:int, y:int, width:int, height:int) -> PySide2.Qt3DExtras.Qt3DExtras.QSpriteSheetItem: ... + def removeSprite(self, sprite:PySide2.Qt3DExtras.Qt3DExtras.QSpriteSheetItem) -> None: ... + def setSprites(self, sprites:typing.List) -> None: ... + def sprites(self) -> typing.List: ... + + class QSpriteSheetItem(PySide2.Qt3DCore.QNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def height(self) -> int: ... + def setHeight(self, height:int) -> None: ... + def setWidth(self, width:int) -> None: ... + def setX(self, x:int) -> None: ... + def setY(self, y:int) -> None: ... + def width(self) -> int: ... + def x(self) -> int: ... + def y(self) -> int: ... + + class QText2DEntity(PySide2.Qt3DCore.QEntity): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def color(self) -> PySide2.QtGui.QColor: ... + def font(self) -> PySide2.QtGui.QFont: ... + def height(self) -> float: ... + def setColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setFont(self, font:PySide2.QtGui.QFont) -> None: ... + def setHeight(self, height:float) -> None: ... + def setText(self, text:str) -> None: ... + def setWidth(self, width:float) -> None: ... + def text(self) -> str: ... + def width(self) -> float: ... + + class QTextureMaterial(PySide2.Qt3DRender.QMaterial): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def isAlphaBlendingEnabled(self) -> bool: ... + def setAlphaBlendingEnabled(self, enabled:bool) -> None: ... + def setTexture(self, texture:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture) -> None: ... + def setTextureOffset(self, textureOffset:PySide2.QtGui.QVector2D) -> None: ... + def setTextureTransform(self, matrix:PySide2.QtGui.QMatrix3x3) -> None: ... + def texture(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractTexture: ... + def textureOffset(self) -> PySide2.QtGui.QVector2D: ... + def textureTransform(self) -> PySide2.QtGui.QMatrix3x3: ... + + class QTorusGeometry(PySide2.Qt3DRender.QGeometry): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def indexAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def minorRadius(self) -> float: ... + def normalAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def positionAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def radius(self) -> float: ... + def rings(self) -> int: ... + def setMinorRadius(self, minorRadius:float) -> None: ... + def setRadius(self, radius:float) -> None: ... + def setRings(self, rings:int) -> None: ... + def setSlices(self, slices:int) -> None: ... + def slices(self) -> int: ... + def texCoordAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def updateIndices(self) -> None: ... + def updateVertices(self) -> None: ... + + class QTorusMesh(PySide2.Qt3DRender.QGeometryRenderer): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def minorRadius(self) -> float: ... + def radius(self) -> float: ... + def rings(self) -> int: ... + def setFirstInstance(self, firstInstance:int) -> None: ... + def setGeometry(self, geometry:PySide2.Qt3DRender.Qt3DRender.QGeometry) -> None: ... + def setIndexOffset(self, indexOffset:int) -> None: ... + def setInstanceCount(self, instanceCount:int) -> None: ... + def setMinorRadius(self, minorRadius:float) -> None: ... + def setPrimitiveRestartEnabled(self, enabled:bool) -> None: ... + def setPrimitiveType(self, primitiveType:PySide2.Qt3DRender.Qt3DRender.QGeometryRenderer.PrimitiveType) -> None: ... + def setRadius(self, radius:float) -> None: ... + def setRestartIndexValue(self, index:int) -> None: ... + def setRings(self, rings:int) -> None: ... + def setSlices(self, slices:int) -> None: ... + def setVertexCount(self, vertexCount:int) -> None: ... + def slices(self) -> int: ... + + class Qt3DWindow(PySide2.QtGui.QWindow): + + def __init__(self, screen:typing.Optional[PySide2.QtGui.QScreen]=..., arg__2:PySide2.Qt3DRender.Qt3DRender.API=...) -> None: ... + + def activeFrameGraph(self) -> PySide2.Qt3DRender.Qt3DRender.QFrameGraphNode: ... + def camera(self) -> PySide2.Qt3DRender.Qt3DRender.QCamera: ... + def defaultFrameGraph(self) -> PySide2.Qt3DExtras.Qt3DExtras.QForwardRenderer: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + @typing.overload + def registerAspect(self, aspect:PySide2.Qt3DCore.Qt3DCore.QAbstractAspect) -> None: ... + @typing.overload + def registerAspect(self, name:str) -> None: ... + def renderSettings(self) -> PySide2.Qt3DRender.Qt3DRender.QRenderSettings: ... + def resizeEvent(self, arg__1:PySide2.QtGui.QResizeEvent) -> None: ... + def setActiveFrameGraph(self, activeFrameGraph:PySide2.Qt3DRender.Qt3DRender.QFrameGraphNode) -> None: ... + def setRootEntity(self, root:PySide2.Qt3DCore.Qt3DCore.QEntity) -> None: ... + def showEvent(self, e:PySide2.QtGui.QShowEvent) -> None: ... + @staticmethod + def setupWindowSurface(window:PySide2.QtGui.QWindow, arg__2:PySide2.Qt3DRender.Qt3DRender.API) -> None: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/Qt3DInput.pyd b/venv/Lib/site-packages/PySide2/Qt3DInput.pyd new file mode 100644 index 0000000..77f1bbb Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt3DInput.pyd differ diff --git a/venv/Lib/site-packages/PySide2/Qt3DInput.pyi b/venv/Lib/site-packages/PySide2/Qt3DInput.pyi new file mode 100644 index 0000000..9d9aff0 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/Qt3DInput.pyi @@ -0,0 +1,355 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.Qt3DInput, except for defaults which are replaced by "...". +""" + +# Module PySide2.Qt3DInput +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtGui +import PySide2.Qt3DCore +import PySide2.Qt3DInput + + +class Qt3DInput(Shiboken.Object): + + class QAbstractActionInput(PySide2.Qt3DCore.QNode): ... + + class QAbstractAxisInput(PySide2.Qt3DCore.QNode): + def setSourceDevice(self, sourceDevice:PySide2.Qt3DInput.Qt3DInput.QAbstractPhysicalDevice) -> None: ... + def sourceDevice(self) -> PySide2.Qt3DInput.Qt3DInput.QAbstractPhysicalDevice: ... + + class QAbstractPhysicalDevice(PySide2.Qt3DCore.QNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def addAxisSetting(self, axisSetting:PySide2.Qt3DInput.Qt3DInput.QAxisSetting) -> None: ... + def axisCount(self) -> int: ... + def axisIdentifier(self, name:str) -> int: ... + def axisNames(self) -> typing.List: ... + def axisSettings(self) -> typing.List: ... + def buttonCount(self) -> int: ... + def buttonIdentifier(self, name:str) -> int: ... + def buttonNames(self) -> typing.List: ... + def removeAxisSetting(self, axisSetting:PySide2.Qt3DInput.Qt3DInput.QAxisSetting) -> None: ... + + class QAction(PySide2.Qt3DCore.QNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def addInput(self, input:PySide2.Qt3DInput.Qt3DInput.QAbstractActionInput) -> None: ... + def inputs(self) -> typing.List: ... + def isActive(self) -> bool: ... + def removeInput(self, input:PySide2.Qt3DInput.Qt3DInput.QAbstractActionInput) -> None: ... + + class QActionInput(PySide2.Qt3DInput.QAbstractActionInput): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def buttons(self) -> typing.List: ... + def setButtons(self, buttons:typing.List) -> None: ... + def setSourceDevice(self, sourceDevice:PySide2.Qt3DInput.Qt3DInput.QAbstractPhysicalDevice) -> None: ... + def sourceDevice(self) -> PySide2.Qt3DInput.Qt3DInput.QAbstractPhysicalDevice: ... + + class QAnalogAxisInput(PySide2.Qt3DInput.QAbstractAxisInput): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def axis(self) -> int: ... + def setAxis(self, axis:int) -> None: ... + + class QAxis(PySide2.Qt3DCore.QNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def addInput(self, input:PySide2.Qt3DInput.Qt3DInput.QAbstractAxisInput) -> None: ... + def inputs(self) -> typing.List: ... + def removeInput(self, input:PySide2.Qt3DInput.Qt3DInput.QAbstractAxisInput) -> None: ... + def value(self) -> float: ... + + class QAxisAccumulator(PySide2.Qt3DCore.QComponent): + Velocity : Qt3DInput.QAxisAccumulator = ... # 0x0 + Acceleration : Qt3DInput.QAxisAccumulator = ... # 0x1 + + class SourceAxisType(object): + Velocity : Qt3DInput.QAxisAccumulator.SourceAxisType = ... # 0x0 + Acceleration : Qt3DInput.QAxisAccumulator.SourceAxisType = ... # 0x1 + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def scale(self) -> float: ... + def setScale(self, scale:float) -> None: ... + def setSourceAxis(self, sourceAxis:PySide2.Qt3DInput.Qt3DInput.QAxis) -> None: ... + def setSourceAxisType(self, sourceAxisType:PySide2.Qt3DInput.Qt3DInput.QAxisAccumulator.SourceAxisType) -> None: ... + def sourceAxis(self) -> PySide2.Qt3DInput.Qt3DInput.QAxis: ... + def sourceAxisType(self) -> PySide2.Qt3DInput.Qt3DInput.QAxisAccumulator.SourceAxisType: ... + def value(self) -> float: ... + def velocity(self) -> float: ... + + class QAxisSetting(PySide2.Qt3DCore.QNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def axes(self) -> typing.List: ... + def deadZoneRadius(self) -> float: ... + def isSmoothEnabled(self) -> bool: ... + def setAxes(self, axes:typing.List) -> None: ... + def setDeadZoneRadius(self, deadZoneRadius:float) -> None: ... + def setSmoothEnabled(self, enabled:bool) -> None: ... + + class QButtonAxisInput(PySide2.Qt3DInput.QAbstractAxisInput): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def acceleration(self) -> float: ... + def buttons(self) -> typing.List: ... + def deceleration(self) -> float: ... + def scale(self) -> float: ... + def setAcceleration(self, acceleration:float) -> None: ... + def setButtons(self, buttons:typing.List) -> None: ... + def setDeceleration(self, deceleration:float) -> None: ... + def setScale(self, scale:float) -> None: ... + + class QInputAspect(PySide2.Qt3DCore.QAbstractAspect): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def availablePhysicalDevices(self) -> typing.List: ... + def createPhysicalDevice(self, name:str) -> PySide2.Qt3DInput.Qt3DInput.QAbstractPhysicalDevice: ... + + class QInputChord(PySide2.Qt3DInput.QAbstractActionInput): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def addChord(self, input:PySide2.Qt3DInput.Qt3DInput.QAbstractActionInput) -> None: ... + def chords(self) -> typing.List: ... + def removeChord(self, input:PySide2.Qt3DInput.Qt3DInput.QAbstractActionInput) -> None: ... + def setTimeout(self, timeout:int) -> None: ... + def timeout(self) -> int: ... + + class QInputSequence(PySide2.Qt3DInput.QAbstractActionInput): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def addSequence(self, input:PySide2.Qt3DInput.Qt3DInput.QAbstractActionInput) -> None: ... + def buttonInterval(self) -> int: ... + def removeSequence(self, input:PySide2.Qt3DInput.Qt3DInput.QAbstractActionInput) -> None: ... + def sequences(self) -> typing.List: ... + def setButtonInterval(self, buttonInterval:int) -> None: ... + def setTimeout(self, timeout:int) -> None: ... + def timeout(self) -> int: ... + + class QInputSettings(PySide2.Qt3DCore.QComponent): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def eventSource(self) -> PySide2.QtCore.QObject: ... + def setEventSource(self, eventSource:PySide2.QtCore.QObject) -> None: ... + + class QKeyEvent(PySide2.QtCore.QObject): + + def __init__(self, type:PySide2.QtCore.QEvent.Type, key:int, modifiers:PySide2.QtCore.Qt.KeyboardModifiers, text:str=..., autorep:bool=..., count:int=...) -> None: ... + + def count(self) -> int: ... + def isAccepted(self) -> bool: ... + def isAutoRepeat(self) -> bool: ... + def key(self) -> int: ... + def matches(self, key_:PySide2.QtGui.QKeySequence.StandardKey) -> bool: ... + def modifiers(self) -> int: ... + def nativeScanCode(self) -> int: ... + def setAccepted(self, accepted:bool) -> None: ... + def text(self) -> str: ... + def type(self) -> PySide2.QtCore.QEvent.Type: ... + + class QKeyboardDevice(PySide2.Qt3DInput.QAbstractPhysicalDevice): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def activeInput(self) -> PySide2.Qt3DInput.Qt3DInput.QKeyboardHandler: ... + def axisCount(self) -> int: ... + def axisIdentifier(self, name:str) -> int: ... + def axisNames(self) -> typing.List: ... + def buttonCount(self) -> int: ... + def buttonIdentifier(self, name:str) -> int: ... + def buttonNames(self) -> typing.List: ... + + class QKeyboardHandler(PySide2.Qt3DCore.QComponent): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def focus(self) -> bool: ... + def setFocus(self, focus:bool) -> None: ... + def setSourceDevice(self, keyboardDevice:PySide2.Qt3DInput.Qt3DInput.QKeyboardDevice) -> None: ... + def sourceDevice(self) -> PySide2.Qt3DInput.Qt3DInput.QKeyboardDevice: ... + + class QLogicalDevice(PySide2.Qt3DCore.QComponent): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def actions(self) -> typing.List: ... + def addAction(self, action:PySide2.Qt3DInput.Qt3DInput.QAction) -> None: ... + def addAxis(self, axis:PySide2.Qt3DInput.Qt3DInput.QAxis) -> None: ... + def axes(self) -> typing.List: ... + def removeAction(self, action:PySide2.Qt3DInput.Qt3DInput.QAction) -> None: ... + def removeAxis(self, axis:PySide2.Qt3DInput.Qt3DInput.QAxis) -> None: ... + + class QMouseDevice(PySide2.Qt3DInput.QAbstractPhysicalDevice): + X : Qt3DInput.QMouseDevice = ... # 0x0 + Y : Qt3DInput.QMouseDevice = ... # 0x1 + WheelX : Qt3DInput.QMouseDevice = ... # 0x2 + WheelY : Qt3DInput.QMouseDevice = ... # 0x3 + + class Axis(object): + X : Qt3DInput.QMouseDevice.Axis = ... # 0x0 + Y : Qt3DInput.QMouseDevice.Axis = ... # 0x1 + WheelX : Qt3DInput.QMouseDevice.Axis = ... # 0x2 + WheelY : Qt3DInput.QMouseDevice.Axis = ... # 0x3 + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def axisCount(self) -> int: ... + def axisIdentifier(self, name:str) -> int: ... + def axisNames(self) -> typing.List: ... + def buttonCount(self) -> int: ... + def buttonIdentifier(self, name:str) -> int: ... + def buttonNames(self) -> typing.List: ... + def sensitivity(self) -> float: ... + def setSensitivity(self, value:float) -> None: ... + def setUpdateAxesContinuously(self, updateAxesContinuously:bool) -> None: ... + def updateAxesContinuously(self) -> bool: ... + + class QMouseEvent(PySide2.QtCore.QObject): + NoButton : Qt3DInput.QMouseEvent = ... # 0x0 + NoModifier : Qt3DInput.QMouseEvent = ... # 0x0 + LeftButton : Qt3DInput.QMouseEvent = ... # 0x1 + RightButton : Qt3DInput.QMouseEvent = ... # 0x2 + MiddleButton : Qt3DInput.QMouseEvent = ... # 0x4 + BackButton : Qt3DInput.QMouseEvent = ... # 0x8 + ShiftModifier : Qt3DInput.QMouseEvent = ... # 0x2000000 + ControlModifier : Qt3DInput.QMouseEvent = ... # 0x4000000 + AltModifier : Qt3DInput.QMouseEvent = ... # 0x8000000 + MetaModifier : Qt3DInput.QMouseEvent = ... # 0x10000000 + KeypadModifier : Qt3DInput.QMouseEvent = ... # 0x20000000 + + class Buttons(object): + NoButton : Qt3DInput.QMouseEvent.Buttons = ... # 0x0 + LeftButton : Qt3DInput.QMouseEvent.Buttons = ... # 0x1 + RightButton : Qt3DInput.QMouseEvent.Buttons = ... # 0x2 + MiddleButton : Qt3DInput.QMouseEvent.Buttons = ... # 0x4 + BackButton : Qt3DInput.QMouseEvent.Buttons = ... # 0x8 + + class Modifiers(object): + NoModifier : Qt3DInput.QMouseEvent.Modifiers = ... # 0x0 + ShiftModifier : Qt3DInput.QMouseEvent.Modifiers = ... # 0x2000000 + ControlModifier : Qt3DInput.QMouseEvent.Modifiers = ... # 0x4000000 + AltModifier : Qt3DInput.QMouseEvent.Modifiers = ... # 0x8000000 + MetaModifier : Qt3DInput.QMouseEvent.Modifiers = ... # 0x10000000 + KeypadModifier : Qt3DInput.QMouseEvent.Modifiers = ... # 0x20000000 + def button(self) -> PySide2.Qt3DInput.Qt3DInput.QMouseEvent.Buttons: ... + def buttons(self) -> int: ... + def isAccepted(self) -> bool: ... + def modifiers(self) -> PySide2.Qt3DInput.Qt3DInput.QMouseEvent.Modifiers: ... + def setAccepted(self, accepted:bool) -> None: ... + def type(self) -> PySide2.QtCore.QEvent.Type: ... + def wasHeld(self) -> bool: ... + def x(self) -> int: ... + def y(self) -> int: ... + + class QMouseHandler(PySide2.Qt3DCore.QComponent): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def containsMouse(self) -> bool: ... + def setContainsMouse(self, contains:bool) -> None: ... + def setSourceDevice(self, mouseDevice:PySide2.Qt3DInput.Qt3DInput.QMouseDevice) -> None: ... + def sourceDevice(self) -> PySide2.Qt3DInput.Qt3DInput.QMouseDevice: ... + + class QWheelEvent(PySide2.QtCore.QObject): + NoButton : Qt3DInput.QWheelEvent = ... # 0x0 + NoModifier : Qt3DInput.QWheelEvent = ... # 0x0 + LeftButton : Qt3DInput.QWheelEvent = ... # 0x1 + RightButton : Qt3DInput.QWheelEvent = ... # 0x2 + MiddleButton : Qt3DInput.QWheelEvent = ... # 0x4 + BackButton : Qt3DInput.QWheelEvent = ... # 0x8 + ShiftModifier : Qt3DInput.QWheelEvent = ... # 0x2000000 + ControlModifier : Qt3DInput.QWheelEvent = ... # 0x4000000 + AltModifier : Qt3DInput.QWheelEvent = ... # 0x8000000 + MetaModifier : Qt3DInput.QWheelEvent = ... # 0x10000000 + KeypadModifier : Qt3DInput.QWheelEvent = ... # 0x20000000 + + class Buttons(object): + NoButton : Qt3DInput.QWheelEvent.Buttons = ... # 0x0 + LeftButton : Qt3DInput.QWheelEvent.Buttons = ... # 0x1 + RightButton : Qt3DInput.QWheelEvent.Buttons = ... # 0x2 + MiddleButton : Qt3DInput.QWheelEvent.Buttons = ... # 0x4 + BackButton : Qt3DInput.QWheelEvent.Buttons = ... # 0x8 + + class Modifiers(object): + NoModifier : Qt3DInput.QWheelEvent.Modifiers = ... # 0x0 + ShiftModifier : Qt3DInput.QWheelEvent.Modifiers = ... # 0x2000000 + ControlModifier : Qt3DInput.QWheelEvent.Modifiers = ... # 0x4000000 + AltModifier : Qt3DInput.QWheelEvent.Modifiers = ... # 0x8000000 + MetaModifier : Qt3DInput.QWheelEvent.Modifiers = ... # 0x10000000 + KeypadModifier : Qt3DInput.QWheelEvent.Modifiers = ... # 0x20000000 + def angleDelta(self) -> PySide2.QtCore.QPoint: ... + def buttons(self) -> int: ... + def isAccepted(self) -> bool: ... + def modifiers(self) -> PySide2.Qt3DInput.Qt3DInput.QWheelEvent.Modifiers: ... + def setAccepted(self, accepted:bool) -> None: ... + def type(self) -> PySide2.QtCore.QEvent.Type: ... + def x(self) -> int: ... + def y(self) -> int: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/Qt3DLogic.pyd b/venv/Lib/site-packages/PySide2/Qt3DLogic.pyd new file mode 100644 index 0000000..b084306 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt3DLogic.pyd differ diff --git a/venv/Lib/site-packages/PySide2/Qt3DLogic.pyi b/venv/Lib/site-packages/PySide2/Qt3DLogic.pyi new file mode 100644 index 0000000..15e8ef3 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/Qt3DLogic.pyi @@ -0,0 +1,77 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.Qt3DLogic, except for defaults which are replaced by "...". +""" + +# Module PySide2.Qt3DLogic +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.Qt3DCore +import PySide2.Qt3DLogic + + +class Qt3DLogic(Shiboken.Object): + + class QFrameAction(PySide2.Qt3DCore.QComponent): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + + class QLogicAspect(PySide2.Qt3DCore.QAbstractAspect): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + +# eof diff --git a/venv/Lib/site-packages/PySide2/Qt3DRender.pyd b/venv/Lib/site-packages/PySide2/Qt3DRender.pyd new file mode 100644 index 0000000..5d9af4e Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt3DRender.pyd differ diff --git a/venv/Lib/site-packages/PySide2/Qt3DRender.pyi b/venv/Lib/site-packages/PySide2/Qt3DRender.pyi new file mode 100644 index 0000000..1c7b424 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/Qt3DRender.pyi @@ -0,0 +1,2484 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.Qt3DRender, except for defaults which are replaced by "...". +""" + +# Module PySide2.Qt3DRender +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtGui +import PySide2.Qt3DCore +import PySide2.Qt3DRender + + +class Qt3DRender(Shiboken.Object): + + class API(object): + OpenGL : Qt3DRender.API = ... # 0x0 + Vulkan : Qt3DRender.API = ... # 0x1 + DirectX : Qt3DRender.API = ... # 0x2 + Metal : Qt3DRender.API = ... # 0x3 + Null : Qt3DRender.API = ... # 0x4 + + class PropertyReaderInterface(Shiboken.Object): + + def __init__(self) -> None: ... + + def readProperty(self, v:typing.Any) -> typing.Any: ... + + class QAbstractFunctor(Shiboken.Object): + + def __init__(self) -> None: ... + + def id(self) -> int: ... + + class QAbstractLight(PySide2.Qt3DCore.QComponent): + PointLight : Qt3DRender.QAbstractLight = ... # 0x0 + DirectionalLight : Qt3DRender.QAbstractLight = ... # 0x1 + SpotLight : Qt3DRender.QAbstractLight = ... # 0x2 + + class Type(object): + PointLight : Qt3DRender.QAbstractLight.Type = ... # 0x0 + DirectionalLight : Qt3DRender.QAbstractLight.Type = ... # 0x1 + SpotLight : Qt3DRender.QAbstractLight.Type = ... # 0x2 + def color(self) -> PySide2.QtGui.QColor: ... + def intensity(self) -> float: ... + def setColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setIntensity(self, intensity:float) -> None: ... + def type(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractLight.Type: ... + + class QAbstractRayCaster(PySide2.Qt3DCore.QComponent): + AcceptAnyMatchingLayers : Qt3DRender.QAbstractRayCaster = ... # 0x0 + Continuous : Qt3DRender.QAbstractRayCaster = ... # 0x0 + AcceptAllMatchingLayers : Qt3DRender.QAbstractRayCaster = ... # 0x1 + SingleShot : Qt3DRender.QAbstractRayCaster = ... # 0x1 + DiscardAnyMatchingLayers : Qt3DRender.QAbstractRayCaster = ... # 0x2 + DiscardAllMatchingLayers : Qt3DRender.QAbstractRayCaster = ... # 0x3 + + class FilterMode(object): + AcceptAnyMatchingLayers : Qt3DRender.QAbstractRayCaster.FilterMode = ... # 0x0 + AcceptAllMatchingLayers : Qt3DRender.QAbstractRayCaster.FilterMode = ... # 0x1 + DiscardAnyMatchingLayers : Qt3DRender.QAbstractRayCaster.FilterMode = ... # 0x2 + DiscardAllMatchingLayers : Qt3DRender.QAbstractRayCaster.FilterMode = ... # 0x3 + + class RunMode(object): + Continuous : Qt3DRender.QAbstractRayCaster.RunMode = ... # 0x0 + SingleShot : Qt3DRender.QAbstractRayCaster.RunMode = ... # 0x1 + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def addLayer(self, layer:PySide2.Qt3DRender.Qt3DRender.QLayer) -> None: ... + def filterMode(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractRayCaster.FilterMode: ... + def hits(self) -> typing.List: ... + def layers(self) -> typing.List: ... + def removeLayer(self, layer:PySide2.Qt3DRender.Qt3DRender.QLayer) -> None: ... + def runMode(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractRayCaster.RunMode: ... + def setFilterMode(self, filterMode:PySide2.Qt3DRender.Qt3DRender.QAbstractRayCaster.FilterMode) -> None: ... + def setRunMode(self, runMode:PySide2.Qt3DRender.Qt3DRender.QAbstractRayCaster.RunMode) -> None: ... + + class QAbstractTexture(PySide2.Qt3DCore.QNode): + CompareNone : Qt3DRender.QAbstractTexture = ... # 0x0 + NoFormat : Qt3DRender.QAbstractTexture = ... # 0x0 + NoHandle : Qt3DRender.QAbstractTexture = ... # 0x0 + None_ : Qt3DRender.QAbstractTexture = ... # 0x0 + TargetAutomatic : Qt3DRender.QAbstractTexture = ... # 0x0 + Automatic : Qt3DRender.QAbstractTexture = ... # 0x1 + Loading : Qt3DRender.QAbstractTexture = ... # 0x1 + OpenGLTextureId : Qt3DRender.QAbstractTexture = ... # 0x1 + Ready : Qt3DRender.QAbstractTexture = ... # 0x2 + Error : Qt3DRender.QAbstractTexture = ... # 0x3 + CompareNever : Qt3DRender.QAbstractTexture = ... # 0x200 + CompareLess : Qt3DRender.QAbstractTexture = ... # 0x201 + CompareEqual : Qt3DRender.QAbstractTexture = ... # 0x202 + CompareLessEqual : Qt3DRender.QAbstractTexture = ... # 0x203 + CompareGreater : Qt3DRender.QAbstractTexture = ... # 0x204 + CommpareNotEqual : Qt3DRender.QAbstractTexture = ... # 0x205 + CompareGreaterEqual : Qt3DRender.QAbstractTexture = ... # 0x206 + CompareAlways : Qt3DRender.QAbstractTexture = ... # 0x207 + Target1D : Qt3DRender.QAbstractTexture = ... # 0xde0 + Target2D : Qt3DRender.QAbstractTexture = ... # 0xde1 + DepthFormat : Qt3DRender.QAbstractTexture = ... # 0x1902 + AlphaFormat : Qt3DRender.QAbstractTexture = ... # 0x1906 + RGBFormat : Qt3DRender.QAbstractTexture = ... # 0x1907 + RGBAFormat : Qt3DRender.QAbstractTexture = ... # 0x1908 + LuminanceFormat : Qt3DRender.QAbstractTexture = ... # 0x1909 + LuminanceAlphaFormat : Qt3DRender.QAbstractTexture = ... # 0x190a + Nearest : Qt3DRender.QAbstractTexture = ... # 0x2600 + Linear : Qt3DRender.QAbstractTexture = ... # 0x2601 + NearestMipMapNearest : Qt3DRender.QAbstractTexture = ... # 0x2700 + LinearMipMapNearest : Qt3DRender.QAbstractTexture = ... # 0x2701 + NearestMipMapLinear : Qt3DRender.QAbstractTexture = ... # 0x2702 + LinearMipMapLinear : Qt3DRender.QAbstractTexture = ... # 0x2703 + RG3B2 : Qt3DRender.QAbstractTexture = ... # 0x2a10 + RGB8_UNorm : Qt3DRender.QAbstractTexture = ... # 0x8051 + RGB16_UNorm : Qt3DRender.QAbstractTexture = ... # 0x8054 + RGBA4 : Qt3DRender.QAbstractTexture = ... # 0x8056 + RGB5A1 : Qt3DRender.QAbstractTexture = ... # 0x8057 + RGBA8_UNorm : Qt3DRender.QAbstractTexture = ... # 0x8058 + RGB10A2 : Qt3DRender.QAbstractTexture = ... # 0x8059 + RGBA16_UNorm : Qt3DRender.QAbstractTexture = ... # 0x805b + Target3D : Qt3DRender.QAbstractTexture = ... # 0x806f + D16 : Qt3DRender.QAbstractTexture = ... # 0x81a5 + D24 : Qt3DRender.QAbstractTexture = ... # 0x81a6 + D32 : Qt3DRender.QAbstractTexture = ... # 0x81a7 + R8_UNorm : Qt3DRender.QAbstractTexture = ... # 0x8229 + R16_UNorm : Qt3DRender.QAbstractTexture = ... # 0x822a + RG8_UNorm : Qt3DRender.QAbstractTexture = ... # 0x822b + RG16_UNorm : Qt3DRender.QAbstractTexture = ... # 0x822c + R16F : Qt3DRender.QAbstractTexture = ... # 0x822d + R32F : Qt3DRender.QAbstractTexture = ... # 0x822e + RG16F : Qt3DRender.QAbstractTexture = ... # 0x822f + RG32F : Qt3DRender.QAbstractTexture = ... # 0x8230 + R8I : Qt3DRender.QAbstractTexture = ... # 0x8231 + R8U : Qt3DRender.QAbstractTexture = ... # 0x8232 + R16I : Qt3DRender.QAbstractTexture = ... # 0x8233 + R16U : Qt3DRender.QAbstractTexture = ... # 0x8234 + R32I : Qt3DRender.QAbstractTexture = ... # 0x8235 + R32U : Qt3DRender.QAbstractTexture = ... # 0x8236 + RG8I : Qt3DRender.QAbstractTexture = ... # 0x8237 + RG8U : Qt3DRender.QAbstractTexture = ... # 0x8238 + RG16I : Qt3DRender.QAbstractTexture = ... # 0x8239 + RG16U : Qt3DRender.QAbstractTexture = ... # 0x823a + RG32I : Qt3DRender.QAbstractTexture = ... # 0x823b + RG32U : Qt3DRender.QAbstractTexture = ... # 0x823c + RGB_DXT1 : Qt3DRender.QAbstractTexture = ... # 0x83f0 + RGBA_DXT1 : Qt3DRender.QAbstractTexture = ... # 0x83f1 + RGBA_DXT3 : Qt3DRender.QAbstractTexture = ... # 0x83f2 + RGBA_DXT5 : Qt3DRender.QAbstractTexture = ... # 0x83f3 + TargetRectangle : Qt3DRender.QAbstractTexture = ... # 0x84f5 + TargetCubeMap : Qt3DRender.QAbstractTexture = ... # 0x8513 + CubeMapPositiveX : Qt3DRender.QAbstractTexture = ... # 0x8515 + CubeMapNegativeX : Qt3DRender.QAbstractTexture = ... # 0x8516 + CubeMapPositiveY : Qt3DRender.QAbstractTexture = ... # 0x8517 + CubeMapNegativeY : Qt3DRender.QAbstractTexture = ... # 0x8518 + CubeMapPositiveZ : Qt3DRender.QAbstractTexture = ... # 0x8519 + CubeMapNegativeZ : Qt3DRender.QAbstractTexture = ... # 0x851a + AllFaces : Qt3DRender.QAbstractTexture = ... # 0x851b + RGBA32F : Qt3DRender.QAbstractTexture = ... # 0x8814 + RGB32F : Qt3DRender.QAbstractTexture = ... # 0x8815 + RGBA16F : Qt3DRender.QAbstractTexture = ... # 0x881a + RGB16F : Qt3DRender.QAbstractTexture = ... # 0x881b + CompareRefToTexture : Qt3DRender.QAbstractTexture = ... # 0x884e + D24S8 : Qt3DRender.QAbstractTexture = ... # 0x88f0 + Target1DArray : Qt3DRender.QAbstractTexture = ... # 0x8c18 + Target2DArray : Qt3DRender.QAbstractTexture = ... # 0x8c1a + TargetBuffer : Qt3DRender.QAbstractTexture = ... # 0x8c2a + RG11B10F : Qt3DRender.QAbstractTexture = ... # 0x8c3a + RGB9E5 : Qt3DRender.QAbstractTexture = ... # 0x8c3d + SRGB8 : Qt3DRender.QAbstractTexture = ... # 0x8c41 + SRGB8_Alpha8 : Qt3DRender.QAbstractTexture = ... # 0x8c43 + SRGB_DXT1 : Qt3DRender.QAbstractTexture = ... # 0x8c4c + SRGB_Alpha_DXT1 : Qt3DRender.QAbstractTexture = ... # 0x8c4d + SRGB_Alpha_DXT3 : Qt3DRender.QAbstractTexture = ... # 0x8c4e + SRGB_Alpha_DXT5 : Qt3DRender.QAbstractTexture = ... # 0x8c4f + D32F : Qt3DRender.QAbstractTexture = ... # 0x8cac + D32FS8X24 : Qt3DRender.QAbstractTexture = ... # 0x8cad + R5G6B5 : Qt3DRender.QAbstractTexture = ... # 0x8d62 + RGB8_ETC1 : Qt3DRender.QAbstractTexture = ... # 0x8d64 + RGBA32U : Qt3DRender.QAbstractTexture = ... # 0x8d70 + RGB32U : Qt3DRender.QAbstractTexture = ... # 0x8d71 + RGBA16U : Qt3DRender.QAbstractTexture = ... # 0x8d76 + RGB16U : Qt3DRender.QAbstractTexture = ... # 0x8d77 + RGBA8U : Qt3DRender.QAbstractTexture = ... # 0x8d7c + RGB8U : Qt3DRender.QAbstractTexture = ... # 0x8d7d + RGBA32I : Qt3DRender.QAbstractTexture = ... # 0x8d82 + RGB32I : Qt3DRender.QAbstractTexture = ... # 0x8d83 + RGBA16I : Qt3DRender.QAbstractTexture = ... # 0x8d88 + RGB16I : Qt3DRender.QAbstractTexture = ... # 0x8d89 + RGBA8I : Qt3DRender.QAbstractTexture = ... # 0x8d8e + RGB8I : Qt3DRender.QAbstractTexture = ... # 0x8d8f + R_ATI1N_UNorm : Qt3DRender.QAbstractTexture = ... # 0x8dbb + R_ATI1N_SNorm : Qt3DRender.QAbstractTexture = ... # 0x8dbc + RG_ATI2N_UNorm : Qt3DRender.QAbstractTexture = ... # 0x8dbd + RG_ATI2N_SNorm : Qt3DRender.QAbstractTexture = ... # 0x8dbe + RGB_BP_UNorm : Qt3DRender.QAbstractTexture = ... # 0x8e8c + SRGB_BP_UNorm : Qt3DRender.QAbstractTexture = ... # 0x8e8d + RGB_BP_SIGNED_FLOAT : Qt3DRender.QAbstractTexture = ... # 0x8e8e + RGB_BP_UNSIGNED_FLOAT : Qt3DRender.QAbstractTexture = ... # 0x8e8f + R8_SNorm : Qt3DRender.QAbstractTexture = ... # 0x8f94 + RG8_SNorm : Qt3DRender.QAbstractTexture = ... # 0x8f95 + RGB8_SNorm : Qt3DRender.QAbstractTexture = ... # 0x8f96 + RGBA8_SNorm : Qt3DRender.QAbstractTexture = ... # 0x8f97 + R16_SNorm : Qt3DRender.QAbstractTexture = ... # 0x8f98 + RG16_SNorm : Qt3DRender.QAbstractTexture = ... # 0x8f99 + RGB16_SNorm : Qt3DRender.QAbstractTexture = ... # 0x8f9a + RGBA16_SNorm : Qt3DRender.QAbstractTexture = ... # 0x8f9b + TargetCubeMapArray : Qt3DRender.QAbstractTexture = ... # 0x9009 + RGB10A2U : Qt3DRender.QAbstractTexture = ... # 0x906f + Target2DMultisample : Qt3DRender.QAbstractTexture = ... # 0x9100 + Target2DMultisampleArray : Qt3DRender.QAbstractTexture = ... # 0x9102 + R11_EAC_UNorm : Qt3DRender.QAbstractTexture = ... # 0x9270 + R11_EAC_SNorm : Qt3DRender.QAbstractTexture = ... # 0x9271 + RG11_EAC_UNorm : Qt3DRender.QAbstractTexture = ... # 0x9272 + RG11_EAC_SNorm : Qt3DRender.QAbstractTexture = ... # 0x9273 + RGB8_ETC2 : Qt3DRender.QAbstractTexture = ... # 0x9274 + SRGB8_ETC2 : Qt3DRender.QAbstractTexture = ... # 0x9275 + RGB8_PunchThrough_Alpha1_ETC2: Qt3DRender.QAbstractTexture = ... # 0x9276 + SRGB8_PunchThrough_Alpha1_ETC2: Qt3DRender.QAbstractTexture = ... # 0x9277 + RGBA8_ETC2_EAC : Qt3DRender.QAbstractTexture = ... # 0x9278 + SRGB8_Alpha8_ETC2_EAC : Qt3DRender.QAbstractTexture = ... # 0x9279 + + class ComparisonFunction(object): + CompareNever : Qt3DRender.QAbstractTexture.ComparisonFunction = ... # 0x200 + CompareLess : Qt3DRender.QAbstractTexture.ComparisonFunction = ... # 0x201 + CompareEqual : Qt3DRender.QAbstractTexture.ComparisonFunction = ... # 0x202 + CompareLessEqual : Qt3DRender.QAbstractTexture.ComparisonFunction = ... # 0x203 + CompareGreater : Qt3DRender.QAbstractTexture.ComparisonFunction = ... # 0x204 + CommpareNotEqual : Qt3DRender.QAbstractTexture.ComparisonFunction = ... # 0x205 + CompareGreaterEqual : Qt3DRender.QAbstractTexture.ComparisonFunction = ... # 0x206 + CompareAlways : Qt3DRender.QAbstractTexture.ComparisonFunction = ... # 0x207 + + class ComparisonMode(object): + CompareNone : Qt3DRender.QAbstractTexture.ComparisonMode = ... # 0x0 + CompareRefToTexture : Qt3DRender.QAbstractTexture.ComparisonMode = ... # 0x884e + + class CubeMapFace(object): + CubeMapPositiveX : Qt3DRender.QAbstractTexture.CubeMapFace = ... # 0x8515 + CubeMapNegativeX : Qt3DRender.QAbstractTexture.CubeMapFace = ... # 0x8516 + CubeMapPositiveY : Qt3DRender.QAbstractTexture.CubeMapFace = ... # 0x8517 + CubeMapNegativeY : Qt3DRender.QAbstractTexture.CubeMapFace = ... # 0x8518 + CubeMapPositiveZ : Qt3DRender.QAbstractTexture.CubeMapFace = ... # 0x8519 + CubeMapNegativeZ : Qt3DRender.QAbstractTexture.CubeMapFace = ... # 0x851a + AllFaces : Qt3DRender.QAbstractTexture.CubeMapFace = ... # 0x851b + + class Filter(object): + Nearest : Qt3DRender.QAbstractTexture.Filter = ... # 0x2600 + Linear : Qt3DRender.QAbstractTexture.Filter = ... # 0x2601 + NearestMipMapNearest : Qt3DRender.QAbstractTexture.Filter = ... # 0x2700 + LinearMipMapNearest : Qt3DRender.QAbstractTexture.Filter = ... # 0x2701 + NearestMipMapLinear : Qt3DRender.QAbstractTexture.Filter = ... # 0x2702 + LinearMipMapLinear : Qt3DRender.QAbstractTexture.Filter = ... # 0x2703 + + class HandleType(object): + NoHandle : Qt3DRender.QAbstractTexture.HandleType = ... # 0x0 + OpenGLTextureId : Qt3DRender.QAbstractTexture.HandleType = ... # 0x1 + + class Status(object): + None_ : Qt3DRender.QAbstractTexture.Status = ... # 0x0 + Loading : Qt3DRender.QAbstractTexture.Status = ... # 0x1 + Ready : Qt3DRender.QAbstractTexture.Status = ... # 0x2 + Error : Qt3DRender.QAbstractTexture.Status = ... # 0x3 + + class Target(object): + TargetAutomatic : Qt3DRender.QAbstractTexture.Target = ... # 0x0 + Target1D : Qt3DRender.QAbstractTexture.Target = ... # 0xde0 + Target2D : Qt3DRender.QAbstractTexture.Target = ... # 0xde1 + Target3D : Qt3DRender.QAbstractTexture.Target = ... # 0x806f + TargetRectangle : Qt3DRender.QAbstractTexture.Target = ... # 0x84f5 + TargetCubeMap : Qt3DRender.QAbstractTexture.Target = ... # 0x8513 + Target1DArray : Qt3DRender.QAbstractTexture.Target = ... # 0x8c18 + Target2DArray : Qt3DRender.QAbstractTexture.Target = ... # 0x8c1a + TargetBuffer : Qt3DRender.QAbstractTexture.Target = ... # 0x8c2a + TargetCubeMapArray : Qt3DRender.QAbstractTexture.Target = ... # 0x9009 + Target2DMultisample : Qt3DRender.QAbstractTexture.Target = ... # 0x9100 + Target2DMultisampleArray : Qt3DRender.QAbstractTexture.Target = ... # 0x9102 + + class TextureFormat(object): + NoFormat : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x0 + Automatic : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x1 + DepthFormat : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x1902 + AlphaFormat : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x1906 + RGBFormat : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x1907 + RGBAFormat : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x1908 + LuminanceFormat : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x1909 + LuminanceAlphaFormat : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x190a + RG3B2 : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x2a10 + RGB8_UNorm : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8051 + RGB16_UNorm : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8054 + RGBA4 : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8056 + RGB5A1 : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8057 + RGBA8_UNorm : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8058 + RGB10A2 : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8059 + RGBA16_UNorm : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x805b + D16 : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x81a5 + D24 : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x81a6 + D32 : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x81a7 + R8_UNorm : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8229 + R16_UNorm : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x822a + RG8_UNorm : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x822b + RG16_UNorm : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x822c + R16F : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x822d + R32F : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x822e + RG16F : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x822f + RG32F : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8230 + R8I : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8231 + R8U : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8232 + R16I : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8233 + R16U : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8234 + R32I : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8235 + R32U : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8236 + RG8I : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8237 + RG8U : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8238 + RG16I : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8239 + RG16U : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x823a + RG32I : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x823b + RG32U : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x823c + RGB_DXT1 : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x83f0 + RGBA_DXT1 : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x83f1 + RGBA_DXT3 : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x83f2 + RGBA_DXT5 : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x83f3 + RGBA32F : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8814 + RGB32F : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8815 + RGBA16F : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x881a + RGB16F : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x881b + D24S8 : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x88f0 + RG11B10F : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8c3a + RGB9E5 : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8c3d + SRGB8 : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8c41 + SRGB8_Alpha8 : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8c43 + SRGB_DXT1 : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8c4c + SRGB_Alpha_DXT1 : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8c4d + SRGB_Alpha_DXT3 : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8c4e + SRGB_Alpha_DXT5 : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8c4f + D32F : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8cac + D32FS8X24 : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8cad + R5G6B5 : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8d62 + RGB8_ETC1 : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8d64 + RGBA32U : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8d70 + RGB32U : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8d71 + RGBA16U : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8d76 + RGB16U : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8d77 + RGBA8U : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8d7c + RGB8U : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8d7d + RGBA32I : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8d82 + RGB32I : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8d83 + RGBA16I : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8d88 + RGB16I : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8d89 + RGBA8I : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8d8e + RGB8I : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8d8f + R_ATI1N_UNorm : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8dbb + R_ATI1N_SNorm : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8dbc + RG_ATI2N_UNorm : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8dbd + RG_ATI2N_SNorm : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8dbe + RGB_BP_UNorm : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8e8c + SRGB_BP_UNorm : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8e8d + RGB_BP_SIGNED_FLOAT : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8e8e + RGB_BP_UNSIGNED_FLOAT : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8e8f + R8_SNorm : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8f94 + RG8_SNorm : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8f95 + RGB8_SNorm : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8f96 + RGBA8_SNorm : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8f97 + R16_SNorm : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8f98 + RG16_SNorm : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8f99 + RGB16_SNorm : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8f9a + RGBA16_SNorm : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x8f9b + RGB10A2U : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x906f + R11_EAC_UNorm : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x9270 + R11_EAC_SNorm : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x9271 + RG11_EAC_UNorm : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x9272 + RG11_EAC_SNorm : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x9273 + RGB8_ETC2 : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x9274 + SRGB8_ETC2 : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x9275 + RGB8_PunchThrough_Alpha1_ETC2: Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x9276 + SRGB8_PunchThrough_Alpha1_ETC2: Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x9277 + RGBA8_ETC2_EAC : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x9278 + SRGB8_Alpha8_ETC2_EAC : Qt3DRender.QAbstractTexture.TextureFormat = ... # 0x9279 + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + @typing.overload + def __init__(self, target:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.Target, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def addTextureImage(self, textureImage:PySide2.Qt3DRender.Qt3DRender.QAbstractTextureImage) -> None: ... + def comparisonFunction(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.ComparisonFunction: ... + def comparisonMode(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.ComparisonMode: ... + def depth(self) -> int: ... + def format(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.TextureFormat: ... + def generateMipMaps(self) -> bool: ... + def handle(self) -> typing.Any: ... + def handleType(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.HandleType: ... + def height(self) -> int: ... + def layers(self) -> int: ... + def magnificationFilter(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.Filter: ... + def maximumAnisotropy(self) -> float: ... + def minificationFilter(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.Filter: ... + def removeTextureImage(self, textureImage:PySide2.Qt3DRender.Qt3DRender.QAbstractTextureImage) -> None: ... + def samples(self) -> int: ... + def setComparisonFunction(self, function:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.ComparisonFunction) -> None: ... + def setComparisonMode(self, mode:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.ComparisonMode) -> None: ... + def setDepth(self, depth:int) -> None: ... + def setFormat(self, format:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.TextureFormat) -> None: ... + def setGenerateMipMaps(self, gen:bool) -> None: ... + def setHandle(self, handle:typing.Any) -> None: ... + def setHandleType(self, type:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.HandleType) -> None: ... + def setHeight(self, height:int) -> None: ... + def setLayers(self, layers:int) -> None: ... + def setMagnificationFilter(self, f:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.Filter) -> None: ... + def setMaximumAnisotropy(self, anisotropy:float) -> None: ... + def setMinificationFilter(self, f:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.Filter) -> None: ... + def setSamples(self, samples:int) -> None: ... + def setSize(self, width:int, height:int=..., depth:int=...) -> None: ... + def setStatus(self, status:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.Status) -> None: ... + def setWidth(self, width:int) -> None: ... + def setWrapMode(self, wrapMode:PySide2.Qt3DRender.Qt3DRender.QTextureWrapMode) -> None: ... + def status(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.Status: ... + def target(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.Target: ... + def textureImages(self) -> typing.List: ... + def width(self) -> int: ... + def wrapMode(self) -> PySide2.Qt3DRender.Qt3DRender.QTextureWrapMode: ... + + class QAbstractTextureImage(PySide2.Qt3DCore.QNode): + def face(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.CubeMapFace: ... + def layer(self) -> int: ... + def mipLevel(self) -> int: ... + def notifyDataGeneratorChanged(self) -> None: ... + def setFace(self, face:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.CubeMapFace) -> None: ... + def setLayer(self, layer:int) -> None: ... + def setMipLevel(self, level:int) -> None: ... + + class QAlphaCoverage(PySide2.Qt3DRender.QRenderState): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + + class QAlphaTest(PySide2.Qt3DRender.QRenderState): + Never : Qt3DRender.QAlphaTest = ... # 0x200 + Less : Qt3DRender.QAlphaTest = ... # 0x201 + Equal : Qt3DRender.QAlphaTest = ... # 0x202 + LessOrEqual : Qt3DRender.QAlphaTest = ... # 0x203 + Greater : Qt3DRender.QAlphaTest = ... # 0x204 + NotEqual : Qt3DRender.QAlphaTest = ... # 0x205 + GreaterOrEqual : Qt3DRender.QAlphaTest = ... # 0x206 + Always : Qt3DRender.QAlphaTest = ... # 0x207 + + class AlphaFunction(object): + Never : Qt3DRender.QAlphaTest.AlphaFunction = ... # 0x200 + Less : Qt3DRender.QAlphaTest.AlphaFunction = ... # 0x201 + Equal : Qt3DRender.QAlphaTest.AlphaFunction = ... # 0x202 + LessOrEqual : Qt3DRender.QAlphaTest.AlphaFunction = ... # 0x203 + Greater : Qt3DRender.QAlphaTest.AlphaFunction = ... # 0x204 + NotEqual : Qt3DRender.QAlphaTest.AlphaFunction = ... # 0x205 + GreaterOrEqual : Qt3DRender.QAlphaTest.AlphaFunction = ... # 0x206 + Always : Qt3DRender.QAlphaTest.AlphaFunction = ... # 0x207 + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def alphaFunction(self) -> PySide2.Qt3DRender.Qt3DRender.QAlphaTest.AlphaFunction: ... + def referenceValue(self) -> float: ... + def setAlphaFunction(self, alphaFunction:PySide2.Qt3DRender.Qt3DRender.QAlphaTest.AlphaFunction) -> None: ... + def setReferenceValue(self, referenceValue:float) -> None: ... + + class QAttribute(PySide2.Qt3DCore.QNode): + Byte : Qt3DRender.QAttribute = ... # 0x0 + VertexAttribute : Qt3DRender.QAttribute = ... # 0x0 + IndexAttribute : Qt3DRender.QAttribute = ... # 0x1 + UnsignedByte : Qt3DRender.QAttribute = ... # 0x1 + DrawIndirectAttribute : Qt3DRender.QAttribute = ... # 0x2 + Short : Qt3DRender.QAttribute = ... # 0x2 + UnsignedShort : Qt3DRender.QAttribute = ... # 0x3 + Int : Qt3DRender.QAttribute = ... # 0x4 + UnsignedInt : Qt3DRender.QAttribute = ... # 0x5 + HalfFloat : Qt3DRender.QAttribute = ... # 0x6 + Float : Qt3DRender.QAttribute = ... # 0x7 + Double : Qt3DRender.QAttribute = ... # 0x8 + + class AttributeType(object): + VertexAttribute : Qt3DRender.QAttribute.AttributeType = ... # 0x0 + IndexAttribute : Qt3DRender.QAttribute.AttributeType = ... # 0x1 + DrawIndirectAttribute : Qt3DRender.QAttribute.AttributeType = ... # 0x2 + + class VertexBaseType(object): + Byte : Qt3DRender.QAttribute.VertexBaseType = ... # 0x0 + UnsignedByte : Qt3DRender.QAttribute.VertexBaseType = ... # 0x1 + Short : Qt3DRender.QAttribute.VertexBaseType = ... # 0x2 + UnsignedShort : Qt3DRender.QAttribute.VertexBaseType = ... # 0x3 + Int : Qt3DRender.QAttribute.VertexBaseType = ... # 0x4 + UnsignedInt : Qt3DRender.QAttribute.VertexBaseType = ... # 0x5 + HalfFloat : Qt3DRender.QAttribute.VertexBaseType = ... # 0x6 + Float : Qt3DRender.QAttribute.VertexBaseType = ... # 0x7 + Double : Qt3DRender.QAttribute.VertexBaseType = ... # 0x8 + + @typing.overload + def __init__(self, buf:PySide2.Qt3DRender.Qt3DRender.QBuffer, name:str, vertexBaseType:PySide2.Qt3DRender.Qt3DRender.QAttribute.VertexBaseType, vertexSize:int, count:int, offset:int=..., stride:int=..., parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + @typing.overload + def __init__(self, buf:PySide2.Qt3DRender.Qt3DRender.QBuffer, vertexBaseType:PySide2.Qt3DRender.Qt3DRender.QAttribute.VertexBaseType, vertexSize:int, count:int, offset:int=..., stride:int=..., parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def attributeType(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute.AttributeType: ... + def buffer(self) -> PySide2.Qt3DRender.Qt3DRender.QBuffer: ... + def byteOffset(self) -> int: ... + def byteStride(self) -> int: ... + def count(self) -> int: ... + @staticmethod + def defaultColorAttributeName() -> str: ... + @staticmethod + def defaultJointIndicesAttributeName() -> str: ... + @staticmethod + def defaultJointWeightsAttributeName() -> str: ... + @staticmethod + def defaultNormalAttributeName() -> str: ... + @staticmethod + def defaultPositionAttributeName() -> str: ... + @staticmethod + def defaultTangentAttributeName() -> str: ... + @staticmethod + def defaultTextureCoordinate1AttributeName() -> str: ... + @staticmethod + def defaultTextureCoordinate2AttributeName() -> str: ... + @staticmethod + def defaultTextureCoordinateAttributeName() -> str: ... + def divisor(self) -> int: ... + def name(self) -> str: ... + def setAttributeType(self, attributeType:PySide2.Qt3DRender.Qt3DRender.QAttribute.AttributeType) -> None: ... + def setBuffer(self, buffer:PySide2.Qt3DRender.Qt3DRender.QBuffer) -> None: ... + def setByteOffset(self, byteOffset:int) -> None: ... + def setByteStride(self, byteStride:int) -> None: ... + def setCount(self, count:int) -> None: ... + def setDataSize(self, size:int) -> None: ... + def setDataType(self, type:PySide2.Qt3DRender.Qt3DRender.QAttribute.VertexBaseType) -> None: ... + def setDivisor(self, divisor:int) -> None: ... + def setName(self, name:str) -> None: ... + def setVertexBaseType(self, type:PySide2.Qt3DRender.Qt3DRender.QAttribute.VertexBaseType) -> None: ... + def setVertexSize(self, size:int) -> None: ... + def vertexBaseType(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute.VertexBaseType: ... + def vertexSize(self) -> int: ... + + class QBlendEquation(PySide2.Qt3DRender.QRenderState): + Add : Qt3DRender.QBlendEquation = ... # 0x8006 + Min : Qt3DRender.QBlendEquation = ... # 0x8007 + Max : Qt3DRender.QBlendEquation = ... # 0x8008 + Subtract : Qt3DRender.QBlendEquation = ... # 0x800a + ReverseSubtract : Qt3DRender.QBlendEquation = ... # 0x800b + + class BlendFunction(object): + Add : Qt3DRender.QBlendEquation.BlendFunction = ... # 0x8006 + Min : Qt3DRender.QBlendEquation.BlendFunction = ... # 0x8007 + Max : Qt3DRender.QBlendEquation.BlendFunction = ... # 0x8008 + Subtract : Qt3DRender.QBlendEquation.BlendFunction = ... # 0x800a + ReverseSubtract : Qt3DRender.QBlendEquation.BlendFunction = ... # 0x800b + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def blendFunction(self) -> PySide2.Qt3DRender.Qt3DRender.QBlendEquation.BlendFunction: ... + def setBlendFunction(self, blendFunction:PySide2.Qt3DRender.Qt3DRender.QBlendEquation.BlendFunction) -> None: ... + + class QBlendEquationArguments(PySide2.Qt3DRender.QRenderState): + Zero : Qt3DRender.QBlendEquationArguments = ... # 0x0 + One : Qt3DRender.QBlendEquationArguments = ... # 0x1 + SourceColor : Qt3DRender.QBlendEquationArguments = ... # 0x300 + OneMinusSourceColor : Qt3DRender.QBlendEquationArguments = ... # 0x301 + SourceAlpha : Qt3DRender.QBlendEquationArguments = ... # 0x302 + OneMinusSourceAlpha : Qt3DRender.QBlendEquationArguments = ... # 0x303 + Source1Alpha : Qt3DRender.QBlendEquationArguments = ... # 0x303 + DestinationAlpha : Qt3DRender.QBlendEquationArguments = ... # 0x304 + Source1Color : Qt3DRender.QBlendEquationArguments = ... # 0x304 + OneMinusDestinationAlpha : Qt3DRender.QBlendEquationArguments = ... # 0x305 + DestinationColor : Qt3DRender.QBlendEquationArguments = ... # 0x306 + OneMinusDestinationColor : Qt3DRender.QBlendEquationArguments = ... # 0x307 + SourceAlphaSaturate : Qt3DRender.QBlendEquationArguments = ... # 0x308 + ConstantColor : Qt3DRender.QBlendEquationArguments = ... # 0x8001 + OneMinusConstantColor : Qt3DRender.QBlendEquationArguments = ... # 0x8002 + ConstantAlpha : Qt3DRender.QBlendEquationArguments = ... # 0x8003 + OneMinusConstantAlpha : Qt3DRender.QBlendEquationArguments = ... # 0x8004 + OneMinusSource1Alpha : Qt3DRender.QBlendEquationArguments = ... # 0x8005 + OneMinusSource1Color : Qt3DRender.QBlendEquationArguments = ... # 0x8006 + OneMinusSource1Color0 : Qt3DRender.QBlendEquationArguments = ... # 0x8006 + + class Blending(object): + Zero : Qt3DRender.QBlendEquationArguments.Blending = ... # 0x0 + One : Qt3DRender.QBlendEquationArguments.Blending = ... # 0x1 + SourceColor : Qt3DRender.QBlendEquationArguments.Blending = ... # 0x300 + OneMinusSourceColor : Qt3DRender.QBlendEquationArguments.Blending = ... # 0x301 + SourceAlpha : Qt3DRender.QBlendEquationArguments.Blending = ... # 0x302 + OneMinusSourceAlpha : Qt3DRender.QBlendEquationArguments.Blending = ... # 0x303 + Source1Alpha : Qt3DRender.QBlendEquationArguments.Blending = ... # 0x303 + DestinationAlpha : Qt3DRender.QBlendEquationArguments.Blending = ... # 0x304 + Source1Color : Qt3DRender.QBlendEquationArguments.Blending = ... # 0x304 + OneMinusDestinationAlpha : Qt3DRender.QBlendEquationArguments.Blending = ... # 0x305 + DestinationColor : Qt3DRender.QBlendEquationArguments.Blending = ... # 0x306 + OneMinusDestinationColor : Qt3DRender.QBlendEquationArguments.Blending = ... # 0x307 + SourceAlphaSaturate : Qt3DRender.QBlendEquationArguments.Blending = ... # 0x308 + ConstantColor : Qt3DRender.QBlendEquationArguments.Blending = ... # 0x8001 + OneMinusConstantColor : Qt3DRender.QBlendEquationArguments.Blending = ... # 0x8002 + ConstantAlpha : Qt3DRender.QBlendEquationArguments.Blending = ... # 0x8003 + OneMinusConstantAlpha : Qt3DRender.QBlendEquationArguments.Blending = ... # 0x8004 + OneMinusSource1Alpha : Qt3DRender.QBlendEquationArguments.Blending = ... # 0x8005 + OneMinusSource1Color : Qt3DRender.QBlendEquationArguments.Blending = ... # 0x8006 + OneMinusSource1Color0 : Qt3DRender.QBlendEquationArguments.Blending = ... # 0x8006 + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def bufferIndex(self) -> int: ... + def destinationAlpha(self) -> PySide2.Qt3DRender.Qt3DRender.QBlendEquationArguments.Blending: ... + def destinationRgb(self) -> PySide2.Qt3DRender.Qt3DRender.QBlendEquationArguments.Blending: ... + def setBufferIndex(self, index:int) -> None: ... + def setDestinationAlpha(self, destinationAlpha:PySide2.Qt3DRender.Qt3DRender.QBlendEquationArguments.Blending) -> None: ... + def setDestinationRgb(self, destinationRgb:PySide2.Qt3DRender.Qt3DRender.QBlendEquationArguments.Blending) -> None: ... + def setDestinationRgba(self, destinationRgba:PySide2.Qt3DRender.Qt3DRender.QBlendEquationArguments.Blending) -> None: ... + def setSourceAlpha(self, sourceAlpha:PySide2.Qt3DRender.Qt3DRender.QBlendEquationArguments.Blending) -> None: ... + def setSourceRgb(self, sourceRgb:PySide2.Qt3DRender.Qt3DRender.QBlendEquationArguments.Blending) -> None: ... + def setSourceRgba(self, sourceRgba:PySide2.Qt3DRender.Qt3DRender.QBlendEquationArguments.Blending) -> None: ... + def sourceAlpha(self) -> PySide2.Qt3DRender.Qt3DRender.QBlendEquationArguments.Blending: ... + def sourceRgb(self) -> PySide2.Qt3DRender.Qt3DRender.QBlendEquationArguments.Blending: ... + + class QBlitFramebuffer(PySide2.Qt3DRender.QFrameGraphNode): + Nearest : Qt3DRender.QBlitFramebuffer = ... # 0x0 + Linear : Qt3DRender.QBlitFramebuffer = ... # 0x1 + + class InterpolationMethod(object): + Nearest : Qt3DRender.QBlitFramebuffer.InterpolationMethod = ... # 0x0 + Linear : Qt3DRender.QBlitFramebuffer.InterpolationMethod = ... # 0x1 + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def destination(self) -> PySide2.Qt3DRender.Qt3DRender.QRenderTarget: ... + def destinationAttachmentPoint(self) -> PySide2.Qt3DRender.Qt3DRender.QRenderTargetOutput.AttachmentPoint: ... + def destinationRect(self) -> PySide2.QtCore.QRectF: ... + def interpolationMethod(self) -> PySide2.Qt3DRender.Qt3DRender.QBlitFramebuffer.InterpolationMethod: ... + def setDestination(self, destination:PySide2.Qt3DRender.Qt3DRender.QRenderTarget) -> None: ... + def setDestinationAttachmentPoint(self, destinationAttachmentPoint:PySide2.Qt3DRender.Qt3DRender.QRenderTargetOutput.AttachmentPoint) -> None: ... + def setDestinationRect(self, destinationRect:PySide2.QtCore.QRectF) -> None: ... + def setInterpolationMethod(self, interpolationMethod:PySide2.Qt3DRender.Qt3DRender.QBlitFramebuffer.InterpolationMethod) -> None: ... + def setSource(self, source:PySide2.Qt3DRender.Qt3DRender.QRenderTarget) -> None: ... + def setSourceAttachmentPoint(self, sourceAttachmentPoint:PySide2.Qt3DRender.Qt3DRender.QRenderTargetOutput.AttachmentPoint) -> None: ... + def setSourceRect(self, sourceRect:PySide2.QtCore.QRectF) -> None: ... + def source(self) -> PySide2.Qt3DRender.Qt3DRender.QRenderTarget: ... + def sourceAttachmentPoint(self) -> PySide2.Qt3DRender.Qt3DRender.QRenderTargetOutput.AttachmentPoint: ... + def sourceRect(self) -> PySide2.QtCore.QRectF: ... + + class QBuffer(PySide2.Qt3DCore.QNode): + Write : Qt3DRender.QBuffer = ... # 0x1 + Read : Qt3DRender.QBuffer = ... # 0x2 + ReadWrite : Qt3DRender.QBuffer = ... # 0x3 + VertexBuffer : Qt3DRender.QBuffer = ... # 0x8892 + IndexBuffer : Qt3DRender.QBuffer = ... # 0x8893 + StreamDraw : Qt3DRender.QBuffer = ... # 0x88e0 + StreamRead : Qt3DRender.QBuffer = ... # 0x88e1 + StreamCopy : Qt3DRender.QBuffer = ... # 0x88e2 + StaticDraw : Qt3DRender.QBuffer = ... # 0x88e4 + StaticRead : Qt3DRender.QBuffer = ... # 0x88e5 + StaticCopy : Qt3DRender.QBuffer = ... # 0x88e6 + DynamicDraw : Qt3DRender.QBuffer = ... # 0x88e8 + DynamicRead : Qt3DRender.QBuffer = ... # 0x88e9 + DynamicCopy : Qt3DRender.QBuffer = ... # 0x88ea + PixelPackBuffer : Qt3DRender.QBuffer = ... # 0x88eb + PixelUnpackBuffer : Qt3DRender.QBuffer = ... # 0x88ec + UniformBuffer : Qt3DRender.QBuffer = ... # 0x8a11 + DrawIndirectBuffer : Qt3DRender.QBuffer = ... # 0x8f3f + ShaderStorageBuffer : Qt3DRender.QBuffer = ... # 0x90d2 + + class AccessType(object): + Write : Qt3DRender.QBuffer.AccessType = ... # 0x1 + Read : Qt3DRender.QBuffer.AccessType = ... # 0x2 + ReadWrite : Qt3DRender.QBuffer.AccessType = ... # 0x3 + + class BufferType(object): + VertexBuffer : Qt3DRender.QBuffer.BufferType = ... # 0x8892 + IndexBuffer : Qt3DRender.QBuffer.BufferType = ... # 0x8893 + PixelPackBuffer : Qt3DRender.QBuffer.BufferType = ... # 0x88eb + PixelUnpackBuffer : Qt3DRender.QBuffer.BufferType = ... # 0x88ec + UniformBuffer : Qt3DRender.QBuffer.BufferType = ... # 0x8a11 + DrawIndirectBuffer : Qt3DRender.QBuffer.BufferType = ... # 0x8f3f + ShaderStorageBuffer : Qt3DRender.QBuffer.BufferType = ... # 0x90d2 + + class UsageType(object): + StreamDraw : Qt3DRender.QBuffer.UsageType = ... # 0x88e0 + StreamRead : Qt3DRender.QBuffer.UsageType = ... # 0x88e1 + StreamCopy : Qt3DRender.QBuffer.UsageType = ... # 0x88e2 + StaticDraw : Qt3DRender.QBuffer.UsageType = ... # 0x88e4 + StaticRead : Qt3DRender.QBuffer.UsageType = ... # 0x88e5 + StaticCopy : Qt3DRender.QBuffer.UsageType = ... # 0x88e6 + DynamicDraw : Qt3DRender.QBuffer.UsageType = ... # 0x88e8 + DynamicRead : Qt3DRender.QBuffer.UsageType = ... # 0x88e9 + DynamicCopy : Qt3DRender.QBuffer.UsageType = ... # 0x88ea + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + @typing.overload + def __init__(self, ty:PySide2.Qt3DRender.Qt3DRender.QBuffer.BufferType, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def accessType(self) -> PySide2.Qt3DRender.Qt3DRender.QBuffer.AccessType: ... + def data(self) -> PySide2.QtCore.QByteArray: ... + def isSyncData(self) -> bool: ... + def setAccessType(self, access:PySide2.Qt3DRender.Qt3DRender.QBuffer.AccessType) -> None: ... + def setData(self, bytes:PySide2.QtCore.QByteArray) -> None: ... + def setSyncData(self, syncData:bool) -> None: ... + def setType(self, type:PySide2.Qt3DRender.Qt3DRender.QBuffer.BufferType) -> None: ... + def setUsage(self, usage:PySide2.Qt3DRender.Qt3DRender.QBuffer.UsageType) -> None: ... + def type(self) -> PySide2.Qt3DRender.Qt3DRender.QBuffer.BufferType: ... + def updateData(self, offset:int, bytes:PySide2.QtCore.QByteArray) -> None: ... + def usage(self) -> PySide2.Qt3DRender.Qt3DRender.QBuffer.UsageType: ... + + class QBufferCapture(PySide2.Qt3DRender.QFrameGraphNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + + class QBufferDataGenerator(PySide2.Qt3DRender.QAbstractFunctor): + + def __init__(self) -> None: ... + + + class QCamera(PySide2.Qt3DCore.QEntity): + TranslateViewCenter : Qt3DRender.QCamera = ... # 0x0 + DontTranslateViewCenter : Qt3DRender.QCamera = ... # 0x1 + + class CameraTranslationOption(object): + TranslateViewCenter : Qt3DRender.QCamera.CameraTranslationOption = ... # 0x0 + DontTranslateViewCenter : Qt3DRender.QCamera.CameraTranslationOption = ... # 0x1 + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def aspectRatio(self) -> float: ... + def bottom(self) -> float: ... + def exposure(self) -> float: ... + def farPlane(self) -> float: ... + def fieldOfView(self) -> float: ... + def left(self) -> float: ... + def lens(self) -> PySide2.Qt3DRender.Qt3DRender.QCameraLens: ... + def nearPlane(self) -> float: ... + @typing.overload + def pan(self, angle:float) -> None: ... + @typing.overload + def pan(self, angle:float, axis:PySide2.QtGui.QVector3D) -> None: ... + @typing.overload + def panAboutViewCenter(self, angle:float) -> None: ... + @typing.overload + def panAboutViewCenter(self, angle:float, axis:PySide2.QtGui.QVector3D) -> None: ... + def panRotation(self, angle:float) -> PySide2.QtGui.QQuaternion: ... + def position(self) -> PySide2.QtGui.QVector3D: ... + def projectionMatrix(self) -> PySide2.QtGui.QMatrix4x4: ... + def projectionType(self) -> PySide2.Qt3DRender.Qt3DRender.QCameraLens.ProjectionType: ... + def right(self) -> float: ... + def roll(self, angle:float) -> None: ... + def rollAboutViewCenter(self, angle:float) -> None: ... + def rollRotation(self, angle:float) -> PySide2.QtGui.QQuaternion: ... + def rotate(self, q:PySide2.QtGui.QQuaternion) -> None: ... + def rotateAboutViewCenter(self, q:PySide2.QtGui.QQuaternion) -> None: ... + def rotation(self, angle:float, axis:PySide2.QtGui.QVector3D) -> PySide2.QtGui.QQuaternion: ... + def setAspectRatio(self, aspectRatio:float) -> None: ... + def setBottom(self, bottom:float) -> None: ... + def setExposure(self, exposure:float) -> None: ... + def setFarPlane(self, farPlane:float) -> None: ... + def setFieldOfView(self, fieldOfView:float) -> None: ... + def setLeft(self, left:float) -> None: ... + def setNearPlane(self, nearPlane:float) -> None: ... + def setPosition(self, position:PySide2.QtGui.QVector3D) -> None: ... + def setProjectionMatrix(self, projectionMatrix:PySide2.QtGui.QMatrix4x4) -> None: ... + def setProjectionType(self, type:PySide2.Qt3DRender.Qt3DRender.QCameraLens.ProjectionType) -> None: ... + def setRight(self, right:float) -> None: ... + def setTop(self, top:float) -> None: ... + def setUpVector(self, upVector:PySide2.QtGui.QVector3D) -> None: ... + def setViewCenter(self, viewCenter:PySide2.QtGui.QVector3D) -> None: ... + def tilt(self, angle:float) -> None: ... + def tiltAboutViewCenter(self, angle:float) -> None: ... + def tiltRotation(self, angle:float) -> PySide2.QtGui.QQuaternion: ... + def top(self) -> float: ... + def transform(self) -> PySide2.Qt3DCore.Qt3DCore.QTransform: ... + def translate(self, vLocal:PySide2.QtGui.QVector3D, option:PySide2.Qt3DRender.Qt3DRender.QCamera.CameraTranslationOption=...) -> None: ... + def translateWorld(self, vWorld:PySide2.QtGui.QVector3D, option:PySide2.Qt3DRender.Qt3DRender.QCamera.CameraTranslationOption=...) -> None: ... + def upVector(self) -> PySide2.QtGui.QVector3D: ... + def viewAll(self) -> None: ... + def viewCenter(self) -> PySide2.QtGui.QVector3D: ... + def viewEntity(self, entity:PySide2.Qt3DCore.Qt3DCore.QEntity) -> None: ... + def viewMatrix(self) -> PySide2.QtGui.QMatrix4x4: ... + def viewSphere(self, center:PySide2.QtGui.QVector3D, radius:float) -> None: ... + def viewVector(self) -> PySide2.QtGui.QVector3D: ... + + class QCameraLens(PySide2.Qt3DCore.QComponent): + OrthographicProjection : Qt3DRender.QCameraLens = ... # 0x0 + PerspectiveProjection : Qt3DRender.QCameraLens = ... # 0x1 + FrustumProjection : Qt3DRender.QCameraLens = ... # 0x2 + CustomProjection : Qt3DRender.QCameraLens = ... # 0x3 + + class ProjectionType(object): + OrthographicProjection : Qt3DRender.QCameraLens.ProjectionType = ... # 0x0 + PerspectiveProjection : Qt3DRender.QCameraLens.ProjectionType = ... # 0x1 + FrustumProjection : Qt3DRender.QCameraLens.ProjectionType = ... # 0x2 + CustomProjection : Qt3DRender.QCameraLens.ProjectionType = ... # 0x3 + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def aspectRatio(self) -> float: ... + def bottom(self) -> float: ... + def exposure(self) -> float: ... + def farPlane(self) -> float: ... + def fieldOfView(self) -> float: ... + def left(self) -> float: ... + def nearPlane(self) -> float: ... + def projectionMatrix(self) -> PySide2.QtGui.QMatrix4x4: ... + def projectionType(self) -> PySide2.Qt3DRender.Qt3DRender.QCameraLens.ProjectionType: ... + def right(self) -> float: ... + def setAspectRatio(self, aspectRatio:float) -> None: ... + def setBottom(self, bottom:float) -> None: ... + def setExposure(self, exposure:float) -> None: ... + def setFarPlane(self, farPlane:float) -> None: ... + def setFieldOfView(self, fieldOfView:float) -> None: ... + def setFrustumProjection(self, left:float, right:float, bottom:float, top:float, nearPlane:float, farPlane:float) -> None: ... + def setLeft(self, left:float) -> None: ... + def setNearPlane(self, nearPlane:float) -> None: ... + def setOrthographicProjection(self, left:float, right:float, bottom:float, top:float, nearPlane:float, farPlane:float) -> None: ... + def setPerspectiveProjection(self, fieldOfView:float, aspect:float, nearPlane:float, farPlane:float) -> None: ... + def setProjectionMatrix(self, projectionMatrix:PySide2.QtGui.QMatrix4x4) -> None: ... + def setProjectionType(self, projectionType:PySide2.Qt3DRender.Qt3DRender.QCameraLens.ProjectionType) -> None: ... + def setRight(self, right:float) -> None: ... + def setTop(self, top:float) -> None: ... + def top(self) -> float: ... + def viewAll(self, cameraId:PySide2.Qt3DCore.Qt3DCore.QNodeId) -> None: ... + def viewEntity(self, entityId:PySide2.Qt3DCore.Qt3DCore.QNodeId, cameraId:PySide2.Qt3DCore.Qt3DCore.QNodeId) -> None: ... + + class QCameraSelector(PySide2.Qt3DRender.QFrameGraphNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def camera(self) -> PySide2.Qt3DCore.Qt3DCore.QEntity: ... + def setCamera(self, camera:PySide2.Qt3DCore.Qt3DCore.QEntity) -> None: ... + + class QClearBuffers(PySide2.Qt3DRender.QFrameGraphNode): + AllBuffers : Qt3DRender.QClearBuffers = ... # -0x1 + None_ : Qt3DRender.QClearBuffers = ... # 0x0 + ColorBuffer : Qt3DRender.QClearBuffers = ... # 0x1 + DepthBuffer : Qt3DRender.QClearBuffers = ... # 0x2 + ColorDepthBuffer : Qt3DRender.QClearBuffers = ... # 0x3 + StencilBuffer : Qt3DRender.QClearBuffers = ... # 0x4 + DepthStencilBuffer : Qt3DRender.QClearBuffers = ... # 0x6 + ColorDepthStencilBuffer : Qt3DRender.QClearBuffers = ... # 0x7 + + class BufferType(object): + AllBuffers : Qt3DRender.QClearBuffers.BufferType = ... # -0x1 + None_ : Qt3DRender.QClearBuffers.BufferType = ... # 0x0 + ColorBuffer : Qt3DRender.QClearBuffers.BufferType = ... # 0x1 + DepthBuffer : Qt3DRender.QClearBuffers.BufferType = ... # 0x2 + ColorDepthBuffer : Qt3DRender.QClearBuffers.BufferType = ... # 0x3 + StencilBuffer : Qt3DRender.QClearBuffers.BufferType = ... # 0x4 + DepthStencilBuffer : Qt3DRender.QClearBuffers.BufferType = ... # 0x6 + ColorDepthStencilBuffer : Qt3DRender.QClearBuffers.BufferType = ... # 0x7 + + class BufferTypeFlags(object): ... + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def buffers(self) -> PySide2.Qt3DRender.Qt3DRender.QClearBuffers.BufferType: ... + def clearColor(self) -> PySide2.QtGui.QColor: ... + def clearDepthValue(self) -> float: ... + def clearStencilValue(self) -> int: ... + def colorBuffer(self) -> PySide2.Qt3DRender.Qt3DRender.QRenderTargetOutput: ... + def setBuffers(self, buffers:PySide2.Qt3DRender.Qt3DRender.QClearBuffers.BufferType) -> None: ... + def setClearColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setClearDepthValue(self, clearDepthValue:float) -> None: ... + def setClearStencilValue(self, clearStencilValue:int) -> None: ... + def setColorBuffer(self, buffer:PySide2.Qt3DRender.Qt3DRender.QRenderTargetOutput) -> None: ... + + class QClipPlane(PySide2.Qt3DRender.QRenderState): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def distance(self) -> float: ... + def normal(self) -> PySide2.QtGui.QVector3D: ... + def planeIndex(self) -> int: ... + def setDistance(self, arg__1:float) -> None: ... + def setNormal(self, arg__1:PySide2.QtGui.QVector3D) -> None: ... + def setPlaneIndex(self, arg__1:int) -> None: ... + + class QColorMask(PySide2.Qt3DRender.QRenderState): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def isAlphaMasked(self) -> bool: ... + def isBlueMasked(self) -> bool: ... + def isGreenMasked(self) -> bool: ... + def isRedMasked(self) -> bool: ... + def setAlphaMasked(self, alphaMasked:bool) -> None: ... + def setBlueMasked(self, blueMasked:bool) -> None: ... + def setGreenMasked(self, greenMasked:bool) -> None: ... + def setRedMasked(self, redMasked:bool) -> None: ... + + class QComputeCommand(PySide2.Qt3DCore.QComponent): + Continuous : Qt3DRender.QComputeCommand = ... # 0x0 + Manual : Qt3DRender.QComputeCommand = ... # 0x1 + + class RunType(object): + Continuous : Qt3DRender.QComputeCommand.RunType = ... # 0x0 + Manual : Qt3DRender.QComputeCommand.RunType = ... # 0x1 + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def runType(self) -> PySide2.Qt3DRender.Qt3DRender.QComputeCommand.RunType: ... + def setRunType(self, runType:PySide2.Qt3DRender.Qt3DRender.QComputeCommand.RunType) -> None: ... + def setWorkGroupX(self, workGroupX:int) -> None: ... + def setWorkGroupY(self, workGroupY:int) -> None: ... + def setWorkGroupZ(self, workGroupZ:int) -> None: ... + @typing.overload + def trigger(self, frameCount:int=...) -> None: ... + @typing.overload + def trigger(self, workGroupX:int, workGroupY:int, workGroupZ:int, frameCount:int=...) -> None: ... + def workGroupX(self) -> int: ... + def workGroupY(self) -> int: ... + def workGroupZ(self) -> int: ... + + class QCullFace(PySide2.Qt3DRender.QRenderState): + NoCulling : Qt3DRender.QCullFace = ... # 0x0 + Front : Qt3DRender.QCullFace = ... # 0x404 + Back : Qt3DRender.QCullFace = ... # 0x405 + FrontAndBack : Qt3DRender.QCullFace = ... # 0x408 + + class CullingMode(object): + NoCulling : Qt3DRender.QCullFace.CullingMode = ... # 0x0 + Front : Qt3DRender.QCullFace.CullingMode = ... # 0x404 + Back : Qt3DRender.QCullFace.CullingMode = ... # 0x405 + FrontAndBack : Qt3DRender.QCullFace.CullingMode = ... # 0x408 + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def mode(self) -> PySide2.Qt3DRender.Qt3DRender.QCullFace.CullingMode: ... + def setMode(self, mode:PySide2.Qt3DRender.Qt3DRender.QCullFace.CullingMode) -> None: ... + + class QDepthTest(PySide2.Qt3DRender.QRenderState): + Never : Qt3DRender.QDepthTest = ... # 0x200 + Less : Qt3DRender.QDepthTest = ... # 0x201 + Equal : Qt3DRender.QDepthTest = ... # 0x202 + LessOrEqual : Qt3DRender.QDepthTest = ... # 0x203 + Greater : Qt3DRender.QDepthTest = ... # 0x204 + NotEqual : Qt3DRender.QDepthTest = ... # 0x205 + GreaterOrEqual : Qt3DRender.QDepthTest = ... # 0x206 + Always : Qt3DRender.QDepthTest = ... # 0x207 + + class DepthFunction(object): + Never : Qt3DRender.QDepthTest.DepthFunction = ... # 0x200 + Less : Qt3DRender.QDepthTest.DepthFunction = ... # 0x201 + Equal : Qt3DRender.QDepthTest.DepthFunction = ... # 0x202 + LessOrEqual : Qt3DRender.QDepthTest.DepthFunction = ... # 0x203 + Greater : Qt3DRender.QDepthTest.DepthFunction = ... # 0x204 + NotEqual : Qt3DRender.QDepthTest.DepthFunction = ... # 0x205 + GreaterOrEqual : Qt3DRender.QDepthTest.DepthFunction = ... # 0x206 + Always : Qt3DRender.QDepthTest.DepthFunction = ... # 0x207 + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def depthFunction(self) -> PySide2.Qt3DRender.Qt3DRender.QDepthTest.DepthFunction: ... + def setDepthFunction(self, depthFunction:PySide2.Qt3DRender.Qt3DRender.QDepthTest.DepthFunction) -> None: ... + + class QDirectionalLight(PySide2.Qt3DRender.QAbstractLight): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def setWorldDirection(self, worldDirection:PySide2.QtGui.QVector3D) -> None: ... + def worldDirection(self) -> PySide2.QtGui.QVector3D: ... + + class QDispatchCompute(PySide2.Qt3DRender.QFrameGraphNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def setWorkGroupX(self, workGroupX:int) -> None: ... + def setWorkGroupY(self, workGroupY:int) -> None: ... + def setWorkGroupZ(self, workGroupZ:int) -> None: ... + def workGroupX(self) -> int: ... + def workGroupY(self) -> int: ... + def workGroupZ(self) -> int: ... + + class QDithering(PySide2.Qt3DRender.QRenderState): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + + class QEffect(PySide2.Qt3DCore.QNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def addParameter(self, parameter:PySide2.Qt3DRender.Qt3DRender.QParameter) -> None: ... + def addTechnique(self, t:PySide2.Qt3DRender.Qt3DRender.QTechnique) -> None: ... + def parameters(self) -> typing.List: ... + def removeParameter(self, parameter:PySide2.Qt3DRender.Qt3DRender.QParameter) -> None: ... + def removeTechnique(self, t:PySide2.Qt3DRender.Qt3DRender.QTechnique) -> None: ... + def techniques(self) -> typing.List: ... + + class QEnvironmentLight(PySide2.Qt3DCore.QComponent): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def irradiance(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractTexture: ... + def setIrradiance(self, irradiance:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture) -> None: ... + def setSpecular(self, specular:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture) -> None: ... + def specular(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractTexture: ... + + class QFilterKey(PySide2.Qt3DCore.QNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def name(self) -> str: ... + def setName(self, customType:str) -> None: ... + def setValue(self, value:typing.Any) -> None: ... + def value(self) -> typing.Any: ... + + class QFrameGraphNode(PySide2.Qt3DCore.QNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def parentFrameGraphNode(self) -> PySide2.Qt3DRender.Qt3DRender.QFrameGraphNode: ... + + class QFrameGraphNodeCreatedChangeBase(PySide2.Qt3DCore.QNodeCreatedChangeBase): + + def __init__(self, node:PySide2.Qt3DRender.Qt3DRender.QFrameGraphNode) -> None: ... + + def parentFrameGraphNodeId(self) -> PySide2.Qt3DCore.Qt3DCore.QNodeId: ... + + class QFrontFace(PySide2.Qt3DRender.QRenderState): + ClockWise : Qt3DRender.QFrontFace = ... # 0x900 + CounterClockWise : Qt3DRender.QFrontFace = ... # 0x901 + + class WindingDirection(object): + ClockWise : Qt3DRender.QFrontFace.WindingDirection = ... # 0x900 + CounterClockWise : Qt3DRender.QFrontFace.WindingDirection = ... # 0x901 + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def direction(self) -> PySide2.Qt3DRender.Qt3DRender.QFrontFace.WindingDirection: ... + def setDirection(self, direction:PySide2.Qt3DRender.Qt3DRender.QFrontFace.WindingDirection) -> None: ... + + class QFrustumCulling(PySide2.Qt3DRender.QFrameGraphNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + + class QGeometry(PySide2.Qt3DCore.QNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def addAttribute(self, attribute:PySide2.Qt3DRender.Qt3DRender.QAttribute) -> None: ... + def attributes(self) -> typing.List: ... + def boundingVolumePositionAttribute(self) -> PySide2.Qt3DRender.Qt3DRender.QAttribute: ... + def maxExtent(self) -> PySide2.QtGui.QVector3D: ... + def minExtent(self) -> PySide2.QtGui.QVector3D: ... + def removeAttribute(self, attribute:PySide2.Qt3DRender.Qt3DRender.QAttribute) -> None: ... + def setBoundingVolumePositionAttribute(self, boundingVolumePositionAttribute:PySide2.Qt3DRender.Qt3DRender.QAttribute) -> None: ... + + class QGeometryFactory(PySide2.Qt3DRender.QAbstractFunctor): + + def __init__(self) -> None: ... + + + class QGeometryRenderer(PySide2.Qt3DCore.QComponent): + Points : Qt3DRender.QGeometryRenderer = ... # 0x0 + Lines : Qt3DRender.QGeometryRenderer = ... # 0x1 + LineLoop : Qt3DRender.QGeometryRenderer = ... # 0x2 + LineStrip : Qt3DRender.QGeometryRenderer = ... # 0x3 + Triangles : Qt3DRender.QGeometryRenderer = ... # 0x4 + TriangleStrip : Qt3DRender.QGeometryRenderer = ... # 0x5 + TriangleFan : Qt3DRender.QGeometryRenderer = ... # 0x6 + LinesAdjacency : Qt3DRender.QGeometryRenderer = ... # 0xa + LineStripAdjacency : Qt3DRender.QGeometryRenderer = ... # 0xb + TrianglesAdjacency : Qt3DRender.QGeometryRenderer = ... # 0xc + TriangleStripAdjacency : Qt3DRender.QGeometryRenderer = ... # 0xd + Patches : Qt3DRender.QGeometryRenderer = ... # 0xe + + class PrimitiveType(object): + Points : Qt3DRender.QGeometryRenderer.PrimitiveType = ... # 0x0 + Lines : Qt3DRender.QGeometryRenderer.PrimitiveType = ... # 0x1 + LineLoop : Qt3DRender.QGeometryRenderer.PrimitiveType = ... # 0x2 + LineStrip : Qt3DRender.QGeometryRenderer.PrimitiveType = ... # 0x3 + Triangles : Qt3DRender.QGeometryRenderer.PrimitiveType = ... # 0x4 + TriangleStrip : Qt3DRender.QGeometryRenderer.PrimitiveType = ... # 0x5 + TriangleFan : Qt3DRender.QGeometryRenderer.PrimitiveType = ... # 0x6 + LinesAdjacency : Qt3DRender.QGeometryRenderer.PrimitiveType = ... # 0xa + LineStripAdjacency : Qt3DRender.QGeometryRenderer.PrimitiveType = ... # 0xb + TrianglesAdjacency : Qt3DRender.QGeometryRenderer.PrimitiveType = ... # 0xc + TriangleStripAdjacency : Qt3DRender.QGeometryRenderer.PrimitiveType = ... # 0xd + Patches : Qt3DRender.QGeometryRenderer.PrimitiveType = ... # 0xe + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def firstInstance(self) -> int: ... + def firstVertex(self) -> int: ... + def geometry(self) -> PySide2.Qt3DRender.Qt3DRender.QGeometry: ... + def indexBufferByteOffset(self) -> int: ... + def indexOffset(self) -> int: ... + def instanceCount(self) -> int: ... + def primitiveRestartEnabled(self) -> bool: ... + def primitiveType(self) -> PySide2.Qt3DRender.Qt3DRender.QGeometryRenderer.PrimitiveType: ... + def restartIndexValue(self) -> int: ... + def setFirstInstance(self, firstInstance:int) -> None: ... + def setFirstVertex(self, firstVertex:int) -> None: ... + def setGeometry(self, geometry:PySide2.Qt3DRender.Qt3DRender.QGeometry) -> None: ... + def setIndexBufferByteOffset(self, offset:int) -> None: ... + def setIndexOffset(self, indexOffset:int) -> None: ... + def setInstanceCount(self, instanceCount:int) -> None: ... + def setPrimitiveRestartEnabled(self, enabled:bool) -> None: ... + def setPrimitiveType(self, primitiveType:PySide2.Qt3DRender.Qt3DRender.QGeometryRenderer.PrimitiveType) -> None: ... + def setRestartIndexValue(self, index:int) -> None: ... + def setVertexCount(self, vertexCount:int) -> None: ... + def setVerticesPerPatch(self, verticesPerPatch:int) -> None: ... + def vertexCount(self) -> int: ... + def verticesPerPatch(self) -> int: ... + + class QGraphicsApiFilter(PySide2.QtCore.QObject): + NoProfile : Qt3DRender.QGraphicsApiFilter = ... # 0x0 + CoreProfile : Qt3DRender.QGraphicsApiFilter = ... # 0x1 + OpenGL : Qt3DRender.QGraphicsApiFilter = ... # 0x1 + CompatibilityProfile : Qt3DRender.QGraphicsApiFilter = ... # 0x2 + OpenGLES : Qt3DRender.QGraphicsApiFilter = ... # 0x2 + Vulkan : Qt3DRender.QGraphicsApiFilter = ... # 0x3 + DirectX : Qt3DRender.QGraphicsApiFilter = ... # 0x4 + RHI : Qt3DRender.QGraphicsApiFilter = ... # 0x5 + + class Api(object): + OpenGL : Qt3DRender.QGraphicsApiFilter.Api = ... # 0x1 + OpenGLES : Qt3DRender.QGraphicsApiFilter.Api = ... # 0x2 + Vulkan : Qt3DRender.QGraphicsApiFilter.Api = ... # 0x3 + DirectX : Qt3DRender.QGraphicsApiFilter.Api = ... # 0x4 + RHI : Qt3DRender.QGraphicsApiFilter.Api = ... # 0x5 + + class OpenGLProfile(object): + NoProfile : Qt3DRender.QGraphicsApiFilter.OpenGLProfile = ... # 0x0 + CoreProfile : Qt3DRender.QGraphicsApiFilter.OpenGLProfile = ... # 0x1 + CompatibilityProfile : Qt3DRender.QGraphicsApiFilter.OpenGLProfile = ... # 0x2 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def api(self) -> PySide2.Qt3DRender.Qt3DRender.QGraphicsApiFilter.Api: ... + def extensions(self) -> typing.List: ... + def majorVersion(self) -> int: ... + def minorVersion(self) -> int: ... + def profile(self) -> PySide2.Qt3DRender.Qt3DRender.QGraphicsApiFilter.OpenGLProfile: ... + def setApi(self, api:PySide2.Qt3DRender.Qt3DRender.QGraphicsApiFilter.Api) -> None: ... + def setExtensions(self, extensions:typing.Sequence) -> None: ... + def setMajorVersion(self, majorVersion:int) -> None: ... + def setMinorVersion(self, minorVersion:int) -> None: ... + def setProfile(self, profile:PySide2.Qt3DRender.Qt3DRender.QGraphicsApiFilter.OpenGLProfile) -> None: ... + def setVendor(self, vendor:str) -> None: ... + def vendor(self) -> str: ... + + class QLayer(PySide2.Qt3DCore.QComponent): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def recursive(self) -> bool: ... + def setRecursive(self, recursive:bool) -> None: ... + + class QLayerFilter(PySide2.Qt3DRender.QFrameGraphNode): + AcceptAnyMatchingLayers : Qt3DRender.QLayerFilter = ... # 0x0 + AcceptAllMatchingLayers : Qt3DRender.QLayerFilter = ... # 0x1 + DiscardAnyMatchingLayers : Qt3DRender.QLayerFilter = ... # 0x2 + DiscardAllMatchingLayers : Qt3DRender.QLayerFilter = ... # 0x3 + + class FilterMode(object): + AcceptAnyMatchingLayers : Qt3DRender.QLayerFilter.FilterMode = ... # 0x0 + AcceptAllMatchingLayers : Qt3DRender.QLayerFilter.FilterMode = ... # 0x1 + DiscardAnyMatchingLayers : Qt3DRender.QLayerFilter.FilterMode = ... # 0x2 + DiscardAllMatchingLayers : Qt3DRender.QLayerFilter.FilterMode = ... # 0x3 + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def addLayer(self, layer:PySide2.Qt3DRender.Qt3DRender.QLayer) -> None: ... + def filterMode(self) -> PySide2.Qt3DRender.Qt3DRender.QLayerFilter.FilterMode: ... + def layers(self) -> typing.List: ... + def removeLayer(self, layer:PySide2.Qt3DRender.Qt3DRender.QLayer) -> None: ... + def setFilterMode(self, filterMode:PySide2.Qt3DRender.Qt3DRender.QLayerFilter.FilterMode) -> None: ... + + class QLevelOfDetail(PySide2.Qt3DCore.QComponent): + DistanceToCameraThreshold: Qt3DRender.QLevelOfDetail = ... # 0x0 + ProjectedScreenPixelSizeThreshold: Qt3DRender.QLevelOfDetail = ... # 0x1 + + class ThresholdType(object): + DistanceToCameraThreshold: Qt3DRender.QLevelOfDetail.ThresholdType = ... # 0x0 + ProjectedScreenPixelSizeThreshold: Qt3DRender.QLevelOfDetail.ThresholdType = ... # 0x1 + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def camera(self) -> PySide2.Qt3DRender.Qt3DRender.QCamera: ... + def createBoundingSphere(self, center:PySide2.QtGui.QVector3D, radius:float) -> PySide2.Qt3DRender.Qt3DRender.QLevelOfDetailBoundingSphere: ... + def currentIndex(self) -> int: ... + def setCamera(self, camera:PySide2.Qt3DRender.Qt3DRender.QCamera) -> None: ... + def setCurrentIndex(self, currentIndex:int) -> None: ... + def setThresholdType(self, thresholdType:PySide2.Qt3DRender.Qt3DRender.QLevelOfDetail.ThresholdType) -> None: ... + def setThresholds(self, thresholds:typing.List) -> None: ... + def setVolumeOverride(self, volumeOverride:PySide2.Qt3DRender.Qt3DRender.QLevelOfDetailBoundingSphere) -> None: ... + def thresholdType(self) -> PySide2.Qt3DRender.Qt3DRender.QLevelOfDetail.ThresholdType: ... + def thresholds(self) -> typing.List: ... + def volumeOverride(self) -> PySide2.Qt3DRender.Qt3DRender.QLevelOfDetailBoundingSphere: ... + + class QLevelOfDetailBoundingSphere(Shiboken.Object): + + @typing.overload + def __init__(self, center:PySide2.QtGui.QVector3D=..., radius:float=...) -> None: ... + @typing.overload + def __init__(self, other:PySide2.Qt3DRender.Qt3DRender.QLevelOfDetailBoundingSphere) -> None: ... + + def center(self) -> PySide2.QtGui.QVector3D: ... + def isEmpty(self) -> bool: ... + def radius(self) -> float: ... + + class QLevelOfDetailSwitch(PySide2.Qt3DRender.QLevelOfDetail): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + + class QLineWidth(PySide2.Qt3DRender.QRenderState): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def setSmooth(self, enabled:bool) -> None: ... + def setValue(self, value:float) -> None: ... + def smooth(self) -> bool: ... + def value(self) -> float: ... + + class QMaterial(PySide2.Qt3DCore.QComponent): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def addParameter(self, parameter:PySide2.Qt3DRender.Qt3DRender.QParameter) -> None: ... + def effect(self) -> PySide2.Qt3DRender.Qt3DRender.QEffect: ... + def parameters(self) -> typing.List: ... + def removeParameter(self, parameter:PySide2.Qt3DRender.Qt3DRender.QParameter) -> None: ... + def setEffect(self, effect:PySide2.Qt3DRender.Qt3DRender.QEffect) -> None: ... + + class QMemoryBarrier(PySide2.Qt3DRender.QFrameGraphNode): + All : Qt3DRender.QMemoryBarrier = ... # -0x1 + None_ : Qt3DRender.QMemoryBarrier = ... # 0x0 + VertexAttributeArray : Qt3DRender.QMemoryBarrier = ... # 0x1 + ElementArray : Qt3DRender.QMemoryBarrier = ... # 0x2 + Uniform : Qt3DRender.QMemoryBarrier = ... # 0x4 + TextureFetch : Qt3DRender.QMemoryBarrier = ... # 0x8 + ShaderImageAccess : Qt3DRender.QMemoryBarrier = ... # 0x10 + Command : Qt3DRender.QMemoryBarrier = ... # 0x20 + PixelBuffer : Qt3DRender.QMemoryBarrier = ... # 0x40 + TextureUpdate : Qt3DRender.QMemoryBarrier = ... # 0x80 + BufferUpdate : Qt3DRender.QMemoryBarrier = ... # 0x100 + FrameBuffer : Qt3DRender.QMemoryBarrier = ... # 0x200 + TransformFeedback : Qt3DRender.QMemoryBarrier = ... # 0x400 + AtomicCounter : Qt3DRender.QMemoryBarrier = ... # 0x800 + ShaderStorage : Qt3DRender.QMemoryBarrier = ... # 0x1000 + QueryBuffer : Qt3DRender.QMemoryBarrier = ... # 0x2000 + + class Operation(object): + All : Qt3DRender.QMemoryBarrier.Operation = ... # -0x1 + None_ : Qt3DRender.QMemoryBarrier.Operation = ... # 0x0 + VertexAttributeArray : Qt3DRender.QMemoryBarrier.Operation = ... # 0x1 + ElementArray : Qt3DRender.QMemoryBarrier.Operation = ... # 0x2 + Uniform : Qt3DRender.QMemoryBarrier.Operation = ... # 0x4 + TextureFetch : Qt3DRender.QMemoryBarrier.Operation = ... # 0x8 + ShaderImageAccess : Qt3DRender.QMemoryBarrier.Operation = ... # 0x10 + Command : Qt3DRender.QMemoryBarrier.Operation = ... # 0x20 + PixelBuffer : Qt3DRender.QMemoryBarrier.Operation = ... # 0x40 + TextureUpdate : Qt3DRender.QMemoryBarrier.Operation = ... # 0x80 + BufferUpdate : Qt3DRender.QMemoryBarrier.Operation = ... # 0x100 + FrameBuffer : Qt3DRender.QMemoryBarrier.Operation = ... # 0x200 + TransformFeedback : Qt3DRender.QMemoryBarrier.Operation = ... # 0x400 + AtomicCounter : Qt3DRender.QMemoryBarrier.Operation = ... # 0x800 + ShaderStorage : Qt3DRender.QMemoryBarrier.Operation = ... # 0x1000 + QueryBuffer : Qt3DRender.QMemoryBarrier.Operation = ... # 0x2000 + + class Operations(object): ... + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def setWaitOperations(self, operations:PySide2.Qt3DRender.Qt3DRender.QMemoryBarrier.Operations) -> None: ... + def waitOperations(self) -> PySide2.Qt3DRender.Qt3DRender.QMemoryBarrier.Operations: ... + + class QMesh(PySide2.Qt3DRender.QGeometryRenderer): + None_ : Qt3DRender.QMesh = ... # 0x0 + Loading : Qt3DRender.QMesh = ... # 0x1 + Ready : Qt3DRender.QMesh = ... # 0x2 + Error : Qt3DRender.QMesh = ... # 0x3 + + class Status(object): + None_ : Qt3DRender.QMesh.Status = ... # 0x0 + Loading : Qt3DRender.QMesh.Status = ... # 0x1 + Ready : Qt3DRender.QMesh.Status = ... # 0x2 + Error : Qt3DRender.QMesh.Status = ... # 0x3 + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def meshName(self) -> str: ... + def setMeshName(self, meshName:str) -> None: ... + def setSource(self, source:PySide2.QtCore.QUrl) -> None: ... + def source(self) -> PySide2.QtCore.QUrl: ... + def status(self) -> PySide2.Qt3DRender.Qt3DRender.QMesh.Status: ... + + class QMultiSampleAntiAliasing(PySide2.Qt3DRender.QRenderState): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + + class QNoDepthMask(PySide2.Qt3DRender.QRenderState): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + + class QNoDraw(PySide2.Qt3DRender.QFrameGraphNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + + class QNoPicking(PySide2.Qt3DRender.QFrameGraphNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + + class QObjectPicker(PySide2.Qt3DCore.QComponent): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def containsMouse(self) -> bool: ... + def isDragEnabled(self) -> bool: ... + def isHoverEnabled(self) -> bool: ... + def isPressed(self) -> bool: ... + def priority(self) -> int: ... + def setDragEnabled(self, dragEnabled:bool) -> None: ... + def setHoverEnabled(self, hoverEnabled:bool) -> None: ... + def setPriority(self, priority:int) -> None: ... + + class QPaintedTextureImage(PySide2.Qt3DRender.QAbstractTextureImage): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def height(self) -> int: ... + def paint(self, painter:PySide2.QtGui.QPainter) -> None: ... + def setHeight(self, h:int) -> None: ... + def setSize(self, size:PySide2.QtCore.QSize) -> None: ... + def setWidth(self, w:int) -> None: ... + def size(self) -> PySide2.QtCore.QSize: ... + def update(self, rect:PySide2.QtCore.QRect=...) -> None: ... + def width(self) -> int: ... + + class QParameter(PySide2.Qt3DCore.QNode): + + @typing.overload + def __init__(self, name:str, texture:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + @typing.overload + def __init__(self, name:str, value:typing.Any, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def name(self) -> str: ... + def setName(self, name:str) -> None: ... + def setValue(self, dv:typing.Any) -> None: ... + def value(self) -> typing.Any: ... + + class QPickEvent(PySide2.QtCore.QObject): + NoButton : Qt3DRender.QPickEvent = ... # 0x0 + NoModifier : Qt3DRender.QPickEvent = ... # 0x0 + LeftButton : Qt3DRender.QPickEvent = ... # 0x1 + RightButton : Qt3DRender.QPickEvent = ... # 0x2 + MiddleButton : Qt3DRender.QPickEvent = ... # 0x4 + BackButton : Qt3DRender.QPickEvent = ... # 0x8 + ShiftModifier : Qt3DRender.QPickEvent = ... # 0x2000000 + ControlModifier : Qt3DRender.QPickEvent = ... # 0x4000000 + AltModifier : Qt3DRender.QPickEvent = ... # 0x8000000 + MetaModifier : Qt3DRender.QPickEvent = ... # 0x10000000 + KeypadModifier : Qt3DRender.QPickEvent = ... # 0x20000000 + + class Buttons(object): + NoButton : Qt3DRender.QPickEvent.Buttons = ... # 0x0 + LeftButton : Qt3DRender.QPickEvent.Buttons = ... # 0x1 + RightButton : Qt3DRender.QPickEvent.Buttons = ... # 0x2 + MiddleButton : Qt3DRender.QPickEvent.Buttons = ... # 0x4 + BackButton : Qt3DRender.QPickEvent.Buttons = ... # 0x8 + + class Modifiers(object): + NoModifier : Qt3DRender.QPickEvent.Modifiers = ... # 0x0 + ShiftModifier : Qt3DRender.QPickEvent.Modifiers = ... # 0x2000000 + ControlModifier : Qt3DRender.QPickEvent.Modifiers = ... # 0x4000000 + AltModifier : Qt3DRender.QPickEvent.Modifiers = ... # 0x8000000 + MetaModifier : Qt3DRender.QPickEvent.Modifiers = ... # 0x10000000 + KeypadModifier : Qt3DRender.QPickEvent.Modifiers = ... # 0x20000000 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, position:PySide2.QtCore.QPointF, worldIntersection:PySide2.QtGui.QVector3D, localIntersection:PySide2.QtGui.QVector3D, distance:float) -> None: ... + @typing.overload + def __init__(self, position:PySide2.QtCore.QPointF, worldIntersection:PySide2.QtGui.QVector3D, localIntersection:PySide2.QtGui.QVector3D, distance:float, button:PySide2.Qt3DRender.Qt3DRender.QPickEvent.Buttons, buttons:int, modifiers:int) -> None: ... + + def button(self) -> PySide2.Qt3DRender.Qt3DRender.QPickEvent.Buttons: ... + def buttons(self) -> int: ... + def distance(self) -> float: ... + def entity(self) -> PySide2.Qt3DCore.Qt3DCore.QEntity: ... + def isAccepted(self) -> bool: ... + def localIntersection(self) -> PySide2.QtGui.QVector3D: ... + def modifiers(self) -> int: ... + def position(self) -> PySide2.QtCore.QPointF: ... + def setAccepted(self, accepted:bool) -> None: ... + def viewport(self) -> PySide2.Qt3DRender.Qt3DRender.QViewport: ... + def worldIntersection(self) -> PySide2.QtGui.QVector3D: ... + + class QPickLineEvent(PySide2.Qt3DRender.QPickEvent): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, position:PySide2.QtCore.QPointF, worldIntersection:PySide2.QtGui.QVector3D, localIntersection:PySide2.QtGui.QVector3D, distance:float, edgeIndex:int, vertex1Index:int, vertex2Index:int, button:PySide2.Qt3DRender.Qt3DRender.QPickEvent.Buttons, buttons:int, modifiers:int) -> None: ... + + def edgeIndex(self) -> int: ... + def vertex1Index(self) -> int: ... + def vertex2Index(self) -> int: ... + + class QPickPointEvent(PySide2.Qt3DRender.QPickEvent): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, position:PySide2.QtCore.QPointF, worldIntersection:PySide2.QtGui.QVector3D, localIntersection:PySide2.QtGui.QVector3D, distance:float, pointIndex:int, button:PySide2.Qt3DRender.Qt3DRender.QPickEvent.Buttons, buttons:int, modifiers:int) -> None: ... + + def pointIndex(self) -> int: ... + + class QPickTriangleEvent(PySide2.Qt3DRender.QPickEvent): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, position:PySide2.QtCore.QPointF, worldIntersection:PySide2.QtGui.QVector3D, localIntersection:PySide2.QtGui.QVector3D, distance:float, triangleIndex:int, vertex1Index:int, vertex2Index:int, vertex3Index:int) -> None: ... + @typing.overload + def __init__(self, position:PySide2.QtCore.QPointF, worldIntersection:PySide2.QtGui.QVector3D, localIntersection:PySide2.QtGui.QVector3D, distance:float, triangleIndex:int, vertex1Index:int, vertex2Index:int, vertex3Index:int, button:PySide2.Qt3DRender.Qt3DRender.QPickEvent.Buttons, buttons:int, modifiers:int, uvw:PySide2.QtGui.QVector3D) -> None: ... + + def triangleIndex(self) -> int: ... + def uvw(self) -> PySide2.QtGui.QVector3D: ... + def vertex1Index(self) -> int: ... + def vertex2Index(self) -> int: ... + def vertex3Index(self) -> int: ... + + class QPickingSettings(PySide2.Qt3DCore.QNode): + BoundingVolumePicking : Qt3DRender.QPickingSettings = ... # 0x0 + NearestPick : Qt3DRender.QPickingSettings = ... # 0x0 + AllPicks : Qt3DRender.QPickingSettings = ... # 0x1 + FrontFace : Qt3DRender.QPickingSettings = ... # 0x1 + TrianglePicking : Qt3DRender.QPickingSettings = ... # 0x1 + BackFace : Qt3DRender.QPickingSettings = ... # 0x2 + LinePicking : Qt3DRender.QPickingSettings = ... # 0x2 + NearestPriorityPick : Qt3DRender.QPickingSettings = ... # 0x2 + FrontAndBackFace : Qt3DRender.QPickingSettings = ... # 0x3 + PointPicking : Qt3DRender.QPickingSettings = ... # 0x4 + PrimitivePicking : Qt3DRender.QPickingSettings = ... # 0x7 + + class FaceOrientationPickingMode(object): + FrontFace : Qt3DRender.QPickingSettings.FaceOrientationPickingMode = ... # 0x1 + BackFace : Qt3DRender.QPickingSettings.FaceOrientationPickingMode = ... # 0x2 + FrontAndBackFace : Qt3DRender.QPickingSettings.FaceOrientationPickingMode = ... # 0x3 + + class PickMethod(object): + BoundingVolumePicking : Qt3DRender.QPickingSettings.PickMethod = ... # 0x0 + TrianglePicking : Qt3DRender.QPickingSettings.PickMethod = ... # 0x1 + LinePicking : Qt3DRender.QPickingSettings.PickMethod = ... # 0x2 + PointPicking : Qt3DRender.QPickingSettings.PickMethod = ... # 0x4 + PrimitivePicking : Qt3DRender.QPickingSettings.PickMethod = ... # 0x7 + + class PickResultMode(object): + NearestPick : Qt3DRender.QPickingSettings.PickResultMode = ... # 0x0 + AllPicks : Qt3DRender.QPickingSettings.PickResultMode = ... # 0x1 + NearestPriorityPick : Qt3DRender.QPickingSettings.PickResultMode = ... # 0x2 + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def faceOrientationPickingMode(self) -> PySide2.Qt3DRender.Qt3DRender.QPickingSettings.FaceOrientationPickingMode: ... + def pickMethod(self) -> PySide2.Qt3DRender.Qt3DRender.QPickingSettings.PickMethod: ... + def pickResultMode(self) -> PySide2.Qt3DRender.Qt3DRender.QPickingSettings.PickResultMode: ... + def setFaceOrientationPickingMode(self, faceOrientationPickingMode:PySide2.Qt3DRender.Qt3DRender.QPickingSettings.FaceOrientationPickingMode) -> None: ... + def setPickMethod(self, pickMethod:PySide2.Qt3DRender.Qt3DRender.QPickingSettings.PickMethod) -> None: ... + def setPickResultMode(self, pickResultMode:PySide2.Qt3DRender.Qt3DRender.QPickingSettings.PickResultMode) -> None: ... + def setWorldSpaceTolerance(self, worldSpaceTolerance:float) -> None: ... + def worldSpaceTolerance(self) -> float: ... + + class QPointLight(PySide2.Qt3DRender.QAbstractLight): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def constantAttenuation(self) -> float: ... + def linearAttenuation(self) -> float: ... + def quadraticAttenuation(self) -> float: ... + def setConstantAttenuation(self, value:float) -> None: ... + def setLinearAttenuation(self, value:float) -> None: ... + def setQuadraticAttenuation(self, value:float) -> None: ... + + class QPointSize(PySide2.Qt3DRender.QRenderState): + Fixed : Qt3DRender.QPointSize = ... # 0x0 + Programmable : Qt3DRender.QPointSize = ... # 0x1 + + class SizeMode(object): + Fixed : Qt3DRender.QPointSize.SizeMode = ... # 0x0 + Programmable : Qt3DRender.QPointSize.SizeMode = ... # 0x1 + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def setSizeMode(self, sizeMode:PySide2.Qt3DRender.Qt3DRender.QPointSize.SizeMode) -> None: ... + def setValue(self, value:float) -> None: ... + def sizeMode(self) -> PySide2.Qt3DRender.Qt3DRender.QPointSize.SizeMode: ... + def value(self) -> float: ... + + class QPolygonOffset(PySide2.Qt3DRender.QRenderState): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def depthSteps(self) -> float: ... + def scaleFactor(self) -> float: ... + def setDepthSteps(self, depthSteps:float) -> None: ... + def setScaleFactor(self, scaleFactor:float) -> None: ... + + class QProximityFilter(PySide2.Qt3DRender.QFrameGraphNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def distanceThreshold(self) -> float: ... + def entity(self) -> PySide2.Qt3DCore.Qt3DCore.QEntity: ... + def setDistanceThreshold(self, distanceThreshold:float) -> None: ... + def setEntity(self, entity:PySide2.Qt3DCore.Qt3DCore.QEntity) -> None: ... + + class QRayCaster(PySide2.Qt3DRender.QAbstractRayCaster): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def direction(self) -> PySide2.QtGui.QVector3D: ... + def length(self) -> float: ... + def origin(self) -> PySide2.QtGui.QVector3D: ... + def setDirection(self, direction:PySide2.QtGui.QVector3D) -> None: ... + def setLength(self, length:float) -> None: ... + def setOrigin(self, origin:PySide2.QtGui.QVector3D) -> None: ... + @typing.overload + def trigger(self) -> None: ... + @typing.overload + def trigger(self, origin:PySide2.QtGui.QVector3D, direction:PySide2.QtGui.QVector3D, length:float) -> None: ... + + class QRayCasterHit(Shiboken.Object): + TriangleHit : Qt3DRender.QRayCasterHit = ... # 0x0 + LineHit : Qt3DRender.QRayCasterHit = ... # 0x1 + PointHit : Qt3DRender.QRayCasterHit = ... # 0x2 + EntityHit : Qt3DRender.QRayCasterHit = ... # 0x3 + + class HitType(object): + TriangleHit : Qt3DRender.QRayCasterHit.HitType = ... # 0x0 + LineHit : Qt3DRender.QRayCasterHit.HitType = ... # 0x1 + PointHit : Qt3DRender.QRayCasterHit.HitType = ... # 0x2 + EntityHit : Qt3DRender.QRayCasterHit.HitType = ... # 0x3 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.Qt3DRender.Qt3DRender.QRayCasterHit) -> None: ... + @typing.overload + def __init__(self, type:PySide2.Qt3DRender.Qt3DRender.QRayCasterHit.HitType, id:PySide2.Qt3DCore.Qt3DCore.QNodeId, distance:float, localIntersect:PySide2.QtGui.QVector3D, worldIntersect:PySide2.QtGui.QVector3D, primitiveIndex:int, v1:int, v2:int, v3:int) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def distance(self) -> float: ... + def entity(self) -> PySide2.Qt3DCore.Qt3DCore.QEntity: ... + def entityId(self) -> PySide2.Qt3DCore.Qt3DCore.QNodeId: ... + def localIntersection(self) -> PySide2.QtGui.QVector3D: ... + def primitiveIndex(self) -> int: ... + def type(self) -> PySide2.Qt3DRender.Qt3DRender.QRayCasterHit.HitType: ... + def vertex1Index(self) -> int: ... + def vertex2Index(self) -> int: ... + def vertex3Index(self) -> int: ... + def worldIntersection(self) -> PySide2.QtGui.QVector3D: ... + + class QRenderAspect(PySide2.Qt3DCore.QAbstractAspect): + Synchronous : Qt3DRender.QRenderAspect = ... # 0x0 + Threaded : Qt3DRender.QRenderAspect = ... # 0x1 + + class RenderType(object): + Synchronous : Qt3DRender.QRenderAspect.RenderType = ... # 0x0 + Threaded : Qt3DRender.QRenderAspect.RenderType = ... # 0x1 + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, type:PySide2.Qt3DRender.Qt3DRender.QRenderAspect.RenderType, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + + class QRenderCapabilities(PySide2.QtCore.QObject): + NoProfile : Qt3DRender.QRenderCapabilities = ... # 0x0 + CoreProfile : Qt3DRender.QRenderCapabilities = ... # 0x1 + OpenGL : Qt3DRender.QRenderCapabilities = ... # 0x1 + CompatibilityProfile : Qt3DRender.QRenderCapabilities = ... # 0x2 + OpenGLES : Qt3DRender.QRenderCapabilities = ... # 0x2 + Vulkan : Qt3DRender.QRenderCapabilities = ... # 0x3 + DirectX : Qt3DRender.QRenderCapabilities = ... # 0x4 + RHI : Qt3DRender.QRenderCapabilities = ... # 0x5 + + class API(object): + OpenGL : Qt3DRender.QRenderCapabilities.API = ... # 0x1 + OpenGLES : Qt3DRender.QRenderCapabilities.API = ... # 0x2 + Vulkan : Qt3DRender.QRenderCapabilities.API = ... # 0x3 + DirectX : Qt3DRender.QRenderCapabilities.API = ... # 0x4 + RHI : Qt3DRender.QRenderCapabilities.API = ... # 0x5 + + class Profile(object): + NoProfile : Qt3DRender.QRenderCapabilities.Profile = ... # 0x0 + CoreProfile : Qt3DRender.QRenderCapabilities.Profile = ... # 0x1 + CompatibilityProfile : Qt3DRender.QRenderCapabilities.Profile = ... # 0x2 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def api(self) -> PySide2.Qt3DRender.Qt3DRender.QRenderCapabilities.API: ... + def driverVersion(self) -> str: ... + def extensions(self) -> typing.List: ... + def glslVersion(self) -> str: ... + def isValid(self) -> bool: ... + def majorVersion(self) -> int: ... + def maxComputeInvocations(self) -> int: ... + def maxComputeSharedMemorySize(self) -> int: ... + def maxImageUnits(self) -> int: ... + def maxSSBOBindings(self) -> int: ... + def maxSSBOSize(self) -> int: ... + def maxSamples(self) -> int: ... + def maxTextureLayers(self) -> int: ... + def maxTextureSize(self) -> int: ... + def maxTextureUnits(self) -> int: ... + def maxUBOBindings(self) -> int: ... + def maxUBOSize(self) -> int: ... + def maxWorkGroupCountX(self) -> int: ... + def maxWorkGroupCountY(self) -> int: ... + def maxWorkGroupCountZ(self) -> int: ... + def maxWorkGroupSizeX(self) -> int: ... + def maxWorkGroupSizeY(self) -> int: ... + def maxWorkGroupSizeZ(self) -> int: ... + def minorVersion(self) -> int: ... + def profile(self) -> PySide2.Qt3DRender.Qt3DRender.QRenderCapabilities.Profile: ... + def renderer(self) -> str: ... + def supportsCompute(self) -> bool: ... + def supportsImageStore(self) -> bool: ... + def supportsSSBO(self) -> bool: ... + def supportsUBO(self) -> bool: ... + def vendor(self) -> str: ... + + class QRenderCapture(PySide2.Qt3DRender.QFrameGraphNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + @typing.overload + def requestCapture(self) -> PySide2.Qt3DRender.Qt3DRender.QRenderCaptureReply: ... + @typing.overload + def requestCapture(self, captureId:int) -> PySide2.Qt3DRender.Qt3DRender.QRenderCaptureReply: ... + @typing.overload + def requestCapture(self, rect:PySide2.QtCore.QRect) -> PySide2.Qt3DRender.Qt3DRender.QRenderCaptureReply: ... + + class QRenderCaptureReply(PySide2.QtCore.QObject): + def captureId(self) -> int: ... + def image(self) -> PySide2.QtGui.QImage: ... + def isComplete(self) -> bool: ... + def saveImage(self, fileName:str) -> bool: ... + def saveToFile(self, fileName:str) -> None: ... + + class QRenderPass(PySide2.Qt3DCore.QNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def addFilterKey(self, filterKey:PySide2.Qt3DRender.Qt3DRender.QFilterKey) -> None: ... + def addParameter(self, p:PySide2.Qt3DRender.Qt3DRender.QParameter) -> None: ... + def addRenderState(self, state:PySide2.Qt3DRender.Qt3DRender.QRenderState) -> None: ... + def filterKeys(self) -> typing.List: ... + def parameters(self) -> typing.List: ... + def removeFilterKey(self, filterKey:PySide2.Qt3DRender.Qt3DRender.QFilterKey) -> None: ... + def removeParameter(self, p:PySide2.Qt3DRender.Qt3DRender.QParameter) -> None: ... + def removeRenderState(self, state:PySide2.Qt3DRender.Qt3DRender.QRenderState) -> None: ... + def renderStates(self) -> typing.List: ... + def setShaderProgram(self, shaderProgram:PySide2.Qt3DRender.Qt3DRender.QShaderProgram) -> None: ... + def shaderProgram(self) -> PySide2.Qt3DRender.Qt3DRender.QShaderProgram: ... + + class QRenderPassFilter(PySide2.Qt3DRender.QFrameGraphNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def addMatch(self, filterKey:PySide2.Qt3DRender.Qt3DRender.QFilterKey) -> None: ... + def addParameter(self, parameter:PySide2.Qt3DRender.Qt3DRender.QParameter) -> None: ... + def matchAny(self) -> typing.List: ... + def parameters(self) -> typing.List: ... + def removeMatch(self, filterKey:PySide2.Qt3DRender.Qt3DRender.QFilterKey) -> None: ... + def removeParameter(self, parameter:PySide2.Qt3DRender.Qt3DRender.QParameter) -> None: ... + + class QRenderSettings(PySide2.Qt3DCore.QComponent): + OnDemand : Qt3DRender.QRenderSettings = ... # 0x0 + Always : Qt3DRender.QRenderSettings = ... # 0x1 + + class RenderPolicy(object): + OnDemand : Qt3DRender.QRenderSettings.RenderPolicy = ... # 0x0 + Always : Qt3DRender.QRenderSettings.RenderPolicy = ... # 0x1 + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def activeFrameGraph(self) -> PySide2.Qt3DRender.Qt3DRender.QFrameGraphNode: ... + def pickingSettings(self) -> PySide2.Qt3DRender.Qt3DRender.QPickingSettings: ... + def renderCapabilities(self) -> PySide2.Qt3DRender.Qt3DRender.QRenderCapabilities: ... + def renderPolicy(self) -> PySide2.Qt3DRender.Qt3DRender.QRenderSettings.RenderPolicy: ... + def setActiveFrameGraph(self, activeFrameGraph:PySide2.Qt3DRender.Qt3DRender.QFrameGraphNode) -> None: ... + def setRenderPolicy(self, renderPolicy:PySide2.Qt3DRender.Qt3DRender.QRenderSettings.RenderPolicy) -> None: ... + + class QRenderState(PySide2.Qt3DCore.QNode): ... + + class QRenderStateSet(PySide2.Qt3DRender.QFrameGraphNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def addRenderState(self, state:PySide2.Qt3DRender.Qt3DRender.QRenderState) -> None: ... + def removeRenderState(self, state:PySide2.Qt3DRender.Qt3DRender.QRenderState) -> None: ... + def renderStates(self) -> typing.List: ... + + class QRenderSurfaceSelector(PySide2.Qt3DRender.QFrameGraphNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def externalRenderTargetSize(self) -> PySide2.QtCore.QSize: ... + def setExternalRenderTargetSize(self, size:PySide2.QtCore.QSize) -> None: ... + def setSurface(self, surfaceObject:PySide2.QtCore.QObject) -> None: ... + def setSurfacePixelRatio(self, ratio:float) -> None: ... + def surface(self) -> PySide2.QtCore.QObject: ... + def surfacePixelRatio(self) -> float: ... + + class QRenderTarget(PySide2.Qt3DCore.QComponent): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def addOutput(self, output:PySide2.Qt3DRender.Qt3DRender.QRenderTargetOutput) -> None: ... + def outputs(self) -> typing.List: ... + def removeOutput(self, output:PySide2.Qt3DRender.Qt3DRender.QRenderTargetOutput) -> None: ... + + class QRenderTargetOutput(PySide2.Qt3DCore.QNode): + Color0 : Qt3DRender.QRenderTargetOutput = ... # 0x0 + Color1 : Qt3DRender.QRenderTargetOutput = ... # 0x1 + Color2 : Qt3DRender.QRenderTargetOutput = ... # 0x2 + Color3 : Qt3DRender.QRenderTargetOutput = ... # 0x3 + Color4 : Qt3DRender.QRenderTargetOutput = ... # 0x4 + Color5 : Qt3DRender.QRenderTargetOutput = ... # 0x5 + Color6 : Qt3DRender.QRenderTargetOutput = ... # 0x6 + Color7 : Qt3DRender.QRenderTargetOutput = ... # 0x7 + Color8 : Qt3DRender.QRenderTargetOutput = ... # 0x8 + Color9 : Qt3DRender.QRenderTargetOutput = ... # 0x9 + Color10 : Qt3DRender.QRenderTargetOutput = ... # 0xa + Color11 : Qt3DRender.QRenderTargetOutput = ... # 0xb + Color12 : Qt3DRender.QRenderTargetOutput = ... # 0xc + Color13 : Qt3DRender.QRenderTargetOutput = ... # 0xd + Color14 : Qt3DRender.QRenderTargetOutput = ... # 0xe + Color15 : Qt3DRender.QRenderTargetOutput = ... # 0xf + Depth : Qt3DRender.QRenderTargetOutput = ... # 0x10 + Stencil : Qt3DRender.QRenderTargetOutput = ... # 0x11 + DepthStencil : Qt3DRender.QRenderTargetOutput = ... # 0x12 + + class AttachmentPoint(object): + Color0 : Qt3DRender.QRenderTargetOutput.AttachmentPoint = ... # 0x0 + Color1 : Qt3DRender.QRenderTargetOutput.AttachmentPoint = ... # 0x1 + Color2 : Qt3DRender.QRenderTargetOutput.AttachmentPoint = ... # 0x2 + Color3 : Qt3DRender.QRenderTargetOutput.AttachmentPoint = ... # 0x3 + Color4 : Qt3DRender.QRenderTargetOutput.AttachmentPoint = ... # 0x4 + Color5 : Qt3DRender.QRenderTargetOutput.AttachmentPoint = ... # 0x5 + Color6 : Qt3DRender.QRenderTargetOutput.AttachmentPoint = ... # 0x6 + Color7 : Qt3DRender.QRenderTargetOutput.AttachmentPoint = ... # 0x7 + Color8 : Qt3DRender.QRenderTargetOutput.AttachmentPoint = ... # 0x8 + Color9 : Qt3DRender.QRenderTargetOutput.AttachmentPoint = ... # 0x9 + Color10 : Qt3DRender.QRenderTargetOutput.AttachmentPoint = ... # 0xa + Color11 : Qt3DRender.QRenderTargetOutput.AttachmentPoint = ... # 0xb + Color12 : Qt3DRender.QRenderTargetOutput.AttachmentPoint = ... # 0xc + Color13 : Qt3DRender.QRenderTargetOutput.AttachmentPoint = ... # 0xd + Color14 : Qt3DRender.QRenderTargetOutput.AttachmentPoint = ... # 0xe + Color15 : Qt3DRender.QRenderTargetOutput.AttachmentPoint = ... # 0xf + Depth : Qt3DRender.QRenderTargetOutput.AttachmentPoint = ... # 0x10 + Stencil : Qt3DRender.QRenderTargetOutput.AttachmentPoint = ... # 0x11 + DepthStencil : Qt3DRender.QRenderTargetOutput.AttachmentPoint = ... # 0x12 + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def attachmentPoint(self) -> PySide2.Qt3DRender.Qt3DRender.QRenderTargetOutput.AttachmentPoint: ... + def face(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.CubeMapFace: ... + def layer(self) -> int: ... + def mipLevel(self) -> int: ... + def setAttachmentPoint(self, attachmentPoint:PySide2.Qt3DRender.Qt3DRender.QRenderTargetOutput.AttachmentPoint) -> None: ... + def setFace(self, face:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.CubeMapFace) -> None: ... + def setLayer(self, layer:int) -> None: ... + def setMipLevel(self, level:int) -> None: ... + def setTexture(self, texture:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture) -> None: ... + def texture(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractTexture: ... + + class QRenderTargetSelector(PySide2.Qt3DRender.QFrameGraphNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def outputs(self) -> typing.List: ... + def setOutputs(self, buffers:typing.List) -> None: ... + def setTarget(self, target:PySide2.Qt3DRender.Qt3DRender.QRenderTarget) -> None: ... + def target(self) -> PySide2.Qt3DRender.Qt3DRender.QRenderTarget: ... + + class QSceneLoader(PySide2.Qt3DCore.QComponent): + None_ : Qt3DRender.QSceneLoader = ... # 0x0 + UnknownComponent : Qt3DRender.QSceneLoader = ... # 0x0 + GeometryRendererComponent: Qt3DRender.QSceneLoader = ... # 0x1 + Loading : Qt3DRender.QSceneLoader = ... # 0x1 + Ready : Qt3DRender.QSceneLoader = ... # 0x2 + TransformComponent : Qt3DRender.QSceneLoader = ... # 0x2 + Error : Qt3DRender.QSceneLoader = ... # 0x3 + MaterialComponent : Qt3DRender.QSceneLoader = ... # 0x3 + LightComponent : Qt3DRender.QSceneLoader = ... # 0x4 + CameraLensComponent : Qt3DRender.QSceneLoader = ... # 0x5 + + class ComponentType(object): + UnknownComponent : Qt3DRender.QSceneLoader.ComponentType = ... # 0x0 + GeometryRendererComponent: Qt3DRender.QSceneLoader.ComponentType = ... # 0x1 + TransformComponent : Qt3DRender.QSceneLoader.ComponentType = ... # 0x2 + MaterialComponent : Qt3DRender.QSceneLoader.ComponentType = ... # 0x3 + LightComponent : Qt3DRender.QSceneLoader.ComponentType = ... # 0x4 + CameraLensComponent : Qt3DRender.QSceneLoader.ComponentType = ... # 0x5 + + class Status(object): + None_ : Qt3DRender.QSceneLoader.Status = ... # 0x0 + Loading : Qt3DRender.QSceneLoader.Status = ... # 0x1 + Ready : Qt3DRender.QSceneLoader.Status = ... # 0x2 + Error : Qt3DRender.QSceneLoader.Status = ... # 0x3 + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def component(self, entityName:str, componentType:PySide2.Qt3DRender.Qt3DRender.QSceneLoader.ComponentType) -> PySide2.Qt3DCore.Qt3DCore.QComponent: ... + def entity(self, entityName:str) -> PySide2.Qt3DCore.Qt3DCore.QEntity: ... + def entityNames(self) -> typing.List: ... + def setSource(self, arg:PySide2.QtCore.QUrl) -> None: ... + def setStatus(self, status:PySide2.Qt3DRender.Qt3DRender.QSceneLoader.Status) -> None: ... + def source(self) -> PySide2.QtCore.QUrl: ... + def status(self) -> PySide2.Qt3DRender.Qt3DRender.QSceneLoader.Status: ... + + class QScissorTest(PySide2.Qt3DRender.QRenderState): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def bottom(self) -> int: ... + def height(self) -> int: ... + def left(self) -> int: ... + def setBottom(self, bottom:int) -> None: ... + def setHeight(self, height:int) -> None: ... + def setLeft(self, left:int) -> None: ... + def setWidth(self, width:int) -> None: ... + def width(self) -> int: ... + + class QScreenRayCaster(PySide2.Qt3DRender.QAbstractRayCaster): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def position(self) -> PySide2.QtCore.QPoint: ... + def setPosition(self, position:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + def trigger(self) -> None: ... + @typing.overload + def trigger(self, position:PySide2.QtCore.QPoint) -> None: ... + + class QSeamlessCubemap(PySide2.Qt3DRender.QRenderState): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + + class QSetFence(PySide2.Qt3DRender.QFrameGraphNode): + NoHandle : Qt3DRender.QSetFence = ... # 0x0 + OpenGLFenceId : Qt3DRender.QSetFence = ... # 0x1 + + class HandleType(object): + NoHandle : Qt3DRender.QSetFence.HandleType = ... # 0x0 + OpenGLFenceId : Qt3DRender.QSetFence.HandleType = ... # 0x1 + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def handle(self) -> typing.Any: ... + def handleType(self) -> PySide2.Qt3DRender.Qt3DRender.QSetFence.HandleType: ... + + class QShaderData(PySide2.Qt3DCore.QComponent): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + + class QShaderImage(PySide2.Qt3DCore.QNode): + NoFormat : Qt3DRender.QShaderImage = ... # 0x0 + ReadOnly : Qt3DRender.QShaderImage = ... # 0x0 + Automatic : Qt3DRender.QShaderImage = ... # 0x1 + WriteOnly : Qt3DRender.QShaderImage = ... # 0x1 + ReadWrite : Qt3DRender.QShaderImage = ... # 0x2 + RGBA8_UNorm : Qt3DRender.QShaderImage = ... # 0x8058 + RGB10A2 : Qt3DRender.QShaderImage = ... # 0x8059 + RGBA16_UNorm : Qt3DRender.QShaderImage = ... # 0x805b + R8_UNorm : Qt3DRender.QShaderImage = ... # 0x8229 + R16_UNorm : Qt3DRender.QShaderImage = ... # 0x822a + RG8_UNorm : Qt3DRender.QShaderImage = ... # 0x822b + RG16_UNorm : Qt3DRender.QShaderImage = ... # 0x822c + R16F : Qt3DRender.QShaderImage = ... # 0x822d + R32F : Qt3DRender.QShaderImage = ... # 0x822e + RG16F : Qt3DRender.QShaderImage = ... # 0x822f + RG32F : Qt3DRender.QShaderImage = ... # 0x8230 + R8I : Qt3DRender.QShaderImage = ... # 0x8231 + R8U : Qt3DRender.QShaderImage = ... # 0x8232 + R16I : Qt3DRender.QShaderImage = ... # 0x8233 + R16U : Qt3DRender.QShaderImage = ... # 0x8234 + R32I : Qt3DRender.QShaderImage = ... # 0x8235 + R32U : Qt3DRender.QShaderImage = ... # 0x8236 + RG8I : Qt3DRender.QShaderImage = ... # 0x8237 + RG8U : Qt3DRender.QShaderImage = ... # 0x8238 + RG16I : Qt3DRender.QShaderImage = ... # 0x8239 + RG16U : Qt3DRender.QShaderImage = ... # 0x823a + RG32I : Qt3DRender.QShaderImage = ... # 0x823b + RG32U : Qt3DRender.QShaderImage = ... # 0x823c + RGBA32F : Qt3DRender.QShaderImage = ... # 0x8814 + RGBA16F : Qt3DRender.QShaderImage = ... # 0x881a + RG11B10F : Qt3DRender.QShaderImage = ... # 0x8c3a + RGBA32U : Qt3DRender.QShaderImage = ... # 0x8d70 + RGBA16U : Qt3DRender.QShaderImage = ... # 0x8d76 + RGBA8U : Qt3DRender.QShaderImage = ... # 0x8d7c + RGBA32I : Qt3DRender.QShaderImage = ... # 0x8d82 + RGBA16I : Qt3DRender.QShaderImage = ... # 0x8d88 + RGBA8I : Qt3DRender.QShaderImage = ... # 0x8d8e + R8_SNorm : Qt3DRender.QShaderImage = ... # 0x8f94 + RG8_SNorm : Qt3DRender.QShaderImage = ... # 0x8f95 + RGBA8_SNorm : Qt3DRender.QShaderImage = ... # 0x8f97 + R16_SNorm : Qt3DRender.QShaderImage = ... # 0x8f98 + RG16_SNorm : Qt3DRender.QShaderImage = ... # 0x8f99 + RGBA16_SNorm : Qt3DRender.QShaderImage = ... # 0x8f9b + RGB10A2U : Qt3DRender.QShaderImage = ... # 0x906f + + class Access(object): + ReadOnly : Qt3DRender.QShaderImage.Access = ... # 0x0 + WriteOnly : Qt3DRender.QShaderImage.Access = ... # 0x1 + ReadWrite : Qt3DRender.QShaderImage.Access = ... # 0x2 + + class ImageFormat(object): + NoFormat : Qt3DRender.QShaderImage.ImageFormat = ... # 0x0 + Automatic : Qt3DRender.QShaderImage.ImageFormat = ... # 0x1 + RGBA8_UNorm : Qt3DRender.QShaderImage.ImageFormat = ... # 0x8058 + RGB10A2 : Qt3DRender.QShaderImage.ImageFormat = ... # 0x8059 + RGBA16_UNorm : Qt3DRender.QShaderImage.ImageFormat = ... # 0x805b + R8_UNorm : Qt3DRender.QShaderImage.ImageFormat = ... # 0x8229 + R16_UNorm : Qt3DRender.QShaderImage.ImageFormat = ... # 0x822a + RG8_UNorm : Qt3DRender.QShaderImage.ImageFormat = ... # 0x822b + RG16_UNorm : Qt3DRender.QShaderImage.ImageFormat = ... # 0x822c + R16F : Qt3DRender.QShaderImage.ImageFormat = ... # 0x822d + R32F : Qt3DRender.QShaderImage.ImageFormat = ... # 0x822e + RG16F : Qt3DRender.QShaderImage.ImageFormat = ... # 0x822f + RG32F : Qt3DRender.QShaderImage.ImageFormat = ... # 0x8230 + R8I : Qt3DRender.QShaderImage.ImageFormat = ... # 0x8231 + R8U : Qt3DRender.QShaderImage.ImageFormat = ... # 0x8232 + R16I : Qt3DRender.QShaderImage.ImageFormat = ... # 0x8233 + R16U : Qt3DRender.QShaderImage.ImageFormat = ... # 0x8234 + R32I : Qt3DRender.QShaderImage.ImageFormat = ... # 0x8235 + R32U : Qt3DRender.QShaderImage.ImageFormat = ... # 0x8236 + RG8I : Qt3DRender.QShaderImage.ImageFormat = ... # 0x8237 + RG8U : Qt3DRender.QShaderImage.ImageFormat = ... # 0x8238 + RG16I : Qt3DRender.QShaderImage.ImageFormat = ... # 0x8239 + RG16U : Qt3DRender.QShaderImage.ImageFormat = ... # 0x823a + RG32I : Qt3DRender.QShaderImage.ImageFormat = ... # 0x823b + RG32U : Qt3DRender.QShaderImage.ImageFormat = ... # 0x823c + RGBA32F : Qt3DRender.QShaderImage.ImageFormat = ... # 0x8814 + RGBA16F : Qt3DRender.QShaderImage.ImageFormat = ... # 0x881a + RG11B10F : Qt3DRender.QShaderImage.ImageFormat = ... # 0x8c3a + RGBA32U : Qt3DRender.QShaderImage.ImageFormat = ... # 0x8d70 + RGBA16U : Qt3DRender.QShaderImage.ImageFormat = ... # 0x8d76 + RGBA8U : Qt3DRender.QShaderImage.ImageFormat = ... # 0x8d7c + RGBA32I : Qt3DRender.QShaderImage.ImageFormat = ... # 0x8d82 + RGBA16I : Qt3DRender.QShaderImage.ImageFormat = ... # 0x8d88 + RGBA8I : Qt3DRender.QShaderImage.ImageFormat = ... # 0x8d8e + R8_SNorm : Qt3DRender.QShaderImage.ImageFormat = ... # 0x8f94 + RG8_SNorm : Qt3DRender.QShaderImage.ImageFormat = ... # 0x8f95 + RGBA8_SNorm : Qt3DRender.QShaderImage.ImageFormat = ... # 0x8f97 + R16_SNorm : Qt3DRender.QShaderImage.ImageFormat = ... # 0x8f98 + RG16_SNorm : Qt3DRender.QShaderImage.ImageFormat = ... # 0x8f99 + RGBA16_SNorm : Qt3DRender.QShaderImage.ImageFormat = ... # 0x8f9b + RGB10A2U : Qt3DRender.QShaderImage.ImageFormat = ... # 0x906f + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def access(self) -> PySide2.Qt3DRender.Qt3DRender.QShaderImage.Access: ... + def format(self) -> PySide2.Qt3DRender.Qt3DRender.QShaderImage.ImageFormat: ... + def layer(self) -> int: ... + def layered(self) -> bool: ... + def mipLevel(self) -> int: ... + def setAccess(self, access:PySide2.Qt3DRender.Qt3DRender.QShaderImage.Access) -> None: ... + def setFormat(self, format:PySide2.Qt3DRender.Qt3DRender.QShaderImage.ImageFormat) -> None: ... + def setLayer(self, layer:int) -> None: ... + def setLayered(self, layered:bool) -> None: ... + def setMipLevel(self, mipLevel:int) -> None: ... + def setTexture(self, texture:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture) -> None: ... + def texture(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractTexture: ... + + class QShaderProgram(PySide2.Qt3DCore.QNode): + GLSL : Qt3DRender.QShaderProgram = ... # 0x0 + NotReady : Qt3DRender.QShaderProgram = ... # 0x0 + Vertex : Qt3DRender.QShaderProgram = ... # 0x0 + Fragment : Qt3DRender.QShaderProgram = ... # 0x1 + Ready : Qt3DRender.QShaderProgram = ... # 0x1 + SPIRV : Qt3DRender.QShaderProgram = ... # 0x1 + Error : Qt3DRender.QShaderProgram = ... # 0x2 + TessellationControl : Qt3DRender.QShaderProgram = ... # 0x2 + TessellationEvaluation : Qt3DRender.QShaderProgram = ... # 0x3 + Geometry : Qt3DRender.QShaderProgram = ... # 0x4 + Compute : Qt3DRender.QShaderProgram = ... # 0x5 + + class Format(object): + GLSL : Qt3DRender.QShaderProgram.Format = ... # 0x0 + SPIRV : Qt3DRender.QShaderProgram.Format = ... # 0x1 + + class ShaderType(object): + Vertex : Qt3DRender.QShaderProgram.ShaderType = ... # 0x0 + Fragment : Qt3DRender.QShaderProgram.ShaderType = ... # 0x1 + TessellationControl : Qt3DRender.QShaderProgram.ShaderType = ... # 0x2 + TessellationEvaluation : Qt3DRender.QShaderProgram.ShaderType = ... # 0x3 + Geometry : Qt3DRender.QShaderProgram.ShaderType = ... # 0x4 + Compute : Qt3DRender.QShaderProgram.ShaderType = ... # 0x5 + + class Status(object): + NotReady : Qt3DRender.QShaderProgram.Status = ... # 0x0 + Ready : Qt3DRender.QShaderProgram.Status = ... # 0x1 + Error : Qt3DRender.QShaderProgram.Status = ... # 0x2 + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def computeShaderCode(self) -> PySide2.QtCore.QByteArray: ... + def format(self) -> PySide2.Qt3DRender.Qt3DRender.QShaderProgram.Format: ... + def fragmentShaderCode(self) -> PySide2.QtCore.QByteArray: ... + def geometryShaderCode(self) -> PySide2.QtCore.QByteArray: ... + @staticmethod + def loadSource(sourceUrl:PySide2.QtCore.QUrl) -> PySide2.QtCore.QByteArray: ... + def log(self) -> str: ... + def setComputeShaderCode(self, computeShaderCode:PySide2.QtCore.QByteArray) -> None: ... + def setFormat(self, format:PySide2.Qt3DRender.Qt3DRender.QShaderProgram.Format) -> None: ... + def setFragmentShaderCode(self, fragmentShaderCode:PySide2.QtCore.QByteArray) -> None: ... + def setGeometryShaderCode(self, geometryShaderCode:PySide2.QtCore.QByteArray) -> None: ... + def setShaderCode(self, type:PySide2.Qt3DRender.Qt3DRender.QShaderProgram.ShaderType, shaderCode:PySide2.QtCore.QByteArray) -> None: ... + def setTessellationControlShaderCode(self, tessellationControlShaderCode:PySide2.QtCore.QByteArray) -> None: ... + def setTessellationEvaluationShaderCode(self, tessellationEvaluationShaderCode:PySide2.QtCore.QByteArray) -> None: ... + def setVertexShaderCode(self, vertexShaderCode:PySide2.QtCore.QByteArray) -> None: ... + def shaderCode(self, type:PySide2.Qt3DRender.Qt3DRender.QShaderProgram.ShaderType) -> PySide2.QtCore.QByteArray: ... + def status(self) -> PySide2.Qt3DRender.Qt3DRender.QShaderProgram.Status: ... + def tessellationControlShaderCode(self) -> PySide2.QtCore.QByteArray: ... + def tessellationEvaluationShaderCode(self) -> PySide2.QtCore.QByteArray: ... + def vertexShaderCode(self) -> PySide2.QtCore.QByteArray: ... + + class QShaderProgramBuilder(PySide2.Qt3DCore.QNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def computeShaderCode(self) -> PySide2.QtCore.QByteArray: ... + def computeShaderGraph(self) -> PySide2.QtCore.QUrl: ... + def enabledLayers(self) -> typing.List: ... + def fragmentShaderCode(self) -> PySide2.QtCore.QByteArray: ... + def fragmentShaderGraph(self) -> PySide2.QtCore.QUrl: ... + def geometryShaderCode(self) -> PySide2.QtCore.QByteArray: ... + def geometryShaderGraph(self) -> PySide2.QtCore.QUrl: ... + def setComputeShaderGraph(self, computeShaderGraph:PySide2.QtCore.QUrl) -> None: ... + def setEnabledLayers(self, layers:typing.Sequence) -> None: ... + def setFragmentShaderGraph(self, fragmentShaderGraph:PySide2.QtCore.QUrl) -> None: ... + def setGeometryShaderGraph(self, geometryShaderGraph:PySide2.QtCore.QUrl) -> None: ... + def setShaderProgram(self, program:PySide2.Qt3DRender.Qt3DRender.QShaderProgram) -> None: ... + def setTessellationControlShaderGraph(self, tessellationControlShaderGraph:PySide2.QtCore.QUrl) -> None: ... + def setTessellationEvaluationShaderGraph(self, tessellationEvaluationShaderGraph:PySide2.QtCore.QUrl) -> None: ... + def setVertexShaderGraph(self, vertexShaderGraph:PySide2.QtCore.QUrl) -> None: ... + def shaderProgram(self) -> PySide2.Qt3DRender.Qt3DRender.QShaderProgram: ... + def tessellationControlShaderCode(self) -> PySide2.QtCore.QByteArray: ... + def tessellationControlShaderGraph(self) -> PySide2.QtCore.QUrl: ... + def tessellationEvaluationShaderCode(self) -> PySide2.QtCore.QByteArray: ... + def tessellationEvaluationShaderGraph(self) -> PySide2.QtCore.QUrl: ... + def vertexShaderCode(self) -> PySide2.QtCore.QByteArray: ... + def vertexShaderGraph(self) -> PySide2.QtCore.QUrl: ... + + class QSharedGLTexture(PySide2.Qt3DRender.QAbstractTexture): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def setTextureId(self, id:int) -> None: ... + def textureId(self) -> int: ... + + class QSortPolicy(PySide2.Qt3DRender.QFrameGraphNode): + StateChangeCost : Qt3DRender.QSortPolicy = ... # 0x1 + BackToFront : Qt3DRender.QSortPolicy = ... # 0x2 + Material : Qt3DRender.QSortPolicy = ... # 0x4 + FrontToBack : Qt3DRender.QSortPolicy = ... # 0x8 + Texture : Qt3DRender.QSortPolicy = ... # 0x10 + Uniform : Qt3DRender.QSortPolicy = ... # 0x20 + + class SortType(object): + StateChangeCost : Qt3DRender.QSortPolicy.SortType = ... # 0x1 + BackToFront : Qt3DRender.QSortPolicy.SortType = ... # 0x2 + Material : Qt3DRender.QSortPolicy.SortType = ... # 0x4 + FrontToBack : Qt3DRender.QSortPolicy.SortType = ... # 0x8 + Texture : Qt3DRender.QSortPolicy.SortType = ... # 0x10 + Uniform : Qt3DRender.QSortPolicy.SortType = ... # 0x20 + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + @typing.overload + def setSortTypes(self, sortTypes:typing.List) -> None: ... + @typing.overload + def setSortTypes(self, sortTypesInt:typing.List) -> None: ... + def sortTypes(self) -> typing.List: ... + def sortTypesInt(self) -> typing.List: ... + + class QSpotLight(PySide2.Qt3DRender.QAbstractLight): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def constantAttenuation(self) -> float: ... + def cutOffAngle(self) -> float: ... + def linearAttenuation(self) -> float: ... + def localDirection(self) -> PySide2.QtGui.QVector3D: ... + def quadraticAttenuation(self) -> float: ... + def setConstantAttenuation(self, value:float) -> None: ... + def setCutOffAngle(self, cutOffAngle:float) -> None: ... + def setLinearAttenuation(self, value:float) -> None: ... + def setLocalDirection(self, localDirection:PySide2.QtGui.QVector3D) -> None: ... + def setQuadraticAttenuation(self, value:float) -> None: ... + + class QStencilMask(PySide2.Qt3DRender.QRenderState): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def backOutputMask(self) -> int: ... + def frontOutputMask(self) -> int: ... + def setBackOutputMask(self, backOutputMask:int) -> None: ... + def setFrontOutputMask(self, frontOutputMask:int) -> None: ... + + class QStencilOperation(PySide2.Qt3DRender.QRenderState): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def back(self) -> PySide2.Qt3DRender.Qt3DRender.QStencilOperationArguments: ... + def front(self) -> PySide2.Qt3DRender.Qt3DRender.QStencilOperationArguments: ... + + class QStencilOperationArguments(PySide2.QtCore.QObject): + Zero : Qt3DRender.QStencilOperationArguments = ... # 0x0 + Front : Qt3DRender.QStencilOperationArguments = ... # 0x404 + Back : Qt3DRender.QStencilOperationArguments = ... # 0x405 + FrontAndBack : Qt3DRender.QStencilOperationArguments = ... # 0x408 + Invert : Qt3DRender.QStencilOperationArguments = ... # 0x150a + Keep : Qt3DRender.QStencilOperationArguments = ... # 0x1e00 + Replace : Qt3DRender.QStencilOperationArguments = ... # 0x1e01 + Increment : Qt3DRender.QStencilOperationArguments = ... # 0x1e02 + Decrement : Qt3DRender.QStencilOperationArguments = ... # 0x1e03 + IncrementWrap : Qt3DRender.QStencilOperationArguments = ... # 0x8507 + DecrementWrap : Qt3DRender.QStencilOperationArguments = ... # 0x8508 + + class FaceMode(object): + Front : Qt3DRender.QStencilOperationArguments.FaceMode = ... # 0x404 + Back : Qt3DRender.QStencilOperationArguments.FaceMode = ... # 0x405 + FrontAndBack : Qt3DRender.QStencilOperationArguments.FaceMode = ... # 0x408 + + class Operation(object): + Zero : Qt3DRender.QStencilOperationArguments.Operation = ... # 0x0 + Invert : Qt3DRender.QStencilOperationArguments.Operation = ... # 0x150a + Keep : Qt3DRender.QStencilOperationArguments.Operation = ... # 0x1e00 + Replace : Qt3DRender.QStencilOperationArguments.Operation = ... # 0x1e01 + Increment : Qt3DRender.QStencilOperationArguments.Operation = ... # 0x1e02 + Decrement : Qt3DRender.QStencilOperationArguments.Operation = ... # 0x1e03 + IncrementWrap : Qt3DRender.QStencilOperationArguments.Operation = ... # 0x8507 + DecrementWrap : Qt3DRender.QStencilOperationArguments.Operation = ... # 0x8508 + def allTestsPassOperation(self) -> PySide2.Qt3DRender.Qt3DRender.QStencilOperationArguments.Operation: ... + def depthTestFailureOperation(self) -> PySide2.Qt3DRender.Qt3DRender.QStencilOperationArguments.Operation: ... + def faceMode(self) -> PySide2.Qt3DRender.Qt3DRender.QStencilOperationArguments.FaceMode: ... + def setAllTestsPassOperation(self, operation:PySide2.Qt3DRender.Qt3DRender.QStencilOperationArguments.Operation) -> None: ... + def setDepthTestFailureOperation(self, operation:PySide2.Qt3DRender.Qt3DRender.QStencilOperationArguments.Operation) -> None: ... + def setStencilTestFailureOperation(self, operation:PySide2.Qt3DRender.Qt3DRender.QStencilOperationArguments.Operation) -> None: ... + def stencilTestFailureOperation(self) -> PySide2.Qt3DRender.Qt3DRender.QStencilOperationArguments.Operation: ... + + class QStencilTest(PySide2.Qt3DRender.QRenderState): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def back(self) -> PySide2.Qt3DRender.Qt3DRender.QStencilTestArguments: ... + def front(self) -> PySide2.Qt3DRender.Qt3DRender.QStencilTestArguments: ... + + class QStencilTestArguments(PySide2.QtCore.QObject): + Never : Qt3DRender.QStencilTestArguments = ... # 0x200 + Less : Qt3DRender.QStencilTestArguments = ... # 0x201 + Equal : Qt3DRender.QStencilTestArguments = ... # 0x202 + LessOrEqual : Qt3DRender.QStencilTestArguments = ... # 0x203 + Greater : Qt3DRender.QStencilTestArguments = ... # 0x204 + NotEqual : Qt3DRender.QStencilTestArguments = ... # 0x205 + GreaterOrEqual : Qt3DRender.QStencilTestArguments = ... # 0x206 + Always : Qt3DRender.QStencilTestArguments = ... # 0x207 + Front : Qt3DRender.QStencilTestArguments = ... # 0x404 + Back : Qt3DRender.QStencilTestArguments = ... # 0x405 + FrontAndBack : Qt3DRender.QStencilTestArguments = ... # 0x408 + + class StencilFaceMode(object): + Front : Qt3DRender.QStencilTestArguments.StencilFaceMode = ... # 0x404 + Back : Qt3DRender.QStencilTestArguments.StencilFaceMode = ... # 0x405 + FrontAndBack : Qt3DRender.QStencilTestArguments.StencilFaceMode = ... # 0x408 + + class StencilFunction(object): + Never : Qt3DRender.QStencilTestArguments.StencilFunction = ... # 0x200 + Less : Qt3DRender.QStencilTestArguments.StencilFunction = ... # 0x201 + Equal : Qt3DRender.QStencilTestArguments.StencilFunction = ... # 0x202 + LessOrEqual : Qt3DRender.QStencilTestArguments.StencilFunction = ... # 0x203 + Greater : Qt3DRender.QStencilTestArguments.StencilFunction = ... # 0x204 + NotEqual : Qt3DRender.QStencilTestArguments.StencilFunction = ... # 0x205 + GreaterOrEqual : Qt3DRender.QStencilTestArguments.StencilFunction = ... # 0x206 + Always : Qt3DRender.QStencilTestArguments.StencilFunction = ... # 0x207 + def comparisonMask(self) -> int: ... + def faceMode(self) -> PySide2.Qt3DRender.Qt3DRender.QStencilTestArguments.StencilFaceMode: ... + def referenceValue(self) -> int: ... + def setComparisonMask(self, comparisonMask:int) -> None: ... + def setReferenceValue(self, referenceValue:int) -> None: ... + def setStencilFunction(self, stencilFunction:PySide2.Qt3DRender.Qt3DRender.QStencilTestArguments.StencilFunction) -> None: ... + def stencilFunction(self) -> PySide2.Qt3DRender.Qt3DRender.QStencilTestArguments.StencilFunction: ... + + class QTechnique(PySide2.Qt3DCore.QNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def addFilterKey(self, filterKey:PySide2.Qt3DRender.Qt3DRender.QFilterKey) -> None: ... + def addParameter(self, p:PySide2.Qt3DRender.Qt3DRender.QParameter) -> None: ... + def addRenderPass(self, pass_:PySide2.Qt3DRender.Qt3DRender.QRenderPass) -> None: ... + def filterKeys(self) -> typing.List: ... + def graphicsApiFilter(self) -> PySide2.Qt3DRender.Qt3DRender.QGraphicsApiFilter: ... + def parameters(self) -> typing.List: ... + def removeFilterKey(self, filterKey:PySide2.Qt3DRender.Qt3DRender.QFilterKey) -> None: ... + def removeParameter(self, p:PySide2.Qt3DRender.Qt3DRender.QParameter) -> None: ... + def removeRenderPass(self, pass_:PySide2.Qt3DRender.Qt3DRender.QRenderPass) -> None: ... + def renderPasses(self) -> typing.List: ... + + class QTechniqueFilter(PySide2.Qt3DRender.QFrameGraphNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def addMatch(self, filterKey:PySide2.Qt3DRender.Qt3DRender.QFilterKey) -> None: ... + def addParameter(self, p:PySide2.Qt3DRender.Qt3DRender.QParameter) -> None: ... + def matchAll(self) -> typing.List: ... + def parameters(self) -> typing.List: ... + def removeMatch(self, filterKey:PySide2.Qt3DRender.Qt3DRender.QFilterKey) -> None: ... + def removeParameter(self, p:PySide2.Qt3DRender.Qt3DRender.QParameter) -> None: ... + + class QTexture1D(PySide2.Qt3DRender.QAbstractTexture): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + + class QTexture1DArray(PySide2.Qt3DRender.QAbstractTexture): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + + class QTexture2D(PySide2.Qt3DRender.QAbstractTexture): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + + class QTexture2DArray(PySide2.Qt3DRender.QAbstractTexture): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + + class QTexture2DMultisample(PySide2.Qt3DRender.QAbstractTexture): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + + class QTexture2DMultisampleArray(PySide2.Qt3DRender.QAbstractTexture): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + + class QTexture3D(PySide2.Qt3DRender.QAbstractTexture): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + + class QTextureBuffer(PySide2.Qt3DRender.QAbstractTexture): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + + class QTextureCubeMap(PySide2.Qt3DRender.QAbstractTexture): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + + class QTextureCubeMapArray(PySide2.Qt3DRender.QAbstractTexture): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + + class QTextureData(Shiboken.Object): + + def __init__(self) -> None: ... + + def comparisonFunction(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.ComparisonFunction: ... + def comparisonMode(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.ComparisonMode: ... + def depth(self) -> int: ... + def format(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.TextureFormat: ... + def height(self) -> int: ... + def isAutoMipMapGenerationEnabled(self) -> bool: ... + def layers(self) -> int: ... + def magnificationFilter(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.Filter: ... + def maximumAnisotropy(self) -> float: ... + def minificationFilter(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.Filter: ... + def setAutoMipMapGenerationEnabled(self, isAutoMipMapGenerationEnabled:bool) -> None: ... + def setComparisonFunction(self, comparisonFunction:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.ComparisonFunction) -> None: ... + def setComparisonMode(self, comparisonMode:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.ComparisonMode) -> None: ... + def setDepth(self, depth:int) -> None: ... + def setFormat(self, arg__1:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.TextureFormat) -> None: ... + def setHeight(self, height:int) -> None: ... + def setLayers(self, layers:int) -> None: ... + def setMagnificationFilter(self, filter:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.Filter) -> None: ... + def setMaximumAnisotropy(self, maximumAnisotropy:float) -> None: ... + def setMinificationFilter(self, filter:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.Filter) -> None: ... + def setTarget(self, target:PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.Target) -> None: ... + def setWidth(self, width:int) -> None: ... + def setWrapModeX(self, wrapModeX:PySide2.Qt3DRender.Qt3DRender.QTextureWrapMode.WrapMode) -> None: ... + def setWrapModeY(self, wrapModeY:PySide2.Qt3DRender.Qt3DRender.QTextureWrapMode.WrapMode) -> None: ... + def setWrapModeZ(self, wrapModeZ:PySide2.Qt3DRender.Qt3DRender.QTextureWrapMode.WrapMode) -> None: ... + def target(self) -> PySide2.Qt3DRender.Qt3DRender.QAbstractTexture.Target: ... + def width(self) -> int: ... + def wrapModeX(self) -> PySide2.Qt3DRender.Qt3DRender.QTextureWrapMode.WrapMode: ... + def wrapModeY(self) -> PySide2.Qt3DRender.Qt3DRender.QTextureWrapMode.WrapMode: ... + def wrapModeZ(self) -> PySide2.Qt3DRender.Qt3DRender.QTextureWrapMode.WrapMode: ... + + class QTextureGenerator(PySide2.Qt3DRender.QAbstractFunctor): ... + + class QTextureImage(PySide2.Qt3DRender.QAbstractTextureImage): + None_ : Qt3DRender.QTextureImage = ... # 0x0 + Loading : Qt3DRender.QTextureImage = ... # 0x1 + Ready : Qt3DRender.QTextureImage = ... # 0x2 + Error : Qt3DRender.QTextureImage = ... # 0x3 + + class Status(object): + None_ : Qt3DRender.QTextureImage.Status = ... # 0x0 + Loading : Qt3DRender.QTextureImage.Status = ... # 0x1 + Ready : Qt3DRender.QTextureImage.Status = ... # 0x2 + Error : Qt3DRender.QTextureImage.Status = ... # 0x3 + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def isMirrored(self) -> bool: ... + def setMirrored(self, mirrored:bool) -> None: ... + def setSource(self, source:PySide2.QtCore.QUrl) -> None: ... + def setStatus(self, status:PySide2.Qt3DRender.Qt3DRender.QTextureImage.Status) -> None: ... + def source(self) -> PySide2.QtCore.QUrl: ... + def status(self) -> PySide2.Qt3DRender.Qt3DRender.QTextureImage.Status: ... + + class QTextureImageData(Shiboken.Object): + + def __init__(self) -> None: ... + + def cleanup(self) -> None: ... + def data(self, layer:int=..., face:int=..., mipmapLevel:int=...) -> PySide2.QtCore.QByteArray: ... + def depth(self) -> int: ... + def faces(self) -> int: ... + def format(self) -> PySide2.QtGui.QOpenGLTexture.TextureFormat: ... + def height(self) -> int: ... + def isCompressed(self) -> bool: ... + def layers(self) -> int: ... + def mipLevels(self) -> int: ... + def pixelFormat(self) -> PySide2.QtGui.QOpenGLTexture.PixelFormat: ... + def pixelType(self) -> PySide2.QtGui.QOpenGLTexture.PixelType: ... + def setData(self, data:PySide2.QtCore.QByteArray, blockSize:int, isCompressed:bool=...) -> None: ... + def setDepth(self, depth:int) -> None: ... + def setFaces(self, faces:int) -> None: ... + def setFormat(self, format:PySide2.QtGui.QOpenGLTexture.TextureFormat) -> None: ... + def setHeight(self, height:int) -> None: ... + def setImage(self, arg__1:PySide2.QtGui.QImage) -> None: ... + def setLayers(self, layers:int) -> None: ... + def setMipLevels(self, mipLevels:int) -> None: ... + def setPixelFormat(self, pixelFormat:PySide2.QtGui.QOpenGLTexture.PixelFormat) -> None: ... + def setPixelType(self, pixelType:PySide2.QtGui.QOpenGLTexture.PixelType) -> None: ... + def setTarget(self, target:PySide2.QtGui.QOpenGLTexture.Target) -> None: ... + def setWidth(self, width:int) -> None: ... + def target(self) -> PySide2.QtGui.QOpenGLTexture.Target: ... + def width(self) -> int: ... + + class QTextureImageDataGenerator(PySide2.Qt3DRender.QAbstractFunctor): ... + + class QTextureLoader(PySide2.Qt3DRender.QAbstractTexture): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def isMirrored(self) -> bool: ... + def setMirrored(self, mirrored:bool) -> None: ... + def setSource(self, source:PySide2.QtCore.QUrl) -> None: ... + def source(self) -> PySide2.QtCore.QUrl: ... + + class QTextureRectangle(PySide2.Qt3DRender.QAbstractTexture): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + + class QTextureWrapMode(PySide2.QtCore.QObject): + Repeat : Qt3DRender.QTextureWrapMode = ... # 0x2901 + ClampToBorder : Qt3DRender.QTextureWrapMode = ... # 0x812d + ClampToEdge : Qt3DRender.QTextureWrapMode = ... # 0x812f + MirroredRepeat : Qt3DRender.QTextureWrapMode = ... # 0x8370 + + class WrapMode(object): + Repeat : Qt3DRender.QTextureWrapMode.WrapMode = ... # 0x2901 + ClampToBorder : Qt3DRender.QTextureWrapMode.WrapMode = ... # 0x812d + ClampToEdge : Qt3DRender.QTextureWrapMode.WrapMode = ... # 0x812f + MirroredRepeat : Qt3DRender.QTextureWrapMode.WrapMode = ... # 0x8370 + + @typing.overload + def __init__(self, wrapMode:PySide2.Qt3DRender.Qt3DRender.QTextureWrapMode.WrapMode=..., parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, x:PySide2.Qt3DRender.Qt3DRender.QTextureWrapMode.WrapMode, y:PySide2.Qt3DRender.Qt3DRender.QTextureWrapMode.WrapMode, z:PySide2.Qt3DRender.Qt3DRender.QTextureWrapMode.WrapMode, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def setX(self, x:PySide2.Qt3DRender.Qt3DRender.QTextureWrapMode.WrapMode) -> None: ... + def setY(self, y:PySide2.Qt3DRender.Qt3DRender.QTextureWrapMode.WrapMode) -> None: ... + def setZ(self, z:PySide2.Qt3DRender.Qt3DRender.QTextureWrapMode.WrapMode) -> None: ... + def x(self) -> PySide2.Qt3DRender.Qt3DRender.QTextureWrapMode.WrapMode: ... + def y(self) -> PySide2.Qt3DRender.Qt3DRender.QTextureWrapMode.WrapMode: ... + def z(self) -> PySide2.Qt3DRender.Qt3DRender.QTextureWrapMode.WrapMode: ... + + class QViewport(PySide2.Qt3DRender.QFrameGraphNode): + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def gamma(self) -> float: ... + def normalizedRect(self) -> PySide2.QtCore.QRectF: ... + def setGamma(self, gamma:float) -> None: ... + def setNormalizedRect(self, normalizedRect:PySide2.QtCore.QRectF) -> None: ... + + class QWaitFence(PySide2.Qt3DRender.QFrameGraphNode): + NoHandle : Qt3DRender.QWaitFence = ... # 0x0 + OpenGLFenceId : Qt3DRender.QWaitFence = ... # 0x1 + + class HandleType(object): + NoHandle : Qt3DRender.QWaitFence.HandleType = ... # 0x0 + OpenGLFenceId : Qt3DRender.QWaitFence.HandleType = ... # 0x1 + + def __init__(self, parent:typing.Optional[PySide2.Qt3DCore.Qt3DCore.QNode]=...) -> None: ... + + def handle(self) -> typing.Any: ... + def handleType(self) -> PySide2.Qt3DRender.Qt3DRender.QWaitFence.HandleType: ... + def setHandle(self, handle:typing.Any) -> None: ... + def setHandleType(self, type:PySide2.Qt3DRender.Qt3DRender.QWaitFence.HandleType) -> None: ... + def setTimeout(self, timeout:int) -> None: ... + def setWaitOnCPU(self, waitOnCPU:bool) -> None: ... + def timeout(self) -> int: ... + def waitOnCPU(self) -> bool: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/Qt53DAnimation.dll b/venv/Lib/site-packages/PySide2/Qt53DAnimation.dll new file mode 100644 index 0000000..f889b70 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt53DAnimation.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt53DCore.dll b/venv/Lib/site-packages/PySide2/Qt53DCore.dll new file mode 100644 index 0000000..073e5e0 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt53DCore.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt53DExtras.dll b/venv/Lib/site-packages/PySide2/Qt53DExtras.dll new file mode 100644 index 0000000..93a8164 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt53DExtras.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt53DInput.dll b/venv/Lib/site-packages/PySide2/Qt53DInput.dll new file mode 100644 index 0000000..43b2254 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt53DInput.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt53DLogic.dll b/venv/Lib/site-packages/PySide2/Qt53DLogic.dll new file mode 100644 index 0000000..dfd1a65 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt53DLogic.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt53DQuick.dll b/venv/Lib/site-packages/PySide2/Qt53DQuick.dll new file mode 100644 index 0000000..31287c4 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt53DQuick.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt53DQuickAnimation.dll b/venv/Lib/site-packages/PySide2/Qt53DQuickAnimation.dll new file mode 100644 index 0000000..08ac520 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt53DQuickAnimation.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt53DQuickExtras.dll b/venv/Lib/site-packages/PySide2/Qt53DQuickExtras.dll new file mode 100644 index 0000000..65888ec Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt53DQuickExtras.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt53DQuickInput.dll b/venv/Lib/site-packages/PySide2/Qt53DQuickInput.dll new file mode 100644 index 0000000..9efb517 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt53DQuickInput.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt53DQuickRender.dll b/venv/Lib/site-packages/PySide2/Qt53DQuickRender.dll new file mode 100644 index 0000000..d83bd6f Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt53DQuickRender.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt53DQuickScene2D.dll b/venv/Lib/site-packages/PySide2/Qt53DQuickScene2D.dll new file mode 100644 index 0000000..bb1b1ee Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt53DQuickScene2D.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt53DRender.dll b/venv/Lib/site-packages/PySide2/Qt53DRender.dll new file mode 100644 index 0000000..ff0cd77 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt53DRender.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Bluetooth.dll b/venv/Lib/site-packages/PySide2/Qt5Bluetooth.dll new file mode 100644 index 0000000..66bd6d2 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Bluetooth.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Bodymovin.dll b/venv/Lib/site-packages/PySide2/Qt5Bodymovin.dll new file mode 100644 index 0000000..869af70 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Bodymovin.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Charts.dll b/venv/Lib/site-packages/PySide2/Qt5Charts.dll new file mode 100644 index 0000000..9719ffe Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Charts.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Concurrent.dll b/venv/Lib/site-packages/PySide2/Qt5Concurrent.dll new file mode 100644 index 0000000..c52abec Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Concurrent.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Core.dll b/venv/Lib/site-packages/PySide2/Qt5Core.dll new file mode 100644 index 0000000..0de9728 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Core.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5DBus.dll b/venv/Lib/site-packages/PySide2/Qt5DBus.dll new file mode 100644 index 0000000..7ff5716 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5DBus.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5DataVisualization.dll b/venv/Lib/site-packages/PySide2/Qt5DataVisualization.dll new file mode 100644 index 0000000..2026d4b Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5DataVisualization.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Designer.dll b/venv/Lib/site-packages/PySide2/Qt5Designer.dll new file mode 100644 index 0000000..185bd44 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Designer.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5DesignerComponents.dll b/venv/Lib/site-packages/PySide2/Qt5DesignerComponents.dll new file mode 100644 index 0000000..f4e0e04 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5DesignerComponents.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Gamepad.dll b/venv/Lib/site-packages/PySide2/Qt5Gamepad.dll new file mode 100644 index 0000000..a674ef1 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Gamepad.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Gui.dll b/venv/Lib/site-packages/PySide2/Qt5Gui.dll new file mode 100644 index 0000000..ebb89c3 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Gui.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Help.dll b/venv/Lib/site-packages/PySide2/Qt5Help.dll new file mode 100644 index 0000000..2e7d227 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Help.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Location.dll b/venv/Lib/site-packages/PySide2/Qt5Location.dll new file mode 100644 index 0000000..d709c2a Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Location.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Multimedia.dll b/venv/Lib/site-packages/PySide2/Qt5Multimedia.dll new file mode 100644 index 0000000..5da0f64 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Multimedia.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5MultimediaQuick.dll b/venv/Lib/site-packages/PySide2/Qt5MultimediaQuick.dll new file mode 100644 index 0000000..bd8fef7 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5MultimediaQuick.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5MultimediaWidgets.dll b/venv/Lib/site-packages/PySide2/Qt5MultimediaWidgets.dll new file mode 100644 index 0000000..2c6a3f7 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5MultimediaWidgets.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Network.dll b/venv/Lib/site-packages/PySide2/Qt5Network.dll new file mode 100644 index 0000000..2df4013 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Network.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5NetworkAuth.dll b/venv/Lib/site-packages/PySide2/Qt5NetworkAuth.dll new file mode 100644 index 0000000..f29b5a9 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5NetworkAuth.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Nfc.dll b/venv/Lib/site-packages/PySide2/Qt5Nfc.dll new file mode 100644 index 0000000..e2e72df Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Nfc.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5OpenGL.dll b/venv/Lib/site-packages/PySide2/Qt5OpenGL.dll new file mode 100644 index 0000000..02bf11f Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5OpenGL.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Pdf.dll b/venv/Lib/site-packages/PySide2/Qt5Pdf.dll new file mode 100644 index 0000000..fe0b793 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Pdf.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5PdfWidgets.dll b/venv/Lib/site-packages/PySide2/Qt5PdfWidgets.dll new file mode 100644 index 0000000..31b14a6 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5PdfWidgets.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Positioning.dll b/venv/Lib/site-packages/PySide2/Qt5Positioning.dll new file mode 100644 index 0000000..299ffb2 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Positioning.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5PositioningQuick.dll b/venv/Lib/site-packages/PySide2/Qt5PositioningQuick.dll new file mode 100644 index 0000000..3c5349f Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5PositioningQuick.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5PrintSupport.dll b/venv/Lib/site-packages/PySide2/Qt5PrintSupport.dll new file mode 100644 index 0000000..06e32a5 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5PrintSupport.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Purchasing.dll b/venv/Lib/site-packages/PySide2/Qt5Purchasing.dll new file mode 100644 index 0000000..3dd4d57 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Purchasing.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Qml.dll b/venv/Lib/site-packages/PySide2/Qt5Qml.dll new file mode 100644 index 0000000..14560e3 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Qml.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5QmlModels.dll b/venv/Lib/site-packages/PySide2/Qt5QmlModels.dll new file mode 100644 index 0000000..0d27be3 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5QmlModels.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5QmlWorkerScript.dll b/venv/Lib/site-packages/PySide2/Qt5QmlWorkerScript.dll new file mode 100644 index 0000000..9a1da0a Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5QmlWorkerScript.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Quick.dll b/venv/Lib/site-packages/PySide2/Qt5Quick.dll new file mode 100644 index 0000000..08ba72e Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Quick.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Quick3D.dll b/venv/Lib/site-packages/PySide2/Qt5Quick3D.dll new file mode 100644 index 0000000..f75f67b Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Quick3D.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Quick3DAssetImport.dll b/venv/Lib/site-packages/PySide2/Qt5Quick3DAssetImport.dll new file mode 100644 index 0000000..c58f3da Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Quick3DAssetImport.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Quick3DRender.dll b/venv/Lib/site-packages/PySide2/Qt5Quick3DRender.dll new file mode 100644 index 0000000..08e8061 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Quick3DRender.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Quick3DRuntimeRender.dll b/venv/Lib/site-packages/PySide2/Qt5Quick3DRuntimeRender.dll new file mode 100644 index 0000000..32fdfbf Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Quick3DRuntimeRender.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Quick3DUtils.dll b/venv/Lib/site-packages/PySide2/Qt5Quick3DUtils.dll new file mode 100644 index 0000000..ee42f23 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Quick3DUtils.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5QuickControls2.dll b/venv/Lib/site-packages/PySide2/Qt5QuickControls2.dll new file mode 100644 index 0000000..18ff011 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5QuickControls2.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5QuickParticles.dll b/venv/Lib/site-packages/PySide2/Qt5QuickParticles.dll new file mode 100644 index 0000000..967fd2b Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5QuickParticles.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5QuickShapes.dll b/venv/Lib/site-packages/PySide2/Qt5QuickShapes.dll new file mode 100644 index 0000000..d994f28 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5QuickShapes.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5QuickTemplates2.dll b/venv/Lib/site-packages/PySide2/Qt5QuickTemplates2.dll new file mode 100644 index 0000000..48919aa Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5QuickTemplates2.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5QuickTest.dll b/venv/Lib/site-packages/PySide2/Qt5QuickTest.dll new file mode 100644 index 0000000..3ff28c4 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5QuickTest.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5QuickWidgets.dll b/venv/Lib/site-packages/PySide2/Qt5QuickWidgets.dll new file mode 100644 index 0000000..ed252de Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5QuickWidgets.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5RemoteObjects.dll b/venv/Lib/site-packages/PySide2/Qt5RemoteObjects.dll new file mode 100644 index 0000000..013a9eb Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5RemoteObjects.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Script.dll b/venv/Lib/site-packages/PySide2/Qt5Script.dll new file mode 100644 index 0000000..59296f5 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Script.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5ScriptTools.dll b/venv/Lib/site-packages/PySide2/Qt5ScriptTools.dll new file mode 100644 index 0000000..656de2d Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5ScriptTools.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Scxml.dll b/venv/Lib/site-packages/PySide2/Qt5Scxml.dll new file mode 100644 index 0000000..7a56059 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Scxml.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Sensors.dll b/venv/Lib/site-packages/PySide2/Qt5Sensors.dll new file mode 100644 index 0000000..dc11ed2 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Sensors.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5SerialBus.dll b/venv/Lib/site-packages/PySide2/Qt5SerialBus.dll new file mode 100644 index 0000000..3c39f35 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5SerialBus.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5SerialPort.dll b/venv/Lib/site-packages/PySide2/Qt5SerialPort.dll new file mode 100644 index 0000000..5cdd7c8 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5SerialPort.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Sql.dll b/venv/Lib/site-packages/PySide2/Qt5Sql.dll new file mode 100644 index 0000000..09d57ed Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Sql.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Svg.dll b/venv/Lib/site-packages/PySide2/Qt5Svg.dll new file mode 100644 index 0000000..0e6c7b1 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Svg.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Test.dll b/venv/Lib/site-packages/PySide2/Qt5Test.dll new file mode 100644 index 0000000..0b2ec5b Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Test.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5TextToSpeech.dll b/venv/Lib/site-packages/PySide2/Qt5TextToSpeech.dll new file mode 100644 index 0000000..d821060 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5TextToSpeech.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5VirtualKeyboard.dll b/venv/Lib/site-packages/PySide2/Qt5VirtualKeyboard.dll new file mode 100644 index 0000000..d498a7f Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5VirtualKeyboard.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5WebChannel.dll b/venv/Lib/site-packages/PySide2/Qt5WebChannel.dll new file mode 100644 index 0000000..8dd2f79 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5WebChannel.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5WebEngine.dll b/venv/Lib/site-packages/PySide2/Qt5WebEngine.dll new file mode 100644 index 0000000..52cad98 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5WebEngine.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5WebEngineCore.dll b/venv/Lib/site-packages/PySide2/Qt5WebEngineCore.dll new file mode 100644 index 0000000..3cced84 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5WebEngineCore.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5WebEngineWidgets.dll b/venv/Lib/site-packages/PySide2/Qt5WebEngineWidgets.dll new file mode 100644 index 0000000..377f5a7 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5WebEngineWidgets.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5WebSockets.dll b/venv/Lib/site-packages/PySide2/Qt5WebSockets.dll new file mode 100644 index 0000000..8c0733f Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5WebSockets.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5WebView.dll b/venv/Lib/site-packages/PySide2/Qt5WebView.dll new file mode 100644 index 0000000..0715722 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5WebView.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Widgets.dll b/venv/Lib/site-packages/PySide2/Qt5Widgets.dll new file mode 100644 index 0000000..67ba11c Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Widgets.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5WinExtras.dll b/venv/Lib/site-packages/PySide2/Qt5WinExtras.dll new file mode 100644 index 0000000..9f404ae Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5WinExtras.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5Xml.dll b/venv/Lib/site-packages/PySide2/Qt5Xml.dll new file mode 100644 index 0000000..f6e2ca8 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5Xml.dll differ diff --git a/venv/Lib/site-packages/PySide2/Qt5XmlPatterns.dll b/venv/Lib/site-packages/PySide2/Qt5XmlPatterns.dll new file mode 100644 index 0000000..b1a3daa Binary files /dev/null and b/venv/Lib/site-packages/PySide2/Qt5XmlPatterns.dll differ diff --git a/venv/Lib/site-packages/PySide2/QtAxContainer.pyd b/venv/Lib/site-packages/PySide2/QtAxContainer.pyd new file mode 100644 index 0000000..8fcf027 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtAxContainer.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtAxContainer.pyi b/venv/Lib/site-packages/PySide2/QtAxContainer.pyi new file mode 100644 index 0000000..81aa0e2 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtAxContainer.pyi @@ -0,0 +1,226 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtAxContainer, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtAxContainer +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtGui +import PySide2.QtWidgets +import PySide2.QtAxContainer + + +class QAxBase(Shiboken.Object): + + def __init__(self) -> None: ... + + def __lshift__(self, s:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __rshift__(self, s:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + @staticmethod + def argumentsToList(var1:typing.Any, var2:typing.Any, var3:typing.Any, var4:typing.Any, var5:typing.Any, var6:typing.Any, var7:typing.Any, var8:typing.Any) -> typing.List: ... + def asVariant(self) -> typing.Any: ... + def classContext(self) -> int: ... + def className(self) -> bytes: ... + def clear(self) -> None: ... + def control(self) -> str: ... + def disableClassInfo(self) -> None: ... + def disableEventSink(self) -> None: ... + def disableMetaObject(self) -> None: ... + @typing.overload + def dynamicCall(self, name:bytes, v1:typing.Any=..., v2:typing.Any=..., v3:typing.Any=..., v4:typing.Any=..., v5:typing.Any=..., v6:typing.Any=..., v7:typing.Any=..., v8:typing.Any=...) -> typing.Any: ... + @typing.overload + def dynamicCall(self, name:bytes, vars:typing.Sequence) -> typing.Any: ... + def fallbackMetaObject(self) -> PySide2.QtCore.QMetaObject: ... + def generateDocumentation(self) -> str: ... + def indexOfVerb(self, verb:str) -> int: ... + def initializeFrom(self, that:PySide2.QtAxContainer.QAxBase) -> None: ... + def internalRelease(self) -> None: ... + def isNull(self) -> bool: ... + def propertyBag(self) -> typing.Dict: ... + def propertyWritable(self, arg__1:bytes) -> bool: ... + def qObject(self) -> PySide2.QtCore.QObject: ... + @typing.overload + def querySubObject(self, name:bytes, v1:typing.Any=..., v2:typing.Any=..., v3:typing.Any=..., v4:typing.Any=..., v5:typing.Any=..., v6:typing.Any=..., v7:typing.Any=..., v8:typing.Any=...) -> PySide2.QtAxContainer.QAxObject: ... + @typing.overload + def querySubObject(self, name:bytes, vars:typing.Sequence) -> PySide2.QtAxContainer.QAxObject: ... + def setClassContext(self, classContext:int) -> None: ... + def setControl(self, arg__1:str) -> bool: ... + def setPropertyBag(self, arg__1:typing.Dict) -> None: ... + def setPropertyWritable(self, arg__1:bytes, arg__2:bool) -> None: ... + def verbs(self) -> typing.List: ... + + +class QAxObject(PySide2.QtCore.QObject, PySide2.QtAxContainer.QAxBase): + + @typing.overload + def __init__(self, c:str, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def className(self) -> bytes: ... + def doVerb(self, verb:str) -> bool: ... + def fallbackMetaObject(self) -> PySide2.QtCore.QMetaObject: ... + def qObject(self) -> PySide2.QtCore.QObject: ... + + +class QAxScript(PySide2.QtCore.QObject): + FunctionNames : QAxScript = ... # 0x0 + FunctionSignatures : QAxScript = ... # 0x1 + + class FunctionFlags(object): + FunctionNames : QAxScript.FunctionFlags = ... # 0x0 + FunctionSignatures : QAxScript.FunctionFlags = ... # 0x1 + + def __init__(self, name:str, manager:PySide2.QtAxContainer.QAxScriptManager) -> None: ... + + @typing.overload + def call(self, function:str, arguments:typing.Sequence) -> typing.Any: ... + @typing.overload + def call(self, function:str, v1:typing.Any=..., v2:typing.Any=..., v3:typing.Any=..., v4:typing.Any=..., v5:typing.Any=..., v6:typing.Any=..., v7:typing.Any=..., v8:typing.Any=...) -> typing.Any: ... + def functions(self, arg__1:PySide2.QtAxContainer.QAxScript.FunctionFlags=...) -> typing.List: ... + def load(self, code:str, language:str=...) -> bool: ... + def scriptCode(self) -> str: ... + def scriptEngine(self) -> PySide2.QtAxContainer.QAxScriptEngine: ... + def scriptName(self) -> str: ... + + +class QAxScriptEngine(PySide2.QtAxContainer.QAxObject): + Uninitialized : QAxScriptEngine = ... # 0x0 + Started : QAxScriptEngine = ... # 0x1 + Connected : QAxScriptEngine = ... # 0x2 + Disconnected : QAxScriptEngine = ... # 0x3 + Closed : QAxScriptEngine = ... # 0x4 + Initialized : QAxScriptEngine = ... # 0x5 + + class State(object): + Uninitialized : QAxScriptEngine.State = ... # 0x0 + Started : QAxScriptEngine.State = ... # 0x1 + Connected : QAxScriptEngine.State = ... # 0x2 + Disconnected : QAxScriptEngine.State = ... # 0x3 + Closed : QAxScriptEngine.State = ... # 0x4 + Initialized : QAxScriptEngine.State = ... # 0x5 + + def __init__(self, language:str, script:PySide2.QtAxContainer.QAxScript) -> None: ... + + def addItem(self, name:str) -> None: ... + def hasIntrospection(self) -> bool: ... + def isValid(self) -> bool: ... + def scriptLanguage(self) -> str: ... + def setState(self, st:PySide2.QtAxContainer.QAxScriptEngine.State) -> None: ... + def state(self) -> PySide2.QtAxContainer.QAxScriptEngine.State: ... + + +class QAxScriptManager(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def addObject(self, object:PySide2.QtAxContainer.QAxBase) -> None: ... + @typing.overload + def call(self, function:str, arguments:typing.Sequence) -> typing.Any: ... + @typing.overload + def call(self, function:str, v1:typing.Any=..., v2:typing.Any=..., v3:typing.Any=..., v4:typing.Any=..., v5:typing.Any=..., v6:typing.Any=..., v7:typing.Any=..., v8:typing.Any=...) -> typing.Any: ... + def functions(self, arg__1:PySide2.QtAxContainer.QAxScript.FunctionFlags=...) -> typing.List: ... + @typing.overload + def load(self, code:str, name:str, language:str) -> PySide2.QtAxContainer.QAxScript: ... + @typing.overload + def load(self, file:str, name:str) -> PySide2.QtAxContainer.QAxScript: ... + @staticmethod + def registerEngine(name:str, extension:str, code:str=...) -> bool: ... + def script(self, name:str) -> PySide2.QtAxContainer.QAxScript: ... + @staticmethod + def scriptFileFilter() -> str: ... + def scriptNames(self) -> typing.List: ... + + +class QAxSelect(PySide2.QtWidgets.QDialog): + SandboxingNone : QAxSelect = ... # 0x0 + SandboxingProcess : QAxSelect = ... # 0x1 + SandboxingLowIntegrity : QAxSelect = ... # 0x2 + + class SandboxingLevel(object): + SandboxingNone : QAxSelect.SandboxingLevel = ... # 0x0 + SandboxingProcess : QAxSelect.SandboxingLevel = ... # 0x1 + SandboxingLowIntegrity : QAxSelect.SandboxingLevel = ... # 0x2 + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., flags:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + + def clsid(self) -> str: ... + def sandboxingLevel(self) -> PySide2.QtAxContainer.QAxSelect.SandboxingLevel: ... + + +class QAxWidget(PySide2.QtWidgets.QWidget, PySide2.QtAxContainer.QAxBase): + + @typing.overload + def __init__(self, c:str, parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., f:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., f:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + + def changeEvent(self, e:PySide2.QtCore.QEvent) -> None: ... + def className(self) -> bytes: ... + def clear(self) -> None: ... + @typing.overload + def createHostWindow(self, arg__1:bool) -> bool: ... + @typing.overload + def createHostWindow(self, arg__1:bool, arg__2:PySide2.QtCore.QByteArray) -> bool: ... + def doVerb(self, verb:str) -> bool: ... + def fallbackMetaObject(self) -> PySide2.QtCore.QMetaObject: ... + def minimumSizeHint(self) -> PySide2.QtCore.QSize: ... + def qObject(self) -> PySide2.QtCore.QObject: ... + def resizeEvent(self, arg__1:PySide2.QtGui.QResizeEvent) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def translateKeyEvent(self, message:int, keycode:int) -> bool: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtCharts.pyd b/venv/Lib/site-packages/PySide2/QtCharts.pyd new file mode 100644 index 0000000..1b15e5d Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtCharts.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtCharts.pyi b/venv/Lib/site-packages/PySide2/QtCharts.pyi new file mode 100644 index 0000000..5b1c932 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtCharts.pyi @@ -0,0 +1,1316 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtCharts, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtCharts +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtGui +import PySide2.QtWidgets +import PySide2.QtCharts + + +class QtCharts(Shiboken.Object): + + class QAbstractAxis(PySide2.QtCore.QObject): + AxisTypeNoAxis : QtCharts.QAbstractAxis = ... # 0x0 + AxisTypeValue : QtCharts.QAbstractAxis = ... # 0x1 + AxisTypeBarCategory : QtCharts.QAbstractAxis = ... # 0x2 + AxisTypeCategory : QtCharts.QAbstractAxis = ... # 0x4 + AxisTypeDateTime : QtCharts.QAbstractAxis = ... # 0x8 + AxisTypeLogValue : QtCharts.QAbstractAxis = ... # 0x10 + + class AxisType(object): + AxisTypeNoAxis : QtCharts.QAbstractAxis.AxisType = ... # 0x0 + AxisTypeValue : QtCharts.QAbstractAxis.AxisType = ... # 0x1 + AxisTypeBarCategory : QtCharts.QAbstractAxis.AxisType = ... # 0x2 + AxisTypeCategory : QtCharts.QAbstractAxis.AxisType = ... # 0x4 + AxisTypeDateTime : QtCharts.QAbstractAxis.AxisType = ... # 0x8 + AxisTypeLogValue : QtCharts.QAbstractAxis.AxisType = ... # 0x10 + def alignment(self) -> PySide2.QtCore.Qt.Alignment: ... + def gridLineColor(self) -> PySide2.QtGui.QColor: ... + def gridLinePen(self) -> PySide2.QtGui.QPen: ... + def hide(self) -> None: ... + def isGridLineVisible(self) -> bool: ... + def isLineVisible(self) -> bool: ... + def isMinorGridLineVisible(self) -> bool: ... + def isReverse(self) -> bool: ... + def isTitleVisible(self) -> bool: ... + def isVisible(self) -> bool: ... + def labelsAngle(self) -> int: ... + def labelsBrush(self) -> PySide2.QtGui.QBrush: ... + def labelsColor(self) -> PySide2.QtGui.QColor: ... + def labelsEditable(self) -> bool: ... + def labelsFont(self) -> PySide2.QtGui.QFont: ... + def labelsVisible(self) -> bool: ... + def linePen(self) -> PySide2.QtGui.QPen: ... + def linePenColor(self) -> PySide2.QtGui.QColor: ... + def minorGridLineColor(self) -> PySide2.QtGui.QColor: ... + def minorGridLinePen(self) -> PySide2.QtGui.QPen: ... + def orientation(self) -> PySide2.QtCore.Qt.Orientation: ... + def setGridLineColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setGridLinePen(self, pen:PySide2.QtGui.QPen) -> None: ... + def setGridLineVisible(self, visible:bool=...) -> None: ... + def setLabelsAngle(self, angle:int) -> None: ... + def setLabelsBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setLabelsColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setLabelsEditable(self, editable:bool=...) -> None: ... + def setLabelsFont(self, font:PySide2.QtGui.QFont) -> None: ... + def setLabelsVisible(self, visible:bool=...) -> None: ... + def setLinePen(self, pen:PySide2.QtGui.QPen) -> None: ... + def setLinePenColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setLineVisible(self, visible:bool=...) -> None: ... + def setMax(self, max:typing.Any) -> None: ... + def setMin(self, min:typing.Any) -> None: ... + def setMinorGridLineColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setMinorGridLinePen(self, pen:PySide2.QtGui.QPen) -> None: ... + def setMinorGridLineVisible(self, visible:bool=...) -> None: ... + def setRange(self, min:typing.Any, max:typing.Any) -> None: ... + def setReverse(self, reverse:bool=...) -> None: ... + def setShadesBorderColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setShadesBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setShadesColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setShadesPen(self, pen:PySide2.QtGui.QPen) -> None: ... + def setShadesVisible(self, visible:bool=...) -> None: ... + def setTitleBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setTitleFont(self, font:PySide2.QtGui.QFont) -> None: ... + def setTitleText(self, title:str) -> None: ... + def setTitleVisible(self, visible:bool=...) -> None: ... + def setVisible(self, visible:bool=...) -> None: ... + def shadesBorderColor(self) -> PySide2.QtGui.QColor: ... + def shadesBrush(self) -> PySide2.QtGui.QBrush: ... + def shadesColor(self) -> PySide2.QtGui.QColor: ... + def shadesPen(self) -> PySide2.QtGui.QPen: ... + def shadesVisible(self) -> bool: ... + def show(self) -> None: ... + def titleBrush(self) -> PySide2.QtGui.QBrush: ... + def titleFont(self) -> PySide2.QtGui.QFont: ... + def titleText(self) -> str: ... + def type(self) -> PySide2.QtCharts.QtCharts.QAbstractAxis.AxisType: ... + + class QAbstractBarSeries(PySide2.QtCharts.QAbstractSeries): + LabelsCenter : QtCharts.QAbstractBarSeries = ... # 0x0 + LabelsInsideEnd : QtCharts.QAbstractBarSeries = ... # 0x1 + LabelsInsideBase : QtCharts.QAbstractBarSeries = ... # 0x2 + LabelsOutsideEnd : QtCharts.QAbstractBarSeries = ... # 0x3 + + class LabelsPosition(object): + LabelsCenter : QtCharts.QAbstractBarSeries.LabelsPosition = ... # 0x0 + LabelsInsideEnd : QtCharts.QAbstractBarSeries.LabelsPosition = ... # 0x1 + LabelsInsideBase : QtCharts.QAbstractBarSeries.LabelsPosition = ... # 0x2 + LabelsOutsideEnd : QtCharts.QAbstractBarSeries.LabelsPosition = ... # 0x3 + @typing.overload + def append(self, set:PySide2.QtCharts.QtCharts.QBarSet) -> bool: ... + @typing.overload + def append(self, sets:typing.Sequence) -> bool: ... + def barSets(self) -> typing.List: ... + def barWidth(self) -> float: ... + def clear(self) -> None: ... + def count(self) -> int: ... + def insert(self, index:int, set:PySide2.QtCharts.QtCharts.QBarSet) -> bool: ... + def isLabelsVisible(self) -> bool: ... + def labelsAngle(self) -> float: ... + def labelsFormat(self) -> str: ... + def labelsPosition(self) -> PySide2.QtCharts.QtCharts.QAbstractBarSeries.LabelsPosition: ... + def labelsPrecision(self) -> int: ... + def remove(self, set:PySide2.QtCharts.QtCharts.QBarSet) -> bool: ... + def setBarWidth(self, width:float) -> None: ... + def setLabelsAngle(self, angle:float) -> None: ... + def setLabelsFormat(self, format:str) -> None: ... + def setLabelsPosition(self, position:PySide2.QtCharts.QtCharts.QAbstractBarSeries.LabelsPosition) -> None: ... + def setLabelsPrecision(self, precision:int) -> None: ... + def setLabelsVisible(self, visible:bool=...) -> None: ... + def take(self, set:PySide2.QtCharts.QtCharts.QBarSet) -> bool: ... + + class QAbstractSeries(PySide2.QtCore.QObject): + SeriesTypeLine : QtCharts.QAbstractSeries = ... # 0x0 + SeriesTypeArea : QtCharts.QAbstractSeries = ... # 0x1 + SeriesTypeBar : QtCharts.QAbstractSeries = ... # 0x2 + SeriesTypeStackedBar : QtCharts.QAbstractSeries = ... # 0x3 + SeriesTypePercentBar : QtCharts.QAbstractSeries = ... # 0x4 + SeriesTypePie : QtCharts.QAbstractSeries = ... # 0x5 + SeriesTypeScatter : QtCharts.QAbstractSeries = ... # 0x6 + SeriesTypeSpline : QtCharts.QAbstractSeries = ... # 0x7 + SeriesTypeHorizontalBar : QtCharts.QAbstractSeries = ... # 0x8 + SeriesTypeHorizontalStackedBar: QtCharts.QAbstractSeries = ... # 0x9 + SeriesTypeHorizontalPercentBar: QtCharts.QAbstractSeries = ... # 0xa + SeriesTypeBoxPlot : QtCharts.QAbstractSeries = ... # 0xb + SeriesTypeCandlestick : QtCharts.QAbstractSeries = ... # 0xc + + class SeriesType(object): + SeriesTypeLine : QtCharts.QAbstractSeries.SeriesType = ... # 0x0 + SeriesTypeArea : QtCharts.QAbstractSeries.SeriesType = ... # 0x1 + SeriesTypeBar : QtCharts.QAbstractSeries.SeriesType = ... # 0x2 + SeriesTypeStackedBar : QtCharts.QAbstractSeries.SeriesType = ... # 0x3 + SeriesTypePercentBar : QtCharts.QAbstractSeries.SeriesType = ... # 0x4 + SeriesTypePie : QtCharts.QAbstractSeries.SeriesType = ... # 0x5 + SeriesTypeScatter : QtCharts.QAbstractSeries.SeriesType = ... # 0x6 + SeriesTypeSpline : QtCharts.QAbstractSeries.SeriesType = ... # 0x7 + SeriesTypeHorizontalBar : QtCharts.QAbstractSeries.SeriesType = ... # 0x8 + SeriesTypeHorizontalStackedBar: QtCharts.QAbstractSeries.SeriesType = ... # 0x9 + SeriesTypeHorizontalPercentBar: QtCharts.QAbstractSeries.SeriesType = ... # 0xa + SeriesTypeBoxPlot : QtCharts.QAbstractSeries.SeriesType = ... # 0xb + SeriesTypeCandlestick : QtCharts.QAbstractSeries.SeriesType = ... # 0xc + def attachAxis(self, axis:PySide2.QtCharts.QtCharts.QAbstractAxis) -> bool: ... + def attachedAxes(self) -> typing.List: ... + def chart(self) -> PySide2.QtCharts.QtCharts.QChart: ... + def detachAxis(self, axis:PySide2.QtCharts.QtCharts.QAbstractAxis) -> bool: ... + def hide(self) -> None: ... + def isVisible(self) -> bool: ... + def name(self) -> str: ... + def opacity(self) -> float: ... + def setName(self, name:str) -> None: ... + def setOpacity(self, opacity:float) -> None: ... + def setUseOpenGL(self, enable:bool=...) -> None: ... + def setVisible(self, visible:bool=...) -> None: ... + def show(self) -> None: ... + def type(self) -> PySide2.QtCharts.QtCharts.QAbstractSeries.SeriesType: ... + def useOpenGL(self) -> bool: ... + + class QAreaLegendMarker(PySide2.QtCharts.QLegendMarker): + + def __init__(self, series:PySide2.QtCharts.QtCharts.QAreaSeries, legend:PySide2.QtCharts.QtCharts.QLegend, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def series(self) -> PySide2.QtCharts.QtCharts.QAreaSeries: ... + def type(self) -> PySide2.QtCharts.QtCharts.QLegendMarker.LegendMarkerType: ... + + class QAreaSeries(PySide2.QtCharts.QAbstractSeries): + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, upperSeries:PySide2.QtCharts.QtCharts.QLineSeries, lowerSeries:typing.Optional[PySide2.QtCharts.QtCharts.QLineSeries]=...) -> None: ... + + def borderColor(self) -> PySide2.QtGui.QColor: ... + def brush(self) -> PySide2.QtGui.QBrush: ... + def color(self) -> PySide2.QtGui.QColor: ... + def lowerSeries(self) -> PySide2.QtCharts.QtCharts.QLineSeries: ... + def pen(self) -> PySide2.QtGui.QPen: ... + def pointLabelsClipping(self) -> bool: ... + def pointLabelsColor(self) -> PySide2.QtGui.QColor: ... + def pointLabelsFont(self) -> PySide2.QtGui.QFont: ... + def pointLabelsFormat(self) -> str: ... + def pointLabelsVisible(self) -> bool: ... + def pointsVisible(self) -> bool: ... + def setBorderColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setLowerSeries(self, series:PySide2.QtCharts.QtCharts.QLineSeries) -> None: ... + def setPen(self, pen:PySide2.QtGui.QPen) -> None: ... + def setPointLabelsClipping(self, enabled:bool=...) -> None: ... + def setPointLabelsColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setPointLabelsFont(self, font:PySide2.QtGui.QFont) -> None: ... + def setPointLabelsFormat(self, format:str) -> None: ... + def setPointLabelsVisible(self, visible:bool=...) -> None: ... + def setPointsVisible(self, visible:bool=...) -> None: ... + def setUpperSeries(self, series:PySide2.QtCharts.QtCharts.QLineSeries) -> None: ... + def type(self) -> PySide2.QtCharts.QtCharts.QAbstractSeries.SeriesType: ... + def upperSeries(self) -> PySide2.QtCharts.QtCharts.QLineSeries: ... + + class QBarCategoryAxis(PySide2.QtCharts.QAbstractAxis): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + @typing.overload + def append(self, categories:typing.Sequence) -> None: ... + @typing.overload + def append(self, category:str) -> None: ... + def at(self, index:int) -> str: ... + def categories(self) -> typing.List: ... + def clear(self) -> None: ... + def count(self) -> int: ... + def insert(self, index:int, category:str) -> None: ... + def max(self) -> str: ... + def min(self) -> str: ... + def remove(self, category:str) -> None: ... + def replace(self, oldCategory:str, newCategory:str) -> None: ... + def setCategories(self, categories:typing.Sequence) -> None: ... + @typing.overload + def setMax(self, max:typing.Any) -> None: ... + @typing.overload + def setMax(self, maxCategory:str) -> None: ... + @typing.overload + def setMin(self, min:typing.Any) -> None: ... + @typing.overload + def setMin(self, minCategory:str) -> None: ... + @typing.overload + def setRange(self, min:typing.Any, max:typing.Any) -> None: ... + @typing.overload + def setRange(self, minCategory:str, maxCategory:str) -> None: ... + def type(self) -> PySide2.QtCharts.QtCharts.QAbstractAxis.AxisType: ... + + class QBarLegendMarker(PySide2.QtCharts.QLegendMarker): + + def __init__(self, series:PySide2.QtCharts.QtCharts.QAbstractBarSeries, barset:PySide2.QtCharts.QtCharts.QBarSet, legend:PySide2.QtCharts.QtCharts.QLegend, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def barset(self) -> PySide2.QtCharts.QtCharts.QBarSet: ... + def series(self) -> PySide2.QtCharts.QtCharts.QAbstractBarSeries: ... + def type(self) -> PySide2.QtCharts.QtCharts.QLegendMarker.LegendMarkerType: ... + + class QBarModelMapper(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def count(self) -> int: ... + def first(self) -> int: ... + def firstBarSetSection(self) -> int: ... + def lastBarSetSection(self) -> int: ... + def model(self) -> PySide2.QtCore.QAbstractItemModel: ... + def orientation(self) -> PySide2.QtCore.Qt.Orientation: ... + def series(self) -> PySide2.QtCharts.QtCharts.QAbstractBarSeries: ... + def setCount(self, count:int) -> None: ... + def setFirst(self, first:int) -> None: ... + def setFirstBarSetSection(self, firstBarSetSection:int) -> None: ... + def setLastBarSetSection(self, lastBarSetSection:int) -> None: ... + def setModel(self, model:PySide2.QtCore.QAbstractItemModel) -> None: ... + def setOrientation(self, orientation:PySide2.QtCore.Qt.Orientation) -> None: ... + def setSeries(self, series:PySide2.QtCharts.QtCharts.QAbstractBarSeries) -> None: ... + + class QBarSeries(PySide2.QtCharts.QAbstractBarSeries): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def type(self) -> PySide2.QtCharts.QtCharts.QAbstractSeries.SeriesType: ... + + class QBarSet(PySide2.QtCore.QObject): + + def __init__(self, label:str, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def __lshift__(self, value:float) -> PySide2.QtCharts.QtCharts.QBarSet: ... + @typing.overload + def append(self, value:float) -> None: ... + @typing.overload + def append(self, values:typing.Sequence) -> None: ... + def at(self, index:int) -> float: ... + def borderColor(self) -> PySide2.QtGui.QColor: ... + def brush(self) -> PySide2.QtGui.QBrush: ... + def color(self) -> PySide2.QtGui.QColor: ... + def count(self) -> int: ... + def insert(self, index:int, value:float) -> None: ... + def label(self) -> str: ... + def labelBrush(self) -> PySide2.QtGui.QBrush: ... + def labelColor(self) -> PySide2.QtGui.QColor: ... + def labelFont(self) -> PySide2.QtGui.QFont: ... + def pen(self) -> PySide2.QtGui.QPen: ... + def remove(self, index:int, count:int=...) -> None: ... + def replace(self, index:int, value:float) -> None: ... + def setBorderColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setLabel(self, label:str) -> None: ... + def setLabelBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setLabelColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setLabelFont(self, font:PySide2.QtGui.QFont) -> None: ... + def setPen(self, pen:PySide2.QtGui.QPen) -> None: ... + def sum(self) -> float: ... + + class QBoxPlotLegendMarker(PySide2.QtCharts.QLegendMarker): + + def __init__(self, series:PySide2.QtCharts.QtCharts.QBoxPlotSeries, legend:PySide2.QtCharts.QtCharts.QLegend, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def series(self) -> PySide2.QtCharts.QtCharts.QBoxPlotSeries: ... + def type(self) -> PySide2.QtCharts.QtCharts.QLegendMarker.LegendMarkerType: ... + + class QBoxPlotModelMapper(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def count(self) -> int: ... + def first(self) -> int: ... + def firstBoxSetSection(self) -> int: ... + def lastBoxSetSection(self) -> int: ... + def model(self) -> PySide2.QtCore.QAbstractItemModel: ... + def orientation(self) -> PySide2.QtCore.Qt.Orientation: ... + def series(self) -> PySide2.QtCharts.QtCharts.QBoxPlotSeries: ... + def setCount(self, count:int) -> None: ... + def setFirst(self, first:int) -> None: ... + def setFirstBoxSetSection(self, firstBoxSetSection:int) -> None: ... + def setLastBoxSetSection(self, lastBoxSetSection:int) -> None: ... + def setModel(self, model:PySide2.QtCore.QAbstractItemModel) -> None: ... + def setOrientation(self, orientation:PySide2.QtCore.Qt.Orientation) -> None: ... + def setSeries(self, series:PySide2.QtCharts.QtCharts.QBoxPlotSeries) -> None: ... + + class QBoxPlotSeries(PySide2.QtCharts.QAbstractSeries): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + @typing.overload + def append(self, box:PySide2.QtCharts.QtCharts.QBoxSet) -> bool: ... + @typing.overload + def append(self, boxes:typing.Sequence) -> bool: ... + def boxOutlineVisible(self) -> bool: ... + def boxSets(self) -> typing.List: ... + def boxWidth(self) -> float: ... + def brush(self) -> PySide2.QtGui.QBrush: ... + def clear(self) -> None: ... + def count(self) -> int: ... + def insert(self, index:int, box:PySide2.QtCharts.QtCharts.QBoxSet) -> bool: ... + def pen(self) -> PySide2.QtGui.QPen: ... + def remove(self, box:PySide2.QtCharts.QtCharts.QBoxSet) -> bool: ... + def setBoxOutlineVisible(self, visible:bool) -> None: ... + def setBoxWidth(self, width:float) -> None: ... + def setBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setPen(self, pen:PySide2.QtGui.QPen) -> None: ... + def take(self, box:PySide2.QtCharts.QtCharts.QBoxSet) -> bool: ... + def type(self) -> PySide2.QtCharts.QtCharts.QAbstractSeries.SeriesType: ... + + class QBoxSet(PySide2.QtCore.QObject): + LowerExtreme : QtCharts.QBoxSet = ... # 0x0 + LowerQuartile : QtCharts.QBoxSet = ... # 0x1 + Median : QtCharts.QBoxSet = ... # 0x2 + UpperQuartile : QtCharts.QBoxSet = ... # 0x3 + UpperExtreme : QtCharts.QBoxSet = ... # 0x4 + + class ValuePositions(object): + LowerExtreme : QtCharts.QBoxSet.ValuePositions = ... # 0x0 + LowerQuartile : QtCharts.QBoxSet.ValuePositions = ... # 0x1 + Median : QtCharts.QBoxSet.ValuePositions = ... # 0x2 + UpperQuartile : QtCharts.QBoxSet.ValuePositions = ... # 0x3 + UpperExtreme : QtCharts.QBoxSet.ValuePositions = ... # 0x4 + + @typing.overload + def __init__(self, label:str=..., parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, le:float, lq:float, m:float, uq:float, ue:float, label:str=..., parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def __lshift__(self, value:float) -> PySide2.QtCharts.QtCharts.QBoxSet: ... + @typing.overload + def append(self, value:float) -> None: ... + @typing.overload + def append(self, values:typing.Sequence) -> None: ... + def at(self, index:int) -> float: ... + def brush(self) -> PySide2.QtGui.QBrush: ... + def clear(self) -> None: ... + def count(self) -> int: ... + def label(self) -> str: ... + def pen(self) -> PySide2.QtGui.QPen: ... + def setBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setLabel(self, label:str) -> None: ... + def setPen(self, pen:PySide2.QtGui.QPen) -> None: ... + def setValue(self, index:int, value:float) -> None: ... + + class QCandlestickLegendMarker(PySide2.QtCharts.QLegendMarker): + + def __init__(self, series:PySide2.QtCharts.QtCharts.QCandlestickSeries, legend:PySide2.QtCharts.QtCharts.QLegend, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def series(self) -> PySide2.QtCharts.QtCharts.QCandlestickSeries: ... + def type(self) -> PySide2.QtCharts.QtCharts.QLegendMarker.LegendMarkerType: ... + + class QCandlestickModelMapper(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def close(self) -> int: ... + def firstSetSection(self) -> int: ... + def high(self) -> int: ... + def lastSetSection(self) -> int: ... + def low(self) -> int: ... + def model(self) -> PySide2.QtCore.QAbstractItemModel: ... + def open(self) -> int: ... + def orientation(self) -> PySide2.QtCore.Qt.Orientation: ... + def series(self) -> PySide2.QtCharts.QtCharts.QCandlestickSeries: ... + def setClose(self, close:int) -> None: ... + def setFirstSetSection(self, firstSetSection:int) -> None: ... + def setHigh(self, high:int) -> None: ... + def setLastSetSection(self, lastSetSection:int) -> None: ... + def setLow(self, low:int) -> None: ... + def setModel(self, model:PySide2.QtCore.QAbstractItemModel) -> None: ... + def setOpen(self, open:int) -> None: ... + def setSeries(self, series:PySide2.QtCharts.QtCharts.QCandlestickSeries) -> None: ... + def setTimestamp(self, timestamp:int) -> None: ... + def timestamp(self) -> int: ... + + class QCandlestickSeries(PySide2.QtCharts.QAbstractSeries): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + @typing.overload + def append(self, set:PySide2.QtCharts.QtCharts.QCandlestickSet) -> bool: ... + @typing.overload + def append(self, sets:typing.Sequence) -> bool: ... + def bodyOutlineVisible(self) -> bool: ... + def bodyWidth(self) -> float: ... + def brush(self) -> PySide2.QtGui.QBrush: ... + def capsVisible(self) -> bool: ... + def capsWidth(self) -> float: ... + def clear(self) -> None: ... + def count(self) -> int: ... + def decreasingColor(self) -> PySide2.QtGui.QColor: ... + def increasingColor(self) -> PySide2.QtGui.QColor: ... + def insert(self, index:int, set:PySide2.QtCharts.QtCharts.QCandlestickSet) -> bool: ... + def maximumColumnWidth(self) -> float: ... + def minimumColumnWidth(self) -> float: ... + def pen(self) -> PySide2.QtGui.QPen: ... + @typing.overload + def remove(self, set:PySide2.QtCharts.QtCharts.QCandlestickSet) -> bool: ... + @typing.overload + def remove(self, sets:typing.Sequence) -> bool: ... + def setBodyOutlineVisible(self, bodyOutlineVisible:bool) -> None: ... + def setBodyWidth(self, bodyWidth:float) -> None: ... + def setBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setCapsVisible(self, capsVisible:bool) -> None: ... + def setCapsWidth(self, capsWidth:float) -> None: ... + def setDecreasingColor(self, decreasingColor:PySide2.QtGui.QColor) -> None: ... + def setIncreasingColor(self, increasingColor:PySide2.QtGui.QColor) -> None: ... + def setMaximumColumnWidth(self, maximumColumnWidth:float) -> None: ... + def setMinimumColumnWidth(self, minimumColumnWidth:float) -> None: ... + def setPen(self, pen:PySide2.QtGui.QPen) -> None: ... + def sets(self) -> typing.List: ... + def take(self, set:PySide2.QtCharts.QtCharts.QCandlestickSet) -> bool: ... + def type(self) -> PySide2.QtCharts.QtCharts.QAbstractSeries.SeriesType: ... + + class QCandlestickSet(PySide2.QtCore.QObject): + + @typing.overload + def __init__(self, open:float, high:float, low:float, close:float, timestamp:float=..., parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, timestamp:float=..., parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def brush(self) -> PySide2.QtGui.QBrush: ... + def close(self) -> float: ... + def high(self) -> float: ... + def low(self) -> float: ... + def open(self) -> float: ... + def pen(self) -> PySide2.QtGui.QPen: ... + def setBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setClose(self, close:float) -> None: ... + def setHigh(self, high:float) -> None: ... + def setLow(self, low:float) -> None: ... + def setOpen(self, open:float) -> None: ... + def setPen(self, pen:PySide2.QtGui.QPen) -> None: ... + def setTimestamp(self, timestamp:float) -> None: ... + def timestamp(self) -> float: ... + + class QCategoryAxis(PySide2.QtCharts.QValueAxis): + AxisLabelsPositionCenter : QtCharts.QCategoryAxis = ... # 0x0 + AxisLabelsPositionOnValue: QtCharts.QCategoryAxis = ... # 0x1 + + class AxisLabelsPosition(object): + AxisLabelsPositionCenter : QtCharts.QCategoryAxis.AxisLabelsPosition = ... # 0x0 + AxisLabelsPositionOnValue: QtCharts.QCategoryAxis.AxisLabelsPosition = ... # 0x1 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def append(self, label:str, categoryEndValue:float) -> None: ... + def categoriesLabels(self) -> typing.List: ... + def count(self) -> int: ... + def endValue(self, categoryLabel:str) -> float: ... + def labelsPosition(self) -> PySide2.QtCharts.QtCharts.QCategoryAxis.AxisLabelsPosition: ... + def remove(self, label:str) -> None: ... + def replaceLabel(self, oldLabel:str, newLabel:str) -> None: ... + def setLabelsPosition(self, position:PySide2.QtCharts.QtCharts.QCategoryAxis.AxisLabelsPosition) -> None: ... + def setStartValue(self, min:float) -> None: ... + def startValue(self, categoryLabel:str=...) -> float: ... + def type(self) -> PySide2.QtCharts.QtCharts.QAbstractAxis.AxisType: ... + + class QChart(PySide2.QtWidgets.QGraphicsWidget): + ChartThemeLight : QtCharts.QChart = ... # 0x0 + ChartTypeUndefined : QtCharts.QChart = ... # 0x0 + NoAnimation : QtCharts.QChart = ... # 0x0 + ChartThemeBlueCerulean : QtCharts.QChart = ... # 0x1 + ChartTypeCartesian : QtCharts.QChart = ... # 0x1 + GridAxisAnimations : QtCharts.QChart = ... # 0x1 + ChartThemeDark : QtCharts.QChart = ... # 0x2 + ChartTypePolar : QtCharts.QChart = ... # 0x2 + SeriesAnimations : QtCharts.QChart = ... # 0x2 + AllAnimations : QtCharts.QChart = ... # 0x3 + ChartThemeBrownSand : QtCharts.QChart = ... # 0x3 + ChartThemeBlueNcs : QtCharts.QChart = ... # 0x4 + ChartThemeHighContrast : QtCharts.QChart = ... # 0x5 + ChartThemeBlueIcy : QtCharts.QChart = ... # 0x6 + ChartThemeQt : QtCharts.QChart = ... # 0x7 + + class AnimationOption(object): + NoAnimation : QtCharts.QChart.AnimationOption = ... # 0x0 + GridAxisAnimations : QtCharts.QChart.AnimationOption = ... # 0x1 + SeriesAnimations : QtCharts.QChart.AnimationOption = ... # 0x2 + AllAnimations : QtCharts.QChart.AnimationOption = ... # 0x3 + + class AnimationOptions(object): ... + + class ChartTheme(object): + ChartThemeLight : QtCharts.QChart.ChartTheme = ... # 0x0 + ChartThemeBlueCerulean : QtCharts.QChart.ChartTheme = ... # 0x1 + ChartThemeDark : QtCharts.QChart.ChartTheme = ... # 0x2 + ChartThemeBrownSand : QtCharts.QChart.ChartTheme = ... # 0x3 + ChartThemeBlueNcs : QtCharts.QChart.ChartTheme = ... # 0x4 + ChartThemeHighContrast : QtCharts.QChart.ChartTheme = ... # 0x5 + ChartThemeBlueIcy : QtCharts.QChart.ChartTheme = ... # 0x6 + ChartThemeQt : QtCharts.QChart.ChartTheme = ... # 0x7 + + class ChartType(object): + ChartTypeUndefined : QtCharts.QChart.ChartType = ... # 0x0 + ChartTypeCartesian : QtCharts.QChart.ChartType = ... # 0x1 + ChartTypePolar : QtCharts.QChart.ChartType = ... # 0x2 + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=..., wFlags:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + @typing.overload + def __init__(self, type:PySide2.QtCharts.QtCharts.QChart.ChartType, parent:PySide2.QtWidgets.QGraphicsItem, wFlags:PySide2.QtCore.Qt.WindowFlags) -> None: ... + + def addAxis(self, axis:PySide2.QtCharts.QtCharts.QAbstractAxis, alignment:PySide2.QtCore.Qt.Alignment) -> None: ... + def addSeries(self, series:PySide2.QtCharts.QtCharts.QAbstractSeries) -> None: ... + def animationDuration(self) -> int: ... + def animationEasingCurve(self) -> PySide2.QtCore.QEasingCurve: ... + def animationOptions(self) -> PySide2.QtCharts.QtCharts.QChart.AnimationOptions: ... + def axes(self, orientation:PySide2.QtCore.Qt.Orientations=..., series:typing.Optional[PySide2.QtCharts.QtCharts.QAbstractSeries]=...) -> typing.List: ... + def axisX(self, series:typing.Optional[PySide2.QtCharts.QtCharts.QAbstractSeries]=...) -> PySide2.QtCharts.QtCharts.QAbstractAxis: ... + def axisY(self, series:typing.Optional[PySide2.QtCharts.QtCharts.QAbstractSeries]=...) -> PySide2.QtCharts.QtCharts.QAbstractAxis: ... + def backgroundBrush(self) -> PySide2.QtGui.QBrush: ... + def backgroundPen(self) -> PySide2.QtGui.QPen: ... + def backgroundRoundness(self) -> float: ... + def chartType(self) -> PySide2.QtCharts.QtCharts.QChart.ChartType: ... + def createDefaultAxes(self) -> None: ... + def isBackgroundVisible(self) -> bool: ... + def isDropShadowEnabled(self) -> bool: ... + def isPlotAreaBackgroundVisible(self) -> bool: ... + def isZoomed(self) -> bool: ... + def legend(self) -> PySide2.QtCharts.QtCharts.QLegend: ... + def locale(self) -> PySide2.QtCore.QLocale: ... + def localizeNumbers(self) -> bool: ... + def mapToPosition(self, value:PySide2.QtCore.QPointF, series:typing.Optional[PySide2.QtCharts.QtCharts.QAbstractSeries]=...) -> PySide2.QtCore.QPointF: ... + def mapToValue(self, position:PySide2.QtCore.QPointF, series:typing.Optional[PySide2.QtCharts.QtCharts.QAbstractSeries]=...) -> PySide2.QtCore.QPointF: ... + def margins(self) -> PySide2.QtCore.QMargins: ... + def plotArea(self) -> PySide2.QtCore.QRectF: ... + def plotAreaBackgroundBrush(self) -> PySide2.QtGui.QBrush: ... + def plotAreaBackgroundPen(self) -> PySide2.QtGui.QPen: ... + def removeAllSeries(self) -> None: ... + def removeAxis(self, axis:PySide2.QtCharts.QtCharts.QAbstractAxis) -> None: ... + def removeSeries(self, series:PySide2.QtCharts.QtCharts.QAbstractSeries) -> None: ... + def scroll(self, dx:float, dy:float) -> None: ... + def series(self) -> typing.List: ... + def setAnimationDuration(self, msecs:int) -> None: ... + def setAnimationEasingCurve(self, curve:PySide2.QtCore.QEasingCurve) -> None: ... + def setAnimationOptions(self, options:PySide2.QtCharts.QtCharts.QChart.AnimationOptions) -> None: ... + def setAxisX(self, axis:PySide2.QtCharts.QtCharts.QAbstractAxis, series:typing.Optional[PySide2.QtCharts.QtCharts.QAbstractSeries]=...) -> None: ... + def setAxisY(self, axis:PySide2.QtCharts.QtCharts.QAbstractAxis, series:typing.Optional[PySide2.QtCharts.QtCharts.QAbstractSeries]=...) -> None: ... + def setBackgroundBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setBackgroundPen(self, pen:PySide2.QtGui.QPen) -> None: ... + def setBackgroundRoundness(self, diameter:float) -> None: ... + def setBackgroundVisible(self, visible:bool=...) -> None: ... + def setDropShadowEnabled(self, enabled:bool=...) -> None: ... + def setLocale(self, locale:PySide2.QtCore.QLocale) -> None: ... + def setLocalizeNumbers(self, localize:bool) -> None: ... + def setMargins(self, margins:PySide2.QtCore.QMargins) -> None: ... + def setPlotArea(self, rect:PySide2.QtCore.QRectF) -> None: ... + def setPlotAreaBackgroundBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setPlotAreaBackgroundPen(self, pen:PySide2.QtGui.QPen) -> None: ... + def setPlotAreaBackgroundVisible(self, visible:bool=...) -> None: ... + def setTheme(self, theme:PySide2.QtCharts.QtCharts.QChart.ChartTheme) -> None: ... + def setTitle(self, title:str) -> None: ... + def setTitleBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setTitleFont(self, font:PySide2.QtGui.QFont) -> None: ... + def theme(self) -> PySide2.QtCharts.QtCharts.QChart.ChartTheme: ... + def title(self) -> str: ... + def titleBrush(self) -> PySide2.QtGui.QBrush: ... + def titleFont(self) -> PySide2.QtGui.QFont: ... + def zoom(self, factor:float) -> None: ... + @typing.overload + def zoomIn(self) -> None: ... + @typing.overload + def zoomIn(self, rect:PySide2.QtCore.QRectF) -> None: ... + def zoomOut(self) -> None: ... + def zoomReset(self) -> None: ... + + class QChartView(PySide2.QtWidgets.QGraphicsView): + NoRubberBand : QtCharts.QChartView = ... # 0x0 + VerticalRubberBand : QtCharts.QChartView = ... # 0x1 + HorizontalRubberBand : QtCharts.QChartView = ... # 0x2 + RectangleRubberBand : QtCharts.QChartView = ... # 0x3 + + class RubberBand(object): + NoRubberBand : QtCharts.QChartView.RubberBand = ... # 0x0 + VerticalRubberBand : QtCharts.QChartView.RubberBand = ... # 0x1 + HorizontalRubberBand : QtCharts.QChartView.RubberBand = ... # 0x2 + RectangleRubberBand : QtCharts.QChartView.RubberBand = ... # 0x3 + + class RubberBands(object): ... + + @typing.overload + def __init__(self, chart:PySide2.QtCharts.QtCharts.QChart, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def chart(self) -> PySide2.QtCharts.QtCharts.QChart: ... + def mouseMoveEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def mousePressEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def resizeEvent(self, event:PySide2.QtGui.QResizeEvent) -> None: ... + def rubberBand(self) -> PySide2.QtCharts.QtCharts.QChartView.RubberBands: ... + def setChart(self, chart:PySide2.QtCharts.QtCharts.QChart) -> None: ... + def setRubberBand(self, rubberBands:PySide2.QtCharts.QtCharts.QChartView.RubberBands) -> None: ... + + class QDateTimeAxis(PySide2.QtCharts.QAbstractAxis): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def format(self) -> str: ... + def max(self) -> PySide2.QtCore.QDateTime: ... + def min(self) -> PySide2.QtCore.QDateTime: ... + def setFormat(self, format:str) -> None: ... + @typing.overload + def setMax(self, max:PySide2.QtCore.QDateTime) -> None: ... + @typing.overload + def setMax(self, max:typing.Any) -> None: ... + @typing.overload + def setMin(self, min:PySide2.QtCore.QDateTime) -> None: ... + @typing.overload + def setMin(self, min:typing.Any) -> None: ... + @typing.overload + def setRange(self, min:PySide2.QtCore.QDateTime, max:PySide2.QtCore.QDateTime) -> None: ... + @typing.overload + def setRange(self, min:typing.Any, max:typing.Any) -> None: ... + def setTickCount(self, count:int) -> None: ... + def tickCount(self) -> int: ... + def type(self) -> PySide2.QtCharts.QtCharts.QAbstractAxis.AxisType: ... + + class QHBarModelMapper(PySide2.QtCharts.QBarModelMapper): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def columnCount(self) -> int: ... + def firstBarSetRow(self) -> int: ... + def firstColumn(self) -> int: ... + def lastBarSetRow(self) -> int: ... + def model(self) -> PySide2.QtCore.QAbstractItemModel: ... + def series(self) -> PySide2.QtCharts.QtCharts.QAbstractBarSeries: ... + def setColumnCount(self, columnCount:int) -> None: ... + def setFirstBarSetRow(self, firstBarSetRow:int) -> None: ... + def setFirstColumn(self, firstColumn:int) -> None: ... + def setLastBarSetRow(self, lastBarSetRow:int) -> None: ... + def setModel(self, model:PySide2.QtCore.QAbstractItemModel) -> None: ... + def setSeries(self, series:PySide2.QtCharts.QtCharts.QAbstractBarSeries) -> None: ... + + class QHBoxPlotModelMapper(PySide2.QtCharts.QBoxPlotModelMapper): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def columnCount(self) -> int: ... + def firstBoxSetRow(self) -> int: ... + def firstColumn(self) -> int: ... + def lastBoxSetRow(self) -> int: ... + def model(self) -> PySide2.QtCore.QAbstractItemModel: ... + def series(self) -> PySide2.QtCharts.QtCharts.QBoxPlotSeries: ... + def setColumnCount(self, rowCount:int) -> None: ... + def setFirstBoxSetRow(self, firstBoxSetRow:int) -> None: ... + def setFirstColumn(self, firstColumn:int) -> None: ... + def setLastBoxSetRow(self, lastBoxSetRow:int) -> None: ... + def setModel(self, model:PySide2.QtCore.QAbstractItemModel) -> None: ... + def setSeries(self, series:PySide2.QtCharts.QtCharts.QBoxPlotSeries) -> None: ... + + class QHCandlestickModelMapper(PySide2.QtCharts.QCandlestickModelMapper): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def closeColumn(self) -> int: ... + def firstSetRow(self) -> int: ... + def highColumn(self) -> int: ... + def lastSetRow(self) -> int: ... + def lowColumn(self) -> int: ... + def openColumn(self) -> int: ... + def orientation(self) -> PySide2.QtCore.Qt.Orientation: ... + def setCloseColumn(self, closeColumn:int) -> None: ... + def setFirstSetRow(self, firstSetRow:int) -> None: ... + def setHighColumn(self, highColumn:int) -> None: ... + def setLastSetRow(self, lastSetRow:int) -> None: ... + def setLowColumn(self, lowColumn:int) -> None: ... + def setOpenColumn(self, openColumn:int) -> None: ... + def setTimestampColumn(self, timestampColumn:int) -> None: ... + def timestampColumn(self) -> int: ... + + class QHPieModelMapper(PySide2.QtCharts.QPieModelMapper): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def columnCount(self) -> int: ... + def firstColumn(self) -> int: ... + def labelsRow(self) -> int: ... + def model(self) -> PySide2.QtCore.QAbstractItemModel: ... + def series(self) -> PySide2.QtCharts.QtCharts.QPieSeries: ... + def setColumnCount(self, columnCount:int) -> None: ... + def setFirstColumn(self, firstColumn:int) -> None: ... + def setLabelsRow(self, labelsRow:int) -> None: ... + def setModel(self, model:PySide2.QtCore.QAbstractItemModel) -> None: ... + def setSeries(self, series:PySide2.QtCharts.QtCharts.QPieSeries) -> None: ... + def setValuesRow(self, valuesRow:int) -> None: ... + def valuesRow(self) -> int: ... + + class QHXYModelMapper(PySide2.QtCharts.QXYModelMapper): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def columnCount(self) -> int: ... + def firstColumn(self) -> int: ... + def model(self) -> PySide2.QtCore.QAbstractItemModel: ... + def series(self) -> PySide2.QtCharts.QtCharts.QXYSeries: ... + def setColumnCount(self, columnCount:int) -> None: ... + def setFirstColumn(self, firstColumn:int) -> None: ... + def setModel(self, model:PySide2.QtCore.QAbstractItemModel) -> None: ... + def setSeries(self, series:PySide2.QtCharts.QtCharts.QXYSeries) -> None: ... + def setXRow(self, xRow:int) -> None: ... + def setYRow(self, yRow:int) -> None: ... + def xRow(self) -> int: ... + def yRow(self) -> int: ... + + class QHorizontalBarSeries(PySide2.QtCharts.QAbstractBarSeries): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def type(self) -> PySide2.QtCharts.QtCharts.QAbstractSeries.SeriesType: ... + + class QHorizontalPercentBarSeries(PySide2.QtCharts.QAbstractBarSeries): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def type(self) -> PySide2.QtCharts.QtCharts.QAbstractSeries.SeriesType: ... + + class QHorizontalStackedBarSeries(PySide2.QtCharts.QAbstractBarSeries): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def type(self) -> PySide2.QtCharts.QtCharts.QAbstractSeries.SeriesType: ... + + class QLegend(PySide2.QtWidgets.QGraphicsWidget): + MarkerShapeDefault : QtCharts.QLegend = ... # 0x0 + MarkerShapeRectangle : QtCharts.QLegend = ... # 0x1 + MarkerShapeCircle : QtCharts.QLegend = ... # 0x2 + MarkerShapeFromSeries : QtCharts.QLegend = ... # 0x3 + + class MarkerShape(object): + MarkerShapeDefault : QtCharts.QLegend.MarkerShape = ... # 0x0 + MarkerShapeRectangle : QtCharts.QLegend.MarkerShape = ... # 0x1 + MarkerShapeCircle : QtCharts.QLegend.MarkerShape = ... # 0x2 + MarkerShapeFromSeries : QtCharts.QLegend.MarkerShape = ... # 0x3 + def alignment(self) -> PySide2.QtCore.Qt.Alignment: ... + def attachToChart(self) -> None: ... + def borderColor(self) -> PySide2.QtGui.QColor: ... + def brush(self) -> PySide2.QtGui.QBrush: ... + def color(self) -> PySide2.QtGui.QColor: ... + def detachFromChart(self) -> None: ... + def font(self) -> PySide2.QtGui.QFont: ... + def hideEvent(self, event:PySide2.QtGui.QHideEvent) -> None: ... + def isAttachedToChart(self) -> bool: ... + def isBackgroundVisible(self) -> bool: ... + def labelBrush(self) -> PySide2.QtGui.QBrush: ... + def labelColor(self) -> PySide2.QtGui.QColor: ... + def markerShape(self) -> PySide2.QtCharts.QtCharts.QLegend.MarkerShape: ... + def markers(self, series:typing.Optional[PySide2.QtCharts.QtCharts.QAbstractSeries]=...) -> typing.List: ... + def paint(self, painter:PySide2.QtGui.QPainter, option:PySide2.QtWidgets.QStyleOptionGraphicsItem, widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + def pen(self) -> PySide2.QtGui.QPen: ... + def reverseMarkers(self) -> bool: ... + def setAlignment(self, alignment:PySide2.QtCore.Qt.Alignment) -> None: ... + def setBackgroundVisible(self, visible:bool=...) -> None: ... + def setBorderColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setFont(self, font:PySide2.QtGui.QFont) -> None: ... + def setLabelBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setLabelColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setMarkerShape(self, shape:PySide2.QtCharts.QtCharts.QLegend.MarkerShape) -> None: ... + def setPen(self, pen:PySide2.QtGui.QPen) -> None: ... + def setReverseMarkers(self, reverseMarkers:bool=...) -> None: ... + def setShowToolTips(self, show:bool) -> None: ... + def showEvent(self, event:PySide2.QtGui.QShowEvent) -> None: ... + def showToolTips(self) -> bool: ... + + class QLegendMarker(PySide2.QtCore.QObject): + LegendMarkerTypeArea : QtCharts.QLegendMarker = ... # 0x0 + LegendMarkerTypeBar : QtCharts.QLegendMarker = ... # 0x1 + LegendMarkerTypePie : QtCharts.QLegendMarker = ... # 0x2 + LegendMarkerTypeXY : QtCharts.QLegendMarker = ... # 0x3 + LegendMarkerTypeBoxPlot : QtCharts.QLegendMarker = ... # 0x4 + LegendMarkerTypeCandlestick: QtCharts.QLegendMarker = ... # 0x5 + + class LegendMarkerType(object): + LegendMarkerTypeArea : QtCharts.QLegendMarker.LegendMarkerType = ... # 0x0 + LegendMarkerTypeBar : QtCharts.QLegendMarker.LegendMarkerType = ... # 0x1 + LegendMarkerTypePie : QtCharts.QLegendMarker.LegendMarkerType = ... # 0x2 + LegendMarkerTypeXY : QtCharts.QLegendMarker.LegendMarkerType = ... # 0x3 + LegendMarkerTypeBoxPlot : QtCharts.QLegendMarker.LegendMarkerType = ... # 0x4 + LegendMarkerTypeCandlestick: QtCharts.QLegendMarker.LegendMarkerType = ... # 0x5 + def brush(self) -> PySide2.QtGui.QBrush: ... + def font(self) -> PySide2.QtGui.QFont: ... + def isVisible(self) -> bool: ... + def label(self) -> str: ... + def labelBrush(self) -> PySide2.QtGui.QBrush: ... + def pen(self) -> PySide2.QtGui.QPen: ... + def series(self) -> PySide2.QtCharts.QtCharts.QAbstractSeries: ... + def setBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setFont(self, font:PySide2.QtGui.QFont) -> None: ... + def setLabel(self, label:str) -> None: ... + def setLabelBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setPen(self, pen:PySide2.QtGui.QPen) -> None: ... + def setShape(self, shape:PySide2.QtCharts.QtCharts.QLegend.MarkerShape) -> None: ... + def setVisible(self, visible:bool) -> None: ... + def shape(self) -> PySide2.QtCharts.QtCharts.QLegend.MarkerShape: ... + def type(self) -> PySide2.QtCharts.QtCharts.QLegendMarker.LegendMarkerType: ... + + class QLineSeries(PySide2.QtCharts.QXYSeries): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def type(self) -> PySide2.QtCharts.QtCharts.QAbstractSeries.SeriesType: ... + + class QLogValueAxis(PySide2.QtCharts.QAbstractAxis): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def base(self) -> float: ... + def labelFormat(self) -> str: ... + def max(self) -> float: ... + def min(self) -> float: ... + def minorTickCount(self) -> int: ... + def setBase(self, base:float) -> None: ... + def setLabelFormat(self, format:str) -> None: ... + @typing.overload + def setMax(self, max:typing.Any) -> None: ... + @typing.overload + def setMax(self, max:float) -> None: ... + @typing.overload + def setMin(self, min:typing.Any) -> None: ... + @typing.overload + def setMin(self, min:float) -> None: ... + def setMinorTickCount(self, minorTickCount:int) -> None: ... + @typing.overload + def setRange(self, min:typing.Any, max:typing.Any) -> None: ... + @typing.overload + def setRange(self, min:float, max:float) -> None: ... + def tickCount(self) -> int: ... + def type(self) -> PySide2.QtCharts.QtCharts.QAbstractAxis.AxisType: ... + + class QPercentBarSeries(PySide2.QtCharts.QAbstractBarSeries): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def type(self) -> PySide2.QtCharts.QtCharts.QAbstractSeries.SeriesType: ... + + class QPieLegendMarker(PySide2.QtCharts.QLegendMarker): + + def __init__(self, series:PySide2.QtCharts.QtCharts.QPieSeries, slice:PySide2.QtCharts.QtCharts.QPieSlice, legend:PySide2.QtCharts.QtCharts.QLegend, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def series(self) -> PySide2.QtCharts.QtCharts.QPieSeries: ... + def slice(self) -> PySide2.QtCharts.QtCharts.QPieSlice: ... + def type(self) -> PySide2.QtCharts.QtCharts.QLegendMarker.LegendMarkerType: ... + + class QPieModelMapper(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def count(self) -> int: ... + def first(self) -> int: ... + def labelsSection(self) -> int: ... + def model(self) -> PySide2.QtCore.QAbstractItemModel: ... + def orientation(self) -> PySide2.QtCore.Qt.Orientation: ... + def series(self) -> PySide2.QtCharts.QtCharts.QPieSeries: ... + def setCount(self, count:int) -> None: ... + def setFirst(self, first:int) -> None: ... + def setLabelsSection(self, labelsSection:int) -> None: ... + def setModel(self, model:PySide2.QtCore.QAbstractItemModel) -> None: ... + def setOrientation(self, orientation:PySide2.QtCore.Qt.Orientation) -> None: ... + def setSeries(self, series:PySide2.QtCharts.QtCharts.QPieSeries) -> None: ... + def setValuesSection(self, valuesSection:int) -> None: ... + def valuesSection(self) -> int: ... + + class QPieSeries(PySide2.QtCharts.QAbstractSeries): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def __lshift__(self, slice:PySide2.QtCharts.QtCharts.QPieSlice) -> PySide2.QtCharts.QtCharts.QPieSeries: ... + @typing.overload + def append(self, label:str, value:float) -> PySide2.QtCharts.QtCharts.QPieSlice: ... + @typing.overload + def append(self, slice:PySide2.QtCharts.QtCharts.QPieSlice) -> bool: ... + @typing.overload + def append(self, slices:typing.Sequence) -> bool: ... + def clear(self) -> None: ... + def count(self) -> int: ... + def holeSize(self) -> float: ... + def horizontalPosition(self) -> float: ... + def insert(self, index:int, slice:PySide2.QtCharts.QtCharts.QPieSlice) -> bool: ... + def isEmpty(self) -> bool: ... + def pieEndAngle(self) -> float: ... + def pieSize(self) -> float: ... + def pieStartAngle(self) -> float: ... + def remove(self, slice:PySide2.QtCharts.QtCharts.QPieSlice) -> bool: ... + def setHoleSize(self, holeSize:float) -> None: ... + def setHorizontalPosition(self, relativePosition:float) -> None: ... + def setLabelsPosition(self, position:PySide2.QtCharts.QtCharts.QPieSlice.LabelPosition) -> None: ... + def setLabelsVisible(self, visible:bool=...) -> None: ... + def setPieEndAngle(self, endAngle:float) -> None: ... + def setPieSize(self, relativeSize:float) -> None: ... + def setPieStartAngle(self, startAngle:float) -> None: ... + def setVerticalPosition(self, relativePosition:float) -> None: ... + def slices(self) -> typing.List: ... + def sum(self) -> float: ... + def take(self, slice:PySide2.QtCharts.QtCharts.QPieSlice) -> bool: ... + def type(self) -> PySide2.QtCharts.QtCharts.QAbstractSeries.SeriesType: ... + def verticalPosition(self) -> float: ... + + class QPieSlice(PySide2.QtCore.QObject): + LabelOutside : QtCharts.QPieSlice = ... # 0x0 + LabelInsideHorizontal : QtCharts.QPieSlice = ... # 0x1 + LabelInsideTangential : QtCharts.QPieSlice = ... # 0x2 + LabelInsideNormal : QtCharts.QPieSlice = ... # 0x3 + + class LabelPosition(object): + LabelOutside : QtCharts.QPieSlice.LabelPosition = ... # 0x0 + LabelInsideHorizontal : QtCharts.QPieSlice.LabelPosition = ... # 0x1 + LabelInsideTangential : QtCharts.QPieSlice.LabelPosition = ... # 0x2 + LabelInsideNormal : QtCharts.QPieSlice.LabelPosition = ... # 0x3 + + @typing.overload + def __init__(self, label:str, value:float, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def angleSpan(self) -> float: ... + def borderColor(self) -> PySide2.QtGui.QColor: ... + def borderWidth(self) -> int: ... + def brush(self) -> PySide2.QtGui.QBrush: ... + def color(self) -> PySide2.QtGui.QColor: ... + def explodeDistanceFactor(self) -> float: ... + def isExploded(self) -> bool: ... + def isLabelVisible(self) -> bool: ... + def label(self) -> str: ... + def labelArmLengthFactor(self) -> float: ... + def labelBrush(self) -> PySide2.QtGui.QBrush: ... + def labelColor(self) -> PySide2.QtGui.QColor: ... + def labelFont(self) -> PySide2.QtGui.QFont: ... + def labelPosition(self) -> PySide2.QtCharts.QtCharts.QPieSlice.LabelPosition: ... + def pen(self) -> PySide2.QtGui.QPen: ... + def percentage(self) -> float: ... + def series(self) -> PySide2.QtCharts.QtCharts.QPieSeries: ... + def setBorderColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setBorderWidth(self, width:int) -> None: ... + def setBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setExplodeDistanceFactor(self, factor:float) -> None: ... + def setExploded(self, exploded:bool=...) -> None: ... + def setLabel(self, label:str) -> None: ... + def setLabelArmLengthFactor(self, factor:float) -> None: ... + def setLabelBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setLabelColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setLabelFont(self, font:PySide2.QtGui.QFont) -> None: ... + def setLabelPosition(self, position:PySide2.QtCharts.QtCharts.QPieSlice.LabelPosition) -> None: ... + def setLabelVisible(self, visible:bool=...) -> None: ... + def setPen(self, pen:PySide2.QtGui.QPen) -> None: ... + def setValue(self, value:float) -> None: ... + def startAngle(self) -> float: ... + def value(self) -> float: ... + + class QPolarChart(PySide2.QtCharts.QChart): + PolarOrientationRadial : QtCharts.QPolarChart = ... # 0x1 + PolarOrientationAngular : QtCharts.QPolarChart = ... # 0x2 + + class PolarOrientation(object): + PolarOrientationRadial : QtCharts.QPolarChart.PolarOrientation = ... # 0x1 + PolarOrientationAngular : QtCharts.QPolarChart.PolarOrientation = ... # 0x2 + + class PolarOrientations(object): ... + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=..., wFlags:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + + @typing.overload + def addAxis(self, axis:PySide2.QtCharts.QtCharts.QAbstractAxis, alignment:PySide2.QtCore.Qt.Alignment) -> None: ... + @typing.overload + def addAxis(self, axis:PySide2.QtCharts.QtCharts.QAbstractAxis, polarOrientation:PySide2.QtCharts.QtCharts.QPolarChart.PolarOrientation) -> None: ... + @staticmethod + def axisPolarOrientation(axis:PySide2.QtCharts.QtCharts.QAbstractAxis) -> PySide2.QtCharts.QtCharts.QPolarChart.PolarOrientation: ... + + class QScatterSeries(PySide2.QtCharts.QXYSeries): + MarkerShapeCircle : QtCharts.QScatterSeries = ... # 0x0 + MarkerShapeRectangle : QtCharts.QScatterSeries = ... # 0x1 + + class MarkerShape(object): + MarkerShapeCircle : QtCharts.QScatterSeries.MarkerShape = ... # 0x0 + MarkerShapeRectangle : QtCharts.QScatterSeries.MarkerShape = ... # 0x1 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def borderColor(self) -> PySide2.QtGui.QColor: ... + def brush(self) -> PySide2.QtGui.QBrush: ... + def color(self) -> PySide2.QtGui.QColor: ... + def markerShape(self) -> PySide2.QtCharts.QtCharts.QScatterSeries.MarkerShape: ... + def markerSize(self) -> float: ... + def setBorderColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setMarkerShape(self, shape:PySide2.QtCharts.QtCharts.QScatterSeries.MarkerShape) -> None: ... + def setMarkerSize(self, size:float) -> None: ... + def setPen(self, pen:PySide2.QtGui.QPen) -> None: ... + def type(self) -> PySide2.QtCharts.QtCharts.QAbstractSeries.SeriesType: ... + + class QSplineSeries(PySide2.QtCharts.QLineSeries): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def type(self) -> PySide2.QtCharts.QtCharts.QAbstractSeries.SeriesType: ... + + class QStackedBarSeries(PySide2.QtCharts.QAbstractBarSeries): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def type(self) -> PySide2.QtCharts.QtCharts.QAbstractSeries.SeriesType: ... + + class QVBarModelMapper(PySide2.QtCharts.QBarModelMapper): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def firstBarSetColumn(self) -> int: ... + def firstRow(self) -> int: ... + def lastBarSetColumn(self) -> int: ... + def model(self) -> PySide2.QtCore.QAbstractItemModel: ... + def rowCount(self) -> int: ... + def series(self) -> PySide2.QtCharts.QtCharts.QAbstractBarSeries: ... + def setFirstBarSetColumn(self, firstBarSetColumn:int) -> None: ... + def setFirstRow(self, firstRow:int) -> None: ... + def setLastBarSetColumn(self, lastBarSetColumn:int) -> None: ... + def setModel(self, model:PySide2.QtCore.QAbstractItemModel) -> None: ... + def setRowCount(self, rowCount:int) -> None: ... + def setSeries(self, series:PySide2.QtCharts.QtCharts.QAbstractBarSeries) -> None: ... + + class QVBoxPlotModelMapper(PySide2.QtCharts.QBoxPlotModelMapper): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def firstBoxSetColumn(self) -> int: ... + def firstRow(self) -> int: ... + def lastBoxSetColumn(self) -> int: ... + def model(self) -> PySide2.QtCore.QAbstractItemModel: ... + def rowCount(self) -> int: ... + def series(self) -> PySide2.QtCharts.QtCharts.QBoxPlotSeries: ... + def setFirstBoxSetColumn(self, firstBoxSetColumn:int) -> None: ... + def setFirstRow(self, firstRow:int) -> None: ... + def setLastBoxSetColumn(self, lastBoxSetColumn:int) -> None: ... + def setModel(self, model:PySide2.QtCore.QAbstractItemModel) -> None: ... + def setRowCount(self, rowCount:int) -> None: ... + def setSeries(self, series:PySide2.QtCharts.QtCharts.QBoxPlotSeries) -> None: ... + + class QVCandlestickModelMapper(PySide2.QtCharts.QCandlestickModelMapper): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def closeRow(self) -> int: ... + def firstSetColumn(self) -> int: ... + def highRow(self) -> int: ... + def lastSetColumn(self) -> int: ... + def lowRow(self) -> int: ... + def openRow(self) -> int: ... + def orientation(self) -> PySide2.QtCore.Qt.Orientation: ... + def setCloseRow(self, closeRow:int) -> None: ... + def setFirstSetColumn(self, firstSetColumn:int) -> None: ... + def setHighRow(self, highRow:int) -> None: ... + def setLastSetColumn(self, lastSetColumn:int) -> None: ... + def setLowRow(self, lowRow:int) -> None: ... + def setOpenRow(self, openRow:int) -> None: ... + def setTimestampRow(self, timestampRow:int) -> None: ... + def timestampRow(self) -> int: ... + + class QVPieModelMapper(PySide2.QtCharts.QPieModelMapper): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def firstRow(self) -> int: ... + def labelsColumn(self) -> int: ... + def model(self) -> PySide2.QtCore.QAbstractItemModel: ... + def rowCount(self) -> int: ... + def series(self) -> PySide2.QtCharts.QtCharts.QPieSeries: ... + def setFirstRow(self, firstRow:int) -> None: ... + def setLabelsColumn(self, labelsColumn:int) -> None: ... + def setModel(self, model:PySide2.QtCore.QAbstractItemModel) -> None: ... + def setRowCount(self, rowCount:int) -> None: ... + def setSeries(self, series:PySide2.QtCharts.QtCharts.QPieSeries) -> None: ... + def setValuesColumn(self, valuesColumn:int) -> None: ... + def valuesColumn(self) -> int: ... + + class QVXYModelMapper(PySide2.QtCharts.QXYModelMapper): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def firstRow(self) -> int: ... + def model(self) -> PySide2.QtCore.QAbstractItemModel: ... + def rowCount(self) -> int: ... + def series(self) -> PySide2.QtCharts.QtCharts.QXYSeries: ... + def setFirstRow(self, firstRow:int) -> None: ... + def setModel(self, model:PySide2.QtCore.QAbstractItemModel) -> None: ... + def setRowCount(self, rowCount:int) -> None: ... + def setSeries(self, series:PySide2.QtCharts.QtCharts.QXYSeries) -> None: ... + def setXColumn(self, xColumn:int) -> None: ... + def setYColumn(self, yColumn:int) -> None: ... + def xColumn(self) -> int: ... + def yColumn(self) -> int: ... + + class QValueAxis(PySide2.QtCharts.QAbstractAxis): + TicksDynamic : QtCharts.QValueAxis = ... # 0x0 + TicksFixed : QtCharts.QValueAxis = ... # 0x1 + + class TickType(object): + TicksDynamic : QtCharts.QValueAxis.TickType = ... # 0x0 + TicksFixed : QtCharts.QValueAxis.TickType = ... # 0x1 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def applyNiceNumbers(self) -> None: ... + def labelFormat(self) -> str: ... + def max(self) -> float: ... + def min(self) -> float: ... + def minorTickCount(self) -> int: ... + def setLabelFormat(self, format:str) -> None: ... + @typing.overload + def setMax(self, max:typing.Any) -> None: ... + @typing.overload + def setMax(self, max:float) -> None: ... + @typing.overload + def setMin(self, min:typing.Any) -> None: ... + @typing.overload + def setMin(self, min:float) -> None: ... + def setMinorTickCount(self, count:int) -> None: ... + @typing.overload + def setRange(self, min:typing.Any, max:typing.Any) -> None: ... + @typing.overload + def setRange(self, min:float, max:float) -> None: ... + def setTickAnchor(self, anchor:float) -> None: ... + def setTickCount(self, count:int) -> None: ... + def setTickInterval(self, insterval:float) -> None: ... + def setTickType(self, type:PySide2.QtCharts.QtCharts.QValueAxis.TickType) -> None: ... + def tickAnchor(self) -> float: ... + def tickCount(self) -> int: ... + def tickInterval(self) -> float: ... + def tickType(self) -> PySide2.QtCharts.QtCharts.QValueAxis.TickType: ... + def type(self) -> PySide2.QtCharts.QtCharts.QAbstractAxis.AxisType: ... + + class QXYLegendMarker(PySide2.QtCharts.QLegendMarker): + + def __init__(self, series:PySide2.QtCharts.QtCharts.QXYSeries, legend:PySide2.QtCharts.QtCharts.QLegend, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def series(self) -> PySide2.QtCharts.QtCharts.QXYSeries: ... + def type(self) -> PySide2.QtCharts.QtCharts.QLegendMarker.LegendMarkerType: ... + + class QXYModelMapper(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def count(self) -> int: ... + def first(self) -> int: ... + def model(self) -> PySide2.QtCore.QAbstractItemModel: ... + def orientation(self) -> PySide2.QtCore.Qt.Orientation: ... + def series(self) -> PySide2.QtCharts.QtCharts.QXYSeries: ... + def setCount(self, count:int) -> None: ... + def setFirst(self, first:int) -> None: ... + def setModel(self, model:PySide2.QtCore.QAbstractItemModel) -> None: ... + def setOrientation(self, orientation:PySide2.QtCore.Qt.Orientation) -> None: ... + def setSeries(self, series:PySide2.QtCharts.QtCharts.QXYSeries) -> None: ... + def setXSection(self, xSection:int) -> None: ... + def setYSection(self, ySection:int) -> None: ... + def xSection(self) -> int: ... + def ySection(self) -> int: ... + + class QXYSeries(PySide2.QtCharts.QAbstractSeries): + @typing.overload + def __lshift__(self, point:PySide2.QtCore.QPointF) -> PySide2.QtCharts.QtCharts.QXYSeries: ... + @typing.overload + def __lshift__(self, points:typing.Sequence) -> PySide2.QtCharts.QtCharts.QXYSeries: ... + @typing.overload + def append(self, point:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def append(self, points:typing.Sequence) -> None: ... + @typing.overload + def append(self, x:float, y:float) -> None: ... + def at(self, index:int) -> PySide2.QtCore.QPointF: ... + def brush(self) -> PySide2.QtGui.QBrush: ... + def clear(self) -> None: ... + def color(self) -> PySide2.QtGui.QColor: ... + def count(self) -> int: ... + def insert(self, index:int, point:PySide2.QtCore.QPointF) -> None: ... + def pen(self) -> PySide2.QtGui.QPen: ... + def pointLabelsClipping(self) -> bool: ... + def pointLabelsColor(self) -> PySide2.QtGui.QColor: ... + def pointLabelsFont(self) -> PySide2.QtGui.QFont: ... + def pointLabelsFormat(self) -> str: ... + def pointLabelsVisible(self) -> bool: ... + def points(self) -> typing.List: ... + def pointsVector(self) -> typing.List: ... + def pointsVisible(self) -> bool: ... + @typing.overload + def remove(self, index:int) -> None: ... + @typing.overload + def remove(self, point:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def remove(self, x:float, y:float) -> None: ... + def removePoints(self, index:int, count:int) -> None: ... + @typing.overload + def replace(self, index:int, newPoint:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def replace(self, index:int, newX:float, newY:float) -> None: ... + @typing.overload + def replace(self, oldPoint:PySide2.QtCore.QPointF, newPoint:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def replace(self, oldX:float, oldY:float, newX:float, newY:float) -> None: ... + @typing.overload + def replace(self, points:typing.Sequence) -> None: ... + @typing.overload + def replace(self, points:typing.List) -> None: ... + def setBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setPen(self, pen:PySide2.QtGui.QPen) -> None: ... + def setPointLabelsClipping(self, enabled:bool=...) -> None: ... + def setPointLabelsColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setPointLabelsFont(self, font:PySide2.QtGui.QFont) -> None: ... + def setPointLabelsFormat(self, format:str) -> None: ... + def setPointLabelsVisible(self, visible:bool=...) -> None: ... + def setPointsVisible(self, visible:bool=...) -> None: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtConcurrent.pyd b/venv/Lib/site-packages/PySide2/QtConcurrent.pyd new file mode 100644 index 0000000..bd14025 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtConcurrent.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtConcurrent.pyi b/venv/Lib/site-packages/PySide2/QtConcurrent.pyi new file mode 100644 index 0000000..4674bb6 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtConcurrent.pyi @@ -0,0 +1,155 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtConcurrent, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtConcurrent +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtConcurrent + + +class QFutureQString(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QFutureQString:PySide2.QtConcurrent.QFutureQString) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def cancel(self) -> None: ... + def isCanceled(self) -> bool: ... + def isFinished(self) -> bool: ... + def isPaused(self) -> bool: ... + def isResultReadyAt(self, resultIndex:int) -> bool: ... + def isRunning(self) -> bool: ... + def isStarted(self) -> bool: ... + def pause(self) -> None: ... + def progressMaximum(self) -> int: ... + def progressMinimum(self) -> int: ... + def progressText(self) -> str: ... + def progressValue(self) -> int: ... + def result(self) -> str: ... + def resultAt(self, index:int) -> str: ... + def resultCount(self) -> int: ... + def results(self) -> typing.List: ... + def resume(self) -> None: ... + def setPaused(self, paused:bool) -> None: ... + def togglePaused(self) -> None: ... + def waitForFinished(self) -> None: ... + + +class QFutureVoid(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QFutureVoid:PySide2.QtConcurrent.QFutureVoid) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def cancel(self) -> None: ... + def isCanceled(self) -> bool: ... + def isFinished(self) -> bool: ... + def isPaused(self) -> bool: ... + def isRunning(self) -> bool: ... + def isStarted(self) -> bool: ... + def pause(self) -> None: ... + def progressMaximum(self) -> int: ... + def progressMinimum(self) -> int: ... + def progressText(self) -> str: ... + def progressValue(self) -> int: ... + def resultCount(self) -> int: ... + def resume(self) -> None: ... + def setPaused(self, paused:bool) -> None: ... + def togglePaused(self) -> None: ... + def waitForFinished(self) -> None: ... + + +class QFutureWatcherQString(PySide2.QtCore.QObject): + + def __init__(self, _parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def future(self) -> PySide2.QtConcurrent.QFutureQString: ... + def result(self) -> str: ... + def resultAt(self, index:int) -> str: ... + def setFuture(self, future:PySide2.QtConcurrent.QFutureQString) -> None: ... + + +class QFutureWatcherVoid(PySide2.QtCore.QObject): + + def __init__(self, _parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + +class QtConcurrent(Shiboken.Object): + ThrottleThread : QtConcurrent = ... # 0x0 + ThreadFinished : QtConcurrent = ... # 0x1 + UnorderedReduce : QtConcurrent = ... # 0x1 + OrderedReduce : QtConcurrent = ... # 0x2 + SequentialReduce : QtConcurrent = ... # 0x4 + + class ReduceOption(object): + UnorderedReduce : QtConcurrent.ReduceOption = ... # 0x1 + OrderedReduce : QtConcurrent.ReduceOption = ... # 0x2 + SequentialReduce : QtConcurrent.ReduceOption = ... # 0x4 + + class ReduceOptions(object): ... + + class ThreadFunctionResult(object): + ThrottleThread : QtConcurrent.ThreadFunctionResult = ... # 0x0 + ThreadFinished : QtConcurrent.ThreadFunctionResult = ... # 0x1 + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtCore.pyd b/venv/Lib/site-packages/PySide2/QtCore.pyd new file mode 100644 index 0000000..c38c1aa Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtCore.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtCore.pyi b/venv/Lib/site-packages/PySide2/QtCore.pyi new file mode 100644 index 0000000..51b3481 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtCore.pyi @@ -0,0 +1,12395 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtCore, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtCore +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore + + +class ClassInfo(object): + + @staticmethod + def __init__(**info:typing.Dict) -> None: ... + + +class MetaFunction(object): + @staticmethod + def __call__(*args:typing.Any) -> typing.Any: ... + + +class MetaSignal(type): + @staticmethod + def __instancecheck__(object:object) -> bool: ... + + +class Property(object): + + def __init__(self, type:type, fget:typing.Optional[typing.Callable]=..., fset:typing.Optional[typing.Callable]=..., freset:typing.Optional[typing.Callable]=..., fdel:typing.Optional[typing.Callable]=..., doc:str=..., notify:typing.Optional[typing.Callable]=..., designable:bool=..., scriptable:bool=..., stored:bool=..., user:bool=..., constant:bool=..., final:bool=...) -> PySide2.QtCore.Property: ... + + def deleter(self, func:typing.Callable) -> None: ... + def getter(self, func:typing.Callable) -> None: ... + def read(self, func:typing.Callable) -> None: ... + def setter(self, func:typing.Callable) -> None: ... + def write(self, func:typing.Callable) -> None: ... + + +class QAbstractAnimation(PySide2.QtCore.QObject): + Forward : QAbstractAnimation = ... # 0x0 + KeepWhenStopped : QAbstractAnimation = ... # 0x0 + Stopped : QAbstractAnimation = ... # 0x0 + Backward : QAbstractAnimation = ... # 0x1 + DeleteWhenStopped : QAbstractAnimation = ... # 0x1 + Paused : QAbstractAnimation = ... # 0x1 + Running : QAbstractAnimation = ... # 0x2 + + class DeletionPolicy(object): + KeepWhenStopped : QAbstractAnimation.DeletionPolicy = ... # 0x0 + DeleteWhenStopped : QAbstractAnimation.DeletionPolicy = ... # 0x1 + + class Direction(object): + Forward : QAbstractAnimation.Direction = ... # 0x0 + Backward : QAbstractAnimation.Direction = ... # 0x1 + + class State(object): + Stopped : QAbstractAnimation.State = ... # 0x0 + Paused : QAbstractAnimation.State = ... # 0x1 + Running : QAbstractAnimation.State = ... # 0x2 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def currentLoop(self) -> int: ... + def currentLoopTime(self) -> int: ... + def currentTime(self) -> int: ... + def direction(self) -> PySide2.QtCore.QAbstractAnimation.Direction: ... + def duration(self) -> int: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def group(self) -> PySide2.QtCore.QAnimationGroup: ... + def loopCount(self) -> int: ... + def pause(self) -> None: ... + def resume(self) -> None: ... + def setCurrentTime(self, msecs:int) -> None: ... + def setDirection(self, direction:PySide2.QtCore.QAbstractAnimation.Direction) -> None: ... + def setLoopCount(self, loopCount:int) -> None: ... + def setPaused(self, arg__1:bool) -> None: ... + def start(self, policy:PySide2.QtCore.QAbstractAnimation.DeletionPolicy=...) -> None: ... + def state(self) -> PySide2.QtCore.QAbstractAnimation.State: ... + def stop(self) -> None: ... + def totalDuration(self) -> int: ... + def updateCurrentTime(self, currentTime:int) -> None: ... + def updateDirection(self, direction:PySide2.QtCore.QAbstractAnimation.Direction) -> None: ... + def updateState(self, newState:PySide2.QtCore.QAbstractAnimation.State, oldState:PySide2.QtCore.QAbstractAnimation.State) -> None: ... + + +class QAbstractEventDispatcher(PySide2.QtCore.QObject): + + class TimerInfo(Shiboken.Object): + + def __init__(self, id:int, i:int, t:PySide2.QtCore.Qt.TimerType) -> None: ... + + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def closingDown(self) -> None: ... + def filterNativeEvent(self, eventType:PySide2.QtCore.QByteArray, message:int) -> typing.Tuple: ... + def flush(self) -> None: ... + def hasPendingEvents(self) -> bool: ... + def installNativeEventFilter(self, filterObj:PySide2.QtCore.QAbstractNativeEventFilter) -> None: ... + @staticmethod + def instance(thread:typing.Optional[PySide2.QtCore.QThread]=...) -> PySide2.QtCore.QAbstractEventDispatcher: ... + def interrupt(self) -> None: ... + def processEvents(self, flags:PySide2.QtCore.QEventLoop.ProcessEventsFlags) -> bool: ... + def registerEventNotifier(self, notifier:PySide2.QtCore.QWinEventNotifier) -> bool: ... + def registerSocketNotifier(self, notifier:PySide2.QtCore.QSocketNotifier) -> None: ... + @typing.overload + def registerTimer(self, interval:int, timerType:PySide2.QtCore.Qt.TimerType, object:PySide2.QtCore.QObject) -> int: ... + @typing.overload + def registerTimer(self, timerId:int, interval:int, timerType:PySide2.QtCore.Qt.TimerType, object:PySide2.QtCore.QObject) -> None: ... + def registeredTimers(self, object:PySide2.QtCore.QObject) -> typing.List: ... + def remainingTime(self, timerId:int) -> int: ... + def removeNativeEventFilter(self, filterObj:PySide2.QtCore.QAbstractNativeEventFilter) -> None: ... + def startingUp(self) -> None: ... + def unregisterEventNotifier(self, notifier:PySide2.QtCore.QWinEventNotifier) -> None: ... + def unregisterSocketNotifier(self, notifier:PySide2.QtCore.QSocketNotifier) -> None: ... + def unregisterTimer(self, timerId:int) -> bool: ... + def unregisterTimers(self, object:PySide2.QtCore.QObject) -> bool: ... + def wakeUp(self) -> None: ... + + +class QAbstractItemModel(PySide2.QtCore.QObject): + NoLayoutChangeHint : QAbstractItemModel = ... # 0x0 + VerticalSortHint : QAbstractItemModel = ... # 0x1 + HorizontalSortHint : QAbstractItemModel = ... # 0x2 + + class CheckIndexOption(object): + NoOption : QAbstractItemModel.CheckIndexOption = ... # 0x0 + IndexIsValid : QAbstractItemModel.CheckIndexOption = ... # 0x1 + DoNotUseParent : QAbstractItemModel.CheckIndexOption = ... # 0x2 + ParentIsInvalid : QAbstractItemModel.CheckIndexOption = ... # 0x4 + + class CheckIndexOptions(object): ... + + class LayoutChangeHint(object): + NoLayoutChangeHint : QAbstractItemModel.LayoutChangeHint = ... # 0x0 + VerticalSortHint : QAbstractItemModel.LayoutChangeHint = ... # 0x1 + HorizontalSortHint : QAbstractItemModel.LayoutChangeHint = ... # 0x2 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def beginInsertColumns(self, parent:PySide2.QtCore.QModelIndex, first:int, last:int) -> None: ... + def beginInsertRows(self, parent:PySide2.QtCore.QModelIndex, first:int, last:int) -> None: ... + def beginMoveColumns(self, sourceParent:PySide2.QtCore.QModelIndex, sourceFirst:int, sourceLast:int, destinationParent:PySide2.QtCore.QModelIndex, destinationColumn:int) -> bool: ... + def beginMoveRows(self, sourceParent:PySide2.QtCore.QModelIndex, sourceFirst:int, sourceLast:int, destinationParent:PySide2.QtCore.QModelIndex, destinationRow:int) -> bool: ... + def beginRemoveColumns(self, parent:PySide2.QtCore.QModelIndex, first:int, last:int) -> None: ... + def beginRemoveRows(self, parent:PySide2.QtCore.QModelIndex, first:int, last:int) -> None: ... + def beginResetModel(self) -> None: ... + def buddy(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def canDropMimeData(self, data:PySide2.QtCore.QMimeData, action:PySide2.QtCore.Qt.DropAction, row:int, column:int, parent:PySide2.QtCore.QModelIndex) -> bool: ... + def canFetchMore(self, parent:PySide2.QtCore.QModelIndex) -> bool: ... + def changePersistentIndex(self, from_:PySide2.QtCore.QModelIndex, to:PySide2.QtCore.QModelIndex) -> None: ... + def changePersistentIndexList(self, from_:typing.List, to:typing.List) -> None: ... + def checkIndex(self, index:PySide2.QtCore.QModelIndex, options:PySide2.QtCore.QAbstractItemModel.CheckIndexOptions=...) -> bool: ... + def columnCount(self, parent:PySide2.QtCore.QModelIndex=...) -> int: ... + @typing.overload + def createIndex(self, row:int, column:int, id:int=...) -> PySide2.QtCore.QModelIndex: ... + @typing.overload + def createIndex(self, row:int, column:int, ptr:object) -> PySide2.QtCore.QModelIndex: ... + def data(self, index:PySide2.QtCore.QModelIndex, role:int=...) -> typing.Any: ... + def decodeData(self, row:int, column:int, parent:PySide2.QtCore.QModelIndex, stream:PySide2.QtCore.QDataStream) -> bool: ... + def dropMimeData(self, data:PySide2.QtCore.QMimeData, action:PySide2.QtCore.Qt.DropAction, row:int, column:int, parent:PySide2.QtCore.QModelIndex) -> bool: ... + def encodeData(self, indexes:typing.List, stream:PySide2.QtCore.QDataStream) -> None: ... + def endInsertColumns(self) -> None: ... + def endInsertRows(self) -> None: ... + def endMoveColumns(self) -> None: ... + def endMoveRows(self) -> None: ... + def endRemoveColumns(self) -> None: ... + def endRemoveRows(self) -> None: ... + def endResetModel(self) -> None: ... + def fetchMore(self, parent:PySide2.QtCore.QModelIndex) -> None: ... + def flags(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.Qt.ItemFlags: ... + def hasChildren(self, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def hasIndex(self, row:int, column:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def headerData(self, section:int, orientation:PySide2.QtCore.Qt.Orientation, role:int=...) -> typing.Any: ... + def index(self, row:int, column:int, parent:PySide2.QtCore.QModelIndex=...) -> PySide2.QtCore.QModelIndex: ... + def insertColumn(self, column:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def insertColumns(self, column:int, count:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def insertRow(self, row:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def insertRows(self, row:int, count:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def itemData(self, index:PySide2.QtCore.QModelIndex) -> typing.Dict: ... + def match(self, start:PySide2.QtCore.QModelIndex, role:int, value:typing.Any, hits:int=..., flags:PySide2.QtCore.Qt.MatchFlags=...) -> typing.List: ... + def mimeData(self, indexes:typing.List) -> PySide2.QtCore.QMimeData: ... + def mimeTypes(self) -> typing.List: ... + def moveColumn(self, sourceParent:PySide2.QtCore.QModelIndex, sourceColumn:int, destinationParent:PySide2.QtCore.QModelIndex, destinationChild:int) -> bool: ... + def moveColumns(self, sourceParent:PySide2.QtCore.QModelIndex, sourceColumn:int, count:int, destinationParent:PySide2.QtCore.QModelIndex, destinationChild:int) -> bool: ... + def moveRow(self, sourceParent:PySide2.QtCore.QModelIndex, sourceRow:int, destinationParent:PySide2.QtCore.QModelIndex, destinationChild:int) -> bool: ... + def moveRows(self, sourceParent:PySide2.QtCore.QModelIndex, sourceRow:int, count:int, destinationParent:PySide2.QtCore.QModelIndex, destinationChild:int) -> bool: ... + @typing.overload + def parent(self) -> PySide2.QtCore.QObject: ... + @typing.overload + def parent(self, child:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def persistentIndexList(self) -> typing.List: ... + def removeColumn(self, column:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def removeColumns(self, column:int, count:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def removeRow(self, row:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def removeRows(self, row:int, count:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def resetInternalData(self) -> None: ... + def revert(self) -> None: ... + def roleNames(self) -> typing.Dict: ... + def rowCount(self, parent:PySide2.QtCore.QModelIndex=...) -> int: ... + def setData(self, index:PySide2.QtCore.QModelIndex, value:typing.Any, role:int=...) -> bool: ... + def setHeaderData(self, section:int, orientation:PySide2.QtCore.Qt.Orientation, value:typing.Any, role:int=...) -> bool: ... + def setItemData(self, index:PySide2.QtCore.QModelIndex, roles:typing.Dict) -> bool: ... + def sibling(self, row:int, column:int, idx:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def sort(self, column:int, order:PySide2.QtCore.Qt.SortOrder=...) -> None: ... + def span(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QSize: ... + def submit(self) -> bool: ... + def supportedDragActions(self) -> PySide2.QtCore.Qt.DropActions: ... + def supportedDropActions(self) -> PySide2.QtCore.Qt.DropActions: ... + + +class QAbstractListModel(PySide2.QtCore.QAbstractItemModel): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def columnCount(self, parent:PySide2.QtCore.QModelIndex) -> int: ... + def dropMimeData(self, data:PySide2.QtCore.QMimeData, action:PySide2.QtCore.Qt.DropAction, row:int, column:int, parent:PySide2.QtCore.QModelIndex) -> bool: ... + def flags(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.Qt.ItemFlags: ... + def hasChildren(self, parent:PySide2.QtCore.QModelIndex) -> bool: ... + def index(self, row:int, column:int=..., parent:PySide2.QtCore.QModelIndex=...) -> PySide2.QtCore.QModelIndex: ... + @typing.overload + def parent(self) -> PySide2.QtCore.QObject: ... + @typing.overload + def parent(self, child:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def sibling(self, row:int, column:int, idx:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + + +class QAbstractNativeEventFilter(Shiboken.Object): + + def __init__(self) -> None: ... + + def nativeEventFilter(self, eventType:PySide2.QtCore.QByteArray, message:int) -> typing.Tuple: ... + + +class QAbstractProxyModel(PySide2.QtCore.QAbstractItemModel): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def buddy(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def canDropMimeData(self, data:PySide2.QtCore.QMimeData, action:PySide2.QtCore.Qt.DropAction, row:int, column:int, parent:PySide2.QtCore.QModelIndex) -> bool: ... + def canFetchMore(self, parent:PySide2.QtCore.QModelIndex) -> bool: ... + def data(self, proxyIndex:PySide2.QtCore.QModelIndex, role:int=...) -> typing.Any: ... + def dropMimeData(self, data:PySide2.QtCore.QMimeData, action:PySide2.QtCore.Qt.DropAction, row:int, column:int, parent:PySide2.QtCore.QModelIndex) -> bool: ... + def fetchMore(self, parent:PySide2.QtCore.QModelIndex) -> None: ... + def flags(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.Qt.ItemFlags: ... + def hasChildren(self, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def headerData(self, section:int, orientation:PySide2.QtCore.Qt.Orientation, role:int=...) -> typing.Any: ... + def itemData(self, index:PySide2.QtCore.QModelIndex) -> typing.Dict: ... + def mapFromSource(self, sourceIndex:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def mapSelectionFromSource(self, selection:PySide2.QtCore.QItemSelection) -> PySide2.QtCore.QItemSelection: ... + def mapSelectionToSource(self, selection:PySide2.QtCore.QItemSelection) -> PySide2.QtCore.QItemSelection: ... + def mapToSource(self, proxyIndex:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def mimeData(self, indexes:typing.List) -> PySide2.QtCore.QMimeData: ... + def mimeTypes(self) -> typing.List: ... + def resetInternalData(self) -> None: ... + def revert(self) -> None: ... + def setData(self, index:PySide2.QtCore.QModelIndex, value:typing.Any, role:int=...) -> bool: ... + def setHeaderData(self, section:int, orientation:PySide2.QtCore.Qt.Orientation, value:typing.Any, role:int=...) -> bool: ... + def setItemData(self, index:PySide2.QtCore.QModelIndex, roles:typing.Dict) -> bool: ... + def setSourceModel(self, sourceModel:PySide2.QtCore.QAbstractItemModel) -> None: ... + def sibling(self, row:int, column:int, idx:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def sort(self, column:int, order:PySide2.QtCore.Qt.SortOrder=...) -> None: ... + def sourceModel(self) -> PySide2.QtCore.QAbstractItemModel: ... + def span(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QSize: ... + def submit(self) -> bool: ... + def supportedDragActions(self) -> PySide2.QtCore.Qt.DropActions: ... + def supportedDropActions(self) -> PySide2.QtCore.Qt.DropActions: ... + + +class QAbstractState(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QState]=...) -> None: ... + + def active(self) -> bool: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def machine(self) -> PySide2.QtCore.QStateMachine: ... + def onEntry(self, event:PySide2.QtCore.QEvent) -> None: ... + def onExit(self, event:PySide2.QtCore.QEvent) -> None: ... + def parentState(self) -> PySide2.QtCore.QState: ... + + +class QAbstractTableModel(PySide2.QtCore.QAbstractItemModel): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def dropMimeData(self, data:PySide2.QtCore.QMimeData, action:PySide2.QtCore.Qt.DropAction, row:int, column:int, parent:PySide2.QtCore.QModelIndex) -> bool: ... + def flags(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.Qt.ItemFlags: ... + def hasChildren(self, parent:PySide2.QtCore.QModelIndex) -> bool: ... + def index(self, row:int, column:int, parent:PySide2.QtCore.QModelIndex=...) -> PySide2.QtCore.QModelIndex: ... + @typing.overload + def parent(self) -> PySide2.QtCore.QObject: ... + @typing.overload + def parent(self, child:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def sibling(self, row:int, column:int, idx:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + + +class QAbstractTransition(PySide2.QtCore.QObject): + ExternalTransition : QAbstractTransition = ... # 0x0 + InternalTransition : QAbstractTransition = ... # 0x1 + + class TransitionType(object): + ExternalTransition : QAbstractTransition.TransitionType = ... # 0x0 + InternalTransition : QAbstractTransition.TransitionType = ... # 0x1 + + def __init__(self, sourceState:typing.Optional[PySide2.QtCore.QState]=...) -> None: ... + + def addAnimation(self, animation:PySide2.QtCore.QAbstractAnimation) -> None: ... + def animations(self) -> typing.List: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def eventTest(self, event:PySide2.QtCore.QEvent) -> bool: ... + def machine(self) -> PySide2.QtCore.QStateMachine: ... + def onTransition(self, event:PySide2.QtCore.QEvent) -> None: ... + def removeAnimation(self, animation:PySide2.QtCore.QAbstractAnimation) -> None: ... + def setTargetState(self, target:PySide2.QtCore.QAbstractState) -> None: ... + def setTargetStates(self, targets:typing.Sequence) -> None: ... + def setTransitionType(self, type:PySide2.QtCore.QAbstractTransition.TransitionType) -> None: ... + def sourceState(self) -> PySide2.QtCore.QState: ... + def targetState(self) -> PySide2.QtCore.QAbstractState: ... + def targetStates(self) -> typing.List: ... + def transitionType(self) -> PySide2.QtCore.QAbstractTransition.TransitionType: ... + + +class QAnimationGroup(PySide2.QtCore.QAbstractAnimation): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def addAnimation(self, animation:PySide2.QtCore.QAbstractAnimation) -> None: ... + def animationAt(self, index:int) -> PySide2.QtCore.QAbstractAnimation: ... + def animationCount(self) -> int: ... + def clear(self) -> None: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def indexOfAnimation(self, animation:PySide2.QtCore.QAbstractAnimation) -> int: ... + def insertAnimation(self, index:int, animation:PySide2.QtCore.QAbstractAnimation) -> None: ... + def removeAnimation(self, animation:PySide2.QtCore.QAbstractAnimation) -> None: ... + def takeAnimation(self, index:int) -> PySide2.QtCore.QAbstractAnimation: ... + + +class QBasicMutex(Shiboken.Object): + + def __init__(self) -> None: ... + + def isRecursive(self) -> bool: ... + def lock(self) -> None: ... + def tryLock(self) -> bool: ... + def try_lock(self) -> bool: ... + def unlock(self) -> None: ... + + +class QBasicTimer(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtCore.QBasicTimer) -> None: ... + + def isActive(self) -> bool: ... + @typing.overload + def start(self, msec:int, obj:PySide2.QtCore.QObject) -> None: ... + @typing.overload + def start(self, msec:int, timerType:PySide2.QtCore.Qt.TimerType, obj:PySide2.QtCore.QObject) -> None: ... + def stop(self) -> None: ... + def swap(self, other:PySide2.QtCore.QBasicTimer) -> None: ... + def timerId(self) -> int: ... + + +class QBitArray(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtCore.QBitArray) -> None: ... + @typing.overload + def __init__(self, size:int, val:bool=...) -> None: ... + + def __and__(self, arg__2:PySide2.QtCore.QBitArray) -> PySide2.QtCore.QBitArray: ... + @staticmethod + def __copy__() -> None: ... + def __iand__(self, arg__1:PySide2.QtCore.QBitArray) -> PySide2.QtCore.QBitArray: ... + def __invert__(self) -> PySide2.QtCore.QBitArray: ... + def __ior__(self, arg__1:PySide2.QtCore.QBitArray) -> PySide2.QtCore.QBitArray: ... + def __ixor__(self, arg__1:PySide2.QtCore.QBitArray) -> PySide2.QtCore.QBitArray: ... + def __or__(self, arg__2:PySide2.QtCore.QBitArray) -> PySide2.QtCore.QBitArray: ... + def __xor__(self, arg__2:PySide2.QtCore.QBitArray) -> PySide2.QtCore.QBitArray: ... + def at(self, i:int) -> bool: ... + def bits(self) -> bytes: ... + def clear(self) -> None: ... + def clearBit(self, i:int) -> None: ... + @typing.overload + def count(self) -> int: ... + @typing.overload + def count(self, on:bool) -> int: ... + @typing.overload + def fill(self, val:bool, first:int, last:int) -> None: ... + @typing.overload + def fill(self, val:bool, size:int=...) -> bool: ... + @staticmethod + def fromBits(data:bytes, len:int) -> PySide2.QtCore.QBitArray: ... + def isEmpty(self) -> bool: ... + def isNull(self) -> bool: ... + def resize(self, size:int) -> None: ... + @typing.overload + def setBit(self, i:int) -> None: ... + @typing.overload + def setBit(self, i:int, val:bool) -> None: ... + def size(self) -> int: ... + def swap(self, other:PySide2.QtCore.QBitArray) -> None: ... + def testBit(self, i:int) -> bool: ... + def toggleBit(self, i:int) -> bool: ... + def truncate(self, pos:int) -> None: ... + + +class QBuffer(PySide2.QtCore.QIODevice): + + @typing.overload + def __init__(self, buf:PySide2.QtCore.QByteArray, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def atEnd(self) -> bool: ... + def buffer(self) -> PySide2.QtCore.QByteArray: ... + def canReadLine(self) -> bool: ... + def close(self) -> None: ... + def connectNotify(self, arg__1:PySide2.QtCore.QMetaMethod) -> None: ... + def data(self) -> PySide2.QtCore.QByteArray: ... + def disconnectNotify(self, arg__1:PySide2.QtCore.QMetaMethod) -> None: ... + def open(self, openMode:PySide2.QtCore.QIODevice.OpenMode) -> bool: ... + def pos(self) -> int: ... + def readData(self, data:bytes, maxlen:int) -> int: ... + def seek(self, off:int) -> bool: ... + def setBuffer(self, a:PySide2.QtCore.QByteArray) -> None: ... + def setData(self, data:PySide2.QtCore.QByteArray) -> None: ... + def size(self) -> int: ... + def writeData(self, data:bytes, len:int) -> int: ... + + +class QByteArray(Shiboken.Object): + Base64Encoding : QByteArray = ... # 0x0 + IgnoreBase64DecodingErrors: QByteArray = ... # 0x0 + KeepTrailingEquals : QByteArray = ... # 0x0 + Base64UrlEncoding : QByteArray = ... # 0x1 + OmitTrailingEquals : QByteArray = ... # 0x2 + AbortOnBase64DecodingErrors: QByteArray = ... # 0x4 + + class Base64DecodingStatus(object): + Ok : QByteArray.Base64DecodingStatus = ... # 0x0 + IllegalInputLength : QByteArray.Base64DecodingStatus = ... # 0x1 + IllegalCharacter : QByteArray.Base64DecodingStatus = ... # 0x2 + IllegalPadding : QByteArray.Base64DecodingStatus = ... # 0x3 + + class Base64Option(object): + Base64Encoding : QByteArray.Base64Option = ... # 0x0 + IgnoreBase64DecodingErrors: QByteArray.Base64Option = ... # 0x0 + KeepTrailingEquals : QByteArray.Base64Option = ... # 0x0 + Base64UrlEncoding : QByteArray.Base64Option = ... # 0x1 + OmitTrailingEquals : QByteArray.Base64Option = ... # 0x2 + AbortOnBase64DecodingErrors: QByteArray.Base64Option = ... # 0x4 + + class Base64Options(object): ... + + class FromBase64Result(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, FromBase64Result:PySide2.QtCore.QByteArray.FromBase64Result) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def swap(self, other:PySide2.QtCore.QByteArray.FromBase64Result) -> None: ... + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:bytearray) -> None: ... + @typing.overload + def __init__(self, arg__1:bytes) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtCore.QByteArray) -> None: ... + @typing.overload + def __init__(self, size:int, c:int) -> None: ... + + @typing.overload + def __add__(self, a2:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QByteArray: ... + @typing.overload + def __add__(self, a2:int) -> PySide2.QtCore.QByteArray: ... + @typing.overload + def __add__(self, arg__1:bytearray) -> PySide2.QtCore.QByteArray: ... + @typing.overload + def __add__(self, arg__1:bytes) -> None: ... + @staticmethod + def __copy__() -> None: ... + @typing.overload + def __iadd__(self, a:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QByteArray: ... + @typing.overload + def __iadd__(self, arg__1:bytearray) -> PySide2.QtCore.QByteArray: ... + @typing.overload + def __iadd__(self, c:int) -> PySide2.QtCore.QByteArray: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + def __str__(self) -> object: ... + @typing.overload + def append(self, a:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QByteArray: ... + @typing.overload + def append(self, c:int) -> PySide2.QtCore.QByteArray: ... + @typing.overload + def append(self, count:int, c:int) -> PySide2.QtCore.QByteArray: ... + def at(self, i:int) -> int: ... + def back(self) -> int: ... + def capacity(self) -> int: ... + def cbegin(self) -> bytes: ... + def cend(self) -> bytes: ... + def chop(self, n:int) -> None: ... + def chopped(self, len:int) -> PySide2.QtCore.QByteArray: ... + def clear(self) -> None: ... + @typing.overload + def compare(self, a:PySide2.QtCore.QByteArray, cs:PySide2.QtCore.Qt.CaseSensitivity=...) -> int: ... + @typing.overload + def compare(self, c:bytes, cs:PySide2.QtCore.Qt.CaseSensitivity=...) -> int: ... + @typing.overload + def contains(self, a:PySide2.QtCore.QByteArray) -> bool: ... + @typing.overload + def contains(self, c:int) -> bool: ... + @typing.overload + def count(self) -> int: ... + @typing.overload + def count(self, a:PySide2.QtCore.QByteArray) -> int: ... + @typing.overload + def count(self, c:int) -> int: ... + def data(self) -> bytes: ... + @typing.overload + def endsWith(self, a:PySide2.QtCore.QByteArray) -> bool: ... + @typing.overload + def endsWith(self, c:int) -> bool: ... + def fill(self, c:int, size:int=...) -> PySide2.QtCore.QByteArray: ... + @typing.overload + @staticmethod + def fromBase64(base64:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QByteArray: ... + @typing.overload + @staticmethod + def fromBase64(base64:PySide2.QtCore.QByteArray, options:PySide2.QtCore.QByteArray.Base64Options) -> PySide2.QtCore.QByteArray: ... + @staticmethod + def fromBase64Encoding(base64:PySide2.QtCore.QByteArray, options:PySide2.QtCore.QByteArray.Base64Options=...) -> PySide2.QtCore.QByteArray.FromBase64Result: ... + @staticmethod + def fromHex(hexEncoded:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QByteArray: ... + @staticmethod + def fromPercentEncoding(pctEncoded:PySide2.QtCore.QByteArray, percent:int=...) -> PySide2.QtCore.QByteArray: ... + @staticmethod + def fromRawData(arg__1:bytes, size:int) -> PySide2.QtCore.QByteArray: ... + def front(self) -> int: ... + def indexOf(self, a:PySide2.QtCore.QByteArray, from_:int=...) -> int: ... + @typing.overload + def insert(self, i:int, a:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QByteArray: ... + @typing.overload + def insert(self, i:int, count:int, c:int) -> PySide2.QtCore.QByteArray: ... + def isEmpty(self) -> bool: ... + def isLower(self) -> bool: ... + def isNull(self) -> bool: ... + def isSharedWith(self, other:PySide2.QtCore.QByteArray) -> bool: ... + def isUpper(self) -> bool: ... + def lastIndexOf(self, a:PySide2.QtCore.QByteArray, from_:int=...) -> int: ... + def left(self, len:int) -> PySide2.QtCore.QByteArray: ... + def leftJustified(self, width:int, fill:int=..., truncate:bool=...) -> PySide2.QtCore.QByteArray: ... + def length(self) -> int: ... + def mid(self, index:int, len:int=...) -> PySide2.QtCore.QByteArray: ... + @typing.overload + @staticmethod + def number(arg__1:float, f:int=..., prec:int=...) -> PySide2.QtCore.QByteArray: ... + @typing.overload + @staticmethod + def number(arg__1:int, base:int=...) -> PySide2.QtCore.QByteArray: ... + @typing.overload + @staticmethod + def number(arg__1:int, base:int=...) -> PySide2.QtCore.QByteArray: ... + @typing.overload + def prepend(self, a:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QByteArray: ... + @typing.overload + def prepend(self, c:int) -> PySide2.QtCore.QByteArray: ... + @typing.overload + def prepend(self, count:int, c:int) -> PySide2.QtCore.QByteArray: ... + def remove(self, index:int, len:int) -> PySide2.QtCore.QByteArray: ... + def repeated(self, times:int) -> PySide2.QtCore.QByteArray: ... + @typing.overload + def replace(self, before:PySide2.QtCore.QByteArray, after:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QByteArray: ... + @typing.overload + def replace(self, before:str, after:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QByteArray: ... + @typing.overload + def replace(self, before:int, after:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QByteArray: ... + @typing.overload + def replace(self, before:int, after:int) -> PySide2.QtCore.QByteArray: ... + @typing.overload + def replace(self, index:int, len:int, s:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QByteArray: ... + def reserve(self, size:int) -> None: ... + def resize(self, size:int) -> None: ... + def right(self, len:int) -> PySide2.QtCore.QByteArray: ... + def rightJustified(self, width:int, fill:int=..., truncate:bool=...) -> PySide2.QtCore.QByteArray: ... + @typing.overload + def setNum(self, arg__1:float, f:int=..., prec:int=...) -> PySide2.QtCore.QByteArray: ... + @typing.overload + def setNum(self, arg__1:int, base:int=...) -> PySide2.QtCore.QByteArray: ... + @typing.overload + def setNum(self, arg__1:int, base:int=...) -> PySide2.QtCore.QByteArray: ... + def setRawData(self, a:bytes, n:int) -> PySide2.QtCore.QByteArray: ... + def shrink_to_fit(self) -> None: ... + def simplified(self) -> PySide2.QtCore.QByteArray: ... + def size(self) -> int: ... + def split(self, sep:int) -> typing.List: ... + def squeeze(self) -> None: ... + @typing.overload + def startsWith(self, a:PySide2.QtCore.QByteArray) -> bool: ... + @typing.overload + def startsWith(self, c:int) -> bool: ... + def swap(self, other:PySide2.QtCore.QByteArray) -> None: ... + @typing.overload + def toBase64(self) -> PySide2.QtCore.QByteArray: ... + @typing.overload + def toBase64(self, options:PySide2.QtCore.QByteArray.Base64Options) -> PySide2.QtCore.QByteArray: ... + def toDouble(self) -> typing.Tuple: ... + def toFloat(self) -> typing.Tuple: ... + @typing.overload + def toHex(self) -> PySide2.QtCore.QByteArray: ... + @typing.overload + def toHex(self, separator:int) -> PySide2.QtCore.QByteArray: ... + def toInt(self, base:int=...) -> typing.Tuple: ... + def toLong(self, base:int=...) -> typing.Tuple: ... + def toLongLong(self, base:int=...) -> typing.Tuple: ... + def toLower(self) -> PySide2.QtCore.QByteArray: ... + def toPercentEncoding(self, exclude:PySide2.QtCore.QByteArray=..., include:PySide2.QtCore.QByteArray=..., percent:int=...) -> PySide2.QtCore.QByteArray: ... + def toShort(self, base:int=...) -> typing.Tuple: ... + def toUInt(self, base:int=...) -> typing.Tuple: ... + def toULong(self, base:int=...) -> typing.Tuple: ... + def toULongLong(self, base:int=...) -> typing.Tuple: ... + def toUShort(self, base:int=...) -> typing.Tuple: ... + def toUpper(self) -> PySide2.QtCore.QByteArray: ... + def trimmed(self) -> PySide2.QtCore.QByteArray: ... + def truncate(self, pos:int) -> None: ... + + +class QByteArrayMatcher(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtCore.QByteArrayMatcher) -> None: ... + @typing.overload + def __init__(self, pattern:PySide2.QtCore.QByteArray) -> None: ... + @typing.overload + def __init__(self, pattern:bytes, length:int) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @typing.overload + def indexIn(self, ba:PySide2.QtCore.QByteArray, from_:int=...) -> int: ... + @typing.overload + def indexIn(self, str:bytes, len:int, from_:int=...) -> int: ... + def pattern(self) -> PySide2.QtCore.QByteArray: ... + def setPattern(self, pattern:PySide2.QtCore.QByteArray) -> None: ... + + +class QCalendar(Shiboken.Object): + + class System(object): + User : QCalendar.System = ... # -0x1 + Gregorian : QCalendar.System = ... # 0x0 + Julian : QCalendar.System = ... # 0x8 + Milankovic : QCalendar.System = ... # 0x9 + Jalali : QCalendar.System = ... # 0xa + IslamicCivil : QCalendar.System = ... # 0xb + Last : QCalendar.System = ... # 0xb + + class YearMonthDay(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, YearMonthDay:PySide2.QtCore.QCalendar.YearMonthDay) -> None: ... + @typing.overload + def __init__(self, y:int, m:int=..., d:int=...) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def isValid(self) -> bool: ... + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, system:PySide2.QtCore.QCalendar.System) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @staticmethod + def availableCalendars() -> typing.List: ... + @typing.overload + def dateFromParts(self, parts:PySide2.QtCore.QCalendar.YearMonthDay) -> PySide2.QtCore.QDate: ... + @typing.overload + def dateFromParts(self, year:int, month:int, day:int) -> PySide2.QtCore.QDate: ... + def dayOfWeek(self, date:PySide2.QtCore.QDate) -> int: ... + def daysInMonth(self, month:int, year:typing.Optional[int]=...) -> int: ... + def daysInYear(self, year:int) -> int: ... + def hasYearZero(self) -> bool: ... + def isDateValid(self, year:int, month:int, day:int) -> bool: ... + def isGregorian(self) -> bool: ... + def isLeapYear(self, year:int) -> bool: ... + def isLunar(self) -> bool: ... + def isLuniSolar(self) -> bool: ... + def isProleptic(self) -> bool: ... + def isSolar(self) -> bool: ... + def isValid(self) -> bool: ... + def maximumDaysInMonth(self) -> int: ... + def maximumMonthsInYear(self) -> int: ... + def minimumDaysInMonth(self) -> int: ... + def monthName(self, locale:PySide2.QtCore.QLocale, month:int, year:typing.Optional[int]=..., format:PySide2.QtCore.QLocale.FormatType=...) -> str: ... + def monthsInYear(self, year:int) -> int: ... + def name(self) -> str: ... + def partsFromDate(self, date:PySide2.QtCore.QDate) -> PySide2.QtCore.QCalendar.YearMonthDay: ... + def standaloneMonthName(self, locale:PySide2.QtCore.QLocale, month:int, year:typing.Optional[int]=..., format:PySide2.QtCore.QLocale.FormatType=...) -> str: ... + def standaloneWeekDayName(self, locale:PySide2.QtCore.QLocale, day:int, format:PySide2.QtCore.QLocale.FormatType=...) -> str: ... + def weekDayName(self, locale:PySide2.QtCore.QLocale, day:int, format:PySide2.QtCore.QLocale.FormatType=...) -> str: ... + + +class QCborArray(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtCore.QCborArray) -> None: ... + + def __add__(self, v:PySide2.QtCore.QCborValue) -> PySide2.QtCore.QCborArray: ... + @staticmethod + def __copy__() -> None: ... + def __iadd__(self, v:PySide2.QtCore.QCborValue) -> PySide2.QtCore.QCborArray: ... + def __lshift__(self, v:PySide2.QtCore.QCborValue) -> PySide2.QtCore.QCborArray: ... + def append(self, value:PySide2.QtCore.QCborValue) -> None: ... + def at(self, i:int) -> PySide2.QtCore.QCborValue: ... + def clear(self) -> None: ... + def compare(self, other:PySide2.QtCore.QCborArray) -> int: ... + def contains(self, value:PySide2.QtCore.QCborValue) -> bool: ... + def empty(self) -> bool: ... + def first(self) -> PySide2.QtCore.QCborValue: ... + @staticmethod + def fromJsonArray(array:PySide2.QtCore.QJsonArray) -> PySide2.QtCore.QCborArray: ... + @staticmethod + def fromStringList(list:typing.Sequence) -> PySide2.QtCore.QCborArray: ... + @staticmethod + def fromVariantList(list:typing.Sequence) -> PySide2.QtCore.QCborArray: ... + def insert(self, i:int, value:PySide2.QtCore.QCborValue) -> None: ... + def isEmpty(self) -> bool: ... + def last(self) -> PySide2.QtCore.QCborValue: ... + def pop_back(self) -> None: ... + def pop_front(self) -> None: ... + def prepend(self, value:PySide2.QtCore.QCborValue) -> None: ... + def push_back(self, t:PySide2.QtCore.QCborValue) -> None: ... + def push_front(self, t:PySide2.QtCore.QCborValue) -> None: ... + def removeAt(self, i:int) -> None: ... + def removeFirst(self) -> None: ... + def removeLast(self) -> None: ... + def size(self) -> int: ... + def swap(self, other:PySide2.QtCore.QCborArray) -> None: ... + def takeAt(self, i:int) -> PySide2.QtCore.QCborValue: ... + def takeFirst(self) -> PySide2.QtCore.QCborValue: ... + def takeLast(self) -> PySide2.QtCore.QCborValue: ... + def toCborValue(self) -> PySide2.QtCore.QCborValue: ... + def toJsonArray(self) -> PySide2.QtCore.QJsonArray: ... + def toVariantList(self) -> typing.List: ... + + +class QCborError(Shiboken.Object): + NoError : QCborError = ... # 0x0 + UnknownError : QCborError = ... # 0x1 + AdvancePastEnd : QCborError = ... # 0x3 + InputOutputError : QCborError = ... # 0x4 + GarbageAtEnd : QCborError = ... # 0x100 + EndOfFile : QCborError = ... # 0x101 + UnexpectedBreak : QCborError = ... # 0x102 + UnknownType : QCborError = ... # 0x103 + IllegalType : QCborError = ... # 0x104 + IllegalNumber : QCborError = ... # 0x105 + IllegalSimpleType : QCborError = ... # 0x106 + InvalidUtf8String : QCborError = ... # 0x204 + DataTooLarge : QCborError = ... # 0x400 + NestingTooDeep : QCborError = ... # 0x401 + UnsupportedType : QCborError = ... # 0x402 + + class Code(object): + NoError : QCborError.Code = ... # 0x0 + UnknownError : QCborError.Code = ... # 0x1 + AdvancePastEnd : QCborError.Code = ... # 0x3 + InputOutputError : QCborError.Code = ... # 0x4 + GarbageAtEnd : QCborError.Code = ... # 0x100 + EndOfFile : QCborError.Code = ... # 0x101 + UnexpectedBreak : QCborError.Code = ... # 0x102 + UnknownType : QCborError.Code = ... # 0x103 + IllegalType : QCborError.Code = ... # 0x104 + IllegalNumber : QCborError.Code = ... # 0x105 + IllegalSimpleType : QCborError.Code = ... # 0x106 + InvalidUtf8String : QCborError.Code = ... # 0x204 + DataTooLarge : QCborError.Code = ... # 0x400 + NestingTooDeep : QCborError.Code = ... # 0x401 + UnsupportedType : QCborError.Code = ... # 0x402 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QCborError:PySide2.QtCore.QCborError) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def toString(self) -> str: ... + + +class QCborKnownTags(object): + DateTimeString : QCborKnownTags = ... # 0x0 + UnixTime_t : QCborKnownTags = ... # 0x1 + PositiveBignum : QCborKnownTags = ... # 0x2 + NegativeBignum : QCborKnownTags = ... # 0x3 + Decimal : QCborKnownTags = ... # 0x4 + Bigfloat : QCborKnownTags = ... # 0x5 + COSE_Encrypt0 : QCborKnownTags = ... # 0x10 + COSE_Mac0 : QCborKnownTags = ... # 0x11 + COSE_Sign1 : QCborKnownTags = ... # 0x12 + ExpectedBase64url : QCborKnownTags = ... # 0x15 + ExpectedBase64 : QCborKnownTags = ... # 0x16 + ExpectedBase16 : QCborKnownTags = ... # 0x17 + EncodedCbor : QCborKnownTags = ... # 0x18 + Url : QCborKnownTags = ... # 0x20 + Base64url : QCborKnownTags = ... # 0x21 + Base64 : QCborKnownTags = ... # 0x22 + RegularExpression : QCborKnownTags = ... # 0x23 + MimeMessage : QCborKnownTags = ... # 0x24 + Uuid : QCborKnownTags = ... # 0x25 + COSE_Encrypt : QCborKnownTags = ... # 0x60 + COSE_Mac : QCborKnownTags = ... # 0x61 + COSE_Sign : QCborKnownTags = ... # 0x62 + Signature : QCborKnownTags = ... # 0xd9f7 + + +class QCborMap(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtCore.QCborMap) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def clear(self) -> None: ... + def compare(self, other:PySide2.QtCore.QCborMap) -> int: ... + @typing.overload + def contains(self, key:PySide2.QtCore.QCborValue) -> bool: ... + @typing.overload + def contains(self, key:str) -> bool: ... + @typing.overload + def contains(self, key:int) -> bool: ... + def empty(self) -> bool: ... + @staticmethod + def fromJsonObject(o:typing.Dict) -> PySide2.QtCore.QCborMap: ... + @staticmethod + def fromVariantHash(hash:typing.Dict) -> PySide2.QtCore.QCborMap: ... + @staticmethod + def fromVariantMap(map:typing.Dict) -> PySide2.QtCore.QCborMap: ... + def isEmpty(self) -> bool: ... + def keys(self) -> typing.List: ... + @typing.overload + def remove(self, key:PySide2.QtCore.QCborValue) -> None: ... + @typing.overload + def remove(self, key:str) -> None: ... + @typing.overload + def remove(self, key:int) -> None: ... + def size(self) -> int: ... + def swap(self, other:PySide2.QtCore.QCborMap) -> None: ... + @typing.overload + def take(self, key:PySide2.QtCore.QCborValue) -> PySide2.QtCore.QCborValue: ... + @typing.overload + def take(self, key:str) -> PySide2.QtCore.QCborValue: ... + @typing.overload + def take(self, key:int) -> PySide2.QtCore.QCborValue: ... + def toCborValue(self) -> PySide2.QtCore.QCborValue: ... + def toJsonObject(self) -> typing.Dict: ... + def toVariantHash(self) -> typing.Dict: ... + def toVariantMap(self) -> typing.Dict: ... + @typing.overload + def value(self, key:PySide2.QtCore.QCborValue) -> PySide2.QtCore.QCborValue: ... + @typing.overload + def value(self, key:str) -> PySide2.QtCore.QCborValue: ... + @typing.overload + def value(self, key:int) -> PySide2.QtCore.QCborValue: ... + + +class QCborParserError(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QCborParserError:PySide2.QtCore.QCborParserError) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def errorString(self) -> str: ... + + +class QCborSimpleType(object): + False_ : QCborSimpleType = ... # 0x14 + True_ : QCborSimpleType = ... # 0x15 + Null : QCborSimpleType = ... # 0x16 + Undefined : QCborSimpleType = ... # 0x17 + + +class QCborStreamReader(Shiboken.Object): + Error : QCborStreamReader = ... # -0x1 + EndOfString : QCborStreamReader = ... # 0x0 + UnsignedInteger : QCborStreamReader = ... # 0x0 + Ok : QCborStreamReader = ... # 0x1 + NegativeInteger : QCborStreamReader = ... # 0x20 + ByteArray : QCborStreamReader = ... # 0x40 + ByteString : QCborStreamReader = ... # 0x40 + String : QCborStreamReader = ... # 0x60 + TextString : QCborStreamReader = ... # 0x60 + Array : QCborStreamReader = ... # 0x80 + Map : QCborStreamReader = ... # 0xa0 + Tag : QCborStreamReader = ... # 0xc0 + SimpleType : QCborStreamReader = ... # 0xe0 + Float16 : QCborStreamReader = ... # 0xf9 + HalfFloat : QCborStreamReader = ... # 0xf9 + Float : QCborStreamReader = ... # 0xfa + Double : QCborStreamReader = ... # 0xfb + Invalid : QCborStreamReader = ... # 0xff + + class StringResultCode(object): + Error : QCborStreamReader.StringResultCode = ... # -0x1 + EndOfString : QCborStreamReader.StringResultCode = ... # 0x0 + Ok : QCborStreamReader.StringResultCode = ... # 0x1 + + class Type(object): + UnsignedInteger : QCborStreamReader.Type = ... # 0x0 + NegativeInteger : QCborStreamReader.Type = ... # 0x20 + ByteArray : QCborStreamReader.Type = ... # 0x40 + ByteString : QCborStreamReader.Type = ... # 0x40 + String : QCborStreamReader.Type = ... # 0x60 + TextString : QCborStreamReader.Type = ... # 0x60 + Array : QCborStreamReader.Type = ... # 0x80 + Map : QCborStreamReader.Type = ... # 0xa0 + Tag : QCborStreamReader.Type = ... # 0xc0 + SimpleType : QCborStreamReader.Type = ... # 0xe0 + Float16 : QCborStreamReader.Type = ... # 0xf9 + HalfFloat : QCborStreamReader.Type = ... # 0xf9 + Float : QCborStreamReader.Type = ... # 0xfa + Double : QCborStreamReader.Type = ... # 0xfb + Invalid : QCborStreamReader.Type = ... # 0xff + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, data:PySide2.QtCore.QByteArray) -> None: ... + @typing.overload + def __init__(self, data:bytes, len:int) -> None: ... + @typing.overload + def __init__(self, data:bytearray, len:int) -> None: ... + @typing.overload + def __init__(self, device:PySide2.QtCore.QIODevice) -> None: ... + + @typing.overload + def addData(self, data:PySide2.QtCore.QByteArray) -> None: ... + @typing.overload + def addData(self, data:bytes, len:int) -> None: ... + @typing.overload + def addData(self, data:bytearray, len:int) -> None: ... + def clear(self) -> None: ... + def containerDepth(self) -> int: ... + def currentOffset(self) -> int: ... + def currentStringChunkSize(self) -> int: ... + def device(self) -> PySide2.QtCore.QIODevice: ... + def enterContainer(self) -> bool: ... + def hasNext(self) -> bool: ... + def isArray(self) -> bool: ... + def isBool(self) -> bool: ... + def isByteArray(self) -> bool: ... + def isContainer(self) -> bool: ... + def isDouble(self) -> bool: ... + def isFalse(self) -> bool: ... + def isFloat(self) -> bool: ... + def isFloat16(self) -> bool: ... + def isInteger(self) -> bool: ... + def isInvalid(self) -> bool: ... + def isLengthKnown(self) -> bool: ... + def isMap(self) -> bool: ... + def isNegativeInteger(self) -> bool: ... + def isNull(self) -> bool: ... + @typing.overload + def isSimpleType(self) -> bool: ... + @typing.overload + def isSimpleType(self, st:PySide2.QtCore.QCborSimpleType) -> bool: ... + def isString(self) -> bool: ... + def isTag(self) -> bool: ... + def isTrue(self) -> bool: ... + def isUndefined(self) -> bool: ... + def isUnsignedInteger(self) -> bool: ... + def isValid(self) -> bool: ... + def lastError(self) -> PySide2.QtCore.QCborError: ... + def leaveContainer(self) -> bool: ... + def length(self) -> int: ... + def next(self, maxRecursion:int=...) -> bool: ... + def parentContainerType(self) -> PySide2.QtCore.QCborStreamReader.Type: ... + def readByteArray(self) -> PySide2.QtCore.QCborStringResultByteArray: ... + def readString(self) -> PySide2.QtCore.QCborStringResultString: ... + def reparse(self) -> None: ... + def reset(self) -> None: ... + def setDevice(self, device:PySide2.QtCore.QIODevice) -> None: ... + def toBool(self) -> bool: ... + def toDouble(self) -> float: ... + def toFloat(self) -> float: ... + def toInteger(self) -> int: ... + def toSimpleType(self) -> PySide2.QtCore.QCborSimpleType: ... + def toUnsignedInteger(self) -> int: ... + def type(self) -> PySide2.QtCore.QCborStreamReader.Type: ... + + +class QCborStreamWriter(Shiboken.Object): + + @typing.overload + def __init__(self, data:PySide2.QtCore.QByteArray) -> None: ... + @typing.overload + def __init__(self, device:PySide2.QtCore.QIODevice) -> None: ... + + @typing.overload + def append(self, b:bool) -> None: ... + @typing.overload + def append(self, ba:PySide2.QtCore.QByteArray) -> None: ... + @typing.overload + def append(self, d:float) -> None: ... + @typing.overload + def append(self, f:float) -> None: ... + @typing.overload + def append(self, i:int) -> None: ... + @typing.overload + def append(self, i:int) -> None: ... + @typing.overload + def append(self, st:PySide2.QtCore.QCborSimpleType) -> None: ... + @typing.overload + def append(self, str:bytes, size:int=...) -> None: ... + @typing.overload + def append(self, tag:PySide2.QtCore.QCborKnownTags) -> None: ... + @typing.overload + def append(self, u:int) -> None: ... + @typing.overload + def append(self, u:int) -> None: ... + def appendByteString(self, data:bytes, len:int) -> None: ... + def appendNull(self) -> None: ... + def appendTextString(self, utf8:bytes, len:int) -> None: ... + def appendUndefined(self) -> None: ... + def device(self) -> PySide2.QtCore.QIODevice: ... + def endArray(self) -> bool: ... + def endMap(self) -> bool: ... + def setDevice(self, device:PySide2.QtCore.QIODevice) -> None: ... + @typing.overload + def startArray(self) -> None: ... + @typing.overload + def startArray(self, count:int) -> None: ... + @typing.overload + def startMap(self) -> None: ... + @typing.overload + def startMap(self, count:int) -> None: ... + + +class QCborStringResultByteArray(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QCborStringResultByteArray:PySide2.QtCore.QCborStringResultByteArray) -> None: ... + + @staticmethod + def __copy__() -> None: ... + + +class QCborStringResultString(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QCborStringResultString:PySide2.QtCore.QCborStringResultString) -> None: ... + + @staticmethod + def __copy__() -> None: ... + + +class QCborValue(Shiboken.Object): + Invalid : QCborValue = ... # -0x1 + Compact : QCborValue = ... # 0x0 + Integer : QCborValue = ... # 0x0 + NoTransformation : QCborValue = ... # 0x0 + LineWrapped : QCborValue = ... # 0x1 + SortKeysInMaps : QCborValue = ... # 0x1 + ExtendedFormat : QCborValue = ... # 0x2 + UseFloat : QCborValue = ... # 0x2 + UseFloat16 : QCborValue = ... # 0x6 + UseIntegers : QCborValue = ... # 0x8 + ByteArray : QCborValue = ... # 0x40 + String : QCborValue = ... # 0x60 + Array : QCborValue = ... # 0x80 + Map : QCborValue = ... # 0xa0 + Tag : QCborValue = ... # 0xc0 + SimpleType : QCborValue = ... # 0x100 + False_ : QCborValue = ... # 0x114 + True_ : QCborValue = ... # 0x115 + Null : QCborValue = ... # 0x116 + Undefined : QCborValue = ... # 0x117 + Double : QCborValue = ... # 0x202 + DateTime : QCborValue = ... # 0x10000 + Url : QCborValue = ... # 0x10020 + RegularExpression : QCborValue = ... # 0x10023 + Uuid : QCborValue = ... # 0x10025 + + class DiagnosticNotationOption(object): + Compact : QCborValue.DiagnosticNotationOption = ... # 0x0 + LineWrapped : QCborValue.DiagnosticNotationOption = ... # 0x1 + ExtendedFormat : QCborValue.DiagnosticNotationOption = ... # 0x2 + + class DiagnosticNotationOptions(object): ... + + class EncodingOption(object): + NoTransformation : QCborValue.EncodingOption = ... # 0x0 + SortKeysInMaps : QCborValue.EncodingOption = ... # 0x1 + UseFloat : QCborValue.EncodingOption = ... # 0x2 + UseFloat16 : QCborValue.EncodingOption = ... # 0x6 + UseIntegers : QCborValue.EncodingOption = ... # 0x8 + + class EncodingOptions(object): ... + + class Type(object): + Invalid : QCborValue.Type = ... # -0x1 + Integer : QCborValue.Type = ... # 0x0 + ByteArray : QCborValue.Type = ... # 0x40 + String : QCborValue.Type = ... # 0x60 + Array : QCborValue.Type = ... # 0x80 + Map : QCborValue.Type = ... # 0xa0 + Tag : QCborValue.Type = ... # 0xc0 + SimpleType : QCborValue.Type = ... # 0x100 + False_ : QCborValue.Type = ... # 0x114 + True_ : QCborValue.Type = ... # 0x115 + Null : QCborValue.Type = ... # 0x116 + Undefined : QCborValue.Type = ... # 0x117 + Double : QCborValue.Type = ... # 0x202 + DateTime : QCborValue.Type = ... # 0x10000 + Url : QCborValue.Type = ... # 0x10020 + RegularExpression : QCborValue.Type = ... # 0x10023 + Uuid : QCborValue.Type = ... # 0x10025 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, a:PySide2.QtCore.QCborArray) -> None: ... + @typing.overload + def __init__(self, b_:bool) -> None: ... + @typing.overload + def __init__(self, ba:PySide2.QtCore.QByteArray) -> None: ... + @typing.overload + def __init__(self, dt:PySide2.QtCore.QDateTime) -> None: ... + @typing.overload + def __init__(self, i:int) -> None: ... + @typing.overload + def __init__(self, i:int) -> None: ... + @typing.overload + def __init__(self, m:PySide2.QtCore.QCborMap) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtCore.QCborValue) -> None: ... + @typing.overload + def __init__(self, rx:PySide2.QtCore.QRegularExpression) -> None: ... + @typing.overload + def __init__(self, s:str) -> None: ... + @typing.overload + def __init__(self, s:bytes) -> None: ... + @typing.overload + def __init__(self, st:PySide2.QtCore.QCborSimpleType) -> None: ... + @typing.overload + def __init__(self, t_:PySide2.QtCore.QCborKnownTags, tv:PySide2.QtCore.QCborValue=...) -> None: ... + @typing.overload + def __init__(self, t_:PySide2.QtCore.QCborValue.Type) -> None: ... + @typing.overload + def __init__(self, u:int) -> None: ... + @typing.overload + def __init__(self, url:PySide2.QtCore.QUrl) -> None: ... + @typing.overload + def __init__(self, uuid:PySide2.QtCore.QUuid) -> None: ... + @typing.overload + def __init__(self, v:float) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def compare(self, other:PySide2.QtCore.QCborValue) -> int: ... + @typing.overload + @staticmethod + def fromCbor(ba:PySide2.QtCore.QByteArray, error:typing.Optional[PySide2.QtCore.QCborParserError]=...) -> PySide2.QtCore.QCborValue: ... + @typing.overload + @staticmethod + def fromCbor(data:bytes, len:int, error:typing.Optional[PySide2.QtCore.QCborParserError]=...) -> PySide2.QtCore.QCborValue: ... + @typing.overload + @staticmethod + def fromCbor(data:bytearray, len:int, error:typing.Optional[PySide2.QtCore.QCborParserError]=...) -> PySide2.QtCore.QCborValue: ... + @typing.overload + @staticmethod + def fromCbor(reader:PySide2.QtCore.QCborStreamReader) -> PySide2.QtCore.QCborValue: ... + @staticmethod + def fromJsonValue(v:PySide2.QtCore.QJsonValue) -> PySide2.QtCore.QCborValue: ... + @staticmethod + def fromVariant(variant:typing.Any) -> PySide2.QtCore.QCborValue: ... + def isArray(self) -> bool: ... + def isBool(self) -> bool: ... + def isByteArray(self) -> bool: ... + def isContainer(self) -> bool: ... + def isDateTime(self) -> bool: ... + def isDouble(self) -> bool: ... + def isFalse(self) -> bool: ... + def isInteger(self) -> bool: ... + def isInvalid(self) -> bool: ... + def isMap(self) -> bool: ... + def isNull(self) -> bool: ... + def isRegularExpression(self) -> bool: ... + @typing.overload + def isSimpleType(self) -> bool: ... + @typing.overload + def isSimpleType(self, st:PySide2.QtCore.QCborSimpleType) -> bool: ... + def isString(self) -> bool: ... + def isTag(self) -> bool: ... + def isTrue(self) -> bool: ... + def isUndefined(self) -> bool: ... + def isUrl(self) -> bool: ... + def isUuid(self) -> bool: ... + def swap(self, other:PySide2.QtCore.QCborValue) -> None: ... + def taggedValue(self, defaultValue:PySide2.QtCore.QCborValue=...) -> PySide2.QtCore.QCborValue: ... + @typing.overload + def toArray(self) -> PySide2.QtCore.QCborArray: ... + @typing.overload + def toArray(self, defaultValue:PySide2.QtCore.QCborArray) -> PySide2.QtCore.QCborArray: ... + def toBool(self, defaultValue:bool=...) -> bool: ... + def toByteArray(self, defaultValue:PySide2.QtCore.QByteArray=...) -> PySide2.QtCore.QByteArray: ... + @typing.overload + def toCbor(self, opt:PySide2.QtCore.QCborValue.EncodingOptions=...) -> PySide2.QtCore.QByteArray: ... + @typing.overload + def toCbor(self, writer:PySide2.QtCore.QCborStreamWriter, opt:PySide2.QtCore.QCborValue.EncodingOptions=...) -> None: ... + def toDateTime(self, defaultValue:PySide2.QtCore.QDateTime=...) -> PySide2.QtCore.QDateTime: ... + def toDiagnosticNotation(self, opts:PySide2.QtCore.QCborValue.DiagnosticNotationOptions=...) -> str: ... + def toDouble(self, defaultValue:float=...) -> float: ... + def toInteger(self, defaultValue:int=...) -> int: ... + def toJsonValue(self) -> PySide2.QtCore.QJsonValue: ... + @typing.overload + def toMap(self) -> PySide2.QtCore.QCborMap: ... + @typing.overload + def toMap(self, defaultValue:PySide2.QtCore.QCborMap) -> PySide2.QtCore.QCborMap: ... + def toRegularExpression(self, defaultValue:PySide2.QtCore.QRegularExpression=...) -> PySide2.QtCore.QRegularExpression: ... + def toSimpleType(self, defaultValue:PySide2.QtCore.QCborSimpleType=...) -> PySide2.QtCore.QCborSimpleType: ... + def toString(self, defaultValue:str=...) -> str: ... + def toUrl(self, defaultValue:PySide2.QtCore.QUrl=...) -> PySide2.QtCore.QUrl: ... + def toUuid(self, defaultValue:PySide2.QtCore.QUuid=...) -> PySide2.QtCore.QUuid: ... + def toVariant(self) -> typing.Any: ... + def type(self) -> PySide2.QtCore.QCborValue.Type: ... + + +class QChildEvent(PySide2.QtCore.QEvent): + + def __init__(self, type:PySide2.QtCore.QEvent.Type, child:PySide2.QtCore.QObject) -> None: ... + + def added(self) -> bool: ... + def child(self) -> PySide2.QtCore.QObject: ... + def polished(self) -> bool: ... + def removed(self) -> bool: ... + + +class QCollator(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtCore.QCollator) -> None: ... + @typing.overload + def __init__(self, locale:PySide2.QtCore.QLocale) -> None: ... + + def __call__(self, s1:str, s2:str) -> bool: ... + def caseSensitivity(self) -> PySide2.QtCore.Qt.CaseSensitivity: ... + @typing.overload + def compare(self, s1:bytes, len1:int, s2:bytes, len2:int) -> int: ... + @typing.overload + def compare(self, s1:str, s2:str) -> int: ... + @typing.overload + def compare(self, s1:str, s2:str) -> int: ... + def ignorePunctuation(self) -> bool: ... + def locale(self) -> PySide2.QtCore.QLocale: ... + def numericMode(self) -> bool: ... + def setCaseSensitivity(self, cs:PySide2.QtCore.Qt.CaseSensitivity) -> None: ... + def setIgnorePunctuation(self, on:bool) -> None: ... + def setLocale(self, locale:PySide2.QtCore.QLocale) -> None: ... + def setNumericMode(self, on:bool) -> None: ... + def sortKey(self, string:str) -> PySide2.QtCore.QCollatorSortKey: ... + def swap(self, other:PySide2.QtCore.QCollator) -> None: ... + + +class QCollatorSortKey(Shiboken.Object): + + def __init__(self, other:PySide2.QtCore.QCollatorSortKey) -> None: ... + + def compare(self, key:PySide2.QtCore.QCollatorSortKey) -> int: ... + def swap(self, other:PySide2.QtCore.QCollatorSortKey) -> None: ... + + +class QCommandLineOption(Shiboken.Object): + HiddenFromHelp : QCommandLineOption = ... # 0x1 + ShortOptionStyle : QCommandLineOption = ... # 0x2 + + class Flag(object): + HiddenFromHelp : QCommandLineOption.Flag = ... # 0x1 + ShortOptionStyle : QCommandLineOption.Flag = ... # 0x2 + + class Flags(object): ... + + @typing.overload + def __init__(self, name:str) -> None: ... + @typing.overload + def __init__(self, name:str, description:str, valueName:str=..., defaultValue:str=...) -> None: ... + @typing.overload + def __init__(self, names:typing.Sequence) -> None: ... + @typing.overload + def __init__(self, names:typing.Sequence, description:str, valueName:str=..., defaultValue:str=...) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtCore.QCommandLineOption) -> None: ... + + def defaultValues(self) -> typing.List: ... + def description(self) -> str: ... + def flags(self) -> PySide2.QtCore.QCommandLineOption.Flags: ... + def isHidden(self) -> bool: ... + def names(self) -> typing.List: ... + def setDefaultValue(self, defaultValue:str) -> None: ... + def setDefaultValues(self, defaultValues:typing.Sequence) -> None: ... + def setDescription(self, description:str) -> None: ... + def setFlags(self, aflags:PySide2.QtCore.QCommandLineOption.Flags) -> None: ... + def setHidden(self, hidden:bool) -> None: ... + def setValueName(self, name:str) -> None: ... + def swap(self, other:PySide2.QtCore.QCommandLineOption) -> None: ... + def valueName(self) -> str: ... + + +class QCommandLineParser(Shiboken.Object): + ParseAsCompactedShortOptions: QCommandLineParser = ... # 0x0 + ParseAsOptions : QCommandLineParser = ... # 0x0 + ParseAsLongOptions : QCommandLineParser = ... # 0x1 + ParseAsPositionalArguments: QCommandLineParser = ... # 0x1 + + class OptionsAfterPositionalArgumentsMode(object): + ParseAsOptions : QCommandLineParser.OptionsAfterPositionalArgumentsMode = ... # 0x0 + ParseAsPositionalArguments: QCommandLineParser.OptionsAfterPositionalArgumentsMode = ... # 0x1 + + class SingleDashWordOptionMode(object): + ParseAsCompactedShortOptions: QCommandLineParser.SingleDashWordOptionMode = ... # 0x0 + ParseAsLongOptions : QCommandLineParser.SingleDashWordOptionMode = ... # 0x1 + + def __init__(self) -> None: ... + + def addHelpOption(self) -> PySide2.QtCore.QCommandLineOption: ... + def addOption(self, commandLineOption:PySide2.QtCore.QCommandLineOption) -> bool: ... + def addOptions(self, options:typing.Sequence) -> bool: ... + def addPositionalArgument(self, name:str, description:str, syntax:str=...) -> None: ... + def addVersionOption(self) -> PySide2.QtCore.QCommandLineOption: ... + def applicationDescription(self) -> str: ... + def clearPositionalArguments(self) -> None: ... + def errorText(self) -> str: ... + def helpText(self) -> str: ... + @typing.overload + def isSet(self, name:str) -> bool: ... + @typing.overload + def isSet(self, option:PySide2.QtCore.QCommandLineOption) -> bool: ... + def optionNames(self) -> typing.List: ... + def parse(self, arguments:typing.Sequence) -> bool: ... + def positionalArguments(self) -> typing.List: ... + @typing.overload + def process(self, app:PySide2.QtCore.QCoreApplication) -> None: ... + @typing.overload + def process(self, arguments:typing.Sequence) -> None: ... + def setApplicationDescription(self, description:str) -> None: ... + def setOptionsAfterPositionalArgumentsMode(self, mode:PySide2.QtCore.QCommandLineParser.OptionsAfterPositionalArgumentsMode) -> None: ... + def setSingleDashWordOptionMode(self, parsingMode:PySide2.QtCore.QCommandLineParser.SingleDashWordOptionMode) -> None: ... + def showHelp(self, exitCode:int=...) -> None: ... + def showVersion(self) -> None: ... + def unknownOptionNames(self) -> typing.List: ... + @typing.overload + def value(self, name:str) -> str: ... + @typing.overload + def value(self, option:PySide2.QtCore.QCommandLineOption) -> str: ... + @typing.overload + def values(self, name:str) -> typing.List: ... + @typing.overload + def values(self, option:PySide2.QtCore.QCommandLineOption) -> typing.List: ... + + +class QConcatenateTablesProxyModel(PySide2.QtCore.QAbstractItemModel): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def addSourceModel(self, sourceModel:PySide2.QtCore.QAbstractItemModel) -> None: ... + def canDropMimeData(self, data:PySide2.QtCore.QMimeData, action:PySide2.QtCore.Qt.DropAction, row:int, column:int, parent:PySide2.QtCore.QModelIndex) -> bool: ... + def columnCount(self, parent:PySide2.QtCore.QModelIndex=...) -> int: ... + def data(self, index:PySide2.QtCore.QModelIndex, role:int=...) -> typing.Any: ... + def dropMimeData(self, data:PySide2.QtCore.QMimeData, action:PySide2.QtCore.Qt.DropAction, row:int, column:int, parent:PySide2.QtCore.QModelIndex) -> bool: ... + def flags(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.Qt.ItemFlags: ... + def headerData(self, section:int, orientation:PySide2.QtCore.Qt.Orientation, role:int=...) -> typing.Any: ... + def index(self, row:int, column:int, parent:PySide2.QtCore.QModelIndex=...) -> PySide2.QtCore.QModelIndex: ... + def itemData(self, proxyIndex:PySide2.QtCore.QModelIndex) -> typing.Dict: ... + def mapFromSource(self, sourceIndex:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def mapToSource(self, proxyIndex:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def mimeData(self, indexes:typing.List) -> PySide2.QtCore.QMimeData: ... + def mimeTypes(self) -> typing.List: ... + @typing.overload + def parent(self) -> PySide2.QtCore.QObject: ... + @typing.overload + def parent(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def removeSourceModel(self, sourceModel:PySide2.QtCore.QAbstractItemModel) -> None: ... + def rowCount(self, parent:PySide2.QtCore.QModelIndex=...) -> int: ... + def setData(self, index:PySide2.QtCore.QModelIndex, value:typing.Any, role:int=...) -> bool: ... + def setItemData(self, index:PySide2.QtCore.QModelIndex, roles:typing.Dict) -> bool: ... + def sourceModels(self) -> typing.List: ... + def span(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QSize: ... + + +class QCoreApplication(PySide2.QtCore.QObject): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:typing.Sequence) -> None: ... + + @staticmethod + def addLibraryPath(arg__1:str) -> None: ... + @staticmethod + def applicationDirPath() -> str: ... + @staticmethod + def applicationFilePath() -> str: ... + @staticmethod + def applicationName() -> str: ... + @staticmethod + def applicationPid() -> int: ... + @staticmethod + def applicationVersion() -> str: ... + @staticmethod + def arguments() -> typing.List: ... + @staticmethod + def closingDown() -> bool: ... + def event(self, arg__1:PySide2.QtCore.QEvent) -> bool: ... + @staticmethod + def eventDispatcher() -> PySide2.QtCore.QAbstractEventDispatcher: ... + @staticmethod + def exec_() -> int: ... + @staticmethod + def exit(retcode:int=...) -> None: ... + @staticmethod + def flush() -> None: ... + @staticmethod + def hasPendingEvents() -> bool: ... + def installNativeEventFilter(self, filterObj:PySide2.QtCore.QAbstractNativeEventFilter) -> None: ... + @staticmethod + def installTranslator(messageFile:PySide2.QtCore.QTranslator) -> bool: ... + @staticmethod + def instance() -> PySide2.QtCore.QCoreApplication: ... + @staticmethod + def isQuitLockEnabled() -> bool: ... + @staticmethod + def isSetuidAllowed() -> bool: ... + @staticmethod + def libraryPaths() -> typing.List: ... + def notify(self, arg__1:PySide2.QtCore.QObject, arg__2:PySide2.QtCore.QEvent) -> bool: ... + @staticmethod + def organizationDomain() -> str: ... + @staticmethod + def organizationName() -> str: ... + @staticmethod + def postEvent(receiver:PySide2.QtCore.QObject, event:PySide2.QtCore.QEvent, priority:int=...) -> None: ... + @typing.overload + @staticmethod + def processEvents(flags:PySide2.QtCore.QEventLoop.ProcessEventsFlags, maxtime:int) -> None: ... + @typing.overload + @staticmethod + def processEvents(flags:PySide2.QtCore.QEventLoop.ProcessEventsFlags=...) -> None: ... + @staticmethod + def quit() -> None: ... + @staticmethod + def removeLibraryPath(arg__1:str) -> None: ... + def removeNativeEventFilter(self, filterObj:PySide2.QtCore.QAbstractNativeEventFilter) -> None: ... + @staticmethod + def removePostedEvents(receiver:PySide2.QtCore.QObject, eventType:int=...) -> None: ... + @staticmethod + def removeTranslator(messageFile:PySide2.QtCore.QTranslator) -> bool: ... + @staticmethod + def sendEvent(receiver:PySide2.QtCore.QObject, event:PySide2.QtCore.QEvent) -> bool: ... + @staticmethod + def sendPostedEvents(receiver:typing.Optional[PySide2.QtCore.QObject]=..., event_type:int=...) -> None: ... + @staticmethod + def setApplicationName(application:str) -> None: ... + @staticmethod + def setApplicationVersion(version:str) -> None: ... + @staticmethod + def setAttribute(attribute:PySide2.QtCore.Qt.ApplicationAttribute, on:bool=...) -> None: ... + @staticmethod + def setEventDispatcher(eventDispatcher:PySide2.QtCore.QAbstractEventDispatcher) -> None: ... + @staticmethod + def setLibraryPaths(arg__1:typing.Sequence) -> None: ... + @staticmethod + def setOrganizationDomain(orgDomain:str) -> None: ... + @staticmethod + def setOrganizationName(orgName:str) -> None: ... + @staticmethod + def setQuitLockEnabled(enabled:bool) -> None: ... + @staticmethod + def setSetuidAllowed(allow:bool) -> None: ... + def shutdown(self) -> None: ... + @staticmethod + def startingUp() -> bool: ... + @staticmethod + def testAttribute(attribute:PySide2.QtCore.Qt.ApplicationAttribute) -> bool: ... + @staticmethod + def translate(context:bytes, key:bytes, disambiguation:typing.Optional[bytes]=..., n:int=...) -> str: ... + + +class QCryptographicHash(Shiboken.Object): + Md4 : QCryptographicHash = ... # 0x0 + Md5 : QCryptographicHash = ... # 0x1 + Sha1 : QCryptographicHash = ... # 0x2 + Sha224 : QCryptographicHash = ... # 0x3 + Sha256 : QCryptographicHash = ... # 0x4 + Sha384 : QCryptographicHash = ... # 0x5 + Sha512 : QCryptographicHash = ... # 0x6 + Keccak_224 : QCryptographicHash = ... # 0x7 + Keccak_256 : QCryptographicHash = ... # 0x8 + Keccak_384 : QCryptographicHash = ... # 0x9 + Keccak_512 : QCryptographicHash = ... # 0xa + RealSha3_224 : QCryptographicHash = ... # 0xb + Sha3_224 : QCryptographicHash = ... # 0xb + RealSha3_256 : QCryptographicHash = ... # 0xc + Sha3_256 : QCryptographicHash = ... # 0xc + RealSha3_384 : QCryptographicHash = ... # 0xd + Sha3_384 : QCryptographicHash = ... # 0xd + RealSha3_512 : QCryptographicHash = ... # 0xe + Sha3_512 : QCryptographicHash = ... # 0xe + + class Algorithm(object): + Md4 : QCryptographicHash.Algorithm = ... # 0x0 + Md5 : QCryptographicHash.Algorithm = ... # 0x1 + Sha1 : QCryptographicHash.Algorithm = ... # 0x2 + Sha224 : QCryptographicHash.Algorithm = ... # 0x3 + Sha256 : QCryptographicHash.Algorithm = ... # 0x4 + Sha384 : QCryptographicHash.Algorithm = ... # 0x5 + Sha512 : QCryptographicHash.Algorithm = ... # 0x6 + Keccak_224 : QCryptographicHash.Algorithm = ... # 0x7 + Keccak_256 : QCryptographicHash.Algorithm = ... # 0x8 + Keccak_384 : QCryptographicHash.Algorithm = ... # 0x9 + Keccak_512 : QCryptographicHash.Algorithm = ... # 0xa + RealSha3_224 : QCryptographicHash.Algorithm = ... # 0xb + Sha3_224 : QCryptographicHash.Algorithm = ... # 0xb + RealSha3_256 : QCryptographicHash.Algorithm = ... # 0xc + Sha3_256 : QCryptographicHash.Algorithm = ... # 0xc + RealSha3_384 : QCryptographicHash.Algorithm = ... # 0xd + Sha3_384 : QCryptographicHash.Algorithm = ... # 0xd + RealSha3_512 : QCryptographicHash.Algorithm = ... # 0xe + Sha3_512 : QCryptographicHash.Algorithm = ... # 0xe + + def __init__(self, method:PySide2.QtCore.QCryptographicHash.Algorithm) -> None: ... + + @typing.overload + def addData(self, data:PySide2.QtCore.QByteArray) -> None: ... + @typing.overload + def addData(self, data:bytes, length:int) -> None: ... + @typing.overload + def addData(self, device:PySide2.QtCore.QIODevice) -> bool: ... + @staticmethod + def hash(data:PySide2.QtCore.QByteArray, method:PySide2.QtCore.QCryptographicHash.Algorithm) -> PySide2.QtCore.QByteArray: ... + @staticmethod + def hashLength(method:PySide2.QtCore.QCryptographicHash.Algorithm) -> int: ... + def reset(self) -> None: ... + def result(self) -> PySide2.QtCore.QByteArray: ... + + +class QDataStream(Shiboken.Object): + BigEndian : QDataStream = ... # 0x0 + Ok : QDataStream = ... # 0x0 + SinglePrecision : QDataStream = ... # 0x0 + DoublePrecision : QDataStream = ... # 0x1 + LittleEndian : QDataStream = ... # 0x1 + Qt_1_0 : QDataStream = ... # 0x1 + ReadPastEnd : QDataStream = ... # 0x1 + Qt_2_0 : QDataStream = ... # 0x2 + ReadCorruptData : QDataStream = ... # 0x2 + Qt_2_1 : QDataStream = ... # 0x3 + WriteFailed : QDataStream = ... # 0x3 + Qt_3_0 : QDataStream = ... # 0x4 + Qt_3_1 : QDataStream = ... # 0x5 + Qt_3_3 : QDataStream = ... # 0x6 + Qt_4_0 : QDataStream = ... # 0x7 + Qt_4_1 : QDataStream = ... # 0x7 + Qt_4_2 : QDataStream = ... # 0x8 + Qt_4_3 : QDataStream = ... # 0x9 + Qt_4_4 : QDataStream = ... # 0xa + Qt_4_5 : QDataStream = ... # 0xb + Qt_4_6 : QDataStream = ... # 0xc + Qt_4_7 : QDataStream = ... # 0xc + Qt_4_8 : QDataStream = ... # 0xc + Qt_4_9 : QDataStream = ... # 0xc + Qt_5_0 : QDataStream = ... # 0xd + Qt_5_1 : QDataStream = ... # 0xe + Qt_5_2 : QDataStream = ... # 0xf + Qt_5_3 : QDataStream = ... # 0xf + Qt_5_4 : QDataStream = ... # 0x10 + Qt_5_5 : QDataStream = ... # 0x10 + Qt_5_10 : QDataStream = ... # 0x11 + Qt_5_11 : QDataStream = ... # 0x11 + Qt_5_6 : QDataStream = ... # 0x11 + Qt_5_7 : QDataStream = ... # 0x11 + Qt_5_8 : QDataStream = ... # 0x11 + Qt_5_9 : QDataStream = ... # 0x11 + Qt_5_12 : QDataStream = ... # 0x12 + Qt_5_13 : QDataStream = ... # 0x13 + Qt_5_14 : QDataStream = ... # 0x13 + Qt_5_15 : QDataStream = ... # 0x13 + Qt_DefaultCompiledVersion: QDataStream = ... # 0x13 + + class ByteOrder(object): + BigEndian : QDataStream.ByteOrder = ... # 0x0 + LittleEndian : QDataStream.ByteOrder = ... # 0x1 + + class FloatingPointPrecision(object): + SinglePrecision : QDataStream.FloatingPointPrecision = ... # 0x0 + DoublePrecision : QDataStream.FloatingPointPrecision = ... # 0x1 + + class Status(object): + Ok : QDataStream.Status = ... # 0x0 + ReadPastEnd : QDataStream.Status = ... # 0x1 + ReadCorruptData : QDataStream.Status = ... # 0x2 + WriteFailed : QDataStream.Status = ... # 0x3 + + class Version(object): + Qt_1_0 : QDataStream.Version = ... # 0x1 + Qt_2_0 : QDataStream.Version = ... # 0x2 + Qt_2_1 : QDataStream.Version = ... # 0x3 + Qt_3_0 : QDataStream.Version = ... # 0x4 + Qt_3_1 : QDataStream.Version = ... # 0x5 + Qt_3_3 : QDataStream.Version = ... # 0x6 + Qt_4_0 : QDataStream.Version = ... # 0x7 + Qt_4_1 : QDataStream.Version = ... # 0x7 + Qt_4_2 : QDataStream.Version = ... # 0x8 + Qt_4_3 : QDataStream.Version = ... # 0x9 + Qt_4_4 : QDataStream.Version = ... # 0xa + Qt_4_5 : QDataStream.Version = ... # 0xb + Qt_4_6 : QDataStream.Version = ... # 0xc + Qt_4_7 : QDataStream.Version = ... # 0xc + Qt_4_8 : QDataStream.Version = ... # 0xc + Qt_4_9 : QDataStream.Version = ... # 0xc + Qt_5_0 : QDataStream.Version = ... # 0xd + Qt_5_1 : QDataStream.Version = ... # 0xe + Qt_5_2 : QDataStream.Version = ... # 0xf + Qt_5_3 : QDataStream.Version = ... # 0xf + Qt_5_4 : QDataStream.Version = ... # 0x10 + Qt_5_5 : QDataStream.Version = ... # 0x10 + Qt_5_10 : QDataStream.Version = ... # 0x11 + Qt_5_11 : QDataStream.Version = ... # 0x11 + Qt_5_6 : QDataStream.Version = ... # 0x11 + Qt_5_7 : QDataStream.Version = ... # 0x11 + Qt_5_8 : QDataStream.Version = ... # 0x11 + Qt_5_9 : QDataStream.Version = ... # 0x11 + Qt_5_12 : QDataStream.Version = ... # 0x12 + Qt_5_13 : QDataStream.Version = ... # 0x13 + Qt_5_14 : QDataStream.Version = ... # 0x13 + Qt_5_15 : QDataStream.Version = ... # 0x13 + Qt_DefaultCompiledVersion: QDataStream.Version = ... # 0x13 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtCore.QByteArray) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtCore.QByteArray, flags:PySide2.QtCore.QIODevice.OpenMode) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtCore.QIODevice) -> None: ... + + @typing.overload + def __lshift__(self, arg__1:str) -> None: ... + @typing.overload + def __lshift__(self, arg__2:PySide2.QtCore.QBitArray) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __lshift__(self, arg__2:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __lshift__(self, arg__2:PySide2.QtCore.QCborArray) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __lshift__(self, arg__2:PySide2.QtCore.QCborMap) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __lshift__(self, arg__2:PySide2.QtCore.QCborValue) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __lshift__(self, arg__2:PySide2.QtCore.QDate) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __lshift__(self, arg__2:PySide2.QtCore.QDateTime) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __lshift__(self, arg__2:PySide2.QtCore.QEasingCurve) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __lshift__(self, arg__2:PySide2.QtCore.QJsonArray) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __lshift__(self, arg__2:PySide2.QtCore.QJsonDocument) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __lshift__(self, arg__2:PySide2.QtCore.QJsonValue) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __lshift__(self, arg__2:PySide2.QtCore.QLine) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __lshift__(self, arg__2:PySide2.QtCore.QLineF) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __lshift__(self, arg__2:PySide2.QtCore.QLocale) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __lshift__(self, arg__2:PySide2.QtCore.QMargins) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __lshift__(self, arg__2:PySide2.QtCore.QMarginsF) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __lshift__(self, arg__2:PySide2.QtCore.QPoint) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __lshift__(self, arg__2:PySide2.QtCore.QPointF) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __lshift__(self, arg__2:PySide2.QtCore.QRect) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __lshift__(self, arg__2:PySide2.QtCore.QRectF) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __lshift__(self, arg__2:PySide2.QtCore.QSize) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __lshift__(self, arg__2:PySide2.QtCore.QSizeF) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __lshift__(self, arg__2:PySide2.QtCore.QTime) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __lshift__(self, arg__2:PySide2.QtCore.QUrl) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __lshift__(self, arg__2:PySide2.QtCore.QUuid) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __lshift__(self, re:PySide2.QtCore.QRegularExpression) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __lshift__(self, regExp:PySide2.QtCore.QRegExp) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __lshift__(self, tz:PySide2.QtCore.QTimeZone) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __lshift__(self, version:PySide2.QtCore.QVersionNumber) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __rshift__(self, arg__2:PySide2.QtCore.QBitArray) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __rshift__(self, arg__2:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __rshift__(self, arg__2:PySide2.QtCore.QCborArray) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __rshift__(self, arg__2:PySide2.QtCore.QCborMap) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __rshift__(self, arg__2:PySide2.QtCore.QCborValue) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __rshift__(self, arg__2:PySide2.QtCore.QDate) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __rshift__(self, arg__2:PySide2.QtCore.QDateTime) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __rshift__(self, arg__2:PySide2.QtCore.QEasingCurve) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __rshift__(self, arg__2:PySide2.QtCore.QJsonArray) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __rshift__(self, arg__2:PySide2.QtCore.QJsonDocument) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __rshift__(self, arg__2:PySide2.QtCore.QJsonValue) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __rshift__(self, arg__2:PySide2.QtCore.QLine) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __rshift__(self, arg__2:PySide2.QtCore.QLineF) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __rshift__(self, arg__2:PySide2.QtCore.QLocale) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __rshift__(self, arg__2:PySide2.QtCore.QMargins) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __rshift__(self, arg__2:PySide2.QtCore.QMarginsF) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __rshift__(self, arg__2:PySide2.QtCore.QPoint) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __rshift__(self, arg__2:PySide2.QtCore.QPointF) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __rshift__(self, arg__2:PySide2.QtCore.QRect) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __rshift__(self, arg__2:PySide2.QtCore.QRectF) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __rshift__(self, arg__2:PySide2.QtCore.QSize) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __rshift__(self, arg__2:PySide2.QtCore.QSizeF) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __rshift__(self, arg__2:PySide2.QtCore.QTime) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __rshift__(self, arg__2:PySide2.QtCore.QUrl) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __rshift__(self, arg__2:PySide2.QtCore.QUuid) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __rshift__(self, re:PySide2.QtCore.QRegularExpression) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __rshift__(self, regExp:PySide2.QtCore.QRegExp) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __rshift__(self, tz:PySide2.QtCore.QTimeZone) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __rshift__(self, version:PySide2.QtCore.QVersionNumber) -> PySide2.QtCore.QDataStream: ... + def abortTransaction(self) -> None: ... + def atEnd(self) -> bool: ... + def byteOrder(self) -> PySide2.QtCore.QDataStream.ByteOrder: ... + def commitTransaction(self) -> bool: ... + def device(self) -> PySide2.QtCore.QIODevice: ... + def floatingPointPrecision(self) -> PySide2.QtCore.QDataStream.FloatingPointPrecision: ... + def readBool(self) -> bool: ... + def readDouble(self) -> float: ... + def readFloat(self) -> float: ... + def readInt16(self) -> int: ... + def readInt32(self) -> int: ... + def readInt64(self) -> int: ... + def readInt8(self) -> int: ... + def readQChar(self) -> str: ... + def readQString(self) -> str: ... + def readQStringList(self) -> typing.List: ... + def readQVariant(self) -> typing.Any: ... + def readRawData(self, arg__1:bytes, len:int) -> int: ... + def readString(self) -> str: ... + def readUInt16(self) -> int: ... + def readUInt32(self) -> int: ... + def readUInt64(self) -> int: ... + def readUInt8(self) -> int: ... + def resetStatus(self) -> None: ... + def rollbackTransaction(self) -> None: ... + def setByteOrder(self, arg__1:PySide2.QtCore.QDataStream.ByteOrder) -> None: ... + def setDevice(self, arg__1:PySide2.QtCore.QIODevice) -> None: ... + def setFloatingPointPrecision(self, precision:PySide2.QtCore.QDataStream.FloatingPointPrecision) -> None: ... + def setStatus(self, status:PySide2.QtCore.QDataStream.Status) -> None: ... + def setVersion(self, arg__1:int) -> None: ... + def skipRawData(self, len:int) -> int: ... + def startTransaction(self) -> None: ... + def status(self) -> PySide2.QtCore.QDataStream.Status: ... + def unsetDevice(self) -> None: ... + def version(self) -> int: ... + def writeBool(self, arg__1:bool) -> None: ... + def writeDouble(self, arg__1:float) -> None: ... + def writeFloat(self, arg__1:float) -> None: ... + def writeInt16(self, arg__1:int) -> None: ... + def writeInt32(self, arg__1:int) -> None: ... + def writeInt64(self, arg__1:int) -> None: ... + def writeInt8(self, arg__1:int) -> None: ... + def writeQChar(self, arg__1:str) -> None: ... + def writeQString(self, arg__1:str) -> None: ... + def writeQStringList(self, arg__1:typing.Sequence) -> None: ... + def writeQVariant(self, arg__1:typing.Any) -> None: ... + def writeRawData(self, arg__1:bytes, len:int) -> int: ... + def writeString(self, arg__1:str) -> None: ... + def writeUInt16(self, arg__1:int) -> None: ... + def writeUInt32(self, arg__1:int) -> None: ... + def writeUInt64(self, arg__1:int) -> None: ... + def writeUInt8(self, arg__1:int) -> None: ... + + +class QDate(Shiboken.Object): + DateFormat : QDate = ... # 0x0 + StandaloneFormat : QDate = ... # 0x1 + + class MonthNameType(object): + DateFormat : QDate.MonthNameType = ... # 0x0 + StandaloneFormat : QDate.MonthNameType = ... # 0x1 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QDate:PySide2.QtCore.QDate) -> None: ... + @typing.overload + def __init__(self, y:int, m:int, d:int) -> None: ... + @typing.overload + def __init__(self, y:int, m:int, d:int, cal:PySide2.QtCore.QCalendar) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + def addDays(self, days:int) -> PySide2.QtCore.QDate: ... + @typing.overload + def addMonths(self, months:int) -> PySide2.QtCore.QDate: ... + @typing.overload + def addMonths(self, months:int, cal:PySide2.QtCore.QCalendar) -> PySide2.QtCore.QDate: ... + @typing.overload + def addYears(self, years:int) -> PySide2.QtCore.QDate: ... + @typing.overload + def addYears(self, years:int, cal:PySide2.QtCore.QCalendar) -> PySide2.QtCore.QDate: ... + @staticmethod + def currentDate() -> PySide2.QtCore.QDate: ... + @typing.overload + def day(self) -> int: ... + @typing.overload + def day(self, cal:PySide2.QtCore.QCalendar) -> int: ... + @typing.overload + def dayOfWeek(self) -> int: ... + @typing.overload + def dayOfWeek(self, cal:PySide2.QtCore.QCalendar) -> int: ... + @typing.overload + def dayOfYear(self) -> int: ... + @typing.overload + def dayOfYear(self, cal:PySide2.QtCore.QCalendar) -> int: ... + @typing.overload + def daysInMonth(self) -> int: ... + @typing.overload + def daysInMonth(self, cal:PySide2.QtCore.QCalendar) -> int: ... + @typing.overload + def daysInYear(self) -> int: ... + @typing.overload + def daysInYear(self, cal:PySide2.QtCore.QCalendar) -> int: ... + def daysTo(self, arg__1:PySide2.QtCore.QDate) -> int: ... + @typing.overload + def endOfDay(self, spec:PySide2.QtCore.Qt.TimeSpec=..., offsetSeconds:int=...) -> PySide2.QtCore.QDateTime: ... + @typing.overload + def endOfDay(self, zone:PySide2.QtCore.QTimeZone) -> PySide2.QtCore.QDateTime: ... + @staticmethod + def fromJulianDay(jd_:int) -> PySide2.QtCore.QDate: ... + @typing.overload + @staticmethod + def fromString(s:str, f:PySide2.QtCore.Qt.DateFormat=...) -> PySide2.QtCore.QDate: ... + @typing.overload + @staticmethod + def fromString(s:str, format:str) -> PySide2.QtCore.QDate: ... + @typing.overload + @staticmethod + def fromString(s:str, format:str, cal:PySide2.QtCore.QCalendar) -> PySide2.QtCore.QDate: ... + def getDate(self) -> typing.Tuple: ... + @staticmethod + def isLeapYear(year:int) -> bool: ... + def isNull(self) -> bool: ... + @typing.overload + def isValid(self) -> bool: ... + @typing.overload + @staticmethod + def isValid(y:int, m:int, d:int) -> bool: ... + @staticmethod + def longDayName(weekday:int, type:PySide2.QtCore.QDate.MonthNameType=...) -> str: ... + @staticmethod + def longMonthName(month:int, type:PySide2.QtCore.QDate.MonthNameType=...) -> str: ... + @typing.overload + def month(self) -> int: ... + @typing.overload + def month(self, cal:PySide2.QtCore.QCalendar) -> int: ... + @typing.overload + def setDate(self, year:int, month:int, day:int) -> bool: ... + @typing.overload + def setDate(self, year:int, month:int, day:int, cal:PySide2.QtCore.QCalendar) -> bool: ... + @staticmethod + def shortDayName(weekday:int, type:PySide2.QtCore.QDate.MonthNameType=...) -> str: ... + @staticmethod + def shortMonthName(month:int, type:PySide2.QtCore.QDate.MonthNameType=...) -> str: ... + @typing.overload + def startOfDay(self, spec:PySide2.QtCore.Qt.TimeSpec=..., offsetSeconds:int=...) -> PySide2.QtCore.QDateTime: ... + @typing.overload + def startOfDay(self, zone:PySide2.QtCore.QTimeZone) -> PySide2.QtCore.QDateTime: ... + def toJulianDay(self) -> int: ... + def toPython(self) -> object: ... + @typing.overload + def toString(self, format:PySide2.QtCore.Qt.DateFormat, cal:PySide2.QtCore.QCalendar) -> str: ... + @typing.overload + def toString(self, format:PySide2.QtCore.Qt.DateFormat=...) -> str: ... + @typing.overload + def toString(self, format:str) -> str: ... + @typing.overload + def toString(self, format:str, cal:PySide2.QtCore.QCalendar) -> str: ... + def weekNumber(self) -> typing.Tuple: ... + @typing.overload + def year(self) -> int: ... + @typing.overload + def year(self, cal:PySide2.QtCore.QCalendar) -> int: ... + + +class QDateTime(Shiboken.Object): + + class YearRange(object): + First : QDateTime.YearRange = ... # -0x116bc370 + Last : QDateTime.YearRange = ... # 0x116bd2d2 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtCore.QDate) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtCore.QDate, arg__2:PySide2.QtCore.QTime, spec:PySide2.QtCore.Qt.TimeSpec=...) -> None: ... + @typing.overload + def __init__(self, arg__1:int, arg__2:int, arg__3:int, arg__4:int, arg__5:int, arg__6:int) -> None: ... + @typing.overload + def __init__(self, arg__1:int, arg__2:int, arg__3:int, arg__4:int, arg__5:int, arg__6:int, arg__7:int, arg__8:int=...) -> None: ... + @typing.overload + def __init__(self, date:PySide2.QtCore.QDate, time:PySide2.QtCore.QTime, spec:PySide2.QtCore.Qt.TimeSpec, offsetSeconds:int) -> None: ... + @typing.overload + def __init__(self, date:PySide2.QtCore.QDate, time:PySide2.QtCore.QTime, timeZone:PySide2.QtCore.QTimeZone) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtCore.QDateTime) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + def addDays(self, days:int) -> PySide2.QtCore.QDateTime: ... + def addMSecs(self, msecs:int) -> PySide2.QtCore.QDateTime: ... + def addMonths(self, months:int) -> PySide2.QtCore.QDateTime: ... + def addSecs(self, secs:int) -> PySide2.QtCore.QDateTime: ... + def addYears(self, years:int) -> PySide2.QtCore.QDateTime: ... + @staticmethod + def currentDateTime() -> PySide2.QtCore.QDateTime: ... + @staticmethod + def currentDateTimeUtc() -> PySide2.QtCore.QDateTime: ... + @staticmethod + def currentMSecsSinceEpoch() -> int: ... + @staticmethod + def currentSecsSinceEpoch() -> int: ... + def date(self) -> PySide2.QtCore.QDate: ... + def daysTo(self, arg__1:PySide2.QtCore.QDateTime) -> int: ... + @typing.overload + @staticmethod + def fromMSecsSinceEpoch(msecs:int) -> PySide2.QtCore.QDateTime: ... + @typing.overload + @staticmethod + def fromMSecsSinceEpoch(msecs:int, spec:PySide2.QtCore.Qt.TimeSpec, offsetFromUtc:int=...) -> PySide2.QtCore.QDateTime: ... + @typing.overload + @staticmethod + def fromMSecsSinceEpoch(msecs:int, timeZone:PySide2.QtCore.QTimeZone) -> PySide2.QtCore.QDateTime: ... + @typing.overload + @staticmethod + def fromSecsSinceEpoch(secs:int, spe:PySide2.QtCore.Qt.TimeSpec=..., offsetFromUtc:int=...) -> PySide2.QtCore.QDateTime: ... + @typing.overload + @staticmethod + def fromSecsSinceEpoch(secs:int, timeZone:PySide2.QtCore.QTimeZone) -> PySide2.QtCore.QDateTime: ... + @typing.overload + @staticmethod + def fromString(s:str, f:PySide2.QtCore.Qt.DateFormat=...) -> PySide2.QtCore.QDateTime: ... + @typing.overload + @staticmethod + def fromString(s:str, format:str) -> PySide2.QtCore.QDateTime: ... + @typing.overload + @staticmethod + def fromString(s:str, format:str, cal:PySide2.QtCore.QCalendar) -> PySide2.QtCore.QDateTime: ... + @typing.overload + @staticmethod + def fromTime_t(secsSince1Jan1970UTC:int) -> PySide2.QtCore.QDateTime: ... + @typing.overload + @staticmethod + def fromTime_t(secsSince1Jan1970UTC:int, spec:PySide2.QtCore.Qt.TimeSpec, offsetFromUtc:int=...) -> PySide2.QtCore.QDateTime: ... + @typing.overload + @staticmethod + def fromTime_t(secsSince1Jan1970UTC:int, timeZone:PySide2.QtCore.QTimeZone) -> PySide2.QtCore.QDateTime: ... + def isDaylightTime(self) -> bool: ... + def isNull(self) -> bool: ... + def isValid(self) -> bool: ... + def msecsTo(self, arg__1:PySide2.QtCore.QDateTime) -> int: ... + def offsetFromUtc(self) -> int: ... + def secsTo(self, arg__1:PySide2.QtCore.QDateTime) -> int: ... + def setDate(self, date:PySide2.QtCore.QDate) -> None: ... + def setMSecsSinceEpoch(self, msecs:int) -> None: ... + def setOffsetFromUtc(self, offsetSeconds:int) -> None: ... + def setSecsSinceEpoch(self, secs:int) -> None: ... + def setTime(self, time:PySide2.QtCore.QTime) -> None: ... + def setTimeSpec(self, spec:PySide2.QtCore.Qt.TimeSpec) -> None: ... + def setTimeZone(self, toZone:PySide2.QtCore.QTimeZone) -> None: ... + def setTime_t(self, secsSince1Jan1970UTC:int) -> None: ... + def setUtcOffset(self, seconds:int) -> None: ... + def swap(self, other:PySide2.QtCore.QDateTime) -> None: ... + def time(self) -> PySide2.QtCore.QTime: ... + def timeSpec(self) -> PySide2.QtCore.Qt.TimeSpec: ... + def timeZone(self) -> PySide2.QtCore.QTimeZone: ... + def timeZoneAbbreviation(self) -> str: ... + def toLocalTime(self) -> PySide2.QtCore.QDateTime: ... + def toMSecsSinceEpoch(self) -> int: ... + def toOffsetFromUtc(self, offsetSeconds:int) -> PySide2.QtCore.QDateTime: ... + def toPython(self) -> object: ... + def toSecsSinceEpoch(self) -> int: ... + @typing.overload + def toString(self, format:PySide2.QtCore.Qt.DateFormat=...) -> str: ... + @typing.overload + def toString(self, format:str) -> str: ... + @typing.overload + def toString(self, format:str, cal:PySide2.QtCore.QCalendar) -> str: ... + def toTimeSpec(self, spec:PySide2.QtCore.Qt.TimeSpec) -> PySide2.QtCore.QDateTime: ... + def toTimeZone(self, toZone:PySide2.QtCore.QTimeZone) -> PySide2.QtCore.QDateTime: ... + def toTime_t(self) -> int: ... + def toUTC(self) -> PySide2.QtCore.QDateTime: ... + def utcOffset(self) -> int: ... + + +class QDeadlineTimer(Shiboken.Object): + Forever : QDeadlineTimer = ... # 0x0 + + class ForeverConstant(object): + Forever : QDeadlineTimer.ForeverConstant = ... # 0x0 + + @typing.overload + def __init__(self, QDeadlineTimer:PySide2.QtCore.QDeadlineTimer) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtCore.QDeadlineTimer.ForeverConstant, type_:PySide2.QtCore.Qt.TimerType=...) -> None: ... + @typing.overload + def __init__(self, msecs:int, type:PySide2.QtCore.Qt.TimerType=...) -> None: ... + @typing.overload + def __init__(self, type_:PySide2.QtCore.Qt.TimerType=...) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __iadd__(self, msecs:int) -> PySide2.QtCore.QDeadlineTimer: ... + def __isub__(self, msecs:int) -> PySide2.QtCore.QDeadlineTimer: ... + def _q_data(self) -> typing.Tuple: ... + @staticmethod + def addNSecs(dt:PySide2.QtCore.QDeadlineTimer, nsecs:int) -> PySide2.QtCore.QDeadlineTimer: ... + @staticmethod + def current(timerType:PySide2.QtCore.Qt.TimerType=...) -> PySide2.QtCore.QDeadlineTimer: ... + def deadline(self) -> int: ... + def deadlineNSecs(self) -> int: ... + def hasExpired(self) -> bool: ... + def isForever(self) -> bool: ... + def remainingTime(self) -> int: ... + def remainingTimeNSecs(self) -> int: ... + def setDeadline(self, msecs:int, timerType:PySide2.QtCore.Qt.TimerType=...) -> None: ... + def setPreciseDeadline(self, secs:int, nsecs:int=..., type:PySide2.QtCore.Qt.TimerType=...) -> None: ... + def setPreciseRemainingTime(self, secs:int, nsecs:int=..., type:PySide2.QtCore.Qt.TimerType=...) -> None: ... + def setRemainingTime(self, msecs:int, type:PySide2.QtCore.Qt.TimerType=...) -> None: ... + def setTimerType(self, type:PySide2.QtCore.Qt.TimerType) -> None: ... + def swap(self, other:PySide2.QtCore.QDeadlineTimer) -> None: ... + def timerType(self) -> PySide2.QtCore.Qt.TimerType: ... + + +class QDir(Shiboken.Object): + NoFilter : QDir = ... # -0x1 + NoSort : QDir = ... # -0x1 + Name : QDir = ... # 0x0 + Dirs : QDir = ... # 0x1 + Time : QDir = ... # 0x1 + Files : QDir = ... # 0x2 + Size : QDir = ... # 0x2 + SortByMask : QDir = ... # 0x3 + Unsorted : QDir = ... # 0x3 + DirsFirst : QDir = ... # 0x4 + Drives : QDir = ... # 0x4 + AllEntries : QDir = ... # 0x7 + NoSymLinks : QDir = ... # 0x8 + Reversed : QDir = ... # 0x8 + TypeMask : QDir = ... # 0xf + IgnoreCase : QDir = ... # 0x10 + Readable : QDir = ... # 0x10 + DirsLast : QDir = ... # 0x20 + Writable : QDir = ... # 0x20 + Executable : QDir = ... # 0x40 + LocaleAware : QDir = ... # 0x40 + PermissionMask : QDir = ... # 0x70 + Modified : QDir = ... # 0x80 + Type : QDir = ... # 0x80 + Hidden : QDir = ... # 0x100 + System : QDir = ... # 0x200 + AccessMask : QDir = ... # 0x3f0 + AllDirs : QDir = ... # 0x400 + CaseSensitive : QDir = ... # 0x800 + NoDot : QDir = ... # 0x2000 + NoDotDot : QDir = ... # 0x4000 + NoDotAndDotDot : QDir = ... # 0x6000 + + class Filter(object): + NoFilter : QDir.Filter = ... # -0x1 + Dirs : QDir.Filter = ... # 0x1 + Files : QDir.Filter = ... # 0x2 + Drives : QDir.Filter = ... # 0x4 + AllEntries : QDir.Filter = ... # 0x7 + NoSymLinks : QDir.Filter = ... # 0x8 + TypeMask : QDir.Filter = ... # 0xf + Readable : QDir.Filter = ... # 0x10 + Writable : QDir.Filter = ... # 0x20 + Executable : QDir.Filter = ... # 0x40 + PermissionMask : QDir.Filter = ... # 0x70 + Modified : QDir.Filter = ... # 0x80 + Hidden : QDir.Filter = ... # 0x100 + System : QDir.Filter = ... # 0x200 + AccessMask : QDir.Filter = ... # 0x3f0 + AllDirs : QDir.Filter = ... # 0x400 + CaseSensitive : QDir.Filter = ... # 0x800 + NoDot : QDir.Filter = ... # 0x2000 + NoDotDot : QDir.Filter = ... # 0x4000 + NoDotAndDotDot : QDir.Filter = ... # 0x6000 + + class Filters(object): ... + + class SortFlag(object): + NoSort : QDir.SortFlag = ... # -0x1 + Name : QDir.SortFlag = ... # 0x0 + Time : QDir.SortFlag = ... # 0x1 + Size : QDir.SortFlag = ... # 0x2 + SortByMask : QDir.SortFlag = ... # 0x3 + Unsorted : QDir.SortFlag = ... # 0x3 + DirsFirst : QDir.SortFlag = ... # 0x4 + Reversed : QDir.SortFlag = ... # 0x8 + IgnoreCase : QDir.SortFlag = ... # 0x10 + DirsLast : QDir.SortFlag = ... # 0x20 + LocaleAware : QDir.SortFlag = ... # 0x40 + Type : QDir.SortFlag = ... # 0x80 + + class SortFlags(object): ... + + @typing.overload + def __init__(self, arg__1:PySide2.QtCore.QDir) -> None: ... + @typing.overload + def __init__(self, path:str, nameFilter:str, sort:PySide2.QtCore.QDir.SortFlags=..., filter:PySide2.QtCore.QDir.Filters=...) -> None: ... + @typing.overload + def __init__(self, path:str=...) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __reduce__(self) -> object: ... + def absoluteFilePath(self, fileName:str) -> str: ... + def absolutePath(self) -> str: ... + @staticmethod + def addResourceSearchPath(path:str) -> None: ... + @staticmethod + def addSearchPath(prefix:str, path:str) -> None: ... + def canonicalPath(self) -> str: ... + def cd(self, dirName:str) -> bool: ... + def cdUp(self) -> bool: ... + @staticmethod + def cleanPath(path:str) -> str: ... + def count(self) -> int: ... + @staticmethod + def current() -> PySide2.QtCore.QDir: ... + @staticmethod + def currentPath() -> str: ... + def dirName(self) -> str: ... + @staticmethod + def drives() -> typing.List: ... + @typing.overload + def entryInfoList(self, filters:PySide2.QtCore.QDir.Filters=..., sort:PySide2.QtCore.QDir.SortFlags=...) -> typing.List: ... + @typing.overload + def entryInfoList(self, nameFilters:typing.Sequence, filters:PySide2.QtCore.QDir.Filters=..., sort:PySide2.QtCore.QDir.SortFlags=...) -> typing.List: ... + @typing.overload + def entryList(self, filters:PySide2.QtCore.QDir.Filters=..., sort:PySide2.QtCore.QDir.SortFlags=...) -> typing.List: ... + @typing.overload + def entryList(self, nameFilters:typing.Sequence, filters:PySide2.QtCore.QDir.Filters=..., sort:PySide2.QtCore.QDir.SortFlags=...) -> typing.List: ... + @typing.overload + def exists(self) -> bool: ... + @typing.overload + def exists(self, name:str) -> bool: ... + def filePath(self, fileName:str) -> str: ... + def filter(self) -> PySide2.QtCore.QDir.Filters: ... + @staticmethod + def fromNativeSeparators(pathName:str) -> str: ... + @staticmethod + def home() -> PySide2.QtCore.QDir: ... + @staticmethod + def homePath() -> str: ... + def isAbsolute(self) -> bool: ... + @staticmethod + def isAbsolutePath(path:str) -> bool: ... + def isEmpty(self, filters:PySide2.QtCore.QDir.Filters=...) -> bool: ... + def isReadable(self) -> bool: ... + def isRelative(self) -> bool: ... + @staticmethod + def isRelativePath(path:str) -> bool: ... + def isRoot(self) -> bool: ... + @staticmethod + def listSeparator() -> str: ... + def makeAbsolute(self) -> bool: ... + @typing.overload + @staticmethod + def match(filter:str, fileName:str) -> bool: ... + @typing.overload + @staticmethod + def match(filters:typing.Sequence, fileName:str) -> bool: ... + def mkdir(self, dirName:str) -> bool: ... + def mkpath(self, dirPath:str) -> bool: ... + def nameFilters(self) -> typing.List: ... + @staticmethod + def nameFiltersFromString(nameFilter:str) -> typing.List: ... + def path(self) -> str: ... + def refresh(self) -> None: ... + def relativeFilePath(self, fileName:str) -> str: ... + def remove(self, fileName:str) -> bool: ... + def removeRecursively(self) -> bool: ... + def rename(self, oldName:str, newName:str) -> bool: ... + def rmdir(self, dirName:str) -> bool: ... + def rmpath(self, dirPath:str) -> bool: ... + @staticmethod + def root() -> PySide2.QtCore.QDir: ... + @staticmethod + def rootPath() -> str: ... + @staticmethod + def searchPaths(prefix:str) -> typing.List: ... + @staticmethod + def separator() -> str: ... + @staticmethod + def setCurrent(path:str) -> bool: ... + def setFilter(self, filter:PySide2.QtCore.QDir.Filters) -> None: ... + def setNameFilters(self, nameFilters:typing.Sequence) -> None: ... + def setPath(self, path:str) -> None: ... + @staticmethod + def setSearchPaths(prefix:str, searchPaths:typing.Sequence) -> None: ... + def setSorting(self, sort:PySide2.QtCore.QDir.SortFlags) -> None: ... + def sorting(self) -> PySide2.QtCore.QDir.SortFlags: ... + def swap(self, other:PySide2.QtCore.QDir) -> None: ... + @staticmethod + def temp() -> PySide2.QtCore.QDir: ... + @staticmethod + def tempPath() -> str: ... + @staticmethod + def toNativeSeparators(pathName:str) -> str: ... + + +class QDirIterator(Shiboken.Object): + NoIteratorFlags : QDirIterator = ... # 0x0 + FollowSymlinks : QDirIterator = ... # 0x1 + Subdirectories : QDirIterator = ... # 0x2 + + class IteratorFlag(object): + NoIteratorFlags : QDirIterator.IteratorFlag = ... # 0x0 + FollowSymlinks : QDirIterator.IteratorFlag = ... # 0x1 + Subdirectories : QDirIterator.IteratorFlag = ... # 0x2 + + class IteratorFlags(object): ... + + @typing.overload + def __init__(self, dir:PySide2.QtCore.QDir, flags:PySide2.QtCore.QDirIterator.IteratorFlags=...) -> None: ... + @typing.overload + def __init__(self, path:str, filter:PySide2.QtCore.QDir.Filters, flags:PySide2.QtCore.QDirIterator.IteratorFlags=...) -> None: ... + @typing.overload + def __init__(self, path:str, flags:PySide2.QtCore.QDirIterator.IteratorFlags=...) -> None: ... + @typing.overload + def __init__(self, path:str, nameFilters:typing.Sequence, filters:PySide2.QtCore.QDir.Filters=..., flags:PySide2.QtCore.QDirIterator.IteratorFlags=...) -> None: ... + + def fileInfo(self) -> PySide2.QtCore.QFileInfo: ... + def fileName(self) -> str: ... + def filePath(self) -> str: ... + def hasNext(self) -> bool: ... + def next(self) -> str: ... + def path(self) -> str: ... + + +class QDynamicPropertyChangeEvent(PySide2.QtCore.QEvent): + + def __init__(self, name:PySide2.QtCore.QByteArray) -> None: ... + + def propertyName(self) -> PySide2.QtCore.QByteArray: ... + + +class QEasingCurve(Shiboken.Object): + Linear : QEasingCurve = ... # 0x0 + InQuad : QEasingCurve = ... # 0x1 + OutQuad : QEasingCurve = ... # 0x2 + InOutQuad : QEasingCurve = ... # 0x3 + OutInQuad : QEasingCurve = ... # 0x4 + InCubic : QEasingCurve = ... # 0x5 + OutCubic : QEasingCurve = ... # 0x6 + InOutCubic : QEasingCurve = ... # 0x7 + OutInCubic : QEasingCurve = ... # 0x8 + InQuart : QEasingCurve = ... # 0x9 + OutQuart : QEasingCurve = ... # 0xa + InOutQuart : QEasingCurve = ... # 0xb + OutInQuart : QEasingCurve = ... # 0xc + InQuint : QEasingCurve = ... # 0xd + OutQuint : QEasingCurve = ... # 0xe + InOutQuint : QEasingCurve = ... # 0xf + OutInQuint : QEasingCurve = ... # 0x10 + InSine : QEasingCurve = ... # 0x11 + OutSine : QEasingCurve = ... # 0x12 + InOutSine : QEasingCurve = ... # 0x13 + OutInSine : QEasingCurve = ... # 0x14 + InExpo : QEasingCurve = ... # 0x15 + OutExpo : QEasingCurve = ... # 0x16 + InOutExpo : QEasingCurve = ... # 0x17 + OutInExpo : QEasingCurve = ... # 0x18 + InCirc : QEasingCurve = ... # 0x19 + OutCirc : QEasingCurve = ... # 0x1a + InOutCirc : QEasingCurve = ... # 0x1b + OutInCirc : QEasingCurve = ... # 0x1c + InElastic : QEasingCurve = ... # 0x1d + OutElastic : QEasingCurve = ... # 0x1e + InOutElastic : QEasingCurve = ... # 0x1f + OutInElastic : QEasingCurve = ... # 0x20 + InBack : QEasingCurve = ... # 0x21 + OutBack : QEasingCurve = ... # 0x22 + InOutBack : QEasingCurve = ... # 0x23 + OutInBack : QEasingCurve = ... # 0x24 + InBounce : QEasingCurve = ... # 0x25 + OutBounce : QEasingCurve = ... # 0x26 + InOutBounce : QEasingCurve = ... # 0x27 + OutInBounce : QEasingCurve = ... # 0x28 + InCurve : QEasingCurve = ... # 0x29 + OutCurve : QEasingCurve = ... # 0x2a + SineCurve : QEasingCurve = ... # 0x2b + CosineCurve : QEasingCurve = ... # 0x2c + BezierSpline : QEasingCurve = ... # 0x2d + TCBSpline : QEasingCurve = ... # 0x2e + Custom : QEasingCurve = ... # 0x2f + NCurveTypes : QEasingCurve = ... # 0x30 + + class Type(object): + Linear : QEasingCurve.Type = ... # 0x0 + InQuad : QEasingCurve.Type = ... # 0x1 + OutQuad : QEasingCurve.Type = ... # 0x2 + InOutQuad : QEasingCurve.Type = ... # 0x3 + OutInQuad : QEasingCurve.Type = ... # 0x4 + InCubic : QEasingCurve.Type = ... # 0x5 + OutCubic : QEasingCurve.Type = ... # 0x6 + InOutCubic : QEasingCurve.Type = ... # 0x7 + OutInCubic : QEasingCurve.Type = ... # 0x8 + InQuart : QEasingCurve.Type = ... # 0x9 + OutQuart : QEasingCurve.Type = ... # 0xa + InOutQuart : QEasingCurve.Type = ... # 0xb + OutInQuart : QEasingCurve.Type = ... # 0xc + InQuint : QEasingCurve.Type = ... # 0xd + OutQuint : QEasingCurve.Type = ... # 0xe + InOutQuint : QEasingCurve.Type = ... # 0xf + OutInQuint : QEasingCurve.Type = ... # 0x10 + InSine : QEasingCurve.Type = ... # 0x11 + OutSine : QEasingCurve.Type = ... # 0x12 + InOutSine : QEasingCurve.Type = ... # 0x13 + OutInSine : QEasingCurve.Type = ... # 0x14 + InExpo : QEasingCurve.Type = ... # 0x15 + OutExpo : QEasingCurve.Type = ... # 0x16 + InOutExpo : QEasingCurve.Type = ... # 0x17 + OutInExpo : QEasingCurve.Type = ... # 0x18 + InCirc : QEasingCurve.Type = ... # 0x19 + OutCirc : QEasingCurve.Type = ... # 0x1a + InOutCirc : QEasingCurve.Type = ... # 0x1b + OutInCirc : QEasingCurve.Type = ... # 0x1c + InElastic : QEasingCurve.Type = ... # 0x1d + OutElastic : QEasingCurve.Type = ... # 0x1e + InOutElastic : QEasingCurve.Type = ... # 0x1f + OutInElastic : QEasingCurve.Type = ... # 0x20 + InBack : QEasingCurve.Type = ... # 0x21 + OutBack : QEasingCurve.Type = ... # 0x22 + InOutBack : QEasingCurve.Type = ... # 0x23 + OutInBack : QEasingCurve.Type = ... # 0x24 + InBounce : QEasingCurve.Type = ... # 0x25 + OutBounce : QEasingCurve.Type = ... # 0x26 + InOutBounce : QEasingCurve.Type = ... # 0x27 + OutInBounce : QEasingCurve.Type = ... # 0x28 + InCurve : QEasingCurve.Type = ... # 0x29 + OutCurve : QEasingCurve.Type = ... # 0x2a + SineCurve : QEasingCurve.Type = ... # 0x2b + CosineCurve : QEasingCurve.Type = ... # 0x2c + BezierSpline : QEasingCurve.Type = ... # 0x2d + TCBSpline : QEasingCurve.Type = ... # 0x2e + Custom : QEasingCurve.Type = ... # 0x2f + NCurveTypes : QEasingCurve.Type = ... # 0x30 + + @typing.overload + def __init__(self, other:PySide2.QtCore.QEasingCurve) -> None: ... + @typing.overload + def __init__(self, type:PySide2.QtCore.QEasingCurve.Type=...) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def addCubicBezierSegment(self, c1:PySide2.QtCore.QPointF, c2:PySide2.QtCore.QPointF, endPoint:PySide2.QtCore.QPointF) -> None: ... + def addTCBSegment(self, nextPoint:PySide2.QtCore.QPointF, t:float, c:float, b:float) -> None: ... + def amplitude(self) -> float: ... + def customType(self) -> object: ... + def overshoot(self) -> float: ... + def period(self) -> float: ... + def setAmplitude(self, amplitude:float) -> None: ... + def setCustomType(self, arg__1:object) -> None: ... + def setOvershoot(self, overshoot:float) -> None: ... + def setPeriod(self, period:float) -> None: ... + def setType(self, type:PySide2.QtCore.QEasingCurve.Type) -> None: ... + def swap(self, other:PySide2.QtCore.QEasingCurve) -> None: ... + def toCubicSpline(self) -> typing.List: ... + def type(self) -> PySide2.QtCore.QEasingCurve.Type: ... + def valueForProgress(self, progress:float) -> float: ... + + +class QElapsedTimer(Shiboken.Object): + SystemTime : QElapsedTimer = ... # 0x0 + MonotonicClock : QElapsedTimer = ... # 0x1 + TickCounter : QElapsedTimer = ... # 0x2 + MachAbsoluteTime : QElapsedTimer = ... # 0x3 + PerformanceCounter : QElapsedTimer = ... # 0x4 + + class ClockType(object): + SystemTime : QElapsedTimer.ClockType = ... # 0x0 + MonotonicClock : QElapsedTimer.ClockType = ... # 0x1 + TickCounter : QElapsedTimer.ClockType = ... # 0x2 + MachAbsoluteTime : QElapsedTimer.ClockType = ... # 0x3 + PerformanceCounter : QElapsedTimer.ClockType = ... # 0x4 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QElapsedTimer:PySide2.QtCore.QElapsedTimer) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @staticmethod + def clockType() -> PySide2.QtCore.QElapsedTimer.ClockType: ... + def elapsed(self) -> int: ... + def hasExpired(self, timeout:int) -> bool: ... + def invalidate(self) -> None: ... + @staticmethod + def isMonotonic() -> bool: ... + def isValid(self) -> bool: ... + def msecsSinceReference(self) -> int: ... + def msecsTo(self, other:PySide2.QtCore.QElapsedTimer) -> int: ... + def nsecsElapsed(self) -> int: ... + def restart(self) -> int: ... + def secsTo(self, other:PySide2.QtCore.QElapsedTimer) -> int: ... + def start(self) -> None: ... + + +class QEvent(Shiboken.Object): + None_ : QEvent = ... # 0x0 + Timer : QEvent = ... # 0x1 + MouseButtonPress : QEvent = ... # 0x2 + MouseButtonRelease : QEvent = ... # 0x3 + MouseButtonDblClick : QEvent = ... # 0x4 + MouseMove : QEvent = ... # 0x5 + KeyPress : QEvent = ... # 0x6 + KeyRelease : QEvent = ... # 0x7 + FocusIn : QEvent = ... # 0x8 + FocusOut : QEvent = ... # 0x9 + Enter : QEvent = ... # 0xa + Leave : QEvent = ... # 0xb + Paint : QEvent = ... # 0xc + Move : QEvent = ... # 0xd + Resize : QEvent = ... # 0xe + Create : QEvent = ... # 0xf + Destroy : QEvent = ... # 0x10 + Show : QEvent = ... # 0x11 + Hide : QEvent = ... # 0x12 + Close : QEvent = ... # 0x13 + Quit : QEvent = ... # 0x14 + ParentChange : QEvent = ... # 0x15 + ThreadChange : QEvent = ... # 0x16 + FocusAboutToChange : QEvent = ... # 0x17 + WindowActivate : QEvent = ... # 0x18 + WindowDeactivate : QEvent = ... # 0x19 + ShowToParent : QEvent = ... # 0x1a + HideToParent : QEvent = ... # 0x1b + Wheel : QEvent = ... # 0x1f + WindowTitleChange : QEvent = ... # 0x21 + WindowIconChange : QEvent = ... # 0x22 + ApplicationWindowIconChange: QEvent = ... # 0x23 + ApplicationFontChange : QEvent = ... # 0x24 + ApplicationLayoutDirectionChange: QEvent = ... # 0x25 + ApplicationPaletteChange : QEvent = ... # 0x26 + PaletteChange : QEvent = ... # 0x27 + Clipboard : QEvent = ... # 0x28 + Speech : QEvent = ... # 0x2a + MetaCall : QEvent = ... # 0x2b + SockAct : QEvent = ... # 0x32 + ShortcutOverride : QEvent = ... # 0x33 + DeferredDelete : QEvent = ... # 0x34 + DragEnter : QEvent = ... # 0x3c + DragMove : QEvent = ... # 0x3d + DragLeave : QEvent = ... # 0x3e + Drop : QEvent = ... # 0x3f + DragResponse : QEvent = ... # 0x40 + ChildAdded : QEvent = ... # 0x44 + ChildPolished : QEvent = ... # 0x45 + ChildRemoved : QEvent = ... # 0x47 + ShowWindowRequest : QEvent = ... # 0x49 + PolishRequest : QEvent = ... # 0x4a + Polish : QEvent = ... # 0x4b + LayoutRequest : QEvent = ... # 0x4c + UpdateRequest : QEvent = ... # 0x4d + UpdateLater : QEvent = ... # 0x4e + EmbeddingControl : QEvent = ... # 0x4f + ActivateControl : QEvent = ... # 0x50 + DeactivateControl : QEvent = ... # 0x51 + ContextMenu : QEvent = ... # 0x52 + InputMethod : QEvent = ... # 0x53 + TabletMove : QEvent = ... # 0x57 + LocaleChange : QEvent = ... # 0x58 + LanguageChange : QEvent = ... # 0x59 + LayoutDirectionChange : QEvent = ... # 0x5a + Style : QEvent = ... # 0x5b + TabletPress : QEvent = ... # 0x5c + TabletRelease : QEvent = ... # 0x5d + OkRequest : QEvent = ... # 0x5e + HelpRequest : QEvent = ... # 0x5f + IconDrag : QEvent = ... # 0x60 + FontChange : QEvent = ... # 0x61 + EnabledChange : QEvent = ... # 0x62 + ActivationChange : QEvent = ... # 0x63 + StyleChange : QEvent = ... # 0x64 + IconTextChange : QEvent = ... # 0x65 + ModifiedChange : QEvent = ... # 0x66 + WindowBlocked : QEvent = ... # 0x67 + WindowUnblocked : QEvent = ... # 0x68 + WindowStateChange : QEvent = ... # 0x69 + ReadOnlyChange : QEvent = ... # 0x6a + MouseTrackingChange : QEvent = ... # 0x6d + ToolTip : QEvent = ... # 0x6e + WhatsThis : QEvent = ... # 0x6f + StatusTip : QEvent = ... # 0x70 + ActionChanged : QEvent = ... # 0x71 + ActionAdded : QEvent = ... # 0x72 + ActionRemoved : QEvent = ... # 0x73 + FileOpen : QEvent = ... # 0x74 + Shortcut : QEvent = ... # 0x75 + WhatsThisClicked : QEvent = ... # 0x76 + ToolBarChange : QEvent = ... # 0x78 + ApplicationActivate : QEvent = ... # 0x79 + ApplicationActivated : QEvent = ... # 0x79 + ApplicationDeactivate : QEvent = ... # 0x7a + ApplicationDeactivated : QEvent = ... # 0x7a + QueryWhatsThis : QEvent = ... # 0x7b + EnterWhatsThisMode : QEvent = ... # 0x7c + LeaveWhatsThisMode : QEvent = ... # 0x7d + ZOrderChange : QEvent = ... # 0x7e + HoverEnter : QEvent = ... # 0x7f + HoverLeave : QEvent = ... # 0x80 + HoverMove : QEvent = ... # 0x81 + ParentAboutToChange : QEvent = ... # 0x83 + WinEventAct : QEvent = ... # 0x84 + AcceptDropsChange : QEvent = ... # 0x98 + ZeroTimerEvent : QEvent = ... # 0x9a + GraphicsSceneMouseMove : QEvent = ... # 0x9b + GraphicsSceneMousePress : QEvent = ... # 0x9c + GraphicsSceneMouseRelease: QEvent = ... # 0x9d + GraphicsSceneMouseDoubleClick: QEvent = ... # 0x9e + GraphicsSceneContextMenu : QEvent = ... # 0x9f + GraphicsSceneHoverEnter : QEvent = ... # 0xa0 + GraphicsSceneHoverMove : QEvent = ... # 0xa1 + GraphicsSceneHoverLeave : QEvent = ... # 0xa2 + GraphicsSceneHelp : QEvent = ... # 0xa3 + GraphicsSceneDragEnter : QEvent = ... # 0xa4 + GraphicsSceneDragMove : QEvent = ... # 0xa5 + GraphicsSceneDragLeave : QEvent = ... # 0xa6 + GraphicsSceneDrop : QEvent = ... # 0xa7 + GraphicsSceneWheel : QEvent = ... # 0xa8 + KeyboardLayoutChange : QEvent = ... # 0xa9 + DynamicPropertyChange : QEvent = ... # 0xaa + TabletEnterProximity : QEvent = ... # 0xab + TabletLeaveProximity : QEvent = ... # 0xac + NonClientAreaMouseMove : QEvent = ... # 0xad + NonClientAreaMouseButtonPress: QEvent = ... # 0xae + NonClientAreaMouseButtonRelease: QEvent = ... # 0xaf + NonClientAreaMouseButtonDblClick: QEvent = ... # 0xb0 + MacSizeChange : QEvent = ... # 0xb1 + ContentsRectChange : QEvent = ... # 0xb2 + MacGLWindowChange : QEvent = ... # 0xb3 + FutureCallOut : QEvent = ... # 0xb4 + GraphicsSceneResize : QEvent = ... # 0xb5 + GraphicsSceneMove : QEvent = ... # 0xb6 + CursorChange : QEvent = ... # 0xb7 + ToolTipChange : QEvent = ... # 0xb8 + NetworkReplyUpdated : QEvent = ... # 0xb9 + GrabMouse : QEvent = ... # 0xba + UngrabMouse : QEvent = ... # 0xbb + GrabKeyboard : QEvent = ... # 0xbc + UngrabKeyboard : QEvent = ... # 0xbd + MacGLClearDrawable : QEvent = ... # 0xbf + StateMachineSignal : QEvent = ... # 0xc0 + StateMachineWrapped : QEvent = ... # 0xc1 + TouchBegin : QEvent = ... # 0xc2 + TouchUpdate : QEvent = ... # 0xc3 + TouchEnd : QEvent = ... # 0xc4 + NativeGesture : QEvent = ... # 0xc5 + Gesture : QEvent = ... # 0xc6 + RequestSoftwareInputPanel: QEvent = ... # 0xc7 + CloseSoftwareInputPanel : QEvent = ... # 0xc8 + GestureOverride : QEvent = ... # 0xca + WinIdChange : QEvent = ... # 0xcb + ScrollPrepare : QEvent = ... # 0xcc + Scroll : QEvent = ... # 0xcd + Expose : QEvent = ... # 0xce + InputMethodQuery : QEvent = ... # 0xcf + OrientationChange : QEvent = ... # 0xd0 + TouchCancel : QEvent = ... # 0xd1 + ThemeChange : QEvent = ... # 0xd2 + SockClose : QEvent = ... # 0xd3 + PlatformPanel : QEvent = ... # 0xd4 + StyleAnimationUpdate : QEvent = ... # 0xd5 + ApplicationStateChange : QEvent = ... # 0xd6 + WindowChangeInternal : QEvent = ... # 0xd7 + ScreenChangeInternal : QEvent = ... # 0xd8 + PlatformSurface : QEvent = ... # 0xd9 + Pointer : QEvent = ... # 0xda + TabletTrackingChange : QEvent = ... # 0xdb + User : QEvent = ... # 0x3e8 + MaxUser : QEvent = ... # 0xffff + + class Type(object): + None_ : QEvent.Type = ... # 0x0 + Timer : QEvent.Type = ... # 0x1 + MouseButtonPress : QEvent.Type = ... # 0x2 + MouseButtonRelease : QEvent.Type = ... # 0x3 + MouseButtonDblClick : QEvent.Type = ... # 0x4 + MouseMove : QEvent.Type = ... # 0x5 + KeyPress : QEvent.Type = ... # 0x6 + KeyRelease : QEvent.Type = ... # 0x7 + FocusIn : QEvent.Type = ... # 0x8 + FocusOut : QEvent.Type = ... # 0x9 + Enter : QEvent.Type = ... # 0xa + Leave : QEvent.Type = ... # 0xb + Paint : QEvent.Type = ... # 0xc + Move : QEvent.Type = ... # 0xd + Resize : QEvent.Type = ... # 0xe + Create : QEvent.Type = ... # 0xf + Destroy : QEvent.Type = ... # 0x10 + Show : QEvent.Type = ... # 0x11 + Hide : QEvent.Type = ... # 0x12 + Close : QEvent.Type = ... # 0x13 + Quit : QEvent.Type = ... # 0x14 + ParentChange : QEvent.Type = ... # 0x15 + ThreadChange : QEvent.Type = ... # 0x16 + FocusAboutToChange : QEvent.Type = ... # 0x17 + WindowActivate : QEvent.Type = ... # 0x18 + WindowDeactivate : QEvent.Type = ... # 0x19 + ShowToParent : QEvent.Type = ... # 0x1a + HideToParent : QEvent.Type = ... # 0x1b + Wheel : QEvent.Type = ... # 0x1f + WindowTitleChange : QEvent.Type = ... # 0x21 + WindowIconChange : QEvent.Type = ... # 0x22 + ApplicationWindowIconChange: QEvent.Type = ... # 0x23 + ApplicationFontChange : QEvent.Type = ... # 0x24 + ApplicationLayoutDirectionChange: QEvent.Type = ... # 0x25 + ApplicationPaletteChange : QEvent.Type = ... # 0x26 + PaletteChange : QEvent.Type = ... # 0x27 + Clipboard : QEvent.Type = ... # 0x28 + Speech : QEvent.Type = ... # 0x2a + MetaCall : QEvent.Type = ... # 0x2b + SockAct : QEvent.Type = ... # 0x32 + ShortcutOverride : QEvent.Type = ... # 0x33 + DeferredDelete : QEvent.Type = ... # 0x34 + DragEnter : QEvent.Type = ... # 0x3c + DragMove : QEvent.Type = ... # 0x3d + DragLeave : QEvent.Type = ... # 0x3e + Drop : QEvent.Type = ... # 0x3f + DragResponse : QEvent.Type = ... # 0x40 + ChildAdded : QEvent.Type = ... # 0x44 + ChildPolished : QEvent.Type = ... # 0x45 + ChildRemoved : QEvent.Type = ... # 0x47 + ShowWindowRequest : QEvent.Type = ... # 0x49 + PolishRequest : QEvent.Type = ... # 0x4a + Polish : QEvent.Type = ... # 0x4b + LayoutRequest : QEvent.Type = ... # 0x4c + UpdateRequest : QEvent.Type = ... # 0x4d + UpdateLater : QEvent.Type = ... # 0x4e + EmbeddingControl : QEvent.Type = ... # 0x4f + ActivateControl : QEvent.Type = ... # 0x50 + DeactivateControl : QEvent.Type = ... # 0x51 + ContextMenu : QEvent.Type = ... # 0x52 + InputMethod : QEvent.Type = ... # 0x53 + TabletMove : QEvent.Type = ... # 0x57 + LocaleChange : QEvent.Type = ... # 0x58 + LanguageChange : QEvent.Type = ... # 0x59 + LayoutDirectionChange : QEvent.Type = ... # 0x5a + Style : QEvent.Type = ... # 0x5b + TabletPress : QEvent.Type = ... # 0x5c + TabletRelease : QEvent.Type = ... # 0x5d + OkRequest : QEvent.Type = ... # 0x5e + HelpRequest : QEvent.Type = ... # 0x5f + IconDrag : QEvent.Type = ... # 0x60 + FontChange : QEvent.Type = ... # 0x61 + EnabledChange : QEvent.Type = ... # 0x62 + ActivationChange : QEvent.Type = ... # 0x63 + StyleChange : QEvent.Type = ... # 0x64 + IconTextChange : QEvent.Type = ... # 0x65 + ModifiedChange : QEvent.Type = ... # 0x66 + WindowBlocked : QEvent.Type = ... # 0x67 + WindowUnblocked : QEvent.Type = ... # 0x68 + WindowStateChange : QEvent.Type = ... # 0x69 + ReadOnlyChange : QEvent.Type = ... # 0x6a + MouseTrackingChange : QEvent.Type = ... # 0x6d + ToolTip : QEvent.Type = ... # 0x6e + WhatsThis : QEvent.Type = ... # 0x6f + StatusTip : QEvent.Type = ... # 0x70 + ActionChanged : QEvent.Type = ... # 0x71 + ActionAdded : QEvent.Type = ... # 0x72 + ActionRemoved : QEvent.Type = ... # 0x73 + FileOpen : QEvent.Type = ... # 0x74 + Shortcut : QEvent.Type = ... # 0x75 + WhatsThisClicked : QEvent.Type = ... # 0x76 + ToolBarChange : QEvent.Type = ... # 0x78 + ApplicationActivate : QEvent.Type = ... # 0x79 + ApplicationActivated : QEvent.Type = ... # 0x79 + ApplicationDeactivate : QEvent.Type = ... # 0x7a + ApplicationDeactivated : QEvent.Type = ... # 0x7a + QueryWhatsThis : QEvent.Type = ... # 0x7b + EnterWhatsThisMode : QEvent.Type = ... # 0x7c + LeaveWhatsThisMode : QEvent.Type = ... # 0x7d + ZOrderChange : QEvent.Type = ... # 0x7e + HoverEnter : QEvent.Type = ... # 0x7f + HoverLeave : QEvent.Type = ... # 0x80 + HoverMove : QEvent.Type = ... # 0x81 + ParentAboutToChange : QEvent.Type = ... # 0x83 + WinEventAct : QEvent.Type = ... # 0x84 + AcceptDropsChange : QEvent.Type = ... # 0x98 + ZeroTimerEvent : QEvent.Type = ... # 0x9a + GraphicsSceneMouseMove : QEvent.Type = ... # 0x9b + GraphicsSceneMousePress : QEvent.Type = ... # 0x9c + GraphicsSceneMouseRelease: QEvent.Type = ... # 0x9d + GraphicsSceneMouseDoubleClick: QEvent.Type = ... # 0x9e + GraphicsSceneContextMenu : QEvent.Type = ... # 0x9f + GraphicsSceneHoverEnter : QEvent.Type = ... # 0xa0 + GraphicsSceneHoverMove : QEvent.Type = ... # 0xa1 + GraphicsSceneHoverLeave : QEvent.Type = ... # 0xa2 + GraphicsSceneHelp : QEvent.Type = ... # 0xa3 + GraphicsSceneDragEnter : QEvent.Type = ... # 0xa4 + GraphicsSceneDragMove : QEvent.Type = ... # 0xa5 + GraphicsSceneDragLeave : QEvent.Type = ... # 0xa6 + GraphicsSceneDrop : QEvent.Type = ... # 0xa7 + GraphicsSceneWheel : QEvent.Type = ... # 0xa8 + KeyboardLayoutChange : QEvent.Type = ... # 0xa9 + DynamicPropertyChange : QEvent.Type = ... # 0xaa + TabletEnterProximity : QEvent.Type = ... # 0xab + TabletLeaveProximity : QEvent.Type = ... # 0xac + NonClientAreaMouseMove : QEvent.Type = ... # 0xad + NonClientAreaMouseButtonPress: QEvent.Type = ... # 0xae + NonClientAreaMouseButtonRelease: QEvent.Type = ... # 0xaf + NonClientAreaMouseButtonDblClick: QEvent.Type = ... # 0xb0 + MacSizeChange : QEvent.Type = ... # 0xb1 + ContentsRectChange : QEvent.Type = ... # 0xb2 + MacGLWindowChange : QEvent.Type = ... # 0xb3 + FutureCallOut : QEvent.Type = ... # 0xb4 + GraphicsSceneResize : QEvent.Type = ... # 0xb5 + GraphicsSceneMove : QEvent.Type = ... # 0xb6 + CursorChange : QEvent.Type = ... # 0xb7 + ToolTipChange : QEvent.Type = ... # 0xb8 + NetworkReplyUpdated : QEvent.Type = ... # 0xb9 + GrabMouse : QEvent.Type = ... # 0xba + UngrabMouse : QEvent.Type = ... # 0xbb + GrabKeyboard : QEvent.Type = ... # 0xbc + UngrabKeyboard : QEvent.Type = ... # 0xbd + MacGLClearDrawable : QEvent.Type = ... # 0xbf + StateMachineSignal : QEvent.Type = ... # 0xc0 + StateMachineWrapped : QEvent.Type = ... # 0xc1 + TouchBegin : QEvent.Type = ... # 0xc2 + TouchUpdate : QEvent.Type = ... # 0xc3 + TouchEnd : QEvent.Type = ... # 0xc4 + NativeGesture : QEvent.Type = ... # 0xc5 + Gesture : QEvent.Type = ... # 0xc6 + RequestSoftwareInputPanel: QEvent.Type = ... # 0xc7 + CloseSoftwareInputPanel : QEvent.Type = ... # 0xc8 + GestureOverride : QEvent.Type = ... # 0xca + WinIdChange : QEvent.Type = ... # 0xcb + ScrollPrepare : QEvent.Type = ... # 0xcc + Scroll : QEvent.Type = ... # 0xcd + Expose : QEvent.Type = ... # 0xce + InputMethodQuery : QEvent.Type = ... # 0xcf + OrientationChange : QEvent.Type = ... # 0xd0 + TouchCancel : QEvent.Type = ... # 0xd1 + ThemeChange : QEvent.Type = ... # 0xd2 + SockClose : QEvent.Type = ... # 0xd3 + PlatformPanel : QEvent.Type = ... # 0xd4 + StyleAnimationUpdate : QEvent.Type = ... # 0xd5 + ApplicationStateChange : QEvent.Type = ... # 0xd6 + WindowChangeInternal : QEvent.Type = ... # 0xd7 + ScreenChangeInternal : QEvent.Type = ... # 0xd8 + PlatformSurface : QEvent.Type = ... # 0xd9 + Pointer : QEvent.Type = ... # 0xda + TabletTrackingChange : QEvent.Type = ... # 0xdb + User : QEvent.Type = ... # 0x3e8 + MaxUser : QEvent.Type = ... # 0xffff + + @typing.overload + def __init__(self, other:PySide2.QtCore.QEvent) -> None: ... + @typing.overload + def __init__(self, type:PySide2.QtCore.QEvent.Type) -> None: ... + + def accept(self) -> None: ... + def ignore(self) -> None: ... + def isAccepted(self) -> bool: ... + @staticmethod + def registerEventType(hint:int=...) -> int: ... + def setAccepted(self, accepted:bool) -> None: ... + def spontaneous(self) -> bool: ... + def type(self) -> PySide2.QtCore.QEvent.Type: ... + + +class QEventLoop(PySide2.QtCore.QObject): + AllEvents : QEventLoop = ... # 0x0 + ExcludeUserInputEvents : QEventLoop = ... # 0x1 + ExcludeSocketNotifiers : QEventLoop = ... # 0x2 + WaitForMoreEvents : QEventLoop = ... # 0x4 + X11ExcludeTimers : QEventLoop = ... # 0x8 + EventLoopExec : QEventLoop = ... # 0x20 + DialogExec : QEventLoop = ... # 0x40 + + class ProcessEventsFlag(object): + AllEvents : QEventLoop.ProcessEventsFlag = ... # 0x0 + ExcludeUserInputEvents : QEventLoop.ProcessEventsFlag = ... # 0x1 + ExcludeSocketNotifiers : QEventLoop.ProcessEventsFlag = ... # 0x2 + WaitForMoreEvents : QEventLoop.ProcessEventsFlag = ... # 0x4 + X11ExcludeTimers : QEventLoop.ProcessEventsFlag = ... # 0x8 + EventLoopExec : QEventLoop.ProcessEventsFlag = ... # 0x20 + DialogExec : QEventLoop.ProcessEventsFlag = ... # 0x40 + + class ProcessEventsFlags(object): ... + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def exec_(self, flags:PySide2.QtCore.QEventLoop.ProcessEventsFlags=...) -> int: ... + def exit(self, returnCode:int=...) -> None: ... + def isRunning(self) -> bool: ... + @typing.overload + def processEvents(self, flags:PySide2.QtCore.QEventLoop.ProcessEventsFlags, maximumTime:int) -> None: ... + @typing.overload + def processEvents(self, flags:PySide2.QtCore.QEventLoop.ProcessEventsFlags=...) -> bool: ... + def quit(self) -> None: ... + def wakeUp(self) -> None: ... + + +class QEventTransition(PySide2.QtCore.QAbstractTransition): + + @typing.overload + def __init__(self, object:PySide2.QtCore.QObject, type:PySide2.QtCore.QEvent.Type, sourceState:typing.Optional[PySide2.QtCore.QState]=...) -> None: ... + @typing.overload + def __init__(self, sourceState:typing.Optional[PySide2.QtCore.QState]=...) -> None: ... + + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def eventSource(self) -> PySide2.QtCore.QObject: ... + def eventTest(self, event:PySide2.QtCore.QEvent) -> bool: ... + def eventType(self) -> PySide2.QtCore.QEvent.Type: ... + def onTransition(self, event:PySide2.QtCore.QEvent) -> None: ... + def setEventSource(self, object:PySide2.QtCore.QObject) -> None: ... + def setEventType(self, type:PySide2.QtCore.QEvent.Type) -> None: ... + + +class QFactoryInterface(Shiboken.Object): + + def __init__(self) -> None: ... + + def keys(self) -> typing.List: ... + + +class QFile(PySide2.QtCore.QFileDevice): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, name:str) -> None: ... + @typing.overload + def __init__(self, name:str, parent:PySide2.QtCore.QObject) -> None: ... + @typing.overload + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + + @typing.overload + @staticmethod + def copy(fileName:str, newName:str) -> bool: ... + @typing.overload + def copy(self, newName:str) -> bool: ... + @typing.overload + @staticmethod + def decodeName(localFileName:PySide2.QtCore.QByteArray) -> str: ... + @typing.overload + @staticmethod + def decodeName(localFileName:bytes) -> str: ... + @staticmethod + def encodeName(fileName:str) -> PySide2.QtCore.QByteArray: ... + @typing.overload + @staticmethod + def exists(fileName:str) -> bool: ... + @typing.overload + def exists(self) -> bool: ... + def fileName(self) -> str: ... + @typing.overload + @staticmethod + def link(oldname:str, newName:str) -> bool: ... + @typing.overload + def link(self, newName:str) -> bool: ... + @typing.overload + @staticmethod + def moveToTrash(fileName:str) -> typing.Tuple: ... + @typing.overload + def moveToTrash(self) -> bool: ... + @typing.overload + def open(self, fd:int, ioFlags:PySide2.QtCore.QIODevice.OpenMode, handleFlags:PySide2.QtCore.QFileDevice.FileHandleFlags=...) -> bool: ... + @typing.overload + def open(self, flags:PySide2.QtCore.QIODevice.OpenMode) -> bool: ... + @typing.overload + @staticmethod + def permissions(filename:str) -> PySide2.QtCore.QFileDevice.Permissions: ... + @typing.overload + def permissions(self) -> PySide2.QtCore.QFileDevice.Permissions: ... + @typing.overload + @staticmethod + def readLink(fileName:str) -> str: ... + @typing.overload + def readLink(self) -> str: ... + @typing.overload + @staticmethod + def remove(fileName:str) -> bool: ... + @typing.overload + def remove(self) -> bool: ... + @typing.overload + @staticmethod + def rename(oldName:str, newName:str) -> bool: ... + @typing.overload + def rename(self, newName:str) -> bool: ... + @typing.overload + @staticmethod + def resize(filename:str, sz:int) -> bool: ... + @typing.overload + def resize(self, sz:int) -> bool: ... + def setFileName(self, name:str) -> None: ... + @typing.overload + @staticmethod + def setPermissions(filename:str, permissionSpec:PySide2.QtCore.QFileDevice.Permissions) -> bool: ... + @typing.overload + def setPermissions(self, permissionSpec:PySide2.QtCore.QFileDevice.Permissions) -> bool: ... + def size(self) -> int: ... + @typing.overload + @staticmethod + def symLinkTarget(fileName:str) -> str: ... + @typing.overload + def symLinkTarget(self) -> str: ... + + +class QFileDevice(PySide2.QtCore.QIODevice): + DontCloseHandle : QFileDevice = ... # 0x0 + FileAccessTime : QFileDevice = ... # 0x0 + NoError : QFileDevice = ... # 0x0 + NoOptions : QFileDevice = ... # 0x0 + AutoCloseHandle : QFileDevice = ... # 0x1 + ExeOther : QFileDevice = ... # 0x1 + FileBirthTime : QFileDevice = ... # 0x1 + MapPrivateOption : QFileDevice = ... # 0x1 + ReadError : QFileDevice = ... # 0x1 + FileMetadataChangeTime : QFileDevice = ... # 0x2 + WriteError : QFileDevice = ... # 0x2 + WriteOther : QFileDevice = ... # 0x2 + FatalError : QFileDevice = ... # 0x3 + FileModificationTime : QFileDevice = ... # 0x3 + ReadOther : QFileDevice = ... # 0x4 + ResourceError : QFileDevice = ... # 0x4 + OpenError : QFileDevice = ... # 0x5 + AbortError : QFileDevice = ... # 0x6 + TimeOutError : QFileDevice = ... # 0x7 + UnspecifiedError : QFileDevice = ... # 0x8 + RemoveError : QFileDevice = ... # 0x9 + RenameError : QFileDevice = ... # 0xa + PositionError : QFileDevice = ... # 0xb + ResizeError : QFileDevice = ... # 0xc + PermissionsError : QFileDevice = ... # 0xd + CopyError : QFileDevice = ... # 0xe + ExeGroup : QFileDevice = ... # 0x10 + WriteGroup : QFileDevice = ... # 0x20 + ReadGroup : QFileDevice = ... # 0x40 + ExeUser : QFileDevice = ... # 0x100 + WriteUser : QFileDevice = ... # 0x200 + ReadUser : QFileDevice = ... # 0x400 + ExeOwner : QFileDevice = ... # 0x1000 + WriteOwner : QFileDevice = ... # 0x2000 + ReadOwner : QFileDevice = ... # 0x4000 + + class FileError(object): + NoError : QFileDevice.FileError = ... # 0x0 + ReadError : QFileDevice.FileError = ... # 0x1 + WriteError : QFileDevice.FileError = ... # 0x2 + FatalError : QFileDevice.FileError = ... # 0x3 + ResourceError : QFileDevice.FileError = ... # 0x4 + OpenError : QFileDevice.FileError = ... # 0x5 + AbortError : QFileDevice.FileError = ... # 0x6 + TimeOutError : QFileDevice.FileError = ... # 0x7 + UnspecifiedError : QFileDevice.FileError = ... # 0x8 + RemoveError : QFileDevice.FileError = ... # 0x9 + RenameError : QFileDevice.FileError = ... # 0xa + PositionError : QFileDevice.FileError = ... # 0xb + ResizeError : QFileDevice.FileError = ... # 0xc + PermissionsError : QFileDevice.FileError = ... # 0xd + CopyError : QFileDevice.FileError = ... # 0xe + + class FileHandleFlag(object): + DontCloseHandle : QFileDevice.FileHandleFlag = ... # 0x0 + AutoCloseHandle : QFileDevice.FileHandleFlag = ... # 0x1 + + class FileHandleFlags(object): ... + + class FileTime(object): + FileAccessTime : QFileDevice.FileTime = ... # 0x0 + FileBirthTime : QFileDevice.FileTime = ... # 0x1 + FileMetadataChangeTime : QFileDevice.FileTime = ... # 0x2 + FileModificationTime : QFileDevice.FileTime = ... # 0x3 + + class MemoryMapFlags(object): + NoOptions : QFileDevice.MemoryMapFlags = ... # 0x0 + MapPrivateOption : QFileDevice.MemoryMapFlags = ... # 0x1 + + class Permission(object): + ExeOther : QFileDevice.Permission = ... # 0x1 + WriteOther : QFileDevice.Permission = ... # 0x2 + ReadOther : QFileDevice.Permission = ... # 0x4 + ExeGroup : QFileDevice.Permission = ... # 0x10 + WriteGroup : QFileDevice.Permission = ... # 0x20 + ReadGroup : QFileDevice.Permission = ... # 0x40 + ExeUser : QFileDevice.Permission = ... # 0x100 + WriteUser : QFileDevice.Permission = ... # 0x200 + ReadUser : QFileDevice.Permission = ... # 0x400 + ExeOwner : QFileDevice.Permission = ... # 0x1000 + WriteOwner : QFileDevice.Permission = ... # 0x2000 + ReadOwner : QFileDevice.Permission = ... # 0x4000 + + class Permissions(object): ... + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + + def atEnd(self) -> bool: ... + def close(self) -> None: ... + def error(self) -> PySide2.QtCore.QFileDevice.FileError: ... + def fileName(self) -> str: ... + def fileTime(self, time:PySide2.QtCore.QFileDevice.FileTime) -> PySide2.QtCore.QDateTime: ... + def flush(self) -> bool: ... + def handle(self) -> int: ... + def isSequential(self) -> bool: ... + def map(self, offset:int, size:int, flags:PySide2.QtCore.QFileDevice.MemoryMapFlags=...) -> bytes: ... + def permissions(self) -> PySide2.QtCore.QFileDevice.Permissions: ... + def pos(self) -> int: ... + def readData(self, data:bytes, maxlen:int) -> int: ... + def readLineData(self, data:bytes, maxlen:int) -> int: ... + def resize(self, sz:int) -> bool: ... + def seek(self, offset:int) -> bool: ... + def setFileTime(self, newDate:PySide2.QtCore.QDateTime, fileTime:PySide2.QtCore.QFileDevice.FileTime) -> bool: ... + def setPermissions(self, permissionSpec:PySide2.QtCore.QFileDevice.Permissions) -> bool: ... + def size(self) -> int: ... + def unmap(self, address:bytes) -> bool: ... + def unsetError(self) -> None: ... + def writeData(self, data:bytes, len:int) -> int: ... + + +class QFileInfo(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, dir:PySide2.QtCore.QDir, file:str) -> None: ... + @typing.overload + def __init__(self, file:PySide2.QtCore.QFile) -> None: ... + @typing.overload + def __init__(self, file:str) -> None: ... + @typing.overload + def __init__(self, fileinfo:PySide2.QtCore.QFileInfo) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __reduce__(self) -> object: ... + def absoluteDir(self) -> PySide2.QtCore.QDir: ... + def absoluteFilePath(self) -> str: ... + def absolutePath(self) -> str: ... + def baseName(self) -> str: ... + def birthTime(self) -> PySide2.QtCore.QDateTime: ... + def bundleName(self) -> str: ... + def caching(self) -> bool: ... + def canonicalFilePath(self) -> str: ... + def canonicalPath(self) -> str: ... + def completeBaseName(self) -> str: ... + def completeSuffix(self) -> str: ... + def created(self) -> PySide2.QtCore.QDateTime: ... + def dir(self) -> PySide2.QtCore.QDir: ... + @typing.overload + @staticmethod + def exists(file:str) -> bool: ... + @typing.overload + def exists(self) -> bool: ... + def fileName(self) -> str: ... + def filePath(self) -> str: ... + def group(self) -> str: ... + def groupId(self) -> int: ... + def isAbsolute(self) -> bool: ... + def isBundle(self) -> bool: ... + def isDir(self) -> bool: ... + def isExecutable(self) -> bool: ... + def isFile(self) -> bool: ... + def isHidden(self) -> bool: ... + def isJunction(self) -> bool: ... + def isNativePath(self) -> bool: ... + def isReadable(self) -> bool: ... + def isRelative(self) -> bool: ... + def isRoot(self) -> bool: ... + def isShortcut(self) -> bool: ... + def isSymLink(self) -> bool: ... + def isSymbolicLink(self) -> bool: ... + def isWritable(self) -> bool: ... + def lastModified(self) -> PySide2.QtCore.QDateTime: ... + def lastRead(self) -> PySide2.QtCore.QDateTime: ... + def makeAbsolute(self) -> bool: ... + def metadataChangeTime(self) -> PySide2.QtCore.QDateTime: ... + def owner(self) -> str: ... + def ownerId(self) -> int: ... + def path(self) -> str: ... + def readLink(self) -> str: ... + def refresh(self) -> None: ... + def setCaching(self, on:bool) -> None: ... + @typing.overload + def setFile(self, dir:PySide2.QtCore.QDir, file:str) -> None: ... + @typing.overload + def setFile(self, file:PySide2.QtCore.QFile) -> None: ... + @typing.overload + def setFile(self, file:str) -> None: ... + def size(self) -> int: ... + def suffix(self) -> str: ... + def swap(self, other:PySide2.QtCore.QFileInfo) -> None: ... + def symLinkTarget(self) -> str: ... + + +class QFileSelector(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def allSelectors(self) -> typing.List: ... + def extraSelectors(self) -> typing.List: ... + @typing.overload + def select(self, filePath:PySide2.QtCore.QUrl) -> PySide2.QtCore.QUrl: ... + @typing.overload + def select(self, filePath:str) -> str: ... + def setExtraSelectors(self, list:typing.Sequence) -> None: ... + + +class QFileSystemWatcher(PySide2.QtCore.QObject): + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, paths:typing.Sequence, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def addPath(self, file:str) -> bool: ... + def addPaths(self, files:typing.Sequence) -> typing.List: ... + def directories(self) -> typing.List: ... + def files(self) -> typing.List: ... + def removePath(self, file:str) -> bool: ... + def removePaths(self, files:typing.Sequence) -> typing.List: ... + + +class QFinalState(PySide2.QtCore.QAbstractState): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QState]=...) -> None: ... + + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def onEntry(self, event:PySide2.QtCore.QEvent) -> None: ... + def onExit(self, event:PySide2.QtCore.QEvent) -> None: ... + + +class QFutureInterfaceBase(Shiboken.Object): + NoState : QFutureInterfaceBase = ... # 0x0 + Running : QFutureInterfaceBase = ... # 0x1 + Started : QFutureInterfaceBase = ... # 0x2 + Finished : QFutureInterfaceBase = ... # 0x4 + Canceled : QFutureInterfaceBase = ... # 0x8 + Paused : QFutureInterfaceBase = ... # 0x10 + Throttled : QFutureInterfaceBase = ... # 0x20 + + class State(object): + NoState : QFutureInterfaceBase.State = ... # 0x0 + Running : QFutureInterfaceBase.State = ... # 0x1 + Started : QFutureInterfaceBase.State = ... # 0x2 + Finished : QFutureInterfaceBase.State = ... # 0x4 + Canceled : QFutureInterfaceBase.State = ... # 0x8 + Paused : QFutureInterfaceBase.State = ... # 0x10 + Throttled : QFutureInterfaceBase.State = ... # 0x20 + + @typing.overload + def __init__(self, initialState:PySide2.QtCore.QFutureInterfaceBase.State=...) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtCore.QFutureInterfaceBase) -> None: ... + + def cancel(self) -> None: ... + def derefT(self) -> bool: ... + def expectedResultCount(self) -> int: ... + def isCanceled(self) -> bool: ... + def isFinished(self) -> bool: ... + def isPaused(self) -> bool: ... + def isProgressUpdateNeeded(self) -> bool: ... + def isResultReadyAt(self, index:int) -> bool: ... + def isRunning(self) -> bool: ... + def isStarted(self) -> bool: ... + def isThrottled(self) -> bool: ... + @typing.overload + def mutex(self) -> PySide2.QtCore.QMutex: ... + @typing.overload + def mutex(self, arg__1:int) -> PySide2.QtCore.QMutex: ... + def progressMaximum(self) -> int: ... + def progressMinimum(self) -> int: ... + def progressText(self) -> str: ... + def progressValue(self) -> int: ... + def queryState(self, state:PySide2.QtCore.QFutureInterfaceBase.State) -> bool: ... + def refT(self) -> bool: ... + def reportCanceled(self) -> None: ... + def reportFinished(self) -> None: ... + def reportResultsReady(self, beginIndex:int, endIndex:int) -> None: ... + def reportStarted(self) -> None: ... + def resultCount(self) -> int: ... + def setExpectedResultCount(self, resultCount:int) -> None: ... + def setFilterMode(self, enable:bool) -> None: ... + def setPaused(self, paused:bool) -> None: ... + def setProgressRange(self, minimum:int, maximum:int) -> None: ... + def setProgressValue(self, progressValue:int) -> None: ... + def setProgressValueAndText(self, progressValue:int, progressText:str) -> None: ... + def setRunnable(self, runnable:PySide2.QtCore.QRunnable) -> None: ... + def setThreadPool(self, pool:PySide2.QtCore.QThreadPool) -> None: ... + def setThrottled(self, enable:bool) -> None: ... + def togglePaused(self) -> None: ... + def waitForFinished(self) -> None: ... + def waitForNextResult(self) -> bool: ... + def waitForResult(self, resultIndex:int) -> None: ... + def waitForResume(self) -> None: ... + + +class QGenericArgument(Shiboken.Object): + + @typing.overload + def __init__(self, QGenericArgument:PySide2.QtCore.QGenericArgument) -> None: ... + @typing.overload + def __init__(self, aName:typing.Optional[bytes]=..., aData:typing.Optional[int]=...) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def data(self) -> int: ... + def name(self) -> bytes: ... + + +class QGenericReturnArgument(PySide2.QtCore.QGenericArgument): + + @typing.overload + def __init__(self, QGenericReturnArgument:PySide2.QtCore.QGenericReturnArgument) -> None: ... + @typing.overload + def __init__(self, aName:typing.Optional[bytes]=..., aData:typing.Optional[int]=...) -> None: ... + + @staticmethod + def __copy__() -> None: ... + + +class QHistoryState(PySide2.QtCore.QAbstractState): + ShallowHistory : QHistoryState = ... # 0x0 + DeepHistory : QHistoryState = ... # 0x1 + + class HistoryType(object): + ShallowHistory : QHistoryState.HistoryType = ... # 0x0 + DeepHistory : QHistoryState.HistoryType = ... # 0x1 + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QState]=...) -> None: ... + @typing.overload + def __init__(self, type:PySide2.QtCore.QHistoryState.HistoryType, parent:typing.Optional[PySide2.QtCore.QState]=...) -> None: ... + + def defaultState(self) -> PySide2.QtCore.QAbstractState: ... + def defaultTransition(self) -> PySide2.QtCore.QAbstractTransition: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def historyType(self) -> PySide2.QtCore.QHistoryState.HistoryType: ... + def onEntry(self, event:PySide2.QtCore.QEvent) -> None: ... + def onExit(self, event:PySide2.QtCore.QEvent) -> None: ... + def setDefaultState(self, state:PySide2.QtCore.QAbstractState) -> None: ... + def setDefaultTransition(self, transition:PySide2.QtCore.QAbstractTransition) -> None: ... + def setHistoryType(self, type:PySide2.QtCore.QHistoryState.HistoryType) -> None: ... + + +class QIODevice(PySide2.QtCore.QObject): + NotOpen : QIODevice = ... # 0x0 + ReadOnly : QIODevice = ... # 0x1 + WriteOnly : QIODevice = ... # 0x2 + ReadWrite : QIODevice = ... # 0x3 + Append : QIODevice = ... # 0x4 + Truncate : QIODevice = ... # 0x8 + Text : QIODevice = ... # 0x10 + Unbuffered : QIODevice = ... # 0x20 + NewOnly : QIODevice = ... # 0x40 + ExistingOnly : QIODevice = ... # 0x80 + + class OpenMode(object): ... + + class OpenModeFlag(object): + NotOpen : QIODevice.OpenModeFlag = ... # 0x0 + ReadOnly : QIODevice.OpenModeFlag = ... # 0x1 + WriteOnly : QIODevice.OpenModeFlag = ... # 0x2 + ReadWrite : QIODevice.OpenModeFlag = ... # 0x3 + Append : QIODevice.OpenModeFlag = ... # 0x4 + Truncate : QIODevice.OpenModeFlag = ... # 0x8 + Text : QIODevice.OpenModeFlag = ... # 0x10 + Unbuffered : QIODevice.OpenModeFlag = ... # 0x20 + NewOnly : QIODevice.OpenModeFlag = ... # 0x40 + ExistingOnly : QIODevice.OpenModeFlag = ... # 0x80 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + + def atEnd(self) -> bool: ... + def bytesAvailable(self) -> int: ... + def bytesToWrite(self) -> int: ... + def canReadLine(self) -> bool: ... + def close(self) -> None: ... + def commitTransaction(self) -> None: ... + def currentReadChannel(self) -> int: ... + def currentWriteChannel(self) -> int: ... + def errorString(self) -> str: ... + def getChar(self, c:bytes) -> bool: ... + def isOpen(self) -> bool: ... + def isReadable(self) -> bool: ... + def isSequential(self) -> bool: ... + def isTextModeEnabled(self) -> bool: ... + def isTransactionStarted(self) -> bool: ... + def isWritable(self) -> bool: ... + def open(self, mode:PySide2.QtCore.QIODevice.OpenMode) -> bool: ... + def openMode(self) -> PySide2.QtCore.QIODevice.OpenMode: ... + def peek(self, maxlen:int) -> PySide2.QtCore.QByteArray: ... + def pos(self) -> int: ... + def putChar(self, c:int) -> bool: ... + def read(self, maxlen:int) -> PySide2.QtCore.QByteArray: ... + def readAll(self) -> PySide2.QtCore.QByteArray: ... + def readChannelCount(self) -> int: ... + def readData(self, data:bytes, maxlen:int) -> int: ... + def readLine(self, maxlen:int=...) -> PySide2.QtCore.QByteArray: ... + def readLineData(self, data:bytes, maxlen:int) -> int: ... + def reset(self) -> bool: ... + def rollbackTransaction(self) -> None: ... + def seek(self, pos:int) -> bool: ... + def setCurrentReadChannel(self, channel:int) -> None: ... + def setCurrentWriteChannel(self, channel:int) -> None: ... + def setErrorString(self, errorString:str) -> None: ... + def setOpenMode(self, openMode:PySide2.QtCore.QIODevice.OpenMode) -> None: ... + def setTextModeEnabled(self, enabled:bool) -> None: ... + def size(self) -> int: ... + def skip(self, maxSize:int) -> int: ... + def startTransaction(self) -> None: ... + def ungetChar(self, c:int) -> None: ... + def waitForBytesWritten(self, msecs:int) -> bool: ... + def waitForReadyRead(self, msecs:int) -> bool: ... + def write(self, data:PySide2.QtCore.QByteArray) -> int: ... + def writeChannelCount(self) -> int: ... + def writeData(self, data:bytes, len:int) -> int: ... + + +class QIdentityProxyModel(PySide2.QtCore.QAbstractProxyModel): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def columnCount(self, parent:PySide2.QtCore.QModelIndex=...) -> int: ... + def dropMimeData(self, data:PySide2.QtCore.QMimeData, action:PySide2.QtCore.Qt.DropAction, row:int, column:int, parent:PySide2.QtCore.QModelIndex) -> bool: ... + def headerData(self, section:int, orientation:PySide2.QtCore.Qt.Orientation, role:int=...) -> typing.Any: ... + def index(self, row:int, column:int, parent:PySide2.QtCore.QModelIndex=...) -> PySide2.QtCore.QModelIndex: ... + def insertColumns(self, column:int, count:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def insertRows(self, row:int, count:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def mapFromSource(self, sourceIndex:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def mapSelectionFromSource(self, selection:PySide2.QtCore.QItemSelection) -> PySide2.QtCore.QItemSelection: ... + def mapSelectionToSource(self, selection:PySide2.QtCore.QItemSelection) -> PySide2.QtCore.QItemSelection: ... + def mapToSource(self, proxyIndex:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def match(self, start:PySide2.QtCore.QModelIndex, role:int, value:typing.Any, hits:int=..., flags:PySide2.QtCore.Qt.MatchFlags=...) -> typing.List: ... + def moveColumns(self, sourceParent:PySide2.QtCore.QModelIndex, sourceColumn:int, count:int, destinationParent:PySide2.QtCore.QModelIndex, destinationChild:int) -> bool: ... + def moveRows(self, sourceParent:PySide2.QtCore.QModelIndex, sourceRow:int, count:int, destinationParent:PySide2.QtCore.QModelIndex, destinationChild:int) -> bool: ... + @typing.overload + def parent(self) -> PySide2.QtCore.QObject: ... + @typing.overload + def parent(self, child:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def removeColumns(self, column:int, count:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def removeRows(self, row:int, count:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def rowCount(self, parent:PySide2.QtCore.QModelIndex=...) -> int: ... + def setSourceModel(self, sourceModel:PySide2.QtCore.QAbstractItemModel) -> None: ... + def sibling(self, row:int, column:int, idx:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + + +class QItemSelection(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QItemSelection:PySide2.QtCore.QItemSelection) -> None: ... + @typing.overload + def __init__(self, topLeft:PySide2.QtCore.QModelIndex, bottomRight:PySide2.QtCore.QModelIndex) -> None: ... + + def __add__(self, l:typing.Sequence) -> typing.List: ... + @staticmethod + def __copy__() -> None: ... + @typing.overload + def __iadd__(self, l:typing.Sequence) -> typing.List: ... + @typing.overload + def __iadd__(self, t:PySide2.QtCore.QItemSelectionRange) -> typing.List: ... + @typing.overload + def __lshift__(self, l:typing.Sequence) -> typing.List: ... + @typing.overload + def __lshift__(self, t:PySide2.QtCore.QItemSelectionRange) -> typing.List: ... + @typing.overload + def append(self, t:PySide2.QtCore.QItemSelectionRange) -> None: ... + @typing.overload + def append(self, t:typing.Sequence) -> None: ... + def at(self, i:int) -> PySide2.QtCore.QItemSelectionRange: ... + def back(self) -> PySide2.QtCore.QItemSelectionRange: ... + def clear(self) -> None: ... + def constFirst(self) -> PySide2.QtCore.QItemSelectionRange: ... + def constLast(self) -> PySide2.QtCore.QItemSelectionRange: ... + def contains(self, index:PySide2.QtCore.QModelIndex) -> bool: ... + @typing.overload + def count(self) -> int: ... + @typing.overload + def count(self, t:PySide2.QtCore.QItemSelectionRange) -> int: ... + def detachShared(self) -> None: ... + def empty(self) -> bool: ... + def endsWith(self, t:PySide2.QtCore.QItemSelectionRange) -> bool: ... + def first(self) -> PySide2.QtCore.QItemSelectionRange: ... + @staticmethod + def fromSet(set:typing.Set) -> typing.List: ... + @staticmethod + def fromVector(vector:typing.List) -> typing.List: ... + def front(self) -> PySide2.QtCore.QItemSelectionRange: ... + def indexOf(self, t:PySide2.QtCore.QItemSelectionRange, from_:int=...) -> int: ... + def indexes(self) -> typing.List: ... + def insert(self, i:int, t:PySide2.QtCore.QItemSelectionRange) -> None: ... + def isEmpty(self) -> bool: ... + def isSharedWith(self, other:typing.Sequence) -> bool: ... + def last(self) -> PySide2.QtCore.QItemSelectionRange: ... + def lastIndexOf(self, t:PySide2.QtCore.QItemSelectionRange, from_:int=...) -> int: ... + def length(self) -> int: ... + def merge(self, other:PySide2.QtCore.QItemSelection, command:PySide2.QtCore.QItemSelectionModel.SelectionFlags) -> None: ... + def mid(self, pos:int, length:int=...) -> typing.List: ... + def move(self, from_:int, to:int) -> None: ... + def pop_back(self) -> None: ... + def pop_front(self) -> None: ... + def prepend(self, t:PySide2.QtCore.QItemSelectionRange) -> None: ... + def push_back(self, t:PySide2.QtCore.QItemSelectionRange) -> None: ... + def push_front(self, t:PySide2.QtCore.QItemSelectionRange) -> None: ... + def removeAll(self, t:PySide2.QtCore.QItemSelectionRange) -> int: ... + def removeAt(self, i:int) -> None: ... + def removeFirst(self) -> None: ... + def removeLast(self) -> None: ... + def removeOne(self, t:PySide2.QtCore.QItemSelectionRange) -> bool: ... + def replace(self, i:int, t:PySide2.QtCore.QItemSelectionRange) -> None: ... + def reserve(self, size:int) -> None: ... + def select(self, topLeft:PySide2.QtCore.QModelIndex, bottomRight:PySide2.QtCore.QModelIndex) -> None: ... + def setSharable(self, sharable:bool) -> None: ... + def size(self) -> int: ... + @staticmethod + def split(range:PySide2.QtCore.QItemSelectionRange, other:PySide2.QtCore.QItemSelectionRange, result:PySide2.QtCore.QItemSelection) -> None: ... + def startsWith(self, t:PySide2.QtCore.QItemSelectionRange) -> bool: ... + @typing.overload + def swap(self, i:int, j:int) -> None: ... + @typing.overload + def swap(self, other:typing.Sequence) -> None: ... + def swapItemsAt(self, i:int, j:int) -> None: ... + def takeAt(self, i:int) -> PySide2.QtCore.QItemSelectionRange: ... + def takeFirst(self) -> PySide2.QtCore.QItemSelectionRange: ... + def takeLast(self) -> PySide2.QtCore.QItemSelectionRange: ... + def toSet(self) -> typing.Set: ... + def toVector(self) -> typing.List: ... + @typing.overload + def value(self, i:int) -> PySide2.QtCore.QItemSelectionRange: ... + @typing.overload + def value(self, i:int, defaultValue:PySide2.QtCore.QItemSelectionRange) -> PySide2.QtCore.QItemSelectionRange: ... + + +class QItemSelectionModel(PySide2.QtCore.QObject): + NoUpdate : QItemSelectionModel = ... # 0x0 + Clear : QItemSelectionModel = ... # 0x1 + Select : QItemSelectionModel = ... # 0x2 + ClearAndSelect : QItemSelectionModel = ... # 0x3 + Deselect : QItemSelectionModel = ... # 0x4 + Toggle : QItemSelectionModel = ... # 0x8 + Current : QItemSelectionModel = ... # 0x10 + SelectCurrent : QItemSelectionModel = ... # 0x12 + ToggleCurrent : QItemSelectionModel = ... # 0x18 + Rows : QItemSelectionModel = ... # 0x20 + Columns : QItemSelectionModel = ... # 0x40 + + class SelectionFlag(object): + NoUpdate : QItemSelectionModel.SelectionFlag = ... # 0x0 + Clear : QItemSelectionModel.SelectionFlag = ... # 0x1 + Select : QItemSelectionModel.SelectionFlag = ... # 0x2 + ClearAndSelect : QItemSelectionModel.SelectionFlag = ... # 0x3 + Deselect : QItemSelectionModel.SelectionFlag = ... # 0x4 + Toggle : QItemSelectionModel.SelectionFlag = ... # 0x8 + Current : QItemSelectionModel.SelectionFlag = ... # 0x10 + SelectCurrent : QItemSelectionModel.SelectionFlag = ... # 0x12 + ToggleCurrent : QItemSelectionModel.SelectionFlag = ... # 0x18 + Rows : QItemSelectionModel.SelectionFlag = ... # 0x20 + Columns : QItemSelectionModel.SelectionFlag = ... # 0x40 + + class SelectionFlags(object): ... + + @typing.overload + def __init__(self, model:PySide2.QtCore.QAbstractItemModel, parent:PySide2.QtCore.QObject) -> None: ... + @typing.overload + def __init__(self, model:typing.Optional[PySide2.QtCore.QAbstractItemModel]=...) -> None: ... + + def clear(self) -> None: ... + def clearCurrentIndex(self) -> None: ... + def clearSelection(self) -> None: ... + def columnIntersectsSelection(self, column:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def currentIndex(self) -> PySide2.QtCore.QModelIndex: ... + def emitSelectionChanged(self, newSelection:PySide2.QtCore.QItemSelection, oldSelection:PySide2.QtCore.QItemSelection) -> None: ... + def hasSelection(self) -> bool: ... + def isColumnSelected(self, column:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def isRowSelected(self, row:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def isSelected(self, index:PySide2.QtCore.QModelIndex) -> bool: ... + def model(self) -> PySide2.QtCore.QAbstractItemModel: ... + def reset(self) -> None: ... + def rowIntersectsSelection(self, row:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + @typing.overload + def select(self, index:PySide2.QtCore.QModelIndex, command:PySide2.QtCore.QItemSelectionModel.SelectionFlags) -> None: ... + @typing.overload + def select(self, selection:PySide2.QtCore.QItemSelection, command:PySide2.QtCore.QItemSelectionModel.SelectionFlags) -> None: ... + def selectedColumns(self, row:int=...) -> typing.List: ... + def selectedIndexes(self) -> typing.List: ... + def selectedRows(self, column:int=...) -> typing.List: ... + def selection(self) -> PySide2.QtCore.QItemSelection: ... + def setCurrentIndex(self, index:PySide2.QtCore.QModelIndex, command:PySide2.QtCore.QItemSelectionModel.SelectionFlags) -> None: ... + def setModel(self, model:PySide2.QtCore.QAbstractItemModel) -> None: ... + + +class QItemSelectionRange(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, index:PySide2.QtCore.QModelIndex) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtCore.QItemSelectionRange) -> None: ... + @typing.overload + def __init__(self, topL:PySide2.QtCore.QModelIndex, bottomR:PySide2.QtCore.QModelIndex) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def bottom(self) -> int: ... + def bottomRight(self) -> PySide2.QtCore.QPersistentModelIndex: ... + @typing.overload + def contains(self, index:PySide2.QtCore.QModelIndex) -> bool: ... + @typing.overload + def contains(self, row:int, column:int, parentIndex:PySide2.QtCore.QModelIndex) -> bool: ... + def height(self) -> int: ... + def indexes(self) -> typing.List: ... + def intersected(self, other:PySide2.QtCore.QItemSelectionRange) -> PySide2.QtCore.QItemSelectionRange: ... + def intersects(self, other:PySide2.QtCore.QItemSelectionRange) -> bool: ... + def isEmpty(self) -> bool: ... + def isValid(self) -> bool: ... + def left(self) -> int: ... + def model(self) -> PySide2.QtCore.QAbstractItemModel: ... + def parent(self) -> PySide2.QtCore.QModelIndex: ... + def right(self) -> int: ... + def swap(self, other:PySide2.QtCore.QItemSelectionRange) -> None: ... + def top(self) -> int: ... + def topLeft(self) -> PySide2.QtCore.QPersistentModelIndex: ... + def width(self) -> int: ... + + +class QJsonArray(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtCore.QJsonArray) -> None: ... + + def __add__(self, v:PySide2.QtCore.QJsonValue) -> PySide2.QtCore.QJsonArray: ... + @staticmethod + def __copy__() -> None: ... + def __iadd__(self, v:PySide2.QtCore.QJsonValue) -> PySide2.QtCore.QJsonArray: ... + def __lshift__(self, v:PySide2.QtCore.QJsonValue) -> PySide2.QtCore.QJsonArray: ... + def append(self, value:PySide2.QtCore.QJsonValue) -> None: ... + def at(self, i:int) -> PySide2.QtCore.QJsonValue: ... + def contains(self, element:PySide2.QtCore.QJsonValue) -> bool: ... + def count(self) -> int: ... + def empty(self) -> bool: ... + def first(self) -> PySide2.QtCore.QJsonValue: ... + @staticmethod + def fromStringList(list:typing.Sequence) -> PySide2.QtCore.QJsonArray: ... + @staticmethod + def fromVariantList(list:typing.Sequence) -> PySide2.QtCore.QJsonArray: ... + def insert(self, i:int, value:PySide2.QtCore.QJsonValue) -> None: ... + def isEmpty(self) -> bool: ... + def last(self) -> PySide2.QtCore.QJsonValue: ... + def pop_back(self) -> None: ... + def pop_front(self) -> None: ... + def prepend(self, value:PySide2.QtCore.QJsonValue) -> None: ... + def push_back(self, t:PySide2.QtCore.QJsonValue) -> None: ... + def push_front(self, t:PySide2.QtCore.QJsonValue) -> None: ... + def removeAt(self, i:int) -> None: ... + def removeFirst(self) -> None: ... + def removeLast(self) -> None: ... + def replace(self, i:int, value:PySide2.QtCore.QJsonValue) -> None: ... + def size(self) -> int: ... + def swap(self, other:PySide2.QtCore.QJsonArray) -> None: ... + def takeAt(self, i:int) -> PySide2.QtCore.QJsonValue: ... + def toVariantList(self) -> typing.List: ... + + +class QJsonDocument(Shiboken.Object): + Indented : QJsonDocument = ... # 0x0 + Validate : QJsonDocument = ... # 0x0 + BypassValidation : QJsonDocument = ... # 0x1 + Compact : QJsonDocument = ... # 0x1 + + class DataValidation(object): + Validate : QJsonDocument.DataValidation = ... # 0x0 + BypassValidation : QJsonDocument.DataValidation = ... # 0x1 + + class JsonFormat(object): + Indented : QJsonDocument.JsonFormat = ... # 0x0 + Compact : QJsonDocument.JsonFormat = ... # 0x1 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, array:PySide2.QtCore.QJsonArray) -> None: ... + @typing.overload + def __init__(self, object:typing.Dict) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtCore.QJsonDocument) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def array(self) -> PySide2.QtCore.QJsonArray: ... + @staticmethod + def fromBinaryData(data:PySide2.QtCore.QByteArray, validation:PySide2.QtCore.QJsonDocument.DataValidation=...) -> PySide2.QtCore.QJsonDocument: ... + @staticmethod + def fromJson(json:PySide2.QtCore.QByteArray, error:typing.Optional[PySide2.QtCore.QJsonParseError]=...) -> PySide2.QtCore.QJsonDocument: ... + @staticmethod + def fromRawData(data:bytes, size:int, validation:PySide2.QtCore.QJsonDocument.DataValidation=...) -> PySide2.QtCore.QJsonDocument: ... + @staticmethod + def fromVariant(variant:typing.Any) -> PySide2.QtCore.QJsonDocument: ... + def isArray(self) -> bool: ... + def isEmpty(self) -> bool: ... + def isNull(self) -> bool: ... + def isObject(self) -> bool: ... + def object(self) -> typing.Dict: ... + def rawData(self) -> typing.Tuple: ... + def setArray(self, array:PySide2.QtCore.QJsonArray) -> None: ... + def setObject(self, object:typing.Dict) -> None: ... + def swap(self, other:PySide2.QtCore.QJsonDocument) -> None: ... + def toBinaryData(self) -> PySide2.QtCore.QByteArray: ... + @typing.overload + def toJson(self) -> PySide2.QtCore.QByteArray: ... + @typing.overload + def toJson(self, format:PySide2.QtCore.QJsonDocument.JsonFormat) -> PySide2.QtCore.QByteArray: ... + def toVariant(self) -> typing.Any: ... + + +class QJsonParseError(Shiboken.Object): + NoError : QJsonParseError = ... # 0x0 + UnterminatedObject : QJsonParseError = ... # 0x1 + MissingNameSeparator : QJsonParseError = ... # 0x2 + UnterminatedArray : QJsonParseError = ... # 0x3 + MissingValueSeparator : QJsonParseError = ... # 0x4 + IllegalValue : QJsonParseError = ... # 0x5 + TerminationByNumber : QJsonParseError = ... # 0x6 + IllegalNumber : QJsonParseError = ... # 0x7 + IllegalEscapeSequence : QJsonParseError = ... # 0x8 + IllegalUTF8String : QJsonParseError = ... # 0x9 + UnterminatedString : QJsonParseError = ... # 0xa + MissingObject : QJsonParseError = ... # 0xb + DeepNesting : QJsonParseError = ... # 0xc + DocumentTooLarge : QJsonParseError = ... # 0xd + GarbageAtEnd : QJsonParseError = ... # 0xe + + class ParseError(object): + NoError : QJsonParseError.ParseError = ... # 0x0 + UnterminatedObject : QJsonParseError.ParseError = ... # 0x1 + MissingNameSeparator : QJsonParseError.ParseError = ... # 0x2 + UnterminatedArray : QJsonParseError.ParseError = ... # 0x3 + MissingValueSeparator : QJsonParseError.ParseError = ... # 0x4 + IllegalValue : QJsonParseError.ParseError = ... # 0x5 + TerminationByNumber : QJsonParseError.ParseError = ... # 0x6 + IllegalNumber : QJsonParseError.ParseError = ... # 0x7 + IllegalEscapeSequence : QJsonParseError.ParseError = ... # 0x8 + IllegalUTF8String : QJsonParseError.ParseError = ... # 0x9 + UnterminatedString : QJsonParseError.ParseError = ... # 0xa + MissingObject : QJsonParseError.ParseError = ... # 0xb + DeepNesting : QJsonParseError.ParseError = ... # 0xc + DocumentTooLarge : QJsonParseError.ParseError = ... # 0xd + GarbageAtEnd : QJsonParseError.ParseError = ... # 0xe + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QJsonParseError:PySide2.QtCore.QJsonParseError) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def errorString(self) -> str: ... + + +class QJsonValue(Shiboken.Object): + Null : QJsonValue = ... # 0x0 + Bool : QJsonValue = ... # 0x1 + Double : QJsonValue = ... # 0x2 + String : QJsonValue = ... # 0x3 + Array : QJsonValue = ... # 0x4 + Object : QJsonValue = ... # 0x5 + Undefined : QJsonValue = ... # 0x80 + + class Type(object): + Null : QJsonValue.Type = ... # 0x0 + Bool : QJsonValue.Type = ... # 0x1 + Double : QJsonValue.Type = ... # 0x2 + String : QJsonValue.Type = ... # 0x3 + Array : QJsonValue.Type = ... # 0x4 + Object : QJsonValue.Type = ... # 0x5 + Undefined : QJsonValue.Type = ... # 0x80 + + @typing.overload + def __init__(self, a:PySide2.QtCore.QJsonArray) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtCore.QJsonValue.Type=...) -> None: ... + @typing.overload + def __init__(self, b:bool) -> None: ... + @typing.overload + def __init__(self, n:float) -> None: ... + @typing.overload + def __init__(self, n:int) -> None: ... + @typing.overload + def __init__(self, o:typing.Dict) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtCore.QJsonValue) -> None: ... + @typing.overload + def __init__(self, s:str) -> None: ... + @typing.overload + def __init__(self, s:bytes) -> None: ... + @typing.overload + def __init__(self, v:int) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @staticmethod + def fromVariant(variant:typing.Any) -> PySide2.QtCore.QJsonValue: ... + def isArray(self) -> bool: ... + def isBool(self) -> bool: ... + def isDouble(self) -> bool: ... + def isNull(self) -> bool: ... + def isObject(self) -> bool: ... + def isString(self) -> bool: ... + def isUndefined(self) -> bool: ... + def swap(self, other:PySide2.QtCore.QJsonValue) -> None: ... + @typing.overload + def toArray(self) -> PySide2.QtCore.QJsonArray: ... + @typing.overload + def toArray(self, defaultValue:PySide2.QtCore.QJsonArray) -> PySide2.QtCore.QJsonArray: ... + def toBool(self, defaultValue:bool=...) -> bool: ... + def toDouble(self, defaultValue:float=...) -> float: ... + def toInt(self, defaultValue:int=...) -> int: ... + @typing.overload + def toObject(self) -> typing.Dict: ... + @typing.overload + def toObject(self, defaultValue:typing.Dict) -> typing.Dict: ... + @typing.overload + def toString(self) -> str: ... + @typing.overload + def toString(self, defaultValue:str) -> str: ... + def toVariant(self) -> typing.Any: ... + def type(self) -> PySide2.QtCore.QJsonValue.Type: ... + + +class QLibraryInfo(Shiboken.Object): + PrefixPath : QLibraryInfo = ... # 0x0 + DocumentationPath : QLibraryInfo = ... # 0x1 + HeadersPath : QLibraryInfo = ... # 0x2 + LibrariesPath : QLibraryInfo = ... # 0x3 + LibraryExecutablesPath : QLibraryInfo = ... # 0x4 + BinariesPath : QLibraryInfo = ... # 0x5 + PluginsPath : QLibraryInfo = ... # 0x6 + ImportsPath : QLibraryInfo = ... # 0x7 + Qml2ImportsPath : QLibraryInfo = ... # 0x8 + ArchDataPath : QLibraryInfo = ... # 0x9 + DataPath : QLibraryInfo = ... # 0xa + TranslationsPath : QLibraryInfo = ... # 0xb + ExamplesPath : QLibraryInfo = ... # 0xc + TestsPath : QLibraryInfo = ... # 0xd + SettingsPath : QLibraryInfo = ... # 0x64 + + class LibraryLocation(object): + PrefixPath : QLibraryInfo.LibraryLocation = ... # 0x0 + DocumentationPath : QLibraryInfo.LibraryLocation = ... # 0x1 + HeadersPath : QLibraryInfo.LibraryLocation = ... # 0x2 + LibrariesPath : QLibraryInfo.LibraryLocation = ... # 0x3 + LibraryExecutablesPath : QLibraryInfo.LibraryLocation = ... # 0x4 + BinariesPath : QLibraryInfo.LibraryLocation = ... # 0x5 + PluginsPath : QLibraryInfo.LibraryLocation = ... # 0x6 + ImportsPath : QLibraryInfo.LibraryLocation = ... # 0x7 + Qml2ImportsPath : QLibraryInfo.LibraryLocation = ... # 0x8 + ArchDataPath : QLibraryInfo.LibraryLocation = ... # 0x9 + DataPath : QLibraryInfo.LibraryLocation = ... # 0xa + TranslationsPath : QLibraryInfo.LibraryLocation = ... # 0xb + ExamplesPath : QLibraryInfo.LibraryLocation = ... # 0xc + TestsPath : QLibraryInfo.LibraryLocation = ... # 0xd + SettingsPath : QLibraryInfo.LibraryLocation = ... # 0x64 + @staticmethod + def build() -> bytes: ... + @staticmethod + def buildDate() -> PySide2.QtCore.QDate: ... + @staticmethod + def isDebugBuild() -> bool: ... + @staticmethod + def licensedProducts() -> str: ... + @staticmethod + def licensee() -> str: ... + @staticmethod + def location(arg__1:PySide2.QtCore.QLibraryInfo.LibraryLocation) -> str: ... + @staticmethod + def platformPluginArguments(platformName:str) -> typing.List: ... + @staticmethod + def version() -> PySide2.QtCore.QVersionNumber: ... + + +class QLine(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QLine:PySide2.QtCore.QLine) -> None: ... + @typing.overload + def __init__(self, pt1:PySide2.QtCore.QPoint, pt2:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + def __init__(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + def center(self) -> PySide2.QtCore.QPoint: ... + def dx(self) -> int: ... + def dy(self) -> int: ... + def isNull(self) -> bool: ... + def p1(self) -> PySide2.QtCore.QPoint: ... + def p2(self) -> PySide2.QtCore.QPoint: ... + def setLine(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def setP1(self, p1:PySide2.QtCore.QPoint) -> None: ... + def setP2(self, p2:PySide2.QtCore.QPoint) -> None: ... + def setPoints(self, p1:PySide2.QtCore.QPoint, p2:PySide2.QtCore.QPoint) -> None: ... + def toTuple(self) -> object: ... + @typing.overload + def translate(self, dx:int, dy:int) -> None: ... + @typing.overload + def translate(self, p:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + def translated(self, dx:int, dy:int) -> PySide2.QtCore.QLine: ... + @typing.overload + def translated(self, p:PySide2.QtCore.QPoint) -> PySide2.QtCore.QLine: ... + def x1(self) -> int: ... + def x2(self) -> int: ... + def y1(self) -> int: ... + def y2(self) -> int: ... + + +class QLineF(Shiboken.Object): + NoIntersection : QLineF = ... # 0x0 + BoundedIntersection : QLineF = ... # 0x1 + UnboundedIntersection : QLineF = ... # 0x2 + + class IntersectType(object): + NoIntersection : QLineF.IntersectType = ... # 0x0 + BoundedIntersection : QLineF.IntersectType = ... # 0x1 + UnboundedIntersection : QLineF.IntersectType = ... # 0x2 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QLineF:PySide2.QtCore.QLineF) -> None: ... + @typing.overload + def __init__(self, line:PySide2.QtCore.QLine) -> None: ... + @typing.overload + def __init__(self, pt1:PySide2.QtCore.QPointF, pt2:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def __init__(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + @typing.overload + def angle(self) -> float: ... + @typing.overload + def angle(self, l:PySide2.QtCore.QLineF) -> float: ... + def angleTo(self, l:PySide2.QtCore.QLineF) -> float: ... + def center(self) -> PySide2.QtCore.QPointF: ... + def dx(self) -> float: ... + def dy(self) -> float: ... + @staticmethod + def fromPolar(length:float, angle:float) -> PySide2.QtCore.QLineF: ... + def intersect(self, l:PySide2.QtCore.QLineF, intersectionPoint:PySide2.QtCore.QPointF) -> PySide2.QtCore.QLineF.IntersectType: ... + def intersects(self, l:PySide2.QtCore.QLineF, intersectionPoint:PySide2.QtCore.QPointF) -> PySide2.QtCore.QLineF.IntersectType: ... + def isNull(self) -> bool: ... + def length(self) -> float: ... + def normalVector(self) -> PySide2.QtCore.QLineF: ... + def p1(self) -> PySide2.QtCore.QPointF: ... + def p2(self) -> PySide2.QtCore.QPointF: ... + def pointAt(self, t:float) -> PySide2.QtCore.QPointF: ... + def setAngle(self, angle:float) -> None: ... + def setLength(self, len:float) -> None: ... + def setLine(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def setP1(self, p1:PySide2.QtCore.QPointF) -> None: ... + def setP2(self, p2:PySide2.QtCore.QPointF) -> None: ... + def setPoints(self, p1:PySide2.QtCore.QPointF, p2:PySide2.QtCore.QPointF) -> None: ... + def toLine(self) -> PySide2.QtCore.QLine: ... + def toTuple(self) -> object: ... + @typing.overload + def translate(self, dx:float, dy:float) -> None: ... + @typing.overload + def translate(self, p:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def translated(self, dx:float, dy:float) -> PySide2.QtCore.QLineF: ... + @typing.overload + def translated(self, p:PySide2.QtCore.QPointF) -> PySide2.QtCore.QLineF: ... + def unitVector(self) -> PySide2.QtCore.QLineF: ... + def x1(self) -> float: ... + def x2(self) -> float: ... + def y1(self) -> float: ... + def y2(self) -> float: ... + + +class QLocale(Shiboken.Object): + FloatingPointShortest : QLocale = ... # -0x80 + AnyCountry : QLocale = ... # 0x0 + AnyLanguage : QLocale = ... # 0x0 + AnyScript : QLocale = ... # 0x0 + CurrencyIsoCode : QLocale = ... # 0x0 + DataSizeIecFormat : QLocale = ... # 0x0 + DefaultNumberOptions : QLocale = ... # 0x0 + LongFormat : QLocale = ... # 0x0 + MetricSystem : QLocale = ... # 0x0 + StandardQuotation : QLocale = ... # 0x0 + Afghanistan : QLocale = ... # 0x1 + AlternateQuotation : QLocale = ... # 0x1 + ArabicScript : QLocale = ... # 0x1 + C : QLocale = ... # 0x1 + CurrencySymbol : QLocale = ... # 0x1 + DataSizeBase1000 : QLocale = ... # 0x1 + ImperialSystem : QLocale = ... # 0x1 + ImperialUSSystem : QLocale = ... # 0x1 + OmitGroupSeparator : QLocale = ... # 0x1 + ShortFormat : QLocale = ... # 0x1 + Abkhazian : QLocale = ... # 0x2 + Albania : QLocale = ... # 0x2 + CurrencyDisplayName : QLocale = ... # 0x2 + CyrillicScript : QLocale = ... # 0x2 + DataSizeSIQuantifiers : QLocale = ... # 0x2 + DataSizeTraditionalFormat: QLocale = ... # 0x2 + ImperialUKSystem : QLocale = ... # 0x2 + NarrowFormat : QLocale = ... # 0x2 + RejectGroupSeparator : QLocale = ... # 0x2 + Afan : QLocale = ... # 0x3 + Algeria : QLocale = ... # 0x3 + DataSizeSIFormat : QLocale = ... # 0x3 + DeseretScript : QLocale = ... # 0x3 + Oromo : QLocale = ... # 0x3 + Afar : QLocale = ... # 0x4 + AmericanSamoa : QLocale = ... # 0x4 + GurmukhiScript : QLocale = ... # 0x4 + OmitLeadingZeroInExponent: QLocale = ... # 0x4 + Afrikaans : QLocale = ... # 0x5 + Andorra : QLocale = ... # 0x5 + SimplifiedChineseScript : QLocale = ... # 0x5 + SimplifiedHanScript : QLocale = ... # 0x5 + Albanian : QLocale = ... # 0x6 + Angola : QLocale = ... # 0x6 + TraditionalChineseScript : QLocale = ... # 0x6 + TraditionalHanScript : QLocale = ... # 0x6 + Amharic : QLocale = ... # 0x7 + Anguilla : QLocale = ... # 0x7 + LatinScript : QLocale = ... # 0x7 + Antarctica : QLocale = ... # 0x8 + Arabic : QLocale = ... # 0x8 + MongolianScript : QLocale = ... # 0x8 + RejectLeadingZeroInExponent: QLocale = ... # 0x8 + AntiguaAndBarbuda : QLocale = ... # 0x9 + Armenian : QLocale = ... # 0x9 + TifinaghScript : QLocale = ... # 0x9 + Argentina : QLocale = ... # 0xa + ArmenianScript : QLocale = ... # 0xa + Assamese : QLocale = ... # 0xa + Armenia : QLocale = ... # 0xb + Aymara : QLocale = ... # 0xb + BengaliScript : QLocale = ... # 0xb + Aruba : QLocale = ... # 0xc + Azerbaijani : QLocale = ... # 0xc + CherokeeScript : QLocale = ... # 0xc + Australia : QLocale = ... # 0xd + Bashkir : QLocale = ... # 0xd + DevanagariScript : QLocale = ... # 0xd + Austria : QLocale = ... # 0xe + Basque : QLocale = ... # 0xe + EthiopicScript : QLocale = ... # 0xe + Azerbaijan : QLocale = ... # 0xf + Bengali : QLocale = ... # 0xf + GeorgianScript : QLocale = ... # 0xf + Bahamas : QLocale = ... # 0x10 + Bhutani : QLocale = ... # 0x10 + Dzongkha : QLocale = ... # 0x10 + GreekScript : QLocale = ... # 0x10 + IncludeTrailingZeroesAfterDot: QLocale = ... # 0x10 + Bahrain : QLocale = ... # 0x11 + Bihari : QLocale = ... # 0x11 + GujaratiScript : QLocale = ... # 0x11 + Bangladesh : QLocale = ... # 0x12 + Bislama : QLocale = ... # 0x12 + HebrewScript : QLocale = ... # 0x12 + Barbados : QLocale = ... # 0x13 + Breton : QLocale = ... # 0x13 + JapaneseScript : QLocale = ... # 0x13 + Belarus : QLocale = ... # 0x14 + Bulgarian : QLocale = ... # 0x14 + KhmerScript : QLocale = ... # 0x14 + Belgium : QLocale = ... # 0x15 + Burmese : QLocale = ... # 0x15 + KannadaScript : QLocale = ... # 0x15 + Belarusian : QLocale = ... # 0x16 + Belize : QLocale = ... # 0x16 + Byelorussian : QLocale = ... # 0x16 + KoreanScript : QLocale = ... # 0x16 + Benin : QLocale = ... # 0x17 + Cambodian : QLocale = ... # 0x17 + Khmer : QLocale = ... # 0x17 + LaoScript : QLocale = ... # 0x17 + Bermuda : QLocale = ... # 0x18 + Catalan : QLocale = ... # 0x18 + MalayalamScript : QLocale = ... # 0x18 + Bhutan : QLocale = ... # 0x19 + Chinese : QLocale = ... # 0x19 + MyanmarScript : QLocale = ... # 0x19 + Bolivia : QLocale = ... # 0x1a + Corsican : QLocale = ... # 0x1a + OriyaScript : QLocale = ... # 0x1a + BosniaAndHerzegowina : QLocale = ... # 0x1b + Croatian : QLocale = ... # 0x1b + TamilScript : QLocale = ... # 0x1b + Botswana : QLocale = ... # 0x1c + Czech : QLocale = ... # 0x1c + TeluguScript : QLocale = ... # 0x1c + BouvetIsland : QLocale = ... # 0x1d + Danish : QLocale = ... # 0x1d + ThaanaScript : QLocale = ... # 0x1d + Brazil : QLocale = ... # 0x1e + Dutch : QLocale = ... # 0x1e + ThaiScript : QLocale = ... # 0x1e + BritishIndianOceanTerritory: QLocale = ... # 0x1f + English : QLocale = ... # 0x1f + TibetanScript : QLocale = ... # 0x1f + Brunei : QLocale = ... # 0x20 + Esperanto : QLocale = ... # 0x20 + RejectTrailingZeroesAfterDot: QLocale = ... # 0x20 + SinhalaScript : QLocale = ... # 0x20 + Bulgaria : QLocale = ... # 0x21 + Estonian : QLocale = ... # 0x21 + SyriacScript : QLocale = ... # 0x21 + BurkinaFaso : QLocale = ... # 0x22 + Faroese : QLocale = ... # 0x22 + YiScript : QLocale = ... # 0x22 + Burundi : QLocale = ... # 0x23 + Fijian : QLocale = ... # 0x23 + VaiScript : QLocale = ... # 0x23 + AvestanScript : QLocale = ... # 0x24 + Cambodia : QLocale = ... # 0x24 + Finnish : QLocale = ... # 0x24 + BalineseScript : QLocale = ... # 0x25 + Cameroon : QLocale = ... # 0x25 + French : QLocale = ... # 0x25 + BamumScript : QLocale = ... # 0x26 + Canada : QLocale = ... # 0x26 + Frisian : QLocale = ... # 0x26 + WesternFrisian : QLocale = ... # 0x26 + BatakScript : QLocale = ... # 0x27 + CapeVerde : QLocale = ... # 0x27 + Gaelic : QLocale = ... # 0x27 + BopomofoScript : QLocale = ... # 0x28 + CaymanIslands : QLocale = ... # 0x28 + Galician : QLocale = ... # 0x28 + BrahmiScript : QLocale = ... # 0x29 + CentralAfricanRepublic : QLocale = ... # 0x29 + Georgian : QLocale = ... # 0x29 + BugineseScript : QLocale = ... # 0x2a + Chad : QLocale = ... # 0x2a + German : QLocale = ... # 0x2a + BuhidScript : QLocale = ... # 0x2b + Chile : QLocale = ... # 0x2b + Greek : QLocale = ... # 0x2b + CanadianAboriginalScript : QLocale = ... # 0x2c + China : QLocale = ... # 0x2c + Greenlandic : QLocale = ... # 0x2c + CarianScript : QLocale = ... # 0x2d + ChristmasIsland : QLocale = ... # 0x2d + Guarani : QLocale = ... # 0x2d + ChakmaScript : QLocale = ... # 0x2e + CocosIslands : QLocale = ... # 0x2e + Gujarati : QLocale = ... # 0x2e + ChamScript : QLocale = ... # 0x2f + Colombia : QLocale = ... # 0x2f + Hausa : QLocale = ... # 0x2f + Comoros : QLocale = ... # 0x30 + CopticScript : QLocale = ... # 0x30 + Hebrew : QLocale = ... # 0x30 + CongoKinshasa : QLocale = ... # 0x31 + CypriotScript : QLocale = ... # 0x31 + DemocraticRepublicOfCongo: QLocale = ... # 0x31 + Hindi : QLocale = ... # 0x31 + CongoBrazzaville : QLocale = ... # 0x32 + EgyptianHieroglyphsScript: QLocale = ... # 0x32 + Hungarian : QLocale = ... # 0x32 + PeoplesRepublicOfCongo : QLocale = ... # 0x32 + CookIslands : QLocale = ... # 0x33 + FraserScript : QLocale = ... # 0x33 + Icelandic : QLocale = ... # 0x33 + CostaRica : QLocale = ... # 0x34 + GlagoliticScript : QLocale = ... # 0x34 + Indonesian : QLocale = ... # 0x34 + GothicScript : QLocale = ... # 0x35 + Interlingua : QLocale = ... # 0x35 + IvoryCoast : QLocale = ... # 0x35 + Croatia : QLocale = ... # 0x36 + HanScript : QLocale = ... # 0x36 + Interlingue : QLocale = ... # 0x36 + Cuba : QLocale = ... # 0x37 + HangulScript : QLocale = ... # 0x37 + Inuktitut : QLocale = ... # 0x37 + Cyprus : QLocale = ... # 0x38 + HanunooScript : QLocale = ... # 0x38 + Inupiak : QLocale = ... # 0x38 + CzechRepublic : QLocale = ... # 0x39 + ImperialAramaicScript : QLocale = ... # 0x39 + Irish : QLocale = ... # 0x39 + Denmark : QLocale = ... # 0x3a + InscriptionalPahlaviScript: QLocale = ... # 0x3a + Italian : QLocale = ... # 0x3a + Djibouti : QLocale = ... # 0x3b + InscriptionalParthianScript: QLocale = ... # 0x3b + Japanese : QLocale = ... # 0x3b + Dominica : QLocale = ... # 0x3c + Javanese : QLocale = ... # 0x3c + JavaneseScript : QLocale = ... # 0x3c + DominicanRepublic : QLocale = ... # 0x3d + KaithiScript : QLocale = ... # 0x3d + Kannada : QLocale = ... # 0x3d + EastTimor : QLocale = ... # 0x3e + Kashmiri : QLocale = ... # 0x3e + KatakanaScript : QLocale = ... # 0x3e + Ecuador : QLocale = ... # 0x3f + KayahLiScript : QLocale = ... # 0x3f + Kazakh : QLocale = ... # 0x3f + Egypt : QLocale = ... # 0x40 + KharoshthiScript : QLocale = ... # 0x40 + Kinyarwanda : QLocale = ... # 0x40 + ElSalvador : QLocale = ... # 0x41 + Kirghiz : QLocale = ... # 0x41 + LannaScript : QLocale = ... # 0x41 + EquatorialGuinea : QLocale = ... # 0x42 + Korean : QLocale = ... # 0x42 + LepchaScript : QLocale = ... # 0x42 + Eritrea : QLocale = ... # 0x43 + Kurdish : QLocale = ... # 0x43 + LimbuScript : QLocale = ... # 0x43 + Estonia : QLocale = ... # 0x44 + Kurundi : QLocale = ... # 0x44 + LinearBScript : QLocale = ... # 0x44 + Rundi : QLocale = ... # 0x44 + Ethiopia : QLocale = ... # 0x45 + Lao : QLocale = ... # 0x45 + LycianScript : QLocale = ... # 0x45 + FalklandIslands : QLocale = ... # 0x46 + Latin : QLocale = ... # 0x46 + LydianScript : QLocale = ... # 0x46 + FaroeIslands : QLocale = ... # 0x47 + Latvian : QLocale = ... # 0x47 + MandaeanScript : QLocale = ... # 0x47 + Fiji : QLocale = ... # 0x48 + Lingala : QLocale = ... # 0x48 + MeiteiMayekScript : QLocale = ... # 0x48 + Finland : QLocale = ... # 0x49 + Lithuanian : QLocale = ... # 0x49 + MeroiticScript : QLocale = ... # 0x49 + France : QLocale = ... # 0x4a + Macedonian : QLocale = ... # 0x4a + MeroiticCursiveScript : QLocale = ... # 0x4a + Guernsey : QLocale = ... # 0x4b + Malagasy : QLocale = ... # 0x4b + NkoScript : QLocale = ... # 0x4b + FrenchGuiana : QLocale = ... # 0x4c + Malay : QLocale = ... # 0x4c + NewTaiLueScript : QLocale = ... # 0x4c + FrenchPolynesia : QLocale = ... # 0x4d + Malayalam : QLocale = ... # 0x4d + OghamScript : QLocale = ... # 0x4d + FrenchSouthernTerritories: QLocale = ... # 0x4e + Maltese : QLocale = ... # 0x4e + OlChikiScript : QLocale = ... # 0x4e + Gabon : QLocale = ... # 0x4f + Maori : QLocale = ... # 0x4f + OldItalicScript : QLocale = ... # 0x4f + Gambia : QLocale = ... # 0x50 + Marathi : QLocale = ... # 0x50 + OldPersianScript : QLocale = ... # 0x50 + Georgia : QLocale = ... # 0x51 + Marshallese : QLocale = ... # 0x51 + OldSouthArabianScript : QLocale = ... # 0x51 + Germany : QLocale = ... # 0x52 + Mongolian : QLocale = ... # 0x52 + OrkhonScript : QLocale = ... # 0x52 + Ghana : QLocale = ... # 0x53 + NauruLanguage : QLocale = ... # 0x53 + OsmanyaScript : QLocale = ... # 0x53 + Gibraltar : QLocale = ... # 0x54 + Nepali : QLocale = ... # 0x54 + PhagsPaScript : QLocale = ... # 0x54 + Greece : QLocale = ... # 0x55 + Norwegian : QLocale = ... # 0x55 + NorwegianBokmal : QLocale = ... # 0x55 + PhoenicianScript : QLocale = ... # 0x55 + Greenland : QLocale = ... # 0x56 + Occitan : QLocale = ... # 0x56 + PollardPhoneticScript : QLocale = ... # 0x56 + Grenada : QLocale = ... # 0x57 + Oriya : QLocale = ... # 0x57 + RejangScript : QLocale = ... # 0x57 + Guadeloupe : QLocale = ... # 0x58 + Pashto : QLocale = ... # 0x58 + RunicScript : QLocale = ... # 0x58 + Guam : QLocale = ... # 0x59 + Persian : QLocale = ... # 0x59 + SamaritanScript : QLocale = ... # 0x59 + Guatemala : QLocale = ... # 0x5a + Polish : QLocale = ... # 0x5a + SaurashtraScript : QLocale = ... # 0x5a + Guinea : QLocale = ... # 0x5b + Portuguese : QLocale = ... # 0x5b + SharadaScript : QLocale = ... # 0x5b + GuineaBissau : QLocale = ... # 0x5c + Punjabi : QLocale = ... # 0x5c + ShavianScript : QLocale = ... # 0x5c + Guyana : QLocale = ... # 0x5d + Quechua : QLocale = ... # 0x5d + SoraSompengScript : QLocale = ... # 0x5d + CuneiformScript : QLocale = ... # 0x5e + Haiti : QLocale = ... # 0x5e + RhaetoRomance : QLocale = ... # 0x5e + Romansh : QLocale = ... # 0x5e + HeardAndMcDonaldIslands : QLocale = ... # 0x5f + Moldavian : QLocale = ... # 0x5f + Romanian : QLocale = ... # 0x5f + SundaneseScript : QLocale = ... # 0x5f + Honduras : QLocale = ... # 0x60 + Russian : QLocale = ... # 0x60 + SylotiNagriScript : QLocale = ... # 0x60 + HongKong : QLocale = ... # 0x61 + Samoan : QLocale = ... # 0x61 + TagalogScript : QLocale = ... # 0x61 + Hungary : QLocale = ... # 0x62 + Sango : QLocale = ... # 0x62 + TagbanwaScript : QLocale = ... # 0x62 + Iceland : QLocale = ... # 0x63 + Sanskrit : QLocale = ... # 0x63 + TaiLeScript : QLocale = ... # 0x63 + India : QLocale = ... # 0x64 + Serbian : QLocale = ... # 0x64 + SerboCroatian : QLocale = ... # 0x64 + TaiVietScript : QLocale = ... # 0x64 + Indonesia : QLocale = ... # 0x65 + Ossetic : QLocale = ... # 0x65 + TakriScript : QLocale = ... # 0x65 + Iran : QLocale = ... # 0x66 + SouthernSotho : QLocale = ... # 0x66 + UgariticScript : QLocale = ... # 0x66 + BrailleScript : QLocale = ... # 0x67 + Iraq : QLocale = ... # 0x67 + Tswana : QLocale = ... # 0x67 + HiraganaScript : QLocale = ... # 0x68 + Ireland : QLocale = ... # 0x68 + Shona : QLocale = ... # 0x68 + CaucasianAlbanianScript : QLocale = ... # 0x69 + Israel : QLocale = ... # 0x69 + Sindhi : QLocale = ... # 0x69 + BassaVahScript : QLocale = ... # 0x6a + Italy : QLocale = ... # 0x6a + Sinhala : QLocale = ... # 0x6a + DuployanScript : QLocale = ... # 0x6b + Jamaica : QLocale = ... # 0x6b + Swati : QLocale = ... # 0x6b + ElbasanScript : QLocale = ... # 0x6c + Japan : QLocale = ... # 0x6c + Slovak : QLocale = ... # 0x6c + GranthaScript : QLocale = ... # 0x6d + Jordan : QLocale = ... # 0x6d + Slovenian : QLocale = ... # 0x6d + Kazakhstan : QLocale = ... # 0x6e + PahawhHmongScript : QLocale = ... # 0x6e + Somali : QLocale = ... # 0x6e + Kenya : QLocale = ... # 0x6f + KhojkiScript : QLocale = ... # 0x6f + Spanish : QLocale = ... # 0x6f + Kiribati : QLocale = ... # 0x70 + LinearAScript : QLocale = ... # 0x70 + Sundanese : QLocale = ... # 0x70 + DemocraticRepublicOfKorea: QLocale = ... # 0x71 + MahajaniScript : QLocale = ... # 0x71 + NorthKorea : QLocale = ... # 0x71 + Swahili : QLocale = ... # 0x71 + ManichaeanScript : QLocale = ... # 0x72 + RepublicOfKorea : QLocale = ... # 0x72 + SouthKorea : QLocale = ... # 0x72 + Swedish : QLocale = ... # 0x72 + Kuwait : QLocale = ... # 0x73 + MendeKikakuiScript : QLocale = ... # 0x73 + Sardinian : QLocale = ... # 0x73 + Kyrgyzstan : QLocale = ... # 0x74 + ModiScript : QLocale = ... # 0x74 + Tajik : QLocale = ... # 0x74 + Laos : QLocale = ... # 0x75 + MroScript : QLocale = ... # 0x75 + Tamil : QLocale = ... # 0x75 + Latvia : QLocale = ... # 0x76 + OldNorthArabianScript : QLocale = ... # 0x76 + Tatar : QLocale = ... # 0x76 + Lebanon : QLocale = ... # 0x77 + NabataeanScript : QLocale = ... # 0x77 + Telugu : QLocale = ... # 0x77 + Lesotho : QLocale = ... # 0x78 + PalmyreneScript : QLocale = ... # 0x78 + Thai : QLocale = ... # 0x78 + Liberia : QLocale = ... # 0x79 + PauCinHauScript : QLocale = ... # 0x79 + Tibetan : QLocale = ... # 0x79 + Libya : QLocale = ... # 0x7a + OldPermicScript : QLocale = ... # 0x7a + Tigrinya : QLocale = ... # 0x7a + Liechtenstein : QLocale = ... # 0x7b + PsalterPahlaviScript : QLocale = ... # 0x7b + Tongan : QLocale = ... # 0x7b + Lithuania : QLocale = ... # 0x7c + SiddhamScript : QLocale = ... # 0x7c + Tsonga : QLocale = ... # 0x7c + KhudawadiScript : QLocale = ... # 0x7d + Luxembourg : QLocale = ... # 0x7d + Turkish : QLocale = ... # 0x7d + Macau : QLocale = ... # 0x7e + TirhutaScript : QLocale = ... # 0x7e + Turkmen : QLocale = ... # 0x7e + Macedonia : QLocale = ... # 0x7f + Tahitian : QLocale = ... # 0x7f + VarangKshitiScript : QLocale = ... # 0x7f + AhomScript : QLocale = ... # 0x80 + Madagascar : QLocale = ... # 0x80 + Uighur : QLocale = ... # 0x80 + Uigur : QLocale = ... # 0x80 + AnatolianHieroglyphsScript: QLocale = ... # 0x81 + Malawi : QLocale = ... # 0x81 + Ukrainian : QLocale = ... # 0x81 + HatranScript : QLocale = ... # 0x82 + Malaysia : QLocale = ... # 0x82 + Urdu : QLocale = ... # 0x82 + Maldives : QLocale = ... # 0x83 + MultaniScript : QLocale = ... # 0x83 + Uzbek : QLocale = ... # 0x83 + Mali : QLocale = ... # 0x84 + OldHungarianScript : QLocale = ... # 0x84 + Vietnamese : QLocale = ... # 0x84 + Malta : QLocale = ... # 0x85 + SignWritingScript : QLocale = ... # 0x85 + Volapuk : QLocale = ... # 0x85 + AdlamScript : QLocale = ... # 0x86 + MarshallIslands : QLocale = ... # 0x86 + Welsh : QLocale = ... # 0x86 + BhaiksukiScript : QLocale = ... # 0x87 + Martinique : QLocale = ... # 0x87 + Wolof : QLocale = ... # 0x87 + MarchenScript : QLocale = ... # 0x88 + Mauritania : QLocale = ... # 0x88 + Xhosa : QLocale = ... # 0x88 + Mauritius : QLocale = ... # 0x89 + NewaScript : QLocale = ... # 0x89 + Yiddish : QLocale = ... # 0x89 + Mayotte : QLocale = ... # 0x8a + OsageScript : QLocale = ... # 0x8a + Yoruba : QLocale = ... # 0x8a + Mexico : QLocale = ... # 0x8b + TangutScript : QLocale = ... # 0x8b + Zhuang : QLocale = ... # 0x8b + HanWithBopomofoScript : QLocale = ... # 0x8c + Micronesia : QLocale = ... # 0x8c + Zulu : QLocale = ... # 0x8c + JamoScript : QLocale = ... # 0x8d + LastScript : QLocale = ... # 0x8d + Moldova : QLocale = ... # 0x8d + NorwegianNynorsk : QLocale = ... # 0x8d + Bosnian : QLocale = ... # 0x8e + Monaco : QLocale = ... # 0x8e + Divehi : QLocale = ... # 0x8f + Mongolia : QLocale = ... # 0x8f + Manx : QLocale = ... # 0x90 + Montserrat : QLocale = ... # 0x90 + Cornish : QLocale = ... # 0x91 + Morocco : QLocale = ... # 0x91 + Akan : QLocale = ... # 0x92 + Mozambique : QLocale = ... # 0x92 + Twi : QLocale = ... # 0x92 + Konkani : QLocale = ... # 0x93 + Myanmar : QLocale = ... # 0x93 + Ga : QLocale = ... # 0x94 + Namibia : QLocale = ... # 0x94 + Igbo : QLocale = ... # 0x95 + NauruCountry : QLocale = ... # 0x95 + Kamba : QLocale = ... # 0x96 + Nepal : QLocale = ... # 0x96 + Netherlands : QLocale = ... # 0x97 + Syriac : QLocale = ... # 0x97 + Blin : QLocale = ... # 0x98 + CuraSao : QLocale = ... # 0x98 + Geez : QLocale = ... # 0x99 + NewCaledonia : QLocale = ... # 0x99 + Koro : QLocale = ... # 0x9a + NewZealand : QLocale = ... # 0x9a + Nicaragua : QLocale = ... # 0x9b + Sidamo : QLocale = ... # 0x9b + Atsam : QLocale = ... # 0x9c + Niger : QLocale = ... # 0x9c + Nigeria : QLocale = ... # 0x9d + Tigre : QLocale = ... # 0x9d + Jju : QLocale = ... # 0x9e + Niue : QLocale = ... # 0x9e + Friulian : QLocale = ... # 0x9f + NorfolkIsland : QLocale = ... # 0x9f + NorthernMarianaIslands : QLocale = ... # 0xa0 + Venda : QLocale = ... # 0xa0 + Ewe : QLocale = ... # 0xa1 + Norway : QLocale = ... # 0xa1 + Oman : QLocale = ... # 0xa2 + Walamo : QLocale = ... # 0xa2 + Hawaiian : QLocale = ... # 0xa3 + Pakistan : QLocale = ... # 0xa3 + Palau : QLocale = ... # 0xa4 + Tyap : QLocale = ... # 0xa4 + Chewa : QLocale = ... # 0xa5 + Nyanja : QLocale = ... # 0xa5 + PalestinianTerritories : QLocale = ... # 0xa5 + Filipino : QLocale = ... # 0xa6 + Panama : QLocale = ... # 0xa6 + Tagalog : QLocale = ... # 0xa6 + PapuaNewGuinea : QLocale = ... # 0xa7 + SwissGerman : QLocale = ... # 0xa7 + Paraguay : QLocale = ... # 0xa8 + SichuanYi : QLocale = ... # 0xa8 + Kpelle : QLocale = ... # 0xa9 + Peru : QLocale = ... # 0xa9 + LowGerman : QLocale = ... # 0xaa + Philippines : QLocale = ... # 0xaa + Pitcairn : QLocale = ... # 0xab + SouthNdebele : QLocale = ... # 0xab + NorthernSotho : QLocale = ... # 0xac + Poland : QLocale = ... # 0xac + NorthernSami : QLocale = ... # 0xad + Portugal : QLocale = ... # 0xad + PuertoRico : QLocale = ... # 0xae + Taroko : QLocale = ... # 0xae + Gusii : QLocale = ... # 0xaf + Qatar : QLocale = ... # 0xaf + Reunion : QLocale = ... # 0xb0 + Taita : QLocale = ... # 0xb0 + Fulah : QLocale = ... # 0xb1 + Romania : QLocale = ... # 0xb1 + Kikuyu : QLocale = ... # 0xb2 + Russia : QLocale = ... # 0xb2 + RussianFederation : QLocale = ... # 0xb2 + Rwanda : QLocale = ... # 0xb3 + Samburu : QLocale = ... # 0xb3 + SaintKittsAndNevis : QLocale = ... # 0xb4 + Sena : QLocale = ... # 0xb4 + NorthNdebele : QLocale = ... # 0xb5 + SaintLucia : QLocale = ... # 0xb5 + Rombo : QLocale = ... # 0xb6 + SaintVincentAndTheGrenadines: QLocale = ... # 0xb6 + Samoa : QLocale = ... # 0xb7 + Tachelhit : QLocale = ... # 0xb7 + Kabyle : QLocale = ... # 0xb8 + SanMarino : QLocale = ... # 0xb8 + Nyankole : QLocale = ... # 0xb9 + SaoTomeAndPrincipe : QLocale = ... # 0xb9 + Bena : QLocale = ... # 0xba + SaudiArabia : QLocale = ... # 0xba + Senegal : QLocale = ... # 0xbb + Vunjo : QLocale = ... # 0xbb + Bambara : QLocale = ... # 0xbc + Seychelles : QLocale = ... # 0xbc + Embu : QLocale = ... # 0xbd + SierraLeone : QLocale = ... # 0xbd + Cherokee : QLocale = ... # 0xbe + Singapore : QLocale = ... # 0xbe + Morisyen : QLocale = ... # 0xbf + Slovakia : QLocale = ... # 0xbf + Makonde : QLocale = ... # 0xc0 + Slovenia : QLocale = ... # 0xc0 + Langi : QLocale = ... # 0xc1 + SolomonIslands : QLocale = ... # 0xc1 + Ganda : QLocale = ... # 0xc2 + Somalia : QLocale = ... # 0xc2 + Bemba : QLocale = ... # 0xc3 + SouthAfrica : QLocale = ... # 0xc3 + Kabuverdianu : QLocale = ... # 0xc4 + SouthGeorgiaAndTheSouthSandwichIslands: QLocale = ... # 0xc4 + Meru : QLocale = ... # 0xc5 + Spain : QLocale = ... # 0xc5 + Kalenjin : QLocale = ... # 0xc6 + SriLanka : QLocale = ... # 0xc6 + Nama : QLocale = ... # 0xc7 + SaintHelena : QLocale = ... # 0xc7 + Machame : QLocale = ... # 0xc8 + SaintPierreAndMiquelon : QLocale = ... # 0xc8 + Colognian : QLocale = ... # 0xc9 + Sudan : QLocale = ... # 0xc9 + Masai : QLocale = ... # 0xca + Suriname : QLocale = ... # 0xca + Soga : QLocale = ... # 0xcb + SvalbardAndJanMayenIslands: QLocale = ... # 0xcb + Luyia : QLocale = ... # 0xcc + Swaziland : QLocale = ... # 0xcc + Asu : QLocale = ... # 0xcd + Sweden : QLocale = ... # 0xcd + Switzerland : QLocale = ... # 0xce + Teso : QLocale = ... # 0xce + Saho : QLocale = ... # 0xcf + Syria : QLocale = ... # 0xcf + SyrianArabRepublic : QLocale = ... # 0xcf + KoyraChiini : QLocale = ... # 0xd0 + Taiwan : QLocale = ... # 0xd0 + Rwa : QLocale = ... # 0xd1 + Tajikistan : QLocale = ... # 0xd1 + Luo : QLocale = ... # 0xd2 + Tanzania : QLocale = ... # 0xd2 + Chiga : QLocale = ... # 0xd3 + Thailand : QLocale = ... # 0xd3 + CentralMoroccoTamazight : QLocale = ... # 0xd4 + Togo : QLocale = ... # 0xd4 + KoyraboroSenni : QLocale = ... # 0xd5 + Tokelau : QLocale = ... # 0xd5 + TokelauCountry : QLocale = ... # 0xd5 + Shambala : QLocale = ... # 0xd6 + Tonga : QLocale = ... # 0xd6 + Bodo : QLocale = ... # 0xd7 + TrinidadAndTobago : QLocale = ... # 0xd7 + Avaric : QLocale = ... # 0xd8 + Tunisia : QLocale = ... # 0xd8 + Chamorro : QLocale = ... # 0xd9 + Turkey : QLocale = ... # 0xd9 + Chechen : QLocale = ... # 0xda + Turkmenistan : QLocale = ... # 0xda + Church : QLocale = ... # 0xdb + TurksAndCaicosIslands : QLocale = ... # 0xdb + Chuvash : QLocale = ... # 0xdc + Tuvalu : QLocale = ... # 0xdc + TuvaluCountry : QLocale = ... # 0xdc + Cree : QLocale = ... # 0xdd + Uganda : QLocale = ... # 0xdd + Haitian : QLocale = ... # 0xde + Ukraine : QLocale = ... # 0xde + Herero : QLocale = ... # 0xdf + UnitedArabEmirates : QLocale = ... # 0xdf + HiriMotu : QLocale = ... # 0xe0 + UnitedKingdom : QLocale = ... # 0xe0 + Kanuri : QLocale = ... # 0xe1 + UnitedStates : QLocale = ... # 0xe1 + Komi : QLocale = ... # 0xe2 + UnitedStatesMinorOutlyingIslands: QLocale = ... # 0xe2 + Kongo : QLocale = ... # 0xe3 + Uruguay : QLocale = ... # 0xe3 + Kwanyama : QLocale = ... # 0xe4 + Uzbekistan : QLocale = ... # 0xe4 + Limburgish : QLocale = ... # 0xe5 + Vanuatu : QLocale = ... # 0xe5 + LubaKatanga : QLocale = ... # 0xe6 + VaticanCityState : QLocale = ... # 0xe6 + Luxembourgish : QLocale = ... # 0xe7 + Venezuela : QLocale = ... # 0xe7 + Navaho : QLocale = ... # 0xe8 + Vietnam : QLocale = ... # 0xe8 + BritishVirginIslands : QLocale = ... # 0xe9 + Ndonga : QLocale = ... # 0xe9 + Ojibwa : QLocale = ... # 0xea + UnitedStatesVirginIslands: QLocale = ... # 0xea + Pali : QLocale = ... # 0xeb + WallisAndFutunaIslands : QLocale = ... # 0xeb + Walloon : QLocale = ... # 0xec + WesternSahara : QLocale = ... # 0xec + Aghem : QLocale = ... # 0xed + Yemen : QLocale = ... # 0xed + Basaa : QLocale = ... # 0xee + CanaryIslands : QLocale = ... # 0xee + Zambia : QLocale = ... # 0xef + Zarma : QLocale = ... # 0xef + Duala : QLocale = ... # 0xf0 + Zimbabwe : QLocale = ... # 0xf0 + ClippertonIsland : QLocale = ... # 0xf1 + JolaFonyi : QLocale = ... # 0xf1 + Ewondo : QLocale = ... # 0xf2 + Montenegro : QLocale = ... # 0xf2 + Bafia : QLocale = ... # 0xf3 + Serbia : QLocale = ... # 0xf3 + MakhuwaMeetto : QLocale = ... # 0xf4 + SaintBarthelemy : QLocale = ... # 0xf4 + Mundang : QLocale = ... # 0xf5 + SaintMartin : QLocale = ... # 0xf5 + Kwasio : QLocale = ... # 0xf6 + LatinAmerica : QLocale = ... # 0xf6 + LatinAmericaAndTheCaribbean: QLocale = ... # 0xf6 + AscensionIsland : QLocale = ... # 0xf7 + Nuer : QLocale = ... # 0xf7 + AlandIslands : QLocale = ... # 0xf8 + Sakha : QLocale = ... # 0xf8 + DiegoGarcia : QLocale = ... # 0xf9 + Sangu : QLocale = ... # 0xf9 + CeutaAndMelilla : QLocale = ... # 0xfa + CongoSwahili : QLocale = ... # 0xfa + IsleOfMan : QLocale = ... # 0xfb + Tasawaq : QLocale = ... # 0xfb + Jersey : QLocale = ... # 0xfc + Vai : QLocale = ... # 0xfc + TristanDaCunha : QLocale = ... # 0xfd + Walser : QLocale = ... # 0xfd + SouthSudan : QLocale = ... # 0xfe + Yangben : QLocale = ... # 0xfe + Avestan : QLocale = ... # 0xff + Bonaire : QLocale = ... # 0xff + Asturian : QLocale = ... # 0x100 + SintMaarten : QLocale = ... # 0x100 + Kosovo : QLocale = ... # 0x101 + Ngomba : QLocale = ... # 0x101 + EuropeanUnion : QLocale = ... # 0x102 + Kako : QLocale = ... # 0x102 + Meta : QLocale = ... # 0x103 + OutlyingOceania : QLocale = ... # 0x103 + Ngiemboon : QLocale = ... # 0x104 + World : QLocale = ... # 0x104 + Aragonese : QLocale = ... # 0x105 + Europe : QLocale = ... # 0x105 + LastCountry : QLocale = ... # 0x105 + Akkadian : QLocale = ... # 0x106 + AncientEgyptian : QLocale = ... # 0x107 + AncientGreek : QLocale = ... # 0x108 + Aramaic : QLocale = ... # 0x109 + Balinese : QLocale = ... # 0x10a + Bamun : QLocale = ... # 0x10b + BatakToba : QLocale = ... # 0x10c + Buginese : QLocale = ... # 0x10d + Buhid : QLocale = ... # 0x10e + Carian : QLocale = ... # 0x10f + Chakma : QLocale = ... # 0x110 + ClassicalMandaic : QLocale = ... # 0x111 + Coptic : QLocale = ... # 0x112 + Dogri : QLocale = ... # 0x113 + EasternCham : QLocale = ... # 0x114 + EasternKayah : QLocale = ... # 0x115 + Etruscan : QLocale = ... # 0x116 + Gothic : QLocale = ... # 0x117 + Hanunoo : QLocale = ... # 0x118 + Ingush : QLocale = ... # 0x119 + LargeFloweryMiao : QLocale = ... # 0x11a + Lepcha : QLocale = ... # 0x11b + Limbu : QLocale = ... # 0x11c + Lisu : QLocale = ... # 0x11d + Lu : QLocale = ... # 0x11e + Lycian : QLocale = ... # 0x11f + Lydian : QLocale = ... # 0x120 + Mandingo : QLocale = ... # 0x121 + Manipuri : QLocale = ... # 0x122 + Meroitic : QLocale = ... # 0x123 + NorthernThai : QLocale = ... # 0x124 + OldIrish : QLocale = ... # 0x125 + OldNorse : QLocale = ... # 0x126 + OldPersian : QLocale = ... # 0x127 + OldTurkish : QLocale = ... # 0x128 + Pahlavi : QLocale = ... # 0x129 + Parthian : QLocale = ... # 0x12a + Phoenician : QLocale = ... # 0x12b + PrakritLanguage : QLocale = ... # 0x12c + Rejang : QLocale = ... # 0x12d + Sabaean : QLocale = ... # 0x12e + Samaritan : QLocale = ... # 0x12f + Santali : QLocale = ... # 0x130 + Saurashtra : QLocale = ... # 0x131 + Sora : QLocale = ... # 0x132 + Sylheti : QLocale = ... # 0x133 + Tagbanwa : QLocale = ... # 0x134 + TaiDam : QLocale = ... # 0x135 + TaiNua : QLocale = ... # 0x136 + Ugaritic : QLocale = ... # 0x137 + Akoose : QLocale = ... # 0x138 + Lakota : QLocale = ... # 0x139 + StandardMoroccanTamazight: QLocale = ... # 0x13a + Mapuche : QLocale = ... # 0x13b + CentralKurdish : QLocale = ... # 0x13c + LowerSorbian : QLocale = ... # 0x13d + UpperSorbian : QLocale = ... # 0x13e + Kenyang : QLocale = ... # 0x13f + Mohawk : QLocale = ... # 0x140 + Nko : QLocale = ... # 0x141 + Prussian : QLocale = ... # 0x142 + Kiche : QLocale = ... # 0x143 + SouthernSami : QLocale = ... # 0x144 + LuleSami : QLocale = ... # 0x145 + InariSami : QLocale = ... # 0x146 + SkoltSami : QLocale = ... # 0x147 + Warlpiri : QLocale = ... # 0x148 + ManichaeanMiddlePersian : QLocale = ... # 0x149 + Mende : QLocale = ... # 0x14a + AncientNorthArabian : QLocale = ... # 0x14b + LinearA : QLocale = ... # 0x14c + HmongNjua : QLocale = ... # 0x14d + Ho : QLocale = ... # 0x14e + Lezghian : QLocale = ... # 0x14f + Bassa : QLocale = ... # 0x150 + Mono : QLocale = ... # 0x151 + TedimChin : QLocale = ... # 0x152 + Maithili : QLocale = ... # 0x153 + Ahom : QLocale = ... # 0x154 + AmericanSignLanguage : QLocale = ... # 0x155 + ArdhamagadhiPrakrit : QLocale = ... # 0x156 + Bhojpuri : QLocale = ... # 0x157 + HieroglyphicLuwian : QLocale = ... # 0x158 + LiteraryChinese : QLocale = ... # 0x159 + Mazanderani : QLocale = ... # 0x15a + Mru : QLocale = ... # 0x15b + Newari : QLocale = ... # 0x15c + NorthernLuri : QLocale = ... # 0x15d + Palauan : QLocale = ... # 0x15e + Papiamento : QLocale = ... # 0x15f + Saraiki : QLocale = ... # 0x160 + TokelauLanguage : QLocale = ... # 0x161 + TokPisin : QLocale = ... # 0x162 + TuvaluLanguage : QLocale = ... # 0x163 + UncodedLanguages : QLocale = ... # 0x164 + Cantonese : QLocale = ... # 0x165 + Osage : QLocale = ... # 0x166 + Tangut : QLocale = ... # 0x167 + Ido : QLocale = ... # 0x168 + Lojban : QLocale = ... # 0x169 + Sicilian : QLocale = ... # 0x16a + SouthernKurdish : QLocale = ... # 0x16b + WesternBalochi : QLocale = ... # 0x16c + Cebuano : QLocale = ... # 0x16d + Erzya : QLocale = ... # 0x16e + Chickasaw : QLocale = ... # 0x16f + Muscogee : QLocale = ... # 0x170 + Silesian : QLocale = ... # 0x171 + LastLanguage : QLocale = ... # 0x172 + NigerianPidgin : QLocale = ... # 0x172 + + class Country(object): + AnyCountry : QLocale.Country = ... # 0x0 + Afghanistan : QLocale.Country = ... # 0x1 + Albania : QLocale.Country = ... # 0x2 + Algeria : QLocale.Country = ... # 0x3 + AmericanSamoa : QLocale.Country = ... # 0x4 + Andorra : QLocale.Country = ... # 0x5 + Angola : QLocale.Country = ... # 0x6 + Anguilla : QLocale.Country = ... # 0x7 + Antarctica : QLocale.Country = ... # 0x8 + AntiguaAndBarbuda : QLocale.Country = ... # 0x9 + Argentina : QLocale.Country = ... # 0xa + Armenia : QLocale.Country = ... # 0xb + Aruba : QLocale.Country = ... # 0xc + Australia : QLocale.Country = ... # 0xd + Austria : QLocale.Country = ... # 0xe + Azerbaijan : QLocale.Country = ... # 0xf + Bahamas : QLocale.Country = ... # 0x10 + Bahrain : QLocale.Country = ... # 0x11 + Bangladesh : QLocale.Country = ... # 0x12 + Barbados : QLocale.Country = ... # 0x13 + Belarus : QLocale.Country = ... # 0x14 + Belgium : QLocale.Country = ... # 0x15 + Belize : QLocale.Country = ... # 0x16 + Benin : QLocale.Country = ... # 0x17 + Bermuda : QLocale.Country = ... # 0x18 + Bhutan : QLocale.Country = ... # 0x19 + Bolivia : QLocale.Country = ... # 0x1a + BosniaAndHerzegowina : QLocale.Country = ... # 0x1b + Botswana : QLocale.Country = ... # 0x1c + BouvetIsland : QLocale.Country = ... # 0x1d + Brazil : QLocale.Country = ... # 0x1e + BritishIndianOceanTerritory: QLocale.Country = ... # 0x1f + Brunei : QLocale.Country = ... # 0x20 + Bulgaria : QLocale.Country = ... # 0x21 + BurkinaFaso : QLocale.Country = ... # 0x22 + Burundi : QLocale.Country = ... # 0x23 + Cambodia : QLocale.Country = ... # 0x24 + Cameroon : QLocale.Country = ... # 0x25 + Canada : QLocale.Country = ... # 0x26 + CapeVerde : QLocale.Country = ... # 0x27 + CaymanIslands : QLocale.Country = ... # 0x28 + CentralAfricanRepublic : QLocale.Country = ... # 0x29 + Chad : QLocale.Country = ... # 0x2a + Chile : QLocale.Country = ... # 0x2b + China : QLocale.Country = ... # 0x2c + ChristmasIsland : QLocale.Country = ... # 0x2d + CocosIslands : QLocale.Country = ... # 0x2e + Colombia : QLocale.Country = ... # 0x2f + Comoros : QLocale.Country = ... # 0x30 + CongoKinshasa : QLocale.Country = ... # 0x31 + DemocraticRepublicOfCongo: QLocale.Country = ... # 0x31 + CongoBrazzaville : QLocale.Country = ... # 0x32 + PeoplesRepublicOfCongo : QLocale.Country = ... # 0x32 + CookIslands : QLocale.Country = ... # 0x33 + CostaRica : QLocale.Country = ... # 0x34 + IvoryCoast : QLocale.Country = ... # 0x35 + Croatia : QLocale.Country = ... # 0x36 + Cuba : QLocale.Country = ... # 0x37 + Cyprus : QLocale.Country = ... # 0x38 + CzechRepublic : QLocale.Country = ... # 0x39 + Denmark : QLocale.Country = ... # 0x3a + Djibouti : QLocale.Country = ... # 0x3b + Dominica : QLocale.Country = ... # 0x3c + DominicanRepublic : QLocale.Country = ... # 0x3d + EastTimor : QLocale.Country = ... # 0x3e + Ecuador : QLocale.Country = ... # 0x3f + Egypt : QLocale.Country = ... # 0x40 + ElSalvador : QLocale.Country = ... # 0x41 + EquatorialGuinea : QLocale.Country = ... # 0x42 + Eritrea : QLocale.Country = ... # 0x43 + Estonia : QLocale.Country = ... # 0x44 + Ethiopia : QLocale.Country = ... # 0x45 + FalklandIslands : QLocale.Country = ... # 0x46 + FaroeIslands : QLocale.Country = ... # 0x47 + Fiji : QLocale.Country = ... # 0x48 + Finland : QLocale.Country = ... # 0x49 + France : QLocale.Country = ... # 0x4a + Guernsey : QLocale.Country = ... # 0x4b + FrenchGuiana : QLocale.Country = ... # 0x4c + FrenchPolynesia : QLocale.Country = ... # 0x4d + FrenchSouthernTerritories: QLocale.Country = ... # 0x4e + Gabon : QLocale.Country = ... # 0x4f + Gambia : QLocale.Country = ... # 0x50 + Georgia : QLocale.Country = ... # 0x51 + Germany : QLocale.Country = ... # 0x52 + Ghana : QLocale.Country = ... # 0x53 + Gibraltar : QLocale.Country = ... # 0x54 + Greece : QLocale.Country = ... # 0x55 + Greenland : QLocale.Country = ... # 0x56 + Grenada : QLocale.Country = ... # 0x57 + Guadeloupe : QLocale.Country = ... # 0x58 + Guam : QLocale.Country = ... # 0x59 + Guatemala : QLocale.Country = ... # 0x5a + Guinea : QLocale.Country = ... # 0x5b + GuineaBissau : QLocale.Country = ... # 0x5c + Guyana : QLocale.Country = ... # 0x5d + Haiti : QLocale.Country = ... # 0x5e + HeardAndMcDonaldIslands : QLocale.Country = ... # 0x5f + Honduras : QLocale.Country = ... # 0x60 + HongKong : QLocale.Country = ... # 0x61 + Hungary : QLocale.Country = ... # 0x62 + Iceland : QLocale.Country = ... # 0x63 + India : QLocale.Country = ... # 0x64 + Indonesia : QLocale.Country = ... # 0x65 + Iran : QLocale.Country = ... # 0x66 + Iraq : QLocale.Country = ... # 0x67 + Ireland : QLocale.Country = ... # 0x68 + Israel : QLocale.Country = ... # 0x69 + Italy : QLocale.Country = ... # 0x6a + Jamaica : QLocale.Country = ... # 0x6b + Japan : QLocale.Country = ... # 0x6c + Jordan : QLocale.Country = ... # 0x6d + Kazakhstan : QLocale.Country = ... # 0x6e + Kenya : QLocale.Country = ... # 0x6f + Kiribati : QLocale.Country = ... # 0x70 + DemocraticRepublicOfKorea: QLocale.Country = ... # 0x71 + NorthKorea : QLocale.Country = ... # 0x71 + RepublicOfKorea : QLocale.Country = ... # 0x72 + SouthKorea : QLocale.Country = ... # 0x72 + Kuwait : QLocale.Country = ... # 0x73 + Kyrgyzstan : QLocale.Country = ... # 0x74 + Laos : QLocale.Country = ... # 0x75 + Latvia : QLocale.Country = ... # 0x76 + Lebanon : QLocale.Country = ... # 0x77 + Lesotho : QLocale.Country = ... # 0x78 + Liberia : QLocale.Country = ... # 0x79 + Libya : QLocale.Country = ... # 0x7a + Liechtenstein : QLocale.Country = ... # 0x7b + Lithuania : QLocale.Country = ... # 0x7c + Luxembourg : QLocale.Country = ... # 0x7d + Macau : QLocale.Country = ... # 0x7e + Macedonia : QLocale.Country = ... # 0x7f + Madagascar : QLocale.Country = ... # 0x80 + Malawi : QLocale.Country = ... # 0x81 + Malaysia : QLocale.Country = ... # 0x82 + Maldives : QLocale.Country = ... # 0x83 + Mali : QLocale.Country = ... # 0x84 + Malta : QLocale.Country = ... # 0x85 + MarshallIslands : QLocale.Country = ... # 0x86 + Martinique : QLocale.Country = ... # 0x87 + Mauritania : QLocale.Country = ... # 0x88 + Mauritius : QLocale.Country = ... # 0x89 + Mayotte : QLocale.Country = ... # 0x8a + Mexico : QLocale.Country = ... # 0x8b + Micronesia : QLocale.Country = ... # 0x8c + Moldova : QLocale.Country = ... # 0x8d + Monaco : QLocale.Country = ... # 0x8e + Mongolia : QLocale.Country = ... # 0x8f + Montserrat : QLocale.Country = ... # 0x90 + Morocco : QLocale.Country = ... # 0x91 + Mozambique : QLocale.Country = ... # 0x92 + Myanmar : QLocale.Country = ... # 0x93 + Namibia : QLocale.Country = ... # 0x94 + NauruCountry : QLocale.Country = ... # 0x95 + Nepal : QLocale.Country = ... # 0x96 + Netherlands : QLocale.Country = ... # 0x97 + CuraSao : QLocale.Country = ... # 0x98 + NewCaledonia : QLocale.Country = ... # 0x99 + NewZealand : QLocale.Country = ... # 0x9a + Nicaragua : QLocale.Country = ... # 0x9b + Niger : QLocale.Country = ... # 0x9c + Nigeria : QLocale.Country = ... # 0x9d + Niue : QLocale.Country = ... # 0x9e + NorfolkIsland : QLocale.Country = ... # 0x9f + NorthernMarianaIslands : QLocale.Country = ... # 0xa0 + Norway : QLocale.Country = ... # 0xa1 + Oman : QLocale.Country = ... # 0xa2 + Pakistan : QLocale.Country = ... # 0xa3 + Palau : QLocale.Country = ... # 0xa4 + PalestinianTerritories : QLocale.Country = ... # 0xa5 + Panama : QLocale.Country = ... # 0xa6 + PapuaNewGuinea : QLocale.Country = ... # 0xa7 + Paraguay : QLocale.Country = ... # 0xa8 + Peru : QLocale.Country = ... # 0xa9 + Philippines : QLocale.Country = ... # 0xaa + Pitcairn : QLocale.Country = ... # 0xab + Poland : QLocale.Country = ... # 0xac + Portugal : QLocale.Country = ... # 0xad + PuertoRico : QLocale.Country = ... # 0xae + Qatar : QLocale.Country = ... # 0xaf + Reunion : QLocale.Country = ... # 0xb0 + Romania : QLocale.Country = ... # 0xb1 + Russia : QLocale.Country = ... # 0xb2 + RussianFederation : QLocale.Country = ... # 0xb2 + Rwanda : QLocale.Country = ... # 0xb3 + SaintKittsAndNevis : QLocale.Country = ... # 0xb4 + SaintLucia : QLocale.Country = ... # 0xb5 + SaintVincentAndTheGrenadines: QLocale.Country = ... # 0xb6 + Samoa : QLocale.Country = ... # 0xb7 + SanMarino : QLocale.Country = ... # 0xb8 + SaoTomeAndPrincipe : QLocale.Country = ... # 0xb9 + SaudiArabia : QLocale.Country = ... # 0xba + Senegal : QLocale.Country = ... # 0xbb + Seychelles : QLocale.Country = ... # 0xbc + SierraLeone : QLocale.Country = ... # 0xbd + Singapore : QLocale.Country = ... # 0xbe + Slovakia : QLocale.Country = ... # 0xbf + Slovenia : QLocale.Country = ... # 0xc0 + SolomonIslands : QLocale.Country = ... # 0xc1 + Somalia : QLocale.Country = ... # 0xc2 + SouthAfrica : QLocale.Country = ... # 0xc3 + SouthGeorgiaAndTheSouthSandwichIslands: QLocale.Country = ... # 0xc4 + Spain : QLocale.Country = ... # 0xc5 + SriLanka : QLocale.Country = ... # 0xc6 + SaintHelena : QLocale.Country = ... # 0xc7 + SaintPierreAndMiquelon : QLocale.Country = ... # 0xc8 + Sudan : QLocale.Country = ... # 0xc9 + Suriname : QLocale.Country = ... # 0xca + SvalbardAndJanMayenIslands: QLocale.Country = ... # 0xcb + Swaziland : QLocale.Country = ... # 0xcc + Sweden : QLocale.Country = ... # 0xcd + Switzerland : QLocale.Country = ... # 0xce + Syria : QLocale.Country = ... # 0xcf + SyrianArabRepublic : QLocale.Country = ... # 0xcf + Taiwan : QLocale.Country = ... # 0xd0 + Tajikistan : QLocale.Country = ... # 0xd1 + Tanzania : QLocale.Country = ... # 0xd2 + Thailand : QLocale.Country = ... # 0xd3 + Togo : QLocale.Country = ... # 0xd4 + Tokelau : QLocale.Country = ... # 0xd5 + TokelauCountry : QLocale.Country = ... # 0xd5 + Tonga : QLocale.Country = ... # 0xd6 + TrinidadAndTobago : QLocale.Country = ... # 0xd7 + Tunisia : QLocale.Country = ... # 0xd8 + Turkey : QLocale.Country = ... # 0xd9 + Turkmenistan : QLocale.Country = ... # 0xda + TurksAndCaicosIslands : QLocale.Country = ... # 0xdb + Tuvalu : QLocale.Country = ... # 0xdc + TuvaluCountry : QLocale.Country = ... # 0xdc + Uganda : QLocale.Country = ... # 0xdd + Ukraine : QLocale.Country = ... # 0xde + UnitedArabEmirates : QLocale.Country = ... # 0xdf + UnitedKingdom : QLocale.Country = ... # 0xe0 + UnitedStates : QLocale.Country = ... # 0xe1 + UnitedStatesMinorOutlyingIslands: QLocale.Country = ... # 0xe2 + Uruguay : QLocale.Country = ... # 0xe3 + Uzbekistan : QLocale.Country = ... # 0xe4 + Vanuatu : QLocale.Country = ... # 0xe5 + VaticanCityState : QLocale.Country = ... # 0xe6 + Venezuela : QLocale.Country = ... # 0xe7 + Vietnam : QLocale.Country = ... # 0xe8 + BritishVirginIslands : QLocale.Country = ... # 0xe9 + UnitedStatesVirginIslands: QLocale.Country = ... # 0xea + WallisAndFutunaIslands : QLocale.Country = ... # 0xeb + WesternSahara : QLocale.Country = ... # 0xec + Yemen : QLocale.Country = ... # 0xed + CanaryIslands : QLocale.Country = ... # 0xee + Zambia : QLocale.Country = ... # 0xef + Zimbabwe : QLocale.Country = ... # 0xf0 + ClippertonIsland : QLocale.Country = ... # 0xf1 + Montenegro : QLocale.Country = ... # 0xf2 + Serbia : QLocale.Country = ... # 0xf3 + SaintBarthelemy : QLocale.Country = ... # 0xf4 + SaintMartin : QLocale.Country = ... # 0xf5 + LatinAmerica : QLocale.Country = ... # 0xf6 + LatinAmericaAndTheCaribbean: QLocale.Country = ... # 0xf6 + AscensionIsland : QLocale.Country = ... # 0xf7 + AlandIslands : QLocale.Country = ... # 0xf8 + DiegoGarcia : QLocale.Country = ... # 0xf9 + CeutaAndMelilla : QLocale.Country = ... # 0xfa + IsleOfMan : QLocale.Country = ... # 0xfb + Jersey : QLocale.Country = ... # 0xfc + TristanDaCunha : QLocale.Country = ... # 0xfd + SouthSudan : QLocale.Country = ... # 0xfe + Bonaire : QLocale.Country = ... # 0xff + SintMaarten : QLocale.Country = ... # 0x100 + Kosovo : QLocale.Country = ... # 0x101 + EuropeanUnion : QLocale.Country = ... # 0x102 + OutlyingOceania : QLocale.Country = ... # 0x103 + World : QLocale.Country = ... # 0x104 + Europe : QLocale.Country = ... # 0x105 + LastCountry : QLocale.Country = ... # 0x105 + + class CurrencySymbolFormat(object): + CurrencyIsoCode : QLocale.CurrencySymbolFormat = ... # 0x0 + CurrencySymbol : QLocale.CurrencySymbolFormat = ... # 0x1 + CurrencyDisplayName : QLocale.CurrencySymbolFormat = ... # 0x2 + + class DataSizeFormat(object): + DataSizeIecFormat : QLocale.DataSizeFormat = ... # 0x0 + DataSizeBase1000 : QLocale.DataSizeFormat = ... # 0x1 + DataSizeSIQuantifiers : QLocale.DataSizeFormat = ... # 0x2 + DataSizeTraditionalFormat: QLocale.DataSizeFormat = ... # 0x2 + DataSizeSIFormat : QLocale.DataSizeFormat = ... # 0x3 + + class DataSizeFormats(object): ... + + class FloatingPointPrecisionOption(object): + FloatingPointShortest : QLocale.FloatingPointPrecisionOption = ... # -0x80 + + class FormatType(object): + LongFormat : QLocale.FormatType = ... # 0x0 + ShortFormat : QLocale.FormatType = ... # 0x1 + NarrowFormat : QLocale.FormatType = ... # 0x2 + + class Language(object): + AnyLanguage : QLocale.Language = ... # 0x0 + C : QLocale.Language = ... # 0x1 + Abkhazian : QLocale.Language = ... # 0x2 + Afan : QLocale.Language = ... # 0x3 + Oromo : QLocale.Language = ... # 0x3 + Afar : QLocale.Language = ... # 0x4 + Afrikaans : QLocale.Language = ... # 0x5 + Albanian : QLocale.Language = ... # 0x6 + Amharic : QLocale.Language = ... # 0x7 + Arabic : QLocale.Language = ... # 0x8 + Armenian : QLocale.Language = ... # 0x9 + Assamese : QLocale.Language = ... # 0xa + Aymara : QLocale.Language = ... # 0xb + Azerbaijani : QLocale.Language = ... # 0xc + Bashkir : QLocale.Language = ... # 0xd + Basque : QLocale.Language = ... # 0xe + Bengali : QLocale.Language = ... # 0xf + Bhutani : QLocale.Language = ... # 0x10 + Dzongkha : QLocale.Language = ... # 0x10 + Bihari : QLocale.Language = ... # 0x11 + Bislama : QLocale.Language = ... # 0x12 + Breton : QLocale.Language = ... # 0x13 + Bulgarian : QLocale.Language = ... # 0x14 + Burmese : QLocale.Language = ... # 0x15 + Belarusian : QLocale.Language = ... # 0x16 + Byelorussian : QLocale.Language = ... # 0x16 + Cambodian : QLocale.Language = ... # 0x17 + Khmer : QLocale.Language = ... # 0x17 + Catalan : QLocale.Language = ... # 0x18 + Chinese : QLocale.Language = ... # 0x19 + Corsican : QLocale.Language = ... # 0x1a + Croatian : QLocale.Language = ... # 0x1b + Czech : QLocale.Language = ... # 0x1c + Danish : QLocale.Language = ... # 0x1d + Dutch : QLocale.Language = ... # 0x1e + English : QLocale.Language = ... # 0x1f + Esperanto : QLocale.Language = ... # 0x20 + Estonian : QLocale.Language = ... # 0x21 + Faroese : QLocale.Language = ... # 0x22 + Fijian : QLocale.Language = ... # 0x23 + Finnish : QLocale.Language = ... # 0x24 + French : QLocale.Language = ... # 0x25 + Frisian : QLocale.Language = ... # 0x26 + WesternFrisian : QLocale.Language = ... # 0x26 + Gaelic : QLocale.Language = ... # 0x27 + Galician : QLocale.Language = ... # 0x28 + Georgian : QLocale.Language = ... # 0x29 + German : QLocale.Language = ... # 0x2a + Greek : QLocale.Language = ... # 0x2b + Greenlandic : QLocale.Language = ... # 0x2c + Guarani : QLocale.Language = ... # 0x2d + Gujarati : QLocale.Language = ... # 0x2e + Hausa : QLocale.Language = ... # 0x2f + Hebrew : QLocale.Language = ... # 0x30 + Hindi : QLocale.Language = ... # 0x31 + Hungarian : QLocale.Language = ... # 0x32 + Icelandic : QLocale.Language = ... # 0x33 + Indonesian : QLocale.Language = ... # 0x34 + Interlingua : QLocale.Language = ... # 0x35 + Interlingue : QLocale.Language = ... # 0x36 + Inuktitut : QLocale.Language = ... # 0x37 + Inupiak : QLocale.Language = ... # 0x38 + Irish : QLocale.Language = ... # 0x39 + Italian : QLocale.Language = ... # 0x3a + Japanese : QLocale.Language = ... # 0x3b + Javanese : QLocale.Language = ... # 0x3c + Kannada : QLocale.Language = ... # 0x3d + Kashmiri : QLocale.Language = ... # 0x3e + Kazakh : QLocale.Language = ... # 0x3f + Kinyarwanda : QLocale.Language = ... # 0x40 + Kirghiz : QLocale.Language = ... # 0x41 + Korean : QLocale.Language = ... # 0x42 + Kurdish : QLocale.Language = ... # 0x43 + Kurundi : QLocale.Language = ... # 0x44 + Rundi : QLocale.Language = ... # 0x44 + Lao : QLocale.Language = ... # 0x45 + Latin : QLocale.Language = ... # 0x46 + Latvian : QLocale.Language = ... # 0x47 + Lingala : QLocale.Language = ... # 0x48 + Lithuanian : QLocale.Language = ... # 0x49 + Macedonian : QLocale.Language = ... # 0x4a + Malagasy : QLocale.Language = ... # 0x4b + Malay : QLocale.Language = ... # 0x4c + Malayalam : QLocale.Language = ... # 0x4d + Maltese : QLocale.Language = ... # 0x4e + Maori : QLocale.Language = ... # 0x4f + Marathi : QLocale.Language = ... # 0x50 + Marshallese : QLocale.Language = ... # 0x51 + Mongolian : QLocale.Language = ... # 0x52 + NauruLanguage : QLocale.Language = ... # 0x53 + Nepali : QLocale.Language = ... # 0x54 + Norwegian : QLocale.Language = ... # 0x55 + NorwegianBokmal : QLocale.Language = ... # 0x55 + Occitan : QLocale.Language = ... # 0x56 + Oriya : QLocale.Language = ... # 0x57 + Pashto : QLocale.Language = ... # 0x58 + Persian : QLocale.Language = ... # 0x59 + Polish : QLocale.Language = ... # 0x5a + Portuguese : QLocale.Language = ... # 0x5b + Punjabi : QLocale.Language = ... # 0x5c + Quechua : QLocale.Language = ... # 0x5d + RhaetoRomance : QLocale.Language = ... # 0x5e + Romansh : QLocale.Language = ... # 0x5e + Moldavian : QLocale.Language = ... # 0x5f + Romanian : QLocale.Language = ... # 0x5f + Russian : QLocale.Language = ... # 0x60 + Samoan : QLocale.Language = ... # 0x61 + Sango : QLocale.Language = ... # 0x62 + Sanskrit : QLocale.Language = ... # 0x63 + Serbian : QLocale.Language = ... # 0x64 + SerboCroatian : QLocale.Language = ... # 0x64 + Ossetic : QLocale.Language = ... # 0x65 + SouthernSotho : QLocale.Language = ... # 0x66 + Tswana : QLocale.Language = ... # 0x67 + Shona : QLocale.Language = ... # 0x68 + Sindhi : QLocale.Language = ... # 0x69 + Sinhala : QLocale.Language = ... # 0x6a + Swati : QLocale.Language = ... # 0x6b + Slovak : QLocale.Language = ... # 0x6c + Slovenian : QLocale.Language = ... # 0x6d + Somali : QLocale.Language = ... # 0x6e + Spanish : QLocale.Language = ... # 0x6f + Sundanese : QLocale.Language = ... # 0x70 + Swahili : QLocale.Language = ... # 0x71 + Swedish : QLocale.Language = ... # 0x72 + Sardinian : QLocale.Language = ... # 0x73 + Tajik : QLocale.Language = ... # 0x74 + Tamil : QLocale.Language = ... # 0x75 + Tatar : QLocale.Language = ... # 0x76 + Telugu : QLocale.Language = ... # 0x77 + Thai : QLocale.Language = ... # 0x78 + Tibetan : QLocale.Language = ... # 0x79 + Tigrinya : QLocale.Language = ... # 0x7a + Tongan : QLocale.Language = ... # 0x7b + Tsonga : QLocale.Language = ... # 0x7c + Turkish : QLocale.Language = ... # 0x7d + Turkmen : QLocale.Language = ... # 0x7e + Tahitian : QLocale.Language = ... # 0x7f + Uighur : QLocale.Language = ... # 0x80 + Uigur : QLocale.Language = ... # 0x80 + Ukrainian : QLocale.Language = ... # 0x81 + Urdu : QLocale.Language = ... # 0x82 + Uzbek : QLocale.Language = ... # 0x83 + Vietnamese : QLocale.Language = ... # 0x84 + Volapuk : QLocale.Language = ... # 0x85 + Welsh : QLocale.Language = ... # 0x86 + Wolof : QLocale.Language = ... # 0x87 + Xhosa : QLocale.Language = ... # 0x88 + Yiddish : QLocale.Language = ... # 0x89 + Yoruba : QLocale.Language = ... # 0x8a + Zhuang : QLocale.Language = ... # 0x8b + Zulu : QLocale.Language = ... # 0x8c + NorwegianNynorsk : QLocale.Language = ... # 0x8d + Bosnian : QLocale.Language = ... # 0x8e + Divehi : QLocale.Language = ... # 0x8f + Manx : QLocale.Language = ... # 0x90 + Cornish : QLocale.Language = ... # 0x91 + Akan : QLocale.Language = ... # 0x92 + Twi : QLocale.Language = ... # 0x92 + Konkani : QLocale.Language = ... # 0x93 + Ga : QLocale.Language = ... # 0x94 + Igbo : QLocale.Language = ... # 0x95 + Kamba : QLocale.Language = ... # 0x96 + Syriac : QLocale.Language = ... # 0x97 + Blin : QLocale.Language = ... # 0x98 + Geez : QLocale.Language = ... # 0x99 + Koro : QLocale.Language = ... # 0x9a + Sidamo : QLocale.Language = ... # 0x9b + Atsam : QLocale.Language = ... # 0x9c + Tigre : QLocale.Language = ... # 0x9d + Jju : QLocale.Language = ... # 0x9e + Friulian : QLocale.Language = ... # 0x9f + Venda : QLocale.Language = ... # 0xa0 + Ewe : QLocale.Language = ... # 0xa1 + Walamo : QLocale.Language = ... # 0xa2 + Hawaiian : QLocale.Language = ... # 0xa3 + Tyap : QLocale.Language = ... # 0xa4 + Chewa : QLocale.Language = ... # 0xa5 + Nyanja : QLocale.Language = ... # 0xa5 + Filipino : QLocale.Language = ... # 0xa6 + Tagalog : QLocale.Language = ... # 0xa6 + SwissGerman : QLocale.Language = ... # 0xa7 + SichuanYi : QLocale.Language = ... # 0xa8 + Kpelle : QLocale.Language = ... # 0xa9 + LowGerman : QLocale.Language = ... # 0xaa + SouthNdebele : QLocale.Language = ... # 0xab + NorthernSotho : QLocale.Language = ... # 0xac + NorthernSami : QLocale.Language = ... # 0xad + Taroko : QLocale.Language = ... # 0xae + Gusii : QLocale.Language = ... # 0xaf + Taita : QLocale.Language = ... # 0xb0 + Fulah : QLocale.Language = ... # 0xb1 + Kikuyu : QLocale.Language = ... # 0xb2 + Samburu : QLocale.Language = ... # 0xb3 + Sena : QLocale.Language = ... # 0xb4 + NorthNdebele : QLocale.Language = ... # 0xb5 + Rombo : QLocale.Language = ... # 0xb6 + Tachelhit : QLocale.Language = ... # 0xb7 + Kabyle : QLocale.Language = ... # 0xb8 + Nyankole : QLocale.Language = ... # 0xb9 + Bena : QLocale.Language = ... # 0xba + Vunjo : QLocale.Language = ... # 0xbb + Bambara : QLocale.Language = ... # 0xbc + Embu : QLocale.Language = ... # 0xbd + Cherokee : QLocale.Language = ... # 0xbe + Morisyen : QLocale.Language = ... # 0xbf + Makonde : QLocale.Language = ... # 0xc0 + Langi : QLocale.Language = ... # 0xc1 + Ganda : QLocale.Language = ... # 0xc2 + Bemba : QLocale.Language = ... # 0xc3 + Kabuverdianu : QLocale.Language = ... # 0xc4 + Meru : QLocale.Language = ... # 0xc5 + Kalenjin : QLocale.Language = ... # 0xc6 + Nama : QLocale.Language = ... # 0xc7 + Machame : QLocale.Language = ... # 0xc8 + Colognian : QLocale.Language = ... # 0xc9 + Masai : QLocale.Language = ... # 0xca + Soga : QLocale.Language = ... # 0xcb + Luyia : QLocale.Language = ... # 0xcc + Asu : QLocale.Language = ... # 0xcd + Teso : QLocale.Language = ... # 0xce + Saho : QLocale.Language = ... # 0xcf + KoyraChiini : QLocale.Language = ... # 0xd0 + Rwa : QLocale.Language = ... # 0xd1 + Luo : QLocale.Language = ... # 0xd2 + Chiga : QLocale.Language = ... # 0xd3 + CentralMoroccoTamazight : QLocale.Language = ... # 0xd4 + KoyraboroSenni : QLocale.Language = ... # 0xd5 + Shambala : QLocale.Language = ... # 0xd6 + Bodo : QLocale.Language = ... # 0xd7 + Avaric : QLocale.Language = ... # 0xd8 + Chamorro : QLocale.Language = ... # 0xd9 + Chechen : QLocale.Language = ... # 0xda + Church : QLocale.Language = ... # 0xdb + Chuvash : QLocale.Language = ... # 0xdc + Cree : QLocale.Language = ... # 0xdd + Haitian : QLocale.Language = ... # 0xde + Herero : QLocale.Language = ... # 0xdf + HiriMotu : QLocale.Language = ... # 0xe0 + Kanuri : QLocale.Language = ... # 0xe1 + Komi : QLocale.Language = ... # 0xe2 + Kongo : QLocale.Language = ... # 0xe3 + Kwanyama : QLocale.Language = ... # 0xe4 + Limburgish : QLocale.Language = ... # 0xe5 + LubaKatanga : QLocale.Language = ... # 0xe6 + Luxembourgish : QLocale.Language = ... # 0xe7 + Navaho : QLocale.Language = ... # 0xe8 + Ndonga : QLocale.Language = ... # 0xe9 + Ojibwa : QLocale.Language = ... # 0xea + Pali : QLocale.Language = ... # 0xeb + Walloon : QLocale.Language = ... # 0xec + Aghem : QLocale.Language = ... # 0xed + Basaa : QLocale.Language = ... # 0xee + Zarma : QLocale.Language = ... # 0xef + Duala : QLocale.Language = ... # 0xf0 + JolaFonyi : QLocale.Language = ... # 0xf1 + Ewondo : QLocale.Language = ... # 0xf2 + Bafia : QLocale.Language = ... # 0xf3 + MakhuwaMeetto : QLocale.Language = ... # 0xf4 + Mundang : QLocale.Language = ... # 0xf5 + Kwasio : QLocale.Language = ... # 0xf6 + Nuer : QLocale.Language = ... # 0xf7 + Sakha : QLocale.Language = ... # 0xf8 + Sangu : QLocale.Language = ... # 0xf9 + CongoSwahili : QLocale.Language = ... # 0xfa + Tasawaq : QLocale.Language = ... # 0xfb + Vai : QLocale.Language = ... # 0xfc + Walser : QLocale.Language = ... # 0xfd + Yangben : QLocale.Language = ... # 0xfe + Avestan : QLocale.Language = ... # 0xff + Asturian : QLocale.Language = ... # 0x100 + Ngomba : QLocale.Language = ... # 0x101 + Kako : QLocale.Language = ... # 0x102 + Meta : QLocale.Language = ... # 0x103 + Ngiemboon : QLocale.Language = ... # 0x104 + Aragonese : QLocale.Language = ... # 0x105 + Akkadian : QLocale.Language = ... # 0x106 + AncientEgyptian : QLocale.Language = ... # 0x107 + AncientGreek : QLocale.Language = ... # 0x108 + Aramaic : QLocale.Language = ... # 0x109 + Balinese : QLocale.Language = ... # 0x10a + Bamun : QLocale.Language = ... # 0x10b + BatakToba : QLocale.Language = ... # 0x10c + Buginese : QLocale.Language = ... # 0x10d + Buhid : QLocale.Language = ... # 0x10e + Carian : QLocale.Language = ... # 0x10f + Chakma : QLocale.Language = ... # 0x110 + ClassicalMandaic : QLocale.Language = ... # 0x111 + Coptic : QLocale.Language = ... # 0x112 + Dogri : QLocale.Language = ... # 0x113 + EasternCham : QLocale.Language = ... # 0x114 + EasternKayah : QLocale.Language = ... # 0x115 + Etruscan : QLocale.Language = ... # 0x116 + Gothic : QLocale.Language = ... # 0x117 + Hanunoo : QLocale.Language = ... # 0x118 + Ingush : QLocale.Language = ... # 0x119 + LargeFloweryMiao : QLocale.Language = ... # 0x11a + Lepcha : QLocale.Language = ... # 0x11b + Limbu : QLocale.Language = ... # 0x11c + Lisu : QLocale.Language = ... # 0x11d + Lu : QLocale.Language = ... # 0x11e + Lycian : QLocale.Language = ... # 0x11f + Lydian : QLocale.Language = ... # 0x120 + Mandingo : QLocale.Language = ... # 0x121 + Manipuri : QLocale.Language = ... # 0x122 + Meroitic : QLocale.Language = ... # 0x123 + NorthernThai : QLocale.Language = ... # 0x124 + OldIrish : QLocale.Language = ... # 0x125 + OldNorse : QLocale.Language = ... # 0x126 + OldPersian : QLocale.Language = ... # 0x127 + OldTurkish : QLocale.Language = ... # 0x128 + Pahlavi : QLocale.Language = ... # 0x129 + Parthian : QLocale.Language = ... # 0x12a + Phoenician : QLocale.Language = ... # 0x12b + PrakritLanguage : QLocale.Language = ... # 0x12c + Rejang : QLocale.Language = ... # 0x12d + Sabaean : QLocale.Language = ... # 0x12e + Samaritan : QLocale.Language = ... # 0x12f + Santali : QLocale.Language = ... # 0x130 + Saurashtra : QLocale.Language = ... # 0x131 + Sora : QLocale.Language = ... # 0x132 + Sylheti : QLocale.Language = ... # 0x133 + Tagbanwa : QLocale.Language = ... # 0x134 + TaiDam : QLocale.Language = ... # 0x135 + TaiNua : QLocale.Language = ... # 0x136 + Ugaritic : QLocale.Language = ... # 0x137 + Akoose : QLocale.Language = ... # 0x138 + Lakota : QLocale.Language = ... # 0x139 + StandardMoroccanTamazight: QLocale.Language = ... # 0x13a + Mapuche : QLocale.Language = ... # 0x13b + CentralKurdish : QLocale.Language = ... # 0x13c + LowerSorbian : QLocale.Language = ... # 0x13d + UpperSorbian : QLocale.Language = ... # 0x13e + Kenyang : QLocale.Language = ... # 0x13f + Mohawk : QLocale.Language = ... # 0x140 + Nko : QLocale.Language = ... # 0x141 + Prussian : QLocale.Language = ... # 0x142 + Kiche : QLocale.Language = ... # 0x143 + SouthernSami : QLocale.Language = ... # 0x144 + LuleSami : QLocale.Language = ... # 0x145 + InariSami : QLocale.Language = ... # 0x146 + SkoltSami : QLocale.Language = ... # 0x147 + Warlpiri : QLocale.Language = ... # 0x148 + ManichaeanMiddlePersian : QLocale.Language = ... # 0x149 + Mende : QLocale.Language = ... # 0x14a + AncientNorthArabian : QLocale.Language = ... # 0x14b + LinearA : QLocale.Language = ... # 0x14c + HmongNjua : QLocale.Language = ... # 0x14d + Ho : QLocale.Language = ... # 0x14e + Lezghian : QLocale.Language = ... # 0x14f + Bassa : QLocale.Language = ... # 0x150 + Mono : QLocale.Language = ... # 0x151 + TedimChin : QLocale.Language = ... # 0x152 + Maithili : QLocale.Language = ... # 0x153 + Ahom : QLocale.Language = ... # 0x154 + AmericanSignLanguage : QLocale.Language = ... # 0x155 + ArdhamagadhiPrakrit : QLocale.Language = ... # 0x156 + Bhojpuri : QLocale.Language = ... # 0x157 + HieroglyphicLuwian : QLocale.Language = ... # 0x158 + LiteraryChinese : QLocale.Language = ... # 0x159 + Mazanderani : QLocale.Language = ... # 0x15a + Mru : QLocale.Language = ... # 0x15b + Newari : QLocale.Language = ... # 0x15c + NorthernLuri : QLocale.Language = ... # 0x15d + Palauan : QLocale.Language = ... # 0x15e + Papiamento : QLocale.Language = ... # 0x15f + Saraiki : QLocale.Language = ... # 0x160 + TokelauLanguage : QLocale.Language = ... # 0x161 + TokPisin : QLocale.Language = ... # 0x162 + TuvaluLanguage : QLocale.Language = ... # 0x163 + UncodedLanguages : QLocale.Language = ... # 0x164 + Cantonese : QLocale.Language = ... # 0x165 + Osage : QLocale.Language = ... # 0x166 + Tangut : QLocale.Language = ... # 0x167 + Ido : QLocale.Language = ... # 0x168 + Lojban : QLocale.Language = ... # 0x169 + Sicilian : QLocale.Language = ... # 0x16a + SouthernKurdish : QLocale.Language = ... # 0x16b + WesternBalochi : QLocale.Language = ... # 0x16c + Cebuano : QLocale.Language = ... # 0x16d + Erzya : QLocale.Language = ... # 0x16e + Chickasaw : QLocale.Language = ... # 0x16f + Muscogee : QLocale.Language = ... # 0x170 + Silesian : QLocale.Language = ... # 0x171 + LastLanguage : QLocale.Language = ... # 0x172 + NigerianPidgin : QLocale.Language = ... # 0x172 + + class MeasurementSystem(object): + MetricSystem : QLocale.MeasurementSystem = ... # 0x0 + ImperialSystem : QLocale.MeasurementSystem = ... # 0x1 + ImperialUSSystem : QLocale.MeasurementSystem = ... # 0x1 + ImperialUKSystem : QLocale.MeasurementSystem = ... # 0x2 + + class NumberOption(object): + DefaultNumberOptions : QLocale.NumberOption = ... # 0x0 + OmitGroupSeparator : QLocale.NumberOption = ... # 0x1 + RejectGroupSeparator : QLocale.NumberOption = ... # 0x2 + OmitLeadingZeroInExponent: QLocale.NumberOption = ... # 0x4 + RejectLeadingZeroInExponent: QLocale.NumberOption = ... # 0x8 + IncludeTrailingZeroesAfterDot: QLocale.NumberOption = ... # 0x10 + RejectTrailingZeroesAfterDot: QLocale.NumberOption = ... # 0x20 + + class NumberOptions(object): ... + + class QuotationStyle(object): + StandardQuotation : QLocale.QuotationStyle = ... # 0x0 + AlternateQuotation : QLocale.QuotationStyle = ... # 0x1 + + class Script(object): + AnyScript : QLocale.Script = ... # 0x0 + ArabicScript : QLocale.Script = ... # 0x1 + CyrillicScript : QLocale.Script = ... # 0x2 + DeseretScript : QLocale.Script = ... # 0x3 + GurmukhiScript : QLocale.Script = ... # 0x4 + SimplifiedChineseScript : QLocale.Script = ... # 0x5 + SimplifiedHanScript : QLocale.Script = ... # 0x5 + TraditionalChineseScript : QLocale.Script = ... # 0x6 + TraditionalHanScript : QLocale.Script = ... # 0x6 + LatinScript : QLocale.Script = ... # 0x7 + MongolianScript : QLocale.Script = ... # 0x8 + TifinaghScript : QLocale.Script = ... # 0x9 + ArmenianScript : QLocale.Script = ... # 0xa + BengaliScript : QLocale.Script = ... # 0xb + CherokeeScript : QLocale.Script = ... # 0xc + DevanagariScript : QLocale.Script = ... # 0xd + EthiopicScript : QLocale.Script = ... # 0xe + GeorgianScript : QLocale.Script = ... # 0xf + GreekScript : QLocale.Script = ... # 0x10 + GujaratiScript : QLocale.Script = ... # 0x11 + HebrewScript : QLocale.Script = ... # 0x12 + JapaneseScript : QLocale.Script = ... # 0x13 + KhmerScript : QLocale.Script = ... # 0x14 + KannadaScript : QLocale.Script = ... # 0x15 + KoreanScript : QLocale.Script = ... # 0x16 + LaoScript : QLocale.Script = ... # 0x17 + MalayalamScript : QLocale.Script = ... # 0x18 + MyanmarScript : QLocale.Script = ... # 0x19 + OriyaScript : QLocale.Script = ... # 0x1a + TamilScript : QLocale.Script = ... # 0x1b + TeluguScript : QLocale.Script = ... # 0x1c + ThaanaScript : QLocale.Script = ... # 0x1d + ThaiScript : QLocale.Script = ... # 0x1e + TibetanScript : QLocale.Script = ... # 0x1f + SinhalaScript : QLocale.Script = ... # 0x20 + SyriacScript : QLocale.Script = ... # 0x21 + YiScript : QLocale.Script = ... # 0x22 + VaiScript : QLocale.Script = ... # 0x23 + AvestanScript : QLocale.Script = ... # 0x24 + BalineseScript : QLocale.Script = ... # 0x25 + BamumScript : QLocale.Script = ... # 0x26 + BatakScript : QLocale.Script = ... # 0x27 + BopomofoScript : QLocale.Script = ... # 0x28 + BrahmiScript : QLocale.Script = ... # 0x29 + BugineseScript : QLocale.Script = ... # 0x2a + BuhidScript : QLocale.Script = ... # 0x2b + CanadianAboriginalScript : QLocale.Script = ... # 0x2c + CarianScript : QLocale.Script = ... # 0x2d + ChakmaScript : QLocale.Script = ... # 0x2e + ChamScript : QLocale.Script = ... # 0x2f + CopticScript : QLocale.Script = ... # 0x30 + CypriotScript : QLocale.Script = ... # 0x31 + EgyptianHieroglyphsScript: QLocale.Script = ... # 0x32 + FraserScript : QLocale.Script = ... # 0x33 + GlagoliticScript : QLocale.Script = ... # 0x34 + GothicScript : QLocale.Script = ... # 0x35 + HanScript : QLocale.Script = ... # 0x36 + HangulScript : QLocale.Script = ... # 0x37 + HanunooScript : QLocale.Script = ... # 0x38 + ImperialAramaicScript : QLocale.Script = ... # 0x39 + InscriptionalPahlaviScript: QLocale.Script = ... # 0x3a + InscriptionalParthianScript: QLocale.Script = ... # 0x3b + JavaneseScript : QLocale.Script = ... # 0x3c + KaithiScript : QLocale.Script = ... # 0x3d + KatakanaScript : QLocale.Script = ... # 0x3e + KayahLiScript : QLocale.Script = ... # 0x3f + KharoshthiScript : QLocale.Script = ... # 0x40 + LannaScript : QLocale.Script = ... # 0x41 + LepchaScript : QLocale.Script = ... # 0x42 + LimbuScript : QLocale.Script = ... # 0x43 + LinearBScript : QLocale.Script = ... # 0x44 + LycianScript : QLocale.Script = ... # 0x45 + LydianScript : QLocale.Script = ... # 0x46 + MandaeanScript : QLocale.Script = ... # 0x47 + MeiteiMayekScript : QLocale.Script = ... # 0x48 + MeroiticScript : QLocale.Script = ... # 0x49 + MeroiticCursiveScript : QLocale.Script = ... # 0x4a + NkoScript : QLocale.Script = ... # 0x4b + NewTaiLueScript : QLocale.Script = ... # 0x4c + OghamScript : QLocale.Script = ... # 0x4d + OlChikiScript : QLocale.Script = ... # 0x4e + OldItalicScript : QLocale.Script = ... # 0x4f + OldPersianScript : QLocale.Script = ... # 0x50 + OldSouthArabianScript : QLocale.Script = ... # 0x51 + OrkhonScript : QLocale.Script = ... # 0x52 + OsmanyaScript : QLocale.Script = ... # 0x53 + PhagsPaScript : QLocale.Script = ... # 0x54 + PhoenicianScript : QLocale.Script = ... # 0x55 + PollardPhoneticScript : QLocale.Script = ... # 0x56 + RejangScript : QLocale.Script = ... # 0x57 + RunicScript : QLocale.Script = ... # 0x58 + SamaritanScript : QLocale.Script = ... # 0x59 + SaurashtraScript : QLocale.Script = ... # 0x5a + SharadaScript : QLocale.Script = ... # 0x5b + ShavianScript : QLocale.Script = ... # 0x5c + SoraSompengScript : QLocale.Script = ... # 0x5d + CuneiformScript : QLocale.Script = ... # 0x5e + SundaneseScript : QLocale.Script = ... # 0x5f + SylotiNagriScript : QLocale.Script = ... # 0x60 + TagalogScript : QLocale.Script = ... # 0x61 + TagbanwaScript : QLocale.Script = ... # 0x62 + TaiLeScript : QLocale.Script = ... # 0x63 + TaiVietScript : QLocale.Script = ... # 0x64 + TakriScript : QLocale.Script = ... # 0x65 + UgariticScript : QLocale.Script = ... # 0x66 + BrailleScript : QLocale.Script = ... # 0x67 + HiraganaScript : QLocale.Script = ... # 0x68 + CaucasianAlbanianScript : QLocale.Script = ... # 0x69 + BassaVahScript : QLocale.Script = ... # 0x6a + DuployanScript : QLocale.Script = ... # 0x6b + ElbasanScript : QLocale.Script = ... # 0x6c + GranthaScript : QLocale.Script = ... # 0x6d + PahawhHmongScript : QLocale.Script = ... # 0x6e + KhojkiScript : QLocale.Script = ... # 0x6f + LinearAScript : QLocale.Script = ... # 0x70 + MahajaniScript : QLocale.Script = ... # 0x71 + ManichaeanScript : QLocale.Script = ... # 0x72 + MendeKikakuiScript : QLocale.Script = ... # 0x73 + ModiScript : QLocale.Script = ... # 0x74 + MroScript : QLocale.Script = ... # 0x75 + OldNorthArabianScript : QLocale.Script = ... # 0x76 + NabataeanScript : QLocale.Script = ... # 0x77 + PalmyreneScript : QLocale.Script = ... # 0x78 + PauCinHauScript : QLocale.Script = ... # 0x79 + OldPermicScript : QLocale.Script = ... # 0x7a + PsalterPahlaviScript : QLocale.Script = ... # 0x7b + SiddhamScript : QLocale.Script = ... # 0x7c + KhudawadiScript : QLocale.Script = ... # 0x7d + TirhutaScript : QLocale.Script = ... # 0x7e + VarangKshitiScript : QLocale.Script = ... # 0x7f + AhomScript : QLocale.Script = ... # 0x80 + AnatolianHieroglyphsScript: QLocale.Script = ... # 0x81 + HatranScript : QLocale.Script = ... # 0x82 + MultaniScript : QLocale.Script = ... # 0x83 + OldHungarianScript : QLocale.Script = ... # 0x84 + SignWritingScript : QLocale.Script = ... # 0x85 + AdlamScript : QLocale.Script = ... # 0x86 + BhaiksukiScript : QLocale.Script = ... # 0x87 + MarchenScript : QLocale.Script = ... # 0x88 + NewaScript : QLocale.Script = ... # 0x89 + OsageScript : QLocale.Script = ... # 0x8a + TangutScript : QLocale.Script = ... # 0x8b + HanWithBopomofoScript : QLocale.Script = ... # 0x8c + JamoScript : QLocale.Script = ... # 0x8d + LastScript : QLocale.Script = ... # 0x8d + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, language:PySide2.QtCore.QLocale.Language, country:PySide2.QtCore.QLocale.Country=...) -> None: ... + @typing.overload + def __init__(self, language:PySide2.QtCore.QLocale.Language, script:PySide2.QtCore.QLocale.Script, country:PySide2.QtCore.QLocale.Country) -> None: ... + @typing.overload + def __init__(self, name:str) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtCore.QLocale) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def amText(self) -> str: ... + def bcp47Name(self) -> str: ... + @staticmethod + def c() -> PySide2.QtCore.QLocale: ... + def collation(self) -> PySide2.QtCore.QLocale: ... + @staticmethod + def countriesForLanguage(lang:PySide2.QtCore.QLocale.Language) -> typing.List: ... + def country(self) -> PySide2.QtCore.QLocale.Country: ... + @staticmethod + def countryToString(country:PySide2.QtCore.QLocale.Country) -> str: ... + def createSeparatedList(self, strl:typing.Sequence) -> str: ... + def currencySymbol(self, arg__1:PySide2.QtCore.QLocale.CurrencySymbolFormat=...) -> str: ... + def dateFormat(self, format:PySide2.QtCore.QLocale.FormatType=...) -> str: ... + def dateTimeFormat(self, format:PySide2.QtCore.QLocale.FormatType=...) -> str: ... + def dayName(self, arg__1:int, format:PySide2.QtCore.QLocale.FormatType=...) -> str: ... + def decimalPoint(self) -> str: ... + def exponential(self) -> str: ... + def firstDayOfWeek(self) -> PySide2.QtCore.Qt.DayOfWeek: ... + def formattedDataSize(self, bytes:int, precision:int=..., format:PySide2.QtCore.QLocale.DataSizeFormats=...) -> str: ... + def groupSeparator(self) -> str: ... + def language(self) -> PySide2.QtCore.QLocale.Language: ... + @staticmethod + def languageToString(language:PySide2.QtCore.QLocale.Language) -> str: ... + @staticmethod + def matchingLocales(language:PySide2.QtCore.QLocale.Language, script:PySide2.QtCore.QLocale.Script, country:PySide2.QtCore.QLocale.Country) -> typing.List: ... + def measurementSystem(self) -> PySide2.QtCore.QLocale.MeasurementSystem: ... + def monthName(self, arg__1:int, format:PySide2.QtCore.QLocale.FormatType=...) -> str: ... + def name(self) -> str: ... + def nativeCountryName(self) -> str: ... + def nativeLanguageName(self) -> str: ... + def negativeSign(self) -> str: ... + def numberOptions(self) -> PySide2.QtCore.QLocale.NumberOptions: ... + def percent(self) -> str: ... + def pmText(self) -> str: ... + def positiveSign(self) -> str: ... + @typing.overload + def quoteString(self, str:str, style:PySide2.QtCore.QLocale.QuotationStyle=...) -> str: ... + @typing.overload + def quoteString(self, str:str, style:PySide2.QtCore.QLocale.QuotationStyle=...) -> str: ... + def script(self) -> PySide2.QtCore.QLocale.Script: ... + @staticmethod + def scriptToString(script:PySide2.QtCore.QLocale.Script) -> str: ... + @staticmethod + def setDefault(locale:PySide2.QtCore.QLocale) -> None: ... + def setNumberOptions(self, options:PySide2.QtCore.QLocale.NumberOptions) -> None: ... + def standaloneDayName(self, arg__1:int, format:PySide2.QtCore.QLocale.FormatType=...) -> str: ... + def standaloneMonthName(self, arg__1:int, format:PySide2.QtCore.QLocale.FormatType=...) -> str: ... + def swap(self, other:PySide2.QtCore.QLocale) -> None: ... + @staticmethod + def system() -> PySide2.QtCore.QLocale: ... + def textDirection(self) -> PySide2.QtCore.Qt.LayoutDirection: ... + def timeFormat(self, format:PySide2.QtCore.QLocale.FormatType=...) -> str: ... + @typing.overload + def toCurrencyString(self, arg__1:float, symbol:str, precision:int) -> str: ... + @typing.overload + def toCurrencyString(self, arg__1:float, symbol:str=...) -> str: ... + @typing.overload + def toCurrencyString(self, arg__1:int, symbol:str=...) -> str: ... + @typing.overload + def toCurrencyString(self, arg__1:int, symbol:str=...) -> str: ... + @typing.overload + def toCurrencyString(self, arg__1:int, symbol:str=...) -> str: ... + @typing.overload + def toCurrencyString(self, arg__1:int, symbol:str=...) -> str: ... + @typing.overload + def toCurrencyString(self, arg__1:int, symbol:str=...) -> str: ... + @typing.overload + def toCurrencyString(self, arg__1:int, symbol:str=...) -> str: ... + @typing.overload + def toCurrencyString(self, i:float, symbol:str, precision:int) -> str: ... + @typing.overload + def toCurrencyString(self, i:float, symbol:str=...) -> str: ... + @typing.overload + def toDate(self, string:str, format:PySide2.QtCore.QLocale.FormatType, cal:PySide2.QtCore.QCalendar) -> PySide2.QtCore.QDate: ... + @typing.overload + def toDate(self, string:str, format:PySide2.QtCore.QLocale.FormatType=...) -> PySide2.QtCore.QDate: ... + @typing.overload + def toDate(self, string:str, format:str) -> PySide2.QtCore.QDate: ... + @typing.overload + def toDate(self, string:str, format:str, cal:PySide2.QtCore.QCalendar) -> PySide2.QtCore.QDate: ... + @typing.overload + def toDateTime(self, string:str, format:PySide2.QtCore.QLocale.FormatType, cal:PySide2.QtCore.QCalendar) -> PySide2.QtCore.QDateTime: ... + @typing.overload + def toDateTime(self, string:str, format:PySide2.QtCore.QLocale.FormatType=...) -> PySide2.QtCore.QDateTime: ... + @typing.overload + def toDateTime(self, string:str, format:str) -> PySide2.QtCore.QDateTime: ... + @typing.overload + def toDateTime(self, string:str, format:str, cal:PySide2.QtCore.QCalendar) -> PySide2.QtCore.QDateTime: ... + def toDouble(self, s:str) -> typing.Tuple: ... + def toFloat(self, s:str) -> typing.Tuple: ... + def toInt(self, s:str) -> typing.Tuple: ... + @typing.overload + def toLong(self, s:str) -> typing.Tuple: ... + @typing.overload + def toLong(self, s:str) -> typing.Tuple: ... + def toLongLong(self, s:str) -> typing.Tuple: ... + def toLower(self, str:str) -> str: ... + def toShort(self, s:str) -> typing.Tuple: ... + @typing.overload + def toString(self, date:PySide2.QtCore.QDate, format:PySide2.QtCore.QLocale.FormatType, cal:PySide2.QtCore.QCalendar) -> str: ... + @typing.overload + def toString(self, date:PySide2.QtCore.QDate, format:PySide2.QtCore.QLocale.FormatType=...) -> str: ... + @typing.overload + def toString(self, date:PySide2.QtCore.QDate, formatStr:str) -> str: ... + @typing.overload + def toString(self, dateTime:PySide2.QtCore.QDateTime, format:PySide2.QtCore.QLocale.FormatType, cal:PySide2.QtCore.QCalendar) -> str: ... + @typing.overload + def toString(self, dateTime:PySide2.QtCore.QDateTime, format:PySide2.QtCore.QLocale.FormatType=...) -> str: ... + @typing.overload + def toString(self, dateTime:PySide2.QtCore.QDateTime, format:str) -> str: ... + @typing.overload + def toString(self, i:float, f:int=..., prec:int=...) -> str: ... + @typing.overload + def toString(self, i:float, f:int=..., prec:int=...) -> str: ... + @typing.overload + def toString(self, i:int) -> str: ... + @typing.overload + def toString(self, i:int) -> str: ... + @typing.overload + def toString(self, i:int) -> str: ... + @typing.overload + def toString(self, i:int) -> str: ... + @typing.overload + def toString(self, i:int) -> str: ... + @typing.overload + def toString(self, time:PySide2.QtCore.QTime, format:PySide2.QtCore.QLocale.FormatType=...) -> str: ... + @typing.overload + def toString(self, time:PySide2.QtCore.QTime, formatStr:str) -> str: ... + @typing.overload + def toTime(self, string:str, format:PySide2.QtCore.QLocale.FormatType, cal:PySide2.QtCore.QCalendar) -> PySide2.QtCore.QTime: ... + @typing.overload + def toTime(self, string:str, format:PySide2.QtCore.QLocale.FormatType=...) -> PySide2.QtCore.QTime: ... + @typing.overload + def toTime(self, string:str, format:str) -> PySide2.QtCore.QTime: ... + @typing.overload + def toTime(self, string:str, format:str, cal:PySide2.QtCore.QCalendar) -> PySide2.QtCore.QTime: ... + def toUInt(self, s:str) -> typing.Tuple: ... + @typing.overload + def toULong(self, s:str) -> typing.Tuple: ... + @typing.overload + def toULong(self, s:str) -> typing.Tuple: ... + def toULongLong(self, s:str) -> typing.Tuple: ... + def toUShort(self, s:str) -> typing.Tuple: ... + def toUpper(self, str:str) -> str: ... + def uiLanguages(self) -> typing.List: ... + def weekdays(self) -> typing.List: ... + def zeroDigit(self) -> str: ... + + +class QLockFile(Shiboken.Object): + NoError : QLockFile = ... # 0x0 + LockFailedError : QLockFile = ... # 0x1 + PermissionError : QLockFile = ... # 0x2 + UnknownError : QLockFile = ... # 0x3 + + class LockError(object): + NoError : QLockFile.LockError = ... # 0x0 + LockFailedError : QLockFile.LockError = ... # 0x1 + PermissionError : QLockFile.LockError = ... # 0x2 + UnknownError : QLockFile.LockError = ... # 0x3 + + def __init__(self, fileName:str) -> None: ... + + def error(self) -> PySide2.QtCore.QLockFile.LockError: ... + def getLockInfo(self) -> typing.Tuple: ... + def isLocked(self) -> bool: ... + def lock(self) -> bool: ... + def removeStaleLockFile(self) -> bool: ... + def setStaleLockTime(self, arg__1:int) -> None: ... + def staleLockTime(self) -> int: ... + def tryLock(self, timeout:int=...) -> bool: ... + def unlock(self) -> None: ... + + +class QMargins(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QMargins:PySide2.QtCore.QMargins) -> None: ... + @typing.overload + def __init__(self, left:int, top:int, right:int, bottom:int) -> None: ... + + @typing.overload + def __add__(self, lhs:int) -> PySide2.QtCore.QMargins: ... + @typing.overload + def __add__(self, m2:PySide2.QtCore.QMargins) -> PySide2.QtCore.QMargins: ... + @typing.overload + def __add__(self, rhs:int) -> PySide2.QtCore.QMargins: ... + @staticmethod + def __copy__() -> None: ... + @typing.overload + def __iadd__(self, arg__1:int) -> PySide2.QtCore.QMargins: ... + @typing.overload + def __iadd__(self, margins:PySide2.QtCore.QMargins) -> PySide2.QtCore.QMargins: ... + @typing.overload + def __imul__(self, arg__1:int) -> PySide2.QtCore.QMargins: ... + @typing.overload + def __imul__(self, arg__1:float) -> PySide2.QtCore.QMargins: ... + @typing.overload + def __isub__(self, arg__1:int) -> PySide2.QtCore.QMargins: ... + @typing.overload + def __isub__(self, margins:PySide2.QtCore.QMargins) -> PySide2.QtCore.QMargins: ... + @typing.overload + def __mul__(self, factor:int) -> PySide2.QtCore.QMargins: ... + @typing.overload + def __mul__(self, factor:float) -> PySide2.QtCore.QMargins: ... + def __neg__(self) -> PySide2.QtCore.QMargins: ... + def __pos__(self) -> PySide2.QtCore.QMargins: ... + @typing.overload + def __sub__(self, m2:PySide2.QtCore.QMargins) -> PySide2.QtCore.QMargins: ... + @typing.overload + def __sub__(self, rhs:int) -> PySide2.QtCore.QMargins: ... + def bottom(self) -> int: ... + def isNull(self) -> bool: ... + def left(self) -> int: ... + def right(self) -> int: ... + def setBottom(self, bottom:int) -> None: ... + def setLeft(self, left:int) -> None: ... + def setRight(self, right:int) -> None: ... + def setTop(self, top:int) -> None: ... + def top(self) -> int: ... + + +class QMarginsF(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QMarginsF:PySide2.QtCore.QMarginsF) -> None: ... + @typing.overload + def __init__(self, left:float, top:float, right:float, bottom:float) -> None: ... + @typing.overload + def __init__(self, margins:PySide2.QtCore.QMargins) -> None: ... + + @typing.overload + def __add__(self, lhs:float) -> PySide2.QtCore.QMarginsF: ... + @typing.overload + def __add__(self, rhs:PySide2.QtCore.QMarginsF) -> PySide2.QtCore.QMarginsF: ... + @typing.overload + def __add__(self, rhs:float) -> PySide2.QtCore.QMarginsF: ... + @staticmethod + def __copy__() -> None: ... + @typing.overload + def __iadd__(self, addend:float) -> PySide2.QtCore.QMarginsF: ... + @typing.overload + def __iadd__(self, margins:PySide2.QtCore.QMarginsF) -> PySide2.QtCore.QMarginsF: ... + def __imul__(self, factor:float) -> PySide2.QtCore.QMarginsF: ... + @typing.overload + def __isub__(self, margins:PySide2.QtCore.QMarginsF) -> PySide2.QtCore.QMarginsF: ... + @typing.overload + def __isub__(self, subtrahend:float) -> PySide2.QtCore.QMarginsF: ... + @typing.overload + def __mul__(self, lhs:float) -> PySide2.QtCore.QMarginsF: ... + @typing.overload + def __mul__(self, rhs:float) -> PySide2.QtCore.QMarginsF: ... + def __neg__(self) -> PySide2.QtCore.QMarginsF: ... + def __pos__(self) -> PySide2.QtCore.QMarginsF: ... + @typing.overload + def __sub__(self, rhs:PySide2.QtCore.QMarginsF) -> PySide2.QtCore.QMarginsF: ... + @typing.overload + def __sub__(self, rhs:float) -> PySide2.QtCore.QMarginsF: ... + def bottom(self) -> float: ... + def isNull(self) -> bool: ... + def left(self) -> float: ... + def right(self) -> float: ... + def setBottom(self, bottom:float) -> None: ... + def setLeft(self, left:float) -> None: ... + def setRight(self, right:float) -> None: ... + def setTop(self, top:float) -> None: ... + def toMargins(self) -> PySide2.QtCore.QMargins: ... + def top(self) -> float: ... + + +class QMessageAuthenticationCode(Shiboken.Object): + + def __init__(self, method:PySide2.QtCore.QCryptographicHash.Algorithm, key:PySide2.QtCore.QByteArray=...) -> None: ... + + @typing.overload + def addData(self, data:PySide2.QtCore.QByteArray) -> None: ... + @typing.overload + def addData(self, data:bytes, length:int) -> None: ... + @typing.overload + def addData(self, device:PySide2.QtCore.QIODevice) -> bool: ... + @staticmethod + def hash(message:PySide2.QtCore.QByteArray, key:PySide2.QtCore.QByteArray, method:PySide2.QtCore.QCryptographicHash.Algorithm) -> PySide2.QtCore.QByteArray: ... + def reset(self) -> None: ... + def result(self) -> PySide2.QtCore.QByteArray: ... + def setKey(self, key:PySide2.QtCore.QByteArray) -> None: ... + + +class QMessageLogContext(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, fileName:bytes, lineNumber:int, functionName:bytes, categoryName:bytes) -> None: ... + + +class QMetaClassInfo(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QMetaClassInfo:PySide2.QtCore.QMetaClassInfo) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def name(self) -> bytes: ... + def value(self) -> bytes: ... + + +class QMetaEnum(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QMetaEnum:PySide2.QtCore.QMetaEnum) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def enumName(self) -> bytes: ... + def isFlag(self) -> bool: ... + def isScoped(self) -> bool: ... + def isValid(self) -> bool: ... + def key(self, index:int) -> bytes: ... + def keyCount(self) -> int: ... + def keyToValue(self, key:bytes) -> typing.Tuple: ... + def keysToValue(self, keys:bytes) -> typing.Tuple: ... + def name(self) -> bytes: ... + def scope(self) -> bytes: ... + def value(self, index:int) -> int: ... + def valueToKey(self, value:int) -> bytes: ... + def valueToKeys(self, value:int) -> PySide2.QtCore.QByteArray: ... + + +class QMetaMethod(Shiboken.Object): + Method : QMetaMethod = ... # 0x0 + Private : QMetaMethod = ... # 0x0 + Protected : QMetaMethod = ... # 0x1 + Signal : QMetaMethod = ... # 0x1 + Public : QMetaMethod = ... # 0x2 + Slot : QMetaMethod = ... # 0x2 + Constructor : QMetaMethod = ... # 0x3 + + class Access(object): + Private : QMetaMethod.Access = ... # 0x0 + Protected : QMetaMethod.Access = ... # 0x1 + Public : QMetaMethod.Access = ... # 0x2 + + class MethodType(object): + Method : QMetaMethod.MethodType = ... # 0x0 + Signal : QMetaMethod.MethodType = ... # 0x1 + Slot : QMetaMethod.MethodType = ... # 0x2 + Constructor : QMetaMethod.MethodType = ... # 0x3 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QMetaMethod:PySide2.QtCore.QMetaMethod) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def access(self) -> PySide2.QtCore.QMetaMethod.Access: ... + def enclosingMetaObject(self) -> PySide2.QtCore.QMetaObject: ... + @typing.overload + def invoke(self, object:PySide2.QtCore.QObject, connectionType:PySide2.QtCore.Qt.ConnectionType, returnValue:PySide2.QtCore.QGenericReturnArgument, val0:PySide2.QtCore.QGenericArgument=..., val1:PySide2.QtCore.QGenericArgument=..., val2:PySide2.QtCore.QGenericArgument=..., val3:PySide2.QtCore.QGenericArgument=..., val4:PySide2.QtCore.QGenericArgument=..., val5:PySide2.QtCore.QGenericArgument=..., val6:PySide2.QtCore.QGenericArgument=..., val7:PySide2.QtCore.QGenericArgument=..., val8:PySide2.QtCore.QGenericArgument=..., val9:PySide2.QtCore.QGenericArgument=...) -> bool: ... + @typing.overload + def invoke(self, object:PySide2.QtCore.QObject, connectionType:PySide2.QtCore.Qt.ConnectionType, val0:PySide2.QtCore.QGenericArgument=..., val1:PySide2.QtCore.QGenericArgument=..., val2:PySide2.QtCore.QGenericArgument=..., val3:PySide2.QtCore.QGenericArgument=..., val4:PySide2.QtCore.QGenericArgument=..., val5:PySide2.QtCore.QGenericArgument=..., val6:PySide2.QtCore.QGenericArgument=..., val7:PySide2.QtCore.QGenericArgument=..., val8:PySide2.QtCore.QGenericArgument=..., val9:PySide2.QtCore.QGenericArgument=...) -> bool: ... + @typing.overload + def invoke(self, object:PySide2.QtCore.QObject, returnValue:PySide2.QtCore.QGenericReturnArgument, val0:PySide2.QtCore.QGenericArgument=..., val1:PySide2.QtCore.QGenericArgument=..., val2:PySide2.QtCore.QGenericArgument=..., val3:PySide2.QtCore.QGenericArgument=..., val4:PySide2.QtCore.QGenericArgument=..., val5:PySide2.QtCore.QGenericArgument=..., val6:PySide2.QtCore.QGenericArgument=..., val7:PySide2.QtCore.QGenericArgument=..., val8:PySide2.QtCore.QGenericArgument=..., val9:PySide2.QtCore.QGenericArgument=...) -> bool: ... + @typing.overload + def invoke(self, object:PySide2.QtCore.QObject, val0:PySide2.QtCore.QGenericArgument=..., val1:PySide2.QtCore.QGenericArgument=..., val2:PySide2.QtCore.QGenericArgument=..., val3:PySide2.QtCore.QGenericArgument=..., val4:PySide2.QtCore.QGenericArgument=..., val5:PySide2.QtCore.QGenericArgument=..., val6:PySide2.QtCore.QGenericArgument=..., val7:PySide2.QtCore.QGenericArgument=..., val8:PySide2.QtCore.QGenericArgument=..., val9:PySide2.QtCore.QGenericArgument=...) -> bool: ... + @typing.overload + def invokeOnGadget(self, gadget:int, returnValue:PySide2.QtCore.QGenericReturnArgument, val0:PySide2.QtCore.QGenericArgument=..., val1:PySide2.QtCore.QGenericArgument=..., val2:PySide2.QtCore.QGenericArgument=..., val3:PySide2.QtCore.QGenericArgument=..., val4:PySide2.QtCore.QGenericArgument=..., val5:PySide2.QtCore.QGenericArgument=..., val6:PySide2.QtCore.QGenericArgument=..., val7:PySide2.QtCore.QGenericArgument=..., val8:PySide2.QtCore.QGenericArgument=..., val9:PySide2.QtCore.QGenericArgument=...) -> bool: ... + @typing.overload + def invokeOnGadget(self, gadget:int, val0:PySide2.QtCore.QGenericArgument=..., val1:PySide2.QtCore.QGenericArgument=..., val2:PySide2.QtCore.QGenericArgument=..., val3:PySide2.QtCore.QGenericArgument=..., val4:PySide2.QtCore.QGenericArgument=..., val5:PySide2.QtCore.QGenericArgument=..., val6:PySide2.QtCore.QGenericArgument=..., val7:PySide2.QtCore.QGenericArgument=..., val8:PySide2.QtCore.QGenericArgument=..., val9:PySide2.QtCore.QGenericArgument=...) -> bool: ... + def isValid(self) -> bool: ... + def methodIndex(self) -> int: ... + def methodSignature(self) -> PySide2.QtCore.QByteArray: ... + def methodType(self) -> PySide2.QtCore.QMetaMethod.MethodType: ... + def name(self) -> PySide2.QtCore.QByteArray: ... + def parameterCount(self) -> int: ... + def parameterNames(self) -> typing.List: ... + def parameterType(self, index:int) -> int: ... + def parameterTypes(self) -> typing.List: ... + def returnType(self) -> int: ... + def revision(self) -> int: ... + def tag(self) -> bytes: ... + def typeName(self) -> bytes: ... + + +class QMetaObject(Shiboken.Object): + InvokeMetaMethod : QMetaObject = ... # 0x0 + ReadProperty : QMetaObject = ... # 0x1 + WriteProperty : QMetaObject = ... # 0x2 + ResetProperty : QMetaObject = ... # 0x3 + QueryPropertyDesignable : QMetaObject = ... # 0x4 + QueryPropertyScriptable : QMetaObject = ... # 0x5 + QueryPropertyStored : QMetaObject = ... # 0x6 + QueryPropertyEditable : QMetaObject = ... # 0x7 + QueryPropertyUser : QMetaObject = ... # 0x8 + CreateInstance : QMetaObject = ... # 0x9 + IndexOfMethod : QMetaObject = ... # 0xa + RegisterPropertyMetaType : QMetaObject = ... # 0xb + RegisterMethodArgumentMetaType: QMetaObject = ... # 0xc + + class Call(object): + InvokeMetaMethod : QMetaObject.Call = ... # 0x0 + ReadProperty : QMetaObject.Call = ... # 0x1 + WriteProperty : QMetaObject.Call = ... # 0x2 + ResetProperty : QMetaObject.Call = ... # 0x3 + QueryPropertyDesignable : QMetaObject.Call = ... # 0x4 + QueryPropertyScriptable : QMetaObject.Call = ... # 0x5 + QueryPropertyStored : QMetaObject.Call = ... # 0x6 + QueryPropertyEditable : QMetaObject.Call = ... # 0x7 + QueryPropertyUser : QMetaObject.Call = ... # 0x8 + CreateInstance : QMetaObject.Call = ... # 0x9 + IndexOfMethod : QMetaObject.Call = ... # 0xa + RegisterPropertyMetaType : QMetaObject.Call = ... # 0xb + RegisterMethodArgumentMetaType: QMetaObject.Call = ... # 0xc + + class Connection(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtCore.QMetaObject.Connection) -> None: ... + + + def __init__(self) -> None: ... + + def cast(self, obj:PySide2.QtCore.QObject) -> PySide2.QtCore.QObject: ... + @typing.overload + @staticmethod + def checkConnectArgs(signal:PySide2.QtCore.QMetaMethod, method:PySide2.QtCore.QMetaMethod) -> bool: ... + @typing.overload + @staticmethod + def checkConnectArgs(signal:bytes, method:bytes) -> bool: ... + def classInfo(self, index:int) -> PySide2.QtCore.QMetaClassInfo: ... + def classInfoCount(self) -> int: ... + def classInfoOffset(self) -> int: ... + def className(self) -> bytes: ... + @staticmethod + def connectSlotsByName(o:PySide2.QtCore.QObject) -> None: ... + def constructor(self, index:int) -> PySide2.QtCore.QMetaMethod: ... + def constructorCount(self) -> int: ... + @staticmethod + def disconnect(sender:PySide2.QtCore.QObject, signal_index:int, receiver:PySide2.QtCore.QObject, method_index:int) -> bool: ... + @staticmethod + def disconnectOne(sender:PySide2.QtCore.QObject, signal_index:int, receiver:PySide2.QtCore.QObject, method_index:int) -> bool: ... + def enumerator(self, index:int) -> PySide2.QtCore.QMetaEnum: ... + def enumeratorCount(self) -> int: ... + def enumeratorOffset(self) -> int: ... + def indexOfClassInfo(self, name:bytes) -> int: ... + def indexOfConstructor(self, constructor:bytes) -> int: ... + def indexOfEnumerator(self, name:bytes) -> int: ... + def indexOfMethod(self, method:bytes) -> int: ... + def indexOfProperty(self, name:bytes) -> int: ... + def indexOfSignal(self, signal:bytes) -> int: ... + def indexOfSlot(self, slot:bytes) -> int: ... + def inherits(self, metaObject:PySide2.QtCore.QMetaObject) -> bool: ... + @typing.overload + @staticmethod + def invokeMethod(obj:PySide2.QtCore.QObject, member:bytes, arg__3:PySide2.QtCore.Qt.ConnectionType, ret:PySide2.QtCore.QGenericReturnArgument, val0:PySide2.QtCore.QGenericArgument=..., val1:PySide2.QtCore.QGenericArgument=..., val2:PySide2.QtCore.QGenericArgument=..., val3:PySide2.QtCore.QGenericArgument=..., val4:PySide2.QtCore.QGenericArgument=..., val5:PySide2.QtCore.QGenericArgument=..., val6:PySide2.QtCore.QGenericArgument=..., val7:PySide2.QtCore.QGenericArgument=..., val8:PySide2.QtCore.QGenericArgument=..., val9:PySide2.QtCore.QGenericArgument=...) -> bool: ... + @typing.overload + @staticmethod + def invokeMethod(obj:PySide2.QtCore.QObject, member:bytes, ret:PySide2.QtCore.QGenericReturnArgument, val0:PySide2.QtCore.QGenericArgument=..., val1:PySide2.QtCore.QGenericArgument=..., val2:PySide2.QtCore.QGenericArgument=..., val3:PySide2.QtCore.QGenericArgument=..., val4:PySide2.QtCore.QGenericArgument=..., val5:PySide2.QtCore.QGenericArgument=..., val6:PySide2.QtCore.QGenericArgument=..., val7:PySide2.QtCore.QGenericArgument=..., val8:PySide2.QtCore.QGenericArgument=..., val9:PySide2.QtCore.QGenericArgument=...) -> bool: ... + @typing.overload + @staticmethod + def invokeMethod(obj:PySide2.QtCore.QObject, member:bytes, type:PySide2.QtCore.Qt.ConnectionType, val0:PySide2.QtCore.QGenericArgument=..., val1:PySide2.QtCore.QGenericArgument=..., val2:PySide2.QtCore.QGenericArgument=..., val3:PySide2.QtCore.QGenericArgument=..., val4:PySide2.QtCore.QGenericArgument=..., val5:PySide2.QtCore.QGenericArgument=..., val6:PySide2.QtCore.QGenericArgument=..., val7:PySide2.QtCore.QGenericArgument=..., val8:PySide2.QtCore.QGenericArgument=..., val9:PySide2.QtCore.QGenericArgument=...) -> bool: ... + @typing.overload + @staticmethod + def invokeMethod(obj:PySide2.QtCore.QObject, member:bytes, val0:PySide2.QtCore.QGenericArgument=..., val1:PySide2.QtCore.QGenericArgument=..., val2:PySide2.QtCore.QGenericArgument=..., val3:PySide2.QtCore.QGenericArgument=..., val4:PySide2.QtCore.QGenericArgument=..., val5:PySide2.QtCore.QGenericArgument=..., val6:PySide2.QtCore.QGenericArgument=..., val7:PySide2.QtCore.QGenericArgument=..., val8:PySide2.QtCore.QGenericArgument=..., val9:PySide2.QtCore.QGenericArgument=...) -> bool: ... + def method(self, index:int) -> PySide2.QtCore.QMetaMethod: ... + def methodCount(self) -> int: ... + def methodOffset(self) -> int: ... + def newInstance(self, val0:PySide2.QtCore.QGenericArgument=..., val1:PySide2.QtCore.QGenericArgument=..., val2:PySide2.QtCore.QGenericArgument=..., val3:PySide2.QtCore.QGenericArgument=..., val4:PySide2.QtCore.QGenericArgument=..., val5:PySide2.QtCore.QGenericArgument=..., val6:PySide2.QtCore.QGenericArgument=..., val7:PySide2.QtCore.QGenericArgument=..., val8:PySide2.QtCore.QGenericArgument=..., val9:PySide2.QtCore.QGenericArgument=...) -> PySide2.QtCore.QObject: ... + @staticmethod + def normalizedSignature(method:bytes) -> PySide2.QtCore.QByteArray: ... + @staticmethod + def normalizedType(type:bytes) -> PySide2.QtCore.QByteArray: ... + def property(self, index:int) -> PySide2.QtCore.QMetaProperty: ... + def propertyCount(self) -> int: ... + def propertyOffset(self) -> int: ... + def superClass(self) -> PySide2.QtCore.QMetaObject: ... + def userProperty(self) -> PySide2.QtCore.QMetaProperty: ... + + +class QMetaProperty(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QMetaProperty:PySide2.QtCore.QMetaProperty) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def enumerator(self) -> PySide2.QtCore.QMetaEnum: ... + def hasNotifySignal(self) -> bool: ... + def hasStdCppSet(self) -> bool: ... + def isConstant(self) -> bool: ... + def isDesignable(self, obj:typing.Optional[PySide2.QtCore.QObject]=...) -> bool: ... + def isEditable(self, obj:typing.Optional[PySide2.QtCore.QObject]=...) -> bool: ... + def isEnumType(self) -> bool: ... + def isFinal(self) -> bool: ... + def isFlagType(self) -> bool: ... + def isReadable(self) -> bool: ... + def isRequired(self) -> bool: ... + def isResettable(self) -> bool: ... + def isScriptable(self, obj:typing.Optional[PySide2.QtCore.QObject]=...) -> bool: ... + def isStored(self, obj:typing.Optional[PySide2.QtCore.QObject]=...) -> bool: ... + def isUser(self, obj:typing.Optional[PySide2.QtCore.QObject]=...) -> bool: ... + def isValid(self) -> bool: ... + def isWritable(self) -> bool: ... + def name(self) -> bytes: ... + def notifySignal(self) -> PySide2.QtCore.QMetaMethod: ... + def notifySignalIndex(self) -> int: ... + def propertyIndex(self) -> int: ... + def read(self, obj:PySide2.QtCore.QObject) -> typing.Any: ... + def readOnGadget(self, gadget:int) -> typing.Any: ... + def relativePropertyIndex(self) -> int: ... + def reset(self, obj:PySide2.QtCore.QObject) -> bool: ... + def resetOnGadget(self, gadget:int) -> bool: ... + def revision(self) -> int: ... + def type(self) -> type: ... + def typeName(self) -> bytes: ... + def userType(self) -> int: ... + def write(self, obj:PySide2.QtCore.QObject, value:typing.Any) -> bool: ... + def writeOnGadget(self, gadget:int, value:typing.Any) -> bool: ... + + +class QMimeData(PySide2.QtCore.QObject): + + def __init__(self) -> None: ... + + def clear(self) -> None: ... + def colorData(self) -> typing.Any: ... + def data(self, mimetype:str) -> PySide2.QtCore.QByteArray: ... + def formats(self) -> typing.List: ... + def hasColor(self) -> bool: ... + def hasFormat(self, mimetype:str) -> bool: ... + def hasHtml(self) -> bool: ... + def hasImage(self) -> bool: ... + def hasText(self) -> bool: ... + def hasUrls(self) -> bool: ... + def html(self) -> str: ... + def imageData(self) -> typing.Any: ... + def removeFormat(self, mimetype:str) -> None: ... + def retrieveData(self, mimetype:str, preferredType:type) -> typing.Any: ... + def setColorData(self, color:typing.Any) -> None: ... + def setData(self, mimetype:str, data:PySide2.QtCore.QByteArray) -> None: ... + def setHtml(self, html:str) -> None: ... + def setImageData(self, image:typing.Any) -> None: ... + def setText(self, text:str) -> None: ... + def setUrls(self, urls:typing.Sequence) -> None: ... + def text(self) -> str: ... + def urls(self) -> typing.List: ... + + +class QMimeDatabase(Shiboken.Object): + MatchDefault : QMimeDatabase = ... # 0x0 + MatchExtension : QMimeDatabase = ... # 0x1 + MatchContent : QMimeDatabase = ... # 0x2 + + class MatchMode(object): + MatchDefault : QMimeDatabase.MatchMode = ... # 0x0 + MatchExtension : QMimeDatabase.MatchMode = ... # 0x1 + MatchContent : QMimeDatabase.MatchMode = ... # 0x2 + + def __init__(self) -> None: ... + + def allMimeTypes(self) -> typing.List: ... + @typing.overload + def mimeTypeForData(self, data:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QMimeType: ... + @typing.overload + def mimeTypeForData(self, device:PySide2.QtCore.QIODevice) -> PySide2.QtCore.QMimeType: ... + @typing.overload + def mimeTypeForFile(self, fileInfo:PySide2.QtCore.QFileInfo, mode:PySide2.QtCore.QMimeDatabase.MatchMode=...) -> PySide2.QtCore.QMimeType: ... + @typing.overload + def mimeTypeForFile(self, fileName:str, mode:PySide2.QtCore.QMimeDatabase.MatchMode=...) -> PySide2.QtCore.QMimeType: ... + @typing.overload + def mimeTypeForFileNameAndData(self, fileName:str, data:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QMimeType: ... + @typing.overload + def mimeTypeForFileNameAndData(self, fileName:str, device:PySide2.QtCore.QIODevice) -> PySide2.QtCore.QMimeType: ... + def mimeTypeForName(self, nameOrAlias:str) -> PySide2.QtCore.QMimeType: ... + def mimeTypeForUrl(self, url:PySide2.QtCore.QUrl) -> PySide2.QtCore.QMimeType: ... + def mimeTypesForFileName(self, fileName:str) -> typing.List: ... + def suffixForFileName(self, fileName:str) -> str: ... + + +class QMimeType(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtCore.QMimeType) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def aliases(self) -> typing.List: ... + def allAncestors(self) -> typing.List: ... + def comment(self) -> str: ... + def filterString(self) -> str: ... + def genericIconName(self) -> str: ... + def globPatterns(self) -> typing.List: ... + def iconName(self) -> str: ... + def inherits(self, mimeTypeName:str) -> bool: ... + def isDefault(self) -> bool: ... + def isValid(self) -> bool: ... + def name(self) -> str: ... + def parentMimeTypes(self) -> typing.List: ... + def preferredSuffix(self) -> str: ... + def suffixes(self) -> typing.List: ... + def swap(self, other:PySide2.QtCore.QMimeType) -> None: ... + + +class QModelIndex(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QModelIndex:PySide2.QtCore.QModelIndex) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def child(self, row:int, column:int) -> PySide2.QtCore.QModelIndex: ... + def column(self) -> int: ... + def data(self, role:int=...) -> typing.Any: ... + def flags(self) -> PySide2.QtCore.Qt.ItemFlags: ... + def internalId(self) -> int: ... + def internalPointer(self) -> int: ... + def isValid(self) -> bool: ... + def model(self) -> PySide2.QtCore.QAbstractItemModel: ... + def parent(self) -> PySide2.QtCore.QModelIndex: ... + def row(self) -> int: ... + def sibling(self, row:int, column:int) -> PySide2.QtCore.QModelIndex: ... + def siblingAtColumn(self, column:int) -> PySide2.QtCore.QModelIndex: ... + def siblingAtRow(self, row:int) -> PySide2.QtCore.QModelIndex: ... + + +class QMutex(PySide2.QtCore.QBasicMutex): + NonRecursive : QMutex = ... # 0x0 + Recursive : QMutex = ... # 0x1 + + class RecursionMode(object): + NonRecursive : QMutex.RecursionMode = ... # 0x0 + Recursive : QMutex.RecursionMode = ... # 0x1 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, mode:PySide2.QtCore.QMutex.RecursionMode) -> None: ... + + def isRecursive(self) -> bool: ... + def lock(self) -> None: ... + @typing.overload + def tryLock(self) -> bool: ... + @typing.overload + def tryLock(self, timeout:int=...) -> bool: ... + def try_lock(self) -> bool: ... + def unlock(self) -> None: ... + + +class QMutexLocker(Shiboken.Object): + + @typing.overload + def __init__(self, m:PySide2.QtCore.QBasicMutex) -> None: ... + @typing.overload + def __init__(self, m:PySide2.QtCore.QRecursiveMutex) -> None: ... + + def __enter__(self) -> None: ... + def __exit__(self, arg__1:object, arg__2:object, arg__3:object) -> None: ... + def mutex(self) -> PySide2.QtCore.QMutex: ... + def relock(self) -> None: ... + def unlock(self) -> None: ... + + +class QObject(Shiboken.Object): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def blockSignals(self, b:bool) -> bool: ... + def childEvent(self, event:PySide2.QtCore.QChildEvent) -> None: ... + def children(self) -> typing.List: ... + @typing.overload + @staticmethod + def connect(arg__1:PySide2.QtCore.QObject, arg__2:bytes, arg__3:typing.Callable, type:PySide2.QtCore.Qt.ConnectionType=...) -> bool: ... + @typing.overload + def connect(self, arg__1:bytes, arg__2:typing.Callable, type:PySide2.QtCore.Qt.ConnectionType=...) -> bool: ... + @typing.overload + def connect(self, arg__1:bytes, arg__2:PySide2.QtCore.QObject, arg__3:bytes, type:PySide2.QtCore.Qt.ConnectionType=...) -> bool: ... + @typing.overload + def connect(self, sender:PySide2.QtCore.QObject, signal:bytes, member:bytes, type:PySide2.QtCore.Qt.ConnectionType=...) -> PySide2.QtCore.QMetaObject.Connection: ... + @typing.overload + @staticmethod + def connect(sender:PySide2.QtCore.QObject, signal:PySide2.QtCore.QMetaMethod, receiver:PySide2.QtCore.QObject, method:PySide2.QtCore.QMetaMethod, type:PySide2.QtCore.Qt.ConnectionType=...) -> PySide2.QtCore.QMetaObject.Connection: ... + @typing.overload + @staticmethod + def connect(sender:PySide2.QtCore.QObject, signal:bytes, receiver:PySide2.QtCore.QObject, member:bytes, type:PySide2.QtCore.Qt.ConnectionType=...) -> PySide2.QtCore.QMetaObject.Connection: ... + def connectNotify(self, signal:PySide2.QtCore.QMetaMethod) -> None: ... + def customEvent(self, event:PySide2.QtCore.QEvent) -> None: ... + def deleteLater(self) -> None: ... + @typing.overload + @staticmethod + def disconnect(arg__1:PySide2.QtCore.QMetaObject.Connection) -> bool: ... + @typing.overload + @staticmethod + def disconnect(arg__1:PySide2.QtCore.QObject, arg__2:bytes, arg__3:typing.Callable) -> bool: ... + @typing.overload + def disconnect(self, arg__1:bytes, arg__2:typing.Callable) -> bool: ... + @typing.overload + def disconnect(self, receiver:PySide2.QtCore.QObject, member:typing.Optional[bytes]=...) -> bool: ... + @typing.overload + def disconnect(self, signal:bytes, receiver:PySide2.QtCore.QObject, member:bytes) -> bool: ... + @typing.overload + @staticmethod + def disconnect(sender:PySide2.QtCore.QObject, signal:PySide2.QtCore.QMetaMethod, receiver:PySide2.QtCore.QObject, member:PySide2.QtCore.QMetaMethod) -> bool: ... + @typing.overload + @staticmethod + def disconnect(sender:PySide2.QtCore.QObject, signal:bytes, receiver:PySide2.QtCore.QObject, member:bytes) -> bool: ... + def disconnectNotify(self, signal:PySide2.QtCore.QMetaMethod) -> None: ... + def dumpObjectInfo(self) -> None: ... + def dumpObjectTree(self) -> None: ... + def dynamicPropertyNames(self) -> typing.List: ... + def emit(self, arg__1:bytes, *args:None) -> bool: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def eventFilter(self, watched:PySide2.QtCore.QObject, event:PySide2.QtCore.QEvent) -> bool: ... + def findChild(self, arg__1:type, arg__2:str=...) -> object: ... + @typing.overload + def findChildren(self, arg__1:type, arg__2:PySide2.QtCore.QRegExp) -> typing.Iterable: ... + @typing.overload + def findChildren(self, arg__1:type, arg__2:PySide2.QtCore.QRegularExpression) -> typing.Iterable: ... + @typing.overload + def findChildren(self, arg__1:type, arg__2:str=...) -> typing.Iterable: ... + def inherits(self, classname:bytes) -> bool: ... + def installEventFilter(self, filterObj:PySide2.QtCore.QObject) -> None: ... + def isSignalConnected(self, signal:PySide2.QtCore.QMetaMethod) -> bool: ... + def isWidgetType(self) -> bool: ... + def isWindowType(self) -> bool: ... + def killTimer(self, id:int) -> None: ... + def metaObject(self) -> PySide2.QtCore.QMetaObject: ... + def moveToThread(self, thread:PySide2.QtCore.QThread) -> None: ... + def objectName(self) -> str: ... + def parent(self) -> PySide2.QtCore.QObject: ... + def property(self, name:bytes) -> typing.Any: ... + def receivers(self, signal:bytes) -> int: ... + @staticmethod + def registerUserData() -> int: ... + def removeEventFilter(self, obj:PySide2.QtCore.QObject) -> None: ... + def sender(self) -> PySide2.QtCore.QObject: ... + def senderSignalIndex(self) -> int: ... + def setObjectName(self, name:str) -> None: ... + def setParent(self, parent:PySide2.QtCore.QObject) -> None: ... + def setProperty(self, name:bytes, value:typing.Any) -> bool: ... + def signalsBlocked(self) -> bool: ... + def startTimer(self, interval:int, timerType:PySide2.QtCore.Qt.TimerType=...) -> int: ... + def thread(self) -> PySide2.QtCore.QThread: ... + def timerEvent(self, event:PySide2.QtCore.QTimerEvent) -> None: ... + def tr(self, arg__1:bytes, arg__2:bytes=..., arg__3:int=...) -> str: ... + + +class QOperatingSystemVersion(Shiboken.Object): + Unknown : QOperatingSystemVersion = ... # 0x0 + Windows : QOperatingSystemVersion = ... # 0x1 + MacOS : QOperatingSystemVersion = ... # 0x2 + IOS : QOperatingSystemVersion = ... # 0x3 + TvOS : QOperatingSystemVersion = ... # 0x4 + WatchOS : QOperatingSystemVersion = ... # 0x5 + Android : QOperatingSystemVersion = ... # 0x6 + + class OSType(object): + Unknown : QOperatingSystemVersion.OSType = ... # 0x0 + Windows : QOperatingSystemVersion.OSType = ... # 0x1 + MacOS : QOperatingSystemVersion.OSType = ... # 0x2 + IOS : QOperatingSystemVersion.OSType = ... # 0x3 + TvOS : QOperatingSystemVersion.OSType = ... # 0x4 + WatchOS : QOperatingSystemVersion.OSType = ... # 0x5 + Android : QOperatingSystemVersion.OSType = ... # 0x6 + + @typing.overload + def __init__(self, QOperatingSystemVersion:PySide2.QtCore.QOperatingSystemVersion) -> None: ... + @typing.overload + def __init__(self, osType:PySide2.QtCore.QOperatingSystemVersion.OSType, vmajor:int, vminor:int=..., vmicro:int=...) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @staticmethod + def current() -> PySide2.QtCore.QOperatingSystemVersion: ... + @staticmethod + def currentType() -> PySide2.QtCore.QOperatingSystemVersion.OSType: ... + def majorVersion(self) -> int: ... + def microVersion(self) -> int: ... + def minorVersion(self) -> int: ... + def name(self) -> str: ... + def segmentCount(self) -> int: ... + def type(self) -> PySide2.QtCore.QOperatingSystemVersion.OSType: ... + + +class QParallelAnimationGroup(PySide2.QtCore.QAnimationGroup): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def duration(self) -> int: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def updateCurrentTime(self, currentTime:int) -> None: ... + def updateDirection(self, direction:PySide2.QtCore.QAbstractAnimation.Direction) -> None: ... + def updateState(self, newState:PySide2.QtCore.QAbstractAnimation.State, oldState:PySide2.QtCore.QAbstractAnimation.State) -> None: ... + + +class QPauseAnimation(PySide2.QtCore.QAbstractAnimation): + + @typing.overload + def __init__(self, msecs:int, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def duration(self) -> int: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def setDuration(self, msecs:int) -> None: ... + def updateCurrentTime(self, arg__1:int) -> None: ... + + +class QPersistentModelIndex(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, index:PySide2.QtCore.QModelIndex) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtCore.QPersistentModelIndex) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def child(self, row:int, column:int) -> PySide2.QtCore.QModelIndex: ... + def column(self) -> int: ... + def data(self, role:int=...) -> typing.Any: ... + def flags(self) -> PySide2.QtCore.Qt.ItemFlags: ... + def internalId(self) -> int: ... + def internalPointer(self) -> int: ... + def isValid(self) -> bool: ... + def model(self) -> PySide2.QtCore.QAbstractItemModel: ... + def parent(self) -> PySide2.QtCore.QModelIndex: ... + def row(self) -> int: ... + def sibling(self, row:int, column:int) -> PySide2.QtCore.QModelIndex: ... + def swap(self, other:PySide2.QtCore.QPersistentModelIndex) -> None: ... + + +class QPluginLoader(PySide2.QtCore.QObject): + + @typing.overload + def __init__(self, fileName:str, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def errorString(self) -> str: ... + def fileName(self) -> str: ... + def instance(self) -> PySide2.QtCore.QObject: ... + def isLoaded(self) -> bool: ... + def load(self) -> bool: ... + def metaData(self) -> typing.Dict: ... + def setFileName(self, fileName:str) -> None: ... + @staticmethod + def staticInstances() -> typing.List: ... + def unload(self) -> bool: ... + + +class QPoint(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QPoint:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + def __init__(self, xpos:int, ypos:int) -> None: ... + + def __add__(self, p2:PySide2.QtCore.QPoint) -> PySide2.QtCore.QPoint: ... + @staticmethod + def __copy__() -> None: ... + def __iadd__(self, p:PySide2.QtCore.QPoint) -> PySide2.QtCore.QPoint: ... + @typing.overload + def __imul__(self, factor:float) -> PySide2.QtCore.QPoint: ... + @typing.overload + def __imul__(self, factor:float) -> PySide2.QtCore.QPoint: ... + @typing.overload + def __imul__(self, factor:int) -> PySide2.QtCore.QPoint: ... + def __isub__(self, p:PySide2.QtCore.QPoint) -> PySide2.QtCore.QPoint: ... + @typing.overload + def __mul__(self, factor:float) -> PySide2.QtCore.QPoint: ... + @typing.overload + def __mul__(self, factor:float) -> PySide2.QtCore.QPoint: ... + @typing.overload + def __mul__(self, factor:int) -> PySide2.QtCore.QPoint: ... + def __neg__(self) -> PySide2.QtCore.QPoint: ... + def __pos__(self) -> PySide2.QtCore.QPoint: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + def __sub__(self, p2:PySide2.QtCore.QPoint) -> PySide2.QtCore.QPoint: ... + @staticmethod + def dotProduct(p1:PySide2.QtCore.QPoint, p2:PySide2.QtCore.QPoint) -> int: ... + def isNull(self) -> bool: ... + def manhattanLength(self) -> int: ... + def setX(self, x:int) -> None: ... + def setY(self, y:int) -> None: ... + def toTuple(self) -> object: ... + def transposed(self) -> PySide2.QtCore.QPoint: ... + def x(self) -> int: ... + def y(self) -> int: ... + + +class QPointF(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QPointF:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def __init__(self, p:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + def __init__(self, xpos:float, ypos:float) -> None: ... + + def __add__(self, p2:PySide2.QtCore.QPointF) -> PySide2.QtCore.QPointF: ... + @staticmethod + def __copy__() -> None: ... + def __iadd__(self, p:PySide2.QtCore.QPointF) -> PySide2.QtCore.QPointF: ... + def __imul__(self, c:float) -> PySide2.QtCore.QPointF: ... + def __isub__(self, p:PySide2.QtCore.QPointF) -> PySide2.QtCore.QPointF: ... + def __mul__(self, c:float) -> PySide2.QtCore.QPointF: ... + def __neg__(self) -> PySide2.QtCore.QPointF: ... + def __pos__(self) -> PySide2.QtCore.QPointF: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + def __sub__(self, p2:PySide2.QtCore.QPointF) -> PySide2.QtCore.QPointF: ... + @staticmethod + def dotProduct(p1:PySide2.QtCore.QPointF, p2:PySide2.QtCore.QPointF) -> float: ... + def isNull(self) -> bool: ... + def manhattanLength(self) -> float: ... + def setX(self, x:float) -> None: ... + def setY(self, y:float) -> None: ... + def toPoint(self) -> PySide2.QtCore.QPoint: ... + def toTuple(self) -> object: ... + def transposed(self) -> PySide2.QtCore.QPointF: ... + def x(self) -> float: ... + def y(self) -> float: ... + + +class QProcess(PySide2.QtCore.QIODevice): + FailedToStart : QProcess = ... # 0x0 + ManagedInputChannel : QProcess = ... # 0x0 + NormalExit : QProcess = ... # 0x0 + NotRunning : QProcess = ... # 0x0 + SeparateChannels : QProcess = ... # 0x0 + StandardOutput : QProcess = ... # 0x0 + CrashExit : QProcess = ... # 0x1 + Crashed : QProcess = ... # 0x1 + ForwardedInputChannel : QProcess = ... # 0x1 + MergedChannels : QProcess = ... # 0x1 + StandardError : QProcess = ... # 0x1 + Starting : QProcess = ... # 0x1 + ForwardedChannels : QProcess = ... # 0x2 + Running : QProcess = ... # 0x2 + Timedout : QProcess = ... # 0x2 + ForwardedOutputChannel : QProcess = ... # 0x3 + ReadError : QProcess = ... # 0x3 + ForwardedErrorChannel : QProcess = ... # 0x4 + WriteError : QProcess = ... # 0x4 + UnknownError : QProcess = ... # 0x5 + + class ExitStatus(object): + NormalExit : QProcess.ExitStatus = ... # 0x0 + CrashExit : QProcess.ExitStatus = ... # 0x1 + + class InputChannelMode(object): + ManagedInputChannel : QProcess.InputChannelMode = ... # 0x0 + ForwardedInputChannel : QProcess.InputChannelMode = ... # 0x1 + + class ProcessChannel(object): + StandardOutput : QProcess.ProcessChannel = ... # 0x0 + StandardError : QProcess.ProcessChannel = ... # 0x1 + + class ProcessChannelMode(object): + SeparateChannels : QProcess.ProcessChannelMode = ... # 0x0 + MergedChannels : QProcess.ProcessChannelMode = ... # 0x1 + ForwardedChannels : QProcess.ProcessChannelMode = ... # 0x2 + ForwardedOutputChannel : QProcess.ProcessChannelMode = ... # 0x3 + ForwardedErrorChannel : QProcess.ProcessChannelMode = ... # 0x4 + + class ProcessError(object): + FailedToStart : QProcess.ProcessError = ... # 0x0 + Crashed : QProcess.ProcessError = ... # 0x1 + Timedout : QProcess.ProcessError = ... # 0x2 + ReadError : QProcess.ProcessError = ... # 0x3 + WriteError : QProcess.ProcessError = ... # 0x4 + UnknownError : QProcess.ProcessError = ... # 0x5 + + class ProcessState(object): + NotRunning : QProcess.ProcessState = ... # 0x0 + Starting : QProcess.ProcessState = ... # 0x1 + Running : QProcess.ProcessState = ... # 0x2 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def arguments(self) -> typing.List: ... + def atEnd(self) -> bool: ... + def bytesAvailable(self) -> int: ... + def bytesToWrite(self) -> int: ... + def canReadLine(self) -> bool: ... + def close(self) -> None: ... + def closeReadChannel(self, channel:PySide2.QtCore.QProcess.ProcessChannel) -> None: ... + def closeWriteChannel(self) -> None: ... + def environment(self) -> typing.List: ... + def error(self) -> PySide2.QtCore.QProcess.ProcessError: ... + @typing.overload + @staticmethod + def execute(command:str) -> int: ... + @typing.overload + @staticmethod + def execute(program:str, arguments:typing.Sequence) -> int: ... + def exitCode(self) -> int: ... + def exitStatus(self) -> PySide2.QtCore.QProcess.ExitStatus: ... + def inputChannelMode(self) -> PySide2.QtCore.QProcess.InputChannelMode: ... + def isSequential(self) -> bool: ... + def kill(self) -> None: ... + def nativeArguments(self) -> str: ... + @staticmethod + def nullDevice() -> str: ... + def open(self, mode:PySide2.QtCore.QIODevice.OpenMode=...) -> bool: ... + def pid(self) -> int: ... + def processChannelMode(self) -> PySide2.QtCore.QProcess.ProcessChannelMode: ... + def processEnvironment(self) -> PySide2.QtCore.QProcessEnvironment: ... + def processId(self) -> int: ... + def program(self) -> str: ... + def readAllStandardError(self) -> PySide2.QtCore.QByteArray: ... + def readAllStandardOutput(self) -> PySide2.QtCore.QByteArray: ... + def readChannel(self) -> PySide2.QtCore.QProcess.ProcessChannel: ... + def readData(self, data:bytes, maxlen:int) -> int: ... + def setArguments(self, arguments:typing.Sequence) -> None: ... + def setEnvironment(self, environment:typing.Sequence) -> None: ... + def setInputChannelMode(self, mode:PySide2.QtCore.QProcess.InputChannelMode) -> None: ... + def setNativeArguments(self, arguments:str) -> None: ... + def setProcessChannelMode(self, mode:PySide2.QtCore.QProcess.ProcessChannelMode) -> None: ... + def setProcessEnvironment(self, environment:PySide2.QtCore.QProcessEnvironment) -> None: ... + def setProcessState(self, state:PySide2.QtCore.QProcess.ProcessState) -> None: ... + def setProgram(self, program:str) -> None: ... + def setReadChannel(self, channel:PySide2.QtCore.QProcess.ProcessChannel) -> None: ... + def setStandardErrorFile(self, fileName:str, mode:PySide2.QtCore.QIODevice.OpenMode=...) -> None: ... + def setStandardInputFile(self, fileName:str) -> None: ... + def setStandardOutputFile(self, fileName:str, mode:PySide2.QtCore.QIODevice.OpenMode=...) -> None: ... + def setStandardOutputProcess(self, destination:PySide2.QtCore.QProcess) -> None: ... + def setWorkingDirectory(self, dir:str) -> None: ... + def setupChildProcess(self) -> None: ... + @typing.overload + def start(self, command:str, mode:PySide2.QtCore.QIODevice.OpenMode=...) -> None: ... + @typing.overload + def start(self, mode:PySide2.QtCore.QIODevice.OpenMode=...) -> None: ... + @typing.overload + def start(self, program:str, arguments:typing.Sequence, mode:PySide2.QtCore.QIODevice.OpenMode=...) -> None: ... + @typing.overload + @staticmethod + def startDetached(command:str) -> bool: ... + @typing.overload + @staticmethod + def startDetached(program:str, arguments:typing.Sequence) -> bool: ... + @typing.overload + @staticmethod + def startDetached(program:str, arguments:typing.Sequence, workingDirectory:str) -> typing.Tuple: ... + @typing.overload + def startDetached(self) -> typing.Tuple: ... + def state(self) -> PySide2.QtCore.QProcess.ProcessState: ... + @staticmethod + def systemEnvironment() -> typing.List: ... + def terminate(self) -> None: ... + def waitForBytesWritten(self, msecs:int=...) -> bool: ... + def waitForFinished(self, msecs:int=...) -> bool: ... + def waitForReadyRead(self, msecs:int=...) -> bool: ... + def waitForStarted(self, msecs:int=...) -> bool: ... + def workingDirectory(self) -> str: ... + def writeData(self, data:bytes, len:int) -> int: ... + + +class QProcessEnvironment(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtCore.QProcessEnvironment) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def clear(self) -> None: ... + def contains(self, name:str) -> bool: ... + @typing.overload + def insert(self, e:PySide2.QtCore.QProcessEnvironment) -> None: ... + @typing.overload + def insert(self, name:str, value:str) -> None: ... + def isEmpty(self) -> bool: ... + def keys(self) -> typing.List: ... + def remove(self, name:str) -> None: ... + def swap(self, other:PySide2.QtCore.QProcessEnvironment) -> None: ... + @staticmethod + def systemEnvironment() -> PySide2.QtCore.QProcessEnvironment: ... + def toStringList(self) -> typing.List: ... + def value(self, name:str, defaultValue:str=...) -> str: ... + + +class QPropertyAnimation(PySide2.QtCore.QVariantAnimation): + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, target:PySide2.QtCore.QObject, propertyName:PySide2.QtCore.QByteArray, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def propertyName(self) -> PySide2.QtCore.QByteArray: ... + def setPropertyName(self, propertyName:PySide2.QtCore.QByteArray) -> None: ... + def setTargetObject(self, target:PySide2.QtCore.QObject) -> None: ... + def targetObject(self) -> PySide2.QtCore.QObject: ... + def updateCurrentValue(self, value:typing.Any) -> None: ... + def updateState(self, newState:PySide2.QtCore.QAbstractAnimation.State, oldState:PySide2.QtCore.QAbstractAnimation.State) -> None: ... + + +class QRandomGenerator(Shiboken.Object): + + @typing.overload + def __init__(self, begin:int, end:int) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtCore.QRandomGenerator) -> None: ... + @typing.overload + def __init__(self, seedBuffer:int, len:int) -> None: ... + @typing.overload + def __init__(self, seedValue:int=...) -> None: ... + + @typing.overload + def bounded(self, highest:float) -> float: ... + @typing.overload + def bounded(self, highest:int) -> int: ... + @typing.overload + def bounded(self, highest:int) -> int: ... + @typing.overload + def bounded(self, lowest:int, highest:int) -> int: ... + @typing.overload + def bounded(self, lowest:int, highest:int) -> int: ... + def discard(self, z:int) -> None: ... + def generate(self) -> int: ... + def generate64(self) -> int: ... + def generateDouble(self) -> float: ... + @staticmethod + def global_() -> PySide2.QtCore.QRandomGenerator: ... + @staticmethod + def max() -> int: ... + @staticmethod + def min() -> int: ... + @staticmethod + def securelySeeded() -> PySide2.QtCore.QRandomGenerator: ... + def seed(self, s:int=...) -> None: ... + @staticmethod + def system() -> PySide2.QtCore.QRandomGenerator: ... + + +class QRandomGenerator64(PySide2.QtCore.QRandomGenerator): + + @typing.overload + def __init__(self, begin:int, end:int) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtCore.QRandomGenerator) -> None: ... + @typing.overload + def __init__(self, seedBuffer:int, len:int) -> None: ... + @typing.overload + def __init__(self, seedValue:int=...) -> None: ... + + def discard(self, z:int) -> None: ... + def generate(self) -> int: ... + @staticmethod + def global_() -> PySide2.QtCore.QRandomGenerator64: ... + @staticmethod + def max() -> int: ... + @staticmethod + def min() -> int: ... + @staticmethod + def securelySeeded() -> PySide2.QtCore.QRandomGenerator64: ... + @staticmethod + def system() -> PySide2.QtCore.QRandomGenerator64: ... + + +class QReadLocker(Shiboken.Object): + + def __init__(self, readWriteLock:PySide2.QtCore.QReadWriteLock) -> None: ... + + def __enter__(self) -> None: ... + def __exit__(self, arg__1:object, arg__2:object, arg__3:object) -> None: ... + def readWriteLock(self) -> PySide2.QtCore.QReadWriteLock: ... + def relock(self) -> None: ... + def unlock(self) -> None: ... + + +class QReadWriteLock(Shiboken.Object): + NonRecursive : QReadWriteLock = ... # 0x0 + Recursive : QReadWriteLock = ... # 0x1 + + class RecursionMode(object): + NonRecursive : QReadWriteLock.RecursionMode = ... # 0x0 + Recursive : QReadWriteLock.RecursionMode = ... # 0x1 + + def __init__(self, recursionMode:PySide2.QtCore.QReadWriteLock.RecursionMode=...) -> None: ... + + def lockForRead(self) -> None: ... + def lockForWrite(self) -> None: ... + @typing.overload + def tryLockForRead(self) -> bool: ... + @typing.overload + def tryLockForRead(self, timeout:int) -> bool: ... + @typing.overload + def tryLockForWrite(self) -> bool: ... + @typing.overload + def tryLockForWrite(self, timeout:int) -> bool: ... + def unlock(self) -> None: ... + + +class QRect(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QRect:PySide2.QtCore.QRect) -> None: ... + @typing.overload + def __init__(self, left:int, top:int, width:int, height:int) -> None: ... + @typing.overload + def __init__(self, topleft:PySide2.QtCore.QPoint, bottomright:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + def __init__(self, topleft:PySide2.QtCore.QPoint, size:PySide2.QtCore.QSize) -> None: ... + + def __add__(self, margins:PySide2.QtCore.QMargins) -> PySide2.QtCore.QRect: ... + def __and__(self, r:PySide2.QtCore.QRect) -> PySide2.QtCore.QRect: ... + @staticmethod + def __copy__() -> None: ... + def __iadd__(self, margins:PySide2.QtCore.QMargins) -> PySide2.QtCore.QRect: ... + def __iand__(self, r:PySide2.QtCore.QRect) -> PySide2.QtCore.QRect: ... + def __ior__(self, r:PySide2.QtCore.QRect) -> PySide2.QtCore.QRect: ... + def __isub__(self, margins:PySide2.QtCore.QMargins) -> PySide2.QtCore.QRect: ... + def __or__(self, r:PySide2.QtCore.QRect) -> PySide2.QtCore.QRect: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + def __sub__(self, rhs:PySide2.QtCore.QMargins) -> PySide2.QtCore.QRect: ... + def adjust(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def adjusted(self, x1:int, y1:int, x2:int, y2:int) -> PySide2.QtCore.QRect: ... + def bottom(self) -> int: ... + def bottomLeft(self) -> PySide2.QtCore.QPoint: ... + def bottomRight(self) -> PySide2.QtCore.QPoint: ... + def center(self) -> PySide2.QtCore.QPoint: ... + @typing.overload + def contains(self, p:PySide2.QtCore.QPoint, proper:bool=...) -> bool: ... + @typing.overload + def contains(self, r:PySide2.QtCore.QRect, proper:bool=...) -> bool: ... + @typing.overload + def contains(self, x:int, y:int) -> bool: ... + @typing.overload + def contains(self, x:int, y:int, proper:bool) -> bool: ... + def getCoords(self) -> typing.Tuple: ... + def getRect(self) -> typing.Tuple: ... + def height(self) -> int: ... + def intersected(self, other:PySide2.QtCore.QRect) -> PySide2.QtCore.QRect: ... + def intersects(self, r:PySide2.QtCore.QRect) -> bool: ... + def isEmpty(self) -> bool: ... + def isNull(self) -> bool: ... + def isValid(self) -> bool: ... + def left(self) -> int: ... + def marginsAdded(self, margins:PySide2.QtCore.QMargins) -> PySide2.QtCore.QRect: ... + def marginsRemoved(self, margins:PySide2.QtCore.QMargins) -> PySide2.QtCore.QRect: ... + def moveBottom(self, pos:int) -> None: ... + def moveBottomLeft(self, p:PySide2.QtCore.QPoint) -> None: ... + def moveBottomRight(self, p:PySide2.QtCore.QPoint) -> None: ... + def moveCenter(self, p:PySide2.QtCore.QPoint) -> None: ... + def moveLeft(self, pos:int) -> None: ... + def moveRight(self, pos:int) -> None: ... + @typing.overload + def moveTo(self, p:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + def moveTo(self, x:int, t:int) -> None: ... + def moveTop(self, pos:int) -> None: ... + def moveTopLeft(self, p:PySide2.QtCore.QPoint) -> None: ... + def moveTopRight(self, p:PySide2.QtCore.QPoint) -> None: ... + def normalized(self) -> PySide2.QtCore.QRect: ... + def right(self) -> int: ... + def setBottom(self, pos:int) -> None: ... + def setBottomLeft(self, p:PySide2.QtCore.QPoint) -> None: ... + def setBottomRight(self, p:PySide2.QtCore.QPoint) -> None: ... + def setCoords(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def setHeight(self, h:int) -> None: ... + def setLeft(self, pos:int) -> None: ... + def setRect(self, x:int, y:int, w:int, h:int) -> None: ... + def setRight(self, pos:int) -> None: ... + def setSize(self, s:PySide2.QtCore.QSize) -> None: ... + def setTop(self, pos:int) -> None: ... + def setTopLeft(self, p:PySide2.QtCore.QPoint) -> None: ... + def setTopRight(self, p:PySide2.QtCore.QPoint) -> None: ... + def setWidth(self, w:int) -> None: ... + def setX(self, x:int) -> None: ... + def setY(self, y:int) -> None: ... + def size(self) -> PySide2.QtCore.QSize: ... + def top(self) -> int: ... + def topLeft(self) -> PySide2.QtCore.QPoint: ... + def topRight(self) -> PySide2.QtCore.QPoint: ... + @typing.overload + def translate(self, dx:int, dy:int) -> None: ... + @typing.overload + def translate(self, p:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + def translated(self, dx:int, dy:int) -> PySide2.QtCore.QRect: ... + @typing.overload + def translated(self, p:PySide2.QtCore.QPoint) -> PySide2.QtCore.QRect: ... + def transposed(self) -> PySide2.QtCore.QRect: ... + def united(self, other:PySide2.QtCore.QRect) -> PySide2.QtCore.QRect: ... + def width(self) -> int: ... + def x(self) -> int: ... + def y(self) -> int: ... + + +class QRectF(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QRectF:PySide2.QtCore.QRectF) -> None: ... + @typing.overload + def __init__(self, left:float, top:float, width:float, height:float) -> None: ... + @typing.overload + def __init__(self, rect:PySide2.QtCore.QRect) -> None: ... + @typing.overload + def __init__(self, topleft:PySide2.QtCore.QPointF, bottomRight:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def __init__(self, topleft:PySide2.QtCore.QPointF, size:PySide2.QtCore.QSizeF) -> None: ... + + @typing.overload + def __add__(self, lhs:PySide2.QtCore.QMarginsF) -> PySide2.QtCore.QRectF: ... + @typing.overload + def __add__(self, rhs:PySide2.QtCore.QMarginsF) -> PySide2.QtCore.QRectF: ... + def __and__(self, r:PySide2.QtCore.QRectF) -> PySide2.QtCore.QRectF: ... + @staticmethod + def __copy__() -> None: ... + def __iadd__(self, margins:PySide2.QtCore.QMarginsF) -> PySide2.QtCore.QRectF: ... + def __iand__(self, r:PySide2.QtCore.QRectF) -> PySide2.QtCore.QRectF: ... + def __ior__(self, r:PySide2.QtCore.QRectF) -> PySide2.QtCore.QRectF: ... + def __isub__(self, margins:PySide2.QtCore.QMarginsF) -> PySide2.QtCore.QRectF: ... + def __or__(self, r:PySide2.QtCore.QRectF) -> PySide2.QtCore.QRectF: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + def __sub__(self, rhs:PySide2.QtCore.QMarginsF) -> PySide2.QtCore.QRectF: ... + def adjust(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def adjusted(self, x1:float, y1:float, x2:float, y2:float) -> PySide2.QtCore.QRectF: ... + def bottom(self) -> float: ... + def bottomLeft(self) -> PySide2.QtCore.QPointF: ... + def bottomRight(self) -> PySide2.QtCore.QPointF: ... + def center(self) -> PySide2.QtCore.QPointF: ... + @typing.overload + def contains(self, p:PySide2.QtCore.QPointF) -> bool: ... + @typing.overload + def contains(self, r:PySide2.QtCore.QRectF) -> bool: ... + @typing.overload + def contains(self, x:float, y:float) -> bool: ... + def getCoords(self) -> typing.Tuple: ... + def getRect(self) -> typing.Tuple: ... + def height(self) -> float: ... + def intersected(self, other:PySide2.QtCore.QRectF) -> PySide2.QtCore.QRectF: ... + def intersects(self, r:PySide2.QtCore.QRectF) -> bool: ... + def isEmpty(self) -> bool: ... + def isNull(self) -> bool: ... + def isValid(self) -> bool: ... + def left(self) -> float: ... + def marginsAdded(self, margins:PySide2.QtCore.QMarginsF) -> PySide2.QtCore.QRectF: ... + def marginsRemoved(self, margins:PySide2.QtCore.QMarginsF) -> PySide2.QtCore.QRectF: ... + def moveBottom(self, pos:float) -> None: ... + def moveBottomLeft(self, p:PySide2.QtCore.QPointF) -> None: ... + def moveBottomRight(self, p:PySide2.QtCore.QPointF) -> None: ... + def moveCenter(self, p:PySide2.QtCore.QPointF) -> None: ... + def moveLeft(self, pos:float) -> None: ... + def moveRight(self, pos:float) -> None: ... + @typing.overload + def moveTo(self, p:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def moveTo(self, x:float, y:float) -> None: ... + def moveTop(self, pos:float) -> None: ... + def moveTopLeft(self, p:PySide2.QtCore.QPointF) -> None: ... + def moveTopRight(self, p:PySide2.QtCore.QPointF) -> None: ... + def normalized(self) -> PySide2.QtCore.QRectF: ... + def right(self) -> float: ... + def setBottom(self, pos:float) -> None: ... + def setBottomLeft(self, p:PySide2.QtCore.QPointF) -> None: ... + def setBottomRight(self, p:PySide2.QtCore.QPointF) -> None: ... + def setCoords(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def setHeight(self, h:float) -> None: ... + def setLeft(self, pos:float) -> None: ... + def setRect(self, x:float, y:float, w:float, h:float) -> None: ... + def setRight(self, pos:float) -> None: ... + def setSize(self, s:PySide2.QtCore.QSizeF) -> None: ... + def setTop(self, pos:float) -> None: ... + def setTopLeft(self, p:PySide2.QtCore.QPointF) -> None: ... + def setTopRight(self, p:PySide2.QtCore.QPointF) -> None: ... + def setWidth(self, w:float) -> None: ... + def setX(self, pos:float) -> None: ... + def setY(self, pos:float) -> None: ... + def size(self) -> PySide2.QtCore.QSizeF: ... + def toAlignedRect(self) -> PySide2.QtCore.QRect: ... + def toRect(self) -> PySide2.QtCore.QRect: ... + def top(self) -> float: ... + def topLeft(self) -> PySide2.QtCore.QPointF: ... + def topRight(self) -> PySide2.QtCore.QPointF: ... + @typing.overload + def translate(self, dx:float, dy:float) -> None: ... + @typing.overload + def translate(self, p:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def translated(self, dx:float, dy:float) -> PySide2.QtCore.QRectF: ... + @typing.overload + def translated(self, p:PySide2.QtCore.QPointF) -> PySide2.QtCore.QRectF: ... + def transposed(self) -> PySide2.QtCore.QRectF: ... + def united(self, other:PySide2.QtCore.QRectF) -> PySide2.QtCore.QRectF: ... + def width(self) -> float: ... + def x(self) -> float: ... + def y(self) -> float: ... + + +class QRecursiveMutex(Shiboken.Object): + + def __init__(self) -> None: ... + + +class QRegExp(Shiboken.Object): + CaretAtZero : QRegExp = ... # 0x0 + RegExp : QRegExp = ... # 0x0 + CaretAtOffset : QRegExp = ... # 0x1 + Wildcard : QRegExp = ... # 0x1 + CaretWontMatch : QRegExp = ... # 0x2 + FixedString : QRegExp = ... # 0x2 + RegExp2 : QRegExp = ... # 0x3 + WildcardUnix : QRegExp = ... # 0x4 + W3CXmlSchema11 : QRegExp = ... # 0x5 + + class CaretMode(object): + CaretAtZero : QRegExp.CaretMode = ... # 0x0 + CaretAtOffset : QRegExp.CaretMode = ... # 0x1 + CaretWontMatch : QRegExp.CaretMode = ... # 0x2 + + class PatternSyntax(object): + RegExp : QRegExp.PatternSyntax = ... # 0x0 + Wildcard : QRegExp.PatternSyntax = ... # 0x1 + FixedString : QRegExp.PatternSyntax = ... # 0x2 + RegExp2 : QRegExp.PatternSyntax = ... # 0x3 + WildcardUnix : QRegExp.PatternSyntax = ... # 0x4 + W3CXmlSchema11 : QRegExp.PatternSyntax = ... # 0x5 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, pattern:str, cs:PySide2.QtCore.Qt.CaseSensitivity=..., syntax:PySide2.QtCore.QRegExp.PatternSyntax=...) -> None: ... + @typing.overload + def __init__(self, rx:PySide2.QtCore.QRegExp) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + def cap(self, nth:int=...) -> str: ... + def captureCount(self) -> int: ... + def capturedTexts(self) -> typing.List: ... + def caseSensitivity(self) -> PySide2.QtCore.Qt.CaseSensitivity: ... + def errorString(self) -> str: ... + @staticmethod + def escape(str:str) -> str: ... + def exactMatch(self, str:str) -> bool: ... + def indexIn(self, str:str, offset:int=..., caretMode:PySide2.QtCore.QRegExp.CaretMode=...) -> int: ... + def isEmpty(self) -> bool: ... + def isMinimal(self) -> bool: ... + def isValid(self) -> bool: ... + def lastIndexIn(self, str:str, offset:int=..., caretMode:PySide2.QtCore.QRegExp.CaretMode=...) -> int: ... + def matchedLength(self) -> int: ... + def pattern(self) -> str: ... + def patternSyntax(self) -> PySide2.QtCore.QRegExp.PatternSyntax: ... + def pos(self, nth:int=...) -> int: ... + def replace(self, sourceString:str, after:str) -> str: ... + def setCaseSensitivity(self, cs:PySide2.QtCore.Qt.CaseSensitivity) -> None: ... + def setMinimal(self, minimal:bool) -> None: ... + def setPattern(self, pattern:str) -> None: ... + def setPatternSyntax(self, syntax:PySide2.QtCore.QRegExp.PatternSyntax) -> None: ... + def swap(self, other:PySide2.QtCore.QRegExp) -> None: ... + + +class QRegularExpression(Shiboken.Object): + NoMatchOption : QRegularExpression = ... # 0x0 + NoPatternOption : QRegularExpression = ... # 0x0 + NormalMatch : QRegularExpression = ... # 0x0 + AnchoredMatchOption : QRegularExpression = ... # 0x1 + CaseInsensitiveOption : QRegularExpression = ... # 0x1 + PartialPreferCompleteMatch: QRegularExpression = ... # 0x1 + DontCheckSubjectStringMatchOption: QRegularExpression = ... # 0x2 + DotMatchesEverythingOption: QRegularExpression = ... # 0x2 + PartialPreferFirstMatch : QRegularExpression = ... # 0x2 + NoMatch : QRegularExpression = ... # 0x3 + MultilineOption : QRegularExpression = ... # 0x4 + ExtendedPatternSyntaxOption: QRegularExpression = ... # 0x8 + InvertedGreedinessOption : QRegularExpression = ... # 0x10 + DontCaptureOption : QRegularExpression = ... # 0x20 + UseUnicodePropertiesOption: QRegularExpression = ... # 0x40 + OptimizeOnFirstUsageOption: QRegularExpression = ... # 0x80 + DontAutomaticallyOptimizeOption: QRegularExpression = ... # 0x100 + + class MatchOption(object): + NoMatchOption : QRegularExpression.MatchOption = ... # 0x0 + AnchoredMatchOption : QRegularExpression.MatchOption = ... # 0x1 + DontCheckSubjectStringMatchOption: QRegularExpression.MatchOption = ... # 0x2 + + class MatchOptions(object): ... + + class MatchType(object): + NormalMatch : QRegularExpression.MatchType = ... # 0x0 + PartialPreferCompleteMatch: QRegularExpression.MatchType = ... # 0x1 + PartialPreferFirstMatch : QRegularExpression.MatchType = ... # 0x2 + NoMatch : QRegularExpression.MatchType = ... # 0x3 + + class PatternOption(object): + NoPatternOption : QRegularExpression.PatternOption = ... # 0x0 + CaseInsensitiveOption : QRegularExpression.PatternOption = ... # 0x1 + DotMatchesEverythingOption: QRegularExpression.PatternOption = ... # 0x2 + MultilineOption : QRegularExpression.PatternOption = ... # 0x4 + ExtendedPatternSyntaxOption: QRegularExpression.PatternOption = ... # 0x8 + InvertedGreedinessOption : QRegularExpression.PatternOption = ... # 0x10 + DontCaptureOption : QRegularExpression.PatternOption = ... # 0x20 + UseUnicodePropertiesOption: QRegularExpression.PatternOption = ... # 0x40 + OptimizeOnFirstUsageOption: QRegularExpression.PatternOption = ... # 0x80 + DontAutomaticallyOptimizeOption: QRegularExpression.PatternOption = ... # 0x100 + + class PatternOptions(object): ... + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, pattern:str, options:PySide2.QtCore.QRegularExpression.PatternOptions=...) -> None: ... + @typing.overload + def __init__(self, re:PySide2.QtCore.QRegularExpression) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @staticmethod + def anchoredPattern(expression:str) -> str: ... + def captureCount(self) -> int: ... + def errorString(self) -> str: ... + @staticmethod + def escape(str:str) -> str: ... + @typing.overload + def globalMatch(self, subject:str, offset:int=..., matchType:PySide2.QtCore.QRegularExpression.MatchType=..., matchOptions:PySide2.QtCore.QRegularExpression.MatchOptions=...) -> PySide2.QtCore.QRegularExpressionMatchIterator: ... + @typing.overload + def globalMatch(self, subjectRef:str, offset:int=..., matchType:PySide2.QtCore.QRegularExpression.MatchType=..., matchOptions:PySide2.QtCore.QRegularExpression.MatchOptions=...) -> PySide2.QtCore.QRegularExpressionMatchIterator: ... + def isValid(self) -> bool: ... + @typing.overload + def match(self, subject:str, offset:int=..., matchType:PySide2.QtCore.QRegularExpression.MatchType=..., matchOptions:PySide2.QtCore.QRegularExpression.MatchOptions=...) -> PySide2.QtCore.QRegularExpressionMatch: ... + @typing.overload + def match(self, subjectRef:str, offset:int=..., matchType:PySide2.QtCore.QRegularExpression.MatchType=..., matchOptions:PySide2.QtCore.QRegularExpression.MatchOptions=...) -> PySide2.QtCore.QRegularExpressionMatch: ... + def namedCaptureGroups(self) -> typing.List: ... + def optimize(self) -> None: ... + def pattern(self) -> str: ... + def patternErrorOffset(self) -> int: ... + def patternOptions(self) -> PySide2.QtCore.QRegularExpression.PatternOptions: ... + def setPattern(self, pattern:str) -> None: ... + def setPatternOptions(self, options:PySide2.QtCore.QRegularExpression.PatternOptions) -> None: ... + def swap(self, other:PySide2.QtCore.QRegularExpression) -> None: ... + @staticmethod + def wildcardToRegularExpression(str:str) -> str: ... + + +class QRegularExpressionMatch(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, match:PySide2.QtCore.QRegularExpressionMatch) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @typing.overload + def captured(self, name:str) -> str: ... + @typing.overload + def captured(self, nth:int=...) -> str: ... + @typing.overload + def capturedEnd(self, name:str) -> int: ... + @typing.overload + def capturedEnd(self, nth:int=...) -> int: ... + @typing.overload + def capturedLength(self, name:str) -> int: ... + @typing.overload + def capturedLength(self, nth:int=...) -> int: ... + @typing.overload + def capturedRef(self, name:str) -> str: ... + @typing.overload + def capturedRef(self, nth:int=...) -> str: ... + @typing.overload + def capturedStart(self, name:str) -> int: ... + @typing.overload + def capturedStart(self, nth:int=...) -> int: ... + def capturedTexts(self) -> typing.List: ... + def hasMatch(self) -> bool: ... + def hasPartialMatch(self) -> bool: ... + def isValid(self) -> bool: ... + def lastCapturedIndex(self) -> int: ... + def matchOptions(self) -> PySide2.QtCore.QRegularExpression.MatchOptions: ... + def matchType(self) -> PySide2.QtCore.QRegularExpression.MatchType: ... + def regularExpression(self) -> PySide2.QtCore.QRegularExpression: ... + def swap(self, other:PySide2.QtCore.QRegularExpressionMatch) -> None: ... + + +class QRegularExpressionMatchIterator(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, iterator:PySide2.QtCore.QRegularExpressionMatchIterator) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def hasNext(self) -> bool: ... + def isValid(self) -> bool: ... + def matchOptions(self) -> PySide2.QtCore.QRegularExpression.MatchOptions: ... + def matchType(self) -> PySide2.QtCore.QRegularExpression.MatchType: ... + def next(self) -> PySide2.QtCore.QRegularExpressionMatch: ... + def peekNext(self) -> PySide2.QtCore.QRegularExpressionMatch: ... + def regularExpression(self) -> PySide2.QtCore.QRegularExpression: ... + def swap(self, other:PySide2.QtCore.QRegularExpressionMatchIterator) -> None: ... + + +class QResource(Shiboken.Object): + NoCompression : QResource = ... # 0x0 + ZlibCompression : QResource = ... # 0x1 + ZstdCompression : QResource = ... # 0x2 + + class Compression(object): + NoCompression : QResource.Compression = ... # 0x0 + ZlibCompression : QResource.Compression = ... # 0x1 + ZstdCompression : QResource.Compression = ... # 0x2 + + def __init__(self, file:str=..., locale:PySide2.QtCore.QLocale=...) -> None: ... + + def absoluteFilePath(self) -> str: ... + @staticmethod + def addSearchPath(path:str) -> None: ... + def children(self) -> typing.List: ... + def compressionAlgorithm(self) -> PySide2.QtCore.QResource.Compression: ... + def data(self) -> bytes: ... + def fileName(self) -> str: ... + def isCompressed(self) -> bool: ... + def isDir(self) -> bool: ... + def isFile(self) -> bool: ... + def isValid(self) -> bool: ... + def lastModified(self) -> PySide2.QtCore.QDateTime: ... + def locale(self) -> PySide2.QtCore.QLocale: ... + @staticmethod + def registerResource(rccFilename:str, resourceRoot:str=...) -> bool: ... + @staticmethod + def registerResourceData(rccData:bytes, resourceRoot:str=...) -> bool: ... + @staticmethod + def searchPaths() -> typing.List: ... + def setFileName(self, file:str) -> None: ... + def setLocale(self, locale:PySide2.QtCore.QLocale) -> None: ... + def size(self) -> int: ... + def uncompressedData(self) -> PySide2.QtCore.QByteArray: ... + def uncompressedSize(self) -> int: ... + @staticmethod + def unregisterResource(rccFilename:str, resourceRoot:str=...) -> bool: ... + @staticmethod + def unregisterResourceData(rccData:bytes, resourceRoot:str=...) -> bool: ... + + +class QRunnable(Shiboken.Object): + + def __init__(self) -> None: ... + + def autoDelete(self) -> bool: ... + def run(self) -> None: ... + def setAutoDelete(self, _autoDelete:bool) -> None: ... + + +class QSaveFile(PySide2.QtCore.QFileDevice): + + @typing.overload + def __init__(self, name:str) -> None: ... + @typing.overload + def __init__(self, name:str, parent:PySide2.QtCore.QObject) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def cancelWriting(self) -> None: ... + def close(self) -> None: ... + def commit(self) -> bool: ... + def directWriteFallback(self) -> bool: ... + def fileName(self) -> str: ... + def open(self, flags:PySide2.QtCore.QIODevice.OpenMode) -> bool: ... + def setDirectWriteFallback(self, enabled:bool) -> None: ... + def setFileName(self, name:str) -> None: ... + def writeData(self, data:bytes, len:int) -> int: ... + + +class QSemaphore(Shiboken.Object): + + def __init__(self, n:int=...) -> None: ... + + def acquire(self, n:int=...) -> None: ... + def available(self) -> int: ... + def release(self, n:int=...) -> None: ... + @typing.overload + def tryAcquire(self, n:int, timeout:int) -> bool: ... + @typing.overload + def tryAcquire(self, n:int=...) -> bool: ... + + +class QSemaphoreReleaser(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, sem:PySide2.QtCore.QSemaphore, n:int=...) -> None: ... + + def cancel(self) -> PySide2.QtCore.QSemaphore: ... + def semaphore(self) -> PySide2.QtCore.QSemaphore: ... + def swap(self, other:PySide2.QtCore.QSemaphoreReleaser) -> None: ... + + +class QSequentialAnimationGroup(PySide2.QtCore.QAnimationGroup): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def addPause(self, msecs:int) -> PySide2.QtCore.QPauseAnimation: ... + def currentAnimation(self) -> PySide2.QtCore.QAbstractAnimation: ... + def duration(self) -> int: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def insertPause(self, index:int, msecs:int) -> PySide2.QtCore.QPauseAnimation: ... + def updateCurrentTime(self, arg__1:int) -> None: ... + def updateDirection(self, direction:PySide2.QtCore.QAbstractAnimation.Direction) -> None: ... + def updateState(self, newState:PySide2.QtCore.QAbstractAnimation.State, oldState:PySide2.QtCore.QAbstractAnimation.State) -> None: ... + + +class QSettings(PySide2.QtCore.QObject): + NativeFormat : QSettings = ... # 0x0 + NoError : QSettings = ... # 0x0 + UserScope : QSettings = ... # 0x0 + AccessError : QSettings = ... # 0x1 + IniFormat : QSettings = ... # 0x1 + SystemScope : QSettings = ... # 0x1 + FormatError : QSettings = ... # 0x2 + Registry32Format : QSettings = ... # 0x2 + Registry64Format : QSettings = ... # 0x3 + InvalidFormat : QSettings = ... # 0x10 + CustomFormat1 : QSettings = ... # 0x11 + CustomFormat2 : QSettings = ... # 0x12 + CustomFormat3 : QSettings = ... # 0x13 + CustomFormat4 : QSettings = ... # 0x14 + CustomFormat5 : QSettings = ... # 0x15 + CustomFormat6 : QSettings = ... # 0x16 + CustomFormat7 : QSettings = ... # 0x17 + CustomFormat8 : QSettings = ... # 0x18 + CustomFormat9 : QSettings = ... # 0x19 + CustomFormat10 : QSettings = ... # 0x1a + CustomFormat11 : QSettings = ... # 0x1b + CustomFormat12 : QSettings = ... # 0x1c + CustomFormat13 : QSettings = ... # 0x1d + CustomFormat14 : QSettings = ... # 0x1e + CustomFormat15 : QSettings = ... # 0x1f + CustomFormat16 : QSettings = ... # 0x20 + + class Format(object): + NativeFormat : QSettings.Format = ... # 0x0 + IniFormat : QSettings.Format = ... # 0x1 + Registry32Format : QSettings.Format = ... # 0x2 + Registry64Format : QSettings.Format = ... # 0x3 + InvalidFormat : QSettings.Format = ... # 0x10 + CustomFormat1 : QSettings.Format = ... # 0x11 + CustomFormat2 : QSettings.Format = ... # 0x12 + CustomFormat3 : QSettings.Format = ... # 0x13 + CustomFormat4 : QSettings.Format = ... # 0x14 + CustomFormat5 : QSettings.Format = ... # 0x15 + CustomFormat6 : QSettings.Format = ... # 0x16 + CustomFormat7 : QSettings.Format = ... # 0x17 + CustomFormat8 : QSettings.Format = ... # 0x18 + CustomFormat9 : QSettings.Format = ... # 0x19 + CustomFormat10 : QSettings.Format = ... # 0x1a + CustomFormat11 : QSettings.Format = ... # 0x1b + CustomFormat12 : QSettings.Format = ... # 0x1c + CustomFormat13 : QSettings.Format = ... # 0x1d + CustomFormat14 : QSettings.Format = ... # 0x1e + CustomFormat15 : QSettings.Format = ... # 0x1f + CustomFormat16 : QSettings.Format = ... # 0x20 + + class Scope(object): + UserScope : QSettings.Scope = ... # 0x0 + SystemScope : QSettings.Scope = ... # 0x1 + + class Status(object): + NoError : QSettings.Status = ... # 0x0 + AccessError : QSettings.Status = ... # 0x1 + FormatError : QSettings.Status = ... # 0x2 + + @typing.overload + def __init__(self, fileName:str, format:PySide2.QtCore.QSettings.Format, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, format:PySide2.QtCore.QSettings.Format, scope:PySide2.QtCore.QSettings.Scope, organization:str, application:str=..., parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, organization:str, application:str=..., parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, scope:PySide2.QtCore.QSettings.Scope, organization:str, application:str=..., parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, scope:PySide2.QtCore.QSettings.Scope, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def allKeys(self) -> typing.List: ... + def applicationName(self) -> str: ... + def beginGroup(self, prefix:str) -> None: ... + def beginReadArray(self, prefix:str) -> int: ... + def beginWriteArray(self, prefix:str, size:int=...) -> None: ... + def childGroups(self) -> typing.List: ... + def childKeys(self) -> typing.List: ... + def clear(self) -> None: ... + def contains(self, key:str) -> bool: ... + @staticmethod + def defaultFormat() -> PySide2.QtCore.QSettings.Format: ... + def endArray(self) -> None: ... + def endGroup(self) -> None: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def fallbacksEnabled(self) -> bool: ... + def fileName(self) -> str: ... + def format(self) -> PySide2.QtCore.QSettings.Format: ... + def group(self) -> str: ... + def iniCodec(self) -> PySide2.QtCore.QTextCodec: ... + def isAtomicSyncRequired(self) -> bool: ... + def isWritable(self) -> bool: ... + def organizationName(self) -> str: ... + def remove(self, key:str) -> None: ... + def scope(self) -> PySide2.QtCore.QSettings.Scope: ... + def setArrayIndex(self, i:int) -> None: ... + def setAtomicSyncRequired(self, enable:bool) -> None: ... + @staticmethod + def setDefaultFormat(format:PySide2.QtCore.QSettings.Format) -> None: ... + def setFallbacksEnabled(self, b:bool) -> None: ... + @typing.overload + def setIniCodec(self, codec:PySide2.QtCore.QTextCodec) -> None: ... + @typing.overload + def setIniCodec(self, codecName:bytes) -> None: ... + @staticmethod + def setPath(format:PySide2.QtCore.QSettings.Format, scope:PySide2.QtCore.QSettings.Scope, path:str) -> None: ... + def setValue(self, key:str, value:typing.Any) -> None: ... + def status(self) -> PySide2.QtCore.QSettings.Status: ... + def sync(self) -> None: ... + def value(self, arg__1:str, defaultValue:typing.Optional[typing.Any]=..., type:object=...) -> object: ... + + +class QSignalBlocker(Shiboken.Object): + + def __init__(self, o:PySide2.QtCore.QObject) -> None: ... + + def reblock(self) -> None: ... + def unblock(self) -> None: ... + + +class QSignalMapper(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + @typing.overload + def map(self) -> None: ... + @typing.overload + def map(self, sender:PySide2.QtCore.QObject) -> None: ... + @typing.overload + def mapping(self, id:int) -> PySide2.QtCore.QObject: ... + @typing.overload + def mapping(self, object:PySide2.QtCore.QObject) -> PySide2.QtCore.QObject: ... + @typing.overload + def mapping(self, text:str) -> PySide2.QtCore.QObject: ... + def removeMappings(self, sender:PySide2.QtCore.QObject) -> None: ... + @typing.overload + def setMapping(self, sender:PySide2.QtCore.QObject, id:int) -> None: ... + @typing.overload + def setMapping(self, sender:PySide2.QtCore.QObject, object:PySide2.QtCore.QObject) -> None: ... + @typing.overload + def setMapping(self, sender:PySide2.QtCore.QObject, text:str) -> None: ... + + +class QSignalTransition(PySide2.QtCore.QAbstractTransition): + + @typing.overload + def __init__(self, arg__1:object, arg__2:typing.Optional[PySide2.QtCore.QState]=...) -> PySide2.QtCore.QSignalTransition: ... + @typing.overload + def __init__(self, sender:PySide2.QtCore.QObject, signal:bytes, sourceState:typing.Optional[PySide2.QtCore.QState]=...) -> None: ... + @typing.overload + def __init__(self, sourceState:typing.Optional[PySide2.QtCore.QState]=...) -> None: ... + + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def eventTest(self, event:PySide2.QtCore.QEvent) -> bool: ... + def onTransition(self, event:PySide2.QtCore.QEvent) -> None: ... + def senderObject(self) -> PySide2.QtCore.QObject: ... + def setSenderObject(self, sender:PySide2.QtCore.QObject) -> None: ... + def setSignal(self, signal:PySide2.QtCore.QByteArray) -> None: ... + def signal(self) -> PySide2.QtCore.QByteArray: ... + + +class QSize(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QSize:PySide2.QtCore.QSize) -> None: ... + @typing.overload + def __init__(self, w:int, h:int) -> None: ... + + def __add__(self, s2:PySide2.QtCore.QSize) -> PySide2.QtCore.QSize: ... + @staticmethod + def __copy__() -> None: ... + def __iadd__(self, arg__1:PySide2.QtCore.QSize) -> PySide2.QtCore.QSize: ... + def __imul__(self, c:float) -> PySide2.QtCore.QSize: ... + def __isub__(self, arg__1:PySide2.QtCore.QSize) -> PySide2.QtCore.QSize: ... + def __mul__(self, c:float) -> PySide2.QtCore.QSize: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + def __sub__(self, s2:PySide2.QtCore.QSize) -> PySide2.QtCore.QSize: ... + def boundedTo(self, arg__1:PySide2.QtCore.QSize) -> PySide2.QtCore.QSize: ... + def expandedTo(self, arg__1:PySide2.QtCore.QSize) -> PySide2.QtCore.QSize: ... + def grownBy(self, m:PySide2.QtCore.QMargins) -> PySide2.QtCore.QSize: ... + def height(self) -> int: ... + def isEmpty(self) -> bool: ... + def isNull(self) -> bool: ... + def isValid(self) -> bool: ... + @typing.overload + def scale(self, s:PySide2.QtCore.QSize, mode:PySide2.QtCore.Qt.AspectRatioMode) -> None: ... + @typing.overload + def scale(self, w:int, h:int, mode:PySide2.QtCore.Qt.AspectRatioMode) -> None: ... + @typing.overload + def scaled(self, s:PySide2.QtCore.QSize, mode:PySide2.QtCore.Qt.AspectRatioMode) -> PySide2.QtCore.QSize: ... + @typing.overload + def scaled(self, w:int, h:int, mode:PySide2.QtCore.Qt.AspectRatioMode) -> PySide2.QtCore.QSize: ... + def setHeight(self, h:int) -> None: ... + def setWidth(self, w:int) -> None: ... + def shrunkBy(self, m:PySide2.QtCore.QMargins) -> PySide2.QtCore.QSize: ... + def toTuple(self) -> object: ... + def transpose(self) -> None: ... + def transposed(self) -> PySide2.QtCore.QSize: ... + def width(self) -> int: ... + + +class QSizeF(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QSizeF:PySide2.QtCore.QSizeF) -> None: ... + @typing.overload + def __init__(self, sz:PySide2.QtCore.QSize) -> None: ... + @typing.overload + def __init__(self, w:float, h:float) -> None: ... + + def __add__(self, s2:PySide2.QtCore.QSizeF) -> PySide2.QtCore.QSizeF: ... + @staticmethod + def __copy__() -> None: ... + def __iadd__(self, arg__1:PySide2.QtCore.QSizeF) -> PySide2.QtCore.QSizeF: ... + def __imul__(self, c:float) -> PySide2.QtCore.QSizeF: ... + def __isub__(self, arg__1:PySide2.QtCore.QSizeF) -> PySide2.QtCore.QSizeF: ... + def __mul__(self, c:float) -> PySide2.QtCore.QSizeF: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + def __sub__(self, s2:PySide2.QtCore.QSizeF) -> PySide2.QtCore.QSizeF: ... + def boundedTo(self, arg__1:PySide2.QtCore.QSizeF) -> PySide2.QtCore.QSizeF: ... + def expandedTo(self, arg__1:PySide2.QtCore.QSizeF) -> PySide2.QtCore.QSizeF: ... + def grownBy(self, m:PySide2.QtCore.QMarginsF) -> PySide2.QtCore.QSizeF: ... + def height(self) -> float: ... + def isEmpty(self) -> bool: ... + def isNull(self) -> bool: ... + def isValid(self) -> bool: ... + @typing.overload + def scale(self, s:PySide2.QtCore.QSizeF, mode:PySide2.QtCore.Qt.AspectRatioMode) -> None: ... + @typing.overload + def scale(self, w:float, h:float, mode:PySide2.QtCore.Qt.AspectRatioMode) -> None: ... + @typing.overload + def scaled(self, s:PySide2.QtCore.QSizeF, mode:PySide2.QtCore.Qt.AspectRatioMode) -> PySide2.QtCore.QSizeF: ... + @typing.overload + def scaled(self, w:float, h:float, mode:PySide2.QtCore.Qt.AspectRatioMode) -> PySide2.QtCore.QSizeF: ... + def setHeight(self, h:float) -> None: ... + def setWidth(self, w:float) -> None: ... + def shrunkBy(self, m:PySide2.QtCore.QMarginsF) -> PySide2.QtCore.QSizeF: ... + def toSize(self) -> PySide2.QtCore.QSize: ... + def toTuple(self) -> object: ... + def transpose(self) -> None: ... + def transposed(self) -> PySide2.QtCore.QSizeF: ... + def width(self) -> float: ... + + +class QSocketDescriptor(Shiboken.Object): + + @typing.overload + def __init__(self, QSocketDescriptor:PySide2.QtCore.QSocketDescriptor) -> None: ... + @typing.overload + def __init__(self, desc:int) -> None: ... + @typing.overload + def __init__(self, descriptor:int=...) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def isValid(self) -> bool: ... + def winHandle(self) -> int: ... + + +class QSocketNotifier(PySide2.QtCore.QObject): + Read : QSocketNotifier = ... # 0x0 + Write : QSocketNotifier = ... # 0x1 + Exception : QSocketNotifier = ... # 0x2 + + class Type(object): + Read : QSocketNotifier.Type = ... # 0x0 + Write : QSocketNotifier.Type = ... # 0x1 + Exception : QSocketNotifier.Type = ... # 0x2 + + @typing.overload + def __init__(self, arg__1:object, arg__2:PySide2.QtCore.QSocketNotifier.Type, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, socket:int, arg__2:PySide2.QtCore.QSocketNotifier.Type, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def event(self, arg__1:PySide2.QtCore.QEvent) -> bool: ... + def isEnabled(self) -> bool: ... + def setEnabled(self, arg__1:bool) -> None: ... + def socket(self) -> int: ... + def type(self) -> PySide2.QtCore.QSocketNotifier.Type: ... + + +class QSortFilterProxyModel(PySide2.QtCore.QAbstractProxyModel): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def buddy(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def canFetchMore(self, parent:PySide2.QtCore.QModelIndex) -> bool: ... + def columnCount(self, parent:PySide2.QtCore.QModelIndex=...) -> int: ... + def data(self, index:PySide2.QtCore.QModelIndex, role:int=...) -> typing.Any: ... + def dropMimeData(self, data:PySide2.QtCore.QMimeData, action:PySide2.QtCore.Qt.DropAction, row:int, column:int, parent:PySide2.QtCore.QModelIndex) -> bool: ... + def dynamicSortFilter(self) -> bool: ... + def fetchMore(self, parent:PySide2.QtCore.QModelIndex) -> None: ... + def filterAcceptsColumn(self, source_column:int, source_parent:PySide2.QtCore.QModelIndex) -> bool: ... + def filterAcceptsRow(self, source_row:int, source_parent:PySide2.QtCore.QModelIndex) -> bool: ... + def filterCaseSensitivity(self) -> PySide2.QtCore.Qt.CaseSensitivity: ... + def filterKeyColumn(self) -> int: ... + def filterRegExp(self) -> PySide2.QtCore.QRegExp: ... + def filterRegularExpression(self) -> PySide2.QtCore.QRegularExpression: ... + def filterRole(self) -> int: ... + def flags(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.Qt.ItemFlags: ... + def hasChildren(self, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def headerData(self, section:int, orientation:PySide2.QtCore.Qt.Orientation, role:int=...) -> typing.Any: ... + def index(self, row:int, column:int, parent:PySide2.QtCore.QModelIndex=...) -> PySide2.QtCore.QModelIndex: ... + def insertColumns(self, column:int, count:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def insertRows(self, row:int, count:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def invalidate(self) -> None: ... + def invalidateFilter(self) -> None: ... + def isRecursiveFilteringEnabled(self) -> bool: ... + def isSortLocaleAware(self) -> bool: ... + def lessThan(self, source_left:PySide2.QtCore.QModelIndex, source_right:PySide2.QtCore.QModelIndex) -> bool: ... + def mapFromSource(self, sourceIndex:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def mapSelectionFromSource(self, sourceSelection:PySide2.QtCore.QItemSelection) -> PySide2.QtCore.QItemSelection: ... + def mapSelectionToSource(self, proxySelection:PySide2.QtCore.QItemSelection) -> PySide2.QtCore.QItemSelection: ... + def mapToSource(self, proxyIndex:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def match(self, start:PySide2.QtCore.QModelIndex, role:int, value:typing.Any, hits:int=..., flags:PySide2.QtCore.Qt.MatchFlags=...) -> typing.List: ... + def mimeData(self, indexes:typing.List) -> PySide2.QtCore.QMimeData: ... + def mimeTypes(self) -> typing.List: ... + @typing.overload + def parent(self) -> PySide2.QtCore.QObject: ... + @typing.overload + def parent(self, child:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def removeColumns(self, column:int, count:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def removeRows(self, row:int, count:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def rowCount(self, parent:PySide2.QtCore.QModelIndex=...) -> int: ... + def setData(self, index:PySide2.QtCore.QModelIndex, value:typing.Any, role:int=...) -> bool: ... + def setDynamicSortFilter(self, enable:bool) -> None: ... + def setFilterCaseSensitivity(self, cs:PySide2.QtCore.Qt.CaseSensitivity) -> None: ... + def setFilterFixedString(self, pattern:str) -> None: ... + def setFilterKeyColumn(self, column:int) -> None: ... + @typing.overload + def setFilterRegExp(self, pattern:str) -> None: ... + @typing.overload + def setFilterRegExp(self, regExp:PySide2.QtCore.QRegExp) -> None: ... + @typing.overload + def setFilterRegularExpression(self, pattern:str) -> None: ... + @typing.overload + def setFilterRegularExpression(self, regularExpression:PySide2.QtCore.QRegularExpression) -> None: ... + def setFilterRole(self, role:int) -> None: ... + def setFilterWildcard(self, pattern:str) -> None: ... + def setHeaderData(self, section:int, orientation:PySide2.QtCore.Qt.Orientation, value:typing.Any, role:int=...) -> bool: ... + def setRecursiveFilteringEnabled(self, recursive:bool) -> None: ... + def setSortCaseSensitivity(self, cs:PySide2.QtCore.Qt.CaseSensitivity) -> None: ... + def setSortLocaleAware(self, on:bool) -> None: ... + def setSortRole(self, role:int) -> None: ... + def setSourceModel(self, sourceModel:PySide2.QtCore.QAbstractItemModel) -> None: ... + def sibling(self, row:int, column:int, idx:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def sort(self, column:int, order:PySide2.QtCore.Qt.SortOrder=...) -> None: ... + def sortCaseSensitivity(self) -> PySide2.QtCore.Qt.CaseSensitivity: ... + def sortColumn(self) -> int: ... + def sortOrder(self) -> PySide2.QtCore.Qt.SortOrder: ... + def sortRole(self) -> int: ... + def span(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QSize: ... + def supportedDropActions(self) -> PySide2.QtCore.Qt.DropActions: ... + + +class QStandardPaths(Shiboken.Object): + DesktopLocation : QStandardPaths = ... # 0x0 + LocateFile : QStandardPaths = ... # 0x0 + DocumentsLocation : QStandardPaths = ... # 0x1 + LocateDirectory : QStandardPaths = ... # 0x1 + FontsLocation : QStandardPaths = ... # 0x2 + ApplicationsLocation : QStandardPaths = ... # 0x3 + MusicLocation : QStandardPaths = ... # 0x4 + MoviesLocation : QStandardPaths = ... # 0x5 + PicturesLocation : QStandardPaths = ... # 0x6 + TempLocation : QStandardPaths = ... # 0x7 + HomeLocation : QStandardPaths = ... # 0x8 + AppLocalDataLocation : QStandardPaths = ... # 0x9 + DataLocation : QStandardPaths = ... # 0x9 + CacheLocation : QStandardPaths = ... # 0xa + GenericDataLocation : QStandardPaths = ... # 0xb + RuntimeLocation : QStandardPaths = ... # 0xc + ConfigLocation : QStandardPaths = ... # 0xd + DownloadLocation : QStandardPaths = ... # 0xe + GenericCacheLocation : QStandardPaths = ... # 0xf + GenericConfigLocation : QStandardPaths = ... # 0x10 + AppDataLocation : QStandardPaths = ... # 0x11 + AppConfigLocation : QStandardPaths = ... # 0x12 + + class LocateOption(object): + LocateFile : QStandardPaths.LocateOption = ... # 0x0 + LocateDirectory : QStandardPaths.LocateOption = ... # 0x1 + + class LocateOptions(object): ... + + class StandardLocation(object): + DesktopLocation : QStandardPaths.StandardLocation = ... # 0x0 + DocumentsLocation : QStandardPaths.StandardLocation = ... # 0x1 + FontsLocation : QStandardPaths.StandardLocation = ... # 0x2 + ApplicationsLocation : QStandardPaths.StandardLocation = ... # 0x3 + MusicLocation : QStandardPaths.StandardLocation = ... # 0x4 + MoviesLocation : QStandardPaths.StandardLocation = ... # 0x5 + PicturesLocation : QStandardPaths.StandardLocation = ... # 0x6 + TempLocation : QStandardPaths.StandardLocation = ... # 0x7 + HomeLocation : QStandardPaths.StandardLocation = ... # 0x8 + AppLocalDataLocation : QStandardPaths.StandardLocation = ... # 0x9 + DataLocation : QStandardPaths.StandardLocation = ... # 0x9 + CacheLocation : QStandardPaths.StandardLocation = ... # 0xa + GenericDataLocation : QStandardPaths.StandardLocation = ... # 0xb + RuntimeLocation : QStandardPaths.StandardLocation = ... # 0xc + ConfigLocation : QStandardPaths.StandardLocation = ... # 0xd + DownloadLocation : QStandardPaths.StandardLocation = ... # 0xe + GenericCacheLocation : QStandardPaths.StandardLocation = ... # 0xf + GenericConfigLocation : QStandardPaths.StandardLocation = ... # 0x10 + AppDataLocation : QStandardPaths.StandardLocation = ... # 0x11 + AppConfigLocation : QStandardPaths.StandardLocation = ... # 0x12 + @staticmethod + def displayName(type:PySide2.QtCore.QStandardPaths.StandardLocation) -> str: ... + @staticmethod + def enableTestMode(testMode:bool) -> None: ... + @staticmethod + def findExecutable(executableName:str, paths:typing.Sequence=...) -> str: ... + @staticmethod + def isTestModeEnabled() -> bool: ... + @staticmethod + def locate(type:PySide2.QtCore.QStandardPaths.StandardLocation, fileName:str, options:PySide2.QtCore.QStandardPaths.LocateOptions=...) -> str: ... + @staticmethod + def locateAll(type:PySide2.QtCore.QStandardPaths.StandardLocation, fileName:str, options:PySide2.QtCore.QStandardPaths.LocateOptions=...) -> typing.List: ... + @staticmethod + def setTestModeEnabled(testMode:bool) -> None: ... + @staticmethod + def standardLocations(type:PySide2.QtCore.QStandardPaths.StandardLocation) -> typing.List: ... + @staticmethod + def writableLocation(type:PySide2.QtCore.QStandardPaths.StandardLocation) -> str: ... + + +class QState(PySide2.QtCore.QAbstractState): + DontRestoreProperties : QState = ... # 0x0 + ExclusiveStates : QState = ... # 0x0 + ParallelStates : QState = ... # 0x1 + RestoreProperties : QState = ... # 0x1 + + class ChildMode(object): + ExclusiveStates : QState.ChildMode = ... # 0x0 + ParallelStates : QState.ChildMode = ... # 0x1 + + class RestorePolicy(object): + DontRestoreProperties : QState.RestorePolicy = ... # 0x0 + RestoreProperties : QState.RestorePolicy = ... # 0x1 + + @typing.overload + def __init__(self, childMode:PySide2.QtCore.QState.ChildMode, parent:typing.Optional[PySide2.QtCore.QState]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QState]=...) -> None: ... + + @typing.overload + def addTransition(self, arg__1:object, arg__2:PySide2.QtCore.QAbstractState) -> PySide2.QtCore.QSignalTransition: ... + @typing.overload + def addTransition(self, sender:PySide2.QtCore.QObject, signal:bytes, target:PySide2.QtCore.QAbstractState) -> PySide2.QtCore.QSignalTransition: ... + @typing.overload + def addTransition(self, target:PySide2.QtCore.QAbstractState) -> PySide2.QtCore.QAbstractTransition: ... + @typing.overload + def addTransition(self, transition:PySide2.QtCore.QAbstractTransition) -> None: ... + def assignProperty(self, object:PySide2.QtCore.QObject, name:bytes, value:typing.Any) -> None: ... + def childMode(self) -> PySide2.QtCore.QState.ChildMode: ... + def errorState(self) -> PySide2.QtCore.QAbstractState: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def initialState(self) -> PySide2.QtCore.QAbstractState: ... + def onEntry(self, event:PySide2.QtCore.QEvent) -> None: ... + def onExit(self, event:PySide2.QtCore.QEvent) -> None: ... + def removeTransition(self, transition:PySide2.QtCore.QAbstractTransition) -> None: ... + def setChildMode(self, mode:PySide2.QtCore.QState.ChildMode) -> None: ... + def setErrorState(self, state:PySide2.QtCore.QAbstractState) -> None: ... + def setInitialState(self, state:PySide2.QtCore.QAbstractState) -> None: ... + def transitions(self) -> typing.List: ... + + +class QStateMachine(PySide2.QtCore.QState): + NoError : QStateMachine = ... # 0x0 + NormalPriority : QStateMachine = ... # 0x0 + HighPriority : QStateMachine = ... # 0x1 + NoInitialStateError : QStateMachine = ... # 0x1 + NoDefaultStateInHistoryStateError: QStateMachine = ... # 0x2 + NoCommonAncestorForTransitionError: QStateMachine = ... # 0x3 + StateMachineChildModeSetToParallelError: QStateMachine = ... # 0x4 + + class Error(object): + NoError : QStateMachine.Error = ... # 0x0 + NoInitialStateError : QStateMachine.Error = ... # 0x1 + NoDefaultStateInHistoryStateError: QStateMachine.Error = ... # 0x2 + NoCommonAncestorForTransitionError: QStateMachine.Error = ... # 0x3 + StateMachineChildModeSetToParallelError: QStateMachine.Error = ... # 0x4 + + class EventPriority(object): + NormalPriority : QStateMachine.EventPriority = ... # 0x0 + HighPriority : QStateMachine.EventPriority = ... # 0x1 + + class SignalEvent(PySide2.QtCore.QEvent): + + @typing.overload + def __init__(self, SignalEvent:PySide2.QtCore.QStateMachine.SignalEvent) -> None: ... + @typing.overload + def __init__(self, sender:PySide2.QtCore.QObject, signalIndex:int, arguments:typing.Sequence) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def arguments(self) -> typing.List: ... + def sender(self) -> PySide2.QtCore.QObject: ... + def signalIndex(self) -> int: ... + + class WrappedEvent(PySide2.QtCore.QEvent): + + @typing.overload + def __init__(self, WrappedEvent:PySide2.QtCore.QStateMachine.WrappedEvent) -> None: ... + @typing.overload + def __init__(self, object:PySide2.QtCore.QObject, event:PySide2.QtCore.QEvent) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def event(self) -> PySide2.QtCore.QEvent: ... + def object(self) -> PySide2.QtCore.QObject: ... + + @typing.overload + def __init__(self, childMode:PySide2.QtCore.QState.ChildMode, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def addDefaultAnimation(self, animation:PySide2.QtCore.QAbstractAnimation) -> None: ... + def addState(self, state:PySide2.QtCore.QAbstractState) -> None: ... + def beginMicrostep(self, event:PySide2.QtCore.QEvent) -> None: ... + def beginSelectTransitions(self, event:PySide2.QtCore.QEvent) -> None: ... + def cancelDelayedEvent(self, id:int) -> bool: ... + def clearError(self) -> None: ... + @typing.overload + def configuration(self) -> typing.Set: ... + @typing.overload + def configuration(self) -> typing.List: ... + def defaultAnimations(self) -> typing.List: ... + def endMicrostep(self, event:PySide2.QtCore.QEvent) -> None: ... + def endSelectTransitions(self, event:PySide2.QtCore.QEvent) -> None: ... + def error(self) -> PySide2.QtCore.QStateMachine.Error: ... + def errorString(self) -> str: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def eventFilter(self, watched:PySide2.QtCore.QObject, event:PySide2.QtCore.QEvent) -> bool: ... + def globalRestorePolicy(self) -> PySide2.QtCore.QState.RestorePolicy: ... + def isAnimated(self) -> bool: ... + def isRunning(self) -> bool: ... + def onEntry(self, event:PySide2.QtCore.QEvent) -> None: ... + def onExit(self, event:PySide2.QtCore.QEvent) -> None: ... + def postDelayedEvent(self, event:PySide2.QtCore.QEvent, delay:int) -> int: ... + def postEvent(self, event:PySide2.QtCore.QEvent, priority:PySide2.QtCore.QStateMachine.EventPriority=...) -> None: ... + def removeDefaultAnimation(self, animation:PySide2.QtCore.QAbstractAnimation) -> None: ... + def removeState(self, state:PySide2.QtCore.QAbstractState) -> None: ... + def setAnimated(self, enabled:bool) -> None: ... + def setGlobalRestorePolicy(self, restorePolicy:PySide2.QtCore.QState.RestorePolicy) -> None: ... + def setRunning(self, running:bool) -> None: ... + def start(self) -> None: ... + def stop(self) -> None: ... + + +class QStorageInfo(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, dir:PySide2.QtCore.QDir) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtCore.QStorageInfo) -> None: ... + @typing.overload + def __init__(self, path:str) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def blockSize(self) -> int: ... + def bytesAvailable(self) -> int: ... + def bytesFree(self) -> int: ... + def bytesTotal(self) -> int: ... + def device(self) -> PySide2.QtCore.QByteArray: ... + def displayName(self) -> str: ... + def fileSystemType(self) -> PySide2.QtCore.QByteArray: ... + def isReadOnly(self) -> bool: ... + def isReady(self) -> bool: ... + def isRoot(self) -> bool: ... + def isValid(self) -> bool: ... + @staticmethod + def mountedVolumes() -> typing.List: ... + def name(self) -> str: ... + def refresh(self) -> None: ... + @staticmethod + def root() -> PySide2.QtCore.QStorageInfo: ... + def rootPath(self) -> str: ... + def setPath(self, path:str) -> None: ... + def subvolume(self) -> PySide2.QtCore.QByteArray: ... + def swap(self, other:PySide2.QtCore.QStorageInfo) -> None: ... + + +class QStringListModel(PySide2.QtCore.QAbstractListModel): + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, strings:typing.Sequence, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def data(self, index:PySide2.QtCore.QModelIndex, role:int=...) -> typing.Any: ... + def flags(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.Qt.ItemFlags: ... + def insertRows(self, row:int, count:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def itemData(self, index:PySide2.QtCore.QModelIndex) -> typing.Dict: ... + def moveRows(self, sourceParent:PySide2.QtCore.QModelIndex, sourceRow:int, count:int, destinationParent:PySide2.QtCore.QModelIndex, destinationChild:int) -> bool: ... + def removeRows(self, row:int, count:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def rowCount(self, parent:PySide2.QtCore.QModelIndex=...) -> int: ... + def setData(self, index:PySide2.QtCore.QModelIndex, value:typing.Any, role:int=...) -> bool: ... + def setItemData(self, index:PySide2.QtCore.QModelIndex, roles:typing.Dict) -> bool: ... + def setStringList(self, strings:typing.Sequence) -> None: ... + def sibling(self, row:int, column:int, idx:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def sort(self, column:int, order:PySide2.QtCore.Qt.SortOrder=...) -> None: ... + def stringList(self) -> typing.List: ... + def supportedDropActions(self) -> PySide2.QtCore.Qt.DropActions: ... + + +class QSysInfo(Shiboken.Object): + BigEndian : QSysInfo = ... # 0x0 + WV_None : QSysInfo = ... # 0x0 + ByteOrder : QSysInfo = ... # 0x1 + LittleEndian : QSysInfo = ... # 0x1 + WV_32s : QSysInfo = ... # 0x1 + WV_95 : QSysInfo = ... # 0x2 + WV_98 : QSysInfo = ... # 0x3 + WV_Me : QSysInfo = ... # 0x4 + WV_DOS_based : QSysInfo = ... # 0xf + WV_4_0 : QSysInfo = ... # 0x10 + WV_NT : QSysInfo = ... # 0x10 + WV_2000 : QSysInfo = ... # 0x20 + WV_5_0 : QSysInfo = ... # 0x20 + WV_5_1 : QSysInfo = ... # 0x30 + WV_XP : QSysInfo = ... # 0x30 + WV_2003 : QSysInfo = ... # 0x40 + WV_5_2 : QSysInfo = ... # 0x40 + WordSize : QSysInfo = ... # 0x40 + WV_6_0 : QSysInfo = ... # 0x80 + WV_VISTA : QSysInfo = ... # 0x80 + WV_6_1 : QSysInfo = ... # 0x90 + WV_WINDOWS7 : QSysInfo = ... # 0x90 + WV_6_2 : QSysInfo = ... # 0xa0 + WV_WINDOWS8 : QSysInfo = ... # 0xa0 + WV_6_3 : QSysInfo = ... # 0xb0 + WV_WINDOWS8_1 : QSysInfo = ... # 0xb0 + WV_10_0 : QSysInfo = ... # 0xc0 + WV_WINDOWS10 : QSysInfo = ... # 0xc0 + WindowsVersion : QSysInfo = ... # 0xc0 + WV_NT_based : QSysInfo = ... # 0xf0 + WV_CE : QSysInfo = ... # 0x100 + WV_CENET : QSysInfo = ... # 0x200 + WV_CE_5 : QSysInfo = ... # 0x300 + WV_CE_6 : QSysInfo = ... # 0x400 + WV_CE_based : QSysInfo = ... # 0xf00 + + class Endian(object): + BigEndian : QSysInfo.Endian = ... # 0x0 + ByteOrder : QSysInfo.Endian = ... # 0x1 + LittleEndian : QSysInfo.Endian = ... # 0x1 + + class Sizes(object): + WordSize : QSysInfo.Sizes = ... # 0x40 + + class WinVersion(object): + WV_None : QSysInfo.WinVersion = ... # 0x0 + WV_32s : QSysInfo.WinVersion = ... # 0x1 + WV_95 : QSysInfo.WinVersion = ... # 0x2 + WV_98 : QSysInfo.WinVersion = ... # 0x3 + WV_Me : QSysInfo.WinVersion = ... # 0x4 + WV_DOS_based : QSysInfo.WinVersion = ... # 0xf + WV_4_0 : QSysInfo.WinVersion = ... # 0x10 + WV_NT : QSysInfo.WinVersion = ... # 0x10 + WV_2000 : QSysInfo.WinVersion = ... # 0x20 + WV_5_0 : QSysInfo.WinVersion = ... # 0x20 + WV_5_1 : QSysInfo.WinVersion = ... # 0x30 + WV_XP : QSysInfo.WinVersion = ... # 0x30 + WV_2003 : QSysInfo.WinVersion = ... # 0x40 + WV_5_2 : QSysInfo.WinVersion = ... # 0x40 + WV_6_0 : QSysInfo.WinVersion = ... # 0x80 + WV_VISTA : QSysInfo.WinVersion = ... # 0x80 + WV_6_1 : QSysInfo.WinVersion = ... # 0x90 + WV_WINDOWS7 : QSysInfo.WinVersion = ... # 0x90 + WV_6_2 : QSysInfo.WinVersion = ... # 0xa0 + WV_WINDOWS8 : QSysInfo.WinVersion = ... # 0xa0 + WV_6_3 : QSysInfo.WinVersion = ... # 0xb0 + WV_WINDOWS8_1 : QSysInfo.WinVersion = ... # 0xb0 + WV_10_0 : QSysInfo.WinVersion = ... # 0xc0 + WV_WINDOWS10 : QSysInfo.WinVersion = ... # 0xc0 + WV_NT_based : QSysInfo.WinVersion = ... # 0xf0 + WV_CE : QSysInfo.WinVersion = ... # 0x100 + WV_CENET : QSysInfo.WinVersion = ... # 0x200 + WV_CE_5 : QSysInfo.WinVersion = ... # 0x300 + WV_CE_6 : QSysInfo.WinVersion = ... # 0x400 + WV_CE_based : QSysInfo.WinVersion = ... # 0xf00 + + def __init__(self) -> None: ... + + @staticmethod + def bootUniqueId() -> PySide2.QtCore.QByteArray: ... + @staticmethod + def buildAbi() -> str: ... + @staticmethod + def buildCpuArchitecture() -> str: ... + @staticmethod + def currentCpuArchitecture() -> str: ... + @staticmethod + def kernelType() -> str: ... + @staticmethod + def kernelVersion() -> str: ... + @staticmethod + def machineHostName() -> str: ... + @staticmethod + def machineUniqueId() -> PySide2.QtCore.QByteArray: ... + @staticmethod + def prettyProductName() -> str: ... + @staticmethod + def productType() -> str: ... + @staticmethod + def productVersion() -> str: ... + @staticmethod + def windowsVersion() -> PySide2.QtCore.QSysInfo.WinVersion: ... + + +class QSystemSemaphore(Shiboken.Object): + NoError : QSystemSemaphore = ... # 0x0 + Open : QSystemSemaphore = ... # 0x0 + Create : QSystemSemaphore = ... # 0x1 + PermissionDenied : QSystemSemaphore = ... # 0x1 + KeyError : QSystemSemaphore = ... # 0x2 + AlreadyExists : QSystemSemaphore = ... # 0x3 + NotFound : QSystemSemaphore = ... # 0x4 + OutOfResources : QSystemSemaphore = ... # 0x5 + UnknownError : QSystemSemaphore = ... # 0x6 + + class AccessMode(object): + Open : QSystemSemaphore.AccessMode = ... # 0x0 + Create : QSystemSemaphore.AccessMode = ... # 0x1 + + class SystemSemaphoreError(object): + NoError : QSystemSemaphore.SystemSemaphoreError = ... # 0x0 + PermissionDenied : QSystemSemaphore.SystemSemaphoreError = ... # 0x1 + KeyError : QSystemSemaphore.SystemSemaphoreError = ... # 0x2 + AlreadyExists : QSystemSemaphore.SystemSemaphoreError = ... # 0x3 + NotFound : QSystemSemaphore.SystemSemaphoreError = ... # 0x4 + OutOfResources : QSystemSemaphore.SystemSemaphoreError = ... # 0x5 + UnknownError : QSystemSemaphore.SystemSemaphoreError = ... # 0x6 + + def __init__(self, key:str, initialValue:int=..., mode:PySide2.QtCore.QSystemSemaphore.AccessMode=...) -> None: ... + + def acquire(self) -> bool: ... + def error(self) -> PySide2.QtCore.QSystemSemaphore.SystemSemaphoreError: ... + def errorString(self) -> str: ... + def key(self) -> str: ... + def release(self, n:int=...) -> bool: ... + def setKey(self, key:str, initialValue:int=..., mode:PySide2.QtCore.QSystemSemaphore.AccessMode=...) -> None: ... + + +class QTemporaryDir(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, templateName:str) -> None: ... + + def autoRemove(self) -> bool: ... + def errorString(self) -> str: ... + def filePath(self, fileName:str) -> str: ... + def isValid(self) -> bool: ... + def path(self) -> str: ... + def remove(self) -> bool: ... + def setAutoRemove(self, b:bool) -> None: ... + + +class QTemporaryFile(PySide2.QtCore.QFile): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + @typing.overload + def __init__(self, templateName:str) -> None: ... + @typing.overload + def __init__(self, templateName:str, parent:PySide2.QtCore.QObject) -> None: ... + + def autoRemove(self) -> bool: ... + @typing.overload + @staticmethod + def createLocalFile(file:PySide2.QtCore.QFile) -> PySide2.QtCore.QTemporaryFile: ... + @typing.overload + @staticmethod + def createLocalFile(fileName:str) -> PySide2.QtCore.QTemporaryFile: ... + @typing.overload + @staticmethod + def createNativeFile(file:PySide2.QtCore.QFile) -> PySide2.QtCore.QTemporaryFile: ... + @typing.overload + @staticmethod + def createNativeFile(fileName:str) -> PySide2.QtCore.QTemporaryFile: ... + def fileName(self) -> str: ... + def fileTemplate(self) -> str: ... + @typing.overload + def open(self) -> bool: ... + @typing.overload + def open(self, flags:PySide2.QtCore.QIODevice.OpenMode) -> bool: ... + def rename(self, newName:str) -> bool: ... + def setAutoRemove(self, b:bool) -> None: ... + def setFileTemplate(self, name:str) -> None: ... + + +class QTextBoundaryFinder(Shiboken.Object): + Grapheme : QTextBoundaryFinder = ... # 0x0 + NotAtBoundary : QTextBoundaryFinder = ... # 0x0 + Word : QTextBoundaryFinder = ... # 0x1 + Sentence : QTextBoundaryFinder = ... # 0x2 + Line : QTextBoundaryFinder = ... # 0x3 + BreakOpportunity : QTextBoundaryFinder = ... # 0x1f + StartOfItem : QTextBoundaryFinder = ... # 0x20 + EndOfItem : QTextBoundaryFinder = ... # 0x40 + MandatoryBreak : QTextBoundaryFinder = ... # 0x80 + SoftHyphen : QTextBoundaryFinder = ... # 0x100 + + class BoundaryReason(object): + NotAtBoundary : QTextBoundaryFinder.BoundaryReason = ... # 0x0 + BreakOpportunity : QTextBoundaryFinder.BoundaryReason = ... # 0x1f + StartOfItem : QTextBoundaryFinder.BoundaryReason = ... # 0x20 + EndOfItem : QTextBoundaryFinder.BoundaryReason = ... # 0x40 + MandatoryBreak : QTextBoundaryFinder.BoundaryReason = ... # 0x80 + SoftHyphen : QTextBoundaryFinder.BoundaryReason = ... # 0x100 + + class BoundaryReasons(object): ... + + class BoundaryType(object): + Grapheme : QTextBoundaryFinder.BoundaryType = ... # 0x0 + Word : QTextBoundaryFinder.BoundaryType = ... # 0x1 + Sentence : QTextBoundaryFinder.BoundaryType = ... # 0x2 + Line : QTextBoundaryFinder.BoundaryType = ... # 0x3 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtCore.QTextBoundaryFinder) -> None: ... + @typing.overload + def __init__(self, type:PySide2.QtCore.QTextBoundaryFinder.BoundaryType, string:str) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def boundaryReasons(self) -> PySide2.QtCore.QTextBoundaryFinder.BoundaryReasons: ... + def isAtBoundary(self) -> bool: ... + def isValid(self) -> bool: ... + def position(self) -> int: ... + def setPosition(self, position:int) -> None: ... + def string(self) -> str: ... + def toEnd(self) -> None: ... + def toNextBoundary(self) -> int: ... + def toPreviousBoundary(self) -> int: ... + def toStart(self) -> None: ... + def type(self) -> PySide2.QtCore.QTextBoundaryFinder.BoundaryType: ... + + +class QTextCodec(Shiboken.Object): + ConvertInvalidToNull : QTextCodec = ... # -0x80000000 + DefaultConversion : QTextCodec = ... # 0x0 + IgnoreHeader : QTextCodec = ... # 0x1 + FreeFunction : QTextCodec = ... # 0x2 + + class ConversionFlag(object): + ConvertInvalidToNull : QTextCodec.ConversionFlag = ... # -0x80000000 + DefaultConversion : QTextCodec.ConversionFlag = ... # 0x0 + IgnoreHeader : QTextCodec.ConversionFlag = ... # 0x1 + FreeFunction : QTextCodec.ConversionFlag = ... # 0x2 + + class ConversionFlags(object): ... + + class ConverterState(Shiboken.Object): + + def __init__(self, f:PySide2.QtCore.QTextCodec.ConversionFlags=...) -> None: ... + + + def __init__(self) -> None: ... + + def aliases(self) -> typing.List: ... + @staticmethod + def availableCodecs() -> typing.List: ... + @staticmethod + def availableMibs() -> typing.List: ... + @typing.overload + def canEncode(self, arg__1:str) -> bool: ... + @typing.overload + def canEncode(self, arg__1:str) -> bool: ... + @typing.overload + @staticmethod + def codecForHtml(ba:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QTextCodec: ... + @typing.overload + @staticmethod + def codecForHtml(ba:PySide2.QtCore.QByteArray, defaultCodec:PySide2.QtCore.QTextCodec) -> PySide2.QtCore.QTextCodec: ... + @staticmethod + def codecForLocale() -> PySide2.QtCore.QTextCodec: ... + @staticmethod + def codecForMib(mib:int) -> PySide2.QtCore.QTextCodec: ... + @typing.overload + @staticmethod + def codecForName(name:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QTextCodec: ... + @typing.overload + @staticmethod + def codecForName(name:bytes) -> PySide2.QtCore.QTextCodec: ... + @typing.overload + @staticmethod + def codecForUtfText(ba:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QTextCodec: ... + @typing.overload + @staticmethod + def codecForUtfText(ba:PySide2.QtCore.QByteArray, defaultCodec:PySide2.QtCore.QTextCodec) -> PySide2.QtCore.QTextCodec: ... + def convertToUnicode(self, in_:bytes, length:int, state:PySide2.QtCore.QTextCodec.ConverterState) -> str: ... + def fromUnicode(self, uc:str) -> PySide2.QtCore.QByteArray: ... + def makeDecoder(self, flags:PySide2.QtCore.QTextCodec.ConversionFlags=...) -> PySide2.QtCore.QTextDecoder: ... + def makeEncoder(self, flags:PySide2.QtCore.QTextCodec.ConversionFlags=...) -> PySide2.QtCore.QTextEncoder: ... + def mibEnum(self) -> int: ... + def name(self) -> PySide2.QtCore.QByteArray: ... + @staticmethod + def setCodecForLocale(c:PySide2.QtCore.QTextCodec) -> None: ... + @typing.overload + def toUnicode(self, arg__1:PySide2.QtCore.QByteArray) -> str: ... + @typing.overload + def toUnicode(self, chars:bytes) -> str: ... + @typing.overload + def toUnicode(self, in_:bytes, length:int, state:typing.Optional[PySide2.QtCore.QTextCodec.ConverterState]=...) -> str: ... + + +class QTextDecoder(Shiboken.Object): + + @typing.overload + def __init__(self, codec:PySide2.QtCore.QTextCodec) -> None: ... + @typing.overload + def __init__(self, codec:PySide2.QtCore.QTextCodec, flags:PySide2.QtCore.QTextCodec.ConversionFlags) -> None: ... + + def hasFailure(self) -> bool: ... + def needsMoreData(self) -> bool: ... + def toUnicode(self, ba:PySide2.QtCore.QByteArray) -> str: ... + + +class QTextEncoder(Shiboken.Object): + + @typing.overload + def __init__(self, codec:PySide2.QtCore.QTextCodec) -> None: ... + @typing.overload + def __init__(self, codec:PySide2.QtCore.QTextCodec, flags:PySide2.QtCore.QTextCodec.ConversionFlags) -> None: ... + + def fromUnicode(self, str:str) -> PySide2.QtCore.QByteArray: ... + def hasFailure(self) -> bool: ... + + +class QTextStream(Shiboken.Object): + AlignLeft : QTextStream = ... # 0x0 + Ok : QTextStream = ... # 0x0 + SmartNotation : QTextStream = ... # 0x0 + AlignRight : QTextStream = ... # 0x1 + FixedNotation : QTextStream = ... # 0x1 + ReadPastEnd : QTextStream = ... # 0x1 + ShowBase : QTextStream = ... # 0x1 + AlignCenter : QTextStream = ... # 0x2 + ForcePoint : QTextStream = ... # 0x2 + ReadCorruptData : QTextStream = ... # 0x2 + ScientificNotation : QTextStream = ... # 0x2 + AlignAccountingStyle : QTextStream = ... # 0x3 + WriteFailed : QTextStream = ... # 0x3 + ForceSign : QTextStream = ... # 0x4 + UppercaseBase : QTextStream = ... # 0x8 + UppercaseDigits : QTextStream = ... # 0x10 + + class FieldAlignment(object): + AlignLeft : QTextStream.FieldAlignment = ... # 0x0 + AlignRight : QTextStream.FieldAlignment = ... # 0x1 + AlignCenter : QTextStream.FieldAlignment = ... # 0x2 + AlignAccountingStyle : QTextStream.FieldAlignment = ... # 0x3 + + class NumberFlag(object): + ShowBase : QTextStream.NumberFlag = ... # 0x1 + ForcePoint : QTextStream.NumberFlag = ... # 0x2 + ForceSign : QTextStream.NumberFlag = ... # 0x4 + UppercaseBase : QTextStream.NumberFlag = ... # 0x8 + UppercaseDigits : QTextStream.NumberFlag = ... # 0x10 + + class NumberFlags(object): ... + + class RealNumberNotation(object): + SmartNotation : QTextStream.RealNumberNotation = ... # 0x0 + FixedNotation : QTextStream.RealNumberNotation = ... # 0x1 + ScientificNotation : QTextStream.RealNumberNotation = ... # 0x2 + + class Status(object): + Ok : QTextStream.Status = ... # 0x0 + ReadPastEnd : QTextStream.Status = ... # 0x1 + ReadCorruptData : QTextStream.Status = ... # 0x2 + WriteFailed : QTextStream.Status = ... # 0x3 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, array:PySide2.QtCore.QByteArray, openMode:PySide2.QtCore.QIODevice.OpenMode=...) -> None: ... + @typing.overload + def __init__(self, device:PySide2.QtCore.QIODevice) -> None: ... + + @typing.overload + def __lshift__(self, array:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QTextStream: ... + @typing.overload + def __lshift__(self, ch:str) -> PySide2.QtCore.QTextStream: ... + @typing.overload + def __lshift__(self, ch:int) -> PySide2.QtCore.QTextStream: ... + @typing.overload + def __lshift__(self, f:float) -> PySide2.QtCore.QTextStream: ... + @typing.overload + def __lshift__(self, i:int) -> PySide2.QtCore.QTextStream: ... + @typing.overload + def __lshift__(self, i:int) -> PySide2.QtCore.QTextStream: ... + @typing.overload + def __lshift__(self, m:PySide2.QtCore.QTextStreamManipulator) -> PySide2.QtCore.QTextStream: ... + @typing.overload + def __lshift__(self, s:str) -> PySide2.QtCore.QTextStream: ... + @typing.overload + def __lshift__(self, s:str) -> PySide2.QtCore.QTextStream: ... + def __rshift__(self, array:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QTextStream: ... + def atEnd(self) -> bool: ... + def autoDetectUnicode(self) -> bool: ... + def codec(self) -> PySide2.QtCore.QTextCodec: ... + def device(self) -> PySide2.QtCore.QIODevice: ... + def fieldAlignment(self) -> PySide2.QtCore.QTextStream.FieldAlignment: ... + def fieldWidth(self) -> int: ... + def flush(self) -> None: ... + def generateByteOrderMark(self) -> bool: ... + def integerBase(self) -> int: ... + def locale(self) -> PySide2.QtCore.QLocale: ... + def numberFlags(self) -> PySide2.QtCore.QTextStream.NumberFlags: ... + def padChar(self) -> str: ... + def pos(self) -> int: ... + def read(self, maxlen:int) -> str: ... + def readAll(self) -> str: ... + def readLine(self, maxlen:int=...) -> str: ... + def realNumberNotation(self) -> PySide2.QtCore.QTextStream.RealNumberNotation: ... + def realNumberPrecision(self) -> int: ... + def reset(self) -> None: ... + def resetStatus(self) -> None: ... + def seek(self, pos:int) -> bool: ... + def setAutoDetectUnicode(self, enabled:bool) -> None: ... + @typing.overload + def setCodec(self, codec:PySide2.QtCore.QTextCodec) -> None: ... + @typing.overload + def setCodec(self, codecName:bytes) -> None: ... + def setDevice(self, device:PySide2.QtCore.QIODevice) -> None: ... + def setFieldAlignment(self, alignment:PySide2.QtCore.QTextStream.FieldAlignment) -> None: ... + def setFieldWidth(self, width:int) -> None: ... + def setGenerateByteOrderMark(self, generate:bool) -> None: ... + def setIntegerBase(self, base:int) -> None: ... + def setLocale(self, locale:PySide2.QtCore.QLocale) -> None: ... + def setNumberFlags(self, flags:PySide2.QtCore.QTextStream.NumberFlags) -> None: ... + def setPadChar(self, ch:str) -> None: ... + def setRealNumberNotation(self, notation:PySide2.QtCore.QTextStream.RealNumberNotation) -> None: ... + def setRealNumberPrecision(self, precision:int) -> None: ... + def setStatus(self, status:PySide2.QtCore.QTextStream.Status) -> None: ... + def skipWhiteSpace(self) -> None: ... + def status(self) -> PySide2.QtCore.QTextStream.Status: ... + def string(self) -> typing.List: ... + + +class QTextStreamManipulator(Shiboken.Object): + @staticmethod + def __copy__() -> None: ... + def exec_(self, s:PySide2.QtCore.QTextStream) -> None: ... + + +class QThread(PySide2.QtCore.QObject): + IdlePriority : QThread = ... # 0x0 + LowestPriority : QThread = ... # 0x1 + LowPriority : QThread = ... # 0x2 + NormalPriority : QThread = ... # 0x3 + HighPriority : QThread = ... # 0x4 + HighestPriority : QThread = ... # 0x5 + TimeCriticalPriority : QThread = ... # 0x6 + InheritPriority : QThread = ... # 0x7 + + class Priority(object): + IdlePriority : QThread.Priority = ... # 0x0 + LowestPriority : QThread.Priority = ... # 0x1 + LowPriority : QThread.Priority = ... # 0x2 + NormalPriority : QThread.Priority = ... # 0x3 + HighPriority : QThread.Priority = ... # 0x4 + HighestPriority : QThread.Priority = ... # 0x5 + TimeCriticalPriority : QThread.Priority = ... # 0x6 + InheritPriority : QThread.Priority = ... # 0x7 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + @staticmethod + def currentThread() -> PySide2.QtCore.QThread: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def eventDispatcher(self) -> PySide2.QtCore.QAbstractEventDispatcher: ... + def exec_(self) -> int: ... + def exit(self, retcode:int=...) -> None: ... + @staticmethod + def idealThreadCount() -> int: ... + def isFinished(self) -> bool: ... + def isInterruptionRequested(self) -> bool: ... + def isRunning(self) -> bool: ... + def loopLevel(self) -> int: ... + @staticmethod + def msleep(arg__1:int) -> None: ... + def priority(self) -> PySide2.QtCore.QThread.Priority: ... + def quit(self) -> None: ... + def requestInterruption(self) -> None: ... + def run(self) -> None: ... + def setEventDispatcher(self, eventDispatcher:PySide2.QtCore.QAbstractEventDispatcher) -> None: ... + def setPriority(self, priority:PySide2.QtCore.QThread.Priority) -> None: ... + def setStackSize(self, stackSize:int) -> None: ... + @staticmethod + def setTerminationEnabled(enabled:bool=...) -> None: ... + @staticmethod + def sleep(arg__1:int) -> None: ... + def stackSize(self) -> int: ... + def start(self, priority:PySide2.QtCore.QThread.Priority=...) -> None: ... + def terminate(self) -> None: ... + @staticmethod + def usleep(arg__1:int) -> None: ... + @typing.overload + def wait(self, deadline:PySide2.QtCore.QDeadlineTimer=...) -> bool: ... + @typing.overload + def wait(self, time:int) -> bool: ... + @staticmethod + def yieldCurrentThread() -> None: ... + + +class QThreadPool(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def activeThreadCount(self) -> int: ... + def cancel(self, runnable:PySide2.QtCore.QRunnable) -> None: ... + def clear(self) -> None: ... + def contains(self, thread:PySide2.QtCore.QThread) -> bool: ... + def expiryTimeout(self) -> int: ... + @staticmethod + def globalInstance() -> PySide2.QtCore.QThreadPool: ... + def maxThreadCount(self) -> int: ... + def releaseThread(self) -> None: ... + def reserveThread(self) -> None: ... + def setExpiryTimeout(self, expiryTimeout:int) -> None: ... + def setMaxThreadCount(self, maxThreadCount:int) -> None: ... + def setStackSize(self, stackSize:int) -> None: ... + def stackSize(self) -> int: ... + def start(self, runnable:PySide2.QtCore.QRunnable, priority:int=...) -> None: ... + def tryStart(self, runnable:PySide2.QtCore.QRunnable) -> bool: ... + def tryTake(self, runnable:PySide2.QtCore.QRunnable) -> bool: ... + def waitForDone(self, msecs:int=...) -> bool: ... + + +class QTime(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QTime:PySide2.QtCore.QTime) -> None: ... + @typing.overload + def __init__(self, h:int, m:int, s:int=..., ms:int=...) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + def addMSecs(self, ms:int) -> PySide2.QtCore.QTime: ... + def addSecs(self, secs:int) -> PySide2.QtCore.QTime: ... + @staticmethod + def currentTime() -> PySide2.QtCore.QTime: ... + def elapsed(self) -> int: ... + @staticmethod + def fromMSecsSinceStartOfDay(msecs:int) -> PySide2.QtCore.QTime: ... + @typing.overload + @staticmethod + def fromString(s:str, f:PySide2.QtCore.Qt.DateFormat=...) -> PySide2.QtCore.QTime: ... + @typing.overload + @staticmethod + def fromString(s:str, format:str) -> PySide2.QtCore.QTime: ... + def hour(self) -> int: ... + def isNull(self) -> bool: ... + @typing.overload + @staticmethod + def isValid(h:int, m:int, s:int, ms:int=...) -> bool: ... + @typing.overload + def isValid(self) -> bool: ... + def minute(self) -> int: ... + def msec(self) -> int: ... + def msecsSinceStartOfDay(self) -> int: ... + def msecsTo(self, arg__1:PySide2.QtCore.QTime) -> int: ... + def restart(self) -> int: ... + def second(self) -> int: ... + def secsTo(self, arg__1:PySide2.QtCore.QTime) -> int: ... + def setHMS(self, h:int, m:int, s:int, ms:int=...) -> bool: ... + def start(self) -> None: ... + def toPython(self) -> object: ... + @typing.overload + def toString(self, f:PySide2.QtCore.Qt.DateFormat=...) -> str: ... + @typing.overload + def toString(self, format:str) -> str: ... + + +class QTimeLine(PySide2.QtCore.QObject): + EaseInCurve : QTimeLine = ... # 0x0 + Forward : QTimeLine = ... # 0x0 + NotRunning : QTimeLine = ... # 0x0 + Backward : QTimeLine = ... # 0x1 + EaseOutCurve : QTimeLine = ... # 0x1 + Paused : QTimeLine = ... # 0x1 + EaseInOutCurve : QTimeLine = ... # 0x2 + Running : QTimeLine = ... # 0x2 + LinearCurve : QTimeLine = ... # 0x3 + SineCurve : QTimeLine = ... # 0x4 + CosineCurve : QTimeLine = ... # 0x5 + + class CurveShape(object): + EaseInCurve : QTimeLine.CurveShape = ... # 0x0 + EaseOutCurve : QTimeLine.CurveShape = ... # 0x1 + EaseInOutCurve : QTimeLine.CurveShape = ... # 0x2 + LinearCurve : QTimeLine.CurveShape = ... # 0x3 + SineCurve : QTimeLine.CurveShape = ... # 0x4 + CosineCurve : QTimeLine.CurveShape = ... # 0x5 + + class Direction(object): + Forward : QTimeLine.Direction = ... # 0x0 + Backward : QTimeLine.Direction = ... # 0x1 + + class State(object): + NotRunning : QTimeLine.State = ... # 0x0 + Paused : QTimeLine.State = ... # 0x1 + Running : QTimeLine.State = ... # 0x2 + + def __init__(self, duration:int=..., parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def currentFrame(self) -> int: ... + def currentTime(self) -> int: ... + def currentValue(self) -> float: ... + def curveShape(self) -> PySide2.QtCore.QTimeLine.CurveShape: ... + def direction(self) -> PySide2.QtCore.QTimeLine.Direction: ... + def duration(self) -> int: ... + def easingCurve(self) -> PySide2.QtCore.QEasingCurve: ... + def endFrame(self) -> int: ... + def frameForTime(self, msec:int) -> int: ... + def loopCount(self) -> int: ... + def resume(self) -> None: ... + def setCurrentTime(self, msec:int) -> None: ... + def setCurveShape(self, shape:PySide2.QtCore.QTimeLine.CurveShape) -> None: ... + def setDirection(self, direction:PySide2.QtCore.QTimeLine.Direction) -> None: ... + def setDuration(self, duration:int) -> None: ... + def setEasingCurve(self, curve:PySide2.QtCore.QEasingCurve) -> None: ... + def setEndFrame(self, frame:int) -> None: ... + def setFrameRange(self, startFrame:int, endFrame:int) -> None: ... + def setLoopCount(self, count:int) -> None: ... + def setPaused(self, paused:bool) -> None: ... + def setStartFrame(self, frame:int) -> None: ... + def setUpdateInterval(self, interval:int) -> None: ... + def start(self) -> None: ... + def startFrame(self) -> int: ... + def state(self) -> PySide2.QtCore.QTimeLine.State: ... + def stop(self) -> None: ... + def timerEvent(self, event:PySide2.QtCore.QTimerEvent) -> None: ... + def toggleDirection(self) -> None: ... + def updateInterval(self) -> int: ... + def valueForTime(self, msec:int) -> float: ... + + +class QTimeZone(Shiboken.Object): + DefaultName : QTimeZone = ... # 0x0 + StandardTime : QTimeZone = ... # 0x0 + DaylightTime : QTimeZone = ... # 0x1 + LongName : QTimeZone = ... # 0x1 + GenericTime : QTimeZone = ... # 0x2 + ShortName : QTimeZone = ... # 0x2 + OffsetName : QTimeZone = ... # 0x3 + + class NameType(object): + DefaultName : QTimeZone.NameType = ... # 0x0 + LongName : QTimeZone.NameType = ... # 0x1 + ShortName : QTimeZone.NameType = ... # 0x2 + OffsetName : QTimeZone.NameType = ... # 0x3 + + class OffsetData(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, OffsetData:PySide2.QtCore.QTimeZone.OffsetData) -> None: ... + + @staticmethod + def __copy__() -> None: ... + + class TimeType(object): + StandardTime : QTimeZone.TimeType = ... # 0x0 + DaylightTime : QTimeZone.TimeType = ... # 0x1 + GenericTime : QTimeZone.TimeType = ... # 0x2 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, ianaId:PySide2.QtCore.QByteArray) -> None: ... + @typing.overload + def __init__(self, offsetSeconds:int) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtCore.QTimeZone) -> None: ... + @typing.overload + def __init__(self, zoneId:PySide2.QtCore.QByteArray, offsetSeconds:int, name:str, abbreviation:str, country:PySide2.QtCore.QLocale.Country=..., comment:str=...) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def abbreviation(self, atDateTime:PySide2.QtCore.QDateTime) -> str: ... + @typing.overload + @staticmethod + def availableTimeZoneIds() -> typing.List: ... + @typing.overload + @staticmethod + def availableTimeZoneIds(country:PySide2.QtCore.QLocale.Country) -> typing.List: ... + @typing.overload + @staticmethod + def availableTimeZoneIds(offsetSeconds:int) -> typing.List: ... + def comment(self) -> str: ... + def country(self) -> PySide2.QtCore.QLocale.Country: ... + def daylightTimeOffset(self, atDateTime:PySide2.QtCore.QDateTime) -> int: ... + @typing.overload + def displayName(self, atDateTime:PySide2.QtCore.QDateTime, nameType:PySide2.QtCore.QTimeZone.NameType=..., locale:PySide2.QtCore.QLocale=...) -> str: ... + @typing.overload + def displayName(self, timeType:PySide2.QtCore.QTimeZone.TimeType, nameType:PySide2.QtCore.QTimeZone.NameType=..., locale:PySide2.QtCore.QLocale=...) -> str: ... + def hasDaylightTime(self) -> bool: ... + def hasTransitions(self) -> bool: ... + @staticmethod + def ianaIdToWindowsId(ianaId:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QByteArray: ... + def id(self) -> PySide2.QtCore.QByteArray: ... + def isDaylightTime(self, atDateTime:PySide2.QtCore.QDateTime) -> bool: ... + @staticmethod + def isTimeZoneIdAvailable(ianaId:PySide2.QtCore.QByteArray) -> bool: ... + def isValid(self) -> bool: ... + def nextTransition(self, afterDateTime:PySide2.QtCore.QDateTime) -> PySide2.QtCore.QTimeZone.OffsetData: ... + def offsetData(self, forDateTime:PySide2.QtCore.QDateTime) -> PySide2.QtCore.QTimeZone.OffsetData: ... + def offsetFromUtc(self, atDateTime:PySide2.QtCore.QDateTime) -> int: ... + def previousTransition(self, beforeDateTime:PySide2.QtCore.QDateTime) -> PySide2.QtCore.QTimeZone.OffsetData: ... + def standardTimeOffset(self, atDateTime:PySide2.QtCore.QDateTime) -> int: ... + def swap(self, other:PySide2.QtCore.QTimeZone) -> None: ... + @staticmethod + def systemTimeZone() -> PySide2.QtCore.QTimeZone: ... + @staticmethod + def systemTimeZoneId() -> PySide2.QtCore.QByteArray: ... + def transitions(self, fromDateTime:PySide2.QtCore.QDateTime, toDateTime:PySide2.QtCore.QDateTime) -> typing.List: ... + @staticmethod + def utc() -> PySide2.QtCore.QTimeZone: ... + @typing.overload + @staticmethod + def windowsIdToDefaultIanaId(windowsId:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QByteArray: ... + @typing.overload + @staticmethod + def windowsIdToDefaultIanaId(windowsId:PySide2.QtCore.QByteArray, country:PySide2.QtCore.QLocale.Country) -> PySide2.QtCore.QByteArray: ... + @typing.overload + @staticmethod + def windowsIdToIanaIds(windowsId:PySide2.QtCore.QByteArray) -> typing.List: ... + @typing.overload + @staticmethod + def windowsIdToIanaIds(windowsId:PySide2.QtCore.QByteArray, country:PySide2.QtCore.QLocale.Country) -> typing.List: ... + + +class QTimer(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def interval(self) -> int: ... + def isActive(self) -> bool: ... + def isSingleShot(self) -> bool: ... + def killTimer(self, arg__1:int) -> None: ... + def remainingTime(self) -> int: ... + def setInterval(self, msec:int) -> None: ... + def setSingleShot(self, singleShot:bool) -> None: ... + def setTimerType(self, atype:PySide2.QtCore.Qt.TimerType) -> None: ... + @typing.overload + @staticmethod + def singleShot(arg__1:int, arg__2:typing.Callable) -> None: ... + @typing.overload + @staticmethod + def singleShot(msec:int, receiver:PySide2.QtCore.QObject, member:bytes) -> None: ... + @typing.overload + @staticmethod + def singleShot(msec:int, timerType:PySide2.QtCore.Qt.TimerType, receiver:PySide2.QtCore.QObject, member:bytes) -> None: ... + @typing.overload + def start(self) -> None: ... + @typing.overload + def start(self, msec:int) -> None: ... + def stop(self) -> None: ... + def timerEvent(self, arg__1:PySide2.QtCore.QTimerEvent) -> None: ... + def timerId(self) -> int: ... + def timerType(self) -> PySide2.QtCore.Qt.TimerType: ... + + +class QTimerEvent(PySide2.QtCore.QEvent): + + def __init__(self, timerId:int) -> None: ... + + def timerId(self) -> int: ... + + +class QTranslator(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def filePath(self) -> str: ... + def isEmpty(self) -> bool: ... + def language(self) -> str: ... + @typing.overload + def load(self, data:bytes, len:int, directory:str=...) -> bool: ... + @typing.overload + def load(self, filename:str, directory:str=..., search_delimiters:str=..., suffix:str=...) -> bool: ... + @typing.overload + def load(self, locale:PySide2.QtCore.QLocale, filename:str, prefix:str=..., directory:str=..., suffix:str=...) -> bool: ... + def translate(self, context:bytes, sourceText:bytes, disambiguation:typing.Optional[bytes]=..., n:int=...) -> str: ... + + +class QTransposeProxyModel(PySide2.QtCore.QAbstractProxyModel): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def columnCount(self, parent:PySide2.QtCore.QModelIndex=...) -> int: ... + def headerData(self, section:int, orientation:PySide2.QtCore.Qt.Orientation, role:int=...) -> typing.Any: ... + def index(self, row:int, column:int, parent:PySide2.QtCore.QModelIndex=...) -> PySide2.QtCore.QModelIndex: ... + def insertColumns(self, column:int, count:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def insertRows(self, row:int, count:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def itemData(self, index:PySide2.QtCore.QModelIndex) -> typing.Dict: ... + def mapFromSource(self, sourceIndex:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def mapToSource(self, proxyIndex:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def moveColumns(self, sourceParent:PySide2.QtCore.QModelIndex, sourceColumn:int, count:int, destinationParent:PySide2.QtCore.QModelIndex, destinationChild:int) -> bool: ... + def moveRows(self, sourceParent:PySide2.QtCore.QModelIndex, sourceRow:int, count:int, destinationParent:PySide2.QtCore.QModelIndex, destinationChild:int) -> bool: ... + @typing.overload + def parent(self) -> PySide2.QtCore.QObject: ... + @typing.overload + def parent(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def removeColumns(self, column:int, count:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def removeRows(self, row:int, count:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def rowCount(self, parent:PySide2.QtCore.QModelIndex=...) -> int: ... + def setHeaderData(self, section:int, orientation:PySide2.QtCore.Qt.Orientation, value:typing.Any, role:int=...) -> bool: ... + def setItemData(self, index:PySide2.QtCore.QModelIndex, roles:typing.Dict) -> bool: ... + def setSourceModel(self, newSourceModel:PySide2.QtCore.QAbstractItemModel) -> None: ... + def sort(self, column:int, order:PySide2.QtCore.Qt.SortOrder=...) -> None: ... + def span(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QSize: ... + + +class QUrl(Shiboken.Object): + DefaultResolution : QUrl = ... # 0x0 + None_ : QUrl = ... # 0x0 + PrettyDecoded : QUrl = ... # 0x0 + TolerantMode : QUrl = ... # 0x0 + AssumeLocalFile : QUrl = ... # 0x1 + RemoveScheme : QUrl = ... # 0x1 + StrictMode : QUrl = ... # 0x1 + DecodedMode : QUrl = ... # 0x2 + RemovePassword : QUrl = ... # 0x2 + RemoveUserInfo : QUrl = ... # 0x6 + RemovePort : QUrl = ... # 0x8 + RemoveAuthority : QUrl = ... # 0x1e + RemovePath : QUrl = ... # 0x20 + RemoveQuery : QUrl = ... # 0x40 + RemoveFragment : QUrl = ... # 0x80 + PreferLocalFile : QUrl = ... # 0x200 + StripTrailingSlash : QUrl = ... # 0x400 + RemoveFilename : QUrl = ... # 0x800 + NormalizePathSegments : QUrl = ... # 0x1000 + EncodeSpaces : QUrl = ... # 0x100000 + EncodeUnicode : QUrl = ... # 0x200000 + EncodeDelimiters : QUrl = ... # 0xc00000 + EncodeReserved : QUrl = ... # 0x1000000 + FullyEncoded : QUrl = ... # 0x1f00000 + DecodeReserved : QUrl = ... # 0x2000000 + FullyDecoded : QUrl = ... # 0x7f00000 + + class ComponentFormattingOption(object): + PrettyDecoded : QUrl.ComponentFormattingOption = ... # 0x0 + EncodeSpaces : QUrl.ComponentFormattingOption = ... # 0x100000 + EncodeUnicode : QUrl.ComponentFormattingOption = ... # 0x200000 + EncodeDelimiters : QUrl.ComponentFormattingOption = ... # 0xc00000 + EncodeReserved : QUrl.ComponentFormattingOption = ... # 0x1000000 + FullyEncoded : QUrl.ComponentFormattingOption = ... # 0x1f00000 + DecodeReserved : QUrl.ComponentFormattingOption = ... # 0x2000000 + FullyDecoded : QUrl.ComponentFormattingOption = ... # 0x7f00000 + + class FormattingOptions(object): ... + + class ParsingMode(object): + TolerantMode : QUrl.ParsingMode = ... # 0x0 + StrictMode : QUrl.ParsingMode = ... # 0x1 + DecodedMode : QUrl.ParsingMode = ... # 0x2 + + class UrlFormattingOption(object): + None_ : QUrl.UrlFormattingOption = ... # 0x0 + RemoveScheme : QUrl.UrlFormattingOption = ... # 0x1 + RemovePassword : QUrl.UrlFormattingOption = ... # 0x2 + RemoveUserInfo : QUrl.UrlFormattingOption = ... # 0x6 + RemovePort : QUrl.UrlFormattingOption = ... # 0x8 + RemoveAuthority : QUrl.UrlFormattingOption = ... # 0x1e + RemovePath : QUrl.UrlFormattingOption = ... # 0x20 + RemoveQuery : QUrl.UrlFormattingOption = ... # 0x40 + RemoveFragment : QUrl.UrlFormattingOption = ... # 0x80 + PreferLocalFile : QUrl.UrlFormattingOption = ... # 0x200 + StripTrailingSlash : QUrl.UrlFormattingOption = ... # 0x400 + RemoveFilename : QUrl.UrlFormattingOption = ... # 0x800 + NormalizePathSegments : QUrl.UrlFormattingOption = ... # 0x1000 + + class UserInputResolutionOption(object): + DefaultResolution : QUrl.UserInputResolutionOption = ... # 0x0 + AssumeLocalFile : QUrl.UserInputResolutionOption = ... # 0x1 + + class UserInputResolutionOptions(object): ... + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, copy:PySide2.QtCore.QUrl) -> None: ... + @typing.overload + def __init__(self, url:str, mode:PySide2.QtCore.QUrl.ParsingMode=...) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + def adjusted(self, options:PySide2.QtCore.QUrl.FormattingOptions) -> PySide2.QtCore.QUrl: ... + def authority(self, options:PySide2.QtCore.QUrl.ComponentFormattingOption=...) -> str: ... + def clear(self) -> None: ... + def errorString(self) -> str: ... + def fileName(self, options:PySide2.QtCore.QUrl.ComponentFormattingOption=...) -> str: ... + def fragment(self, options:PySide2.QtCore.QUrl.ComponentFormattingOption=...) -> str: ... + @staticmethod + def fromAce(arg__1:PySide2.QtCore.QByteArray) -> str: ... + @staticmethod + def fromEncoded(url:PySide2.QtCore.QByteArray, mode:PySide2.QtCore.QUrl.ParsingMode=...) -> PySide2.QtCore.QUrl: ... + @staticmethod + def fromLocalFile(localfile:str) -> PySide2.QtCore.QUrl: ... + @staticmethod + def fromPercentEncoding(arg__1:PySide2.QtCore.QByteArray) -> str: ... + @staticmethod + def fromStringList(uris:typing.Sequence, mode:PySide2.QtCore.QUrl.ParsingMode=...) -> typing.List: ... + @typing.overload + @staticmethod + def fromUserInput(userInput:str) -> PySide2.QtCore.QUrl: ... + @typing.overload + @staticmethod + def fromUserInput(userInput:str, workingDirectory:str, options:PySide2.QtCore.QUrl.UserInputResolutionOptions=...) -> PySide2.QtCore.QUrl: ... + def hasFragment(self) -> bool: ... + def hasQuery(self) -> bool: ... + def host(self, arg__1:PySide2.QtCore.QUrl.ComponentFormattingOption=...) -> str: ... + @staticmethod + def idnWhitelist() -> typing.List: ... + def isEmpty(self) -> bool: ... + def isLocalFile(self) -> bool: ... + def isParentOf(self, url:PySide2.QtCore.QUrl) -> bool: ... + def isRelative(self) -> bool: ... + def isValid(self) -> bool: ... + def matches(self, url:PySide2.QtCore.QUrl, options:PySide2.QtCore.QUrl.FormattingOptions) -> bool: ... + def password(self, arg__1:PySide2.QtCore.QUrl.ComponentFormattingOption=...) -> str: ... + def path(self, options:PySide2.QtCore.QUrl.ComponentFormattingOption=...) -> str: ... + def port(self, defaultPort:int=...) -> int: ... + def query(self, arg__1:PySide2.QtCore.QUrl.ComponentFormattingOption=...) -> str: ... + def resolved(self, relative:PySide2.QtCore.QUrl) -> PySide2.QtCore.QUrl: ... + def scheme(self) -> str: ... + def setAuthority(self, authority:str, mode:PySide2.QtCore.QUrl.ParsingMode=...) -> None: ... + def setFragment(self, fragment:str, mode:PySide2.QtCore.QUrl.ParsingMode=...) -> None: ... + def setHost(self, host:str, mode:PySide2.QtCore.QUrl.ParsingMode=...) -> None: ... + @staticmethod + def setIdnWhitelist(arg__1:typing.Sequence) -> None: ... + def setPassword(self, password:str, mode:PySide2.QtCore.QUrl.ParsingMode=...) -> None: ... + def setPath(self, path:str, mode:PySide2.QtCore.QUrl.ParsingMode=...) -> None: ... + def setPort(self, port:int) -> None: ... + @typing.overload + def setQuery(self, query:PySide2.QtCore.QUrlQuery) -> None: ... + @typing.overload + def setQuery(self, query:str, mode:PySide2.QtCore.QUrl.ParsingMode=...) -> None: ... + def setScheme(self, scheme:str) -> None: ... + def setUrl(self, url:str, mode:PySide2.QtCore.QUrl.ParsingMode=...) -> None: ... + def setUserInfo(self, userInfo:str, mode:PySide2.QtCore.QUrl.ParsingMode=...) -> None: ... + def setUserName(self, userName:str, mode:PySide2.QtCore.QUrl.ParsingMode=...) -> None: ... + def swap(self, other:PySide2.QtCore.QUrl) -> None: ... + @staticmethod + def toAce(arg__1:str) -> PySide2.QtCore.QByteArray: ... + def toDisplayString(self, options:PySide2.QtCore.QUrl.FormattingOptions=...) -> str: ... + def toEncoded(self, options:PySide2.QtCore.QUrl.FormattingOptions=...) -> PySide2.QtCore.QByteArray: ... + def toLocalFile(self) -> str: ... + @staticmethod + def toPercentEncoding(arg__1:str, exclude:PySide2.QtCore.QByteArray=..., include:PySide2.QtCore.QByteArray=...) -> PySide2.QtCore.QByteArray: ... + def toString(self, options:PySide2.QtCore.QUrl.FormattingOptions=...) -> str: ... + @staticmethod + def toStringList(uris:typing.Sequence, options:PySide2.QtCore.QUrl.FormattingOptions=...) -> typing.List: ... + def topLevelDomain(self, options:PySide2.QtCore.QUrl.ComponentFormattingOption=...) -> str: ... + def url(self, options:PySide2.QtCore.QUrl.FormattingOptions=...) -> str: ... + def userInfo(self, options:PySide2.QtCore.QUrl.ComponentFormattingOption=...) -> str: ... + def userName(self, options:PySide2.QtCore.QUrl.ComponentFormattingOption=...) -> str: ... + + +class QUrlQuery(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtCore.QUrlQuery) -> None: ... + @typing.overload + def __init__(self, queryString:str) -> None: ... + @typing.overload + def __init__(self, url:PySide2.QtCore.QUrl) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def addQueryItem(self, key:str, value:str) -> None: ... + def allQueryItemValues(self, key:str, encoding:PySide2.QtCore.QUrl.ComponentFormattingOption=...) -> typing.List: ... + def clear(self) -> None: ... + @staticmethod + def defaultQueryPairDelimiter() -> str: ... + @staticmethod + def defaultQueryValueDelimiter() -> str: ... + def hasQueryItem(self, key:str) -> bool: ... + def isEmpty(self) -> bool: ... + def query(self, encoding:PySide2.QtCore.QUrl.ComponentFormattingOption=...) -> str: ... + def queryItemValue(self, key:str, encoding:PySide2.QtCore.QUrl.ComponentFormattingOption=...) -> str: ... + def queryItems(self, encoding:PySide2.QtCore.QUrl.ComponentFormattingOption=...) -> typing.List: ... + def queryPairDelimiter(self) -> str: ... + def queryValueDelimiter(self) -> str: ... + def removeAllQueryItems(self, key:str) -> None: ... + def removeQueryItem(self, key:str) -> None: ... + def setQuery(self, queryString:str) -> None: ... + def setQueryDelimiters(self, valueDelimiter:str, pairDelimiter:str) -> None: ... + def setQueryItems(self, query:typing.Sequence) -> None: ... + def swap(self, other:PySide2.QtCore.QUrlQuery) -> None: ... + def toString(self, encoding:PySide2.QtCore.QUrl.ComponentFormattingOption=...) -> str: ... + + +class QUuid(Shiboken.Object): + VarUnknown : QUuid = ... # -0x1 + VerUnknown : QUuid = ... # -0x1 + NCS : QUuid = ... # 0x0 + WithBraces : QUuid = ... # 0x0 + Time : QUuid = ... # 0x1 + WithoutBraces : QUuid = ... # 0x1 + DCE : QUuid = ... # 0x2 + EmbeddedPOSIX : QUuid = ... # 0x2 + Id128 : QUuid = ... # 0x3 + Md5 : QUuid = ... # 0x3 + Name : QUuid = ... # 0x3 + Random : QUuid = ... # 0x4 + Sha1 : QUuid = ... # 0x5 + Microsoft : QUuid = ... # 0x6 + Reserved : QUuid = ... # 0x7 + + class StringFormat(object): + WithBraces : QUuid.StringFormat = ... # 0x0 + WithoutBraces : QUuid.StringFormat = ... # 0x1 + Id128 : QUuid.StringFormat = ... # 0x3 + + class Variant(object): + VarUnknown : QUuid.Variant = ... # -0x1 + NCS : QUuid.Variant = ... # 0x0 + DCE : QUuid.Variant = ... # 0x2 + Microsoft : QUuid.Variant = ... # 0x6 + Reserved : QUuid.Variant = ... # 0x7 + + class Version(object): + VerUnknown : QUuid.Version = ... # -0x1 + Time : QUuid.Version = ... # 0x1 + EmbeddedPOSIX : QUuid.Version = ... # 0x2 + Md5 : QUuid.Version = ... # 0x3 + Name : QUuid.Version = ... # 0x3 + Random : QUuid.Version = ... # 0x4 + Sha1 : QUuid.Version = ... # 0x5 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtCore.QByteArray) -> None: ... + @typing.overload + def __init__(self, arg__1:str) -> None: ... + @typing.overload + def __init__(self, arg__1:bytes) -> None: ... + @typing.overload + def __init__(self, l:int, w1:int, w2:int, b1:int, b2:int, b3:int, b4:int, b5:int, b6:int, b7:int, b8:int) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + @staticmethod + def createUuid() -> PySide2.QtCore.QUuid: ... + @typing.overload + @staticmethod + def createUuidV3(ns:PySide2.QtCore.QUuid, baseData:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QUuid: ... + @typing.overload + @staticmethod + def createUuidV3(ns:PySide2.QtCore.QUuid, baseData:str) -> PySide2.QtCore.QUuid: ... + @typing.overload + @staticmethod + def createUuidV5(ns:PySide2.QtCore.QUuid, baseData:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QUuid: ... + @typing.overload + @staticmethod + def createUuidV5(ns:PySide2.QtCore.QUuid, baseData:str) -> PySide2.QtCore.QUuid: ... + @staticmethod + def fromRfc4122(arg__1:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QUuid: ... + def isNull(self) -> bool: ... + @typing.overload + def toByteArray(self) -> PySide2.QtCore.QByteArray: ... + @typing.overload + def toByteArray(self, mode:PySide2.QtCore.QUuid.StringFormat) -> PySide2.QtCore.QByteArray: ... + def toRfc4122(self) -> PySide2.QtCore.QByteArray: ... + @typing.overload + def toString(self) -> str: ... + @typing.overload + def toString(self, mode:PySide2.QtCore.QUuid.StringFormat) -> str: ... + def variant(self) -> PySide2.QtCore.QUuid.Variant: ... + def version(self) -> PySide2.QtCore.QUuid.Version: ... + + +class QVariantAnimation(PySide2.QtCore.QAbstractAnimation): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def currentValue(self) -> typing.Any: ... + def duration(self) -> int: ... + def easingCurve(self) -> PySide2.QtCore.QEasingCurve: ... + def endValue(self) -> typing.Any: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def interpolated(self, from_:typing.Any, to:typing.Any, progress:float) -> typing.Any: ... + def keyValueAt(self, step:float) -> typing.Any: ... + def keyValues(self) -> typing.List: ... + def setDuration(self, msecs:int) -> None: ... + def setEasingCurve(self, easing:PySide2.QtCore.QEasingCurve) -> None: ... + def setEndValue(self, value:typing.Any) -> None: ... + def setKeyValueAt(self, step:float, value:typing.Any) -> None: ... + def setKeyValues(self, values:typing.List) -> None: ... + def setStartValue(self, value:typing.Any) -> None: ... + def startValue(self) -> typing.Any: ... + def updateCurrentTime(self, arg__1:int) -> None: ... + def updateCurrentValue(self, value:typing.Any) -> None: ... + def updateState(self, newState:PySide2.QtCore.QAbstractAnimation.State, oldState:PySide2.QtCore.QAbstractAnimation.State) -> None: ... + + +class QVersionNumber(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, maj:int) -> None: ... + @typing.overload + def __init__(self, maj:int, min:int) -> None: ... + @typing.overload + def __init__(self, maj:int, min:int, mic:int) -> None: ... + @typing.overload + def __init__(self, seg:typing.List) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @staticmethod + def commonPrefix(v1:PySide2.QtCore.QVersionNumber, v2:PySide2.QtCore.QVersionNumber) -> PySide2.QtCore.QVersionNumber: ... + @staticmethod + def compare(v1:PySide2.QtCore.QVersionNumber, v2:PySide2.QtCore.QVersionNumber) -> int: ... + @staticmethod + def fromString(string:str) -> typing.Tuple: ... + def isNormalized(self) -> bool: ... + def isNull(self) -> bool: ... + def isPrefixOf(self, other:PySide2.QtCore.QVersionNumber) -> bool: ... + def majorVersion(self) -> int: ... + def microVersion(self) -> int: ... + def minorVersion(self) -> int: ... + def normalized(self) -> PySide2.QtCore.QVersionNumber: ... + def segmentAt(self, index:int) -> int: ... + def segmentCount(self) -> int: ... + def segments(self) -> typing.List: ... + def toString(self) -> str: ... + + +class QWaitCondition(Shiboken.Object): + + def __init__(self) -> None: ... + + def notify_all(self) -> None: ... + def notify_one(self) -> None: ... + @typing.overload + def wait(self, lockedMutex:PySide2.QtCore.QMutex, deadline:PySide2.QtCore.QDeadlineTimer=...) -> bool: ... + @typing.overload + def wait(self, lockedMutex:PySide2.QtCore.QMutex, time:int) -> bool: ... + @typing.overload + def wait(self, lockedReadWriteLock:PySide2.QtCore.QReadWriteLock, deadline:PySide2.QtCore.QDeadlineTimer=...) -> bool: ... + @typing.overload + def wait(self, lockedReadWriteLock:PySide2.QtCore.QReadWriteLock, time:int) -> bool: ... + def wakeAll(self) -> None: ... + def wakeOne(self) -> None: ... + + +class QWinEventNotifier(PySide2.QtCore.QObject): + + @typing.overload + def __init__(self, hEvent:int, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def handle(self) -> int: ... + def isEnabled(self) -> bool: ... + def setEnabled(self, enable:bool) -> None: ... + def setHandle(self, hEvent:int) -> None: ... + + +class QWriteLocker(Shiboken.Object): + + def __init__(self, readWriteLock:PySide2.QtCore.QReadWriteLock) -> None: ... + + def __enter__(self) -> None: ... + def __exit__(self, arg__1:object, arg__2:object, arg__3:object) -> None: ... + def readWriteLock(self) -> PySide2.QtCore.QReadWriteLock: ... + def relock(self) -> None: ... + def unlock(self) -> None: ... + + +class QXmlStreamAttribute(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtCore.QXmlStreamAttribute) -> None: ... + @typing.overload + def __init__(self, namespaceUri:str, name:str, value:str) -> None: ... + @typing.overload + def __init__(self, qualifiedName:str, value:str) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def isDefault(self) -> bool: ... + def name(self) -> str: ... + def namespaceUri(self) -> str: ... + def prefix(self) -> str: ... + def qualifiedName(self) -> str: ... + def value(self) -> str: ... + + +class QXmlStreamAttributes(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QXmlStreamAttributes:PySide2.QtCore.QXmlStreamAttributes) -> None: ... + + def __add__(self, l:typing.List) -> typing.List: ... + @staticmethod + def __copy__() -> None: ... + def __iadd__(self, t:PySide2.QtCore.QXmlStreamAttribute) -> typing.List: ... + @typing.overload + def __lshift__(self, l:typing.List) -> typing.List: ... + @typing.overload + def __lshift__(self, t:PySide2.QtCore.QXmlStreamAttribute) -> typing.List: ... + @typing.overload + def append(self, namespaceUri:str, name:str, value:str) -> None: ... + @typing.overload + def append(self, qualifiedName:str, value:str) -> None: ... + def at(self, i:int) -> PySide2.QtCore.QXmlStreamAttribute: ... + def back(self) -> PySide2.QtCore.QXmlStreamAttribute: ... + def capacity(self) -> int: ... + def clear(self) -> None: ... + def constData(self) -> PySide2.QtCore.QXmlStreamAttribute: ... + def constFirst(self) -> PySide2.QtCore.QXmlStreamAttribute: ... + def constLast(self) -> PySide2.QtCore.QXmlStreamAttribute: ... + def contains(self, t:PySide2.QtCore.QXmlStreamAttribute) -> bool: ... + @typing.overload + def count(self) -> int: ... + @typing.overload + def count(self, t:PySide2.QtCore.QXmlStreamAttribute) -> int: ... + def data(self) -> PySide2.QtCore.QXmlStreamAttribute: ... + def empty(self) -> bool: ... + def endsWith(self, t:PySide2.QtCore.QXmlStreamAttribute) -> bool: ... + def fill(self, t:PySide2.QtCore.QXmlStreamAttribute, size:int=...) -> typing.List: ... + def first(self) -> PySide2.QtCore.QXmlStreamAttribute: ... + def front(self) -> PySide2.QtCore.QXmlStreamAttribute: ... + @typing.overload + def hasAttribute(self, namespaceUri:str, name:str) -> bool: ... + @typing.overload + def hasAttribute(self, qualifiedName:str) -> bool: ... + def indexOf(self, t:PySide2.QtCore.QXmlStreamAttribute, from_:int=...) -> int: ... + @typing.overload + def insert(self, i:int, n:int, t:PySide2.QtCore.QXmlStreamAttribute) -> None: ... + @typing.overload + def insert(self, i:int, t:PySide2.QtCore.QXmlStreamAttribute) -> None: ... + def isEmpty(self) -> bool: ... + def isSharedWith(self, other:typing.List) -> bool: ... + def last(self) -> PySide2.QtCore.QXmlStreamAttribute: ... + def lastIndexOf(self, t:PySide2.QtCore.QXmlStreamAttribute, from_:int=...) -> int: ... + def length(self) -> int: ... + def mid(self, pos:int, len:int=...) -> typing.List: ... + def move(self, from_:int, to:int) -> None: ... + def prepend(self, t:PySide2.QtCore.QXmlStreamAttribute) -> None: ... + @typing.overload + def remove(self, i:int) -> None: ... + @typing.overload + def remove(self, i:int, n:int) -> None: ... + def removeAll(self, t:PySide2.QtCore.QXmlStreamAttribute) -> int: ... + def removeAt(self, i:int) -> None: ... + def removeFirst(self) -> None: ... + def removeLast(self) -> None: ... + def removeOne(self, t:PySide2.QtCore.QXmlStreamAttribute) -> bool: ... + def replace(self, i:int, t:PySide2.QtCore.QXmlStreamAttribute) -> None: ... + def reserve(self, size:int) -> None: ... + def resize(self, size:int) -> None: ... + def setSharable(self, sharable:bool) -> None: ... + def shrink_to_fit(self) -> None: ... + def size(self) -> int: ... + def squeeze(self) -> None: ... + def startsWith(self, t:PySide2.QtCore.QXmlStreamAttribute) -> bool: ... + def swap(self, other:typing.List) -> None: ... + def swapItemsAt(self, i:int, j:int) -> None: ... + def takeAt(self, i:int) -> PySide2.QtCore.QXmlStreamAttribute: ... + def takeFirst(self) -> PySide2.QtCore.QXmlStreamAttribute: ... + def takeLast(self) -> PySide2.QtCore.QXmlStreamAttribute: ... + @typing.overload + def value(self, namespaceUri:str, name:str) -> str: ... + @typing.overload + def value(self, qualifiedName:str) -> str: ... + + +class QXmlStreamEntityDeclaration(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtCore.QXmlStreamEntityDeclaration) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def name(self) -> str: ... + def notationName(self) -> str: ... + def publicId(self) -> str: ... + def systemId(self) -> str: ... + def value(self) -> str: ... + + +class QXmlStreamEntityResolver(Shiboken.Object): + + def __init__(self) -> None: ... + + def resolveEntity(self, publicId:str, systemId:str) -> str: ... + def resolveUndeclaredEntity(self, name:str) -> str: ... + + +class QXmlStreamNamespaceDeclaration(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtCore.QXmlStreamNamespaceDeclaration) -> None: ... + @typing.overload + def __init__(self, prefix:str, namespaceUri:str) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def namespaceUri(self) -> str: ... + def prefix(self) -> str: ... + + +class QXmlStreamNotationDeclaration(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtCore.QXmlStreamNotationDeclaration) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def name(self) -> str: ... + def publicId(self) -> str: ... + def systemId(self) -> str: ... + + +class QXmlStreamReader(Shiboken.Object): + ErrorOnUnexpectedElement : QXmlStreamReader = ... # 0x0 + NoError : QXmlStreamReader = ... # 0x0 + NoToken : QXmlStreamReader = ... # 0x0 + IncludeChildElements : QXmlStreamReader = ... # 0x1 + Invalid : QXmlStreamReader = ... # 0x1 + UnexpectedElementError : QXmlStreamReader = ... # 0x1 + CustomError : QXmlStreamReader = ... # 0x2 + SkipChildElements : QXmlStreamReader = ... # 0x2 + StartDocument : QXmlStreamReader = ... # 0x2 + EndDocument : QXmlStreamReader = ... # 0x3 + NotWellFormedError : QXmlStreamReader = ... # 0x3 + PrematureEndOfDocumentError: QXmlStreamReader = ... # 0x4 + StartElement : QXmlStreamReader = ... # 0x4 + EndElement : QXmlStreamReader = ... # 0x5 + Characters : QXmlStreamReader = ... # 0x6 + Comment : QXmlStreamReader = ... # 0x7 + DTD : QXmlStreamReader = ... # 0x8 + EntityReference : QXmlStreamReader = ... # 0x9 + ProcessingInstruction : QXmlStreamReader = ... # 0xa + + class Error(object): + NoError : QXmlStreamReader.Error = ... # 0x0 + UnexpectedElementError : QXmlStreamReader.Error = ... # 0x1 + CustomError : QXmlStreamReader.Error = ... # 0x2 + NotWellFormedError : QXmlStreamReader.Error = ... # 0x3 + PrematureEndOfDocumentError: QXmlStreamReader.Error = ... # 0x4 + + class ReadElementTextBehaviour(object): + ErrorOnUnexpectedElement : QXmlStreamReader.ReadElementTextBehaviour = ... # 0x0 + IncludeChildElements : QXmlStreamReader.ReadElementTextBehaviour = ... # 0x1 + SkipChildElements : QXmlStreamReader.ReadElementTextBehaviour = ... # 0x2 + + class TokenType(object): + NoToken : QXmlStreamReader.TokenType = ... # 0x0 + Invalid : QXmlStreamReader.TokenType = ... # 0x1 + StartDocument : QXmlStreamReader.TokenType = ... # 0x2 + EndDocument : QXmlStreamReader.TokenType = ... # 0x3 + StartElement : QXmlStreamReader.TokenType = ... # 0x4 + EndElement : QXmlStreamReader.TokenType = ... # 0x5 + Characters : QXmlStreamReader.TokenType = ... # 0x6 + Comment : QXmlStreamReader.TokenType = ... # 0x7 + DTD : QXmlStreamReader.TokenType = ... # 0x8 + EntityReference : QXmlStreamReader.TokenType = ... # 0x9 + ProcessingInstruction : QXmlStreamReader.TokenType = ... # 0xa + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, data:PySide2.QtCore.QByteArray) -> None: ... + @typing.overload + def __init__(self, data:str) -> None: ... + @typing.overload + def __init__(self, data:bytes) -> None: ... + @typing.overload + def __init__(self, device:PySide2.QtCore.QIODevice) -> None: ... + + @typing.overload + def addData(self, data:PySide2.QtCore.QByteArray) -> None: ... + @typing.overload + def addData(self, data:str) -> None: ... + @typing.overload + def addData(self, data:bytes) -> None: ... + def addExtraNamespaceDeclaration(self, extraNamespaceDeclaraction:PySide2.QtCore.QXmlStreamNamespaceDeclaration) -> None: ... + def addExtraNamespaceDeclarations(self, extraNamespaceDeclaractions:typing.List) -> None: ... + def atEnd(self) -> bool: ... + def attributes(self) -> PySide2.QtCore.QXmlStreamAttributes: ... + def characterOffset(self) -> int: ... + def clear(self) -> None: ... + def columnNumber(self) -> int: ... + def device(self) -> PySide2.QtCore.QIODevice: ... + def documentEncoding(self) -> str: ... + def documentVersion(self) -> str: ... + def dtdName(self) -> str: ... + def dtdPublicId(self) -> str: ... + def dtdSystemId(self) -> str: ... + def entityDeclarations(self) -> typing.List: ... + def entityExpansionLimit(self) -> int: ... + def entityResolver(self) -> PySide2.QtCore.QXmlStreamEntityResolver: ... + def error(self) -> PySide2.QtCore.QXmlStreamReader.Error: ... + def errorString(self) -> str: ... + def hasError(self) -> bool: ... + def isCDATA(self) -> bool: ... + def isCharacters(self) -> bool: ... + def isComment(self) -> bool: ... + def isDTD(self) -> bool: ... + def isEndDocument(self) -> bool: ... + def isEndElement(self) -> bool: ... + def isEntityReference(self) -> bool: ... + def isProcessingInstruction(self) -> bool: ... + def isStandaloneDocument(self) -> bool: ... + def isStartDocument(self) -> bool: ... + def isStartElement(self) -> bool: ... + def isWhitespace(self) -> bool: ... + def lineNumber(self) -> int: ... + def name(self) -> str: ... + def namespaceDeclarations(self) -> typing.List: ... + def namespaceProcessing(self) -> bool: ... + def namespaceUri(self) -> str: ... + def notationDeclarations(self) -> typing.List: ... + def prefix(self) -> str: ... + def processingInstructionData(self) -> str: ... + def processingInstructionTarget(self) -> str: ... + def qualifiedName(self) -> str: ... + def raiseError(self, message:str=...) -> None: ... + def readElementText(self, behaviour:PySide2.QtCore.QXmlStreamReader.ReadElementTextBehaviour=...) -> str: ... + def readNext(self) -> PySide2.QtCore.QXmlStreamReader.TokenType: ... + def readNextStartElement(self) -> bool: ... + def setDevice(self, device:PySide2.QtCore.QIODevice) -> None: ... + def setEntityExpansionLimit(self, limit:int) -> None: ... + def setEntityResolver(self, resolver:PySide2.QtCore.QXmlStreamEntityResolver) -> None: ... + def setNamespaceProcessing(self, arg__1:bool) -> None: ... + def skipCurrentElement(self) -> None: ... + def text(self) -> str: ... + def tokenString(self) -> str: ... + def tokenType(self) -> PySide2.QtCore.QXmlStreamReader.TokenType: ... + + +class QXmlStreamWriter(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, array:PySide2.QtCore.QByteArray) -> None: ... + @typing.overload + def __init__(self, device:PySide2.QtCore.QIODevice) -> None: ... + + def autoFormatting(self) -> bool: ... + def autoFormattingIndent(self) -> int: ... + def codec(self) -> PySide2.QtCore.QTextCodec: ... + def device(self) -> PySide2.QtCore.QIODevice: ... + def hasError(self) -> bool: ... + def setAutoFormatting(self, arg__1:bool) -> None: ... + def setAutoFormattingIndent(self, spacesOrTabs:int) -> None: ... + @typing.overload + def setCodec(self, codec:PySide2.QtCore.QTextCodec) -> None: ... + @typing.overload + def setCodec(self, codecName:bytes) -> None: ... + def setDevice(self, device:PySide2.QtCore.QIODevice) -> None: ... + @typing.overload + def writeAttribute(self, attribute:PySide2.QtCore.QXmlStreamAttribute) -> None: ... + @typing.overload + def writeAttribute(self, namespaceUri:str, name:str, value:str) -> None: ... + @typing.overload + def writeAttribute(self, qualifiedName:str, value:str) -> None: ... + def writeAttributes(self, attributes:PySide2.QtCore.QXmlStreamAttributes) -> None: ... + def writeCDATA(self, text:str) -> None: ... + def writeCharacters(self, text:str) -> None: ... + def writeComment(self, text:str) -> None: ... + def writeCurrentToken(self, reader:PySide2.QtCore.QXmlStreamReader) -> None: ... + def writeDTD(self, dtd:str) -> None: ... + def writeDefaultNamespace(self, namespaceUri:str) -> None: ... + @typing.overload + def writeEmptyElement(self, namespaceUri:str, name:str) -> None: ... + @typing.overload + def writeEmptyElement(self, qualifiedName:str) -> None: ... + def writeEndDocument(self) -> None: ... + def writeEndElement(self) -> None: ... + def writeEntityReference(self, name:str) -> None: ... + def writeNamespace(self, namespaceUri:str, prefix:str=...) -> None: ... + def writeProcessingInstruction(self, target:str, data:str=...) -> None: ... + @typing.overload + def writeStartDocument(self) -> None: ... + @typing.overload + def writeStartDocument(self, version:str) -> None: ... + @typing.overload + def writeStartDocument(self, version:str, standalone:bool) -> None: ... + @typing.overload + def writeStartElement(self, namespaceUri:str, name:str) -> None: ... + @typing.overload + def writeStartElement(self, qualifiedName:str) -> None: ... + @typing.overload + def writeTextElement(self, namespaceUri:str, name:str, text:str) -> None: ... + @typing.overload + def writeTextElement(self, qualifiedName:str, text:str) -> None: ... + + +class Qt(Shiboken.Object): + ImPlatformData : Qt = ... # -0x80000000 + WindowFullscreenButtonHint: Qt = ... # -0x80000000 + KeyboardModifierMask : Qt = ... # -0x2000000 + MODIFIER_MASK : Qt = ... # -0x2000000 + ImhExclusiveInputMask : Qt = ... # -0x10000 + ImQueryAll : Qt = ... # -0x1 + LastGestureType : Qt = ... # -0x1 + LowEventPriority : Qt = ... # -0x1 + MouseButtonMask : Qt = ... # -0x1 + WhiteSpaceModeUndefined : Qt = ... # -0x1 + AA_ImmediateWidgetCreation: Qt = ... # 0x0 + AbsoluteSize : Qt = ... # 0x0 + AnchorLeft : Qt = ... # 0x0 + ApplicationSuspended : Qt = ... # 0x0 + ArrowCursor : Qt = ... # 0x0 + AscendingOrder : Qt = ... # 0x0 + AutoColor : Qt = ... # 0x0 + AutoConnection : Qt = ... # 0x0 + AutoDither : Qt = ... # 0x0 + BeginNativeGesture : Qt = ... # 0x0 + CaseInsensitive : Qt = ... # 0x0 + ChecksumIso3309 : Qt = ... # 0x0 + ContainsItemShape : Qt = ... # 0x0 + DeviceCoordinates : Qt = ... # 0x0 + DiffuseDither : Qt = ... # 0x0 + DisplayRole : Qt = ... # 0x0 + ElideLeft : Qt = ... # 0x0 + EnterKeyDefault : Qt = ... # 0x0 + ExactHit : Qt = ... # 0x0 + FastTransformation : Qt = ... # 0x0 + FindDirectChildrenOnly : Qt = ... # 0x0 + FlatCap : Qt = ... # 0x0 + IgnoreAction : Qt = ... # 0x0 + IgnoreAspectRatio : Qt = ... # 0x0 + ImhNone : Qt = ... # 0x0 + KeepEmptyParts : Qt = ... # 0x0 + LeftToRight : Qt = ... # 0x0 + LocalTime : Qt = ... # 0x0 + LogicalMoveStyle : Qt = ... # 0x0 + MaskInColor : Qt = ... # 0x0 + MatchExactly : Qt = ... # 0x0 + MinimumSize : Qt = ... # 0x0 + MiterJoin : Qt = ... # 0x0 + MouseEventNotSynthesized : Qt = ... # 0x0 + MouseFocusReason : Qt = ... # 0x0 + NavigationModeNone : Qt = ... # 0x0 + NoArrow : Qt = ... # 0x0 + NoBrush : Qt = ... # 0x0 + NoButton : Qt = ... # 0x0 + NoClip : Qt = ... # 0x0 + NoContextMenu : Qt = ... # 0x0 + NoDockWidgetArea : Qt = ... # 0x0 + NoFocus : Qt = ... # 0x0 + NoGesture : Qt = ... # 0x0 + NoItemFlags : Qt = ... # 0x0 + NoModifier : Qt = ... # 0x0 + NoPen : Qt = ... # 0x0 + NoScrollPhase : Qt = ... # 0x0 + NoSection : Qt = ... # 0x0 + NoTabFocus : Qt = ... # 0x0 + NoTextInteraction : Qt = ... # 0x0 + NoToolBarArea : Qt = ... # 0x0 + NonModal : Qt = ... # 0x0 + NormalEventPriority : Qt = ... # 0x0 + OddEvenFill : Qt = ... # 0x0 + PlainText : Qt = ... # 0x0 + PreciseTimer : Qt = ... # 0x0 + PrimaryOrientation : Qt = ... # 0x0 + ReplaceSelection : Qt = ... # 0x0 + ScrollBarAsNeeded : Qt = ... # 0x0 + StretchTile : Qt = ... # 0x0 + TextDate : Qt = ... # 0x0 + ThresholdAlphaDither : Qt = ... # 0x0 + ToolButtonIconOnly : Qt = ... # 0x0 + TopLeftCorner : Qt = ... # 0x0 + TransparentMode : Qt = ... # 0x0 + UI_General : Qt = ... # 0x0 + UNICODE_ACCEL : Qt = ... # 0x0 + Unchecked : Qt = ... # 0x0 + WA_Disabled : Qt = ... # 0x0 + WhiteSpaceNormal : Qt = ... # 0x0 + Widget : Qt = ... # 0x0 + WidgetShortcut : Qt = ... # 0x0 + WindowNoState : Qt = ... # 0x0 + XAxis : Qt = ... # 0x0 + color0 : Qt = ... # 0x0 + AA_MSWindowsUseDirect3DByDefault: Qt = ... # 0x1 + AddToSelection : Qt = ... # 0x1 + AlignLeading : Qt = ... # 0x1 + AlignLeft : Qt = ... # 0x1 + AnchorHorizontalCenter : Qt = ... # 0x1 + ApplicationHidden : Qt = ... # 0x1 + CaseSensitive : Qt = ... # 0x1 + ChecksumItuV41 : Qt = ... # 0x1 + CoarseTimer : Qt = ... # 0x1 + CopyAction : Qt = ... # 0x1 + DecorationRole : Qt = ... # 0x1 + DefaultContextMenu : Qt = ... # 0x1 + DescendingOrder : Qt = ... # 0x1 + DirectConnection : Qt = ... # 0x1 + DontStartGestureOnChildren: Qt = ... # 0x1 + ElideRight : Qt = ... # 0x1 + EndNativeGesture : Qt = ... # 0x1 + EnterKeyReturn : Qt = ... # 0x1 + FindChildrenRecursively : Qt = ... # 0x1 + FuzzyHit : Qt = ... # 0x1 + GestureStarted : Qt = ... # 0x1 + HighEventPriority : Qt = ... # 0x1 + Horizontal : Qt = ... # 0x1 + ISODate : Qt = ... # 0x1 + ImEnabled : Qt = ... # 0x1 + ImhHiddenText : Qt = ... # 0x1 + IntersectsItemShape : Qt = ... # 0x1 + ItemIsSelectable : Qt = ... # 0x1 + KeepAspectRatio : Qt = ... # 0x1 + LeftButton : Qt = ... # 0x1 + LeftDockWidgetArea : Qt = ... # 0x1 + LeftSection : Qt = ... # 0x1 + LeftToolBarArea : Qt = ... # 0x1 + LogicalCoordinates : Qt = ... # 0x1 + MaskOutColor : Qt = ... # 0x1 + MatchContains : Qt = ... # 0x1 + Monday : Qt = ... # 0x1 + MouseEventCreatedDoubleClick: Qt = ... # 0x1 + MouseEventSynthesizedBySystem: Qt = ... # 0x1 + NavigationModeKeypadTabOrder: Qt = ... # 0x1 + OpaqueMode : Qt = ... # 0x1 + PartiallyChecked : Qt = ... # 0x1 + PortraitOrientation : Qt = ... # 0x1 + PreferredSize : Qt = ... # 0x1 + RelativeSize : Qt = ... # 0x1 + RepeatTile : Qt = ... # 0x1 + ReplaceClip : Qt = ... # 0x1 + RichText : Qt = ... # 0x1 + RightToLeft : Qt = ... # 0x1 + ScrollBarAlwaysOff : Qt = ... # 0x1 + ScrollBegin : Qt = ... # 0x1 + SkipEmptyParts : Qt = ... # 0x1 + SmoothTransformation : Qt = ... # 0x1 + SolidLine : Qt = ... # 0x1 + SolidPattern : Qt = ... # 0x1 + TabFocus : Qt = ... # 0x1 + TabFocusReason : Qt = ... # 0x1 + TabFocusTextControls : Qt = ... # 0x1 + TapGesture : Qt = ... # 0x1 + TextSelectableByMouse : Qt = ... # 0x1 + ToolButtonTextOnly : Qt = ... # 0x1 + TopEdge : Qt = ... # 0x1 + TopRightCorner : Qt = ... # 0x1 + TouchPointPressed : Qt = ... # 0x1 + UI_AnimateMenu : Qt = ... # 0x1 + UTC : Qt = ... # 0x1 + UpArrow : Qt = ... # 0x1 + UpArrowCursor : Qt = ... # 0x1 + VisualMoveStyle : Qt = ... # 0x1 + WA_UnderMouse : Qt = ... # 0x1 + WhiteSpacePre : Qt = ... # 0x1 + WindingFill : Qt = ... # 0x1 + Window : Qt = ... # 0x1 + WindowMinimized : Qt = ... # 0x1 + WindowModal : Qt = ... # 0x1 + WindowShortcut : Qt = ... # 0x1 + YAxis : Qt = ... # 0x1 + color1 : Qt = ... # 0x1 + AA_DontShowIconsInMenus : Qt = ... # 0x2 + ActionsContextMenu : Qt = ... # 0x2 + AlignRight : Qt = ... # 0x2 + AlignTrailing : Qt = ... # 0x2 + AnchorRight : Qt = ... # 0x2 + ApplicationInactive : Qt = ... # 0x2 + ApplicationModal : Qt = ... # 0x2 + ApplicationShortcut : Qt = ... # 0x2 + AutoText : Qt = ... # 0x2 + BacktabFocusReason : Qt = ... # 0x2 + BottomLeftCorner : Qt = ... # 0x2 + Checked : Qt = ... # 0x2 + ClickFocus : Qt = ... # 0x2 + ContainsItemBoundingRect : Qt = ... # 0x2 + CrossCursor : Qt = ... # 0x2 + DashLine : Qt = ... # 0x2 + Dense1Pattern : Qt = ... # 0x2 + DownArrow : Qt = ... # 0x2 + EditRole : Qt = ... # 0x2 + ElideMiddle : Qt = ... # 0x2 + EnterKeyDone : Qt = ... # 0x2 + GestureUpdated : Qt = ... # 0x2 + ImCursorRectangle : Qt = ... # 0x2 + ImMicroFocus : Qt = ... # 0x2 + ImhSensitiveData : Qt = ... # 0x2 + IntersectClip : Qt = ... # 0x2 + ItemIsEditable : Qt = ... # 0x2 + KeepAspectRatioByExpanding: Qt = ... # 0x2 + LandscapeOrientation : Qt = ... # 0x2 + LayoutDirectionAuto : Qt = ... # 0x2 + LeftEdge : Qt = ... # 0x2 + LocalDate : Qt = ... # 0x2 + MatchStartsWith : Qt = ... # 0x2 + MaximumSize : Qt = ... # 0x2 + MonoOnly : Qt = ... # 0x2 + MouseEventSynthesizedByQt: Qt = ... # 0x2 + MoveAction : Qt = ... # 0x2 + NavigationModeKeypadDirectional: Qt = ... # 0x2 + OffsetFromUTC : Qt = ... # 0x2 + PanNativeGesture : Qt = ... # 0x2 + QueuedConnection : Qt = ... # 0x2 + ReceivePartialGestures : Qt = ... # 0x2 + RightButton : Qt = ... # 0x2 + RightDockWidgetArea : Qt = ... # 0x2 + RightToolBarArea : Qt = ... # 0x2 + RoundTile : Qt = ... # 0x2 + ScrollBarAlwaysOn : Qt = ... # 0x2 + ScrollUpdate : Qt = ... # 0x2 + SystemLocaleDate : Qt = ... # 0x2 + TabFocusListControls : Qt = ... # 0x2 + TapAndHoldGesture : Qt = ... # 0x2 + TextSelectableByKeyboard : Qt = ... # 0x2 + ToolButtonTextBesideIcon : Qt = ... # 0x2 + TopLeftSection : Qt = ... # 0x2 + TouchPointMoved : Qt = ... # 0x2 + Tuesday : Qt = ... # 0x2 + UI_FadeMenu : Qt = ... # 0x2 + Vertical : Qt = ... # 0x2 + VeryCoarseTimer : Qt = ... # 0x2 + WA_MouseTracking : Qt = ... # 0x2 + WhiteSpaceNoWrap : Qt = ... # 0x2 + WindowMaximized : Qt = ... # 0x2 + ZAxis : Qt = ... # 0x2 + black : Qt = ... # 0x2 + AA_NativeWindows : Qt = ... # 0x3 + ActiveWindowFocusReason : Qt = ... # 0x3 + AnchorTop : Qt = ... # 0x3 + BlockingQueuedConnection : Qt = ... # 0x3 + BottomRightCorner : Qt = ... # 0x3 + ColorMode_Mask : Qt = ... # 0x3 + ColorOnly : Qt = ... # 0x3 + CustomContextMenu : Qt = ... # 0x3 + Dense2Pattern : Qt = ... # 0x3 + Dialog : Qt = ... # 0x3 + DotLine : Qt = ... # 0x3 + ElideNone : Qt = ... # 0x3 + EnterKeyGo : Qt = ... # 0x3 + GestureFinished : Qt = ... # 0x3 + IntersectsItemBoundingRect: Qt = ... # 0x3 + LeftArrow : Qt = ... # 0x3 + LocaleDate : Qt = ... # 0x3 + MarkdownText : Qt = ... # 0x3 + MatchEndsWith : Qt = ... # 0x3 + MinimumDescent : Qt = ... # 0x3 + MouseEventSynthesizedByApplication: Qt = ... # 0x3 + NavigationModeCursorAuto : Qt = ... # 0x3 + PanGesture : Qt = ... # 0x3 + ScrollEnd : Qt = ... # 0x3 + TimeZone : Qt = ... # 0x3 + ToolButtonTextUnderIcon : Qt = ... # 0x3 + ToolTipRole : Qt = ... # 0x3 + TopSection : Qt = ... # 0x3 + UI_AnimateCombo : Qt = ... # 0x3 + WA_ContentsPropagated : Qt = ... # 0x3 + WaitCursor : Qt = ... # 0x3 + Wednesday : Qt = ... # 0x3 + WidgetWithChildrenShortcut: Qt = ... # 0x3 + ZoomNativeGesture : Qt = ... # 0x3 + white : Qt = ... # 0x3 + AA_DontCreateNativeWidgetSiblings: Qt = ... # 0x4 + AlignHCenter : Qt = ... # 0x4 + AnchorVerticalCenter : Qt = ... # 0x4 + ApplicationActive : Qt = ... # 0x4 + DashDotLine : Qt = ... # 0x4 + Dense3Pattern : Qt = ... # 0x4 + EnterKeySend : Qt = ... # 0x4 + GestureCanceled : Qt = ... # 0x4 + IBeamCursor : Qt = ... # 0x4 + IgnoredGesturesPropagateToParent: Qt = ... # 0x4 + ImFont : Qt = ... # 0x4 + ImhNoAutoUppercase : Qt = ... # 0x4 + InvertedPortraitOrientation: Qt = ... # 0x4 + ItemIsDragEnabled : Qt = ... # 0x4 + LinkAction : Qt = ... # 0x4 + LinksAccessibleByMouse : Qt = ... # 0x4 + MatchRegExp : Qt = ... # 0x4 + MidButton : Qt = ... # 0x4 + MiddleButton : Qt = ... # 0x4 + NDockWidgetAreas : Qt = ... # 0x4 + NSizeHints : Qt = ... # 0x4 + NToolBarAreas : Qt = ... # 0x4 + NavigationModeCursorForceVisible: Qt = ... # 0x4 + OrderedAlphaDither : Qt = ... # 0x4 + PinchGesture : Qt = ... # 0x4 + PopupFocusReason : Qt = ... # 0x4 + PreventContextMenu : Qt = ... # 0x4 + RightArrow : Qt = ... # 0x4 + RightEdge : Qt = ... # 0x4 + ScrollMomentum : Qt = ... # 0x4 + SmartZoomNativeGesture : Qt = ... # 0x4 + StatusTipRole : Qt = ... # 0x4 + SystemLocaleShortDate : Qt = ... # 0x4 + Thursday : Qt = ... # 0x4 + ToolButtonFollowStyle : Qt = ... # 0x4 + TopDockWidgetArea : Qt = ... # 0x4 + TopRightSection : Qt = ... # 0x4 + TopToolBarArea : Qt = ... # 0x4 + TouchPointStationary : Qt = ... # 0x4 + UI_AnimateTooltip : Qt = ... # 0x4 + WA_NoBackground : Qt = ... # 0x4 + WA_OpaquePaintEvent : Qt = ... # 0x4 + WindowFullScreen : Qt = ... # 0x4 + darkGray : Qt = ... # 0x4 + AA_MacPluginApplication : Qt = ... # 0x5 + AA_PluginApplication : Qt = ... # 0x5 + AnchorBottom : Qt = ... # 0x5 + DashDotDotLine : Qt = ... # 0x5 + Dense4Pattern : Qt = ... # 0x5 + EnterKeySearch : Qt = ... # 0x5 + Friday : Qt = ... # 0x5 + MatchWildcard : Qt = ... # 0x5 + RightSection : Qt = ... # 0x5 + RotateNativeGesture : Qt = ... # 0x5 + Sheet : Qt = ... # 0x5 + ShortcutFocusReason : Qt = ... # 0x5 + SizeVerCursor : Qt = ... # 0x5 + SwipeGesture : Qt = ... # 0x5 + SystemLocaleLongDate : Qt = ... # 0x5 + UI_FadeTooltip : Qt = ... # 0x5 + WA_StaticContents : Qt = ... # 0x5 + WhatsThisRole : Qt = ... # 0x5 + gray : Qt = ... # 0x5 + AA_DontUseNativeMenuBar : Qt = ... # 0x6 + BottomRightSection : Qt = ... # 0x6 + CustomDashLine : Qt = ... # 0x6 + DefaultLocaleShortDate : Qt = ... # 0x6 + Dense5Pattern : Qt = ... # 0x6 + EnterKeyNext : Qt = ... # 0x6 + FontRole : Qt = ... # 0x6 + MenuBarFocusReason : Qt = ... # 0x6 + Saturday : Qt = ... # 0x6 + SizeHorCursor : Qt = ... # 0x6 + SwipeNativeGesture : Qt = ... # 0x6 + UI_AnimateToolBox : Qt = ... # 0x6 + lightGray : Qt = ... # 0x6 + AA_MacDontSwapCtrlAndMeta: Qt = ... # 0x7 + BottomSection : Qt = ... # 0x7 + DefaultLocaleLongDate : Qt = ... # 0x7 + Dense6Pattern : Qt = ... # 0x7 + Drawer : Qt = ... # 0x7 + EnterKeyPrevious : Qt = ... # 0x7 + OtherFocusReason : Qt = ... # 0x7 + SizeBDiagCursor : Qt = ... # 0x7 + Sunday : Qt = ... # 0x7 + TextAlignmentRole : Qt = ... # 0x7 + WA_LaidOut : Qt = ... # 0x7 + red : Qt = ... # 0x7 + AA_Use96Dpi : Qt = ... # 0x8 + AlignJustify : Qt = ... # 0x8 + BackButton : Qt = ... # 0x8 + BackgroundColorRole : Qt = ... # 0x8 + BackgroundRole : Qt = ... # 0x8 + BottomDockWidgetArea : Qt = ... # 0x8 + BottomEdge : Qt = ... # 0x8 + BottomLeftSection : Qt = ... # 0x8 + BottomToolBarArea : Qt = ... # 0x8 + Dense7Pattern : Qt = ... # 0x8 + DiffuseAlphaDither : Qt = ... # 0x8 + ExtraButton1 : Qt = ... # 0x8 + ImCursorPosition : Qt = ... # 0x8 + ImhPreferNumbers : Qt = ... # 0x8 + InvertedLandscapeOrientation: Qt = ... # 0x8 + ItemIsDropEnabled : Qt = ... # 0x8 + LinksAccessibleByKeyboard: Qt = ... # 0x8 + MatchFixedString : Qt = ... # 0x8 + NoFocusReason : Qt = ... # 0x8 + RFC2822Date : Qt = ... # 0x8 + SizeFDiagCursor : Qt = ... # 0x8 + TouchPointReleased : Qt = ... # 0x8 + WA_PaintOnScreen : Qt = ... # 0x8 + WindowActive : Qt = ... # 0x8 + XButton1 : Qt = ... # 0x8 + green : Qt = ... # 0x8 + AA_DisableNativeVirtualKeyboard: Qt = ... # 0x9 + ForegroundRole : Qt = ... # 0x9 + HorPattern : Qt = ... # 0x9 + ISODateWithMs : Qt = ... # 0x9 + MatchRegularExpression : Qt = ... # 0x9 + Popup : Qt = ... # 0x9 + SizeAllCursor : Qt = ... # 0x9 + TextColorRole : Qt = ... # 0x9 + TitleBarArea : Qt = ... # 0x9 + WA_NoSystemBackground : Qt = ... # 0x9 + blue : Qt = ... # 0x9 + AA_X11InitThreads : Qt = ... # 0xa + BlankCursor : Qt = ... # 0xa + CheckStateRole : Qt = ... # 0xa + VerPattern : Qt = ... # 0xa + WA_UpdatesDisabled : Qt = ... # 0xa + cyan : Qt = ... # 0xa + AA_SynthesizeTouchForUnhandledMouseEvents: Qt = ... # 0xb + AccessibleTextRole : Qt = ... # 0xb + CrossPattern : Qt = ... # 0xb + SplitVCursor : Qt = ... # 0xb + StrongFocus : Qt = ... # 0xb + Tool : Qt = ... # 0xb + WA_Mapped : Qt = ... # 0xb + magenta : Qt = ... # 0xb + AA_SynthesizeMouseForUnhandledTouchEvents: Qt = ... # 0xc + AccessibleDescriptionRole: Qt = ... # 0xc + AlphaDither_Mask : Qt = ... # 0xc + BDiagPattern : Qt = ... # 0xc + NoAlpha : Qt = ... # 0xc + SplitHCursor : Qt = ... # 0xc + WA_MacNoClickThrough : Qt = ... # 0xc + yellow : Qt = ... # 0xc + AA_UseHighDpiPixmaps : Qt = ... # 0xd + FDiagPattern : Qt = ... # 0xd + PointingHandCursor : Qt = ... # 0xd + SizeHintRole : Qt = ... # 0xd + TextBrowserInteraction : Qt = ... # 0xd + ToolTip : Qt = ... # 0xd + darkRed : Qt = ... # 0xd + AA_ForceRasterWidgets : Qt = ... # 0xe + DiagCrossPattern : Qt = ... # 0xe + ForbiddenCursor : Qt = ... # 0xe + InitialSortOrderRole : Qt = ... # 0xe + WA_InputMethodEnabled : Qt = ... # 0xe + darkGreen : Qt = ... # 0xe + AA_UseDesktopOpenGL : Qt = ... # 0xf + AllDockWidgetAreas : Qt = ... # 0xf + AllToolBarAreas : Qt = ... # 0xf + DockWidgetArea_Mask : Qt = ... # 0xf + LinearGradientPattern : Qt = ... # 0xf + MPenStyle : Qt = ... # 0xf + SplashScreen : Qt = ... # 0xf + ToolBarArea_Mask : Qt = ... # 0xf + WA_WState_Visible : Qt = ... # 0xf + WhatsThisCursor : Qt = ... # 0xf + WheelFocus : Qt = ... # 0xf + darkBlue : Qt = ... # 0xf + AA_UseOpenGLES : Qt = ... # 0x10 + AlignAbsolute : Qt = ... # 0x10 + BusyCursor : Qt = ... # 0x10 + ExtraButton2 : Qt = ... # 0x10 + ForwardButton : Qt = ... # 0x10 + ImSurroundingText : Qt = ... # 0x10 + ImhPreferUppercase : Qt = ... # 0x10 + ItemIsUserCheckable : Qt = ... # 0x10 + MatchCaseSensitive : Qt = ... # 0x10 + OrderedDither : Qt = ... # 0x10 + RadialGradientPattern : Qt = ... # 0x10 + SquareCap : Qt = ... # 0x10 + TextEditable : Qt = ... # 0x10 + WA_WState_Hidden : Qt = ... # 0x10 + XButton2 : Qt = ... # 0x10 + darkCyan : Qt = ... # 0x10 + AA_UseSoftwareOpenGL : Qt = ... # 0x11 + ConicalGradientPattern : Qt = ... # 0x11 + Desktop : Qt = ... # 0x11 + OpenHandCursor : Qt = ... # 0x11 + darkMagenta : Qt = ... # 0x11 + AA_ShareOpenGLContexts : Qt = ... # 0x12 + ClosedHandCursor : Qt = ... # 0x12 + SubWindow : Qt = ... # 0x12 + darkYellow : Qt = ... # 0x12 + AA_SetPalette : Qt = ... # 0x13 + DragCopyCursor : Qt = ... # 0x13 + TextEditorInteraction : Qt = ... # 0x13 + transparent : Qt = ... # 0x13 + AA_EnableHighDpiScaling : Qt = ... # 0x14 + DragMoveCursor : Qt = ... # 0x14 + AA_DisableHighDpiScaling : Qt = ... # 0x15 + DragLinkCursor : Qt = ... # 0x15 + LastCursor : Qt = ... # 0x15 + AA_UseStyleSheetPropagationInWidgetStyles: Qt = ... # 0x16 + AA_DontUseNativeDialogs : Qt = ... # 0x17 + AA_SynthesizeMouseForUnhandledTabletEvents: Qt = ... # 0x18 + BitmapCursor : Qt = ... # 0x18 + TexturePattern : Qt = ... # 0x18 + AA_CompressHighFrequencyEvents: Qt = ... # 0x19 + CustomCursor : Qt = ... # 0x19 + AA_DontCheckOpenGLContextThreadAffinity: Qt = ... # 0x1a + AA_DisableShaderDiskCache: Qt = ... # 0x1b + DisplayPropertyRole : Qt = ... # 0x1b + AA_DontShowShortcutsInContextMenus: Qt = ... # 0x1c + DecorationPropertyRole : Qt = ... # 0x1c + AA_CompressTabletEvents : Qt = ... # 0x1d + ToolTipPropertyRole : Qt = ... # 0x1d + AA_DisableWindowContextHelpButton: Qt = ... # 0x1e + StatusTipPropertyRole : Qt = ... # 0x1e + AA_DisableSessionManager : Qt = ... # 0x1f + AlignHorizontal_Mask : Qt = ... # 0x1f + WhatsThisPropertyRole : Qt = ... # 0x1f + AA_AttributeCount : Qt = ... # 0x20 + AlignTop : Qt = ... # 0x20 + ExtraButton3 : Qt = ... # 0x20 + ImCurrentSelection : Qt = ... # 0x20 + ImhPreferLowercase : Qt = ... # 0x20 + ItemIsEnabled : Qt = ... # 0x20 + Key_Any : Qt = ... # 0x20 + Key_Space : Qt = ... # 0x20 + MatchWrap : Qt = ... # 0x20 + RoundCap : Qt = ... # 0x20 + TaskButton : Qt = ... # 0x20 + ThresholdDither : Qt = ... # 0x20 + WA_ForceDisabled : Qt = ... # 0x20 + ForeignWindow : Qt = ... # 0x21 + Key_Exclam : Qt = ... # 0x21 + WA_KeyCompression : Qt = ... # 0x21 + Key_QuoteDbl : Qt = ... # 0x22 + WA_PendingMoveEvent : Qt = ... # 0x22 + Key_NumberSign : Qt = ... # 0x23 + WA_PendingResizeEvent : Qt = ... # 0x23 + Key_Dollar : Qt = ... # 0x24 + WA_SetPalette : Qt = ... # 0x24 + Key_Percent : Qt = ... # 0x25 + WA_SetFont : Qt = ... # 0x25 + Key_Ampersand : Qt = ... # 0x26 + WA_SetCursor : Qt = ... # 0x26 + Key_Apostrophe : Qt = ... # 0x27 + WA_NoChildEventsFromChildren: Qt = ... # 0x27 + Key_ParenLeft : Qt = ... # 0x28 + Key_ParenRight : Qt = ... # 0x29 + WA_WindowModified : Qt = ... # 0x29 + Key_Asterisk : Qt = ... # 0x2a + WA_Resized : Qt = ... # 0x2a + Key_Plus : Qt = ... # 0x2b + WA_Moved : Qt = ... # 0x2b + Key_Comma : Qt = ... # 0x2c + WA_PendingUpdate : Qt = ... # 0x2c + Key_Minus : Qt = ... # 0x2d + WA_InvalidSize : Qt = ... # 0x2d + Key_Period : Qt = ... # 0x2e + WA_MacBrushedMetal : Qt = ... # 0x2e + WA_MacMetalStyle : Qt = ... # 0x2e + Key_Slash : Qt = ... # 0x2f + WA_CustomWhatsThis : Qt = ... # 0x2f + Dither_Mask : Qt = ... # 0x30 + Key_0 : Qt = ... # 0x30 + MPenCapStyle : Qt = ... # 0x30 + WA_LayoutOnEntireRect : Qt = ... # 0x30 + Key_1 : Qt = ... # 0x31 + WA_OutsideWSRange : Qt = ... # 0x31 + Key_2 : Qt = ... # 0x32 + WA_GrabbedShortcut : Qt = ... # 0x32 + Key_3 : Qt = ... # 0x33 + WA_TransparentForMouseEvents: Qt = ... # 0x33 + Key_4 : Qt = ... # 0x34 + WA_PaintUnclipped : Qt = ... # 0x34 + Key_5 : Qt = ... # 0x35 + WA_SetWindowIcon : Qt = ... # 0x35 + Key_6 : Qt = ... # 0x36 + WA_NoMouseReplay : Qt = ... # 0x36 + Key_7 : Qt = ... # 0x37 + WA_DeleteOnClose : Qt = ... # 0x37 + Key_8 : Qt = ... # 0x38 + WA_RightToLeft : Qt = ... # 0x38 + Key_9 : Qt = ... # 0x39 + WA_SetLayoutDirection : Qt = ... # 0x39 + Key_Colon : Qt = ... # 0x3a + WA_NoChildEventsForParent: Qt = ... # 0x3a + Key_Semicolon : Qt = ... # 0x3b + WA_ForceUpdatesDisabled : Qt = ... # 0x3b + Key_Less : Qt = ... # 0x3c + WA_WState_Created : Qt = ... # 0x3c + Key_Equal : Qt = ... # 0x3d + WA_WState_CompressKeys : Qt = ... # 0x3d + Key_Greater : Qt = ... # 0x3e + WA_WState_InPaintEvent : Qt = ... # 0x3e + Key_Question : Qt = ... # 0x3f + WA_WState_Reparented : Qt = ... # 0x3f + AlignBottom : Qt = ... # 0x40 + BevelJoin : Qt = ... # 0x40 + ExtraButton4 : Qt = ... # 0x40 + ImMaximumTextLength : Qt = ... # 0x40 + ImhNoPredictiveText : Qt = ... # 0x40 + ItemIsAutoTristate : Qt = ... # 0x40 + ItemIsTristate : Qt = ... # 0x40 + Key_At : Qt = ... # 0x40 + MatchRecursive : Qt = ... # 0x40 + PreferDither : Qt = ... # 0x40 + WA_WState_ConfigPending : Qt = ... # 0x40 + CoverWindow : Qt = ... # 0x41 + Key_A : Qt = ... # 0x41 + Key_B : Qt = ... # 0x42 + WA_WState_Polished : Qt = ... # 0x42 + Key_C : Qt = ... # 0x43 + WA_WState_DND : Qt = ... # 0x43 + Key_D : Qt = ... # 0x44 + WA_WState_OwnSizePolicy : Qt = ... # 0x44 + Key_E : Qt = ... # 0x45 + WA_WState_ExplicitShowHide: Qt = ... # 0x45 + Key_F : Qt = ... # 0x46 + WA_ShowModal : Qt = ... # 0x46 + Key_G : Qt = ... # 0x47 + WA_MouseNoMask : Qt = ... # 0x47 + Key_H : Qt = ... # 0x48 + WA_GroupLeader : Qt = ... # 0x48 + Key_I : Qt = ... # 0x49 + WA_NoMousePropagation : Qt = ... # 0x49 + Key_J : Qt = ... # 0x4a + WA_Hover : Qt = ... # 0x4a + Key_K : Qt = ... # 0x4b + WA_InputMethodTransparent: Qt = ... # 0x4b + Key_L : Qt = ... # 0x4c + WA_QuitOnClose : Qt = ... # 0x4c + Key_M : Qt = ... # 0x4d + WA_KeyboardFocusChange : Qt = ... # 0x4d + Key_N : Qt = ... # 0x4e + WA_AcceptDrops : Qt = ... # 0x4e + Key_O : Qt = ... # 0x4f + WA_DropSiteRegistered : Qt = ... # 0x4f + WA_ForceAcceptDrops : Qt = ... # 0x4f + Key_P : Qt = ... # 0x50 + WA_WindowPropagation : Qt = ... # 0x50 + Key_Q : Qt = ... # 0x51 + WA_NoX11EventCompression : Qt = ... # 0x51 + Key_R : Qt = ... # 0x52 + WA_TintedBackground : Qt = ... # 0x52 + Key_S : Qt = ... # 0x53 + WA_X11OpenGLOverlay : Qt = ... # 0x53 + Key_T : Qt = ... # 0x54 + WA_AlwaysShowToolTips : Qt = ... # 0x54 + Key_U : Qt = ... # 0x55 + WA_MacOpaqueSizeGrip : Qt = ... # 0x55 + Key_V : Qt = ... # 0x56 + WA_SetStyle : Qt = ... # 0x56 + Key_W : Qt = ... # 0x57 + WA_SetLocale : Qt = ... # 0x57 + Key_X : Qt = ... # 0x58 + WA_MacShowFocusRect : Qt = ... # 0x58 + Key_Y : Qt = ... # 0x59 + WA_MacNormalSize : Qt = ... # 0x59 + Key_Z : Qt = ... # 0x5a + WA_MacSmallSize : Qt = ... # 0x5a + Key_BracketLeft : Qt = ... # 0x5b + WA_MacMiniSize : Qt = ... # 0x5b + Key_Backslash : Qt = ... # 0x5c + WA_LayoutUsesWidgetRect : Qt = ... # 0x5c + Key_BracketRight : Qt = ... # 0x5d + WA_StyledBackground : Qt = ... # 0x5d + Key_AsciiCircum : Qt = ... # 0x5e + WA_MSWindowsUseDirect3D : Qt = ... # 0x5e + Key_Underscore : Qt = ... # 0x5f + WA_CanHostQMdiSubWindowTitleBar: Qt = ... # 0x5f + Key_QuoteLeft : Qt = ... # 0x60 + WA_MacAlwaysShowToolWindow: Qt = ... # 0x60 + WA_StyleSheet : Qt = ... # 0x61 + WA_ShowWithoutActivating : Qt = ... # 0x62 + WA_X11BypassTransientForHint: Qt = ... # 0x63 + WA_NativeWindow : Qt = ... # 0x64 + WA_DontCreateNativeAncestors: Qt = ... # 0x65 + WA_MacVariableSize : Qt = ... # 0x66 + WA_DontShowOnScreen : Qt = ... # 0x67 + WA_X11NetWmWindowTypeDesktop: Qt = ... # 0x68 + WA_X11NetWmWindowTypeDock: Qt = ... # 0x69 + WA_X11NetWmWindowTypeToolBar: Qt = ... # 0x6a + WA_X11NetWmWindowTypeMenu: Qt = ... # 0x6b + WA_X11NetWmWindowTypeUtility: Qt = ... # 0x6c + WA_X11NetWmWindowTypeSplash: Qt = ... # 0x6d + WA_X11NetWmWindowTypeDialog: Qt = ... # 0x6e + WA_X11NetWmWindowTypeDropDownMenu: Qt = ... # 0x6f + WA_X11NetWmWindowTypePopupMenu: Qt = ... # 0x70 + WA_X11NetWmWindowTypeToolTip: Qt = ... # 0x71 + WA_X11NetWmWindowTypeNotification: Qt = ... # 0x72 + WA_X11NetWmWindowTypeCombo: Qt = ... # 0x73 + WA_X11NetWmWindowTypeDND : Qt = ... # 0x74 + WA_MacFrameworkScaled : Qt = ... # 0x75 + WA_SetWindowModality : Qt = ... # 0x76 + WA_WState_WindowOpacitySet: Qt = ... # 0x77 + WA_TranslucentBackground : Qt = ... # 0x78 + WA_AcceptTouchEvents : Qt = ... # 0x79 + WA_WState_AcceptedTouchBeginEvent: Qt = ... # 0x7a + Key_BraceLeft : Qt = ... # 0x7b + WA_TouchPadAcceptSingleTouchEvents: Qt = ... # 0x7b + Key_Bar : Qt = ... # 0x7c + Key_BraceRight : Qt = ... # 0x7d + Key_AsciiTilde : Qt = ... # 0x7e + WA_X11DoNotAcceptFocus : Qt = ... # 0x7e + WA_MacNoShadow : Qt = ... # 0x7f + AlignVCenter : Qt = ... # 0x80 + AvoidDither : Qt = ... # 0x80 + ExtraButton5 : Qt = ... # 0x80 + ImAnchorPosition : Qt = ... # 0x80 + ImhDate : Qt = ... # 0x80 + ItemNeverHasChildren : Qt = ... # 0x80 + RoundJoin : Qt = ... # 0x80 + UniqueConnection : Qt = ... # 0x80 + WA_AlwaysStackOnTop : Qt = ... # 0x80 + WA_TabletTracking : Qt = ... # 0x81 + WA_ContentsMarginsRespectsSafeArea: Qt = ... # 0x82 + WA_StyleSheetTarget : Qt = ... # 0x83 + AlignCenter : Qt = ... # 0x84 + WA_AttributeCount : Qt = ... # 0x84 + Key_nobreakspace : Qt = ... # 0xa0 + Key_exclamdown : Qt = ... # 0xa1 + Key_cent : Qt = ... # 0xa2 + Key_sterling : Qt = ... # 0xa3 + Key_currency : Qt = ... # 0xa4 + Key_yen : Qt = ... # 0xa5 + Key_brokenbar : Qt = ... # 0xa6 + Key_section : Qt = ... # 0xa7 + Key_diaeresis : Qt = ... # 0xa8 + Key_copyright : Qt = ... # 0xa9 + Key_ordfeminine : Qt = ... # 0xaa + Key_guillemotleft : Qt = ... # 0xab + Key_notsign : Qt = ... # 0xac + Key_hyphen : Qt = ... # 0xad + Key_registered : Qt = ... # 0xae + Key_macron : Qt = ... # 0xaf + Key_degree : Qt = ... # 0xb0 + Key_plusminus : Qt = ... # 0xb1 + Key_twosuperior : Qt = ... # 0xb2 + Key_threesuperior : Qt = ... # 0xb3 + Key_acute : Qt = ... # 0xb4 + Key_mu : Qt = ... # 0xb5 + Key_paragraph : Qt = ... # 0xb6 + Key_periodcentered : Qt = ... # 0xb7 + Key_cedilla : Qt = ... # 0xb8 + Key_onesuperior : Qt = ... # 0xb9 + Key_masculine : Qt = ... # 0xba + Key_guillemotright : Qt = ... # 0xbb + Key_onequarter : Qt = ... # 0xbc + Key_onehalf : Qt = ... # 0xbd + Key_threequarters : Qt = ... # 0xbe + Key_questiondown : Qt = ... # 0xbf + DitherMode_Mask : Qt = ... # 0xc0 + Key_Agrave : Qt = ... # 0xc0 + Key_Aacute : Qt = ... # 0xc1 + Key_Acircumflex : Qt = ... # 0xc2 + Key_Atilde : Qt = ... # 0xc3 + Key_Adiaeresis : Qt = ... # 0xc4 + Key_Aring : Qt = ... # 0xc5 + Key_AE : Qt = ... # 0xc6 + Key_Ccedilla : Qt = ... # 0xc7 + Key_Egrave : Qt = ... # 0xc8 + Key_Eacute : Qt = ... # 0xc9 + Key_Ecircumflex : Qt = ... # 0xca + Key_Ediaeresis : Qt = ... # 0xcb + Key_Igrave : Qt = ... # 0xcc + Key_Iacute : Qt = ... # 0xcd + Key_Icircumflex : Qt = ... # 0xce + Key_Idiaeresis : Qt = ... # 0xcf + Key_ETH : Qt = ... # 0xd0 + Key_Ntilde : Qt = ... # 0xd1 + Key_Ograve : Qt = ... # 0xd2 + Key_Oacute : Qt = ... # 0xd3 + Key_Ocircumflex : Qt = ... # 0xd4 + Key_Otilde : Qt = ... # 0xd5 + Key_Odiaeresis : Qt = ... # 0xd6 + Key_multiply : Qt = ... # 0xd7 + Key_Ooblique : Qt = ... # 0xd8 + Key_Ugrave : Qt = ... # 0xd9 + Key_Uacute : Qt = ... # 0xda + Key_Ucircumflex : Qt = ... # 0xdb + Key_Udiaeresis : Qt = ... # 0xdc + Key_Yacute : Qt = ... # 0xdd + Key_THORN : Qt = ... # 0xde + Key_ssharp : Qt = ... # 0xdf + Key_division : Qt = ... # 0xf7 + ActionMask : Qt = ... # 0xff + Key_ydiaeresis : Qt = ... # 0xff + MouseEventFlagMask : Qt = ... # 0xff + TabFocusAllControls : Qt = ... # 0xff + WindowType_Mask : Qt = ... # 0xff + AlignBaseline : Qt = ... # 0x100 + CustomGesture : Qt = ... # 0x100 + ExtraButton6 : Qt = ... # 0x100 + ImHints : Qt = ... # 0x100 + ImhTime : Qt = ... # 0x100 + ItemIsUserTristate : Qt = ... # 0x100 + MSWindowsFixedSizeDialogHint: Qt = ... # 0x100 + NoOpaqueDetection : Qt = ... # 0x100 + SvgMiterJoin : Qt = ... # 0x100 + TextSingleLine : Qt = ... # 0x100 + UserRole : Qt = ... # 0x100 + MPenJoinStyle : Qt = ... # 0x1c0 + AlignVertical_Mask : Qt = ... # 0x1e0 + ExtraButton7 : Qt = ... # 0x200 + ImPreferredLanguage : Qt = ... # 0x200 + ImhPreferLatin : Qt = ... # 0x200 + MSWindowsOwnDC : Qt = ... # 0x200 + NoFormatConversion : Qt = ... # 0x200 + TextDontClip : Qt = ... # 0x200 + BypassWindowManagerHint : Qt = ... # 0x400 + ExtraButton8 : Qt = ... # 0x400 + ImAbsolutePosition : Qt = ... # 0x400 + ImhMultiLine : Qt = ... # 0x400 + TextExpandTabs : Qt = ... # 0x400 + X11BypassWindowManagerHint: Qt = ... # 0x400 + ExtraButton9 : Qt = ... # 0x800 + FramelessWindowHint : Qt = ... # 0x800 + ImTextBeforeCursor : Qt = ... # 0x800 + ImhNoEditMenu : Qt = ... # 0x800 + TextShowMnemonic : Qt = ... # 0x800 + ExtraButton10 : Qt = ... # 0x1000 + ImTextAfterCursor : Qt = ... # 0x1000 + ImhNoTextHandles : Qt = ... # 0x1000 + TextWordWrap : Qt = ... # 0x1000 + WindowTitleHint : Qt = ... # 0x1000 + ExtraButton11 : Qt = ... # 0x2000 + ImEnterKeyType : Qt = ... # 0x2000 + TextWrapAnywhere : Qt = ... # 0x2000 + WindowSystemMenuHint : Qt = ... # 0x2000 + ExtraButton12 : Qt = ... # 0x4000 + ImAnchorRectangle : Qt = ... # 0x4000 + TextDontPrint : Qt = ... # 0x4000 + WindowMinimizeButtonHint : Qt = ... # 0x4000 + ImQueryInput : Qt = ... # 0x40ba + ExtraButton13 : Qt = ... # 0x8000 + ImInputItemClipRectangle : Qt = ... # 0x8000 + TextHideMnemonic : Qt = ... # 0x8000 + WindowMaximizeButtonHint : Qt = ... # 0x8000 + TargetMoveAction : Qt = ... # 0x8002 + WindowMinMaxButtonsHint : Qt = ... # 0xc000 + ExtraButton14 : Qt = ... # 0x10000 + ImhDigitsOnly : Qt = ... # 0x10000 + TextJustificationForced : Qt = ... # 0x10000 + WindowContextHelpButtonHint: Qt = ... # 0x10000 + ExtraButton15 : Qt = ... # 0x20000 + ImhFormattedNumbersOnly : Qt = ... # 0x20000 + TextForceLeftToRight : Qt = ... # 0x20000 + WindowShadeButtonHint : Qt = ... # 0x20000 + ExtraButton16 : Qt = ... # 0x40000 + ImhUppercaseOnly : Qt = ... # 0x40000 + TextForceRightToLeft : Qt = ... # 0x40000 + WindowStaysOnTopHint : Qt = ... # 0x40000 + ExtraButton17 : Qt = ... # 0x80000 + ImhLowercaseOnly : Qt = ... # 0x80000 + TextLongestVariant : Qt = ... # 0x80000 + WindowTransparentForInput: Qt = ... # 0x80000 + ExtraButton18 : Qt = ... # 0x100000 + ImhDialableCharactersOnly: Qt = ... # 0x100000 + TextBypassShaping : Qt = ... # 0x100000 + WindowOverridesSystemGestures: Qt = ... # 0x100000 + ExtraButton19 : Qt = ... # 0x200000 + ImhEmailCharactersOnly : Qt = ... # 0x200000 + WindowDoesNotAcceptFocus : Qt = ... # 0x200000 + ExtraButton20 : Qt = ... # 0x400000 + ImhUrlCharactersOnly : Qt = ... # 0x400000 + MaximizeUsingFullscreenGeometryHint: Qt = ... # 0x400000 + ExtraButton21 : Qt = ... # 0x800000 + ImhLatinOnly : Qt = ... # 0x800000 + ExtraButton22 : Qt = ... # 0x1000000 + Key_Escape : Qt = ... # 0x1000000 + Key_Tab : Qt = ... # 0x1000001 + Key_Backtab : Qt = ... # 0x1000002 + Key_Backspace : Qt = ... # 0x1000003 + Key_Return : Qt = ... # 0x1000004 + Key_Enter : Qt = ... # 0x1000005 + Key_Insert : Qt = ... # 0x1000006 + Key_Delete : Qt = ... # 0x1000007 + Key_Pause : Qt = ... # 0x1000008 + Key_Print : Qt = ... # 0x1000009 + Key_SysReq : Qt = ... # 0x100000a + Key_Clear : Qt = ... # 0x100000b + Key_Home : Qt = ... # 0x1000010 + Key_End : Qt = ... # 0x1000011 + Key_Left : Qt = ... # 0x1000012 + Key_Up : Qt = ... # 0x1000013 + Key_Right : Qt = ... # 0x1000014 + Key_Down : Qt = ... # 0x1000015 + Key_PageUp : Qt = ... # 0x1000016 + Key_PageDown : Qt = ... # 0x1000017 + Key_Shift : Qt = ... # 0x1000020 + Key_Control : Qt = ... # 0x1000021 + Key_Meta : Qt = ... # 0x1000022 + Key_Alt : Qt = ... # 0x1000023 + Key_CapsLock : Qt = ... # 0x1000024 + Key_NumLock : Qt = ... # 0x1000025 + Key_ScrollLock : Qt = ... # 0x1000026 + Key_F1 : Qt = ... # 0x1000030 + Key_F2 : Qt = ... # 0x1000031 + Key_F3 : Qt = ... # 0x1000032 + Key_F4 : Qt = ... # 0x1000033 + Key_F5 : Qt = ... # 0x1000034 + Key_F6 : Qt = ... # 0x1000035 + Key_F7 : Qt = ... # 0x1000036 + Key_F8 : Qt = ... # 0x1000037 + Key_F9 : Qt = ... # 0x1000038 + Key_F10 : Qt = ... # 0x1000039 + Key_F11 : Qt = ... # 0x100003a + Key_F12 : Qt = ... # 0x100003b + Key_F13 : Qt = ... # 0x100003c + Key_F14 : Qt = ... # 0x100003d + Key_F15 : Qt = ... # 0x100003e + Key_F16 : Qt = ... # 0x100003f + Key_F17 : Qt = ... # 0x1000040 + Key_F18 : Qt = ... # 0x1000041 + Key_F19 : Qt = ... # 0x1000042 + Key_F20 : Qt = ... # 0x1000043 + Key_F21 : Qt = ... # 0x1000044 + Key_F22 : Qt = ... # 0x1000045 + Key_F23 : Qt = ... # 0x1000046 + Key_F24 : Qt = ... # 0x1000047 + Key_F25 : Qt = ... # 0x1000048 + Key_F26 : Qt = ... # 0x1000049 + Key_F27 : Qt = ... # 0x100004a + Key_F28 : Qt = ... # 0x100004b + Key_F29 : Qt = ... # 0x100004c + Key_F30 : Qt = ... # 0x100004d + Key_F31 : Qt = ... # 0x100004e + Key_F32 : Qt = ... # 0x100004f + Key_F33 : Qt = ... # 0x1000050 + Key_F34 : Qt = ... # 0x1000051 + Key_F35 : Qt = ... # 0x1000052 + Key_Super_L : Qt = ... # 0x1000053 + Key_Super_R : Qt = ... # 0x1000054 + Key_Menu : Qt = ... # 0x1000055 + Key_Hyper_L : Qt = ... # 0x1000056 + Key_Hyper_R : Qt = ... # 0x1000057 + Key_Help : Qt = ... # 0x1000058 + Key_Direction_L : Qt = ... # 0x1000059 + Key_Direction_R : Qt = ... # 0x1000060 + Key_Back : Qt = ... # 0x1000061 + Key_Forward : Qt = ... # 0x1000062 + Key_Stop : Qt = ... # 0x1000063 + Key_Refresh : Qt = ... # 0x1000064 + Key_VolumeDown : Qt = ... # 0x1000070 + Key_VolumeMute : Qt = ... # 0x1000071 + Key_VolumeUp : Qt = ... # 0x1000072 + Key_BassBoost : Qt = ... # 0x1000073 + Key_BassUp : Qt = ... # 0x1000074 + Key_BassDown : Qt = ... # 0x1000075 + Key_TrebleUp : Qt = ... # 0x1000076 + Key_TrebleDown : Qt = ... # 0x1000077 + Key_MediaPlay : Qt = ... # 0x1000080 + Key_MediaStop : Qt = ... # 0x1000081 + Key_MediaPrevious : Qt = ... # 0x1000082 + Key_MediaNext : Qt = ... # 0x1000083 + Key_MediaRecord : Qt = ... # 0x1000084 + Key_MediaPause : Qt = ... # 0x1000085 + Key_MediaTogglePlayPause : Qt = ... # 0x1000086 + Key_HomePage : Qt = ... # 0x1000090 + Key_Favorites : Qt = ... # 0x1000091 + Key_Search : Qt = ... # 0x1000092 + Key_Standby : Qt = ... # 0x1000093 + Key_OpenUrl : Qt = ... # 0x1000094 + Key_LaunchMail : Qt = ... # 0x10000a0 + Key_LaunchMedia : Qt = ... # 0x10000a1 + Key_Launch0 : Qt = ... # 0x10000a2 + Key_Launch1 : Qt = ... # 0x10000a3 + Key_Launch2 : Qt = ... # 0x10000a4 + Key_Launch3 : Qt = ... # 0x10000a5 + Key_Launch4 : Qt = ... # 0x10000a6 + Key_Launch5 : Qt = ... # 0x10000a7 + Key_Launch6 : Qt = ... # 0x10000a8 + Key_Launch7 : Qt = ... # 0x10000a9 + Key_Launch8 : Qt = ... # 0x10000aa + Key_Launch9 : Qt = ... # 0x10000ab + Key_LaunchA : Qt = ... # 0x10000ac + Key_LaunchB : Qt = ... # 0x10000ad + Key_LaunchC : Qt = ... # 0x10000ae + Key_LaunchD : Qt = ... # 0x10000af + Key_LaunchE : Qt = ... # 0x10000b0 + Key_LaunchF : Qt = ... # 0x10000b1 + Key_MonBrightnessUp : Qt = ... # 0x10000b2 + Key_MonBrightnessDown : Qt = ... # 0x10000b3 + Key_KeyboardLightOnOff : Qt = ... # 0x10000b4 + Key_KeyboardBrightnessUp : Qt = ... # 0x10000b5 + Key_KeyboardBrightnessDown: Qt = ... # 0x10000b6 + Key_PowerOff : Qt = ... # 0x10000b7 + Key_WakeUp : Qt = ... # 0x10000b8 + Key_Eject : Qt = ... # 0x10000b9 + Key_ScreenSaver : Qt = ... # 0x10000ba + Key_WWW : Qt = ... # 0x10000bb + Key_Memo : Qt = ... # 0x10000bc + Key_LightBulb : Qt = ... # 0x10000bd + Key_Shop : Qt = ... # 0x10000be + Key_History : Qt = ... # 0x10000bf + Key_AddFavorite : Qt = ... # 0x10000c0 + Key_HotLinks : Qt = ... # 0x10000c1 + Key_BrightnessAdjust : Qt = ... # 0x10000c2 + Key_Finance : Qt = ... # 0x10000c3 + Key_Community : Qt = ... # 0x10000c4 + Key_AudioRewind : Qt = ... # 0x10000c5 + Key_BackForward : Qt = ... # 0x10000c6 + Key_ApplicationLeft : Qt = ... # 0x10000c7 + Key_ApplicationRight : Qt = ... # 0x10000c8 + Key_Book : Qt = ... # 0x10000c9 + Key_CD : Qt = ... # 0x10000ca + Key_Calculator : Qt = ... # 0x10000cb + Key_ToDoList : Qt = ... # 0x10000cc + Key_ClearGrab : Qt = ... # 0x10000cd + Key_Close : Qt = ... # 0x10000ce + Key_Copy : Qt = ... # 0x10000cf + Key_Cut : Qt = ... # 0x10000d0 + Key_Display : Qt = ... # 0x10000d1 + Key_DOS : Qt = ... # 0x10000d2 + Key_Documents : Qt = ... # 0x10000d3 + Key_Excel : Qt = ... # 0x10000d4 + Key_Explorer : Qt = ... # 0x10000d5 + Key_Game : Qt = ... # 0x10000d6 + Key_Go : Qt = ... # 0x10000d7 + Key_iTouch : Qt = ... # 0x10000d8 + Key_LogOff : Qt = ... # 0x10000d9 + Key_Market : Qt = ... # 0x10000da + Key_Meeting : Qt = ... # 0x10000db + Key_MenuKB : Qt = ... # 0x10000dc + Key_MenuPB : Qt = ... # 0x10000dd + Key_MySites : Qt = ... # 0x10000de + Key_News : Qt = ... # 0x10000df + Key_OfficeHome : Qt = ... # 0x10000e0 + Key_Option : Qt = ... # 0x10000e1 + Key_Paste : Qt = ... # 0x10000e2 + Key_Phone : Qt = ... # 0x10000e3 + Key_Calendar : Qt = ... # 0x10000e4 + Key_Reply : Qt = ... # 0x10000e5 + Key_Reload : Qt = ... # 0x10000e6 + Key_RotateWindows : Qt = ... # 0x10000e7 + Key_RotationPB : Qt = ... # 0x10000e8 + Key_RotationKB : Qt = ... # 0x10000e9 + Key_Save : Qt = ... # 0x10000ea + Key_Send : Qt = ... # 0x10000eb + Key_Spell : Qt = ... # 0x10000ec + Key_SplitScreen : Qt = ... # 0x10000ed + Key_Support : Qt = ... # 0x10000ee + Key_TaskPane : Qt = ... # 0x10000ef + Key_Terminal : Qt = ... # 0x10000f0 + Key_Tools : Qt = ... # 0x10000f1 + Key_Travel : Qt = ... # 0x10000f2 + Key_Video : Qt = ... # 0x10000f3 + Key_Word : Qt = ... # 0x10000f4 + Key_Xfer : Qt = ... # 0x10000f5 + Key_ZoomIn : Qt = ... # 0x10000f6 + Key_ZoomOut : Qt = ... # 0x10000f7 + Key_Away : Qt = ... # 0x10000f8 + Key_Messenger : Qt = ... # 0x10000f9 + Key_WebCam : Qt = ... # 0x10000fa + Key_MailForward : Qt = ... # 0x10000fb + Key_Pictures : Qt = ... # 0x10000fc + Key_Music : Qt = ... # 0x10000fd + Key_Battery : Qt = ... # 0x10000fe + Key_Bluetooth : Qt = ... # 0x10000ff + Key_WLAN : Qt = ... # 0x1000100 + Key_UWB : Qt = ... # 0x1000101 + Key_AudioForward : Qt = ... # 0x1000102 + Key_AudioRepeat : Qt = ... # 0x1000103 + Key_AudioRandomPlay : Qt = ... # 0x1000104 + Key_Subtitle : Qt = ... # 0x1000105 + Key_AudioCycleTrack : Qt = ... # 0x1000106 + Key_Time : Qt = ... # 0x1000107 + Key_Hibernate : Qt = ... # 0x1000108 + Key_View : Qt = ... # 0x1000109 + Key_TopMenu : Qt = ... # 0x100010a + Key_PowerDown : Qt = ... # 0x100010b + Key_Suspend : Qt = ... # 0x100010c + Key_ContrastAdjust : Qt = ... # 0x100010d + Key_LaunchG : Qt = ... # 0x100010e + Key_LaunchH : Qt = ... # 0x100010f + Key_TouchpadToggle : Qt = ... # 0x1000110 + Key_TouchpadOn : Qt = ... # 0x1000111 + Key_TouchpadOff : Qt = ... # 0x1000112 + Key_MicMute : Qt = ... # 0x1000113 + Key_Red : Qt = ... # 0x1000114 + Key_Green : Qt = ... # 0x1000115 + Key_Yellow : Qt = ... # 0x1000116 + Key_Blue : Qt = ... # 0x1000117 + Key_ChannelUp : Qt = ... # 0x1000118 + Key_ChannelDown : Qt = ... # 0x1000119 + Key_Guide : Qt = ... # 0x100011a + Key_Info : Qt = ... # 0x100011b + Key_Settings : Qt = ... # 0x100011c + Key_MicVolumeUp : Qt = ... # 0x100011d + Key_MicVolumeDown : Qt = ... # 0x100011e + Key_New : Qt = ... # 0x1000120 + Key_Open : Qt = ... # 0x1000121 + Key_Find : Qt = ... # 0x1000122 + Key_Undo : Qt = ... # 0x1000123 + Key_Redo : Qt = ... # 0x1000124 + Key_AltGr : Qt = ... # 0x1001103 + Key_Multi_key : Qt = ... # 0x1001120 + Key_Kanji : Qt = ... # 0x1001121 + Key_Muhenkan : Qt = ... # 0x1001122 + Key_Henkan : Qt = ... # 0x1001123 + Key_Romaji : Qt = ... # 0x1001124 + Key_Hiragana : Qt = ... # 0x1001125 + Key_Katakana : Qt = ... # 0x1001126 + Key_Hiragana_Katakana : Qt = ... # 0x1001127 + Key_Zenkaku : Qt = ... # 0x1001128 + Key_Hankaku : Qt = ... # 0x1001129 + Key_Zenkaku_Hankaku : Qt = ... # 0x100112a + Key_Touroku : Qt = ... # 0x100112b + Key_Massyo : Qt = ... # 0x100112c + Key_Kana_Lock : Qt = ... # 0x100112d + Key_Kana_Shift : Qt = ... # 0x100112e + Key_Eisu_Shift : Qt = ... # 0x100112f + Key_Eisu_toggle : Qt = ... # 0x1001130 + Key_Hangul : Qt = ... # 0x1001131 + Key_Hangul_Start : Qt = ... # 0x1001132 + Key_Hangul_End : Qt = ... # 0x1001133 + Key_Hangul_Hanja : Qt = ... # 0x1001134 + Key_Hangul_Jamo : Qt = ... # 0x1001135 + Key_Hangul_Romaja : Qt = ... # 0x1001136 + Key_Codeinput : Qt = ... # 0x1001137 + Key_Hangul_Jeonja : Qt = ... # 0x1001138 + Key_Hangul_Banja : Qt = ... # 0x1001139 + Key_Hangul_PreHanja : Qt = ... # 0x100113a + Key_Hangul_PostHanja : Qt = ... # 0x100113b + Key_SingleCandidate : Qt = ... # 0x100113c + Key_MultipleCandidate : Qt = ... # 0x100113d + Key_PreviousCandidate : Qt = ... # 0x100113e + Key_Hangul_Special : Qt = ... # 0x100113f + Key_Mode_switch : Qt = ... # 0x100117e + Key_Dead_Grave : Qt = ... # 0x1001250 + Key_Dead_Acute : Qt = ... # 0x1001251 + Key_Dead_Circumflex : Qt = ... # 0x1001252 + Key_Dead_Tilde : Qt = ... # 0x1001253 + Key_Dead_Macron : Qt = ... # 0x1001254 + Key_Dead_Breve : Qt = ... # 0x1001255 + Key_Dead_Abovedot : Qt = ... # 0x1001256 + Key_Dead_Diaeresis : Qt = ... # 0x1001257 + Key_Dead_Abovering : Qt = ... # 0x1001258 + Key_Dead_Doubleacute : Qt = ... # 0x1001259 + Key_Dead_Caron : Qt = ... # 0x100125a + Key_Dead_Cedilla : Qt = ... # 0x100125b + Key_Dead_Ogonek : Qt = ... # 0x100125c + Key_Dead_Iota : Qt = ... # 0x100125d + Key_Dead_Voiced_Sound : Qt = ... # 0x100125e + Key_Dead_Semivoiced_Sound: Qt = ... # 0x100125f + Key_Dead_Belowdot : Qt = ... # 0x1001260 + Key_Dead_Hook : Qt = ... # 0x1001261 + Key_Dead_Horn : Qt = ... # 0x1001262 + Key_Dead_Stroke : Qt = ... # 0x1001263 + Key_Dead_Abovecomma : Qt = ... # 0x1001264 + Key_Dead_Abovereversedcomma: Qt = ... # 0x1001265 + Key_Dead_Doublegrave : Qt = ... # 0x1001266 + Key_Dead_Belowring : Qt = ... # 0x1001267 + Key_Dead_Belowmacron : Qt = ... # 0x1001268 + Key_Dead_Belowcircumflex : Qt = ... # 0x1001269 + Key_Dead_Belowtilde : Qt = ... # 0x100126a + Key_Dead_Belowbreve : Qt = ... # 0x100126b + Key_Dead_Belowdiaeresis : Qt = ... # 0x100126c + Key_Dead_Invertedbreve : Qt = ... # 0x100126d + Key_Dead_Belowcomma : Qt = ... # 0x100126e + Key_Dead_Currency : Qt = ... # 0x100126f + Key_Dead_a : Qt = ... # 0x1001280 + Key_Dead_A : Qt = ... # 0x1001281 + Key_Dead_e : Qt = ... # 0x1001282 + Key_Dead_E : Qt = ... # 0x1001283 + Key_Dead_i : Qt = ... # 0x1001284 + Key_Dead_I : Qt = ... # 0x1001285 + Key_Dead_o : Qt = ... # 0x1001286 + Key_Dead_O : Qt = ... # 0x1001287 + Key_Dead_u : Qt = ... # 0x1001288 + Key_Dead_U : Qt = ... # 0x1001289 + Key_Dead_Small_Schwa : Qt = ... # 0x100128a + Key_Dead_Capital_Schwa : Qt = ... # 0x100128b + Key_Dead_Greek : Qt = ... # 0x100128c + Key_Dead_Lowline : Qt = ... # 0x1001290 + Key_Dead_Aboveverticalline: Qt = ... # 0x1001291 + Key_Dead_Belowverticalline: Qt = ... # 0x1001292 + Key_Dead_Longsolidusoverlay: Qt = ... # 0x1001293 + Key_MediaLast : Qt = ... # 0x100ffff + Key_Select : Qt = ... # 0x1010000 + Key_Yes : Qt = ... # 0x1010001 + Key_No : Qt = ... # 0x1010002 + Key_Cancel : Qt = ... # 0x1020001 + Key_Printer : Qt = ... # 0x1020002 + Key_Execute : Qt = ... # 0x1020003 + Key_Sleep : Qt = ... # 0x1020004 + Key_Play : Qt = ... # 0x1020005 + Key_Zoom : Qt = ... # 0x1020006 + Key_Exit : Qt = ... # 0x102000a + Key_Context1 : Qt = ... # 0x1100000 + Key_Context2 : Qt = ... # 0x1100001 + Key_Context3 : Qt = ... # 0x1100002 + Key_Context4 : Qt = ... # 0x1100003 + Key_Call : Qt = ... # 0x1100004 + Key_Hangup : Qt = ... # 0x1100005 + Key_Flip : Qt = ... # 0x1100006 + Key_ToggleCallHangup : Qt = ... # 0x1100007 + Key_VoiceDial : Qt = ... # 0x1100008 + Key_LastNumberRedial : Qt = ... # 0x1100009 + Key_Camera : Qt = ... # 0x1100020 + Key_CameraFocus : Qt = ... # 0x1100021 + Key_unknown : Qt = ... # 0x1ffffff + CustomizeWindowHint : Qt = ... # 0x2000000 + ExtraButton23 : Qt = ... # 0x2000000 + SHIFT : Qt = ... # 0x2000000 + ShiftModifier : Qt = ... # 0x2000000 + CTRL : Qt = ... # 0x4000000 + ControlModifier : Qt = ... # 0x4000000 + ExtraButton24 : Qt = ... # 0x4000000 + MaxMouseButton : Qt = ... # 0x4000000 + WindowStaysOnBottomHint : Qt = ... # 0x4000000 + AllButtons : Qt = ... # 0x7ffffff + ALT : Qt = ... # 0x8000000 + AltModifier : Qt = ... # 0x8000000 + TextIncludeTrailingSpaces: Qt = ... # 0x8000000 + WindowCloseButtonHint : Qt = ... # 0x8000000 + META : Qt = ... # 0x10000000 + MacWindowToolBarButtonHint: Qt = ... # 0x10000000 + MetaModifier : Qt = ... # 0x10000000 + BypassGraphicsProxyWidget: Qt = ... # 0x20000000 + KeypadModifier : Qt = ... # 0x20000000 + GroupSwitchModifier : Qt = ... # 0x40000000 + NoDropShadowWindowHint : Qt = ... # 0x40000000 + + class Alignment(object): ... + + class AlignmentFlag(object): + AlignLeading : Qt.AlignmentFlag = ... # 0x1 + AlignLeft : Qt.AlignmentFlag = ... # 0x1 + AlignRight : Qt.AlignmentFlag = ... # 0x2 + AlignTrailing : Qt.AlignmentFlag = ... # 0x2 + AlignHCenter : Qt.AlignmentFlag = ... # 0x4 + AlignJustify : Qt.AlignmentFlag = ... # 0x8 + AlignAbsolute : Qt.AlignmentFlag = ... # 0x10 + AlignHorizontal_Mask : Qt.AlignmentFlag = ... # 0x1f + AlignTop : Qt.AlignmentFlag = ... # 0x20 + AlignBottom : Qt.AlignmentFlag = ... # 0x40 + AlignVCenter : Qt.AlignmentFlag = ... # 0x80 + AlignCenter : Qt.AlignmentFlag = ... # 0x84 + AlignBaseline : Qt.AlignmentFlag = ... # 0x100 + AlignVertical_Mask : Qt.AlignmentFlag = ... # 0x1e0 + + class AnchorPoint(object): + AnchorLeft : Qt.AnchorPoint = ... # 0x0 + AnchorHorizontalCenter : Qt.AnchorPoint = ... # 0x1 + AnchorRight : Qt.AnchorPoint = ... # 0x2 + AnchorTop : Qt.AnchorPoint = ... # 0x3 + AnchorVerticalCenter : Qt.AnchorPoint = ... # 0x4 + AnchorBottom : Qt.AnchorPoint = ... # 0x5 + + class ApplicationAttribute(object): + AA_ImmediateWidgetCreation: Qt.ApplicationAttribute = ... # 0x0 + AA_MSWindowsUseDirect3DByDefault: Qt.ApplicationAttribute = ... # 0x1 + AA_DontShowIconsInMenus : Qt.ApplicationAttribute = ... # 0x2 + AA_NativeWindows : Qt.ApplicationAttribute = ... # 0x3 + AA_DontCreateNativeWidgetSiblings: Qt.ApplicationAttribute = ... # 0x4 + AA_MacPluginApplication : Qt.ApplicationAttribute = ... # 0x5 + AA_PluginApplication : Qt.ApplicationAttribute = ... # 0x5 + AA_DontUseNativeMenuBar : Qt.ApplicationAttribute = ... # 0x6 + AA_MacDontSwapCtrlAndMeta: Qt.ApplicationAttribute = ... # 0x7 + AA_Use96Dpi : Qt.ApplicationAttribute = ... # 0x8 + AA_DisableNativeVirtualKeyboard: Qt.ApplicationAttribute = ... # 0x9 + AA_X11InitThreads : Qt.ApplicationAttribute = ... # 0xa + AA_SynthesizeTouchForUnhandledMouseEvents: Qt.ApplicationAttribute = ... # 0xb + AA_SynthesizeMouseForUnhandledTouchEvents: Qt.ApplicationAttribute = ... # 0xc + AA_UseHighDpiPixmaps : Qt.ApplicationAttribute = ... # 0xd + AA_ForceRasterWidgets : Qt.ApplicationAttribute = ... # 0xe + AA_UseDesktopOpenGL : Qt.ApplicationAttribute = ... # 0xf + AA_UseOpenGLES : Qt.ApplicationAttribute = ... # 0x10 + AA_UseSoftwareOpenGL : Qt.ApplicationAttribute = ... # 0x11 + AA_ShareOpenGLContexts : Qt.ApplicationAttribute = ... # 0x12 + AA_SetPalette : Qt.ApplicationAttribute = ... # 0x13 + AA_EnableHighDpiScaling : Qt.ApplicationAttribute = ... # 0x14 + AA_DisableHighDpiScaling : Qt.ApplicationAttribute = ... # 0x15 + AA_UseStyleSheetPropagationInWidgetStyles: Qt.ApplicationAttribute = ... # 0x16 + AA_DontUseNativeDialogs : Qt.ApplicationAttribute = ... # 0x17 + AA_SynthesizeMouseForUnhandledTabletEvents: Qt.ApplicationAttribute = ... # 0x18 + AA_CompressHighFrequencyEvents: Qt.ApplicationAttribute = ... # 0x19 + AA_DontCheckOpenGLContextThreadAffinity: Qt.ApplicationAttribute = ... # 0x1a + AA_DisableShaderDiskCache: Qt.ApplicationAttribute = ... # 0x1b + AA_DontShowShortcutsInContextMenus: Qt.ApplicationAttribute = ... # 0x1c + AA_CompressTabletEvents : Qt.ApplicationAttribute = ... # 0x1d + AA_DisableWindowContextHelpButton: Qt.ApplicationAttribute = ... # 0x1e + AA_DisableSessionManager : Qt.ApplicationAttribute = ... # 0x1f + AA_AttributeCount : Qt.ApplicationAttribute = ... # 0x20 + + class ApplicationState(object): + ApplicationSuspended : Qt.ApplicationState = ... # 0x0 + ApplicationHidden : Qt.ApplicationState = ... # 0x1 + ApplicationInactive : Qt.ApplicationState = ... # 0x2 + ApplicationActive : Qt.ApplicationState = ... # 0x4 + + class ApplicationStates(object): ... + + class ArrowType(object): + NoArrow : Qt.ArrowType = ... # 0x0 + UpArrow : Qt.ArrowType = ... # 0x1 + DownArrow : Qt.ArrowType = ... # 0x2 + LeftArrow : Qt.ArrowType = ... # 0x3 + RightArrow : Qt.ArrowType = ... # 0x4 + + class AspectRatioMode(object): + IgnoreAspectRatio : Qt.AspectRatioMode = ... # 0x0 + KeepAspectRatio : Qt.AspectRatioMode = ... # 0x1 + KeepAspectRatioByExpanding: Qt.AspectRatioMode = ... # 0x2 + + class Axis(object): + XAxis : Qt.Axis = ... # 0x0 + YAxis : Qt.Axis = ... # 0x1 + ZAxis : Qt.Axis = ... # 0x2 + + class BGMode(object): + TransparentMode : Qt.BGMode = ... # 0x0 + OpaqueMode : Qt.BGMode = ... # 0x1 + + class BrushStyle(object): + NoBrush : Qt.BrushStyle = ... # 0x0 + SolidPattern : Qt.BrushStyle = ... # 0x1 + Dense1Pattern : Qt.BrushStyle = ... # 0x2 + Dense2Pattern : Qt.BrushStyle = ... # 0x3 + Dense3Pattern : Qt.BrushStyle = ... # 0x4 + Dense4Pattern : Qt.BrushStyle = ... # 0x5 + Dense5Pattern : Qt.BrushStyle = ... # 0x6 + Dense6Pattern : Qt.BrushStyle = ... # 0x7 + Dense7Pattern : Qt.BrushStyle = ... # 0x8 + HorPattern : Qt.BrushStyle = ... # 0x9 + VerPattern : Qt.BrushStyle = ... # 0xa + CrossPattern : Qt.BrushStyle = ... # 0xb + BDiagPattern : Qt.BrushStyle = ... # 0xc + FDiagPattern : Qt.BrushStyle = ... # 0xd + DiagCrossPattern : Qt.BrushStyle = ... # 0xe + LinearGradientPattern : Qt.BrushStyle = ... # 0xf + RadialGradientPattern : Qt.BrushStyle = ... # 0x10 + ConicalGradientPattern : Qt.BrushStyle = ... # 0x11 + TexturePattern : Qt.BrushStyle = ... # 0x18 + + class CaseSensitivity(object): + CaseInsensitive : Qt.CaseSensitivity = ... # 0x0 + CaseSensitive : Qt.CaseSensitivity = ... # 0x1 + + class CheckState(object): + Unchecked : Qt.CheckState = ... # 0x0 + PartiallyChecked : Qt.CheckState = ... # 0x1 + Checked : Qt.CheckState = ... # 0x2 + + class ChecksumType(object): + ChecksumIso3309 : Qt.ChecksumType = ... # 0x0 + ChecksumItuV41 : Qt.ChecksumType = ... # 0x1 + + class ClipOperation(object): + NoClip : Qt.ClipOperation = ... # 0x0 + ReplaceClip : Qt.ClipOperation = ... # 0x1 + IntersectClip : Qt.ClipOperation = ... # 0x2 + + class ConnectionType(object): + AutoConnection : Qt.ConnectionType = ... # 0x0 + DirectConnection : Qt.ConnectionType = ... # 0x1 + QueuedConnection : Qt.ConnectionType = ... # 0x2 + BlockingQueuedConnection : Qt.ConnectionType = ... # 0x3 + UniqueConnection : Qt.ConnectionType = ... # 0x80 + + class ContextMenuPolicy(object): + NoContextMenu : Qt.ContextMenuPolicy = ... # 0x0 + DefaultContextMenu : Qt.ContextMenuPolicy = ... # 0x1 + ActionsContextMenu : Qt.ContextMenuPolicy = ... # 0x2 + CustomContextMenu : Qt.ContextMenuPolicy = ... # 0x3 + PreventContextMenu : Qt.ContextMenuPolicy = ... # 0x4 + + class CoordinateSystem(object): + DeviceCoordinates : Qt.CoordinateSystem = ... # 0x0 + LogicalCoordinates : Qt.CoordinateSystem = ... # 0x1 + + class Corner(object): + TopLeftCorner : Qt.Corner = ... # 0x0 + TopRightCorner : Qt.Corner = ... # 0x1 + BottomLeftCorner : Qt.Corner = ... # 0x2 + BottomRightCorner : Qt.Corner = ... # 0x3 + + class CursorMoveStyle(object): + LogicalMoveStyle : Qt.CursorMoveStyle = ... # 0x0 + VisualMoveStyle : Qt.CursorMoveStyle = ... # 0x1 + + class CursorShape(object): + ArrowCursor : Qt.CursorShape = ... # 0x0 + UpArrowCursor : Qt.CursorShape = ... # 0x1 + CrossCursor : Qt.CursorShape = ... # 0x2 + WaitCursor : Qt.CursorShape = ... # 0x3 + IBeamCursor : Qt.CursorShape = ... # 0x4 + SizeVerCursor : Qt.CursorShape = ... # 0x5 + SizeHorCursor : Qt.CursorShape = ... # 0x6 + SizeBDiagCursor : Qt.CursorShape = ... # 0x7 + SizeFDiagCursor : Qt.CursorShape = ... # 0x8 + SizeAllCursor : Qt.CursorShape = ... # 0x9 + BlankCursor : Qt.CursorShape = ... # 0xa + SplitVCursor : Qt.CursorShape = ... # 0xb + SplitHCursor : Qt.CursorShape = ... # 0xc + PointingHandCursor : Qt.CursorShape = ... # 0xd + ForbiddenCursor : Qt.CursorShape = ... # 0xe + WhatsThisCursor : Qt.CursorShape = ... # 0xf + BusyCursor : Qt.CursorShape = ... # 0x10 + OpenHandCursor : Qt.CursorShape = ... # 0x11 + ClosedHandCursor : Qt.CursorShape = ... # 0x12 + DragCopyCursor : Qt.CursorShape = ... # 0x13 + DragMoveCursor : Qt.CursorShape = ... # 0x14 + DragLinkCursor : Qt.CursorShape = ... # 0x15 + LastCursor : Qt.CursorShape = ... # 0x15 + BitmapCursor : Qt.CursorShape = ... # 0x18 + CustomCursor : Qt.CursorShape = ... # 0x19 + + class DateFormat(object): + TextDate : Qt.DateFormat = ... # 0x0 + ISODate : Qt.DateFormat = ... # 0x1 + LocalDate : Qt.DateFormat = ... # 0x2 + SystemLocaleDate : Qt.DateFormat = ... # 0x2 + LocaleDate : Qt.DateFormat = ... # 0x3 + SystemLocaleShortDate : Qt.DateFormat = ... # 0x4 + SystemLocaleLongDate : Qt.DateFormat = ... # 0x5 + DefaultLocaleShortDate : Qt.DateFormat = ... # 0x6 + DefaultLocaleLongDate : Qt.DateFormat = ... # 0x7 + RFC2822Date : Qt.DateFormat = ... # 0x8 + ISODateWithMs : Qt.DateFormat = ... # 0x9 + + class DayOfWeek(object): + Monday : Qt.DayOfWeek = ... # 0x1 + Tuesday : Qt.DayOfWeek = ... # 0x2 + Wednesday : Qt.DayOfWeek = ... # 0x3 + Thursday : Qt.DayOfWeek = ... # 0x4 + Friday : Qt.DayOfWeek = ... # 0x5 + Saturday : Qt.DayOfWeek = ... # 0x6 + Sunday : Qt.DayOfWeek = ... # 0x7 + + class DockWidgetArea(object): + NoDockWidgetArea : Qt.DockWidgetArea = ... # 0x0 + LeftDockWidgetArea : Qt.DockWidgetArea = ... # 0x1 + RightDockWidgetArea : Qt.DockWidgetArea = ... # 0x2 + TopDockWidgetArea : Qt.DockWidgetArea = ... # 0x4 + BottomDockWidgetArea : Qt.DockWidgetArea = ... # 0x8 + AllDockWidgetAreas : Qt.DockWidgetArea = ... # 0xf + DockWidgetArea_Mask : Qt.DockWidgetArea = ... # 0xf + + class DockWidgetAreaSizes(object): + NDockWidgetAreas : Qt.DockWidgetAreaSizes = ... # 0x4 + + class DockWidgetAreas(object): ... + + class DropAction(object): + IgnoreAction : Qt.DropAction = ... # 0x0 + CopyAction : Qt.DropAction = ... # 0x1 + MoveAction : Qt.DropAction = ... # 0x2 + LinkAction : Qt.DropAction = ... # 0x4 + ActionMask : Qt.DropAction = ... # 0xff + TargetMoveAction : Qt.DropAction = ... # 0x8002 + + class DropActions(object): ... + + class Edge(object): + TopEdge : Qt.Edge = ... # 0x1 + LeftEdge : Qt.Edge = ... # 0x2 + RightEdge : Qt.Edge = ... # 0x4 + BottomEdge : Qt.Edge = ... # 0x8 + + class Edges(object): ... + + class EnterKeyType(object): + EnterKeyDefault : Qt.EnterKeyType = ... # 0x0 + EnterKeyReturn : Qt.EnterKeyType = ... # 0x1 + EnterKeyDone : Qt.EnterKeyType = ... # 0x2 + EnterKeyGo : Qt.EnterKeyType = ... # 0x3 + EnterKeySend : Qt.EnterKeyType = ... # 0x4 + EnterKeySearch : Qt.EnterKeyType = ... # 0x5 + EnterKeyNext : Qt.EnterKeyType = ... # 0x6 + EnterKeyPrevious : Qt.EnterKeyType = ... # 0x7 + + class EventPriority(object): + LowEventPriority : Qt.EventPriority = ... # -0x1 + NormalEventPriority : Qt.EventPriority = ... # 0x0 + HighEventPriority : Qt.EventPriority = ... # 0x1 + + class FillRule(object): + OddEvenFill : Qt.FillRule = ... # 0x0 + WindingFill : Qt.FillRule = ... # 0x1 + + class FindChildOption(object): + FindDirectChildrenOnly : Qt.FindChildOption = ... # 0x0 + FindChildrenRecursively : Qt.FindChildOption = ... # 0x1 + + class FindChildOptions(object): ... + + class FocusPolicy(object): + NoFocus : Qt.FocusPolicy = ... # 0x0 + TabFocus : Qt.FocusPolicy = ... # 0x1 + ClickFocus : Qt.FocusPolicy = ... # 0x2 + StrongFocus : Qt.FocusPolicy = ... # 0xb + WheelFocus : Qt.FocusPolicy = ... # 0xf + + class FocusReason(object): + MouseFocusReason : Qt.FocusReason = ... # 0x0 + TabFocusReason : Qt.FocusReason = ... # 0x1 + BacktabFocusReason : Qt.FocusReason = ... # 0x2 + ActiveWindowFocusReason : Qt.FocusReason = ... # 0x3 + PopupFocusReason : Qt.FocusReason = ... # 0x4 + ShortcutFocusReason : Qt.FocusReason = ... # 0x5 + MenuBarFocusReason : Qt.FocusReason = ... # 0x6 + OtherFocusReason : Qt.FocusReason = ... # 0x7 + NoFocusReason : Qt.FocusReason = ... # 0x8 + + class GestureFlag(object): + DontStartGestureOnChildren: Qt.GestureFlag = ... # 0x1 + ReceivePartialGestures : Qt.GestureFlag = ... # 0x2 + IgnoredGesturesPropagateToParent: Qt.GestureFlag = ... # 0x4 + + class GestureFlags(object): ... + + class GestureState(object): + NoGesture : Qt.GestureState = ... # 0x0 + GestureStarted : Qt.GestureState = ... # 0x1 + GestureUpdated : Qt.GestureState = ... # 0x2 + GestureFinished : Qt.GestureState = ... # 0x3 + GestureCanceled : Qt.GestureState = ... # 0x4 + + class GestureType(object): + LastGestureType : Qt.GestureType = ... # -0x1 + TapGesture : Qt.GestureType = ... # 0x1 + TapAndHoldGesture : Qt.GestureType = ... # 0x2 + PanGesture : Qt.GestureType = ... # 0x3 + PinchGesture : Qt.GestureType = ... # 0x4 + SwipeGesture : Qt.GestureType = ... # 0x5 + CustomGesture : Qt.GestureType = ... # 0x100 + + class GlobalColor(object): + color0 : Qt.GlobalColor = ... # 0x0 + color1 : Qt.GlobalColor = ... # 0x1 + black : Qt.GlobalColor = ... # 0x2 + white : Qt.GlobalColor = ... # 0x3 + darkGray : Qt.GlobalColor = ... # 0x4 + gray : Qt.GlobalColor = ... # 0x5 + lightGray : Qt.GlobalColor = ... # 0x6 + red : Qt.GlobalColor = ... # 0x7 + green : Qt.GlobalColor = ... # 0x8 + blue : Qt.GlobalColor = ... # 0x9 + cyan : Qt.GlobalColor = ... # 0xa + magenta : Qt.GlobalColor = ... # 0xb + yellow : Qt.GlobalColor = ... # 0xc + darkRed : Qt.GlobalColor = ... # 0xd + darkGreen : Qt.GlobalColor = ... # 0xe + darkBlue : Qt.GlobalColor = ... # 0xf + darkCyan : Qt.GlobalColor = ... # 0x10 + darkMagenta : Qt.GlobalColor = ... # 0x11 + darkYellow : Qt.GlobalColor = ... # 0x12 + transparent : Qt.GlobalColor = ... # 0x13 + + class HighDpiScaleFactorRoundingPolicy(object): + Unset : Qt.HighDpiScaleFactorRoundingPolicy = ... # 0x0 + Round : Qt.HighDpiScaleFactorRoundingPolicy = ... # 0x1 + Ceil : Qt.HighDpiScaleFactorRoundingPolicy = ... # 0x2 + Floor : Qt.HighDpiScaleFactorRoundingPolicy = ... # 0x3 + RoundPreferFloor : Qt.HighDpiScaleFactorRoundingPolicy = ... # 0x4 + PassThrough : Qt.HighDpiScaleFactorRoundingPolicy = ... # 0x5 + + class HitTestAccuracy(object): + ExactHit : Qt.HitTestAccuracy = ... # 0x0 + FuzzyHit : Qt.HitTestAccuracy = ... # 0x1 + + class ImageConversionFlag(object): + AutoColor : Qt.ImageConversionFlag = ... # 0x0 + AutoDither : Qt.ImageConversionFlag = ... # 0x0 + DiffuseDither : Qt.ImageConversionFlag = ... # 0x0 + ThresholdAlphaDither : Qt.ImageConversionFlag = ... # 0x0 + MonoOnly : Qt.ImageConversionFlag = ... # 0x2 + ColorMode_Mask : Qt.ImageConversionFlag = ... # 0x3 + ColorOnly : Qt.ImageConversionFlag = ... # 0x3 + OrderedAlphaDither : Qt.ImageConversionFlag = ... # 0x4 + DiffuseAlphaDither : Qt.ImageConversionFlag = ... # 0x8 + AlphaDither_Mask : Qt.ImageConversionFlag = ... # 0xc + NoAlpha : Qt.ImageConversionFlag = ... # 0xc + OrderedDither : Qt.ImageConversionFlag = ... # 0x10 + ThresholdDither : Qt.ImageConversionFlag = ... # 0x20 + Dither_Mask : Qt.ImageConversionFlag = ... # 0x30 + PreferDither : Qt.ImageConversionFlag = ... # 0x40 + AvoidDither : Qt.ImageConversionFlag = ... # 0x80 + DitherMode_Mask : Qt.ImageConversionFlag = ... # 0xc0 + NoOpaqueDetection : Qt.ImageConversionFlag = ... # 0x100 + NoFormatConversion : Qt.ImageConversionFlag = ... # 0x200 + + class ImageConversionFlags(object): ... + + class InputMethodHint(object): + ImhExclusiveInputMask : Qt.InputMethodHint = ... # -0x10000 + ImhNone : Qt.InputMethodHint = ... # 0x0 + ImhHiddenText : Qt.InputMethodHint = ... # 0x1 + ImhSensitiveData : Qt.InputMethodHint = ... # 0x2 + ImhNoAutoUppercase : Qt.InputMethodHint = ... # 0x4 + ImhPreferNumbers : Qt.InputMethodHint = ... # 0x8 + ImhPreferUppercase : Qt.InputMethodHint = ... # 0x10 + ImhPreferLowercase : Qt.InputMethodHint = ... # 0x20 + ImhNoPredictiveText : Qt.InputMethodHint = ... # 0x40 + ImhDate : Qt.InputMethodHint = ... # 0x80 + ImhTime : Qt.InputMethodHint = ... # 0x100 + ImhPreferLatin : Qt.InputMethodHint = ... # 0x200 + ImhMultiLine : Qt.InputMethodHint = ... # 0x400 + ImhNoEditMenu : Qt.InputMethodHint = ... # 0x800 + ImhNoTextHandles : Qt.InputMethodHint = ... # 0x1000 + ImhDigitsOnly : Qt.InputMethodHint = ... # 0x10000 + ImhFormattedNumbersOnly : Qt.InputMethodHint = ... # 0x20000 + ImhUppercaseOnly : Qt.InputMethodHint = ... # 0x40000 + ImhLowercaseOnly : Qt.InputMethodHint = ... # 0x80000 + ImhDialableCharactersOnly: Qt.InputMethodHint = ... # 0x100000 + ImhEmailCharactersOnly : Qt.InputMethodHint = ... # 0x200000 + ImhUrlCharactersOnly : Qt.InputMethodHint = ... # 0x400000 + ImhLatinOnly : Qt.InputMethodHint = ... # 0x800000 + + class InputMethodHints(object): ... + + class InputMethodQueries(object): ... + + class InputMethodQuery(object): + ImPlatformData : Qt.InputMethodQuery = ... # -0x80000000 + ImQueryAll : Qt.InputMethodQuery = ... # -0x1 + ImEnabled : Qt.InputMethodQuery = ... # 0x1 + ImCursorRectangle : Qt.InputMethodQuery = ... # 0x2 + ImMicroFocus : Qt.InputMethodQuery = ... # 0x2 + ImFont : Qt.InputMethodQuery = ... # 0x4 + ImCursorPosition : Qt.InputMethodQuery = ... # 0x8 + ImSurroundingText : Qt.InputMethodQuery = ... # 0x10 + ImCurrentSelection : Qt.InputMethodQuery = ... # 0x20 + ImMaximumTextLength : Qt.InputMethodQuery = ... # 0x40 + ImAnchorPosition : Qt.InputMethodQuery = ... # 0x80 + ImHints : Qt.InputMethodQuery = ... # 0x100 + ImPreferredLanguage : Qt.InputMethodQuery = ... # 0x200 + ImAbsolutePosition : Qt.InputMethodQuery = ... # 0x400 + ImTextBeforeCursor : Qt.InputMethodQuery = ... # 0x800 + ImTextAfterCursor : Qt.InputMethodQuery = ... # 0x1000 + ImEnterKeyType : Qt.InputMethodQuery = ... # 0x2000 + ImAnchorRectangle : Qt.InputMethodQuery = ... # 0x4000 + ImQueryInput : Qt.InputMethodQuery = ... # 0x40ba + ImInputItemClipRectangle : Qt.InputMethodQuery = ... # 0x8000 + + class ItemDataRole(object): + DisplayRole : Qt.ItemDataRole = ... # 0x0 + DecorationRole : Qt.ItemDataRole = ... # 0x1 + EditRole : Qt.ItemDataRole = ... # 0x2 + ToolTipRole : Qt.ItemDataRole = ... # 0x3 + StatusTipRole : Qt.ItemDataRole = ... # 0x4 + WhatsThisRole : Qt.ItemDataRole = ... # 0x5 + FontRole : Qt.ItemDataRole = ... # 0x6 + TextAlignmentRole : Qt.ItemDataRole = ... # 0x7 + BackgroundColorRole : Qt.ItemDataRole = ... # 0x8 + BackgroundRole : Qt.ItemDataRole = ... # 0x8 + ForegroundRole : Qt.ItemDataRole = ... # 0x9 + TextColorRole : Qt.ItemDataRole = ... # 0x9 + CheckStateRole : Qt.ItemDataRole = ... # 0xa + AccessibleTextRole : Qt.ItemDataRole = ... # 0xb + AccessibleDescriptionRole: Qt.ItemDataRole = ... # 0xc + SizeHintRole : Qt.ItemDataRole = ... # 0xd + InitialSortOrderRole : Qt.ItemDataRole = ... # 0xe + DisplayPropertyRole : Qt.ItemDataRole = ... # 0x1b + DecorationPropertyRole : Qt.ItemDataRole = ... # 0x1c + ToolTipPropertyRole : Qt.ItemDataRole = ... # 0x1d + StatusTipPropertyRole : Qt.ItemDataRole = ... # 0x1e + WhatsThisPropertyRole : Qt.ItemDataRole = ... # 0x1f + UserRole : Qt.ItemDataRole = ... # 0x100 + + class ItemFlag(object): + NoItemFlags : Qt.ItemFlag = ... # 0x0 + ItemIsSelectable : Qt.ItemFlag = ... # 0x1 + ItemIsEditable : Qt.ItemFlag = ... # 0x2 + ItemIsDragEnabled : Qt.ItemFlag = ... # 0x4 + ItemIsDropEnabled : Qt.ItemFlag = ... # 0x8 + ItemIsUserCheckable : Qt.ItemFlag = ... # 0x10 + ItemIsEnabled : Qt.ItemFlag = ... # 0x20 + ItemIsAutoTristate : Qt.ItemFlag = ... # 0x40 + ItemIsTristate : Qt.ItemFlag = ... # 0x40 + ItemNeverHasChildren : Qt.ItemFlag = ... # 0x80 + ItemIsUserTristate : Qt.ItemFlag = ... # 0x100 + + class ItemFlags(object): ... + + class ItemSelectionMode(object): + ContainsItemShape : Qt.ItemSelectionMode = ... # 0x0 + IntersectsItemShape : Qt.ItemSelectionMode = ... # 0x1 + ContainsItemBoundingRect : Qt.ItemSelectionMode = ... # 0x2 + IntersectsItemBoundingRect: Qt.ItemSelectionMode = ... # 0x3 + + class ItemSelectionOperation(object): + ReplaceSelection : Qt.ItemSelectionOperation = ... # 0x0 + AddToSelection : Qt.ItemSelectionOperation = ... # 0x1 + + class Key(object): + Key_Any : Qt.Key = ... # 0x20 + Key_Space : Qt.Key = ... # 0x20 + Key_Exclam : Qt.Key = ... # 0x21 + Key_QuoteDbl : Qt.Key = ... # 0x22 + Key_NumberSign : Qt.Key = ... # 0x23 + Key_Dollar : Qt.Key = ... # 0x24 + Key_Percent : Qt.Key = ... # 0x25 + Key_Ampersand : Qt.Key = ... # 0x26 + Key_Apostrophe : Qt.Key = ... # 0x27 + Key_ParenLeft : Qt.Key = ... # 0x28 + Key_ParenRight : Qt.Key = ... # 0x29 + Key_Asterisk : Qt.Key = ... # 0x2a + Key_Plus : Qt.Key = ... # 0x2b + Key_Comma : Qt.Key = ... # 0x2c + Key_Minus : Qt.Key = ... # 0x2d + Key_Period : Qt.Key = ... # 0x2e + Key_Slash : Qt.Key = ... # 0x2f + Key_0 : Qt.Key = ... # 0x30 + Key_1 : Qt.Key = ... # 0x31 + Key_2 : Qt.Key = ... # 0x32 + Key_3 : Qt.Key = ... # 0x33 + Key_4 : Qt.Key = ... # 0x34 + Key_5 : Qt.Key = ... # 0x35 + Key_6 : Qt.Key = ... # 0x36 + Key_7 : Qt.Key = ... # 0x37 + Key_8 : Qt.Key = ... # 0x38 + Key_9 : Qt.Key = ... # 0x39 + Key_Colon : Qt.Key = ... # 0x3a + Key_Semicolon : Qt.Key = ... # 0x3b + Key_Less : Qt.Key = ... # 0x3c + Key_Equal : Qt.Key = ... # 0x3d + Key_Greater : Qt.Key = ... # 0x3e + Key_Question : Qt.Key = ... # 0x3f + Key_At : Qt.Key = ... # 0x40 + Key_A : Qt.Key = ... # 0x41 + Key_B : Qt.Key = ... # 0x42 + Key_C : Qt.Key = ... # 0x43 + Key_D : Qt.Key = ... # 0x44 + Key_E : Qt.Key = ... # 0x45 + Key_F : Qt.Key = ... # 0x46 + Key_G : Qt.Key = ... # 0x47 + Key_H : Qt.Key = ... # 0x48 + Key_I : Qt.Key = ... # 0x49 + Key_J : Qt.Key = ... # 0x4a + Key_K : Qt.Key = ... # 0x4b + Key_L : Qt.Key = ... # 0x4c + Key_M : Qt.Key = ... # 0x4d + Key_N : Qt.Key = ... # 0x4e + Key_O : Qt.Key = ... # 0x4f + Key_P : Qt.Key = ... # 0x50 + Key_Q : Qt.Key = ... # 0x51 + Key_R : Qt.Key = ... # 0x52 + Key_S : Qt.Key = ... # 0x53 + Key_T : Qt.Key = ... # 0x54 + Key_U : Qt.Key = ... # 0x55 + Key_V : Qt.Key = ... # 0x56 + Key_W : Qt.Key = ... # 0x57 + Key_X : Qt.Key = ... # 0x58 + Key_Y : Qt.Key = ... # 0x59 + Key_Z : Qt.Key = ... # 0x5a + Key_BracketLeft : Qt.Key = ... # 0x5b + Key_Backslash : Qt.Key = ... # 0x5c + Key_BracketRight : Qt.Key = ... # 0x5d + Key_AsciiCircum : Qt.Key = ... # 0x5e + Key_Underscore : Qt.Key = ... # 0x5f + Key_QuoteLeft : Qt.Key = ... # 0x60 + Key_BraceLeft : Qt.Key = ... # 0x7b + Key_Bar : Qt.Key = ... # 0x7c + Key_BraceRight : Qt.Key = ... # 0x7d + Key_AsciiTilde : Qt.Key = ... # 0x7e + Key_nobreakspace : Qt.Key = ... # 0xa0 + Key_exclamdown : Qt.Key = ... # 0xa1 + Key_cent : Qt.Key = ... # 0xa2 + Key_sterling : Qt.Key = ... # 0xa3 + Key_currency : Qt.Key = ... # 0xa4 + Key_yen : Qt.Key = ... # 0xa5 + Key_brokenbar : Qt.Key = ... # 0xa6 + Key_section : Qt.Key = ... # 0xa7 + Key_diaeresis : Qt.Key = ... # 0xa8 + Key_copyright : Qt.Key = ... # 0xa9 + Key_ordfeminine : Qt.Key = ... # 0xaa + Key_guillemotleft : Qt.Key = ... # 0xab + Key_notsign : Qt.Key = ... # 0xac + Key_hyphen : Qt.Key = ... # 0xad + Key_registered : Qt.Key = ... # 0xae + Key_macron : Qt.Key = ... # 0xaf + Key_degree : Qt.Key = ... # 0xb0 + Key_plusminus : Qt.Key = ... # 0xb1 + Key_twosuperior : Qt.Key = ... # 0xb2 + Key_threesuperior : Qt.Key = ... # 0xb3 + Key_acute : Qt.Key = ... # 0xb4 + Key_mu : Qt.Key = ... # 0xb5 + Key_paragraph : Qt.Key = ... # 0xb6 + Key_periodcentered : Qt.Key = ... # 0xb7 + Key_cedilla : Qt.Key = ... # 0xb8 + Key_onesuperior : Qt.Key = ... # 0xb9 + Key_masculine : Qt.Key = ... # 0xba + Key_guillemotright : Qt.Key = ... # 0xbb + Key_onequarter : Qt.Key = ... # 0xbc + Key_onehalf : Qt.Key = ... # 0xbd + Key_threequarters : Qt.Key = ... # 0xbe + Key_questiondown : Qt.Key = ... # 0xbf + Key_Agrave : Qt.Key = ... # 0xc0 + Key_Aacute : Qt.Key = ... # 0xc1 + Key_Acircumflex : Qt.Key = ... # 0xc2 + Key_Atilde : Qt.Key = ... # 0xc3 + Key_Adiaeresis : Qt.Key = ... # 0xc4 + Key_Aring : Qt.Key = ... # 0xc5 + Key_AE : Qt.Key = ... # 0xc6 + Key_Ccedilla : Qt.Key = ... # 0xc7 + Key_Egrave : Qt.Key = ... # 0xc8 + Key_Eacute : Qt.Key = ... # 0xc9 + Key_Ecircumflex : Qt.Key = ... # 0xca + Key_Ediaeresis : Qt.Key = ... # 0xcb + Key_Igrave : Qt.Key = ... # 0xcc + Key_Iacute : Qt.Key = ... # 0xcd + Key_Icircumflex : Qt.Key = ... # 0xce + Key_Idiaeresis : Qt.Key = ... # 0xcf + Key_ETH : Qt.Key = ... # 0xd0 + Key_Ntilde : Qt.Key = ... # 0xd1 + Key_Ograve : Qt.Key = ... # 0xd2 + Key_Oacute : Qt.Key = ... # 0xd3 + Key_Ocircumflex : Qt.Key = ... # 0xd4 + Key_Otilde : Qt.Key = ... # 0xd5 + Key_Odiaeresis : Qt.Key = ... # 0xd6 + Key_multiply : Qt.Key = ... # 0xd7 + Key_Ooblique : Qt.Key = ... # 0xd8 + Key_Ugrave : Qt.Key = ... # 0xd9 + Key_Uacute : Qt.Key = ... # 0xda + Key_Ucircumflex : Qt.Key = ... # 0xdb + Key_Udiaeresis : Qt.Key = ... # 0xdc + Key_Yacute : Qt.Key = ... # 0xdd + Key_THORN : Qt.Key = ... # 0xde + Key_ssharp : Qt.Key = ... # 0xdf + Key_division : Qt.Key = ... # 0xf7 + Key_ydiaeresis : Qt.Key = ... # 0xff + Key_Escape : Qt.Key = ... # 0x1000000 + Key_Tab : Qt.Key = ... # 0x1000001 + Key_Backtab : Qt.Key = ... # 0x1000002 + Key_Backspace : Qt.Key = ... # 0x1000003 + Key_Return : Qt.Key = ... # 0x1000004 + Key_Enter : Qt.Key = ... # 0x1000005 + Key_Insert : Qt.Key = ... # 0x1000006 + Key_Delete : Qt.Key = ... # 0x1000007 + Key_Pause : Qt.Key = ... # 0x1000008 + Key_Print : Qt.Key = ... # 0x1000009 + Key_SysReq : Qt.Key = ... # 0x100000a + Key_Clear : Qt.Key = ... # 0x100000b + Key_Home : Qt.Key = ... # 0x1000010 + Key_End : Qt.Key = ... # 0x1000011 + Key_Left : Qt.Key = ... # 0x1000012 + Key_Up : Qt.Key = ... # 0x1000013 + Key_Right : Qt.Key = ... # 0x1000014 + Key_Down : Qt.Key = ... # 0x1000015 + Key_PageUp : Qt.Key = ... # 0x1000016 + Key_PageDown : Qt.Key = ... # 0x1000017 + Key_Shift : Qt.Key = ... # 0x1000020 + Key_Control : Qt.Key = ... # 0x1000021 + Key_Meta : Qt.Key = ... # 0x1000022 + Key_Alt : Qt.Key = ... # 0x1000023 + Key_CapsLock : Qt.Key = ... # 0x1000024 + Key_NumLock : Qt.Key = ... # 0x1000025 + Key_ScrollLock : Qt.Key = ... # 0x1000026 + Key_F1 : Qt.Key = ... # 0x1000030 + Key_F2 : Qt.Key = ... # 0x1000031 + Key_F3 : Qt.Key = ... # 0x1000032 + Key_F4 : Qt.Key = ... # 0x1000033 + Key_F5 : Qt.Key = ... # 0x1000034 + Key_F6 : Qt.Key = ... # 0x1000035 + Key_F7 : Qt.Key = ... # 0x1000036 + Key_F8 : Qt.Key = ... # 0x1000037 + Key_F9 : Qt.Key = ... # 0x1000038 + Key_F10 : Qt.Key = ... # 0x1000039 + Key_F11 : Qt.Key = ... # 0x100003a + Key_F12 : Qt.Key = ... # 0x100003b + Key_F13 : Qt.Key = ... # 0x100003c + Key_F14 : Qt.Key = ... # 0x100003d + Key_F15 : Qt.Key = ... # 0x100003e + Key_F16 : Qt.Key = ... # 0x100003f + Key_F17 : Qt.Key = ... # 0x1000040 + Key_F18 : Qt.Key = ... # 0x1000041 + Key_F19 : Qt.Key = ... # 0x1000042 + Key_F20 : Qt.Key = ... # 0x1000043 + Key_F21 : Qt.Key = ... # 0x1000044 + Key_F22 : Qt.Key = ... # 0x1000045 + Key_F23 : Qt.Key = ... # 0x1000046 + Key_F24 : Qt.Key = ... # 0x1000047 + Key_F25 : Qt.Key = ... # 0x1000048 + Key_F26 : Qt.Key = ... # 0x1000049 + Key_F27 : Qt.Key = ... # 0x100004a + Key_F28 : Qt.Key = ... # 0x100004b + Key_F29 : Qt.Key = ... # 0x100004c + Key_F30 : Qt.Key = ... # 0x100004d + Key_F31 : Qt.Key = ... # 0x100004e + Key_F32 : Qt.Key = ... # 0x100004f + Key_F33 : Qt.Key = ... # 0x1000050 + Key_F34 : Qt.Key = ... # 0x1000051 + Key_F35 : Qt.Key = ... # 0x1000052 + Key_Super_L : Qt.Key = ... # 0x1000053 + Key_Super_R : Qt.Key = ... # 0x1000054 + Key_Menu : Qt.Key = ... # 0x1000055 + Key_Hyper_L : Qt.Key = ... # 0x1000056 + Key_Hyper_R : Qt.Key = ... # 0x1000057 + Key_Help : Qt.Key = ... # 0x1000058 + Key_Direction_L : Qt.Key = ... # 0x1000059 + Key_Direction_R : Qt.Key = ... # 0x1000060 + Key_Back : Qt.Key = ... # 0x1000061 + Key_Forward : Qt.Key = ... # 0x1000062 + Key_Stop : Qt.Key = ... # 0x1000063 + Key_Refresh : Qt.Key = ... # 0x1000064 + Key_VolumeDown : Qt.Key = ... # 0x1000070 + Key_VolumeMute : Qt.Key = ... # 0x1000071 + Key_VolumeUp : Qt.Key = ... # 0x1000072 + Key_BassBoost : Qt.Key = ... # 0x1000073 + Key_BassUp : Qt.Key = ... # 0x1000074 + Key_BassDown : Qt.Key = ... # 0x1000075 + Key_TrebleUp : Qt.Key = ... # 0x1000076 + Key_TrebleDown : Qt.Key = ... # 0x1000077 + Key_MediaPlay : Qt.Key = ... # 0x1000080 + Key_MediaStop : Qt.Key = ... # 0x1000081 + Key_MediaPrevious : Qt.Key = ... # 0x1000082 + Key_MediaNext : Qt.Key = ... # 0x1000083 + Key_MediaRecord : Qt.Key = ... # 0x1000084 + Key_MediaPause : Qt.Key = ... # 0x1000085 + Key_MediaTogglePlayPause : Qt.Key = ... # 0x1000086 + Key_HomePage : Qt.Key = ... # 0x1000090 + Key_Favorites : Qt.Key = ... # 0x1000091 + Key_Search : Qt.Key = ... # 0x1000092 + Key_Standby : Qt.Key = ... # 0x1000093 + Key_OpenUrl : Qt.Key = ... # 0x1000094 + Key_LaunchMail : Qt.Key = ... # 0x10000a0 + Key_LaunchMedia : Qt.Key = ... # 0x10000a1 + Key_Launch0 : Qt.Key = ... # 0x10000a2 + Key_Launch1 : Qt.Key = ... # 0x10000a3 + Key_Launch2 : Qt.Key = ... # 0x10000a4 + Key_Launch3 : Qt.Key = ... # 0x10000a5 + Key_Launch4 : Qt.Key = ... # 0x10000a6 + Key_Launch5 : Qt.Key = ... # 0x10000a7 + Key_Launch6 : Qt.Key = ... # 0x10000a8 + Key_Launch7 : Qt.Key = ... # 0x10000a9 + Key_Launch8 : Qt.Key = ... # 0x10000aa + Key_Launch9 : Qt.Key = ... # 0x10000ab + Key_LaunchA : Qt.Key = ... # 0x10000ac + Key_LaunchB : Qt.Key = ... # 0x10000ad + Key_LaunchC : Qt.Key = ... # 0x10000ae + Key_LaunchD : Qt.Key = ... # 0x10000af + Key_LaunchE : Qt.Key = ... # 0x10000b0 + Key_LaunchF : Qt.Key = ... # 0x10000b1 + Key_MonBrightnessUp : Qt.Key = ... # 0x10000b2 + Key_MonBrightnessDown : Qt.Key = ... # 0x10000b3 + Key_KeyboardLightOnOff : Qt.Key = ... # 0x10000b4 + Key_KeyboardBrightnessUp : Qt.Key = ... # 0x10000b5 + Key_KeyboardBrightnessDown: Qt.Key = ... # 0x10000b6 + Key_PowerOff : Qt.Key = ... # 0x10000b7 + Key_WakeUp : Qt.Key = ... # 0x10000b8 + Key_Eject : Qt.Key = ... # 0x10000b9 + Key_ScreenSaver : Qt.Key = ... # 0x10000ba + Key_WWW : Qt.Key = ... # 0x10000bb + Key_Memo : Qt.Key = ... # 0x10000bc + Key_LightBulb : Qt.Key = ... # 0x10000bd + Key_Shop : Qt.Key = ... # 0x10000be + Key_History : Qt.Key = ... # 0x10000bf + Key_AddFavorite : Qt.Key = ... # 0x10000c0 + Key_HotLinks : Qt.Key = ... # 0x10000c1 + Key_BrightnessAdjust : Qt.Key = ... # 0x10000c2 + Key_Finance : Qt.Key = ... # 0x10000c3 + Key_Community : Qt.Key = ... # 0x10000c4 + Key_AudioRewind : Qt.Key = ... # 0x10000c5 + Key_BackForward : Qt.Key = ... # 0x10000c6 + Key_ApplicationLeft : Qt.Key = ... # 0x10000c7 + Key_ApplicationRight : Qt.Key = ... # 0x10000c8 + Key_Book : Qt.Key = ... # 0x10000c9 + Key_CD : Qt.Key = ... # 0x10000ca + Key_Calculator : Qt.Key = ... # 0x10000cb + Key_ToDoList : Qt.Key = ... # 0x10000cc + Key_ClearGrab : Qt.Key = ... # 0x10000cd + Key_Close : Qt.Key = ... # 0x10000ce + Key_Copy : Qt.Key = ... # 0x10000cf + Key_Cut : Qt.Key = ... # 0x10000d0 + Key_Display : Qt.Key = ... # 0x10000d1 + Key_DOS : Qt.Key = ... # 0x10000d2 + Key_Documents : Qt.Key = ... # 0x10000d3 + Key_Excel : Qt.Key = ... # 0x10000d4 + Key_Explorer : Qt.Key = ... # 0x10000d5 + Key_Game : Qt.Key = ... # 0x10000d6 + Key_Go : Qt.Key = ... # 0x10000d7 + Key_iTouch : Qt.Key = ... # 0x10000d8 + Key_LogOff : Qt.Key = ... # 0x10000d9 + Key_Market : Qt.Key = ... # 0x10000da + Key_Meeting : Qt.Key = ... # 0x10000db + Key_MenuKB : Qt.Key = ... # 0x10000dc + Key_MenuPB : Qt.Key = ... # 0x10000dd + Key_MySites : Qt.Key = ... # 0x10000de + Key_News : Qt.Key = ... # 0x10000df + Key_OfficeHome : Qt.Key = ... # 0x10000e0 + Key_Option : Qt.Key = ... # 0x10000e1 + Key_Paste : Qt.Key = ... # 0x10000e2 + Key_Phone : Qt.Key = ... # 0x10000e3 + Key_Calendar : Qt.Key = ... # 0x10000e4 + Key_Reply : Qt.Key = ... # 0x10000e5 + Key_Reload : Qt.Key = ... # 0x10000e6 + Key_RotateWindows : Qt.Key = ... # 0x10000e7 + Key_RotationPB : Qt.Key = ... # 0x10000e8 + Key_RotationKB : Qt.Key = ... # 0x10000e9 + Key_Save : Qt.Key = ... # 0x10000ea + Key_Send : Qt.Key = ... # 0x10000eb + Key_Spell : Qt.Key = ... # 0x10000ec + Key_SplitScreen : Qt.Key = ... # 0x10000ed + Key_Support : Qt.Key = ... # 0x10000ee + Key_TaskPane : Qt.Key = ... # 0x10000ef + Key_Terminal : Qt.Key = ... # 0x10000f0 + Key_Tools : Qt.Key = ... # 0x10000f1 + Key_Travel : Qt.Key = ... # 0x10000f2 + Key_Video : Qt.Key = ... # 0x10000f3 + Key_Word : Qt.Key = ... # 0x10000f4 + Key_Xfer : Qt.Key = ... # 0x10000f5 + Key_ZoomIn : Qt.Key = ... # 0x10000f6 + Key_ZoomOut : Qt.Key = ... # 0x10000f7 + Key_Away : Qt.Key = ... # 0x10000f8 + Key_Messenger : Qt.Key = ... # 0x10000f9 + Key_WebCam : Qt.Key = ... # 0x10000fa + Key_MailForward : Qt.Key = ... # 0x10000fb + Key_Pictures : Qt.Key = ... # 0x10000fc + Key_Music : Qt.Key = ... # 0x10000fd + Key_Battery : Qt.Key = ... # 0x10000fe + Key_Bluetooth : Qt.Key = ... # 0x10000ff + Key_WLAN : Qt.Key = ... # 0x1000100 + Key_UWB : Qt.Key = ... # 0x1000101 + Key_AudioForward : Qt.Key = ... # 0x1000102 + Key_AudioRepeat : Qt.Key = ... # 0x1000103 + Key_AudioRandomPlay : Qt.Key = ... # 0x1000104 + Key_Subtitle : Qt.Key = ... # 0x1000105 + Key_AudioCycleTrack : Qt.Key = ... # 0x1000106 + Key_Time : Qt.Key = ... # 0x1000107 + Key_Hibernate : Qt.Key = ... # 0x1000108 + Key_View : Qt.Key = ... # 0x1000109 + Key_TopMenu : Qt.Key = ... # 0x100010a + Key_PowerDown : Qt.Key = ... # 0x100010b + Key_Suspend : Qt.Key = ... # 0x100010c + Key_ContrastAdjust : Qt.Key = ... # 0x100010d + Key_LaunchG : Qt.Key = ... # 0x100010e + Key_LaunchH : Qt.Key = ... # 0x100010f + Key_TouchpadToggle : Qt.Key = ... # 0x1000110 + Key_TouchpadOn : Qt.Key = ... # 0x1000111 + Key_TouchpadOff : Qt.Key = ... # 0x1000112 + Key_MicMute : Qt.Key = ... # 0x1000113 + Key_Red : Qt.Key = ... # 0x1000114 + Key_Green : Qt.Key = ... # 0x1000115 + Key_Yellow : Qt.Key = ... # 0x1000116 + Key_Blue : Qt.Key = ... # 0x1000117 + Key_ChannelUp : Qt.Key = ... # 0x1000118 + Key_ChannelDown : Qt.Key = ... # 0x1000119 + Key_Guide : Qt.Key = ... # 0x100011a + Key_Info : Qt.Key = ... # 0x100011b + Key_Settings : Qt.Key = ... # 0x100011c + Key_MicVolumeUp : Qt.Key = ... # 0x100011d + Key_MicVolumeDown : Qt.Key = ... # 0x100011e + Key_New : Qt.Key = ... # 0x1000120 + Key_Open : Qt.Key = ... # 0x1000121 + Key_Find : Qt.Key = ... # 0x1000122 + Key_Undo : Qt.Key = ... # 0x1000123 + Key_Redo : Qt.Key = ... # 0x1000124 + Key_AltGr : Qt.Key = ... # 0x1001103 + Key_Multi_key : Qt.Key = ... # 0x1001120 + Key_Kanji : Qt.Key = ... # 0x1001121 + Key_Muhenkan : Qt.Key = ... # 0x1001122 + Key_Henkan : Qt.Key = ... # 0x1001123 + Key_Romaji : Qt.Key = ... # 0x1001124 + Key_Hiragana : Qt.Key = ... # 0x1001125 + Key_Katakana : Qt.Key = ... # 0x1001126 + Key_Hiragana_Katakana : Qt.Key = ... # 0x1001127 + Key_Zenkaku : Qt.Key = ... # 0x1001128 + Key_Hankaku : Qt.Key = ... # 0x1001129 + Key_Zenkaku_Hankaku : Qt.Key = ... # 0x100112a + Key_Touroku : Qt.Key = ... # 0x100112b + Key_Massyo : Qt.Key = ... # 0x100112c + Key_Kana_Lock : Qt.Key = ... # 0x100112d + Key_Kana_Shift : Qt.Key = ... # 0x100112e + Key_Eisu_Shift : Qt.Key = ... # 0x100112f + Key_Eisu_toggle : Qt.Key = ... # 0x1001130 + Key_Hangul : Qt.Key = ... # 0x1001131 + Key_Hangul_Start : Qt.Key = ... # 0x1001132 + Key_Hangul_End : Qt.Key = ... # 0x1001133 + Key_Hangul_Hanja : Qt.Key = ... # 0x1001134 + Key_Hangul_Jamo : Qt.Key = ... # 0x1001135 + Key_Hangul_Romaja : Qt.Key = ... # 0x1001136 + Key_Codeinput : Qt.Key = ... # 0x1001137 + Key_Hangul_Jeonja : Qt.Key = ... # 0x1001138 + Key_Hangul_Banja : Qt.Key = ... # 0x1001139 + Key_Hangul_PreHanja : Qt.Key = ... # 0x100113a + Key_Hangul_PostHanja : Qt.Key = ... # 0x100113b + Key_SingleCandidate : Qt.Key = ... # 0x100113c + Key_MultipleCandidate : Qt.Key = ... # 0x100113d + Key_PreviousCandidate : Qt.Key = ... # 0x100113e + Key_Hangul_Special : Qt.Key = ... # 0x100113f + Key_Mode_switch : Qt.Key = ... # 0x100117e + Key_Dead_Grave : Qt.Key = ... # 0x1001250 + Key_Dead_Acute : Qt.Key = ... # 0x1001251 + Key_Dead_Circumflex : Qt.Key = ... # 0x1001252 + Key_Dead_Tilde : Qt.Key = ... # 0x1001253 + Key_Dead_Macron : Qt.Key = ... # 0x1001254 + Key_Dead_Breve : Qt.Key = ... # 0x1001255 + Key_Dead_Abovedot : Qt.Key = ... # 0x1001256 + Key_Dead_Diaeresis : Qt.Key = ... # 0x1001257 + Key_Dead_Abovering : Qt.Key = ... # 0x1001258 + Key_Dead_Doubleacute : Qt.Key = ... # 0x1001259 + Key_Dead_Caron : Qt.Key = ... # 0x100125a + Key_Dead_Cedilla : Qt.Key = ... # 0x100125b + Key_Dead_Ogonek : Qt.Key = ... # 0x100125c + Key_Dead_Iota : Qt.Key = ... # 0x100125d + Key_Dead_Voiced_Sound : Qt.Key = ... # 0x100125e + Key_Dead_Semivoiced_Sound: Qt.Key = ... # 0x100125f + Key_Dead_Belowdot : Qt.Key = ... # 0x1001260 + Key_Dead_Hook : Qt.Key = ... # 0x1001261 + Key_Dead_Horn : Qt.Key = ... # 0x1001262 + Key_Dead_Stroke : Qt.Key = ... # 0x1001263 + Key_Dead_Abovecomma : Qt.Key = ... # 0x1001264 + Key_Dead_Abovereversedcomma: Qt.Key = ... # 0x1001265 + Key_Dead_Doublegrave : Qt.Key = ... # 0x1001266 + Key_Dead_Belowring : Qt.Key = ... # 0x1001267 + Key_Dead_Belowmacron : Qt.Key = ... # 0x1001268 + Key_Dead_Belowcircumflex : Qt.Key = ... # 0x1001269 + Key_Dead_Belowtilde : Qt.Key = ... # 0x100126a + Key_Dead_Belowbreve : Qt.Key = ... # 0x100126b + Key_Dead_Belowdiaeresis : Qt.Key = ... # 0x100126c + Key_Dead_Invertedbreve : Qt.Key = ... # 0x100126d + Key_Dead_Belowcomma : Qt.Key = ... # 0x100126e + Key_Dead_Currency : Qt.Key = ... # 0x100126f + Key_Dead_a : Qt.Key = ... # 0x1001280 + Key_Dead_A : Qt.Key = ... # 0x1001281 + Key_Dead_e : Qt.Key = ... # 0x1001282 + Key_Dead_E : Qt.Key = ... # 0x1001283 + Key_Dead_i : Qt.Key = ... # 0x1001284 + Key_Dead_I : Qt.Key = ... # 0x1001285 + Key_Dead_o : Qt.Key = ... # 0x1001286 + Key_Dead_O : Qt.Key = ... # 0x1001287 + Key_Dead_u : Qt.Key = ... # 0x1001288 + Key_Dead_U : Qt.Key = ... # 0x1001289 + Key_Dead_Small_Schwa : Qt.Key = ... # 0x100128a + Key_Dead_Capital_Schwa : Qt.Key = ... # 0x100128b + Key_Dead_Greek : Qt.Key = ... # 0x100128c + Key_Dead_Lowline : Qt.Key = ... # 0x1001290 + Key_Dead_Aboveverticalline: Qt.Key = ... # 0x1001291 + Key_Dead_Belowverticalline: Qt.Key = ... # 0x1001292 + Key_Dead_Longsolidusoverlay: Qt.Key = ... # 0x1001293 + Key_MediaLast : Qt.Key = ... # 0x100ffff + Key_Select : Qt.Key = ... # 0x1010000 + Key_Yes : Qt.Key = ... # 0x1010001 + Key_No : Qt.Key = ... # 0x1010002 + Key_Cancel : Qt.Key = ... # 0x1020001 + Key_Printer : Qt.Key = ... # 0x1020002 + Key_Execute : Qt.Key = ... # 0x1020003 + Key_Sleep : Qt.Key = ... # 0x1020004 + Key_Play : Qt.Key = ... # 0x1020005 + Key_Zoom : Qt.Key = ... # 0x1020006 + Key_Exit : Qt.Key = ... # 0x102000a + Key_Context1 : Qt.Key = ... # 0x1100000 + Key_Context2 : Qt.Key = ... # 0x1100001 + Key_Context3 : Qt.Key = ... # 0x1100002 + Key_Context4 : Qt.Key = ... # 0x1100003 + Key_Call : Qt.Key = ... # 0x1100004 + Key_Hangup : Qt.Key = ... # 0x1100005 + Key_Flip : Qt.Key = ... # 0x1100006 + Key_ToggleCallHangup : Qt.Key = ... # 0x1100007 + Key_VoiceDial : Qt.Key = ... # 0x1100008 + Key_LastNumberRedial : Qt.Key = ... # 0x1100009 + Key_Camera : Qt.Key = ... # 0x1100020 + Key_CameraFocus : Qt.Key = ... # 0x1100021 + Key_unknown : Qt.Key = ... # 0x1ffffff + + class KeyboardModifier(object): + KeyboardModifierMask : Qt.KeyboardModifier = ... # -0x2000000 + NoModifier : Qt.KeyboardModifier = ... # 0x0 + ShiftModifier : Qt.KeyboardModifier = ... # 0x2000000 + ControlModifier : Qt.KeyboardModifier = ... # 0x4000000 + AltModifier : Qt.KeyboardModifier = ... # 0x8000000 + MetaModifier : Qt.KeyboardModifier = ... # 0x10000000 + KeypadModifier : Qt.KeyboardModifier = ... # 0x20000000 + GroupSwitchModifier : Qt.KeyboardModifier = ... # 0x40000000 + + class KeyboardModifiers(object): ... + + class LayoutDirection(object): + LeftToRight : Qt.LayoutDirection = ... # 0x0 + RightToLeft : Qt.LayoutDirection = ... # 0x1 + LayoutDirectionAuto : Qt.LayoutDirection = ... # 0x2 + + class MaskMode(object): + MaskInColor : Qt.MaskMode = ... # 0x0 + MaskOutColor : Qt.MaskMode = ... # 0x1 + + class MatchFlag(object): + MatchExactly : Qt.MatchFlag = ... # 0x0 + MatchContains : Qt.MatchFlag = ... # 0x1 + MatchStartsWith : Qt.MatchFlag = ... # 0x2 + MatchEndsWith : Qt.MatchFlag = ... # 0x3 + MatchRegExp : Qt.MatchFlag = ... # 0x4 + MatchWildcard : Qt.MatchFlag = ... # 0x5 + MatchFixedString : Qt.MatchFlag = ... # 0x8 + MatchRegularExpression : Qt.MatchFlag = ... # 0x9 + MatchCaseSensitive : Qt.MatchFlag = ... # 0x10 + MatchWrap : Qt.MatchFlag = ... # 0x20 + MatchRecursive : Qt.MatchFlag = ... # 0x40 + + class MatchFlags(object): ... + + class Modifier(object): + MODIFIER_MASK : Qt.Modifier = ... # -0x2000000 + UNICODE_ACCEL : Qt.Modifier = ... # 0x0 + SHIFT : Qt.Modifier = ... # 0x2000000 + CTRL : Qt.Modifier = ... # 0x4000000 + ALT : Qt.Modifier = ... # 0x8000000 + META : Qt.Modifier = ... # 0x10000000 + + class MouseButton(object): + MouseButtonMask : Qt.MouseButton = ... # -0x1 + NoButton : Qt.MouseButton = ... # 0x0 + LeftButton : Qt.MouseButton = ... # 0x1 + RightButton : Qt.MouseButton = ... # 0x2 + MidButton : Qt.MouseButton = ... # 0x4 + MiddleButton : Qt.MouseButton = ... # 0x4 + BackButton : Qt.MouseButton = ... # 0x8 + ExtraButton1 : Qt.MouseButton = ... # 0x8 + XButton1 : Qt.MouseButton = ... # 0x8 + ExtraButton2 : Qt.MouseButton = ... # 0x10 + ForwardButton : Qt.MouseButton = ... # 0x10 + XButton2 : Qt.MouseButton = ... # 0x10 + ExtraButton3 : Qt.MouseButton = ... # 0x20 + TaskButton : Qt.MouseButton = ... # 0x20 + ExtraButton4 : Qt.MouseButton = ... # 0x40 + ExtraButton5 : Qt.MouseButton = ... # 0x80 + ExtraButton6 : Qt.MouseButton = ... # 0x100 + ExtraButton7 : Qt.MouseButton = ... # 0x200 + ExtraButton8 : Qt.MouseButton = ... # 0x400 + ExtraButton9 : Qt.MouseButton = ... # 0x800 + ExtraButton10 : Qt.MouseButton = ... # 0x1000 + ExtraButton11 : Qt.MouseButton = ... # 0x2000 + ExtraButton12 : Qt.MouseButton = ... # 0x4000 + ExtraButton13 : Qt.MouseButton = ... # 0x8000 + ExtraButton14 : Qt.MouseButton = ... # 0x10000 + ExtraButton15 : Qt.MouseButton = ... # 0x20000 + ExtraButton16 : Qt.MouseButton = ... # 0x40000 + ExtraButton17 : Qt.MouseButton = ... # 0x80000 + ExtraButton18 : Qt.MouseButton = ... # 0x100000 + ExtraButton19 : Qt.MouseButton = ... # 0x200000 + ExtraButton20 : Qt.MouseButton = ... # 0x400000 + ExtraButton21 : Qt.MouseButton = ... # 0x800000 + ExtraButton22 : Qt.MouseButton = ... # 0x1000000 + ExtraButton23 : Qt.MouseButton = ... # 0x2000000 + ExtraButton24 : Qt.MouseButton = ... # 0x4000000 + MaxMouseButton : Qt.MouseButton = ... # 0x4000000 + AllButtons : Qt.MouseButton = ... # 0x7ffffff + + class MouseButtons(object): ... + + class MouseEventFlag(object): + MouseEventCreatedDoubleClick: Qt.MouseEventFlag = ... # 0x1 + MouseEventFlagMask : Qt.MouseEventFlag = ... # 0xff + + class MouseEventFlags(object): ... + + class MouseEventSource(object): + MouseEventNotSynthesized : Qt.MouseEventSource = ... # 0x0 + MouseEventSynthesizedBySystem: Qt.MouseEventSource = ... # 0x1 + MouseEventSynthesizedByQt: Qt.MouseEventSource = ... # 0x2 + MouseEventSynthesizedByApplication: Qt.MouseEventSource = ... # 0x3 + + class NativeGestureType(object): + BeginNativeGesture : Qt.NativeGestureType = ... # 0x0 + EndNativeGesture : Qt.NativeGestureType = ... # 0x1 + PanNativeGesture : Qt.NativeGestureType = ... # 0x2 + ZoomNativeGesture : Qt.NativeGestureType = ... # 0x3 + SmartZoomNativeGesture : Qt.NativeGestureType = ... # 0x4 + RotateNativeGesture : Qt.NativeGestureType = ... # 0x5 + SwipeNativeGesture : Qt.NativeGestureType = ... # 0x6 + + class NavigationMode(object): + NavigationModeNone : Qt.NavigationMode = ... # 0x0 + NavigationModeKeypadTabOrder: Qt.NavigationMode = ... # 0x1 + NavigationModeKeypadDirectional: Qt.NavigationMode = ... # 0x2 + NavigationModeCursorAuto : Qt.NavigationMode = ... # 0x3 + NavigationModeCursorForceVisible: Qt.NavigationMode = ... # 0x4 + + class Orientation(object): + Horizontal : Qt.Orientation = ... # 0x1 + Vertical : Qt.Orientation = ... # 0x2 + + class Orientations(object): ... + + class PenCapStyle(object): + FlatCap : Qt.PenCapStyle = ... # 0x0 + SquareCap : Qt.PenCapStyle = ... # 0x10 + RoundCap : Qt.PenCapStyle = ... # 0x20 + MPenCapStyle : Qt.PenCapStyle = ... # 0x30 + + class PenJoinStyle(object): + MiterJoin : Qt.PenJoinStyle = ... # 0x0 + BevelJoin : Qt.PenJoinStyle = ... # 0x40 + RoundJoin : Qt.PenJoinStyle = ... # 0x80 + SvgMiterJoin : Qt.PenJoinStyle = ... # 0x100 + MPenJoinStyle : Qt.PenJoinStyle = ... # 0x1c0 + + class PenStyle(object): + NoPen : Qt.PenStyle = ... # 0x0 + SolidLine : Qt.PenStyle = ... # 0x1 + DashLine : Qt.PenStyle = ... # 0x2 + DotLine : Qt.PenStyle = ... # 0x3 + DashDotLine : Qt.PenStyle = ... # 0x4 + DashDotDotLine : Qt.PenStyle = ... # 0x5 + CustomDashLine : Qt.PenStyle = ... # 0x6 + MPenStyle : Qt.PenStyle = ... # 0xf + + class ScreenOrientation(object): + PrimaryOrientation : Qt.ScreenOrientation = ... # 0x0 + PortraitOrientation : Qt.ScreenOrientation = ... # 0x1 + LandscapeOrientation : Qt.ScreenOrientation = ... # 0x2 + InvertedPortraitOrientation: Qt.ScreenOrientation = ... # 0x4 + InvertedLandscapeOrientation: Qt.ScreenOrientation = ... # 0x8 + + class ScreenOrientations(object): ... + + class ScrollBarPolicy(object): + ScrollBarAsNeeded : Qt.ScrollBarPolicy = ... # 0x0 + ScrollBarAlwaysOff : Qt.ScrollBarPolicy = ... # 0x1 + ScrollBarAlwaysOn : Qt.ScrollBarPolicy = ... # 0x2 + + class ScrollPhase(object): + NoScrollPhase : Qt.ScrollPhase = ... # 0x0 + ScrollBegin : Qt.ScrollPhase = ... # 0x1 + ScrollUpdate : Qt.ScrollPhase = ... # 0x2 + ScrollEnd : Qt.ScrollPhase = ... # 0x3 + ScrollMomentum : Qt.ScrollPhase = ... # 0x4 + + class ShortcutContext(object): + WidgetShortcut : Qt.ShortcutContext = ... # 0x0 + WindowShortcut : Qt.ShortcutContext = ... # 0x1 + ApplicationShortcut : Qt.ShortcutContext = ... # 0x2 + WidgetWithChildrenShortcut: Qt.ShortcutContext = ... # 0x3 + + class SizeHint(object): + MinimumSize : Qt.SizeHint = ... # 0x0 + PreferredSize : Qt.SizeHint = ... # 0x1 + MaximumSize : Qt.SizeHint = ... # 0x2 + MinimumDescent : Qt.SizeHint = ... # 0x3 + NSizeHints : Qt.SizeHint = ... # 0x4 + + class SizeMode(object): + AbsoluteSize : Qt.SizeMode = ... # 0x0 + RelativeSize : Qt.SizeMode = ... # 0x1 + + class SortOrder(object): + AscendingOrder : Qt.SortOrder = ... # 0x0 + DescendingOrder : Qt.SortOrder = ... # 0x1 + + class SplitBehavior(object): ... + + class SplitBehaviorFlags(object): + KeepEmptyParts : Qt.SplitBehaviorFlags = ... # 0x0 + SkipEmptyParts : Qt.SplitBehaviorFlags = ... # 0x1 + + class TabFocusBehavior(object): + NoTabFocus : Qt.TabFocusBehavior = ... # 0x0 + TabFocusTextControls : Qt.TabFocusBehavior = ... # 0x1 + TabFocusListControls : Qt.TabFocusBehavior = ... # 0x2 + TabFocusAllControls : Qt.TabFocusBehavior = ... # 0xff + + class TextElideMode(object): + ElideLeft : Qt.TextElideMode = ... # 0x0 + ElideRight : Qt.TextElideMode = ... # 0x1 + ElideMiddle : Qt.TextElideMode = ... # 0x2 + ElideNone : Qt.TextElideMode = ... # 0x3 + + class TextFlag(object): + TextSingleLine : Qt.TextFlag = ... # 0x100 + TextDontClip : Qt.TextFlag = ... # 0x200 + TextExpandTabs : Qt.TextFlag = ... # 0x400 + TextShowMnemonic : Qt.TextFlag = ... # 0x800 + TextWordWrap : Qt.TextFlag = ... # 0x1000 + TextWrapAnywhere : Qt.TextFlag = ... # 0x2000 + TextDontPrint : Qt.TextFlag = ... # 0x4000 + TextHideMnemonic : Qt.TextFlag = ... # 0x8000 + TextJustificationForced : Qt.TextFlag = ... # 0x10000 + TextForceLeftToRight : Qt.TextFlag = ... # 0x20000 + TextForceRightToLeft : Qt.TextFlag = ... # 0x40000 + TextLongestVariant : Qt.TextFlag = ... # 0x80000 + TextBypassShaping : Qt.TextFlag = ... # 0x100000 + TextIncludeTrailingSpaces: Qt.TextFlag = ... # 0x8000000 + + class TextFormat(object): + PlainText : Qt.TextFormat = ... # 0x0 + RichText : Qt.TextFormat = ... # 0x1 + AutoText : Qt.TextFormat = ... # 0x2 + MarkdownText : Qt.TextFormat = ... # 0x3 + + class TextInteractionFlag(object): + NoTextInteraction : Qt.TextInteractionFlag = ... # 0x0 + TextSelectableByMouse : Qt.TextInteractionFlag = ... # 0x1 + TextSelectableByKeyboard : Qt.TextInteractionFlag = ... # 0x2 + LinksAccessibleByMouse : Qt.TextInteractionFlag = ... # 0x4 + LinksAccessibleByKeyboard: Qt.TextInteractionFlag = ... # 0x8 + TextBrowserInteraction : Qt.TextInteractionFlag = ... # 0xd + TextEditable : Qt.TextInteractionFlag = ... # 0x10 + TextEditorInteraction : Qt.TextInteractionFlag = ... # 0x13 + + class TextInteractionFlags(object): ... + + class TileRule(object): + StretchTile : Qt.TileRule = ... # 0x0 + RepeatTile : Qt.TileRule = ... # 0x1 + RoundTile : Qt.TileRule = ... # 0x2 + + class TimeSpec(object): + LocalTime : Qt.TimeSpec = ... # 0x0 + UTC : Qt.TimeSpec = ... # 0x1 + OffsetFromUTC : Qt.TimeSpec = ... # 0x2 + TimeZone : Qt.TimeSpec = ... # 0x3 + + class TimerType(object): + PreciseTimer : Qt.TimerType = ... # 0x0 + CoarseTimer : Qt.TimerType = ... # 0x1 + VeryCoarseTimer : Qt.TimerType = ... # 0x2 + + class ToolBarArea(object): + NoToolBarArea : Qt.ToolBarArea = ... # 0x0 + LeftToolBarArea : Qt.ToolBarArea = ... # 0x1 + RightToolBarArea : Qt.ToolBarArea = ... # 0x2 + TopToolBarArea : Qt.ToolBarArea = ... # 0x4 + BottomToolBarArea : Qt.ToolBarArea = ... # 0x8 + AllToolBarAreas : Qt.ToolBarArea = ... # 0xf + ToolBarArea_Mask : Qt.ToolBarArea = ... # 0xf + + class ToolBarAreaSizes(object): + NToolBarAreas : Qt.ToolBarAreaSizes = ... # 0x4 + + class ToolBarAreas(object): ... + + class ToolButtonStyle(object): + ToolButtonIconOnly : Qt.ToolButtonStyle = ... # 0x0 + ToolButtonTextOnly : Qt.ToolButtonStyle = ... # 0x1 + ToolButtonTextBesideIcon : Qt.ToolButtonStyle = ... # 0x2 + ToolButtonTextUnderIcon : Qt.ToolButtonStyle = ... # 0x3 + ToolButtonFollowStyle : Qt.ToolButtonStyle = ... # 0x4 + + class TouchPointState(object): + TouchPointPressed : Qt.TouchPointState = ... # 0x1 + TouchPointMoved : Qt.TouchPointState = ... # 0x2 + TouchPointStationary : Qt.TouchPointState = ... # 0x4 + TouchPointReleased : Qt.TouchPointState = ... # 0x8 + + class TouchPointStates(object): ... + + class TransformationMode(object): + FastTransformation : Qt.TransformationMode = ... # 0x0 + SmoothTransformation : Qt.TransformationMode = ... # 0x1 + + class UIEffect(object): + UI_General : Qt.UIEffect = ... # 0x0 + UI_AnimateMenu : Qt.UIEffect = ... # 0x1 + UI_FadeMenu : Qt.UIEffect = ... # 0x2 + UI_AnimateCombo : Qt.UIEffect = ... # 0x3 + UI_AnimateTooltip : Qt.UIEffect = ... # 0x4 + UI_FadeTooltip : Qt.UIEffect = ... # 0x5 + UI_AnimateToolBox : Qt.UIEffect = ... # 0x6 + + class WhiteSpaceMode(object): + WhiteSpaceModeUndefined : Qt.WhiteSpaceMode = ... # -0x1 + WhiteSpaceNormal : Qt.WhiteSpaceMode = ... # 0x0 + WhiteSpacePre : Qt.WhiteSpaceMode = ... # 0x1 + WhiteSpaceNoWrap : Qt.WhiteSpaceMode = ... # 0x2 + + class WidgetAttribute(object): + WA_Disabled : Qt.WidgetAttribute = ... # 0x0 + WA_UnderMouse : Qt.WidgetAttribute = ... # 0x1 + WA_MouseTracking : Qt.WidgetAttribute = ... # 0x2 + WA_ContentsPropagated : Qt.WidgetAttribute = ... # 0x3 + WA_NoBackground : Qt.WidgetAttribute = ... # 0x4 + WA_OpaquePaintEvent : Qt.WidgetAttribute = ... # 0x4 + WA_StaticContents : Qt.WidgetAttribute = ... # 0x5 + WA_LaidOut : Qt.WidgetAttribute = ... # 0x7 + WA_PaintOnScreen : Qt.WidgetAttribute = ... # 0x8 + WA_NoSystemBackground : Qt.WidgetAttribute = ... # 0x9 + WA_UpdatesDisabled : Qt.WidgetAttribute = ... # 0xa + WA_Mapped : Qt.WidgetAttribute = ... # 0xb + WA_MacNoClickThrough : Qt.WidgetAttribute = ... # 0xc + WA_InputMethodEnabled : Qt.WidgetAttribute = ... # 0xe + WA_WState_Visible : Qt.WidgetAttribute = ... # 0xf + WA_WState_Hidden : Qt.WidgetAttribute = ... # 0x10 + WA_ForceDisabled : Qt.WidgetAttribute = ... # 0x20 + WA_KeyCompression : Qt.WidgetAttribute = ... # 0x21 + WA_PendingMoveEvent : Qt.WidgetAttribute = ... # 0x22 + WA_PendingResizeEvent : Qt.WidgetAttribute = ... # 0x23 + WA_SetPalette : Qt.WidgetAttribute = ... # 0x24 + WA_SetFont : Qt.WidgetAttribute = ... # 0x25 + WA_SetCursor : Qt.WidgetAttribute = ... # 0x26 + WA_NoChildEventsFromChildren: Qt.WidgetAttribute = ... # 0x27 + WA_WindowModified : Qt.WidgetAttribute = ... # 0x29 + WA_Resized : Qt.WidgetAttribute = ... # 0x2a + WA_Moved : Qt.WidgetAttribute = ... # 0x2b + WA_PendingUpdate : Qt.WidgetAttribute = ... # 0x2c + WA_InvalidSize : Qt.WidgetAttribute = ... # 0x2d + WA_MacBrushedMetal : Qt.WidgetAttribute = ... # 0x2e + WA_MacMetalStyle : Qt.WidgetAttribute = ... # 0x2e + WA_CustomWhatsThis : Qt.WidgetAttribute = ... # 0x2f + WA_LayoutOnEntireRect : Qt.WidgetAttribute = ... # 0x30 + WA_OutsideWSRange : Qt.WidgetAttribute = ... # 0x31 + WA_GrabbedShortcut : Qt.WidgetAttribute = ... # 0x32 + WA_TransparentForMouseEvents: Qt.WidgetAttribute = ... # 0x33 + WA_PaintUnclipped : Qt.WidgetAttribute = ... # 0x34 + WA_SetWindowIcon : Qt.WidgetAttribute = ... # 0x35 + WA_NoMouseReplay : Qt.WidgetAttribute = ... # 0x36 + WA_DeleteOnClose : Qt.WidgetAttribute = ... # 0x37 + WA_RightToLeft : Qt.WidgetAttribute = ... # 0x38 + WA_SetLayoutDirection : Qt.WidgetAttribute = ... # 0x39 + WA_NoChildEventsForParent: Qt.WidgetAttribute = ... # 0x3a + WA_ForceUpdatesDisabled : Qt.WidgetAttribute = ... # 0x3b + WA_WState_Created : Qt.WidgetAttribute = ... # 0x3c + WA_WState_CompressKeys : Qt.WidgetAttribute = ... # 0x3d + WA_WState_InPaintEvent : Qt.WidgetAttribute = ... # 0x3e + WA_WState_Reparented : Qt.WidgetAttribute = ... # 0x3f + WA_WState_ConfigPending : Qt.WidgetAttribute = ... # 0x40 + WA_WState_Polished : Qt.WidgetAttribute = ... # 0x42 + WA_WState_DND : Qt.WidgetAttribute = ... # 0x43 + WA_WState_OwnSizePolicy : Qt.WidgetAttribute = ... # 0x44 + WA_WState_ExplicitShowHide: Qt.WidgetAttribute = ... # 0x45 + WA_ShowModal : Qt.WidgetAttribute = ... # 0x46 + WA_MouseNoMask : Qt.WidgetAttribute = ... # 0x47 + WA_GroupLeader : Qt.WidgetAttribute = ... # 0x48 + WA_NoMousePropagation : Qt.WidgetAttribute = ... # 0x49 + WA_Hover : Qt.WidgetAttribute = ... # 0x4a + WA_InputMethodTransparent: Qt.WidgetAttribute = ... # 0x4b + WA_QuitOnClose : Qt.WidgetAttribute = ... # 0x4c + WA_KeyboardFocusChange : Qt.WidgetAttribute = ... # 0x4d + WA_AcceptDrops : Qt.WidgetAttribute = ... # 0x4e + WA_DropSiteRegistered : Qt.WidgetAttribute = ... # 0x4f + WA_ForceAcceptDrops : Qt.WidgetAttribute = ... # 0x4f + WA_WindowPropagation : Qt.WidgetAttribute = ... # 0x50 + WA_NoX11EventCompression : Qt.WidgetAttribute = ... # 0x51 + WA_TintedBackground : Qt.WidgetAttribute = ... # 0x52 + WA_X11OpenGLOverlay : Qt.WidgetAttribute = ... # 0x53 + WA_AlwaysShowToolTips : Qt.WidgetAttribute = ... # 0x54 + WA_MacOpaqueSizeGrip : Qt.WidgetAttribute = ... # 0x55 + WA_SetStyle : Qt.WidgetAttribute = ... # 0x56 + WA_SetLocale : Qt.WidgetAttribute = ... # 0x57 + WA_MacShowFocusRect : Qt.WidgetAttribute = ... # 0x58 + WA_MacNormalSize : Qt.WidgetAttribute = ... # 0x59 + WA_MacSmallSize : Qt.WidgetAttribute = ... # 0x5a + WA_MacMiniSize : Qt.WidgetAttribute = ... # 0x5b + WA_LayoutUsesWidgetRect : Qt.WidgetAttribute = ... # 0x5c + WA_StyledBackground : Qt.WidgetAttribute = ... # 0x5d + WA_MSWindowsUseDirect3D : Qt.WidgetAttribute = ... # 0x5e + WA_CanHostQMdiSubWindowTitleBar: Qt.WidgetAttribute = ... # 0x5f + WA_MacAlwaysShowToolWindow: Qt.WidgetAttribute = ... # 0x60 + WA_StyleSheet : Qt.WidgetAttribute = ... # 0x61 + WA_ShowWithoutActivating : Qt.WidgetAttribute = ... # 0x62 + WA_X11BypassTransientForHint: Qt.WidgetAttribute = ... # 0x63 + WA_NativeWindow : Qt.WidgetAttribute = ... # 0x64 + WA_DontCreateNativeAncestors: Qt.WidgetAttribute = ... # 0x65 + WA_MacVariableSize : Qt.WidgetAttribute = ... # 0x66 + WA_DontShowOnScreen : Qt.WidgetAttribute = ... # 0x67 + WA_X11NetWmWindowTypeDesktop: Qt.WidgetAttribute = ... # 0x68 + WA_X11NetWmWindowTypeDock: Qt.WidgetAttribute = ... # 0x69 + WA_X11NetWmWindowTypeToolBar: Qt.WidgetAttribute = ... # 0x6a + WA_X11NetWmWindowTypeMenu: Qt.WidgetAttribute = ... # 0x6b + WA_X11NetWmWindowTypeUtility: Qt.WidgetAttribute = ... # 0x6c + WA_X11NetWmWindowTypeSplash: Qt.WidgetAttribute = ... # 0x6d + WA_X11NetWmWindowTypeDialog: Qt.WidgetAttribute = ... # 0x6e + WA_X11NetWmWindowTypeDropDownMenu: Qt.WidgetAttribute = ... # 0x6f + WA_X11NetWmWindowTypePopupMenu: Qt.WidgetAttribute = ... # 0x70 + WA_X11NetWmWindowTypeToolTip: Qt.WidgetAttribute = ... # 0x71 + WA_X11NetWmWindowTypeNotification: Qt.WidgetAttribute = ... # 0x72 + WA_X11NetWmWindowTypeCombo: Qt.WidgetAttribute = ... # 0x73 + WA_X11NetWmWindowTypeDND : Qt.WidgetAttribute = ... # 0x74 + WA_MacFrameworkScaled : Qt.WidgetAttribute = ... # 0x75 + WA_SetWindowModality : Qt.WidgetAttribute = ... # 0x76 + WA_WState_WindowOpacitySet: Qt.WidgetAttribute = ... # 0x77 + WA_TranslucentBackground : Qt.WidgetAttribute = ... # 0x78 + WA_AcceptTouchEvents : Qt.WidgetAttribute = ... # 0x79 + WA_WState_AcceptedTouchBeginEvent: Qt.WidgetAttribute = ... # 0x7a + WA_TouchPadAcceptSingleTouchEvents: Qt.WidgetAttribute = ... # 0x7b + WA_X11DoNotAcceptFocus : Qt.WidgetAttribute = ... # 0x7e + WA_MacNoShadow : Qt.WidgetAttribute = ... # 0x7f + WA_AlwaysStackOnTop : Qt.WidgetAttribute = ... # 0x80 + WA_TabletTracking : Qt.WidgetAttribute = ... # 0x81 + WA_ContentsMarginsRespectsSafeArea: Qt.WidgetAttribute = ... # 0x82 + WA_StyleSheetTarget : Qt.WidgetAttribute = ... # 0x83 + WA_AttributeCount : Qt.WidgetAttribute = ... # 0x84 + + class WindowFlags(object): ... + + class WindowFrameSection(object): + NoSection : Qt.WindowFrameSection = ... # 0x0 + LeftSection : Qt.WindowFrameSection = ... # 0x1 + TopLeftSection : Qt.WindowFrameSection = ... # 0x2 + TopSection : Qt.WindowFrameSection = ... # 0x3 + TopRightSection : Qt.WindowFrameSection = ... # 0x4 + RightSection : Qt.WindowFrameSection = ... # 0x5 + BottomRightSection : Qt.WindowFrameSection = ... # 0x6 + BottomSection : Qt.WindowFrameSection = ... # 0x7 + BottomLeftSection : Qt.WindowFrameSection = ... # 0x8 + TitleBarArea : Qt.WindowFrameSection = ... # 0x9 + + class WindowModality(object): + NonModal : Qt.WindowModality = ... # 0x0 + WindowModal : Qt.WindowModality = ... # 0x1 + ApplicationModal : Qt.WindowModality = ... # 0x2 + + class WindowState(object): + WindowNoState : Qt.WindowState = ... # 0x0 + WindowMinimized : Qt.WindowState = ... # 0x1 + WindowMaximized : Qt.WindowState = ... # 0x2 + WindowFullScreen : Qt.WindowState = ... # 0x4 + WindowActive : Qt.WindowState = ... # 0x8 + + class WindowStates(object): ... + + class WindowType(object): + WindowFullscreenButtonHint: Qt.WindowType = ... # -0x80000000 + Widget : Qt.WindowType = ... # 0x0 + Window : Qt.WindowType = ... # 0x1 + Dialog : Qt.WindowType = ... # 0x3 + Sheet : Qt.WindowType = ... # 0x5 + Drawer : Qt.WindowType = ... # 0x7 + Popup : Qt.WindowType = ... # 0x9 + Tool : Qt.WindowType = ... # 0xb + ToolTip : Qt.WindowType = ... # 0xd + SplashScreen : Qt.WindowType = ... # 0xf + Desktop : Qt.WindowType = ... # 0x11 + SubWindow : Qt.WindowType = ... # 0x12 + ForeignWindow : Qt.WindowType = ... # 0x21 + CoverWindow : Qt.WindowType = ... # 0x41 + WindowType_Mask : Qt.WindowType = ... # 0xff + MSWindowsFixedSizeDialogHint: Qt.WindowType = ... # 0x100 + MSWindowsOwnDC : Qt.WindowType = ... # 0x200 + BypassWindowManagerHint : Qt.WindowType = ... # 0x400 + X11BypassWindowManagerHint: Qt.WindowType = ... # 0x400 + FramelessWindowHint : Qt.WindowType = ... # 0x800 + WindowTitleHint : Qt.WindowType = ... # 0x1000 + WindowSystemMenuHint : Qt.WindowType = ... # 0x2000 + WindowMinimizeButtonHint : Qt.WindowType = ... # 0x4000 + WindowMaximizeButtonHint : Qt.WindowType = ... # 0x8000 + WindowMinMaxButtonsHint : Qt.WindowType = ... # 0xc000 + WindowContextHelpButtonHint: Qt.WindowType = ... # 0x10000 + WindowShadeButtonHint : Qt.WindowType = ... # 0x20000 + WindowStaysOnTopHint : Qt.WindowType = ... # 0x40000 + WindowTransparentForInput: Qt.WindowType = ... # 0x80000 + WindowOverridesSystemGestures: Qt.WindowType = ... # 0x100000 + WindowDoesNotAcceptFocus : Qt.WindowType = ... # 0x200000 + MaximizeUsingFullscreenGeometryHint: Qt.WindowType = ... # 0x400000 + CustomizeWindowHint : Qt.WindowType = ... # 0x2000000 + WindowStaysOnBottomHint : Qt.WindowType = ... # 0x4000000 + WindowCloseButtonHint : Qt.WindowType = ... # 0x8000000 + MacWindowToolBarButtonHint: Qt.WindowType = ... # 0x10000000 + BypassGraphicsProxyWidget: Qt.WindowType = ... # 0x20000000 + NoDropShadowWindowHint : Qt.WindowType = ... # 0x40000000 + @staticmethod + def bin(s:PySide2.QtCore.QTextStream) -> PySide2.QtCore.QTextStream: ... + @staticmethod + def bom(s:PySide2.QtCore.QTextStream) -> PySide2.QtCore.QTextStream: ... + @staticmethod + def center(s:PySide2.QtCore.QTextStream) -> PySide2.QtCore.QTextStream: ... + @staticmethod + def dec(s:PySide2.QtCore.QTextStream) -> PySide2.QtCore.QTextStream: ... + @staticmethod + def endl(s:PySide2.QtCore.QTextStream) -> PySide2.QtCore.QTextStream: ... + @staticmethod + def fixed(s:PySide2.QtCore.QTextStream) -> PySide2.QtCore.QTextStream: ... + @staticmethod + def flush(s:PySide2.QtCore.QTextStream) -> PySide2.QtCore.QTextStream: ... + @staticmethod + def forcepoint(s:PySide2.QtCore.QTextStream) -> PySide2.QtCore.QTextStream: ... + @staticmethod + def forcesign(s:PySide2.QtCore.QTextStream) -> PySide2.QtCore.QTextStream: ... + @staticmethod + def hex(s:PySide2.QtCore.QTextStream) -> PySide2.QtCore.QTextStream: ... + @staticmethod + def left(s:PySide2.QtCore.QTextStream) -> PySide2.QtCore.QTextStream: ... + @staticmethod + def lowercasebase(s:PySide2.QtCore.QTextStream) -> PySide2.QtCore.QTextStream: ... + @staticmethod + def lowercasedigits(s:PySide2.QtCore.QTextStream) -> PySide2.QtCore.QTextStream: ... + @staticmethod + def noforcepoint(s:PySide2.QtCore.QTextStream) -> PySide2.QtCore.QTextStream: ... + @staticmethod + def noforcesign(s:PySide2.QtCore.QTextStream) -> PySide2.QtCore.QTextStream: ... + @staticmethod + def noshowbase(s:PySide2.QtCore.QTextStream) -> PySide2.QtCore.QTextStream: ... + @staticmethod + def oct(s:PySide2.QtCore.QTextStream) -> PySide2.QtCore.QTextStream: ... + @staticmethod + def reset(s:PySide2.QtCore.QTextStream) -> PySide2.QtCore.QTextStream: ... + @staticmethod + def right(s:PySide2.QtCore.QTextStream) -> PySide2.QtCore.QTextStream: ... + @staticmethod + def scientific(s:PySide2.QtCore.QTextStream) -> PySide2.QtCore.QTextStream: ... + @staticmethod + def showbase(s:PySide2.QtCore.QTextStream) -> PySide2.QtCore.QTextStream: ... + @staticmethod + def uppercasebase(s:PySide2.QtCore.QTextStream) -> PySide2.QtCore.QTextStream: ... + @staticmethod + def uppercasedigits(s:PySide2.QtCore.QTextStream) -> PySide2.QtCore.QTextStream: ... + @staticmethod + def ws(s:PySide2.QtCore.QTextStream) -> PySide2.QtCore.QTextStream: ... + + +class QtMsgType(object): + QtDebugMsg : QtMsgType = ... # 0x0 + QtWarningMsg : QtMsgType = ... # 0x1 + QtCriticalMsg : QtMsgType = ... # 0x2 + QtSystemMsg : QtMsgType = ... # 0x2 + QtFatalMsg : QtMsgType = ... # 0x3 + QtInfoMsg : QtMsgType = ... # 0x4 + + +class Signal(object): + + @staticmethod + def __init__(*types:type, name:typing.Optional[str]=..., arguments:typing.Optional[str]=...) -> None: ... + + +class SignalInstance(object): + @staticmethod + def connect(slot:object, type:typing.Optional[type]=...) -> None: ... + @staticmethod + def disconnect(slot:object=...) -> None: ... + @staticmethod + def emit(*args:typing.Any) -> None: ... + + +class Slot(object): + + @staticmethod + def __init__(*types:type, name:typing.Optional[str]=..., result:typing.Optional[str]=...) -> typing.Callable: ... + +@staticmethod +def QEnum(arg__1:object) -> object: ... +@staticmethod +def QFlag(arg__1:object) -> object: ... +@staticmethod +def QT_TRANSLATE_NOOP(arg__1:object, arg__2:object) -> object: ... +@staticmethod +def QT_TRANSLATE_NOOP3(arg__1:object, arg__2:object, arg__3:object) -> object: ... +@staticmethod +def QT_TRANSLATE_NOOP_UTF8(arg__1:object) -> object: ... +@staticmethod +def QT_TR_NOOP(arg__1:object) -> object: ... +@staticmethod +def QT_TR_NOOP_UTF8(arg__1:object) -> object: ... +@staticmethod +def SIGNAL(arg__1:bytes) -> str: ... +@staticmethod +def SLOT(arg__1:bytes) -> str: ... +@staticmethod +def __init_feature__() -> None: ... +@staticmethod +def __moduleShutdown() -> None: ... +@staticmethod +def qAbs(arg__1:float) -> float: ... +@staticmethod +def qAcos(v:float) -> float: ... +@staticmethod +def qAddPostRoutine(arg__1:object) -> None: ... +@staticmethod +def qAsin(v:float) -> float: ... +@staticmethod +def qAtan(v:float) -> float: ... +@staticmethod +def qAtan2(y:float, x:float) -> float: ... +@staticmethod +def qChecksum(s:bytes, len:int) -> int: ... +@typing.overload +@staticmethod +def qCompress(data:PySide2.QtCore.QByteArray, compressionLevel:int=...) -> PySide2.QtCore.QByteArray: ... +@typing.overload +@staticmethod +def qCompress(data:bytes, nbytes:int, compressionLevel:int=...) -> PySide2.QtCore.QByteArray: ... +@staticmethod +def qCritical(arg__1:bytes) -> None: ... +@staticmethod +def qDebug(arg__1:bytes) -> None: ... +@staticmethod +def qExp(v:float) -> float: ... +@staticmethod +def qFabs(v:float) -> float: ... +@staticmethod +def qFastCos(x:float) -> float: ... +@staticmethod +def qFastSin(x:float) -> float: ... +@staticmethod +def qFatal(arg__1:bytes) -> None: ... +@staticmethod +def qFuzzyCompare(p1:float, p2:float) -> bool: ... +@staticmethod +def qFuzzyIsNull(d:float) -> bool: ... +@staticmethod +def qInstallMessageHandler(arg__1:object) -> object: ... +@staticmethod +def qIsFinite(d:float) -> bool: ... +@staticmethod +def qIsInf(d:float) -> bool: ... +@staticmethod +def qIsNaN(d:float) -> bool: ... +@staticmethod +def qIsNull(d:float) -> bool: ... +@staticmethod +def qRegisterResourceData(arg__1:int, arg__2:bytes, arg__3:bytes, arg__4:bytes) -> bool: ... +@staticmethod +def qTan(v:float) -> float: ... +@typing.overload +@staticmethod +def qUncompress(data:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QByteArray: ... +@typing.overload +@staticmethod +def qUncompress(data:bytes, nbytes:int) -> PySide2.QtCore.QByteArray: ... +@staticmethod +def qUnregisterResourceData(arg__1:int, arg__2:bytes, arg__3:bytes, arg__4:bytes) -> bool: ... +@staticmethod +def qVersion() -> bytes: ... +@staticmethod +def qWarning(arg__1:bytes) -> None: ... +@staticmethod +def qrand() -> int: ... +@staticmethod +def qsrand(seed:int) -> None: ... +@staticmethod +def qtTrId(id:bytes, n:int=...) -> str: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtDataVisualization.pyd b/venv/Lib/site-packages/PySide2/QtDataVisualization.pyd new file mode 100644 index 0000000..74fc733 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtDataVisualization.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtDataVisualization.pyi b/venv/Lib/site-packages/PySide2/QtDataVisualization.pyi new file mode 100644 index 0000000..ec18fed --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtDataVisualization.pyi @@ -0,0 +1,1241 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtDataVisualization, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtDataVisualization +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtGui +import PySide2.QtDataVisualization + + +class QtDataVisualization(Shiboken.Object): + + class Q3DBars(PySide2.QtDataVisualization.QAbstract3DGraph): + + def __init__(self, format:typing.Optional[PySide2.QtGui.QSurfaceFormat]=..., parent:typing.Optional[PySide2.QtGui.QWindow]=...) -> None: ... + + def addAxis(self, axis:PySide2.QtDataVisualization.QtDataVisualization.QAbstract3DAxis) -> None: ... + def addSeries(self, series:PySide2.QtDataVisualization.QtDataVisualization.QBar3DSeries) -> None: ... + def axes(self) -> typing.List: ... + def barSpacing(self) -> PySide2.QtCore.QSizeF: ... + def barThickness(self) -> float: ... + def columnAxis(self) -> PySide2.QtDataVisualization.QtDataVisualization.QCategory3DAxis: ... + def floorLevel(self) -> float: ... + def insertSeries(self, index:int, series:PySide2.QtDataVisualization.QtDataVisualization.QBar3DSeries) -> None: ... + def isBarSpacingRelative(self) -> bool: ... + def isMultiSeriesUniform(self) -> bool: ... + def primarySeries(self) -> PySide2.QtDataVisualization.QtDataVisualization.QBar3DSeries: ... + def releaseAxis(self, axis:PySide2.QtDataVisualization.QtDataVisualization.QAbstract3DAxis) -> None: ... + def removeSeries(self, series:PySide2.QtDataVisualization.QtDataVisualization.QBar3DSeries) -> None: ... + def rowAxis(self) -> PySide2.QtDataVisualization.QtDataVisualization.QCategory3DAxis: ... + def selectedSeries(self) -> PySide2.QtDataVisualization.QtDataVisualization.QBar3DSeries: ... + def seriesList(self) -> typing.List: ... + def setBarSpacing(self, spacing:PySide2.QtCore.QSizeF) -> None: ... + def setBarSpacingRelative(self, relative:bool) -> None: ... + def setBarThickness(self, thicknessRatio:float) -> None: ... + def setColumnAxis(self, axis:PySide2.QtDataVisualization.QtDataVisualization.QCategory3DAxis) -> None: ... + def setFloorLevel(self, level:float) -> None: ... + def setMultiSeriesUniform(self, uniform:bool) -> None: ... + def setPrimarySeries(self, series:PySide2.QtDataVisualization.QtDataVisualization.QBar3DSeries) -> None: ... + def setRowAxis(self, axis:PySide2.QtDataVisualization.QtDataVisualization.QCategory3DAxis) -> None: ... + def setValueAxis(self, axis:PySide2.QtDataVisualization.QtDataVisualization.QValue3DAxis) -> None: ... + def valueAxis(self) -> PySide2.QtDataVisualization.QtDataVisualization.QValue3DAxis: ... + + class Q3DCamera(PySide2.QtDataVisualization.Q3DObject): + CameraPresetNone : QtDataVisualization.Q3DCamera = ... # -0x1 + CameraPresetFrontLow : QtDataVisualization.Q3DCamera = ... # 0x0 + CameraPresetFront : QtDataVisualization.Q3DCamera = ... # 0x1 + CameraPresetFrontHigh : QtDataVisualization.Q3DCamera = ... # 0x2 + CameraPresetLeftLow : QtDataVisualization.Q3DCamera = ... # 0x3 + CameraPresetLeft : QtDataVisualization.Q3DCamera = ... # 0x4 + CameraPresetLeftHigh : QtDataVisualization.Q3DCamera = ... # 0x5 + CameraPresetRightLow : QtDataVisualization.Q3DCamera = ... # 0x6 + CameraPresetRight : QtDataVisualization.Q3DCamera = ... # 0x7 + CameraPresetRightHigh : QtDataVisualization.Q3DCamera = ... # 0x8 + CameraPresetBehindLow : QtDataVisualization.Q3DCamera = ... # 0x9 + CameraPresetBehind : QtDataVisualization.Q3DCamera = ... # 0xa + CameraPresetBehindHigh : QtDataVisualization.Q3DCamera = ... # 0xb + CameraPresetIsometricLeft: QtDataVisualization.Q3DCamera = ... # 0xc + CameraPresetIsometricLeftHigh: QtDataVisualization.Q3DCamera = ... # 0xd + CameraPresetIsometricRight: QtDataVisualization.Q3DCamera = ... # 0xe + CameraPresetIsometricRightHigh: QtDataVisualization.Q3DCamera = ... # 0xf + CameraPresetDirectlyAbove: QtDataVisualization.Q3DCamera = ... # 0x10 + CameraPresetDirectlyAboveCW45: QtDataVisualization.Q3DCamera = ... # 0x11 + CameraPresetDirectlyAboveCCW45: QtDataVisualization.Q3DCamera = ... # 0x12 + CameraPresetFrontBelow : QtDataVisualization.Q3DCamera = ... # 0x13 + CameraPresetLeftBelow : QtDataVisualization.Q3DCamera = ... # 0x14 + CameraPresetRightBelow : QtDataVisualization.Q3DCamera = ... # 0x15 + CameraPresetBehindBelow : QtDataVisualization.Q3DCamera = ... # 0x16 + CameraPresetDirectlyBelow: QtDataVisualization.Q3DCamera = ... # 0x17 + + class CameraPreset(object): + CameraPresetNone : QtDataVisualization.Q3DCamera.CameraPreset = ... # -0x1 + CameraPresetFrontLow : QtDataVisualization.Q3DCamera.CameraPreset = ... # 0x0 + CameraPresetFront : QtDataVisualization.Q3DCamera.CameraPreset = ... # 0x1 + CameraPresetFrontHigh : QtDataVisualization.Q3DCamera.CameraPreset = ... # 0x2 + CameraPresetLeftLow : QtDataVisualization.Q3DCamera.CameraPreset = ... # 0x3 + CameraPresetLeft : QtDataVisualization.Q3DCamera.CameraPreset = ... # 0x4 + CameraPresetLeftHigh : QtDataVisualization.Q3DCamera.CameraPreset = ... # 0x5 + CameraPresetRightLow : QtDataVisualization.Q3DCamera.CameraPreset = ... # 0x6 + CameraPresetRight : QtDataVisualization.Q3DCamera.CameraPreset = ... # 0x7 + CameraPresetRightHigh : QtDataVisualization.Q3DCamera.CameraPreset = ... # 0x8 + CameraPresetBehindLow : QtDataVisualization.Q3DCamera.CameraPreset = ... # 0x9 + CameraPresetBehind : QtDataVisualization.Q3DCamera.CameraPreset = ... # 0xa + CameraPresetBehindHigh : QtDataVisualization.Q3DCamera.CameraPreset = ... # 0xb + CameraPresetIsometricLeft: QtDataVisualization.Q3DCamera.CameraPreset = ... # 0xc + CameraPresetIsometricLeftHigh: QtDataVisualization.Q3DCamera.CameraPreset = ... # 0xd + CameraPresetIsometricRight: QtDataVisualization.Q3DCamera.CameraPreset = ... # 0xe + CameraPresetIsometricRightHigh: QtDataVisualization.Q3DCamera.CameraPreset = ... # 0xf + CameraPresetDirectlyAbove: QtDataVisualization.Q3DCamera.CameraPreset = ... # 0x10 + CameraPresetDirectlyAboveCW45: QtDataVisualization.Q3DCamera.CameraPreset = ... # 0x11 + CameraPresetDirectlyAboveCCW45: QtDataVisualization.Q3DCamera.CameraPreset = ... # 0x12 + CameraPresetFrontBelow : QtDataVisualization.Q3DCamera.CameraPreset = ... # 0x13 + CameraPresetLeftBelow : QtDataVisualization.Q3DCamera.CameraPreset = ... # 0x14 + CameraPresetRightBelow : QtDataVisualization.Q3DCamera.CameraPreset = ... # 0x15 + CameraPresetBehindBelow : QtDataVisualization.Q3DCamera.CameraPreset = ... # 0x16 + CameraPresetDirectlyBelow: QtDataVisualization.Q3DCamera.CameraPreset = ... # 0x17 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def cameraPreset(self) -> PySide2.QtDataVisualization.QtDataVisualization.Q3DCamera.CameraPreset: ... + def copyValuesFrom(self, source:PySide2.QtDataVisualization.QtDataVisualization.Q3DObject) -> None: ... + def maxZoomLevel(self) -> float: ... + def minZoomLevel(self) -> float: ... + def setCameraPosition(self, horizontal:float, vertical:float, zoom:float=...) -> None: ... + def setCameraPreset(self, preset:PySide2.QtDataVisualization.QtDataVisualization.Q3DCamera.CameraPreset) -> None: ... + def setMaxZoomLevel(self, zoomLevel:float) -> None: ... + def setMinZoomLevel(self, zoomLevel:float) -> None: ... + def setTarget(self, target:PySide2.QtGui.QVector3D) -> None: ... + def setWrapXRotation(self, isEnabled:bool) -> None: ... + def setWrapYRotation(self, isEnabled:bool) -> None: ... + def setXRotation(self, rotation:float) -> None: ... + def setYRotation(self, rotation:float) -> None: ... + def setZoomLevel(self, zoomLevel:float) -> None: ... + def target(self) -> PySide2.QtGui.QVector3D: ... + def wrapXRotation(self) -> bool: ... + def wrapYRotation(self) -> bool: ... + def xRotation(self) -> float: ... + def yRotation(self) -> float: ... + def zoomLevel(self) -> float: ... + + class Q3DInputHandler(PySide2.QtDataVisualization.QAbstract3DInputHandler): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def isRotationEnabled(self) -> bool: ... + def isSelectionEnabled(self) -> bool: ... + def isZoomAtTargetEnabled(self) -> bool: ... + def isZoomEnabled(self) -> bool: ... + def mouseMoveEvent(self, event:PySide2.QtGui.QMouseEvent, mousePos:PySide2.QtCore.QPoint) -> None: ... + def mousePressEvent(self, event:PySide2.QtGui.QMouseEvent, mousePos:PySide2.QtCore.QPoint) -> None: ... + def mouseReleaseEvent(self, event:PySide2.QtGui.QMouseEvent, mousePos:PySide2.QtCore.QPoint) -> None: ... + def setRotationEnabled(self, enable:bool) -> None: ... + def setSelectionEnabled(self, enable:bool) -> None: ... + def setZoomAtTargetEnabled(self, enable:bool) -> None: ... + def setZoomEnabled(self, enable:bool) -> None: ... + def wheelEvent(self, event:PySide2.QtGui.QWheelEvent) -> None: ... + + class Q3DLight(PySide2.QtDataVisualization.Q3DObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def isAutoPosition(self) -> bool: ... + def setAutoPosition(self, enabled:bool) -> None: ... + + class Q3DObject(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def copyValuesFrom(self, source:PySide2.QtDataVisualization.QtDataVisualization.Q3DObject) -> None: ... + def isDirty(self) -> bool: ... + def parentScene(self) -> PySide2.QtDataVisualization.QtDataVisualization.Q3DScene: ... + def position(self) -> PySide2.QtGui.QVector3D: ... + def setDirty(self, dirty:bool) -> None: ... + def setPosition(self, position:PySide2.QtGui.QVector3D) -> None: ... + + class Q3DScatter(PySide2.QtDataVisualization.QAbstract3DGraph): + + def __init__(self, format:typing.Optional[PySide2.QtGui.QSurfaceFormat]=..., parent:typing.Optional[PySide2.QtGui.QWindow]=...) -> None: ... + + def addAxis(self, axis:PySide2.QtDataVisualization.QtDataVisualization.QValue3DAxis) -> None: ... + def addSeries(self, series:PySide2.QtDataVisualization.QtDataVisualization.QScatter3DSeries) -> None: ... + def axes(self) -> typing.List: ... + def axisX(self) -> PySide2.QtDataVisualization.QtDataVisualization.QValue3DAxis: ... + def axisY(self) -> PySide2.QtDataVisualization.QtDataVisualization.QValue3DAxis: ... + def axisZ(self) -> PySide2.QtDataVisualization.QtDataVisualization.QValue3DAxis: ... + def releaseAxis(self, axis:PySide2.QtDataVisualization.QtDataVisualization.QValue3DAxis) -> None: ... + def removeSeries(self, series:PySide2.QtDataVisualization.QtDataVisualization.QScatter3DSeries) -> None: ... + def selectedSeries(self) -> PySide2.QtDataVisualization.QtDataVisualization.QScatter3DSeries: ... + def seriesList(self) -> typing.List: ... + def setAxisX(self, axis:PySide2.QtDataVisualization.QtDataVisualization.QValue3DAxis) -> None: ... + def setAxisY(self, axis:PySide2.QtDataVisualization.QtDataVisualization.QValue3DAxis) -> None: ... + def setAxisZ(self, axis:PySide2.QtDataVisualization.QtDataVisualization.QValue3DAxis) -> None: ... + + class Q3DScene(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def activeCamera(self) -> PySide2.QtDataVisualization.QtDataVisualization.Q3DCamera: ... + def activeLight(self) -> PySide2.QtDataVisualization.QtDataVisualization.Q3DLight: ... + def devicePixelRatio(self) -> float: ... + def graphPositionQuery(self) -> PySide2.QtCore.QPoint: ... + @staticmethod + def invalidSelectionPoint() -> PySide2.QtCore.QPoint: ... + def isPointInPrimarySubView(self, point:PySide2.QtCore.QPoint) -> bool: ... + def isPointInSecondarySubView(self, point:PySide2.QtCore.QPoint) -> bool: ... + def isSecondarySubviewOnTop(self) -> bool: ... + def isSlicingActive(self) -> bool: ... + def primarySubViewport(self) -> PySide2.QtCore.QRect: ... + def secondarySubViewport(self) -> PySide2.QtCore.QRect: ... + def selectionQueryPosition(self) -> PySide2.QtCore.QPoint: ... + def setActiveCamera(self, camera:PySide2.QtDataVisualization.QtDataVisualization.Q3DCamera) -> None: ... + def setActiveLight(self, light:PySide2.QtDataVisualization.QtDataVisualization.Q3DLight) -> None: ... + def setDevicePixelRatio(self, pixelRatio:float) -> None: ... + def setGraphPositionQuery(self, point:PySide2.QtCore.QPoint) -> None: ... + def setPrimarySubViewport(self, primarySubViewport:PySide2.QtCore.QRect) -> None: ... + def setSecondarySubViewport(self, secondarySubViewport:PySide2.QtCore.QRect) -> None: ... + def setSecondarySubviewOnTop(self, isSecondaryOnTop:bool) -> None: ... + def setSelectionQueryPosition(self, point:PySide2.QtCore.QPoint) -> None: ... + def setSlicingActive(self, isSlicing:bool) -> None: ... + def viewport(self) -> PySide2.QtCore.QRect: ... + + class Q3DSurface(PySide2.QtDataVisualization.QAbstract3DGraph): + + def __init__(self, format:typing.Optional[PySide2.QtGui.QSurfaceFormat]=..., parent:typing.Optional[PySide2.QtGui.QWindow]=...) -> None: ... + + def addAxis(self, axis:PySide2.QtDataVisualization.QtDataVisualization.QValue3DAxis) -> None: ... + def addSeries(self, series:PySide2.QtDataVisualization.QtDataVisualization.QSurface3DSeries) -> None: ... + def axes(self) -> typing.List: ... + def axisX(self) -> PySide2.QtDataVisualization.QtDataVisualization.QValue3DAxis: ... + def axisY(self) -> PySide2.QtDataVisualization.QtDataVisualization.QValue3DAxis: ... + def axisZ(self) -> PySide2.QtDataVisualization.QtDataVisualization.QValue3DAxis: ... + def flipHorizontalGrid(self) -> bool: ... + def releaseAxis(self, axis:PySide2.QtDataVisualization.QtDataVisualization.QValue3DAxis) -> None: ... + def removeSeries(self, series:PySide2.QtDataVisualization.QtDataVisualization.QSurface3DSeries) -> None: ... + def selectedSeries(self) -> PySide2.QtDataVisualization.QtDataVisualization.QSurface3DSeries: ... + def seriesList(self) -> typing.List: ... + def setAxisX(self, axis:PySide2.QtDataVisualization.QtDataVisualization.QValue3DAxis) -> None: ... + def setAxisY(self, axis:PySide2.QtDataVisualization.QtDataVisualization.QValue3DAxis) -> None: ... + def setAxisZ(self, axis:PySide2.QtDataVisualization.QtDataVisualization.QValue3DAxis) -> None: ... + def setFlipHorizontalGrid(self, flip:bool) -> None: ... + + class Q3DTheme(PySide2.QtCore.QObject): + ColorStyleUniform : QtDataVisualization.Q3DTheme = ... # 0x0 + ThemeQt : QtDataVisualization.Q3DTheme = ... # 0x0 + ColorStyleObjectGradient : QtDataVisualization.Q3DTheme = ... # 0x1 + ThemePrimaryColors : QtDataVisualization.Q3DTheme = ... # 0x1 + ColorStyleRangeGradient : QtDataVisualization.Q3DTheme = ... # 0x2 + ThemeDigia : QtDataVisualization.Q3DTheme = ... # 0x2 + ThemeStoneMoss : QtDataVisualization.Q3DTheme = ... # 0x3 + ThemeArmyBlue : QtDataVisualization.Q3DTheme = ... # 0x4 + ThemeRetro : QtDataVisualization.Q3DTheme = ... # 0x5 + ThemeEbony : QtDataVisualization.Q3DTheme = ... # 0x6 + ThemeIsabelle : QtDataVisualization.Q3DTheme = ... # 0x7 + ThemeUserDefined : QtDataVisualization.Q3DTheme = ... # 0x8 + + class ColorStyle(object): + ColorStyleUniform : QtDataVisualization.Q3DTheme.ColorStyle = ... # 0x0 + ColorStyleObjectGradient : QtDataVisualization.Q3DTheme.ColorStyle = ... # 0x1 + ColorStyleRangeGradient : QtDataVisualization.Q3DTheme.ColorStyle = ... # 0x2 + + class Theme(object): + ThemeQt : QtDataVisualization.Q3DTheme.Theme = ... # 0x0 + ThemePrimaryColors : QtDataVisualization.Q3DTheme.Theme = ... # 0x1 + ThemeDigia : QtDataVisualization.Q3DTheme.Theme = ... # 0x2 + ThemeStoneMoss : QtDataVisualization.Q3DTheme.Theme = ... # 0x3 + ThemeArmyBlue : QtDataVisualization.Q3DTheme.Theme = ... # 0x4 + ThemeRetro : QtDataVisualization.Q3DTheme.Theme = ... # 0x5 + ThemeEbony : QtDataVisualization.Q3DTheme.Theme = ... # 0x6 + ThemeIsabelle : QtDataVisualization.Q3DTheme.Theme = ... # 0x7 + ThemeUserDefined : QtDataVisualization.Q3DTheme.Theme = ... # 0x8 + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, themeType:PySide2.QtDataVisualization.QtDataVisualization.Q3DTheme.Theme, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def ambientLightStrength(self) -> float: ... + def backgroundColor(self) -> PySide2.QtGui.QColor: ... + def baseColors(self) -> typing.List: ... + def baseGradients(self) -> typing.List: ... + def colorStyle(self) -> PySide2.QtDataVisualization.QtDataVisualization.Q3DTheme.ColorStyle: ... + def font(self) -> PySide2.QtGui.QFont: ... + def gridLineColor(self) -> PySide2.QtGui.QColor: ... + def highlightLightStrength(self) -> float: ... + def isBackgroundEnabled(self) -> bool: ... + def isGridEnabled(self) -> bool: ... + def isLabelBackgroundEnabled(self) -> bool: ... + def isLabelBorderEnabled(self) -> bool: ... + def labelBackgroundColor(self) -> PySide2.QtGui.QColor: ... + def labelTextColor(self) -> PySide2.QtGui.QColor: ... + def lightColor(self) -> PySide2.QtGui.QColor: ... + def lightStrength(self) -> float: ... + def multiHighlightColor(self) -> PySide2.QtGui.QColor: ... + def multiHighlightGradient(self) -> PySide2.QtGui.QLinearGradient: ... + def setAmbientLightStrength(self, strength:float) -> None: ... + def setBackgroundColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setBackgroundEnabled(self, enabled:bool) -> None: ... + def setBaseColors(self, colors:typing.Sequence) -> None: ... + def setBaseGradients(self, gradients:typing.Sequence) -> None: ... + def setColorStyle(self, style:PySide2.QtDataVisualization.QtDataVisualization.Q3DTheme.ColorStyle) -> None: ... + def setFont(self, font:PySide2.QtGui.QFont) -> None: ... + def setGridEnabled(self, enabled:bool) -> None: ... + def setGridLineColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setHighlightLightStrength(self, strength:float) -> None: ... + def setLabelBackgroundColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setLabelBackgroundEnabled(self, enabled:bool) -> None: ... + def setLabelBorderEnabled(self, enabled:bool) -> None: ... + def setLabelTextColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setLightColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setLightStrength(self, strength:float) -> None: ... + def setMultiHighlightColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setMultiHighlightGradient(self, gradient:PySide2.QtGui.QLinearGradient) -> None: ... + def setSingleHighlightColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setSingleHighlightGradient(self, gradient:PySide2.QtGui.QLinearGradient) -> None: ... + def setType(self, themeType:PySide2.QtDataVisualization.QtDataVisualization.Q3DTheme.Theme) -> None: ... + def setWindowColor(self, color:PySide2.QtGui.QColor) -> None: ... + def singleHighlightColor(self) -> PySide2.QtGui.QColor: ... + def singleHighlightGradient(self) -> PySide2.QtGui.QLinearGradient: ... + def type(self) -> PySide2.QtDataVisualization.QtDataVisualization.Q3DTheme.Theme: ... + def windowColor(self) -> PySide2.QtGui.QColor: ... + + class QAbstract3DAxis(PySide2.QtCore.QObject): + AxisOrientationNone : QtDataVisualization.QAbstract3DAxis = ... # 0x0 + AxisTypeNone : QtDataVisualization.QAbstract3DAxis = ... # 0x0 + AxisOrientationX : QtDataVisualization.QAbstract3DAxis = ... # 0x1 + AxisTypeCategory : QtDataVisualization.QAbstract3DAxis = ... # 0x1 + AxisOrientationY : QtDataVisualization.QAbstract3DAxis = ... # 0x2 + AxisTypeValue : QtDataVisualization.QAbstract3DAxis = ... # 0x2 + AxisOrientationZ : QtDataVisualization.QAbstract3DAxis = ... # 0x4 + + class AxisOrientation(object): + AxisOrientationNone : QtDataVisualization.QAbstract3DAxis.AxisOrientation = ... # 0x0 + AxisOrientationX : QtDataVisualization.QAbstract3DAxis.AxisOrientation = ... # 0x1 + AxisOrientationY : QtDataVisualization.QAbstract3DAxis.AxisOrientation = ... # 0x2 + AxisOrientationZ : QtDataVisualization.QAbstract3DAxis.AxisOrientation = ... # 0x4 + + class AxisType(object): + AxisTypeNone : QtDataVisualization.QAbstract3DAxis.AxisType = ... # 0x0 + AxisTypeCategory : QtDataVisualization.QAbstract3DAxis.AxisType = ... # 0x1 + AxisTypeValue : QtDataVisualization.QAbstract3DAxis.AxisType = ... # 0x2 + def isAutoAdjustRange(self) -> bool: ... + def isTitleFixed(self) -> bool: ... + def isTitleVisible(self) -> bool: ... + def labelAutoRotation(self) -> float: ... + def labels(self) -> typing.List: ... + def max(self) -> float: ... + def min(self) -> float: ... + def orientation(self) -> PySide2.QtDataVisualization.QtDataVisualization.QAbstract3DAxis.AxisOrientation: ... + def setAutoAdjustRange(self, autoAdjust:bool) -> None: ... + def setLabelAutoRotation(self, angle:float) -> None: ... + def setLabels(self, labels:typing.Sequence) -> None: ... + def setMax(self, max:float) -> None: ... + def setMin(self, min:float) -> None: ... + def setRange(self, min:float, max:float) -> None: ... + def setTitle(self, title:str) -> None: ... + def setTitleFixed(self, fixed:bool) -> None: ... + def setTitleVisible(self, visible:bool) -> None: ... + def title(self) -> str: ... + def type(self) -> PySide2.QtDataVisualization.QtDataVisualization.QAbstract3DAxis.AxisType: ... + + class QAbstract3DGraph(PySide2.QtGui.QWindow): + ElementNone : QtDataVisualization.QAbstract3DGraph = ... # 0x0 + OptimizationDefault : QtDataVisualization.QAbstract3DGraph = ... # 0x0 + SelectionNone : QtDataVisualization.QAbstract3DGraph = ... # 0x0 + ShadowQualityNone : QtDataVisualization.QAbstract3DGraph = ... # 0x0 + ElementSeries : QtDataVisualization.QAbstract3DGraph = ... # 0x1 + OptimizationStatic : QtDataVisualization.QAbstract3DGraph = ... # 0x1 + SelectionItem : QtDataVisualization.QAbstract3DGraph = ... # 0x1 + ShadowQualityLow : QtDataVisualization.QAbstract3DGraph = ... # 0x1 + ElementAxisXLabel : QtDataVisualization.QAbstract3DGraph = ... # 0x2 + SelectionRow : QtDataVisualization.QAbstract3DGraph = ... # 0x2 + ShadowQualityMedium : QtDataVisualization.QAbstract3DGraph = ... # 0x2 + ElementAxisYLabel : QtDataVisualization.QAbstract3DGraph = ... # 0x3 + SelectionItemAndRow : QtDataVisualization.QAbstract3DGraph = ... # 0x3 + ShadowQualityHigh : QtDataVisualization.QAbstract3DGraph = ... # 0x3 + ElementAxisZLabel : QtDataVisualization.QAbstract3DGraph = ... # 0x4 + SelectionColumn : QtDataVisualization.QAbstract3DGraph = ... # 0x4 + ShadowQualitySoftLow : QtDataVisualization.QAbstract3DGraph = ... # 0x4 + ElementCustomItem : QtDataVisualization.QAbstract3DGraph = ... # 0x5 + SelectionItemAndColumn : QtDataVisualization.QAbstract3DGraph = ... # 0x5 + ShadowQualitySoftMedium : QtDataVisualization.QAbstract3DGraph = ... # 0x5 + SelectionRowAndColumn : QtDataVisualization.QAbstract3DGraph = ... # 0x6 + ShadowQualitySoftHigh : QtDataVisualization.QAbstract3DGraph = ... # 0x6 + SelectionItemRowAndColumn: QtDataVisualization.QAbstract3DGraph = ... # 0x7 + SelectionSlice : QtDataVisualization.QAbstract3DGraph = ... # 0x8 + SelectionMultiSeries : QtDataVisualization.QAbstract3DGraph = ... # 0x10 + + class ElementType(object): + ElementNone : QtDataVisualization.QAbstract3DGraph.ElementType = ... # 0x0 + ElementSeries : QtDataVisualization.QAbstract3DGraph.ElementType = ... # 0x1 + ElementAxisXLabel : QtDataVisualization.QAbstract3DGraph.ElementType = ... # 0x2 + ElementAxisYLabel : QtDataVisualization.QAbstract3DGraph.ElementType = ... # 0x3 + ElementAxisZLabel : QtDataVisualization.QAbstract3DGraph.ElementType = ... # 0x4 + ElementCustomItem : QtDataVisualization.QAbstract3DGraph.ElementType = ... # 0x5 + + class OptimizationHint(object): + OptimizationDefault : QtDataVisualization.QAbstract3DGraph.OptimizationHint = ... # 0x0 + OptimizationStatic : QtDataVisualization.QAbstract3DGraph.OptimizationHint = ... # 0x1 + + class OptimizationHints(object): ... + + class SelectionFlag(object): + SelectionNone : QtDataVisualization.QAbstract3DGraph.SelectionFlag = ... # 0x0 + SelectionItem : QtDataVisualization.QAbstract3DGraph.SelectionFlag = ... # 0x1 + SelectionRow : QtDataVisualization.QAbstract3DGraph.SelectionFlag = ... # 0x2 + SelectionItemAndRow : QtDataVisualization.QAbstract3DGraph.SelectionFlag = ... # 0x3 + SelectionColumn : QtDataVisualization.QAbstract3DGraph.SelectionFlag = ... # 0x4 + SelectionItemAndColumn : QtDataVisualization.QAbstract3DGraph.SelectionFlag = ... # 0x5 + SelectionRowAndColumn : QtDataVisualization.QAbstract3DGraph.SelectionFlag = ... # 0x6 + SelectionItemRowAndColumn: QtDataVisualization.QAbstract3DGraph.SelectionFlag = ... # 0x7 + SelectionSlice : QtDataVisualization.QAbstract3DGraph.SelectionFlag = ... # 0x8 + SelectionMultiSeries : QtDataVisualization.QAbstract3DGraph.SelectionFlag = ... # 0x10 + + class SelectionFlags(object): ... + + class ShadowQuality(object): + ShadowQualityNone : QtDataVisualization.QAbstract3DGraph.ShadowQuality = ... # 0x0 + ShadowQualityLow : QtDataVisualization.QAbstract3DGraph.ShadowQuality = ... # 0x1 + ShadowQualityMedium : QtDataVisualization.QAbstract3DGraph.ShadowQuality = ... # 0x2 + ShadowQualityHigh : QtDataVisualization.QAbstract3DGraph.ShadowQuality = ... # 0x3 + ShadowQualitySoftLow : QtDataVisualization.QAbstract3DGraph.ShadowQuality = ... # 0x4 + ShadowQualitySoftMedium : QtDataVisualization.QAbstract3DGraph.ShadowQuality = ... # 0x5 + ShadowQualitySoftHigh : QtDataVisualization.QAbstract3DGraph.ShadowQuality = ... # 0x6 + def activeInputHandler(self) -> PySide2.QtDataVisualization.QtDataVisualization.QAbstract3DInputHandler: ... + def activeTheme(self) -> PySide2.QtDataVisualization.QtDataVisualization.Q3DTheme: ... + def addCustomItem(self, item:PySide2.QtDataVisualization.QtDataVisualization.QCustom3DItem) -> int: ... + def addInputHandler(self, inputHandler:PySide2.QtDataVisualization.QtDataVisualization.QAbstract3DInputHandler) -> None: ... + def addTheme(self, theme:PySide2.QtDataVisualization.QtDataVisualization.Q3DTheme) -> None: ... + def aspectRatio(self) -> float: ... + def clearSelection(self) -> None: ... + def currentFps(self) -> float: ... + def customItems(self) -> typing.List: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def exposeEvent(self, event:PySide2.QtGui.QExposeEvent) -> None: ... + def hasContext(self) -> bool: ... + def horizontalAspectRatio(self) -> float: ... + def inputHandlers(self) -> typing.List: ... + def isOrthoProjection(self) -> bool: ... + def isPolar(self) -> bool: ... + def isReflection(self) -> bool: ... + def locale(self) -> PySide2.QtCore.QLocale: ... + def margin(self) -> float: ... + def measureFps(self) -> bool: ... + def mouseDoubleClickEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseMoveEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def mousePressEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def optimizationHints(self) -> PySide2.QtDataVisualization.QtDataVisualization.QAbstract3DGraph.OptimizationHints: ... + def queriedGraphPosition(self) -> PySide2.QtGui.QVector3D: ... + def radialLabelOffset(self) -> float: ... + def reflectivity(self) -> float: ... + def releaseCustomItem(self, item:PySide2.QtDataVisualization.QtDataVisualization.QCustom3DItem) -> None: ... + def releaseInputHandler(self, inputHandler:PySide2.QtDataVisualization.QtDataVisualization.QAbstract3DInputHandler) -> None: ... + def releaseTheme(self, theme:PySide2.QtDataVisualization.QtDataVisualization.Q3DTheme) -> None: ... + def removeCustomItem(self, item:PySide2.QtDataVisualization.QtDataVisualization.QCustom3DItem) -> None: ... + def removeCustomItemAt(self, position:PySide2.QtGui.QVector3D) -> None: ... + def removeCustomItems(self) -> None: ... + def renderToImage(self, msaaSamples:int=..., imageSize:PySide2.QtCore.QSize=...) -> PySide2.QtGui.QImage: ... + def resizeEvent(self, event:PySide2.QtGui.QResizeEvent) -> None: ... + def scene(self) -> PySide2.QtDataVisualization.QtDataVisualization.Q3DScene: ... + def selectedAxis(self) -> PySide2.QtDataVisualization.QtDataVisualization.QAbstract3DAxis: ... + def selectedCustomItem(self) -> PySide2.QtDataVisualization.QtDataVisualization.QCustom3DItem: ... + def selectedCustomItemIndex(self) -> int: ... + def selectedElement(self) -> PySide2.QtDataVisualization.QtDataVisualization.QAbstract3DGraph.ElementType: ... + def selectedLabelIndex(self) -> int: ... + def selectionMode(self) -> PySide2.QtDataVisualization.QtDataVisualization.QAbstract3DGraph.SelectionFlags: ... + def setActiveInputHandler(self, inputHandler:PySide2.QtDataVisualization.QtDataVisualization.QAbstract3DInputHandler) -> None: ... + def setActiveTheme(self, theme:PySide2.QtDataVisualization.QtDataVisualization.Q3DTheme) -> None: ... + def setAspectRatio(self, ratio:float) -> None: ... + def setHorizontalAspectRatio(self, ratio:float) -> None: ... + def setLocale(self, locale:PySide2.QtCore.QLocale) -> None: ... + def setMargin(self, margin:float) -> None: ... + def setMeasureFps(self, enable:bool) -> None: ... + def setOptimizationHints(self, hints:PySide2.QtDataVisualization.QtDataVisualization.QAbstract3DGraph.OptimizationHints) -> None: ... + def setOrthoProjection(self, enable:bool) -> None: ... + def setPolar(self, enable:bool) -> None: ... + def setRadialLabelOffset(self, offset:float) -> None: ... + def setReflection(self, enable:bool) -> None: ... + def setReflectivity(self, reflectivity:float) -> None: ... + def setSelectionMode(self, mode:PySide2.QtDataVisualization.QtDataVisualization.QAbstract3DGraph.SelectionFlags) -> None: ... + def setShadowQuality(self, quality:PySide2.QtDataVisualization.QtDataVisualization.QAbstract3DGraph.ShadowQuality) -> None: ... + def shadowQuality(self) -> PySide2.QtDataVisualization.QtDataVisualization.QAbstract3DGraph.ShadowQuality: ... + def shadowsSupported(self) -> bool: ... + def themes(self) -> typing.List: ... + def touchEvent(self, event:PySide2.QtGui.QTouchEvent) -> None: ... + def wheelEvent(self, event:PySide2.QtGui.QWheelEvent) -> None: ... + + class QAbstract3DInputHandler(PySide2.QtCore.QObject): + InputViewNone : QtDataVisualization.QAbstract3DInputHandler = ... # 0x0 + InputViewOnPrimary : QtDataVisualization.QAbstract3DInputHandler = ... # 0x1 + InputViewOnSecondary : QtDataVisualization.QAbstract3DInputHandler = ... # 0x2 + + class InputView(object): + InputViewNone : QtDataVisualization.QAbstract3DInputHandler.InputView = ... # 0x0 + InputViewOnPrimary : QtDataVisualization.QAbstract3DInputHandler.InputView = ... # 0x1 + InputViewOnSecondary : QtDataVisualization.QAbstract3DInputHandler.InputView = ... # 0x2 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def inputPosition(self) -> PySide2.QtCore.QPoint: ... + def inputView(self) -> PySide2.QtDataVisualization.QtDataVisualization.QAbstract3DInputHandler.InputView: ... + def mouseDoubleClickEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseMoveEvent(self, event:PySide2.QtGui.QMouseEvent, mousePos:PySide2.QtCore.QPoint) -> None: ... + def mousePressEvent(self, event:PySide2.QtGui.QMouseEvent, mousePos:PySide2.QtCore.QPoint) -> None: ... + def mouseReleaseEvent(self, event:PySide2.QtGui.QMouseEvent, mousePos:PySide2.QtCore.QPoint) -> None: ... + def prevDistance(self) -> int: ... + def previousInputPos(self) -> PySide2.QtCore.QPoint: ... + def scene(self) -> PySide2.QtDataVisualization.QtDataVisualization.Q3DScene: ... + def setInputPosition(self, position:PySide2.QtCore.QPoint) -> None: ... + def setInputView(self, inputView:PySide2.QtDataVisualization.QtDataVisualization.QAbstract3DInputHandler.InputView) -> None: ... + def setPrevDistance(self, distance:int) -> None: ... + def setPreviousInputPos(self, position:PySide2.QtCore.QPoint) -> None: ... + def setScene(self, scene:PySide2.QtDataVisualization.QtDataVisualization.Q3DScene) -> None: ... + def touchEvent(self, event:PySide2.QtGui.QTouchEvent) -> None: ... + def wheelEvent(self, event:PySide2.QtGui.QWheelEvent) -> None: ... + + class QAbstract3DSeries(PySide2.QtCore.QObject): + MeshUserDefined : QtDataVisualization.QAbstract3DSeries = ... # 0x0 + SeriesTypeNone : QtDataVisualization.QAbstract3DSeries = ... # 0x0 + MeshBar : QtDataVisualization.QAbstract3DSeries = ... # 0x1 + SeriesTypeBar : QtDataVisualization.QAbstract3DSeries = ... # 0x1 + MeshCube : QtDataVisualization.QAbstract3DSeries = ... # 0x2 + SeriesTypeScatter : QtDataVisualization.QAbstract3DSeries = ... # 0x2 + MeshPyramid : QtDataVisualization.QAbstract3DSeries = ... # 0x3 + MeshCone : QtDataVisualization.QAbstract3DSeries = ... # 0x4 + SeriesTypeSurface : QtDataVisualization.QAbstract3DSeries = ... # 0x4 + MeshCylinder : QtDataVisualization.QAbstract3DSeries = ... # 0x5 + MeshBevelBar : QtDataVisualization.QAbstract3DSeries = ... # 0x6 + MeshBevelCube : QtDataVisualization.QAbstract3DSeries = ... # 0x7 + MeshSphere : QtDataVisualization.QAbstract3DSeries = ... # 0x8 + MeshMinimal : QtDataVisualization.QAbstract3DSeries = ... # 0x9 + MeshArrow : QtDataVisualization.QAbstract3DSeries = ... # 0xa + MeshPoint : QtDataVisualization.QAbstract3DSeries = ... # 0xb + + class Mesh(object): + MeshUserDefined : QtDataVisualization.QAbstract3DSeries.Mesh = ... # 0x0 + MeshBar : QtDataVisualization.QAbstract3DSeries.Mesh = ... # 0x1 + MeshCube : QtDataVisualization.QAbstract3DSeries.Mesh = ... # 0x2 + MeshPyramid : QtDataVisualization.QAbstract3DSeries.Mesh = ... # 0x3 + MeshCone : QtDataVisualization.QAbstract3DSeries.Mesh = ... # 0x4 + MeshCylinder : QtDataVisualization.QAbstract3DSeries.Mesh = ... # 0x5 + MeshBevelBar : QtDataVisualization.QAbstract3DSeries.Mesh = ... # 0x6 + MeshBevelCube : QtDataVisualization.QAbstract3DSeries.Mesh = ... # 0x7 + MeshSphere : QtDataVisualization.QAbstract3DSeries.Mesh = ... # 0x8 + MeshMinimal : QtDataVisualization.QAbstract3DSeries.Mesh = ... # 0x9 + MeshArrow : QtDataVisualization.QAbstract3DSeries.Mesh = ... # 0xa + MeshPoint : QtDataVisualization.QAbstract3DSeries.Mesh = ... # 0xb + + class SeriesType(object): + SeriesTypeNone : QtDataVisualization.QAbstract3DSeries.SeriesType = ... # 0x0 + SeriesTypeBar : QtDataVisualization.QAbstract3DSeries.SeriesType = ... # 0x1 + SeriesTypeScatter : QtDataVisualization.QAbstract3DSeries.SeriesType = ... # 0x2 + SeriesTypeSurface : QtDataVisualization.QAbstract3DSeries.SeriesType = ... # 0x4 + def baseColor(self) -> PySide2.QtGui.QColor: ... + def baseGradient(self) -> PySide2.QtGui.QLinearGradient: ... + def colorStyle(self) -> PySide2.QtDataVisualization.QtDataVisualization.Q3DTheme.ColorStyle: ... + def isItemLabelVisible(self) -> bool: ... + def isMeshSmooth(self) -> bool: ... + def isVisible(self) -> bool: ... + def itemLabel(self) -> str: ... + def itemLabelFormat(self) -> str: ... + def mesh(self) -> PySide2.QtDataVisualization.QtDataVisualization.QAbstract3DSeries.Mesh: ... + def meshRotation(self) -> PySide2.QtGui.QQuaternion: ... + def multiHighlightColor(self) -> PySide2.QtGui.QColor: ... + def multiHighlightGradient(self) -> PySide2.QtGui.QLinearGradient: ... + def name(self) -> str: ... + def setBaseColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setBaseGradient(self, gradient:PySide2.QtGui.QLinearGradient) -> None: ... + def setColorStyle(self, style:PySide2.QtDataVisualization.QtDataVisualization.Q3DTheme.ColorStyle) -> None: ... + def setItemLabelFormat(self, format:str) -> None: ... + def setItemLabelVisible(self, visible:bool) -> None: ... + def setMesh(self, mesh:PySide2.QtDataVisualization.QtDataVisualization.QAbstract3DSeries.Mesh) -> None: ... + def setMeshAxisAndAngle(self, axis:PySide2.QtGui.QVector3D, angle:float) -> None: ... + def setMeshRotation(self, rotation:PySide2.QtGui.QQuaternion) -> None: ... + def setMeshSmooth(self, enable:bool) -> None: ... + def setMultiHighlightColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setMultiHighlightGradient(self, gradient:PySide2.QtGui.QLinearGradient) -> None: ... + def setName(self, name:str) -> None: ... + def setSingleHighlightColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setSingleHighlightGradient(self, gradient:PySide2.QtGui.QLinearGradient) -> None: ... + def setUserDefinedMesh(self, fileName:str) -> None: ... + def setVisible(self, visible:bool) -> None: ... + def singleHighlightColor(self) -> PySide2.QtGui.QColor: ... + def singleHighlightGradient(self) -> PySide2.QtGui.QLinearGradient: ... + def type(self) -> PySide2.QtDataVisualization.QtDataVisualization.QAbstract3DSeries.SeriesType: ... + def userDefinedMesh(self) -> str: ... + + class QAbstractDataProxy(PySide2.QtCore.QObject): + DataTypeNone : QtDataVisualization.QAbstractDataProxy = ... # 0x0 + DataTypeBar : QtDataVisualization.QAbstractDataProxy = ... # 0x1 + DataTypeScatter : QtDataVisualization.QAbstractDataProxy = ... # 0x2 + DataTypeSurface : QtDataVisualization.QAbstractDataProxy = ... # 0x4 + + class DataType(object): + DataTypeNone : QtDataVisualization.QAbstractDataProxy.DataType = ... # 0x0 + DataTypeBar : QtDataVisualization.QAbstractDataProxy.DataType = ... # 0x1 + DataTypeScatter : QtDataVisualization.QAbstractDataProxy.DataType = ... # 0x2 + DataTypeSurface : QtDataVisualization.QAbstractDataProxy.DataType = ... # 0x4 + def type(self) -> PySide2.QtDataVisualization.QtDataVisualization.QAbstractDataProxy.DataType: ... + + class QBar3DSeries(PySide2.QtDataVisualization.QAbstract3DSeries): + + @typing.overload + def __init__(self, dataProxy:PySide2.QtDataVisualization.QtDataVisualization.QBarDataProxy, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def dataProxy(self) -> PySide2.QtDataVisualization.QtDataVisualization.QBarDataProxy: ... + @staticmethod + def invalidSelectionPosition() -> PySide2.QtCore.QPoint: ... + def meshAngle(self) -> float: ... + def selectedBar(self) -> PySide2.QtCore.QPoint: ... + def setDataProxy(self, proxy:PySide2.QtDataVisualization.QtDataVisualization.QBarDataProxy) -> None: ... + def setMeshAngle(self, angle:float) -> None: ... + def setSelectedBar(self, position:PySide2.QtCore.QPoint) -> None: ... + + class QBarDataItem(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtDataVisualization.QtDataVisualization.QBarDataItem) -> None: ... + @typing.overload + def __init__(self, value:float) -> None: ... + @typing.overload + def __init__(self, value:float, angle:float) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def createExtraData(self) -> None: ... + def rotation(self) -> float: ... + def setRotation(self, angle:float) -> None: ... + def setValue(self, val:float) -> None: ... + def value(self) -> float: ... + + class QBarDataProxy(PySide2.QtDataVisualization.QAbstractDataProxy): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + @typing.overload + def addRow(self, row:typing.List) -> int: ... + @typing.overload + def addRow(self, row:typing.List, label:str) -> int: ... + @typing.overload + def addRows(self, rows:typing.List) -> int: ... + @typing.overload + def addRows(self, rows:typing.List, labels:typing.Sequence) -> int: ... + def array(self) -> typing.List: ... + def columnLabels(self) -> typing.List: ... + @typing.overload + def insertRow(self, rowIndex:int, row:typing.List) -> None: ... + @typing.overload + def insertRow(self, rowIndex:int, row:typing.List, label:str) -> None: ... + @typing.overload + def insertRows(self, rowIndex:int, rows:typing.List) -> None: ... + @typing.overload + def insertRows(self, rowIndex:int, rows:typing.List, labels:typing.Sequence) -> None: ... + @typing.overload + def itemAt(self, position:PySide2.QtCore.QPoint) -> PySide2.QtDataVisualization.QtDataVisualization.QBarDataItem: ... + @typing.overload + def itemAt(self, rowIndex:int, columnIndex:int) -> PySide2.QtDataVisualization.QtDataVisualization.QBarDataItem: ... + def removeRows(self, rowIndex:int, removeCount:int, removeLabels:bool=...) -> None: ... + @typing.overload + def resetArray(self) -> None: ... + @typing.overload + def resetArray(self, newArray:typing.List) -> None: ... + @typing.overload + def resetArray(self, newArray:typing.List, rowLabels:typing.Sequence, columnLabels:typing.Sequence) -> None: ... + def rowAt(self, rowIndex:int) -> typing.List: ... + def rowCount(self) -> int: ... + def rowLabels(self) -> typing.List: ... + def series(self) -> PySide2.QtDataVisualization.QtDataVisualization.QBar3DSeries: ... + def setColumnLabels(self, labels:typing.Sequence) -> None: ... + @typing.overload + def setItem(self, position:PySide2.QtCore.QPoint, item:PySide2.QtDataVisualization.QtDataVisualization.QBarDataItem) -> None: ... + @typing.overload + def setItem(self, rowIndex:int, columnIndex:int, item:PySide2.QtDataVisualization.QtDataVisualization.QBarDataItem) -> None: ... + @typing.overload + def setRow(self, rowIndex:int, row:typing.List) -> None: ... + @typing.overload + def setRow(self, rowIndex:int, row:typing.List, label:str) -> None: ... + def setRowLabels(self, labels:typing.Sequence) -> None: ... + @typing.overload + def setRows(self, rowIndex:int, rows:typing.List) -> None: ... + @typing.overload + def setRows(self, rowIndex:int, rows:typing.List, labels:typing.Sequence) -> None: ... + + class QCategory3DAxis(PySide2.QtDataVisualization.QAbstract3DAxis): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def labels(self) -> typing.List: ... + def setLabels(self, labels:typing.Sequence) -> None: ... + + class QCustom3DItem(PySide2.QtCore.QObject): + + @typing.overload + def __init__(self, meshFile:str, position:PySide2.QtGui.QVector3D, scaling:PySide2.QtGui.QVector3D, rotation:PySide2.QtGui.QQuaternion, texture:PySide2.QtGui.QImage, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def isPositionAbsolute(self) -> bool: ... + def isScalingAbsolute(self) -> bool: ... + def isShadowCasting(self) -> bool: ... + def isVisible(self) -> bool: ... + def meshFile(self) -> str: ... + def position(self) -> PySide2.QtGui.QVector3D: ... + def rotation(self) -> PySide2.QtGui.QQuaternion: ... + def scaling(self) -> PySide2.QtGui.QVector3D: ... + def setMeshFile(self, meshFile:str) -> None: ... + def setPosition(self, position:PySide2.QtGui.QVector3D) -> None: ... + def setPositionAbsolute(self, positionAbsolute:bool) -> None: ... + def setRotation(self, rotation:PySide2.QtGui.QQuaternion) -> None: ... + def setRotationAxisAndAngle(self, axis:PySide2.QtGui.QVector3D, angle:float) -> None: ... + def setScaling(self, scaling:PySide2.QtGui.QVector3D) -> None: ... + def setScalingAbsolute(self, scalingAbsolute:bool) -> None: ... + def setShadowCasting(self, enabled:bool) -> None: ... + def setTextureFile(self, textureFile:str) -> None: ... + def setTextureImage(self, textureImage:PySide2.QtGui.QImage) -> None: ... + def setVisible(self, visible:bool) -> None: ... + def textureFile(self) -> str: ... + + class QCustom3DLabel(PySide2.QtDataVisualization.QCustom3DItem): + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, text:str, font:PySide2.QtGui.QFont, position:PySide2.QtGui.QVector3D, scaling:PySide2.QtGui.QVector3D, rotation:PySide2.QtGui.QQuaternion, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def backgroundColor(self) -> PySide2.QtGui.QColor: ... + def font(self) -> PySide2.QtGui.QFont: ... + def isBackgroundEnabled(self) -> bool: ... + def isBorderEnabled(self) -> bool: ... + def isFacingCamera(self) -> bool: ... + def setBackgroundColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setBackgroundEnabled(self, enabled:bool) -> None: ... + def setBorderEnabled(self, enabled:bool) -> None: ... + def setFacingCamera(self, enabled:bool) -> None: ... + def setFont(self, font:PySide2.QtGui.QFont) -> None: ... + def setText(self, text:str) -> None: ... + def setTextColor(self, color:PySide2.QtGui.QColor) -> None: ... + def text(self) -> str: ... + def textColor(self) -> PySide2.QtGui.QColor: ... + + class QCustom3DVolume(PySide2.QtDataVisualization.QCustom3DItem): + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, position:PySide2.QtGui.QVector3D, scaling:PySide2.QtGui.QVector3D, rotation:PySide2.QtGui.QQuaternion, textureWidth:int, textureHeight:int, textureDepth:int, textureData:typing.List, textureFormat:PySide2.QtGui.QImage.Format, colorTable:typing.List, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def alphaMultiplier(self) -> float: ... + def colorTable(self) -> typing.List: ... + def createTextureData(self, images:typing.List) -> typing.List: ... + def drawSliceFrames(self) -> bool: ... + def drawSlices(self) -> bool: ... + def preserveOpacity(self) -> bool: ... + def renderSlice(self, axis:PySide2.QtCore.Qt.Axis, index:int) -> PySide2.QtGui.QImage: ... + def setAlphaMultiplier(self, mult:float) -> None: ... + def setColorTable(self, colors:typing.List) -> None: ... + def setDrawSliceFrames(self, enable:bool) -> None: ... + def setDrawSlices(self, enable:bool) -> None: ... + def setPreserveOpacity(self, enable:bool) -> None: ... + def setSliceFrameColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setSliceFrameGaps(self, values:PySide2.QtGui.QVector3D) -> None: ... + def setSliceFrameThicknesses(self, values:PySide2.QtGui.QVector3D) -> None: ... + def setSliceFrameWidths(self, values:PySide2.QtGui.QVector3D) -> None: ... + def setSliceIndexX(self, value:int) -> None: ... + def setSliceIndexY(self, value:int) -> None: ... + def setSliceIndexZ(self, value:int) -> None: ... + def setSliceIndices(self, x:int, y:int, z:int) -> None: ... + @typing.overload + def setSubTextureData(self, axis:PySide2.QtCore.Qt.Axis, index:int, data:bytes) -> None: ... + @typing.overload + def setSubTextureData(self, axis:PySide2.QtCore.Qt.Axis, index:int, image:PySide2.QtGui.QImage) -> None: ... + def setTextureData(self, data:typing.List) -> None: ... + def setTextureDepth(self, value:int) -> None: ... + def setTextureDimensions(self, width:int, height:int, depth:int) -> None: ... + def setTextureFormat(self, format:PySide2.QtGui.QImage.Format) -> None: ... + def setTextureHeight(self, value:int) -> None: ... + def setTextureWidth(self, value:int) -> None: ... + def setUseHighDefShader(self, enable:bool) -> None: ... + def sliceFrameColor(self) -> PySide2.QtGui.QColor: ... + def sliceFrameGaps(self) -> PySide2.QtGui.QVector3D: ... + def sliceFrameThicknesses(self) -> PySide2.QtGui.QVector3D: ... + def sliceFrameWidths(self) -> PySide2.QtGui.QVector3D: ... + def sliceIndexX(self) -> int: ... + def sliceIndexY(self) -> int: ... + def sliceIndexZ(self) -> int: ... + def textureData(self) -> typing.List: ... + def textureDataWidth(self) -> int: ... + def textureDepth(self) -> int: ... + def textureFormat(self) -> PySide2.QtGui.QImage.Format: ... + def textureHeight(self) -> int: ... + def textureWidth(self) -> int: ... + def useHighDefShader(self) -> bool: ... + + class QHeightMapSurfaceDataProxy(PySide2.QtDataVisualization.QSurfaceDataProxy): + + @typing.overload + def __init__(self, filename:str, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, image:PySide2.QtGui.QImage, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def heightMap(self) -> PySide2.QtGui.QImage: ... + def heightMapFile(self) -> str: ... + def maxXValue(self) -> float: ... + def maxZValue(self) -> float: ... + def minXValue(self) -> float: ... + def minZValue(self) -> float: ... + def setHeightMap(self, image:PySide2.QtGui.QImage) -> None: ... + def setHeightMapFile(self, filename:str) -> None: ... + def setMaxXValue(self, max:float) -> None: ... + def setMaxZValue(self, max:float) -> None: ... + def setMinXValue(self, min:float) -> None: ... + def setMinZValue(self, min:float) -> None: ... + def setValueRanges(self, minX:float, maxX:float, minZ:float, maxZ:float) -> None: ... + + class QItemModelBarDataProxy(PySide2.QtDataVisualization.QBarDataProxy): + MMBFirst : QtDataVisualization.QItemModelBarDataProxy = ... # 0x0 + MMBLast : QtDataVisualization.QItemModelBarDataProxy = ... # 0x1 + MMBAverage : QtDataVisualization.QItemModelBarDataProxy = ... # 0x2 + MMBCumulative : QtDataVisualization.QItemModelBarDataProxy = ... # 0x3 + + class MultiMatchBehavior(object): + MMBFirst : QtDataVisualization.QItemModelBarDataProxy.MultiMatchBehavior = ... # 0x0 + MMBLast : QtDataVisualization.QItemModelBarDataProxy.MultiMatchBehavior = ... # 0x1 + MMBAverage : QtDataVisualization.QItemModelBarDataProxy.MultiMatchBehavior = ... # 0x2 + MMBCumulative : QtDataVisualization.QItemModelBarDataProxy.MultiMatchBehavior = ... # 0x3 + + @typing.overload + def __init__(self, itemModel:PySide2.QtCore.QAbstractItemModel, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, itemModel:PySide2.QtCore.QAbstractItemModel, rowRole:str, columnRole:str, valueRole:str, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, itemModel:PySide2.QtCore.QAbstractItemModel, rowRole:str, columnRole:str, valueRole:str, rotationRole:str, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, itemModel:PySide2.QtCore.QAbstractItemModel, rowRole:str, columnRole:str, valueRole:str, rotationRole:str, rowCategories:typing.Sequence, columnCategories:typing.Sequence, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, itemModel:PySide2.QtCore.QAbstractItemModel, rowRole:str, columnRole:str, valueRole:str, rowCategories:typing.Sequence, columnCategories:typing.Sequence, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, itemModel:PySide2.QtCore.QAbstractItemModel, valueRole:str, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def autoColumnCategories(self) -> bool: ... + def autoRowCategories(self) -> bool: ... + def columnCategories(self) -> typing.List: ... + def columnCategoryIndex(self, category:str) -> int: ... + def columnRole(self) -> str: ... + def columnRolePattern(self) -> PySide2.QtCore.QRegExp: ... + def columnRoleReplace(self) -> str: ... + def itemModel(self) -> PySide2.QtCore.QAbstractItemModel: ... + def multiMatchBehavior(self) -> PySide2.QtDataVisualization.QtDataVisualization.QItemModelBarDataProxy.MultiMatchBehavior: ... + def remap(self, rowRole:str, columnRole:str, valueRole:str, rotationRole:str, rowCategories:typing.Sequence, columnCategories:typing.Sequence) -> None: ... + def rotationRole(self) -> str: ... + def rotationRolePattern(self) -> PySide2.QtCore.QRegExp: ... + def rotationRoleReplace(self) -> str: ... + def rowCategories(self) -> typing.List: ... + def rowCategoryIndex(self, category:str) -> int: ... + def rowRole(self) -> str: ... + def rowRolePattern(self) -> PySide2.QtCore.QRegExp: ... + def rowRoleReplace(self) -> str: ... + def setAutoColumnCategories(self, enable:bool) -> None: ... + def setAutoRowCategories(self, enable:bool) -> None: ... + def setColumnCategories(self, categories:typing.Sequence) -> None: ... + def setColumnRole(self, role:str) -> None: ... + def setColumnRolePattern(self, pattern:PySide2.QtCore.QRegExp) -> None: ... + def setColumnRoleReplace(self, replace:str) -> None: ... + def setItemModel(self, itemModel:PySide2.QtCore.QAbstractItemModel) -> None: ... + def setMultiMatchBehavior(self, behavior:PySide2.QtDataVisualization.QtDataVisualization.QItemModelBarDataProxy.MultiMatchBehavior) -> None: ... + def setRotationRole(self, role:str) -> None: ... + def setRotationRolePattern(self, pattern:PySide2.QtCore.QRegExp) -> None: ... + def setRotationRoleReplace(self, replace:str) -> None: ... + def setRowCategories(self, categories:typing.Sequence) -> None: ... + def setRowRole(self, role:str) -> None: ... + def setRowRolePattern(self, pattern:PySide2.QtCore.QRegExp) -> None: ... + def setRowRoleReplace(self, replace:str) -> None: ... + def setUseModelCategories(self, enable:bool) -> None: ... + def setValueRole(self, role:str) -> None: ... + def setValueRolePattern(self, pattern:PySide2.QtCore.QRegExp) -> None: ... + def setValueRoleReplace(self, replace:str) -> None: ... + def useModelCategories(self) -> bool: ... + def valueRole(self) -> str: ... + def valueRolePattern(self) -> PySide2.QtCore.QRegExp: ... + def valueRoleReplace(self) -> str: ... + + class QItemModelScatterDataProxy(PySide2.QtDataVisualization.QScatterDataProxy): + + @typing.overload + def __init__(self, itemModel:PySide2.QtCore.QAbstractItemModel, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, itemModel:PySide2.QtCore.QAbstractItemModel, xPosRole:str, yPosRole:str, zPosRole:str, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, itemModel:PySide2.QtCore.QAbstractItemModel, xPosRole:str, yPosRole:str, zPosRole:str, rotationRole:str, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def itemModel(self) -> PySide2.QtCore.QAbstractItemModel: ... + def remap(self, xPosRole:str, yPosRole:str, zPosRole:str, rotationRole:str) -> None: ... + def rotationRole(self) -> str: ... + def rotationRolePattern(self) -> PySide2.QtCore.QRegExp: ... + def rotationRoleReplace(self) -> str: ... + def setItemModel(self, itemModel:PySide2.QtCore.QAbstractItemModel) -> None: ... + def setRotationRole(self, role:str) -> None: ... + def setRotationRolePattern(self, pattern:PySide2.QtCore.QRegExp) -> None: ... + def setRotationRoleReplace(self, replace:str) -> None: ... + def setXPosRole(self, role:str) -> None: ... + def setXPosRolePattern(self, pattern:PySide2.QtCore.QRegExp) -> None: ... + def setXPosRoleReplace(self, replace:str) -> None: ... + def setYPosRole(self, role:str) -> None: ... + def setYPosRolePattern(self, pattern:PySide2.QtCore.QRegExp) -> None: ... + def setYPosRoleReplace(self, replace:str) -> None: ... + def setZPosRole(self, role:str) -> None: ... + def setZPosRolePattern(self, pattern:PySide2.QtCore.QRegExp) -> None: ... + def setZPosRoleReplace(self, replace:str) -> None: ... + def xPosRole(self) -> str: ... + def xPosRolePattern(self) -> PySide2.QtCore.QRegExp: ... + def xPosRoleReplace(self) -> str: ... + def yPosRole(self) -> str: ... + def yPosRolePattern(self) -> PySide2.QtCore.QRegExp: ... + def yPosRoleReplace(self) -> str: ... + def zPosRole(self) -> str: ... + def zPosRolePattern(self) -> PySide2.QtCore.QRegExp: ... + def zPosRoleReplace(self) -> str: ... + + class QItemModelSurfaceDataProxy(PySide2.QtDataVisualization.QSurfaceDataProxy): + MMBFirst : QtDataVisualization.QItemModelSurfaceDataProxy = ... # 0x0 + MMBLast : QtDataVisualization.QItemModelSurfaceDataProxy = ... # 0x1 + MMBAverage : QtDataVisualization.QItemModelSurfaceDataProxy = ... # 0x2 + MMBCumulativeY : QtDataVisualization.QItemModelSurfaceDataProxy = ... # 0x3 + + class MultiMatchBehavior(object): + MMBFirst : QtDataVisualization.QItemModelSurfaceDataProxy.MultiMatchBehavior = ... # 0x0 + MMBLast : QtDataVisualization.QItemModelSurfaceDataProxy.MultiMatchBehavior = ... # 0x1 + MMBAverage : QtDataVisualization.QItemModelSurfaceDataProxy.MultiMatchBehavior = ... # 0x2 + MMBCumulativeY : QtDataVisualization.QItemModelSurfaceDataProxy.MultiMatchBehavior = ... # 0x3 + + @typing.overload + def __init__(self, itemModel:PySide2.QtCore.QAbstractItemModel, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, itemModel:PySide2.QtCore.QAbstractItemModel, rowRole:str, columnRole:str, xPosRole:str, yPosRole:str, zPosRole:str, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, itemModel:PySide2.QtCore.QAbstractItemModel, rowRole:str, columnRole:str, xPosRole:str, yPosRole:str, zPosRole:str, rowCategories:typing.Sequence, columnCategories:typing.Sequence, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, itemModel:PySide2.QtCore.QAbstractItemModel, rowRole:str, columnRole:str, yPosRole:str, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, itemModel:PySide2.QtCore.QAbstractItemModel, rowRole:str, columnRole:str, yPosRole:str, rowCategories:typing.Sequence, columnCategories:typing.Sequence, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, itemModel:PySide2.QtCore.QAbstractItemModel, yPosRole:str, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def autoColumnCategories(self) -> bool: ... + def autoRowCategories(self) -> bool: ... + def columnCategories(self) -> typing.List: ... + def columnCategoryIndex(self, category:str) -> int: ... + def columnRole(self) -> str: ... + def columnRolePattern(self) -> PySide2.QtCore.QRegExp: ... + def columnRoleReplace(self) -> str: ... + def itemModel(self) -> PySide2.QtCore.QAbstractItemModel: ... + def multiMatchBehavior(self) -> PySide2.QtDataVisualization.QtDataVisualization.QItemModelSurfaceDataProxy.MultiMatchBehavior: ... + def remap(self, rowRole:str, columnRole:str, xPosRole:str, yPosRole:str, zPosRole:str, rowCategories:typing.Sequence, columnCategories:typing.Sequence) -> None: ... + def rowCategories(self) -> typing.List: ... + def rowCategoryIndex(self, category:str) -> int: ... + def rowRole(self) -> str: ... + def rowRolePattern(self) -> PySide2.QtCore.QRegExp: ... + def rowRoleReplace(self) -> str: ... + def setAutoColumnCategories(self, enable:bool) -> None: ... + def setAutoRowCategories(self, enable:bool) -> None: ... + def setColumnCategories(self, categories:typing.Sequence) -> None: ... + def setColumnRole(self, role:str) -> None: ... + def setColumnRolePattern(self, pattern:PySide2.QtCore.QRegExp) -> None: ... + def setColumnRoleReplace(self, replace:str) -> None: ... + def setItemModel(self, itemModel:PySide2.QtCore.QAbstractItemModel) -> None: ... + def setMultiMatchBehavior(self, behavior:PySide2.QtDataVisualization.QtDataVisualization.QItemModelSurfaceDataProxy.MultiMatchBehavior) -> None: ... + def setRowCategories(self, categories:typing.Sequence) -> None: ... + def setRowRole(self, role:str) -> None: ... + def setRowRolePattern(self, pattern:PySide2.QtCore.QRegExp) -> None: ... + def setRowRoleReplace(self, replace:str) -> None: ... + def setUseModelCategories(self, enable:bool) -> None: ... + def setXPosRole(self, role:str) -> None: ... + def setXPosRolePattern(self, pattern:PySide2.QtCore.QRegExp) -> None: ... + def setXPosRoleReplace(self, replace:str) -> None: ... + def setYPosRole(self, role:str) -> None: ... + def setYPosRolePattern(self, pattern:PySide2.QtCore.QRegExp) -> None: ... + def setYPosRoleReplace(self, replace:str) -> None: ... + def setZPosRole(self, role:str) -> None: ... + def setZPosRolePattern(self, pattern:PySide2.QtCore.QRegExp) -> None: ... + def setZPosRoleReplace(self, replace:str) -> None: ... + def useModelCategories(self) -> bool: ... + def xPosRole(self) -> str: ... + def xPosRolePattern(self) -> PySide2.QtCore.QRegExp: ... + def xPosRoleReplace(self) -> str: ... + def yPosRole(self) -> str: ... + def yPosRolePattern(self) -> PySide2.QtCore.QRegExp: ... + def yPosRoleReplace(self) -> str: ... + def zPosRole(self) -> str: ... + def zPosRolePattern(self) -> PySide2.QtCore.QRegExp: ... + def zPosRoleReplace(self) -> str: ... + + class QLogValue3DAxisFormatter(PySide2.QtDataVisualization.QValue3DAxisFormatter): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def autoSubGrid(self) -> bool: ... + def base(self) -> float: ... + def createNewInstance(self) -> PySide2.QtDataVisualization.QtDataVisualization.QValue3DAxisFormatter: ... + def populateCopy(self, copy:PySide2.QtDataVisualization.QtDataVisualization.QValue3DAxisFormatter) -> None: ... + def positionAt(self, value:float) -> float: ... + def recalculate(self) -> None: ... + def setAutoSubGrid(self, enabled:bool) -> None: ... + def setBase(self, base:float) -> None: ... + def setShowEdgeLabels(self, enabled:bool) -> None: ... + def showEdgeLabels(self) -> bool: ... + def valueAt(self, position:float) -> float: ... + + class QScatter3DSeries(PySide2.QtDataVisualization.QAbstract3DSeries): + + @typing.overload + def __init__(self, dataProxy:PySide2.QtDataVisualization.QtDataVisualization.QScatterDataProxy, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def dataProxy(self) -> PySide2.QtDataVisualization.QtDataVisualization.QScatterDataProxy: ... + @staticmethod + def invalidSelectionIndex() -> int: ... + def itemSize(self) -> float: ... + def selectedItem(self) -> int: ... + def setDataProxy(self, proxy:PySide2.QtDataVisualization.QtDataVisualization.QScatterDataProxy) -> None: ... + def setItemSize(self, size:float) -> None: ... + def setSelectedItem(self, index:int) -> None: ... + + class QScatterDataItem(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtDataVisualization.QtDataVisualization.QScatterDataItem) -> None: ... + @typing.overload + def __init__(self, position:PySide2.QtGui.QVector3D) -> None: ... + @typing.overload + def __init__(self, position:PySide2.QtGui.QVector3D, rotation:PySide2.QtGui.QQuaternion) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def createExtraData(self) -> None: ... + def position(self) -> PySide2.QtGui.QVector3D: ... + def rotation(self) -> PySide2.QtGui.QQuaternion: ... + def setPosition(self, pos:PySide2.QtGui.QVector3D) -> None: ... + def setRotation(self, rot:PySide2.QtGui.QQuaternion) -> None: ... + def setX(self, value:float) -> None: ... + def setY(self, value:float) -> None: ... + def setZ(self, value:float) -> None: ... + def x(self) -> float: ... + def y(self) -> float: ... + def z(self) -> float: ... + + class QScatterDataProxy(PySide2.QtDataVisualization.QAbstractDataProxy): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def addItem(self, item:PySide2.QtDataVisualization.QtDataVisualization.QScatterDataItem) -> int: ... + def addItems(self, items:typing.List) -> int: ... + def array(self) -> typing.List: ... + def insertItem(self, index:int, item:PySide2.QtDataVisualization.QtDataVisualization.QScatterDataItem) -> None: ... + def insertItems(self, index:int, items:typing.List) -> None: ... + def itemAt(self, index:int) -> PySide2.QtDataVisualization.QtDataVisualization.QScatterDataItem: ... + def itemCount(self) -> int: ... + def removeItems(self, index:int, removeCount:int) -> None: ... + def resetArray(self, newArray:typing.List) -> None: ... + def series(self) -> PySide2.QtDataVisualization.QtDataVisualization.QScatter3DSeries: ... + def setItem(self, index:int, item:PySide2.QtDataVisualization.QtDataVisualization.QScatterDataItem) -> None: ... + def setItems(self, index:int, items:typing.List) -> None: ... + + class QSurface3DSeries(PySide2.QtDataVisualization.QAbstract3DSeries): + DrawWireframe : QtDataVisualization.QSurface3DSeries = ... # 0x1 + DrawSurface : QtDataVisualization.QSurface3DSeries = ... # 0x2 + DrawSurfaceAndWireframe : QtDataVisualization.QSurface3DSeries = ... # 0x3 + + class DrawFlag(object): + DrawWireframe : QtDataVisualization.QSurface3DSeries.DrawFlag = ... # 0x1 + DrawSurface : QtDataVisualization.QSurface3DSeries.DrawFlag = ... # 0x2 + DrawSurfaceAndWireframe : QtDataVisualization.QSurface3DSeries.DrawFlag = ... # 0x3 + + class DrawFlags(object): ... + + @typing.overload + def __init__(self, dataProxy:PySide2.QtDataVisualization.QtDataVisualization.QSurfaceDataProxy, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def dataProxy(self) -> PySide2.QtDataVisualization.QtDataVisualization.QSurfaceDataProxy: ... + def drawMode(self) -> PySide2.QtDataVisualization.QtDataVisualization.QSurface3DSeries.DrawFlags: ... + @staticmethod + def invalidSelectionPosition() -> PySide2.QtCore.QPoint: ... + def isFlatShadingEnabled(self) -> bool: ... + def isFlatShadingSupported(self) -> bool: ... + def selectedPoint(self) -> PySide2.QtCore.QPoint: ... + def setDataProxy(self, proxy:PySide2.QtDataVisualization.QtDataVisualization.QSurfaceDataProxy) -> None: ... + def setDrawMode(self, mode:PySide2.QtDataVisualization.QtDataVisualization.QSurface3DSeries.DrawFlags) -> None: ... + def setFlatShadingEnabled(self, enabled:bool) -> None: ... + def setSelectedPoint(self, position:PySide2.QtCore.QPoint) -> None: ... + def setTexture(self, texture:PySide2.QtGui.QImage) -> None: ... + def setTextureFile(self, filename:str) -> None: ... + def texture(self) -> PySide2.QtGui.QImage: ... + def textureFile(self) -> str: ... + + class QSurfaceDataItem(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtDataVisualization.QtDataVisualization.QSurfaceDataItem) -> None: ... + @typing.overload + def __init__(self, position:PySide2.QtGui.QVector3D) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def createExtraData(self) -> None: ... + def position(self) -> PySide2.QtGui.QVector3D: ... + def setPosition(self, pos:PySide2.QtGui.QVector3D) -> None: ... + def setX(self, value:float) -> None: ... + def setY(self, value:float) -> None: ... + def setZ(self, value:float) -> None: ... + def x(self) -> float: ... + def y(self) -> float: ... + def z(self) -> float: ... + + class QSurfaceDataProxy(PySide2.QtDataVisualization.QAbstractDataProxy): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def addRow(self, row:typing.List) -> int: ... + def addRows(self, rows:typing.List) -> int: ... + def array(self) -> typing.List: ... + def columnCount(self) -> int: ... + def insertRow(self, rowIndex:int, row:typing.List) -> None: ... + def insertRows(self, rowIndex:int, rows:typing.List) -> None: ... + @typing.overload + def itemAt(self, position:PySide2.QtCore.QPoint) -> PySide2.QtDataVisualization.QtDataVisualization.QSurfaceDataItem: ... + @typing.overload + def itemAt(self, rowIndex:int, columnIndex:int) -> PySide2.QtDataVisualization.QtDataVisualization.QSurfaceDataItem: ... + def removeRows(self, rowIndex:int, removeCount:int) -> None: ... + def resetArray(self, newArray:typing.List) -> None: ... + def rowCount(self) -> int: ... + def series(self) -> PySide2.QtDataVisualization.QtDataVisualization.QSurface3DSeries: ... + @typing.overload + def setItem(self, position:PySide2.QtCore.QPoint, item:PySide2.QtDataVisualization.QtDataVisualization.QSurfaceDataItem) -> None: ... + @typing.overload + def setItem(self, rowIndex:int, columnIndex:int, item:PySide2.QtDataVisualization.QtDataVisualization.QSurfaceDataItem) -> None: ... + def setRow(self, rowIndex:int, row:typing.List) -> None: ... + def setRows(self, rowIndex:int, rows:typing.List) -> None: ... + + class QTouch3DInputHandler(PySide2.QtDataVisualization.Q3DInputHandler): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def touchEvent(self, event:PySide2.QtGui.QTouchEvent) -> None: ... + + class QValue3DAxis(PySide2.QtDataVisualization.QAbstract3DAxis): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def formatter(self) -> PySide2.QtDataVisualization.QtDataVisualization.QValue3DAxisFormatter: ... + def labelFormat(self) -> str: ... + def reversed(self) -> bool: ... + def segmentCount(self) -> int: ... + def setFormatter(self, formatter:PySide2.QtDataVisualization.QtDataVisualization.QValue3DAxisFormatter) -> None: ... + def setLabelFormat(self, format:str) -> None: ... + def setReversed(self, enable:bool) -> None: ... + def setSegmentCount(self, count:int) -> None: ... + def setSubSegmentCount(self, count:int) -> None: ... + def subSegmentCount(self) -> int: ... + + class QValue3DAxisFormatter(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def allowNegatives(self) -> bool: ... + def allowZero(self) -> bool: ... + def axis(self) -> PySide2.QtDataVisualization.QtDataVisualization.QValue3DAxis: ... + def createNewInstance(self) -> PySide2.QtDataVisualization.QtDataVisualization.QValue3DAxisFormatter: ... + def gridPositions(self) -> typing.List: ... + def labelPositions(self) -> typing.List: ... + def labelStrings(self) -> typing.List: ... + def locale(self) -> PySide2.QtCore.QLocale: ... + def markDirty(self, labelsChange:bool=...) -> None: ... + def populateCopy(self, copy:PySide2.QtDataVisualization.QtDataVisualization.QValue3DAxisFormatter) -> None: ... + def positionAt(self, value:float) -> float: ... + def recalculate(self) -> None: ... + def setAllowNegatives(self, allow:bool) -> None: ... + def setAllowZero(self, allow:bool) -> None: ... + def setLocale(self, locale:PySide2.QtCore.QLocale) -> None: ... + def stringForValue(self, value:float, format:str) -> str: ... + def subGridPositions(self) -> typing.List: ... + def valueAt(self, position:float) -> float: ... + @typing.overload + @staticmethod + def qDefaultSurfaceFormat(antialias:bool) -> PySide2.QtGui.QSurfaceFormat: ... + @typing.overload + @staticmethod + def qDefaultSurfaceFormat(antialias:bool=...) -> PySide2.QtGui.QSurfaceFormat: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtGui.pyd b/venv/Lib/site-packages/PySide2/QtGui.pyd new file mode 100644 index 0000000..2f8cda4 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtGui.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtGui.pyi b/venv/Lib/site-packages/PySide2/QtGui.pyi new file mode 100644 index 0000000..67aaee6 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtGui.pyi @@ -0,0 +1,11382 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtGui, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtGui +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtGui + + +class QAbstractOpenGLFunctions(Shiboken.Object): + + def __init__(self) -> None: ... + + def initializeOpenGLFunctions(self) -> bool: ... + def isInitialized(self) -> bool: ... + def owningContext(self) -> PySide2.QtGui.QOpenGLContext: ... + def setOwningContext(self, context:PySide2.QtGui.QOpenGLContext) -> None: ... + + +class QAbstractTextDocumentLayout(PySide2.QtCore.QObject): + + class PaintContext(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, PaintContext:PySide2.QtGui.QAbstractTextDocumentLayout.PaintContext) -> None: ... + + @staticmethod + def __copy__() -> None: ... + + class Selection(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, Selection:PySide2.QtGui.QAbstractTextDocumentLayout.Selection) -> None: ... + + @staticmethod + def __copy__() -> None: ... + + def __init__(self, doc:PySide2.QtGui.QTextDocument) -> None: ... + + def anchorAt(self, pos:PySide2.QtCore.QPointF) -> str: ... + def blockBoundingRect(self, block:PySide2.QtGui.QTextBlock) -> PySide2.QtCore.QRectF: ... + def blockWithMarkerAt(self, pos:PySide2.QtCore.QPointF) -> PySide2.QtGui.QTextBlock: ... + def document(self) -> PySide2.QtGui.QTextDocument: ... + def documentChanged(self, from_:int, charsRemoved:int, charsAdded:int) -> None: ... + def documentSize(self) -> PySide2.QtCore.QSizeF: ... + def draw(self, painter:PySide2.QtGui.QPainter, context:PySide2.QtGui.QAbstractTextDocumentLayout.PaintContext) -> None: ... + def drawInlineObject(self, painter:PySide2.QtGui.QPainter, rect:PySide2.QtCore.QRectF, object:PySide2.QtGui.QTextInlineObject, posInDocument:int, format:PySide2.QtGui.QTextFormat) -> None: ... + def format(self, pos:int) -> PySide2.QtGui.QTextCharFormat: ... + def formatAt(self, pos:PySide2.QtCore.QPointF) -> PySide2.QtGui.QTextFormat: ... + def formatIndex(self, pos:int) -> int: ... + def frameBoundingRect(self, frame:PySide2.QtGui.QTextFrame) -> PySide2.QtCore.QRectF: ... + def handlerForObject(self, objectType:int) -> PySide2.QtGui.QTextObjectInterface: ... + def hitTest(self, point:PySide2.QtCore.QPointF, accuracy:PySide2.QtCore.Qt.HitTestAccuracy) -> int: ... + def imageAt(self, pos:PySide2.QtCore.QPointF) -> str: ... + def pageCount(self) -> int: ... + def paintDevice(self) -> PySide2.QtGui.QPaintDevice: ... + def positionInlineObject(self, item:PySide2.QtGui.QTextInlineObject, posInDocument:int, format:PySide2.QtGui.QTextFormat) -> None: ... + def registerHandler(self, objectType:int, component:PySide2.QtCore.QObject) -> None: ... + def resizeInlineObject(self, item:PySide2.QtGui.QTextInlineObject, posInDocument:int, format:PySide2.QtGui.QTextFormat) -> None: ... + def setPaintDevice(self, device:PySide2.QtGui.QPaintDevice) -> None: ... + def unregisterHandler(self, objectType:int, component:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + +class QAccessible(Shiboken.Object): + AllRelations : QAccessible = ... # -0x1 + CharBoundary : QAccessible = ... # 0x0 + Name : QAccessible = ... # 0x0 + NoRole : QAccessible = ... # 0x0 + TextInterface : QAccessible = ... # 0x0 + Description : QAccessible = ... # 0x1 + EditableTextInterface : QAccessible = ... # 0x1 + Label : QAccessible = ... # 0x1 + SoundPlayed : QAccessible = ... # 0x1 + TitleBar : QAccessible = ... # 0x1 + WordBoundary : QAccessible = ... # 0x1 + Alert : QAccessible = ... # 0x2 + Labelled : QAccessible = ... # 0x2 + MenuBar : QAccessible = ... # 0x2 + SentenceBoundary : QAccessible = ... # 0x2 + Value : QAccessible = ... # 0x2 + ValueInterface : QAccessible = ... # 0x2 + ActionInterface : QAccessible = ... # 0x3 + ForegroundChanged : QAccessible = ... # 0x3 + Help : QAccessible = ... # 0x3 + ParagraphBoundary : QAccessible = ... # 0x3 + ScrollBar : QAccessible = ... # 0x3 + Accelerator : QAccessible = ... # 0x4 + Controller : QAccessible = ... # 0x4 + Grip : QAccessible = ... # 0x4 + ImageInterface : QAccessible = ... # 0x4 + LineBoundary : QAccessible = ... # 0x4 + MenuStart : QAccessible = ... # 0x4 + DebugDescription : QAccessible = ... # 0x5 + MenuEnd : QAccessible = ... # 0x5 + NoBoundary : QAccessible = ... # 0x5 + Sound : QAccessible = ... # 0x5 + TableInterface : QAccessible = ... # 0x5 + Cursor : QAccessible = ... # 0x6 + PopupMenuStart : QAccessible = ... # 0x6 + TableCellInterface : QAccessible = ... # 0x6 + Caret : QAccessible = ... # 0x7 + PopupMenuEnd : QAccessible = ... # 0x7 + AlertMessage : QAccessible = ... # 0x8 + Controlled : QAccessible = ... # 0x8 + Window : QAccessible = ... # 0x9 + Client : QAccessible = ... # 0xa + PopupMenu : QAccessible = ... # 0xb + ContextHelpStart : QAccessible = ... # 0xc + MenuItem : QAccessible = ... # 0xc + ContextHelpEnd : QAccessible = ... # 0xd + ToolTip : QAccessible = ... # 0xd + Application : QAccessible = ... # 0xe + DragDropStart : QAccessible = ... # 0xe + Document : QAccessible = ... # 0xf + DragDropEnd : QAccessible = ... # 0xf + DialogStart : QAccessible = ... # 0x10 + Pane : QAccessible = ... # 0x10 + Chart : QAccessible = ... # 0x11 + DialogEnd : QAccessible = ... # 0x11 + Dialog : QAccessible = ... # 0x12 + ScrollingStart : QAccessible = ... # 0x12 + Border : QAccessible = ... # 0x13 + ScrollingEnd : QAccessible = ... # 0x13 + Grouping : QAccessible = ... # 0x14 + Separator : QAccessible = ... # 0x15 + ToolBar : QAccessible = ... # 0x16 + StatusBar : QAccessible = ... # 0x17 + MenuCommand : QAccessible = ... # 0x18 + Table : QAccessible = ... # 0x18 + ColumnHeader : QAccessible = ... # 0x19 + RowHeader : QAccessible = ... # 0x1a + Column : QAccessible = ... # 0x1b + Row : QAccessible = ... # 0x1c + Cell : QAccessible = ... # 0x1d + Link : QAccessible = ... # 0x1e + HelpBalloon : QAccessible = ... # 0x1f + Assistant : QAccessible = ... # 0x20 + List : QAccessible = ... # 0x21 + ListItem : QAccessible = ... # 0x22 + Tree : QAccessible = ... # 0x23 + TreeItem : QAccessible = ... # 0x24 + PageTab : QAccessible = ... # 0x25 + PropertyPage : QAccessible = ... # 0x26 + Indicator : QAccessible = ... # 0x27 + Graphic : QAccessible = ... # 0x28 + StaticText : QAccessible = ... # 0x29 + EditableText : QAccessible = ... # 0x2a + Button : QAccessible = ... # 0x2b + PushButton : QAccessible = ... # 0x2b + CheckBox : QAccessible = ... # 0x2c + RadioButton : QAccessible = ... # 0x2d + ComboBox : QAccessible = ... # 0x2e + ProgressBar : QAccessible = ... # 0x30 + Dial : QAccessible = ... # 0x31 + HotkeyField : QAccessible = ... # 0x32 + Slider : QAccessible = ... # 0x33 + SpinBox : QAccessible = ... # 0x34 + Canvas : QAccessible = ... # 0x35 + Animation : QAccessible = ... # 0x36 + Equation : QAccessible = ... # 0x37 + ButtonDropDown : QAccessible = ... # 0x38 + ButtonMenu : QAccessible = ... # 0x39 + ButtonDropGrid : QAccessible = ... # 0x3a + Whitespace : QAccessible = ... # 0x3b + PageTabList : QAccessible = ... # 0x3c + Clock : QAccessible = ... # 0x3d + Splitter : QAccessible = ... # 0x3e + LayeredPane : QAccessible = ... # 0x80 + Terminal : QAccessible = ... # 0x81 + Desktop : QAccessible = ... # 0x82 + Paragraph : QAccessible = ... # 0x83 + WebDocument : QAccessible = ... # 0x84 + Section : QAccessible = ... # 0x85 + Notification : QAccessible = ... # 0x86 + ActionChanged : QAccessible = ... # 0x101 + ActiveDescendantChanged : QAccessible = ... # 0x102 + AttributeChanged : QAccessible = ... # 0x103 + DocumentContentChanged : QAccessible = ... # 0x104 + DocumentLoadComplete : QAccessible = ... # 0x105 + DocumentLoadStopped : QAccessible = ... # 0x106 + DocumentReload : QAccessible = ... # 0x107 + HyperlinkEndIndexChanged : QAccessible = ... # 0x108 + HyperlinkNumberOfAnchorsChanged: QAccessible = ... # 0x109 + HyperlinkSelectedLinkChanged: QAccessible = ... # 0x10a + HypertextLinkActivated : QAccessible = ... # 0x10b + HypertextLinkSelected : QAccessible = ... # 0x10c + HyperlinkStartIndexChanged: QAccessible = ... # 0x10d + HypertextChanged : QAccessible = ... # 0x10e + HypertextNLinksChanged : QAccessible = ... # 0x10f + ObjectAttributeChanged : QAccessible = ... # 0x110 + PageChanged : QAccessible = ... # 0x111 + SectionChanged : QAccessible = ... # 0x112 + TableCaptionChanged : QAccessible = ... # 0x113 + TableColumnDescriptionChanged: QAccessible = ... # 0x114 + TableColumnHeaderChanged : QAccessible = ... # 0x115 + TableModelChanged : QAccessible = ... # 0x116 + TableRowDescriptionChanged: QAccessible = ... # 0x117 + TableRowHeaderChanged : QAccessible = ... # 0x118 + TableSummaryChanged : QAccessible = ... # 0x119 + TextAttributeChanged : QAccessible = ... # 0x11a + TextCaretMoved : QAccessible = ... # 0x11b + TextColumnChanged : QAccessible = ... # 0x11d + TextInserted : QAccessible = ... # 0x11e + TextRemoved : QAccessible = ... # 0x11f + TextUpdated : QAccessible = ... # 0x120 + TextSelectionChanged : QAccessible = ... # 0x121 + VisibleDataChanged : QAccessible = ... # 0x122 + ColorChooser : QAccessible = ... # 0x404 + Footer : QAccessible = ... # 0x40e + Form : QAccessible = ... # 0x410 + Heading : QAccessible = ... # 0x414 + Note : QAccessible = ... # 0x41b + ComplementaryContent : QAccessible = ... # 0x42c + ObjectCreated : QAccessible = ... # 0x8000 + ObjectDestroyed : QAccessible = ... # 0x8001 + ObjectShow : QAccessible = ... # 0x8002 + ObjectHide : QAccessible = ... # 0x8003 + ObjectReorder : QAccessible = ... # 0x8004 + Focus : QAccessible = ... # 0x8005 + Selection : QAccessible = ... # 0x8006 + SelectionAdd : QAccessible = ... # 0x8007 + SelectionRemove : QAccessible = ... # 0x8008 + SelectionWithin : QAccessible = ... # 0x8009 + StateChanged : QAccessible = ... # 0x800a + LocationChanged : QAccessible = ... # 0x800b + NameChanged : QAccessible = ... # 0x800c + DescriptionChanged : QAccessible = ... # 0x800d + ValueChanged : QAccessible = ... # 0x800e + ParentChanged : QAccessible = ... # 0x800f + HelpChanged : QAccessible = ... # 0x80a0 + DefaultActionChanged : QAccessible = ... # 0x80b0 + AcceleratorChanged : QAccessible = ... # 0x80c0 + InvalidEvent : QAccessible = ... # 0x80c1 + UserRole : QAccessible = ... # 0xffff + UserText : QAccessible = ... # 0xffff + + class Event(object): + SoundPlayed : QAccessible.Event = ... # 0x1 + Alert : QAccessible.Event = ... # 0x2 + ForegroundChanged : QAccessible.Event = ... # 0x3 + MenuStart : QAccessible.Event = ... # 0x4 + MenuEnd : QAccessible.Event = ... # 0x5 + PopupMenuStart : QAccessible.Event = ... # 0x6 + PopupMenuEnd : QAccessible.Event = ... # 0x7 + ContextHelpStart : QAccessible.Event = ... # 0xc + ContextHelpEnd : QAccessible.Event = ... # 0xd + DragDropStart : QAccessible.Event = ... # 0xe + DragDropEnd : QAccessible.Event = ... # 0xf + DialogStart : QAccessible.Event = ... # 0x10 + DialogEnd : QAccessible.Event = ... # 0x11 + ScrollingStart : QAccessible.Event = ... # 0x12 + ScrollingEnd : QAccessible.Event = ... # 0x13 + MenuCommand : QAccessible.Event = ... # 0x18 + ActionChanged : QAccessible.Event = ... # 0x101 + ActiveDescendantChanged : QAccessible.Event = ... # 0x102 + AttributeChanged : QAccessible.Event = ... # 0x103 + DocumentContentChanged : QAccessible.Event = ... # 0x104 + DocumentLoadComplete : QAccessible.Event = ... # 0x105 + DocumentLoadStopped : QAccessible.Event = ... # 0x106 + DocumentReload : QAccessible.Event = ... # 0x107 + HyperlinkEndIndexChanged : QAccessible.Event = ... # 0x108 + HyperlinkNumberOfAnchorsChanged: QAccessible.Event = ... # 0x109 + HyperlinkSelectedLinkChanged: QAccessible.Event = ... # 0x10a + HypertextLinkActivated : QAccessible.Event = ... # 0x10b + HypertextLinkSelected : QAccessible.Event = ... # 0x10c + HyperlinkStartIndexChanged: QAccessible.Event = ... # 0x10d + HypertextChanged : QAccessible.Event = ... # 0x10e + HypertextNLinksChanged : QAccessible.Event = ... # 0x10f + ObjectAttributeChanged : QAccessible.Event = ... # 0x110 + PageChanged : QAccessible.Event = ... # 0x111 + SectionChanged : QAccessible.Event = ... # 0x112 + TableCaptionChanged : QAccessible.Event = ... # 0x113 + TableColumnDescriptionChanged: QAccessible.Event = ... # 0x114 + TableColumnHeaderChanged : QAccessible.Event = ... # 0x115 + TableModelChanged : QAccessible.Event = ... # 0x116 + TableRowDescriptionChanged: QAccessible.Event = ... # 0x117 + TableRowHeaderChanged : QAccessible.Event = ... # 0x118 + TableSummaryChanged : QAccessible.Event = ... # 0x119 + TextAttributeChanged : QAccessible.Event = ... # 0x11a + TextCaretMoved : QAccessible.Event = ... # 0x11b + TextColumnChanged : QAccessible.Event = ... # 0x11d + TextInserted : QAccessible.Event = ... # 0x11e + TextRemoved : QAccessible.Event = ... # 0x11f + TextUpdated : QAccessible.Event = ... # 0x120 + TextSelectionChanged : QAccessible.Event = ... # 0x121 + VisibleDataChanged : QAccessible.Event = ... # 0x122 + ObjectCreated : QAccessible.Event = ... # 0x8000 + ObjectDestroyed : QAccessible.Event = ... # 0x8001 + ObjectShow : QAccessible.Event = ... # 0x8002 + ObjectHide : QAccessible.Event = ... # 0x8003 + ObjectReorder : QAccessible.Event = ... # 0x8004 + Focus : QAccessible.Event = ... # 0x8005 + Selection : QAccessible.Event = ... # 0x8006 + SelectionAdd : QAccessible.Event = ... # 0x8007 + SelectionRemove : QAccessible.Event = ... # 0x8008 + SelectionWithin : QAccessible.Event = ... # 0x8009 + StateChanged : QAccessible.Event = ... # 0x800a + LocationChanged : QAccessible.Event = ... # 0x800b + NameChanged : QAccessible.Event = ... # 0x800c + DescriptionChanged : QAccessible.Event = ... # 0x800d + ValueChanged : QAccessible.Event = ... # 0x800e + ParentChanged : QAccessible.Event = ... # 0x800f + HelpChanged : QAccessible.Event = ... # 0x80a0 + DefaultActionChanged : QAccessible.Event = ... # 0x80b0 + AcceleratorChanged : QAccessible.Event = ... # 0x80c0 + InvalidEvent : QAccessible.Event = ... # 0x80c1 + + class InterfaceType(object): + TextInterface : QAccessible.InterfaceType = ... # 0x0 + EditableTextInterface : QAccessible.InterfaceType = ... # 0x1 + ValueInterface : QAccessible.InterfaceType = ... # 0x2 + ActionInterface : QAccessible.InterfaceType = ... # 0x3 + ImageInterface : QAccessible.InterfaceType = ... # 0x4 + TableInterface : QAccessible.InterfaceType = ... # 0x5 + TableCellInterface : QAccessible.InterfaceType = ... # 0x6 + + class Relation(object): ... + + class RelationFlag(object): + AllRelations : QAccessible.RelationFlag = ... # -0x1 + Label : QAccessible.RelationFlag = ... # 0x1 + Labelled : QAccessible.RelationFlag = ... # 0x2 + Controller : QAccessible.RelationFlag = ... # 0x4 + Controlled : QAccessible.RelationFlag = ... # 0x8 + + class Role(object): + NoRole : QAccessible.Role = ... # 0x0 + TitleBar : QAccessible.Role = ... # 0x1 + MenuBar : QAccessible.Role = ... # 0x2 + ScrollBar : QAccessible.Role = ... # 0x3 + Grip : QAccessible.Role = ... # 0x4 + Sound : QAccessible.Role = ... # 0x5 + Cursor : QAccessible.Role = ... # 0x6 + Caret : QAccessible.Role = ... # 0x7 + AlertMessage : QAccessible.Role = ... # 0x8 + Window : QAccessible.Role = ... # 0x9 + Client : QAccessible.Role = ... # 0xa + PopupMenu : QAccessible.Role = ... # 0xb + MenuItem : QAccessible.Role = ... # 0xc + ToolTip : QAccessible.Role = ... # 0xd + Application : QAccessible.Role = ... # 0xe + Document : QAccessible.Role = ... # 0xf + Pane : QAccessible.Role = ... # 0x10 + Chart : QAccessible.Role = ... # 0x11 + Dialog : QAccessible.Role = ... # 0x12 + Border : QAccessible.Role = ... # 0x13 + Grouping : QAccessible.Role = ... # 0x14 + Separator : QAccessible.Role = ... # 0x15 + ToolBar : QAccessible.Role = ... # 0x16 + StatusBar : QAccessible.Role = ... # 0x17 + Table : QAccessible.Role = ... # 0x18 + ColumnHeader : QAccessible.Role = ... # 0x19 + RowHeader : QAccessible.Role = ... # 0x1a + Column : QAccessible.Role = ... # 0x1b + Row : QAccessible.Role = ... # 0x1c + Cell : QAccessible.Role = ... # 0x1d + Link : QAccessible.Role = ... # 0x1e + HelpBalloon : QAccessible.Role = ... # 0x1f + Assistant : QAccessible.Role = ... # 0x20 + List : QAccessible.Role = ... # 0x21 + ListItem : QAccessible.Role = ... # 0x22 + Tree : QAccessible.Role = ... # 0x23 + TreeItem : QAccessible.Role = ... # 0x24 + PageTab : QAccessible.Role = ... # 0x25 + PropertyPage : QAccessible.Role = ... # 0x26 + Indicator : QAccessible.Role = ... # 0x27 + Graphic : QAccessible.Role = ... # 0x28 + StaticText : QAccessible.Role = ... # 0x29 + EditableText : QAccessible.Role = ... # 0x2a + Button : QAccessible.Role = ... # 0x2b + PushButton : QAccessible.Role = ... # 0x2b + CheckBox : QAccessible.Role = ... # 0x2c + RadioButton : QAccessible.Role = ... # 0x2d + ComboBox : QAccessible.Role = ... # 0x2e + ProgressBar : QAccessible.Role = ... # 0x30 + Dial : QAccessible.Role = ... # 0x31 + HotkeyField : QAccessible.Role = ... # 0x32 + Slider : QAccessible.Role = ... # 0x33 + SpinBox : QAccessible.Role = ... # 0x34 + Canvas : QAccessible.Role = ... # 0x35 + Animation : QAccessible.Role = ... # 0x36 + Equation : QAccessible.Role = ... # 0x37 + ButtonDropDown : QAccessible.Role = ... # 0x38 + ButtonMenu : QAccessible.Role = ... # 0x39 + ButtonDropGrid : QAccessible.Role = ... # 0x3a + Whitespace : QAccessible.Role = ... # 0x3b + PageTabList : QAccessible.Role = ... # 0x3c + Clock : QAccessible.Role = ... # 0x3d + Splitter : QAccessible.Role = ... # 0x3e + LayeredPane : QAccessible.Role = ... # 0x80 + Terminal : QAccessible.Role = ... # 0x81 + Desktop : QAccessible.Role = ... # 0x82 + Paragraph : QAccessible.Role = ... # 0x83 + WebDocument : QAccessible.Role = ... # 0x84 + Section : QAccessible.Role = ... # 0x85 + Notification : QAccessible.Role = ... # 0x86 + ColorChooser : QAccessible.Role = ... # 0x404 + Footer : QAccessible.Role = ... # 0x40e + Form : QAccessible.Role = ... # 0x410 + Heading : QAccessible.Role = ... # 0x414 + Note : QAccessible.Role = ... # 0x41b + ComplementaryContent : QAccessible.Role = ... # 0x42c + UserRole : QAccessible.Role = ... # 0xffff + + class State(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, State:PySide2.QtGui.QAccessible.State) -> None: ... + + @staticmethod + def __copy__() -> None: ... + + class Text(object): + Name : QAccessible.Text = ... # 0x0 + Description : QAccessible.Text = ... # 0x1 + Value : QAccessible.Text = ... # 0x2 + Help : QAccessible.Text = ... # 0x3 + Accelerator : QAccessible.Text = ... # 0x4 + DebugDescription : QAccessible.Text = ... # 0x5 + UserText : QAccessible.Text = ... # 0xffff + + class TextBoundaryType(object): + CharBoundary : QAccessible.TextBoundaryType = ... # 0x0 + WordBoundary : QAccessible.TextBoundaryType = ... # 0x1 + SentenceBoundary : QAccessible.TextBoundaryType = ... # 0x2 + ParagraphBoundary : QAccessible.TextBoundaryType = ... # 0x3 + LineBoundary : QAccessible.TextBoundaryType = ... # 0x4 + NoBoundary : QAccessible.TextBoundaryType = ... # 0x5 + @staticmethod + def __copy__() -> None: ... + @staticmethod + def accessibleInterface(uniqueId:int) -> PySide2.QtGui.QAccessibleInterface: ... + @staticmethod + def cleanup() -> None: ... + @staticmethod + def deleteAccessibleInterface(uniqueId:int) -> None: ... + @staticmethod + def isActive() -> bool: ... + @staticmethod + def qAccessibleTextBoundaryHelper(cursor:PySide2.QtGui.QTextCursor, boundaryType:PySide2.QtGui.QAccessible.TextBoundaryType) -> typing.Tuple: ... + @staticmethod + def queryAccessibleInterface(arg__1:PySide2.QtCore.QObject) -> PySide2.QtGui.QAccessibleInterface: ... + @staticmethod + def registerAccessibleInterface(iface:PySide2.QtGui.QAccessibleInterface) -> int: ... + @staticmethod + def setActive(active:bool) -> None: ... + @staticmethod + def setRootObject(object:PySide2.QtCore.QObject) -> None: ... + @staticmethod + def uniqueId(iface:PySide2.QtGui.QAccessibleInterface) -> int: ... + @staticmethod + def updateAccessibility(event:PySide2.QtGui.QAccessibleEvent) -> None: ... + + +class QAccessibleEditableTextInterface(Shiboken.Object): + + def __init__(self) -> None: ... + + def deleteText(self, startOffset:int, endOffset:int) -> None: ... + def insertText(self, offset:int, text:str) -> None: ... + def replaceText(self, startOffset:int, endOffset:int, text:str) -> None: ... + + +class QAccessibleEvent(Shiboken.Object): + + @typing.overload + def __init__(self, iface:PySide2.QtGui.QAccessibleInterface, typ:PySide2.QtGui.QAccessible.Event) -> None: ... + @typing.overload + def __init__(self, obj:PySide2.QtCore.QObject, typ:PySide2.QtGui.QAccessible.Event) -> None: ... + + def accessibleInterface(self) -> PySide2.QtGui.QAccessibleInterface: ... + def child(self) -> int: ... + def object(self) -> PySide2.QtCore.QObject: ... + def setChild(self, chld:int) -> None: ... + def type(self) -> PySide2.QtGui.QAccessible.Event: ... + def uniqueId(self) -> int: ... + + +class QAccessibleInterface(Shiboken.Object): + + def __init__(self) -> None: ... + + def backgroundColor(self) -> PySide2.QtGui.QColor: ... + def child(self, index:int) -> PySide2.QtGui.QAccessibleInterface: ... + def childAt(self, x:int, y:int) -> PySide2.QtGui.QAccessibleInterface: ... + def childCount(self) -> int: ... + def editableTextInterface(self) -> PySide2.QtGui.QAccessibleEditableTextInterface: ... + def focusChild(self) -> PySide2.QtGui.QAccessibleInterface: ... + def foregroundColor(self) -> PySide2.QtGui.QColor: ... + def indexOfChild(self, arg__1:PySide2.QtGui.QAccessibleInterface) -> int: ... + def interface_cast(self, arg__1:PySide2.QtGui.QAccessible.InterfaceType) -> int: ... + def isValid(self) -> bool: ... + def object(self) -> PySide2.QtCore.QObject: ... + def parent(self) -> PySide2.QtGui.QAccessibleInterface: ... + def rect(self) -> PySide2.QtCore.QRect: ... + def relations(self, match:PySide2.QtGui.QAccessible.Relation=...) -> typing.List: ... + def role(self) -> PySide2.QtGui.QAccessible.Role: ... + def setText(self, t:PySide2.QtGui.QAccessible.Text, text:str) -> None: ... + def state(self) -> PySide2.QtGui.QAccessible.State: ... + def tableCellInterface(self) -> PySide2.QtGui.QAccessibleTableCellInterface: ... + def text(self, t:PySide2.QtGui.QAccessible.Text) -> str: ... + def textInterface(self) -> PySide2.QtGui.QAccessibleTextInterface: ... + def valueInterface(self) -> PySide2.QtGui.QAccessibleValueInterface: ... + def virtual_hook(self, id:int, data:int) -> None: ... + def window(self) -> PySide2.QtGui.QWindow: ... + + +class QAccessibleObject(PySide2.QtGui.QAccessibleInterface): + + def __init__(self, object:PySide2.QtCore.QObject) -> None: ... + + def childAt(self, x:int, y:int) -> PySide2.QtGui.QAccessibleInterface: ... + def isValid(self) -> bool: ... + def object(self) -> PySide2.QtCore.QObject: ... + def rect(self) -> PySide2.QtCore.QRect: ... + def setText(self, t:PySide2.QtGui.QAccessible.Text, text:str) -> None: ... + + +class QAccessibleStateChangeEvent(PySide2.QtGui.QAccessibleEvent): + + @typing.overload + def __init__(self, iface:PySide2.QtGui.QAccessibleInterface, state:PySide2.QtGui.QAccessible.State) -> None: ... + @typing.overload + def __init__(self, obj:PySide2.QtCore.QObject, state:PySide2.QtGui.QAccessible.State) -> None: ... + + def changedStates(self) -> PySide2.QtGui.QAccessible.State: ... + + +class QAccessibleTableCellInterface(Shiboken.Object): + + def __init__(self) -> None: ... + + def columnExtent(self) -> int: ... + def columnHeaderCells(self) -> typing.List: ... + def columnIndex(self) -> int: ... + def isSelected(self) -> bool: ... + def rowExtent(self) -> int: ... + def rowHeaderCells(self) -> typing.List: ... + def rowIndex(self) -> int: ... + def table(self) -> PySide2.QtGui.QAccessibleInterface: ... + + +class QAccessibleTableModelChangeEvent(PySide2.QtGui.QAccessibleEvent): + ModelReset : QAccessibleTableModelChangeEvent = ... # 0x0 + DataChanged : QAccessibleTableModelChangeEvent = ... # 0x1 + RowsInserted : QAccessibleTableModelChangeEvent = ... # 0x2 + ColumnsInserted : QAccessibleTableModelChangeEvent = ... # 0x3 + RowsRemoved : QAccessibleTableModelChangeEvent = ... # 0x4 + ColumnsRemoved : QAccessibleTableModelChangeEvent = ... # 0x5 + + class ModelChangeType(object): + ModelReset : QAccessibleTableModelChangeEvent.ModelChangeType = ... # 0x0 + DataChanged : QAccessibleTableModelChangeEvent.ModelChangeType = ... # 0x1 + RowsInserted : QAccessibleTableModelChangeEvent.ModelChangeType = ... # 0x2 + ColumnsInserted : QAccessibleTableModelChangeEvent.ModelChangeType = ... # 0x3 + RowsRemoved : QAccessibleTableModelChangeEvent.ModelChangeType = ... # 0x4 + ColumnsRemoved : QAccessibleTableModelChangeEvent.ModelChangeType = ... # 0x5 + + @typing.overload + def __init__(self, iface:PySide2.QtGui.QAccessibleInterface, changeType:PySide2.QtGui.QAccessibleTableModelChangeEvent.ModelChangeType) -> None: ... + @typing.overload + def __init__(self, obj:PySide2.QtCore.QObject, changeType:PySide2.QtGui.QAccessibleTableModelChangeEvent.ModelChangeType) -> None: ... + + def firstColumn(self) -> int: ... + def firstRow(self) -> int: ... + def lastColumn(self) -> int: ... + def lastRow(self) -> int: ... + def modelChangeType(self) -> PySide2.QtGui.QAccessibleTableModelChangeEvent.ModelChangeType: ... + def setFirstColumn(self, col:int) -> None: ... + def setFirstRow(self, row:int) -> None: ... + def setLastColumn(self, col:int) -> None: ... + def setLastRow(self, row:int) -> None: ... + def setModelChangeType(self, changeType:PySide2.QtGui.QAccessibleTableModelChangeEvent.ModelChangeType) -> None: ... + + +class QAccessibleTextCursorEvent(PySide2.QtGui.QAccessibleEvent): + + @typing.overload + def __init__(self, iface:PySide2.QtGui.QAccessibleInterface, cursorPos:int) -> None: ... + @typing.overload + def __init__(self, obj:PySide2.QtCore.QObject, cursorPos:int) -> None: ... + + def cursorPosition(self) -> int: ... + def setCursorPosition(self, position:int) -> None: ... + + +class QAccessibleTextInsertEvent(PySide2.QtGui.QAccessibleTextCursorEvent): + + @typing.overload + def __init__(self, iface:PySide2.QtGui.QAccessibleInterface, position:int, text:str) -> None: ... + @typing.overload + def __init__(self, obj:PySide2.QtCore.QObject, position:int, text:str) -> None: ... + + def changePosition(self) -> int: ... + def textInserted(self) -> str: ... + + +class QAccessibleTextInterface(Shiboken.Object): + + def __init__(self) -> None: ... + + def addSelection(self, startOffset:int, endOffset:int) -> None: ... + def attributes(self, offset:int) -> typing.Tuple: ... + def characterCount(self) -> int: ... + def characterRect(self, offset:int) -> PySide2.QtCore.QRect: ... + def cursorPosition(self) -> int: ... + def offsetAtPoint(self, point:PySide2.QtCore.QPoint) -> int: ... + def removeSelection(self, selectionIndex:int) -> None: ... + def scrollToSubstring(self, startIndex:int, endIndex:int) -> None: ... + def selection(self, selectionIndex:int) -> typing.Tuple: ... + def selectionCount(self) -> int: ... + def setCursorPosition(self, position:int) -> None: ... + def setSelection(self, selectionIndex:int, startOffset:int, endOffset:int) -> None: ... + def text(self, startOffset:int, endOffset:int) -> str: ... + def textAfterOffset(self, offset:int, boundaryType:PySide2.QtGui.QAccessible.TextBoundaryType) -> typing.Tuple: ... + def textAtOffset(self, offset:int, boundaryType:PySide2.QtGui.QAccessible.TextBoundaryType) -> typing.Tuple: ... + def textBeforeOffset(self, offset:int, boundaryType:PySide2.QtGui.QAccessible.TextBoundaryType) -> typing.Tuple: ... + + +class QAccessibleTextRemoveEvent(PySide2.QtGui.QAccessibleTextCursorEvent): + + @typing.overload + def __init__(self, iface:PySide2.QtGui.QAccessibleInterface, position:int, text:str) -> None: ... + @typing.overload + def __init__(self, obj:PySide2.QtCore.QObject, position:int, text:str) -> None: ... + + def changePosition(self) -> int: ... + def textRemoved(self) -> str: ... + + +class QAccessibleTextSelectionEvent(PySide2.QtGui.QAccessibleTextCursorEvent): + + @typing.overload + def __init__(self, iface:PySide2.QtGui.QAccessibleInterface, start:int, end:int) -> None: ... + @typing.overload + def __init__(self, obj:PySide2.QtCore.QObject, start:int, end:int) -> None: ... + + def selectionEnd(self) -> int: ... + def selectionStart(self) -> int: ... + def setSelection(self, start:int, end:int) -> None: ... + + +class QAccessibleTextUpdateEvent(PySide2.QtGui.QAccessibleTextCursorEvent): + + @typing.overload + def __init__(self, iface:PySide2.QtGui.QAccessibleInterface, position:int, oldText:str, text:str) -> None: ... + @typing.overload + def __init__(self, obj:PySide2.QtCore.QObject, position:int, oldText:str, text:str) -> None: ... + + def changePosition(self) -> int: ... + def textInserted(self) -> str: ... + def textRemoved(self) -> str: ... + + +class QAccessibleValueChangeEvent(PySide2.QtGui.QAccessibleEvent): + + @typing.overload + def __init__(self, iface:PySide2.QtGui.QAccessibleInterface, val:typing.Any) -> None: ... + @typing.overload + def __init__(self, obj:PySide2.QtCore.QObject, val:typing.Any) -> None: ... + + def setValue(self, val:typing.Any) -> None: ... + def value(self) -> typing.Any: ... + + +class QAccessibleValueInterface(Shiboken.Object): + + def __init__(self) -> None: ... + + def currentValue(self) -> typing.Any: ... + def maximumValue(self) -> typing.Any: ... + def minimumStepSize(self) -> typing.Any: ... + def minimumValue(self) -> typing.Any: ... + def setCurrentValue(self, value:typing.Any) -> None: ... + + +class QActionEvent(PySide2.QtCore.QEvent): ... + + +class QBackingStore(Shiboken.Object): + + def __init__(self, window:PySide2.QtGui.QWindow) -> None: ... + + def beginPaint(self, arg__1:PySide2.QtGui.QRegion) -> None: ... + def endPaint(self) -> None: ... + def flush(self, region:PySide2.QtGui.QRegion, window:typing.Optional[PySide2.QtGui.QWindow]=..., offset:PySide2.QtCore.QPoint=...) -> None: ... + def hasStaticContents(self) -> bool: ... + def paintDevice(self) -> PySide2.QtGui.QPaintDevice: ... + def resize(self, size:PySide2.QtCore.QSize) -> None: ... + def scroll(self, area:PySide2.QtGui.QRegion, dx:int, dy:int) -> bool: ... + def setStaticContents(self, region:PySide2.QtGui.QRegion) -> None: ... + def size(self) -> PySide2.QtCore.QSize: ... + def staticContents(self) -> PySide2.QtGui.QRegion: ... + def window(self) -> PySide2.QtGui.QWindow: ... + + +class QBitmap(PySide2.QtGui.QPixmap): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtCore.QSize) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtGui.QPixmap) -> None: ... + @typing.overload + def __init__(self, fileName:str, format:typing.Optional[bytes]=...) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtGui.QBitmap) -> None: ... + @typing.overload + def __init__(self, w:int, h:int) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def clear(self) -> None: ... + @staticmethod + def fromData(size:PySide2.QtCore.QSize, bits:bytes, monoFormat:PySide2.QtGui.QImage.Format=...) -> PySide2.QtGui.QBitmap: ... + @typing.overload + @staticmethod + def fromImage(image:PySide2.QtGui.QImage, flags:PySide2.QtCore.Qt.ImageConversionFlags=...) -> PySide2.QtGui.QBitmap: ... + @typing.overload + @staticmethod + def fromImage(image:PySide2.QtGui.QImage, flags:PySide2.QtCore.Qt.ImageConversionFlags=...) -> PySide2.QtGui.QPixmap: ... + @typing.overload + def swap(self, other:PySide2.QtGui.QBitmap) -> None: ... + @typing.overload + def swap(self, other:PySide2.QtGui.QPixmap) -> None: ... + @typing.overload + def transformed(self, arg__1:PySide2.QtGui.QMatrix) -> PySide2.QtGui.QBitmap: ... + @typing.overload + def transformed(self, arg__1:PySide2.QtGui.QMatrix, mode:PySide2.QtCore.Qt.TransformationMode=...) -> PySide2.QtGui.QPixmap: ... + @typing.overload + def transformed(self, matrix:PySide2.QtGui.QTransform) -> PySide2.QtGui.QBitmap: ... + + +class QBrush(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, brush:PySide2.QtGui.QBrush) -> None: ... + @typing.overload + def __init__(self, bs:PySide2.QtCore.Qt.BrushStyle) -> None: ... + @typing.overload + def __init__(self, color:PySide2.QtCore.Qt.GlobalColor, bs:PySide2.QtCore.Qt.BrushStyle=...) -> None: ... + @typing.overload + def __init__(self, color:PySide2.QtCore.Qt.GlobalColor, pixmap:PySide2.QtGui.QPixmap) -> None: ... + @typing.overload + def __init__(self, color:PySide2.QtGui.QColor, bs:PySide2.QtCore.Qt.BrushStyle=...) -> None: ... + @typing.overload + def __init__(self, color:PySide2.QtGui.QColor, pixmap:PySide2.QtGui.QPixmap) -> None: ... + @typing.overload + def __init__(self, gradient:PySide2.QtGui.QGradient) -> None: ... + @typing.overload + def __init__(self, image:PySide2.QtGui.QImage) -> None: ... + @typing.overload + def __init__(self, pixmap:PySide2.QtGui.QPixmap) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __lshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __rshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def color(self) -> PySide2.QtGui.QColor: ... + def gradient(self) -> PySide2.QtGui.QGradient: ... + def isOpaque(self) -> bool: ... + def matrix(self) -> PySide2.QtGui.QMatrix: ... + @typing.overload + def setColor(self, color:PySide2.QtCore.Qt.GlobalColor) -> None: ... + @typing.overload + def setColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setMatrix(self, mat:PySide2.QtGui.QMatrix) -> None: ... + def setStyle(self, arg__1:PySide2.QtCore.Qt.BrushStyle) -> None: ... + def setTexture(self, pixmap:PySide2.QtGui.QPixmap) -> None: ... + def setTextureImage(self, image:PySide2.QtGui.QImage) -> None: ... + def setTransform(self, arg__1:PySide2.QtGui.QTransform) -> None: ... + def style(self) -> PySide2.QtCore.Qt.BrushStyle: ... + def swap(self, other:PySide2.QtGui.QBrush) -> None: ... + def texture(self) -> PySide2.QtGui.QPixmap: ... + def textureImage(self) -> PySide2.QtGui.QImage: ... + def transform(self) -> PySide2.QtGui.QTransform: ... + + +class QClipboard(PySide2.QtCore.QObject): + Clipboard : QClipboard = ... # 0x0 + Selection : QClipboard = ... # 0x1 + FindBuffer : QClipboard = ... # 0x2 + LastMode : QClipboard = ... # 0x2 + + class Mode(object): + Clipboard : QClipboard.Mode = ... # 0x0 + Selection : QClipboard.Mode = ... # 0x1 + FindBuffer : QClipboard.Mode = ... # 0x2 + LastMode : QClipboard.Mode = ... # 0x2 + def clear(self, mode:PySide2.QtGui.QClipboard.Mode=...) -> None: ... + def image(self, mode:PySide2.QtGui.QClipboard.Mode=...) -> PySide2.QtGui.QImage: ... + def mimeData(self, mode:PySide2.QtGui.QClipboard.Mode=...) -> PySide2.QtCore.QMimeData: ... + def ownsClipboard(self) -> bool: ... + def ownsFindBuffer(self) -> bool: ... + def ownsSelection(self) -> bool: ... + def pixmap(self, mode:PySide2.QtGui.QClipboard.Mode=...) -> PySide2.QtGui.QPixmap: ... + def setImage(self, arg__1:PySide2.QtGui.QImage, mode:PySide2.QtGui.QClipboard.Mode=...) -> None: ... + def setMimeData(self, data:PySide2.QtCore.QMimeData, mode:PySide2.QtGui.QClipboard.Mode=...) -> None: ... + def setPixmap(self, arg__1:PySide2.QtGui.QPixmap, mode:PySide2.QtGui.QClipboard.Mode=...) -> None: ... + def setText(self, arg__1:str, mode:PySide2.QtGui.QClipboard.Mode=...) -> None: ... + def supportsFindBuffer(self) -> bool: ... + def supportsSelection(self) -> bool: ... + @typing.overload + def text(self, mode:PySide2.QtGui.QClipboard.Mode=...) -> str: ... + @typing.overload + def text(self, subtype:str, mode:PySide2.QtGui.QClipboard.Mode=...) -> str: ... + + +class QCloseEvent(PySide2.QtCore.QEvent): + + def __init__(self) -> None: ... + + +class QColor(Shiboken.Object): + HexRgb : QColor = ... # 0x0 + Invalid : QColor = ... # 0x0 + HexArgb : QColor = ... # 0x1 + Rgb : QColor = ... # 0x1 + Hsv : QColor = ... # 0x2 + Cmyk : QColor = ... # 0x3 + Hsl : QColor = ... # 0x4 + ExtendedRgb : QColor = ... # 0x5 + + class NameFormat(object): + HexRgb : QColor.NameFormat = ... # 0x0 + HexArgb : QColor.NameFormat = ... # 0x1 + + class Spec(object): + Invalid : QColor.Spec = ... # 0x0 + Rgb : QColor.Spec = ... # 0x1 + Hsv : QColor.Spec = ... # 0x2 + Cmyk : QColor.Spec = ... # 0x3 + Hsl : QColor.Spec = ... # 0x4 + ExtendedRgb : QColor.Spec = ... # 0x5 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:typing.Any) -> None: ... + @typing.overload + def __init__(self, color:PySide2.QtCore.Qt.GlobalColor) -> None: ... + @typing.overload + def __init__(self, color:PySide2.QtGui.QColor) -> None: ... + @typing.overload + def __init__(self, name:str) -> None: ... + @typing.overload + def __init__(self, r:int, g:int, b:int, a:int=...) -> None: ... + @typing.overload + def __init__(self, rgb:int) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __lshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + def __rshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __setstate__(self, arg__1:object) -> object: ... + def __str__(self) -> object: ... + def alpha(self) -> int: ... + def alphaF(self) -> float: ... + def black(self) -> int: ... + def blackF(self) -> float: ... + def blue(self) -> int: ... + def blueF(self) -> float: ... + @staticmethod + def colorNames() -> typing.List: ... + def convertTo(self, colorSpec:PySide2.QtGui.QColor.Spec) -> PySide2.QtGui.QColor: ... + def cyan(self) -> int: ... + def cyanF(self) -> float: ... + def dark(self, f:int=...) -> PySide2.QtGui.QColor: ... + def darker(self, f:int=...) -> PySide2.QtGui.QColor: ... + @staticmethod + def fromCmyk(c:int, m:int, y:int, k:int, a:int=...) -> PySide2.QtGui.QColor: ... + @staticmethod + def fromCmykF(c:float, m:float, y:float, k:float, a:float=...) -> PySide2.QtGui.QColor: ... + @staticmethod + def fromHsl(h:int, s:int, l:int, a:int=...) -> PySide2.QtGui.QColor: ... + @staticmethod + def fromHslF(h:float, s:float, l:float, a:float=...) -> PySide2.QtGui.QColor: ... + @staticmethod + def fromHsv(h:int, s:int, v:int, a:int=...) -> PySide2.QtGui.QColor: ... + @staticmethod + def fromHsvF(h:float, s:float, v:float, a:float=...) -> PySide2.QtGui.QColor: ... + @typing.overload + @staticmethod + def fromRgb(r:int, g:int, b:int, a:int=...) -> PySide2.QtGui.QColor: ... + @typing.overload + @staticmethod + def fromRgb(rgb:int) -> PySide2.QtGui.QColor: ... + @staticmethod + def fromRgbF(r:float, g:float, b:float, a:float=...) -> PySide2.QtGui.QColor: ... + @staticmethod + def fromRgba(rgba:int) -> PySide2.QtGui.QColor: ... + @staticmethod + def fromRgba64(r:int, g:int, b:int, a:int=...) -> PySide2.QtGui.QColor: ... + @typing.overload + def getCmyk(self) -> typing.Tuple: ... + @typing.overload + def getCmyk(self) -> typing.Tuple: ... + @typing.overload + def getCmykF(self) -> typing.Tuple: ... + @typing.overload + def getCmykF(self) -> typing.Tuple: ... + def getHsl(self) -> typing.Tuple: ... + def getHslF(self) -> typing.Tuple: ... + def getHsv(self) -> typing.Tuple: ... + def getHsvF(self) -> typing.Tuple: ... + def getRgb(self) -> typing.Tuple: ... + def getRgbF(self) -> typing.Tuple: ... + def green(self) -> int: ... + def greenF(self) -> float: ... + def hslHue(self) -> int: ... + def hslHueF(self) -> float: ... + def hslSaturation(self) -> int: ... + def hslSaturationF(self) -> float: ... + def hsvHue(self) -> int: ... + def hsvHueF(self) -> float: ... + def hsvSaturation(self) -> int: ... + def hsvSaturationF(self) -> float: ... + def hue(self) -> int: ... + def hueF(self) -> float: ... + def isValid(self) -> bool: ... + @staticmethod + def isValidColor(name:str) -> bool: ... + def light(self, f:int=...) -> PySide2.QtGui.QColor: ... + def lighter(self, f:int=...) -> PySide2.QtGui.QColor: ... + def lightness(self) -> int: ... + def lightnessF(self) -> float: ... + def magenta(self) -> int: ... + def magentaF(self) -> float: ... + @typing.overload + def name(self) -> str: ... + @typing.overload + def name(self, format:PySide2.QtGui.QColor.NameFormat) -> str: ... + def red(self) -> int: ... + def redF(self) -> float: ... + def rgb(self) -> int: ... + def rgba(self) -> int: ... + def saturation(self) -> int: ... + def saturationF(self) -> float: ... + def setAlpha(self, alpha:int) -> None: ... + def setAlphaF(self, alpha:float) -> None: ... + def setBlue(self, blue:int) -> None: ... + def setBlueF(self, blue:float) -> None: ... + def setCmyk(self, c:int, m:int, y:int, k:int, a:int=...) -> None: ... + def setCmykF(self, c:float, m:float, y:float, k:float, a:float=...) -> None: ... + def setGreen(self, green:int) -> None: ... + def setGreenF(self, green:float) -> None: ... + def setHsl(self, h:int, s:int, l:int, a:int=...) -> None: ... + def setHslF(self, h:float, s:float, l:float, a:float=...) -> None: ... + def setHsv(self, h:int, s:int, v:int, a:int=...) -> None: ... + def setHsvF(self, h:float, s:float, v:float, a:float=...) -> None: ... + def setNamedColor(self, name:str) -> None: ... + def setRed(self, red:int) -> None: ... + def setRedF(self, red:float) -> None: ... + @typing.overload + def setRgb(self, r:int, g:int, b:int, a:int=...) -> None: ... + @typing.overload + def setRgb(self, rgb:int) -> None: ... + def setRgbF(self, r:float, g:float, b:float, a:float=...) -> None: ... + def setRgba(self, rgba:int) -> None: ... + def spec(self) -> PySide2.QtGui.QColor.Spec: ... + def toCmyk(self) -> PySide2.QtGui.QColor: ... + def toExtendedRgb(self) -> PySide2.QtGui.QColor: ... + def toHsl(self) -> PySide2.QtGui.QColor: ... + def toHsv(self) -> PySide2.QtGui.QColor: ... + def toRgb(self) -> PySide2.QtGui.QColor: ... + def toTuple(self) -> object: ... + def value(self) -> int: ... + def valueF(self) -> float: ... + def yellow(self) -> int: ... + def yellowF(self) -> float: ... + + +class QColorConstants(Shiboken.Object): + + class Svg(Shiboken.Object): ... + + +class QColorSpace(Shiboken.Object): + SRgb : QColorSpace = ... # 0x1 + SRgbLinear : QColorSpace = ... # 0x2 + AdobeRgb : QColorSpace = ... # 0x3 + DisplayP3 : QColorSpace = ... # 0x4 + ProPhotoRgb : QColorSpace = ... # 0x5 + + class NamedColorSpace(object): + SRgb : QColorSpace.NamedColorSpace = ... # 0x1 + SRgbLinear : QColorSpace.NamedColorSpace = ... # 0x2 + AdobeRgb : QColorSpace.NamedColorSpace = ... # 0x3 + DisplayP3 : QColorSpace.NamedColorSpace = ... # 0x4 + ProPhotoRgb : QColorSpace.NamedColorSpace = ... # 0x5 + + class Primaries(object): + Custom : QColorSpace.Primaries = ... # 0x0 + SRgb : QColorSpace.Primaries = ... # 0x1 + AdobeRgb : QColorSpace.Primaries = ... # 0x2 + DciP3D65 : QColorSpace.Primaries = ... # 0x3 + ProPhotoRgb : QColorSpace.Primaries = ... # 0x4 + + class TransferFunction(object): + Custom : QColorSpace.TransferFunction = ... # 0x0 + Linear : QColorSpace.TransferFunction = ... # 0x1 + Gamma : QColorSpace.TransferFunction = ... # 0x2 + SRgb : QColorSpace.TransferFunction = ... # 0x3 + ProPhotoRgb : QColorSpace.TransferFunction = ... # 0x4 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, colorSpace:PySide2.QtGui.QColorSpace) -> None: ... + @typing.overload + def __init__(self, namedColorSpace:PySide2.QtGui.QColorSpace.NamedColorSpace) -> None: ... + @typing.overload + def __init__(self, primaries:PySide2.QtGui.QColorSpace.Primaries, fun:PySide2.QtGui.QColorSpace.TransferFunction, gamma:float=...) -> None: ... + @typing.overload + def __init__(self, primaries:PySide2.QtGui.QColorSpace.Primaries, gamma:float) -> None: ... + @typing.overload + def __init__(self, whitePoint:PySide2.QtCore.QPointF, redPoint:PySide2.QtCore.QPointF, greenPoint:PySide2.QtCore.QPointF, bluePoint:PySide2.QtCore.QPointF, fun:PySide2.QtGui.QColorSpace.TransferFunction, gamma:float=...) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __lshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __rshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + @staticmethod + def fromIccProfile(iccProfile:PySide2.QtCore.QByteArray) -> PySide2.QtGui.QColorSpace: ... + def gamma(self) -> float: ... + def iccProfile(self) -> PySide2.QtCore.QByteArray: ... + def isValid(self) -> bool: ... + def primaries(self) -> PySide2.QtGui.QColorSpace.Primaries: ... + @typing.overload + def setPrimaries(self, primariesId:PySide2.QtGui.QColorSpace.Primaries) -> None: ... + @typing.overload + def setPrimaries(self, whitePoint:PySide2.QtCore.QPointF, redPoint:PySide2.QtCore.QPointF, greenPoint:PySide2.QtCore.QPointF, bluePoint:PySide2.QtCore.QPointF) -> None: ... + def setTransferFunction(self, transferFunction:PySide2.QtGui.QColorSpace.TransferFunction, gamma:float=...) -> None: ... + def swap(self, colorSpace:PySide2.QtGui.QColorSpace) -> None: ... + def transferFunction(self) -> PySide2.QtGui.QColorSpace.TransferFunction: ... + def withTransferFunction(self, transferFunction:PySide2.QtGui.QColorSpace.TransferFunction, gamma:float=...) -> PySide2.QtGui.QColorSpace: ... + + +class QConicalGradient(PySide2.QtGui.QGradient): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QConicalGradient:PySide2.QtGui.QConicalGradient) -> None: ... + @typing.overload + def __init__(self, center:PySide2.QtCore.QPointF, startAngle:float) -> None: ... + @typing.overload + def __init__(self, cx:float, cy:float, startAngle:float) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def angle(self) -> float: ... + def center(self) -> PySide2.QtCore.QPointF: ... + def setAngle(self, angle:float) -> None: ... + @typing.overload + def setCenter(self, center:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def setCenter(self, x:float, y:float) -> None: ... + + +class QContextMenuEvent(PySide2.QtGui.QInputEvent): + Mouse : QContextMenuEvent = ... # 0x0 + Keyboard : QContextMenuEvent = ... # 0x1 + Other : QContextMenuEvent = ... # 0x2 + + class Reason(object): + Mouse : QContextMenuEvent.Reason = ... # 0x0 + Keyboard : QContextMenuEvent.Reason = ... # 0x1 + Other : QContextMenuEvent.Reason = ... # 0x2 + + @typing.overload + def __init__(self, reason:PySide2.QtGui.QContextMenuEvent.Reason, pos:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + def __init__(self, reason:PySide2.QtGui.QContextMenuEvent.Reason, pos:PySide2.QtCore.QPoint, globalPos:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + def __init__(self, reason:PySide2.QtGui.QContextMenuEvent.Reason, pos:PySide2.QtCore.QPoint, globalPos:PySide2.QtCore.QPoint, modifiers:PySide2.QtCore.Qt.KeyboardModifiers) -> None: ... + + def globalPos(self) -> PySide2.QtCore.QPoint: ... + def globalX(self) -> int: ... + def globalY(self) -> int: ... + def pos(self) -> PySide2.QtCore.QPoint: ... + def reason(self) -> PySide2.QtGui.QContextMenuEvent.Reason: ... + def x(self) -> int: ... + def y(self) -> int: ... + + +class QCursor(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, bitmap:PySide2.QtGui.QBitmap, mask:PySide2.QtGui.QBitmap, hotX:int=..., hotY:int=...) -> None: ... + @typing.overload + def __init__(self, cursor:PySide2.QtGui.QCursor) -> None: ... + @typing.overload + def __init__(self, pixmap:PySide2.QtGui.QPixmap, hotX:int=..., hotY:int=...) -> None: ... + @typing.overload + def __init__(self, shape:PySide2.QtCore.Qt.CursorShape) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __lshift__(self, outS:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __rshift__(self, inS:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def bitmap(self) -> PySide2.QtGui.QBitmap: ... + def hotSpot(self) -> PySide2.QtCore.QPoint: ... + def mask(self) -> PySide2.QtGui.QBitmap: ... + def pixmap(self) -> PySide2.QtGui.QPixmap: ... + @typing.overload + @staticmethod + def pos() -> PySide2.QtCore.QPoint: ... + @typing.overload + @staticmethod + def pos(screen:PySide2.QtGui.QScreen) -> PySide2.QtCore.QPoint: ... + @typing.overload + @staticmethod + def setPos(p:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + @staticmethod + def setPos(screen:PySide2.QtGui.QScreen, p:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + @staticmethod + def setPos(screen:PySide2.QtGui.QScreen, x:int, y:int) -> None: ... + @typing.overload + @staticmethod + def setPos(x:int, y:int) -> None: ... + def setShape(self, newShape:PySide2.QtCore.Qt.CursorShape) -> None: ... + def shape(self) -> PySide2.QtCore.Qt.CursorShape: ... + def swap(self, other:PySide2.QtGui.QCursor) -> None: ... + + +class QDesktopServices(Shiboken.Object): + + def __init__(self) -> None: ... + + @staticmethod + def openUrl(url:PySide2.QtCore.QUrl) -> bool: ... + @staticmethod + def setUrlHandler(scheme:str, receiver:PySide2.QtCore.QObject, method:bytes) -> None: ... + @staticmethod + def unsetUrlHandler(scheme:str) -> None: ... + + +class QDoubleValidator(PySide2.QtGui.QValidator): + StandardNotation : QDoubleValidator = ... # 0x0 + ScientificNotation : QDoubleValidator = ... # 0x1 + + class Notation(object): + StandardNotation : QDoubleValidator.Notation = ... # 0x0 + ScientificNotation : QDoubleValidator.Notation = ... # 0x1 + + @typing.overload + def __init__(self, bottom:float, top:float, decimals:int, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def bottom(self) -> float: ... + def decimals(self) -> int: ... + def notation(self) -> PySide2.QtGui.QDoubleValidator.Notation: ... + def setBottom(self, arg__1:float) -> None: ... + def setDecimals(self, arg__1:int) -> None: ... + def setNotation(self, arg__1:PySide2.QtGui.QDoubleValidator.Notation) -> None: ... + def setRange(self, bottom:float, top:float, decimals:int=...) -> None: ... + def setTop(self, arg__1:float) -> None: ... + def top(self) -> float: ... + def validate(self, arg__1:str, arg__2:int) -> PySide2.QtGui.QValidator.State: ... + + +class QDrag(PySide2.QtCore.QObject): + + def __init__(self, dragSource:PySide2.QtCore.QObject) -> None: ... + + @staticmethod + def cancel() -> None: ... + def defaultAction(self) -> PySide2.QtCore.Qt.DropAction: ... + def dragCursor(self, action:PySide2.QtCore.Qt.DropAction) -> PySide2.QtGui.QPixmap: ... + @typing.overload + def exec_(self, supportedActions:PySide2.QtCore.Qt.DropActions, defaultAction:PySide2.QtCore.Qt.DropAction) -> PySide2.QtCore.Qt.DropAction: ... + @typing.overload + def exec_(self, supportedActions:PySide2.QtCore.Qt.DropActions=...) -> PySide2.QtCore.Qt.DropAction: ... + def hotSpot(self) -> PySide2.QtCore.QPoint: ... + def mimeData(self) -> PySide2.QtCore.QMimeData: ... + def pixmap(self) -> PySide2.QtGui.QPixmap: ... + def setDragCursor(self, cursor:PySide2.QtGui.QPixmap, action:PySide2.QtCore.Qt.DropAction) -> None: ... + def setHotSpot(self, hotspot:PySide2.QtCore.QPoint) -> None: ... + def setMimeData(self, data:PySide2.QtCore.QMimeData) -> None: ... + def setPixmap(self, arg__1:PySide2.QtGui.QPixmap) -> None: ... + def source(self) -> PySide2.QtCore.QObject: ... + def start(self, supportedActions:PySide2.QtCore.Qt.DropActions=...) -> PySide2.QtCore.Qt.DropAction: ... + def supportedActions(self) -> PySide2.QtCore.Qt.DropActions: ... + def target(self) -> PySide2.QtCore.QObject: ... + + +class QDragEnterEvent(PySide2.QtGui.QDragMoveEvent): + + def __init__(self, pos:PySide2.QtCore.QPoint, actions:PySide2.QtCore.Qt.DropActions, data:PySide2.QtCore.QMimeData, buttons:PySide2.QtCore.Qt.MouseButtons, modifiers:PySide2.QtCore.Qt.KeyboardModifiers) -> None: ... + + +class QDragLeaveEvent(PySide2.QtCore.QEvent): + + def __init__(self) -> None: ... + + +class QDragMoveEvent(PySide2.QtGui.QDropEvent): + + def __init__(self, pos:PySide2.QtCore.QPoint, actions:PySide2.QtCore.Qt.DropActions, data:PySide2.QtCore.QMimeData, buttons:PySide2.QtCore.Qt.MouseButtons, modifiers:PySide2.QtCore.Qt.KeyboardModifiers, type:PySide2.QtCore.QEvent.Type=...) -> None: ... + + @typing.overload + def accept(self) -> None: ... + @typing.overload + def accept(self, r:PySide2.QtCore.QRect) -> None: ... + def answerRect(self) -> PySide2.QtCore.QRect: ... + @typing.overload + def ignore(self) -> None: ... + @typing.overload + def ignore(self, r:PySide2.QtCore.QRect) -> None: ... + + +class QDropEvent(PySide2.QtCore.QEvent): + + def __init__(self, pos:PySide2.QtCore.QPointF, actions:PySide2.QtCore.Qt.DropActions, data:PySide2.QtCore.QMimeData, buttons:PySide2.QtCore.Qt.MouseButtons, modifiers:PySide2.QtCore.Qt.KeyboardModifiers, type:PySide2.QtCore.QEvent.Type=...) -> None: ... + + def acceptProposedAction(self) -> None: ... + def dropAction(self) -> PySide2.QtCore.Qt.DropAction: ... + def keyboardModifiers(self) -> PySide2.QtCore.Qt.KeyboardModifiers: ... + def mimeData(self) -> PySide2.QtCore.QMimeData: ... + def mouseButtons(self) -> PySide2.QtCore.Qt.MouseButtons: ... + def pos(self) -> PySide2.QtCore.QPoint: ... + def posF(self) -> PySide2.QtCore.QPointF: ... + def possibleActions(self) -> PySide2.QtCore.Qt.DropActions: ... + def proposedAction(self) -> PySide2.QtCore.Qt.DropAction: ... + def setDropAction(self, action:PySide2.QtCore.Qt.DropAction) -> None: ... + def source(self) -> PySide2.QtCore.QObject: ... + + +class QEnterEvent(PySide2.QtCore.QEvent): + + def __init__(self, localPos:PySide2.QtCore.QPointF, windowPos:PySide2.QtCore.QPointF, screenPos:PySide2.QtCore.QPointF) -> None: ... + + def globalPos(self) -> PySide2.QtCore.QPoint: ... + def globalX(self) -> int: ... + def globalY(self) -> int: ... + def localPos(self) -> PySide2.QtCore.QPointF: ... + def pos(self) -> PySide2.QtCore.QPoint: ... + def screenPos(self) -> PySide2.QtCore.QPointF: ... + def windowPos(self) -> PySide2.QtCore.QPointF: ... + def x(self) -> int: ... + def y(self) -> int: ... + + +class QExposeEvent(PySide2.QtCore.QEvent): + + def __init__(self, rgn:PySide2.QtGui.QRegion) -> None: ... + + def region(self) -> PySide2.QtGui.QRegion: ... + + +class QFileOpenEvent(PySide2.QtCore.QEvent): + + @typing.overload + def __init__(self, file:str) -> None: ... + @typing.overload + def __init__(self, url:PySide2.QtCore.QUrl) -> None: ... + + def file(self) -> str: ... + def openFile(self, file:PySide2.QtCore.QFile, flags:PySide2.QtCore.QIODevice.OpenMode) -> bool: ... + def url(self) -> PySide2.QtCore.QUrl: ... + + +class QFocusEvent(PySide2.QtCore.QEvent): + + def __init__(self, type:PySide2.QtCore.QEvent.Type, reason:PySide2.QtCore.Qt.FocusReason=...) -> None: ... + + def gotFocus(self) -> bool: ... + def lostFocus(self) -> bool: ... + def reason(self) -> PySide2.QtCore.Qt.FocusReason: ... + + +class QFont(Shiboken.Object): + AnyStretch : QFont = ... # 0x0 + Helvetica : QFont = ... # 0x0 + MixedCase : QFont = ... # 0x0 + PercentageSpacing : QFont = ... # 0x0 + PreferDefaultHinting : QFont = ... # 0x0 + SansSerif : QFont = ... # 0x0 + StyleNormal : QFont = ... # 0x0 + Thin : QFont = ... # 0x0 + AbsoluteSpacing : QFont = ... # 0x1 + AllUppercase : QFont = ... # 0x1 + PreferDefault : QFont = ... # 0x1 + PreferNoHinting : QFont = ... # 0x1 + Serif : QFont = ... # 0x1 + StyleItalic : QFont = ... # 0x1 + Times : QFont = ... # 0x1 + AllLowercase : QFont = ... # 0x2 + Courier : QFont = ... # 0x2 + PreferBitmap : QFont = ... # 0x2 + PreferVerticalHinting : QFont = ... # 0x2 + StyleOblique : QFont = ... # 0x2 + TypeWriter : QFont = ... # 0x2 + Decorative : QFont = ... # 0x3 + OldEnglish : QFont = ... # 0x3 + PreferFullHinting : QFont = ... # 0x3 + SmallCaps : QFont = ... # 0x3 + Capitalize : QFont = ... # 0x4 + PreferDevice : QFont = ... # 0x4 + System : QFont = ... # 0x4 + AnyStyle : QFont = ... # 0x5 + Cursive : QFont = ... # 0x6 + Monospace : QFont = ... # 0x7 + Fantasy : QFont = ... # 0x8 + PreferOutline : QFont = ... # 0x8 + ExtraLight : QFont = ... # 0xc + ForceOutline : QFont = ... # 0x10 + Light : QFont = ... # 0x19 + PreferMatch : QFont = ... # 0x20 + Normal : QFont = ... # 0x32 + UltraCondensed : QFont = ... # 0x32 + Medium : QFont = ... # 0x39 + ExtraCondensed : QFont = ... # 0x3e + DemiBold : QFont = ... # 0x3f + PreferQuality : QFont = ... # 0x40 + Bold : QFont = ... # 0x4b + Condensed : QFont = ... # 0x4b + ExtraBold : QFont = ... # 0x51 + Black : QFont = ... # 0x57 + SemiCondensed : QFont = ... # 0x57 + Unstretched : QFont = ... # 0x64 + SemiExpanded : QFont = ... # 0x70 + Expanded : QFont = ... # 0x7d + PreferAntialias : QFont = ... # 0x80 + ExtraExpanded : QFont = ... # 0x96 + UltraExpanded : QFont = ... # 0xc8 + NoAntialias : QFont = ... # 0x100 + OpenGLCompatible : QFont = ... # 0x200 + ForceIntegerMetrics : QFont = ... # 0x400 + NoSubpixelAntialias : QFont = ... # 0x800 + PreferNoShaping : QFont = ... # 0x1000 + NoFontMerging : QFont = ... # 0x8000 + + class Capitalization(object): + MixedCase : QFont.Capitalization = ... # 0x0 + AllUppercase : QFont.Capitalization = ... # 0x1 + AllLowercase : QFont.Capitalization = ... # 0x2 + SmallCaps : QFont.Capitalization = ... # 0x3 + Capitalize : QFont.Capitalization = ... # 0x4 + + class HintingPreference(object): + PreferDefaultHinting : QFont.HintingPreference = ... # 0x0 + PreferNoHinting : QFont.HintingPreference = ... # 0x1 + PreferVerticalHinting : QFont.HintingPreference = ... # 0x2 + PreferFullHinting : QFont.HintingPreference = ... # 0x3 + + class SpacingType(object): + PercentageSpacing : QFont.SpacingType = ... # 0x0 + AbsoluteSpacing : QFont.SpacingType = ... # 0x1 + + class Stretch(object): + AnyStretch : QFont.Stretch = ... # 0x0 + UltraCondensed : QFont.Stretch = ... # 0x32 + ExtraCondensed : QFont.Stretch = ... # 0x3e + Condensed : QFont.Stretch = ... # 0x4b + SemiCondensed : QFont.Stretch = ... # 0x57 + Unstretched : QFont.Stretch = ... # 0x64 + SemiExpanded : QFont.Stretch = ... # 0x70 + Expanded : QFont.Stretch = ... # 0x7d + ExtraExpanded : QFont.Stretch = ... # 0x96 + UltraExpanded : QFont.Stretch = ... # 0xc8 + + class Style(object): + StyleNormal : QFont.Style = ... # 0x0 + StyleItalic : QFont.Style = ... # 0x1 + StyleOblique : QFont.Style = ... # 0x2 + + class StyleHint(object): + Helvetica : QFont.StyleHint = ... # 0x0 + SansSerif : QFont.StyleHint = ... # 0x0 + Serif : QFont.StyleHint = ... # 0x1 + Times : QFont.StyleHint = ... # 0x1 + Courier : QFont.StyleHint = ... # 0x2 + TypeWriter : QFont.StyleHint = ... # 0x2 + Decorative : QFont.StyleHint = ... # 0x3 + OldEnglish : QFont.StyleHint = ... # 0x3 + System : QFont.StyleHint = ... # 0x4 + AnyStyle : QFont.StyleHint = ... # 0x5 + Cursive : QFont.StyleHint = ... # 0x6 + Monospace : QFont.StyleHint = ... # 0x7 + Fantasy : QFont.StyleHint = ... # 0x8 + + class StyleStrategy(object): + PreferDefault : QFont.StyleStrategy = ... # 0x1 + PreferBitmap : QFont.StyleStrategy = ... # 0x2 + PreferDevice : QFont.StyleStrategy = ... # 0x4 + PreferOutline : QFont.StyleStrategy = ... # 0x8 + ForceOutline : QFont.StyleStrategy = ... # 0x10 + PreferMatch : QFont.StyleStrategy = ... # 0x20 + PreferQuality : QFont.StyleStrategy = ... # 0x40 + PreferAntialias : QFont.StyleStrategy = ... # 0x80 + NoAntialias : QFont.StyleStrategy = ... # 0x100 + OpenGLCompatible : QFont.StyleStrategy = ... # 0x200 + ForceIntegerMetrics : QFont.StyleStrategy = ... # 0x400 + NoSubpixelAntialias : QFont.StyleStrategy = ... # 0x800 + PreferNoShaping : QFont.StyleStrategy = ... # 0x1000 + NoFontMerging : QFont.StyleStrategy = ... # 0x8000 + + class Weight(object): + Thin : QFont.Weight = ... # 0x0 + ExtraLight : QFont.Weight = ... # 0xc + Light : QFont.Weight = ... # 0x19 + Normal : QFont.Weight = ... # 0x32 + Medium : QFont.Weight = ... # 0x39 + DemiBold : QFont.Weight = ... # 0x3f + Bold : QFont.Weight = ... # 0x4b + ExtraBold : QFont.Weight = ... # 0x51 + Black : QFont.Weight = ... # 0x57 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, family:str, pointSize:int=..., weight:int=..., italic:bool=...) -> None: ... + @typing.overload + def __init__(self, font:PySide2.QtGui.QFont) -> None: ... + @typing.overload + def __init__(self, font:PySide2.QtGui.QFont, pd:PySide2.QtGui.QPaintDevice) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __lshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __rshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def bold(self) -> bool: ... + @staticmethod + def cacheStatistics() -> None: ... + def capitalization(self) -> PySide2.QtGui.QFont.Capitalization: ... + @staticmethod + def cleanup() -> None: ... + def defaultFamily(self) -> str: ... + def exactMatch(self) -> bool: ... + def families(self) -> typing.List: ... + def family(self) -> str: ... + def fixedPitch(self) -> bool: ... + def fromString(self, arg__1:str) -> bool: ... + def hintingPreference(self) -> PySide2.QtGui.QFont.HintingPreference: ... + @staticmethod + def initialize() -> None: ... + @staticmethod + def insertSubstitution(arg__1:str, arg__2:str) -> None: ... + @staticmethod + def insertSubstitutions(arg__1:str, arg__2:typing.Sequence) -> None: ... + def isCopyOf(self, arg__1:PySide2.QtGui.QFont) -> bool: ... + def italic(self) -> bool: ... + def kerning(self) -> bool: ... + def key(self) -> str: ... + def lastResortFamily(self) -> str: ... + def lastResortFont(self) -> str: ... + def letterSpacing(self) -> float: ... + def letterSpacingType(self) -> PySide2.QtGui.QFont.SpacingType: ... + def overline(self) -> bool: ... + def pixelSize(self) -> int: ... + def pointSize(self) -> int: ... + def pointSizeF(self) -> float: ... + def rawMode(self) -> bool: ... + def rawName(self) -> str: ... + @staticmethod + def removeSubstitutions(arg__1:str) -> None: ... + @typing.overload + def resolve(self) -> int: ... + @typing.overload + def resolve(self, arg__1:PySide2.QtGui.QFont) -> PySide2.QtGui.QFont: ... + @typing.overload + def resolve(self, mask:int) -> None: ... + def setBold(self, arg__1:bool) -> None: ... + def setCapitalization(self, arg__1:PySide2.QtGui.QFont.Capitalization) -> None: ... + def setFamilies(self, arg__1:typing.Sequence) -> None: ... + def setFamily(self, arg__1:str) -> None: ... + def setFixedPitch(self, arg__1:bool) -> None: ... + def setHintingPreference(self, hintingPreference:PySide2.QtGui.QFont.HintingPreference) -> None: ... + def setItalic(self, b:bool) -> None: ... + def setKerning(self, arg__1:bool) -> None: ... + def setLetterSpacing(self, type:PySide2.QtGui.QFont.SpacingType, spacing:float) -> None: ... + def setOverline(self, arg__1:bool) -> None: ... + def setPixelSize(self, arg__1:int) -> None: ... + def setPointSize(self, arg__1:int) -> None: ... + def setPointSizeF(self, arg__1:float) -> None: ... + def setRawMode(self, arg__1:bool) -> None: ... + def setRawName(self, arg__1:str) -> None: ... + def setStretch(self, arg__1:int) -> None: ... + def setStrikeOut(self, arg__1:bool) -> None: ... + def setStyle(self, style:PySide2.QtGui.QFont.Style) -> None: ... + def setStyleHint(self, arg__1:PySide2.QtGui.QFont.StyleHint, strategy:PySide2.QtGui.QFont.StyleStrategy=...) -> None: ... + def setStyleName(self, arg__1:str) -> None: ... + def setStyleStrategy(self, s:PySide2.QtGui.QFont.StyleStrategy) -> None: ... + def setUnderline(self, arg__1:bool) -> None: ... + def setWeight(self, arg__1:int) -> None: ... + def setWordSpacing(self, spacing:float) -> None: ... + def stretch(self) -> int: ... + def strikeOut(self) -> bool: ... + def style(self) -> PySide2.QtGui.QFont.Style: ... + def styleHint(self) -> PySide2.QtGui.QFont.StyleHint: ... + def styleName(self) -> str: ... + def styleStrategy(self) -> PySide2.QtGui.QFont.StyleStrategy: ... + @staticmethod + def substitute(arg__1:str) -> str: ... + @staticmethod + def substitutes(arg__1:str) -> typing.List: ... + @staticmethod + def substitutions() -> typing.List: ... + def swap(self, other:PySide2.QtGui.QFont) -> None: ... + def toString(self) -> str: ... + def underline(self) -> bool: ... + def weight(self) -> int: ... + def wordSpacing(self) -> float: ... + + +class QFontDatabase(Shiboken.Object): + Any : QFontDatabase = ... # 0x0 + GeneralFont : QFontDatabase = ... # 0x0 + FixedFont : QFontDatabase = ... # 0x1 + Latin : QFontDatabase = ... # 0x1 + Greek : QFontDatabase = ... # 0x2 + TitleFont : QFontDatabase = ... # 0x2 + Cyrillic : QFontDatabase = ... # 0x3 + SmallestReadableFont : QFontDatabase = ... # 0x3 + Armenian : QFontDatabase = ... # 0x4 + Hebrew : QFontDatabase = ... # 0x5 + Arabic : QFontDatabase = ... # 0x6 + Syriac : QFontDatabase = ... # 0x7 + Thaana : QFontDatabase = ... # 0x8 + Devanagari : QFontDatabase = ... # 0x9 + Bengali : QFontDatabase = ... # 0xa + Gurmukhi : QFontDatabase = ... # 0xb + Gujarati : QFontDatabase = ... # 0xc + Oriya : QFontDatabase = ... # 0xd + Tamil : QFontDatabase = ... # 0xe + Telugu : QFontDatabase = ... # 0xf + Kannada : QFontDatabase = ... # 0x10 + Malayalam : QFontDatabase = ... # 0x11 + Sinhala : QFontDatabase = ... # 0x12 + Thai : QFontDatabase = ... # 0x13 + Lao : QFontDatabase = ... # 0x14 + Tibetan : QFontDatabase = ... # 0x15 + Myanmar : QFontDatabase = ... # 0x16 + Georgian : QFontDatabase = ... # 0x17 + Khmer : QFontDatabase = ... # 0x18 + SimplifiedChinese : QFontDatabase = ... # 0x19 + TraditionalChinese : QFontDatabase = ... # 0x1a + Japanese : QFontDatabase = ... # 0x1b + Korean : QFontDatabase = ... # 0x1c + Vietnamese : QFontDatabase = ... # 0x1d + Other : QFontDatabase = ... # 0x1e + Symbol : QFontDatabase = ... # 0x1e + Ogham : QFontDatabase = ... # 0x1f + Runic : QFontDatabase = ... # 0x20 + Nko : QFontDatabase = ... # 0x21 + WritingSystemsCount : QFontDatabase = ... # 0x22 + + class SystemFont(object): + GeneralFont : QFontDatabase.SystemFont = ... # 0x0 + FixedFont : QFontDatabase.SystemFont = ... # 0x1 + TitleFont : QFontDatabase.SystemFont = ... # 0x2 + SmallestReadableFont : QFontDatabase.SystemFont = ... # 0x3 + + class WritingSystem(object): + Any : QFontDatabase.WritingSystem = ... # 0x0 + Latin : QFontDatabase.WritingSystem = ... # 0x1 + Greek : QFontDatabase.WritingSystem = ... # 0x2 + Cyrillic : QFontDatabase.WritingSystem = ... # 0x3 + Armenian : QFontDatabase.WritingSystem = ... # 0x4 + Hebrew : QFontDatabase.WritingSystem = ... # 0x5 + Arabic : QFontDatabase.WritingSystem = ... # 0x6 + Syriac : QFontDatabase.WritingSystem = ... # 0x7 + Thaana : QFontDatabase.WritingSystem = ... # 0x8 + Devanagari : QFontDatabase.WritingSystem = ... # 0x9 + Bengali : QFontDatabase.WritingSystem = ... # 0xa + Gurmukhi : QFontDatabase.WritingSystem = ... # 0xb + Gujarati : QFontDatabase.WritingSystem = ... # 0xc + Oriya : QFontDatabase.WritingSystem = ... # 0xd + Tamil : QFontDatabase.WritingSystem = ... # 0xe + Telugu : QFontDatabase.WritingSystem = ... # 0xf + Kannada : QFontDatabase.WritingSystem = ... # 0x10 + Malayalam : QFontDatabase.WritingSystem = ... # 0x11 + Sinhala : QFontDatabase.WritingSystem = ... # 0x12 + Thai : QFontDatabase.WritingSystem = ... # 0x13 + Lao : QFontDatabase.WritingSystem = ... # 0x14 + Tibetan : QFontDatabase.WritingSystem = ... # 0x15 + Myanmar : QFontDatabase.WritingSystem = ... # 0x16 + Georgian : QFontDatabase.WritingSystem = ... # 0x17 + Khmer : QFontDatabase.WritingSystem = ... # 0x18 + SimplifiedChinese : QFontDatabase.WritingSystem = ... # 0x19 + TraditionalChinese : QFontDatabase.WritingSystem = ... # 0x1a + Japanese : QFontDatabase.WritingSystem = ... # 0x1b + Korean : QFontDatabase.WritingSystem = ... # 0x1c + Vietnamese : QFontDatabase.WritingSystem = ... # 0x1d + Other : QFontDatabase.WritingSystem = ... # 0x1e + Symbol : QFontDatabase.WritingSystem = ... # 0x1e + Ogham : QFontDatabase.WritingSystem = ... # 0x1f + Runic : QFontDatabase.WritingSystem = ... # 0x20 + Nko : QFontDatabase.WritingSystem = ... # 0x21 + WritingSystemsCount : QFontDatabase.WritingSystem = ... # 0x22 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QFontDatabase:PySide2.QtGui.QFontDatabase) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @staticmethod + def addApplicationFont(fileName:str) -> int: ... + @staticmethod + def addApplicationFontFromData(fontData:PySide2.QtCore.QByteArray) -> int: ... + @staticmethod + def applicationFontFamilies(id:int) -> typing.List: ... + def bold(self, family:str, style:str) -> bool: ... + def families(self, writingSystem:PySide2.QtGui.QFontDatabase.WritingSystem=...) -> typing.List: ... + def font(self, family:str, style:str, pointSize:int) -> PySide2.QtGui.QFont: ... + def hasFamily(self, family:str) -> bool: ... + def isBitmapScalable(self, family:str, style:str=...) -> bool: ... + def isFixedPitch(self, family:str, style:str=...) -> bool: ... + def isPrivateFamily(self, family:str) -> bool: ... + def isScalable(self, family:str, style:str=...) -> bool: ... + def isSmoothlyScalable(self, family:str, style:str=...) -> bool: ... + def italic(self, family:str, style:str) -> bool: ... + def pointSizes(self, family:str, style:str=...) -> typing.List: ... + @staticmethod + def removeAllApplicationFonts() -> bool: ... + @staticmethod + def removeApplicationFont(id:int) -> bool: ... + def smoothSizes(self, family:str, style:str) -> typing.List: ... + @staticmethod + def standardSizes() -> typing.List: ... + @typing.overload + def styleString(self, font:PySide2.QtGui.QFont) -> str: ... + @typing.overload + def styleString(self, fontInfo:PySide2.QtGui.QFontInfo) -> str: ... + def styles(self, family:str) -> typing.List: ... + @staticmethod + def supportsThreadedFontRendering() -> bool: ... + @staticmethod + def systemFont(type:PySide2.QtGui.QFontDatabase.SystemFont) -> PySide2.QtGui.QFont: ... + def weight(self, family:str, style:str) -> int: ... + @staticmethod + def writingSystemName(writingSystem:PySide2.QtGui.QFontDatabase.WritingSystem) -> str: ... + @staticmethod + def writingSystemSample(writingSystem:PySide2.QtGui.QFontDatabase.WritingSystem) -> str: ... + @typing.overload + def writingSystems(self) -> typing.List: ... + @typing.overload + def writingSystems(self, family:str) -> typing.List: ... + + +class QFontInfo(Shiboken.Object): + + @typing.overload + def __init__(self, arg__1:PySide2.QtGui.QFont) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtGui.QFontInfo) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def bold(self) -> bool: ... + def exactMatch(self) -> bool: ... + def family(self) -> str: ... + def fixedPitch(self) -> bool: ... + def italic(self) -> bool: ... + def overline(self) -> bool: ... + def pixelSize(self) -> int: ... + def pointSize(self) -> int: ... + def pointSizeF(self) -> float: ... + def rawMode(self) -> bool: ... + def strikeOut(self) -> bool: ... + def style(self) -> PySide2.QtGui.QFont.Style: ... + def styleHint(self) -> PySide2.QtGui.QFont.StyleHint: ... + def styleName(self) -> str: ... + def swap(self, other:PySide2.QtGui.QFontInfo) -> None: ... + def underline(self) -> bool: ... + def weight(self) -> int: ... + + +class QFontMetrics(Shiboken.Object): + + @typing.overload + def __init__(self, arg__1:PySide2.QtGui.QFont) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtGui.QFontMetrics) -> None: ... + @typing.overload + def __init__(self, font:PySide2.QtGui.QFont, pd:PySide2.QtGui.QPaintDevice) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def ascent(self) -> int: ... + def averageCharWidth(self) -> int: ... + @typing.overload + def boundingRect(self, r:PySide2.QtCore.QRect, flags:int, text:str, tabstops:int=..., tabarray:typing.Optional[typing.Sequence[int]]=...) -> PySide2.QtCore.QRect: ... + @typing.overload + def boundingRect(self, text:str) -> PySide2.QtCore.QRect: ... + @typing.overload + def boundingRect(self, x:int, y:int, w:int, h:int, flags:int, text:str, tabstops:int=..., tabarray:typing.Optional[typing.Sequence[int]]=...) -> PySide2.QtCore.QRect: ... + def boundingRectChar(self, arg__1:str) -> PySide2.QtCore.QRect: ... + def capHeight(self) -> int: ... + def charWidth(self, str:str, pos:int) -> int: ... + def descent(self) -> int: ... + def elidedText(self, text:str, mode:PySide2.QtCore.Qt.TextElideMode, width:int, flags:int=...) -> str: ... + def fontDpi(self) -> float: ... + def height(self) -> int: ... + @typing.overload + def horizontalAdvance(self, arg__1:str) -> int: ... + @typing.overload + def horizontalAdvance(self, arg__1:str, len:int=...) -> int: ... + def inFont(self, arg__1:str) -> bool: ... + def inFontUcs4(self, ucs4:int) -> bool: ... + def leading(self) -> int: ... + def leftBearing(self, arg__1:str) -> int: ... + def lineSpacing(self) -> int: ... + def lineWidth(self) -> int: ... + def maxWidth(self) -> int: ... + def minLeftBearing(self) -> int: ... + def minRightBearing(self) -> int: ... + def overlinePos(self) -> int: ... + def rightBearing(self, arg__1:str) -> int: ... + def size(self, flags:int, str:str, tabstops:int=..., tabarray:typing.Optional[typing.Sequence[int]]=...) -> PySide2.QtCore.QSize: ... + def strikeOutPos(self) -> int: ... + def swap(self, other:PySide2.QtGui.QFontMetrics) -> None: ... + def tightBoundingRect(self, text:str) -> PySide2.QtCore.QRect: ... + def underlinePos(self) -> int: ... + @typing.overload + def width(self, arg__1:str, len:int, flags:int) -> int: ... + @typing.overload + def width(self, arg__1:str, len:int=...) -> int: ... + def widthChar(self, arg__1:str) -> int: ... + def xHeight(self) -> int: ... + + +class QFontMetricsF(Shiboken.Object): + + @typing.overload + def __init__(self, arg__1:PySide2.QtGui.QFontMetrics) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtGui.QFontMetricsF) -> None: ... + @typing.overload + def __init__(self, font:PySide2.QtGui.QFont) -> None: ... + @typing.overload + def __init__(self, font:PySide2.QtGui.QFont, pd:PySide2.QtGui.QPaintDevice) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def ascent(self) -> float: ... + def averageCharWidth(self) -> float: ... + @typing.overload + def boundingRect(self, r:PySide2.QtCore.QRectF, flags:int, string:str, tabstops:int=..., tabarray:typing.Optional[typing.Sequence[int]]=...) -> PySide2.QtCore.QRectF: ... + @typing.overload + def boundingRect(self, string:str) -> PySide2.QtCore.QRectF: ... + def boundingRectChar(self, arg__1:str) -> PySide2.QtCore.QRectF: ... + def capHeight(self) -> float: ... + def descent(self) -> float: ... + def elidedText(self, text:str, mode:PySide2.QtCore.Qt.TextElideMode, width:float, flags:int=...) -> str: ... + def fontDpi(self) -> float: ... + def height(self) -> float: ... + @typing.overload + def horizontalAdvance(self, arg__1:str) -> float: ... + @typing.overload + def horizontalAdvance(self, string:str, length:int=...) -> float: ... + def inFont(self, arg__1:str) -> bool: ... + def inFontUcs4(self, ucs4:int) -> bool: ... + def leading(self) -> float: ... + def leftBearing(self, arg__1:str) -> float: ... + def lineSpacing(self) -> float: ... + def lineWidth(self) -> float: ... + def maxWidth(self) -> float: ... + def minLeftBearing(self) -> float: ... + def minRightBearing(self) -> float: ... + def overlinePos(self) -> float: ... + def rightBearing(self, arg__1:str) -> float: ... + def size(self, flags:int, str:str, tabstops:int=..., tabarray:typing.Optional[typing.Sequence[int]]=...) -> PySide2.QtCore.QSizeF: ... + def strikeOutPos(self) -> float: ... + def swap(self, other:PySide2.QtGui.QFontMetricsF) -> None: ... + def tightBoundingRect(self, text:str) -> PySide2.QtCore.QRectF: ... + def underlinePos(self) -> float: ... + def width(self, string:str) -> float: ... + def widthChar(self, arg__1:str) -> float: ... + def xHeight(self) -> float: ... + + +class QGradient(Shiboken.Object): + ColorInterpolation : QGradient = ... # 0x0 + LinearGradient : QGradient = ... # 0x0 + LogicalMode : QGradient = ... # 0x0 + PadSpread : QGradient = ... # 0x0 + ComponentInterpolation : QGradient = ... # 0x1 + RadialGradient : QGradient = ... # 0x1 + ReflectSpread : QGradient = ... # 0x1 + StretchToDeviceMode : QGradient = ... # 0x1 + WarmFlame : QGradient = ... # 0x1 + ConicalGradient : QGradient = ... # 0x2 + NightFade : QGradient = ... # 0x2 + ObjectBoundingMode : QGradient = ... # 0x2 + RepeatSpread : QGradient = ... # 0x2 + NoGradient : QGradient = ... # 0x3 + ObjectMode : QGradient = ... # 0x3 + SpringWarmth : QGradient = ... # 0x3 + JuicyPeach : QGradient = ... # 0x4 + YoungPassion : QGradient = ... # 0x5 + LadyLips : QGradient = ... # 0x6 + SunnyMorning : QGradient = ... # 0x7 + RainyAshville : QGradient = ... # 0x8 + FrozenDreams : QGradient = ... # 0x9 + WinterNeva : QGradient = ... # 0xa + DustyGrass : QGradient = ... # 0xb + TemptingAzure : QGradient = ... # 0xc + HeavyRain : QGradient = ... # 0xd + AmyCrisp : QGradient = ... # 0xe + MeanFruit : QGradient = ... # 0xf + DeepBlue : QGradient = ... # 0x10 + RipeMalinka : QGradient = ... # 0x11 + CloudyKnoxville : QGradient = ... # 0x12 + MalibuBeach : QGradient = ... # 0x13 + NewLife : QGradient = ... # 0x14 + TrueSunset : QGradient = ... # 0x15 + MorpheusDen : QGradient = ... # 0x16 + RareWind : QGradient = ... # 0x17 + NearMoon : QGradient = ... # 0x18 + WildApple : QGradient = ... # 0x19 + SaintPetersburg : QGradient = ... # 0x1a + PlumPlate : QGradient = ... # 0x1c + EverlastingSky : QGradient = ... # 0x1d + HappyFisher : QGradient = ... # 0x1e + Blessing : QGradient = ... # 0x1f + SharpeyeEagle : QGradient = ... # 0x20 + LadogaBottom : QGradient = ... # 0x21 + LemonGate : QGradient = ... # 0x22 + ItmeoBranding : QGradient = ... # 0x23 + ZeusMiracle : QGradient = ... # 0x24 + OldHat : QGradient = ... # 0x25 + StarWine : QGradient = ... # 0x26 + HappyAcid : QGradient = ... # 0x29 + AwesomePine : QGradient = ... # 0x2a + NewYork : QGradient = ... # 0x2b + ShyRainbow : QGradient = ... # 0x2c + MixedHopes : QGradient = ... # 0x2e + FlyHigh : QGradient = ... # 0x2f + StrongBliss : QGradient = ... # 0x30 + FreshMilk : QGradient = ... # 0x31 + SnowAgain : QGradient = ... # 0x32 + FebruaryInk : QGradient = ... # 0x33 + KindSteel : QGradient = ... # 0x34 + SoftGrass : QGradient = ... # 0x35 + GrownEarly : QGradient = ... # 0x36 + SharpBlues : QGradient = ... # 0x37 + ShadyWater : QGradient = ... # 0x38 + DirtyBeauty : QGradient = ... # 0x39 + GreatWhale : QGradient = ... # 0x3a + TeenNotebook : QGradient = ... # 0x3b + PoliteRumors : QGradient = ... # 0x3c + SweetPeriod : QGradient = ... # 0x3d + WideMatrix : QGradient = ... # 0x3e + SoftCherish : QGradient = ... # 0x3f + RedSalvation : QGradient = ... # 0x40 + BurningSpring : QGradient = ... # 0x41 + NightParty : QGradient = ... # 0x42 + SkyGlider : QGradient = ... # 0x43 + HeavenPeach : QGradient = ... # 0x44 + PurpleDivision : QGradient = ... # 0x45 + AquaSplash : QGradient = ... # 0x46 + SpikyNaga : QGradient = ... # 0x48 + LoveKiss : QGradient = ... # 0x49 + CleanMirror : QGradient = ... # 0x4b + PremiumDark : QGradient = ... # 0x4c + ColdEvening : QGradient = ... # 0x4d + CochitiLake : QGradient = ... # 0x4e + SummerGames : QGradient = ... # 0x4f + PassionateBed : QGradient = ... # 0x50 + MountainRock : QGradient = ... # 0x51 + DesertHump : QGradient = ... # 0x52 + JungleDay : QGradient = ... # 0x53 + PhoenixStart : QGradient = ... # 0x54 + OctoberSilence : QGradient = ... # 0x55 + FarawayRiver : QGradient = ... # 0x56 + AlchemistLab : QGradient = ... # 0x57 + OverSun : QGradient = ... # 0x58 + PremiumWhite : QGradient = ... # 0x59 + MarsParty : QGradient = ... # 0x5a + EternalConstance : QGradient = ... # 0x5b + JapanBlush : QGradient = ... # 0x5c + SmilingRain : QGradient = ... # 0x5d + CloudyApple : QGradient = ... # 0x5e + BigMango : QGradient = ... # 0x5f + HealthyWater : QGradient = ... # 0x60 + AmourAmour : QGradient = ... # 0x61 + RiskyConcrete : QGradient = ... # 0x62 + StrongStick : QGradient = ... # 0x63 + ViciousStance : QGradient = ... # 0x64 + PaloAlto : QGradient = ... # 0x65 + HappyMemories : QGradient = ... # 0x66 + MidnightBloom : QGradient = ... # 0x67 + Crystalline : QGradient = ... # 0x68 + PartyBliss : QGradient = ... # 0x6a + ConfidentCloud : QGradient = ... # 0x6b + LeCocktail : QGradient = ... # 0x6c + RiverCity : QGradient = ... # 0x6d + FrozenBerry : QGradient = ... # 0x6e + ChildCare : QGradient = ... # 0x70 + FlyingLemon : QGradient = ... # 0x71 + NewRetrowave : QGradient = ... # 0x72 + HiddenJaguar : QGradient = ... # 0x73 + AboveTheSky : QGradient = ... # 0x74 + Nega : QGradient = ... # 0x75 + DenseWater : QGradient = ... # 0x76 + Seashore : QGradient = ... # 0x78 + MarbleWall : QGradient = ... # 0x79 + CheerfulCaramel : QGradient = ... # 0x7a + NightSky : QGradient = ... # 0x7b + MagicLake : QGradient = ... # 0x7c + YoungGrass : QGradient = ... # 0x7d + ColorfulPeach : QGradient = ... # 0x7e + GentleCare : QGradient = ... # 0x7f + PlumBath : QGradient = ... # 0x80 + HappyUnicorn : QGradient = ... # 0x81 + AfricanField : QGradient = ... # 0x83 + SolidStone : QGradient = ... # 0x84 + OrangeJuice : QGradient = ... # 0x85 + GlassWater : QGradient = ... # 0x86 + NorthMiracle : QGradient = ... # 0x88 + FruitBlend : QGradient = ... # 0x89 + MillenniumPine : QGradient = ... # 0x8a + HighFlight : QGradient = ... # 0x8b + MoleHall : QGradient = ... # 0x8c + SpaceShift : QGradient = ... # 0x8e + ForestInei : QGradient = ... # 0x8f + RoyalGarden : QGradient = ... # 0x90 + RichMetal : QGradient = ... # 0x91 + JuicyCake : QGradient = ... # 0x92 + SmartIndigo : QGradient = ... # 0x93 + SandStrike : QGradient = ... # 0x94 + NorseBeauty : QGradient = ... # 0x95 + AquaGuidance : QGradient = ... # 0x96 + SunVeggie : QGradient = ... # 0x97 + SeaLord : QGradient = ... # 0x98 + BlackSea : QGradient = ... # 0x99 + GrassShampoo : QGradient = ... # 0x9a + LandingAircraft : QGradient = ... # 0x9b + WitchDance : QGradient = ... # 0x9c + SleeplessNight : QGradient = ... # 0x9d + AngelCare : QGradient = ... # 0x9e + CrystalRiver : QGradient = ... # 0x9f + SoftLipstick : QGradient = ... # 0xa0 + SaltMountain : QGradient = ... # 0xa1 + PerfectWhite : QGradient = ... # 0xa2 + FreshOasis : QGradient = ... # 0xa3 + StrictNovember : QGradient = ... # 0xa4 + MorningSalad : QGradient = ... # 0xa5 + DeepRelief : QGradient = ... # 0xa6 + SeaStrike : QGradient = ... # 0xa7 + NightCall : QGradient = ... # 0xa8 + SupremeSky : QGradient = ... # 0xa9 + LightBlue : QGradient = ... # 0xaa + MindCrawl : QGradient = ... # 0xab + LilyMeadow : QGradient = ... # 0xac + SugarLollipop : QGradient = ... # 0xad + SweetDessert : QGradient = ... # 0xae + MagicRay : QGradient = ... # 0xaf + TeenParty : QGradient = ... # 0xb0 + FrozenHeat : QGradient = ... # 0xb1 + GagarinView : QGradient = ... # 0xb2 + FabledSunset : QGradient = ... # 0xb3 + PerfectBlue : QGradient = ... # 0xb4 + NumPresets : QGradient = ... # 0xb5 + + class CoordinateMode(object): + LogicalMode : QGradient.CoordinateMode = ... # 0x0 + StretchToDeviceMode : QGradient.CoordinateMode = ... # 0x1 + ObjectBoundingMode : QGradient.CoordinateMode = ... # 0x2 + ObjectMode : QGradient.CoordinateMode = ... # 0x3 + + class InterpolationMode(object): + ColorInterpolation : QGradient.InterpolationMode = ... # 0x0 + ComponentInterpolation : QGradient.InterpolationMode = ... # 0x1 + + class Preset(object): + WarmFlame : QGradient.Preset = ... # 0x1 + NightFade : QGradient.Preset = ... # 0x2 + SpringWarmth : QGradient.Preset = ... # 0x3 + JuicyPeach : QGradient.Preset = ... # 0x4 + YoungPassion : QGradient.Preset = ... # 0x5 + LadyLips : QGradient.Preset = ... # 0x6 + SunnyMorning : QGradient.Preset = ... # 0x7 + RainyAshville : QGradient.Preset = ... # 0x8 + FrozenDreams : QGradient.Preset = ... # 0x9 + WinterNeva : QGradient.Preset = ... # 0xa + DustyGrass : QGradient.Preset = ... # 0xb + TemptingAzure : QGradient.Preset = ... # 0xc + HeavyRain : QGradient.Preset = ... # 0xd + AmyCrisp : QGradient.Preset = ... # 0xe + MeanFruit : QGradient.Preset = ... # 0xf + DeepBlue : QGradient.Preset = ... # 0x10 + RipeMalinka : QGradient.Preset = ... # 0x11 + CloudyKnoxville : QGradient.Preset = ... # 0x12 + MalibuBeach : QGradient.Preset = ... # 0x13 + NewLife : QGradient.Preset = ... # 0x14 + TrueSunset : QGradient.Preset = ... # 0x15 + MorpheusDen : QGradient.Preset = ... # 0x16 + RareWind : QGradient.Preset = ... # 0x17 + NearMoon : QGradient.Preset = ... # 0x18 + WildApple : QGradient.Preset = ... # 0x19 + SaintPetersburg : QGradient.Preset = ... # 0x1a + PlumPlate : QGradient.Preset = ... # 0x1c + EverlastingSky : QGradient.Preset = ... # 0x1d + HappyFisher : QGradient.Preset = ... # 0x1e + Blessing : QGradient.Preset = ... # 0x1f + SharpeyeEagle : QGradient.Preset = ... # 0x20 + LadogaBottom : QGradient.Preset = ... # 0x21 + LemonGate : QGradient.Preset = ... # 0x22 + ItmeoBranding : QGradient.Preset = ... # 0x23 + ZeusMiracle : QGradient.Preset = ... # 0x24 + OldHat : QGradient.Preset = ... # 0x25 + StarWine : QGradient.Preset = ... # 0x26 + HappyAcid : QGradient.Preset = ... # 0x29 + AwesomePine : QGradient.Preset = ... # 0x2a + NewYork : QGradient.Preset = ... # 0x2b + ShyRainbow : QGradient.Preset = ... # 0x2c + MixedHopes : QGradient.Preset = ... # 0x2e + FlyHigh : QGradient.Preset = ... # 0x2f + StrongBliss : QGradient.Preset = ... # 0x30 + FreshMilk : QGradient.Preset = ... # 0x31 + SnowAgain : QGradient.Preset = ... # 0x32 + FebruaryInk : QGradient.Preset = ... # 0x33 + KindSteel : QGradient.Preset = ... # 0x34 + SoftGrass : QGradient.Preset = ... # 0x35 + GrownEarly : QGradient.Preset = ... # 0x36 + SharpBlues : QGradient.Preset = ... # 0x37 + ShadyWater : QGradient.Preset = ... # 0x38 + DirtyBeauty : QGradient.Preset = ... # 0x39 + GreatWhale : QGradient.Preset = ... # 0x3a + TeenNotebook : QGradient.Preset = ... # 0x3b + PoliteRumors : QGradient.Preset = ... # 0x3c + SweetPeriod : QGradient.Preset = ... # 0x3d + WideMatrix : QGradient.Preset = ... # 0x3e + SoftCherish : QGradient.Preset = ... # 0x3f + RedSalvation : QGradient.Preset = ... # 0x40 + BurningSpring : QGradient.Preset = ... # 0x41 + NightParty : QGradient.Preset = ... # 0x42 + SkyGlider : QGradient.Preset = ... # 0x43 + HeavenPeach : QGradient.Preset = ... # 0x44 + PurpleDivision : QGradient.Preset = ... # 0x45 + AquaSplash : QGradient.Preset = ... # 0x46 + SpikyNaga : QGradient.Preset = ... # 0x48 + LoveKiss : QGradient.Preset = ... # 0x49 + CleanMirror : QGradient.Preset = ... # 0x4b + PremiumDark : QGradient.Preset = ... # 0x4c + ColdEvening : QGradient.Preset = ... # 0x4d + CochitiLake : QGradient.Preset = ... # 0x4e + SummerGames : QGradient.Preset = ... # 0x4f + PassionateBed : QGradient.Preset = ... # 0x50 + MountainRock : QGradient.Preset = ... # 0x51 + DesertHump : QGradient.Preset = ... # 0x52 + JungleDay : QGradient.Preset = ... # 0x53 + PhoenixStart : QGradient.Preset = ... # 0x54 + OctoberSilence : QGradient.Preset = ... # 0x55 + FarawayRiver : QGradient.Preset = ... # 0x56 + AlchemistLab : QGradient.Preset = ... # 0x57 + OverSun : QGradient.Preset = ... # 0x58 + PremiumWhite : QGradient.Preset = ... # 0x59 + MarsParty : QGradient.Preset = ... # 0x5a + EternalConstance : QGradient.Preset = ... # 0x5b + JapanBlush : QGradient.Preset = ... # 0x5c + SmilingRain : QGradient.Preset = ... # 0x5d + CloudyApple : QGradient.Preset = ... # 0x5e + BigMango : QGradient.Preset = ... # 0x5f + HealthyWater : QGradient.Preset = ... # 0x60 + AmourAmour : QGradient.Preset = ... # 0x61 + RiskyConcrete : QGradient.Preset = ... # 0x62 + StrongStick : QGradient.Preset = ... # 0x63 + ViciousStance : QGradient.Preset = ... # 0x64 + PaloAlto : QGradient.Preset = ... # 0x65 + HappyMemories : QGradient.Preset = ... # 0x66 + MidnightBloom : QGradient.Preset = ... # 0x67 + Crystalline : QGradient.Preset = ... # 0x68 + PartyBliss : QGradient.Preset = ... # 0x6a + ConfidentCloud : QGradient.Preset = ... # 0x6b + LeCocktail : QGradient.Preset = ... # 0x6c + RiverCity : QGradient.Preset = ... # 0x6d + FrozenBerry : QGradient.Preset = ... # 0x6e + ChildCare : QGradient.Preset = ... # 0x70 + FlyingLemon : QGradient.Preset = ... # 0x71 + NewRetrowave : QGradient.Preset = ... # 0x72 + HiddenJaguar : QGradient.Preset = ... # 0x73 + AboveTheSky : QGradient.Preset = ... # 0x74 + Nega : QGradient.Preset = ... # 0x75 + DenseWater : QGradient.Preset = ... # 0x76 + Seashore : QGradient.Preset = ... # 0x78 + MarbleWall : QGradient.Preset = ... # 0x79 + CheerfulCaramel : QGradient.Preset = ... # 0x7a + NightSky : QGradient.Preset = ... # 0x7b + MagicLake : QGradient.Preset = ... # 0x7c + YoungGrass : QGradient.Preset = ... # 0x7d + ColorfulPeach : QGradient.Preset = ... # 0x7e + GentleCare : QGradient.Preset = ... # 0x7f + PlumBath : QGradient.Preset = ... # 0x80 + HappyUnicorn : QGradient.Preset = ... # 0x81 + AfricanField : QGradient.Preset = ... # 0x83 + SolidStone : QGradient.Preset = ... # 0x84 + OrangeJuice : QGradient.Preset = ... # 0x85 + GlassWater : QGradient.Preset = ... # 0x86 + NorthMiracle : QGradient.Preset = ... # 0x88 + FruitBlend : QGradient.Preset = ... # 0x89 + MillenniumPine : QGradient.Preset = ... # 0x8a + HighFlight : QGradient.Preset = ... # 0x8b + MoleHall : QGradient.Preset = ... # 0x8c + SpaceShift : QGradient.Preset = ... # 0x8e + ForestInei : QGradient.Preset = ... # 0x8f + RoyalGarden : QGradient.Preset = ... # 0x90 + RichMetal : QGradient.Preset = ... # 0x91 + JuicyCake : QGradient.Preset = ... # 0x92 + SmartIndigo : QGradient.Preset = ... # 0x93 + SandStrike : QGradient.Preset = ... # 0x94 + NorseBeauty : QGradient.Preset = ... # 0x95 + AquaGuidance : QGradient.Preset = ... # 0x96 + SunVeggie : QGradient.Preset = ... # 0x97 + SeaLord : QGradient.Preset = ... # 0x98 + BlackSea : QGradient.Preset = ... # 0x99 + GrassShampoo : QGradient.Preset = ... # 0x9a + LandingAircraft : QGradient.Preset = ... # 0x9b + WitchDance : QGradient.Preset = ... # 0x9c + SleeplessNight : QGradient.Preset = ... # 0x9d + AngelCare : QGradient.Preset = ... # 0x9e + CrystalRiver : QGradient.Preset = ... # 0x9f + SoftLipstick : QGradient.Preset = ... # 0xa0 + SaltMountain : QGradient.Preset = ... # 0xa1 + PerfectWhite : QGradient.Preset = ... # 0xa2 + FreshOasis : QGradient.Preset = ... # 0xa3 + StrictNovember : QGradient.Preset = ... # 0xa4 + MorningSalad : QGradient.Preset = ... # 0xa5 + DeepRelief : QGradient.Preset = ... # 0xa6 + SeaStrike : QGradient.Preset = ... # 0xa7 + NightCall : QGradient.Preset = ... # 0xa8 + SupremeSky : QGradient.Preset = ... # 0xa9 + LightBlue : QGradient.Preset = ... # 0xaa + MindCrawl : QGradient.Preset = ... # 0xab + LilyMeadow : QGradient.Preset = ... # 0xac + SugarLollipop : QGradient.Preset = ... # 0xad + SweetDessert : QGradient.Preset = ... # 0xae + MagicRay : QGradient.Preset = ... # 0xaf + TeenParty : QGradient.Preset = ... # 0xb0 + FrozenHeat : QGradient.Preset = ... # 0xb1 + GagarinView : QGradient.Preset = ... # 0xb2 + FabledSunset : QGradient.Preset = ... # 0xb3 + PerfectBlue : QGradient.Preset = ... # 0xb4 + NumPresets : QGradient.Preset = ... # 0xb5 + + class Spread(object): + PadSpread : QGradient.Spread = ... # 0x0 + ReflectSpread : QGradient.Spread = ... # 0x1 + RepeatSpread : QGradient.Spread = ... # 0x2 + + class Type(object): + LinearGradient : QGradient.Type = ... # 0x0 + RadialGradient : QGradient.Type = ... # 0x1 + ConicalGradient : QGradient.Type = ... # 0x2 + NoGradient : QGradient.Type = ... # 0x3 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QGradient:PySide2.QtGui.QGradient) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtGui.QGradient.Preset) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def coordinateMode(self) -> PySide2.QtGui.QGradient.CoordinateMode: ... + def interpolationMode(self) -> PySide2.QtGui.QGradient.InterpolationMode: ... + def setColorAt(self, pos:float, color:PySide2.QtGui.QColor) -> None: ... + def setCoordinateMode(self, mode:PySide2.QtGui.QGradient.CoordinateMode) -> None: ... + def setInterpolationMode(self, mode:PySide2.QtGui.QGradient.InterpolationMode) -> None: ... + def setSpread(self, spread:PySide2.QtGui.QGradient.Spread) -> None: ... + def setStops(self, stops:typing.List) -> None: ... + def spread(self) -> PySide2.QtGui.QGradient.Spread: ... + def stops(self) -> typing.List: ... + def type(self) -> PySide2.QtGui.QGradient.Type: ... + + +class QGuiApplication(PySide2.QtCore.QCoreApplication): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:typing.Sequence) -> None: ... + + @staticmethod + def allWindows() -> typing.List: ... + @staticmethod + def applicationDisplayName() -> str: ... + @staticmethod + def applicationState() -> PySide2.QtCore.Qt.ApplicationState: ... + @staticmethod + def changeOverrideCursor(arg__1:PySide2.QtGui.QCursor) -> None: ... + @staticmethod + def clipboard() -> PySide2.QtGui.QClipboard: ... + @staticmethod + def desktopFileName() -> str: ... + @staticmethod + def desktopSettingsAware() -> bool: ... + def devicePixelRatio(self) -> float: ... + def event(self, arg__1:PySide2.QtCore.QEvent) -> bool: ... + @staticmethod + def exec_() -> int: ... + @staticmethod + def focusObject() -> PySide2.QtCore.QObject: ... + @staticmethod + def focusWindow() -> PySide2.QtGui.QWindow: ... + @staticmethod + def font() -> PySide2.QtGui.QFont: ... + @staticmethod + def highDpiScaleFactorRoundingPolicy() -> PySide2.QtCore.Qt.HighDpiScaleFactorRoundingPolicy: ... + @staticmethod + def inputMethod() -> PySide2.QtGui.QInputMethod: ... + @staticmethod + def isFallbackSessionManagementEnabled() -> bool: ... + @staticmethod + def isLeftToRight() -> bool: ... + @staticmethod + def isRightToLeft() -> bool: ... + def isSavingSession(self) -> bool: ... + def isSessionRestored(self) -> bool: ... + @staticmethod + def keyboardModifiers() -> PySide2.QtCore.Qt.KeyboardModifiers: ... + @staticmethod + def layoutDirection() -> PySide2.QtCore.Qt.LayoutDirection: ... + @staticmethod + def modalWindow() -> PySide2.QtGui.QWindow: ... + @staticmethod + def mouseButtons() -> PySide2.QtCore.Qt.MouseButtons: ... + def notify(self, arg__1:PySide2.QtCore.QObject, arg__2:PySide2.QtCore.QEvent) -> bool: ... + @staticmethod + def overrideCursor() -> PySide2.QtGui.QCursor: ... + @staticmethod + def palette() -> PySide2.QtGui.QPalette: ... + @staticmethod + def platformName() -> str: ... + @staticmethod + def primaryScreen() -> PySide2.QtGui.QScreen: ... + @staticmethod + def queryKeyboardModifiers() -> PySide2.QtCore.Qt.KeyboardModifiers: ... + @staticmethod + def quitOnLastWindowClosed() -> bool: ... + @staticmethod + def restoreOverrideCursor() -> None: ... + @staticmethod + def screenAt(point:PySide2.QtCore.QPoint) -> PySide2.QtGui.QScreen: ... + @staticmethod + def screens() -> typing.List: ... + def sessionId(self) -> str: ... + def sessionKey(self) -> str: ... + @staticmethod + def setApplicationDisplayName(name:str) -> None: ... + @staticmethod + def setDesktopFileName(name:str) -> None: ... + @staticmethod + def setDesktopSettingsAware(on:bool) -> None: ... + @staticmethod + def setFallbackSessionManagementEnabled(arg__1:bool) -> None: ... + @staticmethod + def setFont(arg__1:PySide2.QtGui.QFont) -> None: ... + @staticmethod + def setHighDpiScaleFactorRoundingPolicy(policy:PySide2.QtCore.Qt.HighDpiScaleFactorRoundingPolicy) -> None: ... + @staticmethod + def setLayoutDirection(direction:PySide2.QtCore.Qt.LayoutDirection) -> None: ... + @staticmethod + def setOverrideCursor(arg__1:PySide2.QtGui.QCursor) -> None: ... + @staticmethod + def setPalette(pal:PySide2.QtGui.QPalette) -> None: ... + @staticmethod + def setQuitOnLastWindowClosed(quit:bool) -> None: ... + @staticmethod + def setWindowIcon(icon:PySide2.QtGui.QIcon) -> None: ... + @staticmethod + def styleHints() -> PySide2.QtGui.QStyleHints: ... + @staticmethod + def sync() -> None: ... + @staticmethod + def topLevelAt(pos:PySide2.QtCore.QPoint) -> PySide2.QtGui.QWindow: ... + @staticmethod + def topLevelWindows() -> typing.List: ... + @staticmethod + def windowIcon() -> PySide2.QtGui.QIcon: ... + + +class QHelpEvent(PySide2.QtCore.QEvent): + + def __init__(self, type:PySide2.QtCore.QEvent.Type, pos:PySide2.QtCore.QPoint, globalPos:PySide2.QtCore.QPoint) -> None: ... + + def globalPos(self) -> PySide2.QtCore.QPoint: ... + def globalX(self) -> int: ... + def globalY(self) -> int: ... + def pos(self) -> PySide2.QtCore.QPoint: ... + def x(self) -> int: ... + def y(self) -> int: ... + + +class QHideEvent(PySide2.QtCore.QEvent): + + def __init__(self) -> None: ... + + +class QHoverEvent(PySide2.QtGui.QInputEvent): + + def __init__(self, type:PySide2.QtCore.QEvent.Type, pos:PySide2.QtCore.QPointF, oldPos:PySide2.QtCore.QPointF, modifiers:PySide2.QtCore.Qt.KeyboardModifiers=...) -> None: ... + + def oldPos(self) -> PySide2.QtCore.QPoint: ... + def oldPosF(self) -> PySide2.QtCore.QPointF: ... + def pos(self) -> PySide2.QtCore.QPoint: ... + def posF(self) -> PySide2.QtCore.QPointF: ... + + +class QIcon(Shiboken.Object): + Normal : QIcon = ... # 0x0 + On : QIcon = ... # 0x0 + Disabled : QIcon = ... # 0x1 + Off : QIcon = ... # 0x1 + Active : QIcon = ... # 0x2 + Selected : QIcon = ... # 0x3 + + class Mode(object): + Normal : QIcon.Mode = ... # 0x0 + Disabled : QIcon.Mode = ... # 0x1 + Active : QIcon.Mode = ... # 0x2 + Selected : QIcon.Mode = ... # 0x3 + + class State(object): + On : QIcon.State = ... # 0x0 + Off : QIcon.State = ... # 0x1 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, engine:PySide2.QtGui.QIconEngine) -> None: ... + @typing.overload + def __init__(self, fileName:str) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtGui.QIcon) -> None: ... + @typing.overload + def __init__(self, pixmap:PySide2.QtGui.QPixmap) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __lshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __rshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def actualSize(self, size:PySide2.QtCore.QSize, mode:PySide2.QtGui.QIcon.Mode=..., state:PySide2.QtGui.QIcon.State=...) -> PySide2.QtCore.QSize: ... + @typing.overload + def actualSize(self, window:PySide2.QtGui.QWindow, size:PySide2.QtCore.QSize, mode:PySide2.QtGui.QIcon.Mode=..., state:PySide2.QtGui.QIcon.State=...) -> PySide2.QtCore.QSize: ... + def addFile(self, fileName:str, size:PySide2.QtCore.QSize=..., mode:PySide2.QtGui.QIcon.Mode=..., state:PySide2.QtGui.QIcon.State=...) -> None: ... + def addPixmap(self, pixmap:PySide2.QtGui.QPixmap, mode:PySide2.QtGui.QIcon.Mode=..., state:PySide2.QtGui.QIcon.State=...) -> None: ... + def availableSizes(self, mode:PySide2.QtGui.QIcon.Mode=..., state:PySide2.QtGui.QIcon.State=...) -> typing.List: ... + def cacheKey(self) -> int: ... + @staticmethod + def fallbackSearchPaths() -> typing.List: ... + @staticmethod + def fallbackThemeName() -> str: ... + @typing.overload + @staticmethod + def fromTheme(name:str) -> PySide2.QtGui.QIcon: ... + @typing.overload + @staticmethod + def fromTheme(name:str, fallback:PySide2.QtGui.QIcon) -> PySide2.QtGui.QIcon: ... + @staticmethod + def hasThemeIcon(name:str) -> bool: ... + def isMask(self) -> bool: ... + def isNull(self) -> bool: ... + def name(self) -> str: ... + @typing.overload + def paint(self, painter:PySide2.QtGui.QPainter, rect:PySide2.QtCore.QRect, alignment:PySide2.QtCore.Qt.Alignment=..., mode:PySide2.QtGui.QIcon.Mode=..., state:PySide2.QtGui.QIcon.State=...) -> None: ... + @typing.overload + def paint(self, painter:PySide2.QtGui.QPainter, x:int, y:int, w:int, h:int, alignment:PySide2.QtCore.Qt.Alignment=..., mode:PySide2.QtGui.QIcon.Mode=..., state:PySide2.QtGui.QIcon.State=...) -> None: ... + @typing.overload + def pixmap(self, extent:int, mode:PySide2.QtGui.QIcon.Mode=..., state:PySide2.QtGui.QIcon.State=...) -> PySide2.QtGui.QPixmap: ... + @typing.overload + def pixmap(self, size:PySide2.QtCore.QSize, mode:PySide2.QtGui.QIcon.Mode=..., state:PySide2.QtGui.QIcon.State=...) -> PySide2.QtGui.QPixmap: ... + @typing.overload + def pixmap(self, w:int, h:int, mode:PySide2.QtGui.QIcon.Mode=..., state:PySide2.QtGui.QIcon.State=...) -> PySide2.QtGui.QPixmap: ... + @typing.overload + def pixmap(self, window:PySide2.QtGui.QWindow, size:PySide2.QtCore.QSize, mode:PySide2.QtGui.QIcon.Mode=..., state:PySide2.QtGui.QIcon.State=...) -> PySide2.QtGui.QPixmap: ... + @staticmethod + def setFallbackSearchPaths(paths:typing.Sequence) -> None: ... + @staticmethod + def setFallbackThemeName(name:str) -> None: ... + def setIsMask(self, isMask:bool) -> None: ... + @staticmethod + def setThemeName(path:str) -> None: ... + @staticmethod + def setThemeSearchPaths(searchpath:typing.Sequence) -> None: ... + def swap(self, other:PySide2.QtGui.QIcon) -> None: ... + @staticmethod + def themeName() -> str: ... + @staticmethod + def themeSearchPaths() -> typing.List: ... + + +class QIconDragEvent(PySide2.QtCore.QEvent): + + def __init__(self) -> None: ... + + +class QIconEngine(Shiboken.Object): + AvailableSizesHook : QIconEngine = ... # 0x1 + IconNameHook : QIconEngine = ... # 0x2 + IsNullHook : QIconEngine = ... # 0x3 + ScaledPixmapHook : QIconEngine = ... # 0x4 + + class AvailableSizesArgument(Shiboken.Object): + + def __init__(self) -> None: ... + + + class IconEngineHook(object): + AvailableSizesHook : QIconEngine.IconEngineHook = ... # 0x1 + IconNameHook : QIconEngine.IconEngineHook = ... # 0x2 + IsNullHook : QIconEngine.IconEngineHook = ... # 0x3 + ScaledPixmapHook : QIconEngine.IconEngineHook = ... # 0x4 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtGui.QIconEngine) -> None: ... + + def actualSize(self, size:PySide2.QtCore.QSize, mode:PySide2.QtGui.QIcon.Mode, state:PySide2.QtGui.QIcon.State) -> PySide2.QtCore.QSize: ... + def addFile(self, fileName:str, size:PySide2.QtCore.QSize, mode:PySide2.QtGui.QIcon.Mode, state:PySide2.QtGui.QIcon.State) -> None: ... + def addPixmap(self, pixmap:PySide2.QtGui.QPixmap, mode:PySide2.QtGui.QIcon.Mode, state:PySide2.QtGui.QIcon.State) -> None: ... + def availableSizes(self, mode:PySide2.QtGui.QIcon.Mode=..., state:PySide2.QtGui.QIcon.State=...) -> typing.List: ... + def clone(self) -> PySide2.QtGui.QIconEngine: ... + def iconName(self) -> str: ... + def isNull(self) -> bool: ... + def key(self) -> str: ... + def paint(self, painter:PySide2.QtGui.QPainter, rect:PySide2.QtCore.QRect, mode:PySide2.QtGui.QIcon.Mode, state:PySide2.QtGui.QIcon.State) -> None: ... + def pixmap(self, size:PySide2.QtCore.QSize, mode:PySide2.QtGui.QIcon.Mode, state:PySide2.QtGui.QIcon.State) -> PySide2.QtGui.QPixmap: ... + def read(self, in_:PySide2.QtCore.QDataStream) -> bool: ... + def scaledPixmap(self, size:PySide2.QtCore.QSize, mode:PySide2.QtGui.QIcon.Mode, state:PySide2.QtGui.QIcon.State, scale:float) -> PySide2.QtGui.QPixmap: ... + def write(self, out:PySide2.QtCore.QDataStream) -> bool: ... + + +class QImage(PySide2.QtGui.QPaintDevice): + Format_Invalid : QImage = ... # 0x0 + InvertRgb : QImage = ... # 0x0 + Format_Mono : QImage = ... # 0x1 + InvertRgba : QImage = ... # 0x1 + Format_MonoLSB : QImage = ... # 0x2 + Format_Indexed8 : QImage = ... # 0x3 + Format_RGB32 : QImage = ... # 0x4 + Format_ARGB32 : QImage = ... # 0x5 + Format_ARGB32_Premultiplied: QImage = ... # 0x6 + Format_RGB16 : QImage = ... # 0x7 + Format_ARGB8565_Premultiplied: QImage = ... # 0x8 + Format_RGB666 : QImage = ... # 0x9 + Format_ARGB6666_Premultiplied: QImage = ... # 0xa + Format_RGB555 : QImage = ... # 0xb + Format_ARGB8555_Premultiplied: QImage = ... # 0xc + Format_RGB888 : QImage = ... # 0xd + Format_RGB444 : QImage = ... # 0xe + Format_ARGB4444_Premultiplied: QImage = ... # 0xf + Format_RGBX8888 : QImage = ... # 0x10 + Format_RGBA8888 : QImage = ... # 0x11 + Format_RGBA8888_Premultiplied: QImage = ... # 0x12 + Format_BGR30 : QImage = ... # 0x13 + Format_A2BGR30_Premultiplied: QImage = ... # 0x14 + Format_RGB30 : QImage = ... # 0x15 + Format_A2RGB30_Premultiplied: QImage = ... # 0x16 + Format_Alpha8 : QImage = ... # 0x17 + Format_Grayscale8 : QImage = ... # 0x18 + Format_RGBX64 : QImage = ... # 0x19 + Format_RGBA64 : QImage = ... # 0x1a + Format_RGBA64_Premultiplied: QImage = ... # 0x1b + Format_Grayscale16 : QImage = ... # 0x1c + Format_BGR888 : QImage = ... # 0x1d + NImageFormats : QImage = ... # 0x1e + + class Format(object): + Format_Invalid : QImage.Format = ... # 0x0 + Format_Mono : QImage.Format = ... # 0x1 + Format_MonoLSB : QImage.Format = ... # 0x2 + Format_Indexed8 : QImage.Format = ... # 0x3 + Format_RGB32 : QImage.Format = ... # 0x4 + Format_ARGB32 : QImage.Format = ... # 0x5 + Format_ARGB32_Premultiplied: QImage.Format = ... # 0x6 + Format_RGB16 : QImage.Format = ... # 0x7 + Format_ARGB8565_Premultiplied: QImage.Format = ... # 0x8 + Format_RGB666 : QImage.Format = ... # 0x9 + Format_ARGB6666_Premultiplied: QImage.Format = ... # 0xa + Format_RGB555 : QImage.Format = ... # 0xb + Format_ARGB8555_Premultiplied: QImage.Format = ... # 0xc + Format_RGB888 : QImage.Format = ... # 0xd + Format_RGB444 : QImage.Format = ... # 0xe + Format_ARGB4444_Premultiplied: QImage.Format = ... # 0xf + Format_RGBX8888 : QImage.Format = ... # 0x10 + Format_RGBA8888 : QImage.Format = ... # 0x11 + Format_RGBA8888_Premultiplied: QImage.Format = ... # 0x12 + Format_BGR30 : QImage.Format = ... # 0x13 + Format_A2BGR30_Premultiplied: QImage.Format = ... # 0x14 + Format_RGB30 : QImage.Format = ... # 0x15 + Format_A2RGB30_Premultiplied: QImage.Format = ... # 0x16 + Format_Alpha8 : QImage.Format = ... # 0x17 + Format_Grayscale8 : QImage.Format = ... # 0x18 + Format_RGBX64 : QImage.Format = ... # 0x19 + Format_RGBA64 : QImage.Format = ... # 0x1a + Format_RGBA64_Premultiplied: QImage.Format = ... # 0x1b + Format_Grayscale16 : QImage.Format = ... # 0x1c + Format_BGR888 : QImage.Format = ... # 0x1d + NImageFormats : QImage.Format = ... # 0x1e + + class InvertMode(object): + InvertRgb : QImage.InvertMode = ... # 0x0 + InvertRgba : QImage.InvertMode = ... # 0x1 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtGui.QImage) -> None: ... + @typing.overload + def __init__(self, arg__1:str, arg__2:int, arg__3:int, arg__4:PySide2.QtGui.QImage.Format) -> None: ... + @typing.overload + def __init__(self, arg__1:str, arg__2:int, arg__3:int, arg__4:int, arg__5:PySide2.QtGui.QImage.Format) -> None: ... + @typing.overload + def __init__(self, data:bytes, width:int, height:int, bytesPerLine:int, format:PySide2.QtGui.QImage.Format, cleanupFunction:typing.Optional[typing.Callable]=..., cleanupInfo:typing.Optional[int]=...) -> None: ... + @typing.overload + def __init__(self, data:bytes, width:int, height:int, format:PySide2.QtGui.QImage.Format, cleanupFunction:typing.Optional[typing.Callable]=..., cleanupInfo:typing.Optional[int]=...) -> None: ... + @typing.overload + def __init__(self, fileName:str, format:typing.Optional[bytes]=...) -> None: ... + @typing.overload + def __init__(self, size:PySide2.QtCore.QSize, format:PySide2.QtGui.QImage.Format) -> None: ... + @typing.overload + def __init__(self, width:int, height:int, format:PySide2.QtGui.QImage.Format) -> None: ... + @typing.overload + def __init__(self, xpm:typing.Sequence) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __lshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __rshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def allGray(self) -> bool: ... + def alphaChannel(self) -> PySide2.QtGui.QImage: ... + def bitPlaneCount(self) -> int: ... + def bits(self) -> bytes: ... + def byteCount(self) -> int: ... + def bytesPerLine(self) -> int: ... + def cacheKey(self) -> int: ... + def color(self, i:int) -> int: ... + def colorCount(self) -> int: ... + def colorSpace(self) -> PySide2.QtGui.QColorSpace: ... + def colorTable(self) -> typing.List: ... + def constBits(self) -> bytes: ... + def constScanLine(self, arg__1:int) -> bytes: ... + def convertTo(self, f:PySide2.QtGui.QImage.Format, flags:PySide2.QtCore.Qt.ImageConversionFlags=...) -> None: ... + def convertToColorSpace(self, arg__1:PySide2.QtGui.QColorSpace) -> None: ... + @typing.overload + def convertToFormat(self, f:PySide2.QtGui.QImage.Format, colorTable:typing.List, flags:PySide2.QtCore.Qt.ImageConversionFlags=...) -> PySide2.QtGui.QImage: ... + @typing.overload + def convertToFormat(self, f:PySide2.QtGui.QImage.Format, flags:PySide2.QtCore.Qt.ImageConversionFlags=...) -> PySide2.QtGui.QImage: ... + def convertToFormat_helper(self, format:PySide2.QtGui.QImage.Format, flags:PySide2.QtCore.Qt.ImageConversionFlags) -> PySide2.QtGui.QImage: ... + def convertToFormat_inplace(self, format:PySide2.QtGui.QImage.Format, flags:PySide2.QtCore.Qt.ImageConversionFlags) -> bool: ... + def convertedToColorSpace(self, arg__1:PySide2.QtGui.QColorSpace) -> PySide2.QtGui.QImage: ... + @typing.overload + def copy(self, rect:PySide2.QtCore.QRect=...) -> PySide2.QtGui.QImage: ... + @typing.overload + def copy(self, x:int, y:int, w:int, h:int) -> PySide2.QtGui.QImage: ... + def createAlphaMask(self, flags:PySide2.QtCore.Qt.ImageConversionFlags=...) -> PySide2.QtGui.QImage: ... + def createHeuristicMask(self, clipTight:bool=...) -> PySide2.QtGui.QImage: ... + def createMaskFromColor(self, color:int, mode:PySide2.QtCore.Qt.MaskMode=...) -> PySide2.QtGui.QImage: ... + def depth(self) -> int: ... + def devType(self) -> int: ... + def devicePixelRatio(self) -> float: ... + def dotsPerMeterX(self) -> int: ... + def dotsPerMeterY(self) -> int: ... + @typing.overload + def fill(self, color:PySide2.QtCore.Qt.GlobalColor) -> None: ... + @typing.overload + def fill(self, color:PySide2.QtGui.QColor) -> None: ... + @typing.overload + def fill(self, pixel:int) -> None: ... + def format(self) -> PySide2.QtGui.QImage.Format: ... + @staticmethod + def fromData(data:PySide2.QtCore.QByteArray, format:typing.Optional[bytes]=...) -> PySide2.QtGui.QImage: ... + def hasAlphaChannel(self) -> bool: ... + def height(self) -> int: ... + def invertPixels(self, mode:PySide2.QtGui.QImage.InvertMode=...) -> None: ... + def isGrayscale(self) -> bool: ... + def isNull(self) -> bool: ... + @typing.overload + def load(self, device:PySide2.QtCore.QIODevice, format:bytes) -> bool: ... + @typing.overload + def load(self, fileName:str, format:typing.Optional[bytes]=...) -> bool: ... + def loadFromData(self, data:PySide2.QtCore.QByteArray, aformat:typing.Optional[bytes]=...) -> bool: ... + def metric(self, metric:PySide2.QtGui.QPaintDevice.PaintDeviceMetric) -> int: ... + def mirrored(self, horizontally:bool=..., vertically:bool=...) -> PySide2.QtGui.QImage: ... + def mirrored_helper(self, horizontal:bool, vertical:bool) -> PySide2.QtGui.QImage: ... + def mirrored_inplace(self, horizontal:bool, vertical:bool) -> None: ... + def offset(self) -> PySide2.QtCore.QPoint: ... + def paintEngine(self) -> PySide2.QtGui.QPaintEngine: ... + @typing.overload + def pixel(self, pt:PySide2.QtCore.QPoint) -> int: ... + @typing.overload + def pixel(self, x:int, y:int) -> int: ... + @typing.overload + def pixelColor(self, pt:PySide2.QtCore.QPoint) -> PySide2.QtGui.QColor: ... + @typing.overload + def pixelColor(self, x:int, y:int) -> PySide2.QtGui.QColor: ... + def pixelFormat(self) -> PySide2.QtGui.QPixelFormat: ... + @typing.overload + def pixelIndex(self, pt:PySide2.QtCore.QPoint) -> int: ... + @typing.overload + def pixelIndex(self, x:int, y:int) -> int: ... + def rect(self) -> PySide2.QtCore.QRect: ... + def reinterpretAsFormat(self, f:PySide2.QtGui.QImage.Format) -> bool: ... + def rgbSwapped(self) -> PySide2.QtGui.QImage: ... + def rgbSwapped_helper(self) -> PySide2.QtGui.QImage: ... + def rgbSwapped_inplace(self) -> None: ... + @typing.overload + def save(self, device:PySide2.QtCore.QIODevice, format:typing.Optional[bytes]=..., quality:int=...) -> bool: ... + @typing.overload + def save(self, fileName:str, format:typing.Optional[bytes]=..., quality:int=...) -> bool: ... + @typing.overload + def scaled(self, s:PySide2.QtCore.QSize, aspectMode:PySide2.QtCore.Qt.AspectRatioMode=..., mode:PySide2.QtCore.Qt.TransformationMode=...) -> PySide2.QtGui.QImage: ... + @typing.overload + def scaled(self, w:int, h:int, aspectMode:PySide2.QtCore.Qt.AspectRatioMode=..., mode:PySide2.QtCore.Qt.TransformationMode=...) -> PySide2.QtGui.QImage: ... + def scaledToHeight(self, h:int, mode:PySide2.QtCore.Qt.TransformationMode=...) -> PySide2.QtGui.QImage: ... + def scaledToWidth(self, w:int, mode:PySide2.QtCore.Qt.TransformationMode=...) -> PySide2.QtGui.QImage: ... + def scanLine(self, arg__1:int) -> bytes: ... + def setAlphaChannel(self, alphaChannel:PySide2.QtGui.QImage) -> None: ... + def setColor(self, i:int, c:int) -> None: ... + def setColorCount(self, arg__1:int) -> None: ... + def setColorSpace(self, arg__1:PySide2.QtGui.QColorSpace) -> None: ... + def setColorTable(self, colors:typing.List) -> None: ... + def setDevicePixelRatio(self, scaleFactor:float) -> None: ... + def setDotsPerMeterX(self, arg__1:int) -> None: ... + def setDotsPerMeterY(self, arg__1:int) -> None: ... + def setOffset(self, arg__1:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + def setPixel(self, pt:PySide2.QtCore.QPoint, index_or_rgb:int) -> None: ... + @typing.overload + def setPixel(self, x:int, y:int, index_or_rgb:int) -> None: ... + @typing.overload + def setPixelColor(self, pt:PySide2.QtCore.QPoint, c:PySide2.QtGui.QColor) -> None: ... + @typing.overload + def setPixelColor(self, x:int, y:int, c:PySide2.QtGui.QColor) -> None: ... + def setText(self, key:str, value:str) -> None: ... + def size(self) -> PySide2.QtCore.QSize: ... + def sizeInBytes(self) -> int: ... + def smoothScaled(self, w:int, h:int) -> PySide2.QtGui.QImage: ... + def swap(self, other:PySide2.QtGui.QImage) -> None: ... + def text(self, key:str=...) -> str: ... + def textKeys(self) -> typing.List: ... + @staticmethod + def toImageFormat(format:PySide2.QtGui.QPixelFormat) -> PySide2.QtGui.QImage.Format: ... + @staticmethod + def toPixelFormat(format:PySide2.QtGui.QImage.Format) -> PySide2.QtGui.QPixelFormat: ... + @typing.overload + def transformed(self, matrix:PySide2.QtGui.QMatrix, mode:PySide2.QtCore.Qt.TransformationMode=...) -> PySide2.QtGui.QImage: ... + @typing.overload + def transformed(self, matrix:PySide2.QtGui.QTransform, mode:PySide2.QtCore.Qt.TransformationMode=...) -> PySide2.QtGui.QImage: ... + @typing.overload + @staticmethod + def trueMatrix(arg__1:PySide2.QtGui.QMatrix, w:int, h:int) -> PySide2.QtGui.QMatrix: ... + @typing.overload + @staticmethod + def trueMatrix(arg__1:PySide2.QtGui.QTransform, w:int, h:int) -> PySide2.QtGui.QTransform: ... + @typing.overload + def valid(self, pt:PySide2.QtCore.QPoint) -> bool: ... + @typing.overload + def valid(self, x:int, y:int) -> bool: ... + def width(self) -> int: ... + + +class QImageIOHandler(Shiboken.Object): + Size : QImageIOHandler = ... # 0x0 + TransformationNone : QImageIOHandler = ... # 0x0 + ClipRect : QImageIOHandler = ... # 0x1 + TransformationMirror : QImageIOHandler = ... # 0x1 + Description : QImageIOHandler = ... # 0x2 + TransformationFlip : QImageIOHandler = ... # 0x2 + ScaledClipRect : QImageIOHandler = ... # 0x3 + TransformationRotate180 : QImageIOHandler = ... # 0x3 + ScaledSize : QImageIOHandler = ... # 0x4 + TransformationRotate90 : QImageIOHandler = ... # 0x4 + CompressionRatio : QImageIOHandler = ... # 0x5 + TransformationMirrorAndRotate90: QImageIOHandler = ... # 0x5 + Gamma : QImageIOHandler = ... # 0x6 + TransformationFlipAndRotate90: QImageIOHandler = ... # 0x6 + Quality : QImageIOHandler = ... # 0x7 + TransformationRotate270 : QImageIOHandler = ... # 0x7 + Name : QImageIOHandler = ... # 0x8 + SubType : QImageIOHandler = ... # 0x9 + IncrementalReading : QImageIOHandler = ... # 0xa + Endianness : QImageIOHandler = ... # 0xb + Animation : QImageIOHandler = ... # 0xc + BackgroundColor : QImageIOHandler = ... # 0xd + ImageFormat : QImageIOHandler = ... # 0xe + SupportedSubTypes : QImageIOHandler = ... # 0xf + OptimizedWrite : QImageIOHandler = ... # 0x10 + ProgressiveScanWrite : QImageIOHandler = ... # 0x11 + ImageTransformation : QImageIOHandler = ... # 0x12 + TransformedByDefault : QImageIOHandler = ... # 0x13 + + class ImageOption(object): + Size : QImageIOHandler.ImageOption = ... # 0x0 + ClipRect : QImageIOHandler.ImageOption = ... # 0x1 + Description : QImageIOHandler.ImageOption = ... # 0x2 + ScaledClipRect : QImageIOHandler.ImageOption = ... # 0x3 + ScaledSize : QImageIOHandler.ImageOption = ... # 0x4 + CompressionRatio : QImageIOHandler.ImageOption = ... # 0x5 + Gamma : QImageIOHandler.ImageOption = ... # 0x6 + Quality : QImageIOHandler.ImageOption = ... # 0x7 + Name : QImageIOHandler.ImageOption = ... # 0x8 + SubType : QImageIOHandler.ImageOption = ... # 0x9 + IncrementalReading : QImageIOHandler.ImageOption = ... # 0xa + Endianness : QImageIOHandler.ImageOption = ... # 0xb + Animation : QImageIOHandler.ImageOption = ... # 0xc + BackgroundColor : QImageIOHandler.ImageOption = ... # 0xd + ImageFormat : QImageIOHandler.ImageOption = ... # 0xe + SupportedSubTypes : QImageIOHandler.ImageOption = ... # 0xf + OptimizedWrite : QImageIOHandler.ImageOption = ... # 0x10 + ProgressiveScanWrite : QImageIOHandler.ImageOption = ... # 0x11 + ImageTransformation : QImageIOHandler.ImageOption = ... # 0x12 + TransformedByDefault : QImageIOHandler.ImageOption = ... # 0x13 + + class Transformation(object): + TransformationNone : QImageIOHandler.Transformation = ... # 0x0 + TransformationMirror : QImageIOHandler.Transformation = ... # 0x1 + TransformationFlip : QImageIOHandler.Transformation = ... # 0x2 + TransformationRotate180 : QImageIOHandler.Transformation = ... # 0x3 + TransformationRotate90 : QImageIOHandler.Transformation = ... # 0x4 + TransformationMirrorAndRotate90: QImageIOHandler.Transformation = ... # 0x5 + TransformationFlipAndRotate90: QImageIOHandler.Transformation = ... # 0x6 + TransformationRotate270 : QImageIOHandler.Transformation = ... # 0x7 + + class Transformations(object): ... + + def __init__(self) -> None: ... + + def canRead(self) -> bool: ... + def currentImageNumber(self) -> int: ... + def currentImageRect(self) -> PySide2.QtCore.QRect: ... + def device(self) -> PySide2.QtCore.QIODevice: ... + def format(self) -> PySide2.QtCore.QByteArray: ... + def imageCount(self) -> int: ... + def jumpToImage(self, imageNumber:int) -> bool: ... + def jumpToNextImage(self) -> bool: ... + def loopCount(self) -> int: ... + def name(self) -> PySide2.QtCore.QByteArray: ... + def nextImageDelay(self) -> int: ... + def option(self, option:PySide2.QtGui.QImageIOHandler.ImageOption) -> typing.Any: ... + def read(self, image:PySide2.QtGui.QImage) -> bool: ... + def setDevice(self, device:PySide2.QtCore.QIODevice) -> None: ... + def setFormat(self, format:PySide2.QtCore.QByteArray) -> None: ... + def setOption(self, option:PySide2.QtGui.QImageIOHandler.ImageOption, value:typing.Any) -> None: ... + def supportsOption(self, option:PySide2.QtGui.QImageIOHandler.ImageOption) -> bool: ... + def write(self, image:PySide2.QtGui.QImage) -> bool: ... + + +class QImageReader(Shiboken.Object): + UnknownError : QImageReader = ... # 0x0 + FileNotFoundError : QImageReader = ... # 0x1 + DeviceError : QImageReader = ... # 0x2 + UnsupportedFormatError : QImageReader = ... # 0x3 + InvalidDataError : QImageReader = ... # 0x4 + + class ImageReaderError(object): + UnknownError : QImageReader.ImageReaderError = ... # 0x0 + FileNotFoundError : QImageReader.ImageReaderError = ... # 0x1 + DeviceError : QImageReader.ImageReaderError = ... # 0x2 + UnsupportedFormatError : QImageReader.ImageReaderError = ... # 0x3 + InvalidDataError : QImageReader.ImageReaderError = ... # 0x4 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, device:PySide2.QtCore.QIODevice, format:PySide2.QtCore.QByteArray=...) -> None: ... + @typing.overload + def __init__(self, fileName:str, format:PySide2.QtCore.QByteArray=...) -> None: ... + + def autoDetectImageFormat(self) -> bool: ... + def autoTransform(self) -> bool: ... + def backgroundColor(self) -> PySide2.QtGui.QColor: ... + def canRead(self) -> bool: ... + def clipRect(self) -> PySide2.QtCore.QRect: ... + def currentImageNumber(self) -> int: ... + def currentImageRect(self) -> PySide2.QtCore.QRect: ... + def decideFormatFromContent(self) -> bool: ... + def device(self) -> PySide2.QtCore.QIODevice: ... + def error(self) -> PySide2.QtGui.QImageReader.ImageReaderError: ... + def errorString(self) -> str: ... + def fileName(self) -> str: ... + def format(self) -> PySide2.QtCore.QByteArray: ... + def gamma(self) -> float: ... + def imageCount(self) -> int: ... + @typing.overload + @staticmethod + def imageFormat(device:PySide2.QtCore.QIODevice) -> PySide2.QtCore.QByteArray: ... + @typing.overload + @staticmethod + def imageFormat(fileName:str) -> PySide2.QtCore.QByteArray: ... + @typing.overload + def imageFormat(self) -> PySide2.QtGui.QImage.Format: ... + @staticmethod + def imageFormatsForMimeType(mimeType:PySide2.QtCore.QByteArray) -> typing.List: ... + def jumpToImage(self, imageNumber:int) -> bool: ... + def jumpToNextImage(self) -> bool: ... + def loopCount(self) -> int: ... + def nextImageDelay(self) -> int: ... + def quality(self) -> int: ... + def read(self) -> PySide2.QtGui.QImage: ... + def scaledClipRect(self) -> PySide2.QtCore.QRect: ... + def scaledSize(self) -> PySide2.QtCore.QSize: ... + def setAutoDetectImageFormat(self, enabled:bool) -> None: ... + def setAutoTransform(self, enabled:bool) -> None: ... + def setBackgroundColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setClipRect(self, rect:PySide2.QtCore.QRect) -> None: ... + def setDecideFormatFromContent(self, ignored:bool) -> None: ... + def setDevice(self, device:PySide2.QtCore.QIODevice) -> None: ... + def setFileName(self, fileName:str) -> None: ... + def setFormat(self, format:PySide2.QtCore.QByteArray) -> None: ... + def setGamma(self, gamma:float) -> None: ... + def setQuality(self, quality:int) -> None: ... + def setScaledClipRect(self, rect:PySide2.QtCore.QRect) -> None: ... + def setScaledSize(self, size:PySide2.QtCore.QSize) -> None: ... + def size(self) -> PySide2.QtCore.QSize: ... + def subType(self) -> PySide2.QtCore.QByteArray: ... + @staticmethod + def supportedImageFormats() -> typing.List: ... + @staticmethod + def supportedMimeTypes() -> typing.List: ... + def supportedSubTypes(self) -> typing.List: ... + def supportsAnimation(self) -> bool: ... + def supportsOption(self, option:PySide2.QtGui.QImageIOHandler.ImageOption) -> bool: ... + def text(self, key:str) -> str: ... + def textKeys(self) -> typing.List: ... + def transformation(self) -> PySide2.QtGui.QImageIOHandler.Transformations: ... + + +class QImageWriter(Shiboken.Object): + UnknownError : QImageWriter = ... # 0x0 + DeviceError : QImageWriter = ... # 0x1 + UnsupportedFormatError : QImageWriter = ... # 0x2 + InvalidImageError : QImageWriter = ... # 0x3 + + class ImageWriterError(object): + UnknownError : QImageWriter.ImageWriterError = ... # 0x0 + DeviceError : QImageWriter.ImageWriterError = ... # 0x1 + UnsupportedFormatError : QImageWriter.ImageWriterError = ... # 0x2 + InvalidImageError : QImageWriter.ImageWriterError = ... # 0x3 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, device:PySide2.QtCore.QIODevice, format:PySide2.QtCore.QByteArray) -> None: ... + @typing.overload + def __init__(self, fileName:str, format:PySide2.QtCore.QByteArray=...) -> None: ... + + def canWrite(self) -> bool: ... + def compression(self) -> int: ... + def description(self) -> str: ... + def device(self) -> PySide2.QtCore.QIODevice: ... + def error(self) -> PySide2.QtGui.QImageWriter.ImageWriterError: ... + def errorString(self) -> str: ... + def fileName(self) -> str: ... + def format(self) -> PySide2.QtCore.QByteArray: ... + def gamma(self) -> float: ... + @staticmethod + def imageFormatsForMimeType(mimeType:PySide2.QtCore.QByteArray) -> typing.List: ... + def optimizedWrite(self) -> bool: ... + def progressiveScanWrite(self) -> bool: ... + def quality(self) -> int: ... + def setCompression(self, compression:int) -> None: ... + def setDescription(self, description:str) -> None: ... + def setDevice(self, device:PySide2.QtCore.QIODevice) -> None: ... + def setFileName(self, fileName:str) -> None: ... + def setFormat(self, format:PySide2.QtCore.QByteArray) -> None: ... + def setGamma(self, gamma:float) -> None: ... + def setOptimizedWrite(self, optimize:bool) -> None: ... + def setProgressiveScanWrite(self, progressive:bool) -> None: ... + def setQuality(self, quality:int) -> None: ... + def setSubType(self, type:PySide2.QtCore.QByteArray) -> None: ... + def setText(self, key:str, text:str) -> None: ... + def setTransformation(self, orientation:PySide2.QtGui.QImageIOHandler.Transformations) -> None: ... + def subType(self) -> PySide2.QtCore.QByteArray: ... + @staticmethod + def supportedImageFormats() -> typing.List: ... + @staticmethod + def supportedMimeTypes() -> typing.List: ... + def supportedSubTypes(self) -> typing.List: ... + def supportsOption(self, option:PySide2.QtGui.QImageIOHandler.ImageOption) -> bool: ... + def transformation(self) -> PySide2.QtGui.QImageIOHandler.Transformations: ... + def write(self, image:PySide2.QtGui.QImage) -> bool: ... + + +class QInputEvent(PySide2.QtCore.QEvent): + + def __init__(self, type:PySide2.QtCore.QEvent.Type, modifiers:PySide2.QtCore.Qt.KeyboardModifiers=...) -> None: ... + + def modifiers(self) -> PySide2.QtCore.Qt.KeyboardModifiers: ... + def setModifiers(self, amodifiers:PySide2.QtCore.Qt.KeyboardModifiers) -> None: ... + def setTimestamp(self, atimestamp:int) -> None: ... + def timestamp(self) -> int: ... + + +class QInputMethod(PySide2.QtCore.QObject): + Click : QInputMethod = ... # 0x0 + ContextMenu : QInputMethod = ... # 0x1 + + class Action(object): + Click : QInputMethod.Action = ... # 0x0 + ContextMenu : QInputMethod.Action = ... # 0x1 + def anchorRectangle(self) -> PySide2.QtCore.QRectF: ... + def commit(self) -> None: ... + def cursorRectangle(self) -> PySide2.QtCore.QRectF: ... + def hide(self) -> None: ... + def inputDirection(self) -> PySide2.QtCore.Qt.LayoutDirection: ... + def inputItemClipRectangle(self) -> PySide2.QtCore.QRectF: ... + def inputItemRectangle(self) -> PySide2.QtCore.QRectF: ... + def inputItemTransform(self) -> PySide2.QtGui.QTransform: ... + def invokeAction(self, a:PySide2.QtGui.QInputMethod.Action, cursorPosition:int) -> None: ... + def isAnimating(self) -> bool: ... + def isVisible(self) -> bool: ... + def keyboardRectangle(self) -> PySide2.QtCore.QRectF: ... + def locale(self) -> PySide2.QtCore.QLocale: ... + @staticmethod + def queryFocusObject(query:PySide2.QtCore.Qt.InputMethodQuery, argument:typing.Any) -> typing.Any: ... + def reset(self) -> None: ... + def setInputItemRectangle(self, rect:PySide2.QtCore.QRectF) -> None: ... + def setInputItemTransform(self, transform:PySide2.QtGui.QTransform) -> None: ... + def setVisible(self, visible:bool) -> None: ... + def show(self) -> None: ... + def update(self, queries:PySide2.QtCore.Qt.InputMethodQueries) -> None: ... + + +class QInputMethodEvent(PySide2.QtCore.QEvent): + TextFormat : QInputMethodEvent = ... # 0x0 + Cursor : QInputMethodEvent = ... # 0x1 + Language : QInputMethodEvent = ... # 0x2 + Ruby : QInputMethodEvent = ... # 0x3 + Selection : QInputMethodEvent = ... # 0x4 + + class Attribute(Shiboken.Object): + + @typing.overload + def __init__(self, Attribute:PySide2.QtGui.QInputMethodEvent.Attribute) -> None: ... + @typing.overload + def __init__(self, typ:PySide2.QtGui.QInputMethodEvent.AttributeType, s:int, l:int) -> None: ... + @typing.overload + def __init__(self, typ:PySide2.QtGui.QInputMethodEvent.AttributeType, s:int, l:int, val:typing.Any) -> None: ... + + @staticmethod + def __copy__() -> None: ... + + class AttributeType(object): + TextFormat : QInputMethodEvent.AttributeType = ... # 0x0 + Cursor : QInputMethodEvent.AttributeType = ... # 0x1 + Language : QInputMethodEvent.AttributeType = ... # 0x2 + Ruby : QInputMethodEvent.AttributeType = ... # 0x3 + Selection : QInputMethodEvent.AttributeType = ... # 0x4 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtGui.QInputMethodEvent) -> None: ... + @typing.overload + def __init__(self, preeditText:str, attributes:typing.Sequence) -> None: ... + + def attributes(self) -> typing.List: ... + def commitString(self) -> str: ... + def preeditString(self) -> str: ... + def replacementLength(self) -> int: ... + def replacementStart(self) -> int: ... + def setCommitString(self, commitString:str, replaceFrom:int=..., replaceLength:int=...) -> None: ... + + +class QInputMethodQueryEvent(PySide2.QtCore.QEvent): + + def __init__(self, queries:PySide2.QtCore.Qt.InputMethodQueries) -> None: ... + + def queries(self) -> PySide2.QtCore.Qt.InputMethodQueries: ... + def setValue(self, query:PySide2.QtCore.Qt.InputMethodQuery, value:typing.Any) -> None: ... + def value(self, query:PySide2.QtCore.Qt.InputMethodQuery) -> typing.Any: ... + + +class QIntValidator(PySide2.QtGui.QValidator): + + @typing.overload + def __init__(self, bottom:int, top:int, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def bottom(self) -> int: ... + def fixup(self, input:str) -> None: ... + def setBottom(self, arg__1:int) -> None: ... + def setRange(self, bottom:int, top:int) -> None: ... + def setTop(self, arg__1:int) -> None: ... + def top(self) -> int: ... + def validate(self, arg__1:str, arg__2:int) -> PySide2.QtGui.QValidator.State: ... + + +class QKeyEvent(PySide2.QtGui.QInputEvent): + + @typing.overload + def __init__(self, type:PySide2.QtCore.QEvent.Type, key:int, modifiers:PySide2.QtCore.Qt.KeyboardModifiers, nativeScanCode:int, nativeVirtualKey:int, nativeModifiers:int, text:str=..., autorep:bool=..., count:int=...) -> None: ... + @typing.overload + def __init__(self, type:PySide2.QtCore.QEvent.Type, key:int, modifiers:PySide2.QtCore.Qt.KeyboardModifiers, text:str=..., autorep:bool=..., count:int=...) -> None: ... + + def count(self) -> int: ... + def isAutoRepeat(self) -> bool: ... + def key(self) -> int: ... + def matches(self, key:PySide2.QtGui.QKeySequence.StandardKey) -> bool: ... + def modifiers(self) -> PySide2.QtCore.Qt.KeyboardModifiers: ... + def nativeModifiers(self) -> int: ... + def nativeScanCode(self) -> int: ... + def nativeVirtualKey(self) -> int: ... + def text(self) -> str: ... + + +class QKeySequence(Shiboken.Object): + NativeText : QKeySequence = ... # 0x0 + NoMatch : QKeySequence = ... # 0x0 + UnknownKey : QKeySequence = ... # 0x0 + HelpContents : QKeySequence = ... # 0x1 + PartialMatch : QKeySequence = ... # 0x1 + PortableText : QKeySequence = ... # 0x1 + ExactMatch : QKeySequence = ... # 0x2 + WhatsThis : QKeySequence = ... # 0x2 + Open : QKeySequence = ... # 0x3 + Close : QKeySequence = ... # 0x4 + Save : QKeySequence = ... # 0x5 + New : QKeySequence = ... # 0x6 + Delete : QKeySequence = ... # 0x7 + Cut : QKeySequence = ... # 0x8 + Copy : QKeySequence = ... # 0x9 + Paste : QKeySequence = ... # 0xa + Undo : QKeySequence = ... # 0xb + Redo : QKeySequence = ... # 0xc + Back : QKeySequence = ... # 0xd + Forward : QKeySequence = ... # 0xe + Refresh : QKeySequence = ... # 0xf + ZoomIn : QKeySequence = ... # 0x10 + ZoomOut : QKeySequence = ... # 0x11 + Print : QKeySequence = ... # 0x12 + AddTab : QKeySequence = ... # 0x13 + NextChild : QKeySequence = ... # 0x14 + PreviousChild : QKeySequence = ... # 0x15 + Find : QKeySequence = ... # 0x16 + FindNext : QKeySequence = ... # 0x17 + FindPrevious : QKeySequence = ... # 0x18 + Replace : QKeySequence = ... # 0x19 + SelectAll : QKeySequence = ... # 0x1a + Bold : QKeySequence = ... # 0x1b + Italic : QKeySequence = ... # 0x1c + Underline : QKeySequence = ... # 0x1d + MoveToNextChar : QKeySequence = ... # 0x1e + MoveToPreviousChar : QKeySequence = ... # 0x1f + MoveToNextWord : QKeySequence = ... # 0x20 + MoveToPreviousWord : QKeySequence = ... # 0x21 + MoveToNextLine : QKeySequence = ... # 0x22 + MoveToPreviousLine : QKeySequence = ... # 0x23 + MoveToNextPage : QKeySequence = ... # 0x24 + MoveToPreviousPage : QKeySequence = ... # 0x25 + MoveToStartOfLine : QKeySequence = ... # 0x26 + MoveToEndOfLine : QKeySequence = ... # 0x27 + MoveToStartOfBlock : QKeySequence = ... # 0x28 + MoveToEndOfBlock : QKeySequence = ... # 0x29 + MoveToStartOfDocument : QKeySequence = ... # 0x2a + MoveToEndOfDocument : QKeySequence = ... # 0x2b + SelectNextChar : QKeySequence = ... # 0x2c + SelectPreviousChar : QKeySequence = ... # 0x2d + SelectNextWord : QKeySequence = ... # 0x2e + SelectPreviousWord : QKeySequence = ... # 0x2f + SelectNextLine : QKeySequence = ... # 0x30 + SelectPreviousLine : QKeySequence = ... # 0x31 + SelectNextPage : QKeySequence = ... # 0x32 + SelectPreviousPage : QKeySequence = ... # 0x33 + SelectStartOfLine : QKeySequence = ... # 0x34 + SelectEndOfLine : QKeySequence = ... # 0x35 + SelectStartOfBlock : QKeySequence = ... # 0x36 + SelectEndOfBlock : QKeySequence = ... # 0x37 + SelectStartOfDocument : QKeySequence = ... # 0x38 + SelectEndOfDocument : QKeySequence = ... # 0x39 + DeleteStartOfWord : QKeySequence = ... # 0x3a + DeleteEndOfWord : QKeySequence = ... # 0x3b + DeleteEndOfLine : QKeySequence = ... # 0x3c + InsertParagraphSeparator : QKeySequence = ... # 0x3d + InsertLineSeparator : QKeySequence = ... # 0x3e + SaveAs : QKeySequence = ... # 0x3f + Preferences : QKeySequence = ... # 0x40 + Quit : QKeySequence = ... # 0x41 + FullScreen : QKeySequence = ... # 0x42 + Deselect : QKeySequence = ... # 0x43 + DeleteCompleteLine : QKeySequence = ... # 0x44 + Backspace : QKeySequence = ... # 0x45 + Cancel : QKeySequence = ... # 0x46 + + class SequenceFormat(object): + NativeText : QKeySequence.SequenceFormat = ... # 0x0 + PortableText : QKeySequence.SequenceFormat = ... # 0x1 + + class SequenceMatch(object): + NoMatch : QKeySequence.SequenceMatch = ... # 0x0 + PartialMatch : QKeySequence.SequenceMatch = ... # 0x1 + ExactMatch : QKeySequence.SequenceMatch = ... # 0x2 + + class StandardKey(object): + UnknownKey : QKeySequence.StandardKey = ... # 0x0 + HelpContents : QKeySequence.StandardKey = ... # 0x1 + WhatsThis : QKeySequence.StandardKey = ... # 0x2 + Open : QKeySequence.StandardKey = ... # 0x3 + Close : QKeySequence.StandardKey = ... # 0x4 + Save : QKeySequence.StandardKey = ... # 0x5 + New : QKeySequence.StandardKey = ... # 0x6 + Delete : QKeySequence.StandardKey = ... # 0x7 + Cut : QKeySequence.StandardKey = ... # 0x8 + Copy : QKeySequence.StandardKey = ... # 0x9 + Paste : QKeySequence.StandardKey = ... # 0xa + Undo : QKeySequence.StandardKey = ... # 0xb + Redo : QKeySequence.StandardKey = ... # 0xc + Back : QKeySequence.StandardKey = ... # 0xd + Forward : QKeySequence.StandardKey = ... # 0xe + Refresh : QKeySequence.StandardKey = ... # 0xf + ZoomIn : QKeySequence.StandardKey = ... # 0x10 + ZoomOut : QKeySequence.StandardKey = ... # 0x11 + Print : QKeySequence.StandardKey = ... # 0x12 + AddTab : QKeySequence.StandardKey = ... # 0x13 + NextChild : QKeySequence.StandardKey = ... # 0x14 + PreviousChild : QKeySequence.StandardKey = ... # 0x15 + Find : QKeySequence.StandardKey = ... # 0x16 + FindNext : QKeySequence.StandardKey = ... # 0x17 + FindPrevious : QKeySequence.StandardKey = ... # 0x18 + Replace : QKeySequence.StandardKey = ... # 0x19 + SelectAll : QKeySequence.StandardKey = ... # 0x1a + Bold : QKeySequence.StandardKey = ... # 0x1b + Italic : QKeySequence.StandardKey = ... # 0x1c + Underline : QKeySequence.StandardKey = ... # 0x1d + MoveToNextChar : QKeySequence.StandardKey = ... # 0x1e + MoveToPreviousChar : QKeySequence.StandardKey = ... # 0x1f + MoveToNextWord : QKeySequence.StandardKey = ... # 0x20 + MoveToPreviousWord : QKeySequence.StandardKey = ... # 0x21 + MoveToNextLine : QKeySequence.StandardKey = ... # 0x22 + MoveToPreviousLine : QKeySequence.StandardKey = ... # 0x23 + MoveToNextPage : QKeySequence.StandardKey = ... # 0x24 + MoveToPreviousPage : QKeySequence.StandardKey = ... # 0x25 + MoveToStartOfLine : QKeySequence.StandardKey = ... # 0x26 + MoveToEndOfLine : QKeySequence.StandardKey = ... # 0x27 + MoveToStartOfBlock : QKeySequence.StandardKey = ... # 0x28 + MoveToEndOfBlock : QKeySequence.StandardKey = ... # 0x29 + MoveToStartOfDocument : QKeySequence.StandardKey = ... # 0x2a + MoveToEndOfDocument : QKeySequence.StandardKey = ... # 0x2b + SelectNextChar : QKeySequence.StandardKey = ... # 0x2c + SelectPreviousChar : QKeySequence.StandardKey = ... # 0x2d + SelectNextWord : QKeySequence.StandardKey = ... # 0x2e + SelectPreviousWord : QKeySequence.StandardKey = ... # 0x2f + SelectNextLine : QKeySequence.StandardKey = ... # 0x30 + SelectPreviousLine : QKeySequence.StandardKey = ... # 0x31 + SelectNextPage : QKeySequence.StandardKey = ... # 0x32 + SelectPreviousPage : QKeySequence.StandardKey = ... # 0x33 + SelectStartOfLine : QKeySequence.StandardKey = ... # 0x34 + SelectEndOfLine : QKeySequence.StandardKey = ... # 0x35 + SelectStartOfBlock : QKeySequence.StandardKey = ... # 0x36 + SelectEndOfBlock : QKeySequence.StandardKey = ... # 0x37 + SelectStartOfDocument : QKeySequence.StandardKey = ... # 0x38 + SelectEndOfDocument : QKeySequence.StandardKey = ... # 0x39 + DeleteStartOfWord : QKeySequence.StandardKey = ... # 0x3a + DeleteEndOfWord : QKeySequence.StandardKey = ... # 0x3b + DeleteEndOfLine : QKeySequence.StandardKey = ... # 0x3c + InsertParagraphSeparator : QKeySequence.StandardKey = ... # 0x3d + InsertLineSeparator : QKeySequence.StandardKey = ... # 0x3e + SaveAs : QKeySequence.StandardKey = ... # 0x3f + Preferences : QKeySequence.StandardKey = ... # 0x40 + Quit : QKeySequence.StandardKey = ... # 0x41 + FullScreen : QKeySequence.StandardKey = ... # 0x42 + Deselect : QKeySequence.StandardKey = ... # 0x43 + DeleteCompleteLine : QKeySequence.StandardKey = ... # 0x44 + Backspace : QKeySequence.StandardKey = ... # 0x45 + Cancel : QKeySequence.StandardKey = ... # 0x46 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, k1:int, k2:int=..., k3:int=..., k4:int=...) -> None: ... + @typing.overload + def __init__(self, key:PySide2.QtGui.QKeySequence.StandardKey) -> None: ... + @typing.overload + def __init__(self, key:str, format:PySide2.QtGui.QKeySequence.SequenceFormat=...) -> None: ... + @typing.overload + def __init__(self, ks:PySide2.QtGui.QKeySequence) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __lshift__(self, in_:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + def __rshift__(self, out:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def count(self) -> int: ... + @staticmethod + def fromString(str:str, format:PySide2.QtGui.QKeySequence.SequenceFormat=...) -> PySide2.QtGui.QKeySequence: ... + def isEmpty(self) -> bool: ... + @staticmethod + def keyBindings(key:PySide2.QtGui.QKeySequence.StandardKey) -> typing.List: ... + @staticmethod + def listFromString(str:str, format:PySide2.QtGui.QKeySequence.SequenceFormat=...) -> typing.List: ... + @staticmethod + def listToString(list:typing.Sequence, format:PySide2.QtGui.QKeySequence.SequenceFormat=...) -> str: ... + def matches(self, seq:PySide2.QtGui.QKeySequence) -> PySide2.QtGui.QKeySequence.SequenceMatch: ... + @staticmethod + def mnemonic(text:str) -> PySide2.QtGui.QKeySequence: ... + def swap(self, other:PySide2.QtGui.QKeySequence) -> None: ... + def toString(self, format:PySide2.QtGui.QKeySequence.SequenceFormat=...) -> str: ... + + +class QLinearGradient(PySide2.QtGui.QGradient): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QLinearGradient:PySide2.QtGui.QLinearGradient) -> None: ... + @typing.overload + def __init__(self, start:PySide2.QtCore.QPointF, finalStop:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def __init__(self, xStart:float, yStart:float, xFinalStop:float, yFinalStop:float) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def finalStop(self) -> PySide2.QtCore.QPointF: ... + @typing.overload + def setFinalStop(self, stop:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def setFinalStop(self, x:float, y:float) -> None: ... + @typing.overload + def setStart(self, start:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def setStart(self, x:float, y:float) -> None: ... + def start(self) -> PySide2.QtCore.QPointF: ... + + +class QMatrix(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, m11:float, m12:float, m21:float, m22:float, dx:float, dy:float) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtGui.QMatrix) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __imul__(self, arg__1:PySide2.QtGui.QMatrix) -> PySide2.QtGui.QMatrix: ... + def __lshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __mul__(self, l:PySide2.QtCore.QLine) -> PySide2.QtCore.QLine: ... + @typing.overload + def __mul__(self, l:PySide2.QtCore.QLineF) -> PySide2.QtCore.QLineF: ... + @typing.overload + def __mul__(self, o:PySide2.QtGui.QMatrix) -> PySide2.QtGui.QMatrix: ... + @typing.overload + def __mul__(self, p:PySide2.QtCore.QPoint) -> PySide2.QtCore.QPoint: ... + @typing.overload + def __mul__(self, p:PySide2.QtCore.QPointF) -> PySide2.QtCore.QPointF: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + def __rshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def determinant(self) -> float: ... + def dx(self) -> float: ... + def dy(self) -> float: ... + def inverted(self) -> typing.Tuple: ... + def isIdentity(self) -> bool: ... + def isInvertible(self) -> bool: ... + def m11(self) -> float: ... + def m12(self) -> float: ... + def m21(self) -> float: ... + def m22(self) -> float: ... + @typing.overload + def map(self, a:PySide2.QtGui.QPolygon) -> PySide2.QtGui.QPolygon: ... + @typing.overload + def map(self, a:PySide2.QtGui.QPolygonF) -> PySide2.QtGui.QPolygonF: ... + @typing.overload + def map(self, l:PySide2.QtCore.QLine) -> PySide2.QtCore.QLine: ... + @typing.overload + def map(self, l:PySide2.QtCore.QLineF) -> PySide2.QtCore.QLineF: ... + @typing.overload + def map(self, p:PySide2.QtCore.QPoint) -> PySide2.QtCore.QPoint: ... + @typing.overload + def map(self, p:PySide2.QtCore.QPointF) -> PySide2.QtCore.QPointF: ... + @typing.overload + def map(self, p:PySide2.QtGui.QPainterPath) -> PySide2.QtGui.QPainterPath: ... + @typing.overload + def map(self, r:PySide2.QtGui.QRegion) -> PySide2.QtGui.QRegion: ... + @typing.overload + def map(self, x:int, y:int) -> typing.Tuple: ... + @typing.overload + def map(self, x:float, y:float) -> typing.Tuple: ... + @typing.overload + def mapRect(self, arg__1:PySide2.QtCore.QRect) -> PySide2.QtCore.QRect: ... + @typing.overload + def mapRect(self, arg__1:PySide2.QtCore.QRectF) -> PySide2.QtCore.QRectF: ... + def mapToPolygon(self, r:PySide2.QtCore.QRect) -> PySide2.QtGui.QPolygon: ... + def reset(self) -> None: ... + def rotate(self, a:float) -> PySide2.QtGui.QMatrix: ... + def scale(self, sx:float, sy:float) -> PySide2.QtGui.QMatrix: ... + def setMatrix(self, m11:float, m12:float, m21:float, m22:float, dx:float, dy:float) -> None: ... + def shear(self, sh:float, sv:float) -> PySide2.QtGui.QMatrix: ... + def translate(self, dx:float, dy:float) -> PySide2.QtGui.QMatrix: ... + + +class QMatrix2x2(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QMatrix2x2:PySide2.QtGui.QMatrix2x2) -> None: ... + @typing.overload + def __init__(self, arg__1:typing.Iterable) -> None: ... + + def __call__(self, row:int, column:int) -> float: ... + @staticmethod + def __copy__() -> None: ... + def __iadd__(self, other:PySide2.QtGui.QMatrix2x2) -> PySide2.QtGui.QMatrix2x2: ... + def __imul__(self, factor:float) -> PySide2.QtGui.QMatrix2x2: ... + def __isub__(self, other:PySide2.QtGui.QMatrix2x2) -> PySide2.QtGui.QMatrix2x2: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + def data(self) -> float: ... + def fill(self, value:float) -> None: ... + def isIdentity(self) -> bool: ... + def setToIdentity(self) -> None: ... + def transposed(self) -> PySide2.QtGui.QMatrix2x2: ... + + +class QMatrix2x3(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QMatrix2x3:PySide2.QtGui.QMatrix2x3) -> None: ... + @typing.overload + def __init__(self, arg__1:typing.Iterable) -> None: ... + + def __call__(self, row:int, column:int) -> float: ... + @staticmethod + def __copy__() -> None: ... + def __iadd__(self, other:PySide2.QtGui.QMatrix2x3) -> PySide2.QtGui.QMatrix2x3: ... + def __imul__(self, factor:float) -> PySide2.QtGui.QMatrix2x3: ... + def __isub__(self, other:PySide2.QtGui.QMatrix2x3) -> PySide2.QtGui.QMatrix2x3: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + def data(self) -> float: ... + def fill(self, value:float) -> None: ... + def isIdentity(self) -> bool: ... + def setToIdentity(self) -> None: ... + def transposed(self) -> PySide2.QtGui.QMatrix3x2: ... + + +class QMatrix2x4(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QMatrix2x4:PySide2.QtGui.QMatrix2x4) -> None: ... + @typing.overload + def __init__(self, arg__1:typing.Iterable) -> None: ... + + def __call__(self, row:int, column:int) -> float: ... + @staticmethod + def __copy__() -> None: ... + def __iadd__(self, other:PySide2.QtGui.QMatrix2x4) -> PySide2.QtGui.QMatrix2x4: ... + def __imul__(self, factor:float) -> PySide2.QtGui.QMatrix2x4: ... + def __isub__(self, other:PySide2.QtGui.QMatrix2x4) -> PySide2.QtGui.QMatrix2x4: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + def data(self) -> float: ... + def fill(self, value:float) -> None: ... + def isIdentity(self) -> bool: ... + def setToIdentity(self) -> None: ... + def transposed(self) -> PySide2.QtGui.QMatrix4x2: ... + + +class QMatrix3x2(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QMatrix3x2:PySide2.QtGui.QMatrix3x2) -> None: ... + @typing.overload + def __init__(self, arg__1:typing.Iterable) -> None: ... + + def __call__(self, row:int, column:int) -> float: ... + @staticmethod + def __copy__() -> None: ... + def __iadd__(self, other:PySide2.QtGui.QMatrix3x2) -> PySide2.QtGui.QMatrix3x2: ... + def __imul__(self, factor:float) -> PySide2.QtGui.QMatrix3x2: ... + def __isub__(self, other:PySide2.QtGui.QMatrix3x2) -> PySide2.QtGui.QMatrix3x2: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + def data(self) -> float: ... + def fill(self, value:float) -> None: ... + def isIdentity(self) -> bool: ... + def setToIdentity(self) -> None: ... + def transposed(self) -> PySide2.QtGui.QMatrix2x3: ... + + +class QMatrix3x3(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QMatrix3x3:PySide2.QtGui.QMatrix3x3) -> None: ... + @typing.overload + def __init__(self, arg__1:typing.Iterable) -> None: ... + + def __call__(self, row:int, column:int) -> float: ... + @staticmethod + def __copy__() -> None: ... + def __iadd__(self, other:PySide2.QtGui.QMatrix3x3) -> PySide2.QtGui.QMatrix3x3: ... + def __imul__(self, factor:float) -> PySide2.QtGui.QMatrix3x3: ... + def __isub__(self, other:PySide2.QtGui.QMatrix3x3) -> PySide2.QtGui.QMatrix3x3: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + def data(self) -> float: ... + def fill(self, value:float) -> None: ... + def isIdentity(self) -> bool: ... + def setToIdentity(self) -> None: ... + def transposed(self) -> PySide2.QtGui.QMatrix3x3: ... + + +class QMatrix3x4(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QMatrix3x4:PySide2.QtGui.QMatrix3x4) -> None: ... + @typing.overload + def __init__(self, arg__1:typing.Iterable) -> None: ... + + def __call__(self, row:int, column:int) -> float: ... + @staticmethod + def __copy__() -> None: ... + def __iadd__(self, other:PySide2.QtGui.QMatrix3x4) -> PySide2.QtGui.QMatrix3x4: ... + def __imul__(self, factor:float) -> PySide2.QtGui.QMatrix3x4: ... + def __isub__(self, other:PySide2.QtGui.QMatrix3x4) -> PySide2.QtGui.QMatrix3x4: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + def data(self) -> float: ... + def fill(self, value:float) -> None: ... + def isIdentity(self) -> bool: ... + def setToIdentity(self) -> None: ... + def transposed(self) -> PySide2.QtGui.QMatrix4x3: ... + + +class QMatrix4x2(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QMatrix4x2:PySide2.QtGui.QMatrix4x2) -> None: ... + @typing.overload + def __init__(self, arg__1:typing.Iterable) -> None: ... + + def __call__(self, row:int, column:int) -> float: ... + @staticmethod + def __copy__() -> None: ... + def __iadd__(self, other:PySide2.QtGui.QMatrix4x2) -> PySide2.QtGui.QMatrix4x2: ... + def __imul__(self, factor:float) -> PySide2.QtGui.QMatrix4x2: ... + def __isub__(self, other:PySide2.QtGui.QMatrix4x2) -> PySide2.QtGui.QMatrix4x2: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + def data(self) -> float: ... + def fill(self, value:float) -> None: ... + def isIdentity(self) -> bool: ... + def setToIdentity(self) -> None: ... + def transposed(self) -> PySide2.QtGui.QMatrix2x4: ... + + +class QMatrix4x3(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QMatrix4x3:PySide2.QtGui.QMatrix4x3) -> None: ... + @typing.overload + def __init__(self, arg__1:typing.Iterable) -> None: ... + + def __call__(self, row:int, column:int) -> float: ... + @staticmethod + def __copy__() -> None: ... + def __iadd__(self, other:PySide2.QtGui.QMatrix4x3) -> PySide2.QtGui.QMatrix4x3: ... + def __imul__(self, factor:float) -> PySide2.QtGui.QMatrix4x3: ... + def __isub__(self, other:PySide2.QtGui.QMatrix4x3) -> PySide2.QtGui.QMatrix4x3: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + def data(self) -> float: ... + def fill(self, value:float) -> None: ... + def isIdentity(self) -> bool: ... + def setToIdentity(self) -> None: ... + def transposed(self) -> PySide2.QtGui.QMatrix3x4: ... + + +class QMatrix4x4(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, m11:float, m12:float, m13:float, m14:float, m21:float, m22:float, m23:float, m24:float, m31:float, m32:float, m33:float, m34:float, m41:float, m42:float, m43:float, m44:float) -> None: ... + @typing.overload + def __init__(self, matrix:PySide2.QtGui.QMatrix) -> None: ... + @typing.overload + def __init__(self, transform:PySide2.QtGui.QTransform) -> None: ... + @typing.overload + def __init__(self, values:typing.Sequence) -> None: ... + + def __add__(self, m2:PySide2.QtGui.QMatrix4x4) -> PySide2.QtGui.QMatrix4x4: ... + @staticmethod + def __copy__() -> None: ... + def __dummy(self, arg__1:typing.Sequence) -> None: ... + def __iadd__(self, other:PySide2.QtGui.QMatrix4x4) -> PySide2.QtGui.QMatrix4x4: ... + @typing.overload + def __imul__(self, factor:float) -> PySide2.QtGui.QMatrix4x4: ... + @typing.overload + def __imul__(self, other:PySide2.QtGui.QMatrix4x4) -> PySide2.QtGui.QMatrix4x4: ... + def __isub__(self, other:PySide2.QtGui.QMatrix4x4) -> PySide2.QtGui.QMatrix4x4: ... + def __lshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __mul__(self, factor:float) -> PySide2.QtGui.QMatrix4x4: ... + @typing.overload + def __mul__(self, m2:PySide2.QtGui.QMatrix4x4) -> PySide2.QtGui.QMatrix4x4: ... + @typing.overload + def __mul__(self, point:PySide2.QtCore.QPoint) -> PySide2.QtCore.QPoint: ... + @typing.overload + def __mul__(self, point:PySide2.QtCore.QPointF) -> PySide2.QtCore.QPointF: ... + def __neg__(self) -> PySide2.QtGui.QMatrix4x4: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + def __rshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __sub__(self, m2:PySide2.QtGui.QMatrix4x4) -> PySide2.QtGui.QMatrix4x4: ... + def column(self, index:int) -> PySide2.QtGui.QVector4D: ... + def copyDataTo(self) -> float: ... + def data(self) -> typing.List: ... + def determinant(self) -> float: ... + def fill(self, value:float) -> None: ... + def flipCoordinates(self) -> None: ... + def frustum(self, left:float, right:float, bottom:float, top:float, nearPlane:float, farPlane:float) -> None: ... + def inverted(self) -> typing.Tuple: ... + def isAffine(self) -> bool: ... + def isIdentity(self) -> bool: ... + def lookAt(self, eye:PySide2.QtGui.QVector3D, center:PySide2.QtGui.QVector3D, up:PySide2.QtGui.QVector3D) -> None: ... + @typing.overload + def map(self, point:PySide2.QtCore.QPoint) -> PySide2.QtCore.QPoint: ... + @typing.overload + def map(self, point:PySide2.QtCore.QPointF) -> PySide2.QtCore.QPointF: ... + @typing.overload + def map(self, point:PySide2.QtGui.QVector3D) -> PySide2.QtGui.QVector3D: ... + @typing.overload + def map(self, point:PySide2.QtGui.QVector4D) -> PySide2.QtGui.QVector4D: ... + @typing.overload + def mapRect(self, rect:PySide2.QtCore.QRect) -> PySide2.QtCore.QRect: ... + @typing.overload + def mapRect(self, rect:PySide2.QtCore.QRectF) -> PySide2.QtCore.QRectF: ... + def mapVector(self, vector:PySide2.QtGui.QVector3D) -> PySide2.QtGui.QVector3D: ... + def normalMatrix(self) -> PySide2.QtGui.QMatrix3x3: ... + def optimize(self) -> None: ... + @typing.overload + def ortho(self, left:float, right:float, bottom:float, top:float, nearPlane:float, farPlane:float) -> None: ... + @typing.overload + def ortho(self, rect:PySide2.QtCore.QRect) -> None: ... + @typing.overload + def ortho(self, rect:PySide2.QtCore.QRectF) -> None: ... + def perspective(self, verticalAngle:float, aspectRatio:float, nearPlane:float, farPlane:float) -> None: ... + @typing.overload + def rotate(self, angle:float, vector:PySide2.QtGui.QVector3D) -> None: ... + @typing.overload + def rotate(self, angle:float, x:float, y:float, z:float=...) -> None: ... + @typing.overload + def rotate(self, quaternion:PySide2.QtGui.QQuaternion) -> None: ... + def row(self, index:int) -> PySide2.QtGui.QVector4D: ... + @typing.overload + def scale(self, factor:float) -> None: ... + @typing.overload + def scale(self, vector:PySide2.QtGui.QVector3D) -> None: ... + @typing.overload + def scale(self, x:float, y:float) -> None: ... + @typing.overload + def scale(self, x:float, y:float, z:float) -> None: ... + def setColumn(self, index:int, value:PySide2.QtGui.QVector4D) -> None: ... + def setRow(self, index:int, value:PySide2.QtGui.QVector4D) -> None: ... + def setToIdentity(self) -> None: ... + def toAffine(self) -> PySide2.QtGui.QMatrix: ... + @typing.overload + def toTransform(self) -> PySide2.QtGui.QTransform: ... + @typing.overload + def toTransform(self, distanceToPlane:float) -> PySide2.QtGui.QTransform: ... + @typing.overload + def translate(self, vector:PySide2.QtGui.QVector3D) -> None: ... + @typing.overload + def translate(self, x:float, y:float) -> None: ... + @typing.overload + def translate(self, x:float, y:float, z:float) -> None: ... + def transposed(self) -> PySide2.QtGui.QMatrix4x4: ... + @typing.overload + def viewport(self, left:float, bottom:float, width:float, height:float, nearPlane:float=..., farPlane:float=...) -> None: ... + @typing.overload + def viewport(self, rect:PySide2.QtCore.QRectF) -> None: ... + + +class QMouseEvent(PySide2.QtGui.QInputEvent): + + @typing.overload + def __init__(self, type:PySide2.QtCore.QEvent.Type, localPos:PySide2.QtCore.QPointF, button:PySide2.QtCore.Qt.MouseButton, buttons:PySide2.QtCore.Qt.MouseButtons, modifiers:PySide2.QtCore.Qt.KeyboardModifiers) -> None: ... + @typing.overload + def __init__(self, type:PySide2.QtCore.QEvent.Type, localPos:PySide2.QtCore.QPointF, screenPos:PySide2.QtCore.QPointF, button:PySide2.QtCore.Qt.MouseButton, buttons:PySide2.QtCore.Qt.MouseButtons, modifiers:PySide2.QtCore.Qt.KeyboardModifiers) -> None: ... + @typing.overload + def __init__(self, type:PySide2.QtCore.QEvent.Type, localPos:PySide2.QtCore.QPointF, windowPos:PySide2.QtCore.QPointF, screenPos:PySide2.QtCore.QPointF, button:PySide2.QtCore.Qt.MouseButton, buttons:PySide2.QtCore.Qt.MouseButtons, modifiers:PySide2.QtCore.Qt.KeyboardModifiers) -> None: ... + @typing.overload + def __init__(self, type:PySide2.QtCore.QEvent.Type, localPos:PySide2.QtCore.QPointF, windowPos:PySide2.QtCore.QPointF, screenPos:PySide2.QtCore.QPointF, button:PySide2.QtCore.Qt.MouseButton, buttons:PySide2.QtCore.Qt.MouseButtons, modifiers:PySide2.QtCore.Qt.KeyboardModifiers, source:PySide2.QtCore.Qt.MouseEventSource) -> None: ... + + def button(self) -> PySide2.QtCore.Qt.MouseButton: ... + def buttons(self) -> PySide2.QtCore.Qt.MouseButtons: ... + def flags(self) -> PySide2.QtCore.Qt.MouseEventFlags: ... + def globalPos(self) -> PySide2.QtCore.QPoint: ... + def globalX(self) -> int: ... + def globalY(self) -> int: ... + def localPos(self) -> PySide2.QtCore.QPointF: ... + def pos(self) -> PySide2.QtCore.QPoint: ... + def screenPos(self) -> PySide2.QtCore.QPointF: ... + def setLocalPos(self, localPosition:PySide2.QtCore.QPointF) -> None: ... + def source(self) -> PySide2.QtCore.Qt.MouseEventSource: ... + def windowPos(self) -> PySide2.QtCore.QPointF: ... + def x(self) -> int: ... + def y(self) -> int: ... + + +class QMoveEvent(PySide2.QtCore.QEvent): + + def __init__(self, pos:PySide2.QtCore.QPoint, oldPos:PySide2.QtCore.QPoint) -> None: ... + + def oldPos(self) -> PySide2.QtCore.QPoint: ... + def pos(self) -> PySide2.QtCore.QPoint: ... + + +class QMovie(PySide2.QtCore.QObject): + CacheNone : QMovie = ... # 0x0 + NotRunning : QMovie = ... # 0x0 + CacheAll : QMovie = ... # 0x1 + Paused : QMovie = ... # 0x1 + Running : QMovie = ... # 0x2 + + class CacheMode(object): + CacheNone : QMovie.CacheMode = ... # 0x0 + CacheAll : QMovie.CacheMode = ... # 0x1 + + class MovieState(object): + NotRunning : QMovie.MovieState = ... # 0x0 + Paused : QMovie.MovieState = ... # 0x1 + Running : QMovie.MovieState = ... # 0x2 + + @typing.overload + def __init__(self, device:PySide2.QtCore.QIODevice, format:PySide2.QtCore.QByteArray=..., parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, fileName:str, format:PySide2.QtCore.QByteArray=..., parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def backgroundColor(self) -> PySide2.QtGui.QColor: ... + def cacheMode(self) -> PySide2.QtGui.QMovie.CacheMode: ... + def currentFrameNumber(self) -> int: ... + def currentImage(self) -> PySide2.QtGui.QImage: ... + def currentPixmap(self) -> PySide2.QtGui.QPixmap: ... + def device(self) -> PySide2.QtCore.QIODevice: ... + def fileName(self) -> str: ... + def format(self) -> PySide2.QtCore.QByteArray: ... + def frameCount(self) -> int: ... + def frameRect(self) -> PySide2.QtCore.QRect: ... + def isValid(self) -> bool: ... + def jumpToFrame(self, frameNumber:int) -> bool: ... + def jumpToNextFrame(self) -> bool: ... + def lastError(self) -> PySide2.QtGui.QImageReader.ImageReaderError: ... + def lastErrorString(self) -> str: ... + def loopCount(self) -> int: ... + def nextFrameDelay(self) -> int: ... + def scaledSize(self) -> PySide2.QtCore.QSize: ... + def setBackgroundColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setCacheMode(self, mode:PySide2.QtGui.QMovie.CacheMode) -> None: ... + def setDevice(self, device:PySide2.QtCore.QIODevice) -> None: ... + def setFileName(self, fileName:str) -> None: ... + def setFormat(self, format:PySide2.QtCore.QByteArray) -> None: ... + def setPaused(self, paused:bool) -> None: ... + def setScaledSize(self, size:PySide2.QtCore.QSize) -> None: ... + def setSpeed(self, percentSpeed:int) -> None: ... + def speed(self) -> int: ... + def start(self) -> None: ... + def state(self) -> PySide2.QtGui.QMovie.MovieState: ... + def stop(self) -> None: ... + @staticmethod + def supportedFormats() -> typing.List: ... + + +class QNativeGestureEvent(PySide2.QtGui.QInputEvent): + + @typing.overload + def __init__(self, type:PySide2.QtCore.Qt.NativeGestureType, dev:PySide2.QtGui.QTouchDevice, localPos:PySide2.QtCore.QPointF, windowPos:PySide2.QtCore.QPointF, screenPos:PySide2.QtCore.QPointF, value:float, sequenceId:int, intArgument:int) -> None: ... + @typing.overload + def __init__(self, type:PySide2.QtCore.Qt.NativeGestureType, localPos:PySide2.QtCore.QPointF, windowPos:PySide2.QtCore.QPointF, screenPos:PySide2.QtCore.QPointF, value:float, sequenceId:int, intArgument:int) -> None: ... + + def device(self) -> PySide2.QtGui.QTouchDevice: ... + def gestureType(self) -> PySide2.QtCore.Qt.NativeGestureType: ... + def globalPos(self) -> PySide2.QtCore.QPoint: ... + def localPos(self) -> PySide2.QtCore.QPointF: ... + def pos(self) -> PySide2.QtCore.QPoint: ... + def screenPos(self) -> PySide2.QtCore.QPointF: ... + def value(self) -> float: ... + def windowPos(self) -> PySide2.QtCore.QPointF: ... + + +class QOffscreenSurface(PySide2.QtCore.QObject, PySide2.QtGui.QSurface): + + @typing.overload + def __init__(self, screen:PySide2.QtGui.QScreen, parent:PySide2.QtCore.QObject) -> None: ... + @typing.overload + def __init__(self, screen:typing.Optional[PySide2.QtGui.QScreen]=...) -> None: ... + + def create(self) -> None: ... + def destroy(self) -> None: ... + def format(self) -> PySide2.QtGui.QSurfaceFormat: ... + def isValid(self) -> bool: ... + def nativeHandle(self) -> int: ... + def requestedFormat(self) -> PySide2.QtGui.QSurfaceFormat: ... + def screen(self) -> PySide2.QtGui.QScreen: ... + def setFormat(self, format:PySide2.QtGui.QSurfaceFormat) -> None: ... + def setNativeHandle(self, handle:int) -> None: ... + def setScreen(self, screen:PySide2.QtGui.QScreen) -> None: ... + def size(self) -> PySide2.QtCore.QSize: ... + def surfaceHandle(self) -> int: ... + def surfaceType(self) -> PySide2.QtGui.QSurface.SurfaceType: ... + + +class QOpenGLBuffer(Shiboken.Object): + RangeRead : QOpenGLBuffer = ... # 0x1 + RangeWrite : QOpenGLBuffer = ... # 0x2 + RangeInvalidate : QOpenGLBuffer = ... # 0x4 + RangeInvalidateBuffer : QOpenGLBuffer = ... # 0x8 + RangeFlushExplicit : QOpenGLBuffer = ... # 0x10 + RangeUnsynchronized : QOpenGLBuffer = ... # 0x20 + VertexBuffer : QOpenGLBuffer = ... # 0x8892 + IndexBuffer : QOpenGLBuffer = ... # 0x8893 + ReadOnly : QOpenGLBuffer = ... # 0x88b8 + WriteOnly : QOpenGLBuffer = ... # 0x88b9 + ReadWrite : QOpenGLBuffer = ... # 0x88ba + StreamDraw : QOpenGLBuffer = ... # 0x88e0 + StreamRead : QOpenGLBuffer = ... # 0x88e1 + StreamCopy : QOpenGLBuffer = ... # 0x88e2 + StaticDraw : QOpenGLBuffer = ... # 0x88e4 + StaticRead : QOpenGLBuffer = ... # 0x88e5 + StaticCopy : QOpenGLBuffer = ... # 0x88e6 + DynamicDraw : QOpenGLBuffer = ... # 0x88e8 + DynamicRead : QOpenGLBuffer = ... # 0x88e9 + DynamicCopy : QOpenGLBuffer = ... # 0x88ea + PixelPackBuffer : QOpenGLBuffer = ... # 0x88eb + PixelUnpackBuffer : QOpenGLBuffer = ... # 0x88ec + + class Access(object): + ReadOnly : QOpenGLBuffer.Access = ... # 0x88b8 + WriteOnly : QOpenGLBuffer.Access = ... # 0x88b9 + ReadWrite : QOpenGLBuffer.Access = ... # 0x88ba + + class RangeAccessFlag(object): + RangeRead : QOpenGLBuffer.RangeAccessFlag = ... # 0x1 + RangeWrite : QOpenGLBuffer.RangeAccessFlag = ... # 0x2 + RangeInvalidate : QOpenGLBuffer.RangeAccessFlag = ... # 0x4 + RangeInvalidateBuffer : QOpenGLBuffer.RangeAccessFlag = ... # 0x8 + RangeFlushExplicit : QOpenGLBuffer.RangeAccessFlag = ... # 0x10 + RangeUnsynchronized : QOpenGLBuffer.RangeAccessFlag = ... # 0x20 + + class RangeAccessFlags(object): ... + + class Type(object): + VertexBuffer : QOpenGLBuffer.Type = ... # 0x8892 + IndexBuffer : QOpenGLBuffer.Type = ... # 0x8893 + PixelPackBuffer : QOpenGLBuffer.Type = ... # 0x88eb + PixelUnpackBuffer : QOpenGLBuffer.Type = ... # 0x88ec + + class UsagePattern(object): + StreamDraw : QOpenGLBuffer.UsagePattern = ... # 0x88e0 + StreamRead : QOpenGLBuffer.UsagePattern = ... # 0x88e1 + StreamCopy : QOpenGLBuffer.UsagePattern = ... # 0x88e2 + StaticDraw : QOpenGLBuffer.UsagePattern = ... # 0x88e4 + StaticRead : QOpenGLBuffer.UsagePattern = ... # 0x88e5 + StaticCopy : QOpenGLBuffer.UsagePattern = ... # 0x88e6 + DynamicDraw : QOpenGLBuffer.UsagePattern = ... # 0x88e8 + DynamicRead : QOpenGLBuffer.UsagePattern = ... # 0x88e9 + DynamicCopy : QOpenGLBuffer.UsagePattern = ... # 0x88ea + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtGui.QOpenGLBuffer) -> None: ... + @typing.overload + def __init__(self, type:PySide2.QtGui.QOpenGLBuffer.Type) -> None: ... + + @typing.overload + def allocate(self, count:int) -> None: ... + @typing.overload + def allocate(self, data:int, count:int) -> None: ... + def bind(self) -> bool: ... + def bufferId(self) -> int: ... + def create(self) -> bool: ... + def destroy(self) -> None: ... + def isCreated(self) -> bool: ... + def map(self, access:PySide2.QtGui.QOpenGLBuffer.Access) -> int: ... + def mapRange(self, offset:int, count:int, access:PySide2.QtGui.QOpenGLBuffer.RangeAccessFlags) -> int: ... + def read(self, offset:int, data:int, count:int) -> bool: ... + @typing.overload + def release(self) -> None: ... + @typing.overload + @staticmethod + def release(type:PySide2.QtGui.QOpenGLBuffer.Type) -> None: ... + def setUsagePattern(self, value:PySide2.QtGui.QOpenGLBuffer.UsagePattern) -> None: ... + def size(self) -> int: ... + def type(self) -> PySide2.QtGui.QOpenGLBuffer.Type: ... + def unmap(self) -> bool: ... + def usagePattern(self) -> PySide2.QtGui.QOpenGLBuffer.UsagePattern: ... + def write(self, offset:int, data:int, count:int) -> None: ... + + +class QOpenGLContext(PySide2.QtCore.QObject): + LibGL : QOpenGLContext = ... # 0x0 + LibGLES : QOpenGLContext = ... # 0x1 + + class OpenGLModuleType(object): + LibGL : QOpenGLContext.OpenGLModuleType = ... # 0x0 + LibGLES : QOpenGLContext.OpenGLModuleType = ... # 0x1 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + @staticmethod + def areSharing(first:PySide2.QtGui.QOpenGLContext, second:PySide2.QtGui.QOpenGLContext) -> bool: ... + def create(self) -> bool: ... + @staticmethod + def currentContext() -> PySide2.QtGui.QOpenGLContext: ... + def defaultFramebufferObject(self) -> int: ... + def doneCurrent(self) -> None: ... + def extensions(self) -> typing.Set: ... + def extraFunctions(self) -> PySide2.QtGui.QOpenGLExtraFunctions: ... + def format(self) -> PySide2.QtGui.QSurfaceFormat: ... + def functions(self) -> PySide2.QtGui.QOpenGLFunctions: ... + @staticmethod + def globalShareContext() -> PySide2.QtGui.QOpenGLContext: ... + def hasExtension(self, extension:PySide2.QtCore.QByteArray) -> bool: ... + def isOpenGLES(self) -> bool: ... + def isValid(self) -> bool: ... + def makeCurrent(self, surface:PySide2.QtGui.QSurface) -> bool: ... + def nativeHandle(self) -> typing.Any: ... + @staticmethod + def openGLModuleHandle() -> int: ... + @staticmethod + def openGLModuleType() -> PySide2.QtGui.QOpenGLContext.OpenGLModuleType: ... + def screen(self) -> PySide2.QtGui.QScreen: ... + def setFormat(self, format:PySide2.QtGui.QSurfaceFormat) -> None: ... + def setNativeHandle(self, handle:typing.Any) -> None: ... + def setScreen(self, screen:PySide2.QtGui.QScreen) -> None: ... + def setShareContext(self, shareContext:PySide2.QtGui.QOpenGLContext) -> None: ... + def shareContext(self) -> PySide2.QtGui.QOpenGLContext: ... + def shareGroup(self) -> PySide2.QtGui.QOpenGLContextGroup: ... + @staticmethod + def supportsThreadedOpenGL() -> bool: ... + def surface(self) -> PySide2.QtGui.QSurface: ... + def swapBuffers(self, surface:PySide2.QtGui.QSurface) -> None: ... + def versionFunctions(self, versionProfile:PySide2.QtGui.QOpenGLVersionProfile=...) -> PySide2.QtGui.QAbstractOpenGLFunctions: ... + + +class QOpenGLContextGroup(PySide2.QtCore.QObject): + @staticmethod + def currentContextGroup() -> PySide2.QtGui.QOpenGLContextGroup: ... + def shares(self) -> typing.List: ... + + +class QOpenGLDebugLogger(PySide2.QtCore.QObject): + AsynchronousLogging : QOpenGLDebugLogger = ... # 0x0 + SynchronousLogging : QOpenGLDebugLogger = ... # 0x1 + + class LoggingMode(object): + AsynchronousLogging : QOpenGLDebugLogger.LoggingMode = ... # 0x0 + SynchronousLogging : QOpenGLDebugLogger.LoggingMode = ... # 0x1 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + @typing.overload + def disableMessages(self, ids:typing.List, sources:PySide2.QtGui.QOpenGLDebugMessage.Sources=..., types:PySide2.QtGui.QOpenGLDebugMessage.Types=...) -> None: ... + @typing.overload + def disableMessages(self, sources:PySide2.QtGui.QOpenGLDebugMessage.Sources=..., types:PySide2.QtGui.QOpenGLDebugMessage.Types=..., severities:PySide2.QtGui.QOpenGLDebugMessage.Severities=...) -> None: ... + @typing.overload + def enableMessages(self, ids:typing.List, sources:PySide2.QtGui.QOpenGLDebugMessage.Sources=..., types:PySide2.QtGui.QOpenGLDebugMessage.Types=...) -> None: ... + @typing.overload + def enableMessages(self, sources:PySide2.QtGui.QOpenGLDebugMessage.Sources=..., types:PySide2.QtGui.QOpenGLDebugMessage.Types=..., severities:PySide2.QtGui.QOpenGLDebugMessage.Severities=...) -> None: ... + def initialize(self) -> bool: ... + def isLogging(self) -> bool: ... + def logMessage(self, debugMessage:PySide2.QtGui.QOpenGLDebugMessage) -> None: ... + def loggedMessages(self) -> typing.List: ... + def loggingMode(self) -> PySide2.QtGui.QOpenGLDebugLogger.LoggingMode: ... + def maximumMessageLength(self) -> int: ... + def popGroup(self) -> None: ... + def pushGroup(self, name:str, id:int=..., source:PySide2.QtGui.QOpenGLDebugMessage.Source=...) -> None: ... + def startLogging(self, loggingMode:PySide2.QtGui.QOpenGLDebugLogger.LoggingMode=...) -> None: ... + def stopLogging(self) -> None: ... + + +class QOpenGLDebugMessage(Shiboken.Object): + AnySeverity : QOpenGLDebugMessage = ... # -0x1 + AnySource : QOpenGLDebugMessage = ... # -0x1 + AnyType : QOpenGLDebugMessage = ... # -0x1 + InvalidSeverity : QOpenGLDebugMessage = ... # 0x0 + InvalidSource : QOpenGLDebugMessage = ... # 0x0 + InvalidType : QOpenGLDebugMessage = ... # 0x0 + APISource : QOpenGLDebugMessage = ... # 0x1 + ErrorType : QOpenGLDebugMessage = ... # 0x1 + HighSeverity : QOpenGLDebugMessage = ... # 0x1 + DeprecatedBehaviorType : QOpenGLDebugMessage = ... # 0x2 + MediumSeverity : QOpenGLDebugMessage = ... # 0x2 + WindowSystemSource : QOpenGLDebugMessage = ... # 0x2 + LowSeverity : QOpenGLDebugMessage = ... # 0x4 + ShaderCompilerSource : QOpenGLDebugMessage = ... # 0x4 + UndefinedBehaviorType : QOpenGLDebugMessage = ... # 0x4 + LastSeverity : QOpenGLDebugMessage = ... # 0x8 + NotificationSeverity : QOpenGLDebugMessage = ... # 0x8 + PortabilityType : QOpenGLDebugMessage = ... # 0x8 + ThirdPartySource : QOpenGLDebugMessage = ... # 0x8 + ApplicationSource : QOpenGLDebugMessage = ... # 0x10 + PerformanceType : QOpenGLDebugMessage = ... # 0x10 + LastSource : QOpenGLDebugMessage = ... # 0x20 + OtherSource : QOpenGLDebugMessage = ... # 0x20 + OtherType : QOpenGLDebugMessage = ... # 0x20 + MarkerType : QOpenGLDebugMessage = ... # 0x40 + GroupPushType : QOpenGLDebugMessage = ... # 0x80 + GroupPopType : QOpenGLDebugMessage = ... # 0x100 + LastType : QOpenGLDebugMessage = ... # 0x100 + + class Severities(object): ... + + class Severity(object): + AnySeverity : QOpenGLDebugMessage.Severity = ... # -0x1 + InvalidSeverity : QOpenGLDebugMessage.Severity = ... # 0x0 + HighSeverity : QOpenGLDebugMessage.Severity = ... # 0x1 + MediumSeverity : QOpenGLDebugMessage.Severity = ... # 0x2 + LowSeverity : QOpenGLDebugMessage.Severity = ... # 0x4 + LastSeverity : QOpenGLDebugMessage.Severity = ... # 0x8 + NotificationSeverity : QOpenGLDebugMessage.Severity = ... # 0x8 + + class Source(object): + AnySource : QOpenGLDebugMessage.Source = ... # -0x1 + InvalidSource : QOpenGLDebugMessage.Source = ... # 0x0 + APISource : QOpenGLDebugMessage.Source = ... # 0x1 + WindowSystemSource : QOpenGLDebugMessage.Source = ... # 0x2 + ShaderCompilerSource : QOpenGLDebugMessage.Source = ... # 0x4 + ThirdPartySource : QOpenGLDebugMessage.Source = ... # 0x8 + ApplicationSource : QOpenGLDebugMessage.Source = ... # 0x10 + LastSource : QOpenGLDebugMessage.Source = ... # 0x20 + OtherSource : QOpenGLDebugMessage.Source = ... # 0x20 + + class Sources(object): ... + + class Type(object): + AnyType : QOpenGLDebugMessage.Type = ... # -0x1 + InvalidType : QOpenGLDebugMessage.Type = ... # 0x0 + ErrorType : QOpenGLDebugMessage.Type = ... # 0x1 + DeprecatedBehaviorType : QOpenGLDebugMessage.Type = ... # 0x2 + UndefinedBehaviorType : QOpenGLDebugMessage.Type = ... # 0x4 + PortabilityType : QOpenGLDebugMessage.Type = ... # 0x8 + PerformanceType : QOpenGLDebugMessage.Type = ... # 0x10 + OtherType : QOpenGLDebugMessage.Type = ... # 0x20 + MarkerType : QOpenGLDebugMessage.Type = ... # 0x40 + GroupPushType : QOpenGLDebugMessage.Type = ... # 0x80 + GroupPopType : QOpenGLDebugMessage.Type = ... # 0x100 + LastType : QOpenGLDebugMessage.Type = ... # 0x100 + + class Types(object): ... + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, debugMessage:PySide2.QtGui.QOpenGLDebugMessage) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @staticmethod + def createApplicationMessage(text:str, id:int=..., severity:PySide2.QtGui.QOpenGLDebugMessage.Severity=..., type:PySide2.QtGui.QOpenGLDebugMessage.Type=...) -> PySide2.QtGui.QOpenGLDebugMessage: ... + @staticmethod + def createThirdPartyMessage(text:str, id:int=..., severity:PySide2.QtGui.QOpenGLDebugMessage.Severity=..., type:PySide2.QtGui.QOpenGLDebugMessage.Type=...) -> PySide2.QtGui.QOpenGLDebugMessage: ... + def id(self) -> int: ... + def message(self) -> str: ... + def severity(self) -> PySide2.QtGui.QOpenGLDebugMessage.Severity: ... + def source(self) -> PySide2.QtGui.QOpenGLDebugMessage.Source: ... + def swap(self, other:PySide2.QtGui.QOpenGLDebugMessage) -> None: ... + def type(self) -> PySide2.QtGui.QOpenGLDebugMessage.Type: ... + + +class QOpenGLExtraFunctions(PySide2.QtGui.QOpenGLFunctions): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, context:PySide2.QtGui.QOpenGLContext) -> None: ... + + def glActiveShaderProgram(self, pipeline:int, program:int) -> None: ... + def glBeginQuery(self, target:int, id:int) -> None: ... + def glBeginTransformFeedback(self, primitiveMode:int) -> None: ... + def glBindBufferBase(self, target:int, index:int, buffer:int) -> None: ... + def glBindImageTexture(self, unit:int, texture:int, level:int, layered:int, layer:int, access:int, format:int) -> None: ... + def glBindProgramPipeline(self, pipeline:int) -> None: ... + def glBindSampler(self, unit:int, sampler:int) -> None: ... + def glBindTransformFeedback(self, target:int, id:int) -> None: ... + def glBindVertexArray(self, array:int) -> None: ... + def glBlendBarrier(self) -> None: ... + def glBlendEquationSeparatei(self, buf:int, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendEquationi(self, buf:int, mode:int) -> None: ... + def glBlendFuncSeparatei(self, buf:int, srcRGB:int, dstRGB:int, srcAlpha:int, dstAlpha:int) -> None: ... + def glBlendFunci(self, buf:int, src:int, dst:int) -> None: ... + def glBlitFramebuffer(self, srcX0:int, srcY0:int, srcX1:int, srcY1:int, dstX0:int, dstY0:int, dstX1:int, dstY1:int, mask:int, filter:int) -> None: ... + def glClearBufferfi(self, buffer:int, drawbuffer:int, depth:float, stencil:int) -> None: ... + def glClearBufferfv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferuiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glColorMaski(self, index:int, r:int, g:int, b:int, a:int) -> None: ... + def glCompressedTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, imageSize:int, data:int) -> None: ... + def glCopyImageSubData(self, srcName:int, srcTarget:int, srcLevel:int, srcX:int, srcY:int, srcZ:int, dstName:int, dstTarget:int, dstLevel:int, dstX:int, dstY:int, dstZ:int, srcWidth:int, srcHeight:int, srcDepth:int) -> None: ... + def glCopyTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glDebugMessageControl(self, source:int, type:int, severity:int, count:int, ids:typing.Sequence, enabled:int) -> None: ... + def glDebugMessageInsert(self, source:int, type:int, id:int, severity:int, length:int, buf:bytes) -> None: ... + def glDeleteProgramPipelines(self, n:int, pipelines:typing.Sequence) -> None: ... + def glDeleteQueries(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteSamplers(self, count:int, samplers:typing.Sequence) -> None: ... + def glDeleteTransformFeedbacks(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteVertexArrays(self, n:int, arrays:typing.Sequence) -> None: ... + def glDisablei(self, target:int, index:int) -> None: ... + def glDispatchCompute(self, num_groups_x:int, num_groups_y:int, num_groups_z:int) -> None: ... + def glDrawArraysIndirect(self, mode:int, indirect:int) -> None: ... + def glDrawArraysInstanced(self, mode:int, first:int, count:int, instancecount:int) -> None: ... + def glDrawBuffers(self, n:int, bufs:typing.Sequence) -> None: ... + def glDrawElementsBaseVertex(self, mode:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glDrawElementsIndirect(self, mode:int, type:int, indirect:int) -> None: ... + def glDrawElementsInstanced(self, mode:int, count:int, type:int, indices:int, instancecount:int) -> None: ... + def glDrawElementsInstancedBaseVertex(self, mode:int, count:int, type:int, indices:int, instancecount:int, basevertex:int) -> None: ... + def glDrawRangeElements(self, mode:int, start:int, end:int, count:int, type:int, indices:int) -> None: ... + def glDrawRangeElementsBaseVertex(self, mode:int, start:int, end:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glEnablei(self, target:int, index:int) -> None: ... + def glEndQuery(self, target:int) -> None: ... + def glFramebufferParameteri(self, target:int, pname:int, param:int) -> None: ... + def glFramebufferTexture(self, target:int, attachment:int, texture:int, level:int) -> None: ... + def glFramebufferTextureLayer(self, target:int, attachment:int, texture:int, level:int, layer:int) -> None: ... + def glGenProgramPipelines(self, n:int, pipelines:typing.Sequence) -> None: ... + def glGenQueries(self, n:int, ids:typing.Sequence) -> None: ... + def glGenSamplers(self, count:int, samplers:typing.Sequence) -> None: ... + def glGenTransformFeedbacks(self, n:int, ids:typing.Sequence) -> None: ... + def glGenVertexArrays(self, n:int, arrays:typing.Sequence) -> None: ... + def glGetActiveUniformBlockiv(self, program:int, uniformBlockIndex:int, pname:int, params:typing.Sequence) -> None: ... + def glGetActiveUniformsiv(self, program:int, uniformCount:int, uniformIndices:typing.Sequence, pname:int, params:typing.Sequence) -> None: ... + def glGetBufferParameteri64v(self, target:int, pname:int) -> int: ... + def glGetFragDataLocation(self, program:int, name:bytes) -> int: ... + def glGetFramebufferParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glGetGraphicsResetStatus(self) -> int: ... + def glGetInteger64i_v(self, target:int, index:int) -> int: ... + def glGetInteger64v(self, pname:int) -> int: ... + def glGetIntegeri_v(self, target:int, index:int, data:typing.Sequence) -> None: ... + def glGetInternalformativ(self, target:int, internalformat:int, pname:int, bufSize:int, params:typing.Sequence) -> None: ... + def glGetMultisamplefv(self, pname:int, index:int, val:typing.Sequence) -> None: ... + def glGetProgramBinary(self, program:int, bufSize:int, binary:int) -> typing.Tuple: ... + def glGetProgramInterfaceiv(self, program:int, programInterface:int, pname:int, params:typing.Sequence) -> None: ... + def glGetProgramPipelineiv(self, pipeline:int, pname:int, params:typing.Sequence) -> None: ... + def glGetProgramResourceIndex(self, program:int, programInterface:int, name:bytes) -> int: ... + def glGetProgramResourceLocation(self, program:int, programInterface:int, name:bytes) -> int: ... + def glGetProgramResourceiv(self, program:int, programInterface:int, index:int, propCount:int, props:typing.Sequence, bufSize:int, length:typing.Sequence, params:typing.Sequence) -> None: ... + def glGetQueryObjectuiv(self, id:int, pname:int, params:typing.Sequence) -> None: ... + def glGetQueryiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glGetSamplerParameterIiv(self, sampler:int, pname:int) -> int: ... + def glGetSamplerParameterIuiv(self, sampler:int, pname:int) -> int: ... + def glGetSamplerParameterfv(self, sampler:int, pname:int, params:typing.Sequence) -> None: ... + def glGetSamplerParameteriv(self, sampler:int, pname:int, params:typing.Sequence) -> None: ... + def glGetStringi(self, name:int, index:int) -> bytes: ... + def glGetTexLevelParameterfv(self, target:int, level:int, pname:int, params:typing.Sequence) -> None: ... + def glGetTexLevelParameteriv(self, target:int, level:int, pname:int, params:typing.Sequence) -> None: ... + def glGetTexParameterIiv(self, target:int, pname:int) -> int: ... + def glGetTexParameterIuiv(self, target:int, pname:int) -> int: ... + def glGetUniformBlockIndex(self, program:int, uniformBlockName:bytes) -> int: ... + def glGetUniformuiv(self, program:int, location:int, params:typing.Sequence) -> None: ... + def glGetVertexAttribIiv(self, index:int, pname:int, params:typing.Sequence) -> None: ... + def glGetVertexAttribIuiv(self, index:int, pname:int, params:typing.Sequence) -> None: ... + def glGetnUniformfv(self, program:int, location:int, bufSize:int) -> float: ... + def glGetnUniformiv(self, program:int, location:int, bufSize:int) -> int: ... + def glGetnUniformuiv(self, program:int, location:int, bufSize:int) -> int: ... + def glInvalidateFramebuffer(self, target:int, numAttachments:int, attachments:typing.Sequence) -> None: ... + def glInvalidateSubFramebuffer(self, target:int, numAttachments:int, attachments:typing.Sequence, x:int, y:int, width:int, height:int) -> None: ... + def glIsEnabledi(self, target:int, index:int) -> int: ... + def glIsProgramPipeline(self, pipeline:int) -> int: ... + def glIsQuery(self, id:int) -> int: ... + def glIsSampler(self, sampler:int) -> int: ... + def glIsTransformFeedback(self, id:int) -> int: ... + def glIsVertexArray(self, array:int) -> int: ... + def glMemoryBarrier(self, barriers:int) -> None: ... + def glMemoryBarrierByRegion(self, barriers:int) -> None: ... + def glMinSampleShading(self, value:float) -> None: ... + def glObjectLabel(self, identifier:int, name:int, length:int, label:bytes) -> None: ... + def glObjectPtrLabel(self, ptr:int, length:int, label:bytes) -> None: ... + def glPatchParameteri(self, pname:int, value:int) -> None: ... + def glPopDebugGroup(self) -> None: ... + def glPrimitiveBoundingBox(self, minX:float, minY:float, minZ:float, minW:float, maxX:float, maxY:float, maxZ:float, maxW:float) -> None: ... + def glProgramBinary(self, program:int, binaryFormat:int, binary:int, length:int) -> None: ... + def glProgramParameteri(self, program:int, pname:int, value:int) -> None: ... + def glProgramUniform1f(self, program:int, location:int, v0:float) -> None: ... + def glProgramUniform1fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1i(self, program:int, location:int, v0:int) -> None: ... + def glProgramUniform1iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1ui(self, program:int, location:int, v0:int) -> None: ... + def glProgramUniform1uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2f(self, program:int, location:int, v0:float, v1:float) -> None: ... + def glProgramUniform2fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2i(self, program:int, location:int, v0:int, v1:int) -> None: ... + def glProgramUniform2iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2ui(self, program:int, location:int, v0:int, v1:int) -> None: ... + def glProgramUniform2uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3f(self, program:int, location:int, v0:float, v1:float, v2:float) -> None: ... + def glProgramUniform3fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3i(self, program:int, location:int, v0:int, v1:int, v2:int) -> None: ... + def glProgramUniform3iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3ui(self, program:int, location:int, v0:int, v1:int, v2:int) -> None: ... + def glProgramUniform3uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4f(self, program:int, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glProgramUniform4fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4i(self, program:int, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glProgramUniform4iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4ui(self, program:int, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glProgramUniform4uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glPushDebugGroup(self, source:int, id:int, length:int, message:bytes) -> None: ... + def glReadBuffer(self, mode:int) -> None: ... + def glReadnPixels(self, x:int, y:int, width:int, height:int, format:int, type:int, bufSize:int, data:int) -> None: ... + def glRenderbufferStorageMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int) -> None: ... + def glSampleMaski(self, maskNumber:int, mask:int) -> None: ... + def glSamplerParameterIiv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameterIuiv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameterf(self, sampler:int, pname:int, param:float) -> None: ... + def glSamplerParameterfv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameteri(self, sampler:int, pname:int, param:int) -> None: ... + def glSamplerParameteriv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glTexBuffer(self, target:int, internalformat:int, buffer:int) -> None: ... + def glTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexParameterIiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterIuiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexStorage2D(self, target:int, levels:int, internalformat:int, width:int, height:int) -> None: ... + def glTexStorage2DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, fixedsamplelocations:int) -> None: ... + def glTexStorage3D(self, target:int, levels:int, internalformat:int, width:int, height:int, depth:int) -> None: ... + def glTexStorage3DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, depth:int, fixedsamplelocations:int) -> None: ... + def glTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, pixels:int) -> None: ... + def glUniform1ui(self, location:int, v0:int) -> None: ... + def glUniform1uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2ui(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3ui(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4ui(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniformBlockBinding(self, program:int, uniformBlockIndex:int, uniformBlockBinding:int) -> None: ... + def glUniformMatrix2x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUnmapBuffer(self, target:int) -> int: ... + def glUseProgramStages(self, pipeline:int, stages:int, program:int) -> None: ... + def glValidateProgramPipeline(self, pipeline:int) -> None: ... + def glVertexAttribBinding(self, attribindex:int, bindingindex:int) -> None: ... + def glVertexAttribDivisor(self, index:int, divisor:int) -> None: ... + def glVertexAttribFormat(self, attribindex:int, size:int, type:int, normalized:int, relativeoffset:int) -> None: ... + def glVertexAttribI4i(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttribI4iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4ui(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttribI4uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribIFormat(self, attribindex:int, size:int, type:int, relativeoffset:int) -> None: ... + def glVertexAttribIPointer(self, index:int, size:int, type:int, stride:int, pointer:int) -> None: ... + def glVertexBindingDivisor(self, bindingindex:int, divisor:int) -> None: ... + + +class QOpenGLFramebufferObject(Shiboken.Object): + DontRestoreFramebufferBinding: QOpenGLFramebufferObject = ... # 0x0 + NoAttachment : QOpenGLFramebufferObject = ... # 0x0 + CombinedDepthStencil : QOpenGLFramebufferObject = ... # 0x1 + RestoreFramebufferBindingToDefault: QOpenGLFramebufferObject = ... # 0x1 + Depth : QOpenGLFramebufferObject = ... # 0x2 + RestoreFrameBufferBinding: QOpenGLFramebufferObject = ... # 0x2 + + class Attachment(object): + NoAttachment : QOpenGLFramebufferObject.Attachment = ... # 0x0 + CombinedDepthStencil : QOpenGLFramebufferObject.Attachment = ... # 0x1 + Depth : QOpenGLFramebufferObject.Attachment = ... # 0x2 + + class FramebufferRestorePolicy(object): + DontRestoreFramebufferBinding: QOpenGLFramebufferObject.FramebufferRestorePolicy = ... # 0x0 + RestoreFramebufferBindingToDefault: QOpenGLFramebufferObject.FramebufferRestorePolicy = ... # 0x1 + RestoreFrameBufferBinding: QOpenGLFramebufferObject.FramebufferRestorePolicy = ... # 0x2 + + @typing.overload + def __init__(self, size:PySide2.QtCore.QSize, attachment:PySide2.QtGui.QOpenGLFramebufferObject.Attachment, target:int=..., internalFormat:int=...) -> None: ... + @typing.overload + def __init__(self, size:PySide2.QtCore.QSize, format:PySide2.QtGui.QOpenGLFramebufferObjectFormat) -> None: ... + @typing.overload + def __init__(self, size:PySide2.QtCore.QSize, target:int=...) -> None: ... + @typing.overload + def __init__(self, width:int, height:int, attachment:PySide2.QtGui.QOpenGLFramebufferObject.Attachment, target:int=..., internalFormat:int=...) -> None: ... + @typing.overload + def __init__(self, width:int, height:int, format:PySide2.QtGui.QOpenGLFramebufferObjectFormat) -> None: ... + @typing.overload + def __init__(self, width:int, height:int, target:int=...) -> None: ... + + @typing.overload + def addColorAttachment(self, size:PySide2.QtCore.QSize, internalFormat:int=...) -> None: ... + @typing.overload + def addColorAttachment(self, width:int, height:int, internalFormat:int=...) -> None: ... + def attachment(self) -> PySide2.QtGui.QOpenGLFramebufferObject.Attachment: ... + def bind(self) -> bool: ... + @staticmethod + def bindDefault() -> bool: ... + @typing.overload + @staticmethod + def blitFramebuffer(target:PySide2.QtGui.QOpenGLFramebufferObject, source:PySide2.QtGui.QOpenGLFramebufferObject, buffers:int=..., filter:int=...) -> None: ... + @typing.overload + @staticmethod + def blitFramebuffer(target:PySide2.QtGui.QOpenGLFramebufferObject, targetRect:PySide2.QtCore.QRect, source:PySide2.QtGui.QOpenGLFramebufferObject, sourceRect:PySide2.QtCore.QRect, buffers:int, filter:int, readColorAttachmentIndex:int, drawColorAttachmentIndex:int) -> None: ... + @typing.overload + @staticmethod + def blitFramebuffer(target:PySide2.QtGui.QOpenGLFramebufferObject, targetRect:PySide2.QtCore.QRect, source:PySide2.QtGui.QOpenGLFramebufferObject, sourceRect:PySide2.QtCore.QRect, buffers:int, filter:int, readColorAttachmentIndex:int, drawColorAttachmentIndex:int, restorePolicy:PySide2.QtGui.QOpenGLFramebufferObject.FramebufferRestorePolicy) -> None: ... + @typing.overload + @staticmethod + def blitFramebuffer(target:PySide2.QtGui.QOpenGLFramebufferObject, targetRect:PySide2.QtCore.QRect, source:PySide2.QtGui.QOpenGLFramebufferObject, sourceRect:PySide2.QtCore.QRect, buffers:int=..., filter:int=...) -> None: ... + def format(self) -> PySide2.QtGui.QOpenGLFramebufferObjectFormat: ... + def handle(self) -> int: ... + @staticmethod + def hasOpenGLFramebufferBlit() -> bool: ... + @staticmethod + def hasOpenGLFramebufferObjects() -> bool: ... + def height(self) -> int: ... + def isBound(self) -> bool: ... + def isValid(self) -> bool: ... + def release(self) -> bool: ... + def setAttachment(self, attachment:PySide2.QtGui.QOpenGLFramebufferObject.Attachment) -> None: ... + def size(self) -> PySide2.QtCore.QSize: ... + def sizes(self) -> typing.List: ... + @typing.overload + def takeTexture(self) -> int: ... + @typing.overload + def takeTexture(self, colorAttachmentIndex:int) -> int: ... + def texture(self) -> int: ... + def textures(self) -> typing.List: ... + @typing.overload + def toImage(self) -> PySide2.QtGui.QImage: ... + @typing.overload + def toImage(self, flipped:bool) -> PySide2.QtGui.QImage: ... + @typing.overload + def toImage(self, flipped:bool, colorAttachmentIndex:int) -> PySide2.QtGui.QImage: ... + def width(self) -> int: ... + + +class QOpenGLFramebufferObjectFormat(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtGui.QOpenGLFramebufferObjectFormat) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def attachment(self) -> PySide2.QtGui.QOpenGLFramebufferObject.Attachment: ... + def internalTextureFormat(self) -> int: ... + def mipmap(self) -> bool: ... + def samples(self) -> int: ... + def setAttachment(self, attachment:PySide2.QtGui.QOpenGLFramebufferObject.Attachment) -> None: ... + def setInternalTextureFormat(self, internalTextureFormat:int) -> None: ... + def setMipmap(self, enabled:bool) -> None: ... + def setSamples(self, samples:int) -> None: ... + def setTextureTarget(self, target:int) -> None: ... + def textureTarget(self) -> int: ... + + +class QOpenGLFunctions(Shiboken.Object): + Multitexture : QOpenGLFunctions = ... # 0x1 + Shaders : QOpenGLFunctions = ... # 0x2 + Buffers : QOpenGLFunctions = ... # 0x4 + Framebuffers : QOpenGLFunctions = ... # 0x8 + BlendColor : QOpenGLFunctions = ... # 0x10 + BlendEquation : QOpenGLFunctions = ... # 0x20 + BlendEquationSeparate : QOpenGLFunctions = ... # 0x40 + BlendFuncSeparate : QOpenGLFunctions = ... # 0x80 + BlendSubtract : QOpenGLFunctions = ... # 0x100 + CompressedTextures : QOpenGLFunctions = ... # 0x200 + Multisample : QOpenGLFunctions = ... # 0x400 + StencilSeparate : QOpenGLFunctions = ... # 0x800 + NPOTTextures : QOpenGLFunctions = ... # 0x1000 + NPOTTextureRepeat : QOpenGLFunctions = ... # 0x2000 + FixedFunctionPipeline : QOpenGLFunctions = ... # 0x4000 + TextureRGFormats : QOpenGLFunctions = ... # 0x8000 + MultipleRenderTargets : QOpenGLFunctions = ... # 0x10000 + BlendEquationAdvanced : QOpenGLFunctions = ... # 0x20000 + + class OpenGLFeature(object): + Multitexture : QOpenGLFunctions.OpenGLFeature = ... # 0x1 + Shaders : QOpenGLFunctions.OpenGLFeature = ... # 0x2 + Buffers : QOpenGLFunctions.OpenGLFeature = ... # 0x4 + Framebuffers : QOpenGLFunctions.OpenGLFeature = ... # 0x8 + BlendColor : QOpenGLFunctions.OpenGLFeature = ... # 0x10 + BlendEquation : QOpenGLFunctions.OpenGLFeature = ... # 0x20 + BlendEquationSeparate : QOpenGLFunctions.OpenGLFeature = ... # 0x40 + BlendFuncSeparate : QOpenGLFunctions.OpenGLFeature = ... # 0x80 + BlendSubtract : QOpenGLFunctions.OpenGLFeature = ... # 0x100 + CompressedTextures : QOpenGLFunctions.OpenGLFeature = ... # 0x200 + Multisample : QOpenGLFunctions.OpenGLFeature = ... # 0x400 + StencilSeparate : QOpenGLFunctions.OpenGLFeature = ... # 0x800 + NPOTTextures : QOpenGLFunctions.OpenGLFeature = ... # 0x1000 + NPOTTextureRepeat : QOpenGLFunctions.OpenGLFeature = ... # 0x2000 + FixedFunctionPipeline : QOpenGLFunctions.OpenGLFeature = ... # 0x4000 + TextureRGFormats : QOpenGLFunctions.OpenGLFeature = ... # 0x8000 + MultipleRenderTargets : QOpenGLFunctions.OpenGLFeature = ... # 0x10000 + BlendEquationAdvanced : QOpenGLFunctions.OpenGLFeature = ... # 0x20000 + + class OpenGLFeatures(object): ... + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, context:PySide2.QtGui.QOpenGLContext) -> None: ... + + def glActiveTexture(self, texture:int) -> None: ... + def glAttachShader(self, program:int, shader:int) -> None: ... + def glBindAttribLocation(self, program:int, index:int, name:bytes) -> None: ... + def glBindBuffer(self, target:int, buffer:int) -> None: ... + def glBindFramebuffer(self, target:int, framebuffer:int) -> None: ... + def glBindRenderbuffer(self, target:int, renderbuffer:int) -> None: ... + def glBindTexture(self, target:int, texture:int) -> None: ... + def glBlendColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glBlendEquation(self, mode:int) -> None: ... + def glBlendEquationSeparate(self, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendFunc(self, sfactor:int, dfactor:int) -> None: ... + def glBlendFuncSeparate(self, srcRGB:int, dstRGB:int, srcAlpha:int, dstAlpha:int) -> None: ... + def glCheckFramebufferStatus(self, target:int) -> int: ... + def glClear(self, mask:int) -> None: ... + def glClearColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearDepthf(self, depth:float) -> None: ... + def glClearStencil(self, s:int) -> None: ... + def glColorMask(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glCompileShader(self, shader:int) -> None: ... + def glCompressedTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, imageSize:int, data:int) -> None: ... + def glCopyTexImage2D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, height:int, border:int) -> None: ... + def glCopyTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCreateProgram(self) -> int: ... + def glCreateShader(self, type:int) -> int: ... + def glCullFace(self, mode:int) -> None: ... + def glDeleteBuffers(self, n:int, buffers:typing.Sequence) -> None: ... + def glDeleteFramebuffers(self, n:int, framebuffers:typing.Sequence) -> None: ... + def glDeleteProgram(self, program:int) -> None: ... + def glDeleteRenderbuffers(self, n:int, renderbuffers:typing.Sequence) -> None: ... + def glDeleteShader(self, shader:int) -> None: ... + def glDeleteTextures(self, n:int, textures:typing.Sequence) -> None: ... + def glDepthFunc(self, func:int) -> None: ... + def glDepthMask(self, flag:int) -> None: ... + def glDepthRangef(self, zNear:float, zFar:float) -> None: ... + def glDetachShader(self, program:int, shader:int) -> None: ... + def glDisable(self, cap:int) -> None: ... + def glDisableVertexAttribArray(self, index:int) -> None: ... + def glDrawArrays(self, mode:int, first:int, count:int) -> None: ... + def glDrawElements(self, mode:int, count:int, type:int, indices:int) -> None: ... + def glEnable(self, cap:int) -> None: ... + def glEnableVertexAttribArray(self, index:int) -> None: ... + def glFinish(self) -> None: ... + def glFlush(self) -> None: ... + def glFramebufferRenderbuffer(self, target:int, attachment:int, renderbuffertarget:int, renderbuffer:int) -> None: ... + def glFramebufferTexture2D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFrontFace(self, mode:int) -> None: ... + def glGenBuffers(self, n:int, buffers:typing.Sequence) -> None: ... + def glGenFramebuffers(self, n:int, framebuffers:typing.Sequence) -> None: ... + def glGenRenderbuffers(self, n:int, renderbuffers:typing.Sequence) -> None: ... + def glGenTextures(self, n:int, textures:typing.Sequence) -> None: ... + def glGenerateMipmap(self, target:int) -> None: ... + def glGetAttachedShaders(self, program:int, maxcount:int, count:typing.Sequence, shaders:typing.Sequence) -> None: ... + def glGetAttribLocation(self, program:int, name:bytes) -> int: ... + def glGetBufferParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glGetError(self) -> int: ... + def glGetFloatv(self, pname:int, params:typing.Sequence) -> None: ... + def glGetFramebufferAttachmentParameteriv(self, target:int, attachment:int, pname:int, params:typing.Sequence) -> None: ... + def glGetIntegerv(self, pname:int, params:typing.Sequence) -> None: ... + def glGetProgramiv(self, program:int, pname:int, params:typing.Sequence) -> None: ... + def glGetRenderbufferParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glGetShaderPrecisionFormat(self, shadertype:int, precisiontype:int, range:typing.Sequence, precision:typing.Sequence) -> None: ... + def glGetShaderiv(self, shader:int, pname:int, params:typing.Sequence) -> None: ... + def glGetString(self, name:int) -> bytes: ... + def glGetTexParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glGetTexParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glGetUniformLocation(self, program:int, name:bytes) -> int: ... + def glGetUniformfv(self, program:int, location:int, params:typing.Sequence) -> None: ... + def glGetUniformiv(self, program:int, location:int, params:typing.Sequence) -> None: ... + def glGetVertexAttribfv(self, index:int, pname:int, params:typing.Sequence) -> None: ... + def glGetVertexAttribiv(self, index:int, pname:int, params:typing.Sequence) -> None: ... + def glHint(self, target:int, mode:int) -> None: ... + def glIsBuffer(self, buffer:int) -> int: ... + def glIsEnabled(self, cap:int) -> int: ... + def glIsFramebuffer(self, framebuffer:int) -> int: ... + def glIsProgram(self, program:int) -> int: ... + def glIsRenderbuffer(self, renderbuffer:int) -> int: ... + def glIsShader(self, shader:int) -> int: ... + def glIsTexture(self, texture:int) -> int: ... + def glLineWidth(self, width:float) -> None: ... + def glLinkProgram(self, program:int) -> None: ... + def glPixelStorei(self, pname:int, param:int) -> None: ... + def glPolygonOffset(self, factor:float, units:float) -> None: ... + def glReadPixels(self, x:int, y:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glReleaseShaderCompiler(self) -> None: ... + def glRenderbufferStorage(self, target:int, internalformat:int, width:int, height:int) -> None: ... + def glSampleCoverage(self, value:float, invert:int) -> None: ... + def glScissor(self, x:int, y:int, width:int, height:int) -> None: ... + def glShaderBinary(self, n:int, shaders:typing.Sequence, binaryformat:int, binary:int, length:int) -> None: ... + def glStencilFunc(self, func:int, ref:int, mask:int) -> None: ... + def glStencilFuncSeparate(self, face:int, func:int, ref:int, mask:int) -> None: ... + def glStencilMask(self, mask:int) -> None: ... + def glStencilMaskSeparate(self, face:int, mask:int) -> None: ... + def glStencilOp(self, fail:int, zfail:int, zpass:int) -> None: ... + def glStencilOpSeparate(self, face:int, fail:int, zfail:int, zpass:int) -> None: ... + def glTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexParameterf(self, target:int, pname:int, param:float) -> None: ... + def glTexParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameteri(self, target:int, pname:int, param:int) -> None: ... + def glTexParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glUniform1f(self, location:int, x:float) -> None: ... + def glUniform1fv(self, location:int, count:int, v:typing.Sequence) -> None: ... + def glUniform1i(self, location:int, x:int) -> None: ... + def glUniform1iv(self, location:int, count:int, v:typing.Sequence) -> None: ... + def glUniform2f(self, location:int, x:float, y:float) -> None: ... + def glUniform2fv(self, location:int, count:int, v:typing.Sequence) -> None: ... + def glUniform2i(self, location:int, x:int, y:int) -> None: ... + def glUniform2iv(self, location:int, count:int, v:typing.Sequence) -> None: ... + def glUniform3f(self, location:int, x:float, y:float, z:float) -> None: ... + def glUniform3fv(self, location:int, count:int, v:typing.Sequence) -> None: ... + def glUniform3i(self, location:int, x:int, y:int, z:int) -> None: ... + def glUniform3iv(self, location:int, count:int, v:typing.Sequence) -> None: ... + def glUniform4f(self, location:int, x:float, y:float, z:float, w:float) -> None: ... + def glUniform4fv(self, location:int, count:int, v:typing.Sequence) -> None: ... + def glUniform4i(self, location:int, x:int, y:int, z:int, w:int) -> None: ... + def glUniform4iv(self, location:int, count:int, v:typing.Sequence) -> None: ... + def glUniformMatrix2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUseProgram(self, program:int) -> None: ... + def glValidateProgram(self, program:int) -> None: ... + def glVertexAttrib1f(self, indx:int, x:float) -> None: ... + def glVertexAttrib1fv(self, indx:int, values:typing.Sequence) -> None: ... + def glVertexAttrib2f(self, indx:int, x:float, y:float) -> None: ... + def glVertexAttrib2fv(self, indx:int, values:typing.Sequence) -> None: ... + def glVertexAttrib3f(self, indx:int, x:float, y:float, z:float) -> None: ... + def glVertexAttrib3fv(self, indx:int, values:typing.Sequence) -> None: ... + def glVertexAttrib4f(self, indx:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttrib4fv(self, indx:int, values:typing.Sequence) -> None: ... + def glVertexAttribPointer(self, indx:int, size:int, type:int, normalized:int, stride:int, ptr:int) -> None: ... + def glViewport(self, x:int, y:int, width:int, height:int) -> None: ... + def hasOpenGLFeature(self, feature:PySide2.QtGui.QOpenGLFunctions.OpenGLFeature) -> bool: ... + def initializeOpenGLFunctions(self) -> None: ... + def openGLFeatures(self) -> PySide2.QtGui.QOpenGLFunctions.OpenGLFeatures: ... + + +class QOpenGLPixelTransferOptions(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtGui.QOpenGLPixelTransferOptions) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def alignment(self) -> int: ... + def imageHeight(self) -> int: ... + def isLeastSignificantBitFirst(self) -> bool: ... + def isSwapBytesEnabled(self) -> bool: ... + def rowLength(self) -> int: ... + def setAlignment(self, alignment:int) -> None: ... + def setImageHeight(self, imageHeight:int) -> None: ... + def setLeastSignificantByteFirst(self, lsbFirst:bool) -> None: ... + def setRowLength(self, rowLength:int) -> None: ... + def setSkipImages(self, skipImages:int) -> None: ... + def setSkipPixels(self, skipPixels:int) -> None: ... + def setSkipRows(self, skipRows:int) -> None: ... + def setSwapBytesEnabled(self, swapBytes:bool) -> None: ... + def skipImages(self) -> int: ... + def skipPixels(self) -> int: ... + def skipRows(self) -> int: ... + def swap(self, other:PySide2.QtGui.QOpenGLPixelTransferOptions) -> None: ... + + +class QOpenGLShader(PySide2.QtCore.QObject): + Vertex : QOpenGLShader = ... # 0x1 + Fragment : QOpenGLShader = ... # 0x2 + Geometry : QOpenGLShader = ... # 0x4 + TessellationControl : QOpenGLShader = ... # 0x8 + TessellationEvaluation : QOpenGLShader = ... # 0x10 + Compute : QOpenGLShader = ... # 0x20 + + class ShaderType(object): ... + + class ShaderTypeBit(object): + Vertex : QOpenGLShader.ShaderTypeBit = ... # 0x1 + Fragment : QOpenGLShader.ShaderTypeBit = ... # 0x2 + Geometry : QOpenGLShader.ShaderTypeBit = ... # 0x4 + TessellationControl : QOpenGLShader.ShaderTypeBit = ... # 0x8 + TessellationEvaluation : QOpenGLShader.ShaderTypeBit = ... # 0x10 + Compute : QOpenGLShader.ShaderTypeBit = ... # 0x20 + + def __init__(self, type:PySide2.QtGui.QOpenGLShader.ShaderType, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + @typing.overload + def compileSourceCode(self, source:PySide2.QtCore.QByteArray) -> bool: ... + @typing.overload + def compileSourceCode(self, source:str) -> bool: ... + @typing.overload + def compileSourceCode(self, source:bytes) -> bool: ... + def compileSourceFile(self, fileName:str) -> bool: ... + @staticmethod + def hasOpenGLShaders(type:PySide2.QtGui.QOpenGLShader.ShaderType, context:typing.Optional[PySide2.QtGui.QOpenGLContext]=...) -> bool: ... + def isCompiled(self) -> bool: ... + def log(self) -> str: ... + def shaderId(self) -> int: ... + def shaderType(self) -> PySide2.QtGui.QOpenGLShader.ShaderType: ... + def sourceCode(self) -> PySide2.QtCore.QByteArray: ... + + +class QOpenGLShaderProgram(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + @typing.overload + def addCacheableShaderFromSourceCode(self, type:PySide2.QtGui.QOpenGLShader.ShaderType, source:PySide2.QtCore.QByteArray) -> bool: ... + @typing.overload + def addCacheableShaderFromSourceCode(self, type:PySide2.QtGui.QOpenGLShader.ShaderType, source:str) -> bool: ... + @typing.overload + def addCacheableShaderFromSourceCode(self, type:PySide2.QtGui.QOpenGLShader.ShaderType, source:bytes) -> bool: ... + def addCacheableShaderFromSourceFile(self, type:PySide2.QtGui.QOpenGLShader.ShaderType, fileName:str) -> bool: ... + def addShader(self, shader:PySide2.QtGui.QOpenGLShader) -> bool: ... + @typing.overload + def addShaderFromSourceCode(self, type:PySide2.QtGui.QOpenGLShader.ShaderType, source:PySide2.QtCore.QByteArray) -> bool: ... + @typing.overload + def addShaderFromSourceCode(self, type:PySide2.QtGui.QOpenGLShader.ShaderType, source:str) -> bool: ... + @typing.overload + def addShaderFromSourceCode(self, type:PySide2.QtGui.QOpenGLShader.ShaderType, source:bytes) -> bool: ... + def addShaderFromSourceFile(self, type:PySide2.QtGui.QOpenGLShader.ShaderType, fileName:str) -> bool: ... + @typing.overload + def attributeLocation(self, name:PySide2.QtCore.QByteArray) -> int: ... + @typing.overload + def attributeLocation(self, name:str) -> int: ... + @typing.overload + def attributeLocation(self, name:bytes) -> int: ... + def bind(self) -> bool: ... + @typing.overload + def bindAttributeLocation(self, name:PySide2.QtCore.QByteArray, location:int) -> None: ... + @typing.overload + def bindAttributeLocation(self, name:str, location:int) -> None: ... + @typing.overload + def bindAttributeLocation(self, name:bytes, location:int) -> None: ... + def create(self) -> bool: ... + def defaultInnerTessellationLevels(self) -> typing.List: ... + def defaultOuterTessellationLevels(self) -> typing.List: ... + @typing.overload + def disableAttributeArray(self, location:int) -> None: ... + @typing.overload + def disableAttributeArray(self, name:bytes) -> None: ... + @typing.overload + def enableAttributeArray(self, location:int) -> None: ... + @typing.overload + def enableAttributeArray(self, name:bytes) -> None: ... + @staticmethod + def hasOpenGLShaderPrograms(context:typing.Optional[PySide2.QtGui.QOpenGLContext]=...) -> bool: ... + def isLinked(self) -> bool: ... + def link(self) -> bool: ... + def log(self) -> str: ... + def maxGeometryOutputVertices(self) -> int: ... + def patchVertexCount(self) -> int: ... + def programId(self) -> int: ... + def release(self) -> None: ... + def removeAllShaders(self) -> None: ... + def removeShader(self, shader:PySide2.QtGui.QOpenGLShader) -> None: ... + @typing.overload + def setAttributeArray(self, location:int, type:int, values:int, tupleSize:int, stride:int=...) -> None: ... + @typing.overload + def setAttributeArray(self, location:int, values:typing.Sequence, tupleSize:int, stride:int=...) -> None: ... + @typing.overload + def setAttributeArray(self, name:bytes, type:int, values:int, tupleSize:int, stride:int=...) -> None: ... + @typing.overload + def setAttributeArray(self, name:bytes, values:typing.Sequence, tupleSize:int, stride:int=...) -> None: ... + @typing.overload + def setAttributeBuffer(self, location:int, type:int, offset:int, tupleSize:int, stride:int=...) -> None: ... + @typing.overload + def setAttributeBuffer(self, name:bytes, type:int, offset:int, tupleSize:int, stride:int=...) -> None: ... + @typing.overload + def setAttributeValue(self, location:int, value:PySide2.QtGui.QColor) -> None: ... + @typing.overload + def setAttributeValue(self, location:int, value:PySide2.QtGui.QVector2D) -> None: ... + @typing.overload + def setAttributeValue(self, location:int, value:PySide2.QtGui.QVector3D) -> None: ... + @typing.overload + def setAttributeValue(self, location:int, value:PySide2.QtGui.QVector4D) -> None: ... + @typing.overload + def setAttributeValue(self, location:int, value:float) -> None: ... + @typing.overload + def setAttributeValue(self, location:int, values:typing.Sequence, columns:int, rows:int) -> None: ... + @typing.overload + def setAttributeValue(self, location:int, x:float, y:float) -> None: ... + @typing.overload + def setAttributeValue(self, location:int, x:float, y:float, z:float) -> None: ... + @typing.overload + def setAttributeValue(self, location:int, x:float, y:float, z:float, w:float) -> None: ... + @typing.overload + def setAttributeValue(self, name:bytes, value:PySide2.QtGui.QColor) -> None: ... + @typing.overload + def setAttributeValue(self, name:bytes, value:PySide2.QtGui.QVector2D) -> None: ... + @typing.overload + def setAttributeValue(self, name:bytes, value:PySide2.QtGui.QVector3D) -> None: ... + @typing.overload + def setAttributeValue(self, name:bytes, value:PySide2.QtGui.QVector4D) -> None: ... + @typing.overload + def setAttributeValue(self, name:bytes, value:float) -> None: ... + @typing.overload + def setAttributeValue(self, name:bytes, values:typing.Sequence, columns:int, rows:int) -> None: ... + @typing.overload + def setAttributeValue(self, name:bytes, x:float, y:float) -> None: ... + @typing.overload + def setAttributeValue(self, name:bytes, x:float, y:float, z:float) -> None: ... + @typing.overload + def setAttributeValue(self, name:bytes, x:float, y:float, z:float, w:float) -> None: ... + def setDefaultInnerTessellationLevels(self, levels:typing.List) -> None: ... + def setDefaultOuterTessellationLevels(self, levels:typing.List) -> None: ... + def setPatchVertexCount(self, count:int) -> None: ... + @typing.overload + def setUniformValue(self, location:int, color:PySide2.QtGui.QColor) -> None: ... + @typing.overload + def setUniformValue(self, location:int, point:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + def setUniformValue(self, location:int, point:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def setUniformValue(self, location:int, size:PySide2.QtCore.QSize) -> None: ... + @typing.overload + def setUniformValue(self, location:int, size:PySide2.QtCore.QSizeF) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:PySide2.QtGui.QMatrix2x2) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:PySide2.QtGui.QMatrix2x3) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:PySide2.QtGui.QMatrix2x4) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:PySide2.QtGui.QMatrix3x2) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:PySide2.QtGui.QMatrix3x3) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:PySide2.QtGui.QMatrix3x4) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:PySide2.QtGui.QMatrix4x2) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:PySide2.QtGui.QMatrix4x3) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:PySide2.QtGui.QMatrix4x4) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:PySide2.QtGui.QTransform) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:PySide2.QtGui.QVector2D) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:PySide2.QtGui.QVector3D) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:PySide2.QtGui.QVector4D) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:float) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:typing.Tuple) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:typing.Tuple) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:typing.Tuple) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:int) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:int) -> None: ... + @typing.overload + def setUniformValue(self, location:int, x:float, y:float) -> None: ... + @typing.overload + def setUniformValue(self, location:int, x:float, y:float, z:float) -> None: ... + @typing.overload + def setUniformValue(self, location:int, x:float, y:float, z:float, w:float) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, color:PySide2.QtGui.QColor) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, point:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, point:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, size:PySide2.QtCore.QSize) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, size:PySide2.QtCore.QSizeF) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:PySide2.QtGui.QMatrix2x2) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:PySide2.QtGui.QMatrix2x3) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:PySide2.QtGui.QMatrix2x4) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:PySide2.QtGui.QMatrix3x2) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:PySide2.QtGui.QMatrix3x3) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:PySide2.QtGui.QMatrix3x4) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:PySide2.QtGui.QMatrix4x2) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:PySide2.QtGui.QMatrix4x3) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:PySide2.QtGui.QMatrix4x4) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:PySide2.QtGui.QTransform) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:PySide2.QtGui.QVector2D) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:PySide2.QtGui.QVector3D) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:PySide2.QtGui.QVector4D) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:typing.Tuple) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:typing.Tuple) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:typing.Tuple) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, x:float, y:float) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, x:float, y:float, z:float) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, x:float, y:float, z:float, w:float) -> None: ... + @typing.overload + def setUniformValue1f(self, arg__1:bytes, arg__2:float) -> None: ... + @typing.overload + def setUniformValue1f(self, arg__1:int, arg__2:float) -> None: ... + @typing.overload + def setUniformValue1i(self, arg__1:bytes, arg__2:int) -> None: ... + @typing.overload + def setUniformValue1i(self, arg__1:int, arg__2:int) -> None: ... + @typing.overload + def setUniformValueArray(self, location:int, values:typing.Sequence, count:int, tupleSize:int) -> None: ... + @typing.overload + def setUniformValueArray(self, location:int, values:typing.Sequence, count:int) -> None: ... + @typing.overload + def setUniformValueArray(self, location:int, values:typing.Sequence, count:int) -> None: ... + @typing.overload + def setUniformValueArray(self, name:bytes, values:typing.Sequence, count:int, tupleSize:int) -> None: ... + @typing.overload + def setUniformValueArray(self, name:bytes, values:typing.Sequence, count:int) -> None: ... + @typing.overload + def setUniformValueArray(self, name:bytes, values:typing.Sequence, count:int) -> None: ... + def shaders(self) -> typing.List: ... + @typing.overload + def uniformLocation(self, name:PySide2.QtCore.QByteArray) -> int: ... + @typing.overload + def uniformLocation(self, name:str) -> int: ... + @typing.overload + def uniformLocation(self, name:bytes) -> int: ... + + +class QOpenGLTexture(Shiboken.Object): + CompareNone : QOpenGLTexture = ... # 0x0 + GenerateMipMaps : QOpenGLTexture = ... # 0x0 + NoFormat : QOpenGLTexture = ... # 0x0 + NoFormatClass : QOpenGLTexture = ... # 0x0 + NoPixelType : QOpenGLTexture = ... # 0x0 + NoSourceFormat : QOpenGLTexture = ... # 0x0 + ResetTextureUnit : QOpenGLTexture = ... # 0x0 + ZeroValue : QOpenGLTexture = ... # 0x0 + DontGenerateMipMaps : QOpenGLTexture = ... # 0x1 + DontResetTextureUnit : QOpenGLTexture = ... # 0x1 + FormatClass_128Bit : QOpenGLTexture = ... # 0x1 + ImmutableStorage : QOpenGLTexture = ... # 0x1 + OneValue : QOpenGLTexture = ... # 0x1 + FormatClass_96Bit : QOpenGLTexture = ... # 0x2 + ImmutableMultisampleStorage: QOpenGLTexture = ... # 0x2 + FormatClass_64Bit : QOpenGLTexture = ... # 0x3 + FormatClass_48Bit : QOpenGLTexture = ... # 0x4 + TextureRectangle : QOpenGLTexture = ... # 0x4 + FormatClass_32Bit : QOpenGLTexture = ... # 0x5 + FormatClass_24Bit : QOpenGLTexture = ... # 0x6 + FormatClass_16Bit : QOpenGLTexture = ... # 0x7 + FormatClass_8Bit : QOpenGLTexture = ... # 0x8 + TextureArrays : QOpenGLTexture = ... # 0x8 + FormatClass_RGTC1_R : QOpenGLTexture = ... # 0x9 + FormatClass_RGTC2_RG : QOpenGLTexture = ... # 0xa + FormatClass_BPTC_Unorm : QOpenGLTexture = ... # 0xb + FormatClass_BPTC_Float : QOpenGLTexture = ... # 0xc + FormatClass_S3TC_DXT1_RGB: QOpenGLTexture = ... # 0xd + FormatClass_S3TC_DXT1_RGBA: QOpenGLTexture = ... # 0xe + FormatClass_S3TC_DXT3_RGBA: QOpenGLTexture = ... # 0xf + FormatClass_S3TC_DXT5_RGBA: QOpenGLTexture = ... # 0x10 + Texture3D : QOpenGLTexture = ... # 0x10 + FormatClass_Unique : QOpenGLTexture = ... # 0x11 + TextureMultisample : QOpenGLTexture = ... # 0x20 + TextureBuffer : QOpenGLTexture = ... # 0x40 + TextureCubeMapArrays : QOpenGLTexture = ... # 0x80 + Swizzle : QOpenGLTexture = ... # 0x100 + CompareNever : QOpenGLTexture = ... # 0x200 + StencilTexturing : QOpenGLTexture = ... # 0x200 + CompareLess : QOpenGLTexture = ... # 0x201 + CompareEqual : QOpenGLTexture = ... # 0x202 + CompareLessEqual : QOpenGLTexture = ... # 0x203 + CompareGreater : QOpenGLTexture = ... # 0x204 + CommpareNotEqual : QOpenGLTexture = ... # 0x205 + CompareGreaterEqual : QOpenGLTexture = ... # 0x206 + CompareAlways : QOpenGLTexture = ... # 0x207 + AnisotropicFiltering : QOpenGLTexture = ... # 0x400 + NPOTTextures : QOpenGLTexture = ... # 0x800 + Target1D : QOpenGLTexture = ... # 0xde0 + Target2D : QOpenGLTexture = ... # 0xde1 + NPOTTextureRepeat : QOpenGLTexture = ... # 0x1000 + Int8 : QOpenGLTexture = ... # 0x1400 + UInt8 : QOpenGLTexture = ... # 0x1401 + Int16 : QOpenGLTexture = ... # 0x1402 + UInt16 : QOpenGLTexture = ... # 0x1403 + Int32 : QOpenGLTexture = ... # 0x1404 + UInt32 : QOpenGLTexture = ... # 0x1405 + Float32 : QOpenGLTexture = ... # 0x1406 + Float16 : QOpenGLTexture = ... # 0x140b + Stencil : QOpenGLTexture = ... # 0x1901 + StencilMode : QOpenGLTexture = ... # 0x1901 + Depth : QOpenGLTexture = ... # 0x1902 + DepthFormat : QOpenGLTexture = ... # 0x1902 + DepthMode : QOpenGLTexture = ... # 0x1902 + Red : QOpenGLTexture = ... # 0x1903 + RedValue : QOpenGLTexture = ... # 0x1903 + GreenValue : QOpenGLTexture = ... # 0x1904 + BlueValue : QOpenGLTexture = ... # 0x1905 + Alpha : QOpenGLTexture = ... # 0x1906 + AlphaFormat : QOpenGLTexture = ... # 0x1906 + AlphaValue : QOpenGLTexture = ... # 0x1906 + RGB : QOpenGLTexture = ... # 0x1907 + RGBFormat : QOpenGLTexture = ... # 0x1907 + RGBA : QOpenGLTexture = ... # 0x1908 + RGBAFormat : QOpenGLTexture = ... # 0x1908 + Luminance : QOpenGLTexture = ... # 0x1909 + LuminanceFormat : QOpenGLTexture = ... # 0x1909 + LuminanceAlpha : QOpenGLTexture = ... # 0x190a + LuminanceAlphaFormat : QOpenGLTexture = ... # 0x190a + Texture1D : QOpenGLTexture = ... # 0x2000 + Nearest : QOpenGLTexture = ... # 0x2600 + Linear : QOpenGLTexture = ... # 0x2601 + NearestMipMapNearest : QOpenGLTexture = ... # 0x2700 + LinearMipMapNearest : QOpenGLTexture = ... # 0x2701 + NearestMipMapLinear : QOpenGLTexture = ... # 0x2702 + LinearMipMapLinear : QOpenGLTexture = ... # 0x2703 + DirectionS : QOpenGLTexture = ... # 0x2802 + DirectionT : QOpenGLTexture = ... # 0x2803 + Repeat : QOpenGLTexture = ... # 0x2901 + RG3B2 : QOpenGLTexture = ... # 0x2a10 + TextureComparisonOperators: QOpenGLTexture = ... # 0x4000 + TextureMipMapLevel : QOpenGLTexture = ... # 0x8000 + UInt8_RG3B2 : QOpenGLTexture = ... # 0x8032 + UInt16_RGBA4 : QOpenGLTexture = ... # 0x8033 + UInt16_RGB5A1 : QOpenGLTexture = ... # 0x8034 + UInt32_RGBA8 : QOpenGLTexture = ... # 0x8035 + UInt32_RGB10A2 : QOpenGLTexture = ... # 0x8036 + RGB8_UNorm : QOpenGLTexture = ... # 0x8051 + RGB16_UNorm : QOpenGLTexture = ... # 0x8054 + RGBA4 : QOpenGLTexture = ... # 0x8056 + RGB5A1 : QOpenGLTexture = ... # 0x8057 + RGBA8_UNorm : QOpenGLTexture = ... # 0x8058 + RGBA16_UNorm : QOpenGLTexture = ... # 0x805b + BindingTarget1D : QOpenGLTexture = ... # 0x8068 + BindingTarget2D : QOpenGLTexture = ... # 0x8069 + BindingTarget3D : QOpenGLTexture = ... # 0x806a + Target3D : QOpenGLTexture = ... # 0x806f + DirectionR : QOpenGLTexture = ... # 0x8072 + BGR : QOpenGLTexture = ... # 0x80e0 + BGRA : QOpenGLTexture = ... # 0x80e1 + ClampToBorder : QOpenGLTexture = ... # 0x812d + ClampToEdge : QOpenGLTexture = ... # 0x812f + D16 : QOpenGLTexture = ... # 0x81a5 + D24 : QOpenGLTexture = ... # 0x81a6 + D32 : QOpenGLTexture = ... # 0x81a7 + RG : QOpenGLTexture = ... # 0x8227 + RG_Integer : QOpenGLTexture = ... # 0x8228 + R8_UNorm : QOpenGLTexture = ... # 0x8229 + R16_UNorm : QOpenGLTexture = ... # 0x822a + RG8_UNorm : QOpenGLTexture = ... # 0x822b + RG16_UNorm : QOpenGLTexture = ... # 0x822c + R16F : QOpenGLTexture = ... # 0x822d + R32F : QOpenGLTexture = ... # 0x822e + RG16F : QOpenGLTexture = ... # 0x822f + RG32F : QOpenGLTexture = ... # 0x8230 + R8I : QOpenGLTexture = ... # 0x8231 + R8U : QOpenGLTexture = ... # 0x8232 + R16I : QOpenGLTexture = ... # 0x8233 + R16U : QOpenGLTexture = ... # 0x8234 + R32I : QOpenGLTexture = ... # 0x8235 + R32U : QOpenGLTexture = ... # 0x8236 + RG8I : QOpenGLTexture = ... # 0x8237 + RG8U : QOpenGLTexture = ... # 0x8238 + RG16I : QOpenGLTexture = ... # 0x8239 + RG16U : QOpenGLTexture = ... # 0x823a + RG32I : QOpenGLTexture = ... # 0x823b + RG32U : QOpenGLTexture = ... # 0x823c + UInt8_RG3B2_Rev : QOpenGLTexture = ... # 0x8362 + UInt16_R5G6B5 : QOpenGLTexture = ... # 0x8363 + UInt16_R5G6B5_Rev : QOpenGLTexture = ... # 0x8364 + UInt16_RGBA4_Rev : QOpenGLTexture = ... # 0x8365 + UInt16_RGB5A1_Rev : QOpenGLTexture = ... # 0x8366 + UInt32_RGBA8_Rev : QOpenGLTexture = ... # 0x8367 + UInt32_RGB10A2_Rev : QOpenGLTexture = ... # 0x8368 + MirroredRepeat : QOpenGLTexture = ... # 0x8370 + RGB_DXT1 : QOpenGLTexture = ... # 0x83f0 + RGBA_DXT1 : QOpenGLTexture = ... # 0x83f1 + RGBA_DXT3 : QOpenGLTexture = ... # 0x83f2 + RGBA_DXT5 : QOpenGLTexture = ... # 0x83f3 + TargetRectangle : QOpenGLTexture = ... # 0x84f5 + BindingTargetRectangle : QOpenGLTexture = ... # 0x84f6 + DepthStencil : QOpenGLTexture = ... # 0x84f9 + UInt32_D24S8 : QOpenGLTexture = ... # 0x84fa + TargetCubeMap : QOpenGLTexture = ... # 0x8513 + BindingTargetCubeMap : QOpenGLTexture = ... # 0x8514 + CubeMapPositiveX : QOpenGLTexture = ... # 0x8515 + CubeMapNegativeX : QOpenGLTexture = ... # 0x8516 + CubeMapPositiveY : QOpenGLTexture = ... # 0x8517 + CubeMapNegativeY : QOpenGLTexture = ... # 0x8518 + CubeMapPositiveZ : QOpenGLTexture = ... # 0x8519 + CubeMapNegativeZ : QOpenGLTexture = ... # 0x851a + RGBA32F : QOpenGLTexture = ... # 0x8814 + RGB32F : QOpenGLTexture = ... # 0x8815 + RGBA16F : QOpenGLTexture = ... # 0x881a + RGB16F : QOpenGLTexture = ... # 0x881b + CompareRefToTexture : QOpenGLTexture = ... # 0x884e + D24S8 : QOpenGLTexture = ... # 0x88f0 + Target1DArray : QOpenGLTexture = ... # 0x8c18 + Target2DArray : QOpenGLTexture = ... # 0x8c1a + BindingTarget1DArray : QOpenGLTexture = ... # 0x8c1c + BindingTarget2DArray : QOpenGLTexture = ... # 0x8c1d + TargetBuffer : QOpenGLTexture = ... # 0x8c2a + BindingTargetBuffer : QOpenGLTexture = ... # 0x8c2c + RG11B10F : QOpenGLTexture = ... # 0x8c3a + UInt32_RG11B10F : QOpenGLTexture = ... # 0x8c3b + RGB9E5 : QOpenGLTexture = ... # 0x8c3d + UInt32_RGB9_E5 : QOpenGLTexture = ... # 0x8c3e + SRGB8 : QOpenGLTexture = ... # 0x8c41 + SRGB8_Alpha8 : QOpenGLTexture = ... # 0x8c43 + SRGB_DXT1 : QOpenGLTexture = ... # 0x8c4c + SRGB_Alpha_DXT1 : QOpenGLTexture = ... # 0x8c4d + SRGB_Alpha_DXT3 : QOpenGLTexture = ... # 0x8c4e + SRGB_Alpha_DXT5 : QOpenGLTexture = ... # 0x8c4f + D32F : QOpenGLTexture = ... # 0x8cac + D32FS8X24 : QOpenGLTexture = ... # 0x8cad + S8 : QOpenGLTexture = ... # 0x8d48 + Float16OES : QOpenGLTexture = ... # 0x8d61 + R5G6B5 : QOpenGLTexture = ... # 0x8d62 + RGB8_ETC1 : QOpenGLTexture = ... # 0x8d64 + RGBA32U : QOpenGLTexture = ... # 0x8d70 + RGB32U : QOpenGLTexture = ... # 0x8d71 + RGBA16U : QOpenGLTexture = ... # 0x8d76 + RGB16U : QOpenGLTexture = ... # 0x8d77 + RGBA8U : QOpenGLTexture = ... # 0x8d7c + RGB8U : QOpenGLTexture = ... # 0x8d7d + RGBA32I : QOpenGLTexture = ... # 0x8d82 + RGB32I : QOpenGLTexture = ... # 0x8d83 + RGBA16I : QOpenGLTexture = ... # 0x8d88 + RGB16I : QOpenGLTexture = ... # 0x8d89 + RGBA8I : QOpenGLTexture = ... # 0x8d8e + RGB8I : QOpenGLTexture = ... # 0x8d8f + Red_Integer : QOpenGLTexture = ... # 0x8d94 + RGB_Integer : QOpenGLTexture = ... # 0x8d98 + RGBA_Integer : QOpenGLTexture = ... # 0x8d99 + BGR_Integer : QOpenGLTexture = ... # 0x8d9a + BGRA_Integer : QOpenGLTexture = ... # 0x8d9b + Float32_D32_UInt32_S8_X24: QOpenGLTexture = ... # 0x8dad + R_ATI1N_UNorm : QOpenGLTexture = ... # 0x8dbb + R_ATI1N_SNorm : QOpenGLTexture = ... # 0x8dbc + RG_ATI2N_UNorm : QOpenGLTexture = ... # 0x8dbd + RG_ATI2N_SNorm : QOpenGLTexture = ... # 0x8dbe + SwizzleRed : QOpenGLTexture = ... # 0x8e42 + SwizzleGreen : QOpenGLTexture = ... # 0x8e43 + SwizzleBlue : QOpenGLTexture = ... # 0x8e44 + SwizzleAlpha : QOpenGLTexture = ... # 0x8e45 + RGB_BP_UNorm : QOpenGLTexture = ... # 0x8e8c + SRGB_BP_UNorm : QOpenGLTexture = ... # 0x8e8d + RGB_BP_SIGNED_FLOAT : QOpenGLTexture = ... # 0x8e8e + RGB_BP_UNSIGNED_FLOAT : QOpenGLTexture = ... # 0x8e8f + R8_SNorm : QOpenGLTexture = ... # 0x8f94 + RG8_SNorm : QOpenGLTexture = ... # 0x8f95 + RGB8_SNorm : QOpenGLTexture = ... # 0x8f96 + RGBA8_SNorm : QOpenGLTexture = ... # 0x8f97 + R16_SNorm : QOpenGLTexture = ... # 0x8f98 + RG16_SNorm : QOpenGLTexture = ... # 0x8f99 + RGB16_SNorm : QOpenGLTexture = ... # 0x8f9a + RGBA16_SNorm : QOpenGLTexture = ... # 0x8f9b + TargetCubeMapArray : QOpenGLTexture = ... # 0x9009 + BindingTargetCubeMapArray: QOpenGLTexture = ... # 0x900a + RGB10A2 : QOpenGLTexture = ... # 0x906f + Target2DMultisample : QOpenGLTexture = ... # 0x9100 + Target2DMultisampleArray : QOpenGLTexture = ... # 0x9102 + BindingTarget2DMultisample: QOpenGLTexture = ... # 0x9104 + BindingTarget2DMultisampleArray: QOpenGLTexture = ... # 0x9105 + R11_EAC_UNorm : QOpenGLTexture = ... # 0x9270 + R11_EAC_SNorm : QOpenGLTexture = ... # 0x9271 + RG11_EAC_UNorm : QOpenGLTexture = ... # 0x9272 + RG11_EAC_SNorm : QOpenGLTexture = ... # 0x9273 + RGB8_ETC2 : QOpenGLTexture = ... # 0x9274 + SRGB8_ETC2 : QOpenGLTexture = ... # 0x9275 + RGB8_PunchThrough_Alpha1_ETC2: QOpenGLTexture = ... # 0x9276 + SRGB8_PunchThrough_Alpha1_ETC2: QOpenGLTexture = ... # 0x9277 + RGBA8_ETC2_EAC : QOpenGLTexture = ... # 0x9278 + SRGB8_Alpha8_ETC2_EAC : QOpenGLTexture = ... # 0x9279 + RGBA_ASTC_4x4 : QOpenGLTexture = ... # 0x93b0 + RGBA_ASTC_5x4 : QOpenGLTexture = ... # 0x93b1 + RGBA_ASTC_5x5 : QOpenGLTexture = ... # 0x93b2 + RGBA_ASTC_6x5 : QOpenGLTexture = ... # 0x93b3 + RGBA_ASTC_6x6 : QOpenGLTexture = ... # 0x93b4 + RGBA_ASTC_8x5 : QOpenGLTexture = ... # 0x93b5 + RGBA_ASTC_8x6 : QOpenGLTexture = ... # 0x93b6 + RGBA_ASTC_8x8 : QOpenGLTexture = ... # 0x93b7 + RGBA_ASTC_10x5 : QOpenGLTexture = ... # 0x93b8 + RGBA_ASTC_10x6 : QOpenGLTexture = ... # 0x93b9 + RGBA_ASTC_10x8 : QOpenGLTexture = ... # 0x93ba + RGBA_ASTC_10x10 : QOpenGLTexture = ... # 0x93bb + RGBA_ASTC_12x10 : QOpenGLTexture = ... # 0x93bc + RGBA_ASTC_12x12 : QOpenGLTexture = ... # 0x93bd + SRGB8_Alpha8_ASTC_4x4 : QOpenGLTexture = ... # 0x93d0 + SRGB8_Alpha8_ASTC_5x4 : QOpenGLTexture = ... # 0x93d1 + SRGB8_Alpha8_ASTC_5x5 : QOpenGLTexture = ... # 0x93d2 + SRGB8_Alpha8_ASTC_6x5 : QOpenGLTexture = ... # 0x93d3 + SRGB8_Alpha8_ASTC_6x6 : QOpenGLTexture = ... # 0x93d4 + SRGB8_Alpha8_ASTC_8x5 : QOpenGLTexture = ... # 0x93d5 + SRGB8_Alpha8_ASTC_8x6 : QOpenGLTexture = ... # 0x93d6 + SRGB8_Alpha8_ASTC_8x8 : QOpenGLTexture = ... # 0x93d7 + SRGB8_Alpha8_ASTC_10x5 : QOpenGLTexture = ... # 0x93d8 + SRGB8_Alpha8_ASTC_10x6 : QOpenGLTexture = ... # 0x93d9 + SRGB8_Alpha8_ASTC_10x8 : QOpenGLTexture = ... # 0x93da + SRGB8_Alpha8_ASTC_10x10 : QOpenGLTexture = ... # 0x93db + SRGB8_Alpha8_ASTC_12x10 : QOpenGLTexture = ... # 0x93dc + SRGB8_Alpha8_ASTC_12x12 : QOpenGLTexture = ... # 0x93dd + MaxFeatureFlag : QOpenGLTexture = ... # 0x10000 + + class BindingTarget(object): + BindingTarget1D : QOpenGLTexture.BindingTarget = ... # 0x8068 + BindingTarget2D : QOpenGLTexture.BindingTarget = ... # 0x8069 + BindingTarget3D : QOpenGLTexture.BindingTarget = ... # 0x806a + BindingTargetRectangle : QOpenGLTexture.BindingTarget = ... # 0x84f6 + BindingTargetCubeMap : QOpenGLTexture.BindingTarget = ... # 0x8514 + BindingTarget1DArray : QOpenGLTexture.BindingTarget = ... # 0x8c1c + BindingTarget2DArray : QOpenGLTexture.BindingTarget = ... # 0x8c1d + BindingTargetBuffer : QOpenGLTexture.BindingTarget = ... # 0x8c2c + BindingTargetCubeMapArray: QOpenGLTexture.BindingTarget = ... # 0x900a + BindingTarget2DMultisample: QOpenGLTexture.BindingTarget = ... # 0x9104 + BindingTarget2DMultisampleArray: QOpenGLTexture.BindingTarget = ... # 0x9105 + + class ComparisonFunction(object): + CompareNever : QOpenGLTexture.ComparisonFunction = ... # 0x200 + CompareLess : QOpenGLTexture.ComparisonFunction = ... # 0x201 + CompareEqual : QOpenGLTexture.ComparisonFunction = ... # 0x202 + CompareLessEqual : QOpenGLTexture.ComparisonFunction = ... # 0x203 + CompareGreater : QOpenGLTexture.ComparisonFunction = ... # 0x204 + CommpareNotEqual : QOpenGLTexture.ComparisonFunction = ... # 0x205 + CompareGreaterEqual : QOpenGLTexture.ComparisonFunction = ... # 0x206 + CompareAlways : QOpenGLTexture.ComparisonFunction = ... # 0x207 + + class ComparisonMode(object): + CompareNone : QOpenGLTexture.ComparisonMode = ... # 0x0 + CompareRefToTexture : QOpenGLTexture.ComparisonMode = ... # 0x884e + + class CoordinateDirection(object): + DirectionS : QOpenGLTexture.CoordinateDirection = ... # 0x2802 + DirectionT : QOpenGLTexture.CoordinateDirection = ... # 0x2803 + DirectionR : QOpenGLTexture.CoordinateDirection = ... # 0x8072 + + class CubeMapFace(object): + CubeMapPositiveX : QOpenGLTexture.CubeMapFace = ... # 0x8515 + CubeMapNegativeX : QOpenGLTexture.CubeMapFace = ... # 0x8516 + CubeMapPositiveY : QOpenGLTexture.CubeMapFace = ... # 0x8517 + CubeMapNegativeY : QOpenGLTexture.CubeMapFace = ... # 0x8518 + CubeMapPositiveZ : QOpenGLTexture.CubeMapFace = ... # 0x8519 + CubeMapNegativeZ : QOpenGLTexture.CubeMapFace = ... # 0x851a + + class DepthStencilMode(object): + StencilMode : QOpenGLTexture.DepthStencilMode = ... # 0x1901 + DepthMode : QOpenGLTexture.DepthStencilMode = ... # 0x1902 + + class Feature(object): + ImmutableStorage : QOpenGLTexture.Feature = ... # 0x1 + ImmutableMultisampleStorage: QOpenGLTexture.Feature = ... # 0x2 + TextureRectangle : QOpenGLTexture.Feature = ... # 0x4 + TextureArrays : QOpenGLTexture.Feature = ... # 0x8 + Texture3D : QOpenGLTexture.Feature = ... # 0x10 + TextureMultisample : QOpenGLTexture.Feature = ... # 0x20 + TextureBuffer : QOpenGLTexture.Feature = ... # 0x40 + TextureCubeMapArrays : QOpenGLTexture.Feature = ... # 0x80 + Swizzle : QOpenGLTexture.Feature = ... # 0x100 + StencilTexturing : QOpenGLTexture.Feature = ... # 0x200 + AnisotropicFiltering : QOpenGLTexture.Feature = ... # 0x400 + NPOTTextures : QOpenGLTexture.Feature = ... # 0x800 + NPOTTextureRepeat : QOpenGLTexture.Feature = ... # 0x1000 + Texture1D : QOpenGLTexture.Feature = ... # 0x2000 + TextureComparisonOperators: QOpenGLTexture.Feature = ... # 0x4000 + TextureMipMapLevel : QOpenGLTexture.Feature = ... # 0x8000 + MaxFeatureFlag : QOpenGLTexture.Feature = ... # 0x10000 + + class Features(object): ... + + class Filter(object): + Nearest : QOpenGLTexture.Filter = ... # 0x2600 + Linear : QOpenGLTexture.Filter = ... # 0x2601 + NearestMipMapNearest : QOpenGLTexture.Filter = ... # 0x2700 + LinearMipMapNearest : QOpenGLTexture.Filter = ... # 0x2701 + NearestMipMapLinear : QOpenGLTexture.Filter = ... # 0x2702 + LinearMipMapLinear : QOpenGLTexture.Filter = ... # 0x2703 + + class MipMapGeneration(object): + GenerateMipMaps : QOpenGLTexture.MipMapGeneration = ... # 0x0 + DontGenerateMipMaps : QOpenGLTexture.MipMapGeneration = ... # 0x1 + + class PixelFormat(object): + NoSourceFormat : QOpenGLTexture.PixelFormat = ... # 0x0 + Stencil : QOpenGLTexture.PixelFormat = ... # 0x1901 + Depth : QOpenGLTexture.PixelFormat = ... # 0x1902 + Red : QOpenGLTexture.PixelFormat = ... # 0x1903 + Alpha : QOpenGLTexture.PixelFormat = ... # 0x1906 + RGB : QOpenGLTexture.PixelFormat = ... # 0x1907 + RGBA : QOpenGLTexture.PixelFormat = ... # 0x1908 + Luminance : QOpenGLTexture.PixelFormat = ... # 0x1909 + LuminanceAlpha : QOpenGLTexture.PixelFormat = ... # 0x190a + BGR : QOpenGLTexture.PixelFormat = ... # 0x80e0 + BGRA : QOpenGLTexture.PixelFormat = ... # 0x80e1 + RG : QOpenGLTexture.PixelFormat = ... # 0x8227 + RG_Integer : QOpenGLTexture.PixelFormat = ... # 0x8228 + DepthStencil : QOpenGLTexture.PixelFormat = ... # 0x84f9 + Red_Integer : QOpenGLTexture.PixelFormat = ... # 0x8d94 + RGB_Integer : QOpenGLTexture.PixelFormat = ... # 0x8d98 + RGBA_Integer : QOpenGLTexture.PixelFormat = ... # 0x8d99 + BGR_Integer : QOpenGLTexture.PixelFormat = ... # 0x8d9a + BGRA_Integer : QOpenGLTexture.PixelFormat = ... # 0x8d9b + + class PixelType(object): + NoPixelType : QOpenGLTexture.PixelType = ... # 0x0 + Int8 : QOpenGLTexture.PixelType = ... # 0x1400 + UInt8 : QOpenGLTexture.PixelType = ... # 0x1401 + Int16 : QOpenGLTexture.PixelType = ... # 0x1402 + UInt16 : QOpenGLTexture.PixelType = ... # 0x1403 + Int32 : QOpenGLTexture.PixelType = ... # 0x1404 + UInt32 : QOpenGLTexture.PixelType = ... # 0x1405 + Float32 : QOpenGLTexture.PixelType = ... # 0x1406 + Float16 : QOpenGLTexture.PixelType = ... # 0x140b + UInt8_RG3B2 : QOpenGLTexture.PixelType = ... # 0x8032 + UInt16_RGBA4 : QOpenGLTexture.PixelType = ... # 0x8033 + UInt16_RGB5A1 : QOpenGLTexture.PixelType = ... # 0x8034 + UInt32_RGBA8 : QOpenGLTexture.PixelType = ... # 0x8035 + UInt32_RGB10A2 : QOpenGLTexture.PixelType = ... # 0x8036 + UInt8_RG3B2_Rev : QOpenGLTexture.PixelType = ... # 0x8362 + UInt16_R5G6B5 : QOpenGLTexture.PixelType = ... # 0x8363 + UInt16_R5G6B5_Rev : QOpenGLTexture.PixelType = ... # 0x8364 + UInt16_RGBA4_Rev : QOpenGLTexture.PixelType = ... # 0x8365 + UInt16_RGB5A1_Rev : QOpenGLTexture.PixelType = ... # 0x8366 + UInt32_RGBA8_Rev : QOpenGLTexture.PixelType = ... # 0x8367 + UInt32_RGB10A2_Rev : QOpenGLTexture.PixelType = ... # 0x8368 + UInt32_D24S8 : QOpenGLTexture.PixelType = ... # 0x84fa + UInt32_RG11B10F : QOpenGLTexture.PixelType = ... # 0x8c3b + UInt32_RGB9_E5 : QOpenGLTexture.PixelType = ... # 0x8c3e + Float16OES : QOpenGLTexture.PixelType = ... # 0x8d61 + Float32_D32_UInt32_S8_X24: QOpenGLTexture.PixelType = ... # 0x8dad + + class SwizzleComponent(object): + SwizzleRed : QOpenGLTexture.SwizzleComponent = ... # 0x8e42 + SwizzleGreen : QOpenGLTexture.SwizzleComponent = ... # 0x8e43 + SwizzleBlue : QOpenGLTexture.SwizzleComponent = ... # 0x8e44 + SwizzleAlpha : QOpenGLTexture.SwizzleComponent = ... # 0x8e45 + + class SwizzleValue(object): + ZeroValue : QOpenGLTexture.SwizzleValue = ... # 0x0 + OneValue : QOpenGLTexture.SwizzleValue = ... # 0x1 + RedValue : QOpenGLTexture.SwizzleValue = ... # 0x1903 + GreenValue : QOpenGLTexture.SwizzleValue = ... # 0x1904 + BlueValue : QOpenGLTexture.SwizzleValue = ... # 0x1905 + AlphaValue : QOpenGLTexture.SwizzleValue = ... # 0x1906 + + class Target(object): + Target1D : QOpenGLTexture.Target = ... # 0xde0 + Target2D : QOpenGLTexture.Target = ... # 0xde1 + Target3D : QOpenGLTexture.Target = ... # 0x806f + TargetRectangle : QOpenGLTexture.Target = ... # 0x84f5 + TargetCubeMap : QOpenGLTexture.Target = ... # 0x8513 + Target1DArray : QOpenGLTexture.Target = ... # 0x8c18 + Target2DArray : QOpenGLTexture.Target = ... # 0x8c1a + TargetBuffer : QOpenGLTexture.Target = ... # 0x8c2a + TargetCubeMapArray : QOpenGLTexture.Target = ... # 0x9009 + Target2DMultisample : QOpenGLTexture.Target = ... # 0x9100 + Target2DMultisampleArray : QOpenGLTexture.Target = ... # 0x9102 + + class TextureFormat(object): + NoFormat : QOpenGLTexture.TextureFormat = ... # 0x0 + DepthFormat : QOpenGLTexture.TextureFormat = ... # 0x1902 + AlphaFormat : QOpenGLTexture.TextureFormat = ... # 0x1906 + RGBFormat : QOpenGLTexture.TextureFormat = ... # 0x1907 + RGBAFormat : QOpenGLTexture.TextureFormat = ... # 0x1908 + LuminanceFormat : QOpenGLTexture.TextureFormat = ... # 0x1909 + LuminanceAlphaFormat : QOpenGLTexture.TextureFormat = ... # 0x190a + RG3B2 : QOpenGLTexture.TextureFormat = ... # 0x2a10 + RGB8_UNorm : QOpenGLTexture.TextureFormat = ... # 0x8051 + RGB16_UNorm : QOpenGLTexture.TextureFormat = ... # 0x8054 + RGBA4 : QOpenGLTexture.TextureFormat = ... # 0x8056 + RGB5A1 : QOpenGLTexture.TextureFormat = ... # 0x8057 + RGBA8_UNorm : QOpenGLTexture.TextureFormat = ... # 0x8058 + RGBA16_UNorm : QOpenGLTexture.TextureFormat = ... # 0x805b + D16 : QOpenGLTexture.TextureFormat = ... # 0x81a5 + D24 : QOpenGLTexture.TextureFormat = ... # 0x81a6 + D32 : QOpenGLTexture.TextureFormat = ... # 0x81a7 + R8_UNorm : QOpenGLTexture.TextureFormat = ... # 0x8229 + R16_UNorm : QOpenGLTexture.TextureFormat = ... # 0x822a + RG8_UNorm : QOpenGLTexture.TextureFormat = ... # 0x822b + RG16_UNorm : QOpenGLTexture.TextureFormat = ... # 0x822c + R16F : QOpenGLTexture.TextureFormat = ... # 0x822d + R32F : QOpenGLTexture.TextureFormat = ... # 0x822e + RG16F : QOpenGLTexture.TextureFormat = ... # 0x822f + RG32F : QOpenGLTexture.TextureFormat = ... # 0x8230 + R8I : QOpenGLTexture.TextureFormat = ... # 0x8231 + R8U : QOpenGLTexture.TextureFormat = ... # 0x8232 + R16I : QOpenGLTexture.TextureFormat = ... # 0x8233 + R16U : QOpenGLTexture.TextureFormat = ... # 0x8234 + R32I : QOpenGLTexture.TextureFormat = ... # 0x8235 + R32U : QOpenGLTexture.TextureFormat = ... # 0x8236 + RG8I : QOpenGLTexture.TextureFormat = ... # 0x8237 + RG8U : QOpenGLTexture.TextureFormat = ... # 0x8238 + RG16I : QOpenGLTexture.TextureFormat = ... # 0x8239 + RG16U : QOpenGLTexture.TextureFormat = ... # 0x823a + RG32I : QOpenGLTexture.TextureFormat = ... # 0x823b + RG32U : QOpenGLTexture.TextureFormat = ... # 0x823c + RGB_DXT1 : QOpenGLTexture.TextureFormat = ... # 0x83f0 + RGBA_DXT1 : QOpenGLTexture.TextureFormat = ... # 0x83f1 + RGBA_DXT3 : QOpenGLTexture.TextureFormat = ... # 0x83f2 + RGBA_DXT5 : QOpenGLTexture.TextureFormat = ... # 0x83f3 + RGBA32F : QOpenGLTexture.TextureFormat = ... # 0x8814 + RGB32F : QOpenGLTexture.TextureFormat = ... # 0x8815 + RGBA16F : QOpenGLTexture.TextureFormat = ... # 0x881a + RGB16F : QOpenGLTexture.TextureFormat = ... # 0x881b + D24S8 : QOpenGLTexture.TextureFormat = ... # 0x88f0 + RG11B10F : QOpenGLTexture.TextureFormat = ... # 0x8c3a + RGB9E5 : QOpenGLTexture.TextureFormat = ... # 0x8c3d + SRGB8 : QOpenGLTexture.TextureFormat = ... # 0x8c41 + SRGB8_Alpha8 : QOpenGLTexture.TextureFormat = ... # 0x8c43 + SRGB_DXT1 : QOpenGLTexture.TextureFormat = ... # 0x8c4c + SRGB_Alpha_DXT1 : QOpenGLTexture.TextureFormat = ... # 0x8c4d + SRGB_Alpha_DXT3 : QOpenGLTexture.TextureFormat = ... # 0x8c4e + SRGB_Alpha_DXT5 : QOpenGLTexture.TextureFormat = ... # 0x8c4f + D32F : QOpenGLTexture.TextureFormat = ... # 0x8cac + D32FS8X24 : QOpenGLTexture.TextureFormat = ... # 0x8cad + S8 : QOpenGLTexture.TextureFormat = ... # 0x8d48 + R5G6B5 : QOpenGLTexture.TextureFormat = ... # 0x8d62 + RGB8_ETC1 : QOpenGLTexture.TextureFormat = ... # 0x8d64 + RGBA32U : QOpenGLTexture.TextureFormat = ... # 0x8d70 + RGB32U : QOpenGLTexture.TextureFormat = ... # 0x8d71 + RGBA16U : QOpenGLTexture.TextureFormat = ... # 0x8d76 + RGB16U : QOpenGLTexture.TextureFormat = ... # 0x8d77 + RGBA8U : QOpenGLTexture.TextureFormat = ... # 0x8d7c + RGB8U : QOpenGLTexture.TextureFormat = ... # 0x8d7d + RGBA32I : QOpenGLTexture.TextureFormat = ... # 0x8d82 + RGB32I : QOpenGLTexture.TextureFormat = ... # 0x8d83 + RGBA16I : QOpenGLTexture.TextureFormat = ... # 0x8d88 + RGB16I : QOpenGLTexture.TextureFormat = ... # 0x8d89 + RGBA8I : QOpenGLTexture.TextureFormat = ... # 0x8d8e + RGB8I : QOpenGLTexture.TextureFormat = ... # 0x8d8f + R_ATI1N_UNorm : QOpenGLTexture.TextureFormat = ... # 0x8dbb + R_ATI1N_SNorm : QOpenGLTexture.TextureFormat = ... # 0x8dbc + RG_ATI2N_UNorm : QOpenGLTexture.TextureFormat = ... # 0x8dbd + RG_ATI2N_SNorm : QOpenGLTexture.TextureFormat = ... # 0x8dbe + RGB_BP_UNorm : QOpenGLTexture.TextureFormat = ... # 0x8e8c + SRGB_BP_UNorm : QOpenGLTexture.TextureFormat = ... # 0x8e8d + RGB_BP_SIGNED_FLOAT : QOpenGLTexture.TextureFormat = ... # 0x8e8e + RGB_BP_UNSIGNED_FLOAT : QOpenGLTexture.TextureFormat = ... # 0x8e8f + R8_SNorm : QOpenGLTexture.TextureFormat = ... # 0x8f94 + RG8_SNorm : QOpenGLTexture.TextureFormat = ... # 0x8f95 + RGB8_SNorm : QOpenGLTexture.TextureFormat = ... # 0x8f96 + RGBA8_SNorm : QOpenGLTexture.TextureFormat = ... # 0x8f97 + R16_SNorm : QOpenGLTexture.TextureFormat = ... # 0x8f98 + RG16_SNorm : QOpenGLTexture.TextureFormat = ... # 0x8f99 + RGB16_SNorm : QOpenGLTexture.TextureFormat = ... # 0x8f9a + RGBA16_SNorm : QOpenGLTexture.TextureFormat = ... # 0x8f9b + RGB10A2 : QOpenGLTexture.TextureFormat = ... # 0x906f + R11_EAC_UNorm : QOpenGLTexture.TextureFormat = ... # 0x9270 + R11_EAC_SNorm : QOpenGLTexture.TextureFormat = ... # 0x9271 + RG11_EAC_UNorm : QOpenGLTexture.TextureFormat = ... # 0x9272 + RG11_EAC_SNorm : QOpenGLTexture.TextureFormat = ... # 0x9273 + RGB8_ETC2 : QOpenGLTexture.TextureFormat = ... # 0x9274 + SRGB8_ETC2 : QOpenGLTexture.TextureFormat = ... # 0x9275 + RGB8_PunchThrough_Alpha1_ETC2: QOpenGLTexture.TextureFormat = ... # 0x9276 + SRGB8_PunchThrough_Alpha1_ETC2: QOpenGLTexture.TextureFormat = ... # 0x9277 + RGBA8_ETC2_EAC : QOpenGLTexture.TextureFormat = ... # 0x9278 + SRGB8_Alpha8_ETC2_EAC : QOpenGLTexture.TextureFormat = ... # 0x9279 + RGBA_ASTC_4x4 : QOpenGLTexture.TextureFormat = ... # 0x93b0 + RGBA_ASTC_5x4 : QOpenGLTexture.TextureFormat = ... # 0x93b1 + RGBA_ASTC_5x5 : QOpenGLTexture.TextureFormat = ... # 0x93b2 + RGBA_ASTC_6x5 : QOpenGLTexture.TextureFormat = ... # 0x93b3 + RGBA_ASTC_6x6 : QOpenGLTexture.TextureFormat = ... # 0x93b4 + RGBA_ASTC_8x5 : QOpenGLTexture.TextureFormat = ... # 0x93b5 + RGBA_ASTC_8x6 : QOpenGLTexture.TextureFormat = ... # 0x93b6 + RGBA_ASTC_8x8 : QOpenGLTexture.TextureFormat = ... # 0x93b7 + RGBA_ASTC_10x5 : QOpenGLTexture.TextureFormat = ... # 0x93b8 + RGBA_ASTC_10x6 : QOpenGLTexture.TextureFormat = ... # 0x93b9 + RGBA_ASTC_10x8 : QOpenGLTexture.TextureFormat = ... # 0x93ba + RGBA_ASTC_10x10 : QOpenGLTexture.TextureFormat = ... # 0x93bb + RGBA_ASTC_12x10 : QOpenGLTexture.TextureFormat = ... # 0x93bc + RGBA_ASTC_12x12 : QOpenGLTexture.TextureFormat = ... # 0x93bd + SRGB8_Alpha8_ASTC_4x4 : QOpenGLTexture.TextureFormat = ... # 0x93d0 + SRGB8_Alpha8_ASTC_5x4 : QOpenGLTexture.TextureFormat = ... # 0x93d1 + SRGB8_Alpha8_ASTC_5x5 : QOpenGLTexture.TextureFormat = ... # 0x93d2 + SRGB8_Alpha8_ASTC_6x5 : QOpenGLTexture.TextureFormat = ... # 0x93d3 + SRGB8_Alpha8_ASTC_6x6 : QOpenGLTexture.TextureFormat = ... # 0x93d4 + SRGB8_Alpha8_ASTC_8x5 : QOpenGLTexture.TextureFormat = ... # 0x93d5 + SRGB8_Alpha8_ASTC_8x6 : QOpenGLTexture.TextureFormat = ... # 0x93d6 + SRGB8_Alpha8_ASTC_8x8 : QOpenGLTexture.TextureFormat = ... # 0x93d7 + SRGB8_Alpha8_ASTC_10x5 : QOpenGLTexture.TextureFormat = ... # 0x93d8 + SRGB8_Alpha8_ASTC_10x6 : QOpenGLTexture.TextureFormat = ... # 0x93d9 + SRGB8_Alpha8_ASTC_10x8 : QOpenGLTexture.TextureFormat = ... # 0x93da + SRGB8_Alpha8_ASTC_10x10 : QOpenGLTexture.TextureFormat = ... # 0x93db + SRGB8_Alpha8_ASTC_12x10 : QOpenGLTexture.TextureFormat = ... # 0x93dc + SRGB8_Alpha8_ASTC_12x12 : QOpenGLTexture.TextureFormat = ... # 0x93dd + + class TextureFormatClass(object): + NoFormatClass : QOpenGLTexture.TextureFormatClass = ... # 0x0 + FormatClass_128Bit : QOpenGLTexture.TextureFormatClass = ... # 0x1 + FormatClass_96Bit : QOpenGLTexture.TextureFormatClass = ... # 0x2 + FormatClass_64Bit : QOpenGLTexture.TextureFormatClass = ... # 0x3 + FormatClass_48Bit : QOpenGLTexture.TextureFormatClass = ... # 0x4 + FormatClass_32Bit : QOpenGLTexture.TextureFormatClass = ... # 0x5 + FormatClass_24Bit : QOpenGLTexture.TextureFormatClass = ... # 0x6 + FormatClass_16Bit : QOpenGLTexture.TextureFormatClass = ... # 0x7 + FormatClass_8Bit : QOpenGLTexture.TextureFormatClass = ... # 0x8 + FormatClass_RGTC1_R : QOpenGLTexture.TextureFormatClass = ... # 0x9 + FormatClass_RGTC2_RG : QOpenGLTexture.TextureFormatClass = ... # 0xa + FormatClass_BPTC_Unorm : QOpenGLTexture.TextureFormatClass = ... # 0xb + FormatClass_BPTC_Float : QOpenGLTexture.TextureFormatClass = ... # 0xc + FormatClass_S3TC_DXT1_RGB: QOpenGLTexture.TextureFormatClass = ... # 0xd + FormatClass_S3TC_DXT1_RGBA: QOpenGLTexture.TextureFormatClass = ... # 0xe + FormatClass_S3TC_DXT3_RGBA: QOpenGLTexture.TextureFormatClass = ... # 0xf + FormatClass_S3TC_DXT5_RGBA: QOpenGLTexture.TextureFormatClass = ... # 0x10 + FormatClass_Unique : QOpenGLTexture.TextureFormatClass = ... # 0x11 + + class TextureUnitReset(object): + ResetTextureUnit : QOpenGLTexture.TextureUnitReset = ... # 0x0 + DontResetTextureUnit : QOpenGLTexture.TextureUnitReset = ... # 0x1 + + class WrapMode(object): + Repeat : QOpenGLTexture.WrapMode = ... # 0x2901 + ClampToBorder : QOpenGLTexture.WrapMode = ... # 0x812d + ClampToEdge : QOpenGLTexture.WrapMode = ... # 0x812f + MirroredRepeat : QOpenGLTexture.WrapMode = ... # 0x8370 + + @typing.overload + def __init__(self, image:PySide2.QtGui.QImage, genMipMaps:PySide2.QtGui.QOpenGLTexture.MipMapGeneration=...) -> None: ... + @typing.overload + def __init__(self, target:PySide2.QtGui.QOpenGLTexture.Target) -> None: ... + + @typing.overload + def allocateStorage(self) -> None: ... + @typing.overload + def allocateStorage(self, pixelFormat:PySide2.QtGui.QOpenGLTexture.PixelFormat, pixelType:PySide2.QtGui.QOpenGLTexture.PixelType) -> None: ... + @typing.overload + def bind(self) -> None: ... + @typing.overload + def bind(self, unit:int, reset:PySide2.QtGui.QOpenGLTexture.TextureUnitReset=...) -> None: ... + def borderColor(self) -> PySide2.QtGui.QColor: ... + @typing.overload + @staticmethod + def boundTextureId(target:PySide2.QtGui.QOpenGLTexture.BindingTarget) -> int: ... + @typing.overload + @staticmethod + def boundTextureId(unit:int, target:PySide2.QtGui.QOpenGLTexture.BindingTarget) -> int: ... + def comparisonFunction(self) -> PySide2.QtGui.QOpenGLTexture.ComparisonFunction: ... + def comparisonMode(self) -> PySide2.QtGui.QOpenGLTexture.ComparisonMode: ... + def create(self) -> bool: ... + def createTextureView(self, target:PySide2.QtGui.QOpenGLTexture.Target, viewFormat:PySide2.QtGui.QOpenGLTexture.TextureFormat, minimumMipmapLevel:int, maximumMipmapLevel:int, minimumLayer:int, maximumLayer:int) -> PySide2.QtGui.QOpenGLTexture: ... + def depth(self) -> int: ... + def depthStencilMode(self) -> PySide2.QtGui.QOpenGLTexture.DepthStencilMode: ... + def destroy(self) -> None: ... + def faces(self) -> int: ... + def format(self) -> PySide2.QtGui.QOpenGLTexture.TextureFormat: ... + @typing.overload + def generateMipMaps(self) -> None: ... + @typing.overload + def generateMipMaps(self, baseLevel:int, resetBaseLevel:bool=...) -> None: ... + @staticmethod + def hasFeature(feature:PySide2.QtGui.QOpenGLTexture.Feature) -> bool: ... + def height(self) -> int: ... + def isAutoMipMapGenerationEnabled(self) -> bool: ... + @typing.overload + def isBound(self) -> bool: ... + @typing.overload + def isBound(self, unit:int) -> bool: ... + def isCreated(self) -> bool: ... + def isFixedSamplePositions(self) -> bool: ... + def isStorageAllocated(self) -> bool: ... + def isTextureView(self) -> bool: ... + def layers(self) -> int: ... + def levelOfDetailRange(self) -> typing.Tuple: ... + def levelofDetailBias(self) -> float: ... + def magnificationFilter(self) -> PySide2.QtGui.QOpenGLTexture.Filter: ... + def maximumAnisotropy(self) -> float: ... + def maximumLevelOfDetail(self) -> float: ... + def maximumMipLevels(self) -> int: ... + def minMagFilters(self) -> typing.Tuple: ... + def minificationFilter(self) -> PySide2.QtGui.QOpenGLTexture.Filter: ... + def minimumLevelOfDetail(self) -> float: ... + def mipBaseLevel(self) -> int: ... + def mipLevelRange(self) -> typing.Tuple: ... + def mipLevels(self) -> int: ... + def mipMaxLevel(self) -> int: ... + @typing.overload + def release(self) -> None: ... + @typing.overload + def release(self, unit:int, reset:PySide2.QtGui.QOpenGLTexture.TextureUnitReset=...) -> None: ... + def samples(self) -> int: ... + def setAutoMipMapGenerationEnabled(self, enabled:bool) -> None: ... + @typing.overload + def setBorderColor(self, color:PySide2.QtGui.QColor) -> None: ... + @typing.overload + def setBorderColor(self, r:float, g:float, b:float, a:float) -> None: ... + @typing.overload + def setBorderColor(self, r:int, g:int, b:int, a:int) -> None: ... + @typing.overload + def setBorderColor(self, r:int, g:int, b:int, a:int) -> None: ... + def setComparisonFunction(self, function:PySide2.QtGui.QOpenGLTexture.ComparisonFunction) -> None: ... + def setComparisonMode(self, mode:PySide2.QtGui.QOpenGLTexture.ComparisonMode) -> None: ... + @typing.overload + def setCompressedData(self, dataSize:int, data:int, options:typing.Optional[PySide2.QtGui.QOpenGLPixelTransferOptions]=...) -> None: ... + @typing.overload + def setCompressedData(self, mipLevel:int, dataSize:int, data:int, options:typing.Optional[PySide2.QtGui.QOpenGLPixelTransferOptions]=...) -> None: ... + @typing.overload + def setCompressedData(self, mipLevel:int, layer:int, cubeFace:PySide2.QtGui.QOpenGLTexture.CubeMapFace, dataSize:int, data:int, options:typing.Optional[PySide2.QtGui.QOpenGLPixelTransferOptions]=...) -> None: ... + @typing.overload + def setCompressedData(self, mipLevel:int, layer:int, dataSize:int, data:int, options:typing.Optional[PySide2.QtGui.QOpenGLPixelTransferOptions]=...) -> None: ... + @typing.overload + def setCompressedData(self, mipLevel:int, layer:int, layerCount:int, cubeFace:PySide2.QtGui.QOpenGLTexture.CubeMapFace, dataSize:int, data:int, options:typing.Optional[PySide2.QtGui.QOpenGLPixelTransferOptions]=...) -> None: ... + @typing.overload + def setData(self, image:PySide2.QtGui.QImage, genMipMaps:PySide2.QtGui.QOpenGLTexture.MipMapGeneration=...) -> None: ... + @typing.overload + def setData(self, mipLevel:int, layer:int, cubeFace:PySide2.QtGui.QOpenGLTexture.CubeMapFace, sourceFormat:PySide2.QtGui.QOpenGLTexture.PixelFormat, sourceType:PySide2.QtGui.QOpenGLTexture.PixelType, data:int, options:typing.Optional[PySide2.QtGui.QOpenGLPixelTransferOptions]=...) -> None: ... + @typing.overload + def setData(self, mipLevel:int, layer:int, layerCount:int, cubeFace:PySide2.QtGui.QOpenGLTexture.CubeMapFace, sourceFormat:PySide2.QtGui.QOpenGLTexture.PixelFormat, sourceType:PySide2.QtGui.QOpenGLTexture.PixelType, data:int, options:typing.Optional[PySide2.QtGui.QOpenGLPixelTransferOptions]=...) -> None: ... + @typing.overload + def setData(self, mipLevel:int, layer:int, sourceFormat:PySide2.QtGui.QOpenGLTexture.PixelFormat, sourceType:PySide2.QtGui.QOpenGLTexture.PixelType, data:int, options:typing.Optional[PySide2.QtGui.QOpenGLPixelTransferOptions]=...) -> None: ... + @typing.overload + def setData(self, mipLevel:int, sourceFormat:PySide2.QtGui.QOpenGLTexture.PixelFormat, sourceType:PySide2.QtGui.QOpenGLTexture.PixelType, data:int, options:typing.Optional[PySide2.QtGui.QOpenGLPixelTransferOptions]=...) -> None: ... + @typing.overload + def setData(self, sourceFormat:PySide2.QtGui.QOpenGLTexture.PixelFormat, sourceType:PySide2.QtGui.QOpenGLTexture.PixelType, data:int, options:typing.Optional[PySide2.QtGui.QOpenGLPixelTransferOptions]=...) -> None: ... + @typing.overload + def setData(self, xOffset:int, yOffset:int, zOffset:int, width:int, height:int, depth:int, mipLevel:int, layer:int, cubeFace:PySide2.QtGui.QOpenGLTexture.CubeMapFace, layerCount:int, sourceFormat:PySide2.QtGui.QOpenGLTexture.PixelFormat, sourceType:PySide2.QtGui.QOpenGLTexture.PixelType, data:int, options:typing.Optional[PySide2.QtGui.QOpenGLPixelTransferOptions]=...) -> None: ... + @typing.overload + def setData(self, xOffset:int, yOffset:int, zOffset:int, width:int, height:int, depth:int, mipLevel:int, layer:int, cubeFace:PySide2.QtGui.QOpenGLTexture.CubeMapFace, sourceFormat:PySide2.QtGui.QOpenGLTexture.PixelFormat, sourceType:PySide2.QtGui.QOpenGLTexture.PixelType, data:int, options:typing.Optional[PySide2.QtGui.QOpenGLPixelTransferOptions]=...) -> None: ... + @typing.overload + def setData(self, xOffset:int, yOffset:int, zOffset:int, width:int, height:int, depth:int, mipLevel:int, layer:int, sourceFormat:PySide2.QtGui.QOpenGLTexture.PixelFormat, sourceType:PySide2.QtGui.QOpenGLTexture.PixelType, data:int, options:typing.Optional[PySide2.QtGui.QOpenGLPixelTransferOptions]=...) -> None: ... + @typing.overload + def setData(self, xOffset:int, yOffset:int, zOffset:int, width:int, height:int, depth:int, sourceFormat:PySide2.QtGui.QOpenGLTexture.PixelFormat, sourceType:PySide2.QtGui.QOpenGLTexture.PixelType, data:int, options:typing.Optional[PySide2.QtGui.QOpenGLPixelTransferOptions]=...) -> None: ... + def setDepthStencilMode(self, mode:PySide2.QtGui.QOpenGLTexture.DepthStencilMode) -> None: ... + def setFixedSamplePositions(self, fixed:bool) -> None: ... + def setFormat(self, format:PySide2.QtGui.QOpenGLTexture.TextureFormat) -> None: ... + def setLayers(self, layers:int) -> None: ... + def setLevelOfDetailRange(self, min:float, max:float) -> None: ... + def setLevelofDetailBias(self, bias:float) -> None: ... + def setMagnificationFilter(self, filter:PySide2.QtGui.QOpenGLTexture.Filter) -> None: ... + def setMaximumAnisotropy(self, anisotropy:float) -> None: ... + def setMaximumLevelOfDetail(self, value:float) -> None: ... + def setMinMagFilters(self, minificationFilter:PySide2.QtGui.QOpenGLTexture.Filter, magnificationFilter:PySide2.QtGui.QOpenGLTexture.Filter) -> None: ... + def setMinificationFilter(self, filter:PySide2.QtGui.QOpenGLTexture.Filter) -> None: ... + def setMinimumLevelOfDetail(self, value:float) -> None: ... + def setMipBaseLevel(self, baseLevel:int) -> None: ... + def setMipLevelRange(self, baseLevel:int, maxLevel:int) -> None: ... + def setMipLevels(self, levels:int) -> None: ... + def setMipMaxLevel(self, maxLevel:int) -> None: ... + def setSamples(self, samples:int) -> None: ... + def setSize(self, width:int, height:int=..., depth:int=...) -> None: ... + @typing.overload + def setSwizzleMask(self, component:PySide2.QtGui.QOpenGLTexture.SwizzleComponent, value:PySide2.QtGui.QOpenGLTexture.SwizzleValue) -> None: ... + @typing.overload + def setSwizzleMask(self, r:PySide2.QtGui.QOpenGLTexture.SwizzleValue, g:PySide2.QtGui.QOpenGLTexture.SwizzleValue, b:PySide2.QtGui.QOpenGLTexture.SwizzleValue, a:PySide2.QtGui.QOpenGLTexture.SwizzleValue) -> None: ... + @typing.overload + def setWrapMode(self, direction:PySide2.QtGui.QOpenGLTexture.CoordinateDirection, mode:PySide2.QtGui.QOpenGLTexture.WrapMode) -> None: ... + @typing.overload + def setWrapMode(self, mode:PySide2.QtGui.QOpenGLTexture.WrapMode) -> None: ... + def swizzleMask(self, component:PySide2.QtGui.QOpenGLTexture.SwizzleComponent) -> PySide2.QtGui.QOpenGLTexture.SwizzleValue: ... + def target(self) -> PySide2.QtGui.QOpenGLTexture.Target: ... + def textureId(self) -> int: ... + def width(self) -> int: ... + def wrapMode(self, direction:PySide2.QtGui.QOpenGLTexture.CoordinateDirection) -> PySide2.QtGui.QOpenGLTexture.WrapMode: ... + + +class QOpenGLTextureBlitter(Shiboken.Object): + OriginBottomLeft : QOpenGLTextureBlitter = ... # 0x0 + OriginTopLeft : QOpenGLTextureBlitter = ... # 0x1 + + class Origin(object): + OriginBottomLeft : QOpenGLTextureBlitter.Origin = ... # 0x0 + OriginTopLeft : QOpenGLTextureBlitter.Origin = ... # 0x1 + + def __init__(self) -> None: ... + + def bind(self, target:int=...) -> None: ... + @typing.overload + def blit(self, texture:int, targetTransform:PySide2.QtGui.QMatrix4x4, sourceOrigin:PySide2.QtGui.QOpenGLTextureBlitter.Origin) -> None: ... + @typing.overload + def blit(self, texture:int, targetTransform:PySide2.QtGui.QMatrix4x4, sourceTransform:PySide2.QtGui.QMatrix3x3) -> None: ... + def create(self) -> bool: ... + def destroy(self) -> None: ... + def isCreated(self) -> bool: ... + def release(self) -> None: ... + def setOpacity(self, opacity:float) -> None: ... + def setRedBlueSwizzle(self, swizzle:bool) -> None: ... + @staticmethod + def sourceTransform(subTexture:PySide2.QtCore.QRectF, textureSize:PySide2.QtCore.QSize, origin:PySide2.QtGui.QOpenGLTextureBlitter.Origin) -> PySide2.QtGui.QMatrix3x3: ... + def supportsExternalOESTarget(self) -> bool: ... + @staticmethod + def targetTransform(target:PySide2.QtCore.QRectF, viewport:PySide2.QtCore.QRect) -> PySide2.QtGui.QMatrix4x4: ... + + +class QOpenGLTimeMonitor(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def create(self) -> bool: ... + def destroy(self) -> None: ... + def isCreated(self) -> bool: ... + def isResultAvailable(self) -> bool: ... + def objectIds(self) -> typing.List: ... + def recordSample(self) -> int: ... + def reset(self) -> None: ... + def sampleCount(self) -> int: ... + def setSampleCount(self, sampleCount:int) -> None: ... + def waitForIntervals(self) -> typing.List: ... + def waitForSamples(self) -> typing.List: ... + + +class QOpenGLTimerQuery(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def begin(self) -> None: ... + def create(self) -> bool: ... + def destroy(self) -> None: ... + def end(self) -> None: ... + def isCreated(self) -> bool: ... + def isResultAvailable(self) -> bool: ... + def objectId(self) -> int: ... + def recordTimestamp(self) -> None: ... + def waitForResult(self) -> int: ... + def waitForTimestamp(self) -> int: ... + + +class QOpenGLVersionProfile(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, format:PySide2.QtGui.QSurfaceFormat) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtGui.QOpenGLVersionProfile) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def hasProfiles(self) -> bool: ... + def isLegacyVersion(self) -> bool: ... + def isValid(self) -> bool: ... + def profile(self) -> PySide2.QtGui.QSurfaceFormat.OpenGLContextProfile: ... + def setProfile(self, profile:PySide2.QtGui.QSurfaceFormat.OpenGLContextProfile) -> None: ... + def setVersion(self, majorVersion:int, minorVersion:int) -> None: ... + def version(self) -> typing.Tuple: ... + + +class QOpenGLVertexArrayObject(PySide2.QtCore.QObject): + + class Binder(Shiboken.Object): + + def __init__(self, v:PySide2.QtGui.QOpenGLVertexArrayObject) -> None: ... + + def rebind(self) -> None: ... + def release(self) -> None: ... + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def bind(self) -> None: ... + def create(self) -> bool: ... + def destroy(self) -> None: ... + def isCreated(self) -> bool: ... + def objectId(self) -> int: ... + def release(self) -> None: ... + + +class QOpenGLWindow(PySide2.QtGui.QPaintDeviceWindow): + NoPartialUpdate : QOpenGLWindow = ... # 0x0 + PartialUpdateBlit : QOpenGLWindow = ... # 0x1 + PartialUpdateBlend : QOpenGLWindow = ... # 0x2 + + class UpdateBehavior(object): + NoPartialUpdate : QOpenGLWindow.UpdateBehavior = ... # 0x0 + PartialUpdateBlit : QOpenGLWindow.UpdateBehavior = ... # 0x1 + PartialUpdateBlend : QOpenGLWindow.UpdateBehavior = ... # 0x2 + + @typing.overload + def __init__(self, shareContext:PySide2.QtGui.QOpenGLContext, updateBehavior:PySide2.QtGui.QOpenGLWindow.UpdateBehavior=..., parent:typing.Optional[PySide2.QtGui.QWindow]=...) -> None: ... + @typing.overload + def __init__(self, updateBehavior:PySide2.QtGui.QOpenGLWindow.UpdateBehavior=..., parent:typing.Optional[PySide2.QtGui.QWindow]=...) -> None: ... + + def context(self) -> PySide2.QtGui.QOpenGLContext: ... + def defaultFramebufferObject(self) -> int: ... + def doneCurrent(self) -> None: ... + def grabFramebuffer(self) -> PySide2.QtGui.QImage: ... + def initializeGL(self) -> None: ... + def isValid(self) -> bool: ... + def makeCurrent(self) -> None: ... + def metric(self, metric:PySide2.QtGui.QPaintDevice.PaintDeviceMetric) -> int: ... + def paintEvent(self, event:PySide2.QtGui.QPaintEvent) -> None: ... + def paintGL(self) -> None: ... + def paintOverGL(self) -> None: ... + def paintUnderGL(self) -> None: ... + def redirected(self, arg__1:PySide2.QtCore.QPoint) -> PySide2.QtGui.QPaintDevice: ... + def resizeEvent(self, event:PySide2.QtGui.QResizeEvent) -> None: ... + def resizeGL(self, w:int, h:int) -> None: ... + def shareContext(self) -> PySide2.QtGui.QOpenGLContext: ... + def updateBehavior(self) -> PySide2.QtGui.QOpenGLWindow.UpdateBehavior: ... + + +class QPageLayout(Shiboken.Object): + Millimeter : QPageLayout = ... # 0x0 + Portrait : QPageLayout = ... # 0x0 + StandardMode : QPageLayout = ... # 0x0 + FullPageMode : QPageLayout = ... # 0x1 + Landscape : QPageLayout = ... # 0x1 + Point : QPageLayout = ... # 0x1 + Inch : QPageLayout = ... # 0x2 + Pica : QPageLayout = ... # 0x3 + Didot : QPageLayout = ... # 0x4 + Cicero : QPageLayout = ... # 0x5 + + class Mode(object): + StandardMode : QPageLayout.Mode = ... # 0x0 + FullPageMode : QPageLayout.Mode = ... # 0x1 + + class Orientation(object): + Portrait : QPageLayout.Orientation = ... # 0x0 + Landscape : QPageLayout.Orientation = ... # 0x1 + + class Unit(object): + Millimeter : QPageLayout.Unit = ... # 0x0 + Point : QPageLayout.Unit = ... # 0x1 + Inch : QPageLayout.Unit = ... # 0x2 + Pica : QPageLayout.Unit = ... # 0x3 + Didot : QPageLayout.Unit = ... # 0x4 + Cicero : QPageLayout.Unit = ... # 0x5 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtGui.QPageLayout) -> None: ... + @typing.overload + def __init__(self, pageSize:PySide2.QtGui.QPageSize, orientation:PySide2.QtGui.QPageLayout.Orientation, margins:PySide2.QtCore.QMarginsF, units:PySide2.QtGui.QPageLayout.Unit=..., minMargins:PySide2.QtCore.QMarginsF=...) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @typing.overload + def fullRect(self) -> PySide2.QtCore.QRectF: ... + @typing.overload + def fullRect(self, units:PySide2.QtGui.QPageLayout.Unit) -> PySide2.QtCore.QRectF: ... + def fullRectPixels(self, resolution:int) -> PySide2.QtCore.QRect: ... + def fullRectPoints(self) -> PySide2.QtCore.QRect: ... + def isEquivalentTo(self, other:PySide2.QtGui.QPageLayout) -> bool: ... + def isValid(self) -> bool: ... + @typing.overload + def margins(self) -> PySide2.QtCore.QMarginsF: ... + @typing.overload + def margins(self, units:PySide2.QtGui.QPageLayout.Unit) -> PySide2.QtCore.QMarginsF: ... + def marginsPixels(self, resolution:int) -> PySide2.QtCore.QMargins: ... + def marginsPoints(self) -> PySide2.QtCore.QMargins: ... + def maximumMargins(self) -> PySide2.QtCore.QMarginsF: ... + def minimumMargins(self) -> PySide2.QtCore.QMarginsF: ... + def mode(self) -> PySide2.QtGui.QPageLayout.Mode: ... + def orientation(self) -> PySide2.QtGui.QPageLayout.Orientation: ... + def pageSize(self) -> PySide2.QtGui.QPageSize: ... + @typing.overload + def paintRect(self) -> PySide2.QtCore.QRectF: ... + @typing.overload + def paintRect(self, units:PySide2.QtGui.QPageLayout.Unit) -> PySide2.QtCore.QRectF: ... + def paintRectPixels(self, resolution:int) -> PySide2.QtCore.QRect: ... + def paintRectPoints(self) -> PySide2.QtCore.QRect: ... + def setBottomMargin(self, bottomMargin:float) -> bool: ... + def setLeftMargin(self, leftMargin:float) -> bool: ... + def setMargins(self, margins:PySide2.QtCore.QMarginsF) -> bool: ... + def setMinimumMargins(self, minMargins:PySide2.QtCore.QMarginsF) -> None: ... + def setMode(self, mode:PySide2.QtGui.QPageLayout.Mode) -> None: ... + def setOrientation(self, orientation:PySide2.QtGui.QPageLayout.Orientation) -> None: ... + def setPageSize(self, pageSize:PySide2.QtGui.QPageSize, minMargins:PySide2.QtCore.QMarginsF=...) -> None: ... + def setRightMargin(self, rightMargin:float) -> bool: ... + def setTopMargin(self, topMargin:float) -> bool: ... + def setUnits(self, units:PySide2.QtGui.QPageLayout.Unit) -> None: ... + def swap(self, other:PySide2.QtGui.QPageLayout) -> None: ... + def units(self) -> PySide2.QtGui.QPageLayout.Unit: ... + + +class QPageSize(Shiboken.Object): + A4 : QPageSize = ... # 0x0 + FuzzyMatch : QPageSize = ... # 0x0 + Millimeter : QPageSize = ... # 0x0 + B5 : QPageSize = ... # 0x1 + FuzzyOrientationMatch : QPageSize = ... # 0x1 + Point : QPageSize = ... # 0x1 + AnsiA : QPageSize = ... # 0x2 + ExactMatch : QPageSize = ... # 0x2 + Inch : QPageSize = ... # 0x2 + Letter : QPageSize = ... # 0x2 + Legal : QPageSize = ... # 0x3 + Pica : QPageSize = ... # 0x3 + Didot : QPageSize = ... # 0x4 + Executive : QPageSize = ... # 0x4 + A0 : QPageSize = ... # 0x5 + Cicero : QPageSize = ... # 0x5 + A1 : QPageSize = ... # 0x6 + A2 : QPageSize = ... # 0x7 + A3 : QPageSize = ... # 0x8 + A5 : QPageSize = ... # 0x9 + A6 : QPageSize = ... # 0xa + A7 : QPageSize = ... # 0xb + A8 : QPageSize = ... # 0xc + A9 : QPageSize = ... # 0xd + B0 : QPageSize = ... # 0xe + B1 : QPageSize = ... # 0xf + B10 : QPageSize = ... # 0x10 + B2 : QPageSize = ... # 0x11 + B3 : QPageSize = ... # 0x12 + B4 : QPageSize = ... # 0x13 + B6 : QPageSize = ... # 0x14 + B7 : QPageSize = ... # 0x15 + B8 : QPageSize = ... # 0x16 + B9 : QPageSize = ... # 0x17 + C5E : QPageSize = ... # 0x18 + EnvelopeC5 : QPageSize = ... # 0x18 + Comm10E : QPageSize = ... # 0x19 + Envelope10 : QPageSize = ... # 0x19 + DLE : QPageSize = ... # 0x1a + EnvelopeDL : QPageSize = ... # 0x1a + Folio : QPageSize = ... # 0x1b + AnsiB : QPageSize = ... # 0x1c + Ledger : QPageSize = ... # 0x1c + Tabloid : QPageSize = ... # 0x1d + Custom : QPageSize = ... # 0x1e + A10 : QPageSize = ... # 0x1f + A3Extra : QPageSize = ... # 0x20 + A4Extra : QPageSize = ... # 0x21 + A4Plus : QPageSize = ... # 0x22 + A4Small : QPageSize = ... # 0x23 + A5Extra : QPageSize = ... # 0x24 + B5Extra : QPageSize = ... # 0x25 + JisB0 : QPageSize = ... # 0x26 + JisB1 : QPageSize = ... # 0x27 + JisB2 : QPageSize = ... # 0x28 + JisB3 : QPageSize = ... # 0x29 + JisB4 : QPageSize = ... # 0x2a + JisB5 : QPageSize = ... # 0x2b + JisB6 : QPageSize = ... # 0x2c + JisB7 : QPageSize = ... # 0x2d + JisB8 : QPageSize = ... # 0x2e + JisB9 : QPageSize = ... # 0x2f + JisB10 : QPageSize = ... # 0x30 + AnsiC : QPageSize = ... # 0x31 + AnsiD : QPageSize = ... # 0x32 + AnsiE : QPageSize = ... # 0x33 + LegalExtra : QPageSize = ... # 0x34 + LetterExtra : QPageSize = ... # 0x35 + LetterPlus : QPageSize = ... # 0x36 + LetterSmall : QPageSize = ... # 0x37 + TabloidExtra : QPageSize = ... # 0x38 + ArchA : QPageSize = ... # 0x39 + ArchB : QPageSize = ... # 0x3a + ArchC : QPageSize = ... # 0x3b + ArchD : QPageSize = ... # 0x3c + ArchE : QPageSize = ... # 0x3d + Imperial7x9 : QPageSize = ... # 0x3e + Imperial8x10 : QPageSize = ... # 0x3f + Imperial9x11 : QPageSize = ... # 0x40 + Imperial9x12 : QPageSize = ... # 0x41 + Imperial10x11 : QPageSize = ... # 0x42 + Imperial10x13 : QPageSize = ... # 0x43 + Imperial10x14 : QPageSize = ... # 0x44 + Imperial12x11 : QPageSize = ... # 0x45 + Imperial15x11 : QPageSize = ... # 0x46 + ExecutiveStandard : QPageSize = ... # 0x47 + Note : QPageSize = ... # 0x48 + Quarto : QPageSize = ... # 0x49 + Statement : QPageSize = ... # 0x4a + SuperA : QPageSize = ... # 0x4b + SuperB : QPageSize = ... # 0x4c + Postcard : QPageSize = ... # 0x4d + DoublePostcard : QPageSize = ... # 0x4e + Prc16K : QPageSize = ... # 0x4f + Prc32K : QPageSize = ... # 0x50 + Prc32KBig : QPageSize = ... # 0x51 + FanFoldUS : QPageSize = ... # 0x52 + FanFoldGerman : QPageSize = ... # 0x53 + FanFoldGermanLegal : QPageSize = ... # 0x54 + EnvelopeB4 : QPageSize = ... # 0x55 + EnvelopeB5 : QPageSize = ... # 0x56 + EnvelopeB6 : QPageSize = ... # 0x57 + EnvelopeC0 : QPageSize = ... # 0x58 + EnvelopeC1 : QPageSize = ... # 0x59 + EnvelopeC2 : QPageSize = ... # 0x5a + EnvelopeC3 : QPageSize = ... # 0x5b + EnvelopeC4 : QPageSize = ... # 0x5c + EnvelopeC6 : QPageSize = ... # 0x5d + EnvelopeC65 : QPageSize = ... # 0x5e + EnvelopeC7 : QPageSize = ... # 0x5f + Envelope9 : QPageSize = ... # 0x60 + Envelope11 : QPageSize = ... # 0x61 + Envelope12 : QPageSize = ... # 0x62 + Envelope14 : QPageSize = ... # 0x63 + EnvelopeMonarch : QPageSize = ... # 0x64 + EnvelopePersonal : QPageSize = ... # 0x65 + EnvelopeChou3 : QPageSize = ... # 0x66 + EnvelopeChou4 : QPageSize = ... # 0x67 + EnvelopeInvite : QPageSize = ... # 0x68 + EnvelopeItalian : QPageSize = ... # 0x69 + EnvelopeKaku2 : QPageSize = ... # 0x6a + EnvelopeKaku3 : QPageSize = ... # 0x6b + EnvelopePrc1 : QPageSize = ... # 0x6c + EnvelopePrc2 : QPageSize = ... # 0x6d + EnvelopePrc3 : QPageSize = ... # 0x6e + EnvelopePrc4 : QPageSize = ... # 0x6f + EnvelopePrc5 : QPageSize = ... # 0x70 + EnvelopePrc6 : QPageSize = ... # 0x71 + EnvelopePrc7 : QPageSize = ... # 0x72 + EnvelopePrc8 : QPageSize = ... # 0x73 + EnvelopePrc9 : QPageSize = ... # 0x74 + EnvelopePrc10 : QPageSize = ... # 0x75 + EnvelopeYou4 : QPageSize = ... # 0x76 + LastPageSize : QPageSize = ... # 0x76 + NPageSize : QPageSize = ... # 0x76 + NPaperSize : QPageSize = ... # 0x76 + + class PageSizeId(object): + A4 : QPageSize.PageSizeId = ... # 0x0 + B5 : QPageSize.PageSizeId = ... # 0x1 + AnsiA : QPageSize.PageSizeId = ... # 0x2 + Letter : QPageSize.PageSizeId = ... # 0x2 + Legal : QPageSize.PageSizeId = ... # 0x3 + Executive : QPageSize.PageSizeId = ... # 0x4 + A0 : QPageSize.PageSizeId = ... # 0x5 + A1 : QPageSize.PageSizeId = ... # 0x6 + A2 : QPageSize.PageSizeId = ... # 0x7 + A3 : QPageSize.PageSizeId = ... # 0x8 + A5 : QPageSize.PageSizeId = ... # 0x9 + A6 : QPageSize.PageSizeId = ... # 0xa + A7 : QPageSize.PageSizeId = ... # 0xb + A8 : QPageSize.PageSizeId = ... # 0xc + A9 : QPageSize.PageSizeId = ... # 0xd + B0 : QPageSize.PageSizeId = ... # 0xe + B1 : QPageSize.PageSizeId = ... # 0xf + B10 : QPageSize.PageSizeId = ... # 0x10 + B2 : QPageSize.PageSizeId = ... # 0x11 + B3 : QPageSize.PageSizeId = ... # 0x12 + B4 : QPageSize.PageSizeId = ... # 0x13 + B6 : QPageSize.PageSizeId = ... # 0x14 + B7 : QPageSize.PageSizeId = ... # 0x15 + B8 : QPageSize.PageSizeId = ... # 0x16 + B9 : QPageSize.PageSizeId = ... # 0x17 + C5E : QPageSize.PageSizeId = ... # 0x18 + EnvelopeC5 : QPageSize.PageSizeId = ... # 0x18 + Comm10E : QPageSize.PageSizeId = ... # 0x19 + Envelope10 : QPageSize.PageSizeId = ... # 0x19 + DLE : QPageSize.PageSizeId = ... # 0x1a + EnvelopeDL : QPageSize.PageSizeId = ... # 0x1a + Folio : QPageSize.PageSizeId = ... # 0x1b + AnsiB : QPageSize.PageSizeId = ... # 0x1c + Ledger : QPageSize.PageSizeId = ... # 0x1c + Tabloid : QPageSize.PageSizeId = ... # 0x1d + Custom : QPageSize.PageSizeId = ... # 0x1e + A10 : QPageSize.PageSizeId = ... # 0x1f + A3Extra : QPageSize.PageSizeId = ... # 0x20 + A4Extra : QPageSize.PageSizeId = ... # 0x21 + A4Plus : QPageSize.PageSizeId = ... # 0x22 + A4Small : QPageSize.PageSizeId = ... # 0x23 + A5Extra : QPageSize.PageSizeId = ... # 0x24 + B5Extra : QPageSize.PageSizeId = ... # 0x25 + JisB0 : QPageSize.PageSizeId = ... # 0x26 + JisB1 : QPageSize.PageSizeId = ... # 0x27 + JisB2 : QPageSize.PageSizeId = ... # 0x28 + JisB3 : QPageSize.PageSizeId = ... # 0x29 + JisB4 : QPageSize.PageSizeId = ... # 0x2a + JisB5 : QPageSize.PageSizeId = ... # 0x2b + JisB6 : QPageSize.PageSizeId = ... # 0x2c + JisB7 : QPageSize.PageSizeId = ... # 0x2d + JisB8 : QPageSize.PageSizeId = ... # 0x2e + JisB9 : QPageSize.PageSizeId = ... # 0x2f + JisB10 : QPageSize.PageSizeId = ... # 0x30 + AnsiC : QPageSize.PageSizeId = ... # 0x31 + AnsiD : QPageSize.PageSizeId = ... # 0x32 + AnsiE : QPageSize.PageSizeId = ... # 0x33 + LegalExtra : QPageSize.PageSizeId = ... # 0x34 + LetterExtra : QPageSize.PageSizeId = ... # 0x35 + LetterPlus : QPageSize.PageSizeId = ... # 0x36 + LetterSmall : QPageSize.PageSizeId = ... # 0x37 + TabloidExtra : QPageSize.PageSizeId = ... # 0x38 + ArchA : QPageSize.PageSizeId = ... # 0x39 + ArchB : QPageSize.PageSizeId = ... # 0x3a + ArchC : QPageSize.PageSizeId = ... # 0x3b + ArchD : QPageSize.PageSizeId = ... # 0x3c + ArchE : QPageSize.PageSizeId = ... # 0x3d + Imperial7x9 : QPageSize.PageSizeId = ... # 0x3e + Imperial8x10 : QPageSize.PageSizeId = ... # 0x3f + Imperial9x11 : QPageSize.PageSizeId = ... # 0x40 + Imperial9x12 : QPageSize.PageSizeId = ... # 0x41 + Imperial10x11 : QPageSize.PageSizeId = ... # 0x42 + Imperial10x13 : QPageSize.PageSizeId = ... # 0x43 + Imperial10x14 : QPageSize.PageSizeId = ... # 0x44 + Imperial12x11 : QPageSize.PageSizeId = ... # 0x45 + Imperial15x11 : QPageSize.PageSizeId = ... # 0x46 + ExecutiveStandard : QPageSize.PageSizeId = ... # 0x47 + Note : QPageSize.PageSizeId = ... # 0x48 + Quarto : QPageSize.PageSizeId = ... # 0x49 + Statement : QPageSize.PageSizeId = ... # 0x4a + SuperA : QPageSize.PageSizeId = ... # 0x4b + SuperB : QPageSize.PageSizeId = ... # 0x4c + Postcard : QPageSize.PageSizeId = ... # 0x4d + DoublePostcard : QPageSize.PageSizeId = ... # 0x4e + Prc16K : QPageSize.PageSizeId = ... # 0x4f + Prc32K : QPageSize.PageSizeId = ... # 0x50 + Prc32KBig : QPageSize.PageSizeId = ... # 0x51 + FanFoldUS : QPageSize.PageSizeId = ... # 0x52 + FanFoldGerman : QPageSize.PageSizeId = ... # 0x53 + FanFoldGermanLegal : QPageSize.PageSizeId = ... # 0x54 + EnvelopeB4 : QPageSize.PageSizeId = ... # 0x55 + EnvelopeB5 : QPageSize.PageSizeId = ... # 0x56 + EnvelopeB6 : QPageSize.PageSizeId = ... # 0x57 + EnvelopeC0 : QPageSize.PageSizeId = ... # 0x58 + EnvelopeC1 : QPageSize.PageSizeId = ... # 0x59 + EnvelopeC2 : QPageSize.PageSizeId = ... # 0x5a + EnvelopeC3 : QPageSize.PageSizeId = ... # 0x5b + EnvelopeC4 : QPageSize.PageSizeId = ... # 0x5c + EnvelopeC6 : QPageSize.PageSizeId = ... # 0x5d + EnvelopeC65 : QPageSize.PageSizeId = ... # 0x5e + EnvelopeC7 : QPageSize.PageSizeId = ... # 0x5f + Envelope9 : QPageSize.PageSizeId = ... # 0x60 + Envelope11 : QPageSize.PageSizeId = ... # 0x61 + Envelope12 : QPageSize.PageSizeId = ... # 0x62 + Envelope14 : QPageSize.PageSizeId = ... # 0x63 + EnvelopeMonarch : QPageSize.PageSizeId = ... # 0x64 + EnvelopePersonal : QPageSize.PageSizeId = ... # 0x65 + EnvelopeChou3 : QPageSize.PageSizeId = ... # 0x66 + EnvelopeChou4 : QPageSize.PageSizeId = ... # 0x67 + EnvelopeInvite : QPageSize.PageSizeId = ... # 0x68 + EnvelopeItalian : QPageSize.PageSizeId = ... # 0x69 + EnvelopeKaku2 : QPageSize.PageSizeId = ... # 0x6a + EnvelopeKaku3 : QPageSize.PageSizeId = ... # 0x6b + EnvelopePrc1 : QPageSize.PageSizeId = ... # 0x6c + EnvelopePrc2 : QPageSize.PageSizeId = ... # 0x6d + EnvelopePrc3 : QPageSize.PageSizeId = ... # 0x6e + EnvelopePrc4 : QPageSize.PageSizeId = ... # 0x6f + EnvelopePrc5 : QPageSize.PageSizeId = ... # 0x70 + EnvelopePrc6 : QPageSize.PageSizeId = ... # 0x71 + EnvelopePrc7 : QPageSize.PageSizeId = ... # 0x72 + EnvelopePrc8 : QPageSize.PageSizeId = ... # 0x73 + EnvelopePrc9 : QPageSize.PageSizeId = ... # 0x74 + EnvelopePrc10 : QPageSize.PageSizeId = ... # 0x75 + EnvelopeYou4 : QPageSize.PageSizeId = ... # 0x76 + LastPageSize : QPageSize.PageSizeId = ... # 0x76 + NPageSize : QPageSize.PageSizeId = ... # 0x76 + NPaperSize : QPageSize.PageSizeId = ... # 0x76 + + class SizeMatchPolicy(object): + FuzzyMatch : QPageSize.SizeMatchPolicy = ... # 0x0 + FuzzyOrientationMatch : QPageSize.SizeMatchPolicy = ... # 0x1 + ExactMatch : QPageSize.SizeMatchPolicy = ... # 0x2 + + class Unit(object): + Millimeter : QPageSize.Unit = ... # 0x0 + Point : QPageSize.Unit = ... # 0x1 + Inch : QPageSize.Unit = ... # 0x2 + Pica : QPageSize.Unit = ... # 0x3 + Didot : QPageSize.Unit = ... # 0x4 + Cicero : QPageSize.Unit = ... # 0x5 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtGui.QPageSize) -> None: ... + @typing.overload + def __init__(self, pageSizeId:PySide2.QtGui.QPageSize.PageSizeId) -> None: ... + @typing.overload + def __init__(self, pointSize:PySide2.QtCore.QSize, name:str=..., matchPolicy:PySide2.QtGui.QPageSize.SizeMatchPolicy=...) -> None: ... + @typing.overload + def __init__(self, size:PySide2.QtCore.QSizeF, units:PySide2.QtGui.QPageSize.Unit, name:str=..., matchPolicy:PySide2.QtGui.QPageSize.SizeMatchPolicy=...) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @typing.overload + @staticmethod + def definitionSize(pageSizeId:PySide2.QtGui.QPageSize.PageSizeId) -> PySide2.QtCore.QSizeF: ... + @typing.overload + def definitionSize(self) -> PySide2.QtCore.QSizeF: ... + @typing.overload + @staticmethod + def definitionUnits(pageSizeId:PySide2.QtGui.QPageSize.PageSizeId) -> PySide2.QtGui.QPageSize.Unit: ... + @typing.overload + def definitionUnits(self) -> PySide2.QtGui.QPageSize.Unit: ... + @typing.overload + @staticmethod + def id(pointSize:PySide2.QtCore.QSize, matchPolicy:PySide2.QtGui.QPageSize.SizeMatchPolicy=...) -> PySide2.QtGui.QPageSize.PageSizeId: ... + @typing.overload + def id(self) -> PySide2.QtGui.QPageSize.PageSizeId: ... + @typing.overload + @staticmethod + def id(size:PySide2.QtCore.QSizeF, units:PySide2.QtGui.QPageSize.Unit, matchPolicy:PySide2.QtGui.QPageSize.SizeMatchPolicy=...) -> PySide2.QtGui.QPageSize.PageSizeId: ... + @typing.overload + @staticmethod + def id(windowsId:int) -> PySide2.QtGui.QPageSize.PageSizeId: ... + def isEquivalentTo(self, other:PySide2.QtGui.QPageSize) -> bool: ... + def isValid(self) -> bool: ... + @typing.overload + @staticmethod + def key(pageSizeId:PySide2.QtGui.QPageSize.PageSizeId) -> str: ... + @typing.overload + def key(self) -> str: ... + @typing.overload + @staticmethod + def name(pageSizeId:PySide2.QtGui.QPageSize.PageSizeId) -> str: ... + @typing.overload + def name(self) -> str: ... + def rect(self, units:PySide2.QtGui.QPageSize.Unit) -> PySide2.QtCore.QRectF: ... + def rectPixels(self, resolution:int) -> PySide2.QtCore.QRect: ... + def rectPoints(self) -> PySide2.QtCore.QRect: ... + @typing.overload + @staticmethod + def size(pageSizeId:PySide2.QtGui.QPageSize.PageSizeId, units:PySide2.QtGui.QPageSize.Unit) -> PySide2.QtCore.QSizeF: ... + @typing.overload + def size(self, units:PySide2.QtGui.QPageSize.Unit) -> PySide2.QtCore.QSizeF: ... + @typing.overload + @staticmethod + def sizePixels(pageSizeId:PySide2.QtGui.QPageSize.PageSizeId, resolution:int) -> PySide2.QtCore.QSize: ... + @typing.overload + def sizePixels(self, resolution:int) -> PySide2.QtCore.QSize: ... + @typing.overload + @staticmethod + def sizePoints(pageSizeId:PySide2.QtGui.QPageSize.PageSizeId) -> PySide2.QtCore.QSize: ... + @typing.overload + def sizePoints(self) -> PySide2.QtCore.QSize: ... + def swap(self, other:PySide2.QtGui.QPageSize) -> None: ... + @typing.overload + @staticmethod + def windowsId(pageSizeId:PySide2.QtGui.QPageSize.PageSizeId) -> int: ... + @typing.overload + def windowsId(self) -> int: ... + + +class QPagedPaintDevice(PySide2.QtGui.QPaintDevice): + A4 : QPagedPaintDevice = ... # 0x0 + PdfVersion_1_4 : QPagedPaintDevice = ... # 0x0 + B5 : QPagedPaintDevice = ... # 0x1 + PdfVersion_A1b : QPagedPaintDevice = ... # 0x1 + AnsiA : QPagedPaintDevice = ... # 0x2 + Letter : QPagedPaintDevice = ... # 0x2 + PdfVersion_1_6 : QPagedPaintDevice = ... # 0x2 + Legal : QPagedPaintDevice = ... # 0x3 + Executive : QPagedPaintDevice = ... # 0x4 + A0 : QPagedPaintDevice = ... # 0x5 + A1 : QPagedPaintDevice = ... # 0x6 + A2 : QPagedPaintDevice = ... # 0x7 + A3 : QPagedPaintDevice = ... # 0x8 + A5 : QPagedPaintDevice = ... # 0x9 + A6 : QPagedPaintDevice = ... # 0xa + A7 : QPagedPaintDevice = ... # 0xb + A8 : QPagedPaintDevice = ... # 0xc + A9 : QPagedPaintDevice = ... # 0xd + B0 : QPagedPaintDevice = ... # 0xe + B1 : QPagedPaintDevice = ... # 0xf + B10 : QPagedPaintDevice = ... # 0x10 + B2 : QPagedPaintDevice = ... # 0x11 + B3 : QPagedPaintDevice = ... # 0x12 + B4 : QPagedPaintDevice = ... # 0x13 + B6 : QPagedPaintDevice = ... # 0x14 + B7 : QPagedPaintDevice = ... # 0x15 + B8 : QPagedPaintDevice = ... # 0x16 + B9 : QPagedPaintDevice = ... # 0x17 + C5E : QPagedPaintDevice = ... # 0x18 + EnvelopeC5 : QPagedPaintDevice = ... # 0x18 + Comm10E : QPagedPaintDevice = ... # 0x19 + Envelope10 : QPagedPaintDevice = ... # 0x19 + DLE : QPagedPaintDevice = ... # 0x1a + EnvelopeDL : QPagedPaintDevice = ... # 0x1a + Folio : QPagedPaintDevice = ... # 0x1b + AnsiB : QPagedPaintDevice = ... # 0x1c + Ledger : QPagedPaintDevice = ... # 0x1c + Tabloid : QPagedPaintDevice = ... # 0x1d + Custom : QPagedPaintDevice = ... # 0x1e + A10 : QPagedPaintDevice = ... # 0x1f + A3Extra : QPagedPaintDevice = ... # 0x20 + A4Extra : QPagedPaintDevice = ... # 0x21 + A4Plus : QPagedPaintDevice = ... # 0x22 + A4Small : QPagedPaintDevice = ... # 0x23 + A5Extra : QPagedPaintDevice = ... # 0x24 + B5Extra : QPagedPaintDevice = ... # 0x25 + JisB0 : QPagedPaintDevice = ... # 0x26 + JisB1 : QPagedPaintDevice = ... # 0x27 + JisB2 : QPagedPaintDevice = ... # 0x28 + JisB3 : QPagedPaintDevice = ... # 0x29 + JisB4 : QPagedPaintDevice = ... # 0x2a + JisB5 : QPagedPaintDevice = ... # 0x2b + JisB6 : QPagedPaintDevice = ... # 0x2c + JisB7 : QPagedPaintDevice = ... # 0x2d + JisB8 : QPagedPaintDevice = ... # 0x2e + JisB9 : QPagedPaintDevice = ... # 0x2f + JisB10 : QPagedPaintDevice = ... # 0x30 + AnsiC : QPagedPaintDevice = ... # 0x31 + AnsiD : QPagedPaintDevice = ... # 0x32 + AnsiE : QPagedPaintDevice = ... # 0x33 + LegalExtra : QPagedPaintDevice = ... # 0x34 + LetterExtra : QPagedPaintDevice = ... # 0x35 + LetterPlus : QPagedPaintDevice = ... # 0x36 + LetterSmall : QPagedPaintDevice = ... # 0x37 + TabloidExtra : QPagedPaintDevice = ... # 0x38 + ArchA : QPagedPaintDevice = ... # 0x39 + ArchB : QPagedPaintDevice = ... # 0x3a + ArchC : QPagedPaintDevice = ... # 0x3b + ArchD : QPagedPaintDevice = ... # 0x3c + ArchE : QPagedPaintDevice = ... # 0x3d + Imperial7x9 : QPagedPaintDevice = ... # 0x3e + Imperial8x10 : QPagedPaintDevice = ... # 0x3f + Imperial9x11 : QPagedPaintDevice = ... # 0x40 + Imperial9x12 : QPagedPaintDevice = ... # 0x41 + Imperial10x11 : QPagedPaintDevice = ... # 0x42 + Imperial10x13 : QPagedPaintDevice = ... # 0x43 + Imperial10x14 : QPagedPaintDevice = ... # 0x44 + Imperial12x11 : QPagedPaintDevice = ... # 0x45 + Imperial15x11 : QPagedPaintDevice = ... # 0x46 + ExecutiveStandard : QPagedPaintDevice = ... # 0x47 + Note : QPagedPaintDevice = ... # 0x48 + Quarto : QPagedPaintDevice = ... # 0x49 + Statement : QPagedPaintDevice = ... # 0x4a + SuperA : QPagedPaintDevice = ... # 0x4b + SuperB : QPagedPaintDevice = ... # 0x4c + Postcard : QPagedPaintDevice = ... # 0x4d + DoublePostcard : QPagedPaintDevice = ... # 0x4e + Prc16K : QPagedPaintDevice = ... # 0x4f + Prc32K : QPagedPaintDevice = ... # 0x50 + Prc32KBig : QPagedPaintDevice = ... # 0x51 + FanFoldUS : QPagedPaintDevice = ... # 0x52 + FanFoldGerman : QPagedPaintDevice = ... # 0x53 + FanFoldGermanLegal : QPagedPaintDevice = ... # 0x54 + EnvelopeB4 : QPagedPaintDevice = ... # 0x55 + EnvelopeB5 : QPagedPaintDevice = ... # 0x56 + EnvelopeB6 : QPagedPaintDevice = ... # 0x57 + EnvelopeC0 : QPagedPaintDevice = ... # 0x58 + EnvelopeC1 : QPagedPaintDevice = ... # 0x59 + EnvelopeC2 : QPagedPaintDevice = ... # 0x5a + EnvelopeC3 : QPagedPaintDevice = ... # 0x5b + EnvelopeC4 : QPagedPaintDevice = ... # 0x5c + EnvelopeC6 : QPagedPaintDevice = ... # 0x5d + EnvelopeC65 : QPagedPaintDevice = ... # 0x5e + EnvelopeC7 : QPagedPaintDevice = ... # 0x5f + Envelope9 : QPagedPaintDevice = ... # 0x60 + Envelope11 : QPagedPaintDevice = ... # 0x61 + Envelope12 : QPagedPaintDevice = ... # 0x62 + Envelope14 : QPagedPaintDevice = ... # 0x63 + EnvelopeMonarch : QPagedPaintDevice = ... # 0x64 + EnvelopePersonal : QPagedPaintDevice = ... # 0x65 + EnvelopeChou3 : QPagedPaintDevice = ... # 0x66 + EnvelopeChou4 : QPagedPaintDevice = ... # 0x67 + EnvelopeInvite : QPagedPaintDevice = ... # 0x68 + EnvelopeItalian : QPagedPaintDevice = ... # 0x69 + EnvelopeKaku2 : QPagedPaintDevice = ... # 0x6a + EnvelopeKaku3 : QPagedPaintDevice = ... # 0x6b + EnvelopePrc1 : QPagedPaintDevice = ... # 0x6c + EnvelopePrc2 : QPagedPaintDevice = ... # 0x6d + EnvelopePrc3 : QPagedPaintDevice = ... # 0x6e + EnvelopePrc4 : QPagedPaintDevice = ... # 0x6f + EnvelopePrc5 : QPagedPaintDevice = ... # 0x70 + EnvelopePrc6 : QPagedPaintDevice = ... # 0x71 + EnvelopePrc7 : QPagedPaintDevice = ... # 0x72 + EnvelopePrc8 : QPagedPaintDevice = ... # 0x73 + EnvelopePrc9 : QPagedPaintDevice = ... # 0x74 + EnvelopePrc10 : QPagedPaintDevice = ... # 0x75 + EnvelopeYou4 : QPagedPaintDevice = ... # 0x76 + LastPageSize : QPagedPaintDevice = ... # 0x76 + NPageSize : QPagedPaintDevice = ... # 0x76 + NPaperSize : QPagedPaintDevice = ... # 0x76 + + class Margins(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, Margins:PySide2.QtGui.QPagedPaintDevice.Margins) -> None: ... + + @staticmethod + def __copy__() -> None: ... + + class PageSize(object): + A4 : QPagedPaintDevice.PageSize = ... # 0x0 + B5 : QPagedPaintDevice.PageSize = ... # 0x1 + AnsiA : QPagedPaintDevice.PageSize = ... # 0x2 + Letter : QPagedPaintDevice.PageSize = ... # 0x2 + Legal : QPagedPaintDevice.PageSize = ... # 0x3 + Executive : QPagedPaintDevice.PageSize = ... # 0x4 + A0 : QPagedPaintDevice.PageSize = ... # 0x5 + A1 : QPagedPaintDevice.PageSize = ... # 0x6 + A2 : QPagedPaintDevice.PageSize = ... # 0x7 + A3 : QPagedPaintDevice.PageSize = ... # 0x8 + A5 : QPagedPaintDevice.PageSize = ... # 0x9 + A6 : QPagedPaintDevice.PageSize = ... # 0xa + A7 : QPagedPaintDevice.PageSize = ... # 0xb + A8 : QPagedPaintDevice.PageSize = ... # 0xc + A9 : QPagedPaintDevice.PageSize = ... # 0xd + B0 : QPagedPaintDevice.PageSize = ... # 0xe + B1 : QPagedPaintDevice.PageSize = ... # 0xf + B10 : QPagedPaintDevice.PageSize = ... # 0x10 + B2 : QPagedPaintDevice.PageSize = ... # 0x11 + B3 : QPagedPaintDevice.PageSize = ... # 0x12 + B4 : QPagedPaintDevice.PageSize = ... # 0x13 + B6 : QPagedPaintDevice.PageSize = ... # 0x14 + B7 : QPagedPaintDevice.PageSize = ... # 0x15 + B8 : QPagedPaintDevice.PageSize = ... # 0x16 + B9 : QPagedPaintDevice.PageSize = ... # 0x17 + C5E : QPagedPaintDevice.PageSize = ... # 0x18 + EnvelopeC5 : QPagedPaintDevice.PageSize = ... # 0x18 + Comm10E : QPagedPaintDevice.PageSize = ... # 0x19 + Envelope10 : QPagedPaintDevice.PageSize = ... # 0x19 + DLE : QPagedPaintDevice.PageSize = ... # 0x1a + EnvelopeDL : QPagedPaintDevice.PageSize = ... # 0x1a + Folio : QPagedPaintDevice.PageSize = ... # 0x1b + AnsiB : QPagedPaintDevice.PageSize = ... # 0x1c + Ledger : QPagedPaintDevice.PageSize = ... # 0x1c + Tabloid : QPagedPaintDevice.PageSize = ... # 0x1d + Custom : QPagedPaintDevice.PageSize = ... # 0x1e + A10 : QPagedPaintDevice.PageSize = ... # 0x1f + A3Extra : QPagedPaintDevice.PageSize = ... # 0x20 + A4Extra : QPagedPaintDevice.PageSize = ... # 0x21 + A4Plus : QPagedPaintDevice.PageSize = ... # 0x22 + A4Small : QPagedPaintDevice.PageSize = ... # 0x23 + A5Extra : QPagedPaintDevice.PageSize = ... # 0x24 + B5Extra : QPagedPaintDevice.PageSize = ... # 0x25 + JisB0 : QPagedPaintDevice.PageSize = ... # 0x26 + JisB1 : QPagedPaintDevice.PageSize = ... # 0x27 + JisB2 : QPagedPaintDevice.PageSize = ... # 0x28 + JisB3 : QPagedPaintDevice.PageSize = ... # 0x29 + JisB4 : QPagedPaintDevice.PageSize = ... # 0x2a + JisB5 : QPagedPaintDevice.PageSize = ... # 0x2b + JisB6 : QPagedPaintDevice.PageSize = ... # 0x2c + JisB7 : QPagedPaintDevice.PageSize = ... # 0x2d + JisB8 : QPagedPaintDevice.PageSize = ... # 0x2e + JisB9 : QPagedPaintDevice.PageSize = ... # 0x2f + JisB10 : QPagedPaintDevice.PageSize = ... # 0x30 + AnsiC : QPagedPaintDevice.PageSize = ... # 0x31 + AnsiD : QPagedPaintDevice.PageSize = ... # 0x32 + AnsiE : QPagedPaintDevice.PageSize = ... # 0x33 + LegalExtra : QPagedPaintDevice.PageSize = ... # 0x34 + LetterExtra : QPagedPaintDevice.PageSize = ... # 0x35 + LetterPlus : QPagedPaintDevice.PageSize = ... # 0x36 + LetterSmall : QPagedPaintDevice.PageSize = ... # 0x37 + TabloidExtra : QPagedPaintDevice.PageSize = ... # 0x38 + ArchA : QPagedPaintDevice.PageSize = ... # 0x39 + ArchB : QPagedPaintDevice.PageSize = ... # 0x3a + ArchC : QPagedPaintDevice.PageSize = ... # 0x3b + ArchD : QPagedPaintDevice.PageSize = ... # 0x3c + ArchE : QPagedPaintDevice.PageSize = ... # 0x3d + Imperial7x9 : QPagedPaintDevice.PageSize = ... # 0x3e + Imperial8x10 : QPagedPaintDevice.PageSize = ... # 0x3f + Imperial9x11 : QPagedPaintDevice.PageSize = ... # 0x40 + Imperial9x12 : QPagedPaintDevice.PageSize = ... # 0x41 + Imperial10x11 : QPagedPaintDevice.PageSize = ... # 0x42 + Imperial10x13 : QPagedPaintDevice.PageSize = ... # 0x43 + Imperial10x14 : QPagedPaintDevice.PageSize = ... # 0x44 + Imperial12x11 : QPagedPaintDevice.PageSize = ... # 0x45 + Imperial15x11 : QPagedPaintDevice.PageSize = ... # 0x46 + ExecutiveStandard : QPagedPaintDevice.PageSize = ... # 0x47 + Note : QPagedPaintDevice.PageSize = ... # 0x48 + Quarto : QPagedPaintDevice.PageSize = ... # 0x49 + Statement : QPagedPaintDevice.PageSize = ... # 0x4a + SuperA : QPagedPaintDevice.PageSize = ... # 0x4b + SuperB : QPagedPaintDevice.PageSize = ... # 0x4c + Postcard : QPagedPaintDevice.PageSize = ... # 0x4d + DoublePostcard : QPagedPaintDevice.PageSize = ... # 0x4e + Prc16K : QPagedPaintDevice.PageSize = ... # 0x4f + Prc32K : QPagedPaintDevice.PageSize = ... # 0x50 + Prc32KBig : QPagedPaintDevice.PageSize = ... # 0x51 + FanFoldUS : QPagedPaintDevice.PageSize = ... # 0x52 + FanFoldGerman : QPagedPaintDevice.PageSize = ... # 0x53 + FanFoldGermanLegal : QPagedPaintDevice.PageSize = ... # 0x54 + EnvelopeB4 : QPagedPaintDevice.PageSize = ... # 0x55 + EnvelopeB5 : QPagedPaintDevice.PageSize = ... # 0x56 + EnvelopeB6 : QPagedPaintDevice.PageSize = ... # 0x57 + EnvelopeC0 : QPagedPaintDevice.PageSize = ... # 0x58 + EnvelopeC1 : QPagedPaintDevice.PageSize = ... # 0x59 + EnvelopeC2 : QPagedPaintDevice.PageSize = ... # 0x5a + EnvelopeC3 : QPagedPaintDevice.PageSize = ... # 0x5b + EnvelopeC4 : QPagedPaintDevice.PageSize = ... # 0x5c + EnvelopeC6 : QPagedPaintDevice.PageSize = ... # 0x5d + EnvelopeC65 : QPagedPaintDevice.PageSize = ... # 0x5e + EnvelopeC7 : QPagedPaintDevice.PageSize = ... # 0x5f + Envelope9 : QPagedPaintDevice.PageSize = ... # 0x60 + Envelope11 : QPagedPaintDevice.PageSize = ... # 0x61 + Envelope12 : QPagedPaintDevice.PageSize = ... # 0x62 + Envelope14 : QPagedPaintDevice.PageSize = ... # 0x63 + EnvelopeMonarch : QPagedPaintDevice.PageSize = ... # 0x64 + EnvelopePersonal : QPagedPaintDevice.PageSize = ... # 0x65 + EnvelopeChou3 : QPagedPaintDevice.PageSize = ... # 0x66 + EnvelopeChou4 : QPagedPaintDevice.PageSize = ... # 0x67 + EnvelopeInvite : QPagedPaintDevice.PageSize = ... # 0x68 + EnvelopeItalian : QPagedPaintDevice.PageSize = ... # 0x69 + EnvelopeKaku2 : QPagedPaintDevice.PageSize = ... # 0x6a + EnvelopeKaku3 : QPagedPaintDevice.PageSize = ... # 0x6b + EnvelopePrc1 : QPagedPaintDevice.PageSize = ... # 0x6c + EnvelopePrc2 : QPagedPaintDevice.PageSize = ... # 0x6d + EnvelopePrc3 : QPagedPaintDevice.PageSize = ... # 0x6e + EnvelopePrc4 : QPagedPaintDevice.PageSize = ... # 0x6f + EnvelopePrc5 : QPagedPaintDevice.PageSize = ... # 0x70 + EnvelopePrc6 : QPagedPaintDevice.PageSize = ... # 0x71 + EnvelopePrc7 : QPagedPaintDevice.PageSize = ... # 0x72 + EnvelopePrc8 : QPagedPaintDevice.PageSize = ... # 0x73 + EnvelopePrc9 : QPagedPaintDevice.PageSize = ... # 0x74 + EnvelopePrc10 : QPagedPaintDevice.PageSize = ... # 0x75 + EnvelopeYou4 : QPagedPaintDevice.PageSize = ... # 0x76 + LastPageSize : QPagedPaintDevice.PageSize = ... # 0x76 + NPageSize : QPagedPaintDevice.PageSize = ... # 0x76 + NPaperSize : QPagedPaintDevice.PageSize = ... # 0x76 + + class PdfVersion(object): + PdfVersion_1_4 : QPagedPaintDevice.PdfVersion = ... # 0x0 + PdfVersion_A1b : QPagedPaintDevice.PdfVersion = ... # 0x1 + PdfVersion_1_6 : QPagedPaintDevice.PdfVersion = ... # 0x2 + + def __init__(self) -> None: ... + + def devicePageLayout(self) -> PySide2.QtGui.QPageLayout: ... + def margins(self) -> PySide2.QtGui.QPagedPaintDevice.Margins: ... + def newPage(self) -> bool: ... + def pageLayout(self) -> PySide2.QtGui.QPageLayout: ... + def pageSize(self) -> PySide2.QtGui.QPagedPaintDevice.PageSize: ... + def pageSizeMM(self) -> PySide2.QtCore.QSizeF: ... + def setMargins(self, margins:PySide2.QtGui.QPagedPaintDevice.Margins) -> None: ... + def setPageLayout(self, pageLayout:PySide2.QtGui.QPageLayout) -> bool: ... + @typing.overload + def setPageMargins(self, margins:PySide2.QtCore.QMarginsF) -> bool: ... + @typing.overload + def setPageMargins(self, margins:PySide2.QtCore.QMarginsF, units:PySide2.QtGui.QPageLayout.Unit) -> bool: ... + def setPageOrientation(self, orientation:PySide2.QtGui.QPageLayout.Orientation) -> bool: ... + @typing.overload + def setPageSize(self, pageSize:PySide2.QtGui.QPageSize) -> bool: ... + @typing.overload + def setPageSize(self, size:PySide2.QtGui.QPagedPaintDevice.PageSize) -> None: ... + def setPageSizeMM(self, size:PySide2.QtCore.QSizeF) -> None: ... + + +class QPaintDevice(Shiboken.Object): + PdmWidth : QPaintDevice = ... # 0x1 + PdmHeight : QPaintDevice = ... # 0x2 + PdmWidthMM : QPaintDevice = ... # 0x3 + PdmHeightMM : QPaintDevice = ... # 0x4 + PdmNumColors : QPaintDevice = ... # 0x5 + PdmDepth : QPaintDevice = ... # 0x6 + PdmDpiX : QPaintDevice = ... # 0x7 + PdmDpiY : QPaintDevice = ... # 0x8 + PdmPhysicalDpiX : QPaintDevice = ... # 0x9 + PdmPhysicalDpiY : QPaintDevice = ... # 0xa + PdmDevicePixelRatio : QPaintDevice = ... # 0xb + PdmDevicePixelRatioScaled: QPaintDevice = ... # 0xc + + class PaintDeviceMetric(object): + PdmWidth : QPaintDevice.PaintDeviceMetric = ... # 0x1 + PdmHeight : QPaintDevice.PaintDeviceMetric = ... # 0x2 + PdmWidthMM : QPaintDevice.PaintDeviceMetric = ... # 0x3 + PdmHeightMM : QPaintDevice.PaintDeviceMetric = ... # 0x4 + PdmNumColors : QPaintDevice.PaintDeviceMetric = ... # 0x5 + PdmDepth : QPaintDevice.PaintDeviceMetric = ... # 0x6 + PdmDpiX : QPaintDevice.PaintDeviceMetric = ... # 0x7 + PdmDpiY : QPaintDevice.PaintDeviceMetric = ... # 0x8 + PdmPhysicalDpiX : QPaintDevice.PaintDeviceMetric = ... # 0x9 + PdmPhysicalDpiY : QPaintDevice.PaintDeviceMetric = ... # 0xa + PdmDevicePixelRatio : QPaintDevice.PaintDeviceMetric = ... # 0xb + PdmDevicePixelRatioScaled: QPaintDevice.PaintDeviceMetric = ... # 0xc + + def __init__(self) -> None: ... + + def colorCount(self) -> int: ... + def depth(self) -> int: ... + def devType(self) -> int: ... + def devicePixelRatio(self) -> int: ... + def devicePixelRatioF(self) -> float: ... + @staticmethod + def devicePixelRatioFScale() -> float: ... + def height(self) -> int: ... + def heightMM(self) -> int: ... + def initPainter(self, painter:PySide2.QtGui.QPainter) -> None: ... + def logicalDpiX(self) -> int: ... + def logicalDpiY(self) -> int: ... + def metric(self, metric:PySide2.QtGui.QPaintDevice.PaintDeviceMetric) -> int: ... + def paintEngine(self) -> PySide2.QtGui.QPaintEngine: ... + def paintingActive(self) -> bool: ... + def physicalDpiX(self) -> int: ... + def physicalDpiY(self) -> int: ... + def redirected(self, offset:PySide2.QtCore.QPoint) -> PySide2.QtGui.QPaintDevice: ... + def sharedPainter(self) -> PySide2.QtGui.QPainter: ... + def width(self) -> int: ... + def widthMM(self) -> int: ... + + +class QPaintDeviceWindow(PySide2.QtGui.QWindow, PySide2.QtGui.QPaintDevice): + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def exposeEvent(self, arg__1:PySide2.QtGui.QExposeEvent) -> None: ... + def metric(self, metric:PySide2.QtGui.QPaintDevice.PaintDeviceMetric) -> int: ... + def paintEngine(self) -> PySide2.QtGui.QPaintEngine: ... + def paintEvent(self, event:PySide2.QtGui.QPaintEvent) -> None: ... + @typing.overload + def update(self) -> None: ... + @typing.overload + def update(self, rect:PySide2.QtCore.QRect) -> None: ... + @typing.overload + def update(self, region:PySide2.QtGui.QRegion) -> None: ... + + +class QPaintEngine(Shiboken.Object): + AllFeatures : QPaintEngine = ... # -0x1 + OddEvenMode : QPaintEngine = ... # 0x0 + X11 : QPaintEngine = ... # 0x0 + DirtyPen : QPaintEngine = ... # 0x1 + PrimitiveTransform : QPaintEngine = ... # 0x1 + WindingMode : QPaintEngine = ... # 0x1 + Windows : QPaintEngine = ... # 0x1 + ConvexMode : QPaintEngine = ... # 0x2 + DirtyBrush : QPaintEngine = ... # 0x2 + PatternTransform : QPaintEngine = ... # 0x2 + QuickDraw : QPaintEngine = ... # 0x2 + CoreGraphics : QPaintEngine = ... # 0x3 + PolylineMode : QPaintEngine = ... # 0x3 + DirtyBrushOrigin : QPaintEngine = ... # 0x4 + MacPrinter : QPaintEngine = ... # 0x4 + PixmapTransform : QPaintEngine = ... # 0x4 + QWindowSystem : QPaintEngine = ... # 0x5 + PostScript : QPaintEngine = ... # 0x6 + OpenGL : QPaintEngine = ... # 0x7 + DirtyFont : QPaintEngine = ... # 0x8 + PatternBrush : QPaintEngine = ... # 0x8 + Picture : QPaintEngine = ... # 0x8 + SVG : QPaintEngine = ... # 0x9 + Raster : QPaintEngine = ... # 0xa + Direct3D : QPaintEngine = ... # 0xb + Pdf : QPaintEngine = ... # 0xc + OpenVG : QPaintEngine = ... # 0xd + OpenGL2 : QPaintEngine = ... # 0xe + PaintBuffer : QPaintEngine = ... # 0xf + Blitter : QPaintEngine = ... # 0x10 + DirtyBackground : QPaintEngine = ... # 0x10 + LinearGradientFill : QPaintEngine = ... # 0x10 + Direct2D : QPaintEngine = ... # 0x11 + DirtyBackgroundMode : QPaintEngine = ... # 0x20 + RadialGradientFill : QPaintEngine = ... # 0x20 + User : QPaintEngine = ... # 0x32 + ConicalGradientFill : QPaintEngine = ... # 0x40 + DirtyTransform : QPaintEngine = ... # 0x40 + MaxUser : QPaintEngine = ... # 0x64 + AlphaBlend : QPaintEngine = ... # 0x80 + DirtyClipRegion : QPaintEngine = ... # 0x80 + DirtyClipPath : QPaintEngine = ... # 0x100 + PorterDuff : QPaintEngine = ... # 0x100 + DirtyHints : QPaintEngine = ... # 0x200 + PainterPaths : QPaintEngine = ... # 0x200 + Antialiasing : QPaintEngine = ... # 0x400 + DirtyCompositionMode : QPaintEngine = ... # 0x400 + BrushStroke : QPaintEngine = ... # 0x800 + DirtyClipEnabled : QPaintEngine = ... # 0x800 + ConstantOpacity : QPaintEngine = ... # 0x1000 + DirtyOpacity : QPaintEngine = ... # 0x1000 + MaskedBrush : QPaintEngine = ... # 0x2000 + PerspectiveTransform : QPaintEngine = ... # 0x4000 + BlendModes : QPaintEngine = ... # 0x8000 + AllDirty : QPaintEngine = ... # 0xffff + ObjectBoundingModeGradients: QPaintEngine = ... # 0x10000 + RasterOpModes : QPaintEngine = ... # 0x20000 + PaintOutsidePaintEvent : QPaintEngine = ... # 0x20000000 + + class DirtyFlag(object): + DirtyPen : QPaintEngine.DirtyFlag = ... # 0x1 + DirtyBrush : QPaintEngine.DirtyFlag = ... # 0x2 + DirtyBrushOrigin : QPaintEngine.DirtyFlag = ... # 0x4 + DirtyFont : QPaintEngine.DirtyFlag = ... # 0x8 + DirtyBackground : QPaintEngine.DirtyFlag = ... # 0x10 + DirtyBackgroundMode : QPaintEngine.DirtyFlag = ... # 0x20 + DirtyTransform : QPaintEngine.DirtyFlag = ... # 0x40 + DirtyClipRegion : QPaintEngine.DirtyFlag = ... # 0x80 + DirtyClipPath : QPaintEngine.DirtyFlag = ... # 0x100 + DirtyHints : QPaintEngine.DirtyFlag = ... # 0x200 + DirtyCompositionMode : QPaintEngine.DirtyFlag = ... # 0x400 + DirtyClipEnabled : QPaintEngine.DirtyFlag = ... # 0x800 + DirtyOpacity : QPaintEngine.DirtyFlag = ... # 0x1000 + AllDirty : QPaintEngine.DirtyFlag = ... # 0xffff + + class DirtyFlags(object): ... + + class PaintEngineFeature(object): + AllFeatures : QPaintEngine.PaintEngineFeature = ... # -0x1 + PrimitiveTransform : QPaintEngine.PaintEngineFeature = ... # 0x1 + PatternTransform : QPaintEngine.PaintEngineFeature = ... # 0x2 + PixmapTransform : QPaintEngine.PaintEngineFeature = ... # 0x4 + PatternBrush : QPaintEngine.PaintEngineFeature = ... # 0x8 + LinearGradientFill : QPaintEngine.PaintEngineFeature = ... # 0x10 + RadialGradientFill : QPaintEngine.PaintEngineFeature = ... # 0x20 + ConicalGradientFill : QPaintEngine.PaintEngineFeature = ... # 0x40 + AlphaBlend : QPaintEngine.PaintEngineFeature = ... # 0x80 + PorterDuff : QPaintEngine.PaintEngineFeature = ... # 0x100 + PainterPaths : QPaintEngine.PaintEngineFeature = ... # 0x200 + Antialiasing : QPaintEngine.PaintEngineFeature = ... # 0x400 + BrushStroke : QPaintEngine.PaintEngineFeature = ... # 0x800 + ConstantOpacity : QPaintEngine.PaintEngineFeature = ... # 0x1000 + MaskedBrush : QPaintEngine.PaintEngineFeature = ... # 0x2000 + PerspectiveTransform : QPaintEngine.PaintEngineFeature = ... # 0x4000 + BlendModes : QPaintEngine.PaintEngineFeature = ... # 0x8000 + ObjectBoundingModeGradients: QPaintEngine.PaintEngineFeature = ... # 0x10000 + RasterOpModes : QPaintEngine.PaintEngineFeature = ... # 0x20000 + PaintOutsidePaintEvent : QPaintEngine.PaintEngineFeature = ... # 0x20000000 + + class PaintEngineFeatures(object): ... + + class PolygonDrawMode(object): + OddEvenMode : QPaintEngine.PolygonDrawMode = ... # 0x0 + WindingMode : QPaintEngine.PolygonDrawMode = ... # 0x1 + ConvexMode : QPaintEngine.PolygonDrawMode = ... # 0x2 + PolylineMode : QPaintEngine.PolygonDrawMode = ... # 0x3 + + class Type(object): + X11 : QPaintEngine.Type = ... # 0x0 + Windows : QPaintEngine.Type = ... # 0x1 + QuickDraw : QPaintEngine.Type = ... # 0x2 + CoreGraphics : QPaintEngine.Type = ... # 0x3 + MacPrinter : QPaintEngine.Type = ... # 0x4 + QWindowSystem : QPaintEngine.Type = ... # 0x5 + PostScript : QPaintEngine.Type = ... # 0x6 + OpenGL : QPaintEngine.Type = ... # 0x7 + Picture : QPaintEngine.Type = ... # 0x8 + SVG : QPaintEngine.Type = ... # 0x9 + Raster : QPaintEngine.Type = ... # 0xa + Direct3D : QPaintEngine.Type = ... # 0xb + Pdf : QPaintEngine.Type = ... # 0xc + OpenVG : QPaintEngine.Type = ... # 0xd + OpenGL2 : QPaintEngine.Type = ... # 0xe + PaintBuffer : QPaintEngine.Type = ... # 0xf + Blitter : QPaintEngine.Type = ... # 0x10 + Direct2D : QPaintEngine.Type = ... # 0x11 + User : QPaintEngine.Type = ... # 0x32 + MaxUser : QPaintEngine.Type = ... # 0x64 + + def __init__(self, features:PySide2.QtGui.QPaintEngine.PaintEngineFeatures=...) -> None: ... + + def begin(self, pdev:PySide2.QtGui.QPaintDevice) -> bool: ... + def clearDirty(self, df:PySide2.QtGui.QPaintEngine.DirtyFlags) -> None: ... + def coordinateOffset(self) -> PySide2.QtCore.QPoint: ... + @typing.overload + def drawEllipse(self, r:PySide2.QtCore.QRect) -> None: ... + @typing.overload + def drawEllipse(self, r:PySide2.QtCore.QRectF) -> None: ... + def drawImage(self, r:PySide2.QtCore.QRectF, pm:PySide2.QtGui.QImage, sr:PySide2.QtCore.QRectF, flags:PySide2.QtCore.Qt.ImageConversionFlags=...) -> None: ... + @typing.overload + def drawLines(self, lines:PySide2.QtCore.QLine, lineCount:int) -> None: ... + @typing.overload + def drawLines(self, lines:PySide2.QtCore.QLineF, lineCount:int) -> None: ... + def drawPath(self, path:PySide2.QtGui.QPainterPath) -> None: ... + def drawPixmap(self, r:PySide2.QtCore.QRectF, pm:PySide2.QtGui.QPixmap, sr:PySide2.QtCore.QRectF) -> None: ... + @typing.overload + def drawPoints(self, points:PySide2.QtCore.QPoint, pointCount:int) -> None: ... + @typing.overload + def drawPoints(self, points:PySide2.QtCore.QPointF, pointCount:int) -> None: ... + @typing.overload + def drawPolygon(self, points:PySide2.QtCore.QPoint, pointCount:int, mode:PySide2.QtGui.QPaintEngine.PolygonDrawMode) -> None: ... + @typing.overload + def drawPolygon(self, points:PySide2.QtCore.QPointF, pointCount:int, mode:PySide2.QtGui.QPaintEngine.PolygonDrawMode) -> None: ... + @typing.overload + def drawRects(self, rects:PySide2.QtCore.QRect, rectCount:int) -> None: ... + @typing.overload + def drawRects(self, rects:PySide2.QtCore.QRectF, rectCount:int) -> None: ... + def drawTextItem(self, p:PySide2.QtCore.QPointF, textItem:PySide2.QtGui.QTextItem) -> None: ... + def drawTiledPixmap(self, r:PySide2.QtCore.QRectF, pixmap:PySide2.QtGui.QPixmap, s:PySide2.QtCore.QPointF) -> None: ... + def end(self) -> bool: ... + def hasFeature(self, feature:PySide2.QtGui.QPaintEngine.PaintEngineFeatures) -> bool: ... + def isActive(self) -> bool: ... + def isExtended(self) -> bool: ... + def paintDevice(self) -> PySide2.QtGui.QPaintDevice: ... + def painter(self) -> PySide2.QtGui.QPainter: ... + def setActive(self, newState:bool) -> None: ... + def setDirty(self, df:PySide2.QtGui.QPaintEngine.DirtyFlags) -> None: ... + def setSystemClip(self, baseClip:PySide2.QtGui.QRegion) -> None: ... + def setSystemRect(self, rect:PySide2.QtCore.QRect) -> None: ... + def syncState(self) -> None: ... + def systemClip(self) -> PySide2.QtGui.QRegion: ... + def systemRect(self) -> PySide2.QtCore.QRect: ... + def testDirty(self, df:PySide2.QtGui.QPaintEngine.DirtyFlags) -> bool: ... + def type(self) -> PySide2.QtGui.QPaintEngine.Type: ... + def updateState(self, state:PySide2.QtGui.QPaintEngineState) -> None: ... + + +class QPaintEngineState(Shiboken.Object): + + def __init__(self) -> None: ... + + def backgroundBrush(self) -> PySide2.QtGui.QBrush: ... + def backgroundMode(self) -> PySide2.QtCore.Qt.BGMode: ... + def brush(self) -> PySide2.QtGui.QBrush: ... + def brushNeedsResolving(self) -> bool: ... + def brushOrigin(self) -> PySide2.QtCore.QPointF: ... + def clipOperation(self) -> PySide2.QtCore.Qt.ClipOperation: ... + def clipPath(self) -> PySide2.QtGui.QPainterPath: ... + def clipRegion(self) -> PySide2.QtGui.QRegion: ... + def compositionMode(self) -> PySide2.QtGui.QPainter.CompositionMode: ... + def font(self) -> PySide2.QtGui.QFont: ... + def isClipEnabled(self) -> bool: ... + def matrix(self) -> PySide2.QtGui.QMatrix: ... + def opacity(self) -> float: ... + def painter(self) -> PySide2.QtGui.QPainter: ... + def pen(self) -> PySide2.QtGui.QPen: ... + def penNeedsResolving(self) -> bool: ... + def renderHints(self) -> PySide2.QtGui.QPainter.RenderHints: ... + def state(self) -> PySide2.QtGui.QPaintEngine.DirtyFlags: ... + def transform(self) -> PySide2.QtGui.QTransform: ... + + +class QPaintEvent(PySide2.QtCore.QEvent): + + @typing.overload + def __init__(self, paintRect:PySide2.QtCore.QRect) -> None: ... + @typing.overload + def __init__(self, paintRegion:PySide2.QtGui.QRegion) -> None: ... + + def rect(self) -> PySide2.QtCore.QRect: ... + def region(self) -> PySide2.QtGui.QRegion: ... + + +class QPainter(Shiboken.Object): + CompositionMode_SourceOver: QPainter = ... # 0x0 + Antialiasing : QPainter = ... # 0x1 + CompositionMode_DestinationOver: QPainter = ... # 0x1 + OpaqueHint : QPainter = ... # 0x1 + CompositionMode_Clear : QPainter = ... # 0x2 + TextAntialiasing : QPainter = ... # 0x2 + CompositionMode_Source : QPainter = ... # 0x3 + CompositionMode_Destination: QPainter = ... # 0x4 + SmoothPixmapTransform : QPainter = ... # 0x4 + CompositionMode_SourceIn : QPainter = ... # 0x5 + CompositionMode_DestinationIn: QPainter = ... # 0x6 + CompositionMode_SourceOut: QPainter = ... # 0x7 + CompositionMode_DestinationOut: QPainter = ... # 0x8 + HighQualityAntialiasing : QPainter = ... # 0x8 + CompositionMode_SourceAtop: QPainter = ... # 0x9 + CompositionMode_DestinationAtop: QPainter = ... # 0xa + CompositionMode_Xor : QPainter = ... # 0xb + CompositionMode_Plus : QPainter = ... # 0xc + CompositionMode_Multiply : QPainter = ... # 0xd + CompositionMode_Screen : QPainter = ... # 0xe + CompositionMode_Overlay : QPainter = ... # 0xf + CompositionMode_Darken : QPainter = ... # 0x10 + NonCosmeticDefaultPen : QPainter = ... # 0x10 + CompositionMode_Lighten : QPainter = ... # 0x11 + CompositionMode_ColorDodge: QPainter = ... # 0x12 + CompositionMode_ColorBurn: QPainter = ... # 0x13 + CompositionMode_HardLight: QPainter = ... # 0x14 + CompositionMode_SoftLight: QPainter = ... # 0x15 + CompositionMode_Difference: QPainter = ... # 0x16 + CompositionMode_Exclusion: QPainter = ... # 0x17 + RasterOp_SourceOrDestination: QPainter = ... # 0x18 + RasterOp_SourceAndDestination: QPainter = ... # 0x19 + RasterOp_SourceXorDestination: QPainter = ... # 0x1a + RasterOp_NotSourceAndNotDestination: QPainter = ... # 0x1b + RasterOp_NotSourceOrNotDestination: QPainter = ... # 0x1c + RasterOp_NotSourceXorDestination: QPainter = ... # 0x1d + RasterOp_NotSource : QPainter = ... # 0x1e + RasterOp_NotSourceAndDestination: QPainter = ... # 0x1f + Qt4CompatiblePainting : QPainter = ... # 0x20 + RasterOp_SourceAndNotDestination: QPainter = ... # 0x20 + RasterOp_NotSourceOrDestination: QPainter = ... # 0x21 + RasterOp_SourceOrNotDestination: QPainter = ... # 0x22 + RasterOp_ClearDestination: QPainter = ... # 0x23 + RasterOp_SetDestination : QPainter = ... # 0x24 + RasterOp_NotDestination : QPainter = ... # 0x25 + LosslessImageRendering : QPainter = ... # 0x40 + + class CompositionMode(object): + CompositionMode_SourceOver: QPainter.CompositionMode = ... # 0x0 + CompositionMode_DestinationOver: QPainter.CompositionMode = ... # 0x1 + CompositionMode_Clear : QPainter.CompositionMode = ... # 0x2 + CompositionMode_Source : QPainter.CompositionMode = ... # 0x3 + CompositionMode_Destination: QPainter.CompositionMode = ... # 0x4 + CompositionMode_SourceIn : QPainter.CompositionMode = ... # 0x5 + CompositionMode_DestinationIn: QPainter.CompositionMode = ... # 0x6 + CompositionMode_SourceOut: QPainter.CompositionMode = ... # 0x7 + CompositionMode_DestinationOut: QPainter.CompositionMode = ... # 0x8 + CompositionMode_SourceAtop: QPainter.CompositionMode = ... # 0x9 + CompositionMode_DestinationAtop: QPainter.CompositionMode = ... # 0xa + CompositionMode_Xor : QPainter.CompositionMode = ... # 0xb + CompositionMode_Plus : QPainter.CompositionMode = ... # 0xc + CompositionMode_Multiply : QPainter.CompositionMode = ... # 0xd + CompositionMode_Screen : QPainter.CompositionMode = ... # 0xe + CompositionMode_Overlay : QPainter.CompositionMode = ... # 0xf + CompositionMode_Darken : QPainter.CompositionMode = ... # 0x10 + CompositionMode_Lighten : QPainter.CompositionMode = ... # 0x11 + CompositionMode_ColorDodge: QPainter.CompositionMode = ... # 0x12 + CompositionMode_ColorBurn: QPainter.CompositionMode = ... # 0x13 + CompositionMode_HardLight: QPainter.CompositionMode = ... # 0x14 + CompositionMode_SoftLight: QPainter.CompositionMode = ... # 0x15 + CompositionMode_Difference: QPainter.CompositionMode = ... # 0x16 + CompositionMode_Exclusion: QPainter.CompositionMode = ... # 0x17 + RasterOp_SourceOrDestination: QPainter.CompositionMode = ... # 0x18 + RasterOp_SourceAndDestination: QPainter.CompositionMode = ... # 0x19 + RasterOp_SourceXorDestination: QPainter.CompositionMode = ... # 0x1a + RasterOp_NotSourceAndNotDestination: QPainter.CompositionMode = ... # 0x1b + RasterOp_NotSourceOrNotDestination: QPainter.CompositionMode = ... # 0x1c + RasterOp_NotSourceXorDestination: QPainter.CompositionMode = ... # 0x1d + RasterOp_NotSource : QPainter.CompositionMode = ... # 0x1e + RasterOp_NotSourceAndDestination: QPainter.CompositionMode = ... # 0x1f + RasterOp_SourceAndNotDestination: QPainter.CompositionMode = ... # 0x20 + RasterOp_NotSourceOrDestination: QPainter.CompositionMode = ... # 0x21 + RasterOp_SourceOrNotDestination: QPainter.CompositionMode = ... # 0x22 + RasterOp_ClearDestination: QPainter.CompositionMode = ... # 0x23 + RasterOp_SetDestination : QPainter.CompositionMode = ... # 0x24 + RasterOp_NotDestination : QPainter.CompositionMode = ... # 0x25 + + class PixmapFragment(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, PixmapFragment:PySide2.QtGui.QPainter.PixmapFragment) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @staticmethod + def create(pos:PySide2.QtCore.QPointF, sourceRect:PySide2.QtCore.QRectF, scaleX:float=..., scaleY:float=..., rotation:float=..., opacity:float=...) -> PySide2.QtGui.QPainter.PixmapFragment: ... + + class PixmapFragmentHint(object): + OpaqueHint : QPainter.PixmapFragmentHint = ... # 0x1 + + class PixmapFragmentHints(object): ... + + class RenderHint(object): + Antialiasing : QPainter.RenderHint = ... # 0x1 + TextAntialiasing : QPainter.RenderHint = ... # 0x2 + SmoothPixmapTransform : QPainter.RenderHint = ... # 0x4 + HighQualityAntialiasing : QPainter.RenderHint = ... # 0x8 + NonCosmeticDefaultPen : QPainter.RenderHint = ... # 0x10 + Qt4CompatiblePainting : QPainter.RenderHint = ... # 0x20 + LosslessImageRendering : QPainter.RenderHint = ... # 0x40 + + class RenderHints(object): ... + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtGui.QPaintDevice) -> None: ... + + def background(self) -> PySide2.QtGui.QBrush: ... + def backgroundMode(self) -> PySide2.QtCore.Qt.BGMode: ... + def begin(self, arg__1:PySide2.QtGui.QPaintDevice) -> bool: ... + def beginNativePainting(self) -> None: ... + @typing.overload + def boundingRect(self, rect:PySide2.QtCore.QRect, flags:int, text:str) -> PySide2.QtCore.QRect: ... + @typing.overload + def boundingRect(self, rect:PySide2.QtCore.QRectF, flags:int, text:str) -> PySide2.QtCore.QRectF: ... + @typing.overload + def boundingRect(self, rect:PySide2.QtCore.QRectF, text:str, o:PySide2.QtGui.QTextOption=...) -> PySide2.QtCore.QRectF: ... + @typing.overload + def boundingRect(self, x:int, y:int, w:int, h:int, flags:int, text:str) -> PySide2.QtCore.QRect: ... + def brush(self) -> PySide2.QtGui.QBrush: ... + def brushOrigin(self) -> PySide2.QtCore.QPoint: ... + def clipBoundingRect(self) -> PySide2.QtCore.QRectF: ... + def clipPath(self) -> PySide2.QtGui.QPainterPath: ... + def clipRegion(self) -> PySide2.QtGui.QRegion: ... + def combinedMatrix(self) -> PySide2.QtGui.QMatrix: ... + def combinedTransform(self) -> PySide2.QtGui.QTransform: ... + def compositionMode(self) -> PySide2.QtGui.QPainter.CompositionMode: ... + def device(self) -> PySide2.QtGui.QPaintDevice: ... + def deviceMatrix(self) -> PySide2.QtGui.QMatrix: ... + def deviceTransform(self) -> PySide2.QtGui.QTransform: ... + @typing.overload + def drawArc(self, arg__1:PySide2.QtCore.QRect, a:int, alen:int) -> None: ... + @typing.overload + def drawArc(self, rect:PySide2.QtCore.QRectF, a:int, alen:int) -> None: ... + @typing.overload + def drawArc(self, x:int, y:int, w:int, h:int, a:int, alen:int) -> None: ... + @typing.overload + def drawChord(self, arg__1:PySide2.QtCore.QRect, a:int, alen:int) -> None: ... + @typing.overload + def drawChord(self, rect:PySide2.QtCore.QRectF, a:int, alen:int) -> None: ... + @typing.overload + def drawChord(self, x:int, y:int, w:int, h:int, a:int, alen:int) -> None: ... + @typing.overload + def drawConvexPolygon(self, arg__1:typing.List) -> None: ... + @typing.overload + def drawConvexPolygon(self, arg__1:typing.List) -> None: ... + @typing.overload + def drawConvexPolygon(self, polygon:PySide2.QtGui.QPolygon) -> None: ... + @typing.overload + def drawConvexPolygon(self, polygon:PySide2.QtGui.QPolygonF) -> None: ... + @typing.overload + def drawEllipse(self, center:PySide2.QtCore.QPoint, rx:int, ry:int) -> None: ... + @typing.overload + def drawEllipse(self, center:PySide2.QtCore.QPointF, rx:float, ry:float) -> None: ... + @typing.overload + def drawEllipse(self, r:PySide2.QtCore.QRect) -> None: ... + @typing.overload + def drawEllipse(self, r:PySide2.QtCore.QRectF) -> None: ... + @typing.overload + def drawEllipse(self, x:int, y:int, w:int, h:int) -> None: ... + @typing.overload + def drawImage(self, p:PySide2.QtCore.QPoint, image:PySide2.QtGui.QImage) -> None: ... + @typing.overload + def drawImage(self, p:PySide2.QtCore.QPoint, image:PySide2.QtGui.QImage, sr:PySide2.QtCore.QRect, flags:PySide2.QtCore.Qt.ImageConversionFlags=...) -> None: ... + @typing.overload + def drawImage(self, p:PySide2.QtCore.QPointF, image:PySide2.QtGui.QImage) -> None: ... + @typing.overload + def drawImage(self, p:PySide2.QtCore.QPointF, image:PySide2.QtGui.QImage, sr:PySide2.QtCore.QRectF, flags:PySide2.QtCore.Qt.ImageConversionFlags=...) -> None: ... + @typing.overload + def drawImage(self, r:PySide2.QtCore.QRect, image:PySide2.QtGui.QImage) -> None: ... + @typing.overload + def drawImage(self, r:PySide2.QtCore.QRectF, image:PySide2.QtGui.QImage) -> None: ... + @typing.overload + def drawImage(self, targetRect:PySide2.QtCore.QRect, image:PySide2.QtGui.QImage, sourceRect:PySide2.QtCore.QRect, flags:PySide2.QtCore.Qt.ImageConversionFlags=...) -> None: ... + @typing.overload + def drawImage(self, targetRect:PySide2.QtCore.QRectF, image:PySide2.QtGui.QImage, sourceRect:PySide2.QtCore.QRectF, flags:PySide2.QtCore.Qt.ImageConversionFlags=...) -> None: ... + @typing.overload + def drawImage(self, x:int, y:int, image:PySide2.QtGui.QImage, sx:int=..., sy:int=..., sw:int=..., sh:int=..., flags:PySide2.QtCore.Qt.ImageConversionFlags=...) -> None: ... + @typing.overload + def drawLine(self, line:PySide2.QtCore.QLine) -> None: ... + @typing.overload + def drawLine(self, line:PySide2.QtCore.QLineF) -> None: ... + @typing.overload + def drawLine(self, p1:PySide2.QtCore.QPoint, p2:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + def drawLine(self, p1:PySide2.QtCore.QPointF, p2:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def drawLine(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + @typing.overload + def drawLines(self, lines:typing.List) -> None: ... + @typing.overload + def drawLines(self, lines:typing.List) -> None: ... + @typing.overload + def drawLines(self, pointPairs:typing.List) -> None: ... + @typing.overload + def drawLines(self, pointPairs:typing.List) -> None: ... + def drawPath(self, path:PySide2.QtGui.QPainterPath) -> None: ... + @typing.overload + def drawPicture(self, p:PySide2.QtCore.QPoint, picture:PySide2.QtGui.QPicture) -> None: ... + @typing.overload + def drawPicture(self, p:PySide2.QtCore.QPointF, picture:PySide2.QtGui.QPicture) -> None: ... + @typing.overload + def drawPicture(self, x:int, y:int, picture:PySide2.QtGui.QPicture) -> None: ... + @typing.overload + def drawPie(self, arg__1:PySide2.QtCore.QRect, a:int, alen:int) -> None: ... + @typing.overload + def drawPie(self, rect:PySide2.QtCore.QRectF, a:int, alen:int) -> None: ... + @typing.overload + def drawPie(self, x:int, y:int, w:int, h:int, a:int, alen:int) -> None: ... + @typing.overload + def drawPixmap(self, p:PySide2.QtCore.QPoint, pm:PySide2.QtGui.QPixmap) -> None: ... + @typing.overload + def drawPixmap(self, p:PySide2.QtCore.QPoint, pm:PySide2.QtGui.QPixmap, sr:PySide2.QtCore.QRect) -> None: ... + @typing.overload + def drawPixmap(self, p:PySide2.QtCore.QPointF, pm:PySide2.QtGui.QPixmap) -> None: ... + @typing.overload + def drawPixmap(self, p:PySide2.QtCore.QPointF, pm:PySide2.QtGui.QPixmap, sr:PySide2.QtCore.QRectF) -> None: ... + @typing.overload + def drawPixmap(self, r:PySide2.QtCore.QRect, pm:PySide2.QtGui.QPixmap) -> None: ... + @typing.overload + def drawPixmap(self, targetRect:PySide2.QtCore.QRect, pixmap:PySide2.QtGui.QPixmap, sourceRect:PySide2.QtCore.QRect) -> None: ... + @typing.overload + def drawPixmap(self, targetRect:PySide2.QtCore.QRectF, pixmap:PySide2.QtGui.QPixmap, sourceRect:PySide2.QtCore.QRectF) -> None: ... + @typing.overload + def drawPixmap(self, x:int, y:int, pm:PySide2.QtGui.QPixmap) -> None: ... + @typing.overload + def drawPixmap(self, x:int, y:int, pm:PySide2.QtGui.QPixmap, sx:int, sy:int, sw:int, sh:int) -> None: ... + @typing.overload + def drawPixmap(self, x:int, y:int, w:int, h:int, pm:PySide2.QtGui.QPixmap) -> None: ... + @typing.overload + def drawPixmap(self, x:int, y:int, w:int, h:int, pm:PySide2.QtGui.QPixmap, sx:int, sy:int, sw:int, sh:int) -> None: ... + def drawPixmapFragments(self, fragments:PySide2.QtGui.QPainter.PixmapFragment, fragmentCount:int, pixmap:PySide2.QtGui.QPixmap, hints:PySide2.QtGui.QPainter.PixmapFragmentHints=...) -> None: ... + @typing.overload + def drawPoint(self, p:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + def drawPoint(self, pt:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def drawPoint(self, x:int, y:int) -> None: ... + @typing.overload + def drawPoints(self, arg__1:typing.List) -> None: ... + @typing.overload + def drawPoints(self, arg__1:typing.List) -> None: ... + @typing.overload + def drawPoints(self, points:PySide2.QtGui.QPolygon) -> None: ... + @typing.overload + def drawPoints(self, points:PySide2.QtGui.QPolygonF) -> None: ... + @typing.overload + def drawPolygon(self, arg__1:typing.List, arg__2:PySide2.QtCore.Qt.FillRule) -> None: ... + @typing.overload + def drawPolygon(self, arg__1:typing.List, arg__2:PySide2.QtCore.Qt.FillRule) -> None: ... + @typing.overload + def drawPolygon(self, polygon:PySide2.QtGui.QPolygon, fillRule:PySide2.QtCore.Qt.FillRule=...) -> None: ... + @typing.overload + def drawPolygon(self, polygon:PySide2.QtGui.QPolygonF, fillRule:PySide2.QtCore.Qt.FillRule=...) -> None: ... + @typing.overload + def drawPolyline(self, arg__1:typing.List) -> None: ... + @typing.overload + def drawPolyline(self, arg__1:typing.List) -> None: ... + @typing.overload + def drawPolyline(self, polygon:PySide2.QtGui.QPolygon) -> None: ... + @typing.overload + def drawPolyline(self, polyline:PySide2.QtGui.QPolygonF) -> None: ... + @typing.overload + def drawRect(self, rect:PySide2.QtCore.QRect) -> None: ... + @typing.overload + def drawRect(self, rect:PySide2.QtCore.QRectF) -> None: ... + @typing.overload + def drawRect(self, x1:int, y1:int, w:int, h:int) -> None: ... + @typing.overload + def drawRects(self, rectangles:typing.List) -> None: ... + @typing.overload + def drawRects(self, rectangles:typing.List) -> None: ... + @typing.overload + def drawRoundRect(self, r:PySide2.QtCore.QRect, xround:int=..., yround:int=...) -> None: ... + @typing.overload + def drawRoundRect(self, r:PySide2.QtCore.QRectF, xround:int=..., yround:int=...) -> None: ... + @typing.overload + def drawRoundRect(self, x:int, y:int, w:int, h:int, xRound:int=..., yRound:int=...) -> None: ... + @typing.overload + def drawRoundedRect(self, rect:PySide2.QtCore.QRect, xRadius:float, yRadius:float, mode:PySide2.QtCore.Qt.SizeMode=...) -> None: ... + @typing.overload + def drawRoundedRect(self, rect:PySide2.QtCore.QRectF, xRadius:float, yRadius:float, mode:PySide2.QtCore.Qt.SizeMode=...) -> None: ... + @typing.overload + def drawRoundedRect(self, x:int, y:int, w:int, h:int, xRadius:float, yRadius:float, mode:PySide2.QtCore.Qt.SizeMode=...) -> None: ... + @typing.overload + def drawStaticText(self, left:int, top:int, staticText:PySide2.QtGui.QStaticText) -> None: ... + @typing.overload + def drawStaticText(self, topLeftPosition:PySide2.QtCore.QPoint, staticText:PySide2.QtGui.QStaticText) -> None: ... + @typing.overload + def drawStaticText(self, topLeftPosition:PySide2.QtCore.QPointF, staticText:PySide2.QtGui.QStaticText) -> None: ... + @typing.overload + def drawText(self, p:PySide2.QtCore.QPoint, s:str) -> None: ... + @typing.overload + def drawText(self, p:PySide2.QtCore.QPointF, s:str) -> None: ... + @typing.overload + def drawText(self, r:PySide2.QtCore.QRect, flags:int, text:str, br:PySide2.QtCore.QRect) -> None: ... + @typing.overload + def drawText(self, r:PySide2.QtCore.QRectF, flags:int, text:str, br:PySide2.QtCore.QRectF) -> None: ... + @typing.overload + def drawText(self, r:PySide2.QtCore.QRectF, text:str, o:PySide2.QtGui.QTextOption=...) -> None: ... + @typing.overload + def drawText(self, x:int, y:int, s:str) -> None: ... + @typing.overload + def drawText(self, x:int, y:int, w:int, h:int, flags:int, text:str, br:PySide2.QtCore.QRect) -> None: ... + @typing.overload + def drawTextItem(self, p:PySide2.QtCore.QPoint, ti:PySide2.QtGui.QTextItem) -> None: ... + @typing.overload + def drawTextItem(self, p:PySide2.QtCore.QPointF, ti:PySide2.QtGui.QTextItem) -> None: ... + @typing.overload + def drawTextItem(self, x:int, y:int, ti:PySide2.QtGui.QTextItem) -> None: ... + @typing.overload + def drawTiledPixmap(self, arg__1:PySide2.QtCore.QRect, arg__2:PySide2.QtGui.QPixmap, pos:PySide2.QtCore.QPoint=...) -> None: ... + @typing.overload + def drawTiledPixmap(self, rect:PySide2.QtCore.QRectF, pm:PySide2.QtGui.QPixmap, offset:PySide2.QtCore.QPointF=...) -> None: ... + @typing.overload + def drawTiledPixmap(self, x:int, y:int, w:int, h:int, arg__5:PySide2.QtGui.QPixmap, sx:int=..., sy:int=...) -> None: ... + def end(self) -> bool: ... + def endNativePainting(self) -> None: ... + @typing.overload + def eraseRect(self, arg__1:PySide2.QtCore.QRect) -> None: ... + @typing.overload + def eraseRect(self, arg__1:PySide2.QtCore.QRectF) -> None: ... + @typing.overload + def eraseRect(self, x:int, y:int, w:int, h:int) -> None: ... + def fillPath(self, path:PySide2.QtGui.QPainterPath, brush:PySide2.QtGui.QBrush) -> None: ... + @typing.overload + def fillRect(self, arg__1:PySide2.QtCore.QRect, arg__2:PySide2.QtGui.QBrush) -> None: ... + @typing.overload + def fillRect(self, arg__1:PySide2.QtCore.QRect, color:PySide2.QtGui.QColor) -> None: ... + @typing.overload + def fillRect(self, arg__1:PySide2.QtCore.QRectF, arg__2:PySide2.QtGui.QBrush) -> None: ... + @typing.overload + def fillRect(self, arg__1:PySide2.QtCore.QRectF, color:PySide2.QtGui.QColor) -> None: ... + @typing.overload + def fillRect(self, r:PySide2.QtCore.QRect, c:PySide2.QtCore.Qt.GlobalColor) -> None: ... + @typing.overload + def fillRect(self, r:PySide2.QtCore.QRect, preset:PySide2.QtGui.QGradient.Preset) -> None: ... + @typing.overload + def fillRect(self, r:PySide2.QtCore.QRect, style:PySide2.QtCore.Qt.BrushStyle) -> None: ... + @typing.overload + def fillRect(self, r:PySide2.QtCore.QRectF, c:PySide2.QtCore.Qt.GlobalColor) -> None: ... + @typing.overload + def fillRect(self, r:PySide2.QtCore.QRectF, preset:PySide2.QtGui.QGradient.Preset) -> None: ... + @typing.overload + def fillRect(self, r:PySide2.QtCore.QRectF, style:PySide2.QtCore.Qt.BrushStyle) -> None: ... + @typing.overload + def fillRect(self, x:int, y:int, w:int, h:int, arg__5:PySide2.QtGui.QBrush) -> None: ... + @typing.overload + def fillRect(self, x:int, y:int, w:int, h:int, c:PySide2.QtCore.Qt.GlobalColor) -> None: ... + @typing.overload + def fillRect(self, x:int, y:int, w:int, h:int, color:PySide2.QtGui.QColor) -> None: ... + @typing.overload + def fillRect(self, x:int, y:int, w:int, h:int, preset:PySide2.QtGui.QGradient.Preset) -> None: ... + @typing.overload + def fillRect(self, x:int, y:int, w:int, h:int, style:PySide2.QtCore.Qt.BrushStyle) -> None: ... + def font(self) -> PySide2.QtGui.QFont: ... + def fontInfo(self) -> PySide2.QtGui.QFontInfo: ... + def fontMetrics(self) -> PySide2.QtGui.QFontMetrics: ... + def hasClipping(self) -> bool: ... + def initFrom(self, device:PySide2.QtGui.QPaintDevice) -> None: ... + def isActive(self) -> bool: ... + def layoutDirection(self) -> PySide2.QtCore.Qt.LayoutDirection: ... + def matrix(self) -> PySide2.QtGui.QMatrix: ... + def matrixEnabled(self) -> bool: ... + def opacity(self) -> float: ... + def paintEngine(self) -> PySide2.QtGui.QPaintEngine: ... + def pen(self) -> PySide2.QtGui.QPen: ... + @staticmethod + def redirected(device:PySide2.QtGui.QPaintDevice, offset:typing.Optional[PySide2.QtCore.QPoint]=...) -> PySide2.QtGui.QPaintDevice: ... + def renderHints(self) -> PySide2.QtGui.QPainter.RenderHints: ... + def resetMatrix(self) -> None: ... + def resetTransform(self) -> None: ... + def restore(self) -> None: ... + @staticmethod + def restoreRedirected(device:PySide2.QtGui.QPaintDevice) -> None: ... + def rotate(self, a:float) -> None: ... + def save(self) -> None: ... + def scale(self, sx:float, sy:float) -> None: ... + def setBackground(self, bg:PySide2.QtGui.QBrush) -> None: ... + def setBackgroundMode(self, mode:PySide2.QtCore.Qt.BGMode) -> None: ... + @typing.overload + def setBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + @typing.overload + def setBrush(self, style:PySide2.QtCore.Qt.BrushStyle) -> None: ... + @typing.overload + def setBrushOrigin(self, arg__1:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + def setBrushOrigin(self, arg__1:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def setBrushOrigin(self, x:int, y:int) -> None: ... + def setClipPath(self, path:PySide2.QtGui.QPainterPath, op:PySide2.QtCore.Qt.ClipOperation=...) -> None: ... + @typing.overload + def setClipRect(self, arg__1:PySide2.QtCore.QRect, op:PySide2.QtCore.Qt.ClipOperation=...) -> None: ... + @typing.overload + def setClipRect(self, arg__1:PySide2.QtCore.QRectF, op:PySide2.QtCore.Qt.ClipOperation=...) -> None: ... + @typing.overload + def setClipRect(self, x:int, y:int, w:int, h:int, op:PySide2.QtCore.Qt.ClipOperation=...) -> None: ... + def setClipRegion(self, arg__1:PySide2.QtGui.QRegion, op:PySide2.QtCore.Qt.ClipOperation=...) -> None: ... + def setClipping(self, enable:bool) -> None: ... + def setCompositionMode(self, mode:PySide2.QtGui.QPainter.CompositionMode) -> None: ... + def setFont(self, f:PySide2.QtGui.QFont) -> None: ... + def setLayoutDirection(self, direction:PySide2.QtCore.Qt.LayoutDirection) -> None: ... + def setMatrix(self, matrix:PySide2.QtGui.QMatrix, combine:bool=...) -> None: ... + def setMatrixEnabled(self, enabled:bool) -> None: ... + def setOpacity(self, opacity:float) -> None: ... + @typing.overload + def setPen(self, color:PySide2.QtGui.QColor) -> None: ... + @typing.overload + def setPen(self, pen:PySide2.QtGui.QPen) -> None: ... + @typing.overload + def setPen(self, style:PySide2.QtCore.Qt.PenStyle) -> None: ... + @staticmethod + def setRedirected(device:PySide2.QtGui.QPaintDevice, replacement:PySide2.QtGui.QPaintDevice, offset:PySide2.QtCore.QPoint=...) -> None: ... + def setRenderHint(self, hint:PySide2.QtGui.QPainter.RenderHint, on:bool=...) -> None: ... + def setRenderHints(self, hints:PySide2.QtGui.QPainter.RenderHints, on:bool=...) -> None: ... + def setTransform(self, transform:PySide2.QtGui.QTransform, combine:bool=...) -> None: ... + def setViewTransformEnabled(self, enable:bool) -> None: ... + @typing.overload + def setViewport(self, viewport:PySide2.QtCore.QRect) -> None: ... + @typing.overload + def setViewport(self, x:int, y:int, w:int, h:int) -> None: ... + @typing.overload + def setWindow(self, window:PySide2.QtCore.QRect) -> None: ... + @typing.overload + def setWindow(self, x:int, y:int, w:int, h:int) -> None: ... + def setWorldMatrix(self, matrix:PySide2.QtGui.QMatrix, combine:bool=...) -> None: ... + def setWorldMatrixEnabled(self, enabled:bool) -> None: ... + def setWorldTransform(self, matrix:PySide2.QtGui.QTransform, combine:bool=...) -> None: ... + def shear(self, sh:float, sv:float) -> None: ... + def strokePath(self, path:PySide2.QtGui.QPainterPath, pen:PySide2.QtGui.QPen) -> None: ... + def testRenderHint(self, hint:PySide2.QtGui.QPainter.RenderHint) -> bool: ... + def transform(self) -> PySide2.QtGui.QTransform: ... + @typing.overload + def translate(self, dx:float, dy:float) -> None: ... + @typing.overload + def translate(self, offset:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + def translate(self, offset:PySide2.QtCore.QPointF) -> None: ... + def viewTransformEnabled(self) -> bool: ... + def viewport(self) -> PySide2.QtCore.QRect: ... + def window(self) -> PySide2.QtCore.QRect: ... + def worldMatrix(self) -> PySide2.QtGui.QMatrix: ... + def worldMatrixEnabled(self) -> bool: ... + def worldTransform(self) -> PySide2.QtGui.QTransform: ... + + +class QPainterPath(Shiboken.Object): + MoveToElement : QPainterPath = ... # 0x0 + LineToElement : QPainterPath = ... # 0x1 + CurveToElement : QPainterPath = ... # 0x2 + CurveToDataElement : QPainterPath = ... # 0x3 + + class Element(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, Element:PySide2.QtGui.QPainterPath.Element) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def isCurveTo(self) -> bool: ... + def isLineTo(self) -> bool: ... + def isMoveTo(self) -> bool: ... + + class ElementType(object): + MoveToElement : QPainterPath.ElementType = ... # 0x0 + LineToElement : QPainterPath.ElementType = ... # 0x1 + CurveToElement : QPainterPath.ElementType = ... # 0x2 + CurveToDataElement : QPainterPath.ElementType = ... # 0x3 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtGui.QPainterPath) -> None: ... + @typing.overload + def __init__(self, startPoint:PySide2.QtCore.QPointF) -> None: ... + + def __add__(self, other:PySide2.QtGui.QPainterPath) -> PySide2.QtGui.QPainterPath: ... + def __and__(self, other:PySide2.QtGui.QPainterPath) -> PySide2.QtGui.QPainterPath: ... + @staticmethod + def __copy__() -> None: ... + def __iadd__(self, other:PySide2.QtGui.QPainterPath) -> PySide2.QtGui.QPainterPath: ... + def __iand__(self, other:PySide2.QtGui.QPainterPath) -> PySide2.QtGui.QPainterPath: ... + def __ior__(self, other:PySide2.QtGui.QPainterPath) -> PySide2.QtGui.QPainterPath: ... + def __isub__(self, other:PySide2.QtGui.QPainterPath) -> PySide2.QtGui.QPainterPath: ... + def __lshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __mul__(self, m:PySide2.QtGui.QMatrix) -> PySide2.QtGui.QPainterPath: ... + @typing.overload + def __mul__(self, m:PySide2.QtGui.QTransform) -> PySide2.QtGui.QPainterPath: ... + def __or__(self, other:PySide2.QtGui.QPainterPath) -> PySide2.QtGui.QPainterPath: ... + def __rshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __sub__(self, other:PySide2.QtGui.QPainterPath) -> PySide2.QtGui.QPainterPath: ... + @typing.overload + def addEllipse(self, center:PySide2.QtCore.QPointF, rx:float, ry:float) -> None: ... + @typing.overload + def addEllipse(self, rect:PySide2.QtCore.QRectF) -> None: ... + @typing.overload + def addEllipse(self, x:float, y:float, w:float, h:float) -> None: ... + def addPath(self, path:PySide2.QtGui.QPainterPath) -> None: ... + def addPolygon(self, polygon:PySide2.QtGui.QPolygonF) -> None: ... + @typing.overload + def addRect(self, rect:PySide2.QtCore.QRectF) -> None: ... + @typing.overload + def addRect(self, x:float, y:float, w:float, h:float) -> None: ... + def addRegion(self, region:PySide2.QtGui.QRegion) -> None: ... + @typing.overload + def addRoundRect(self, rect:PySide2.QtCore.QRectF, roundness:int) -> None: ... + @typing.overload + def addRoundRect(self, rect:PySide2.QtCore.QRectF, xRnd:int, yRnd:int) -> None: ... + @typing.overload + def addRoundRect(self, x:float, y:float, w:float, h:float, roundness:int) -> None: ... + @typing.overload + def addRoundRect(self, x:float, y:float, w:float, h:float, xRnd:int, yRnd:int) -> None: ... + @typing.overload + def addRoundedRect(self, rect:PySide2.QtCore.QRectF, xRadius:float, yRadius:float, mode:PySide2.QtCore.Qt.SizeMode=...) -> None: ... + @typing.overload + def addRoundedRect(self, x:float, y:float, w:float, h:float, xRadius:float, yRadius:float, mode:PySide2.QtCore.Qt.SizeMode=...) -> None: ... + @typing.overload + def addText(self, point:PySide2.QtCore.QPointF, f:PySide2.QtGui.QFont, text:str) -> None: ... + @typing.overload + def addText(self, x:float, y:float, f:PySide2.QtGui.QFont, text:str) -> None: ... + def angleAtPercent(self, t:float) -> float: ... + @typing.overload + def arcMoveTo(self, rect:PySide2.QtCore.QRectF, angle:float) -> None: ... + @typing.overload + def arcMoveTo(self, x:float, y:float, w:float, h:float, angle:float) -> None: ... + @typing.overload + def arcTo(self, rect:PySide2.QtCore.QRectF, startAngle:float, arcLength:float) -> None: ... + @typing.overload + def arcTo(self, x:float, y:float, w:float, h:float, startAngle:float, arcLength:float) -> None: ... + def boundingRect(self) -> PySide2.QtCore.QRectF: ... + def capacity(self) -> int: ... + def clear(self) -> None: ... + def closeSubpath(self) -> None: ... + def connectPath(self, path:PySide2.QtGui.QPainterPath) -> None: ... + @typing.overload + def contains(self, p:PySide2.QtGui.QPainterPath) -> bool: ... + @typing.overload + def contains(self, pt:PySide2.QtCore.QPointF) -> bool: ... + @typing.overload + def contains(self, rect:PySide2.QtCore.QRectF) -> bool: ... + def controlPointRect(self) -> PySide2.QtCore.QRectF: ... + @typing.overload + def cubicTo(self, ctrlPt1:PySide2.QtCore.QPointF, ctrlPt2:PySide2.QtCore.QPointF, endPt:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def cubicTo(self, ctrlPt1x:float, ctrlPt1y:float, ctrlPt2x:float, ctrlPt2y:float, endPtx:float, endPty:float) -> None: ... + def currentPosition(self) -> PySide2.QtCore.QPointF: ... + def elementAt(self, i:int) -> PySide2.QtGui.QPainterPath.Element: ... + def elementCount(self) -> int: ... + def fillRule(self) -> PySide2.QtCore.Qt.FillRule: ... + def intersected(self, r:PySide2.QtGui.QPainterPath) -> PySide2.QtGui.QPainterPath: ... + @typing.overload + def intersects(self, p:PySide2.QtGui.QPainterPath) -> bool: ... + @typing.overload + def intersects(self, rect:PySide2.QtCore.QRectF) -> bool: ... + def isEmpty(self) -> bool: ... + def length(self) -> float: ... + @typing.overload + def lineTo(self, p:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def lineTo(self, x:float, y:float) -> None: ... + @typing.overload + def moveTo(self, p:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def moveTo(self, x:float, y:float) -> None: ... + def percentAtLength(self, t:float) -> float: ... + def pointAtPercent(self, t:float) -> PySide2.QtCore.QPointF: ... + @typing.overload + def quadTo(self, ctrlPt:PySide2.QtCore.QPointF, endPt:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def quadTo(self, ctrlPtx:float, ctrlPty:float, endPtx:float, endPty:float) -> None: ... + def reserve(self, size:int) -> None: ... + def setElementPositionAt(self, i:int, x:float, y:float) -> None: ... + def setFillRule(self, fillRule:PySide2.QtCore.Qt.FillRule) -> None: ... + def simplified(self) -> PySide2.QtGui.QPainterPath: ... + def slopeAtPercent(self, t:float) -> float: ... + def subtracted(self, r:PySide2.QtGui.QPainterPath) -> PySide2.QtGui.QPainterPath: ... + def subtractedInverted(self, r:PySide2.QtGui.QPainterPath) -> PySide2.QtGui.QPainterPath: ... + def swap(self, other:PySide2.QtGui.QPainterPath) -> None: ... + @typing.overload + def toFillPolygon(self, matrix:PySide2.QtGui.QMatrix) -> PySide2.QtGui.QPolygonF: ... + @typing.overload + def toFillPolygon(self, matrix:PySide2.QtGui.QTransform=...) -> PySide2.QtGui.QPolygonF: ... + @typing.overload + def toFillPolygons(self, matrix:PySide2.QtGui.QMatrix) -> typing.List: ... + @typing.overload + def toFillPolygons(self, matrix:PySide2.QtGui.QTransform=...) -> typing.List: ... + def toReversed(self) -> PySide2.QtGui.QPainterPath: ... + @typing.overload + def toSubpathPolygons(self, matrix:PySide2.QtGui.QMatrix) -> typing.List: ... + @typing.overload + def toSubpathPolygons(self, matrix:PySide2.QtGui.QTransform=...) -> typing.List: ... + @typing.overload + def translate(self, dx:float, dy:float) -> None: ... + @typing.overload + def translate(self, offset:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def translated(self, dx:float, dy:float) -> PySide2.QtGui.QPainterPath: ... + @typing.overload + def translated(self, offset:PySide2.QtCore.QPointF) -> PySide2.QtGui.QPainterPath: ... + def united(self, r:PySide2.QtGui.QPainterPath) -> PySide2.QtGui.QPainterPath: ... + + +class QPainterPathStroker(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, pen:PySide2.QtGui.QPen) -> None: ... + + def capStyle(self) -> PySide2.QtCore.Qt.PenCapStyle: ... + def createStroke(self, path:PySide2.QtGui.QPainterPath) -> PySide2.QtGui.QPainterPath: ... + def curveThreshold(self) -> float: ... + def dashOffset(self) -> float: ... + def dashPattern(self) -> typing.List: ... + def joinStyle(self) -> PySide2.QtCore.Qt.PenJoinStyle: ... + def miterLimit(self) -> float: ... + def setCapStyle(self, style:PySide2.QtCore.Qt.PenCapStyle) -> None: ... + def setCurveThreshold(self, threshold:float) -> None: ... + def setDashOffset(self, offset:float) -> None: ... + @typing.overload + def setDashPattern(self, arg__1:PySide2.QtCore.Qt.PenStyle) -> None: ... + @typing.overload + def setDashPattern(self, dashPattern:typing.List) -> None: ... + def setJoinStyle(self, style:PySide2.QtCore.Qt.PenJoinStyle) -> None: ... + def setMiterLimit(self, length:float) -> None: ... + def setWidth(self, width:float) -> None: ... + def width(self) -> float: ... + + +class QPalette(Shiboken.Object): + Active : QPalette = ... # 0x0 + Foreground : QPalette = ... # 0x0 + Normal : QPalette = ... # 0x0 + WindowText : QPalette = ... # 0x0 + Button : QPalette = ... # 0x1 + Disabled : QPalette = ... # 0x1 + Inactive : QPalette = ... # 0x2 + Light : QPalette = ... # 0x2 + Midlight : QPalette = ... # 0x3 + NColorGroups : QPalette = ... # 0x3 + Current : QPalette = ... # 0x4 + Dark : QPalette = ... # 0x4 + All : QPalette = ... # 0x5 + Mid : QPalette = ... # 0x5 + Text : QPalette = ... # 0x6 + BrightText : QPalette = ... # 0x7 + ButtonText : QPalette = ... # 0x8 + Base : QPalette = ... # 0x9 + Background : QPalette = ... # 0xa + Window : QPalette = ... # 0xa + Shadow : QPalette = ... # 0xb + Highlight : QPalette = ... # 0xc + HighlightedText : QPalette = ... # 0xd + Link : QPalette = ... # 0xe + LinkVisited : QPalette = ... # 0xf + AlternateBase : QPalette = ... # 0x10 + NoRole : QPalette = ... # 0x11 + ToolTipBase : QPalette = ... # 0x12 + ToolTipText : QPalette = ... # 0x13 + PlaceholderText : QPalette = ... # 0x14 + NColorRoles : QPalette = ... # 0x15 + + class ColorGroup(object): + Active : QPalette.ColorGroup = ... # 0x0 + Normal : QPalette.ColorGroup = ... # 0x0 + Disabled : QPalette.ColorGroup = ... # 0x1 + Inactive : QPalette.ColorGroup = ... # 0x2 + NColorGroups : QPalette.ColorGroup = ... # 0x3 + Current : QPalette.ColorGroup = ... # 0x4 + All : QPalette.ColorGroup = ... # 0x5 + + class ColorRole(object): + Foreground : QPalette.ColorRole = ... # 0x0 + WindowText : QPalette.ColorRole = ... # 0x0 + Button : QPalette.ColorRole = ... # 0x1 + Light : QPalette.ColorRole = ... # 0x2 + Midlight : QPalette.ColorRole = ... # 0x3 + Dark : QPalette.ColorRole = ... # 0x4 + Mid : QPalette.ColorRole = ... # 0x5 + Text : QPalette.ColorRole = ... # 0x6 + BrightText : QPalette.ColorRole = ... # 0x7 + ButtonText : QPalette.ColorRole = ... # 0x8 + Base : QPalette.ColorRole = ... # 0x9 + Background : QPalette.ColorRole = ... # 0xa + Window : QPalette.ColorRole = ... # 0xa + Shadow : QPalette.ColorRole = ... # 0xb + Highlight : QPalette.ColorRole = ... # 0xc + HighlightedText : QPalette.ColorRole = ... # 0xd + Link : QPalette.ColorRole = ... # 0xe + LinkVisited : QPalette.ColorRole = ... # 0xf + AlternateBase : QPalette.ColorRole = ... # 0x10 + NoRole : QPalette.ColorRole = ... # 0x11 + ToolTipBase : QPalette.ColorRole = ... # 0x12 + ToolTipText : QPalette.ColorRole = ... # 0x13 + PlaceholderText : QPalette.ColorRole = ... # 0x14 + NColorRoles : QPalette.ColorRole = ... # 0x15 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, button:PySide2.QtCore.Qt.GlobalColor) -> None: ... + @typing.overload + def __init__(self, button:PySide2.QtGui.QColor) -> None: ... + @typing.overload + def __init__(self, button:PySide2.QtGui.QColor, window:PySide2.QtGui.QColor) -> None: ... + @typing.overload + def __init__(self, palette:PySide2.QtGui.QPalette) -> None: ... + @typing.overload + def __init__(self, windowText:PySide2.QtGui.QBrush, button:PySide2.QtGui.QBrush, light:PySide2.QtGui.QBrush, dark:PySide2.QtGui.QBrush, mid:PySide2.QtGui.QBrush, text:PySide2.QtGui.QBrush, bright_text:PySide2.QtGui.QBrush, base:PySide2.QtGui.QBrush, window:PySide2.QtGui.QBrush) -> None: ... + @typing.overload + def __init__(self, windowText:PySide2.QtGui.QColor, window:PySide2.QtGui.QColor, light:PySide2.QtGui.QColor, dark:PySide2.QtGui.QColor, mid:PySide2.QtGui.QColor, text:PySide2.QtGui.QColor, base:PySide2.QtGui.QColor) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __lshift__(self, ds:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __rshift__(self, ds:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def alternateBase(self) -> PySide2.QtGui.QBrush: ... + def background(self) -> PySide2.QtGui.QBrush: ... + def base(self) -> PySide2.QtGui.QBrush: ... + def brightText(self) -> PySide2.QtGui.QBrush: ... + @typing.overload + def brush(self, cg:PySide2.QtGui.QPalette.ColorGroup, cr:PySide2.QtGui.QPalette.ColorRole) -> PySide2.QtGui.QBrush: ... + @typing.overload + def brush(self, cr:PySide2.QtGui.QPalette.ColorRole) -> PySide2.QtGui.QBrush: ... + def button(self) -> PySide2.QtGui.QBrush: ... + def buttonText(self) -> PySide2.QtGui.QBrush: ... + def cacheKey(self) -> int: ... + @typing.overload + def color(self, cg:PySide2.QtGui.QPalette.ColorGroup, cr:PySide2.QtGui.QPalette.ColorRole) -> PySide2.QtGui.QColor: ... + @typing.overload + def color(self, cr:PySide2.QtGui.QPalette.ColorRole) -> PySide2.QtGui.QColor: ... + def currentColorGroup(self) -> PySide2.QtGui.QPalette.ColorGroup: ... + def dark(self) -> PySide2.QtGui.QBrush: ... + def foreground(self) -> PySide2.QtGui.QBrush: ... + def highlight(self) -> PySide2.QtGui.QBrush: ... + def highlightedText(self) -> PySide2.QtGui.QBrush: ... + def isBrushSet(self, cg:PySide2.QtGui.QPalette.ColorGroup, cr:PySide2.QtGui.QPalette.ColorRole) -> bool: ... + def isCopyOf(self, p:PySide2.QtGui.QPalette) -> bool: ... + def isEqual(self, cr1:PySide2.QtGui.QPalette.ColorGroup, cr2:PySide2.QtGui.QPalette.ColorGroup) -> bool: ... + def light(self) -> PySide2.QtGui.QBrush: ... + def link(self) -> PySide2.QtGui.QBrush: ... + def linkVisited(self) -> PySide2.QtGui.QBrush: ... + def mid(self) -> PySide2.QtGui.QBrush: ... + def midlight(self) -> PySide2.QtGui.QBrush: ... + def placeholderText(self) -> PySide2.QtGui.QBrush: ... + @typing.overload + def resolve(self) -> int: ... + @typing.overload + def resolve(self, arg__1:PySide2.QtGui.QPalette) -> PySide2.QtGui.QPalette: ... + @typing.overload + def resolve(self, mask:int) -> None: ... + @typing.overload + def setBrush(self, cg:PySide2.QtGui.QPalette.ColorGroup, cr:PySide2.QtGui.QPalette.ColorRole, brush:PySide2.QtGui.QBrush) -> None: ... + @typing.overload + def setBrush(self, cr:PySide2.QtGui.QPalette.ColorRole, brush:PySide2.QtGui.QBrush) -> None: ... + @typing.overload + def setColor(self, cg:PySide2.QtGui.QPalette.ColorGroup, cr:PySide2.QtGui.QPalette.ColorRole, color:PySide2.QtGui.QColor) -> None: ... + @typing.overload + def setColor(self, cr:PySide2.QtGui.QPalette.ColorRole, color:PySide2.QtGui.QColor) -> None: ... + def setColorGroup(self, cr:PySide2.QtGui.QPalette.ColorGroup, windowText:PySide2.QtGui.QBrush, button:PySide2.QtGui.QBrush, light:PySide2.QtGui.QBrush, dark:PySide2.QtGui.QBrush, mid:PySide2.QtGui.QBrush, text:PySide2.QtGui.QBrush, bright_text:PySide2.QtGui.QBrush, base:PySide2.QtGui.QBrush, window:PySide2.QtGui.QBrush) -> None: ... + def setCurrentColorGroup(self, cg:PySide2.QtGui.QPalette.ColorGroup) -> None: ... + def shadow(self) -> PySide2.QtGui.QBrush: ... + def swap(self, other:PySide2.QtGui.QPalette) -> None: ... + def text(self) -> PySide2.QtGui.QBrush: ... + def toolTipBase(self) -> PySide2.QtGui.QBrush: ... + def toolTipText(self) -> PySide2.QtGui.QBrush: ... + def window(self) -> PySide2.QtGui.QBrush: ... + def windowText(self) -> PySide2.QtGui.QBrush: ... + + +class QPdfWriter(PySide2.QtCore.QObject, PySide2.QtGui.QPagedPaintDevice): + + @typing.overload + def __init__(self, device:PySide2.QtCore.QIODevice) -> None: ... + @typing.overload + def __init__(self, filename:str) -> None: ... + + def addFileAttachment(self, fileName:str, data:PySide2.QtCore.QByteArray, mimeType:str=...) -> None: ... + def creator(self) -> str: ... + def documentXmpMetadata(self) -> PySide2.QtCore.QByteArray: ... + def metric(self, id:PySide2.QtGui.QPaintDevice.PaintDeviceMetric) -> int: ... + def newPage(self) -> bool: ... + def paintEngine(self) -> PySide2.QtGui.QPaintEngine: ... + def pdfVersion(self) -> PySide2.QtGui.QPagedPaintDevice.PdfVersion: ... + def resolution(self) -> int: ... + def setCreator(self, creator:str) -> None: ... + def setDocumentXmpMetadata(self, xmpMetadata:PySide2.QtCore.QByteArray) -> None: ... + def setMargins(self, m:PySide2.QtGui.QPagedPaintDevice.Margins) -> None: ... + def setPageSize(self, size:PySide2.QtGui.QPagedPaintDevice.PageSize) -> None: ... + def setPageSizeMM(self, size:PySide2.QtCore.QSizeF) -> None: ... + def setPdfVersion(self, version:PySide2.QtGui.QPagedPaintDevice.PdfVersion) -> None: ... + def setResolution(self, resolution:int) -> None: ... + def setTitle(self, title:str) -> None: ... + def title(self) -> str: ... + + +class QPen(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtCore.Qt.PenStyle) -> None: ... + @typing.overload + def __init__(self, brush:PySide2.QtGui.QBrush, width:float, s:PySide2.QtCore.Qt.PenStyle=..., c:PySide2.QtCore.Qt.PenCapStyle=..., j:PySide2.QtCore.Qt.PenJoinStyle=...) -> None: ... + @typing.overload + def __init__(self, color:PySide2.QtGui.QColor) -> None: ... + @typing.overload + def __init__(self, pen:PySide2.QtGui.QPen) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __lshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __rshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def brush(self) -> PySide2.QtGui.QBrush: ... + def capStyle(self) -> PySide2.QtCore.Qt.PenCapStyle: ... + def color(self) -> PySide2.QtGui.QColor: ... + def dashOffset(self) -> float: ... + def dashPattern(self) -> typing.List: ... + def isCosmetic(self) -> bool: ... + def isSolid(self) -> bool: ... + def joinStyle(self) -> PySide2.QtCore.Qt.PenJoinStyle: ... + def miterLimit(self) -> float: ... + def setBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setCapStyle(self, pcs:PySide2.QtCore.Qt.PenCapStyle) -> None: ... + def setColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setCosmetic(self, cosmetic:bool) -> None: ... + def setDashOffset(self, doffset:float) -> None: ... + def setDashPattern(self, pattern:typing.List) -> None: ... + def setJoinStyle(self, pcs:PySide2.QtCore.Qt.PenJoinStyle) -> None: ... + def setMiterLimit(self, limit:float) -> None: ... + def setStyle(self, arg__1:PySide2.QtCore.Qt.PenStyle) -> None: ... + def setWidth(self, width:int) -> None: ... + def setWidthF(self, width:float) -> None: ... + def style(self) -> PySide2.QtCore.Qt.PenStyle: ... + def swap(self, other:PySide2.QtGui.QPen) -> None: ... + def width(self) -> int: ... + def widthF(self) -> float: ... + + +class QPicture(PySide2.QtGui.QPaintDevice): + + @typing.overload + def __init__(self, arg__1:PySide2.QtGui.QPicture) -> None: ... + @typing.overload + def __init__(self, formatVersion:int=...) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __lshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __rshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def boundingRect(self) -> PySide2.QtCore.QRect: ... + def data(self) -> bytes: ... + def devType(self) -> int: ... + @staticmethod + def inputFormatList() -> typing.List: ... + @staticmethod + def inputFormats() -> typing.List: ... + def isNull(self) -> bool: ... + @typing.overload + def load(self, dev:PySide2.QtCore.QIODevice, format:typing.Optional[bytes]=...) -> bool: ... + @typing.overload + def load(self, fileName:str, format:typing.Optional[bytes]=...) -> bool: ... + def metric(self, m:PySide2.QtGui.QPaintDevice.PaintDeviceMetric) -> int: ... + @staticmethod + def outputFormatList() -> typing.List: ... + @staticmethod + def outputFormats() -> typing.List: ... + def paintEngine(self) -> PySide2.QtGui.QPaintEngine: ... + @staticmethod + def pictureFormat(fileName:str) -> bytes: ... + def play(self, p:PySide2.QtGui.QPainter) -> bool: ... + @typing.overload + def save(self, dev:PySide2.QtCore.QIODevice, format:typing.Optional[bytes]=...) -> bool: ... + @typing.overload + def save(self, fileName:str, format:typing.Optional[bytes]=...) -> bool: ... + def setBoundingRect(self, r:PySide2.QtCore.QRect) -> None: ... + def setData(self, data:bytes, size:int) -> None: ... + def size(self) -> int: ... + def swap(self, other:PySide2.QtGui.QPicture) -> None: ... + + +class QPictureIO(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, fileName:str, format:bytes) -> None: ... + @typing.overload + def __init__(self, ioDevice:PySide2.QtCore.QIODevice, format:bytes) -> None: ... + + def description(self) -> str: ... + def fileName(self) -> str: ... + def format(self) -> bytes: ... + def gamma(self) -> float: ... + @staticmethod + def inputFormats() -> typing.List: ... + def ioDevice(self) -> PySide2.QtCore.QIODevice: ... + @staticmethod + def outputFormats() -> typing.List: ... + def parameters(self) -> bytes: ... + def picture(self) -> PySide2.QtGui.QPicture: ... + @typing.overload + @staticmethod + def pictureFormat(arg__1:PySide2.QtCore.QIODevice) -> PySide2.QtCore.QByteArray: ... + @typing.overload + @staticmethod + def pictureFormat(fileName:str) -> PySide2.QtCore.QByteArray: ... + def quality(self) -> int: ... + def read(self) -> bool: ... + def setDescription(self, arg__1:str) -> None: ... + def setFileName(self, arg__1:str) -> None: ... + def setFormat(self, arg__1:bytes) -> None: ... + def setGamma(self, arg__1:float) -> None: ... + def setIODevice(self, arg__1:PySide2.QtCore.QIODevice) -> None: ... + def setParameters(self, arg__1:bytes) -> None: ... + def setPicture(self, arg__1:PySide2.QtGui.QPicture) -> None: ... + def setQuality(self, arg__1:int) -> None: ... + def setStatus(self, arg__1:int) -> None: ... + def status(self) -> int: ... + def write(self) -> bool: ... + + +class QPixelFormat(Shiboken.Object): + AtBeginning : QPixelFormat = ... # 0x0 + LittleEndian : QPixelFormat = ... # 0x0 + NotPremultiplied : QPixelFormat = ... # 0x0 + RGB : QPixelFormat = ... # 0x0 + UnsignedInteger : QPixelFormat = ... # 0x0 + UsesAlpha : QPixelFormat = ... # 0x0 + YUV444 : QPixelFormat = ... # 0x0 + AtEnd : QPixelFormat = ... # 0x1 + BGR : QPixelFormat = ... # 0x1 + BigEndian : QPixelFormat = ... # 0x1 + IgnoresAlpha : QPixelFormat = ... # 0x1 + Premultiplied : QPixelFormat = ... # 0x1 + UnsignedShort : QPixelFormat = ... # 0x1 + YUV422 : QPixelFormat = ... # 0x1 + CurrentSystemEndian : QPixelFormat = ... # 0x2 + Indexed : QPixelFormat = ... # 0x2 + UnsignedByte : QPixelFormat = ... # 0x2 + YUV411 : QPixelFormat = ... # 0x2 + FloatingPoint : QPixelFormat = ... # 0x3 + Grayscale : QPixelFormat = ... # 0x3 + YUV420P : QPixelFormat = ... # 0x3 + CMYK : QPixelFormat = ... # 0x4 + YUV420SP : QPixelFormat = ... # 0x4 + HSL : QPixelFormat = ... # 0x5 + YV12 : QPixelFormat = ... # 0x5 + HSV : QPixelFormat = ... # 0x6 + UYVY : QPixelFormat = ... # 0x6 + YUV : QPixelFormat = ... # 0x7 + YUYV : QPixelFormat = ... # 0x7 + Alpha : QPixelFormat = ... # 0x8 + NV12 : QPixelFormat = ... # 0x8 + NV21 : QPixelFormat = ... # 0x9 + IMC1 : QPixelFormat = ... # 0xa + IMC2 : QPixelFormat = ... # 0xb + IMC3 : QPixelFormat = ... # 0xc + IMC4 : QPixelFormat = ... # 0xd + Y8 : QPixelFormat = ... # 0xe + Y16 : QPixelFormat = ... # 0xf + + class AlphaPosition(object): + AtBeginning : QPixelFormat.AlphaPosition = ... # 0x0 + AtEnd : QPixelFormat.AlphaPosition = ... # 0x1 + + class AlphaPremultiplied(object): + NotPremultiplied : QPixelFormat.AlphaPremultiplied = ... # 0x0 + Premultiplied : QPixelFormat.AlphaPremultiplied = ... # 0x1 + + class AlphaUsage(object): + UsesAlpha : QPixelFormat.AlphaUsage = ... # 0x0 + IgnoresAlpha : QPixelFormat.AlphaUsage = ... # 0x1 + + class ByteOrder(object): + LittleEndian : QPixelFormat.ByteOrder = ... # 0x0 + BigEndian : QPixelFormat.ByteOrder = ... # 0x1 + CurrentSystemEndian : QPixelFormat.ByteOrder = ... # 0x2 + + class ColorModel(object): + RGB : QPixelFormat.ColorModel = ... # 0x0 + BGR : QPixelFormat.ColorModel = ... # 0x1 + Indexed : QPixelFormat.ColorModel = ... # 0x2 + Grayscale : QPixelFormat.ColorModel = ... # 0x3 + CMYK : QPixelFormat.ColorModel = ... # 0x4 + HSL : QPixelFormat.ColorModel = ... # 0x5 + HSV : QPixelFormat.ColorModel = ... # 0x6 + YUV : QPixelFormat.ColorModel = ... # 0x7 + Alpha : QPixelFormat.ColorModel = ... # 0x8 + + class TypeInterpretation(object): + UnsignedInteger : QPixelFormat.TypeInterpretation = ... # 0x0 + UnsignedShort : QPixelFormat.TypeInterpretation = ... # 0x1 + UnsignedByte : QPixelFormat.TypeInterpretation = ... # 0x2 + FloatingPoint : QPixelFormat.TypeInterpretation = ... # 0x3 + + class YUVLayout(object): + YUV444 : QPixelFormat.YUVLayout = ... # 0x0 + YUV422 : QPixelFormat.YUVLayout = ... # 0x1 + YUV411 : QPixelFormat.YUVLayout = ... # 0x2 + YUV420P : QPixelFormat.YUVLayout = ... # 0x3 + YUV420SP : QPixelFormat.YUVLayout = ... # 0x4 + YV12 : QPixelFormat.YUVLayout = ... # 0x5 + UYVY : QPixelFormat.YUVLayout = ... # 0x6 + YUYV : QPixelFormat.YUVLayout = ... # 0x7 + NV12 : QPixelFormat.YUVLayout = ... # 0x8 + NV21 : QPixelFormat.YUVLayout = ... # 0x9 + IMC1 : QPixelFormat.YUVLayout = ... # 0xa + IMC2 : QPixelFormat.YUVLayout = ... # 0xb + IMC3 : QPixelFormat.YUVLayout = ... # 0xc + IMC4 : QPixelFormat.YUVLayout = ... # 0xd + Y8 : QPixelFormat.YUVLayout = ... # 0xe + Y16 : QPixelFormat.YUVLayout = ... # 0xf + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QPixelFormat:PySide2.QtGui.QPixelFormat) -> None: ... + @typing.overload + def __init__(self, colorModel:PySide2.QtGui.QPixelFormat.ColorModel, firstSize:int, secondSize:int, thirdSize:int, fourthSize:int, fifthSize:int, alphaSize:int, alphaUsage:PySide2.QtGui.QPixelFormat.AlphaUsage, alphaPosition:PySide2.QtGui.QPixelFormat.AlphaPosition, premultiplied:PySide2.QtGui.QPixelFormat.AlphaPremultiplied, typeInterpretation:PySide2.QtGui.QPixelFormat.TypeInterpretation, byteOrder:PySide2.QtGui.QPixelFormat.ByteOrder=..., subEnum:int=...) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def alphaPosition(self) -> PySide2.QtGui.QPixelFormat.AlphaPosition: ... + def alphaSize(self) -> int: ... + def alphaUsage(self) -> PySide2.QtGui.QPixelFormat.AlphaUsage: ... + def bitsPerPixel(self) -> int: ... + def blackSize(self) -> int: ... + def blueSize(self) -> int: ... + def brightnessSize(self) -> int: ... + def byteOrder(self) -> PySide2.QtGui.QPixelFormat.ByteOrder: ... + def channelCount(self) -> int: ... + def colorModel(self) -> PySide2.QtGui.QPixelFormat.ColorModel: ... + def cyanSize(self) -> int: ... + def greenSize(self) -> int: ... + def hueSize(self) -> int: ... + def lightnessSize(self) -> int: ... + def magentaSize(self) -> int: ... + def premultiplied(self) -> PySide2.QtGui.QPixelFormat.AlphaPremultiplied: ... + def redSize(self) -> int: ... + def saturationSize(self) -> int: ... + def subEnum(self) -> int: ... + def typeInterpretation(self) -> PySide2.QtGui.QPixelFormat.TypeInterpretation: ... + def yellowSize(self) -> int: ... + def yuvLayout(self) -> PySide2.QtGui.QPixelFormat.YUVLayout: ... + + +class QPixmap(PySide2.QtGui.QPaintDevice): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtCore.QSize) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtGui.QPixmap) -> None: ... + @typing.overload + def __init__(self, fileName:str, format:typing.Optional[bytes]=..., flags:PySide2.QtCore.Qt.ImageConversionFlags=...) -> None: ... + @typing.overload + def __init__(self, image:PySide2.QtGui.QImage) -> None: ... + @typing.overload + def __init__(self, w:int, h:int) -> None: ... + @typing.overload + def __init__(self, xpm:typing.Sequence) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __lshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __rshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def cacheKey(self) -> int: ... + def convertFromImage(self, img:PySide2.QtGui.QImage, flags:PySide2.QtCore.Qt.ImageConversionFlags=...) -> bool: ... + @typing.overload + def copy(self, rect:PySide2.QtCore.QRect=...) -> PySide2.QtGui.QPixmap: ... + @typing.overload + def copy(self, x:int, y:int, width:int, height:int) -> PySide2.QtGui.QPixmap: ... + def createHeuristicMask(self, clipTight:bool=...) -> PySide2.QtGui.QBitmap: ... + def createMaskFromColor(self, maskColor:PySide2.QtGui.QColor, mode:PySide2.QtCore.Qt.MaskMode=...) -> PySide2.QtGui.QBitmap: ... + @staticmethod + def defaultDepth() -> int: ... + def depth(self) -> int: ... + def devType(self) -> int: ... + def devicePixelRatio(self) -> float: ... + @typing.overload + def fill(self, device:PySide2.QtGui.QPaintDevice, ofs:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + def fill(self, device:PySide2.QtGui.QPaintDevice, xofs:int, yofs:int) -> None: ... + @typing.overload + def fill(self, fillColor:PySide2.QtGui.QColor=...) -> None: ... + @staticmethod + def fromImage(image:PySide2.QtGui.QImage, flags:PySide2.QtCore.Qt.ImageConversionFlags=...) -> PySide2.QtGui.QPixmap: ... + @staticmethod + def fromImageInPlace(image:PySide2.QtGui.QImage, flags:PySide2.QtCore.Qt.ImageConversionFlags=...) -> PySide2.QtGui.QPixmap: ... + @staticmethod + def fromImageReader(imageReader:PySide2.QtGui.QImageReader, flags:PySide2.QtCore.Qt.ImageConversionFlags=...) -> PySide2.QtGui.QPixmap: ... + @typing.overload + @staticmethod + def grabWidget(widget:PySide2.QtCore.QObject, rect:PySide2.QtCore.QRect) -> PySide2.QtGui.QPixmap: ... + @typing.overload + @staticmethod + def grabWidget(widget:PySide2.QtCore.QObject, x:int=..., y:int=..., w:int=..., h:int=...) -> PySide2.QtGui.QPixmap: ... + @staticmethod + def grabWindow(arg__1:int, x:int=..., y:int=..., w:int=..., h:int=...) -> PySide2.QtGui.QPixmap: ... + def hasAlpha(self) -> bool: ... + def hasAlphaChannel(self) -> bool: ... + def height(self) -> int: ... + def isNull(self) -> bool: ... + def isQBitmap(self) -> bool: ... + def load(self, fileName:str, format:typing.Optional[bytes]=..., flags:PySide2.QtCore.Qt.ImageConversionFlags=...) -> bool: ... + @typing.overload + def loadFromData(self, buf:bytes, len:int, format:typing.Optional[bytes]=..., flags:PySide2.QtCore.Qt.ImageConversionFlags=...) -> bool: ... + @typing.overload + def loadFromData(self, data:PySide2.QtCore.QByteArray, format:typing.Optional[bytes]=..., flags:PySide2.QtCore.Qt.ImageConversionFlags=...) -> bool: ... + def mask(self) -> PySide2.QtGui.QBitmap: ... + def metric(self, arg__1:PySide2.QtGui.QPaintDevice.PaintDeviceMetric) -> int: ... + def paintEngine(self) -> PySide2.QtGui.QPaintEngine: ... + def rect(self) -> PySide2.QtCore.QRect: ... + @typing.overload + def save(self, device:PySide2.QtCore.QIODevice, format:typing.Optional[bytes]=..., quality:int=...) -> bool: ... + @typing.overload + def save(self, fileName:str, format:typing.Optional[bytes]=..., quality:int=...) -> bool: ... + @typing.overload + def scaled(self, s:PySide2.QtCore.QSize, aspectMode:PySide2.QtCore.Qt.AspectRatioMode=..., mode:PySide2.QtCore.Qt.TransformationMode=...) -> PySide2.QtGui.QPixmap: ... + @typing.overload + def scaled(self, w:int, h:int, aspectMode:PySide2.QtCore.Qt.AspectRatioMode=..., mode:PySide2.QtCore.Qt.TransformationMode=...) -> PySide2.QtGui.QPixmap: ... + def scaledToHeight(self, h:int, mode:PySide2.QtCore.Qt.TransformationMode=...) -> PySide2.QtGui.QPixmap: ... + def scaledToWidth(self, w:int, mode:PySide2.QtCore.Qt.TransformationMode=...) -> PySide2.QtGui.QPixmap: ... + @typing.overload + def scroll(self, dx:int, dy:int, rect:PySide2.QtCore.QRect, exposed:typing.Optional[PySide2.QtGui.QRegion]=...) -> None: ... + @typing.overload + def scroll(self, dx:int, dy:int, x:int, y:int, width:int, height:int, exposed:typing.Optional[PySide2.QtGui.QRegion]=...) -> None: ... + def setDevicePixelRatio(self, scaleFactor:float) -> None: ... + def setMask(self, arg__1:PySide2.QtGui.QBitmap) -> None: ... + def size(self) -> PySide2.QtCore.QSize: ... + def swap(self, other:PySide2.QtGui.QPixmap) -> None: ... + def toImage(self) -> PySide2.QtGui.QImage: ... + @typing.overload + def transformed(self, arg__1:PySide2.QtGui.QMatrix, mode:PySide2.QtCore.Qt.TransformationMode=...) -> PySide2.QtGui.QPixmap: ... + @typing.overload + def transformed(self, arg__1:PySide2.QtGui.QTransform, mode:PySide2.QtCore.Qt.TransformationMode=...) -> PySide2.QtGui.QPixmap: ... + @typing.overload + @staticmethod + def trueMatrix(m:PySide2.QtGui.QMatrix, w:int, h:int) -> PySide2.QtGui.QMatrix: ... + @typing.overload + @staticmethod + def trueMatrix(m:PySide2.QtGui.QTransform, w:int, h:int) -> PySide2.QtGui.QTransform: ... + def width(self) -> int: ... + + +class QPixmapCache(Shiboken.Object): + + class Key(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtGui.QPixmapCache.Key) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def isValid(self) -> bool: ... + def swap(self, other:PySide2.QtGui.QPixmapCache.Key) -> None: ... + + def __init__(self) -> None: ... + + @staticmethod + def cacheLimit() -> int: ... + @staticmethod + def clear() -> None: ... + @typing.overload + @staticmethod + def find(key:PySide2.QtGui.QPixmapCache.Key, pixmap:PySide2.QtGui.QPixmap) -> bool: ... + @typing.overload + @staticmethod + def find(key:str) -> PySide2.QtGui.QPixmap: ... + @typing.overload + @staticmethod + def find(key:str, pixmap:PySide2.QtGui.QPixmap) -> bool: ... + @typing.overload + def find(self, arg__1:PySide2.QtGui.QPixmapCache.Key) -> None: ... + @typing.overload + @staticmethod + def insert(key:str, pixmap:PySide2.QtGui.QPixmap) -> bool: ... + @typing.overload + @staticmethod + def insert(pixmap:PySide2.QtGui.QPixmap) -> PySide2.QtGui.QPixmapCache.Key: ... + @typing.overload + @staticmethod + def remove(key:PySide2.QtGui.QPixmapCache.Key) -> None: ... + @typing.overload + @staticmethod + def remove(key:str) -> None: ... + @staticmethod + def replace(key:PySide2.QtGui.QPixmapCache.Key, pixmap:PySide2.QtGui.QPixmap) -> bool: ... + @staticmethod + def setCacheLimit(arg__1:int) -> None: ... + + +class QPointingDeviceUniqueId(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QPointingDeviceUniqueId:PySide2.QtGui.QPointingDeviceUniqueId) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @staticmethod + def fromNumericId(id:int) -> PySide2.QtGui.QPointingDeviceUniqueId: ... + def isValid(self) -> bool: ... + def numericId(self) -> int: ... + + +class QPolygon(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtGui.QPolygon) -> None: ... + @typing.overload + def __init__(self, r:PySide2.QtCore.QRect, closed:bool=...) -> None: ... + @typing.overload + def __init__(self, size:int) -> None: ... + @typing.overload + def __init__(self, v:typing.List) -> None: ... + + def __add__(self, l:typing.List) -> typing.List: ... + @staticmethod + def __copy__() -> None: ... + def __iadd__(self, t:PySide2.QtCore.QPoint) -> typing.List: ... + @typing.overload + def __lshift__(self, l:typing.List) -> typing.List: ... + @typing.overload + def __lshift__(self, stream:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __lshift__(self, t:PySide2.QtCore.QPoint) -> typing.List: ... + @typing.overload + def __mul__(self, m:PySide2.QtGui.QMatrix) -> PySide2.QtGui.QPolygon: ... + @typing.overload + def __mul__(self, m:PySide2.QtGui.QTransform) -> PySide2.QtGui.QPolygon: ... + def __reduce__(self) -> object: ... + def __rshift__(self, stream:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def append(self, l:typing.List) -> None: ... + @typing.overload + def append(self, t:PySide2.QtCore.QPoint) -> None: ... + def at(self, i:int) -> PySide2.QtCore.QPoint: ... + def back(self) -> PySide2.QtCore.QPoint: ... + def boundingRect(self) -> PySide2.QtCore.QRect: ... + def capacity(self) -> int: ... + def clear(self) -> None: ... + def constData(self) -> PySide2.QtCore.QPoint: ... + def constFirst(self) -> PySide2.QtCore.QPoint: ... + def constLast(self) -> PySide2.QtCore.QPoint: ... + def contains(self, t:PySide2.QtCore.QPoint) -> bool: ... + def containsPoint(self, pt:PySide2.QtCore.QPoint, fillRule:PySide2.QtCore.Qt.FillRule) -> bool: ... + @typing.overload + def count(self) -> int: ... + @typing.overload + def count(self, t:PySide2.QtCore.QPoint) -> int: ... + def data(self) -> PySide2.QtCore.QPoint: ... + def empty(self) -> bool: ... + def endsWith(self, t:PySide2.QtCore.QPoint) -> bool: ... + def fill(self, t:PySide2.QtCore.QPoint, size:int=...) -> typing.List: ... + def first(self) -> PySide2.QtCore.QPoint: ... + @staticmethod + def fromList(list:typing.Sequence) -> typing.List: ... + def front(self) -> PySide2.QtCore.QPoint: ... + def indexOf(self, t:PySide2.QtCore.QPoint, from_:int=...) -> int: ... + @typing.overload + def insert(self, i:int, n:int, t:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + def insert(self, i:int, t:PySide2.QtCore.QPoint) -> None: ... + def intersected(self, r:PySide2.QtGui.QPolygon) -> PySide2.QtGui.QPolygon: ... + def intersects(self, r:PySide2.QtGui.QPolygon) -> bool: ... + def isEmpty(self) -> bool: ... + def isSharedWith(self, other:typing.List) -> bool: ... + def last(self) -> PySide2.QtCore.QPoint: ... + def lastIndexOf(self, t:PySide2.QtCore.QPoint, from_:int=...) -> int: ... + def length(self) -> int: ... + def mid(self, pos:int, len:int=...) -> typing.List: ... + def move(self, from_:int, to:int) -> None: ... + def pop_back(self) -> None: ... + def pop_front(self) -> None: ... + def prepend(self, t:PySide2.QtCore.QPoint) -> None: ... + def push_back(self, t:PySide2.QtCore.QPoint) -> None: ... + def push_front(self, t:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + def remove(self, i:int) -> None: ... + @typing.overload + def remove(self, i:int, n:int) -> None: ... + def removeAll(self, t:PySide2.QtCore.QPoint) -> int: ... + def removeAt(self, i:int) -> None: ... + def removeFirst(self) -> None: ... + def removeLast(self) -> None: ... + def removeOne(self, t:PySide2.QtCore.QPoint) -> bool: ... + def replace(self, i:int, t:PySide2.QtCore.QPoint) -> None: ... + def reserve(self, size:int) -> None: ... + def resize(self, size:int) -> None: ... + def setSharable(self, sharable:bool) -> None: ... + def shrink_to_fit(self) -> None: ... + def size(self) -> int: ... + def squeeze(self) -> None: ... + def startsWith(self, t:PySide2.QtCore.QPoint) -> bool: ... + def subtracted(self, r:PySide2.QtGui.QPolygon) -> PySide2.QtGui.QPolygon: ... + def swap(self, other:PySide2.QtGui.QPolygon) -> None: ... + def swapItemsAt(self, i:int, j:int) -> None: ... + def takeAt(self, i:int) -> PySide2.QtCore.QPoint: ... + def takeFirst(self) -> PySide2.QtCore.QPoint: ... + def takeLast(self) -> PySide2.QtCore.QPoint: ... + def toList(self) -> typing.List: ... + @typing.overload + def translate(self, dx:int, dy:int) -> None: ... + @typing.overload + def translate(self, offset:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + def translated(self, dx:int, dy:int) -> PySide2.QtGui.QPolygon: ... + @typing.overload + def translated(self, offset:PySide2.QtCore.QPoint) -> PySide2.QtGui.QPolygon: ... + def united(self, r:PySide2.QtGui.QPolygon) -> PySide2.QtGui.QPolygon: ... + @typing.overload + def value(self, i:int) -> PySide2.QtCore.QPoint: ... + @typing.overload + def value(self, i:int, defaultValue:PySide2.QtCore.QPoint) -> PySide2.QtCore.QPoint: ... + + +class QPolygonF(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, a:PySide2.QtGui.QPolygon) -> None: ... + @typing.overload + def __init__(self, a:PySide2.QtGui.QPolygonF) -> None: ... + @typing.overload + def __init__(self, r:PySide2.QtCore.QRectF) -> None: ... + @typing.overload + def __init__(self, size:int) -> None: ... + @typing.overload + def __init__(self, v:typing.List) -> None: ... + + def __add__(self, l:typing.List) -> typing.List: ... + @staticmethod + def __copy__() -> None: ... + def __iadd__(self, t:PySide2.QtCore.QPointF) -> typing.List: ... + def __lshift__(self, stream:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __mul__(self, m:PySide2.QtGui.QMatrix) -> PySide2.QtGui.QPolygonF: ... + @typing.overload + def __mul__(self, m:PySide2.QtGui.QTransform) -> PySide2.QtGui.QPolygonF: ... + def __rshift__(self, stream:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def append(self, l:typing.List) -> None: ... + @typing.overload + def append(self, t:PySide2.QtCore.QPointF) -> None: ... + def at(self, i:int) -> PySide2.QtCore.QPointF: ... + def back(self) -> PySide2.QtCore.QPointF: ... + def boundingRect(self) -> PySide2.QtCore.QRectF: ... + def capacity(self) -> int: ... + def clear(self) -> None: ... + def constData(self) -> PySide2.QtCore.QPointF: ... + def constFirst(self) -> PySide2.QtCore.QPointF: ... + def constLast(self) -> PySide2.QtCore.QPointF: ... + def contains(self, t:PySide2.QtCore.QPointF) -> bool: ... + def containsPoint(self, pt:PySide2.QtCore.QPointF, fillRule:PySide2.QtCore.Qt.FillRule) -> bool: ... + @typing.overload + def count(self) -> int: ... + @typing.overload + def count(self, t:PySide2.QtCore.QPointF) -> int: ... + def data(self) -> PySide2.QtCore.QPointF: ... + def empty(self) -> bool: ... + def endsWith(self, t:PySide2.QtCore.QPointF) -> bool: ... + def fill(self, t:PySide2.QtCore.QPointF, size:int=...) -> typing.List: ... + def first(self) -> PySide2.QtCore.QPointF: ... + @staticmethod + def fromList(list:typing.Sequence) -> typing.List: ... + def front(self) -> PySide2.QtCore.QPointF: ... + def indexOf(self, t:PySide2.QtCore.QPointF, from_:int=...) -> int: ... + @typing.overload + def insert(self, i:int, n:int, t:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def insert(self, i:int, t:PySide2.QtCore.QPointF) -> None: ... + def intersected(self, r:PySide2.QtGui.QPolygonF) -> PySide2.QtGui.QPolygonF: ... + def intersects(self, r:PySide2.QtGui.QPolygonF) -> bool: ... + def isClosed(self) -> bool: ... + def isEmpty(self) -> bool: ... + def isSharedWith(self, other:typing.List) -> bool: ... + def last(self) -> PySide2.QtCore.QPointF: ... + def lastIndexOf(self, t:PySide2.QtCore.QPointF, from_:int=...) -> int: ... + def length(self) -> int: ... + def mid(self, pos:int, len:int=...) -> typing.List: ... + def move(self, from_:int, to:int) -> None: ... + def pop_back(self) -> None: ... + def pop_front(self) -> None: ... + def prepend(self, t:PySide2.QtCore.QPointF) -> None: ... + def push_back(self, t:PySide2.QtCore.QPointF) -> None: ... + def push_front(self, t:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def remove(self, i:int) -> None: ... + @typing.overload + def remove(self, i:int, n:int) -> None: ... + def removeAll(self, t:PySide2.QtCore.QPointF) -> int: ... + def removeAt(self, i:int) -> None: ... + def removeFirst(self) -> None: ... + def removeLast(self) -> None: ... + def removeOne(self, t:PySide2.QtCore.QPointF) -> bool: ... + def replace(self, i:int, t:PySide2.QtCore.QPointF) -> None: ... + def reserve(self, size:int) -> None: ... + def resize(self, size:int) -> None: ... + def setSharable(self, sharable:bool) -> None: ... + def shrink_to_fit(self) -> None: ... + def size(self) -> int: ... + def squeeze(self) -> None: ... + def startsWith(self, t:PySide2.QtCore.QPointF) -> bool: ... + def subtracted(self, r:PySide2.QtGui.QPolygonF) -> PySide2.QtGui.QPolygonF: ... + def swap(self, other:PySide2.QtGui.QPolygonF) -> None: ... + def swapItemsAt(self, i:int, j:int) -> None: ... + def takeAt(self, i:int) -> PySide2.QtCore.QPointF: ... + def takeFirst(self) -> PySide2.QtCore.QPointF: ... + def takeLast(self) -> PySide2.QtCore.QPointF: ... + def toList(self) -> typing.List: ... + def toPolygon(self) -> PySide2.QtGui.QPolygon: ... + @typing.overload + def translate(self, dx:float, dy:float) -> None: ... + @typing.overload + def translate(self, offset:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def translated(self, dx:float, dy:float) -> PySide2.QtGui.QPolygonF: ... + @typing.overload + def translated(self, offset:PySide2.QtCore.QPointF) -> PySide2.QtGui.QPolygonF: ... + def united(self, r:PySide2.QtGui.QPolygonF) -> PySide2.QtGui.QPolygonF: ... + @typing.overload + def value(self, i:int) -> PySide2.QtCore.QPointF: ... + @typing.overload + def value(self, i:int, defaultValue:PySide2.QtCore.QPointF) -> PySide2.QtCore.QPointF: ... + + +class QPyTextObject(PySide2.QtCore.QObject, PySide2.QtGui.QTextObjectInterface): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def drawObject(self, painter:PySide2.QtGui.QPainter, rect:PySide2.QtCore.QRectF, doc:PySide2.QtGui.QTextDocument, posInDocument:int, format:PySide2.QtGui.QTextFormat) -> None: ... + def intrinsicSize(self, doc:PySide2.QtGui.QTextDocument, posInDocument:int, format:PySide2.QtGui.QTextFormat) -> PySide2.QtCore.QSizeF: ... + + +class QQuaternion(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, scalar:float, vector:PySide2.QtGui.QVector3D) -> None: ... + @typing.overload + def __init__(self, scalar:float, xpos:float, ypos:float, zpos:float) -> None: ... + @typing.overload + def __init__(self, vector:PySide2.QtGui.QVector4D) -> None: ... + + def __add__(self, q2:PySide2.QtGui.QQuaternion) -> PySide2.QtGui.QQuaternion: ... + @staticmethod + def __copy__() -> None: ... + def __iadd__(self, quaternion:PySide2.QtGui.QQuaternion) -> PySide2.QtGui.QQuaternion: ... + @typing.overload + def __imul__(self, factor:float) -> PySide2.QtGui.QQuaternion: ... + @typing.overload + def __imul__(self, quaternion:PySide2.QtGui.QQuaternion) -> PySide2.QtGui.QQuaternion: ... + def __isub__(self, quaternion:PySide2.QtGui.QQuaternion) -> PySide2.QtGui.QQuaternion: ... + def __lshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __mul__(self, factor:float) -> PySide2.QtGui.QQuaternion: ... + @typing.overload + def __mul__(self, q2:PySide2.QtGui.QQuaternion) -> PySide2.QtGui.QQuaternion: ... + def __neg__(self) -> PySide2.QtGui.QQuaternion: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + def __rshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __sub__(self, q2:PySide2.QtGui.QQuaternion) -> PySide2.QtGui.QQuaternion: ... + def conjugate(self) -> PySide2.QtGui.QQuaternion: ... + def conjugated(self) -> PySide2.QtGui.QQuaternion: ... + @staticmethod + def dotProduct(q1:PySide2.QtGui.QQuaternion, q2:PySide2.QtGui.QQuaternion) -> float: ... + @staticmethod + def fromAxes(xAxis:PySide2.QtGui.QVector3D, yAxis:PySide2.QtGui.QVector3D, zAxis:PySide2.QtGui.QVector3D) -> PySide2.QtGui.QQuaternion: ... + @typing.overload + @staticmethod + def fromAxisAndAngle(axis:PySide2.QtGui.QVector3D, angle:float) -> PySide2.QtGui.QQuaternion: ... + @typing.overload + @staticmethod + def fromAxisAndAngle(x:float, y:float, z:float, angle:float) -> PySide2.QtGui.QQuaternion: ... + @staticmethod + def fromDirection(direction:PySide2.QtGui.QVector3D, up:PySide2.QtGui.QVector3D) -> PySide2.QtGui.QQuaternion: ... + @typing.overload + @staticmethod + def fromEulerAngles(eulerAngles:PySide2.QtGui.QVector3D) -> PySide2.QtGui.QQuaternion: ... + @typing.overload + @staticmethod + def fromEulerAngles(pitch:float, yaw:float, roll:float) -> PySide2.QtGui.QQuaternion: ... + @staticmethod + def fromRotationMatrix(rot3x3:PySide2.QtGui.QMatrix3x3) -> PySide2.QtGui.QQuaternion: ... + def getAxes(self, xAxis:PySide2.QtGui.QVector3D, yAxis:PySide2.QtGui.QVector3D, zAxis:PySide2.QtGui.QVector3D) -> None: ... + def inverted(self) -> PySide2.QtGui.QQuaternion: ... + def isIdentity(self) -> bool: ... + def isNull(self) -> bool: ... + def length(self) -> float: ... + def lengthSquared(self) -> float: ... + @staticmethod + def nlerp(q1:PySide2.QtGui.QQuaternion, q2:PySide2.QtGui.QQuaternion, t:float) -> PySide2.QtGui.QQuaternion: ... + def normalize(self) -> None: ... + def normalized(self) -> PySide2.QtGui.QQuaternion: ... + def rotatedVector(self, vector:PySide2.QtGui.QVector3D) -> PySide2.QtGui.QVector3D: ... + @staticmethod + def rotationTo(from_:PySide2.QtGui.QVector3D, to:PySide2.QtGui.QVector3D) -> PySide2.QtGui.QQuaternion: ... + def scalar(self) -> float: ... + def setScalar(self, scalar:float) -> None: ... + @typing.overload + def setVector(self, vector:PySide2.QtGui.QVector3D) -> None: ... + @typing.overload + def setVector(self, x:float, y:float, z:float) -> None: ... + def setX(self, x:float) -> None: ... + def setY(self, y:float) -> None: ... + def setZ(self, z:float) -> None: ... + @staticmethod + def slerp(q1:PySide2.QtGui.QQuaternion, q2:PySide2.QtGui.QQuaternion, t:float) -> PySide2.QtGui.QQuaternion: ... + def toEulerAngles(self) -> PySide2.QtGui.QVector3D: ... + def toRotationMatrix(self) -> PySide2.QtGui.QMatrix3x3: ... + def toVector4D(self) -> PySide2.QtGui.QVector4D: ... + def vector(self) -> PySide2.QtGui.QVector3D: ... + def x(self) -> float: ... + def y(self) -> float: ... + def z(self) -> float: ... + + +class QRadialGradient(PySide2.QtGui.QGradient): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QRadialGradient:PySide2.QtGui.QRadialGradient) -> None: ... + @typing.overload + def __init__(self, center:PySide2.QtCore.QPointF, centerRadius:float, focalPoint:PySide2.QtCore.QPointF, focalRadius:float) -> None: ... + @typing.overload + def __init__(self, center:PySide2.QtCore.QPointF, radius:float) -> None: ... + @typing.overload + def __init__(self, center:PySide2.QtCore.QPointF, radius:float, focalPoint:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def __init__(self, cx:float, cy:float, centerRadius:float, fx:float, fy:float, focalRadius:float) -> None: ... + @typing.overload + def __init__(self, cx:float, cy:float, radius:float) -> None: ... + @typing.overload + def __init__(self, cx:float, cy:float, radius:float, fx:float, fy:float) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def center(self) -> PySide2.QtCore.QPointF: ... + def centerRadius(self) -> float: ... + def focalPoint(self) -> PySide2.QtCore.QPointF: ... + def focalRadius(self) -> float: ... + def radius(self) -> float: ... + @typing.overload + def setCenter(self, center:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def setCenter(self, x:float, y:float) -> None: ... + def setCenterRadius(self, radius:float) -> None: ... + @typing.overload + def setFocalPoint(self, focalPoint:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def setFocalPoint(self, x:float, y:float) -> None: ... + def setFocalRadius(self, radius:float) -> None: ... + def setRadius(self, radius:float) -> None: ... + + +class QRasterWindow(PySide2.QtGui.QPaintDeviceWindow): + + def __init__(self, parent:typing.Optional[PySide2.QtGui.QWindow]=...) -> None: ... + + def metric(self, metric:PySide2.QtGui.QPaintDevice.PaintDeviceMetric) -> int: ... + def redirected(self, arg__1:PySide2.QtCore.QPoint) -> PySide2.QtGui.QPaintDevice: ... + + +class QRawFont(Shiboken.Object): + PixelAntialiasing : QRawFont = ... # 0x0 + SeparateAdvances : QRawFont = ... # 0x0 + KernedAdvances : QRawFont = ... # 0x1 + SubPixelAntialiasing : QRawFont = ... # 0x1 + UseDesignMetrics : QRawFont = ... # 0x2 + + class AntialiasingType(object): + PixelAntialiasing : QRawFont.AntialiasingType = ... # 0x0 + SubPixelAntialiasing : QRawFont.AntialiasingType = ... # 0x1 + + class LayoutFlag(object): + SeparateAdvances : QRawFont.LayoutFlag = ... # 0x0 + KernedAdvances : QRawFont.LayoutFlag = ... # 0x1 + UseDesignMetrics : QRawFont.LayoutFlag = ... # 0x2 + + class LayoutFlags(object): ... + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, fileName:str, pixelSize:float, hintingPreference:PySide2.QtGui.QFont.HintingPreference=...) -> None: ... + @typing.overload + def __init__(self, fontData:PySide2.QtCore.QByteArray, pixelSize:float, hintingPreference:PySide2.QtGui.QFont.HintingPreference=...) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtGui.QRawFont) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @typing.overload + def advancesForGlyphIndexes(self, glyphIndexes:typing.List) -> typing.List: ... + @typing.overload + def advancesForGlyphIndexes(self, glyphIndexes:typing.List, layoutFlags:PySide2.QtGui.QRawFont.LayoutFlags) -> typing.List: ... + def alphaMapForGlyph(self, glyphIndex:int, antialiasingType:PySide2.QtGui.QRawFont.AntialiasingType=..., transform:PySide2.QtGui.QTransform=...) -> PySide2.QtGui.QImage: ... + def ascent(self) -> float: ... + def averageCharWidth(self) -> float: ... + def boundingRect(self, glyphIndex:int) -> PySide2.QtCore.QRectF: ... + def capHeight(self) -> float: ... + def descent(self) -> float: ... + def familyName(self) -> str: ... + def fontTable(self, tagName:bytes) -> PySide2.QtCore.QByteArray: ... + @staticmethod + def fromFont(font:PySide2.QtGui.QFont, writingSystem:PySide2.QtGui.QFontDatabase.WritingSystem=...) -> PySide2.QtGui.QRawFont: ... + def glyphIndexesForString(self, text:str) -> typing.List: ... + def hintingPreference(self) -> PySide2.QtGui.QFont.HintingPreference: ... + def isValid(self) -> bool: ... + def leading(self) -> float: ... + def lineThickness(self) -> float: ... + def loadFromData(self, fontData:PySide2.QtCore.QByteArray, pixelSize:float, hintingPreference:PySide2.QtGui.QFont.HintingPreference) -> None: ... + def loadFromFile(self, fileName:str, pixelSize:float, hintingPreference:PySide2.QtGui.QFont.HintingPreference) -> None: ... + def maxCharWidth(self) -> float: ... + def pathForGlyph(self, glyphIndex:int) -> PySide2.QtGui.QPainterPath: ... + def pixelSize(self) -> float: ... + def setPixelSize(self, pixelSize:float) -> None: ... + def style(self) -> PySide2.QtGui.QFont.Style: ... + def styleName(self) -> str: ... + def supportedWritingSystems(self) -> typing.List: ... + @typing.overload + def supportsCharacter(self, character:str) -> bool: ... + @typing.overload + def supportsCharacter(self, ucs4:int) -> bool: ... + def swap(self, other:PySide2.QtGui.QRawFont) -> None: ... + def underlinePosition(self) -> float: ... + def unitsPerEm(self) -> float: ... + def weight(self) -> int: ... + def xHeight(self) -> float: ... + + +class QRegExpValidator(PySide2.QtGui.QValidator): + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, rx:PySide2.QtCore.QRegExp, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def regExp(self) -> PySide2.QtCore.QRegExp: ... + def setRegExp(self, rx:PySide2.QtCore.QRegExp) -> None: ... + def validate(self, input:str, pos:int) -> PySide2.QtGui.QValidator.State: ... + + +class QRegion(Shiboken.Object): + Rectangle : QRegion = ... # 0x0 + Ellipse : QRegion = ... # 0x1 + + class RegionType(object): + Rectangle : QRegion.RegionType = ... # 0x0 + Ellipse : QRegion.RegionType = ... # 0x1 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, bitmap:PySide2.QtGui.QBitmap) -> None: ... + @typing.overload + def __init__(self, pa:PySide2.QtGui.QPolygon, fillRule:PySide2.QtCore.Qt.FillRule=...) -> None: ... + @typing.overload + def __init__(self, r:PySide2.QtCore.QRect, t:PySide2.QtGui.QRegion.RegionType=...) -> None: ... + @typing.overload + def __init__(self, region:PySide2.QtGui.QRegion) -> None: ... + @typing.overload + def __init__(self, x:int, y:int, w:int, h:int, t:PySide2.QtGui.QRegion.RegionType=...) -> None: ... + + @typing.overload + def __add__(self, r:PySide2.QtCore.QRect) -> PySide2.QtGui.QRegion: ... + @typing.overload + def __add__(self, r:PySide2.QtGui.QRegion) -> PySide2.QtGui.QRegion: ... + @typing.overload + def __and__(self, r:PySide2.QtCore.QRect) -> PySide2.QtGui.QRegion: ... + @typing.overload + def __and__(self, r:PySide2.QtGui.QRegion) -> PySide2.QtGui.QRegion: ... + @staticmethod + def __copy__() -> None: ... + @typing.overload + def __iadd__(self, r:PySide2.QtCore.QRect) -> PySide2.QtGui.QRegion: ... + @typing.overload + def __iadd__(self, r:PySide2.QtGui.QRegion) -> PySide2.QtGui.QRegion: ... + def __ior__(self, r:PySide2.QtGui.QRegion) -> PySide2.QtGui.QRegion: ... + def __isub__(self, r:PySide2.QtGui.QRegion) -> PySide2.QtGui.QRegion: ... + def __ixor__(self, r:PySide2.QtGui.QRegion) -> PySide2.QtGui.QRegion: ... + def __lshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __mul__(self, m:PySide2.QtGui.QMatrix) -> PySide2.QtGui.QRegion: ... + @typing.overload + def __mul__(self, m:PySide2.QtGui.QTransform) -> PySide2.QtGui.QRegion: ... + def __or__(self, r:PySide2.QtGui.QRegion) -> PySide2.QtGui.QRegion: ... + def __rshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __sub__(self, r:PySide2.QtGui.QRegion) -> PySide2.QtGui.QRegion: ... + def __xor__(self, r:PySide2.QtGui.QRegion) -> PySide2.QtGui.QRegion: ... + def begin(self) -> PySide2.QtCore.QRect: ... + def boundingRect(self) -> PySide2.QtCore.QRect: ... + def cbegin(self) -> PySide2.QtCore.QRect: ... + def cend(self) -> PySide2.QtCore.QRect: ... + @typing.overload + def contains(self, p:PySide2.QtCore.QPoint) -> bool: ... + @typing.overload + def contains(self, r:PySide2.QtCore.QRect) -> bool: ... + def end(self) -> PySide2.QtCore.QRect: ... + @typing.overload + def intersected(self, r:PySide2.QtCore.QRect) -> PySide2.QtGui.QRegion: ... + @typing.overload + def intersected(self, r:PySide2.QtGui.QRegion) -> PySide2.QtGui.QRegion: ... + @typing.overload + def intersects(self, r:PySide2.QtCore.QRect) -> bool: ... + @typing.overload + def intersects(self, r:PySide2.QtGui.QRegion) -> bool: ... + def isEmpty(self) -> bool: ... + def isNull(self) -> bool: ... + def rectCount(self) -> int: ... + def rects(self) -> typing.List: ... + def setRects(self, rect:PySide2.QtCore.QRect, num:int) -> None: ... + def subtracted(self, r:PySide2.QtGui.QRegion) -> PySide2.QtGui.QRegion: ... + def swap(self, other:PySide2.QtGui.QRegion) -> None: ... + @typing.overload + def translate(self, dx:int, dy:int) -> None: ... + @typing.overload + def translate(self, p:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + def translated(self, dx:int, dy:int) -> PySide2.QtGui.QRegion: ... + @typing.overload + def translated(self, p:PySide2.QtCore.QPoint) -> PySide2.QtGui.QRegion: ... + @typing.overload + def united(self, r:PySide2.QtCore.QRect) -> PySide2.QtGui.QRegion: ... + @typing.overload + def united(self, r:PySide2.QtGui.QRegion) -> PySide2.QtGui.QRegion: ... + def xored(self, r:PySide2.QtGui.QRegion) -> PySide2.QtGui.QRegion: ... + + +class QRegularExpressionValidator(PySide2.QtGui.QValidator): + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, re:PySide2.QtCore.QRegularExpression, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def regularExpression(self) -> PySide2.QtCore.QRegularExpression: ... + def setRegularExpression(self, re:PySide2.QtCore.QRegularExpression) -> None: ... + def validate(self, input:str, pos:int) -> PySide2.QtGui.QValidator.State: ... + + +class QResizeEvent(PySide2.QtCore.QEvent): + + def __init__(self, size:PySide2.QtCore.QSize, oldSize:PySide2.QtCore.QSize) -> None: ... + + def oldSize(self) -> PySide2.QtCore.QSize: ... + def size(self) -> PySide2.QtCore.QSize: ... + + +class QScreen(PySide2.QtCore.QObject): + def angleBetween(self, a:PySide2.QtCore.Qt.ScreenOrientation, b:PySide2.QtCore.Qt.ScreenOrientation) -> int: ... + def availableGeometry(self) -> PySide2.QtCore.QRect: ... + def availableSize(self) -> PySide2.QtCore.QSize: ... + def availableVirtualGeometry(self) -> PySide2.QtCore.QRect: ... + def availableVirtualSize(self) -> PySide2.QtCore.QSize: ... + def depth(self) -> int: ... + def devicePixelRatio(self) -> float: ... + def geometry(self) -> PySide2.QtCore.QRect: ... + def grabWindow(self, window:int, x:int=..., y:int=..., w:int=..., h:int=...) -> PySide2.QtGui.QPixmap: ... + def isLandscape(self, orientation:PySide2.QtCore.Qt.ScreenOrientation) -> bool: ... + def isPortrait(self, orientation:PySide2.QtCore.Qt.ScreenOrientation) -> bool: ... + def logicalDotsPerInch(self) -> float: ... + def logicalDotsPerInchX(self) -> float: ... + def logicalDotsPerInchY(self) -> float: ... + def manufacturer(self) -> str: ... + def mapBetween(self, a:PySide2.QtCore.Qt.ScreenOrientation, b:PySide2.QtCore.Qt.ScreenOrientation, rect:PySide2.QtCore.QRect) -> PySide2.QtCore.QRect: ... + def model(self) -> str: ... + def name(self) -> str: ... + def nativeOrientation(self) -> PySide2.QtCore.Qt.ScreenOrientation: ... + def orientation(self) -> PySide2.QtCore.Qt.ScreenOrientation: ... + def orientationUpdateMask(self) -> PySide2.QtCore.Qt.ScreenOrientations: ... + def physicalDotsPerInch(self) -> float: ... + def physicalDotsPerInchX(self) -> float: ... + def physicalDotsPerInchY(self) -> float: ... + def physicalSize(self) -> PySide2.QtCore.QSizeF: ... + def primaryOrientation(self) -> PySide2.QtCore.Qt.ScreenOrientation: ... + def refreshRate(self) -> float: ... + def serialNumber(self) -> str: ... + def setOrientationUpdateMask(self, mask:PySide2.QtCore.Qt.ScreenOrientations) -> None: ... + def size(self) -> PySide2.QtCore.QSize: ... + def transformBetween(self, a:PySide2.QtCore.Qt.ScreenOrientation, b:PySide2.QtCore.Qt.ScreenOrientation, target:PySide2.QtCore.QRect) -> PySide2.QtGui.QTransform: ... + def virtualGeometry(self) -> PySide2.QtCore.QRect: ... + def virtualSiblingAt(self, point:PySide2.QtCore.QPoint) -> PySide2.QtGui.QScreen: ... + def virtualSiblings(self) -> typing.List: ... + def virtualSize(self) -> PySide2.QtCore.QSize: ... + + +class QScrollEvent(PySide2.QtCore.QEvent): + ScrollStarted : QScrollEvent = ... # 0x0 + ScrollUpdated : QScrollEvent = ... # 0x1 + ScrollFinished : QScrollEvent = ... # 0x2 + + class ScrollState(object): + ScrollStarted : QScrollEvent.ScrollState = ... # 0x0 + ScrollUpdated : QScrollEvent.ScrollState = ... # 0x1 + ScrollFinished : QScrollEvent.ScrollState = ... # 0x2 + + def __init__(self, contentPos:PySide2.QtCore.QPointF, overshoot:PySide2.QtCore.QPointF, scrollState:PySide2.QtGui.QScrollEvent.ScrollState) -> None: ... + + def contentPos(self) -> PySide2.QtCore.QPointF: ... + def overshootDistance(self) -> PySide2.QtCore.QPointF: ... + def scrollState(self) -> PySide2.QtGui.QScrollEvent.ScrollState: ... + + +class QScrollPrepareEvent(PySide2.QtCore.QEvent): + + def __init__(self, startPos:PySide2.QtCore.QPointF) -> None: ... + + def contentPos(self) -> PySide2.QtCore.QPointF: ... + def contentPosRange(self) -> PySide2.QtCore.QRectF: ... + def setContentPos(self, pos:PySide2.QtCore.QPointF) -> None: ... + def setContentPosRange(self, rect:PySide2.QtCore.QRectF) -> None: ... + def setViewportSize(self, size:PySide2.QtCore.QSizeF) -> None: ... + def startPos(self) -> PySide2.QtCore.QPointF: ... + def viewportSize(self) -> PySide2.QtCore.QSizeF: ... + + +class QSessionManager(PySide2.QtCore.QObject): + RestartIfRunning : QSessionManager = ... # 0x0 + RestartAnyway : QSessionManager = ... # 0x1 + RestartImmediately : QSessionManager = ... # 0x2 + RestartNever : QSessionManager = ... # 0x3 + + class RestartHint(object): + RestartIfRunning : QSessionManager.RestartHint = ... # 0x0 + RestartAnyway : QSessionManager.RestartHint = ... # 0x1 + RestartImmediately : QSessionManager.RestartHint = ... # 0x2 + RestartNever : QSessionManager.RestartHint = ... # 0x3 + def allowsErrorInteraction(self) -> bool: ... + def allowsInteraction(self) -> bool: ... + def cancel(self) -> None: ... + def discardCommand(self) -> typing.List: ... + def isPhase2(self) -> bool: ... + def release(self) -> None: ... + def requestPhase2(self) -> None: ... + def restartCommand(self) -> typing.List: ... + def restartHint(self) -> PySide2.QtGui.QSessionManager.RestartHint: ... + def sessionId(self) -> str: ... + def sessionKey(self) -> str: ... + def setDiscardCommand(self, arg__1:typing.Sequence) -> None: ... + @typing.overload + def setManagerProperty(self, name:str, value:str) -> None: ... + @typing.overload + def setManagerProperty(self, name:str, value:typing.Sequence) -> None: ... + def setRestartCommand(self, arg__1:typing.Sequence) -> None: ... + def setRestartHint(self, arg__1:PySide2.QtGui.QSessionManager.RestartHint) -> None: ... + + +class QShortcutEvent(PySide2.QtCore.QEvent): + + def __init__(self, key:PySide2.QtGui.QKeySequence, id:int, ambiguous:bool=...) -> None: ... + + def isAmbiguous(self) -> bool: ... + def key(self) -> PySide2.QtGui.QKeySequence: ... + def shortcutId(self) -> int: ... + + +class QShowEvent(PySide2.QtCore.QEvent): + + def __init__(self) -> None: ... + + +class QStandardItem(Shiboken.Object): + Type : QStandardItem = ... # 0x0 + UserType : QStandardItem = ... # 0x3e8 + + class ItemType(object): + Type : QStandardItem.ItemType = ... # 0x0 + UserType : QStandardItem.ItemType = ... # 0x3e8 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, icon:PySide2.QtGui.QIcon, text:str) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtGui.QStandardItem) -> None: ... + @typing.overload + def __init__(self, rows:int, columns:int=...) -> None: ... + @typing.overload + def __init__(self, text:str) -> None: ... + + def __lshift__(self, out:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __rshift__(self, in_:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def accessibleDescription(self) -> str: ... + def accessibleText(self) -> str: ... + def appendColumn(self, items:typing.Sequence) -> None: ... + @typing.overload + def appendRow(self, item:PySide2.QtGui.QStandardItem) -> None: ... + @typing.overload + def appendRow(self, items:typing.Sequence) -> None: ... + def appendRows(self, items:typing.Sequence) -> None: ... + def background(self) -> PySide2.QtGui.QBrush: ... + def checkState(self) -> PySide2.QtCore.Qt.CheckState: ... + def child(self, row:int, column:int=...) -> PySide2.QtGui.QStandardItem: ... + def clearData(self) -> None: ... + def clone(self) -> PySide2.QtGui.QStandardItem: ... + def column(self) -> int: ... + def columnCount(self) -> int: ... + def data(self, role:int=...) -> typing.Any: ... + def emitDataChanged(self) -> None: ... + def flags(self) -> PySide2.QtCore.Qt.ItemFlags: ... + def font(self) -> PySide2.QtGui.QFont: ... + def foreground(self) -> PySide2.QtGui.QBrush: ... + def hasChildren(self) -> bool: ... + def icon(self) -> PySide2.QtGui.QIcon: ... + def index(self) -> PySide2.QtCore.QModelIndex: ... + def insertColumn(self, column:int, items:typing.Sequence) -> None: ... + def insertColumns(self, column:int, count:int) -> None: ... + @typing.overload + def insertRow(self, row:int, item:PySide2.QtGui.QStandardItem) -> None: ... + @typing.overload + def insertRow(self, row:int, items:typing.Sequence) -> None: ... + @typing.overload + def insertRows(self, row:int, count:int) -> None: ... + @typing.overload + def insertRows(self, row:int, items:typing.Sequence) -> None: ... + def isAutoTristate(self) -> bool: ... + def isCheckable(self) -> bool: ... + def isDragEnabled(self) -> bool: ... + def isDropEnabled(self) -> bool: ... + def isEditable(self) -> bool: ... + def isEnabled(self) -> bool: ... + def isSelectable(self) -> bool: ... + def isTristate(self) -> bool: ... + def isUserTristate(self) -> bool: ... + def model(self) -> PySide2.QtGui.QStandardItemModel: ... + def parent(self) -> PySide2.QtGui.QStandardItem: ... + def read(self, in_:PySide2.QtCore.QDataStream) -> None: ... + def removeColumn(self, column:int) -> None: ... + def removeColumns(self, column:int, count:int) -> None: ... + def removeRow(self, row:int) -> None: ... + def removeRows(self, row:int, count:int) -> None: ... + def row(self) -> int: ... + def rowCount(self) -> int: ... + def setAccessibleDescription(self, accessibleDescription:str) -> None: ... + def setAccessibleText(self, accessibleText:str) -> None: ... + def setAutoTristate(self, tristate:bool) -> None: ... + def setBackground(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setCheckState(self, checkState:PySide2.QtCore.Qt.CheckState) -> None: ... + def setCheckable(self, checkable:bool) -> None: ... + @typing.overload + def setChild(self, row:int, column:int, item:PySide2.QtGui.QStandardItem) -> None: ... + @typing.overload + def setChild(self, row:int, item:PySide2.QtGui.QStandardItem) -> None: ... + def setColumnCount(self, columns:int) -> None: ... + def setData(self, value:typing.Any, role:int=...) -> None: ... + def setDragEnabled(self, dragEnabled:bool) -> None: ... + def setDropEnabled(self, dropEnabled:bool) -> None: ... + def setEditable(self, editable:bool) -> None: ... + def setEnabled(self, enabled:bool) -> None: ... + def setFlags(self, flags:PySide2.QtCore.Qt.ItemFlags) -> None: ... + def setFont(self, font:PySide2.QtGui.QFont) -> None: ... + def setForeground(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setIcon(self, icon:PySide2.QtGui.QIcon) -> None: ... + def setRowCount(self, rows:int) -> None: ... + def setSelectable(self, selectable:bool) -> None: ... + def setSizeHint(self, sizeHint:PySide2.QtCore.QSize) -> None: ... + def setStatusTip(self, statusTip:str) -> None: ... + def setText(self, text:str) -> None: ... + def setTextAlignment(self, textAlignment:PySide2.QtCore.Qt.Alignment) -> None: ... + def setToolTip(self, toolTip:str) -> None: ... + def setTristate(self, tristate:bool) -> None: ... + def setUserTristate(self, tristate:bool) -> None: ... + def setWhatsThis(self, whatsThis:str) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def sortChildren(self, column:int, order:PySide2.QtCore.Qt.SortOrder=...) -> None: ... + def statusTip(self) -> str: ... + def takeChild(self, row:int, column:int=...) -> PySide2.QtGui.QStandardItem: ... + def takeColumn(self, column:int) -> typing.List: ... + def takeRow(self, row:int) -> typing.List: ... + def text(self) -> str: ... + def textAlignment(self) -> PySide2.QtCore.Qt.Alignment: ... + def toolTip(self) -> str: ... + def type(self) -> int: ... + def whatsThis(self) -> str: ... + def write(self, out:PySide2.QtCore.QDataStream) -> None: ... + + +class QStandardItemModel(PySide2.QtCore.QAbstractItemModel): + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, rows:int, columns:int, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def appendColumn(self, items:typing.Sequence) -> None: ... + @typing.overload + def appendRow(self, item:PySide2.QtGui.QStandardItem) -> None: ... + @typing.overload + def appendRow(self, items:typing.Sequence) -> None: ... + def clear(self) -> None: ... + def clearItemData(self, index:PySide2.QtCore.QModelIndex) -> bool: ... + def columnCount(self, parent:PySide2.QtCore.QModelIndex=...) -> int: ... + def data(self, index:PySide2.QtCore.QModelIndex, role:int=...) -> typing.Any: ... + def dropMimeData(self, data:PySide2.QtCore.QMimeData, action:PySide2.QtCore.Qt.DropAction, row:int, column:int, parent:PySide2.QtCore.QModelIndex) -> bool: ... + def findItems(self, text:str, flags:PySide2.QtCore.Qt.MatchFlags=..., column:int=...) -> typing.List: ... + def flags(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.Qt.ItemFlags: ... + def hasChildren(self, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def headerData(self, section:int, orientation:PySide2.QtCore.Qt.Orientation, role:int=...) -> typing.Any: ... + def horizontalHeaderItem(self, column:int) -> PySide2.QtGui.QStandardItem: ... + def index(self, row:int, column:int, parent:PySide2.QtCore.QModelIndex=...) -> PySide2.QtCore.QModelIndex: ... + def indexFromItem(self, item:PySide2.QtGui.QStandardItem) -> PySide2.QtCore.QModelIndex: ... + @typing.overload + def insertColumn(self, column:int, items:typing.Sequence) -> None: ... + @typing.overload + def insertColumn(self, column:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def insertColumns(self, column:int, count:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + @typing.overload + def insertRow(self, row:int, item:PySide2.QtGui.QStandardItem) -> None: ... + @typing.overload + def insertRow(self, row:int, items:typing.Sequence) -> None: ... + @typing.overload + def insertRow(self, row:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def insertRows(self, row:int, count:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def invisibleRootItem(self) -> PySide2.QtGui.QStandardItem: ... + def item(self, row:int, column:int=...) -> PySide2.QtGui.QStandardItem: ... + def itemData(self, index:PySide2.QtCore.QModelIndex) -> typing.Dict: ... + def itemFromIndex(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtGui.QStandardItem: ... + def itemPrototype(self) -> PySide2.QtGui.QStandardItem: ... + def mimeData(self, indexes:typing.List) -> PySide2.QtCore.QMimeData: ... + def mimeTypes(self) -> typing.List: ... + @typing.overload + def parent(self) -> PySide2.QtCore.QObject: ... + @typing.overload + def parent(self, child:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def removeColumns(self, column:int, count:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def removeRows(self, row:int, count:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def rowCount(self, parent:PySide2.QtCore.QModelIndex=...) -> int: ... + def setColumnCount(self, columns:int) -> None: ... + def setData(self, index:PySide2.QtCore.QModelIndex, value:typing.Any, role:int=...) -> bool: ... + def setHeaderData(self, section:int, orientation:PySide2.QtCore.Qt.Orientation, value:typing.Any, role:int=...) -> bool: ... + def setHorizontalHeaderItem(self, column:int, item:PySide2.QtGui.QStandardItem) -> None: ... + def setHorizontalHeaderLabels(self, labels:typing.Sequence) -> None: ... + @typing.overload + def setItem(self, row:int, column:int, item:PySide2.QtGui.QStandardItem) -> None: ... + @typing.overload + def setItem(self, row:int, item:PySide2.QtGui.QStandardItem) -> None: ... + def setItemData(self, index:PySide2.QtCore.QModelIndex, roles:typing.Dict) -> bool: ... + def setItemPrototype(self, item:PySide2.QtGui.QStandardItem) -> None: ... + def setItemRoleNames(self, roleNames:typing.Dict) -> None: ... + def setRowCount(self, rows:int) -> None: ... + def setSortRole(self, role:int) -> None: ... + def setVerticalHeaderItem(self, row:int, item:PySide2.QtGui.QStandardItem) -> None: ... + def setVerticalHeaderLabels(self, labels:typing.Sequence) -> None: ... + def sibling(self, row:int, column:int, idx:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def sort(self, column:int, order:PySide2.QtCore.Qt.SortOrder=...) -> None: ... + def sortRole(self) -> int: ... + def supportedDropActions(self) -> PySide2.QtCore.Qt.DropActions: ... + def takeColumn(self, column:int) -> typing.List: ... + def takeHorizontalHeaderItem(self, column:int) -> PySide2.QtGui.QStandardItem: ... + def takeItem(self, row:int, column:int=...) -> PySide2.QtGui.QStandardItem: ... + def takeRow(self, row:int) -> typing.List: ... + def takeVerticalHeaderItem(self, row:int) -> PySide2.QtGui.QStandardItem: ... + def verticalHeaderItem(self, row:int) -> PySide2.QtGui.QStandardItem: ... + + +class QStaticText(Shiboken.Object): + ModerateCaching : QStaticText = ... # 0x0 + AggressiveCaching : QStaticText = ... # 0x1 + + class PerformanceHint(object): + ModerateCaching : QStaticText.PerformanceHint = ... # 0x0 + AggressiveCaching : QStaticText.PerformanceHint = ... # 0x1 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtGui.QStaticText) -> None: ... + @typing.overload + def __init__(self, text:str) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def performanceHint(self) -> PySide2.QtGui.QStaticText.PerformanceHint: ... + def prepare(self, matrix:PySide2.QtGui.QTransform=..., font:PySide2.QtGui.QFont=...) -> None: ... + def setPerformanceHint(self, performanceHint:PySide2.QtGui.QStaticText.PerformanceHint) -> None: ... + def setText(self, text:str) -> None: ... + def setTextFormat(self, textFormat:PySide2.QtCore.Qt.TextFormat) -> None: ... + def setTextOption(self, textOption:PySide2.QtGui.QTextOption) -> None: ... + def setTextWidth(self, textWidth:float) -> None: ... + def size(self) -> PySide2.QtCore.QSizeF: ... + def swap(self, other:PySide2.QtGui.QStaticText) -> None: ... + def text(self) -> str: ... + def textFormat(self) -> PySide2.QtCore.Qt.TextFormat: ... + def textOption(self) -> PySide2.QtGui.QTextOption: ... + def textWidth(self) -> float: ... + + +class QStatusTipEvent(PySide2.QtCore.QEvent): + + def __init__(self, tip:str) -> None: ... + + def tip(self) -> str: ... + + +class QStyleHints(PySide2.QtCore.QObject): + def cursorFlashTime(self) -> int: ... + def fontSmoothingGamma(self) -> float: ... + def keyboardAutoRepeatRate(self) -> int: ... + def keyboardInputInterval(self) -> int: ... + def mouseDoubleClickDistance(self) -> int: ... + def mouseDoubleClickInterval(self) -> int: ... + def mousePressAndHoldInterval(self) -> int: ... + def mouseQuickSelectionThreshold(self) -> int: ... + def passwordMaskCharacter(self) -> str: ... + def passwordMaskDelay(self) -> int: ... + def setCursorFlashTime(self, cursorFlashTime:int) -> None: ... + def setFocusOnTouchRelease(self) -> bool: ... + def setKeyboardInputInterval(self, keyboardInputInterval:int) -> None: ... + def setMouseDoubleClickInterval(self, mouseDoubleClickInterval:int) -> None: ... + def setMousePressAndHoldInterval(self, mousePressAndHoldInterval:int) -> None: ... + def setMouseQuickSelectionThreshold(self, threshold:int) -> None: ... + def setShowShortcutsInContextMenus(self, showShortcutsInContextMenus:bool) -> None: ... + def setStartDragDistance(self, startDragDistance:int) -> None: ... + def setStartDragTime(self, startDragTime:int) -> None: ... + def setTabFocusBehavior(self, tabFocusBehavior:PySide2.QtCore.Qt.TabFocusBehavior) -> None: ... + def setUseHoverEffects(self, useHoverEffects:bool) -> None: ... + def setWheelScrollLines(self, scrollLines:int) -> None: ... + def showIsFullScreen(self) -> bool: ... + def showIsMaximized(self) -> bool: ... + def showShortcutsInContextMenus(self) -> bool: ... + def singleClickActivation(self) -> bool: ... + def startDragDistance(self) -> int: ... + def startDragTime(self) -> int: ... + def startDragVelocity(self) -> int: ... + def tabFocusBehavior(self) -> PySide2.QtCore.Qt.TabFocusBehavior: ... + def touchDoubleTapDistance(self) -> int: ... + def useHoverEffects(self) -> bool: ... + def useRtlExtensions(self) -> bool: ... + def wheelScrollLines(self) -> int: ... + + +class QSurface(Shiboken.Object): + RasterSurface : QSurface = ... # 0x0 + Window : QSurface = ... # 0x0 + Offscreen : QSurface = ... # 0x1 + OpenGLSurface : QSurface = ... # 0x1 + RasterGLSurface : QSurface = ... # 0x2 + OpenVGSurface : QSurface = ... # 0x3 + VulkanSurface : QSurface = ... # 0x4 + MetalSurface : QSurface = ... # 0x5 + + class SurfaceClass(object): + Window : QSurface.SurfaceClass = ... # 0x0 + Offscreen : QSurface.SurfaceClass = ... # 0x1 + + class SurfaceType(object): + RasterSurface : QSurface.SurfaceType = ... # 0x0 + OpenGLSurface : QSurface.SurfaceType = ... # 0x1 + RasterGLSurface : QSurface.SurfaceType = ... # 0x2 + OpenVGSurface : QSurface.SurfaceType = ... # 0x3 + VulkanSurface : QSurface.SurfaceType = ... # 0x4 + MetalSurface : QSurface.SurfaceType = ... # 0x5 + + def __init__(self, type:PySide2.QtGui.QSurface.SurfaceClass) -> None: ... + + def format(self) -> PySide2.QtGui.QSurfaceFormat: ... + def size(self) -> PySide2.QtCore.QSize: ... + def supportsOpenGL(self) -> bool: ... + def surfaceClass(self) -> PySide2.QtGui.QSurface.SurfaceClass: ... + def surfaceHandle(self) -> int: ... + def surfaceType(self) -> PySide2.QtGui.QSurface.SurfaceType: ... + + +class QSurfaceFormat(Shiboken.Object): + DefaultColorSpace : QSurfaceFormat = ... # 0x0 + DefaultRenderableType : QSurfaceFormat = ... # 0x0 + DefaultSwapBehavior : QSurfaceFormat = ... # 0x0 + NoProfile : QSurfaceFormat = ... # 0x0 + CoreProfile : QSurfaceFormat = ... # 0x1 + OpenGL : QSurfaceFormat = ... # 0x1 + SingleBuffer : QSurfaceFormat = ... # 0x1 + StereoBuffers : QSurfaceFormat = ... # 0x1 + sRGBColorSpace : QSurfaceFormat = ... # 0x1 + CompatibilityProfile : QSurfaceFormat = ... # 0x2 + DebugContext : QSurfaceFormat = ... # 0x2 + DoubleBuffer : QSurfaceFormat = ... # 0x2 + OpenGLES : QSurfaceFormat = ... # 0x2 + TripleBuffer : QSurfaceFormat = ... # 0x3 + DeprecatedFunctions : QSurfaceFormat = ... # 0x4 + OpenVG : QSurfaceFormat = ... # 0x4 + ResetNotification : QSurfaceFormat = ... # 0x8 + + class ColorSpace(object): + DefaultColorSpace : QSurfaceFormat.ColorSpace = ... # 0x0 + sRGBColorSpace : QSurfaceFormat.ColorSpace = ... # 0x1 + + class FormatOption(object): + StereoBuffers : QSurfaceFormat.FormatOption = ... # 0x1 + DebugContext : QSurfaceFormat.FormatOption = ... # 0x2 + DeprecatedFunctions : QSurfaceFormat.FormatOption = ... # 0x4 + ResetNotification : QSurfaceFormat.FormatOption = ... # 0x8 + + class FormatOptions(object): ... + + class OpenGLContextProfile(object): + NoProfile : QSurfaceFormat.OpenGLContextProfile = ... # 0x0 + CoreProfile : QSurfaceFormat.OpenGLContextProfile = ... # 0x1 + CompatibilityProfile : QSurfaceFormat.OpenGLContextProfile = ... # 0x2 + + class RenderableType(object): + DefaultRenderableType : QSurfaceFormat.RenderableType = ... # 0x0 + OpenGL : QSurfaceFormat.RenderableType = ... # 0x1 + OpenGLES : QSurfaceFormat.RenderableType = ... # 0x2 + OpenVG : QSurfaceFormat.RenderableType = ... # 0x4 + + class SwapBehavior(object): + DefaultSwapBehavior : QSurfaceFormat.SwapBehavior = ... # 0x0 + SingleBuffer : QSurfaceFormat.SwapBehavior = ... # 0x1 + DoubleBuffer : QSurfaceFormat.SwapBehavior = ... # 0x2 + TripleBuffer : QSurfaceFormat.SwapBehavior = ... # 0x3 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, options:PySide2.QtGui.QSurfaceFormat.FormatOptions) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtGui.QSurfaceFormat) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def alphaBufferSize(self) -> int: ... + def blueBufferSize(self) -> int: ... + def colorSpace(self) -> PySide2.QtGui.QSurfaceFormat.ColorSpace: ... + @staticmethod + def defaultFormat() -> PySide2.QtGui.QSurfaceFormat: ... + def depthBufferSize(self) -> int: ... + def greenBufferSize(self) -> int: ... + def hasAlpha(self) -> bool: ... + def majorVersion(self) -> int: ... + def minorVersion(self) -> int: ... + def options(self) -> PySide2.QtGui.QSurfaceFormat.FormatOptions: ... + def profile(self) -> PySide2.QtGui.QSurfaceFormat.OpenGLContextProfile: ... + def redBufferSize(self) -> int: ... + def renderableType(self) -> PySide2.QtGui.QSurfaceFormat.RenderableType: ... + def samples(self) -> int: ... + def setAlphaBufferSize(self, size:int) -> None: ... + def setBlueBufferSize(self, size:int) -> None: ... + def setColorSpace(self, colorSpace:PySide2.QtGui.QSurfaceFormat.ColorSpace) -> None: ... + @staticmethod + def setDefaultFormat(format:PySide2.QtGui.QSurfaceFormat) -> None: ... + def setDepthBufferSize(self, size:int) -> None: ... + def setGreenBufferSize(self, size:int) -> None: ... + def setMajorVersion(self, majorVersion:int) -> None: ... + def setMinorVersion(self, minorVersion:int) -> None: ... + @typing.overload + def setOption(self, opt:PySide2.QtGui.QSurfaceFormat.FormatOptions) -> None: ... + @typing.overload + def setOption(self, option:PySide2.QtGui.QSurfaceFormat.FormatOption, on:bool=...) -> None: ... + def setOptions(self, options:PySide2.QtGui.QSurfaceFormat.FormatOptions) -> None: ... + def setProfile(self, profile:PySide2.QtGui.QSurfaceFormat.OpenGLContextProfile) -> None: ... + def setRedBufferSize(self, size:int) -> None: ... + def setRenderableType(self, type:PySide2.QtGui.QSurfaceFormat.RenderableType) -> None: ... + def setSamples(self, numSamples:int) -> None: ... + def setStencilBufferSize(self, size:int) -> None: ... + def setStereo(self, enable:bool) -> None: ... + def setSwapBehavior(self, behavior:PySide2.QtGui.QSurfaceFormat.SwapBehavior) -> None: ... + def setSwapInterval(self, interval:int) -> None: ... + def setVersion(self, major:int, minor:int) -> None: ... + def stencilBufferSize(self) -> int: ... + def stereo(self) -> bool: ... + def swapBehavior(self) -> PySide2.QtGui.QSurfaceFormat.SwapBehavior: ... + def swapInterval(self) -> int: ... + @typing.overload + def testOption(self, opt:PySide2.QtGui.QSurfaceFormat.FormatOptions) -> bool: ... + @typing.overload + def testOption(self, option:PySide2.QtGui.QSurfaceFormat.FormatOption) -> bool: ... + def version(self) -> typing.Tuple: ... + + +class QSyntaxHighlighter(PySide2.QtCore.QObject): + + @typing.overload + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + @typing.overload + def __init__(self, parent:PySide2.QtGui.QTextDocument) -> None: ... + + def currentBlock(self) -> PySide2.QtGui.QTextBlock: ... + def currentBlockState(self) -> int: ... + def currentBlockUserData(self) -> PySide2.QtGui.QTextBlockUserData: ... + def document(self) -> PySide2.QtGui.QTextDocument: ... + def format(self, pos:int) -> PySide2.QtGui.QTextCharFormat: ... + def highlightBlock(self, text:str) -> None: ... + def previousBlockState(self) -> int: ... + def rehighlight(self) -> None: ... + def rehighlightBlock(self, block:PySide2.QtGui.QTextBlock) -> None: ... + def setCurrentBlockState(self, newState:int) -> None: ... + def setCurrentBlockUserData(self, data:PySide2.QtGui.QTextBlockUserData) -> None: ... + def setDocument(self, doc:PySide2.QtGui.QTextDocument) -> None: ... + @typing.overload + def setFormat(self, start:int, count:int, color:PySide2.QtGui.QColor) -> None: ... + @typing.overload + def setFormat(self, start:int, count:int, font:PySide2.QtGui.QFont) -> None: ... + @typing.overload + def setFormat(self, start:int, count:int, format:PySide2.QtGui.QTextCharFormat) -> None: ... + + +class QTabletEvent(PySide2.QtGui.QInputEvent): + NoDevice : QTabletEvent = ... # 0x0 + UnknownPointer : QTabletEvent = ... # 0x0 + Pen : QTabletEvent = ... # 0x1 + Puck : QTabletEvent = ... # 0x1 + Cursor : QTabletEvent = ... # 0x2 + Stylus : QTabletEvent = ... # 0x2 + Airbrush : QTabletEvent = ... # 0x3 + Eraser : QTabletEvent = ... # 0x3 + FourDMouse : QTabletEvent = ... # 0x4 + XFreeEraser : QTabletEvent = ... # 0x5 + RotationStylus : QTabletEvent = ... # 0x6 + + class PointerType(object): + UnknownPointer : QTabletEvent.PointerType = ... # 0x0 + Pen : QTabletEvent.PointerType = ... # 0x1 + Cursor : QTabletEvent.PointerType = ... # 0x2 + Eraser : QTabletEvent.PointerType = ... # 0x3 + + class TabletDevice(object): + NoDevice : QTabletEvent.TabletDevice = ... # 0x0 + Puck : QTabletEvent.TabletDevice = ... # 0x1 + Stylus : QTabletEvent.TabletDevice = ... # 0x2 + Airbrush : QTabletEvent.TabletDevice = ... # 0x3 + FourDMouse : QTabletEvent.TabletDevice = ... # 0x4 + XFreeEraser : QTabletEvent.TabletDevice = ... # 0x5 + RotationStylus : QTabletEvent.TabletDevice = ... # 0x6 + + @typing.overload + def __init__(self, t:PySide2.QtCore.QEvent.Type, pos:PySide2.QtCore.QPointF, globalPos:PySide2.QtCore.QPointF, device:int, pointerType:int, pressure:float, xTilt:int, yTilt:int, tangentialPressure:float, rotation:float, z:int, keyState:PySide2.QtCore.Qt.KeyboardModifiers, uniqueID:int) -> None: ... + @typing.overload + def __init__(self, t:PySide2.QtCore.QEvent.Type, pos:PySide2.QtCore.QPointF, globalPos:PySide2.QtCore.QPointF, device:int, pointerType:int, pressure:float, xTilt:int, yTilt:int, tangentialPressure:float, rotation:float, z:int, keyState:PySide2.QtCore.Qt.KeyboardModifiers, uniqueID:int, button:PySide2.QtCore.Qt.MouseButton, buttons:PySide2.QtCore.Qt.MouseButtons) -> None: ... + + def button(self) -> PySide2.QtCore.Qt.MouseButton: ... + def buttons(self) -> PySide2.QtCore.Qt.MouseButtons: ... + def device(self) -> PySide2.QtGui.QTabletEvent.TabletDevice: ... + def deviceType(self) -> PySide2.QtGui.QTabletEvent.TabletDevice: ... + def globalPos(self) -> PySide2.QtCore.QPoint: ... + def globalPosF(self) -> PySide2.QtCore.QPointF: ... + def globalX(self) -> int: ... + def globalY(self) -> int: ... + def hiResGlobalX(self) -> float: ... + def hiResGlobalY(self) -> float: ... + def pointerType(self) -> PySide2.QtGui.QTabletEvent.PointerType: ... + def pos(self) -> PySide2.QtCore.QPoint: ... + def posF(self) -> PySide2.QtCore.QPointF: ... + def pressure(self) -> float: ... + def rotation(self) -> float: ... + def tangentialPressure(self) -> float: ... + def uniqueId(self) -> int: ... + def x(self) -> int: ... + def xTilt(self) -> int: ... + def y(self) -> int: ... + def yTilt(self) -> int: ... + def z(self) -> int: ... + + +class QTextBlock(Shiboken.Object): + + class iterator(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, o:PySide2.QtGui.QTextBlock.iterator) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __iadd__(self, arg__1:int) -> PySide2.QtGui.QTextBlock.iterator: ... + def __isub__(self, arg__1:int) -> PySide2.QtGui.QTextBlock.iterator: ... + def __iter__(self) -> object: ... + def __next__(self) -> object: ... + def atEnd(self) -> bool: ... + def fragment(self) -> PySide2.QtGui.QTextFragment: ... + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, o:PySide2.QtGui.QTextBlock) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __iter__(self) -> object: ... + def begin(self) -> PySide2.QtGui.QTextBlock.iterator: ... + def blockFormat(self) -> PySide2.QtGui.QTextBlockFormat: ... + def blockFormatIndex(self) -> int: ... + def blockNumber(self) -> int: ... + def charFormat(self) -> PySide2.QtGui.QTextCharFormat: ... + def charFormatIndex(self) -> int: ... + def clearLayout(self) -> None: ... + def contains(self, position:int) -> bool: ... + def document(self) -> PySide2.QtGui.QTextDocument: ... + def end(self) -> PySide2.QtGui.QTextBlock.iterator: ... + def firstLineNumber(self) -> int: ... + def fragmentIndex(self) -> int: ... + def isValid(self) -> bool: ... + def isVisible(self) -> bool: ... + def layout(self) -> PySide2.QtGui.QTextLayout: ... + def length(self) -> int: ... + def lineCount(self) -> int: ... + def next(self) -> PySide2.QtGui.QTextBlock: ... + def position(self) -> int: ... + def previous(self) -> PySide2.QtGui.QTextBlock: ... + def revision(self) -> int: ... + def setLineCount(self, count:int) -> None: ... + def setRevision(self, rev:int) -> None: ... + def setUserData(self, data:PySide2.QtGui.QTextBlockUserData) -> None: ... + def setUserState(self, state:int) -> None: ... + def setVisible(self, visible:bool) -> None: ... + def text(self) -> str: ... + def textDirection(self) -> PySide2.QtCore.Qt.LayoutDirection: ... + def textFormats(self) -> typing.List: ... + def textList(self) -> PySide2.QtGui.QTextList: ... + def userData(self) -> PySide2.QtGui.QTextBlockUserData: ... + def userState(self) -> int: ... + + +class QTextBlockFormat(PySide2.QtGui.QTextFormat): + SingleHeight : QTextBlockFormat = ... # 0x0 + ProportionalHeight : QTextBlockFormat = ... # 0x1 + FixedHeight : QTextBlockFormat = ... # 0x2 + MinimumHeight : QTextBlockFormat = ... # 0x3 + LineDistanceHeight : QTextBlockFormat = ... # 0x4 + + class LineHeightTypes(object): + SingleHeight : QTextBlockFormat.LineHeightTypes = ... # 0x0 + ProportionalHeight : QTextBlockFormat.LineHeightTypes = ... # 0x1 + FixedHeight : QTextBlockFormat.LineHeightTypes = ... # 0x2 + MinimumHeight : QTextBlockFormat.LineHeightTypes = ... # 0x3 + LineDistanceHeight : QTextBlockFormat.LineHeightTypes = ... # 0x4 + + class MarkerType(object): + NoMarker : QTextBlockFormat.MarkerType = ... # 0x0 + Unchecked : QTextBlockFormat.MarkerType = ... # 0x1 + Checked : QTextBlockFormat.MarkerType = ... # 0x2 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QTextBlockFormat:PySide2.QtGui.QTextBlockFormat) -> None: ... + @typing.overload + def __init__(self, fmt:PySide2.QtGui.QTextFormat) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def alignment(self) -> PySide2.QtCore.Qt.Alignment: ... + def bottomMargin(self) -> float: ... + def headingLevel(self) -> int: ... + def indent(self) -> int: ... + def isValid(self) -> bool: ... + def leftMargin(self) -> float: ... + @typing.overload + def lineHeight(self) -> float: ... + @typing.overload + def lineHeight(self, scriptLineHeight:float, scaling:float) -> float: ... + def lineHeightType(self) -> int: ... + def marker(self) -> PySide2.QtGui.QTextBlockFormat.MarkerType: ... + def nonBreakableLines(self) -> bool: ... + def pageBreakPolicy(self) -> PySide2.QtGui.QTextFormat.PageBreakFlags: ... + def rightMargin(self) -> float: ... + def setAlignment(self, alignment:PySide2.QtCore.Qt.Alignment) -> None: ... + def setBottomMargin(self, margin:float) -> None: ... + def setHeadingLevel(self, alevel:int) -> None: ... + def setIndent(self, indent:int) -> None: ... + def setLeftMargin(self, margin:float) -> None: ... + def setLineHeight(self, height:float, heightType:int) -> None: ... + def setMarker(self, marker:PySide2.QtGui.QTextBlockFormat.MarkerType) -> None: ... + def setNonBreakableLines(self, b:bool) -> None: ... + def setPageBreakPolicy(self, flags:PySide2.QtGui.QTextFormat.PageBreakFlags) -> None: ... + def setRightMargin(self, margin:float) -> None: ... + def setTabPositions(self, tabs:typing.Sequence) -> None: ... + def setTextIndent(self, aindent:float) -> None: ... + def setTopMargin(self, margin:float) -> None: ... + def tabPositions(self) -> typing.List: ... + def textIndent(self) -> float: ... + def topMargin(self) -> float: ... + + +class QTextBlockGroup(PySide2.QtGui.QTextObject): + + def __init__(self, doc:PySide2.QtGui.QTextDocument) -> None: ... + + def blockFormatChanged(self, block:PySide2.QtGui.QTextBlock) -> None: ... + def blockInserted(self, block:PySide2.QtGui.QTextBlock) -> None: ... + def blockList(self) -> typing.List: ... + def blockRemoved(self, block:PySide2.QtGui.QTextBlock) -> None: ... + + +class QTextBlockUserData(Shiboken.Object): + + def __init__(self) -> None: ... + + +class QTextCharFormat(PySide2.QtGui.QTextFormat): + AlignNormal : QTextCharFormat = ... # 0x0 + FontPropertiesSpecifiedOnly: QTextCharFormat = ... # 0x0 + NoUnderline : QTextCharFormat = ... # 0x0 + AlignSuperScript : QTextCharFormat = ... # 0x1 + FontPropertiesAll : QTextCharFormat = ... # 0x1 + SingleUnderline : QTextCharFormat = ... # 0x1 + AlignSubScript : QTextCharFormat = ... # 0x2 + DashUnderline : QTextCharFormat = ... # 0x2 + AlignMiddle : QTextCharFormat = ... # 0x3 + DotLine : QTextCharFormat = ... # 0x3 + AlignTop : QTextCharFormat = ... # 0x4 + DashDotLine : QTextCharFormat = ... # 0x4 + AlignBottom : QTextCharFormat = ... # 0x5 + DashDotDotLine : QTextCharFormat = ... # 0x5 + AlignBaseline : QTextCharFormat = ... # 0x6 + WaveUnderline : QTextCharFormat = ... # 0x6 + SpellCheckUnderline : QTextCharFormat = ... # 0x7 + + class FontPropertiesInheritanceBehavior(object): + FontPropertiesSpecifiedOnly: QTextCharFormat.FontPropertiesInheritanceBehavior = ... # 0x0 + FontPropertiesAll : QTextCharFormat.FontPropertiesInheritanceBehavior = ... # 0x1 + + class UnderlineStyle(object): + NoUnderline : QTextCharFormat.UnderlineStyle = ... # 0x0 + SingleUnderline : QTextCharFormat.UnderlineStyle = ... # 0x1 + DashUnderline : QTextCharFormat.UnderlineStyle = ... # 0x2 + DotLine : QTextCharFormat.UnderlineStyle = ... # 0x3 + DashDotLine : QTextCharFormat.UnderlineStyle = ... # 0x4 + DashDotDotLine : QTextCharFormat.UnderlineStyle = ... # 0x5 + WaveUnderline : QTextCharFormat.UnderlineStyle = ... # 0x6 + SpellCheckUnderline : QTextCharFormat.UnderlineStyle = ... # 0x7 + + class VerticalAlignment(object): + AlignNormal : QTextCharFormat.VerticalAlignment = ... # 0x0 + AlignSuperScript : QTextCharFormat.VerticalAlignment = ... # 0x1 + AlignSubScript : QTextCharFormat.VerticalAlignment = ... # 0x2 + AlignMiddle : QTextCharFormat.VerticalAlignment = ... # 0x3 + AlignTop : QTextCharFormat.VerticalAlignment = ... # 0x4 + AlignBottom : QTextCharFormat.VerticalAlignment = ... # 0x5 + AlignBaseline : QTextCharFormat.VerticalAlignment = ... # 0x6 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QTextCharFormat:PySide2.QtGui.QTextCharFormat) -> None: ... + @typing.overload + def __init__(self, fmt:PySide2.QtGui.QTextFormat) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def anchorHref(self) -> str: ... + def anchorName(self) -> str: ... + def anchorNames(self) -> typing.List: ... + def font(self) -> PySide2.QtGui.QFont: ... + def fontCapitalization(self) -> PySide2.QtGui.QFont.Capitalization: ... + def fontFamilies(self) -> typing.Any: ... + def fontFamily(self) -> str: ... + def fontFixedPitch(self) -> bool: ... + def fontHintingPreference(self) -> PySide2.QtGui.QFont.HintingPreference: ... + def fontItalic(self) -> bool: ... + def fontKerning(self) -> bool: ... + def fontLetterSpacing(self) -> float: ... + def fontLetterSpacingType(self) -> PySide2.QtGui.QFont.SpacingType: ... + def fontOverline(self) -> bool: ... + def fontPointSize(self) -> float: ... + def fontStretch(self) -> int: ... + def fontStrikeOut(self) -> bool: ... + def fontStyleHint(self) -> PySide2.QtGui.QFont.StyleHint: ... + def fontStyleName(self) -> typing.Any: ... + def fontStyleStrategy(self) -> PySide2.QtGui.QFont.StyleStrategy: ... + def fontUnderline(self) -> bool: ... + def fontWeight(self) -> int: ... + def fontWordSpacing(self) -> float: ... + def isAnchor(self) -> bool: ... + def isValid(self) -> bool: ... + def setAnchor(self, anchor:bool) -> None: ... + def setAnchorHref(self, value:str) -> None: ... + def setAnchorName(self, name:str) -> None: ... + def setAnchorNames(self, names:typing.Sequence) -> None: ... + @typing.overload + def setFont(self, font:PySide2.QtGui.QFont) -> None: ... + @typing.overload + def setFont(self, font:PySide2.QtGui.QFont, behavior:PySide2.QtGui.QTextCharFormat.FontPropertiesInheritanceBehavior) -> None: ... + def setFontCapitalization(self, capitalization:PySide2.QtGui.QFont.Capitalization) -> None: ... + def setFontFamilies(self, families:typing.Sequence) -> None: ... + def setFontFamily(self, family:str) -> None: ... + def setFontFixedPitch(self, fixedPitch:bool) -> None: ... + def setFontHintingPreference(self, hintingPreference:PySide2.QtGui.QFont.HintingPreference) -> None: ... + def setFontItalic(self, italic:bool) -> None: ... + def setFontKerning(self, enable:bool) -> None: ... + def setFontLetterSpacing(self, spacing:float) -> None: ... + def setFontLetterSpacingType(self, letterSpacingType:PySide2.QtGui.QFont.SpacingType) -> None: ... + def setFontOverline(self, overline:bool) -> None: ... + def setFontPointSize(self, size:float) -> None: ... + def setFontStretch(self, factor:int) -> None: ... + def setFontStrikeOut(self, strikeOut:bool) -> None: ... + def setFontStyleHint(self, hint:PySide2.QtGui.QFont.StyleHint, strategy:PySide2.QtGui.QFont.StyleStrategy=...) -> None: ... + def setFontStyleName(self, styleName:str) -> None: ... + def setFontStyleStrategy(self, strategy:PySide2.QtGui.QFont.StyleStrategy) -> None: ... + def setFontUnderline(self, underline:bool) -> None: ... + def setFontWeight(self, weight:int) -> None: ... + def setFontWordSpacing(self, spacing:float) -> None: ... + def setTableCellColumnSpan(self, tableCellColumnSpan:int) -> None: ... + def setTableCellRowSpan(self, tableCellRowSpan:int) -> None: ... + def setTextOutline(self, pen:PySide2.QtGui.QPen) -> None: ... + def setToolTip(self, tip:str) -> None: ... + def setUnderlineColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setUnderlineStyle(self, style:PySide2.QtGui.QTextCharFormat.UnderlineStyle) -> None: ... + def setVerticalAlignment(self, alignment:PySide2.QtGui.QTextCharFormat.VerticalAlignment) -> None: ... + def tableCellColumnSpan(self) -> int: ... + def tableCellRowSpan(self) -> int: ... + def textOutline(self) -> PySide2.QtGui.QPen: ... + def toolTip(self) -> str: ... + def underlineColor(self) -> PySide2.QtGui.QColor: ... + def underlineStyle(self) -> PySide2.QtGui.QTextCharFormat.UnderlineStyle: ... + def verticalAlignment(self) -> PySide2.QtGui.QTextCharFormat.VerticalAlignment: ... + + +class QTextCursor(Shiboken.Object): + MoveAnchor : QTextCursor = ... # 0x0 + NoMove : QTextCursor = ... # 0x0 + WordUnderCursor : QTextCursor = ... # 0x0 + KeepAnchor : QTextCursor = ... # 0x1 + LineUnderCursor : QTextCursor = ... # 0x1 + Start : QTextCursor = ... # 0x1 + BlockUnderCursor : QTextCursor = ... # 0x2 + Up : QTextCursor = ... # 0x2 + Document : QTextCursor = ... # 0x3 + StartOfLine : QTextCursor = ... # 0x3 + StartOfBlock : QTextCursor = ... # 0x4 + StartOfWord : QTextCursor = ... # 0x5 + PreviousBlock : QTextCursor = ... # 0x6 + PreviousCharacter : QTextCursor = ... # 0x7 + PreviousWord : QTextCursor = ... # 0x8 + Left : QTextCursor = ... # 0x9 + WordLeft : QTextCursor = ... # 0xa + End : QTextCursor = ... # 0xb + Down : QTextCursor = ... # 0xc + EndOfLine : QTextCursor = ... # 0xd + EndOfWord : QTextCursor = ... # 0xe + EndOfBlock : QTextCursor = ... # 0xf + NextBlock : QTextCursor = ... # 0x10 + NextCharacter : QTextCursor = ... # 0x11 + NextWord : QTextCursor = ... # 0x12 + Right : QTextCursor = ... # 0x13 + WordRight : QTextCursor = ... # 0x14 + NextCell : QTextCursor = ... # 0x15 + PreviousCell : QTextCursor = ... # 0x16 + NextRow : QTextCursor = ... # 0x17 + PreviousRow : QTextCursor = ... # 0x18 + + class MoveMode(object): + MoveAnchor : QTextCursor.MoveMode = ... # 0x0 + KeepAnchor : QTextCursor.MoveMode = ... # 0x1 + + class MoveOperation(object): + NoMove : QTextCursor.MoveOperation = ... # 0x0 + Start : QTextCursor.MoveOperation = ... # 0x1 + Up : QTextCursor.MoveOperation = ... # 0x2 + StartOfLine : QTextCursor.MoveOperation = ... # 0x3 + StartOfBlock : QTextCursor.MoveOperation = ... # 0x4 + StartOfWord : QTextCursor.MoveOperation = ... # 0x5 + PreviousBlock : QTextCursor.MoveOperation = ... # 0x6 + PreviousCharacter : QTextCursor.MoveOperation = ... # 0x7 + PreviousWord : QTextCursor.MoveOperation = ... # 0x8 + Left : QTextCursor.MoveOperation = ... # 0x9 + WordLeft : QTextCursor.MoveOperation = ... # 0xa + End : QTextCursor.MoveOperation = ... # 0xb + Down : QTextCursor.MoveOperation = ... # 0xc + EndOfLine : QTextCursor.MoveOperation = ... # 0xd + EndOfWord : QTextCursor.MoveOperation = ... # 0xe + EndOfBlock : QTextCursor.MoveOperation = ... # 0xf + NextBlock : QTextCursor.MoveOperation = ... # 0x10 + NextCharacter : QTextCursor.MoveOperation = ... # 0x11 + NextWord : QTextCursor.MoveOperation = ... # 0x12 + Right : QTextCursor.MoveOperation = ... # 0x13 + WordRight : QTextCursor.MoveOperation = ... # 0x14 + NextCell : QTextCursor.MoveOperation = ... # 0x15 + PreviousCell : QTextCursor.MoveOperation = ... # 0x16 + NextRow : QTextCursor.MoveOperation = ... # 0x17 + PreviousRow : QTextCursor.MoveOperation = ... # 0x18 + + class SelectionType(object): + WordUnderCursor : QTextCursor.SelectionType = ... # 0x0 + LineUnderCursor : QTextCursor.SelectionType = ... # 0x1 + BlockUnderCursor : QTextCursor.SelectionType = ... # 0x2 + Document : QTextCursor.SelectionType = ... # 0x3 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, block:PySide2.QtGui.QTextBlock) -> None: ... + @typing.overload + def __init__(self, cursor:PySide2.QtGui.QTextCursor) -> None: ... + @typing.overload + def __init__(self, document:PySide2.QtGui.QTextDocument) -> None: ... + @typing.overload + def __init__(self, frame:PySide2.QtGui.QTextFrame) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def anchor(self) -> int: ... + def atBlockEnd(self) -> bool: ... + def atBlockStart(self) -> bool: ... + def atEnd(self) -> bool: ... + def atStart(self) -> bool: ... + def beginEditBlock(self) -> None: ... + def block(self) -> PySide2.QtGui.QTextBlock: ... + def blockCharFormat(self) -> PySide2.QtGui.QTextCharFormat: ... + def blockFormat(self) -> PySide2.QtGui.QTextBlockFormat: ... + def blockNumber(self) -> int: ... + def charFormat(self) -> PySide2.QtGui.QTextCharFormat: ... + def clearSelection(self) -> None: ... + def columnNumber(self) -> int: ... + @typing.overload + def createList(self, format:PySide2.QtGui.QTextListFormat) -> PySide2.QtGui.QTextList: ... + @typing.overload + def createList(self, style:PySide2.QtGui.QTextListFormat.Style) -> PySide2.QtGui.QTextList: ... + def currentFrame(self) -> PySide2.QtGui.QTextFrame: ... + def currentList(self) -> PySide2.QtGui.QTextList: ... + def currentTable(self) -> PySide2.QtGui.QTextTable: ... + def deleteChar(self) -> None: ... + def deletePreviousChar(self) -> None: ... + def document(self) -> PySide2.QtGui.QTextDocument: ... + def endEditBlock(self) -> None: ... + def hasComplexSelection(self) -> bool: ... + def hasSelection(self) -> bool: ... + @typing.overload + def insertBlock(self) -> None: ... + @typing.overload + def insertBlock(self, format:PySide2.QtGui.QTextBlockFormat) -> None: ... + @typing.overload + def insertBlock(self, format:PySide2.QtGui.QTextBlockFormat, charFormat:PySide2.QtGui.QTextCharFormat) -> None: ... + def insertFragment(self, fragment:PySide2.QtGui.QTextDocumentFragment) -> None: ... + def insertFrame(self, format:PySide2.QtGui.QTextFrameFormat) -> PySide2.QtGui.QTextFrame: ... + def insertHtml(self, html:str) -> None: ... + @typing.overload + def insertImage(self, format:PySide2.QtGui.QTextImageFormat) -> None: ... + @typing.overload + def insertImage(self, format:PySide2.QtGui.QTextImageFormat, alignment:PySide2.QtGui.QTextFrameFormat.Position) -> None: ... + @typing.overload + def insertImage(self, image:PySide2.QtGui.QImage, name:str=...) -> None: ... + @typing.overload + def insertImage(self, name:str) -> None: ... + @typing.overload + def insertList(self, format:PySide2.QtGui.QTextListFormat) -> PySide2.QtGui.QTextList: ... + @typing.overload + def insertList(self, style:PySide2.QtGui.QTextListFormat.Style) -> PySide2.QtGui.QTextList: ... + @typing.overload + def insertTable(self, rows:int, cols:int) -> PySide2.QtGui.QTextTable: ... + @typing.overload + def insertTable(self, rows:int, cols:int, format:PySide2.QtGui.QTextTableFormat) -> PySide2.QtGui.QTextTable: ... + @typing.overload + def insertText(self, text:str) -> None: ... + @typing.overload + def insertText(self, text:str, format:PySide2.QtGui.QTextCharFormat) -> None: ... + def isCopyOf(self, other:PySide2.QtGui.QTextCursor) -> bool: ... + def isNull(self) -> bool: ... + def joinPreviousEditBlock(self) -> None: ... + def keepPositionOnInsert(self) -> bool: ... + def mergeBlockCharFormat(self, modifier:PySide2.QtGui.QTextCharFormat) -> None: ... + def mergeBlockFormat(self, modifier:PySide2.QtGui.QTextBlockFormat) -> None: ... + def mergeCharFormat(self, modifier:PySide2.QtGui.QTextCharFormat) -> None: ... + def movePosition(self, op:PySide2.QtGui.QTextCursor.MoveOperation, arg__2:PySide2.QtGui.QTextCursor.MoveMode=..., n:int=...) -> bool: ... + def position(self) -> int: ... + def positionInBlock(self) -> int: ... + def removeSelectedText(self) -> None: ... + def select(self, selection:PySide2.QtGui.QTextCursor.SelectionType) -> None: ... + def selectedTableCells(self) -> typing.Tuple: ... + def selectedText(self) -> str: ... + def selection(self) -> PySide2.QtGui.QTextDocumentFragment: ... + def selectionEnd(self) -> int: ... + def selectionStart(self) -> int: ... + def setBlockCharFormat(self, format:PySide2.QtGui.QTextCharFormat) -> None: ... + def setBlockFormat(self, format:PySide2.QtGui.QTextBlockFormat) -> None: ... + def setCharFormat(self, format:PySide2.QtGui.QTextCharFormat) -> None: ... + def setKeepPositionOnInsert(self, b:bool) -> None: ... + def setPosition(self, pos:int, mode:PySide2.QtGui.QTextCursor.MoveMode=...) -> None: ... + def setVerticalMovementX(self, x:int) -> None: ... + def setVisualNavigation(self, b:bool) -> None: ... + def swap(self, other:PySide2.QtGui.QTextCursor) -> None: ... + def verticalMovementX(self) -> int: ... + def visualNavigation(self) -> bool: ... + + +class QTextDocument(PySide2.QtCore.QObject): + DocumentTitle : QTextDocument = ... # 0x0 + MarkdownDialectCommonMark: QTextDocument = ... # 0x0 + UnknownResource : QTextDocument = ... # 0x0 + DocumentUrl : QTextDocument = ... # 0x1 + FindBackward : QTextDocument = ... # 0x1 + HtmlResource : QTextDocument = ... # 0x1 + UndoStack : QTextDocument = ... # 0x1 + FindCaseSensitively : QTextDocument = ... # 0x2 + ImageResource : QTextDocument = ... # 0x2 + RedoStack : QTextDocument = ... # 0x2 + StyleSheetResource : QTextDocument = ... # 0x3 + UndoAndRedoStacks : QTextDocument = ... # 0x3 + FindWholeWords : QTextDocument = ... # 0x4 + MarkdownResource : QTextDocument = ... # 0x4 + MarkdownNoHTML : QTextDocument = ... # 0x60 + UserResource : QTextDocument = ... # 0x64 + MarkdownDialectGitHub : QTextDocument = ... # 0xf0c + + class FindFlag(object): + FindBackward : QTextDocument.FindFlag = ... # 0x1 + FindCaseSensitively : QTextDocument.FindFlag = ... # 0x2 + FindWholeWords : QTextDocument.FindFlag = ... # 0x4 + + class FindFlags(object): ... + + class MarkdownFeature(object): + MarkdownDialectCommonMark: QTextDocument.MarkdownFeature = ... # 0x0 + MarkdownNoHTML : QTextDocument.MarkdownFeature = ... # 0x60 + MarkdownDialectGitHub : QTextDocument.MarkdownFeature = ... # 0xf0c + + class MarkdownFeatures(object): ... + + class MetaInformation(object): + DocumentTitle : QTextDocument.MetaInformation = ... # 0x0 + DocumentUrl : QTextDocument.MetaInformation = ... # 0x1 + + class ResourceType(object): + UnknownResource : QTextDocument.ResourceType = ... # 0x0 + HtmlResource : QTextDocument.ResourceType = ... # 0x1 + ImageResource : QTextDocument.ResourceType = ... # 0x2 + StyleSheetResource : QTextDocument.ResourceType = ... # 0x3 + MarkdownResource : QTextDocument.ResourceType = ... # 0x4 + UserResource : QTextDocument.ResourceType = ... # 0x64 + + class Stacks(object): + UndoStack : QTextDocument.Stacks = ... # 0x1 + RedoStack : QTextDocument.Stacks = ... # 0x2 + UndoAndRedoStacks : QTextDocument.Stacks = ... # 0x3 + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, text:str, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def addResource(self, type:int, name:PySide2.QtCore.QUrl, resource:typing.Any) -> None: ... + def adjustSize(self) -> None: ... + def allFormats(self) -> typing.List: ... + def availableRedoSteps(self) -> int: ... + def availableUndoSteps(self) -> int: ... + def baseUrl(self) -> PySide2.QtCore.QUrl: ... + def begin(self) -> PySide2.QtGui.QTextBlock: ... + def blockCount(self) -> int: ... + def characterAt(self, pos:int) -> str: ... + def characterCount(self) -> int: ... + def clear(self) -> None: ... + def clearUndoRedoStacks(self, historyToClear:PySide2.QtGui.QTextDocument.Stacks=...) -> None: ... + def clone(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> PySide2.QtGui.QTextDocument: ... + def createObject(self, f:PySide2.QtGui.QTextFormat) -> PySide2.QtGui.QTextObject: ... + def defaultCursorMoveStyle(self) -> PySide2.QtCore.Qt.CursorMoveStyle: ... + def defaultFont(self) -> PySide2.QtGui.QFont: ... + def defaultStyleSheet(self) -> str: ... + def defaultTextOption(self) -> PySide2.QtGui.QTextOption: ... + def documentLayout(self) -> PySide2.QtGui.QAbstractTextDocumentLayout: ... + def documentMargin(self) -> float: ... + def drawContents(self, painter:PySide2.QtGui.QPainter, rect:PySide2.QtCore.QRectF=...) -> None: ... + def end(self) -> PySide2.QtGui.QTextBlock: ... + @typing.overload + def find(self, expr:PySide2.QtCore.QRegExp, cursor:PySide2.QtGui.QTextCursor, options:PySide2.QtGui.QTextDocument.FindFlags=...) -> PySide2.QtGui.QTextCursor: ... + @typing.overload + def find(self, expr:PySide2.QtCore.QRegExp, from_:int=..., options:PySide2.QtGui.QTextDocument.FindFlags=...) -> PySide2.QtGui.QTextCursor: ... + @typing.overload + def find(self, expr:PySide2.QtCore.QRegularExpression, cursor:PySide2.QtGui.QTextCursor, options:PySide2.QtGui.QTextDocument.FindFlags=...) -> PySide2.QtGui.QTextCursor: ... + @typing.overload + def find(self, expr:PySide2.QtCore.QRegularExpression, from_:int=..., options:PySide2.QtGui.QTextDocument.FindFlags=...) -> PySide2.QtGui.QTextCursor: ... + @typing.overload + def find(self, subString:str, cursor:PySide2.QtGui.QTextCursor, options:PySide2.QtGui.QTextDocument.FindFlags=...) -> PySide2.QtGui.QTextCursor: ... + @typing.overload + def find(self, subString:str, from_:int=..., options:PySide2.QtGui.QTextDocument.FindFlags=...) -> PySide2.QtGui.QTextCursor: ... + def findBlock(self, pos:int) -> PySide2.QtGui.QTextBlock: ... + def findBlockByLineNumber(self, blockNumber:int) -> PySide2.QtGui.QTextBlock: ... + def findBlockByNumber(self, blockNumber:int) -> PySide2.QtGui.QTextBlock: ... + def firstBlock(self) -> PySide2.QtGui.QTextBlock: ... + def frameAt(self, pos:int) -> PySide2.QtGui.QTextFrame: ... + def idealWidth(self) -> float: ... + def indentWidth(self) -> float: ... + def isEmpty(self) -> bool: ... + def isModified(self) -> bool: ... + def isRedoAvailable(self) -> bool: ... + def isUndoAvailable(self) -> bool: ... + def isUndoRedoEnabled(self) -> bool: ... + def lastBlock(self) -> PySide2.QtGui.QTextBlock: ... + def lineCount(self) -> int: ... + def loadResource(self, type:int, name:PySide2.QtCore.QUrl) -> typing.Any: ... + def markContentsDirty(self, from_:int, length:int) -> None: ... + def maximumBlockCount(self) -> int: ... + def metaInformation(self, info:PySide2.QtGui.QTextDocument.MetaInformation) -> str: ... + def object(self, objectIndex:int) -> PySide2.QtGui.QTextObject: ... + def objectForFormat(self, arg__1:PySide2.QtGui.QTextFormat) -> PySide2.QtGui.QTextObject: ... + def pageCount(self) -> int: ... + def pageSize(self) -> PySide2.QtCore.QSizeF: ... + def print_(self, printer:PySide2.QtGui.QPagedPaintDevice) -> None: ... + @typing.overload + def redo(self) -> None: ... + @typing.overload + def redo(self, cursor:PySide2.QtGui.QTextCursor) -> None: ... + def resource(self, type:int, name:PySide2.QtCore.QUrl) -> typing.Any: ... + def revision(self) -> int: ... + def rootFrame(self) -> PySide2.QtGui.QTextFrame: ... + def setBaseUrl(self, url:PySide2.QtCore.QUrl) -> None: ... + def setDefaultCursorMoveStyle(self, style:PySide2.QtCore.Qt.CursorMoveStyle) -> None: ... + def setDefaultFont(self, font:PySide2.QtGui.QFont) -> None: ... + def setDefaultStyleSheet(self, sheet:str) -> None: ... + def setDefaultTextOption(self, option:PySide2.QtGui.QTextOption) -> None: ... + def setDocumentLayout(self, layout:PySide2.QtGui.QAbstractTextDocumentLayout) -> None: ... + def setDocumentMargin(self, margin:float) -> None: ... + def setHtml(self, html:str) -> None: ... + def setIndentWidth(self, width:float) -> None: ... + def setMarkdown(self, markdown:str, features:PySide2.QtGui.QTextDocument.MarkdownFeatures=...) -> None: ... + def setMaximumBlockCount(self, maximum:int) -> None: ... + def setMetaInformation(self, info:PySide2.QtGui.QTextDocument.MetaInformation, arg__2:str) -> None: ... + def setModified(self, m:bool=...) -> None: ... + def setPageSize(self, size:PySide2.QtCore.QSizeF) -> None: ... + def setPlainText(self, text:str) -> None: ... + def setTextWidth(self, width:float) -> None: ... + def setUndoRedoEnabled(self, enable:bool) -> None: ... + def setUseDesignMetrics(self, b:bool) -> None: ... + def size(self) -> PySide2.QtCore.QSizeF: ... + def textWidth(self) -> float: ... + def toHtml(self, encoding:PySide2.QtCore.QByteArray=...) -> str: ... + def toMarkdown(self, features:PySide2.QtGui.QTextDocument.MarkdownFeatures=...) -> str: ... + def toPlainText(self) -> str: ... + def toRawText(self) -> str: ... + @typing.overload + def undo(self) -> None: ... + @typing.overload + def undo(self, cursor:PySide2.QtGui.QTextCursor) -> None: ... + def useDesignMetrics(self) -> bool: ... + + +class QTextDocumentFragment(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, document:PySide2.QtGui.QTextDocument) -> None: ... + @typing.overload + def __init__(self, range:PySide2.QtGui.QTextCursor) -> None: ... + @typing.overload + def __init__(self, rhs:PySide2.QtGui.QTextDocumentFragment) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @typing.overload + @staticmethod + def fromHtml(html:str) -> PySide2.QtGui.QTextDocumentFragment: ... + @typing.overload + @staticmethod + def fromHtml(html:str, resourceProvider:PySide2.QtGui.QTextDocument) -> PySide2.QtGui.QTextDocumentFragment: ... + @staticmethod + def fromPlainText(plainText:str) -> PySide2.QtGui.QTextDocumentFragment: ... + def isEmpty(self) -> bool: ... + def toHtml(self, encoding:PySide2.QtCore.QByteArray=...) -> str: ... + def toPlainText(self) -> str: ... + + +class QTextDocumentWriter(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, device:PySide2.QtCore.QIODevice, format:PySide2.QtCore.QByteArray) -> None: ... + @typing.overload + def __init__(self, fileName:str, format:PySide2.QtCore.QByteArray=...) -> None: ... + + def codec(self) -> PySide2.QtCore.QTextCodec: ... + def device(self) -> PySide2.QtCore.QIODevice: ... + def fileName(self) -> str: ... + def format(self) -> PySide2.QtCore.QByteArray: ... + def setCodec(self, codec:PySide2.QtCore.QTextCodec) -> None: ... + def setDevice(self, device:PySide2.QtCore.QIODevice) -> None: ... + def setFileName(self, fileName:str) -> None: ... + def setFormat(self, format:PySide2.QtCore.QByteArray) -> None: ... + @staticmethod + def supportedDocumentFormats() -> typing.List: ... + @typing.overload + def write(self, document:PySide2.QtGui.QTextDocument) -> bool: ... + @typing.overload + def write(self, fragment:PySide2.QtGui.QTextDocumentFragment) -> bool: ... + + +class QTextFormat(Shiboken.Object): + InvalidFormat : QTextFormat = ... # -0x1 + NoObject : QTextFormat = ... # 0x0 + ObjectIndex : QTextFormat = ... # 0x0 + PageBreak_Auto : QTextFormat = ... # 0x0 + BlockFormat : QTextFormat = ... # 0x1 + ImageObject : QTextFormat = ... # 0x1 + PageBreak_AlwaysBefore : QTextFormat = ... # 0x1 + CharFormat : QTextFormat = ... # 0x2 + TableObject : QTextFormat = ... # 0x2 + ListFormat : QTextFormat = ... # 0x3 + TableCellObject : QTextFormat = ... # 0x3 + TableFormat : QTextFormat = ... # 0x4 + FrameFormat : QTextFormat = ... # 0x5 + PageBreak_AlwaysAfter : QTextFormat = ... # 0x10 + UserFormat : QTextFormat = ... # 0x64 + CssFloat : QTextFormat = ... # 0x800 + LayoutDirection : QTextFormat = ... # 0x801 + OutlinePen : QTextFormat = ... # 0x810 + BackgroundBrush : QTextFormat = ... # 0x820 + ForegroundBrush : QTextFormat = ... # 0x821 + BackgroundImageUrl : QTextFormat = ... # 0x823 + UserObject : QTextFormat = ... # 0x1000 + BlockAlignment : QTextFormat = ... # 0x1010 + BlockTopMargin : QTextFormat = ... # 0x1030 + BlockBottomMargin : QTextFormat = ... # 0x1031 + BlockLeftMargin : QTextFormat = ... # 0x1032 + BlockRightMargin : QTextFormat = ... # 0x1033 + TextIndent : QTextFormat = ... # 0x1034 + TabPositions : QTextFormat = ... # 0x1035 + BlockIndent : QTextFormat = ... # 0x1040 + LineHeight : QTextFormat = ... # 0x1048 + LineHeightType : QTextFormat = ... # 0x1049 + BlockNonBreakableLines : QTextFormat = ... # 0x1050 + BlockTrailingHorizontalRulerWidth: QTextFormat = ... # 0x1060 + HeadingLevel : QTextFormat = ... # 0x1070 + BlockQuoteLevel : QTextFormat = ... # 0x1080 + BlockCodeLanguage : QTextFormat = ... # 0x1090 + BlockCodeFence : QTextFormat = ... # 0x1091 + BlockMarker : QTextFormat = ... # 0x10a0 + FirstFontProperty : QTextFormat = ... # 0x1fe0 + FontCapitalization : QTextFormat = ... # 0x1fe0 + FontLetterSpacing : QTextFormat = ... # 0x1fe1 + FontWordSpacing : QTextFormat = ... # 0x1fe2 + FontStyleHint : QTextFormat = ... # 0x1fe3 + FontStyleStrategy : QTextFormat = ... # 0x1fe4 + FontKerning : QTextFormat = ... # 0x1fe5 + FontHintingPreference : QTextFormat = ... # 0x1fe6 + FontFamilies : QTextFormat = ... # 0x1fe7 + FontStyleName : QTextFormat = ... # 0x1fe8 + FontFamily : QTextFormat = ... # 0x2000 + FontPointSize : QTextFormat = ... # 0x2001 + FontSizeAdjustment : QTextFormat = ... # 0x2002 + FontSizeIncrement : QTextFormat = ... # 0x2002 + FontWeight : QTextFormat = ... # 0x2003 + FontItalic : QTextFormat = ... # 0x2004 + FontUnderline : QTextFormat = ... # 0x2005 + FontOverline : QTextFormat = ... # 0x2006 + FontStrikeOut : QTextFormat = ... # 0x2007 + FontFixedPitch : QTextFormat = ... # 0x2008 + FontPixelSize : QTextFormat = ... # 0x2009 + LastFontProperty : QTextFormat = ... # 0x2009 + TextUnderlineColor : QTextFormat = ... # 0x2010 + TextVerticalAlignment : QTextFormat = ... # 0x2021 + TextOutline : QTextFormat = ... # 0x2022 + TextUnderlineStyle : QTextFormat = ... # 0x2023 + TextToolTip : QTextFormat = ... # 0x2024 + IsAnchor : QTextFormat = ... # 0x2030 + AnchorHref : QTextFormat = ... # 0x2031 + AnchorName : QTextFormat = ... # 0x2032 + FontLetterSpacingType : QTextFormat = ... # 0x2033 + FontStretch : QTextFormat = ... # 0x2034 + ObjectType : QTextFormat = ... # 0x2f00 + ListStyle : QTextFormat = ... # 0x3000 + ListIndent : QTextFormat = ... # 0x3001 + ListNumberPrefix : QTextFormat = ... # 0x3002 + ListNumberSuffix : QTextFormat = ... # 0x3003 + FrameBorder : QTextFormat = ... # 0x4000 + FrameMargin : QTextFormat = ... # 0x4001 + FramePadding : QTextFormat = ... # 0x4002 + FrameWidth : QTextFormat = ... # 0x4003 + FrameHeight : QTextFormat = ... # 0x4004 + FrameTopMargin : QTextFormat = ... # 0x4005 + FrameBottomMargin : QTextFormat = ... # 0x4006 + FrameLeftMargin : QTextFormat = ... # 0x4007 + FrameRightMargin : QTextFormat = ... # 0x4008 + FrameBorderBrush : QTextFormat = ... # 0x4009 + FrameBorderStyle : QTextFormat = ... # 0x4010 + TableColumns : QTextFormat = ... # 0x4100 + TableColumnWidthConstraints: QTextFormat = ... # 0x4101 + TableCellSpacing : QTextFormat = ... # 0x4102 + TableCellPadding : QTextFormat = ... # 0x4103 + TableHeaderRowCount : QTextFormat = ... # 0x4104 + TableBorderCollapse : QTextFormat = ... # 0x4105 + TableCellRowSpan : QTextFormat = ... # 0x4810 + TableCellColumnSpan : QTextFormat = ... # 0x4811 + TableCellTopPadding : QTextFormat = ... # 0x4812 + TableCellBottomPadding : QTextFormat = ... # 0x4813 + TableCellLeftPadding : QTextFormat = ... # 0x4814 + TableCellRightPadding : QTextFormat = ... # 0x4815 + TableCellTopBorder : QTextFormat = ... # 0x4816 + TableCellBottomBorder : QTextFormat = ... # 0x4817 + TableCellLeftBorder : QTextFormat = ... # 0x4818 + TableCellRightBorder : QTextFormat = ... # 0x4819 + TableCellTopBorderStyle : QTextFormat = ... # 0x481a + TableCellBottomBorderStyle: QTextFormat = ... # 0x481b + TableCellLeftBorderStyle : QTextFormat = ... # 0x481c + TableCellRightBorderStyle: QTextFormat = ... # 0x481d + TableCellTopBorderBrush : QTextFormat = ... # 0x481e + TableCellBottomBorderBrush: QTextFormat = ... # 0x481f + TableCellLeftBorderBrush : QTextFormat = ... # 0x4820 + TableCellRightBorderBrush: QTextFormat = ... # 0x4821 + ImageName : QTextFormat = ... # 0x5000 + ImageTitle : QTextFormat = ... # 0x5001 + ImageAltText : QTextFormat = ... # 0x5002 + ImageWidth : QTextFormat = ... # 0x5010 + ImageHeight : QTextFormat = ... # 0x5011 + ImageQuality : QTextFormat = ... # 0x5014 + FullWidthSelection : QTextFormat = ... # 0x6000 + PageBreakPolicy : QTextFormat = ... # 0x7000 + UserProperty : QTextFormat = ... # 0x100000 + + class FormatType(object): + InvalidFormat : QTextFormat.FormatType = ... # -0x1 + BlockFormat : QTextFormat.FormatType = ... # 0x1 + CharFormat : QTextFormat.FormatType = ... # 0x2 + ListFormat : QTextFormat.FormatType = ... # 0x3 + TableFormat : QTextFormat.FormatType = ... # 0x4 + FrameFormat : QTextFormat.FormatType = ... # 0x5 + UserFormat : QTextFormat.FormatType = ... # 0x64 + + class ObjectTypes(object): + NoObject : QTextFormat.ObjectTypes = ... # 0x0 + ImageObject : QTextFormat.ObjectTypes = ... # 0x1 + TableObject : QTextFormat.ObjectTypes = ... # 0x2 + TableCellObject : QTextFormat.ObjectTypes = ... # 0x3 + UserObject : QTextFormat.ObjectTypes = ... # 0x1000 + + class PageBreakFlag(object): + PageBreak_Auto : QTextFormat.PageBreakFlag = ... # 0x0 + PageBreak_AlwaysBefore : QTextFormat.PageBreakFlag = ... # 0x1 + PageBreak_AlwaysAfter : QTextFormat.PageBreakFlag = ... # 0x10 + + class PageBreakFlags(object): ... + + class Property(object): + ObjectIndex : QTextFormat.Property = ... # 0x0 + CssFloat : QTextFormat.Property = ... # 0x800 + LayoutDirection : QTextFormat.Property = ... # 0x801 + OutlinePen : QTextFormat.Property = ... # 0x810 + BackgroundBrush : QTextFormat.Property = ... # 0x820 + ForegroundBrush : QTextFormat.Property = ... # 0x821 + BackgroundImageUrl : QTextFormat.Property = ... # 0x823 + BlockAlignment : QTextFormat.Property = ... # 0x1010 + BlockTopMargin : QTextFormat.Property = ... # 0x1030 + BlockBottomMargin : QTextFormat.Property = ... # 0x1031 + BlockLeftMargin : QTextFormat.Property = ... # 0x1032 + BlockRightMargin : QTextFormat.Property = ... # 0x1033 + TextIndent : QTextFormat.Property = ... # 0x1034 + TabPositions : QTextFormat.Property = ... # 0x1035 + BlockIndent : QTextFormat.Property = ... # 0x1040 + LineHeight : QTextFormat.Property = ... # 0x1048 + LineHeightType : QTextFormat.Property = ... # 0x1049 + BlockNonBreakableLines : QTextFormat.Property = ... # 0x1050 + BlockTrailingHorizontalRulerWidth: QTextFormat.Property = ... # 0x1060 + HeadingLevel : QTextFormat.Property = ... # 0x1070 + BlockQuoteLevel : QTextFormat.Property = ... # 0x1080 + BlockCodeLanguage : QTextFormat.Property = ... # 0x1090 + BlockCodeFence : QTextFormat.Property = ... # 0x1091 + BlockMarker : QTextFormat.Property = ... # 0x10a0 + FirstFontProperty : QTextFormat.Property = ... # 0x1fe0 + FontCapitalization : QTextFormat.Property = ... # 0x1fe0 + FontLetterSpacing : QTextFormat.Property = ... # 0x1fe1 + FontWordSpacing : QTextFormat.Property = ... # 0x1fe2 + FontStyleHint : QTextFormat.Property = ... # 0x1fe3 + FontStyleStrategy : QTextFormat.Property = ... # 0x1fe4 + FontKerning : QTextFormat.Property = ... # 0x1fe5 + FontHintingPreference : QTextFormat.Property = ... # 0x1fe6 + FontFamilies : QTextFormat.Property = ... # 0x1fe7 + FontStyleName : QTextFormat.Property = ... # 0x1fe8 + FontFamily : QTextFormat.Property = ... # 0x2000 + FontPointSize : QTextFormat.Property = ... # 0x2001 + FontSizeAdjustment : QTextFormat.Property = ... # 0x2002 + FontSizeIncrement : QTextFormat.Property = ... # 0x2002 + FontWeight : QTextFormat.Property = ... # 0x2003 + FontItalic : QTextFormat.Property = ... # 0x2004 + FontUnderline : QTextFormat.Property = ... # 0x2005 + FontOverline : QTextFormat.Property = ... # 0x2006 + FontStrikeOut : QTextFormat.Property = ... # 0x2007 + FontFixedPitch : QTextFormat.Property = ... # 0x2008 + FontPixelSize : QTextFormat.Property = ... # 0x2009 + LastFontProperty : QTextFormat.Property = ... # 0x2009 + TextUnderlineColor : QTextFormat.Property = ... # 0x2010 + TextVerticalAlignment : QTextFormat.Property = ... # 0x2021 + TextOutline : QTextFormat.Property = ... # 0x2022 + TextUnderlineStyle : QTextFormat.Property = ... # 0x2023 + TextToolTip : QTextFormat.Property = ... # 0x2024 + IsAnchor : QTextFormat.Property = ... # 0x2030 + AnchorHref : QTextFormat.Property = ... # 0x2031 + AnchorName : QTextFormat.Property = ... # 0x2032 + FontLetterSpacingType : QTextFormat.Property = ... # 0x2033 + FontStretch : QTextFormat.Property = ... # 0x2034 + ObjectType : QTextFormat.Property = ... # 0x2f00 + ListStyle : QTextFormat.Property = ... # 0x3000 + ListIndent : QTextFormat.Property = ... # 0x3001 + ListNumberPrefix : QTextFormat.Property = ... # 0x3002 + ListNumberSuffix : QTextFormat.Property = ... # 0x3003 + FrameBorder : QTextFormat.Property = ... # 0x4000 + FrameMargin : QTextFormat.Property = ... # 0x4001 + FramePadding : QTextFormat.Property = ... # 0x4002 + FrameWidth : QTextFormat.Property = ... # 0x4003 + FrameHeight : QTextFormat.Property = ... # 0x4004 + FrameTopMargin : QTextFormat.Property = ... # 0x4005 + FrameBottomMargin : QTextFormat.Property = ... # 0x4006 + FrameLeftMargin : QTextFormat.Property = ... # 0x4007 + FrameRightMargin : QTextFormat.Property = ... # 0x4008 + FrameBorderBrush : QTextFormat.Property = ... # 0x4009 + FrameBorderStyle : QTextFormat.Property = ... # 0x4010 + TableColumns : QTextFormat.Property = ... # 0x4100 + TableColumnWidthConstraints: QTextFormat.Property = ... # 0x4101 + TableCellSpacing : QTextFormat.Property = ... # 0x4102 + TableCellPadding : QTextFormat.Property = ... # 0x4103 + TableHeaderRowCount : QTextFormat.Property = ... # 0x4104 + TableBorderCollapse : QTextFormat.Property = ... # 0x4105 + TableCellRowSpan : QTextFormat.Property = ... # 0x4810 + TableCellColumnSpan : QTextFormat.Property = ... # 0x4811 + TableCellTopPadding : QTextFormat.Property = ... # 0x4812 + TableCellBottomPadding : QTextFormat.Property = ... # 0x4813 + TableCellLeftPadding : QTextFormat.Property = ... # 0x4814 + TableCellRightPadding : QTextFormat.Property = ... # 0x4815 + TableCellTopBorder : QTextFormat.Property = ... # 0x4816 + TableCellBottomBorder : QTextFormat.Property = ... # 0x4817 + TableCellLeftBorder : QTextFormat.Property = ... # 0x4818 + TableCellRightBorder : QTextFormat.Property = ... # 0x4819 + TableCellTopBorderStyle : QTextFormat.Property = ... # 0x481a + TableCellBottomBorderStyle: QTextFormat.Property = ... # 0x481b + TableCellLeftBorderStyle : QTextFormat.Property = ... # 0x481c + TableCellRightBorderStyle: QTextFormat.Property = ... # 0x481d + TableCellTopBorderBrush : QTextFormat.Property = ... # 0x481e + TableCellBottomBorderBrush: QTextFormat.Property = ... # 0x481f + TableCellLeftBorderBrush : QTextFormat.Property = ... # 0x4820 + TableCellRightBorderBrush: QTextFormat.Property = ... # 0x4821 + ImageName : QTextFormat.Property = ... # 0x5000 + ImageTitle : QTextFormat.Property = ... # 0x5001 + ImageAltText : QTextFormat.Property = ... # 0x5002 + ImageWidth : QTextFormat.Property = ... # 0x5010 + ImageHeight : QTextFormat.Property = ... # 0x5011 + ImageQuality : QTextFormat.Property = ... # 0x5014 + FullWidthSelection : QTextFormat.Property = ... # 0x6000 + PageBreakPolicy : QTextFormat.Property = ... # 0x7000 + UserProperty : QTextFormat.Property = ... # 0x100000 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, rhs:PySide2.QtGui.QTextFormat) -> None: ... + @typing.overload + def __init__(self, type:int) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __lshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __rshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def background(self) -> PySide2.QtGui.QBrush: ... + def boolProperty(self, propertyId:int) -> bool: ... + def brushProperty(self, propertyId:int) -> PySide2.QtGui.QBrush: ... + def clearBackground(self) -> None: ... + def clearForeground(self) -> None: ... + def clearProperty(self, propertyId:int) -> None: ... + def colorProperty(self, propertyId:int) -> PySide2.QtGui.QColor: ... + def doubleProperty(self, propertyId:int) -> float: ... + def foreground(self) -> PySide2.QtGui.QBrush: ... + def hasProperty(self, propertyId:int) -> bool: ... + def intProperty(self, propertyId:int) -> int: ... + def isBlockFormat(self) -> bool: ... + def isCharFormat(self) -> bool: ... + def isEmpty(self) -> bool: ... + def isFrameFormat(self) -> bool: ... + def isImageFormat(self) -> bool: ... + def isListFormat(self) -> bool: ... + def isTableCellFormat(self) -> bool: ... + def isTableFormat(self) -> bool: ... + def isValid(self) -> bool: ... + def layoutDirection(self) -> PySide2.QtCore.Qt.LayoutDirection: ... + def lengthProperty(self, propertyId:int) -> PySide2.QtGui.QTextLength: ... + def lengthVectorProperty(self, propertyId:int) -> typing.List: ... + def merge(self, other:PySide2.QtGui.QTextFormat) -> None: ... + def objectIndex(self) -> int: ... + def objectType(self) -> int: ... + def penProperty(self, propertyId:int) -> PySide2.QtGui.QPen: ... + def properties(self) -> typing.Dict: ... + def property(self, propertyId:int) -> typing.Any: ... + def propertyCount(self) -> int: ... + def setBackground(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setForeground(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setLayoutDirection(self, direction:PySide2.QtCore.Qt.LayoutDirection) -> None: ... + def setObjectIndex(self, object:int) -> None: ... + def setObjectType(self, type:int) -> None: ... + @typing.overload + def setProperty(self, propertyId:int, lengths:typing.List) -> None: ... + @typing.overload + def setProperty(self, propertyId:int, value:typing.Any) -> None: ... + def stringProperty(self, propertyId:int) -> str: ... + def swap(self, other:PySide2.QtGui.QTextFormat) -> None: ... + def toBlockFormat(self) -> PySide2.QtGui.QTextBlockFormat: ... + def toCharFormat(self) -> PySide2.QtGui.QTextCharFormat: ... + def toFrameFormat(self) -> PySide2.QtGui.QTextFrameFormat: ... + def toImageFormat(self) -> PySide2.QtGui.QTextImageFormat: ... + def toListFormat(self) -> PySide2.QtGui.QTextListFormat: ... + def toTableCellFormat(self) -> PySide2.QtGui.QTextTableCellFormat: ... + def toTableFormat(self) -> PySide2.QtGui.QTextTableFormat: ... + def type(self) -> int: ... + + +class QTextFragment(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, o:PySide2.QtGui.QTextFragment) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def charFormat(self) -> PySide2.QtGui.QTextCharFormat: ... + def charFormatIndex(self) -> int: ... + def contains(self, position:int) -> bool: ... + def isValid(self) -> bool: ... + def length(self) -> int: ... + def position(self) -> int: ... + def text(self) -> str: ... + + +class QTextFrame(PySide2.QtGui.QTextObject): + + class iterator(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, o:PySide2.QtGui.QTextFrame.iterator) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __iadd__(self, arg__1:int) -> PySide2.QtGui.QTextFrame.iterator: ... + def __isub__(self, arg__1:int) -> PySide2.QtGui.QTextFrame.iterator: ... + def __iter__(self) -> object: ... + def __next__(self) -> object: ... + def atEnd(self) -> bool: ... + def currentBlock(self) -> PySide2.QtGui.QTextBlock: ... + def currentFrame(self) -> PySide2.QtGui.QTextFrame: ... + def parentFrame(self) -> PySide2.QtGui.QTextFrame: ... + + def __init__(self, doc:PySide2.QtGui.QTextDocument) -> None: ... + + def __iter__(self) -> object: ... + def begin(self) -> PySide2.QtGui.QTextFrame.iterator: ... + def childFrames(self) -> typing.List: ... + def end(self) -> PySide2.QtGui.QTextFrame.iterator: ... + def firstCursorPosition(self) -> PySide2.QtGui.QTextCursor: ... + def firstPosition(self) -> int: ... + def frameFormat(self) -> PySide2.QtGui.QTextFrameFormat: ... + def lastCursorPosition(self) -> PySide2.QtGui.QTextCursor: ... + def lastPosition(self) -> int: ... + def parentFrame(self) -> PySide2.QtGui.QTextFrame: ... + def setFrameFormat(self, format:PySide2.QtGui.QTextFrameFormat) -> None: ... + + +class QTextFrameFormat(PySide2.QtGui.QTextFormat): + BorderStyle_None : QTextFrameFormat = ... # 0x0 + InFlow : QTextFrameFormat = ... # 0x0 + BorderStyle_Dotted : QTextFrameFormat = ... # 0x1 + FloatLeft : QTextFrameFormat = ... # 0x1 + BorderStyle_Dashed : QTextFrameFormat = ... # 0x2 + FloatRight : QTextFrameFormat = ... # 0x2 + BorderStyle_Solid : QTextFrameFormat = ... # 0x3 + BorderStyle_Double : QTextFrameFormat = ... # 0x4 + BorderStyle_DotDash : QTextFrameFormat = ... # 0x5 + BorderStyle_DotDotDash : QTextFrameFormat = ... # 0x6 + BorderStyle_Groove : QTextFrameFormat = ... # 0x7 + BorderStyle_Ridge : QTextFrameFormat = ... # 0x8 + BorderStyle_Inset : QTextFrameFormat = ... # 0x9 + BorderStyle_Outset : QTextFrameFormat = ... # 0xa + + class BorderStyle(object): + BorderStyle_None : QTextFrameFormat.BorderStyle = ... # 0x0 + BorderStyle_Dotted : QTextFrameFormat.BorderStyle = ... # 0x1 + BorderStyle_Dashed : QTextFrameFormat.BorderStyle = ... # 0x2 + BorderStyle_Solid : QTextFrameFormat.BorderStyle = ... # 0x3 + BorderStyle_Double : QTextFrameFormat.BorderStyle = ... # 0x4 + BorderStyle_DotDash : QTextFrameFormat.BorderStyle = ... # 0x5 + BorderStyle_DotDotDash : QTextFrameFormat.BorderStyle = ... # 0x6 + BorderStyle_Groove : QTextFrameFormat.BorderStyle = ... # 0x7 + BorderStyle_Ridge : QTextFrameFormat.BorderStyle = ... # 0x8 + BorderStyle_Inset : QTextFrameFormat.BorderStyle = ... # 0x9 + BorderStyle_Outset : QTextFrameFormat.BorderStyle = ... # 0xa + + class Position(object): + InFlow : QTextFrameFormat.Position = ... # 0x0 + FloatLeft : QTextFrameFormat.Position = ... # 0x1 + FloatRight : QTextFrameFormat.Position = ... # 0x2 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QTextFrameFormat:PySide2.QtGui.QTextFrameFormat) -> None: ... + @typing.overload + def __init__(self, fmt:PySide2.QtGui.QTextFormat) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def border(self) -> float: ... + def borderBrush(self) -> PySide2.QtGui.QBrush: ... + def borderStyle(self) -> PySide2.QtGui.QTextFrameFormat.BorderStyle: ... + def bottomMargin(self) -> float: ... + def height(self) -> PySide2.QtGui.QTextLength: ... + def isValid(self) -> bool: ... + def leftMargin(self) -> float: ... + def margin(self) -> float: ... + def padding(self) -> float: ... + def pageBreakPolicy(self) -> PySide2.QtGui.QTextFormat.PageBreakFlags: ... + def position(self) -> PySide2.QtGui.QTextFrameFormat.Position: ... + def rightMargin(self) -> float: ... + def setBorder(self, border:float) -> None: ... + def setBorderBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setBorderStyle(self, style:PySide2.QtGui.QTextFrameFormat.BorderStyle) -> None: ... + def setBottomMargin(self, margin:float) -> None: ... + @typing.overload + def setHeight(self, height:PySide2.QtGui.QTextLength) -> None: ... + @typing.overload + def setHeight(self, height:float) -> None: ... + def setLeftMargin(self, margin:float) -> None: ... + def setMargin(self, margin:float) -> None: ... + def setPadding(self, padding:float) -> None: ... + def setPageBreakPolicy(self, flags:PySide2.QtGui.QTextFormat.PageBreakFlags) -> None: ... + def setPosition(self, f:PySide2.QtGui.QTextFrameFormat.Position) -> None: ... + def setRightMargin(self, margin:float) -> None: ... + def setTopMargin(self, margin:float) -> None: ... + @typing.overload + def setWidth(self, length:PySide2.QtGui.QTextLength) -> None: ... + @typing.overload + def setWidth(self, width:float) -> None: ... + def topMargin(self) -> float: ... + def width(self) -> PySide2.QtGui.QTextLength: ... + + +class QTextImageFormat(PySide2.QtGui.QTextCharFormat): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QTextImageFormat:PySide2.QtGui.QTextImageFormat) -> None: ... + @typing.overload + def __init__(self, format:PySide2.QtGui.QTextFormat) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def height(self) -> float: ... + def isValid(self) -> bool: ... + def name(self) -> str: ... + def quality(self) -> int: ... + def setHeight(self, height:float) -> None: ... + def setName(self, name:str) -> None: ... + def setQuality(self, quality:int=...) -> None: ... + def setWidth(self, width:float) -> None: ... + def width(self) -> float: ... + + +class QTextInlineObject(Shiboken.Object): + + def __init__(self) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def ascent(self) -> float: ... + def descent(self) -> float: ... + def format(self) -> PySide2.QtGui.QTextFormat: ... + def formatIndex(self) -> int: ... + def height(self) -> float: ... + def isValid(self) -> bool: ... + def rect(self) -> PySide2.QtCore.QRectF: ... + def setAscent(self, a:float) -> None: ... + def setDescent(self, d:float) -> None: ... + def setWidth(self, w:float) -> None: ... + def textDirection(self) -> PySide2.QtCore.Qt.LayoutDirection: ... + def textPosition(self) -> int: ... + def width(self) -> float: ... + + +class QTextItem(Shiboken.Object): + Dummy : QTextItem = ... # -0x1 + RightToLeft : QTextItem = ... # 0x1 + Overline : QTextItem = ... # 0x10 + Underline : QTextItem = ... # 0x20 + StrikeOut : QTextItem = ... # 0x40 + + class RenderFlag(object): + Dummy : QTextItem.RenderFlag = ... # -0x1 + RightToLeft : QTextItem.RenderFlag = ... # 0x1 + Overline : QTextItem.RenderFlag = ... # 0x10 + Underline : QTextItem.RenderFlag = ... # 0x20 + StrikeOut : QTextItem.RenderFlag = ... # 0x40 + + class RenderFlags(object): ... + + def __init__(self) -> None: ... + + def ascent(self) -> float: ... + def descent(self) -> float: ... + def font(self) -> PySide2.QtGui.QFont: ... + def renderFlags(self) -> PySide2.QtGui.QTextItem.RenderFlags: ... + def text(self) -> str: ... + def width(self) -> float: ... + + +class QTextLayout(Shiboken.Object): + SkipCharacters : QTextLayout = ... # 0x0 + SkipWords : QTextLayout = ... # 0x1 + + class CursorMode(object): + SkipCharacters : QTextLayout.CursorMode = ... # 0x0 + SkipWords : QTextLayout.CursorMode = ... # 0x1 + + class FormatRange(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, FormatRange:PySide2.QtGui.QTextLayout.FormatRange) -> None: ... + + @staticmethod + def __copy__() -> None: ... + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, b:PySide2.QtGui.QTextBlock) -> None: ... + @typing.overload + def __init__(self, text:str) -> None: ... + @typing.overload + def __init__(self, text:str, font:PySide2.QtGui.QFont, paintdevice:typing.Optional[PySide2.QtGui.QPaintDevice]=...) -> None: ... + + def additionalFormats(self) -> typing.List: ... + def beginLayout(self) -> None: ... + def boundingRect(self) -> PySide2.QtCore.QRectF: ... + def cacheEnabled(self) -> bool: ... + def clearAdditionalFormats(self) -> None: ... + def clearFormats(self) -> None: ... + def clearLayout(self) -> None: ... + def createLine(self) -> PySide2.QtGui.QTextLine: ... + def cursorMoveStyle(self) -> PySide2.QtCore.Qt.CursorMoveStyle: ... + def draw(self, p:PySide2.QtGui.QPainter, pos:PySide2.QtCore.QPointF, selections:typing.List=..., clip:PySide2.QtCore.QRectF=...) -> None: ... + @typing.overload + def drawCursor(self, p:PySide2.QtGui.QPainter, pos:PySide2.QtCore.QPointF, cursorPosition:int) -> None: ... + @typing.overload + def drawCursor(self, p:PySide2.QtGui.QPainter, pos:PySide2.QtCore.QPointF, cursorPosition:int, width:int) -> None: ... + def endLayout(self) -> None: ... + def font(self) -> PySide2.QtGui.QFont: ... + def formats(self) -> typing.List: ... + def isValidCursorPosition(self, pos:int) -> bool: ... + def leftCursorPosition(self, oldPos:int) -> int: ... + def lineAt(self, i:int) -> PySide2.QtGui.QTextLine: ... + def lineCount(self) -> int: ... + def lineForTextPosition(self, pos:int) -> PySide2.QtGui.QTextLine: ... + def maximumWidth(self) -> float: ... + def minimumWidth(self) -> float: ... + def nextCursorPosition(self, oldPos:int, mode:PySide2.QtGui.QTextLayout.CursorMode=...) -> int: ... + def position(self) -> PySide2.QtCore.QPointF: ... + def preeditAreaPosition(self) -> int: ... + def preeditAreaText(self) -> str: ... + def previousCursorPosition(self, oldPos:int, mode:PySide2.QtGui.QTextLayout.CursorMode=...) -> int: ... + def rightCursorPosition(self, oldPos:int) -> int: ... + def setAdditionalFormats(self, overrides:typing.Sequence) -> None: ... + def setCacheEnabled(self, enable:bool) -> None: ... + def setCursorMoveStyle(self, style:PySide2.QtCore.Qt.CursorMoveStyle) -> None: ... + def setFlags(self, flags:int) -> None: ... + def setFont(self, f:PySide2.QtGui.QFont) -> None: ... + def setFormats(self, overrides:typing.List) -> None: ... + def setPosition(self, p:PySide2.QtCore.QPointF) -> None: ... + def setPreeditArea(self, position:int, text:str) -> None: ... + def setRawFont(self, rawFont:PySide2.QtGui.QRawFont) -> None: ... + def setText(self, string:str) -> None: ... + def setTextOption(self, option:PySide2.QtGui.QTextOption) -> None: ... + def text(self) -> str: ... + def textOption(self) -> PySide2.QtGui.QTextOption: ... + + +class QTextLength(Shiboken.Object): + VariableLength : QTextLength = ... # 0x0 + FixedLength : QTextLength = ... # 0x1 + PercentageLength : QTextLength = ... # 0x2 + + class Type(object): + VariableLength : QTextLength.Type = ... # 0x0 + FixedLength : QTextLength.Type = ... # 0x1 + PercentageLength : QTextLength.Type = ... # 0x2 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QTextLength:PySide2.QtGui.QTextLength) -> None: ... + @typing.overload + def __init__(self, type:PySide2.QtGui.QTextLength.Type, value:float) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __lshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __rshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def rawValue(self) -> float: ... + def type(self) -> PySide2.QtGui.QTextLength.Type: ... + def value(self, maximumLength:float) -> float: ... + + +class QTextLine(Shiboken.Object): + CursorBetweenCharacters : QTextLine = ... # 0x0 + Leading : QTextLine = ... # 0x0 + CursorOnCharacter : QTextLine = ... # 0x1 + Trailing : QTextLine = ... # 0x1 + + class CursorPosition(object): + CursorBetweenCharacters : QTextLine.CursorPosition = ... # 0x0 + CursorOnCharacter : QTextLine.CursorPosition = ... # 0x1 + + class Edge(object): + Leading : QTextLine.Edge = ... # 0x0 + Trailing : QTextLine.Edge = ... # 0x1 + + def __init__(self) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def ascent(self) -> float: ... + def cursorToX(self, cursorPos:int, edge:PySide2.QtGui.QTextLine.Edge=...) -> float: ... + def descent(self) -> float: ... + def draw(self, p:PySide2.QtGui.QPainter, point:PySide2.QtCore.QPointF, selection:typing.Optional[PySide2.QtGui.QTextLayout.FormatRange]=...) -> None: ... + def height(self) -> float: ... + def horizontalAdvance(self) -> float: ... + def isValid(self) -> bool: ... + def leading(self) -> float: ... + def leadingIncluded(self) -> bool: ... + def lineNumber(self) -> int: ... + def naturalTextRect(self) -> PySide2.QtCore.QRectF: ... + def naturalTextWidth(self) -> float: ... + def position(self) -> PySide2.QtCore.QPointF: ... + def rect(self) -> PySide2.QtCore.QRectF: ... + def setLeadingIncluded(self, included:bool) -> None: ... + def setLineWidth(self, width:float) -> None: ... + @typing.overload + def setNumColumns(self, columns:int) -> None: ... + @typing.overload + def setNumColumns(self, columns:int, alignmentWidth:float) -> None: ... + def setPosition(self, pos:PySide2.QtCore.QPointF) -> None: ... + def textLength(self) -> int: ... + def textStart(self) -> int: ... + def width(self) -> float: ... + def x(self) -> float: ... + def xToCursor(self, x:float, edge:PySide2.QtGui.QTextLine.CursorPosition=...) -> int: ... + def y(self) -> float: ... + + +class QTextList(PySide2.QtGui.QTextBlockGroup): + + def __init__(self, doc:PySide2.QtGui.QTextDocument) -> None: ... + + def add(self, block:PySide2.QtGui.QTextBlock) -> None: ... + def count(self) -> int: ... + def format(self) -> PySide2.QtGui.QTextListFormat: ... + def item(self, i:int) -> PySide2.QtGui.QTextBlock: ... + def itemNumber(self, arg__1:PySide2.QtGui.QTextBlock) -> int: ... + def itemText(self, arg__1:PySide2.QtGui.QTextBlock) -> str: ... + def remove(self, arg__1:PySide2.QtGui.QTextBlock) -> None: ... + def removeItem(self, i:int) -> None: ... + @typing.overload + def setFormat(self, format:PySide2.QtGui.QTextFormat) -> None: ... + @typing.overload + def setFormat(self, format:PySide2.QtGui.QTextListFormat) -> None: ... + + +class QTextListFormat(PySide2.QtGui.QTextFormat): + ListUpperRoman : QTextListFormat = ... # -0x8 + ListLowerRoman : QTextListFormat = ... # -0x7 + ListUpperAlpha : QTextListFormat = ... # -0x6 + ListLowerAlpha : QTextListFormat = ... # -0x5 + ListDecimal : QTextListFormat = ... # -0x4 + ListSquare : QTextListFormat = ... # -0x3 + ListCircle : QTextListFormat = ... # -0x2 + ListDisc : QTextListFormat = ... # -0x1 + ListStyleUndefined : QTextListFormat = ... # 0x0 + + class Style(object): + ListUpperRoman : QTextListFormat.Style = ... # -0x8 + ListLowerRoman : QTextListFormat.Style = ... # -0x7 + ListUpperAlpha : QTextListFormat.Style = ... # -0x6 + ListLowerAlpha : QTextListFormat.Style = ... # -0x5 + ListDecimal : QTextListFormat.Style = ... # -0x4 + ListSquare : QTextListFormat.Style = ... # -0x3 + ListCircle : QTextListFormat.Style = ... # -0x2 + ListDisc : QTextListFormat.Style = ... # -0x1 + ListStyleUndefined : QTextListFormat.Style = ... # 0x0 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QTextListFormat:PySide2.QtGui.QTextListFormat) -> None: ... + @typing.overload + def __init__(self, fmt:PySide2.QtGui.QTextFormat) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def indent(self) -> int: ... + def isValid(self) -> bool: ... + def numberPrefix(self) -> str: ... + def numberSuffix(self) -> str: ... + def setIndent(self, indent:int) -> None: ... + def setNumberPrefix(self, numberPrefix:str) -> None: ... + def setNumberSuffix(self, numberSuffix:str) -> None: ... + def setStyle(self, style:PySide2.QtGui.QTextListFormat.Style) -> None: ... + def style(self) -> PySide2.QtGui.QTextListFormat.Style: ... + + +class QTextObject(PySide2.QtCore.QObject): + + def __init__(self, doc:PySide2.QtGui.QTextDocument) -> None: ... + + def document(self) -> PySide2.QtGui.QTextDocument: ... + def format(self) -> PySide2.QtGui.QTextFormat: ... + def formatIndex(self) -> int: ... + def objectIndex(self) -> int: ... + def setFormat(self, format:PySide2.QtGui.QTextFormat) -> None: ... + + +class QTextObjectInterface(Shiboken.Object): + + def __init__(self) -> None: ... + + def drawObject(self, painter:PySide2.QtGui.QPainter, rect:PySide2.QtCore.QRectF, doc:PySide2.QtGui.QTextDocument, posInDocument:int, format:PySide2.QtGui.QTextFormat) -> None: ... + def intrinsicSize(self, doc:PySide2.QtGui.QTextDocument, posInDocument:int, format:PySide2.QtGui.QTextFormat) -> PySide2.QtCore.QSizeF: ... + + +class QTextOption(Shiboken.Object): + IncludeTrailingSpaces : QTextOption = ... # -0x80000000 + LeftTab : QTextOption = ... # 0x0 + NoWrap : QTextOption = ... # 0x0 + RightTab : QTextOption = ... # 0x1 + ShowTabsAndSpaces : QTextOption = ... # 0x1 + WordWrap : QTextOption = ... # 0x1 + CenterTab : QTextOption = ... # 0x2 + ManualWrap : QTextOption = ... # 0x2 + ShowLineAndParagraphSeparators: QTextOption = ... # 0x2 + DelimiterTab : QTextOption = ... # 0x3 + WrapAnywhere : QTextOption = ... # 0x3 + AddSpaceForLineAndParagraphSeparators: QTextOption = ... # 0x4 + WrapAtWordBoundaryOrAnywhere: QTextOption = ... # 0x4 + SuppressColors : QTextOption = ... # 0x8 + ShowDocumentTerminator : QTextOption = ... # 0x10 + + class Flag(object): + IncludeTrailingSpaces : QTextOption.Flag = ... # -0x80000000 + ShowTabsAndSpaces : QTextOption.Flag = ... # 0x1 + ShowLineAndParagraphSeparators: QTextOption.Flag = ... # 0x2 + AddSpaceForLineAndParagraphSeparators: QTextOption.Flag = ... # 0x4 + SuppressColors : QTextOption.Flag = ... # 0x8 + ShowDocumentTerminator : QTextOption.Flag = ... # 0x10 + + class Flags(object): ... + + class Tab(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, Tab:PySide2.QtGui.QTextOption.Tab) -> None: ... + @typing.overload + def __init__(self, pos:float, tabType:PySide2.QtGui.QTextOption.TabType, delim:str=...) -> None: ... + + @staticmethod + def __copy__() -> None: ... + + class TabType(object): + LeftTab : QTextOption.TabType = ... # 0x0 + RightTab : QTextOption.TabType = ... # 0x1 + CenterTab : QTextOption.TabType = ... # 0x2 + DelimiterTab : QTextOption.TabType = ... # 0x3 + + class WrapMode(object): + NoWrap : QTextOption.WrapMode = ... # 0x0 + WordWrap : QTextOption.WrapMode = ... # 0x1 + ManualWrap : QTextOption.WrapMode = ... # 0x2 + WrapAnywhere : QTextOption.WrapMode = ... # 0x3 + WrapAtWordBoundaryOrAnywhere: QTextOption.WrapMode = ... # 0x4 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, alignment:PySide2.QtCore.Qt.Alignment) -> None: ... + @typing.overload + def __init__(self, o:PySide2.QtGui.QTextOption) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def alignment(self) -> PySide2.QtCore.Qt.Alignment: ... + def flags(self) -> PySide2.QtGui.QTextOption.Flags: ... + def setAlignment(self, alignment:PySide2.QtCore.Qt.Alignment) -> None: ... + def setFlags(self, flags:PySide2.QtGui.QTextOption.Flags) -> None: ... + def setTabArray(self, tabStops:typing.Sequence) -> None: ... + def setTabStop(self, tabStop:float) -> None: ... + def setTabStopDistance(self, tabStopDistance:float) -> None: ... + def setTabs(self, tabStops:typing.Sequence) -> None: ... + def setTextDirection(self, aDirection:PySide2.QtCore.Qt.LayoutDirection) -> None: ... + def setUseDesignMetrics(self, b:bool) -> None: ... + def setWrapMode(self, wrap:PySide2.QtGui.QTextOption.WrapMode) -> None: ... + def tabArray(self) -> typing.List: ... + def tabStop(self) -> float: ... + def tabStopDistance(self) -> float: ... + def tabs(self) -> typing.List: ... + def textDirection(self) -> PySide2.QtCore.Qt.LayoutDirection: ... + def useDesignMetrics(self) -> bool: ... + def wrapMode(self) -> PySide2.QtGui.QTextOption.WrapMode: ... + + +class QTextTable(PySide2.QtGui.QTextFrame): + + def __init__(self, doc:PySide2.QtGui.QTextDocument) -> None: ... + + def appendColumns(self, count:int) -> None: ... + def appendRows(self, count:int) -> None: ... + @typing.overload + def cellAt(self, c:PySide2.QtGui.QTextCursor) -> PySide2.QtGui.QTextTableCell: ... + @typing.overload + def cellAt(self, position:int) -> PySide2.QtGui.QTextTableCell: ... + @typing.overload + def cellAt(self, row:int, col:int) -> PySide2.QtGui.QTextTableCell: ... + def columns(self) -> int: ... + def format(self) -> PySide2.QtGui.QTextTableFormat: ... + def insertColumns(self, pos:int, num:int) -> None: ... + def insertRows(self, pos:int, num:int) -> None: ... + @typing.overload + def mergeCells(self, cursor:PySide2.QtGui.QTextCursor) -> None: ... + @typing.overload + def mergeCells(self, row:int, col:int, numRows:int, numCols:int) -> None: ... + def removeColumns(self, pos:int, num:int) -> None: ... + def removeRows(self, pos:int, num:int) -> None: ... + def resize(self, rows:int, cols:int) -> None: ... + def rowEnd(self, c:PySide2.QtGui.QTextCursor) -> PySide2.QtGui.QTextCursor: ... + def rowStart(self, c:PySide2.QtGui.QTextCursor) -> PySide2.QtGui.QTextCursor: ... + def rows(self) -> int: ... + @typing.overload + def setFormat(self, format:PySide2.QtGui.QTextFormat) -> None: ... + @typing.overload + def setFormat(self, format:PySide2.QtGui.QTextTableFormat) -> None: ... + def splitCell(self, row:int, col:int, numRows:int, numCols:int) -> None: ... + + +class QTextTableCell(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, o:PySide2.QtGui.QTextTableCell) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def begin(self) -> PySide2.QtGui.QTextFrame.iterator: ... + def column(self) -> int: ... + def columnSpan(self) -> int: ... + def end(self) -> PySide2.QtGui.QTextFrame.iterator: ... + def firstCursorPosition(self) -> PySide2.QtGui.QTextCursor: ... + def firstPosition(self) -> int: ... + def format(self) -> PySide2.QtGui.QTextCharFormat: ... + def isValid(self) -> bool: ... + def lastCursorPosition(self) -> PySide2.QtGui.QTextCursor: ... + def lastPosition(self) -> int: ... + def row(self) -> int: ... + def rowSpan(self) -> int: ... + def setFormat(self, format:PySide2.QtGui.QTextCharFormat) -> None: ... + def tableCellFormatIndex(self) -> int: ... + + +class QTextTableCellFormat(PySide2.QtGui.QTextCharFormat): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QTextTableCellFormat:PySide2.QtGui.QTextTableCellFormat) -> None: ... + @typing.overload + def __init__(self, fmt:PySide2.QtGui.QTextFormat) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def bottomBorder(self) -> float: ... + def bottomBorderBrush(self) -> PySide2.QtGui.QBrush: ... + def bottomBorderStyle(self) -> PySide2.QtGui.QTextFrameFormat.BorderStyle: ... + def bottomPadding(self) -> float: ... + def isValid(self) -> bool: ... + def leftBorder(self) -> float: ... + def leftBorderBrush(self) -> PySide2.QtGui.QBrush: ... + def leftBorderStyle(self) -> PySide2.QtGui.QTextFrameFormat.BorderStyle: ... + def leftPadding(self) -> float: ... + def rightBorder(self) -> float: ... + def rightBorderBrush(self) -> PySide2.QtGui.QBrush: ... + def rightBorderStyle(self) -> PySide2.QtGui.QTextFrameFormat.BorderStyle: ... + def rightPadding(self) -> float: ... + def setBorder(self, width:float) -> None: ... + def setBorderBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setBorderStyle(self, style:PySide2.QtGui.QTextFrameFormat.BorderStyle) -> None: ... + def setBottomBorder(self, width:float) -> None: ... + def setBottomBorderBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setBottomBorderStyle(self, style:PySide2.QtGui.QTextFrameFormat.BorderStyle) -> None: ... + def setBottomPadding(self, padding:float) -> None: ... + def setLeftBorder(self, width:float) -> None: ... + def setLeftBorderBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setLeftBorderStyle(self, style:PySide2.QtGui.QTextFrameFormat.BorderStyle) -> None: ... + def setLeftPadding(self, padding:float) -> None: ... + def setPadding(self, padding:float) -> None: ... + def setRightBorder(self, width:float) -> None: ... + def setRightBorderBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setRightBorderStyle(self, style:PySide2.QtGui.QTextFrameFormat.BorderStyle) -> None: ... + def setRightPadding(self, padding:float) -> None: ... + def setTopBorder(self, width:float) -> None: ... + def setTopBorderBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setTopBorderStyle(self, style:PySide2.QtGui.QTextFrameFormat.BorderStyle) -> None: ... + def setTopPadding(self, padding:float) -> None: ... + def topBorder(self) -> float: ... + def topBorderBrush(self) -> PySide2.QtGui.QBrush: ... + def topBorderStyle(self) -> PySide2.QtGui.QTextFrameFormat.BorderStyle: ... + def topPadding(self) -> float: ... + + +class QTextTableFormat(PySide2.QtGui.QTextFrameFormat): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QTextTableFormat:PySide2.QtGui.QTextTableFormat) -> None: ... + @typing.overload + def __init__(self, fmt:PySide2.QtGui.QTextFormat) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def alignment(self) -> PySide2.QtCore.Qt.Alignment: ... + def borderCollapse(self) -> bool: ... + def cellPadding(self) -> float: ... + def cellSpacing(self) -> float: ... + def clearColumnWidthConstraints(self) -> None: ... + def columnWidthConstraints(self) -> typing.List: ... + def columns(self) -> int: ... + def headerRowCount(self) -> int: ... + def isValid(self) -> bool: ... + def setAlignment(self, alignment:PySide2.QtCore.Qt.Alignment) -> None: ... + def setBorderCollapse(self, borderCollapse:bool) -> None: ... + def setCellPadding(self, padding:float) -> None: ... + def setCellSpacing(self, spacing:float) -> None: ... + def setColumnWidthConstraints(self, constraints:typing.List) -> None: ... + def setColumns(self, columns:int) -> None: ... + def setHeaderRowCount(self, count:int) -> None: ... + + +class QToolBarChangeEvent(PySide2.QtCore.QEvent): + + def __init__(self, t:bool) -> None: ... + + def toggle(self) -> bool: ... + + +class QTouchDevice(Shiboken.Object): + TouchScreen : QTouchDevice = ... # 0x0 + Position : QTouchDevice = ... # 0x1 + TouchPad : QTouchDevice = ... # 0x1 + Area : QTouchDevice = ... # 0x2 + Pressure : QTouchDevice = ... # 0x4 + Velocity : QTouchDevice = ... # 0x8 + RawPositions : QTouchDevice = ... # 0x10 + NormalizedPosition : QTouchDevice = ... # 0x20 + MouseEmulation : QTouchDevice = ... # 0x40 + + class Capabilities(object): ... + + class CapabilityFlag(object): + Position : QTouchDevice.CapabilityFlag = ... # 0x1 + Area : QTouchDevice.CapabilityFlag = ... # 0x2 + Pressure : QTouchDevice.CapabilityFlag = ... # 0x4 + Velocity : QTouchDevice.CapabilityFlag = ... # 0x8 + RawPositions : QTouchDevice.CapabilityFlag = ... # 0x10 + NormalizedPosition : QTouchDevice.CapabilityFlag = ... # 0x20 + MouseEmulation : QTouchDevice.CapabilityFlag = ... # 0x40 + + class DeviceType(object): + TouchScreen : QTouchDevice.DeviceType = ... # 0x0 + TouchPad : QTouchDevice.DeviceType = ... # 0x1 + + def __init__(self) -> None: ... + + def capabilities(self) -> PySide2.QtGui.QTouchDevice.Capabilities: ... + @staticmethod + def devices() -> typing.List: ... + def maximumTouchPoints(self) -> int: ... + def name(self) -> str: ... + def setCapabilities(self, caps:PySide2.QtGui.QTouchDevice.Capabilities) -> None: ... + def setMaximumTouchPoints(self, max:int) -> None: ... + def setName(self, name:str) -> None: ... + def setType(self, devType:PySide2.QtGui.QTouchDevice.DeviceType) -> None: ... + def type(self) -> PySide2.QtGui.QTouchDevice.DeviceType: ... + + +class QTouchEvent(PySide2.QtGui.QInputEvent): + + class TouchPoint(Shiboken.Object): + Pen : QTouchEvent.TouchPoint = ... # 0x1 + Token : QTouchEvent.TouchPoint = ... # 0x2 + + class InfoFlag(object): + Pen : QTouchEvent.TouchPoint.InfoFlag = ... # 0x1 + Token : QTouchEvent.TouchPoint.InfoFlag = ... # 0x2 + + class InfoFlags(object): ... + + @typing.overload + def __init__(self, id:int=...) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtGui.QTouchEvent.TouchPoint) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def ellipseDiameters(self) -> PySide2.QtCore.QSizeF: ... + def flags(self) -> PySide2.QtGui.QTouchEvent.TouchPoint.InfoFlags: ... + def id(self) -> int: ... + def lastNormalizedPos(self) -> PySide2.QtCore.QPointF: ... + def lastPos(self) -> PySide2.QtCore.QPointF: ... + def lastScenePos(self) -> PySide2.QtCore.QPointF: ... + def lastScreenPos(self) -> PySide2.QtCore.QPointF: ... + def normalizedPos(self) -> PySide2.QtCore.QPointF: ... + def pos(self) -> PySide2.QtCore.QPointF: ... + def pressure(self) -> float: ... + def rawScreenPositions(self) -> typing.List: ... + def rect(self) -> PySide2.QtCore.QRectF: ... + def rotation(self) -> float: ... + def scenePos(self) -> PySide2.QtCore.QPointF: ... + def sceneRect(self) -> PySide2.QtCore.QRectF: ... + def screenPos(self) -> PySide2.QtCore.QPointF: ... + def screenRect(self) -> PySide2.QtCore.QRectF: ... + def setEllipseDiameters(self, dia:PySide2.QtCore.QSizeF) -> None: ... + def setFlags(self, flags:PySide2.QtGui.QTouchEvent.TouchPoint.InfoFlags) -> None: ... + def setId(self, id:int) -> None: ... + def setLastNormalizedPos(self, lastNormalizedPos:PySide2.QtCore.QPointF) -> None: ... + def setLastPos(self, lastPos:PySide2.QtCore.QPointF) -> None: ... + def setLastScenePos(self, lastScenePos:PySide2.QtCore.QPointF) -> None: ... + def setLastScreenPos(self, lastScreenPos:PySide2.QtCore.QPointF) -> None: ... + def setNormalizedPos(self, normalizedPos:PySide2.QtCore.QPointF) -> None: ... + def setPos(self, pos:PySide2.QtCore.QPointF) -> None: ... + def setPressure(self, pressure:float) -> None: ... + def setRawScreenPositions(self, positions:typing.List) -> None: ... + def setRect(self, rect:PySide2.QtCore.QRectF) -> None: ... + def setRotation(self, angle:float) -> None: ... + def setScenePos(self, scenePos:PySide2.QtCore.QPointF) -> None: ... + def setSceneRect(self, sceneRect:PySide2.QtCore.QRectF) -> None: ... + def setScreenPos(self, screenPos:PySide2.QtCore.QPointF) -> None: ... + def setScreenRect(self, screenRect:PySide2.QtCore.QRectF) -> None: ... + def setStartNormalizedPos(self, startNormalizedPos:PySide2.QtCore.QPointF) -> None: ... + def setStartPos(self, startPos:PySide2.QtCore.QPointF) -> None: ... + def setStartScenePos(self, startScenePos:PySide2.QtCore.QPointF) -> None: ... + def setStartScreenPos(self, startScreenPos:PySide2.QtCore.QPointF) -> None: ... + def setState(self, state:PySide2.QtCore.Qt.TouchPointStates) -> None: ... + def setUniqueId(self, uid:int) -> None: ... + def setVelocity(self, v:PySide2.QtGui.QVector2D) -> None: ... + def startNormalizedPos(self) -> PySide2.QtCore.QPointF: ... + def startPos(self) -> PySide2.QtCore.QPointF: ... + def startScenePos(self) -> PySide2.QtCore.QPointF: ... + def startScreenPos(self) -> PySide2.QtCore.QPointF: ... + def state(self) -> PySide2.QtCore.Qt.TouchPointState: ... + def swap(self, other:PySide2.QtGui.QTouchEvent.TouchPoint) -> None: ... + def uniqueId(self) -> PySide2.QtGui.QPointingDeviceUniqueId: ... + def velocity(self) -> PySide2.QtGui.QVector2D: ... + + def __init__(self, eventType:PySide2.QtCore.QEvent.Type, device:typing.Optional[PySide2.QtGui.QTouchDevice]=..., modifiers:PySide2.QtCore.Qt.KeyboardModifiers=..., touchPointStates:PySide2.QtCore.Qt.TouchPointStates=..., touchPoints:typing.Sequence=...) -> None: ... + + def device(self) -> PySide2.QtGui.QTouchDevice: ... + def setDevice(self, adevice:PySide2.QtGui.QTouchDevice) -> None: ... + def setTarget(self, atarget:PySide2.QtCore.QObject) -> None: ... + def setTouchPointStates(self, aTouchPointStates:PySide2.QtCore.Qt.TouchPointStates) -> None: ... + def setTouchPoints(self, atouchPoints:typing.Sequence) -> None: ... + def setWindow(self, awindow:PySide2.QtGui.QWindow) -> None: ... + def target(self) -> PySide2.QtCore.QObject: ... + def touchPointStates(self) -> PySide2.QtCore.Qt.TouchPointStates: ... + def touchPoints(self) -> typing.List: ... + def window(self) -> PySide2.QtGui.QWindow: ... + + +class QTransform(Shiboken.Object): + TxNone : QTransform = ... # 0x0 + TxTranslate : QTransform = ... # 0x1 + TxScale : QTransform = ... # 0x2 + TxRotate : QTransform = ... # 0x4 + TxShear : QTransform = ... # 0x8 + TxProject : QTransform = ... # 0x10 + + class TransformationType(object): + TxNone : QTransform.TransformationType = ... # 0x0 + TxTranslate : QTransform.TransformationType = ... # 0x1 + TxScale : QTransform.TransformationType = ... # 0x2 + TxRotate : QTransform.TransformationType = ... # 0x4 + TxShear : QTransform.TransformationType = ... # 0x8 + TxProject : QTransform.TransformationType = ... # 0x10 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, h11:float, h12:float, h13:float, h21:float, h22:float, h23:float, h31:float, h32:float, h33:float=...) -> None: ... + @typing.overload + def __init__(self, h11:float, h12:float, h21:float, h22:float, dx:float, dy:float) -> None: ... + @typing.overload + def __init__(self, mtx:PySide2.QtGui.QMatrix) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtGui.QTransform) -> None: ... + + def __add__(self, n:float) -> PySide2.QtGui.QTransform: ... + @staticmethod + def __copy__() -> None: ... + def __iadd__(self, div:float) -> PySide2.QtGui.QTransform: ... + @typing.overload + def __imul__(self, arg__1:PySide2.QtGui.QTransform) -> PySide2.QtGui.QTransform: ... + @typing.overload + def __imul__(self, div:float) -> PySide2.QtGui.QTransform: ... + def __isub__(self, div:float) -> PySide2.QtGui.QTransform: ... + def __lshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __mul__(self, l:PySide2.QtCore.QLine) -> PySide2.QtCore.QLine: ... + @typing.overload + def __mul__(self, l:PySide2.QtCore.QLineF) -> PySide2.QtCore.QLineF: ... + @typing.overload + def __mul__(self, n:float) -> PySide2.QtGui.QTransform: ... + @typing.overload + def __mul__(self, o:PySide2.QtGui.QTransform) -> PySide2.QtGui.QTransform: ... + @typing.overload + def __mul__(self, p:PySide2.QtCore.QPoint) -> PySide2.QtCore.QPoint: ... + @typing.overload + def __mul__(self, p:PySide2.QtCore.QPointF) -> PySide2.QtCore.QPointF: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + def __rshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __sub__(self, n:float) -> PySide2.QtGui.QTransform: ... + def adjoint(self) -> PySide2.QtGui.QTransform: ... + def det(self) -> float: ... + def determinant(self) -> float: ... + def dx(self) -> float: ... + def dy(self) -> float: ... + @staticmethod + def fromScale(dx:float, dy:float) -> PySide2.QtGui.QTransform: ... + @staticmethod + def fromTranslate(dx:float, dy:float) -> PySide2.QtGui.QTransform: ... + def inverted(self) -> typing.Tuple: ... + def isAffine(self) -> bool: ... + def isIdentity(self) -> bool: ... + def isInvertible(self) -> bool: ... + def isRotating(self) -> bool: ... + def isScaling(self) -> bool: ... + def isTranslating(self) -> bool: ... + def m11(self) -> float: ... + def m12(self) -> float: ... + def m13(self) -> float: ... + def m21(self) -> float: ... + def m22(self) -> float: ... + def m23(self) -> float: ... + def m31(self) -> float: ... + def m32(self) -> float: ... + def m33(self) -> float: ... + @typing.overload + def map(self, a:PySide2.QtGui.QPolygon) -> PySide2.QtGui.QPolygon: ... + @typing.overload + def map(self, a:PySide2.QtGui.QPolygonF) -> PySide2.QtGui.QPolygonF: ... + @typing.overload + def map(self, l:PySide2.QtCore.QLine) -> PySide2.QtCore.QLine: ... + @typing.overload + def map(self, l:PySide2.QtCore.QLineF) -> PySide2.QtCore.QLineF: ... + @typing.overload + def map(self, p:PySide2.QtCore.QPoint) -> PySide2.QtCore.QPoint: ... + @typing.overload + def map(self, p:PySide2.QtCore.QPointF) -> PySide2.QtCore.QPointF: ... + @typing.overload + def map(self, p:PySide2.QtGui.QPainterPath) -> PySide2.QtGui.QPainterPath: ... + @typing.overload + def map(self, r:PySide2.QtGui.QRegion) -> PySide2.QtGui.QRegion: ... + @typing.overload + def map(self, x:float, y:float) -> typing.Tuple: ... + @typing.overload + def mapRect(self, arg__1:PySide2.QtCore.QRect) -> PySide2.QtCore.QRect: ... + @typing.overload + def mapRect(self, arg__1:PySide2.QtCore.QRectF) -> PySide2.QtCore.QRectF: ... + def mapToPolygon(self, r:PySide2.QtCore.QRect) -> PySide2.QtGui.QPolygon: ... + @typing.overload + @staticmethod + def quadToQuad(arg__1:PySide2.QtGui.QPolygonF, arg__2:PySide2.QtGui.QPolygonF) -> object: ... + @typing.overload + @staticmethod + def quadToQuad(one:PySide2.QtGui.QPolygonF, two:PySide2.QtGui.QPolygonF, result:PySide2.QtGui.QTransform) -> bool: ... + @typing.overload + @staticmethod + def quadToSquare(arg__1:PySide2.QtGui.QPolygonF) -> object: ... + @typing.overload + @staticmethod + def quadToSquare(quad:PySide2.QtGui.QPolygonF, result:PySide2.QtGui.QTransform) -> bool: ... + def reset(self) -> None: ... + def rotate(self, a:float, axis:PySide2.QtCore.Qt.Axis=...) -> PySide2.QtGui.QTransform: ... + def rotateRadians(self, a:float, axis:PySide2.QtCore.Qt.Axis=...) -> PySide2.QtGui.QTransform: ... + def scale(self, sx:float, sy:float) -> PySide2.QtGui.QTransform: ... + def setMatrix(self, m11:float, m12:float, m13:float, m21:float, m22:float, m23:float, m31:float, m32:float, m33:float) -> None: ... + def shear(self, sh:float, sv:float) -> PySide2.QtGui.QTransform: ... + @typing.overload + @staticmethod + def squareToQuad(arg__1:PySide2.QtGui.QPolygonF) -> object: ... + @typing.overload + @staticmethod + def squareToQuad(square:PySide2.QtGui.QPolygonF, result:PySide2.QtGui.QTransform) -> bool: ... + def toAffine(self) -> PySide2.QtGui.QMatrix: ... + def translate(self, dx:float, dy:float) -> PySide2.QtGui.QTransform: ... + def transposed(self) -> PySide2.QtGui.QTransform: ... + def type(self) -> PySide2.QtGui.QTransform.TransformationType: ... + + +class QValidator(PySide2.QtCore.QObject): + Invalid : QValidator = ... # 0x0 + Intermediate : QValidator = ... # 0x1 + Acceptable : QValidator = ... # 0x2 + + class State(object): + Invalid : QValidator.State = ... # 0x0 + Intermediate : QValidator.State = ... # 0x1 + Acceptable : QValidator.State = ... # 0x2 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def fixup(self, arg__1:str) -> None: ... + def locale(self) -> PySide2.QtCore.QLocale: ... + def setLocale(self, locale:PySide2.QtCore.QLocale) -> None: ... + def validate(self, arg__1:str, arg__2:int) -> PySide2.QtGui.QValidator.State: ... + + +class QVector2D(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, point:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + def __init__(self, point:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def __init__(self, vector:PySide2.QtGui.QVector3D) -> None: ... + @typing.overload + def __init__(self, vector:PySide2.QtGui.QVector4D) -> None: ... + @typing.overload + def __init__(self, xpos:float, ypos:float) -> None: ... + + def __add__(self, v2:PySide2.QtGui.QVector2D) -> PySide2.QtGui.QVector2D: ... + @staticmethod + def __copy__() -> None: ... + def __iadd__(self, vector:PySide2.QtGui.QVector2D) -> PySide2.QtGui.QVector2D: ... + @typing.overload + def __imul__(self, factor:float) -> PySide2.QtGui.QVector2D: ... + @typing.overload + def __imul__(self, vector:PySide2.QtGui.QVector2D) -> PySide2.QtGui.QVector2D: ... + def __isub__(self, vector:PySide2.QtGui.QVector2D) -> PySide2.QtGui.QVector2D: ... + def __lshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __mul__(self, factor:float) -> PySide2.QtGui.QVector2D: ... + @typing.overload + def __mul__(self, v2:PySide2.QtGui.QVector2D) -> PySide2.QtGui.QVector2D: ... + def __neg__(self) -> PySide2.QtGui.QVector2D: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + def __rshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __sub__(self, v2:PySide2.QtGui.QVector2D) -> PySide2.QtGui.QVector2D: ... + def distanceToLine(self, point:PySide2.QtGui.QVector2D, direction:PySide2.QtGui.QVector2D) -> float: ... + def distanceToPoint(self, point:PySide2.QtGui.QVector2D) -> float: ... + @staticmethod + def dotProduct(v1:PySide2.QtGui.QVector2D, v2:PySide2.QtGui.QVector2D) -> float: ... + def isNull(self) -> bool: ... + def length(self) -> float: ... + def lengthSquared(self) -> float: ... + def normalize(self) -> None: ... + def normalized(self) -> PySide2.QtGui.QVector2D: ... + def setX(self, x:float) -> None: ... + def setY(self, y:float) -> None: ... + def toPoint(self) -> PySide2.QtCore.QPoint: ... + def toPointF(self) -> PySide2.QtCore.QPointF: ... + def toTuple(self) -> object: ... + def toVector3D(self) -> PySide2.QtGui.QVector3D: ... + def toVector4D(self) -> PySide2.QtGui.QVector4D: ... + def x(self) -> float: ... + def y(self) -> float: ... + + +class QVector3D(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, point:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + def __init__(self, point:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def __init__(self, vector:PySide2.QtGui.QVector2D) -> None: ... + @typing.overload + def __init__(self, vector:PySide2.QtGui.QVector2D, zpos:float) -> None: ... + @typing.overload + def __init__(self, vector:PySide2.QtGui.QVector4D) -> None: ... + @typing.overload + def __init__(self, xpos:float, ypos:float, zpos:float) -> None: ... + + def __add__(self, v2:PySide2.QtGui.QVector3D) -> PySide2.QtGui.QVector3D: ... + @staticmethod + def __copy__() -> None: ... + def __iadd__(self, vector:PySide2.QtGui.QVector3D) -> PySide2.QtGui.QVector3D: ... + @typing.overload + def __imul__(self, factor:float) -> PySide2.QtGui.QVector3D: ... + @typing.overload + def __imul__(self, vector:PySide2.QtGui.QVector3D) -> PySide2.QtGui.QVector3D: ... + def __isub__(self, vector:PySide2.QtGui.QVector3D) -> PySide2.QtGui.QVector3D: ... + def __lshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __mul__(self, factor:float) -> PySide2.QtGui.QVector3D: ... + @typing.overload + def __mul__(self, matrix:PySide2.QtGui.QMatrix4x4) -> PySide2.QtGui.QVector3D: ... + @typing.overload + def __mul__(self, quaternion:PySide2.QtGui.QQuaternion) -> PySide2.QtGui.QVector3D: ... + @typing.overload + def __mul__(self, v2:PySide2.QtGui.QVector3D) -> PySide2.QtGui.QVector3D: ... + def __neg__(self) -> PySide2.QtGui.QVector3D: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + def __rshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __sub__(self, v2:PySide2.QtGui.QVector3D) -> PySide2.QtGui.QVector3D: ... + @staticmethod + def crossProduct(v1:PySide2.QtGui.QVector3D, v2:PySide2.QtGui.QVector3D) -> PySide2.QtGui.QVector3D: ... + def distanceToLine(self, point:PySide2.QtGui.QVector3D, direction:PySide2.QtGui.QVector3D) -> float: ... + @typing.overload + def distanceToPlane(self, plane1:PySide2.QtGui.QVector3D, plane2:PySide2.QtGui.QVector3D, plane3:PySide2.QtGui.QVector3D) -> float: ... + @typing.overload + def distanceToPlane(self, plane:PySide2.QtGui.QVector3D, normal:PySide2.QtGui.QVector3D) -> float: ... + def distanceToPoint(self, point:PySide2.QtGui.QVector3D) -> float: ... + @staticmethod + def dotProduct(v1:PySide2.QtGui.QVector3D, v2:PySide2.QtGui.QVector3D) -> float: ... + def isNull(self) -> bool: ... + def length(self) -> float: ... + def lengthSquared(self) -> float: ... + @typing.overload + @staticmethod + def normal(v1:PySide2.QtGui.QVector3D, v2:PySide2.QtGui.QVector3D) -> PySide2.QtGui.QVector3D: ... + @typing.overload + @staticmethod + def normal(v1:PySide2.QtGui.QVector3D, v2:PySide2.QtGui.QVector3D, v3:PySide2.QtGui.QVector3D) -> PySide2.QtGui.QVector3D: ... + def normalize(self) -> None: ... + def normalized(self) -> PySide2.QtGui.QVector3D: ... + def project(self, modelView:PySide2.QtGui.QMatrix4x4, projection:PySide2.QtGui.QMatrix4x4, viewport:PySide2.QtCore.QRect) -> PySide2.QtGui.QVector3D: ... + def setX(self, x:float) -> None: ... + def setY(self, y:float) -> None: ... + def setZ(self, z:float) -> None: ... + def toPoint(self) -> PySide2.QtCore.QPoint: ... + def toPointF(self) -> PySide2.QtCore.QPointF: ... + def toTuple(self) -> object: ... + def toVector2D(self) -> PySide2.QtGui.QVector2D: ... + def toVector4D(self) -> PySide2.QtGui.QVector4D: ... + def unproject(self, modelView:PySide2.QtGui.QMatrix4x4, projection:PySide2.QtGui.QMatrix4x4, viewport:PySide2.QtCore.QRect) -> PySide2.QtGui.QVector3D: ... + def x(self) -> float: ... + def y(self) -> float: ... + def z(self) -> float: ... + + +class QVector4D(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, point:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + def __init__(self, point:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def __init__(self, vector:PySide2.QtGui.QVector2D) -> None: ... + @typing.overload + def __init__(self, vector:PySide2.QtGui.QVector2D, zpos:float, wpos:float) -> None: ... + @typing.overload + def __init__(self, vector:PySide2.QtGui.QVector3D) -> None: ... + @typing.overload + def __init__(self, vector:PySide2.QtGui.QVector3D, wpos:float) -> None: ... + @typing.overload + def __init__(self, xpos:float, ypos:float, zpos:float, wpos:float) -> None: ... + + def __add__(self, v2:PySide2.QtGui.QVector4D) -> PySide2.QtGui.QVector4D: ... + @staticmethod + def __copy__() -> None: ... + def __iadd__(self, vector:PySide2.QtGui.QVector4D) -> PySide2.QtGui.QVector4D: ... + @typing.overload + def __imul__(self, factor:float) -> PySide2.QtGui.QVector4D: ... + @typing.overload + def __imul__(self, vector:PySide2.QtGui.QVector4D) -> PySide2.QtGui.QVector4D: ... + def __isub__(self, vector:PySide2.QtGui.QVector4D) -> PySide2.QtGui.QVector4D: ... + def __lshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + @typing.overload + def __mul__(self, factor:float) -> PySide2.QtGui.QVector4D: ... + @typing.overload + def __mul__(self, matrix:PySide2.QtGui.QMatrix4x4) -> PySide2.QtGui.QVector4D: ... + @typing.overload + def __mul__(self, v2:PySide2.QtGui.QVector4D) -> PySide2.QtGui.QVector4D: ... + def __neg__(self) -> PySide2.QtGui.QVector4D: ... + def __reduce__(self) -> object: ... + def __repr__(self) -> object: ... + def __rshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __sub__(self, v2:PySide2.QtGui.QVector4D) -> PySide2.QtGui.QVector4D: ... + @staticmethod + def dotProduct(v1:PySide2.QtGui.QVector4D, v2:PySide2.QtGui.QVector4D) -> float: ... + def isNull(self) -> bool: ... + def length(self) -> float: ... + def lengthSquared(self) -> float: ... + def normalize(self) -> None: ... + def normalized(self) -> PySide2.QtGui.QVector4D: ... + def setW(self, w:float) -> None: ... + def setX(self, x:float) -> None: ... + def setY(self, y:float) -> None: ... + def setZ(self, z:float) -> None: ... + def toPoint(self) -> PySide2.QtCore.QPoint: ... + def toPointF(self) -> PySide2.QtCore.QPointF: ... + def toTuple(self) -> object: ... + def toVector2D(self) -> PySide2.QtGui.QVector2D: ... + def toVector2DAffine(self) -> PySide2.QtGui.QVector2D: ... + def toVector3D(self) -> PySide2.QtGui.QVector3D: ... + def toVector3DAffine(self) -> PySide2.QtGui.QVector3D: ... + def w(self) -> float: ... + def x(self) -> float: ... + def y(self) -> float: ... + def z(self) -> float: ... + + +class QWhatsThisClickedEvent(PySide2.QtCore.QEvent): + + def __init__(self, href:str) -> None: ... + + def href(self) -> str: ... + + +class QWheelEvent(PySide2.QtGui.QInputEvent): + + @typing.overload + def __init__(self, pos:PySide2.QtCore.QPointF, delta:int, buttons:PySide2.QtCore.Qt.MouseButtons, modifiers:PySide2.QtCore.Qt.KeyboardModifiers, orient:PySide2.QtCore.Qt.Orientation=...) -> None: ... + @typing.overload + def __init__(self, pos:PySide2.QtCore.QPointF, globalPos:PySide2.QtCore.QPointF, delta:int, buttons:PySide2.QtCore.Qt.MouseButtons, modifiers:PySide2.QtCore.Qt.KeyboardModifiers, orient:PySide2.QtCore.Qt.Orientation=...) -> None: ... + @typing.overload + def __init__(self, pos:PySide2.QtCore.QPointF, globalPos:PySide2.QtCore.QPointF, pixelDelta:PySide2.QtCore.QPoint, angleDelta:PySide2.QtCore.QPoint, buttons:PySide2.QtCore.Qt.MouseButtons, modifiers:PySide2.QtCore.Qt.KeyboardModifiers, phase:PySide2.QtCore.Qt.ScrollPhase, inverted:bool, source:PySide2.QtCore.Qt.MouseEventSource=...) -> None: ... + @typing.overload + def __init__(self, pos:PySide2.QtCore.QPointF, globalPos:PySide2.QtCore.QPointF, pixelDelta:PySide2.QtCore.QPoint, angleDelta:PySide2.QtCore.QPoint, qt4Delta:int, qt4Orientation:PySide2.QtCore.Qt.Orientation, buttons:PySide2.QtCore.Qt.MouseButtons, modifiers:PySide2.QtCore.Qt.KeyboardModifiers) -> None: ... + @typing.overload + def __init__(self, pos:PySide2.QtCore.QPointF, globalPos:PySide2.QtCore.QPointF, pixelDelta:PySide2.QtCore.QPoint, angleDelta:PySide2.QtCore.QPoint, qt4Delta:int, qt4Orientation:PySide2.QtCore.Qt.Orientation, buttons:PySide2.QtCore.Qt.MouseButtons, modifiers:PySide2.QtCore.Qt.KeyboardModifiers, phase:PySide2.QtCore.Qt.ScrollPhase) -> None: ... + @typing.overload + def __init__(self, pos:PySide2.QtCore.QPointF, globalPos:PySide2.QtCore.QPointF, pixelDelta:PySide2.QtCore.QPoint, angleDelta:PySide2.QtCore.QPoint, qt4Delta:int, qt4Orientation:PySide2.QtCore.Qt.Orientation, buttons:PySide2.QtCore.Qt.MouseButtons, modifiers:PySide2.QtCore.Qt.KeyboardModifiers, phase:PySide2.QtCore.Qt.ScrollPhase, source:PySide2.QtCore.Qt.MouseEventSource) -> None: ... + @typing.overload + def __init__(self, pos:PySide2.QtCore.QPointF, globalPos:PySide2.QtCore.QPointF, pixelDelta:PySide2.QtCore.QPoint, angleDelta:PySide2.QtCore.QPoint, qt4Delta:int, qt4Orientation:PySide2.QtCore.Qt.Orientation, buttons:PySide2.QtCore.Qt.MouseButtons, modifiers:PySide2.QtCore.Qt.KeyboardModifiers, phase:PySide2.QtCore.Qt.ScrollPhase, source:PySide2.QtCore.Qt.MouseEventSource, inverted:bool) -> None: ... + + def angleDelta(self) -> PySide2.QtCore.QPoint: ... + def buttons(self) -> PySide2.QtCore.Qt.MouseButtons: ... + def delta(self) -> int: ... + def globalPos(self) -> PySide2.QtCore.QPoint: ... + def globalPosF(self) -> PySide2.QtCore.QPointF: ... + def globalPosition(self) -> PySide2.QtCore.QPointF: ... + def globalX(self) -> int: ... + def globalY(self) -> int: ... + def inverted(self) -> bool: ... + def orientation(self) -> PySide2.QtCore.Qt.Orientation: ... + def phase(self) -> PySide2.QtCore.Qt.ScrollPhase: ... + def pixelDelta(self) -> PySide2.QtCore.QPoint: ... + def pos(self) -> PySide2.QtCore.QPoint: ... + def posF(self) -> PySide2.QtCore.QPointF: ... + def position(self) -> PySide2.QtCore.QPointF: ... + def source(self) -> PySide2.QtCore.Qt.MouseEventSource: ... + def x(self) -> int: ... + def y(self) -> int: ... + + +class QWindow(PySide2.QtCore.QObject, PySide2.QtGui.QSurface): + ExcludeTransients : QWindow = ... # 0x0 + Hidden : QWindow = ... # 0x0 + AutomaticVisibility : QWindow = ... # 0x1 + IncludeTransients : QWindow = ... # 0x1 + Windowed : QWindow = ... # 0x2 + Minimized : QWindow = ... # 0x3 + Maximized : QWindow = ... # 0x4 + FullScreen : QWindow = ... # 0x5 + + class AncestorMode(object): + ExcludeTransients : QWindow.AncestorMode = ... # 0x0 + IncludeTransients : QWindow.AncestorMode = ... # 0x1 + + class Visibility(object): + Hidden : QWindow.Visibility = ... # 0x0 + AutomaticVisibility : QWindow.Visibility = ... # 0x1 + Windowed : QWindow.Visibility = ... # 0x2 + Minimized : QWindow.Visibility = ... # 0x3 + Maximized : QWindow.Visibility = ... # 0x4 + FullScreen : QWindow.Visibility = ... # 0x5 + + @typing.overload + def __init__(self, parent:PySide2.QtGui.QWindow) -> None: ... + @typing.overload + def __init__(self, screen:typing.Optional[PySide2.QtGui.QScreen]=...) -> None: ... + + def accessibleRoot(self) -> PySide2.QtGui.QAccessibleInterface: ... + def alert(self, msec:int) -> None: ... + def baseSize(self) -> PySide2.QtCore.QSize: ... + def close(self) -> bool: ... + def contentOrientation(self) -> PySide2.QtCore.Qt.ScreenOrientation: ... + def create(self) -> None: ... + def cursor(self) -> PySide2.QtGui.QCursor: ... + def destroy(self) -> None: ... + def devicePixelRatio(self) -> float: ... + def event(self, arg__1:PySide2.QtCore.QEvent) -> bool: ... + def exposeEvent(self, arg__1:PySide2.QtGui.QExposeEvent) -> None: ... + def filePath(self) -> str: ... + def flags(self) -> PySide2.QtCore.Qt.WindowFlags: ... + def focusInEvent(self, arg__1:PySide2.QtGui.QFocusEvent) -> None: ... + def focusObject(self) -> PySide2.QtCore.QObject: ... + def focusOutEvent(self, arg__1:PySide2.QtGui.QFocusEvent) -> None: ... + def format(self) -> PySide2.QtGui.QSurfaceFormat: ... + def frameGeometry(self) -> PySide2.QtCore.QRect: ... + def frameMargins(self) -> PySide2.QtCore.QMargins: ... + def framePosition(self) -> PySide2.QtCore.QPoint: ... + @staticmethod + def fromWinId(id:int) -> PySide2.QtGui.QWindow: ... + def geometry(self) -> PySide2.QtCore.QRect: ... + def height(self) -> int: ... + def hide(self) -> None: ... + def hideEvent(self, arg__1:PySide2.QtGui.QHideEvent) -> None: ... + def icon(self) -> PySide2.QtGui.QIcon: ... + def isActive(self) -> bool: ... + def isAncestorOf(self, child:PySide2.QtGui.QWindow, mode:PySide2.QtGui.QWindow.AncestorMode=...) -> bool: ... + def isExposed(self) -> bool: ... + def isModal(self) -> bool: ... + def isTopLevel(self) -> bool: ... + def isVisible(self) -> bool: ... + def keyPressEvent(self, arg__1:PySide2.QtGui.QKeyEvent) -> None: ... + def keyReleaseEvent(self, arg__1:PySide2.QtGui.QKeyEvent) -> None: ... + def lower(self) -> None: ... + def mapFromGlobal(self, pos:PySide2.QtCore.QPoint) -> PySide2.QtCore.QPoint: ... + def mapToGlobal(self, pos:PySide2.QtCore.QPoint) -> PySide2.QtCore.QPoint: ... + def mask(self) -> PySide2.QtGui.QRegion: ... + def maximumHeight(self) -> int: ... + def maximumSize(self) -> PySide2.QtCore.QSize: ... + def maximumWidth(self) -> int: ... + def minimumHeight(self) -> int: ... + def minimumSize(self) -> PySide2.QtCore.QSize: ... + def minimumWidth(self) -> int: ... + def modality(self) -> PySide2.QtCore.Qt.WindowModality: ... + def mouseDoubleClickEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseMoveEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def mousePressEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def moveEvent(self, arg__1:PySide2.QtGui.QMoveEvent) -> None: ... + def nativeEvent(self, eventType:PySide2.QtCore.QByteArray, message:int) -> typing.Tuple: ... + def opacity(self) -> float: ... + @typing.overload + def parent(self) -> PySide2.QtGui.QWindow: ... + @typing.overload + def parent(self, mode:PySide2.QtGui.QWindow.AncestorMode) -> PySide2.QtGui.QWindow: ... + def position(self) -> PySide2.QtCore.QPoint: ... + def raise_(self) -> None: ... + def reportContentOrientationChange(self, orientation:PySide2.QtCore.Qt.ScreenOrientation) -> None: ... + def requestActivate(self) -> None: ... + def requestUpdate(self) -> None: ... + def requestedFormat(self) -> PySide2.QtGui.QSurfaceFormat: ... + @typing.overload + def resize(self, newSize:PySide2.QtCore.QSize) -> None: ... + @typing.overload + def resize(self, w:int, h:int) -> None: ... + def resizeEvent(self, arg__1:PySide2.QtGui.QResizeEvent) -> None: ... + def screen(self) -> PySide2.QtGui.QScreen: ... + def setBaseSize(self, size:PySide2.QtCore.QSize) -> None: ... + def setCursor(self, arg__1:PySide2.QtGui.QCursor) -> None: ... + def setFilePath(self, filePath:str) -> None: ... + def setFlag(self, arg__1:PySide2.QtCore.Qt.WindowType, on:bool=...) -> None: ... + def setFlags(self, flags:PySide2.QtCore.Qt.WindowFlags) -> None: ... + def setFormat(self, format:PySide2.QtGui.QSurfaceFormat) -> None: ... + def setFramePosition(self, point:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + def setGeometry(self, posx:int, posy:int, w:int, h:int) -> None: ... + @typing.overload + def setGeometry(self, rect:PySide2.QtCore.QRect) -> None: ... + def setHeight(self, arg:int) -> None: ... + def setIcon(self, icon:PySide2.QtGui.QIcon) -> None: ... + def setKeyboardGrabEnabled(self, grab:bool) -> bool: ... + def setMask(self, region:PySide2.QtGui.QRegion) -> None: ... + def setMaximumHeight(self, h:int) -> None: ... + def setMaximumSize(self, size:PySide2.QtCore.QSize) -> None: ... + def setMaximumWidth(self, w:int) -> None: ... + def setMinimumHeight(self, h:int) -> None: ... + def setMinimumSize(self, size:PySide2.QtCore.QSize) -> None: ... + def setMinimumWidth(self, w:int) -> None: ... + def setModality(self, modality:PySide2.QtCore.Qt.WindowModality) -> None: ... + def setMouseGrabEnabled(self, grab:bool) -> bool: ... + def setOpacity(self, level:float) -> None: ... + @typing.overload + def setParent(self, parent:PySide2.QtCore.QObject) -> None: ... + @typing.overload + def setParent(self, parent:PySide2.QtGui.QWindow) -> None: ... + @typing.overload + def setPosition(self, posx:int, posy:int) -> None: ... + @typing.overload + def setPosition(self, pt:PySide2.QtCore.QPoint) -> None: ... + def setScreen(self, screen:PySide2.QtGui.QScreen) -> None: ... + def setSizeIncrement(self, size:PySide2.QtCore.QSize) -> None: ... + def setSurfaceType(self, surfaceType:PySide2.QtGui.QSurface.SurfaceType) -> None: ... + def setTitle(self, arg__1:str) -> None: ... + def setTransientParent(self, parent:PySide2.QtGui.QWindow) -> None: ... + def setVisibility(self, v:PySide2.QtGui.QWindow.Visibility) -> None: ... + def setVisible(self, visible:bool) -> None: ... + def setWidth(self, arg:int) -> None: ... + def setWindowState(self, state:PySide2.QtCore.Qt.WindowState) -> None: ... + def setWindowStates(self, states:PySide2.QtCore.Qt.WindowStates) -> None: ... + def setX(self, arg:int) -> None: ... + def setY(self, arg:int) -> None: ... + def show(self) -> None: ... + def showEvent(self, arg__1:PySide2.QtGui.QShowEvent) -> None: ... + def showFullScreen(self) -> None: ... + def showMaximized(self) -> None: ... + def showMinimized(self) -> None: ... + def showNormal(self) -> None: ... + def size(self) -> PySide2.QtCore.QSize: ... + def sizeIncrement(self) -> PySide2.QtCore.QSize: ... + def startSystemMove(self) -> bool: ... + def startSystemResize(self, edges:PySide2.QtCore.Qt.Edges) -> bool: ... + def surfaceHandle(self) -> int: ... + def surfaceType(self) -> PySide2.QtGui.QSurface.SurfaceType: ... + def tabletEvent(self, arg__1:PySide2.QtGui.QTabletEvent) -> None: ... + def title(self) -> str: ... + def touchEvent(self, arg__1:PySide2.QtGui.QTouchEvent) -> None: ... + def transientParent(self) -> PySide2.QtGui.QWindow: ... + def type(self) -> PySide2.QtCore.Qt.WindowType: ... + def unsetCursor(self) -> None: ... + def visibility(self) -> PySide2.QtGui.QWindow.Visibility: ... + def wheelEvent(self, arg__1:PySide2.QtGui.QWheelEvent) -> None: ... + def width(self) -> int: ... + def winId(self) -> int: ... + def windowState(self) -> PySide2.QtCore.Qt.WindowState: ... + def windowStates(self) -> PySide2.QtCore.Qt.WindowStates: ... + def x(self) -> int: ... + def y(self) -> int: ... + + +class QWindowStateChangeEvent(PySide2.QtCore.QEvent): + + def __init__(self, aOldState:PySide2.QtCore.Qt.WindowStates, isOverride:bool=...) -> None: ... + + def isOverride(self) -> bool: ... + def oldState(self) -> PySide2.QtCore.Qt.WindowStates: ... + + +class Qt(PySide2.QtCore.Qt): + @staticmethod + def codecForHtml(ba:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QTextCodec: ... + @staticmethod + def convertFromPlainText(plain:str, mode:PySide2.QtCore.Qt.WhiteSpaceMode=...) -> str: ... + @staticmethod + def mightBeRichText(arg__1:str) -> bool: ... +@staticmethod +def qAlpha(rgb:int) -> int: ... +@staticmethod +def qBlue(rgb:int) -> int: ... +@typing.overload +@staticmethod +def qGray(r:int, g:int, b:int) -> int: ... +@typing.overload +@staticmethod +def qGray(rgb:int) -> int: ... +@staticmethod +def qGreen(rgb:int) -> int: ... +@staticmethod +def qIsGray(rgb:int) -> bool: ... +@staticmethod +def qRed(rgb:int) -> int: ... +@staticmethod +def qRgb(r:int, g:int, b:int) -> int: ... +@staticmethod +def qRgba(r:int, g:int, b:int, a:int) -> int: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtHelp.pyd b/venv/Lib/site-packages/PySide2/QtHelp.pyd new file mode 100644 index 0000000..0efd1c5 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtHelp.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtHelp.pyi b/venv/Lib/site-packages/PySide2/QtHelp.pyi new file mode 100644 index 0000000..2837746 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtHelp.pyi @@ -0,0 +1,338 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtHelp, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtHelp +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtGui +import PySide2.QtWidgets +import PySide2.QtHelp + + +class QCompressedHelpInfo(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtHelp.QCompressedHelpInfo) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def component(self) -> str: ... + @staticmethod + def fromCompressedHelpFile(documentationFileName:str) -> PySide2.QtHelp.QCompressedHelpInfo: ... + def isNull(self) -> bool: ... + def namespaceName(self) -> str: ... + def swap(self, other:PySide2.QtHelp.QCompressedHelpInfo) -> None: ... + def version(self) -> PySide2.QtCore.QVersionNumber: ... + + +class QHelpContentItem(Shiboken.Object): + @staticmethod + def __copy__() -> None: ... + def child(self, row:int) -> PySide2.QtHelp.QHelpContentItem: ... + def childCount(self) -> int: ... + def childPosition(self, child:PySide2.QtHelp.QHelpContentItem) -> int: ... + def parent(self) -> PySide2.QtHelp.QHelpContentItem: ... + def row(self) -> int: ... + def title(self) -> str: ... + def url(self) -> PySide2.QtCore.QUrl: ... + + +class QHelpContentModel(PySide2.QtCore.QAbstractItemModel): + def columnCount(self, parent:PySide2.QtCore.QModelIndex=...) -> int: ... + def contentItemAt(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtHelp.QHelpContentItem: ... + def createContents(self, customFilterName:str) -> None: ... + def data(self, index:PySide2.QtCore.QModelIndex, role:int) -> typing.Any: ... + def index(self, row:int, column:int, parent:PySide2.QtCore.QModelIndex=...) -> PySide2.QtCore.QModelIndex: ... + def isCreatingContents(self) -> bool: ... + @typing.overload + def parent(self) -> PySide2.QtCore.QObject: ... + @typing.overload + def parent(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def rowCount(self, parent:PySide2.QtCore.QModelIndex=...) -> int: ... + + +class QHelpContentWidget(PySide2.QtWidgets.QTreeView): + def indexOf(self, link:PySide2.QtCore.QUrl) -> PySide2.QtCore.QModelIndex: ... + + +class QHelpEngine(PySide2.QtHelp.QHelpEngineCore): + + def __init__(self, collectionFile:str, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def contentModel(self) -> PySide2.QtHelp.QHelpContentModel: ... + def contentWidget(self) -> PySide2.QtHelp.QHelpContentWidget: ... + def indexModel(self) -> PySide2.QtHelp.QHelpIndexModel: ... + def indexWidget(self) -> PySide2.QtHelp.QHelpIndexWidget: ... + def searchEngine(self) -> PySide2.QtHelp.QHelpSearchEngine: ... + + +class QHelpEngineCore(PySide2.QtCore.QObject): + + def __init__(self, collectionFile:str, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def addCustomFilter(self, filterName:str, attributes:typing.Sequence) -> bool: ... + def autoSaveFilter(self) -> bool: ... + def collectionFile(self) -> str: ... + def copyCollectionFile(self, fileName:str) -> bool: ... + def currentFilter(self) -> str: ... + def customFilters(self) -> typing.List: ... + def customValue(self, key:str, defaultValue:typing.Any=...) -> typing.Any: ... + def documentationFileName(self, namespaceName:str) -> str: ... + @typing.overload + def documentsForIdentifier(self, id:str) -> typing.List: ... + @typing.overload + def documentsForIdentifier(self, id:str, filterName:str) -> typing.List: ... + @typing.overload + def documentsForKeyword(self, keyword:str) -> typing.List: ... + @typing.overload + def documentsForKeyword(self, keyword:str, filterName:str) -> typing.List: ... + def error(self) -> str: ... + def fileData(self, url:PySide2.QtCore.QUrl) -> PySide2.QtCore.QByteArray: ... + @typing.overload + def files(self, namespaceName:str, filterAttributes:typing.Sequence, extensionFilter:str=...) -> typing.List: ... + @typing.overload + def files(self, namespaceName:str, filterName:str, extensionFilter:str=...) -> typing.List: ... + def filterAttributeSets(self, namespaceName:str) -> typing.List: ... + @typing.overload + def filterAttributes(self) -> typing.List: ... + @typing.overload + def filterAttributes(self, filterName:str) -> typing.List: ... + def filterEngine(self) -> PySide2.QtHelp.QHelpFilterEngine: ... + def findFile(self, url:PySide2.QtCore.QUrl) -> PySide2.QtCore.QUrl: ... + def linksForIdentifier(self, id:str) -> typing.Dict: ... + def linksForKeyword(self, keyword:str) -> typing.Dict: ... + @staticmethod + def metaData(documentationFileName:str, name:str) -> typing.Any: ... + @staticmethod + def namespaceName(documentationFileName:str) -> str: ... + def registerDocumentation(self, documentationFileName:str) -> bool: ... + def registeredDocumentations(self) -> typing.List: ... + def removeCustomFilter(self, filterName:str) -> bool: ... + def removeCustomValue(self, key:str) -> bool: ... + def setAutoSaveFilter(self, save:bool) -> None: ... + def setCollectionFile(self, fileName:str) -> None: ... + def setCurrentFilter(self, filterName:str) -> None: ... + def setCustomValue(self, key:str, value:typing.Any) -> bool: ... + def setUsesFilterEngine(self, uses:bool) -> None: ... + def setupData(self) -> bool: ... + def unregisterDocumentation(self, namespaceName:str) -> bool: ... + def usesFilterEngine(self) -> bool: ... + + +class QHelpFilterData(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtHelp.QHelpFilterData) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def components(self) -> typing.List: ... + def setComponents(self, components:typing.Sequence) -> None: ... + def setVersions(self, versions:typing.Sequence) -> None: ... + def swap(self, other:PySide2.QtHelp.QHelpFilterData) -> None: ... + def versions(self) -> typing.List: ... + + +class QHelpFilterEngine(PySide2.QtCore.QObject): + + def __init__(self, helpEngine:PySide2.QtHelp.QHelpEngineCore) -> None: ... + + def activeFilter(self) -> str: ... + def availableComponents(self) -> typing.List: ... + def availableVersions(self) -> typing.List: ... + def filterData(self, filterName:str) -> PySide2.QtHelp.QHelpFilterData: ... + def filters(self) -> typing.List: ... + @typing.overload + def indices(self) -> typing.List: ... + @typing.overload + def indices(self, filterName:str) -> typing.List: ... + def namespaceToComponent(self) -> typing.Dict: ... + def namespaceToVersion(self) -> typing.Dict: ... + def namespacesForFilter(self, filterName:str) -> typing.List: ... + def removeFilter(self, filterName:str) -> bool: ... + def setActiveFilter(self, filterName:str) -> bool: ... + def setFilterData(self, filterName:str, filterData:PySide2.QtHelp.QHelpFilterData) -> bool: ... + + +class QHelpFilterSettingsWidget(PySide2.QtWidgets.QWidget): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def applySettings(self, filterEngine:PySide2.QtHelp.QHelpFilterEngine) -> bool: ... + def readSettings(self, filterEngine:PySide2.QtHelp.QHelpFilterEngine) -> None: ... + def setAvailableComponents(self, components:typing.Sequence) -> None: ... + def setAvailableVersions(self, versions:typing.Sequence) -> None: ... + + +class QHelpIndexModel(PySide2.QtCore.QStringListModel): + @typing.overload + def createIndex(self, customFilterName:str) -> None: ... + @typing.overload + def createIndex(self, row:int, column:int, id:int=...) -> PySide2.QtCore.QModelIndex: ... + @typing.overload + def createIndex(self, row:int, column:int, ptr:object) -> PySide2.QtCore.QModelIndex: ... + def filter(self, filter:str, wildcard:str=...) -> PySide2.QtCore.QModelIndex: ... + def helpEngine(self) -> PySide2.QtHelp.QHelpEngineCore: ... + def isCreatingIndex(self) -> bool: ... + def linksForKeyword(self, keyword:str) -> typing.Dict: ... + + +class QHelpIndexWidget(PySide2.QtWidgets.QListView): + def activateCurrentItem(self) -> None: ... + def filterIndices(self, filter:str, wildcard:str=...) -> None: ... + + +class QHelpLink(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QHelpLink:PySide2.QtHelp.QHelpLink) -> None: ... + + @staticmethod + def __copy__() -> None: ... + + +class QHelpSearchEngine(PySide2.QtCore.QObject): + + def __init__(self, helpEngine:PySide2.QtHelp.QHelpEngineCore, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def cancelIndexing(self) -> None: ... + def cancelSearching(self) -> None: ... + def hitCount(self) -> int: ... + def hits(self, start:int, end:int) -> typing.List: ... + def hitsCount(self) -> int: ... + def query(self) -> typing.List: ... + def queryWidget(self) -> PySide2.QtHelp.QHelpSearchQueryWidget: ... + def reindexDocumentation(self) -> None: ... + def resultWidget(self) -> PySide2.QtHelp.QHelpSearchResultWidget: ... + def scheduleIndexDocumentation(self) -> None: ... + @typing.overload + def search(self, queryList:typing.Sequence) -> None: ... + @typing.overload + def search(self, searchInput:str) -> None: ... + def searchInput(self) -> str: ... + def searchResultCount(self) -> int: ... + def searchResults(self, start:int, end:int) -> typing.List: ... + + +class QHelpSearchQuery(Shiboken.Object): + DEFAULT : QHelpSearchQuery = ... # 0x0 + FUZZY : QHelpSearchQuery = ... # 0x1 + WITHOUT : QHelpSearchQuery = ... # 0x2 + PHRASE : QHelpSearchQuery = ... # 0x3 + ALL : QHelpSearchQuery = ... # 0x4 + ATLEAST : QHelpSearchQuery = ... # 0x5 + + class FieldName(object): + DEFAULT : QHelpSearchQuery.FieldName = ... # 0x0 + FUZZY : QHelpSearchQuery.FieldName = ... # 0x1 + WITHOUT : QHelpSearchQuery.FieldName = ... # 0x2 + PHRASE : QHelpSearchQuery.FieldName = ... # 0x3 + ALL : QHelpSearchQuery.FieldName = ... # 0x4 + ATLEAST : QHelpSearchQuery.FieldName = ... # 0x5 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QHelpSearchQuery:PySide2.QtHelp.QHelpSearchQuery) -> None: ... + @typing.overload + def __init__(self, field:PySide2.QtHelp.QHelpSearchQuery.FieldName, wordList_:typing.Sequence) -> None: ... + + @staticmethod + def __copy__() -> None: ... + + +class QHelpSearchQueryWidget(PySide2.QtWidgets.QWidget): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def changeEvent(self, event:PySide2.QtCore.QEvent) -> None: ... + def collapseExtendedSearch(self) -> None: ... + def expandExtendedSearch(self) -> None: ... + def focusInEvent(self, focusEvent:PySide2.QtGui.QFocusEvent) -> None: ... + def isCompactMode(self) -> bool: ... + def query(self) -> typing.List: ... + def searchInput(self) -> str: ... + def setCompactMode(self, on:bool) -> None: ... + def setQuery(self, queryList:typing.Sequence) -> None: ... + def setSearchInput(self, searchInput:str) -> None: ... + + +class QHelpSearchResult(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtHelp.QHelpSearchResult) -> None: ... + @typing.overload + def __init__(self, url:PySide2.QtCore.QUrl, title:str, snippet:str) -> None: ... + + def snippet(self) -> str: ... + def title(self) -> str: ... + def url(self) -> PySide2.QtCore.QUrl: ... + + +class QHelpSearchResultWidget(PySide2.QtWidgets.QWidget): + def changeEvent(self, event:PySide2.QtCore.QEvent) -> None: ... + def linkAt(self, point:PySide2.QtCore.QPoint) -> PySide2.QtCore.QUrl: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtLocation.pyd b/venv/Lib/site-packages/PySide2/QtLocation.pyd new file mode 100644 index 0000000..cecd467 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtLocation.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtLocation.pyi b/venv/Lib/site-packages/PySide2/QtLocation.pyi new file mode 100644 index 0000000..6bd6354 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtLocation.pyi @@ -0,0 +1,1126 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtLocation, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtLocation +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtPositioning +import PySide2.QtLocation + + +class QGeoCodeReply(PySide2.QtCore.QObject): + NoError : QGeoCodeReply = ... # 0x0 + EngineNotSetError : QGeoCodeReply = ... # 0x1 + CommunicationError : QGeoCodeReply = ... # 0x2 + ParseError : QGeoCodeReply = ... # 0x3 + UnsupportedOptionError : QGeoCodeReply = ... # 0x4 + CombinationError : QGeoCodeReply = ... # 0x5 + UnknownError : QGeoCodeReply = ... # 0x6 + + class Error(object): + NoError : QGeoCodeReply.Error = ... # 0x0 + EngineNotSetError : QGeoCodeReply.Error = ... # 0x1 + CommunicationError : QGeoCodeReply.Error = ... # 0x2 + ParseError : QGeoCodeReply.Error = ... # 0x3 + UnsupportedOptionError : QGeoCodeReply.Error = ... # 0x4 + CombinationError : QGeoCodeReply.Error = ... # 0x5 + UnknownError : QGeoCodeReply.Error = ... # 0x6 + + @typing.overload + def __init__(self, error:PySide2.QtLocation.QGeoCodeReply.Error, errorString:str, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def abort(self) -> None: ... + def addLocation(self, location:PySide2.QtPositioning.QGeoLocation) -> None: ... + def error(self) -> PySide2.QtLocation.QGeoCodeReply.Error: ... + def errorString(self) -> str: ... + def isFinished(self) -> bool: ... + def limit(self) -> int: ... + def locations(self) -> typing.List: ... + def offset(self) -> int: ... + def setError(self, error:PySide2.QtLocation.QGeoCodeReply.Error, errorString:str) -> None: ... + def setFinished(self, finished:bool) -> None: ... + def setLimit(self, limit:int) -> None: ... + def setLocations(self, locations:typing.Sequence) -> None: ... + def setOffset(self, offset:int) -> None: ... + def setViewport(self, viewport:PySide2.QtPositioning.QGeoShape) -> None: ... + def viewport(self) -> PySide2.QtPositioning.QGeoShape: ... + + +class QGeoCodingManager(PySide2.QtCore.QObject): + @typing.overload + def geocode(self, address:PySide2.QtPositioning.QGeoAddress, bounds:PySide2.QtPositioning.QGeoShape=...) -> PySide2.QtLocation.QGeoCodeReply: ... + @typing.overload + def geocode(self, searchString:str, limit:int=..., offset:int=..., bounds:PySide2.QtPositioning.QGeoShape=...) -> PySide2.QtLocation.QGeoCodeReply: ... + def locale(self) -> PySide2.QtCore.QLocale: ... + def managerName(self) -> str: ... + def managerVersion(self) -> int: ... + def reverseGeocode(self, coordinate:PySide2.QtPositioning.QGeoCoordinate, bounds:PySide2.QtPositioning.QGeoShape=...) -> PySide2.QtLocation.QGeoCodeReply: ... + def setLocale(self, locale:PySide2.QtCore.QLocale) -> None: ... + + +class QGeoCodingManagerEngine(PySide2.QtCore.QObject): + + def __init__(self, parameters:typing.Dict, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + @typing.overload + def geocode(self, address:PySide2.QtPositioning.QGeoAddress, bounds:PySide2.QtPositioning.QGeoShape) -> PySide2.QtLocation.QGeoCodeReply: ... + @typing.overload + def geocode(self, address:str, limit:int, offset:int, bounds:PySide2.QtPositioning.QGeoShape) -> PySide2.QtLocation.QGeoCodeReply: ... + def locale(self) -> PySide2.QtCore.QLocale: ... + def managerName(self) -> str: ... + def managerVersion(self) -> int: ... + def reverseGeocode(self, coordinate:PySide2.QtPositioning.QGeoCoordinate, bounds:PySide2.QtPositioning.QGeoShape) -> PySide2.QtLocation.QGeoCodeReply: ... + def setLocale(self, locale:PySide2.QtCore.QLocale) -> None: ... + + +class QGeoManeuver(Shiboken.Object): + NoDirection : QGeoManeuver = ... # 0x0 + DirectionForward : QGeoManeuver = ... # 0x1 + DirectionBearRight : QGeoManeuver = ... # 0x2 + DirectionLightRight : QGeoManeuver = ... # 0x3 + DirectionRight : QGeoManeuver = ... # 0x4 + DirectionHardRight : QGeoManeuver = ... # 0x5 + DirectionUTurnRight : QGeoManeuver = ... # 0x6 + DirectionUTurnLeft : QGeoManeuver = ... # 0x7 + DirectionHardLeft : QGeoManeuver = ... # 0x8 + DirectionLeft : QGeoManeuver = ... # 0x9 + DirectionLightLeft : QGeoManeuver = ... # 0xa + DirectionBearLeft : QGeoManeuver = ... # 0xb + + class InstructionDirection(object): + NoDirection : QGeoManeuver.InstructionDirection = ... # 0x0 + DirectionForward : QGeoManeuver.InstructionDirection = ... # 0x1 + DirectionBearRight : QGeoManeuver.InstructionDirection = ... # 0x2 + DirectionLightRight : QGeoManeuver.InstructionDirection = ... # 0x3 + DirectionRight : QGeoManeuver.InstructionDirection = ... # 0x4 + DirectionHardRight : QGeoManeuver.InstructionDirection = ... # 0x5 + DirectionUTurnRight : QGeoManeuver.InstructionDirection = ... # 0x6 + DirectionUTurnLeft : QGeoManeuver.InstructionDirection = ... # 0x7 + DirectionHardLeft : QGeoManeuver.InstructionDirection = ... # 0x8 + DirectionLeft : QGeoManeuver.InstructionDirection = ... # 0x9 + DirectionLightLeft : QGeoManeuver.InstructionDirection = ... # 0xa + DirectionBearLeft : QGeoManeuver.InstructionDirection = ... # 0xb + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtLocation.QGeoManeuver) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def direction(self) -> PySide2.QtLocation.QGeoManeuver.InstructionDirection: ... + def distanceToNextInstruction(self) -> float: ... + def extendedAttributes(self) -> typing.Dict: ... + def instructionText(self) -> str: ... + def isValid(self) -> bool: ... + def position(self) -> PySide2.QtPositioning.QGeoCoordinate: ... + def setDirection(self, direction:PySide2.QtLocation.QGeoManeuver.InstructionDirection) -> None: ... + def setDistanceToNextInstruction(self, distance:float) -> None: ... + def setExtendedAttributes(self, extendedAttributes:typing.Dict) -> None: ... + def setInstructionText(self, instructionText:str) -> None: ... + def setPosition(self, position:PySide2.QtPositioning.QGeoCoordinate) -> None: ... + def setTimeToNextInstruction(self, secs:int) -> None: ... + def setWaypoint(self, coordinate:PySide2.QtPositioning.QGeoCoordinate) -> None: ... + def timeToNextInstruction(self) -> int: ... + def waypoint(self) -> PySide2.QtPositioning.QGeoCoordinate: ... + + +class QGeoRoute(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtLocation.QGeoRoute) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def bounds(self) -> PySide2.QtPositioning.QGeoRectangle: ... + def distance(self) -> float: ... + def extendedAttributes(self) -> typing.Dict: ... + def firstRouteSegment(self) -> PySide2.QtLocation.QGeoRouteSegment: ... + def path(self) -> typing.List: ... + def request(self) -> PySide2.QtLocation.QGeoRouteRequest: ... + def routeId(self) -> str: ... + def setBounds(self, bounds:PySide2.QtPositioning.QGeoRectangle) -> None: ... + def setDistance(self, distance:float) -> None: ... + def setExtendedAttributes(self, extendedAttributes:typing.Dict) -> None: ... + def setFirstRouteSegment(self, routeSegment:PySide2.QtLocation.QGeoRouteSegment) -> None: ... + def setPath(self, path:typing.Sequence) -> None: ... + def setRequest(self, request:PySide2.QtLocation.QGeoRouteRequest) -> None: ... + def setRouteId(self, id:str) -> None: ... + def setTravelMode(self, mode:PySide2.QtLocation.QGeoRouteRequest.TravelMode) -> None: ... + def setTravelTime(self, secs:int) -> None: ... + def travelMode(self) -> PySide2.QtLocation.QGeoRouteRequest.TravelMode: ... + def travelTime(self) -> int: ... + + +class QGeoRouteReply(PySide2.QtCore.QObject): + NoError : QGeoRouteReply = ... # 0x0 + EngineNotSetError : QGeoRouteReply = ... # 0x1 + CommunicationError : QGeoRouteReply = ... # 0x2 + ParseError : QGeoRouteReply = ... # 0x3 + UnsupportedOptionError : QGeoRouteReply = ... # 0x4 + UnknownError : QGeoRouteReply = ... # 0x5 + + class Error(object): + NoError : QGeoRouteReply.Error = ... # 0x0 + EngineNotSetError : QGeoRouteReply.Error = ... # 0x1 + CommunicationError : QGeoRouteReply.Error = ... # 0x2 + ParseError : QGeoRouteReply.Error = ... # 0x3 + UnsupportedOptionError : QGeoRouteReply.Error = ... # 0x4 + UnknownError : QGeoRouteReply.Error = ... # 0x5 + + @typing.overload + def __init__(self, error:PySide2.QtLocation.QGeoRouteReply.Error, errorString:str, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, request:PySide2.QtLocation.QGeoRouteRequest, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def abort(self) -> None: ... + def addRoutes(self, routes:typing.Sequence) -> None: ... + def error(self) -> PySide2.QtLocation.QGeoRouteReply.Error: ... + def errorString(self) -> str: ... + def isFinished(self) -> bool: ... + def request(self) -> PySide2.QtLocation.QGeoRouteRequest: ... + def routes(self) -> typing.List: ... + def setError(self, error:PySide2.QtLocation.QGeoRouteReply.Error, errorString:str) -> None: ... + def setFinished(self, finished:bool) -> None: ... + def setRoutes(self, routes:typing.Sequence) -> None: ... + + +class QGeoRouteRequest(Shiboken.Object): + NeutralFeatureWeight : QGeoRouteRequest = ... # 0x0 + NoFeature : QGeoRouteRequest = ... # 0x0 + NoManeuvers : QGeoRouteRequest = ... # 0x0 + NoSegmentData : QGeoRouteRequest = ... # 0x0 + BasicManeuvers : QGeoRouteRequest = ... # 0x1 + BasicSegmentData : QGeoRouteRequest = ... # 0x1 + CarTravel : QGeoRouteRequest = ... # 0x1 + PreferFeatureWeight : QGeoRouteRequest = ... # 0x1 + ShortestRoute : QGeoRouteRequest = ... # 0x1 + TollFeature : QGeoRouteRequest = ... # 0x1 + FastestRoute : QGeoRouteRequest = ... # 0x2 + HighwayFeature : QGeoRouteRequest = ... # 0x2 + PedestrianTravel : QGeoRouteRequest = ... # 0x2 + RequireFeatureWeight : QGeoRouteRequest = ... # 0x2 + AvoidFeatureWeight : QGeoRouteRequest = ... # 0x4 + BicycleTravel : QGeoRouteRequest = ... # 0x4 + MostEconomicRoute : QGeoRouteRequest = ... # 0x4 + PublicTransitFeature : QGeoRouteRequest = ... # 0x4 + DisallowFeatureWeight : QGeoRouteRequest = ... # 0x8 + FerryFeature : QGeoRouteRequest = ... # 0x8 + MostScenicRoute : QGeoRouteRequest = ... # 0x8 + PublicTransitTravel : QGeoRouteRequest = ... # 0x8 + TruckTravel : QGeoRouteRequest = ... # 0x10 + TunnelFeature : QGeoRouteRequest = ... # 0x10 + DirtRoadFeature : QGeoRouteRequest = ... # 0x20 + ParksFeature : QGeoRouteRequest = ... # 0x40 + MotorPoolLaneFeature : QGeoRouteRequest = ... # 0x80 + TrafficFeature : QGeoRouteRequest = ... # 0x100 + + class FeatureType(object): + NoFeature : QGeoRouteRequest.FeatureType = ... # 0x0 + TollFeature : QGeoRouteRequest.FeatureType = ... # 0x1 + HighwayFeature : QGeoRouteRequest.FeatureType = ... # 0x2 + PublicTransitFeature : QGeoRouteRequest.FeatureType = ... # 0x4 + FerryFeature : QGeoRouteRequest.FeatureType = ... # 0x8 + TunnelFeature : QGeoRouteRequest.FeatureType = ... # 0x10 + DirtRoadFeature : QGeoRouteRequest.FeatureType = ... # 0x20 + ParksFeature : QGeoRouteRequest.FeatureType = ... # 0x40 + MotorPoolLaneFeature : QGeoRouteRequest.FeatureType = ... # 0x80 + TrafficFeature : QGeoRouteRequest.FeatureType = ... # 0x100 + + class FeatureTypes(object): ... + + class FeatureWeight(object): + NeutralFeatureWeight : QGeoRouteRequest.FeatureWeight = ... # 0x0 + PreferFeatureWeight : QGeoRouteRequest.FeatureWeight = ... # 0x1 + RequireFeatureWeight : QGeoRouteRequest.FeatureWeight = ... # 0x2 + AvoidFeatureWeight : QGeoRouteRequest.FeatureWeight = ... # 0x4 + DisallowFeatureWeight : QGeoRouteRequest.FeatureWeight = ... # 0x8 + + class FeatureWeights(object): ... + + class ManeuverDetail(object): + NoManeuvers : QGeoRouteRequest.ManeuverDetail = ... # 0x0 + BasicManeuvers : QGeoRouteRequest.ManeuverDetail = ... # 0x1 + + class ManeuverDetails(object): ... + + class RouteOptimization(object): + ShortestRoute : QGeoRouteRequest.RouteOptimization = ... # 0x1 + FastestRoute : QGeoRouteRequest.RouteOptimization = ... # 0x2 + MostEconomicRoute : QGeoRouteRequest.RouteOptimization = ... # 0x4 + MostScenicRoute : QGeoRouteRequest.RouteOptimization = ... # 0x8 + + class RouteOptimizations(object): ... + + class SegmentDetail(object): + NoSegmentData : QGeoRouteRequest.SegmentDetail = ... # 0x0 + BasicSegmentData : QGeoRouteRequest.SegmentDetail = ... # 0x1 + + class SegmentDetails(object): ... + + class TravelMode(object): + CarTravel : QGeoRouteRequest.TravelMode = ... # 0x1 + PedestrianTravel : QGeoRouteRequest.TravelMode = ... # 0x2 + BicycleTravel : QGeoRouteRequest.TravelMode = ... # 0x4 + PublicTransitTravel : QGeoRouteRequest.TravelMode = ... # 0x8 + TruckTravel : QGeoRouteRequest.TravelMode = ... # 0x10 + + class TravelModes(object): ... + + @typing.overload + def __init__(self, origin:PySide2.QtPositioning.QGeoCoordinate, destination:PySide2.QtPositioning.QGeoCoordinate) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtLocation.QGeoRouteRequest) -> None: ... + @typing.overload + def __init__(self, waypoints:typing.Sequence=...) -> None: ... + + def departureTime(self) -> PySide2.QtCore.QDateTime: ... + def excludeAreas(self) -> typing.List: ... + def extraParameters(self) -> typing.Dict: ... + def featureTypes(self) -> typing.List: ... + def featureWeight(self, featureType:PySide2.QtLocation.QGeoRouteRequest.FeatureType) -> PySide2.QtLocation.QGeoRouteRequest.FeatureWeight: ... + def maneuverDetail(self) -> PySide2.QtLocation.QGeoRouteRequest.ManeuverDetail: ... + def numberAlternativeRoutes(self) -> int: ... + def routeOptimization(self) -> PySide2.QtLocation.QGeoRouteRequest.RouteOptimizations: ... + def segmentDetail(self) -> PySide2.QtLocation.QGeoRouteRequest.SegmentDetail: ... + def setDepartureTime(self, departureTime:PySide2.QtCore.QDateTime) -> None: ... + def setExcludeAreas(self, areas:typing.Sequence) -> None: ... + def setExtraParameters(self, extraParameters:typing.Dict) -> None: ... + def setFeatureWeight(self, featureType:PySide2.QtLocation.QGeoRouteRequest.FeatureType, featureWeight:PySide2.QtLocation.QGeoRouteRequest.FeatureWeight) -> None: ... + def setManeuverDetail(self, maneuverDetail:PySide2.QtLocation.QGeoRouteRequest.ManeuverDetail) -> None: ... + def setNumberAlternativeRoutes(self, alternatives:int) -> None: ... + def setRouteOptimization(self, optimization:PySide2.QtLocation.QGeoRouteRequest.RouteOptimizations) -> None: ... + def setSegmentDetail(self, segmentDetail:PySide2.QtLocation.QGeoRouteRequest.SegmentDetail) -> None: ... + def setTravelModes(self, travelModes:PySide2.QtLocation.QGeoRouteRequest.TravelModes) -> None: ... + def setWaypoints(self, waypoints:typing.Sequence) -> None: ... + def setWaypointsMetadata(self, waypointMetadata:typing.Sequence) -> None: ... + def travelModes(self) -> PySide2.QtLocation.QGeoRouteRequest.TravelModes: ... + def waypoints(self) -> typing.List: ... + def waypointsMetadata(self) -> typing.List: ... + + +class QGeoRouteSegment(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtLocation.QGeoRouteSegment) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def distance(self) -> float: ... + def isLegLastSegment(self) -> bool: ... + def isValid(self) -> bool: ... + def maneuver(self) -> PySide2.QtLocation.QGeoManeuver: ... + def nextRouteSegment(self) -> PySide2.QtLocation.QGeoRouteSegment: ... + def path(self) -> typing.List: ... + def setDistance(self, distance:float) -> None: ... + def setManeuver(self, maneuver:PySide2.QtLocation.QGeoManeuver) -> None: ... + def setNextRouteSegment(self, routeSegment:PySide2.QtLocation.QGeoRouteSegment) -> None: ... + def setPath(self, path:typing.Sequence) -> None: ... + def setTravelTime(self, secs:int) -> None: ... + def travelTime(self) -> int: ... + + +class QGeoRoutingManager(PySide2.QtCore.QObject): + def calculateRoute(self, request:PySide2.QtLocation.QGeoRouteRequest) -> PySide2.QtLocation.QGeoRouteReply: ... + def locale(self) -> PySide2.QtCore.QLocale: ... + def managerName(self) -> str: ... + def managerVersion(self) -> int: ... + def measurementSystem(self) -> PySide2.QtCore.QLocale.MeasurementSystem: ... + def setLocale(self, locale:PySide2.QtCore.QLocale) -> None: ... + def setMeasurementSystem(self, system:PySide2.QtCore.QLocale.MeasurementSystem) -> None: ... + def supportedFeatureTypes(self) -> PySide2.QtLocation.QGeoRouteRequest.FeatureTypes: ... + def supportedFeatureWeights(self) -> PySide2.QtLocation.QGeoRouteRequest.FeatureWeights: ... + def supportedManeuverDetails(self) -> PySide2.QtLocation.QGeoRouteRequest.ManeuverDetails: ... + def supportedRouteOptimizations(self) -> PySide2.QtLocation.QGeoRouteRequest.RouteOptimizations: ... + def supportedSegmentDetails(self) -> PySide2.QtLocation.QGeoRouteRequest.SegmentDetails: ... + def supportedTravelModes(self) -> PySide2.QtLocation.QGeoRouteRequest.TravelModes: ... + def updateRoute(self, route:PySide2.QtLocation.QGeoRoute, position:PySide2.QtPositioning.QGeoCoordinate) -> PySide2.QtLocation.QGeoRouteReply: ... + + +class QGeoRoutingManagerEngine(PySide2.QtCore.QObject): + + def __init__(self, parameters:typing.Dict, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def calculateRoute(self, request:PySide2.QtLocation.QGeoRouteRequest) -> PySide2.QtLocation.QGeoRouteReply: ... + def locale(self) -> PySide2.QtCore.QLocale: ... + def managerName(self) -> str: ... + def managerVersion(self) -> int: ... + def measurementSystem(self) -> PySide2.QtCore.QLocale.MeasurementSystem: ... + def setLocale(self, locale:PySide2.QtCore.QLocale) -> None: ... + def setMeasurementSystem(self, system:PySide2.QtCore.QLocale.MeasurementSystem) -> None: ... + def setSupportedFeatureTypes(self, featureTypes:PySide2.QtLocation.QGeoRouteRequest.FeatureTypes) -> None: ... + def setSupportedFeatureWeights(self, featureWeights:PySide2.QtLocation.QGeoRouteRequest.FeatureWeights) -> None: ... + def setSupportedManeuverDetails(self, maneuverDetails:PySide2.QtLocation.QGeoRouteRequest.ManeuverDetails) -> None: ... + def setSupportedRouteOptimizations(self, optimizations:PySide2.QtLocation.QGeoRouteRequest.RouteOptimizations) -> None: ... + def setSupportedSegmentDetails(self, segmentDetails:PySide2.QtLocation.QGeoRouteRequest.SegmentDetails) -> None: ... + def setSupportedTravelModes(self, travelModes:PySide2.QtLocation.QGeoRouteRequest.TravelModes) -> None: ... + def supportedFeatureTypes(self) -> PySide2.QtLocation.QGeoRouteRequest.FeatureTypes: ... + def supportedFeatureWeights(self) -> PySide2.QtLocation.QGeoRouteRequest.FeatureWeights: ... + def supportedManeuverDetails(self) -> PySide2.QtLocation.QGeoRouteRequest.ManeuverDetails: ... + def supportedRouteOptimizations(self) -> PySide2.QtLocation.QGeoRouteRequest.RouteOptimizations: ... + def supportedSegmentDetails(self) -> PySide2.QtLocation.QGeoRouteRequest.SegmentDetails: ... + def supportedTravelModes(self) -> PySide2.QtLocation.QGeoRouteRequest.TravelModes: ... + def updateRoute(self, route:PySide2.QtLocation.QGeoRoute, position:PySide2.QtPositioning.QGeoCoordinate) -> PySide2.QtLocation.QGeoRouteReply: ... + + +class QGeoServiceProvider(PySide2.QtCore.QObject): + AnyGeocodingFeatures : QGeoServiceProvider = ... # -0x1 + AnyMappingFeatures : QGeoServiceProvider = ... # -0x1 + AnyNavigationFeatures : QGeoServiceProvider = ... # -0x1 + AnyPlacesFeatures : QGeoServiceProvider = ... # -0x1 + AnyRoutingFeatures : QGeoServiceProvider = ... # -0x1 + NoError : QGeoServiceProvider = ... # 0x0 + NoGeocodingFeatures : QGeoServiceProvider = ... # 0x0 + NoMappingFeatures : QGeoServiceProvider = ... # 0x0 + NoNavigationFeatures : QGeoServiceProvider = ... # 0x0 + NoPlacesFeatures : QGeoServiceProvider = ... # 0x0 + NoRoutingFeatures : QGeoServiceProvider = ... # 0x0 + NotSupportedError : QGeoServiceProvider = ... # 0x1 + OnlineGeocodingFeature : QGeoServiceProvider = ... # 0x1 + OnlineMappingFeature : QGeoServiceProvider = ... # 0x1 + OnlineNavigationFeature : QGeoServiceProvider = ... # 0x1 + OnlinePlacesFeature : QGeoServiceProvider = ... # 0x1 + OnlineRoutingFeature : QGeoServiceProvider = ... # 0x1 + OfflineGeocodingFeature : QGeoServiceProvider = ... # 0x2 + OfflineMappingFeature : QGeoServiceProvider = ... # 0x2 + OfflineNavigationFeature : QGeoServiceProvider = ... # 0x2 + OfflinePlacesFeature : QGeoServiceProvider = ... # 0x2 + OfflineRoutingFeature : QGeoServiceProvider = ... # 0x2 + UnknownParameterError : QGeoServiceProvider = ... # 0x2 + MissingRequiredParameterError: QGeoServiceProvider = ... # 0x3 + ConnectionError : QGeoServiceProvider = ... # 0x4 + LocalizedMappingFeature : QGeoServiceProvider = ... # 0x4 + LocalizedRoutingFeature : QGeoServiceProvider = ... # 0x4 + ReverseGeocodingFeature : QGeoServiceProvider = ... # 0x4 + SavePlaceFeature : QGeoServiceProvider = ... # 0x4 + LoaderError : QGeoServiceProvider = ... # 0x5 + LocalizedGeocodingFeature: QGeoServiceProvider = ... # 0x8 + RemovePlaceFeature : QGeoServiceProvider = ... # 0x8 + RouteUpdatesFeature : QGeoServiceProvider = ... # 0x8 + AlternativeRoutesFeature : QGeoServiceProvider = ... # 0x10 + SaveCategoryFeature : QGeoServiceProvider = ... # 0x10 + ExcludeAreasRoutingFeature: QGeoServiceProvider = ... # 0x20 + RemoveCategoryFeature : QGeoServiceProvider = ... # 0x20 + PlaceRecommendationsFeature: QGeoServiceProvider = ... # 0x40 + SearchSuggestionsFeature : QGeoServiceProvider = ... # 0x80 + LocalizedPlacesFeature : QGeoServiceProvider = ... # 0x100 + NotificationsFeature : QGeoServiceProvider = ... # 0x200 + PlaceMatchingFeature : QGeoServiceProvider = ... # 0x400 + + class Error(object): + NoError : QGeoServiceProvider.Error = ... # 0x0 + NotSupportedError : QGeoServiceProvider.Error = ... # 0x1 + UnknownParameterError : QGeoServiceProvider.Error = ... # 0x2 + MissingRequiredParameterError: QGeoServiceProvider.Error = ... # 0x3 + ConnectionError : QGeoServiceProvider.Error = ... # 0x4 + LoaderError : QGeoServiceProvider.Error = ... # 0x5 + + class GeocodingFeature(object): + AnyGeocodingFeatures : QGeoServiceProvider.GeocodingFeature = ... # -0x1 + NoGeocodingFeatures : QGeoServiceProvider.GeocodingFeature = ... # 0x0 + OnlineGeocodingFeature : QGeoServiceProvider.GeocodingFeature = ... # 0x1 + OfflineGeocodingFeature : QGeoServiceProvider.GeocodingFeature = ... # 0x2 + ReverseGeocodingFeature : QGeoServiceProvider.GeocodingFeature = ... # 0x4 + LocalizedGeocodingFeature: QGeoServiceProvider.GeocodingFeature = ... # 0x8 + + class GeocodingFeatures(object): ... + + class MappingFeature(object): + AnyMappingFeatures : QGeoServiceProvider.MappingFeature = ... # -0x1 + NoMappingFeatures : QGeoServiceProvider.MappingFeature = ... # 0x0 + OnlineMappingFeature : QGeoServiceProvider.MappingFeature = ... # 0x1 + OfflineMappingFeature : QGeoServiceProvider.MappingFeature = ... # 0x2 + LocalizedMappingFeature : QGeoServiceProvider.MappingFeature = ... # 0x4 + + class MappingFeatures(object): ... + + class NavigationFeature(object): + AnyNavigationFeatures : QGeoServiceProvider.NavigationFeature = ... # -0x1 + NoNavigationFeatures : QGeoServiceProvider.NavigationFeature = ... # 0x0 + OnlineNavigationFeature : QGeoServiceProvider.NavigationFeature = ... # 0x1 + OfflineNavigationFeature : QGeoServiceProvider.NavigationFeature = ... # 0x2 + + class NavigationFeatures(object): ... + + class PlacesFeature(object): + AnyPlacesFeatures : QGeoServiceProvider.PlacesFeature = ... # -0x1 + NoPlacesFeatures : QGeoServiceProvider.PlacesFeature = ... # 0x0 + OnlinePlacesFeature : QGeoServiceProvider.PlacesFeature = ... # 0x1 + OfflinePlacesFeature : QGeoServiceProvider.PlacesFeature = ... # 0x2 + SavePlaceFeature : QGeoServiceProvider.PlacesFeature = ... # 0x4 + RemovePlaceFeature : QGeoServiceProvider.PlacesFeature = ... # 0x8 + SaveCategoryFeature : QGeoServiceProvider.PlacesFeature = ... # 0x10 + RemoveCategoryFeature : QGeoServiceProvider.PlacesFeature = ... # 0x20 + PlaceRecommendationsFeature: QGeoServiceProvider.PlacesFeature = ... # 0x40 + SearchSuggestionsFeature : QGeoServiceProvider.PlacesFeature = ... # 0x80 + LocalizedPlacesFeature : QGeoServiceProvider.PlacesFeature = ... # 0x100 + NotificationsFeature : QGeoServiceProvider.PlacesFeature = ... # 0x200 + PlaceMatchingFeature : QGeoServiceProvider.PlacesFeature = ... # 0x400 + + class PlacesFeatures(object): ... + + class RoutingFeature(object): + AnyRoutingFeatures : QGeoServiceProvider.RoutingFeature = ... # -0x1 + NoRoutingFeatures : QGeoServiceProvider.RoutingFeature = ... # 0x0 + OnlineRoutingFeature : QGeoServiceProvider.RoutingFeature = ... # 0x1 + OfflineRoutingFeature : QGeoServiceProvider.RoutingFeature = ... # 0x2 + LocalizedRoutingFeature : QGeoServiceProvider.RoutingFeature = ... # 0x4 + RouteUpdatesFeature : QGeoServiceProvider.RoutingFeature = ... # 0x8 + AlternativeRoutesFeature : QGeoServiceProvider.RoutingFeature = ... # 0x10 + ExcludeAreasRoutingFeature: QGeoServiceProvider.RoutingFeature = ... # 0x20 + + class RoutingFeatures(object): ... + + def __init__(self, providerName:str, parameters:typing.Dict=..., allowExperimental:bool=...) -> None: ... + + @staticmethod + def availableServiceProviders() -> typing.List: ... + def error(self) -> PySide2.QtLocation.QGeoServiceProvider.Error: ... + def errorString(self) -> str: ... + def geocodingError(self) -> PySide2.QtLocation.QGeoServiceProvider.Error: ... + def geocodingErrorString(self) -> str: ... + def geocodingFeatures(self) -> PySide2.QtLocation.QGeoServiceProvider.GeocodingFeatures: ... + def geocodingManager(self) -> PySide2.QtLocation.QGeoCodingManager: ... + def mappingError(self) -> PySide2.QtLocation.QGeoServiceProvider.Error: ... + def mappingErrorString(self) -> str: ... + def mappingFeatures(self) -> PySide2.QtLocation.QGeoServiceProvider.MappingFeatures: ... + def navigationError(self) -> PySide2.QtLocation.QGeoServiceProvider.Error: ... + def navigationErrorString(self) -> str: ... + def navigationFeatures(self) -> PySide2.QtLocation.QGeoServiceProvider.NavigationFeatures: ... + def placeManager(self) -> PySide2.QtLocation.QPlaceManager: ... + def placesError(self) -> PySide2.QtLocation.QGeoServiceProvider.Error: ... + def placesErrorString(self) -> str: ... + def placesFeatures(self) -> PySide2.QtLocation.QGeoServiceProvider.PlacesFeatures: ... + def routingError(self) -> PySide2.QtLocation.QGeoServiceProvider.Error: ... + def routingErrorString(self) -> str: ... + def routingFeatures(self) -> PySide2.QtLocation.QGeoServiceProvider.RoutingFeatures: ... + def routingManager(self) -> PySide2.QtLocation.QGeoRoutingManager: ... + def setAllowExperimental(self, allow:bool) -> None: ... + def setLocale(self, locale:PySide2.QtCore.QLocale) -> None: ... + def setParameters(self, parameters:typing.Dict) -> None: ... + + +class QGeoServiceProviderFactory(Shiboken.Object): + + def __init__(self) -> None: ... + + def createGeocodingManagerEngine(self, parameters:typing.Dict, error:PySide2.QtLocation.QGeoServiceProvider.Error) -> typing.Tuple: ... + def createPlaceManagerEngine(self, parameters:typing.Dict, error:PySide2.QtLocation.QGeoServiceProvider.Error) -> typing.Tuple: ... + def createRoutingManagerEngine(self, parameters:typing.Dict, error:PySide2.QtLocation.QGeoServiceProvider.Error) -> typing.Tuple: ... + + +class QGeoServiceProviderFactoryV2(PySide2.QtLocation.QGeoServiceProviderFactory): + + def __init__(self) -> None: ... + + +class QPlace(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtLocation.QPlace) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def appendContactDetail(self, contactType:str, detail:PySide2.QtLocation.QPlaceContactDetail) -> None: ... + def attribution(self) -> str: ... + def categories(self) -> typing.List: ... + def contactDetails(self, contactType:str) -> typing.List: ... + def contactTypes(self) -> typing.List: ... + def content(self, type:PySide2.QtLocation.QPlaceContent.Type) -> typing.Dict: ... + def detailsFetched(self) -> bool: ... + def extendedAttribute(self, attributeType:str) -> PySide2.QtLocation.QPlaceAttribute: ... + def extendedAttributeTypes(self) -> typing.List: ... + def icon(self) -> PySide2.QtLocation.QPlaceIcon: ... + def insertContent(self, type:PySide2.QtLocation.QPlaceContent.Type, content:typing.Dict) -> None: ... + def isEmpty(self) -> bool: ... + def location(self) -> PySide2.QtPositioning.QGeoLocation: ... + def name(self) -> str: ... + def placeId(self) -> str: ... + def primaryEmail(self) -> str: ... + def primaryFax(self) -> str: ... + def primaryPhone(self) -> str: ... + def primaryWebsite(self) -> PySide2.QtCore.QUrl: ... + def ratings(self) -> PySide2.QtLocation.QPlaceRatings: ... + def removeContactDetails(self, contactType:str) -> None: ... + def removeExtendedAttribute(self, attributeType:str) -> None: ... + def setAttribution(self, attribution:str) -> None: ... + def setCategories(self, categories:typing.Sequence) -> None: ... + def setCategory(self, category:PySide2.QtLocation.QPlaceCategory) -> None: ... + def setContactDetails(self, contactType:str, details:typing.Sequence) -> None: ... + def setContent(self, type:PySide2.QtLocation.QPlaceContent.Type, content:typing.Dict) -> None: ... + def setDetailsFetched(self, fetched:bool) -> None: ... + def setExtendedAttribute(self, attributeType:str, attribute:PySide2.QtLocation.QPlaceAttribute) -> None: ... + def setIcon(self, icon:PySide2.QtLocation.QPlaceIcon) -> None: ... + def setLocation(self, location:PySide2.QtPositioning.QGeoLocation) -> None: ... + def setName(self, name:str) -> None: ... + def setPlaceId(self, identifier:str) -> None: ... + def setRatings(self, ratings:PySide2.QtLocation.QPlaceRatings) -> None: ... + def setSupplier(self, supplier:PySide2.QtLocation.QPlaceSupplier) -> None: ... + def setTotalContentCount(self, type:PySide2.QtLocation.QPlaceContent.Type, total:int) -> None: ... + def supplier(self) -> PySide2.QtLocation.QPlaceSupplier: ... + def totalContentCount(self, type:PySide2.QtLocation.QPlaceContent.Type) -> int: ... + + +class QPlaceAttribute(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtLocation.QPlaceAttribute) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def isEmpty(self) -> bool: ... + def label(self) -> str: ... + def setLabel(self, label:str) -> None: ... + def setText(self, text:str) -> None: ... + def text(self) -> str: ... + + +class QPlaceCategory(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtLocation.QPlaceCategory) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def categoryId(self) -> str: ... + def icon(self) -> PySide2.QtLocation.QPlaceIcon: ... + def isEmpty(self) -> bool: ... + def name(self) -> str: ... + def setCategoryId(self, identifier:str) -> None: ... + def setIcon(self, icon:PySide2.QtLocation.QPlaceIcon) -> None: ... + def setName(self, name:str) -> None: ... + + +class QPlaceContactDetail(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtLocation.QPlaceContactDetail) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def clear(self) -> None: ... + def label(self) -> str: ... + def setLabel(self, label:str) -> None: ... + def setValue(self, value:str) -> None: ... + def value(self) -> str: ... + + +class QPlaceContent(Shiboken.Object): + NoType : QPlaceContent = ... # 0x0 + ImageType : QPlaceContent = ... # 0x1 + ReviewType : QPlaceContent = ... # 0x2 + EditorialType : QPlaceContent = ... # 0x3 + CustomType : QPlaceContent = ... # 0x100 + + class Type(object): + NoType : QPlaceContent.Type = ... # 0x0 + ImageType : QPlaceContent.Type = ... # 0x1 + ReviewType : QPlaceContent.Type = ... # 0x2 + EditorialType : QPlaceContent.Type = ... # 0x3 + CustomType : QPlaceContent.Type = ... # 0x100 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtLocation.QPlaceContent) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def attribution(self) -> str: ... + def setAttribution(self, attribution:str) -> None: ... + def setSupplier(self, supplier:PySide2.QtLocation.QPlaceSupplier) -> None: ... + def setUser(self, user:PySide2.QtLocation.QPlaceUser) -> None: ... + def supplier(self) -> PySide2.QtLocation.QPlaceSupplier: ... + def type(self) -> PySide2.QtLocation.QPlaceContent.Type: ... + def user(self) -> PySide2.QtLocation.QPlaceUser: ... + + +class QPlaceContentReply(PySide2.QtLocation.QPlaceReply): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def content(self) -> typing.Dict: ... + def nextPageRequest(self) -> PySide2.QtLocation.QPlaceContentRequest: ... + def previousPageRequest(self) -> PySide2.QtLocation.QPlaceContentRequest: ... + def request(self) -> PySide2.QtLocation.QPlaceContentRequest: ... + def setContent(self, content:typing.Dict) -> None: ... + def setNextPageRequest(self, next:PySide2.QtLocation.QPlaceContentRequest) -> None: ... + def setPreviousPageRequest(self, previous:PySide2.QtLocation.QPlaceContentRequest) -> None: ... + def setRequest(self, request:PySide2.QtLocation.QPlaceContentRequest) -> None: ... + def setTotalCount(self, total:int) -> None: ... + def totalCount(self) -> int: ... + def type(self) -> PySide2.QtLocation.QPlaceReply.Type: ... + + +class QPlaceContentRequest(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtLocation.QPlaceContentRequest) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def clear(self) -> None: ... + def contentContext(self) -> typing.Any: ... + def contentType(self) -> PySide2.QtLocation.QPlaceContent.Type: ... + def limit(self) -> int: ... + def placeId(self) -> str: ... + def setContentContext(self, context:typing.Any) -> None: ... + def setContentType(self, type:PySide2.QtLocation.QPlaceContent.Type) -> None: ... + def setLimit(self, limit:int) -> None: ... + def setPlaceId(self, identifier:str) -> None: ... + + +class QPlaceDetailsReply(PySide2.QtLocation.QPlaceReply): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def place(self) -> PySide2.QtLocation.QPlace: ... + def setPlace(self, place:PySide2.QtLocation.QPlace) -> None: ... + def type(self) -> PySide2.QtLocation.QPlaceReply.Type: ... + + +class QPlaceEditorial(PySide2.QtLocation.QPlaceContent): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtLocation.QPlaceContent) -> None: ... + + def language(self) -> str: ... + def setLanguage(self, data:str) -> None: ... + def setText(self, text:str) -> None: ... + def setTitle(self, data:str) -> None: ... + def text(self) -> str: ... + def title(self) -> str: ... + + +class QPlaceIcon(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtLocation.QPlaceIcon) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def isEmpty(self) -> bool: ... + def manager(self) -> PySide2.QtLocation.QPlaceManager: ... + def parameters(self) -> typing.Dict: ... + def setManager(self, manager:PySide2.QtLocation.QPlaceManager) -> None: ... + def setParameters(self, parameters:typing.Dict) -> None: ... + def url(self, size:PySide2.QtCore.QSize=...) -> PySide2.QtCore.QUrl: ... + + +class QPlaceIdReply(PySide2.QtLocation.QPlaceReply): + SavePlace : QPlaceIdReply = ... # 0x0 + SaveCategory : QPlaceIdReply = ... # 0x1 + RemovePlace : QPlaceIdReply = ... # 0x2 + RemoveCategory : QPlaceIdReply = ... # 0x3 + + class OperationType(object): + SavePlace : QPlaceIdReply.OperationType = ... # 0x0 + SaveCategory : QPlaceIdReply.OperationType = ... # 0x1 + RemovePlace : QPlaceIdReply.OperationType = ... # 0x2 + RemoveCategory : QPlaceIdReply.OperationType = ... # 0x3 + + def __init__(self, operationType:PySide2.QtLocation.QPlaceIdReply.OperationType, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def id(self) -> str: ... + def operationType(self) -> PySide2.QtLocation.QPlaceIdReply.OperationType: ... + def setId(self, identifier:str) -> None: ... + def type(self) -> PySide2.QtLocation.QPlaceReply.Type: ... + + +class QPlaceImage(PySide2.QtLocation.QPlaceContent): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtLocation.QPlaceContent) -> None: ... + + def imageId(self) -> str: ... + def mimeType(self) -> str: ... + def setImageId(self, identifier:str) -> None: ... + def setMimeType(self, data:str) -> None: ... + def setUrl(self, url:PySide2.QtCore.QUrl) -> None: ... + def url(self) -> PySide2.QtCore.QUrl: ... + + +class QPlaceManager(PySide2.QtCore.QObject): + def category(self, categoryId:str) -> PySide2.QtLocation.QPlaceCategory: ... + def childCategories(self, parentId:str=...) -> typing.List: ... + def childCategoryIds(self, parentId:str=...) -> typing.List: ... + def compatiblePlace(self, place:PySide2.QtLocation.QPlace) -> PySide2.QtLocation.QPlace: ... + def getPlaceContent(self, request:PySide2.QtLocation.QPlaceContentRequest) -> PySide2.QtLocation.QPlaceContentReply: ... + def getPlaceDetails(self, placeId:str) -> PySide2.QtLocation.QPlaceDetailsReply: ... + def initializeCategories(self) -> PySide2.QtLocation.QPlaceReply: ... + def locales(self) -> typing.List: ... + def managerName(self) -> str: ... + def managerVersion(self) -> int: ... + def matchingPlaces(self, request:PySide2.QtLocation.QPlaceMatchRequest) -> PySide2.QtLocation.QPlaceMatchReply: ... + def parentCategoryId(self, categoryId:str) -> str: ... + def removeCategory(self, categoryId:str) -> PySide2.QtLocation.QPlaceIdReply: ... + def removePlace(self, placeId:str) -> PySide2.QtLocation.QPlaceIdReply: ... + def saveCategory(self, category:PySide2.QtLocation.QPlaceCategory, parentId:str=...) -> PySide2.QtLocation.QPlaceIdReply: ... + def savePlace(self, place:PySide2.QtLocation.QPlace) -> PySide2.QtLocation.QPlaceIdReply: ... + def search(self, query:PySide2.QtLocation.QPlaceSearchRequest) -> PySide2.QtLocation.QPlaceSearchReply: ... + def searchSuggestions(self, request:PySide2.QtLocation.QPlaceSearchRequest) -> PySide2.QtLocation.QPlaceSearchSuggestionReply: ... + def setLocale(self, locale:PySide2.QtCore.QLocale) -> None: ... + def setLocales(self, locale:typing.Sequence) -> None: ... + + +class QPlaceManagerEngine(PySide2.QtCore.QObject): + + def __init__(self, parameters:typing.Dict, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def category(self, categoryId:str) -> PySide2.QtLocation.QPlaceCategory: ... + def childCategories(self, parentId:str) -> typing.List: ... + def childCategoryIds(self, categoryId:str) -> typing.List: ... + def compatiblePlace(self, original:PySide2.QtLocation.QPlace) -> PySide2.QtLocation.QPlace: ... + def constructIconUrl(self, icon:PySide2.QtLocation.QPlaceIcon, size:PySide2.QtCore.QSize) -> PySide2.QtCore.QUrl: ... + def getPlaceContent(self, request:PySide2.QtLocation.QPlaceContentRequest) -> PySide2.QtLocation.QPlaceContentReply: ... + def getPlaceDetails(self, placeId:str) -> PySide2.QtLocation.QPlaceDetailsReply: ... + def initializeCategories(self) -> PySide2.QtLocation.QPlaceReply: ... + def locales(self) -> typing.List: ... + def manager(self) -> PySide2.QtLocation.QPlaceManager: ... + def managerName(self) -> str: ... + def managerVersion(self) -> int: ... + def matchingPlaces(self, request:PySide2.QtLocation.QPlaceMatchRequest) -> PySide2.QtLocation.QPlaceMatchReply: ... + def parentCategoryId(self, categoryId:str) -> str: ... + def removeCategory(self, categoryId:str) -> PySide2.QtLocation.QPlaceIdReply: ... + def removePlace(self, placeId:str) -> PySide2.QtLocation.QPlaceIdReply: ... + def saveCategory(self, category:PySide2.QtLocation.QPlaceCategory, parentId:str) -> PySide2.QtLocation.QPlaceIdReply: ... + def savePlace(self, place:PySide2.QtLocation.QPlace) -> PySide2.QtLocation.QPlaceIdReply: ... + def search(self, request:PySide2.QtLocation.QPlaceSearchRequest) -> PySide2.QtLocation.QPlaceSearchReply: ... + def searchSuggestions(self, request:PySide2.QtLocation.QPlaceSearchRequest) -> PySide2.QtLocation.QPlaceSearchSuggestionReply: ... + def setLocales(self, locales:typing.Sequence) -> None: ... + + +class QPlaceMatchReply(PySide2.QtLocation.QPlaceReply): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def places(self) -> typing.List: ... + def request(self) -> PySide2.QtLocation.QPlaceMatchRequest: ... + def setPlaces(self, results:typing.Sequence) -> None: ... + def setRequest(self, request:PySide2.QtLocation.QPlaceMatchRequest) -> None: ... + def type(self) -> PySide2.QtLocation.QPlaceReply.Type: ... + + +class QPlaceMatchRequest(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtLocation.QPlaceMatchRequest) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def clear(self) -> None: ... + def parameters(self) -> typing.Dict: ... + def places(self) -> typing.List: ... + def setParameters(self, parameters:typing.Dict) -> None: ... + def setPlaces(self, places:typing.Sequence) -> None: ... + def setResults(self, results:typing.Sequence) -> None: ... + + +class QPlaceProposedSearchResult(PySide2.QtLocation.QPlaceSearchResult): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtLocation.QPlaceSearchResult) -> None: ... + + def searchRequest(self) -> PySide2.QtLocation.QPlaceSearchRequest: ... + def setSearchRequest(self, request:PySide2.QtLocation.QPlaceSearchRequest) -> None: ... + + +class QPlaceRatings(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtLocation.QPlaceRatings) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def average(self) -> float: ... + def count(self) -> int: ... + def isEmpty(self) -> bool: ... + def maximum(self) -> float: ... + def setAverage(self, average:float) -> None: ... + def setCount(self, count:int) -> None: ... + def setMaximum(self, max:float) -> None: ... + + +class QPlaceReply(PySide2.QtCore.QObject): + NoError : QPlaceReply = ... # 0x0 + Reply : QPlaceReply = ... # 0x0 + DetailsReply : QPlaceReply = ... # 0x1 + PlaceDoesNotExistError : QPlaceReply = ... # 0x1 + CategoryDoesNotExistError: QPlaceReply = ... # 0x2 + SearchReply : QPlaceReply = ... # 0x2 + CommunicationError : QPlaceReply = ... # 0x3 + SearchSuggestionReply : QPlaceReply = ... # 0x3 + ContentReply : QPlaceReply = ... # 0x4 + ParseError : QPlaceReply = ... # 0x4 + IdReply : QPlaceReply = ... # 0x5 + PermissionsError : QPlaceReply = ... # 0x5 + MatchReply : QPlaceReply = ... # 0x6 + UnsupportedError : QPlaceReply = ... # 0x6 + BadArgumentError : QPlaceReply = ... # 0x7 + CancelError : QPlaceReply = ... # 0x8 + UnknownError : QPlaceReply = ... # 0x9 + + class Error(object): + NoError : QPlaceReply.Error = ... # 0x0 + PlaceDoesNotExistError : QPlaceReply.Error = ... # 0x1 + CategoryDoesNotExistError: QPlaceReply.Error = ... # 0x2 + CommunicationError : QPlaceReply.Error = ... # 0x3 + ParseError : QPlaceReply.Error = ... # 0x4 + PermissionsError : QPlaceReply.Error = ... # 0x5 + UnsupportedError : QPlaceReply.Error = ... # 0x6 + BadArgumentError : QPlaceReply.Error = ... # 0x7 + CancelError : QPlaceReply.Error = ... # 0x8 + UnknownError : QPlaceReply.Error = ... # 0x9 + + class Type(object): + Reply : QPlaceReply.Type = ... # 0x0 + DetailsReply : QPlaceReply.Type = ... # 0x1 + SearchReply : QPlaceReply.Type = ... # 0x2 + SearchSuggestionReply : QPlaceReply.Type = ... # 0x3 + ContentReply : QPlaceReply.Type = ... # 0x4 + IdReply : QPlaceReply.Type = ... # 0x5 + MatchReply : QPlaceReply.Type = ... # 0x6 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def abort(self) -> None: ... + def error(self) -> PySide2.QtLocation.QPlaceReply.Error: ... + def errorString(self) -> str: ... + def isFinished(self) -> bool: ... + def setError(self, error:PySide2.QtLocation.QPlaceReply.Error, errorString:str) -> None: ... + def setFinished(self, finished:bool) -> None: ... + def type(self) -> PySide2.QtLocation.QPlaceReply.Type: ... + + +class QPlaceResult(PySide2.QtLocation.QPlaceSearchResult): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtLocation.QPlaceSearchResult) -> None: ... + + def distance(self) -> float: ... + def isSponsored(self) -> bool: ... + def place(self) -> PySide2.QtLocation.QPlace: ... + def setDistance(self, distance:float) -> None: ... + def setPlace(self, place:PySide2.QtLocation.QPlace) -> None: ... + def setSponsored(self, sponsored:bool) -> None: ... + + +class QPlaceReview(PySide2.QtLocation.QPlaceContent): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtLocation.QPlaceContent) -> None: ... + + def dateTime(self) -> PySide2.QtCore.QDateTime: ... + def language(self) -> str: ... + def rating(self) -> float: ... + def reviewId(self) -> str: ... + def setDateTime(self, dt:PySide2.QtCore.QDateTime) -> None: ... + def setLanguage(self, data:str) -> None: ... + def setRating(self, data:float) -> None: ... + def setReviewId(self, identifier:str) -> None: ... + def setText(self, text:str) -> None: ... + def setTitle(self, data:str) -> None: ... + def text(self) -> str: ... + def title(self) -> str: ... + + +class QPlaceSearchReply(PySide2.QtLocation.QPlaceReply): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def nextPageRequest(self) -> PySide2.QtLocation.QPlaceSearchRequest: ... + def previousPageRequest(self) -> PySide2.QtLocation.QPlaceSearchRequest: ... + def request(self) -> PySide2.QtLocation.QPlaceSearchRequest: ... + def results(self) -> typing.List: ... + def setNextPageRequest(self, next:PySide2.QtLocation.QPlaceSearchRequest) -> None: ... + def setPreviousPageRequest(self, previous:PySide2.QtLocation.QPlaceSearchRequest) -> None: ... + def setRequest(self, request:PySide2.QtLocation.QPlaceSearchRequest) -> None: ... + def setResults(self, results:typing.Sequence) -> None: ... + def type(self) -> PySide2.QtLocation.QPlaceReply.Type: ... + + +class QPlaceSearchRequest(Shiboken.Object): + UnspecifiedHint : QPlaceSearchRequest = ... # 0x0 + DistanceHint : QPlaceSearchRequest = ... # 0x1 + LexicalPlaceNameHint : QPlaceSearchRequest = ... # 0x2 + + class RelevanceHint(object): + UnspecifiedHint : QPlaceSearchRequest.RelevanceHint = ... # 0x0 + DistanceHint : QPlaceSearchRequest.RelevanceHint = ... # 0x1 + LexicalPlaceNameHint : QPlaceSearchRequest.RelevanceHint = ... # 0x2 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtLocation.QPlaceSearchRequest) -> None: ... + + def categories(self) -> typing.List: ... + def clear(self) -> None: ... + def limit(self) -> int: ... + def recommendationId(self) -> str: ... + def relevanceHint(self) -> PySide2.QtLocation.QPlaceSearchRequest.RelevanceHint: ... + def searchArea(self) -> PySide2.QtPositioning.QGeoShape: ... + def searchContext(self) -> typing.Any: ... + def searchTerm(self) -> str: ... + def setCategories(self, categories:typing.Sequence) -> None: ... + def setCategory(self, category:PySide2.QtLocation.QPlaceCategory) -> None: ... + def setLimit(self, limit:int) -> None: ... + def setRecommendationId(self, recommendationId:str) -> None: ... + def setRelevanceHint(self, hint:PySide2.QtLocation.QPlaceSearchRequest.RelevanceHint) -> None: ... + def setSearchArea(self, area:PySide2.QtPositioning.QGeoShape) -> None: ... + def setSearchContext(self, context:typing.Any) -> None: ... + def setSearchTerm(self, term:str) -> None: ... + + +class QPlaceSearchResult(Shiboken.Object): + UnknownSearchResult : QPlaceSearchResult = ... # 0x0 + PlaceResult : QPlaceSearchResult = ... # 0x1 + ProposedSearchResult : QPlaceSearchResult = ... # 0x2 + + class SearchResultType(object): + UnknownSearchResult : QPlaceSearchResult.SearchResultType = ... # 0x0 + PlaceResult : QPlaceSearchResult.SearchResultType = ... # 0x1 + ProposedSearchResult : QPlaceSearchResult.SearchResultType = ... # 0x2 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtLocation.QPlaceSearchResult) -> None: ... + + def icon(self) -> PySide2.QtLocation.QPlaceIcon: ... + def setIcon(self, icon:PySide2.QtLocation.QPlaceIcon) -> None: ... + def setTitle(self, title:str) -> None: ... + def title(self) -> str: ... + def type(self) -> PySide2.QtLocation.QPlaceSearchResult.SearchResultType: ... + + +class QPlaceSearchSuggestionReply(PySide2.QtLocation.QPlaceReply): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def setSuggestions(self, suggestions:typing.Sequence) -> None: ... + def suggestions(self) -> typing.List: ... + def type(self) -> PySide2.QtLocation.QPlaceReply.Type: ... + + +class QPlaceSupplier(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtLocation.QPlaceSupplier) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def icon(self) -> PySide2.QtLocation.QPlaceIcon: ... + def isEmpty(self) -> bool: ... + def name(self) -> str: ... + def setIcon(self, icon:PySide2.QtLocation.QPlaceIcon) -> None: ... + def setName(self, data:str) -> None: ... + def setSupplierId(self, identifier:str) -> None: ... + def setUrl(self, data:PySide2.QtCore.QUrl) -> None: ... + def supplierId(self) -> str: ... + def url(self) -> PySide2.QtCore.QUrl: ... + + +class QPlaceUser(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtLocation.QPlaceUser) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def name(self) -> str: ... + def setName(self, name:str) -> None: ... + def setUserId(self, identifier:str) -> None: ... + def userId(self) -> str: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtMultimedia.pyd b/venv/Lib/site-packages/PySide2/QtMultimedia.pyd new file mode 100644 index 0000000..7df35e6 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtMultimedia.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtMultimedia.pyi b/venv/Lib/site-packages/PySide2/QtMultimedia.pyi new file mode 100644 index 0000000..75f6862 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtMultimedia.pyi @@ -0,0 +1,2718 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtMultimedia, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtMultimedia +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtGui +import PySide2.QtNetwork +import PySide2.QtMultimediaWidgets +import PySide2.QtMultimedia + + +class QAbstractAudioDeviceInfo(PySide2.QtCore.QObject): + + def __init__(self) -> None: ... + + def deviceName(self) -> str: ... + def isFormatSupported(self, format:PySide2.QtMultimedia.QAudioFormat) -> bool: ... + def preferredFormat(self) -> PySide2.QtMultimedia.QAudioFormat: ... + def supportedByteOrders(self) -> typing.List: ... + def supportedChannelCounts(self) -> typing.List: ... + def supportedCodecs(self) -> typing.List: ... + def supportedSampleRates(self) -> typing.List: ... + def supportedSampleSizes(self) -> typing.List: ... + def supportedSampleTypes(self) -> typing.List: ... + + +class QAbstractAudioInput(PySide2.QtCore.QObject): + + def __init__(self) -> None: ... + + def bufferSize(self) -> int: ... + def bytesReady(self) -> int: ... + def elapsedUSecs(self) -> int: ... + def error(self) -> PySide2.QtMultimedia.QAudio.Error: ... + def format(self) -> PySide2.QtMultimedia.QAudioFormat: ... + def notifyInterval(self) -> int: ... + def periodSize(self) -> int: ... + def processedUSecs(self) -> int: ... + def reset(self) -> None: ... + def resume(self) -> None: ... + def setBufferSize(self, value:int) -> None: ... + def setFormat(self, fmt:PySide2.QtMultimedia.QAudioFormat) -> None: ... + def setNotifyInterval(self, milliSeconds:int) -> None: ... + def setVolume(self, arg__1:float) -> None: ... + @typing.overload + def start(self) -> PySide2.QtCore.QIODevice: ... + @typing.overload + def start(self, device:PySide2.QtCore.QIODevice) -> None: ... + def state(self) -> PySide2.QtMultimedia.QAudio.State: ... + def stop(self) -> None: ... + def suspend(self) -> None: ... + def volume(self) -> float: ... + + +class QAbstractAudioOutput(PySide2.QtCore.QObject): + + def __init__(self) -> None: ... + + def bufferSize(self) -> int: ... + def bytesFree(self) -> int: ... + def category(self) -> str: ... + def elapsedUSecs(self) -> int: ... + def error(self) -> PySide2.QtMultimedia.QAudio.Error: ... + def format(self) -> PySide2.QtMultimedia.QAudioFormat: ... + def notifyInterval(self) -> int: ... + def periodSize(self) -> int: ... + def processedUSecs(self) -> int: ... + def reset(self) -> None: ... + def resume(self) -> None: ... + def setBufferSize(self, value:int) -> None: ... + def setCategory(self, arg__1:str) -> None: ... + def setFormat(self, fmt:PySide2.QtMultimedia.QAudioFormat) -> None: ... + def setNotifyInterval(self, milliSeconds:int) -> None: ... + def setVolume(self, arg__1:float) -> None: ... + @typing.overload + def start(self) -> PySide2.QtCore.QIODevice: ... + @typing.overload + def start(self, device:PySide2.QtCore.QIODevice) -> None: ... + def state(self) -> PySide2.QtMultimedia.QAudio.State: ... + def stop(self) -> None: ... + def suspend(self) -> None: ... + def volume(self) -> float: ... + + +class QAbstractVideoBuffer(Shiboken.Object): + NoHandle : QAbstractVideoBuffer = ... # 0x0 + NotMapped : QAbstractVideoBuffer = ... # 0x0 + GLTextureHandle : QAbstractVideoBuffer = ... # 0x1 + ReadOnly : QAbstractVideoBuffer = ... # 0x1 + WriteOnly : QAbstractVideoBuffer = ... # 0x2 + XvShmImageHandle : QAbstractVideoBuffer = ... # 0x2 + CoreImageHandle : QAbstractVideoBuffer = ... # 0x3 + ReadWrite : QAbstractVideoBuffer = ... # 0x3 + QPixmapHandle : QAbstractVideoBuffer = ... # 0x4 + EGLImageHandle : QAbstractVideoBuffer = ... # 0x5 + UserHandle : QAbstractVideoBuffer = ... # 0x3e8 + + class HandleType(object): + NoHandle : QAbstractVideoBuffer.HandleType = ... # 0x0 + GLTextureHandle : QAbstractVideoBuffer.HandleType = ... # 0x1 + XvShmImageHandle : QAbstractVideoBuffer.HandleType = ... # 0x2 + CoreImageHandle : QAbstractVideoBuffer.HandleType = ... # 0x3 + QPixmapHandle : QAbstractVideoBuffer.HandleType = ... # 0x4 + EGLImageHandle : QAbstractVideoBuffer.HandleType = ... # 0x5 + UserHandle : QAbstractVideoBuffer.HandleType = ... # 0x3e8 + + class MapMode(object): + NotMapped : QAbstractVideoBuffer.MapMode = ... # 0x0 + ReadOnly : QAbstractVideoBuffer.MapMode = ... # 0x1 + WriteOnly : QAbstractVideoBuffer.MapMode = ... # 0x2 + ReadWrite : QAbstractVideoBuffer.MapMode = ... # 0x3 + + def __init__(self, type:PySide2.QtMultimedia.QAbstractVideoBuffer.HandleType) -> None: ... + + def handle(self) -> typing.Any: ... + def handleType(self) -> PySide2.QtMultimedia.QAbstractVideoBuffer.HandleType: ... + def mapMode(self) -> PySide2.QtMultimedia.QAbstractVideoBuffer.MapMode: ... + def release(self) -> None: ... + def unmap(self) -> None: ... + + +class QAbstractVideoFilter(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def createFilterRunnable(self) -> PySide2.QtMultimedia.QVideoFilterRunnable: ... + def isActive(self) -> bool: ... + def setActive(self, v:bool) -> None: ... + + +class QAbstractVideoSurface(PySide2.QtCore.QObject): + NoError : QAbstractVideoSurface = ... # 0x0 + UnsupportedFormatError : QAbstractVideoSurface = ... # 0x1 + IncorrectFormatError : QAbstractVideoSurface = ... # 0x2 + StoppedError : QAbstractVideoSurface = ... # 0x3 + ResourceError : QAbstractVideoSurface = ... # 0x4 + + class Error(object): + NoError : QAbstractVideoSurface.Error = ... # 0x0 + UnsupportedFormatError : QAbstractVideoSurface.Error = ... # 0x1 + IncorrectFormatError : QAbstractVideoSurface.Error = ... # 0x2 + StoppedError : QAbstractVideoSurface.Error = ... # 0x3 + ResourceError : QAbstractVideoSurface.Error = ... # 0x4 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def error(self) -> PySide2.QtMultimedia.QAbstractVideoSurface.Error: ... + def isActive(self) -> bool: ... + def isFormatSupported(self, format:PySide2.QtMultimedia.QVideoSurfaceFormat) -> bool: ... + def nativeResolution(self) -> PySide2.QtCore.QSize: ... + def nearestFormat(self, format:PySide2.QtMultimedia.QVideoSurfaceFormat) -> PySide2.QtMultimedia.QVideoSurfaceFormat: ... + def present(self, frame:PySide2.QtMultimedia.QVideoFrame) -> bool: ... + def setError(self, error:PySide2.QtMultimedia.QAbstractVideoSurface.Error) -> None: ... + def setNativeResolution(self, resolution:PySide2.QtCore.QSize) -> None: ... + def start(self, format:PySide2.QtMultimedia.QVideoSurfaceFormat) -> bool: ... + def stop(self) -> None: ... + def supportedPixelFormats(self, type:PySide2.QtMultimedia.QAbstractVideoBuffer.HandleType=...) -> typing.List: ... + def surfaceFormat(self) -> PySide2.QtMultimedia.QVideoSurfaceFormat: ... + + +class QAudio(Shiboken.Object): + ActiveState : QAudio = ... # 0x0 + AudioInput : QAudio = ... # 0x0 + LinearVolumeScale : QAudio = ... # 0x0 + NoError : QAudio = ... # 0x0 + UnknownRole : QAudio = ... # 0x0 + AudioOutput : QAudio = ... # 0x1 + CubicVolumeScale : QAudio = ... # 0x1 + MusicRole : QAudio = ... # 0x1 + OpenError : QAudio = ... # 0x1 + SuspendedState : QAudio = ... # 0x1 + IOError : QAudio = ... # 0x2 + LogarithmicVolumeScale : QAudio = ... # 0x2 + StoppedState : QAudio = ... # 0x2 + VideoRole : QAudio = ... # 0x2 + DecibelVolumeScale : QAudio = ... # 0x3 + IdleState : QAudio = ... # 0x3 + UnderrunError : QAudio = ... # 0x3 + VoiceCommunicationRole : QAudio = ... # 0x3 + AlarmRole : QAudio = ... # 0x4 + FatalError : QAudio = ... # 0x4 + InterruptedState : QAudio = ... # 0x4 + NotificationRole : QAudio = ... # 0x5 + RingtoneRole : QAudio = ... # 0x6 + AccessibilityRole : QAudio = ... # 0x7 + SonificationRole : QAudio = ... # 0x8 + GameRole : QAudio = ... # 0x9 + CustomRole : QAudio = ... # 0xa + + class Error(object): + NoError : QAudio.Error = ... # 0x0 + OpenError : QAudio.Error = ... # 0x1 + IOError : QAudio.Error = ... # 0x2 + UnderrunError : QAudio.Error = ... # 0x3 + FatalError : QAudio.Error = ... # 0x4 + + class Mode(object): + AudioInput : QAudio.Mode = ... # 0x0 + AudioOutput : QAudio.Mode = ... # 0x1 + + class Role(object): + UnknownRole : QAudio.Role = ... # 0x0 + MusicRole : QAudio.Role = ... # 0x1 + VideoRole : QAudio.Role = ... # 0x2 + VoiceCommunicationRole : QAudio.Role = ... # 0x3 + AlarmRole : QAudio.Role = ... # 0x4 + NotificationRole : QAudio.Role = ... # 0x5 + RingtoneRole : QAudio.Role = ... # 0x6 + AccessibilityRole : QAudio.Role = ... # 0x7 + SonificationRole : QAudio.Role = ... # 0x8 + GameRole : QAudio.Role = ... # 0x9 + CustomRole : QAudio.Role = ... # 0xa + + class State(object): + ActiveState : QAudio.State = ... # 0x0 + SuspendedState : QAudio.State = ... # 0x1 + StoppedState : QAudio.State = ... # 0x2 + IdleState : QAudio.State = ... # 0x3 + InterruptedState : QAudio.State = ... # 0x4 + + class VolumeScale(object): + LinearVolumeScale : QAudio.VolumeScale = ... # 0x0 + CubicVolumeScale : QAudio.VolumeScale = ... # 0x1 + LogarithmicVolumeScale : QAudio.VolumeScale = ... # 0x2 + DecibelVolumeScale : QAudio.VolumeScale = ... # 0x3 + @staticmethod + def convertVolume(volume:float, from_:PySide2.QtMultimedia.QAudio.VolumeScale, to:PySide2.QtMultimedia.QAudio.VolumeScale) -> float: ... + + +class QAudioBuffer(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, data:PySide2.QtCore.QByteArray, format:PySide2.QtMultimedia.QAudioFormat, startTime:int=...) -> None: ... + @typing.overload + def __init__(self, numFrames:int, format:PySide2.QtMultimedia.QAudioFormat, startTime:int=...) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtMultimedia.QAudioBuffer) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def byteCount(self) -> int: ... + def constData(self) -> int: ... + def data(self) -> int: ... + def duration(self) -> int: ... + def format(self) -> PySide2.QtMultimedia.QAudioFormat: ... + def frameCount(self) -> int: ... + def isValid(self) -> bool: ... + def sampleCount(self) -> int: ... + def startTime(self) -> int: ... + + +class QAudioDecoder(PySide2.QtMultimedia.QMediaObject): + NoError : QAudioDecoder = ... # 0x0 + StoppedState : QAudioDecoder = ... # 0x0 + DecodingState : QAudioDecoder = ... # 0x1 + ResourceError : QAudioDecoder = ... # 0x1 + FormatError : QAudioDecoder = ... # 0x2 + AccessDeniedError : QAudioDecoder = ... # 0x3 + ServiceMissingError : QAudioDecoder = ... # 0x4 + + class Error(object): + NoError : QAudioDecoder.Error = ... # 0x0 + ResourceError : QAudioDecoder.Error = ... # 0x1 + FormatError : QAudioDecoder.Error = ... # 0x2 + AccessDeniedError : QAudioDecoder.Error = ... # 0x3 + ServiceMissingError : QAudioDecoder.Error = ... # 0x4 + + class State(object): + StoppedState : QAudioDecoder.State = ... # 0x0 + DecodingState : QAudioDecoder.State = ... # 0x1 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def audioFormat(self) -> PySide2.QtMultimedia.QAudioFormat: ... + def bind(self, arg__1:PySide2.QtCore.QObject) -> bool: ... + def bufferAvailable(self) -> bool: ... + def duration(self) -> int: ... + def error(self) -> PySide2.QtMultimedia.QAudioDecoder.Error: ... + def errorString(self) -> str: ... + @staticmethod + def hasSupport(mimeType:str, codecs:typing.Sequence=...) -> PySide2.QtMultimedia.QMultimedia.SupportEstimate: ... + def position(self) -> int: ... + def read(self) -> PySide2.QtMultimedia.QAudioBuffer: ... + def setAudioFormat(self, format:PySide2.QtMultimedia.QAudioFormat) -> None: ... + def setSourceDevice(self, device:PySide2.QtCore.QIODevice) -> None: ... + def setSourceFilename(self, fileName:str) -> None: ... + def sourceDevice(self) -> PySide2.QtCore.QIODevice: ... + def sourceFilename(self) -> str: ... + def start(self) -> None: ... + def state(self) -> PySide2.QtMultimedia.QAudioDecoder.State: ... + def stop(self) -> None: ... + def unbind(self, arg__1:PySide2.QtCore.QObject) -> None: ... + + +class QAudioDecoderControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def audioFormat(self) -> PySide2.QtMultimedia.QAudioFormat: ... + def bufferAvailable(self) -> bool: ... + def duration(self) -> int: ... + def position(self) -> int: ... + def read(self) -> PySide2.QtMultimedia.QAudioBuffer: ... + def setAudioFormat(self, format:PySide2.QtMultimedia.QAudioFormat) -> None: ... + def setSourceDevice(self, device:PySide2.QtCore.QIODevice) -> None: ... + def setSourceFilename(self, fileName:str) -> None: ... + def sourceDevice(self) -> PySide2.QtCore.QIODevice: ... + def sourceFilename(self) -> str: ... + def start(self) -> None: ... + def state(self) -> PySide2.QtMultimedia.QAudioDecoder.State: ... + def stop(self) -> None: ... + + +class QAudioDeviceInfo(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtMultimedia.QAudioDeviceInfo) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @staticmethod + def availableDevices(mode:PySide2.QtMultimedia.QAudio.Mode) -> typing.List: ... + @staticmethod + def defaultInputDevice() -> PySide2.QtMultimedia.QAudioDeviceInfo: ... + @staticmethod + def defaultOutputDevice() -> PySide2.QtMultimedia.QAudioDeviceInfo: ... + def deviceName(self) -> str: ... + def isFormatSupported(self, format:PySide2.QtMultimedia.QAudioFormat) -> bool: ... + def isNull(self) -> bool: ... + def nearestFormat(self, format:PySide2.QtMultimedia.QAudioFormat) -> PySide2.QtMultimedia.QAudioFormat: ... + def preferredFormat(self) -> PySide2.QtMultimedia.QAudioFormat: ... + def realm(self) -> str: ... + def supportedByteOrders(self) -> typing.List: ... + def supportedChannelCounts(self) -> typing.List: ... + def supportedCodecs(self) -> typing.List: ... + def supportedSampleRates(self) -> typing.List: ... + def supportedSampleSizes(self) -> typing.List: ... + def supportedSampleTypes(self) -> typing.List: ... + + +class QAudioEncoderSettings(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtMultimedia.QAudioEncoderSettings) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def bitRate(self) -> int: ... + def channelCount(self) -> int: ... + def codec(self) -> str: ... + def encodingMode(self) -> PySide2.QtMultimedia.QMultimedia.EncodingMode: ... + def encodingOption(self, option:str) -> typing.Any: ... + def encodingOptions(self) -> typing.Dict: ... + def isNull(self) -> bool: ... + def quality(self) -> PySide2.QtMultimedia.QMultimedia.EncodingQuality: ... + def sampleRate(self) -> int: ... + def setBitRate(self, bitrate:int) -> None: ... + def setChannelCount(self, channels:int) -> None: ... + def setCodec(self, codec:str) -> None: ... + def setEncodingMode(self, arg__1:PySide2.QtMultimedia.QMultimedia.EncodingMode) -> None: ... + def setEncodingOption(self, option:str, value:typing.Any) -> None: ... + def setEncodingOptions(self, options:typing.Dict) -> None: ... + def setQuality(self, quality:PySide2.QtMultimedia.QMultimedia.EncodingQuality) -> None: ... + def setSampleRate(self, rate:int) -> None: ... + + +class QAudioEncoderSettingsControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def audioSettings(self) -> PySide2.QtMultimedia.QAudioEncoderSettings: ... + def codecDescription(self, codecName:str) -> str: ... + def setAudioSettings(self, settings:PySide2.QtMultimedia.QAudioEncoderSettings) -> None: ... + def supportedAudioCodecs(self) -> typing.List: ... + + +class QAudioFormat(Shiboken.Object): + BigEndian : QAudioFormat = ... # 0x0 + Unknown : QAudioFormat = ... # 0x0 + LittleEndian : QAudioFormat = ... # 0x1 + SignedInt : QAudioFormat = ... # 0x1 + UnSignedInt : QAudioFormat = ... # 0x2 + Float : QAudioFormat = ... # 0x3 + + class Endian(object): + BigEndian : QAudioFormat.Endian = ... # 0x0 + LittleEndian : QAudioFormat.Endian = ... # 0x1 + + class SampleType(object): + Unknown : QAudioFormat.SampleType = ... # 0x0 + SignedInt : QAudioFormat.SampleType = ... # 0x1 + UnSignedInt : QAudioFormat.SampleType = ... # 0x2 + Float : QAudioFormat.SampleType = ... # 0x3 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtMultimedia.QAudioFormat) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def byteOrder(self) -> PySide2.QtMultimedia.QAudioFormat.Endian: ... + def bytesForDuration(self, duration:int) -> int: ... + def bytesForFrames(self, frameCount:int) -> int: ... + def bytesPerFrame(self) -> int: ... + def channelCount(self) -> int: ... + def codec(self) -> str: ... + def durationForBytes(self, byteCount:int) -> int: ... + def durationForFrames(self, frameCount:int) -> int: ... + def framesForBytes(self, byteCount:int) -> int: ... + def framesForDuration(self, duration:int) -> int: ... + def isValid(self) -> bool: ... + def sampleRate(self) -> int: ... + def sampleSize(self) -> int: ... + def sampleType(self) -> PySide2.QtMultimedia.QAudioFormat.SampleType: ... + def setByteOrder(self, byteOrder:PySide2.QtMultimedia.QAudioFormat.Endian) -> None: ... + def setChannelCount(self, channelCount:int) -> None: ... + def setCodec(self, codec:str) -> None: ... + def setSampleRate(self, sampleRate:int) -> None: ... + def setSampleSize(self, sampleSize:int) -> None: ... + def setSampleType(self, sampleType:PySide2.QtMultimedia.QAudioFormat.SampleType) -> None: ... + + +class QAudioInput(PySide2.QtCore.QObject): + + @typing.overload + def __init__(self, audioDeviceInfo:PySide2.QtMultimedia.QAudioDeviceInfo, format:PySide2.QtMultimedia.QAudioFormat=..., parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, format:PySide2.QtMultimedia.QAudioFormat=..., parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def bufferSize(self) -> int: ... + def bytesReady(self) -> int: ... + def elapsedUSecs(self) -> int: ... + def error(self) -> PySide2.QtMultimedia.QAudio.Error: ... + def format(self) -> PySide2.QtMultimedia.QAudioFormat: ... + def notifyInterval(self) -> int: ... + def periodSize(self) -> int: ... + def processedUSecs(self) -> int: ... + def reset(self) -> None: ... + def resume(self) -> None: ... + def setBufferSize(self, bytes:int) -> None: ... + def setNotifyInterval(self, milliSeconds:int) -> None: ... + def setVolume(self, volume:float) -> None: ... + @typing.overload + def start(self) -> PySide2.QtCore.QIODevice: ... + @typing.overload + def start(self, device:PySide2.QtCore.QIODevice) -> None: ... + def state(self) -> PySide2.QtMultimedia.QAudio.State: ... + def stop(self) -> None: ... + def suspend(self) -> None: ... + def volume(self) -> float: ... + + +class QAudioInputSelectorControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def activeInput(self) -> str: ... + def availableInputs(self) -> typing.List: ... + def defaultInput(self) -> str: ... + def inputDescription(self, name:str) -> str: ... + def setActiveInput(self, name:str) -> None: ... + + +class QAudioOutput(PySide2.QtCore.QObject): + + @typing.overload + def __init__(self, audioDeviceInfo:PySide2.QtMultimedia.QAudioDeviceInfo, format:PySide2.QtMultimedia.QAudioFormat=..., parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, format:PySide2.QtMultimedia.QAudioFormat=..., parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def bufferSize(self) -> int: ... + def bytesFree(self) -> int: ... + def category(self) -> str: ... + def elapsedUSecs(self) -> int: ... + def error(self) -> PySide2.QtMultimedia.QAudio.Error: ... + def format(self) -> PySide2.QtMultimedia.QAudioFormat: ... + def notifyInterval(self) -> int: ... + def periodSize(self) -> int: ... + def processedUSecs(self) -> int: ... + def reset(self) -> None: ... + def resume(self) -> None: ... + def setBufferSize(self, bytes:int) -> None: ... + def setCategory(self, category:str) -> None: ... + def setNotifyInterval(self, milliSeconds:int) -> None: ... + def setVolume(self, arg__1:float) -> None: ... + @typing.overload + def start(self) -> PySide2.QtCore.QIODevice: ... + @typing.overload + def start(self, device:PySide2.QtCore.QIODevice) -> None: ... + def state(self) -> PySide2.QtMultimedia.QAudio.State: ... + def stop(self) -> None: ... + def suspend(self) -> None: ... + def volume(self) -> float: ... + + +class QAudioOutputSelectorControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def activeOutput(self) -> str: ... + def availableOutputs(self) -> typing.List: ... + def defaultOutput(self) -> str: ... + def outputDescription(self, name:str) -> str: ... + def setActiveOutput(self, name:str) -> None: ... + + +class QAudioProbe(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def isActive(self) -> bool: ... + @typing.overload + def setSource(self, source:PySide2.QtMultimedia.QMediaObject) -> bool: ... + @typing.overload + def setSource(self, source:PySide2.QtMultimedia.QMediaRecorder) -> bool: ... + + +class QAudioRecorder(PySide2.QtMultimedia.QMediaRecorder): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def audioInput(self) -> str: ... + def audioInputDescription(self, name:str) -> str: ... + def audioInputs(self) -> typing.List: ... + def defaultAudioInput(self) -> str: ... + def setAudioInput(self, name:str) -> None: ... + + +class QAudioRoleControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def audioRole(self) -> PySide2.QtMultimedia.QAudio.Role: ... + def setAudioRole(self, role:PySide2.QtMultimedia.QAudio.Role) -> None: ... + def supportedAudioRoles(self) -> typing.List: ... + + +class QCamera(PySide2.QtMultimedia.QMediaObject): + CaptureViewfinder : QCamera = ... # 0x0 + NoError : QCamera = ... # 0x0 + NoLock : QCamera = ... # 0x0 + UnavailableStatus : QCamera = ... # 0x0 + UnloadedState : QCamera = ... # 0x0 + Unlocked : QCamera = ... # 0x0 + UnspecifiedPosition : QCamera = ... # 0x0 + UserRequest : QCamera = ... # 0x0 + BackFace : QCamera = ... # 0x1 + CameraError : QCamera = ... # 0x1 + CaptureStillImage : QCamera = ... # 0x1 + LoadedState : QCamera = ... # 0x1 + LockAcquired : QCamera = ... # 0x1 + LockExposure : QCamera = ... # 0x1 + Searching : QCamera = ... # 0x1 + UnloadedStatus : QCamera = ... # 0x1 + ActiveState : QCamera = ... # 0x2 + CaptureVideo : QCamera = ... # 0x2 + FrontFace : QCamera = ... # 0x2 + InvalidRequestError : QCamera = ... # 0x2 + LoadingStatus : QCamera = ... # 0x2 + LockFailed : QCamera = ... # 0x2 + LockWhiteBalance : QCamera = ... # 0x2 + Locked : QCamera = ... # 0x2 + LockLost : QCamera = ... # 0x3 + ServiceMissingError : QCamera = ... # 0x3 + UnloadingStatus : QCamera = ... # 0x3 + LoadedStatus : QCamera = ... # 0x4 + LockFocus : QCamera = ... # 0x4 + LockTemporaryLost : QCamera = ... # 0x4 + NotSupportedFeatureError : QCamera = ... # 0x4 + StandbyStatus : QCamera = ... # 0x5 + StartingStatus : QCamera = ... # 0x6 + StoppingStatus : QCamera = ... # 0x7 + ActiveStatus : QCamera = ... # 0x8 + + class CaptureMode(object): + CaptureViewfinder : QCamera.CaptureMode = ... # 0x0 + CaptureStillImage : QCamera.CaptureMode = ... # 0x1 + CaptureVideo : QCamera.CaptureMode = ... # 0x2 + + class CaptureModes(object): ... + + class Error(object): + NoError : QCamera.Error = ... # 0x0 + CameraError : QCamera.Error = ... # 0x1 + InvalidRequestError : QCamera.Error = ... # 0x2 + ServiceMissingError : QCamera.Error = ... # 0x3 + NotSupportedFeatureError : QCamera.Error = ... # 0x4 + + class FrameRateRange(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, FrameRateRange:PySide2.QtMultimedia.QCamera.FrameRateRange) -> None: ... + @typing.overload + def __init__(self, minimum:float, maximum:float) -> None: ... + + @staticmethod + def __copy__() -> None: ... + + class LockChangeReason(object): + UserRequest : QCamera.LockChangeReason = ... # 0x0 + LockAcquired : QCamera.LockChangeReason = ... # 0x1 + LockFailed : QCamera.LockChangeReason = ... # 0x2 + LockLost : QCamera.LockChangeReason = ... # 0x3 + LockTemporaryLost : QCamera.LockChangeReason = ... # 0x4 + + class LockStatus(object): + Unlocked : QCamera.LockStatus = ... # 0x0 + Searching : QCamera.LockStatus = ... # 0x1 + Locked : QCamera.LockStatus = ... # 0x2 + + class LockType(object): + NoLock : QCamera.LockType = ... # 0x0 + LockExposure : QCamera.LockType = ... # 0x1 + LockWhiteBalance : QCamera.LockType = ... # 0x2 + LockFocus : QCamera.LockType = ... # 0x4 + + class LockTypes(object): ... + + class Position(object): + UnspecifiedPosition : QCamera.Position = ... # 0x0 + BackFace : QCamera.Position = ... # 0x1 + FrontFace : QCamera.Position = ... # 0x2 + + class State(object): + UnloadedState : QCamera.State = ... # 0x0 + LoadedState : QCamera.State = ... # 0x1 + ActiveState : QCamera.State = ... # 0x2 + + class Status(object): + UnavailableStatus : QCamera.Status = ... # 0x0 + UnloadedStatus : QCamera.Status = ... # 0x1 + LoadingStatus : QCamera.Status = ... # 0x2 + UnloadingStatus : QCamera.Status = ... # 0x3 + LoadedStatus : QCamera.Status = ... # 0x4 + StandbyStatus : QCamera.Status = ... # 0x5 + StartingStatus : QCamera.Status = ... # 0x6 + StoppingStatus : QCamera.Status = ... # 0x7 + ActiveStatus : QCamera.Status = ... # 0x8 + + @typing.overload + def __init__(self, cameraInfo:PySide2.QtMultimedia.QCameraInfo, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, deviceName:PySide2.QtCore.QByteArray, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, position:PySide2.QtMultimedia.QCamera.Position, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def availability(self) -> PySide2.QtMultimedia.QMultimedia.AvailabilityStatus: ... + @staticmethod + def availableDevices() -> typing.List: ... + def captureMode(self) -> PySide2.QtMultimedia.QCamera.CaptureModes: ... + @staticmethod + def deviceDescription(device:PySide2.QtCore.QByteArray) -> str: ... + def error(self) -> PySide2.QtMultimedia.QCamera.Error: ... + def errorString(self) -> str: ... + def exposure(self) -> PySide2.QtMultimedia.QCameraExposure: ... + def focus(self) -> PySide2.QtMultimedia.QCameraFocus: ... + def imageProcessing(self) -> PySide2.QtMultimedia.QCameraImageProcessing: ... + def isCaptureModeSupported(self, mode:PySide2.QtMultimedia.QCamera.CaptureModes) -> bool: ... + def load(self) -> None: ... + @typing.overload + def lockStatus(self) -> PySide2.QtMultimedia.QCamera.LockStatus: ... + @typing.overload + def lockStatus(self, lock:PySide2.QtMultimedia.QCamera.LockType) -> PySide2.QtMultimedia.QCamera.LockStatus: ... + def requestedLocks(self) -> PySide2.QtMultimedia.QCamera.LockTypes: ... + @typing.overload + def searchAndLock(self) -> None: ... + @typing.overload + def searchAndLock(self, locks:PySide2.QtMultimedia.QCamera.LockTypes) -> None: ... + def setCaptureMode(self, mode:PySide2.QtMultimedia.QCamera.CaptureModes) -> None: ... + @typing.overload + def setViewfinder(self, surface:PySide2.QtMultimedia.QAbstractVideoSurface) -> None: ... + @typing.overload + def setViewfinder(self, viewfinder:PySide2.QtMultimediaWidgets.QGraphicsVideoItem) -> None: ... + @typing.overload + def setViewfinder(self, viewfinder:PySide2.QtMultimediaWidgets.QVideoWidget) -> None: ... + def setViewfinderSettings(self, settings:PySide2.QtMultimedia.QCameraViewfinderSettings) -> None: ... + def start(self) -> None: ... + def state(self) -> PySide2.QtMultimedia.QCamera.State: ... + def status(self) -> PySide2.QtMultimedia.QCamera.Status: ... + def stop(self) -> None: ... + def supportedLocks(self) -> PySide2.QtMultimedia.QCamera.LockTypes: ... + def supportedViewfinderFrameRateRanges(self, settings:PySide2.QtMultimedia.QCameraViewfinderSettings=...) -> typing.List: ... + def supportedViewfinderPixelFormats(self, settings:PySide2.QtMultimedia.QCameraViewfinderSettings=...) -> typing.List: ... + def supportedViewfinderResolutions(self, settings:PySide2.QtMultimedia.QCameraViewfinderSettings=...) -> typing.List: ... + def supportedViewfinderSettings(self, settings:PySide2.QtMultimedia.QCameraViewfinderSettings=...) -> typing.List: ... + def unload(self) -> None: ... + @typing.overload + def unlock(self) -> None: ... + @typing.overload + def unlock(self, locks:PySide2.QtMultimedia.QCamera.LockTypes) -> None: ... + def viewfinderSettings(self) -> PySide2.QtMultimedia.QCameraViewfinderSettings: ... + + +class QCameraCaptureBufferFormatControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def bufferFormat(self) -> PySide2.QtMultimedia.QVideoFrame.PixelFormat: ... + def setBufferFormat(self, format:PySide2.QtMultimedia.QVideoFrame.PixelFormat) -> None: ... + def supportedBufferFormats(self) -> typing.List: ... + + +class QCameraCaptureDestinationControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def captureDestination(self) -> PySide2.QtMultimedia.QCameraImageCapture.CaptureDestinations: ... + def isCaptureDestinationSupported(self, destination:PySide2.QtMultimedia.QCameraImageCapture.CaptureDestinations) -> bool: ... + def setCaptureDestination(self, destination:PySide2.QtMultimedia.QCameraImageCapture.CaptureDestinations) -> None: ... + + +class QCameraControl(PySide2.QtMultimedia.QMediaControl): + CaptureMode : QCameraControl = ... # 0x1 + ImageEncodingSettings : QCameraControl = ... # 0x2 + VideoEncodingSettings : QCameraControl = ... # 0x3 + Viewfinder : QCameraControl = ... # 0x4 + ViewfinderSettings : QCameraControl = ... # 0x5 + + class PropertyChangeType(object): + CaptureMode : QCameraControl.PropertyChangeType = ... # 0x1 + ImageEncodingSettings : QCameraControl.PropertyChangeType = ... # 0x2 + VideoEncodingSettings : QCameraControl.PropertyChangeType = ... # 0x3 + Viewfinder : QCameraControl.PropertyChangeType = ... # 0x4 + ViewfinderSettings : QCameraControl.PropertyChangeType = ... # 0x5 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def canChangeProperty(self, changeType:PySide2.QtMultimedia.QCameraControl.PropertyChangeType, status:PySide2.QtMultimedia.QCamera.Status) -> bool: ... + def captureMode(self) -> PySide2.QtMultimedia.QCamera.CaptureModes: ... + def isCaptureModeSupported(self, mode:PySide2.QtMultimedia.QCamera.CaptureModes) -> bool: ... + def setCaptureMode(self, arg__1:PySide2.QtMultimedia.QCamera.CaptureModes) -> None: ... + def setState(self, state:PySide2.QtMultimedia.QCamera.State) -> None: ... + def state(self) -> PySide2.QtMultimedia.QCamera.State: ... + def status(self) -> PySide2.QtMultimedia.QCamera.Status: ... + + +class QCameraExposure(PySide2.QtCore.QObject): + ExposureAuto : QCameraExposure = ... # 0x0 + ExposureManual : QCameraExposure = ... # 0x1 + FlashAuto : QCameraExposure = ... # 0x1 + MeteringMatrix : QCameraExposure = ... # 0x1 + ExposurePortrait : QCameraExposure = ... # 0x2 + FlashOff : QCameraExposure = ... # 0x2 + MeteringAverage : QCameraExposure = ... # 0x2 + ExposureNight : QCameraExposure = ... # 0x3 + MeteringSpot : QCameraExposure = ... # 0x3 + ExposureBacklight : QCameraExposure = ... # 0x4 + FlashOn : QCameraExposure = ... # 0x4 + ExposureSpotlight : QCameraExposure = ... # 0x5 + ExposureSports : QCameraExposure = ... # 0x6 + ExposureSnow : QCameraExposure = ... # 0x7 + ExposureBeach : QCameraExposure = ... # 0x8 + FlashRedEyeReduction : QCameraExposure = ... # 0x8 + ExposureLargeAperture : QCameraExposure = ... # 0x9 + ExposureSmallAperture : QCameraExposure = ... # 0xa + ExposureAction : QCameraExposure = ... # 0xb + ExposureLandscape : QCameraExposure = ... # 0xc + ExposureNightPortrait : QCameraExposure = ... # 0xd + ExposureTheatre : QCameraExposure = ... # 0xe + ExposureSunset : QCameraExposure = ... # 0xf + ExposureSteadyPhoto : QCameraExposure = ... # 0x10 + FlashFill : QCameraExposure = ... # 0x10 + ExposureFireworks : QCameraExposure = ... # 0x11 + ExposureParty : QCameraExposure = ... # 0x12 + ExposureCandlelight : QCameraExposure = ... # 0x13 + ExposureBarcode : QCameraExposure = ... # 0x14 + FlashTorch : QCameraExposure = ... # 0x20 + FlashVideoLight : QCameraExposure = ... # 0x40 + FlashSlowSyncFrontCurtain: QCameraExposure = ... # 0x80 + FlashSlowSyncRearCurtain : QCameraExposure = ... # 0x100 + FlashManual : QCameraExposure = ... # 0x200 + ExposureModeVendor : QCameraExposure = ... # 0x3e8 + + class ExposureMode(object): + ExposureAuto : QCameraExposure.ExposureMode = ... # 0x0 + ExposureManual : QCameraExposure.ExposureMode = ... # 0x1 + ExposurePortrait : QCameraExposure.ExposureMode = ... # 0x2 + ExposureNight : QCameraExposure.ExposureMode = ... # 0x3 + ExposureBacklight : QCameraExposure.ExposureMode = ... # 0x4 + ExposureSpotlight : QCameraExposure.ExposureMode = ... # 0x5 + ExposureSports : QCameraExposure.ExposureMode = ... # 0x6 + ExposureSnow : QCameraExposure.ExposureMode = ... # 0x7 + ExposureBeach : QCameraExposure.ExposureMode = ... # 0x8 + ExposureLargeAperture : QCameraExposure.ExposureMode = ... # 0x9 + ExposureSmallAperture : QCameraExposure.ExposureMode = ... # 0xa + ExposureAction : QCameraExposure.ExposureMode = ... # 0xb + ExposureLandscape : QCameraExposure.ExposureMode = ... # 0xc + ExposureNightPortrait : QCameraExposure.ExposureMode = ... # 0xd + ExposureTheatre : QCameraExposure.ExposureMode = ... # 0xe + ExposureSunset : QCameraExposure.ExposureMode = ... # 0xf + ExposureSteadyPhoto : QCameraExposure.ExposureMode = ... # 0x10 + ExposureFireworks : QCameraExposure.ExposureMode = ... # 0x11 + ExposureParty : QCameraExposure.ExposureMode = ... # 0x12 + ExposureCandlelight : QCameraExposure.ExposureMode = ... # 0x13 + ExposureBarcode : QCameraExposure.ExposureMode = ... # 0x14 + ExposureModeVendor : QCameraExposure.ExposureMode = ... # 0x3e8 + + class FlashMode(object): + FlashAuto : QCameraExposure.FlashMode = ... # 0x1 + FlashOff : QCameraExposure.FlashMode = ... # 0x2 + FlashOn : QCameraExposure.FlashMode = ... # 0x4 + FlashRedEyeReduction : QCameraExposure.FlashMode = ... # 0x8 + FlashFill : QCameraExposure.FlashMode = ... # 0x10 + FlashTorch : QCameraExposure.FlashMode = ... # 0x20 + FlashVideoLight : QCameraExposure.FlashMode = ... # 0x40 + FlashSlowSyncFrontCurtain: QCameraExposure.FlashMode = ... # 0x80 + FlashSlowSyncRearCurtain : QCameraExposure.FlashMode = ... # 0x100 + FlashManual : QCameraExposure.FlashMode = ... # 0x200 + + class FlashModes(object): ... + + class MeteringMode(object): + MeteringMatrix : QCameraExposure.MeteringMode = ... # 0x1 + MeteringAverage : QCameraExposure.MeteringMode = ... # 0x2 + MeteringSpot : QCameraExposure.MeteringMode = ... # 0x3 + def aperture(self) -> float: ... + def exposureCompensation(self) -> float: ... + def exposureMode(self) -> PySide2.QtMultimedia.QCameraExposure.ExposureMode: ... + def flashMode(self) -> PySide2.QtMultimedia.QCameraExposure.FlashModes: ... + def isAvailable(self) -> bool: ... + def isExposureModeSupported(self, mode:PySide2.QtMultimedia.QCameraExposure.ExposureMode) -> bool: ... + def isFlashModeSupported(self, mode:PySide2.QtMultimedia.QCameraExposure.FlashModes) -> bool: ... + def isFlashReady(self) -> bool: ... + def isMeteringModeSupported(self, mode:PySide2.QtMultimedia.QCameraExposure.MeteringMode) -> bool: ... + def isoSensitivity(self) -> int: ... + def meteringMode(self) -> PySide2.QtMultimedia.QCameraExposure.MeteringMode: ... + def requestedAperture(self) -> float: ... + def requestedIsoSensitivity(self) -> int: ... + def requestedShutterSpeed(self) -> float: ... + def setAutoAperture(self) -> None: ... + def setAutoIsoSensitivity(self) -> None: ... + def setAutoShutterSpeed(self) -> None: ... + def setExposureCompensation(self, ev:float) -> None: ... + def setExposureMode(self, mode:PySide2.QtMultimedia.QCameraExposure.ExposureMode) -> None: ... + def setFlashMode(self, mode:PySide2.QtMultimedia.QCameraExposure.FlashModes) -> None: ... + def setManualAperture(self, aperture:float) -> None: ... + def setManualIsoSensitivity(self, iso:int) -> None: ... + def setManualShutterSpeed(self, seconds:float) -> None: ... + def setMeteringMode(self, mode:PySide2.QtMultimedia.QCameraExposure.MeteringMode) -> None: ... + def setSpotMeteringPoint(self, point:PySide2.QtCore.QPointF) -> None: ... + def shutterSpeed(self) -> float: ... + def spotMeteringPoint(self) -> PySide2.QtCore.QPointF: ... + + +class QCameraExposureControl(PySide2.QtMultimedia.QMediaControl): + ISO : QCameraExposureControl = ... # 0x0 + Aperture : QCameraExposureControl = ... # 0x1 + ShutterSpeed : QCameraExposureControl = ... # 0x2 + ExposureCompensation : QCameraExposureControl = ... # 0x3 + FlashPower : QCameraExposureControl = ... # 0x4 + FlashCompensation : QCameraExposureControl = ... # 0x5 + TorchPower : QCameraExposureControl = ... # 0x6 + SpotMeteringPoint : QCameraExposureControl = ... # 0x7 + ExposureMode : QCameraExposureControl = ... # 0x8 + MeteringMode : QCameraExposureControl = ... # 0x9 + ExtendedExposureParameter: QCameraExposureControl = ... # 0x3e8 + + class ExposureParameter(object): + ISO : QCameraExposureControl.ExposureParameter = ... # 0x0 + Aperture : QCameraExposureControl.ExposureParameter = ... # 0x1 + ShutterSpeed : QCameraExposureControl.ExposureParameter = ... # 0x2 + ExposureCompensation : QCameraExposureControl.ExposureParameter = ... # 0x3 + FlashPower : QCameraExposureControl.ExposureParameter = ... # 0x4 + FlashCompensation : QCameraExposureControl.ExposureParameter = ... # 0x5 + TorchPower : QCameraExposureControl.ExposureParameter = ... # 0x6 + SpotMeteringPoint : QCameraExposureControl.ExposureParameter = ... # 0x7 + ExposureMode : QCameraExposureControl.ExposureParameter = ... # 0x8 + MeteringMode : QCameraExposureControl.ExposureParameter = ... # 0x9 + ExtendedExposureParameter: QCameraExposureControl.ExposureParameter = ... # 0x3e8 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def actualValue(self, parameter:PySide2.QtMultimedia.QCameraExposureControl.ExposureParameter) -> typing.Any: ... + def isParameterSupported(self, parameter:PySide2.QtMultimedia.QCameraExposureControl.ExposureParameter) -> bool: ... + def requestedValue(self, parameter:PySide2.QtMultimedia.QCameraExposureControl.ExposureParameter) -> typing.Any: ... + def setValue(self, parameter:PySide2.QtMultimedia.QCameraExposureControl.ExposureParameter, value:typing.Any) -> bool: ... + + +class QCameraFeedbackControl(PySide2.QtMultimedia.QMediaControl): + ViewfinderStarted : QCameraFeedbackControl = ... # 0x1 + ViewfinderStopped : QCameraFeedbackControl = ... # 0x2 + ImageCaptured : QCameraFeedbackControl = ... # 0x3 + ImageSaved : QCameraFeedbackControl = ... # 0x4 + ImageError : QCameraFeedbackControl = ... # 0x5 + RecordingStarted : QCameraFeedbackControl = ... # 0x6 + RecordingInProgress : QCameraFeedbackControl = ... # 0x7 + RecordingStopped : QCameraFeedbackControl = ... # 0x8 + AutoFocusInProgress : QCameraFeedbackControl = ... # 0x9 + AutoFocusLocked : QCameraFeedbackControl = ... # 0xa + AutoFocusFailed : QCameraFeedbackControl = ... # 0xb + + class EventType(object): + ViewfinderStarted : QCameraFeedbackControl.EventType = ... # 0x1 + ViewfinderStopped : QCameraFeedbackControl.EventType = ... # 0x2 + ImageCaptured : QCameraFeedbackControl.EventType = ... # 0x3 + ImageSaved : QCameraFeedbackControl.EventType = ... # 0x4 + ImageError : QCameraFeedbackControl.EventType = ... # 0x5 + RecordingStarted : QCameraFeedbackControl.EventType = ... # 0x6 + RecordingInProgress : QCameraFeedbackControl.EventType = ... # 0x7 + RecordingStopped : QCameraFeedbackControl.EventType = ... # 0x8 + AutoFocusInProgress : QCameraFeedbackControl.EventType = ... # 0x9 + AutoFocusLocked : QCameraFeedbackControl.EventType = ... # 0xa + AutoFocusFailed : QCameraFeedbackControl.EventType = ... # 0xb + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def isEventFeedbackEnabled(self, arg__1:PySide2.QtMultimedia.QCameraFeedbackControl.EventType) -> bool: ... + def isEventFeedbackLocked(self, arg__1:PySide2.QtMultimedia.QCameraFeedbackControl.EventType) -> bool: ... + def resetEventFeedback(self, arg__1:PySide2.QtMultimedia.QCameraFeedbackControl.EventType) -> None: ... + def setEventFeedbackEnabled(self, arg__1:PySide2.QtMultimedia.QCameraFeedbackControl.EventType, arg__2:bool) -> bool: ... + def setEventFeedbackSound(self, arg__1:PySide2.QtMultimedia.QCameraFeedbackControl.EventType, filePath:str) -> bool: ... + + +class QCameraFlashControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def flashMode(self) -> PySide2.QtMultimedia.QCameraExposure.FlashModes: ... + def isFlashModeSupported(self, mode:PySide2.QtMultimedia.QCameraExposure.FlashModes) -> bool: ... + def isFlashReady(self) -> bool: ... + def setFlashMode(self, mode:PySide2.QtMultimedia.QCameraExposure.FlashModes) -> None: ... + + +class QCameraFocus(PySide2.QtCore.QObject): + FocusPointAuto : QCameraFocus = ... # 0x0 + FocusPointCenter : QCameraFocus = ... # 0x1 + ManualFocus : QCameraFocus = ... # 0x1 + FocusPointFaceDetection : QCameraFocus = ... # 0x2 + HyperfocalFocus : QCameraFocus = ... # 0x2 + FocusPointCustom : QCameraFocus = ... # 0x3 + InfinityFocus : QCameraFocus = ... # 0x4 + AutoFocus : QCameraFocus = ... # 0x8 + ContinuousFocus : QCameraFocus = ... # 0x10 + MacroFocus : QCameraFocus = ... # 0x20 + + class FocusMode(object): + ManualFocus : QCameraFocus.FocusMode = ... # 0x1 + HyperfocalFocus : QCameraFocus.FocusMode = ... # 0x2 + InfinityFocus : QCameraFocus.FocusMode = ... # 0x4 + AutoFocus : QCameraFocus.FocusMode = ... # 0x8 + ContinuousFocus : QCameraFocus.FocusMode = ... # 0x10 + MacroFocus : QCameraFocus.FocusMode = ... # 0x20 + + class FocusModes(object): ... + + class FocusPointMode(object): + FocusPointAuto : QCameraFocus.FocusPointMode = ... # 0x0 + FocusPointCenter : QCameraFocus.FocusPointMode = ... # 0x1 + FocusPointFaceDetection : QCameraFocus.FocusPointMode = ... # 0x2 + FocusPointCustom : QCameraFocus.FocusPointMode = ... # 0x3 + def customFocusPoint(self) -> PySide2.QtCore.QPointF: ... + def digitalZoom(self) -> float: ... + def focusMode(self) -> PySide2.QtMultimedia.QCameraFocus.FocusModes: ... + def focusPointMode(self) -> PySide2.QtMultimedia.QCameraFocus.FocusPointMode: ... + def focusZones(self) -> typing.List: ... + def isAvailable(self) -> bool: ... + def isFocusModeSupported(self, mode:PySide2.QtMultimedia.QCameraFocus.FocusModes) -> bool: ... + def isFocusPointModeSupported(self, arg__1:PySide2.QtMultimedia.QCameraFocus.FocusPointMode) -> bool: ... + def maximumDigitalZoom(self) -> float: ... + def maximumOpticalZoom(self) -> float: ... + def opticalZoom(self) -> float: ... + def setCustomFocusPoint(self, point:PySide2.QtCore.QPointF) -> None: ... + def setFocusMode(self, mode:PySide2.QtMultimedia.QCameraFocus.FocusModes) -> None: ... + def setFocusPointMode(self, mode:PySide2.QtMultimedia.QCameraFocus.FocusPointMode) -> None: ... + def zoomTo(self, opticalZoom:float, digitalZoom:float) -> None: ... + + +class QCameraFocusControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def customFocusPoint(self) -> PySide2.QtCore.QPointF: ... + def focusMode(self) -> PySide2.QtMultimedia.QCameraFocus.FocusModes: ... + def focusPointMode(self) -> PySide2.QtMultimedia.QCameraFocus.FocusPointMode: ... + def focusZones(self) -> typing.List: ... + def isFocusModeSupported(self, mode:PySide2.QtMultimedia.QCameraFocus.FocusModes) -> bool: ... + def isFocusPointModeSupported(self, mode:PySide2.QtMultimedia.QCameraFocus.FocusPointMode) -> bool: ... + def setCustomFocusPoint(self, point:PySide2.QtCore.QPointF) -> None: ... + def setFocusMode(self, mode:PySide2.QtMultimedia.QCameraFocus.FocusModes) -> None: ... + def setFocusPointMode(self, mode:PySide2.QtMultimedia.QCameraFocus.FocusPointMode) -> None: ... + + +class QCameraFocusZone(Shiboken.Object): + Invalid : QCameraFocusZone = ... # 0x0 + Unused : QCameraFocusZone = ... # 0x1 + Selected : QCameraFocusZone = ... # 0x2 + Focused : QCameraFocusZone = ... # 0x3 + + class FocusZoneStatus(object): + Invalid : QCameraFocusZone.FocusZoneStatus = ... # 0x0 + Unused : QCameraFocusZone.FocusZoneStatus = ... # 0x1 + Selected : QCameraFocusZone.FocusZoneStatus = ... # 0x2 + Focused : QCameraFocusZone.FocusZoneStatus = ... # 0x3 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, area:PySide2.QtCore.QRectF, status:PySide2.QtMultimedia.QCameraFocusZone.FocusZoneStatus=...) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtMultimedia.QCameraFocusZone) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def area(self) -> PySide2.QtCore.QRectF: ... + def isValid(self) -> bool: ... + def setStatus(self, status:PySide2.QtMultimedia.QCameraFocusZone.FocusZoneStatus) -> None: ... + def status(self) -> PySide2.QtMultimedia.QCameraFocusZone.FocusZoneStatus: ... + + +class QCameraImageCapture(PySide2.QtCore.QObject, PySide2.QtMultimedia.QMediaBindableInterface): + NoError : QCameraImageCapture = ... # 0x0 + SingleImageCapture : QCameraImageCapture = ... # 0x0 + CaptureToFile : QCameraImageCapture = ... # 0x1 + NotReadyError : QCameraImageCapture = ... # 0x1 + CaptureToBuffer : QCameraImageCapture = ... # 0x2 + ResourceError : QCameraImageCapture = ... # 0x2 + OutOfSpaceError : QCameraImageCapture = ... # 0x3 + NotSupportedFeatureError : QCameraImageCapture = ... # 0x4 + FormatError : QCameraImageCapture = ... # 0x5 + + class CaptureDestination(object): + CaptureToFile : QCameraImageCapture.CaptureDestination = ... # 0x1 + CaptureToBuffer : QCameraImageCapture.CaptureDestination = ... # 0x2 + + class CaptureDestinations(object): ... + + class DriveMode(object): + SingleImageCapture : QCameraImageCapture.DriveMode = ... # 0x0 + + class Error(object): + NoError : QCameraImageCapture.Error = ... # 0x0 + NotReadyError : QCameraImageCapture.Error = ... # 0x1 + ResourceError : QCameraImageCapture.Error = ... # 0x2 + OutOfSpaceError : QCameraImageCapture.Error = ... # 0x3 + NotSupportedFeatureError : QCameraImageCapture.Error = ... # 0x4 + FormatError : QCameraImageCapture.Error = ... # 0x5 + + def __init__(self, mediaObject:PySide2.QtMultimedia.QMediaObject, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def availability(self) -> PySide2.QtMultimedia.QMultimedia.AvailabilityStatus: ... + def bufferFormat(self) -> PySide2.QtMultimedia.QVideoFrame.PixelFormat: ... + def cancelCapture(self) -> None: ... + def capture(self, location:str=...) -> int: ... + def captureDestination(self) -> PySide2.QtMultimedia.QCameraImageCapture.CaptureDestinations: ... + def encodingSettings(self) -> PySide2.QtMultimedia.QImageEncoderSettings: ... + def error(self) -> PySide2.QtMultimedia.QCameraImageCapture.Error: ... + def errorString(self) -> str: ... + def imageCodecDescription(self, codecName:str) -> str: ... + def isAvailable(self) -> bool: ... + def isCaptureDestinationSupported(self, destination:PySide2.QtMultimedia.QCameraImageCapture.CaptureDestinations) -> bool: ... + def isReadyForCapture(self) -> bool: ... + def mediaObject(self) -> PySide2.QtMultimedia.QMediaObject: ... + def setBufferFormat(self, format:PySide2.QtMultimedia.QVideoFrame.PixelFormat) -> None: ... + def setCaptureDestination(self, destination:PySide2.QtMultimedia.QCameraImageCapture.CaptureDestinations) -> None: ... + def setEncodingSettings(self, settings:PySide2.QtMultimedia.QImageEncoderSettings) -> None: ... + def setMediaObject(self, arg__1:PySide2.QtMultimedia.QMediaObject) -> bool: ... + def supportedBufferFormats(self) -> typing.List: ... + def supportedImageCodecs(self) -> typing.List: ... + + +class QCameraImageCaptureControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def cancelCapture(self) -> None: ... + def capture(self, fileName:str) -> int: ... + def driveMode(self) -> PySide2.QtMultimedia.QCameraImageCapture.DriveMode: ... + def isReadyForCapture(self) -> bool: ... + def setDriveMode(self, mode:PySide2.QtMultimedia.QCameraImageCapture.DriveMode) -> None: ... + + +class QCameraImageProcessing(PySide2.QtCore.QObject): + ColorFilterNone : QCameraImageProcessing = ... # 0x0 + WhiteBalanceAuto : QCameraImageProcessing = ... # 0x0 + ColorFilterGrayscale : QCameraImageProcessing = ... # 0x1 + WhiteBalanceManual : QCameraImageProcessing = ... # 0x1 + ColorFilterNegative : QCameraImageProcessing = ... # 0x2 + WhiteBalanceSunlight : QCameraImageProcessing = ... # 0x2 + ColorFilterSolarize : QCameraImageProcessing = ... # 0x3 + WhiteBalanceCloudy : QCameraImageProcessing = ... # 0x3 + ColorFilterSepia : QCameraImageProcessing = ... # 0x4 + WhiteBalanceShade : QCameraImageProcessing = ... # 0x4 + ColorFilterPosterize : QCameraImageProcessing = ... # 0x5 + WhiteBalanceTungsten : QCameraImageProcessing = ... # 0x5 + ColorFilterWhiteboard : QCameraImageProcessing = ... # 0x6 + WhiteBalanceFluorescent : QCameraImageProcessing = ... # 0x6 + ColorFilterBlackboard : QCameraImageProcessing = ... # 0x7 + WhiteBalanceFlash : QCameraImageProcessing = ... # 0x7 + ColorFilterAqua : QCameraImageProcessing = ... # 0x8 + WhiteBalanceSunset : QCameraImageProcessing = ... # 0x8 + ColorFilterVendor : QCameraImageProcessing = ... # 0x3e8 + WhiteBalanceVendor : QCameraImageProcessing = ... # 0x3e8 + + class ColorFilter(object): + ColorFilterNone : QCameraImageProcessing.ColorFilter = ... # 0x0 + ColorFilterGrayscale : QCameraImageProcessing.ColorFilter = ... # 0x1 + ColorFilterNegative : QCameraImageProcessing.ColorFilter = ... # 0x2 + ColorFilterSolarize : QCameraImageProcessing.ColorFilter = ... # 0x3 + ColorFilterSepia : QCameraImageProcessing.ColorFilter = ... # 0x4 + ColorFilterPosterize : QCameraImageProcessing.ColorFilter = ... # 0x5 + ColorFilterWhiteboard : QCameraImageProcessing.ColorFilter = ... # 0x6 + ColorFilterBlackboard : QCameraImageProcessing.ColorFilter = ... # 0x7 + ColorFilterAqua : QCameraImageProcessing.ColorFilter = ... # 0x8 + ColorFilterVendor : QCameraImageProcessing.ColorFilter = ... # 0x3e8 + + class WhiteBalanceMode(object): + WhiteBalanceAuto : QCameraImageProcessing.WhiteBalanceMode = ... # 0x0 + WhiteBalanceManual : QCameraImageProcessing.WhiteBalanceMode = ... # 0x1 + WhiteBalanceSunlight : QCameraImageProcessing.WhiteBalanceMode = ... # 0x2 + WhiteBalanceCloudy : QCameraImageProcessing.WhiteBalanceMode = ... # 0x3 + WhiteBalanceShade : QCameraImageProcessing.WhiteBalanceMode = ... # 0x4 + WhiteBalanceTungsten : QCameraImageProcessing.WhiteBalanceMode = ... # 0x5 + WhiteBalanceFluorescent : QCameraImageProcessing.WhiteBalanceMode = ... # 0x6 + WhiteBalanceFlash : QCameraImageProcessing.WhiteBalanceMode = ... # 0x7 + WhiteBalanceSunset : QCameraImageProcessing.WhiteBalanceMode = ... # 0x8 + WhiteBalanceVendor : QCameraImageProcessing.WhiteBalanceMode = ... # 0x3e8 + def brightness(self) -> float: ... + def colorFilter(self) -> PySide2.QtMultimedia.QCameraImageProcessing.ColorFilter: ... + def contrast(self) -> float: ... + def denoisingLevel(self) -> float: ... + def isAvailable(self) -> bool: ... + def isColorFilterSupported(self, filter:PySide2.QtMultimedia.QCameraImageProcessing.ColorFilter) -> bool: ... + def isWhiteBalanceModeSupported(self, mode:PySide2.QtMultimedia.QCameraImageProcessing.WhiteBalanceMode) -> bool: ... + def manualWhiteBalance(self) -> float: ... + def saturation(self) -> float: ... + def setBrightness(self, value:float) -> None: ... + def setColorFilter(self, filter:PySide2.QtMultimedia.QCameraImageProcessing.ColorFilter) -> None: ... + def setContrast(self, value:float) -> None: ... + def setDenoisingLevel(self, value:float) -> None: ... + def setManualWhiteBalance(self, colorTemperature:float) -> None: ... + def setSaturation(self, value:float) -> None: ... + def setSharpeningLevel(self, value:float) -> None: ... + def setWhiteBalanceMode(self, mode:PySide2.QtMultimedia.QCameraImageProcessing.WhiteBalanceMode) -> None: ... + def sharpeningLevel(self) -> float: ... + def whiteBalanceMode(self) -> PySide2.QtMultimedia.QCameraImageProcessing.WhiteBalanceMode: ... + + +class QCameraImageProcessingControl(PySide2.QtMultimedia.QMediaControl): + WhiteBalancePreset : QCameraImageProcessingControl = ... # 0x0 + ColorTemperature : QCameraImageProcessingControl = ... # 0x1 + Contrast : QCameraImageProcessingControl = ... # 0x2 + Saturation : QCameraImageProcessingControl = ... # 0x3 + Brightness : QCameraImageProcessingControl = ... # 0x4 + Sharpening : QCameraImageProcessingControl = ... # 0x5 + Denoising : QCameraImageProcessingControl = ... # 0x6 + ContrastAdjustment : QCameraImageProcessingControl = ... # 0x7 + SaturationAdjustment : QCameraImageProcessingControl = ... # 0x8 + BrightnessAdjustment : QCameraImageProcessingControl = ... # 0x9 + SharpeningAdjustment : QCameraImageProcessingControl = ... # 0xa + DenoisingAdjustment : QCameraImageProcessingControl = ... # 0xb + ColorFilter : QCameraImageProcessingControl = ... # 0xc + ExtendedParameter : QCameraImageProcessingControl = ... # 0x3e8 + + class ProcessingParameter(object): + WhiteBalancePreset : QCameraImageProcessingControl.ProcessingParameter = ... # 0x0 + ColorTemperature : QCameraImageProcessingControl.ProcessingParameter = ... # 0x1 + Contrast : QCameraImageProcessingControl.ProcessingParameter = ... # 0x2 + Saturation : QCameraImageProcessingControl.ProcessingParameter = ... # 0x3 + Brightness : QCameraImageProcessingControl.ProcessingParameter = ... # 0x4 + Sharpening : QCameraImageProcessingControl.ProcessingParameter = ... # 0x5 + Denoising : QCameraImageProcessingControl.ProcessingParameter = ... # 0x6 + ContrastAdjustment : QCameraImageProcessingControl.ProcessingParameter = ... # 0x7 + SaturationAdjustment : QCameraImageProcessingControl.ProcessingParameter = ... # 0x8 + BrightnessAdjustment : QCameraImageProcessingControl.ProcessingParameter = ... # 0x9 + SharpeningAdjustment : QCameraImageProcessingControl.ProcessingParameter = ... # 0xa + DenoisingAdjustment : QCameraImageProcessingControl.ProcessingParameter = ... # 0xb + ColorFilter : QCameraImageProcessingControl.ProcessingParameter = ... # 0xc + ExtendedParameter : QCameraImageProcessingControl.ProcessingParameter = ... # 0x3e8 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def isParameterSupported(self, arg__1:PySide2.QtMultimedia.QCameraImageProcessingControl.ProcessingParameter) -> bool: ... + def isParameterValueSupported(self, parameter:PySide2.QtMultimedia.QCameraImageProcessingControl.ProcessingParameter, value:typing.Any) -> bool: ... + def parameter(self, parameter:PySide2.QtMultimedia.QCameraImageProcessingControl.ProcessingParameter) -> typing.Any: ... + def setParameter(self, parameter:PySide2.QtMultimedia.QCameraImageProcessingControl.ProcessingParameter, value:typing.Any) -> None: ... + + +class QCameraInfo(Shiboken.Object): + + @typing.overload + def __init__(self, camera:PySide2.QtMultimedia.QCamera) -> None: ... + @typing.overload + def __init__(self, name:PySide2.QtCore.QByteArray=...) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtMultimedia.QCameraInfo) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @staticmethod + def availableCameras(position:PySide2.QtMultimedia.QCamera.Position=...) -> typing.List: ... + @staticmethod + def defaultCamera() -> PySide2.QtMultimedia.QCameraInfo: ... + def description(self) -> str: ... + def deviceName(self) -> str: ... + def isNull(self) -> bool: ... + def orientation(self) -> int: ... + def position(self) -> PySide2.QtMultimedia.QCamera.Position: ... + + +class QCameraInfoControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def cameraOrientation(self, deviceName:str) -> int: ... + def cameraPosition(self, deviceName:str) -> PySide2.QtMultimedia.QCamera.Position: ... + + +class QCameraLocksControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def lockStatus(self, lock:PySide2.QtMultimedia.QCamera.LockType) -> PySide2.QtMultimedia.QCamera.LockStatus: ... + def searchAndLock(self, locks:PySide2.QtMultimedia.QCamera.LockTypes) -> None: ... + def supportedLocks(self) -> PySide2.QtMultimedia.QCamera.LockTypes: ... + def unlock(self, locks:PySide2.QtMultimedia.QCamera.LockTypes) -> None: ... + + +class QCameraViewfinderSettings(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtMultimedia.QCameraViewfinderSettings) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def isNull(self) -> bool: ... + def maximumFrameRate(self) -> float: ... + def minimumFrameRate(self) -> float: ... + def pixelAspectRatio(self) -> PySide2.QtCore.QSize: ... + def pixelFormat(self) -> PySide2.QtMultimedia.QVideoFrame.PixelFormat: ... + def resolution(self) -> PySide2.QtCore.QSize: ... + def setMaximumFrameRate(self, rate:float) -> None: ... + def setMinimumFrameRate(self, rate:float) -> None: ... + @typing.overload + def setPixelAspectRatio(self, horizontal:int, vertical:int) -> None: ... + @typing.overload + def setPixelAspectRatio(self, ratio:PySide2.QtCore.QSize) -> None: ... + def setPixelFormat(self, format:PySide2.QtMultimedia.QVideoFrame.PixelFormat) -> None: ... + @typing.overload + def setResolution(self, arg__1:PySide2.QtCore.QSize) -> None: ... + @typing.overload + def setResolution(self, width:int, height:int) -> None: ... + def swap(self, other:PySide2.QtMultimedia.QCameraViewfinderSettings) -> None: ... + + +class QCameraViewfinderSettingsControl(PySide2.QtMultimedia.QMediaControl): + Resolution : QCameraViewfinderSettingsControl = ... # 0x0 + PixelAspectRatio : QCameraViewfinderSettingsControl = ... # 0x1 + MinimumFrameRate : QCameraViewfinderSettingsControl = ... # 0x2 + MaximumFrameRate : QCameraViewfinderSettingsControl = ... # 0x3 + PixelFormat : QCameraViewfinderSettingsControl = ... # 0x4 + UserParameter : QCameraViewfinderSettingsControl = ... # 0x3e8 + + class ViewfinderParameter(object): + Resolution : QCameraViewfinderSettingsControl.ViewfinderParameter = ... # 0x0 + PixelAspectRatio : QCameraViewfinderSettingsControl.ViewfinderParameter = ... # 0x1 + MinimumFrameRate : QCameraViewfinderSettingsControl.ViewfinderParameter = ... # 0x2 + MaximumFrameRate : QCameraViewfinderSettingsControl.ViewfinderParameter = ... # 0x3 + PixelFormat : QCameraViewfinderSettingsControl.ViewfinderParameter = ... # 0x4 + UserParameter : QCameraViewfinderSettingsControl.ViewfinderParameter = ... # 0x3e8 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def isViewfinderParameterSupported(self, parameter:PySide2.QtMultimedia.QCameraViewfinderSettingsControl.ViewfinderParameter) -> bool: ... + def setViewfinderParameter(self, parameter:PySide2.QtMultimedia.QCameraViewfinderSettingsControl.ViewfinderParameter, value:typing.Any) -> None: ... + def viewfinderParameter(self, parameter:PySide2.QtMultimedia.QCameraViewfinderSettingsControl.ViewfinderParameter) -> typing.Any: ... + + +class QCameraViewfinderSettingsControl2(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def setViewfinderSettings(self, settings:PySide2.QtMultimedia.QCameraViewfinderSettings) -> None: ... + def supportedViewfinderSettings(self) -> typing.List: ... + def viewfinderSettings(self) -> PySide2.QtMultimedia.QCameraViewfinderSettings: ... + + +class QCameraZoomControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def currentDigitalZoom(self) -> float: ... + def currentOpticalZoom(self) -> float: ... + def maximumDigitalZoom(self) -> float: ... + def maximumOpticalZoom(self) -> float: ... + def requestedDigitalZoom(self) -> float: ... + def requestedOpticalZoom(self) -> float: ... + def zoomTo(self, optical:float, digital:float) -> None: ... + + +class QCustomAudioRoleControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def customAudioRole(self) -> str: ... + def setCustomAudioRole(self, role:str) -> None: ... + def supportedCustomAudioRoles(self) -> typing.List: ... + + +class QImageEncoderControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def imageCodecDescription(self, codec:str) -> str: ... + def imageSettings(self) -> PySide2.QtMultimedia.QImageEncoderSettings: ... + def setImageSettings(self, settings:PySide2.QtMultimedia.QImageEncoderSettings) -> None: ... + def supportedImageCodecs(self) -> typing.List: ... + + +class QImageEncoderSettings(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtMultimedia.QImageEncoderSettings) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def codec(self) -> str: ... + def encodingOption(self, option:str) -> typing.Any: ... + def encodingOptions(self) -> typing.Dict: ... + def isNull(self) -> bool: ... + def quality(self) -> PySide2.QtMultimedia.QMultimedia.EncodingQuality: ... + def resolution(self) -> PySide2.QtCore.QSize: ... + def setCodec(self, arg__1:str) -> None: ... + def setEncodingOption(self, option:str, value:typing.Any) -> None: ... + def setEncodingOptions(self, options:typing.Dict) -> None: ... + def setQuality(self, quality:PySide2.QtMultimedia.QMultimedia.EncodingQuality) -> None: ... + @typing.overload + def setResolution(self, arg__1:PySide2.QtCore.QSize) -> None: ... + @typing.overload + def setResolution(self, width:int, height:int) -> None: ... + + +class QMediaAudioProbeControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + +class QMediaAvailabilityControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def availability(self) -> PySide2.QtMultimedia.QMultimedia.AvailabilityStatus: ... + + +class QMediaBindableInterface(Shiboken.Object): + + def __init__(self) -> None: ... + + def mediaObject(self) -> PySide2.QtMultimedia.QMediaObject: ... + def setMediaObject(self, object:PySide2.QtMultimedia.QMediaObject) -> bool: ... + + +class QMediaContainerControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def containerDescription(self, formatMimeType:str) -> str: ... + def containerFormat(self) -> str: ... + def setContainerFormat(self, format:str) -> None: ... + def supportedContainers(self) -> typing.List: ... + + +class QMediaContent(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, contentRequest:PySide2.QtNetwork.QNetworkRequest) -> None: ... + @typing.overload + def __init__(self, contentResource:PySide2.QtMultimedia.QMediaResource) -> None: ... + @typing.overload + def __init__(self, contentUrl:PySide2.QtCore.QUrl) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtMultimedia.QMediaContent) -> None: ... + @typing.overload + def __init__(self, playlist:PySide2.QtMultimedia.QMediaPlaylist, contentUrl:PySide2.QtCore.QUrl=..., takeOwnership:bool=...) -> None: ... + @typing.overload + def __init__(self, resources:typing.Sequence) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def canonicalRequest(self) -> PySide2.QtNetwork.QNetworkRequest: ... + def canonicalResource(self) -> PySide2.QtMultimedia.QMediaResource: ... + def canonicalUrl(self) -> PySide2.QtCore.QUrl: ... + def isNull(self) -> bool: ... + def playlist(self) -> PySide2.QtMultimedia.QMediaPlaylist: ... + def request(self) -> PySide2.QtNetwork.QNetworkRequest: ... + def resources(self) -> typing.List: ... + + +class QMediaControl(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + +class QMediaGaplessPlaybackControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def crossfadeTime(self) -> float: ... + def isCrossfadeSupported(self) -> bool: ... + def nextMedia(self) -> PySide2.QtMultimedia.QMediaContent: ... + def setCrossfadeTime(self, crossfadeTime:float) -> None: ... + def setNextMedia(self, media:PySide2.QtMultimedia.QMediaContent) -> None: ... + + +class QMediaNetworkAccessControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def currentConfiguration(self) -> PySide2.QtNetwork.QNetworkConfiguration: ... + def setConfigurations(self, configuration:typing.Sequence) -> None: ... + + +class QMediaObject(PySide2.QtCore.QObject): + + def __init__(self, parent:PySide2.QtCore.QObject, service:PySide2.QtMultimedia.QMediaService) -> None: ... + + def addPropertyWatch(self, name:PySide2.QtCore.QByteArray) -> None: ... + def availability(self) -> PySide2.QtMultimedia.QMultimedia.AvailabilityStatus: ... + def availableMetaData(self) -> typing.List: ... + def bind(self, arg__1:PySide2.QtCore.QObject) -> bool: ... + def isAvailable(self) -> bool: ... + def isMetaDataAvailable(self) -> bool: ... + def metaData(self, key:str) -> typing.Any: ... + def notifyInterval(self) -> int: ... + def removePropertyWatch(self, name:PySide2.QtCore.QByteArray) -> None: ... + def service(self) -> PySide2.QtMultimedia.QMediaService: ... + def setNotifyInterval(self, milliSeconds:int) -> None: ... + def unbind(self, arg__1:PySide2.QtCore.QObject) -> None: ... + + +class QMediaPlayer(PySide2.QtMultimedia.QMediaObject): + NoError : QMediaPlayer = ... # 0x0 + StoppedState : QMediaPlayer = ... # 0x0 + UnknownMediaStatus : QMediaPlayer = ... # 0x0 + LowLatency : QMediaPlayer = ... # 0x1 + NoMedia : QMediaPlayer = ... # 0x1 + PlayingState : QMediaPlayer = ... # 0x1 + ResourceError : QMediaPlayer = ... # 0x1 + FormatError : QMediaPlayer = ... # 0x2 + LoadingMedia : QMediaPlayer = ... # 0x2 + PausedState : QMediaPlayer = ... # 0x2 + StreamPlayback : QMediaPlayer = ... # 0x2 + LoadedMedia : QMediaPlayer = ... # 0x3 + NetworkError : QMediaPlayer = ... # 0x3 + AccessDeniedError : QMediaPlayer = ... # 0x4 + StalledMedia : QMediaPlayer = ... # 0x4 + VideoSurface : QMediaPlayer = ... # 0x4 + BufferingMedia : QMediaPlayer = ... # 0x5 + ServiceMissingError : QMediaPlayer = ... # 0x5 + BufferedMedia : QMediaPlayer = ... # 0x6 + MediaIsPlaylist : QMediaPlayer = ... # 0x6 + EndOfMedia : QMediaPlayer = ... # 0x7 + InvalidMedia : QMediaPlayer = ... # 0x8 + + class Error(object): + NoError : QMediaPlayer.Error = ... # 0x0 + ResourceError : QMediaPlayer.Error = ... # 0x1 + FormatError : QMediaPlayer.Error = ... # 0x2 + NetworkError : QMediaPlayer.Error = ... # 0x3 + AccessDeniedError : QMediaPlayer.Error = ... # 0x4 + ServiceMissingError : QMediaPlayer.Error = ... # 0x5 + MediaIsPlaylist : QMediaPlayer.Error = ... # 0x6 + + class Flag(object): + LowLatency : QMediaPlayer.Flag = ... # 0x1 + StreamPlayback : QMediaPlayer.Flag = ... # 0x2 + VideoSurface : QMediaPlayer.Flag = ... # 0x4 + + class Flags(object): ... + + class MediaStatus(object): + UnknownMediaStatus : QMediaPlayer.MediaStatus = ... # 0x0 + NoMedia : QMediaPlayer.MediaStatus = ... # 0x1 + LoadingMedia : QMediaPlayer.MediaStatus = ... # 0x2 + LoadedMedia : QMediaPlayer.MediaStatus = ... # 0x3 + StalledMedia : QMediaPlayer.MediaStatus = ... # 0x4 + BufferingMedia : QMediaPlayer.MediaStatus = ... # 0x5 + BufferedMedia : QMediaPlayer.MediaStatus = ... # 0x6 + EndOfMedia : QMediaPlayer.MediaStatus = ... # 0x7 + InvalidMedia : QMediaPlayer.MediaStatus = ... # 0x8 + + class State(object): + StoppedState : QMediaPlayer.State = ... # 0x0 + PlayingState : QMediaPlayer.State = ... # 0x1 + PausedState : QMediaPlayer.State = ... # 0x2 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=..., flags:PySide2.QtMultimedia.QMediaPlayer.Flags=...) -> None: ... + + def audioRole(self) -> PySide2.QtMultimedia.QAudio.Role: ... + def availability(self) -> PySide2.QtMultimedia.QMultimedia.AvailabilityStatus: ... + def bind(self, arg__1:PySide2.QtCore.QObject) -> bool: ... + def bufferStatus(self) -> int: ... + def currentMedia(self) -> PySide2.QtMultimedia.QMediaContent: ... + def currentNetworkConfiguration(self) -> PySide2.QtNetwork.QNetworkConfiguration: ... + def customAudioRole(self) -> str: ... + def duration(self) -> int: ... + def error(self) -> PySide2.QtMultimedia.QMediaPlayer.Error: ... + def errorString(self) -> str: ... + @staticmethod + def hasSupport(mimeType:str, codecs:typing.Sequence=..., flags:PySide2.QtMultimedia.QMediaPlayer.Flags=...) -> PySide2.QtMultimedia.QMultimedia.SupportEstimate: ... + def isAudioAvailable(self) -> bool: ... + def isMuted(self) -> bool: ... + def isSeekable(self) -> bool: ... + def isVideoAvailable(self) -> bool: ... + def media(self) -> PySide2.QtMultimedia.QMediaContent: ... + def mediaStatus(self) -> PySide2.QtMultimedia.QMediaPlayer.MediaStatus: ... + def mediaStream(self) -> PySide2.QtCore.QIODevice: ... + def pause(self) -> None: ... + def play(self) -> None: ... + def playbackRate(self) -> float: ... + def playlist(self) -> PySide2.QtMultimedia.QMediaPlaylist: ... + def position(self) -> int: ... + def setAudioRole(self, audioRole:PySide2.QtMultimedia.QAudio.Role) -> None: ... + def setCustomAudioRole(self, audioRole:str) -> None: ... + def setMedia(self, media:PySide2.QtMultimedia.QMediaContent, stream:typing.Optional[PySide2.QtCore.QIODevice]=...) -> None: ... + def setMuted(self, muted:bool) -> None: ... + def setNetworkConfigurations(self, configurations:typing.Sequence) -> None: ... + def setPlaybackRate(self, rate:float) -> None: ... + def setPlaylist(self, playlist:PySide2.QtMultimedia.QMediaPlaylist) -> None: ... + def setPosition(self, position:int) -> None: ... + @typing.overload + def setVideoOutput(self, arg__1:PySide2.QtMultimediaWidgets.QGraphicsVideoItem) -> None: ... + @typing.overload + def setVideoOutput(self, arg__1:PySide2.QtMultimediaWidgets.QVideoWidget) -> None: ... + @typing.overload + def setVideoOutput(self, surface:PySide2.QtMultimedia.QAbstractVideoSurface) -> None: ... + @typing.overload + def setVideoOutput(self, surfaces:typing.List) -> None: ... + def setVolume(self, volume:int) -> None: ... + def state(self) -> PySide2.QtMultimedia.QMediaPlayer.State: ... + def stop(self) -> None: ... + def supportedAudioRoles(self) -> typing.List: ... + def supportedCustomAudioRoles(self) -> typing.List: ... + @staticmethod + def supportedMimeTypes(flags:PySide2.QtMultimedia.QMediaPlayer.Flags=...) -> typing.List: ... + def unbind(self, arg__1:PySide2.QtCore.QObject) -> None: ... + def volume(self) -> int: ... + + +class QMediaPlayerControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def availablePlaybackRanges(self) -> PySide2.QtMultimedia.QMediaTimeRange: ... + def bufferStatus(self) -> int: ... + def duration(self) -> int: ... + def isAudioAvailable(self) -> bool: ... + def isMuted(self) -> bool: ... + def isSeekable(self) -> bool: ... + def isVideoAvailable(self) -> bool: ... + def media(self) -> PySide2.QtMultimedia.QMediaContent: ... + def mediaStatus(self) -> PySide2.QtMultimedia.QMediaPlayer.MediaStatus: ... + def mediaStream(self) -> PySide2.QtCore.QIODevice: ... + def pause(self) -> None: ... + def play(self) -> None: ... + def playbackRate(self) -> float: ... + def position(self) -> int: ... + def setMedia(self, media:PySide2.QtMultimedia.QMediaContent, stream:PySide2.QtCore.QIODevice) -> None: ... + def setMuted(self, mute:bool) -> None: ... + def setPlaybackRate(self, rate:float) -> None: ... + def setPosition(self, position:int) -> None: ... + def setVolume(self, volume:int) -> None: ... + def state(self) -> PySide2.QtMultimedia.QMediaPlayer.State: ... + def stop(self) -> None: ... + def volume(self) -> int: ... + + +class QMediaPlaylist(PySide2.QtCore.QObject, PySide2.QtMultimedia.QMediaBindableInterface): + CurrentItemOnce : QMediaPlaylist = ... # 0x0 + NoError : QMediaPlaylist = ... # 0x0 + CurrentItemInLoop : QMediaPlaylist = ... # 0x1 + FormatError : QMediaPlaylist = ... # 0x1 + FormatNotSupportedError : QMediaPlaylist = ... # 0x2 + Sequential : QMediaPlaylist = ... # 0x2 + Loop : QMediaPlaylist = ... # 0x3 + NetworkError : QMediaPlaylist = ... # 0x3 + AccessDeniedError : QMediaPlaylist = ... # 0x4 + Random : QMediaPlaylist = ... # 0x4 + + class Error(object): + NoError : QMediaPlaylist.Error = ... # 0x0 + FormatError : QMediaPlaylist.Error = ... # 0x1 + FormatNotSupportedError : QMediaPlaylist.Error = ... # 0x2 + NetworkError : QMediaPlaylist.Error = ... # 0x3 + AccessDeniedError : QMediaPlaylist.Error = ... # 0x4 + + class PlaybackMode(object): + CurrentItemOnce : QMediaPlaylist.PlaybackMode = ... # 0x0 + CurrentItemInLoop : QMediaPlaylist.PlaybackMode = ... # 0x1 + Sequential : QMediaPlaylist.PlaybackMode = ... # 0x2 + Loop : QMediaPlaylist.PlaybackMode = ... # 0x3 + Random : QMediaPlaylist.PlaybackMode = ... # 0x4 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + @typing.overload + def addMedia(self, content:PySide2.QtMultimedia.QMediaContent) -> bool: ... + @typing.overload + def addMedia(self, items:typing.Sequence) -> bool: ... + def clear(self) -> bool: ... + def currentIndex(self) -> int: ... + def currentMedia(self) -> PySide2.QtMultimedia.QMediaContent: ... + def error(self) -> PySide2.QtMultimedia.QMediaPlaylist.Error: ... + def errorString(self) -> str: ... + @typing.overload + def insertMedia(self, index:int, content:PySide2.QtMultimedia.QMediaContent) -> bool: ... + @typing.overload + def insertMedia(self, index:int, items:typing.Sequence) -> bool: ... + def isEmpty(self) -> bool: ... + def isReadOnly(self) -> bool: ... + @typing.overload + def load(self, device:PySide2.QtCore.QIODevice, format:typing.Optional[bytes]=...) -> None: ... + @typing.overload + def load(self, location:PySide2.QtCore.QUrl, format:typing.Optional[bytes]=...) -> None: ... + @typing.overload + def load(self, request:PySide2.QtNetwork.QNetworkRequest, format:typing.Optional[bytes]=...) -> None: ... + def media(self, index:int) -> PySide2.QtMultimedia.QMediaContent: ... + def mediaCount(self) -> int: ... + def mediaObject(self) -> PySide2.QtMultimedia.QMediaObject: ... + def moveMedia(self, from_:int, to:int) -> bool: ... + def next(self) -> None: ... + def nextIndex(self, steps:int=...) -> int: ... + def playbackMode(self) -> PySide2.QtMultimedia.QMediaPlaylist.PlaybackMode: ... + def previous(self) -> None: ... + def previousIndex(self, steps:int=...) -> int: ... + @typing.overload + def removeMedia(self, pos:int) -> bool: ... + @typing.overload + def removeMedia(self, start:int, end:int) -> bool: ... + @typing.overload + def save(self, device:PySide2.QtCore.QIODevice, format:bytes) -> bool: ... + @typing.overload + def save(self, location:PySide2.QtCore.QUrl, format:typing.Optional[bytes]=...) -> bool: ... + def setCurrentIndex(self, index:int) -> None: ... + def setMediaObject(self, object:PySide2.QtMultimedia.QMediaObject) -> bool: ... + def setPlaybackMode(self, mode:PySide2.QtMultimedia.QMediaPlaylist.PlaybackMode) -> None: ... + def shuffle(self) -> None: ... + + +class QMediaRecorder(PySide2.QtCore.QObject, PySide2.QtMultimedia.QMediaBindableInterface): + NoError : QMediaRecorder = ... # 0x0 + StoppedState : QMediaRecorder = ... # 0x0 + UnavailableStatus : QMediaRecorder = ... # 0x0 + RecordingState : QMediaRecorder = ... # 0x1 + ResourceError : QMediaRecorder = ... # 0x1 + UnloadedStatus : QMediaRecorder = ... # 0x1 + FormatError : QMediaRecorder = ... # 0x2 + LoadingStatus : QMediaRecorder = ... # 0x2 + PausedState : QMediaRecorder = ... # 0x2 + LoadedStatus : QMediaRecorder = ... # 0x3 + OutOfSpaceError : QMediaRecorder = ... # 0x3 + StartingStatus : QMediaRecorder = ... # 0x4 + RecordingStatus : QMediaRecorder = ... # 0x5 + PausedStatus : QMediaRecorder = ... # 0x6 + FinalizingStatus : QMediaRecorder = ... # 0x7 + + class Error(object): + NoError : QMediaRecorder.Error = ... # 0x0 + ResourceError : QMediaRecorder.Error = ... # 0x1 + FormatError : QMediaRecorder.Error = ... # 0x2 + OutOfSpaceError : QMediaRecorder.Error = ... # 0x3 + + class State(object): + StoppedState : QMediaRecorder.State = ... # 0x0 + RecordingState : QMediaRecorder.State = ... # 0x1 + PausedState : QMediaRecorder.State = ... # 0x2 + + class Status(object): + UnavailableStatus : QMediaRecorder.Status = ... # 0x0 + UnloadedStatus : QMediaRecorder.Status = ... # 0x1 + LoadingStatus : QMediaRecorder.Status = ... # 0x2 + LoadedStatus : QMediaRecorder.Status = ... # 0x3 + StartingStatus : QMediaRecorder.Status = ... # 0x4 + RecordingStatus : QMediaRecorder.Status = ... # 0x5 + PausedStatus : QMediaRecorder.Status = ... # 0x6 + FinalizingStatus : QMediaRecorder.Status = ... # 0x7 + + def __init__(self, mediaObject:PySide2.QtMultimedia.QMediaObject, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def actualLocation(self) -> PySide2.QtCore.QUrl: ... + def audioCodecDescription(self, codecName:str) -> str: ... + def audioSettings(self) -> PySide2.QtMultimedia.QAudioEncoderSettings: ... + def availability(self) -> PySide2.QtMultimedia.QMultimedia.AvailabilityStatus: ... + def availableMetaData(self) -> typing.List: ... + def containerDescription(self, format:str) -> str: ... + def containerFormat(self) -> str: ... + def duration(self) -> int: ... + def error(self) -> PySide2.QtMultimedia.QMediaRecorder.Error: ... + def errorString(self) -> str: ... + def isAvailable(self) -> bool: ... + def isMetaDataAvailable(self) -> bool: ... + def isMetaDataWritable(self) -> bool: ... + def isMuted(self) -> bool: ... + def mediaObject(self) -> PySide2.QtMultimedia.QMediaObject: ... + def metaData(self, key:str) -> typing.Any: ... + def outputLocation(self) -> PySide2.QtCore.QUrl: ... + def pause(self) -> None: ... + def record(self) -> None: ... + def setAudioSettings(self, audioSettings:PySide2.QtMultimedia.QAudioEncoderSettings) -> None: ... + def setContainerFormat(self, container:str) -> None: ... + def setEncodingSettings(self, audioSettings:PySide2.QtMultimedia.QAudioEncoderSettings, videoSettings:PySide2.QtMultimedia.QVideoEncoderSettings=..., containerMimeType:str=...) -> None: ... + def setMediaObject(self, object:PySide2.QtMultimedia.QMediaObject) -> bool: ... + def setMetaData(self, key:str, value:typing.Any) -> None: ... + def setMuted(self, muted:bool) -> None: ... + def setOutputLocation(self, location:PySide2.QtCore.QUrl) -> bool: ... + def setVideoSettings(self, videoSettings:PySide2.QtMultimedia.QVideoEncoderSettings) -> None: ... + def setVolume(self, volume:float) -> None: ... + def state(self) -> PySide2.QtMultimedia.QMediaRecorder.State: ... + def status(self) -> PySide2.QtMultimedia.QMediaRecorder.Status: ... + def stop(self) -> None: ... + def supportedAudioCodecs(self) -> typing.List: ... + def supportedContainers(self) -> typing.List: ... + def supportedVideoCodecs(self) -> typing.List: ... + def videoCodecDescription(self, codecName:str) -> str: ... + def videoSettings(self) -> PySide2.QtMultimedia.QVideoEncoderSettings: ... + def volume(self) -> float: ... + + +class QMediaRecorderControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def applySettings(self) -> None: ... + def duration(self) -> int: ... + def isMuted(self) -> bool: ... + def outputLocation(self) -> PySide2.QtCore.QUrl: ... + def setMuted(self, muted:bool) -> None: ... + def setOutputLocation(self, location:PySide2.QtCore.QUrl) -> bool: ... + def setState(self, state:PySide2.QtMultimedia.QMediaRecorder.State) -> None: ... + def setVolume(self, volume:float) -> None: ... + def state(self) -> PySide2.QtMultimedia.QMediaRecorder.State: ... + def status(self) -> PySide2.QtMultimedia.QMediaRecorder.Status: ... + def volume(self) -> float: ... + + +class QMediaResource(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtMultimedia.QMediaResource) -> None: ... + @typing.overload + def __init__(self, request:PySide2.QtNetwork.QNetworkRequest, mimeType:str=...) -> None: ... + @typing.overload + def __init__(self, url:PySide2.QtCore.QUrl, mimeType:str=...) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def audioBitRate(self) -> int: ... + def audioCodec(self) -> str: ... + def channelCount(self) -> int: ... + def dataSize(self) -> int: ... + def isNull(self) -> bool: ... + def language(self) -> str: ... + def mimeType(self) -> str: ... + def request(self) -> PySide2.QtNetwork.QNetworkRequest: ... + def resolution(self) -> PySide2.QtCore.QSize: ... + def sampleRate(self) -> int: ... + def setAudioBitRate(self, rate:int) -> None: ... + def setAudioCodec(self, codec:str) -> None: ... + def setChannelCount(self, channels:int) -> None: ... + def setDataSize(self, size:int) -> None: ... + def setLanguage(self, language:str) -> None: ... + @typing.overload + def setResolution(self, resolution:PySide2.QtCore.QSize) -> None: ... + @typing.overload + def setResolution(self, width:int, height:int) -> None: ... + def setSampleRate(self, frequency:int) -> None: ... + def setVideoBitRate(self, rate:int) -> None: ... + def setVideoCodec(self, codec:str) -> None: ... + def url(self) -> PySide2.QtCore.QUrl: ... + def videoBitRate(self) -> int: ... + def videoCodec(self) -> str: ... + + +class QMediaService(PySide2.QtCore.QObject): + + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + + def releaseControl(self, control:PySide2.QtMultimedia.QMediaControl) -> None: ... + def requestControl(self, name:bytes) -> PySide2.QtMultimedia.QMediaControl: ... + + +class QMediaServiceCameraInfoInterface(Shiboken.Object): + + def __init__(self) -> None: ... + + def cameraOrientation(self, device:PySide2.QtCore.QByteArray) -> int: ... + def cameraPosition(self, device:PySide2.QtCore.QByteArray) -> PySide2.QtMultimedia.QCamera.Position: ... + + +class QMediaServiceDefaultDeviceInterface(Shiboken.Object): + + def __init__(self) -> None: ... + + def defaultDevice(self, service:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QByteArray: ... + + +class QMediaServiceFeaturesInterface(Shiboken.Object): + + def __init__(self) -> None: ... + + def supportedFeatures(self, service:PySide2.QtCore.QByteArray) -> PySide2.QtMultimedia.QMediaServiceProviderHint.Features: ... + + +class QMediaServiceProviderHint(Shiboken.Object): + Null : QMediaServiceProviderHint = ... # 0x0 + ContentType : QMediaServiceProviderHint = ... # 0x1 + LowLatencyPlayback : QMediaServiceProviderHint = ... # 0x1 + Device : QMediaServiceProviderHint = ... # 0x2 + RecordingSupport : QMediaServiceProviderHint = ... # 0x2 + SupportedFeatures : QMediaServiceProviderHint = ... # 0x3 + CameraPosition : QMediaServiceProviderHint = ... # 0x4 + StreamPlayback : QMediaServiceProviderHint = ... # 0x4 + VideoSurface : QMediaServiceProviderHint = ... # 0x8 + + class Feature(object): + LowLatencyPlayback : QMediaServiceProviderHint.Feature = ... # 0x1 + RecordingSupport : QMediaServiceProviderHint.Feature = ... # 0x2 + StreamPlayback : QMediaServiceProviderHint.Feature = ... # 0x4 + VideoSurface : QMediaServiceProviderHint.Feature = ... # 0x8 + + class Features(object): ... + + class Type(object): + Null : QMediaServiceProviderHint.Type = ... # 0x0 + ContentType : QMediaServiceProviderHint.Type = ... # 0x1 + Device : QMediaServiceProviderHint.Type = ... # 0x2 + SupportedFeatures : QMediaServiceProviderHint.Type = ... # 0x3 + CameraPosition : QMediaServiceProviderHint.Type = ... # 0x4 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, device:PySide2.QtCore.QByteArray) -> None: ... + @typing.overload + def __init__(self, features:PySide2.QtMultimedia.QMediaServiceProviderHint.Features) -> None: ... + @typing.overload + def __init__(self, mimeType:str, codecs:typing.Sequence) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtMultimedia.QMediaServiceProviderHint) -> None: ... + @typing.overload + def __init__(self, position:PySide2.QtMultimedia.QCamera.Position) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def cameraPosition(self) -> PySide2.QtMultimedia.QCamera.Position: ... + def codecs(self) -> typing.List: ... + def device(self) -> PySide2.QtCore.QByteArray: ... + def features(self) -> PySide2.QtMultimedia.QMediaServiceProviderHint.Features: ... + def isNull(self) -> bool: ... + def mimeType(self) -> str: ... + def type(self) -> PySide2.QtMultimedia.QMediaServiceProviderHint.Type: ... + + +class QMediaServiceSupportedDevicesInterface(Shiboken.Object): + + def __init__(self) -> None: ... + + def deviceDescription(self, service:PySide2.QtCore.QByteArray, device:PySide2.QtCore.QByteArray) -> str: ... + def devices(self, service:PySide2.QtCore.QByteArray) -> typing.List: ... + + +class QMediaServiceSupportedFormatsInterface(Shiboken.Object): + + def __init__(self) -> None: ... + + def hasSupport(self, mimeType:str, codecs:typing.Sequence) -> PySide2.QtMultimedia.QMultimedia.SupportEstimate: ... + def supportedMimeTypes(self) -> typing.List: ... + + +class QMediaStreamsControl(PySide2.QtMultimedia.QMediaControl): + UnknownStream : QMediaStreamsControl = ... # 0x0 + VideoStream : QMediaStreamsControl = ... # 0x1 + AudioStream : QMediaStreamsControl = ... # 0x2 + SubPictureStream : QMediaStreamsControl = ... # 0x3 + DataStream : QMediaStreamsControl = ... # 0x4 + + class StreamType(object): + UnknownStream : QMediaStreamsControl.StreamType = ... # 0x0 + VideoStream : QMediaStreamsControl.StreamType = ... # 0x1 + AudioStream : QMediaStreamsControl.StreamType = ... # 0x2 + SubPictureStream : QMediaStreamsControl.StreamType = ... # 0x3 + DataStream : QMediaStreamsControl.StreamType = ... # 0x4 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def isActive(self, streamNumber:int) -> bool: ... + def metaData(self, streamNumber:int, key:str) -> typing.Any: ... + def setActive(self, streamNumber:int, state:bool) -> None: ... + def streamCount(self) -> int: ... + def streamType(self, streamNumber:int) -> PySide2.QtMultimedia.QMediaStreamsControl.StreamType: ... + + +class QMediaTimeInterval(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtMultimedia.QMediaTimeInterval) -> None: ... + @typing.overload + def __init__(self, start:int, end:int) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def contains(self, time:int) -> bool: ... + def end(self) -> int: ... + def isNormal(self) -> bool: ... + def normalized(self) -> PySide2.QtMultimedia.QMediaTimeInterval: ... + def start(self) -> int: ... + def translated(self, offset:int) -> PySide2.QtMultimedia.QMediaTimeInterval: ... + + +class QMediaTimeRange(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtMultimedia.QMediaTimeInterval) -> None: ... + @typing.overload + def __init__(self, range:PySide2.QtMultimedia.QMediaTimeRange) -> None: ... + @typing.overload + def __init__(self, start:int, end:int) -> None: ... + + def __add__(self, arg__2:PySide2.QtMultimedia.QMediaTimeRange) -> PySide2.QtMultimedia.QMediaTimeRange: ... + @staticmethod + def __copy__() -> None: ... + @typing.overload + def __iadd__(self, arg__1:PySide2.QtMultimedia.QMediaTimeInterval) -> PySide2.QtMultimedia.QMediaTimeRange: ... + @typing.overload + def __iadd__(self, arg__1:PySide2.QtMultimedia.QMediaTimeRange) -> PySide2.QtMultimedia.QMediaTimeRange: ... + @typing.overload + def __isub__(self, arg__1:PySide2.QtMultimedia.QMediaTimeInterval) -> PySide2.QtMultimedia.QMediaTimeRange: ... + @typing.overload + def __isub__(self, arg__1:PySide2.QtMultimedia.QMediaTimeRange) -> PySide2.QtMultimedia.QMediaTimeRange: ... + def __sub__(self, arg__2:PySide2.QtMultimedia.QMediaTimeRange) -> PySide2.QtMultimedia.QMediaTimeRange: ... + @typing.overload + def addInterval(self, interval:PySide2.QtMultimedia.QMediaTimeInterval) -> None: ... + @typing.overload + def addInterval(self, start:int, end:int) -> None: ... + def addTimeRange(self, arg__1:PySide2.QtMultimedia.QMediaTimeRange) -> None: ... + def clear(self) -> None: ... + def contains(self, time:int) -> bool: ... + def earliestTime(self) -> int: ... + def intervals(self) -> typing.List: ... + def isContinuous(self) -> bool: ... + def isEmpty(self) -> bool: ... + def latestTime(self) -> int: ... + @typing.overload + def removeInterval(self, interval:PySide2.QtMultimedia.QMediaTimeInterval) -> None: ... + @typing.overload + def removeInterval(self, start:int, end:int) -> None: ... + def removeTimeRange(self, arg__1:PySide2.QtMultimedia.QMediaTimeRange) -> None: ... + + +class QMediaVideoProbeControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + +class QMetaDataReaderControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def availableMetaData(self) -> typing.List: ... + def isMetaDataAvailable(self) -> bool: ... + def metaData(self, key:str) -> typing.Any: ... + + +class QMetaDataWriterControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def availableMetaData(self) -> typing.List: ... + def isMetaDataAvailable(self) -> bool: ... + def isWritable(self) -> bool: ... + def metaData(self, key:str) -> typing.Any: ... + def setMetaData(self, key:str, value:typing.Any) -> None: ... + + +class QMultimedia(Shiboken.Object): + Available : QMultimedia = ... # 0x0 + ConstantQualityEncoding : QMultimedia = ... # 0x0 + NotSupported : QMultimedia = ... # 0x0 + VeryLowQuality : QMultimedia = ... # 0x0 + ConstantBitRateEncoding : QMultimedia = ... # 0x1 + LowQuality : QMultimedia = ... # 0x1 + MaybeSupported : QMultimedia = ... # 0x1 + ServiceMissing : QMultimedia = ... # 0x1 + AverageBitRateEncoding : QMultimedia = ... # 0x2 + Busy : QMultimedia = ... # 0x2 + NormalQuality : QMultimedia = ... # 0x2 + ProbablySupported : QMultimedia = ... # 0x2 + HighQuality : QMultimedia = ... # 0x3 + PreferredService : QMultimedia = ... # 0x3 + ResourceError : QMultimedia = ... # 0x3 + TwoPassEncoding : QMultimedia = ... # 0x3 + VeryHighQuality : QMultimedia = ... # 0x4 + + class AvailabilityStatus(object): + Available : QMultimedia.AvailabilityStatus = ... # 0x0 + ServiceMissing : QMultimedia.AvailabilityStatus = ... # 0x1 + Busy : QMultimedia.AvailabilityStatus = ... # 0x2 + ResourceError : QMultimedia.AvailabilityStatus = ... # 0x3 + + class EncodingMode(object): + ConstantQualityEncoding : QMultimedia.EncodingMode = ... # 0x0 + ConstantBitRateEncoding : QMultimedia.EncodingMode = ... # 0x1 + AverageBitRateEncoding : QMultimedia.EncodingMode = ... # 0x2 + TwoPassEncoding : QMultimedia.EncodingMode = ... # 0x3 + + class EncodingQuality(object): + VeryLowQuality : QMultimedia.EncodingQuality = ... # 0x0 + LowQuality : QMultimedia.EncodingQuality = ... # 0x1 + NormalQuality : QMultimedia.EncodingQuality = ... # 0x2 + HighQuality : QMultimedia.EncodingQuality = ... # 0x3 + VeryHighQuality : QMultimedia.EncodingQuality = ... # 0x4 + + class SupportEstimate(object): + NotSupported : QMultimedia.SupportEstimate = ... # 0x0 + MaybeSupported : QMultimedia.SupportEstimate = ... # 0x1 + ProbablySupported : QMultimedia.SupportEstimate = ... # 0x2 + PreferredService : QMultimedia.SupportEstimate = ... # 0x3 + + +class QRadioData(PySide2.QtCore.QObject, PySide2.QtMultimedia.QMediaBindableInterface): + NoError : QRadioData = ... # 0x0 + Undefined : QRadioData = ... # 0x0 + News : QRadioData = ... # 0x1 + ResourceError : QRadioData = ... # 0x1 + CurrentAffairs : QRadioData = ... # 0x2 + OpenError : QRadioData = ... # 0x2 + Information : QRadioData = ... # 0x3 + OutOfRangeError : QRadioData = ... # 0x3 + Sport : QRadioData = ... # 0x4 + Education : QRadioData = ... # 0x5 + Drama : QRadioData = ... # 0x6 + Culture : QRadioData = ... # 0x7 + Science : QRadioData = ... # 0x8 + Varied : QRadioData = ... # 0x9 + PopMusic : QRadioData = ... # 0xa + RockMusic : QRadioData = ... # 0xb + EasyListening : QRadioData = ... # 0xc + LightClassical : QRadioData = ... # 0xd + SeriousClassical : QRadioData = ... # 0xe + OtherMusic : QRadioData = ... # 0xf + Weather : QRadioData = ... # 0x10 + Finance : QRadioData = ... # 0x11 + ChildrensProgrammes : QRadioData = ... # 0x12 + SocialAffairs : QRadioData = ... # 0x13 + Religion : QRadioData = ... # 0x14 + PhoneIn : QRadioData = ... # 0x15 + Travel : QRadioData = ... # 0x16 + Leisure : QRadioData = ... # 0x17 + JazzMusic : QRadioData = ... # 0x18 + CountryMusic : QRadioData = ... # 0x19 + NationalMusic : QRadioData = ... # 0x1a + OldiesMusic : QRadioData = ... # 0x1b + FolkMusic : QRadioData = ... # 0x1c + Documentary : QRadioData = ... # 0x1d + AlarmTest : QRadioData = ... # 0x1e + Alarm : QRadioData = ... # 0x1f + Talk : QRadioData = ... # 0x20 + ClassicRock : QRadioData = ... # 0x21 + AdultHits : QRadioData = ... # 0x22 + SoftRock : QRadioData = ... # 0x23 + Top40 : QRadioData = ... # 0x24 + Soft : QRadioData = ... # 0x25 + Nostalgia : QRadioData = ... # 0x26 + Classical : QRadioData = ... # 0x27 + RhythmAndBlues : QRadioData = ... # 0x28 + SoftRhythmAndBlues : QRadioData = ... # 0x29 + Language : QRadioData = ... # 0x2a + ReligiousMusic : QRadioData = ... # 0x2b + ReligiousTalk : QRadioData = ... # 0x2c + Personality : QRadioData = ... # 0x2d + Public : QRadioData = ... # 0x2e + College : QRadioData = ... # 0x2f + + class Error(object): + NoError : QRadioData.Error = ... # 0x0 + ResourceError : QRadioData.Error = ... # 0x1 + OpenError : QRadioData.Error = ... # 0x2 + OutOfRangeError : QRadioData.Error = ... # 0x3 + + class ProgramType(object): + Undefined : QRadioData.ProgramType = ... # 0x0 + News : QRadioData.ProgramType = ... # 0x1 + CurrentAffairs : QRadioData.ProgramType = ... # 0x2 + Information : QRadioData.ProgramType = ... # 0x3 + Sport : QRadioData.ProgramType = ... # 0x4 + Education : QRadioData.ProgramType = ... # 0x5 + Drama : QRadioData.ProgramType = ... # 0x6 + Culture : QRadioData.ProgramType = ... # 0x7 + Science : QRadioData.ProgramType = ... # 0x8 + Varied : QRadioData.ProgramType = ... # 0x9 + PopMusic : QRadioData.ProgramType = ... # 0xa + RockMusic : QRadioData.ProgramType = ... # 0xb + EasyListening : QRadioData.ProgramType = ... # 0xc + LightClassical : QRadioData.ProgramType = ... # 0xd + SeriousClassical : QRadioData.ProgramType = ... # 0xe + OtherMusic : QRadioData.ProgramType = ... # 0xf + Weather : QRadioData.ProgramType = ... # 0x10 + Finance : QRadioData.ProgramType = ... # 0x11 + ChildrensProgrammes : QRadioData.ProgramType = ... # 0x12 + SocialAffairs : QRadioData.ProgramType = ... # 0x13 + Religion : QRadioData.ProgramType = ... # 0x14 + PhoneIn : QRadioData.ProgramType = ... # 0x15 + Travel : QRadioData.ProgramType = ... # 0x16 + Leisure : QRadioData.ProgramType = ... # 0x17 + JazzMusic : QRadioData.ProgramType = ... # 0x18 + CountryMusic : QRadioData.ProgramType = ... # 0x19 + NationalMusic : QRadioData.ProgramType = ... # 0x1a + OldiesMusic : QRadioData.ProgramType = ... # 0x1b + FolkMusic : QRadioData.ProgramType = ... # 0x1c + Documentary : QRadioData.ProgramType = ... # 0x1d + AlarmTest : QRadioData.ProgramType = ... # 0x1e + Alarm : QRadioData.ProgramType = ... # 0x1f + Talk : QRadioData.ProgramType = ... # 0x20 + ClassicRock : QRadioData.ProgramType = ... # 0x21 + AdultHits : QRadioData.ProgramType = ... # 0x22 + SoftRock : QRadioData.ProgramType = ... # 0x23 + Top40 : QRadioData.ProgramType = ... # 0x24 + Soft : QRadioData.ProgramType = ... # 0x25 + Nostalgia : QRadioData.ProgramType = ... # 0x26 + Classical : QRadioData.ProgramType = ... # 0x27 + RhythmAndBlues : QRadioData.ProgramType = ... # 0x28 + SoftRhythmAndBlues : QRadioData.ProgramType = ... # 0x29 + Language : QRadioData.ProgramType = ... # 0x2a + ReligiousMusic : QRadioData.ProgramType = ... # 0x2b + ReligiousTalk : QRadioData.ProgramType = ... # 0x2c + Personality : QRadioData.ProgramType = ... # 0x2d + Public : QRadioData.ProgramType = ... # 0x2e + College : QRadioData.ProgramType = ... # 0x2f + + def __init__(self, mediaObject:PySide2.QtMultimedia.QMediaObject, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def availability(self) -> PySide2.QtMultimedia.QMultimedia.AvailabilityStatus: ... + def error(self) -> PySide2.QtMultimedia.QRadioData.Error: ... + def errorString(self) -> str: ... + def isAlternativeFrequenciesEnabled(self) -> bool: ... + def mediaObject(self) -> PySide2.QtMultimedia.QMediaObject: ... + def programType(self) -> PySide2.QtMultimedia.QRadioData.ProgramType: ... + def programTypeName(self) -> str: ... + def radioText(self) -> str: ... + def setAlternativeFrequenciesEnabled(self, enabled:bool) -> None: ... + def setMediaObject(self, arg__1:PySide2.QtMultimedia.QMediaObject) -> bool: ... + def stationId(self) -> str: ... + def stationName(self) -> str: ... + + +class QRadioDataControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def error(self) -> PySide2.QtMultimedia.QRadioData.Error: ... + def errorString(self) -> str: ... + def isAlternativeFrequenciesEnabled(self) -> bool: ... + def programType(self) -> PySide2.QtMultimedia.QRadioData.ProgramType: ... + def programTypeName(self) -> str: ... + def radioText(self) -> str: ... + def setAlternativeFrequenciesEnabled(self, enabled:bool) -> None: ... + def stationId(self) -> str: ... + def stationName(self) -> str: ... + + +class QRadioTuner(PySide2.QtMultimedia.QMediaObject): + AM : QRadioTuner = ... # 0x0 + ActiveState : QRadioTuner = ... # 0x0 + ForceStereo : QRadioTuner = ... # 0x0 + NoError : QRadioTuner = ... # 0x0 + SearchFast : QRadioTuner = ... # 0x0 + FM : QRadioTuner = ... # 0x1 + ForceMono : QRadioTuner = ... # 0x1 + ResourceError : QRadioTuner = ... # 0x1 + SearchGetStationId : QRadioTuner = ... # 0x1 + StoppedState : QRadioTuner = ... # 0x1 + Auto : QRadioTuner = ... # 0x2 + OpenError : QRadioTuner = ... # 0x2 + SW : QRadioTuner = ... # 0x2 + LW : QRadioTuner = ... # 0x3 + OutOfRangeError : QRadioTuner = ... # 0x3 + FM2 : QRadioTuner = ... # 0x4 + + class Band(object): + AM : QRadioTuner.Band = ... # 0x0 + FM : QRadioTuner.Band = ... # 0x1 + SW : QRadioTuner.Band = ... # 0x2 + LW : QRadioTuner.Band = ... # 0x3 + FM2 : QRadioTuner.Band = ... # 0x4 + + class Error(object): + NoError : QRadioTuner.Error = ... # 0x0 + ResourceError : QRadioTuner.Error = ... # 0x1 + OpenError : QRadioTuner.Error = ... # 0x2 + OutOfRangeError : QRadioTuner.Error = ... # 0x3 + + class SearchMode(object): + SearchFast : QRadioTuner.SearchMode = ... # 0x0 + SearchGetStationId : QRadioTuner.SearchMode = ... # 0x1 + + class State(object): + ActiveState : QRadioTuner.State = ... # 0x0 + StoppedState : QRadioTuner.State = ... # 0x1 + + class StereoMode(object): + ForceStereo : QRadioTuner.StereoMode = ... # 0x0 + ForceMono : QRadioTuner.StereoMode = ... # 0x1 + Auto : QRadioTuner.StereoMode = ... # 0x2 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def availability(self) -> PySide2.QtMultimedia.QMultimedia.AvailabilityStatus: ... + def band(self) -> PySide2.QtMultimedia.QRadioTuner.Band: ... + def cancelSearch(self) -> None: ... + def error(self) -> PySide2.QtMultimedia.QRadioTuner.Error: ... + def errorString(self) -> str: ... + def frequency(self) -> int: ... + def frequencyRange(self, band:PySide2.QtMultimedia.QRadioTuner.Band) -> typing.Tuple: ... + def frequencyStep(self, band:PySide2.QtMultimedia.QRadioTuner.Band) -> int: ... + def isAntennaConnected(self) -> bool: ... + def isBandSupported(self, b:PySide2.QtMultimedia.QRadioTuner.Band) -> bool: ... + def isMuted(self) -> bool: ... + def isSearching(self) -> bool: ... + def isStereo(self) -> bool: ... + def radioData(self) -> PySide2.QtMultimedia.QRadioData: ... + def searchAllStations(self, searchMode:PySide2.QtMultimedia.QRadioTuner.SearchMode=...) -> None: ... + def searchBackward(self) -> None: ... + def searchForward(self) -> None: ... + def setBand(self, band:PySide2.QtMultimedia.QRadioTuner.Band) -> None: ... + def setFrequency(self, frequency:int) -> None: ... + def setMuted(self, muted:bool) -> None: ... + def setStereoMode(self, mode:PySide2.QtMultimedia.QRadioTuner.StereoMode) -> None: ... + def setVolume(self, volume:int) -> None: ... + def signalStrength(self) -> int: ... + def start(self) -> None: ... + def state(self) -> PySide2.QtMultimedia.QRadioTuner.State: ... + def stereoMode(self) -> PySide2.QtMultimedia.QRadioTuner.StereoMode: ... + def stop(self) -> None: ... + def volume(self) -> int: ... + + +class QRadioTunerControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def band(self) -> PySide2.QtMultimedia.QRadioTuner.Band: ... + def cancelSearch(self) -> None: ... + def error(self) -> PySide2.QtMultimedia.QRadioTuner.Error: ... + def errorString(self) -> str: ... + def frequency(self) -> int: ... + def frequencyRange(self, b:PySide2.QtMultimedia.QRadioTuner.Band) -> typing.Tuple: ... + def frequencyStep(self, b:PySide2.QtMultimedia.QRadioTuner.Band) -> int: ... + def isAntennaConnected(self) -> bool: ... + def isBandSupported(self, b:PySide2.QtMultimedia.QRadioTuner.Band) -> bool: ... + def isMuted(self) -> bool: ... + def isSearching(self) -> bool: ... + def isStereo(self) -> bool: ... + def searchAllStations(self, searchMode:PySide2.QtMultimedia.QRadioTuner.SearchMode=...) -> None: ... + def searchBackward(self) -> None: ... + def searchForward(self) -> None: ... + def setBand(self, b:PySide2.QtMultimedia.QRadioTuner.Band) -> None: ... + def setFrequency(self, frequency:int) -> None: ... + def setMuted(self, muted:bool) -> None: ... + def setStereoMode(self, mode:PySide2.QtMultimedia.QRadioTuner.StereoMode) -> None: ... + def setVolume(self, volume:int) -> None: ... + def signalStrength(self) -> int: ... + def start(self) -> None: ... + def state(self) -> PySide2.QtMultimedia.QRadioTuner.State: ... + def stereoMode(self) -> PySide2.QtMultimedia.QRadioTuner.StereoMode: ... + def stop(self) -> None: ... + def volume(self) -> int: ... + + +class QSound(PySide2.QtCore.QObject): + Infinite : QSound = ... # -0x1 + + class Loop(object): + Infinite : QSound.Loop = ... # -0x1 + + def __init__(self, filename:str, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def fileName(self) -> str: ... + def isFinished(self) -> bool: ... + def loops(self) -> int: ... + def loopsRemaining(self) -> int: ... + @typing.overload + @staticmethod + def play(filename:str) -> None: ... + @typing.overload + def play(self) -> None: ... + def setLoops(self, arg__1:int) -> None: ... + def stop(self) -> None: ... + + +class QSoundEffect(PySide2.QtCore.QObject): + Infinite : QSoundEffect = ... # -0x2 + Null : QSoundEffect = ... # 0x0 + Loading : QSoundEffect = ... # 0x1 + Ready : QSoundEffect = ... # 0x2 + Error : QSoundEffect = ... # 0x3 + + class Loop(object): + Infinite : QSoundEffect.Loop = ... # -0x2 + + class Status(object): + Null : QSoundEffect.Status = ... # 0x0 + Loading : QSoundEffect.Status = ... # 0x1 + Ready : QSoundEffect.Status = ... # 0x2 + Error : QSoundEffect.Status = ... # 0x3 + + @typing.overload + def __init__(self, audioDevice:PySide2.QtMultimedia.QAudioDeviceInfo, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def category(self) -> str: ... + def isLoaded(self) -> bool: ... + def isMuted(self) -> bool: ... + def isPlaying(self) -> bool: ... + def loopCount(self) -> int: ... + def loopsRemaining(self) -> int: ... + def play(self) -> None: ... + def setCategory(self, category:str) -> None: ... + def setLoopCount(self, loopCount:int) -> None: ... + def setMuted(self, muted:bool) -> None: ... + def setSource(self, url:PySide2.QtCore.QUrl) -> None: ... + def setVolume(self, volume:float) -> None: ... + def source(self) -> PySide2.QtCore.QUrl: ... + def status(self) -> PySide2.QtMultimedia.QSoundEffect.Status: ... + def stop(self) -> None: ... + @staticmethod + def supportedMimeTypes() -> typing.List: ... + def volume(self) -> float: ... + + +class QVideoDeviceSelectorControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def defaultDevice(self) -> int: ... + def deviceCount(self) -> int: ... + def deviceDescription(self, index:int) -> str: ... + def deviceName(self, index:int) -> str: ... + def selectedDevice(self) -> int: ... + def setSelectedDevice(self, index:int) -> None: ... + + +class QVideoEncoderSettings(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtMultimedia.QVideoEncoderSettings) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def bitRate(self) -> int: ... + def codec(self) -> str: ... + def encodingMode(self) -> PySide2.QtMultimedia.QMultimedia.EncodingMode: ... + def encodingOption(self, option:str) -> typing.Any: ... + def encodingOptions(self) -> typing.Dict: ... + def frameRate(self) -> float: ... + def isNull(self) -> bool: ... + def quality(self) -> PySide2.QtMultimedia.QMultimedia.EncodingQuality: ... + def resolution(self) -> PySide2.QtCore.QSize: ... + def setBitRate(self, bitrate:int) -> None: ... + def setCodec(self, arg__1:str) -> None: ... + def setEncodingMode(self, arg__1:PySide2.QtMultimedia.QMultimedia.EncodingMode) -> None: ... + def setEncodingOption(self, option:str, value:typing.Any) -> None: ... + def setEncodingOptions(self, options:typing.Dict) -> None: ... + def setFrameRate(self, rate:float) -> None: ... + def setQuality(self, quality:PySide2.QtMultimedia.QMultimedia.EncodingQuality) -> None: ... + @typing.overload + def setResolution(self, arg__1:PySide2.QtCore.QSize) -> None: ... + @typing.overload + def setResolution(self, width:int, height:int) -> None: ... + + +class QVideoEncoderSettingsControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def setVideoSettings(self, settings:PySide2.QtMultimedia.QVideoEncoderSettings) -> None: ... + def supportedVideoCodecs(self) -> typing.List: ... + def videoCodecDescription(self, codec:str) -> str: ... + def videoSettings(self) -> PySide2.QtMultimedia.QVideoEncoderSettings: ... + + +class QVideoFilterRunnable(Shiboken.Object): + LastInChain : QVideoFilterRunnable = ... # 0x1 + + class RunFlag(object): + LastInChain : QVideoFilterRunnable.RunFlag = ... # 0x1 + + class RunFlags(object): ... + + def __init__(self) -> None: ... + + def run(self, input:PySide2.QtMultimedia.QVideoFrame, surfaceFormat:PySide2.QtMultimedia.QVideoSurfaceFormat, flags:PySide2.QtMultimedia.QVideoFilterRunnable.RunFlags) -> PySide2.QtMultimedia.QVideoFrame: ... + + +class QVideoFrame(Shiboken.Object): + Format_Invalid : QVideoFrame = ... # 0x0 + ProgressiveFrame : QVideoFrame = ... # 0x0 + Format_ARGB32 : QVideoFrame = ... # 0x1 + TopField : QVideoFrame = ... # 0x1 + BottomField : QVideoFrame = ... # 0x2 + Format_ARGB32_Premultiplied: QVideoFrame = ... # 0x2 + Format_RGB32 : QVideoFrame = ... # 0x3 + InterlacedFrame : QVideoFrame = ... # 0x3 + Format_RGB24 : QVideoFrame = ... # 0x4 + Format_RGB565 : QVideoFrame = ... # 0x5 + Format_RGB555 : QVideoFrame = ... # 0x6 + Format_ARGB8565_Premultiplied: QVideoFrame = ... # 0x7 + Format_BGRA32 : QVideoFrame = ... # 0x8 + Format_BGRA32_Premultiplied: QVideoFrame = ... # 0x9 + Format_BGR32 : QVideoFrame = ... # 0xa + Format_BGR24 : QVideoFrame = ... # 0xb + Format_BGR565 : QVideoFrame = ... # 0xc + Format_BGR555 : QVideoFrame = ... # 0xd + Format_BGRA5658_Premultiplied: QVideoFrame = ... # 0xe + Format_AYUV444 : QVideoFrame = ... # 0xf + Format_AYUV444_Premultiplied: QVideoFrame = ... # 0x10 + Format_YUV444 : QVideoFrame = ... # 0x11 + Format_YUV420P : QVideoFrame = ... # 0x12 + Format_YV12 : QVideoFrame = ... # 0x13 + Format_UYVY : QVideoFrame = ... # 0x14 + Format_YUYV : QVideoFrame = ... # 0x15 + Format_NV12 : QVideoFrame = ... # 0x16 + Format_NV21 : QVideoFrame = ... # 0x17 + Format_IMC1 : QVideoFrame = ... # 0x18 + Format_IMC2 : QVideoFrame = ... # 0x19 + Format_IMC3 : QVideoFrame = ... # 0x1a + Format_IMC4 : QVideoFrame = ... # 0x1b + Format_Y8 : QVideoFrame = ... # 0x1c + Format_Y16 : QVideoFrame = ... # 0x1d + Format_Jpeg : QVideoFrame = ... # 0x1e + Format_CameraRaw : QVideoFrame = ... # 0x1f + Format_AdobeDng : QVideoFrame = ... # 0x20 + Format_ABGR32 : QVideoFrame = ... # 0x21 + Format_YUV422P : QVideoFrame = ... # 0x22 + NPixelFormats : QVideoFrame = ... # 0x23 + Format_User : QVideoFrame = ... # 0x3e8 + + class FieldType(object): + ProgressiveFrame : QVideoFrame.FieldType = ... # 0x0 + TopField : QVideoFrame.FieldType = ... # 0x1 + BottomField : QVideoFrame.FieldType = ... # 0x2 + InterlacedFrame : QVideoFrame.FieldType = ... # 0x3 + + class PixelFormat(object): + Format_Invalid : QVideoFrame.PixelFormat = ... # 0x0 + Format_ARGB32 : QVideoFrame.PixelFormat = ... # 0x1 + Format_ARGB32_Premultiplied: QVideoFrame.PixelFormat = ... # 0x2 + Format_RGB32 : QVideoFrame.PixelFormat = ... # 0x3 + Format_RGB24 : QVideoFrame.PixelFormat = ... # 0x4 + Format_RGB565 : QVideoFrame.PixelFormat = ... # 0x5 + Format_RGB555 : QVideoFrame.PixelFormat = ... # 0x6 + Format_ARGB8565_Premultiplied: QVideoFrame.PixelFormat = ... # 0x7 + Format_BGRA32 : QVideoFrame.PixelFormat = ... # 0x8 + Format_BGRA32_Premultiplied: QVideoFrame.PixelFormat = ... # 0x9 + Format_BGR32 : QVideoFrame.PixelFormat = ... # 0xa + Format_BGR24 : QVideoFrame.PixelFormat = ... # 0xb + Format_BGR565 : QVideoFrame.PixelFormat = ... # 0xc + Format_BGR555 : QVideoFrame.PixelFormat = ... # 0xd + Format_BGRA5658_Premultiplied: QVideoFrame.PixelFormat = ... # 0xe + Format_AYUV444 : QVideoFrame.PixelFormat = ... # 0xf + Format_AYUV444_Premultiplied: QVideoFrame.PixelFormat = ... # 0x10 + Format_YUV444 : QVideoFrame.PixelFormat = ... # 0x11 + Format_YUV420P : QVideoFrame.PixelFormat = ... # 0x12 + Format_YV12 : QVideoFrame.PixelFormat = ... # 0x13 + Format_UYVY : QVideoFrame.PixelFormat = ... # 0x14 + Format_YUYV : QVideoFrame.PixelFormat = ... # 0x15 + Format_NV12 : QVideoFrame.PixelFormat = ... # 0x16 + Format_NV21 : QVideoFrame.PixelFormat = ... # 0x17 + Format_IMC1 : QVideoFrame.PixelFormat = ... # 0x18 + Format_IMC2 : QVideoFrame.PixelFormat = ... # 0x19 + Format_IMC3 : QVideoFrame.PixelFormat = ... # 0x1a + Format_IMC4 : QVideoFrame.PixelFormat = ... # 0x1b + Format_Y8 : QVideoFrame.PixelFormat = ... # 0x1c + Format_Y16 : QVideoFrame.PixelFormat = ... # 0x1d + Format_Jpeg : QVideoFrame.PixelFormat = ... # 0x1e + Format_CameraRaw : QVideoFrame.PixelFormat = ... # 0x1f + Format_AdobeDng : QVideoFrame.PixelFormat = ... # 0x20 + Format_ABGR32 : QVideoFrame.PixelFormat = ... # 0x21 + Format_YUV422P : QVideoFrame.PixelFormat = ... # 0x22 + NPixelFormats : QVideoFrame.PixelFormat = ... # 0x23 + Format_User : QVideoFrame.PixelFormat = ... # 0x3e8 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, buffer:PySide2.QtMultimedia.QAbstractVideoBuffer, size:PySide2.QtCore.QSize, format:PySide2.QtMultimedia.QVideoFrame.PixelFormat) -> None: ... + @typing.overload + def __init__(self, bytes:int, size:PySide2.QtCore.QSize, bytesPerLine:int, format:PySide2.QtMultimedia.QVideoFrame.PixelFormat) -> None: ... + @typing.overload + def __init__(self, image:PySide2.QtGui.QImage) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtMultimedia.QVideoFrame) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def availableMetaData(self) -> typing.Dict: ... + def bits(self) -> bytes: ... + def buffer(self) -> PySide2.QtMultimedia.QAbstractVideoBuffer: ... + @typing.overload + def bytesPerLine(self) -> int: ... + @typing.overload + def bytesPerLine(self, plane:int) -> int: ... + def endTime(self) -> int: ... + def fieldType(self) -> PySide2.QtMultimedia.QVideoFrame.FieldType: ... + def handle(self) -> typing.Any: ... + def handleType(self) -> PySide2.QtMultimedia.QAbstractVideoBuffer.HandleType: ... + def height(self) -> int: ... + def image(self) -> PySide2.QtGui.QImage: ... + @staticmethod + def imageFormatFromPixelFormat(format:PySide2.QtMultimedia.QVideoFrame.PixelFormat) -> PySide2.QtGui.QImage.Format: ... + def isMapped(self) -> bool: ... + def isReadable(self) -> bool: ... + def isValid(self) -> bool: ... + def isWritable(self) -> bool: ... + def map(self, mode:PySide2.QtMultimedia.QAbstractVideoBuffer.MapMode) -> bool: ... + def mapMode(self) -> PySide2.QtMultimedia.QAbstractVideoBuffer.MapMode: ... + def mappedBytes(self) -> int: ... + def metaData(self, key:str) -> typing.Any: ... + def pixelFormat(self) -> PySide2.QtMultimedia.QVideoFrame.PixelFormat: ... + @staticmethod + def pixelFormatFromImageFormat(format:PySide2.QtGui.QImage.Format) -> PySide2.QtMultimedia.QVideoFrame.PixelFormat: ... + def planeCount(self) -> int: ... + def setEndTime(self, time:int) -> None: ... + def setFieldType(self, arg__1:PySide2.QtMultimedia.QVideoFrame.FieldType) -> None: ... + def setMetaData(self, key:str, value:typing.Any) -> None: ... + def setStartTime(self, time:int) -> None: ... + def size(self) -> PySide2.QtCore.QSize: ... + def startTime(self) -> int: ... + def unmap(self) -> None: ... + def width(self) -> int: ... + + +class QVideoProbe(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def isActive(self) -> bool: ... + @typing.overload + def setSource(self, source:PySide2.QtMultimedia.QMediaObject) -> bool: ... + @typing.overload + def setSource(self, source:PySide2.QtMultimedia.QMediaRecorder) -> bool: ... + + +class QVideoRendererControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def setSurface(self, surface:PySide2.QtMultimedia.QAbstractVideoSurface) -> None: ... + def surface(self) -> PySide2.QtMultimedia.QAbstractVideoSurface: ... + + +class QVideoSurfaceFormat(Shiboken.Object): + TopToBottom : QVideoSurfaceFormat = ... # 0x0 + YCbCr_Undefined : QVideoSurfaceFormat = ... # 0x0 + BottomToTop : QVideoSurfaceFormat = ... # 0x1 + YCbCr_BT601 : QVideoSurfaceFormat = ... # 0x1 + YCbCr_BT709 : QVideoSurfaceFormat = ... # 0x2 + YCbCr_xvYCC601 : QVideoSurfaceFormat = ... # 0x3 + YCbCr_xvYCC709 : QVideoSurfaceFormat = ... # 0x4 + YCbCr_JPEG : QVideoSurfaceFormat = ... # 0x5 + YCbCr_CustomMatrix : QVideoSurfaceFormat = ... # 0x6 + + class Direction(object): + TopToBottom : QVideoSurfaceFormat.Direction = ... # 0x0 + BottomToTop : QVideoSurfaceFormat.Direction = ... # 0x1 + + class YCbCrColorSpace(object): + YCbCr_Undefined : QVideoSurfaceFormat.YCbCrColorSpace = ... # 0x0 + YCbCr_BT601 : QVideoSurfaceFormat.YCbCrColorSpace = ... # 0x1 + YCbCr_BT709 : QVideoSurfaceFormat.YCbCrColorSpace = ... # 0x2 + YCbCr_xvYCC601 : QVideoSurfaceFormat.YCbCrColorSpace = ... # 0x3 + YCbCr_xvYCC709 : QVideoSurfaceFormat.YCbCrColorSpace = ... # 0x4 + YCbCr_JPEG : QVideoSurfaceFormat.YCbCrColorSpace = ... # 0x5 + YCbCr_CustomMatrix : QVideoSurfaceFormat.YCbCrColorSpace = ... # 0x6 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, format:PySide2.QtMultimedia.QVideoSurfaceFormat) -> None: ... + @typing.overload + def __init__(self, size:PySide2.QtCore.QSize, pixelFormat:PySide2.QtMultimedia.QVideoFrame.PixelFormat, handleType:PySide2.QtMultimedia.QAbstractVideoBuffer.HandleType=...) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def frameHeight(self) -> int: ... + def frameRate(self) -> float: ... + def frameSize(self) -> PySide2.QtCore.QSize: ... + def frameWidth(self) -> int: ... + def handleType(self) -> PySide2.QtMultimedia.QAbstractVideoBuffer.HandleType: ... + def isMirrored(self) -> bool: ... + def isValid(self) -> bool: ... + def pixelAspectRatio(self) -> PySide2.QtCore.QSize: ... + def pixelFormat(self) -> PySide2.QtMultimedia.QVideoFrame.PixelFormat: ... + def property(self, name:bytes) -> typing.Any: ... + def propertyNames(self) -> typing.List: ... + def scanLineDirection(self) -> PySide2.QtMultimedia.QVideoSurfaceFormat.Direction: ... + def setFrameRate(self, rate:float) -> None: ... + @typing.overload + def setFrameSize(self, size:PySide2.QtCore.QSize) -> None: ... + @typing.overload + def setFrameSize(self, width:int, height:int) -> None: ... + def setMirrored(self, mirrored:bool) -> None: ... + @typing.overload + def setPixelAspectRatio(self, ratio:PySide2.QtCore.QSize) -> None: ... + @typing.overload + def setPixelAspectRatio(self, width:int, height:int) -> None: ... + def setProperty(self, name:bytes, value:typing.Any) -> None: ... + def setScanLineDirection(self, direction:PySide2.QtMultimedia.QVideoSurfaceFormat.Direction) -> None: ... + def setViewport(self, viewport:PySide2.QtCore.QRect) -> None: ... + def setYCbCrColorSpace(self, colorSpace:PySide2.QtMultimedia.QVideoSurfaceFormat.YCbCrColorSpace) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def viewport(self) -> PySide2.QtCore.QRect: ... + def yCbCrColorSpace(self) -> PySide2.QtMultimedia.QVideoSurfaceFormat.YCbCrColorSpace: ... + + +class QVideoWindowControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def aspectRatioMode(self) -> PySide2.QtCore.Qt.AspectRatioMode: ... + def brightness(self) -> int: ... + def contrast(self) -> int: ... + def displayRect(self) -> PySide2.QtCore.QRect: ... + def hue(self) -> int: ... + def isFullScreen(self) -> bool: ... + def nativeSize(self) -> PySide2.QtCore.QSize: ... + def repaint(self) -> None: ... + def saturation(self) -> int: ... + def setAspectRatioMode(self, mode:PySide2.QtCore.Qt.AspectRatioMode) -> None: ... + def setBrightness(self, brightness:int) -> None: ... + def setContrast(self, contrast:int) -> None: ... + def setDisplayRect(self, rect:PySide2.QtCore.QRect) -> None: ... + def setFullScreen(self, fullScreen:bool) -> None: ... + def setHue(self, hue:int) -> None: ... + def setSaturation(self, saturation:int) -> None: ... + def setWinId(self, id:int) -> None: ... + def winId(self) -> int: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtMultimediaWidgets.pyd b/venv/Lib/site-packages/PySide2/QtMultimediaWidgets.pyd new file mode 100644 index 0000000..4801679 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtMultimediaWidgets.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtMultimediaWidgets.pyi b/venv/Lib/site-packages/PySide2/QtMultimediaWidgets.pyi new file mode 100644 index 0000000..1e668dc --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtMultimediaWidgets.pyi @@ -0,0 +1,141 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtMultimediaWidgets, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtMultimediaWidgets +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtGui +import PySide2.QtWidgets +import PySide2.QtMultimedia +import PySide2.QtMultimediaWidgets + + +class QCameraViewfinder(PySide2.QtMultimediaWidgets.QVideoWidget): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def mediaObject(self) -> PySide2.QtMultimedia.QMediaObject: ... + def setMediaObject(self, object:PySide2.QtMultimedia.QMediaObject) -> bool: ... + + +class QGraphicsVideoItem(PySide2.QtWidgets.QGraphicsObject, PySide2.QtMultimedia.QMediaBindableInterface): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=...) -> None: ... + + def aspectRatioMode(self) -> PySide2.QtCore.Qt.AspectRatioMode: ... + def boundingRect(self) -> PySide2.QtCore.QRectF: ... + def itemChange(self, change:PySide2.QtWidgets.QGraphicsItem.GraphicsItemChange, value:typing.Any) -> typing.Any: ... + def mediaObject(self) -> PySide2.QtMultimedia.QMediaObject: ... + def nativeSize(self) -> PySide2.QtCore.QSizeF: ... + def offset(self) -> PySide2.QtCore.QPointF: ... + def paint(self, painter:PySide2.QtGui.QPainter, option:PySide2.QtWidgets.QStyleOptionGraphicsItem, widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + def setAspectRatioMode(self, mode:PySide2.QtCore.Qt.AspectRatioMode) -> None: ... + def setMediaObject(self, object:PySide2.QtMultimedia.QMediaObject) -> bool: ... + def setOffset(self, offset:PySide2.QtCore.QPointF) -> None: ... + def setSize(self, size:PySide2.QtCore.QSizeF) -> None: ... + def size(self) -> PySide2.QtCore.QSizeF: ... + def timerEvent(self, event:PySide2.QtCore.QTimerEvent) -> None: ... + def videoSurface(self) -> PySide2.QtMultimedia.QAbstractVideoSurface: ... + + +class QVideoWidget(PySide2.QtWidgets.QWidget, PySide2.QtMultimedia.QMediaBindableInterface): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def aspectRatioMode(self) -> PySide2.QtCore.Qt.AspectRatioMode: ... + def brightness(self) -> int: ... + def contrast(self) -> int: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def hideEvent(self, event:PySide2.QtGui.QHideEvent) -> None: ... + def hue(self) -> int: ... + def mediaObject(self) -> PySide2.QtMultimedia.QMediaObject: ... + def moveEvent(self, event:PySide2.QtGui.QMoveEvent) -> None: ... + def nativeEvent(self, eventType:PySide2.QtCore.QByteArray, message:int) -> typing.Tuple: ... + def paintEvent(self, event:PySide2.QtGui.QPaintEvent) -> None: ... + def resizeEvent(self, event:PySide2.QtGui.QResizeEvent) -> None: ... + def saturation(self) -> int: ... + def setAspectRatioMode(self, mode:PySide2.QtCore.Qt.AspectRatioMode) -> None: ... + def setBrightness(self, brightness:int) -> None: ... + def setContrast(self, contrast:int) -> None: ... + def setFullScreen(self, fullScreen:bool) -> None: ... + def setHue(self, hue:int) -> None: ... + def setMediaObject(self, object:PySide2.QtMultimedia.QMediaObject) -> bool: ... + def setSaturation(self, saturation:int) -> None: ... + def showEvent(self, event:PySide2.QtGui.QShowEvent) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def videoSurface(self) -> PySide2.QtMultimedia.QAbstractVideoSurface: ... + + +class QVideoWidgetControl(PySide2.QtMultimedia.QMediaControl): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def aspectRatioMode(self) -> PySide2.QtCore.Qt.AspectRatioMode: ... + def brightness(self) -> int: ... + def contrast(self) -> int: ... + def hue(self) -> int: ... + def isFullScreen(self) -> bool: ... + def saturation(self) -> int: ... + def setAspectRatioMode(self, mode:PySide2.QtCore.Qt.AspectRatioMode) -> None: ... + def setBrightness(self, brightness:int) -> None: ... + def setContrast(self, contrast:int) -> None: ... + def setFullScreen(self, fullScreen:bool) -> None: ... + def setHue(self, hue:int) -> None: ... + def setSaturation(self, saturation:int) -> None: ... + def videoWidget(self) -> PySide2.QtWidgets.QWidget: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtNetwork.pyd b/venv/Lib/site-packages/PySide2/QtNetwork.pyd new file mode 100644 index 0000000..ce187eb Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtNetwork.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtNetwork.pyi b/venv/Lib/site-packages/PySide2/QtNetwork.pyi new file mode 100644 index 0000000..2b39f20 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtNetwork.pyi @@ -0,0 +1,2422 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtNetwork, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtNetwork +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtNetwork + + +class QAbstractNetworkCache(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def cacheSize(self) -> int: ... + def clear(self) -> None: ... + def data(self, url:PySide2.QtCore.QUrl) -> PySide2.QtCore.QIODevice: ... + def insert(self, device:PySide2.QtCore.QIODevice) -> None: ... + def metaData(self, url:PySide2.QtCore.QUrl) -> PySide2.QtNetwork.QNetworkCacheMetaData: ... + def prepare(self, metaData:PySide2.QtNetwork.QNetworkCacheMetaData) -> PySide2.QtCore.QIODevice: ... + def remove(self, url:PySide2.QtCore.QUrl) -> bool: ... + def updateMetaData(self, metaData:PySide2.QtNetwork.QNetworkCacheMetaData) -> None: ... + + +class QAbstractSocket(PySide2.QtCore.QIODevice): + UnknownNetworkLayerProtocol: QAbstractSocket = ... # -0x1 + UnknownSocketError : QAbstractSocket = ... # -0x1 + UnknownSocketType : QAbstractSocket = ... # -0x1 + ConnectionRefusedError : QAbstractSocket = ... # 0x0 + DefaultForPlatform : QAbstractSocket = ... # 0x0 + IPv4Protocol : QAbstractSocket = ... # 0x0 + LowDelayOption : QAbstractSocket = ... # 0x0 + PauseNever : QAbstractSocket = ... # 0x0 + TcpSocket : QAbstractSocket = ... # 0x0 + UnconnectedState : QAbstractSocket = ... # 0x0 + HostLookupState : QAbstractSocket = ... # 0x1 + IPv6Protocol : QAbstractSocket = ... # 0x1 + KeepAliveOption : QAbstractSocket = ... # 0x1 + PauseOnSslErrors : QAbstractSocket = ... # 0x1 + RemoteHostClosedError : QAbstractSocket = ... # 0x1 + ShareAddress : QAbstractSocket = ... # 0x1 + UdpSocket : QAbstractSocket = ... # 0x1 + AnyIPProtocol : QAbstractSocket = ... # 0x2 + ConnectingState : QAbstractSocket = ... # 0x2 + DontShareAddress : QAbstractSocket = ... # 0x2 + HostNotFoundError : QAbstractSocket = ... # 0x2 + MulticastTtlOption : QAbstractSocket = ... # 0x2 + SctpSocket : QAbstractSocket = ... # 0x2 + ConnectedState : QAbstractSocket = ... # 0x3 + MulticastLoopbackOption : QAbstractSocket = ... # 0x3 + SocketAccessError : QAbstractSocket = ... # 0x3 + BoundState : QAbstractSocket = ... # 0x4 + ReuseAddressHint : QAbstractSocket = ... # 0x4 + SocketResourceError : QAbstractSocket = ... # 0x4 + TypeOfServiceOption : QAbstractSocket = ... # 0x4 + ListeningState : QAbstractSocket = ... # 0x5 + SendBufferSizeSocketOption: QAbstractSocket = ... # 0x5 + SocketTimeoutError : QAbstractSocket = ... # 0x5 + ClosingState : QAbstractSocket = ... # 0x6 + DatagramTooLargeError : QAbstractSocket = ... # 0x6 + ReceiveBufferSizeSocketOption: QAbstractSocket = ... # 0x6 + NetworkError : QAbstractSocket = ... # 0x7 + PathMtuSocketOption : QAbstractSocket = ... # 0x7 + AddressInUseError : QAbstractSocket = ... # 0x8 + SocketAddressNotAvailableError: QAbstractSocket = ... # 0x9 + UnsupportedSocketOperationError: QAbstractSocket = ... # 0xa + UnfinishedSocketOperationError: QAbstractSocket = ... # 0xb + ProxyAuthenticationRequiredError: QAbstractSocket = ... # 0xc + SslHandshakeFailedError : QAbstractSocket = ... # 0xd + ProxyConnectionRefusedError: QAbstractSocket = ... # 0xe + ProxyConnectionClosedError: QAbstractSocket = ... # 0xf + ProxyConnectionTimeoutError: QAbstractSocket = ... # 0x10 + ProxyNotFoundError : QAbstractSocket = ... # 0x11 + ProxyProtocolError : QAbstractSocket = ... # 0x12 + OperationError : QAbstractSocket = ... # 0x13 + SslInternalError : QAbstractSocket = ... # 0x14 + SslInvalidUserDataError : QAbstractSocket = ... # 0x15 + TemporaryError : QAbstractSocket = ... # 0x16 + + class BindFlag(object): + DefaultForPlatform : QAbstractSocket.BindFlag = ... # 0x0 + ShareAddress : QAbstractSocket.BindFlag = ... # 0x1 + DontShareAddress : QAbstractSocket.BindFlag = ... # 0x2 + ReuseAddressHint : QAbstractSocket.BindFlag = ... # 0x4 + + class BindMode(object): ... + + class NetworkLayerProtocol(object): + UnknownNetworkLayerProtocol: QAbstractSocket.NetworkLayerProtocol = ... # -0x1 + IPv4Protocol : QAbstractSocket.NetworkLayerProtocol = ... # 0x0 + IPv6Protocol : QAbstractSocket.NetworkLayerProtocol = ... # 0x1 + AnyIPProtocol : QAbstractSocket.NetworkLayerProtocol = ... # 0x2 + + class PauseMode(object): + PauseNever : QAbstractSocket.PauseMode = ... # 0x0 + PauseOnSslErrors : QAbstractSocket.PauseMode = ... # 0x1 + + class PauseModes(object): ... + + class SocketError(object): + UnknownSocketError : QAbstractSocket.SocketError = ... # -0x1 + ConnectionRefusedError : QAbstractSocket.SocketError = ... # 0x0 + RemoteHostClosedError : QAbstractSocket.SocketError = ... # 0x1 + HostNotFoundError : QAbstractSocket.SocketError = ... # 0x2 + SocketAccessError : QAbstractSocket.SocketError = ... # 0x3 + SocketResourceError : QAbstractSocket.SocketError = ... # 0x4 + SocketTimeoutError : QAbstractSocket.SocketError = ... # 0x5 + DatagramTooLargeError : QAbstractSocket.SocketError = ... # 0x6 + NetworkError : QAbstractSocket.SocketError = ... # 0x7 + AddressInUseError : QAbstractSocket.SocketError = ... # 0x8 + SocketAddressNotAvailableError: QAbstractSocket.SocketError = ... # 0x9 + UnsupportedSocketOperationError: QAbstractSocket.SocketError = ... # 0xa + UnfinishedSocketOperationError: QAbstractSocket.SocketError = ... # 0xb + ProxyAuthenticationRequiredError: QAbstractSocket.SocketError = ... # 0xc + SslHandshakeFailedError : QAbstractSocket.SocketError = ... # 0xd + ProxyConnectionRefusedError: QAbstractSocket.SocketError = ... # 0xe + ProxyConnectionClosedError: QAbstractSocket.SocketError = ... # 0xf + ProxyConnectionTimeoutError: QAbstractSocket.SocketError = ... # 0x10 + ProxyNotFoundError : QAbstractSocket.SocketError = ... # 0x11 + ProxyProtocolError : QAbstractSocket.SocketError = ... # 0x12 + OperationError : QAbstractSocket.SocketError = ... # 0x13 + SslInternalError : QAbstractSocket.SocketError = ... # 0x14 + SslInvalidUserDataError : QAbstractSocket.SocketError = ... # 0x15 + TemporaryError : QAbstractSocket.SocketError = ... # 0x16 + + class SocketOption(object): + LowDelayOption : QAbstractSocket.SocketOption = ... # 0x0 + KeepAliveOption : QAbstractSocket.SocketOption = ... # 0x1 + MulticastTtlOption : QAbstractSocket.SocketOption = ... # 0x2 + MulticastLoopbackOption : QAbstractSocket.SocketOption = ... # 0x3 + TypeOfServiceOption : QAbstractSocket.SocketOption = ... # 0x4 + SendBufferSizeSocketOption: QAbstractSocket.SocketOption = ... # 0x5 + ReceiveBufferSizeSocketOption: QAbstractSocket.SocketOption = ... # 0x6 + PathMtuSocketOption : QAbstractSocket.SocketOption = ... # 0x7 + + class SocketState(object): + UnconnectedState : QAbstractSocket.SocketState = ... # 0x0 + HostLookupState : QAbstractSocket.SocketState = ... # 0x1 + ConnectingState : QAbstractSocket.SocketState = ... # 0x2 + ConnectedState : QAbstractSocket.SocketState = ... # 0x3 + BoundState : QAbstractSocket.SocketState = ... # 0x4 + ListeningState : QAbstractSocket.SocketState = ... # 0x5 + ClosingState : QAbstractSocket.SocketState = ... # 0x6 + + class SocketType(object): + UnknownSocketType : QAbstractSocket.SocketType = ... # -0x1 + TcpSocket : QAbstractSocket.SocketType = ... # 0x0 + UdpSocket : QAbstractSocket.SocketType = ... # 0x1 + SctpSocket : QAbstractSocket.SocketType = ... # 0x2 + + def __init__(self, socketType:PySide2.QtNetwork.QAbstractSocket.SocketType, parent:PySide2.QtCore.QObject) -> None: ... + + def abort(self) -> None: ... + def atEnd(self) -> bool: ... + @typing.overload + def bind(self, address:PySide2.QtNetwork.QHostAddress, port:int=..., mode:PySide2.QtNetwork.QAbstractSocket.BindMode=...) -> bool: ... + @typing.overload + def bind(self, port:int=..., mode:PySide2.QtNetwork.QAbstractSocket.BindMode=...) -> bool: ... + def bytesAvailable(self) -> int: ... + def bytesToWrite(self) -> int: ... + def canReadLine(self) -> bool: ... + def close(self) -> None: ... + @typing.overload + def connectToHost(self, address:PySide2.QtNetwork.QHostAddress, port:int, mode:PySide2.QtCore.QIODevice.OpenMode=...) -> None: ... + @typing.overload + def connectToHost(self, hostName:str, port:int, mode:PySide2.QtCore.QIODevice.OpenMode=..., protocol:PySide2.QtNetwork.QAbstractSocket.NetworkLayerProtocol=...) -> None: ... + def disconnectFromHost(self) -> None: ... + def error(self) -> PySide2.QtNetwork.QAbstractSocket.SocketError: ... + def flush(self) -> bool: ... + def isSequential(self) -> bool: ... + def isValid(self) -> bool: ... + def localAddress(self) -> PySide2.QtNetwork.QHostAddress: ... + def localPort(self) -> int: ... + def pauseMode(self) -> PySide2.QtNetwork.QAbstractSocket.PauseModes: ... + def peerAddress(self) -> PySide2.QtNetwork.QHostAddress: ... + def peerName(self) -> str: ... + def peerPort(self) -> int: ... + def protocolTag(self) -> str: ... + def proxy(self) -> PySide2.QtNetwork.QNetworkProxy: ... + def readBufferSize(self) -> int: ... + def readData(self, data:bytes, maxlen:int) -> int: ... + def readLineData(self, data:bytes, maxlen:int) -> int: ... + def resume(self) -> None: ... + def setLocalAddress(self, address:PySide2.QtNetwork.QHostAddress) -> None: ... + def setLocalPort(self, port:int) -> None: ... + def setPauseMode(self, pauseMode:PySide2.QtNetwork.QAbstractSocket.PauseModes) -> None: ... + def setPeerAddress(self, address:PySide2.QtNetwork.QHostAddress) -> None: ... + def setPeerName(self, name:str) -> None: ... + def setPeerPort(self, port:int) -> None: ... + def setProtocolTag(self, tag:str) -> None: ... + def setProxy(self, networkProxy:PySide2.QtNetwork.QNetworkProxy) -> None: ... + def setReadBufferSize(self, size:int) -> None: ... + def setSocketDescriptor(self, socketDescriptor:int, state:PySide2.QtNetwork.QAbstractSocket.SocketState=..., openMode:PySide2.QtCore.QIODevice.OpenMode=...) -> bool: ... + def setSocketError(self, socketError:PySide2.QtNetwork.QAbstractSocket.SocketError) -> None: ... + def setSocketOption(self, option:PySide2.QtNetwork.QAbstractSocket.SocketOption, value:typing.Any) -> None: ... + def setSocketState(self, state:PySide2.QtNetwork.QAbstractSocket.SocketState) -> None: ... + def socketDescriptor(self) -> int: ... + def socketOption(self, option:PySide2.QtNetwork.QAbstractSocket.SocketOption) -> typing.Any: ... + def socketType(self) -> PySide2.QtNetwork.QAbstractSocket.SocketType: ... + def state(self) -> PySide2.QtNetwork.QAbstractSocket.SocketState: ... + def waitForBytesWritten(self, msecs:int=...) -> bool: ... + def waitForConnected(self, msecs:int=...) -> bool: ... + def waitForDisconnected(self, msecs:int=...) -> bool: ... + def waitForReadyRead(self, msecs:int=...) -> bool: ... + def writeData(self, data:bytes, len:int) -> int: ... + + +class QAuthenticator(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtNetwork.QAuthenticator) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def isNull(self) -> bool: ... + def option(self, opt:str) -> typing.Any: ... + def options(self) -> typing.Dict: ... + def password(self) -> str: ... + def realm(self) -> str: ... + def setOption(self, opt:str, value:typing.Any) -> None: ... + def setPassword(self, password:str) -> None: ... + def setRealm(self, realm:str) -> None: ... + def setUser(self, user:str) -> None: ... + def user(self) -> str: ... + + +class QDnsDomainNameRecord(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtNetwork.QDnsDomainNameRecord) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def name(self) -> str: ... + def swap(self, other:PySide2.QtNetwork.QDnsDomainNameRecord) -> None: ... + def timeToLive(self) -> int: ... + def value(self) -> str: ... + + +class QDnsHostAddressRecord(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtNetwork.QDnsHostAddressRecord) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def name(self) -> str: ... + def swap(self, other:PySide2.QtNetwork.QDnsHostAddressRecord) -> None: ... + def timeToLive(self) -> int: ... + def value(self) -> PySide2.QtNetwork.QHostAddress: ... + + +class QDnsLookup(PySide2.QtCore.QObject): + NoError : QDnsLookup = ... # 0x0 + A : QDnsLookup = ... # 0x1 + ResolverError : QDnsLookup = ... # 0x1 + NS : QDnsLookup = ... # 0x2 + OperationCancelledError : QDnsLookup = ... # 0x2 + InvalidRequestError : QDnsLookup = ... # 0x3 + InvalidReplyError : QDnsLookup = ... # 0x4 + CNAME : QDnsLookup = ... # 0x5 + ServerFailureError : QDnsLookup = ... # 0x5 + ServerRefusedError : QDnsLookup = ... # 0x6 + NotFoundError : QDnsLookup = ... # 0x7 + PTR : QDnsLookup = ... # 0xc + MX : QDnsLookup = ... # 0xf + TXT : QDnsLookup = ... # 0x10 + AAAA : QDnsLookup = ... # 0x1c + SRV : QDnsLookup = ... # 0x21 + ANY : QDnsLookup = ... # 0xff + + class Error(object): + NoError : QDnsLookup.Error = ... # 0x0 + ResolverError : QDnsLookup.Error = ... # 0x1 + OperationCancelledError : QDnsLookup.Error = ... # 0x2 + InvalidRequestError : QDnsLookup.Error = ... # 0x3 + InvalidReplyError : QDnsLookup.Error = ... # 0x4 + ServerFailureError : QDnsLookup.Error = ... # 0x5 + ServerRefusedError : QDnsLookup.Error = ... # 0x6 + NotFoundError : QDnsLookup.Error = ... # 0x7 + + class Type(object): + A : QDnsLookup.Type = ... # 0x1 + NS : QDnsLookup.Type = ... # 0x2 + CNAME : QDnsLookup.Type = ... # 0x5 + PTR : QDnsLookup.Type = ... # 0xc + MX : QDnsLookup.Type = ... # 0xf + TXT : QDnsLookup.Type = ... # 0x10 + AAAA : QDnsLookup.Type = ... # 0x1c + SRV : QDnsLookup.Type = ... # 0x21 + ANY : QDnsLookup.Type = ... # 0xff + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, type:PySide2.QtNetwork.QDnsLookup.Type, name:str, nameserver:PySide2.QtNetwork.QHostAddress, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, type:PySide2.QtNetwork.QDnsLookup.Type, name:str, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def abort(self) -> None: ... + def canonicalNameRecords(self) -> typing.List: ... + def error(self) -> PySide2.QtNetwork.QDnsLookup.Error: ... + def errorString(self) -> str: ... + def hostAddressRecords(self) -> typing.List: ... + def isFinished(self) -> bool: ... + def lookup(self) -> None: ... + def mailExchangeRecords(self) -> typing.List: ... + def name(self) -> str: ... + def nameServerRecords(self) -> typing.List: ... + def nameserver(self) -> PySide2.QtNetwork.QHostAddress: ... + def pointerRecords(self) -> typing.List: ... + def serviceRecords(self) -> typing.List: ... + def setName(self, name:str) -> None: ... + def setNameserver(self, nameserver:PySide2.QtNetwork.QHostAddress) -> None: ... + def setType(self, arg__1:PySide2.QtNetwork.QDnsLookup.Type) -> None: ... + def textRecords(self) -> typing.List: ... + def type(self) -> PySide2.QtNetwork.QDnsLookup.Type: ... + + +class QDnsMailExchangeRecord(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtNetwork.QDnsMailExchangeRecord) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def exchange(self) -> str: ... + def name(self) -> str: ... + def preference(self) -> int: ... + def swap(self, other:PySide2.QtNetwork.QDnsMailExchangeRecord) -> None: ... + def timeToLive(self) -> int: ... + + +class QDnsServiceRecord(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtNetwork.QDnsServiceRecord) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def name(self) -> str: ... + def port(self) -> int: ... + def priority(self) -> int: ... + def swap(self, other:PySide2.QtNetwork.QDnsServiceRecord) -> None: ... + def target(self) -> str: ... + def timeToLive(self) -> int: ... + def weight(self) -> int: ... + + +class QDnsTextRecord(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtNetwork.QDnsTextRecord) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def name(self) -> str: ... + def swap(self, other:PySide2.QtNetwork.QDnsTextRecord) -> None: ... + def timeToLive(self) -> int: ... + def values(self) -> typing.List: ... + + +class QDtls(PySide2.QtCore.QObject): + HandshakeNotStarted : QDtls = ... # 0x0 + HandshakeInProgress : QDtls = ... # 0x1 + PeerVerificationFailed : QDtls = ... # 0x2 + HandshakeComplete : QDtls = ... # 0x3 + + class HandshakeState(object): + HandshakeNotStarted : QDtls.HandshakeState = ... # 0x0 + HandshakeInProgress : QDtls.HandshakeState = ... # 0x1 + PeerVerificationFailed : QDtls.HandshakeState = ... # 0x2 + HandshakeComplete : QDtls.HandshakeState = ... # 0x3 + + def __init__(self, mode:PySide2.QtNetwork.QSslSocket.SslMode, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def abortHandshake(self, socket:PySide2.QtNetwork.QUdpSocket) -> bool: ... + def decryptDatagram(self, socket:PySide2.QtNetwork.QUdpSocket, dgram:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QByteArray: ... + def doHandshake(self, socket:PySide2.QtNetwork.QUdpSocket, dgram:PySide2.QtCore.QByteArray=...) -> bool: ... + def dtlsConfiguration(self) -> PySide2.QtNetwork.QSslConfiguration: ... + def dtlsError(self) -> PySide2.QtNetwork.QDtlsError: ... + def dtlsErrorString(self) -> str: ... + def handleTimeout(self, socket:PySide2.QtNetwork.QUdpSocket) -> bool: ... + def handshakeState(self) -> PySide2.QtNetwork.QDtls.HandshakeState: ... + def ignoreVerificationErrors(self, errorsToIgnore:typing.List) -> None: ... + def isConnectionEncrypted(self) -> bool: ... + def mtuHint(self) -> int: ... + def peerAddress(self) -> PySide2.QtNetwork.QHostAddress: ... + def peerPort(self) -> int: ... + def peerVerificationErrors(self) -> typing.List: ... + def peerVerificationName(self) -> str: ... + def resumeHandshake(self, socket:PySide2.QtNetwork.QUdpSocket) -> bool: ... + def sessionCipher(self) -> PySide2.QtNetwork.QSslCipher: ... + def sessionProtocol(self) -> PySide2.QtNetwork.QSsl.SslProtocol: ... + def setDtlsConfiguration(self, configuration:PySide2.QtNetwork.QSslConfiguration) -> bool: ... + def setMtuHint(self, mtuHint:int) -> None: ... + def setPeer(self, address:PySide2.QtNetwork.QHostAddress, port:int, verificationName:str=...) -> bool: ... + def setPeerVerificationName(self, name:str) -> bool: ... + def shutdown(self, socket:PySide2.QtNetwork.QUdpSocket) -> bool: ... + def sslMode(self) -> PySide2.QtNetwork.QSslSocket.SslMode: ... + def writeDatagramEncrypted(self, socket:PySide2.QtNetwork.QUdpSocket, dgram:PySide2.QtCore.QByteArray) -> int: ... + + +class QDtlsError(object): + NoError : QDtlsError = ... # 0x0 + InvalidInputParameters : QDtlsError = ... # 0x1 + InvalidOperation : QDtlsError = ... # 0x2 + UnderlyingSocketError : QDtlsError = ... # 0x3 + RemoteClosedConnectionError: QDtlsError = ... # 0x4 + PeerVerificationError : QDtlsError = ... # 0x5 + TlsInitializationError : QDtlsError = ... # 0x6 + TlsFatalError : QDtlsError = ... # 0x7 + TlsNonFatalError : QDtlsError = ... # 0x8 + + +class QHostAddress(Shiboken.Object): + Null : QHostAddress = ... # 0x0 + StrictConversion : QHostAddress = ... # 0x0 + Broadcast : QHostAddress = ... # 0x1 + ConvertV4MappedToIPv4 : QHostAddress = ... # 0x1 + ConvertV4CompatToIPv4 : QHostAddress = ... # 0x2 + LocalHost : QHostAddress = ... # 0x2 + LocalHostIPv6 : QHostAddress = ... # 0x3 + Any : QHostAddress = ... # 0x4 + ConvertUnspecifiedAddress: QHostAddress = ... # 0x4 + AnyIPv6 : QHostAddress = ... # 0x5 + AnyIPv4 : QHostAddress = ... # 0x6 + ConvertLocalHost : QHostAddress = ... # 0x8 + TolerantConversion : QHostAddress = ... # 0xff + + class ConversionMode(object): ... + + class ConversionModeFlag(object): + StrictConversion : QHostAddress.ConversionModeFlag = ... # 0x0 + ConvertV4MappedToIPv4 : QHostAddress.ConversionModeFlag = ... # 0x1 + ConvertV4CompatToIPv4 : QHostAddress.ConversionModeFlag = ... # 0x2 + ConvertUnspecifiedAddress: QHostAddress.ConversionModeFlag = ... # 0x4 + ConvertLocalHost : QHostAddress.ConversionModeFlag = ... # 0x8 + TolerantConversion : QHostAddress.ConversionModeFlag = ... # 0xff + + class SpecialAddress(object): + Null : QHostAddress.SpecialAddress = ... # 0x0 + Broadcast : QHostAddress.SpecialAddress = ... # 0x1 + LocalHost : QHostAddress.SpecialAddress = ... # 0x2 + LocalHostIPv6 : QHostAddress.SpecialAddress = ... # 0x3 + Any : QHostAddress.SpecialAddress = ... # 0x4 + AnyIPv6 : QHostAddress.SpecialAddress = ... # 0x5 + AnyIPv4 : QHostAddress.SpecialAddress = ... # 0x6 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, address:PySide2.QtNetwork.QHostAddress.SpecialAddress) -> None: ... + @typing.overload + def __init__(self, address:str) -> None: ... + @typing.overload + def __init__(self, copy:PySide2.QtNetwork.QHostAddress) -> None: ... + @typing.overload + def __init__(self, ip4Addr:int) -> None: ... + @typing.overload + def __init__(self, ip6Addr:PySide2.QtNetwork.QIPv6Address) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __lshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __rshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def clear(self) -> None: ... + def isBroadcast(self) -> bool: ... + def isEqual(self, address:PySide2.QtNetwork.QHostAddress, mode:PySide2.QtNetwork.QHostAddress.ConversionMode=...) -> bool: ... + def isGlobal(self) -> bool: ... + @typing.overload + def isInSubnet(self, subnet:PySide2.QtNetwork.QHostAddress, netmask:int) -> bool: ... + @typing.overload + def isInSubnet(self, subnet:typing.Tuple) -> bool: ... + def isLinkLocal(self) -> bool: ... + def isLoopback(self) -> bool: ... + def isMulticast(self) -> bool: ... + def isNull(self) -> bool: ... + def isSiteLocal(self) -> bool: ... + def isUniqueLocalUnicast(self) -> bool: ... + @staticmethod + def parseSubnet(subnet:str) -> typing.Tuple: ... + def protocol(self) -> PySide2.QtNetwork.QAbstractSocket.NetworkLayerProtocol: ... + def scopeId(self) -> str: ... + @typing.overload + def setAddress(self, address:PySide2.QtNetwork.QHostAddress.SpecialAddress) -> None: ... + @typing.overload + def setAddress(self, address:str) -> bool: ... + @typing.overload + def setAddress(self, ip4Addr:int) -> None: ... + @typing.overload + def setAddress(self, ip6Addr:PySide2.QtNetwork.QIPv6Address) -> None: ... + def setScopeId(self, id:str) -> None: ... + def swap(self, other:PySide2.QtNetwork.QHostAddress) -> None: ... + @typing.overload + def toIPv4Address(self) -> int: ... + @typing.overload + def toIPv4Address(self) -> typing.Tuple: ... + def toIPv6Address(self) -> PySide2.QtNetwork.QIPv6Address: ... + def toString(self) -> str: ... + + +class QHostInfo(Shiboken.Object): + NoError : QHostInfo = ... # 0x0 + HostNotFound : QHostInfo = ... # 0x1 + UnknownError : QHostInfo = ... # 0x2 + + class HostInfoError(object): + NoError : QHostInfo.HostInfoError = ... # 0x0 + HostNotFound : QHostInfo.HostInfoError = ... # 0x1 + UnknownError : QHostInfo.HostInfoError = ... # 0x2 + + @typing.overload + def __init__(self, d:PySide2.QtNetwork.QHostInfo) -> None: ... + @typing.overload + def __init__(self, lookupId:int=...) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @staticmethod + def abortHostLookup(lookupId:int) -> None: ... + def addresses(self) -> typing.List: ... + def error(self) -> PySide2.QtNetwork.QHostInfo.HostInfoError: ... + def errorString(self) -> str: ... + @staticmethod + def fromName(name:str) -> PySide2.QtNetwork.QHostInfo: ... + def hostName(self) -> str: ... + @staticmethod + def localDomainName() -> str: ... + @staticmethod + def localHostName() -> str: ... + def lookupId(self) -> int: ... + def setAddresses(self, addresses:typing.Sequence) -> None: ... + def setError(self, error:PySide2.QtNetwork.QHostInfo.HostInfoError) -> None: ... + def setErrorString(self, errorString:str) -> None: ... + def setHostName(self, name:str) -> None: ... + def setLookupId(self, id:int) -> None: ... + def swap(self, other:PySide2.QtNetwork.QHostInfo) -> None: ... + + +class QHstsPolicy(Shiboken.Object): + IncludeSubDomains : QHstsPolicy = ... # 0x1 + + class PolicyFlag(object): + IncludeSubDomains : QHstsPolicy.PolicyFlag = ... # 0x1 + + class PolicyFlags(object): ... + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, expiry:PySide2.QtCore.QDateTime, flags:PySide2.QtNetwork.QHstsPolicy.PolicyFlags, host:str, mode:PySide2.QtCore.QUrl.ParsingMode=...) -> None: ... + @typing.overload + def __init__(self, rhs:PySide2.QtNetwork.QHstsPolicy) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def expiry(self) -> PySide2.QtCore.QDateTime: ... + def host(self, options:PySide2.QtCore.QUrl.ComponentFormattingOption=...) -> str: ... + def includesSubDomains(self) -> bool: ... + def isExpired(self) -> bool: ... + def setExpiry(self, expiry:PySide2.QtCore.QDateTime) -> None: ... + def setHost(self, host:str, mode:PySide2.QtCore.QUrl.ParsingMode=...) -> None: ... + def setIncludesSubDomains(self, include:bool) -> None: ... + def swap(self, other:PySide2.QtNetwork.QHstsPolicy) -> None: ... + + +class QHttpMultiPart(PySide2.QtCore.QObject): + MixedType : QHttpMultiPart = ... # 0x0 + RelatedType : QHttpMultiPart = ... # 0x1 + FormDataType : QHttpMultiPart = ... # 0x2 + AlternativeType : QHttpMultiPart = ... # 0x3 + + class ContentType(object): + MixedType : QHttpMultiPart.ContentType = ... # 0x0 + RelatedType : QHttpMultiPart.ContentType = ... # 0x1 + FormDataType : QHttpMultiPart.ContentType = ... # 0x2 + AlternativeType : QHttpMultiPart.ContentType = ... # 0x3 + + @typing.overload + def __init__(self, contentType:PySide2.QtNetwork.QHttpMultiPart.ContentType, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def append(self, httpPart:PySide2.QtNetwork.QHttpPart) -> None: ... + def boundary(self) -> PySide2.QtCore.QByteArray: ... + def setBoundary(self, boundary:PySide2.QtCore.QByteArray) -> None: ... + def setContentType(self, contentType:PySide2.QtNetwork.QHttpMultiPart.ContentType) -> None: ... + + +class QHttpPart(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtNetwork.QHttpPart) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def setBody(self, body:PySide2.QtCore.QByteArray) -> None: ... + def setBodyDevice(self, device:PySide2.QtCore.QIODevice) -> None: ... + def setHeader(self, header:PySide2.QtNetwork.QNetworkRequest.KnownHeaders, value:typing.Any) -> None: ... + def setRawHeader(self, headerName:PySide2.QtCore.QByteArray, headerValue:PySide2.QtCore.QByteArray) -> None: ... + def swap(self, other:PySide2.QtNetwork.QHttpPart) -> None: ... + + +class QIPv6Address(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QIPv6Address:PySide2.QtNetwork.QIPv6Address) -> None: ... + + @staticmethod + def __copy__() -> None: ... + + +class QLocalServer(PySide2.QtCore.QObject): + NoOptions : QLocalServer = ... # 0x0 + UserAccessOption : QLocalServer = ... # 0x1 + GroupAccessOption : QLocalServer = ... # 0x2 + OtherAccessOption : QLocalServer = ... # 0x4 + WorldAccessOption : QLocalServer = ... # 0x7 + + class SocketOption(object): + NoOptions : QLocalServer.SocketOption = ... # 0x0 + UserAccessOption : QLocalServer.SocketOption = ... # 0x1 + GroupAccessOption : QLocalServer.SocketOption = ... # 0x2 + OtherAccessOption : QLocalServer.SocketOption = ... # 0x4 + WorldAccessOption : QLocalServer.SocketOption = ... # 0x7 + + class SocketOptions(object): ... + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def close(self) -> None: ... + def errorString(self) -> str: ... + def fullServerName(self) -> str: ... + def hasPendingConnections(self) -> bool: ... + def incomingConnection(self, socketDescriptor:int) -> None: ... + def isListening(self) -> bool: ... + @typing.overload + def listen(self, name:str) -> bool: ... + @typing.overload + def listen(self, socketDescriptor:int) -> bool: ... + def maxPendingConnections(self) -> int: ... + def nextPendingConnection(self) -> PySide2.QtNetwork.QLocalSocket: ... + @staticmethod + def removeServer(name:str) -> bool: ... + def serverError(self) -> PySide2.QtNetwork.QAbstractSocket.SocketError: ... + def serverName(self) -> str: ... + def setMaxPendingConnections(self, numConnections:int) -> None: ... + def setSocketOptions(self, options:PySide2.QtNetwork.QLocalServer.SocketOptions) -> None: ... + def socketDescriptor(self) -> int: ... + def socketOptions(self) -> PySide2.QtNetwork.QLocalServer.SocketOptions: ... + def waitForNewConnection(self, msec:int) -> typing.Tuple: ... + + +class QLocalSocket(PySide2.QtCore.QIODevice): + UnknownSocketError : QLocalSocket = ... # -0x1 + ConnectionRefusedError : QLocalSocket = ... # 0x0 + UnconnectedState : QLocalSocket = ... # 0x0 + PeerClosedError : QLocalSocket = ... # 0x1 + ConnectingState : QLocalSocket = ... # 0x2 + ServerNotFoundError : QLocalSocket = ... # 0x2 + ConnectedState : QLocalSocket = ... # 0x3 + SocketAccessError : QLocalSocket = ... # 0x3 + SocketResourceError : QLocalSocket = ... # 0x4 + SocketTimeoutError : QLocalSocket = ... # 0x5 + ClosingState : QLocalSocket = ... # 0x6 + DatagramTooLargeError : QLocalSocket = ... # 0x6 + ConnectionError : QLocalSocket = ... # 0x7 + UnsupportedSocketOperationError: QLocalSocket = ... # 0xa + OperationError : QLocalSocket = ... # 0x13 + + class LocalSocketError(object): + UnknownSocketError : QLocalSocket.LocalSocketError = ... # -0x1 + ConnectionRefusedError : QLocalSocket.LocalSocketError = ... # 0x0 + PeerClosedError : QLocalSocket.LocalSocketError = ... # 0x1 + ServerNotFoundError : QLocalSocket.LocalSocketError = ... # 0x2 + SocketAccessError : QLocalSocket.LocalSocketError = ... # 0x3 + SocketResourceError : QLocalSocket.LocalSocketError = ... # 0x4 + SocketTimeoutError : QLocalSocket.LocalSocketError = ... # 0x5 + DatagramTooLargeError : QLocalSocket.LocalSocketError = ... # 0x6 + ConnectionError : QLocalSocket.LocalSocketError = ... # 0x7 + UnsupportedSocketOperationError: QLocalSocket.LocalSocketError = ... # 0xa + OperationError : QLocalSocket.LocalSocketError = ... # 0x13 + + class LocalSocketState(object): + UnconnectedState : QLocalSocket.LocalSocketState = ... # 0x0 + ConnectingState : QLocalSocket.LocalSocketState = ... # 0x2 + ConnectedState : QLocalSocket.LocalSocketState = ... # 0x3 + ClosingState : QLocalSocket.LocalSocketState = ... # 0x6 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def abort(self) -> None: ... + def bytesAvailable(self) -> int: ... + def bytesToWrite(self) -> int: ... + def canReadLine(self) -> bool: ... + def close(self) -> None: ... + @typing.overload + def connectToServer(self, name:str, openMode:PySide2.QtCore.QIODevice.OpenMode=...) -> None: ... + @typing.overload + def connectToServer(self, openMode:PySide2.QtCore.QIODevice.OpenMode=...) -> None: ... + def disconnectFromServer(self) -> None: ... + def error(self) -> PySide2.QtNetwork.QLocalSocket.LocalSocketError: ... + def flush(self) -> bool: ... + def fullServerName(self) -> str: ... + def isSequential(self) -> bool: ... + def isValid(self) -> bool: ... + def open(self, openMode:PySide2.QtCore.QIODevice.OpenMode=...) -> bool: ... + def readBufferSize(self) -> int: ... + def readData(self, arg__1:bytes, arg__2:int) -> int: ... + def serverName(self) -> str: ... + def setReadBufferSize(self, size:int) -> None: ... + def setServerName(self, name:str) -> None: ... + def setSocketDescriptor(self, socketDescriptor:int, socketState:PySide2.QtNetwork.QLocalSocket.LocalSocketState=..., openMode:PySide2.QtCore.QIODevice.OpenMode=...) -> bool: ... + def socketDescriptor(self) -> int: ... + def state(self) -> PySide2.QtNetwork.QLocalSocket.LocalSocketState: ... + def waitForBytesWritten(self, msecs:int=...) -> bool: ... + def waitForConnected(self, msecs:int=...) -> bool: ... + def waitForDisconnected(self, msecs:int=...) -> bool: ... + def waitForReadyRead(self, msecs:int=...) -> bool: ... + def writeData(self, arg__1:bytes, arg__2:int) -> int: ... + + +class QNetworkAccessManager(PySide2.QtCore.QObject): + UnknownAccessibility : QNetworkAccessManager = ... # -0x1 + NotAccessible : QNetworkAccessManager = ... # 0x0 + UnknownOperation : QNetworkAccessManager = ... # 0x0 + Accessible : QNetworkAccessManager = ... # 0x1 + HeadOperation : QNetworkAccessManager = ... # 0x1 + GetOperation : QNetworkAccessManager = ... # 0x2 + PutOperation : QNetworkAccessManager = ... # 0x3 + PostOperation : QNetworkAccessManager = ... # 0x4 + DeleteOperation : QNetworkAccessManager = ... # 0x5 + CustomOperation : QNetworkAccessManager = ... # 0x6 + + class NetworkAccessibility(object): + UnknownAccessibility : QNetworkAccessManager.NetworkAccessibility = ... # -0x1 + NotAccessible : QNetworkAccessManager.NetworkAccessibility = ... # 0x0 + Accessible : QNetworkAccessManager.NetworkAccessibility = ... # 0x1 + + class Operation(object): + UnknownOperation : QNetworkAccessManager.Operation = ... # 0x0 + HeadOperation : QNetworkAccessManager.Operation = ... # 0x1 + GetOperation : QNetworkAccessManager.Operation = ... # 0x2 + PutOperation : QNetworkAccessManager.Operation = ... # 0x3 + PostOperation : QNetworkAccessManager.Operation = ... # 0x4 + DeleteOperation : QNetworkAccessManager.Operation = ... # 0x5 + CustomOperation : QNetworkAccessManager.Operation = ... # 0x6 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def activeConfiguration(self) -> PySide2.QtNetwork.QNetworkConfiguration: ... + def addStrictTransportSecurityHosts(self, knownHosts:typing.List) -> None: ... + def autoDeleteReplies(self) -> bool: ... + def cache(self) -> PySide2.QtNetwork.QAbstractNetworkCache: ... + def clearAccessCache(self) -> None: ... + def clearConnectionCache(self) -> None: ... + def configuration(self) -> PySide2.QtNetwork.QNetworkConfiguration: ... + def connectToHost(self, hostName:str, port:int=...) -> None: ... + @typing.overload + def connectToHostEncrypted(self, hostName:str, port:int, sslConfiguration:PySide2.QtNetwork.QSslConfiguration, peerName:str) -> None: ... + @typing.overload + def connectToHostEncrypted(self, hostName:str, port:int=..., sslConfiguration:PySide2.QtNetwork.QSslConfiguration=...) -> None: ... + def cookieJar(self) -> PySide2.QtNetwork.QNetworkCookieJar: ... + def createRequest(self, op:PySide2.QtNetwork.QNetworkAccessManager.Operation, request:PySide2.QtNetwork.QNetworkRequest, outgoingData:typing.Optional[PySide2.QtCore.QIODevice]=...) -> PySide2.QtNetwork.QNetworkReply: ... + def deleteResource(self, request:PySide2.QtNetwork.QNetworkRequest) -> PySide2.QtNetwork.QNetworkReply: ... + def enableStrictTransportSecurityStore(self, enabled:bool, storeDir:str=...) -> None: ... + def get(self, request:PySide2.QtNetwork.QNetworkRequest) -> PySide2.QtNetwork.QNetworkReply: ... + def head(self, request:PySide2.QtNetwork.QNetworkRequest) -> PySide2.QtNetwork.QNetworkReply: ... + def isStrictTransportSecurityEnabled(self) -> bool: ... + def isStrictTransportSecurityStoreEnabled(self) -> bool: ... + def networkAccessible(self) -> PySide2.QtNetwork.QNetworkAccessManager.NetworkAccessibility: ... + @typing.overload + def post(self, request:PySide2.QtNetwork.QNetworkRequest, data:PySide2.QtCore.QByteArray) -> PySide2.QtNetwork.QNetworkReply: ... + @typing.overload + def post(self, request:PySide2.QtNetwork.QNetworkRequest, data:PySide2.QtCore.QIODevice) -> PySide2.QtNetwork.QNetworkReply: ... + @typing.overload + def post(self, request:PySide2.QtNetwork.QNetworkRequest, multiPart:PySide2.QtNetwork.QHttpMultiPart) -> PySide2.QtNetwork.QNetworkReply: ... + def proxy(self) -> PySide2.QtNetwork.QNetworkProxy: ... + def proxyFactory(self) -> PySide2.QtNetwork.QNetworkProxyFactory: ... + @typing.overload + def put(self, request:PySide2.QtNetwork.QNetworkRequest, data:PySide2.QtCore.QByteArray) -> PySide2.QtNetwork.QNetworkReply: ... + @typing.overload + def put(self, request:PySide2.QtNetwork.QNetworkRequest, data:PySide2.QtCore.QIODevice) -> PySide2.QtNetwork.QNetworkReply: ... + @typing.overload + def put(self, request:PySide2.QtNetwork.QNetworkRequest, multiPart:PySide2.QtNetwork.QHttpMultiPart) -> PySide2.QtNetwork.QNetworkReply: ... + def redirectPolicy(self) -> PySide2.QtNetwork.QNetworkRequest.RedirectPolicy: ... + @typing.overload + def sendCustomRequest(self, request:PySide2.QtNetwork.QNetworkRequest, verb:PySide2.QtCore.QByteArray, data:PySide2.QtCore.QByteArray) -> PySide2.QtNetwork.QNetworkReply: ... + @typing.overload + def sendCustomRequest(self, request:PySide2.QtNetwork.QNetworkRequest, verb:PySide2.QtCore.QByteArray, data:typing.Optional[PySide2.QtCore.QIODevice]=...) -> PySide2.QtNetwork.QNetworkReply: ... + @typing.overload + def sendCustomRequest(self, request:PySide2.QtNetwork.QNetworkRequest, verb:PySide2.QtCore.QByteArray, multiPart:PySide2.QtNetwork.QHttpMultiPart) -> PySide2.QtNetwork.QNetworkReply: ... + def setAutoDeleteReplies(self, autoDelete:bool) -> None: ... + def setCache(self, cache:PySide2.QtNetwork.QAbstractNetworkCache) -> None: ... + def setConfiguration(self, config:PySide2.QtNetwork.QNetworkConfiguration) -> None: ... + def setCookieJar(self, cookieJar:PySide2.QtNetwork.QNetworkCookieJar) -> None: ... + def setNetworkAccessible(self, accessible:PySide2.QtNetwork.QNetworkAccessManager.NetworkAccessibility) -> None: ... + def setProxy(self, proxy:PySide2.QtNetwork.QNetworkProxy) -> None: ... + def setProxyFactory(self, factory:PySide2.QtNetwork.QNetworkProxyFactory) -> None: ... + def setRedirectPolicy(self, policy:PySide2.QtNetwork.QNetworkRequest.RedirectPolicy) -> None: ... + def setStrictTransportSecurityEnabled(self, enabled:bool) -> None: ... + def setTransferTimeout(self, timeout:int=...) -> None: ... + def strictTransportSecurityHosts(self) -> typing.List: ... + def supportedSchemes(self) -> typing.List: ... + def supportedSchemesImplementation(self) -> typing.List: ... + def transferTimeout(self) -> int: ... + + +class QNetworkAddressEntry(Shiboken.Object): + DnsEligibilityUnknown : QNetworkAddressEntry = ... # -0x1 + DnsIneligible : QNetworkAddressEntry = ... # 0x0 + DnsEligible : QNetworkAddressEntry = ... # 0x1 + + class DnsEligibilityStatus(object): + DnsEligibilityUnknown : QNetworkAddressEntry.DnsEligibilityStatus = ... # -0x1 + DnsIneligible : QNetworkAddressEntry.DnsEligibilityStatus = ... # 0x0 + DnsEligible : QNetworkAddressEntry.DnsEligibilityStatus = ... # 0x1 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtNetwork.QNetworkAddressEntry) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def broadcast(self) -> PySide2.QtNetwork.QHostAddress: ... + def clearAddressLifetime(self) -> None: ... + def dnsEligibility(self) -> PySide2.QtNetwork.QNetworkAddressEntry.DnsEligibilityStatus: ... + def ip(self) -> PySide2.QtNetwork.QHostAddress: ... + def isLifetimeKnown(self) -> bool: ... + def isPermanent(self) -> bool: ... + def isTemporary(self) -> bool: ... + def netmask(self) -> PySide2.QtNetwork.QHostAddress: ... + def preferredLifetime(self) -> PySide2.QtCore.QDeadlineTimer: ... + def prefixLength(self) -> int: ... + def setAddressLifetime(self, preferred:PySide2.QtCore.QDeadlineTimer, validity:PySide2.QtCore.QDeadlineTimer) -> None: ... + def setBroadcast(self, newBroadcast:PySide2.QtNetwork.QHostAddress) -> None: ... + def setDnsEligibility(self, status:PySide2.QtNetwork.QNetworkAddressEntry.DnsEligibilityStatus) -> None: ... + def setIp(self, newIp:PySide2.QtNetwork.QHostAddress) -> None: ... + def setNetmask(self, newNetmask:PySide2.QtNetwork.QHostAddress) -> None: ... + def setPrefixLength(self, length:int) -> None: ... + def swap(self, other:PySide2.QtNetwork.QNetworkAddressEntry) -> None: ... + def validityLifetime(self) -> PySide2.QtCore.QDeadlineTimer: ... + + +class QNetworkCacheMetaData(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtNetwork.QNetworkCacheMetaData) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __lshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __rshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def attributes(self) -> typing.Dict: ... + def expirationDate(self) -> PySide2.QtCore.QDateTime: ... + def isValid(self) -> bool: ... + def lastModified(self) -> PySide2.QtCore.QDateTime: ... + def rawHeaders(self) -> typing.List: ... + def saveToDisk(self) -> bool: ... + def setAttributes(self, attributes:typing.Dict) -> None: ... + def setExpirationDate(self, dateTime:PySide2.QtCore.QDateTime) -> None: ... + def setLastModified(self, dateTime:PySide2.QtCore.QDateTime) -> None: ... + def setRawHeaders(self, headers:typing.Sequence) -> None: ... + def setSaveToDisk(self, allow:bool) -> None: ... + def setUrl(self, url:PySide2.QtCore.QUrl) -> None: ... + def swap(self, other:PySide2.QtNetwork.QNetworkCacheMetaData) -> None: ... + def url(self) -> PySide2.QtCore.QUrl: ... + + +class QNetworkConfiguration(Shiboken.Object): + BearerUnknown : QNetworkConfiguration = ... # 0x0 + InternetAccessPoint : QNetworkConfiguration = ... # 0x0 + UnknownPurpose : QNetworkConfiguration = ... # 0x0 + BearerEthernet : QNetworkConfiguration = ... # 0x1 + PublicPurpose : QNetworkConfiguration = ... # 0x1 + ServiceNetwork : QNetworkConfiguration = ... # 0x1 + Undefined : QNetworkConfiguration = ... # 0x1 + BearerWLAN : QNetworkConfiguration = ... # 0x2 + Defined : QNetworkConfiguration = ... # 0x2 + PrivatePurpose : QNetworkConfiguration = ... # 0x2 + UserChoice : QNetworkConfiguration = ... # 0x2 + Bearer2G : QNetworkConfiguration = ... # 0x3 + Invalid : QNetworkConfiguration = ... # 0x3 + ServiceSpecificPurpose : QNetworkConfiguration = ... # 0x3 + BearerCDMA2000 : QNetworkConfiguration = ... # 0x4 + BearerWCDMA : QNetworkConfiguration = ... # 0x5 + BearerHSPA : QNetworkConfiguration = ... # 0x6 + Discovered : QNetworkConfiguration = ... # 0x6 + BearerBluetooth : QNetworkConfiguration = ... # 0x7 + BearerWiMAX : QNetworkConfiguration = ... # 0x8 + BearerEVDO : QNetworkConfiguration = ... # 0x9 + BearerLTE : QNetworkConfiguration = ... # 0xa + Bearer3G : QNetworkConfiguration = ... # 0xb + Bearer4G : QNetworkConfiguration = ... # 0xc + Active : QNetworkConfiguration = ... # 0xe + + class BearerType(object): + BearerUnknown : QNetworkConfiguration.BearerType = ... # 0x0 + BearerEthernet : QNetworkConfiguration.BearerType = ... # 0x1 + BearerWLAN : QNetworkConfiguration.BearerType = ... # 0x2 + Bearer2G : QNetworkConfiguration.BearerType = ... # 0x3 + BearerCDMA2000 : QNetworkConfiguration.BearerType = ... # 0x4 + BearerWCDMA : QNetworkConfiguration.BearerType = ... # 0x5 + BearerHSPA : QNetworkConfiguration.BearerType = ... # 0x6 + BearerBluetooth : QNetworkConfiguration.BearerType = ... # 0x7 + BearerWiMAX : QNetworkConfiguration.BearerType = ... # 0x8 + BearerEVDO : QNetworkConfiguration.BearerType = ... # 0x9 + BearerLTE : QNetworkConfiguration.BearerType = ... # 0xa + Bearer3G : QNetworkConfiguration.BearerType = ... # 0xb + Bearer4G : QNetworkConfiguration.BearerType = ... # 0xc + + class Purpose(object): + UnknownPurpose : QNetworkConfiguration.Purpose = ... # 0x0 + PublicPurpose : QNetworkConfiguration.Purpose = ... # 0x1 + PrivatePurpose : QNetworkConfiguration.Purpose = ... # 0x2 + ServiceSpecificPurpose : QNetworkConfiguration.Purpose = ... # 0x3 + + class StateFlag(object): + Undefined : QNetworkConfiguration.StateFlag = ... # 0x1 + Defined : QNetworkConfiguration.StateFlag = ... # 0x2 + Discovered : QNetworkConfiguration.StateFlag = ... # 0x6 + Active : QNetworkConfiguration.StateFlag = ... # 0xe + + class StateFlags(object): ... + + class Type(object): + InternetAccessPoint : QNetworkConfiguration.Type = ... # 0x0 + ServiceNetwork : QNetworkConfiguration.Type = ... # 0x1 + UserChoice : QNetworkConfiguration.Type = ... # 0x2 + Invalid : QNetworkConfiguration.Type = ... # 0x3 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtNetwork.QNetworkConfiguration) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def bearerType(self) -> PySide2.QtNetwork.QNetworkConfiguration.BearerType: ... + def bearerTypeFamily(self) -> PySide2.QtNetwork.QNetworkConfiguration.BearerType: ... + def bearerTypeName(self) -> str: ... + def children(self) -> typing.List: ... + def connectTimeout(self) -> int: ... + def identifier(self) -> str: ... + def isRoamingAvailable(self) -> bool: ... + def isValid(self) -> bool: ... + def name(self) -> str: ... + def purpose(self) -> PySide2.QtNetwork.QNetworkConfiguration.Purpose: ... + def setConnectTimeout(self, timeout:int) -> bool: ... + def state(self) -> PySide2.QtNetwork.QNetworkConfiguration.StateFlags: ... + def swap(self, other:PySide2.QtNetwork.QNetworkConfiguration) -> None: ... + def type(self) -> PySide2.QtNetwork.QNetworkConfiguration.Type: ... + + +class QNetworkConfigurationManager(PySide2.QtCore.QObject): + CanStartAndStopInterfaces: QNetworkConfigurationManager = ... # 0x1 + DirectConnectionRouting : QNetworkConfigurationManager = ... # 0x2 + SystemSessionSupport : QNetworkConfigurationManager = ... # 0x4 + ApplicationLevelRoaming : QNetworkConfigurationManager = ... # 0x8 + ForcedRoaming : QNetworkConfigurationManager = ... # 0x10 + DataStatistics : QNetworkConfigurationManager = ... # 0x20 + NetworkSessionRequired : QNetworkConfigurationManager = ... # 0x40 + + class Capabilities(object): ... + + class Capability(object): + CanStartAndStopInterfaces: QNetworkConfigurationManager.Capability = ... # 0x1 + DirectConnectionRouting : QNetworkConfigurationManager.Capability = ... # 0x2 + SystemSessionSupport : QNetworkConfigurationManager.Capability = ... # 0x4 + ApplicationLevelRoaming : QNetworkConfigurationManager.Capability = ... # 0x8 + ForcedRoaming : QNetworkConfigurationManager.Capability = ... # 0x10 + DataStatistics : QNetworkConfigurationManager.Capability = ... # 0x20 + NetworkSessionRequired : QNetworkConfigurationManager.Capability = ... # 0x40 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def allConfigurations(self, flags:PySide2.QtNetwork.QNetworkConfiguration.StateFlags=...) -> typing.List: ... + def capabilities(self) -> PySide2.QtNetwork.QNetworkConfigurationManager.Capabilities: ... + def configurationFromIdentifier(self, identifier:str) -> PySide2.QtNetwork.QNetworkConfiguration: ... + def defaultConfiguration(self) -> PySide2.QtNetwork.QNetworkConfiguration: ... + def isOnline(self) -> bool: ... + def updateConfigurations(self) -> None: ... + + +class QNetworkCookie(Shiboken.Object): + NameAndValueOnly : QNetworkCookie = ... # 0x0 + Full : QNetworkCookie = ... # 0x1 + + class RawForm(object): + NameAndValueOnly : QNetworkCookie.RawForm = ... # 0x0 + Full : QNetworkCookie.RawForm = ... # 0x1 + + @typing.overload + def __init__(self, name:PySide2.QtCore.QByteArray=..., value:PySide2.QtCore.QByteArray=...) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtNetwork.QNetworkCookie) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def domain(self) -> str: ... + def expirationDate(self) -> PySide2.QtCore.QDateTime: ... + def hasSameIdentifier(self, other:PySide2.QtNetwork.QNetworkCookie) -> bool: ... + def isHttpOnly(self) -> bool: ... + def isSecure(self) -> bool: ... + def isSessionCookie(self) -> bool: ... + def name(self) -> PySide2.QtCore.QByteArray: ... + def normalize(self, url:PySide2.QtCore.QUrl) -> None: ... + @staticmethod + def parseCookies(cookieString:PySide2.QtCore.QByteArray) -> typing.List: ... + def path(self) -> str: ... + def setDomain(self, domain:str) -> None: ... + def setExpirationDate(self, date:PySide2.QtCore.QDateTime) -> None: ... + def setHttpOnly(self, enable:bool) -> None: ... + def setName(self, cookieName:PySide2.QtCore.QByteArray) -> None: ... + def setPath(self, path:str) -> None: ... + def setSecure(self, enable:bool) -> None: ... + def setValue(self, value:PySide2.QtCore.QByteArray) -> None: ... + def swap(self, other:PySide2.QtNetwork.QNetworkCookie) -> None: ... + def toRawForm(self, form:PySide2.QtNetwork.QNetworkCookie.RawForm=...) -> PySide2.QtCore.QByteArray: ... + def value(self) -> PySide2.QtCore.QByteArray: ... + + +class QNetworkCookieJar(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def allCookies(self) -> typing.List: ... + def cookiesForUrl(self, url:PySide2.QtCore.QUrl) -> typing.List: ... + def deleteCookie(self, cookie:PySide2.QtNetwork.QNetworkCookie) -> bool: ... + def insertCookie(self, cookie:PySide2.QtNetwork.QNetworkCookie) -> bool: ... + def setAllCookies(self, cookieList:typing.Sequence) -> None: ... + def setCookiesFromUrl(self, cookieList:typing.Sequence, url:PySide2.QtCore.QUrl) -> bool: ... + def updateCookie(self, cookie:PySide2.QtNetwork.QNetworkCookie) -> bool: ... + def validateCookie(self, cookie:PySide2.QtNetwork.QNetworkCookie, url:PySide2.QtCore.QUrl) -> bool: ... + + +class QNetworkDatagram(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, data:PySide2.QtCore.QByteArray, destinationAddress:PySide2.QtNetwork.QHostAddress=..., port:int=...) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtNetwork.QNetworkDatagram) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def clear(self) -> None: ... + def data(self) -> PySide2.QtCore.QByteArray: ... + def destinationAddress(self) -> PySide2.QtNetwork.QHostAddress: ... + def destinationPort(self) -> int: ... + def hopLimit(self) -> int: ... + def interfaceIndex(self) -> int: ... + def isNull(self) -> bool: ... + def isValid(self) -> bool: ... + def makeReply(self, payload:PySide2.QtCore.QByteArray) -> PySide2.QtNetwork.QNetworkDatagram: ... + def senderAddress(self) -> PySide2.QtNetwork.QHostAddress: ... + def senderPort(self) -> int: ... + def setData(self, data:PySide2.QtCore.QByteArray) -> None: ... + def setDestination(self, address:PySide2.QtNetwork.QHostAddress, port:int) -> None: ... + def setHopLimit(self, count:int) -> None: ... + def setInterfaceIndex(self, index:int) -> None: ... + def setSender(self, address:PySide2.QtNetwork.QHostAddress, port:int=...) -> None: ... + def swap(self, other:PySide2.QtNetwork.QNetworkDatagram) -> None: ... + + +class QNetworkDiskCache(PySide2.QtNetwork.QAbstractNetworkCache): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def cacheDirectory(self) -> str: ... + def cacheSize(self) -> int: ... + def clear(self) -> None: ... + def data(self, url:PySide2.QtCore.QUrl) -> PySide2.QtCore.QIODevice: ... + def expire(self) -> int: ... + def fileMetaData(self, fileName:str) -> PySide2.QtNetwork.QNetworkCacheMetaData: ... + def insert(self, device:PySide2.QtCore.QIODevice) -> None: ... + def maximumCacheSize(self) -> int: ... + def metaData(self, url:PySide2.QtCore.QUrl) -> PySide2.QtNetwork.QNetworkCacheMetaData: ... + def prepare(self, metaData:PySide2.QtNetwork.QNetworkCacheMetaData) -> PySide2.QtCore.QIODevice: ... + def remove(self, url:PySide2.QtCore.QUrl) -> bool: ... + def setCacheDirectory(self, cacheDir:str) -> None: ... + def setMaximumCacheSize(self, size:int) -> None: ... + def updateMetaData(self, metaData:PySide2.QtNetwork.QNetworkCacheMetaData) -> None: ... + + +class QNetworkInterface(Shiboken.Object): + Unknown : QNetworkInterface = ... # 0x0 + IsUp : QNetworkInterface = ... # 0x1 + Loopback : QNetworkInterface = ... # 0x1 + IsRunning : QNetworkInterface = ... # 0x2 + Virtual : QNetworkInterface = ... # 0x2 + Ethernet : QNetworkInterface = ... # 0x3 + CanBroadcast : QNetworkInterface = ... # 0x4 + Slip : QNetworkInterface = ... # 0x4 + CanBus : QNetworkInterface = ... # 0x5 + Ppp : QNetworkInterface = ... # 0x6 + Fddi : QNetworkInterface = ... # 0x7 + Ieee80211 : QNetworkInterface = ... # 0x8 + IsLoopBack : QNetworkInterface = ... # 0x8 + Wifi : QNetworkInterface = ... # 0x8 + Phonet : QNetworkInterface = ... # 0x9 + Ieee802154 : QNetworkInterface = ... # 0xa + SixLoWPAN : QNetworkInterface = ... # 0xb + Ieee80216 : QNetworkInterface = ... # 0xc + Ieee1394 : QNetworkInterface = ... # 0xd + IsPointToPoint : QNetworkInterface = ... # 0x10 + CanMulticast : QNetworkInterface = ... # 0x20 + + class InterfaceFlag(object): + IsUp : QNetworkInterface.InterfaceFlag = ... # 0x1 + IsRunning : QNetworkInterface.InterfaceFlag = ... # 0x2 + CanBroadcast : QNetworkInterface.InterfaceFlag = ... # 0x4 + IsLoopBack : QNetworkInterface.InterfaceFlag = ... # 0x8 + IsPointToPoint : QNetworkInterface.InterfaceFlag = ... # 0x10 + CanMulticast : QNetworkInterface.InterfaceFlag = ... # 0x20 + + class InterfaceFlags(object): ... + + class InterfaceType(object): + Unknown : QNetworkInterface.InterfaceType = ... # 0x0 + Loopback : QNetworkInterface.InterfaceType = ... # 0x1 + Virtual : QNetworkInterface.InterfaceType = ... # 0x2 + Ethernet : QNetworkInterface.InterfaceType = ... # 0x3 + Slip : QNetworkInterface.InterfaceType = ... # 0x4 + CanBus : QNetworkInterface.InterfaceType = ... # 0x5 + Ppp : QNetworkInterface.InterfaceType = ... # 0x6 + Fddi : QNetworkInterface.InterfaceType = ... # 0x7 + Ieee80211 : QNetworkInterface.InterfaceType = ... # 0x8 + Wifi : QNetworkInterface.InterfaceType = ... # 0x8 + Phonet : QNetworkInterface.InterfaceType = ... # 0x9 + Ieee802154 : QNetworkInterface.InterfaceType = ... # 0xa + SixLoWPAN : QNetworkInterface.InterfaceType = ... # 0xb + Ieee80216 : QNetworkInterface.InterfaceType = ... # 0xc + Ieee1394 : QNetworkInterface.InterfaceType = ... # 0xd + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtNetwork.QNetworkInterface) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def addressEntries(self) -> typing.List: ... + @staticmethod + def allAddresses() -> typing.List: ... + @staticmethod + def allInterfaces() -> typing.List: ... + def flags(self) -> PySide2.QtNetwork.QNetworkInterface.InterfaceFlags: ... + def hardwareAddress(self) -> str: ... + def humanReadableName(self) -> str: ... + def index(self) -> int: ... + @staticmethod + def interfaceFromIndex(index:int) -> PySide2.QtNetwork.QNetworkInterface: ... + @staticmethod + def interfaceFromName(name:str) -> PySide2.QtNetwork.QNetworkInterface: ... + @staticmethod + def interfaceIndexFromName(name:str) -> int: ... + @staticmethod + def interfaceNameFromIndex(index:int) -> str: ... + def isValid(self) -> bool: ... + def maximumTransmissionUnit(self) -> int: ... + def name(self) -> str: ... + def swap(self, other:PySide2.QtNetwork.QNetworkInterface) -> None: ... + def type(self) -> PySide2.QtNetwork.QNetworkInterface.InterfaceType: ... + + +class QNetworkProxy(Shiboken.Object): + DefaultProxy : QNetworkProxy = ... # 0x0 + Socks5Proxy : QNetworkProxy = ... # 0x1 + TunnelingCapability : QNetworkProxy = ... # 0x1 + ListeningCapability : QNetworkProxy = ... # 0x2 + NoProxy : QNetworkProxy = ... # 0x2 + HttpProxy : QNetworkProxy = ... # 0x3 + HttpCachingProxy : QNetworkProxy = ... # 0x4 + UdpTunnelingCapability : QNetworkProxy = ... # 0x4 + FtpCachingProxy : QNetworkProxy = ... # 0x5 + CachingCapability : QNetworkProxy = ... # 0x8 + HostNameLookupCapability : QNetworkProxy = ... # 0x10 + SctpTunnelingCapability : QNetworkProxy = ... # 0x20 + SctpListeningCapability : QNetworkProxy = ... # 0x40 + + class Capabilities(object): ... + + class Capability(object): + TunnelingCapability : QNetworkProxy.Capability = ... # 0x1 + ListeningCapability : QNetworkProxy.Capability = ... # 0x2 + UdpTunnelingCapability : QNetworkProxy.Capability = ... # 0x4 + CachingCapability : QNetworkProxy.Capability = ... # 0x8 + HostNameLookupCapability : QNetworkProxy.Capability = ... # 0x10 + SctpTunnelingCapability : QNetworkProxy.Capability = ... # 0x20 + SctpListeningCapability : QNetworkProxy.Capability = ... # 0x40 + + class ProxyType(object): + DefaultProxy : QNetworkProxy.ProxyType = ... # 0x0 + Socks5Proxy : QNetworkProxy.ProxyType = ... # 0x1 + NoProxy : QNetworkProxy.ProxyType = ... # 0x2 + HttpProxy : QNetworkProxy.ProxyType = ... # 0x3 + HttpCachingProxy : QNetworkProxy.ProxyType = ... # 0x4 + FtpCachingProxy : QNetworkProxy.ProxyType = ... # 0x5 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtNetwork.QNetworkProxy) -> None: ... + @typing.overload + def __init__(self, type:PySide2.QtNetwork.QNetworkProxy.ProxyType, hostName:str=..., port:int=..., user:str=..., password:str=...) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @staticmethod + def applicationProxy() -> PySide2.QtNetwork.QNetworkProxy: ... + def capabilities(self) -> PySide2.QtNetwork.QNetworkProxy.Capabilities: ... + def hasRawHeader(self, headerName:PySide2.QtCore.QByteArray) -> bool: ... + def header(self, header:PySide2.QtNetwork.QNetworkRequest.KnownHeaders) -> typing.Any: ... + def hostName(self) -> str: ... + def isCachingProxy(self) -> bool: ... + def isTransparentProxy(self) -> bool: ... + def password(self) -> str: ... + def port(self) -> int: ... + def rawHeader(self, headerName:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QByteArray: ... + def rawHeaderList(self) -> typing.List: ... + @staticmethod + def setApplicationProxy(proxy:PySide2.QtNetwork.QNetworkProxy) -> None: ... + def setCapabilities(self, capab:PySide2.QtNetwork.QNetworkProxy.Capabilities) -> None: ... + def setHeader(self, header:PySide2.QtNetwork.QNetworkRequest.KnownHeaders, value:typing.Any) -> None: ... + def setHostName(self, hostName:str) -> None: ... + def setPassword(self, password:str) -> None: ... + def setPort(self, port:int) -> None: ... + def setRawHeader(self, headerName:PySide2.QtCore.QByteArray, value:PySide2.QtCore.QByteArray) -> None: ... + def setType(self, type:PySide2.QtNetwork.QNetworkProxy.ProxyType) -> None: ... + def setUser(self, userName:str) -> None: ... + def swap(self, other:PySide2.QtNetwork.QNetworkProxy) -> None: ... + def type(self) -> PySide2.QtNetwork.QNetworkProxy.ProxyType: ... + def user(self) -> str: ... + + +class QNetworkProxyFactory(Shiboken.Object): + + def __init__(self) -> None: ... + + @staticmethod + def proxyForQuery(query:PySide2.QtNetwork.QNetworkProxyQuery) -> typing.List: ... + def queryProxy(self, query:PySide2.QtNetwork.QNetworkProxyQuery=...) -> typing.List: ... + @staticmethod + def setApplicationProxyFactory(factory:PySide2.QtNetwork.QNetworkProxyFactory) -> None: ... + @staticmethod + def setUseSystemConfiguration(enable:bool) -> None: ... + @staticmethod + def systemProxyForQuery(query:PySide2.QtNetwork.QNetworkProxyQuery=...) -> typing.List: ... + @staticmethod + def usesSystemConfiguration() -> bool: ... + + +class QNetworkProxyQuery(Shiboken.Object): + TcpSocket : QNetworkProxyQuery = ... # 0x0 + UdpSocket : QNetworkProxyQuery = ... # 0x1 + SctpSocket : QNetworkProxyQuery = ... # 0x2 + TcpServer : QNetworkProxyQuery = ... # 0x64 + UrlRequest : QNetworkProxyQuery = ... # 0x65 + SctpServer : QNetworkProxyQuery = ... # 0x66 + + class QueryType(object): + TcpSocket : QNetworkProxyQuery.QueryType = ... # 0x0 + UdpSocket : QNetworkProxyQuery.QueryType = ... # 0x1 + SctpSocket : QNetworkProxyQuery.QueryType = ... # 0x2 + TcpServer : QNetworkProxyQuery.QueryType = ... # 0x64 + UrlRequest : QNetworkProxyQuery.QueryType = ... # 0x65 + SctpServer : QNetworkProxyQuery.QueryType = ... # 0x66 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, bindPort:int, protocolTag:str=..., queryType:PySide2.QtNetwork.QNetworkProxyQuery.QueryType=...) -> None: ... + @typing.overload + def __init__(self, hostname:str, port:int, protocolTag:str=..., queryType:PySide2.QtNetwork.QNetworkProxyQuery.QueryType=...) -> None: ... + @typing.overload + def __init__(self, networkConfiguration:PySide2.QtNetwork.QNetworkConfiguration, bindPort:int, protocolTag:str=..., queryType:PySide2.QtNetwork.QNetworkProxyQuery.QueryType=...) -> None: ... + @typing.overload + def __init__(self, networkConfiguration:PySide2.QtNetwork.QNetworkConfiguration, hostname:str, port:int, protocolTag:str=..., queryType:PySide2.QtNetwork.QNetworkProxyQuery.QueryType=...) -> None: ... + @typing.overload + def __init__(self, networkConfiguration:PySide2.QtNetwork.QNetworkConfiguration, requestUrl:PySide2.QtCore.QUrl, queryType:PySide2.QtNetwork.QNetworkProxyQuery.QueryType=...) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtNetwork.QNetworkProxyQuery) -> None: ... + @typing.overload + def __init__(self, requestUrl:PySide2.QtCore.QUrl, queryType:PySide2.QtNetwork.QNetworkProxyQuery.QueryType=...) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def localPort(self) -> int: ... + def networkConfiguration(self) -> PySide2.QtNetwork.QNetworkConfiguration: ... + def peerHostName(self) -> str: ... + def peerPort(self) -> int: ... + def protocolTag(self) -> str: ... + def queryType(self) -> PySide2.QtNetwork.QNetworkProxyQuery.QueryType: ... + def setLocalPort(self, port:int) -> None: ... + def setNetworkConfiguration(self, networkConfiguration:PySide2.QtNetwork.QNetworkConfiguration) -> None: ... + def setPeerHostName(self, hostname:str) -> None: ... + def setPeerPort(self, port:int) -> None: ... + def setProtocolTag(self, protocolTag:str) -> None: ... + def setQueryType(self, type:PySide2.QtNetwork.QNetworkProxyQuery.QueryType) -> None: ... + def setUrl(self, url:PySide2.QtCore.QUrl) -> None: ... + def swap(self, other:PySide2.QtNetwork.QNetworkProxyQuery) -> None: ... + def url(self) -> PySide2.QtCore.QUrl: ... + + +class QNetworkReply(PySide2.QtCore.QIODevice): + NoError : QNetworkReply = ... # 0x0 + ConnectionRefusedError : QNetworkReply = ... # 0x1 + RemoteHostClosedError : QNetworkReply = ... # 0x2 + HostNotFoundError : QNetworkReply = ... # 0x3 + TimeoutError : QNetworkReply = ... # 0x4 + OperationCanceledError : QNetworkReply = ... # 0x5 + SslHandshakeFailedError : QNetworkReply = ... # 0x6 + TemporaryNetworkFailureError: QNetworkReply = ... # 0x7 + NetworkSessionFailedError: QNetworkReply = ... # 0x8 + BackgroundRequestNotAllowedError: QNetworkReply = ... # 0x9 + TooManyRedirectsError : QNetworkReply = ... # 0xa + InsecureRedirectError : QNetworkReply = ... # 0xb + UnknownNetworkError : QNetworkReply = ... # 0x63 + ProxyConnectionRefusedError: QNetworkReply = ... # 0x65 + ProxyConnectionClosedError: QNetworkReply = ... # 0x66 + ProxyNotFoundError : QNetworkReply = ... # 0x67 + ProxyTimeoutError : QNetworkReply = ... # 0x68 + ProxyAuthenticationRequiredError: QNetworkReply = ... # 0x69 + UnknownProxyError : QNetworkReply = ... # 0xc7 + ContentAccessDenied : QNetworkReply = ... # 0xc9 + ContentOperationNotPermittedError: QNetworkReply = ... # 0xca + ContentNotFoundError : QNetworkReply = ... # 0xcb + AuthenticationRequiredError: QNetworkReply = ... # 0xcc + ContentReSendError : QNetworkReply = ... # 0xcd + ContentConflictError : QNetworkReply = ... # 0xce + ContentGoneError : QNetworkReply = ... # 0xcf + UnknownContentError : QNetworkReply = ... # 0x12b + ProtocolUnknownError : QNetworkReply = ... # 0x12d + ProtocolInvalidOperationError: QNetworkReply = ... # 0x12e + ProtocolFailure : QNetworkReply = ... # 0x18f + InternalServerError : QNetworkReply = ... # 0x191 + OperationNotImplementedError: QNetworkReply = ... # 0x192 + ServiceUnavailableError : QNetworkReply = ... # 0x193 + UnknownServerError : QNetworkReply = ... # 0x1f3 + + class NetworkError(object): + NoError : QNetworkReply.NetworkError = ... # 0x0 + ConnectionRefusedError : QNetworkReply.NetworkError = ... # 0x1 + RemoteHostClosedError : QNetworkReply.NetworkError = ... # 0x2 + HostNotFoundError : QNetworkReply.NetworkError = ... # 0x3 + TimeoutError : QNetworkReply.NetworkError = ... # 0x4 + OperationCanceledError : QNetworkReply.NetworkError = ... # 0x5 + SslHandshakeFailedError : QNetworkReply.NetworkError = ... # 0x6 + TemporaryNetworkFailureError: QNetworkReply.NetworkError = ... # 0x7 + NetworkSessionFailedError: QNetworkReply.NetworkError = ... # 0x8 + BackgroundRequestNotAllowedError: QNetworkReply.NetworkError = ... # 0x9 + TooManyRedirectsError : QNetworkReply.NetworkError = ... # 0xa + InsecureRedirectError : QNetworkReply.NetworkError = ... # 0xb + UnknownNetworkError : QNetworkReply.NetworkError = ... # 0x63 + ProxyConnectionRefusedError: QNetworkReply.NetworkError = ... # 0x65 + ProxyConnectionClosedError: QNetworkReply.NetworkError = ... # 0x66 + ProxyNotFoundError : QNetworkReply.NetworkError = ... # 0x67 + ProxyTimeoutError : QNetworkReply.NetworkError = ... # 0x68 + ProxyAuthenticationRequiredError: QNetworkReply.NetworkError = ... # 0x69 + UnknownProxyError : QNetworkReply.NetworkError = ... # 0xc7 + ContentAccessDenied : QNetworkReply.NetworkError = ... # 0xc9 + ContentOperationNotPermittedError: QNetworkReply.NetworkError = ... # 0xca + ContentNotFoundError : QNetworkReply.NetworkError = ... # 0xcb + AuthenticationRequiredError: QNetworkReply.NetworkError = ... # 0xcc + ContentReSendError : QNetworkReply.NetworkError = ... # 0xcd + ContentConflictError : QNetworkReply.NetworkError = ... # 0xce + ContentGoneError : QNetworkReply.NetworkError = ... # 0xcf + UnknownContentError : QNetworkReply.NetworkError = ... # 0x12b + ProtocolUnknownError : QNetworkReply.NetworkError = ... # 0x12d + ProtocolInvalidOperationError: QNetworkReply.NetworkError = ... # 0x12e + ProtocolFailure : QNetworkReply.NetworkError = ... # 0x18f + InternalServerError : QNetworkReply.NetworkError = ... # 0x191 + OperationNotImplementedError: QNetworkReply.NetworkError = ... # 0x192 + ServiceUnavailableError : QNetworkReply.NetworkError = ... # 0x193 + UnknownServerError : QNetworkReply.NetworkError = ... # 0x1f3 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def abort(self) -> None: ... + def attribute(self, code:PySide2.QtNetwork.QNetworkRequest.Attribute) -> typing.Any: ... + def close(self) -> None: ... + def error(self) -> PySide2.QtNetwork.QNetworkReply.NetworkError: ... + def hasRawHeader(self, headerName:PySide2.QtCore.QByteArray) -> bool: ... + def header(self, header:PySide2.QtNetwork.QNetworkRequest.KnownHeaders) -> typing.Any: ... + @typing.overload + def ignoreSslErrors(self) -> None: ... + @typing.overload + def ignoreSslErrors(self, errors:typing.Sequence) -> None: ... + def ignoreSslErrorsImplementation(self, arg__1:typing.Sequence) -> None: ... + def isFinished(self) -> bool: ... + def isRunning(self) -> bool: ... + def isSequential(self) -> bool: ... + def manager(self) -> PySide2.QtNetwork.QNetworkAccessManager: ... + def operation(self) -> PySide2.QtNetwork.QNetworkAccessManager.Operation: ... + def rawHeader(self, headerName:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QByteArray: ... + def rawHeaderList(self) -> typing.List: ... + def rawHeaderPairs(self) -> typing.List: ... + def readBufferSize(self) -> int: ... + def request(self) -> PySide2.QtNetwork.QNetworkRequest: ... + def setAttribute(self, code:PySide2.QtNetwork.QNetworkRequest.Attribute, value:typing.Any) -> None: ... + def setError(self, errorCode:PySide2.QtNetwork.QNetworkReply.NetworkError, errorString:str) -> None: ... + def setFinished(self, arg__1:bool) -> None: ... + def setHeader(self, header:PySide2.QtNetwork.QNetworkRequest.KnownHeaders, value:typing.Any) -> None: ... + def setOperation(self, operation:PySide2.QtNetwork.QNetworkAccessManager.Operation) -> None: ... + def setRawHeader(self, headerName:PySide2.QtCore.QByteArray, value:PySide2.QtCore.QByteArray) -> None: ... + def setReadBufferSize(self, size:int) -> None: ... + def setRequest(self, request:PySide2.QtNetwork.QNetworkRequest) -> None: ... + def setSslConfiguration(self, configuration:PySide2.QtNetwork.QSslConfiguration) -> None: ... + def setSslConfigurationImplementation(self, arg__1:PySide2.QtNetwork.QSslConfiguration) -> None: ... + def setUrl(self, url:PySide2.QtCore.QUrl) -> None: ... + def sslConfiguration(self) -> PySide2.QtNetwork.QSslConfiguration: ... + def sslConfigurationImplementation(self, arg__1:PySide2.QtNetwork.QSslConfiguration) -> None: ... + def url(self) -> PySide2.QtCore.QUrl: ... + def writeData(self, data:bytes, len:int) -> int: ... + + +class QNetworkRequest(Shiboken.Object): + AlwaysNetwork : QNetworkRequest = ... # 0x0 + Automatic : QNetworkRequest = ... # 0x0 + ContentTypeHeader : QNetworkRequest = ... # 0x0 + HttpStatusCodeAttribute : QNetworkRequest = ... # 0x0 + ManualRedirectPolicy : QNetworkRequest = ... # 0x0 + ContentLengthHeader : QNetworkRequest = ... # 0x1 + HighPriority : QNetworkRequest = ... # 0x1 + HttpReasonPhraseAttribute: QNetworkRequest = ... # 0x1 + Manual : QNetworkRequest = ... # 0x1 + NoLessSafeRedirectPolicy : QNetworkRequest = ... # 0x1 + PreferNetwork : QNetworkRequest = ... # 0x1 + LocationHeader : QNetworkRequest = ... # 0x2 + PreferCache : QNetworkRequest = ... # 0x2 + RedirectionTargetAttribute: QNetworkRequest = ... # 0x2 + SameOriginRedirectPolicy : QNetworkRequest = ... # 0x2 + AlwaysCache : QNetworkRequest = ... # 0x3 + ConnectionEncryptedAttribute: QNetworkRequest = ... # 0x3 + LastModifiedHeader : QNetworkRequest = ... # 0x3 + NormalPriority : QNetworkRequest = ... # 0x3 + UserVerifiedRedirectPolicy: QNetworkRequest = ... # 0x3 + CacheLoadControlAttribute: QNetworkRequest = ... # 0x4 + CookieHeader : QNetworkRequest = ... # 0x4 + CacheSaveControlAttribute: QNetworkRequest = ... # 0x5 + LowPriority : QNetworkRequest = ... # 0x5 + SetCookieHeader : QNetworkRequest = ... # 0x5 + ContentDispositionHeader : QNetworkRequest = ... # 0x6 + SourceIsFromCacheAttribute: QNetworkRequest = ... # 0x6 + DoNotBufferUploadDataAttribute: QNetworkRequest = ... # 0x7 + UserAgentHeader : QNetworkRequest = ... # 0x7 + HttpPipeliningAllowedAttribute: QNetworkRequest = ... # 0x8 + ServerHeader : QNetworkRequest = ... # 0x8 + HttpPipeliningWasUsedAttribute: QNetworkRequest = ... # 0x9 + IfModifiedSinceHeader : QNetworkRequest = ... # 0x9 + CustomVerbAttribute : QNetworkRequest = ... # 0xa + ETagHeader : QNetworkRequest = ... # 0xa + CookieLoadControlAttribute: QNetworkRequest = ... # 0xb + IfMatchHeader : QNetworkRequest = ... # 0xb + AuthenticationReuseAttribute: QNetworkRequest = ... # 0xc + IfNoneMatchHeader : QNetworkRequest = ... # 0xc + CookieSaveControlAttribute: QNetworkRequest = ... # 0xd + MaximumDownloadBufferSizeAttribute: QNetworkRequest = ... # 0xe + DownloadBufferAttribute : QNetworkRequest = ... # 0xf + SynchronousRequestAttribute: QNetworkRequest = ... # 0x10 + BackgroundRequestAttribute: QNetworkRequest = ... # 0x11 + SpdyAllowedAttribute : QNetworkRequest = ... # 0x12 + SpdyWasUsedAttribute : QNetworkRequest = ... # 0x13 + EmitAllUploadProgressSignalsAttribute: QNetworkRequest = ... # 0x14 + FollowRedirectsAttribute : QNetworkRequest = ... # 0x15 + HTTP2AllowedAttribute : QNetworkRequest = ... # 0x16 + Http2AllowedAttribute : QNetworkRequest = ... # 0x16 + HTTP2WasUsedAttribute : QNetworkRequest = ... # 0x17 + Http2WasUsedAttribute : QNetworkRequest = ... # 0x17 + OriginalContentLengthAttribute: QNetworkRequest = ... # 0x18 + RedirectPolicyAttribute : QNetworkRequest = ... # 0x19 + Http2DirectAttribute : QNetworkRequest = ... # 0x1a + ResourceTypeAttribute : QNetworkRequest = ... # 0x1b + AutoDeleteReplyOnFinishAttribute: QNetworkRequest = ... # 0x1c + User : QNetworkRequest = ... # 0x3e8 + DefaultTransferTimeoutConstant: QNetworkRequest = ... # 0x7530 + UserMax : QNetworkRequest = ... # 0x7fff + + class Attribute(object): + HttpStatusCodeAttribute : QNetworkRequest.Attribute = ... # 0x0 + HttpReasonPhraseAttribute: QNetworkRequest.Attribute = ... # 0x1 + RedirectionTargetAttribute: QNetworkRequest.Attribute = ... # 0x2 + ConnectionEncryptedAttribute: QNetworkRequest.Attribute = ... # 0x3 + CacheLoadControlAttribute: QNetworkRequest.Attribute = ... # 0x4 + CacheSaveControlAttribute: QNetworkRequest.Attribute = ... # 0x5 + SourceIsFromCacheAttribute: QNetworkRequest.Attribute = ... # 0x6 + DoNotBufferUploadDataAttribute: QNetworkRequest.Attribute = ... # 0x7 + HttpPipeliningAllowedAttribute: QNetworkRequest.Attribute = ... # 0x8 + HttpPipeliningWasUsedAttribute: QNetworkRequest.Attribute = ... # 0x9 + CustomVerbAttribute : QNetworkRequest.Attribute = ... # 0xa + CookieLoadControlAttribute: QNetworkRequest.Attribute = ... # 0xb + AuthenticationReuseAttribute: QNetworkRequest.Attribute = ... # 0xc + CookieSaveControlAttribute: QNetworkRequest.Attribute = ... # 0xd + MaximumDownloadBufferSizeAttribute: QNetworkRequest.Attribute = ... # 0xe + DownloadBufferAttribute : QNetworkRequest.Attribute = ... # 0xf + SynchronousRequestAttribute: QNetworkRequest.Attribute = ... # 0x10 + BackgroundRequestAttribute: QNetworkRequest.Attribute = ... # 0x11 + SpdyAllowedAttribute : QNetworkRequest.Attribute = ... # 0x12 + SpdyWasUsedAttribute : QNetworkRequest.Attribute = ... # 0x13 + EmitAllUploadProgressSignalsAttribute: QNetworkRequest.Attribute = ... # 0x14 + FollowRedirectsAttribute : QNetworkRequest.Attribute = ... # 0x15 + HTTP2AllowedAttribute : QNetworkRequest.Attribute = ... # 0x16 + Http2AllowedAttribute : QNetworkRequest.Attribute = ... # 0x16 + HTTP2WasUsedAttribute : QNetworkRequest.Attribute = ... # 0x17 + Http2WasUsedAttribute : QNetworkRequest.Attribute = ... # 0x17 + OriginalContentLengthAttribute: QNetworkRequest.Attribute = ... # 0x18 + RedirectPolicyAttribute : QNetworkRequest.Attribute = ... # 0x19 + Http2DirectAttribute : QNetworkRequest.Attribute = ... # 0x1a + ResourceTypeAttribute : QNetworkRequest.Attribute = ... # 0x1b + AutoDeleteReplyOnFinishAttribute: QNetworkRequest.Attribute = ... # 0x1c + User : QNetworkRequest.Attribute = ... # 0x3e8 + UserMax : QNetworkRequest.Attribute = ... # 0x7fff + + class CacheLoadControl(object): + AlwaysNetwork : QNetworkRequest.CacheLoadControl = ... # 0x0 + PreferNetwork : QNetworkRequest.CacheLoadControl = ... # 0x1 + PreferCache : QNetworkRequest.CacheLoadControl = ... # 0x2 + AlwaysCache : QNetworkRequest.CacheLoadControl = ... # 0x3 + + class KnownHeaders(object): + ContentTypeHeader : QNetworkRequest.KnownHeaders = ... # 0x0 + ContentLengthHeader : QNetworkRequest.KnownHeaders = ... # 0x1 + LocationHeader : QNetworkRequest.KnownHeaders = ... # 0x2 + LastModifiedHeader : QNetworkRequest.KnownHeaders = ... # 0x3 + CookieHeader : QNetworkRequest.KnownHeaders = ... # 0x4 + SetCookieHeader : QNetworkRequest.KnownHeaders = ... # 0x5 + ContentDispositionHeader : QNetworkRequest.KnownHeaders = ... # 0x6 + UserAgentHeader : QNetworkRequest.KnownHeaders = ... # 0x7 + ServerHeader : QNetworkRequest.KnownHeaders = ... # 0x8 + IfModifiedSinceHeader : QNetworkRequest.KnownHeaders = ... # 0x9 + ETagHeader : QNetworkRequest.KnownHeaders = ... # 0xa + IfMatchHeader : QNetworkRequest.KnownHeaders = ... # 0xb + IfNoneMatchHeader : QNetworkRequest.KnownHeaders = ... # 0xc + + class LoadControl(object): + Automatic : QNetworkRequest.LoadControl = ... # 0x0 + Manual : QNetworkRequest.LoadControl = ... # 0x1 + + class Priority(object): + HighPriority : QNetworkRequest.Priority = ... # 0x1 + NormalPriority : QNetworkRequest.Priority = ... # 0x3 + LowPriority : QNetworkRequest.Priority = ... # 0x5 + + class RedirectPolicy(object): + ManualRedirectPolicy : QNetworkRequest.RedirectPolicy = ... # 0x0 + NoLessSafeRedirectPolicy : QNetworkRequest.RedirectPolicy = ... # 0x1 + SameOriginRedirectPolicy : QNetworkRequest.RedirectPolicy = ... # 0x2 + UserVerifiedRedirectPolicy: QNetworkRequest.RedirectPolicy = ... # 0x3 + + class TransferTimeoutConstant(object): + DefaultTransferTimeoutConstant: QNetworkRequest.TransferTimeoutConstant = ... # 0x7530 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtNetwork.QNetworkRequest) -> None: ... + @typing.overload + def __init__(self, url:PySide2.QtCore.QUrl) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def attribute(self, code:PySide2.QtNetwork.QNetworkRequest.Attribute, defaultValue:typing.Any=...) -> typing.Any: ... + def hasRawHeader(self, headerName:PySide2.QtCore.QByteArray) -> bool: ... + def header(self, header:PySide2.QtNetwork.QNetworkRequest.KnownHeaders) -> typing.Any: ... + def maximumRedirectsAllowed(self) -> int: ... + def originatingObject(self) -> PySide2.QtCore.QObject: ... + def peerVerifyName(self) -> str: ... + def priority(self) -> PySide2.QtNetwork.QNetworkRequest.Priority: ... + def rawHeader(self, headerName:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QByteArray: ... + def rawHeaderList(self) -> typing.List: ... + def setAttribute(self, code:PySide2.QtNetwork.QNetworkRequest.Attribute, value:typing.Any) -> None: ... + def setHeader(self, header:PySide2.QtNetwork.QNetworkRequest.KnownHeaders, value:typing.Any) -> None: ... + def setMaximumRedirectsAllowed(self, maximumRedirectsAllowed:int) -> None: ... + def setOriginatingObject(self, object:PySide2.QtCore.QObject) -> None: ... + def setPeerVerifyName(self, peerName:str) -> None: ... + def setPriority(self, priority:PySide2.QtNetwork.QNetworkRequest.Priority) -> None: ... + def setRawHeader(self, headerName:PySide2.QtCore.QByteArray, value:PySide2.QtCore.QByteArray) -> None: ... + def setSslConfiguration(self, configuration:PySide2.QtNetwork.QSslConfiguration) -> None: ... + def setTransferTimeout(self, timeout:int=...) -> None: ... + def setUrl(self, url:PySide2.QtCore.QUrl) -> None: ... + def sslConfiguration(self) -> PySide2.QtNetwork.QSslConfiguration: ... + def swap(self, other:PySide2.QtNetwork.QNetworkRequest) -> None: ... + def transferTimeout(self) -> int: ... + def url(self) -> PySide2.QtCore.QUrl: ... + + +class QNetworkSession(PySide2.QtCore.QObject): + Invalid : QNetworkSession = ... # 0x0 + NoPolicy : QNetworkSession = ... # 0x0 + UnknownSessionError : QNetworkSession = ... # 0x0 + NoBackgroundTrafficPolicy: QNetworkSession = ... # 0x1 + NotAvailable : QNetworkSession = ... # 0x1 + SessionAbortedError : QNetworkSession = ... # 0x1 + Connecting : QNetworkSession = ... # 0x2 + RoamingError : QNetworkSession = ... # 0x2 + Connected : QNetworkSession = ... # 0x3 + OperationNotSupportedError: QNetworkSession = ... # 0x3 + Closing : QNetworkSession = ... # 0x4 + InvalidConfigurationError: QNetworkSession = ... # 0x4 + Disconnected : QNetworkSession = ... # 0x5 + Roaming : QNetworkSession = ... # 0x6 + + class SessionError(object): + UnknownSessionError : QNetworkSession.SessionError = ... # 0x0 + SessionAbortedError : QNetworkSession.SessionError = ... # 0x1 + RoamingError : QNetworkSession.SessionError = ... # 0x2 + OperationNotSupportedError: QNetworkSession.SessionError = ... # 0x3 + InvalidConfigurationError: QNetworkSession.SessionError = ... # 0x4 + + class State(object): + Invalid : QNetworkSession.State = ... # 0x0 + NotAvailable : QNetworkSession.State = ... # 0x1 + Connecting : QNetworkSession.State = ... # 0x2 + Connected : QNetworkSession.State = ... # 0x3 + Closing : QNetworkSession.State = ... # 0x4 + Disconnected : QNetworkSession.State = ... # 0x5 + Roaming : QNetworkSession.State = ... # 0x6 + + class UsagePolicies(object): ... + + class UsagePolicy(object): + NoPolicy : QNetworkSession.UsagePolicy = ... # 0x0 + NoBackgroundTrafficPolicy: QNetworkSession.UsagePolicy = ... # 0x1 + + def __init__(self, connConfig:PySide2.QtNetwork.QNetworkConfiguration, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def accept(self) -> None: ... + def activeTime(self) -> int: ... + def bytesReceived(self) -> int: ... + def bytesWritten(self) -> int: ... + def close(self) -> None: ... + def configuration(self) -> PySide2.QtNetwork.QNetworkConfiguration: ... + def connectNotify(self, signal:PySide2.QtCore.QMetaMethod) -> None: ... + def disconnectNotify(self, signal:PySide2.QtCore.QMetaMethod) -> None: ... + def error(self) -> PySide2.QtNetwork.QNetworkSession.SessionError: ... + def errorString(self) -> str: ... + def ignore(self) -> None: ... + def interface(self) -> PySide2.QtNetwork.QNetworkInterface: ... + def isOpen(self) -> bool: ... + def migrate(self) -> None: ... + def open(self) -> None: ... + def reject(self) -> None: ... + def sessionProperty(self, key:str) -> typing.Any: ... + def setSessionProperty(self, key:str, value:typing.Any) -> None: ... + def state(self) -> PySide2.QtNetwork.QNetworkSession.State: ... + def stop(self) -> None: ... + def usagePolicies(self) -> PySide2.QtNetwork.QNetworkSession.UsagePolicies: ... + def waitForOpened(self, msecs:int=...) -> bool: ... + + +class QOcspCertificateStatus(object): + Good : QOcspCertificateStatus = ... # 0x0 + Revoked : QOcspCertificateStatus = ... # 0x1 + Unknown : QOcspCertificateStatus = ... # 0x2 + + +class QOcspResponse(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtNetwork.QOcspResponse) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def certificateStatus(self) -> PySide2.QtNetwork.QOcspCertificateStatus: ... + def revocationReason(self) -> PySide2.QtNetwork.QOcspRevocationReason: ... + def subject(self) -> PySide2.QtNetwork.QSslCertificate: ... + def swap(self, other:PySide2.QtNetwork.QOcspResponse) -> None: ... + + +class QOcspRevocationReason(object): + None_ : QOcspRevocationReason = ... # -0x1 + Unspecified : QOcspRevocationReason = ... # 0x0 + KeyCompromise : QOcspRevocationReason = ... # 0x1 + CACompromise : QOcspRevocationReason = ... # 0x2 + AffiliationChanged : QOcspRevocationReason = ... # 0x3 + Superseded : QOcspRevocationReason = ... # 0x4 + CessationOfOperation : QOcspRevocationReason = ... # 0x5 + CertificateHold : QOcspRevocationReason = ... # 0x6 + RemoveFromCRL : QOcspRevocationReason = ... # 0x7 + + +class QPasswordDigestor(Shiboken.Object): + @staticmethod + def deriveKeyPbkdf1(algorithm:PySide2.QtCore.QCryptographicHash.Algorithm, password:PySide2.QtCore.QByteArray, salt:PySide2.QtCore.QByteArray, iterations:int, dkLen:int) -> PySide2.QtCore.QByteArray: ... + @staticmethod + def deriveKeyPbkdf2(algorithm:PySide2.QtCore.QCryptographicHash.Algorithm, password:PySide2.QtCore.QByteArray, salt:PySide2.QtCore.QByteArray, iterations:int, dkLen:int) -> PySide2.QtCore.QByteArray: ... + + +class QSsl(Shiboken.Object): + UnknownProtocol : QSsl = ... # -0x1 + EmailEntry : QSsl = ... # 0x0 + Opaque : QSsl = ... # 0x0 + Pem : QSsl = ... # 0x0 + PrivateKey : QSsl = ... # 0x0 + SslV3 : QSsl = ... # 0x0 + Der : QSsl = ... # 0x1 + DnsEntry : QSsl = ... # 0x1 + PublicKey : QSsl = ... # 0x1 + Rsa : QSsl = ... # 0x1 + SslOptionDisableEmptyFragments: QSsl = ... # 0x1 + SslV2 : QSsl = ... # 0x1 + Dsa : QSsl = ... # 0x2 + IpAddressEntry : QSsl = ... # 0x2 + SslOptionDisableSessionTickets: QSsl = ... # 0x2 + TlsV1_0 : QSsl = ... # 0x2 + Ec : QSsl = ... # 0x3 + TlsV1_1 : QSsl = ... # 0x3 + Dh : QSsl = ... # 0x4 + SslOptionDisableCompression: QSsl = ... # 0x4 + TlsV1_2 : QSsl = ... # 0x4 + AnyProtocol : QSsl = ... # 0x5 + TlsV1SslV3 : QSsl = ... # 0x6 + SecureProtocols : QSsl = ... # 0x7 + SslOptionDisableServerNameIndication: QSsl = ... # 0x8 + TlsV1_0OrLater : QSsl = ... # 0x8 + TlsV1_1OrLater : QSsl = ... # 0x9 + TlsV1_2OrLater : QSsl = ... # 0xa + DtlsV1_0 : QSsl = ... # 0xb + DtlsV1_0OrLater : QSsl = ... # 0xc + DtlsV1_2 : QSsl = ... # 0xd + DtlsV1_2OrLater : QSsl = ... # 0xe + TlsV1_3 : QSsl = ... # 0xf + SslOptionDisableLegacyRenegotiation: QSsl = ... # 0x10 + TlsV1_3OrLater : QSsl = ... # 0x10 + SslOptionDisableSessionSharing: QSsl = ... # 0x20 + SslOptionDisableSessionPersistence: QSsl = ... # 0x40 + SslOptionDisableServerCipherPreference: QSsl = ... # 0x80 + + class AlternativeNameEntryType(object): + EmailEntry : QSsl.AlternativeNameEntryType = ... # 0x0 + DnsEntry : QSsl.AlternativeNameEntryType = ... # 0x1 + IpAddressEntry : QSsl.AlternativeNameEntryType = ... # 0x2 + + class EncodingFormat(object): + Pem : QSsl.EncodingFormat = ... # 0x0 + Der : QSsl.EncodingFormat = ... # 0x1 + + class KeyAlgorithm(object): + Opaque : QSsl.KeyAlgorithm = ... # 0x0 + Rsa : QSsl.KeyAlgorithm = ... # 0x1 + Dsa : QSsl.KeyAlgorithm = ... # 0x2 + Ec : QSsl.KeyAlgorithm = ... # 0x3 + Dh : QSsl.KeyAlgorithm = ... # 0x4 + + class KeyType(object): + PrivateKey : QSsl.KeyType = ... # 0x0 + PublicKey : QSsl.KeyType = ... # 0x1 + + class SslOption(object): + SslOptionDisableEmptyFragments: QSsl.SslOption = ... # 0x1 + SslOptionDisableSessionTickets: QSsl.SslOption = ... # 0x2 + SslOptionDisableCompression: QSsl.SslOption = ... # 0x4 + SslOptionDisableServerNameIndication: QSsl.SslOption = ... # 0x8 + SslOptionDisableLegacyRenegotiation: QSsl.SslOption = ... # 0x10 + SslOptionDisableSessionSharing: QSsl.SslOption = ... # 0x20 + SslOptionDisableSessionPersistence: QSsl.SslOption = ... # 0x40 + SslOptionDisableServerCipherPreference: QSsl.SslOption = ... # 0x80 + + class SslOptions(object): ... + + class SslProtocol(object): + UnknownProtocol : QSsl.SslProtocol = ... # -0x1 + SslV3 : QSsl.SslProtocol = ... # 0x0 + SslV2 : QSsl.SslProtocol = ... # 0x1 + TlsV1_0 : QSsl.SslProtocol = ... # 0x2 + TlsV1_1 : QSsl.SslProtocol = ... # 0x3 + TlsV1_2 : QSsl.SslProtocol = ... # 0x4 + AnyProtocol : QSsl.SslProtocol = ... # 0x5 + TlsV1SslV3 : QSsl.SslProtocol = ... # 0x6 + SecureProtocols : QSsl.SslProtocol = ... # 0x7 + TlsV1_0OrLater : QSsl.SslProtocol = ... # 0x8 + TlsV1_1OrLater : QSsl.SslProtocol = ... # 0x9 + TlsV1_2OrLater : QSsl.SslProtocol = ... # 0xa + DtlsV1_0 : QSsl.SslProtocol = ... # 0xb + DtlsV1_0OrLater : QSsl.SslProtocol = ... # 0xc + DtlsV1_2 : QSsl.SslProtocol = ... # 0xd + DtlsV1_2OrLater : QSsl.SslProtocol = ... # 0xe + TlsV1_3 : QSsl.SslProtocol = ... # 0xf + TlsV1_3OrLater : QSsl.SslProtocol = ... # 0x10 + + +class QSslCertificate(Shiboken.Object): + Organization : QSslCertificate = ... # 0x0 + CommonName : QSslCertificate = ... # 0x1 + LocalityName : QSslCertificate = ... # 0x2 + OrganizationalUnitName : QSslCertificate = ... # 0x3 + CountryName : QSslCertificate = ... # 0x4 + StateOrProvinceName : QSslCertificate = ... # 0x5 + DistinguishedNameQualifier: QSslCertificate = ... # 0x6 + SerialNumber : QSslCertificate = ... # 0x7 + EmailAddress : QSslCertificate = ... # 0x8 + + class PatternSyntax(object): + RegularExpression : QSslCertificate.PatternSyntax = ... # 0x0 + Wildcard : QSslCertificate.PatternSyntax = ... # 0x1 + FixedString : QSslCertificate.PatternSyntax = ... # 0x2 + + class SubjectInfo(object): + Organization : QSslCertificate.SubjectInfo = ... # 0x0 + CommonName : QSslCertificate.SubjectInfo = ... # 0x1 + LocalityName : QSslCertificate.SubjectInfo = ... # 0x2 + OrganizationalUnitName : QSslCertificate.SubjectInfo = ... # 0x3 + CountryName : QSslCertificate.SubjectInfo = ... # 0x4 + StateOrProvinceName : QSslCertificate.SubjectInfo = ... # 0x5 + DistinguishedNameQualifier: QSslCertificate.SubjectInfo = ... # 0x6 + SerialNumber : QSslCertificate.SubjectInfo = ... # 0x7 + EmailAddress : QSslCertificate.SubjectInfo = ... # 0x8 + + @typing.overload + def __init__(self, data:PySide2.QtCore.QByteArray=..., format:PySide2.QtNetwork.QSsl.EncodingFormat=...) -> None: ... + @typing.overload + def __init__(self, device:PySide2.QtCore.QIODevice, format:PySide2.QtNetwork.QSsl.EncodingFormat=...) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtNetwork.QSslCertificate) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def clear(self) -> None: ... + def digest(self, algorithm:PySide2.QtCore.QCryptographicHash.Algorithm=...) -> PySide2.QtCore.QByteArray: ... + def effectiveDate(self) -> PySide2.QtCore.QDateTime: ... + def expiryDate(self) -> PySide2.QtCore.QDateTime: ... + def extensions(self) -> typing.List: ... + @staticmethod + def fromData(data:PySide2.QtCore.QByteArray, format:PySide2.QtNetwork.QSsl.EncodingFormat=...) -> typing.List: ... + @staticmethod + def fromDevice(device:PySide2.QtCore.QIODevice, format:PySide2.QtNetwork.QSsl.EncodingFormat=...) -> typing.List: ... + @typing.overload + @staticmethod + def fromPath(path:str, format:PySide2.QtNetwork.QSsl.EncodingFormat, syntax:PySide2.QtCore.QRegExp.PatternSyntax) -> typing.List: ... + @typing.overload + @staticmethod + def fromPath(path:str, format:PySide2.QtNetwork.QSsl.EncodingFormat=..., syntax:PySide2.QtNetwork.QSslCertificate.PatternSyntax=...) -> typing.List: ... + def handle(self) -> int: ... + @staticmethod + def importPkcs12(device:PySide2.QtCore.QIODevice, key:PySide2.QtNetwork.QSslKey, cert:PySide2.QtNetwork.QSslCertificate, caCertificates:typing.Optional[typing.Sequence[PySide2.QtNetwork.QSslCertificate]]=..., passPhrase:PySide2.QtCore.QByteArray=...) -> bool: ... + def isBlacklisted(self) -> bool: ... + def isNull(self) -> bool: ... + def isSelfSigned(self) -> bool: ... + def issuerDisplayName(self) -> str: ... + @typing.overload + def issuerInfo(self, attribute:PySide2.QtCore.QByteArray) -> typing.List: ... + @typing.overload + def issuerInfo(self, info:PySide2.QtNetwork.QSslCertificate.SubjectInfo) -> typing.List: ... + def issuerInfoAttributes(self) -> typing.List: ... + def publicKey(self) -> PySide2.QtNetwork.QSslKey: ... + def serialNumber(self) -> PySide2.QtCore.QByteArray: ... + def subjectAlternativeNames(self) -> typing.Dict: ... + def subjectDisplayName(self) -> str: ... + @typing.overload + def subjectInfo(self, attribute:PySide2.QtCore.QByteArray) -> typing.List: ... + @typing.overload + def subjectInfo(self, info:PySide2.QtNetwork.QSslCertificate.SubjectInfo) -> typing.List: ... + def subjectInfoAttributes(self) -> typing.List: ... + def swap(self, other:PySide2.QtNetwork.QSslCertificate) -> None: ... + def toDer(self) -> PySide2.QtCore.QByteArray: ... + def toPem(self) -> PySide2.QtCore.QByteArray: ... + def toText(self) -> str: ... + @staticmethod + def verify(certificateChain:typing.Sequence, hostName:str=...) -> typing.List: ... + def version(self) -> PySide2.QtCore.QByteArray: ... + + +class QSslCertificateExtension(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtNetwork.QSslCertificateExtension) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def isCritical(self) -> bool: ... + def isSupported(self) -> bool: ... + def name(self) -> str: ... + def oid(self) -> str: ... + def swap(self, other:PySide2.QtNetwork.QSslCertificateExtension) -> None: ... + def value(self) -> typing.Any: ... + + +class QSslCipher(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, name:str) -> None: ... + @typing.overload + def __init__(self, name:str, protocol:PySide2.QtNetwork.QSsl.SslProtocol) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtNetwork.QSslCipher) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def authenticationMethod(self) -> str: ... + def encryptionMethod(self) -> str: ... + def isNull(self) -> bool: ... + def keyExchangeMethod(self) -> str: ... + def name(self) -> str: ... + def protocol(self) -> PySide2.QtNetwork.QSsl.SslProtocol: ... + def protocolString(self) -> str: ... + def supportedBits(self) -> int: ... + def swap(self, other:PySide2.QtNetwork.QSslCipher) -> None: ... + def usedBits(self) -> int: ... + + +class QSslConfiguration(Shiboken.Object): + NextProtocolNegotiationNone: QSslConfiguration = ... # 0x0 + NextProtocolNegotiationNegotiated: QSslConfiguration = ... # 0x1 + NextProtocolNegotiationUnsupported: QSslConfiguration = ... # 0x2 + + class NextProtocolNegotiationStatus(object): + NextProtocolNegotiationNone: QSslConfiguration.NextProtocolNegotiationStatus = ... # 0x0 + NextProtocolNegotiationNegotiated: QSslConfiguration.NextProtocolNegotiationStatus = ... # 0x1 + NextProtocolNegotiationUnsupported: QSslConfiguration.NextProtocolNegotiationStatus = ... # 0x2 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtNetwork.QSslConfiguration) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def addCaCertificate(self, certificate:PySide2.QtNetwork.QSslCertificate) -> None: ... + @typing.overload + def addCaCertificates(self, certificates:typing.Sequence) -> None: ... + @typing.overload + def addCaCertificates(self, path:str, format:PySide2.QtNetwork.QSsl.EncodingFormat=..., syntax:PySide2.QtNetwork.QSslCertificate.PatternSyntax=...) -> bool: ... + def allowedNextProtocols(self) -> typing.List: ... + def backendConfiguration(self) -> typing.Dict: ... + def caCertificates(self) -> typing.List: ... + def ciphers(self) -> typing.List: ... + @staticmethod + def defaultConfiguration() -> PySide2.QtNetwork.QSslConfiguration: ... + @staticmethod + def defaultDtlsConfiguration() -> PySide2.QtNetwork.QSslConfiguration: ... + def diffieHellmanParameters(self) -> PySide2.QtNetwork.QSslDiffieHellmanParameters: ... + def dtlsCookieVerificationEnabled(self) -> bool: ... + def ephemeralServerKey(self) -> PySide2.QtNetwork.QSslKey: ... + def isNull(self) -> bool: ... + def localCertificate(self) -> PySide2.QtNetwork.QSslCertificate: ... + def localCertificateChain(self) -> typing.List: ... + def nextNegotiatedProtocol(self) -> PySide2.QtCore.QByteArray: ... + def nextProtocolNegotiationStatus(self) -> PySide2.QtNetwork.QSslConfiguration.NextProtocolNegotiationStatus: ... + def ocspStaplingEnabled(self) -> bool: ... + def peerCertificate(self) -> PySide2.QtNetwork.QSslCertificate: ... + def peerCertificateChain(self) -> typing.List: ... + def peerVerifyDepth(self) -> int: ... + def peerVerifyMode(self) -> PySide2.QtNetwork.QSslSocket.PeerVerifyMode: ... + def preSharedKeyIdentityHint(self) -> PySide2.QtCore.QByteArray: ... + def privateKey(self) -> PySide2.QtNetwork.QSslKey: ... + def protocol(self) -> PySide2.QtNetwork.QSsl.SslProtocol: ... + def sessionCipher(self) -> PySide2.QtNetwork.QSslCipher: ... + def sessionProtocol(self) -> PySide2.QtNetwork.QSsl.SslProtocol: ... + def sessionTicket(self) -> PySide2.QtCore.QByteArray: ... + def sessionTicketLifeTimeHint(self) -> int: ... + def setAllowedNextProtocols(self, protocols:typing.Sequence) -> None: ... + def setBackendConfiguration(self, backendConfiguration:typing.Dict=...) -> None: ... + def setBackendConfigurationOption(self, name:PySide2.QtCore.QByteArray, value:typing.Any) -> None: ... + def setCaCertificates(self, certificates:typing.Sequence) -> None: ... + def setCiphers(self, ciphers:typing.Sequence) -> None: ... + @staticmethod + def setDefaultConfiguration(configuration:PySide2.QtNetwork.QSslConfiguration) -> None: ... + @staticmethod + def setDefaultDtlsConfiguration(configuration:PySide2.QtNetwork.QSslConfiguration) -> None: ... + def setDiffieHellmanParameters(self, dhparams:PySide2.QtNetwork.QSslDiffieHellmanParameters) -> None: ... + def setDtlsCookieVerificationEnabled(self, enable:bool) -> None: ... + def setLocalCertificate(self, certificate:PySide2.QtNetwork.QSslCertificate) -> None: ... + def setLocalCertificateChain(self, localChain:typing.Sequence) -> None: ... + def setOcspStaplingEnabled(self, enable:bool) -> None: ... + def setPeerVerifyDepth(self, depth:int) -> None: ... + def setPeerVerifyMode(self, mode:PySide2.QtNetwork.QSslSocket.PeerVerifyMode) -> None: ... + def setPreSharedKeyIdentityHint(self, hint:PySide2.QtCore.QByteArray) -> None: ... + def setPrivateKey(self, key:PySide2.QtNetwork.QSslKey) -> None: ... + def setProtocol(self, protocol:PySide2.QtNetwork.QSsl.SslProtocol) -> None: ... + def setSessionTicket(self, sessionTicket:PySide2.QtCore.QByteArray) -> None: ... + def setSslOption(self, option:PySide2.QtNetwork.QSsl.SslOption, on:bool) -> None: ... + @staticmethod + def supportedCiphers() -> typing.List: ... + def swap(self, other:PySide2.QtNetwork.QSslConfiguration) -> None: ... + @staticmethod + def systemCaCertificates() -> typing.List: ... + def testSslOption(self, option:PySide2.QtNetwork.QSsl.SslOption) -> bool: ... + + +class QSslDiffieHellmanParameters(Shiboken.Object): + NoError : QSslDiffieHellmanParameters = ... # 0x0 + InvalidInputDataError : QSslDiffieHellmanParameters = ... # 0x1 + UnsafeParametersError : QSslDiffieHellmanParameters = ... # 0x2 + + class Error(object): + NoError : QSslDiffieHellmanParameters.Error = ... # 0x0 + InvalidInputDataError : QSslDiffieHellmanParameters.Error = ... # 0x1 + UnsafeParametersError : QSslDiffieHellmanParameters.Error = ... # 0x2 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtNetwork.QSslDiffieHellmanParameters) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @staticmethod + def defaultParameters() -> PySide2.QtNetwork.QSslDiffieHellmanParameters: ... + def error(self) -> PySide2.QtNetwork.QSslDiffieHellmanParameters.Error: ... + def errorString(self) -> str: ... + @typing.overload + @staticmethod + def fromEncoded(device:PySide2.QtCore.QIODevice, format:PySide2.QtNetwork.QSsl.EncodingFormat=...) -> PySide2.QtNetwork.QSslDiffieHellmanParameters: ... + @typing.overload + @staticmethod + def fromEncoded(encoded:PySide2.QtCore.QByteArray, format:PySide2.QtNetwork.QSsl.EncodingFormat=...) -> PySide2.QtNetwork.QSslDiffieHellmanParameters: ... + def isEmpty(self) -> bool: ... + def isValid(self) -> bool: ... + def swap(self, other:PySide2.QtNetwork.QSslDiffieHellmanParameters) -> None: ... + + +class QSslError(Shiboken.Object): + UnspecifiedError : QSslError = ... # -0x1 + NoError : QSslError = ... # 0x0 + UnableToGetIssuerCertificate: QSslError = ... # 0x1 + UnableToDecryptCertificateSignature: QSslError = ... # 0x2 + UnableToDecodeIssuerPublicKey: QSslError = ... # 0x3 + CertificateSignatureFailed: QSslError = ... # 0x4 + CertificateNotYetValid : QSslError = ... # 0x5 + CertificateExpired : QSslError = ... # 0x6 + InvalidNotBeforeField : QSslError = ... # 0x7 + InvalidNotAfterField : QSslError = ... # 0x8 + SelfSignedCertificate : QSslError = ... # 0x9 + SelfSignedCertificateInChain: QSslError = ... # 0xa + UnableToGetLocalIssuerCertificate: QSslError = ... # 0xb + UnableToVerifyFirstCertificate: QSslError = ... # 0xc + CertificateRevoked : QSslError = ... # 0xd + InvalidCaCertificate : QSslError = ... # 0xe + PathLengthExceeded : QSslError = ... # 0xf + InvalidPurpose : QSslError = ... # 0x10 + CertificateUntrusted : QSslError = ... # 0x11 + CertificateRejected : QSslError = ... # 0x12 + SubjectIssuerMismatch : QSslError = ... # 0x13 + AuthorityIssuerSerialNumberMismatch: QSslError = ... # 0x14 + NoPeerCertificate : QSslError = ... # 0x15 + HostNameMismatch : QSslError = ... # 0x16 + NoSslSupport : QSslError = ... # 0x17 + CertificateBlacklisted : QSslError = ... # 0x18 + CertificateStatusUnknown : QSslError = ... # 0x19 + OcspNoResponseFound : QSslError = ... # 0x1a + OcspMalformedRequest : QSslError = ... # 0x1b + OcspMalformedResponse : QSslError = ... # 0x1c + OcspInternalError : QSslError = ... # 0x1d + OcspTryLater : QSslError = ... # 0x1e + OcspSigRequred : QSslError = ... # 0x1f + OcspUnauthorized : QSslError = ... # 0x20 + OcspResponseCannotBeTrusted: QSslError = ... # 0x21 + OcspResponseCertIdUnknown: QSslError = ... # 0x22 + OcspResponseExpired : QSslError = ... # 0x23 + OcspStatusUnknown : QSslError = ... # 0x24 + + class SslError(object): + UnspecifiedError : QSslError.SslError = ... # -0x1 + NoError : QSslError.SslError = ... # 0x0 + UnableToGetIssuerCertificate: QSslError.SslError = ... # 0x1 + UnableToDecryptCertificateSignature: QSslError.SslError = ... # 0x2 + UnableToDecodeIssuerPublicKey: QSslError.SslError = ... # 0x3 + CertificateSignatureFailed: QSslError.SslError = ... # 0x4 + CertificateNotYetValid : QSslError.SslError = ... # 0x5 + CertificateExpired : QSslError.SslError = ... # 0x6 + InvalidNotBeforeField : QSslError.SslError = ... # 0x7 + InvalidNotAfterField : QSslError.SslError = ... # 0x8 + SelfSignedCertificate : QSslError.SslError = ... # 0x9 + SelfSignedCertificateInChain: QSslError.SslError = ... # 0xa + UnableToGetLocalIssuerCertificate: QSslError.SslError = ... # 0xb + UnableToVerifyFirstCertificate: QSslError.SslError = ... # 0xc + CertificateRevoked : QSslError.SslError = ... # 0xd + InvalidCaCertificate : QSslError.SslError = ... # 0xe + PathLengthExceeded : QSslError.SslError = ... # 0xf + InvalidPurpose : QSslError.SslError = ... # 0x10 + CertificateUntrusted : QSslError.SslError = ... # 0x11 + CertificateRejected : QSslError.SslError = ... # 0x12 + SubjectIssuerMismatch : QSslError.SslError = ... # 0x13 + AuthorityIssuerSerialNumberMismatch: QSslError.SslError = ... # 0x14 + NoPeerCertificate : QSslError.SslError = ... # 0x15 + HostNameMismatch : QSslError.SslError = ... # 0x16 + NoSslSupport : QSslError.SslError = ... # 0x17 + CertificateBlacklisted : QSslError.SslError = ... # 0x18 + CertificateStatusUnknown : QSslError.SslError = ... # 0x19 + OcspNoResponseFound : QSslError.SslError = ... # 0x1a + OcspMalformedRequest : QSslError.SslError = ... # 0x1b + OcspMalformedResponse : QSslError.SslError = ... # 0x1c + OcspInternalError : QSslError.SslError = ... # 0x1d + OcspTryLater : QSslError.SslError = ... # 0x1e + OcspSigRequred : QSslError.SslError = ... # 0x1f + OcspUnauthorized : QSslError.SslError = ... # 0x20 + OcspResponseCannotBeTrusted: QSslError.SslError = ... # 0x21 + OcspResponseCertIdUnknown: QSslError.SslError = ... # 0x22 + OcspResponseExpired : QSslError.SslError = ... # 0x23 + OcspStatusUnknown : QSslError.SslError = ... # 0x24 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, error:PySide2.QtNetwork.QSslError.SslError) -> None: ... + @typing.overload + def __init__(self, error:PySide2.QtNetwork.QSslError.SslError, certificate:PySide2.QtNetwork.QSslCertificate) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtNetwork.QSslError) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def certificate(self) -> PySide2.QtNetwork.QSslCertificate: ... + def error(self) -> PySide2.QtNetwork.QSslError.SslError: ... + def errorString(self) -> str: ... + def swap(self, other:PySide2.QtNetwork.QSslError) -> None: ... + + +class QSslKey(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, device:PySide2.QtCore.QIODevice, algorithm:PySide2.QtNetwork.QSsl.KeyAlgorithm, format:PySide2.QtNetwork.QSsl.EncodingFormat=..., type:PySide2.QtNetwork.QSsl.KeyType=..., passPhrase:PySide2.QtCore.QByteArray=...) -> None: ... + @typing.overload + def __init__(self, encoded:PySide2.QtCore.QByteArray, algorithm:PySide2.QtNetwork.QSsl.KeyAlgorithm, format:PySide2.QtNetwork.QSsl.EncodingFormat=..., type:PySide2.QtNetwork.QSsl.KeyType=..., passPhrase:PySide2.QtCore.QByteArray=...) -> None: ... + @typing.overload + def __init__(self, handle:int, type:PySide2.QtNetwork.QSsl.KeyType=...) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtNetwork.QSslKey) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def algorithm(self) -> PySide2.QtNetwork.QSsl.KeyAlgorithm: ... + def clear(self) -> None: ... + def handle(self) -> int: ... + def isNull(self) -> bool: ... + def length(self) -> int: ... + def swap(self, other:PySide2.QtNetwork.QSslKey) -> None: ... + def toDer(self, passPhrase:PySide2.QtCore.QByteArray=...) -> PySide2.QtCore.QByteArray: ... + def toPem(self, passPhrase:PySide2.QtCore.QByteArray=...) -> PySide2.QtCore.QByteArray: ... + def type(self) -> PySide2.QtNetwork.QSsl.KeyType: ... + + +class QSslPreSharedKeyAuthenticator(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, authenticator:PySide2.QtNetwork.QSslPreSharedKeyAuthenticator) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def identity(self) -> PySide2.QtCore.QByteArray: ... + def identityHint(self) -> PySide2.QtCore.QByteArray: ... + def maximumIdentityLength(self) -> int: ... + def maximumPreSharedKeyLength(self) -> int: ... + def preSharedKey(self) -> PySide2.QtCore.QByteArray: ... + def setIdentity(self, identity:PySide2.QtCore.QByteArray) -> None: ... + def setPreSharedKey(self, preSharedKey:PySide2.QtCore.QByteArray) -> None: ... + def swap(self, other:PySide2.QtNetwork.QSslPreSharedKeyAuthenticator) -> None: ... + + +class QSslSocket(PySide2.QtNetwork.QTcpSocket): + UnencryptedMode : QSslSocket = ... # 0x0 + VerifyNone : QSslSocket = ... # 0x0 + QueryPeer : QSslSocket = ... # 0x1 + SslClientMode : QSslSocket = ... # 0x1 + SslServerMode : QSslSocket = ... # 0x2 + VerifyPeer : QSslSocket = ... # 0x2 + AutoVerifyPeer : QSslSocket = ... # 0x3 + + class PeerVerifyMode(object): + VerifyNone : QSslSocket.PeerVerifyMode = ... # 0x0 + QueryPeer : QSslSocket.PeerVerifyMode = ... # 0x1 + VerifyPeer : QSslSocket.PeerVerifyMode = ... # 0x2 + AutoVerifyPeer : QSslSocket.PeerVerifyMode = ... # 0x3 + + class SslMode(object): + UnencryptedMode : QSslSocket.SslMode = ... # 0x0 + SslClientMode : QSslSocket.SslMode = ... # 0x1 + SslServerMode : QSslSocket.SslMode = ... # 0x2 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def abort(self) -> None: ... + def addCaCertificate(self, certificate:PySide2.QtNetwork.QSslCertificate) -> None: ... + @typing.overload + def addCaCertificates(self, certificates:typing.Sequence) -> None: ... + @typing.overload + def addCaCertificates(self, path:str, format:PySide2.QtNetwork.QSsl.EncodingFormat=..., syntax:PySide2.QtCore.QRegExp.PatternSyntax=...) -> bool: ... + @staticmethod + def addDefaultCaCertificate(certificate:PySide2.QtNetwork.QSslCertificate) -> None: ... + @typing.overload + @staticmethod + def addDefaultCaCertificates(certificates:typing.Sequence) -> None: ... + @typing.overload + @staticmethod + def addDefaultCaCertificates(path:str, format:PySide2.QtNetwork.QSsl.EncodingFormat=..., syntax:PySide2.QtCore.QRegExp.PatternSyntax=...) -> bool: ... + def atEnd(self) -> bool: ... + def bytesAvailable(self) -> int: ... + def bytesToWrite(self) -> int: ... + def caCertificates(self) -> typing.List: ... + def canReadLine(self) -> bool: ... + def ciphers(self) -> typing.List: ... + def close(self) -> None: ... + @typing.overload + def connectToHost(self, address:PySide2.QtNetwork.QHostAddress, port:int, mode:PySide2.QtCore.QIODevice.OpenMode=...) -> None: ... + @typing.overload + def connectToHost(self, hostName:str, port:int, openMode:PySide2.QtCore.QIODevice.OpenMode=..., protocol:PySide2.QtNetwork.QAbstractSocket.NetworkLayerProtocol=...) -> None: ... + @typing.overload + def connectToHostEncrypted(self, hostName:str, port:int, mode:PySide2.QtCore.QIODevice.OpenMode=..., protocol:PySide2.QtNetwork.QAbstractSocket.NetworkLayerProtocol=...) -> None: ... + @typing.overload + def connectToHostEncrypted(self, hostName:str, port:int, sslPeerName:str, mode:PySide2.QtCore.QIODevice.OpenMode=..., protocol:PySide2.QtNetwork.QAbstractSocket.NetworkLayerProtocol=...) -> None: ... + @staticmethod + def defaultCaCertificates() -> typing.List: ... + @staticmethod + def defaultCiphers() -> typing.List: ... + def disconnectFromHost(self) -> None: ... + def encryptedBytesAvailable(self) -> int: ... + def encryptedBytesToWrite(self) -> int: ... + def flush(self) -> bool: ... + @typing.overload + def ignoreSslErrors(self) -> None: ... + @typing.overload + def ignoreSslErrors(self, errors:typing.Sequence) -> None: ... + def isEncrypted(self) -> bool: ... + def localCertificate(self) -> PySide2.QtNetwork.QSslCertificate: ... + def localCertificateChain(self) -> typing.List: ... + def mode(self) -> PySide2.QtNetwork.QSslSocket.SslMode: ... + def ocspResponses(self) -> typing.List: ... + def peerCertificate(self) -> PySide2.QtNetwork.QSslCertificate: ... + def peerCertificateChain(self) -> typing.List: ... + def peerVerifyDepth(self) -> int: ... + def peerVerifyMode(self) -> PySide2.QtNetwork.QSslSocket.PeerVerifyMode: ... + def peerVerifyName(self) -> str: ... + def privateKey(self) -> PySide2.QtNetwork.QSslKey: ... + def protocol(self) -> PySide2.QtNetwork.QSsl.SslProtocol: ... + def readData(self, data:bytes, maxlen:int) -> int: ... + def resume(self) -> None: ... + def sessionCipher(self) -> PySide2.QtNetwork.QSslCipher: ... + def sessionProtocol(self) -> PySide2.QtNetwork.QSsl.SslProtocol: ... + def setCaCertificates(self, certificates:typing.Sequence) -> None: ... + @typing.overload + def setCiphers(self, ciphers:typing.Sequence) -> None: ... + @typing.overload + def setCiphers(self, ciphers:str) -> None: ... + @staticmethod + def setDefaultCaCertificates(certificates:typing.Sequence) -> None: ... + @staticmethod + def setDefaultCiphers(ciphers:typing.Sequence) -> None: ... + @typing.overload + def setLocalCertificate(self, certificate:PySide2.QtNetwork.QSslCertificate) -> None: ... + @typing.overload + def setLocalCertificate(self, fileName:str, format:PySide2.QtNetwork.QSsl.EncodingFormat=...) -> None: ... + def setLocalCertificateChain(self, localChain:typing.Sequence) -> None: ... + def setPeerVerifyDepth(self, depth:int) -> None: ... + def setPeerVerifyMode(self, mode:PySide2.QtNetwork.QSslSocket.PeerVerifyMode) -> None: ... + def setPeerVerifyName(self, hostName:str) -> None: ... + @typing.overload + def setPrivateKey(self, fileName:str, algorithm:PySide2.QtNetwork.QSsl.KeyAlgorithm=..., format:PySide2.QtNetwork.QSsl.EncodingFormat=..., passPhrase:PySide2.QtCore.QByteArray=...) -> None: ... + @typing.overload + def setPrivateKey(self, key:PySide2.QtNetwork.QSslKey) -> None: ... + def setProtocol(self, protocol:PySide2.QtNetwork.QSsl.SslProtocol) -> None: ... + def setReadBufferSize(self, size:int) -> None: ... + def setSocketDescriptor(self, socketDescriptor:int, state:PySide2.QtNetwork.QAbstractSocket.SocketState=..., openMode:PySide2.QtCore.QIODevice.OpenMode=...) -> bool: ... + def setSocketOption(self, option:PySide2.QtNetwork.QAbstractSocket.SocketOption, value:typing.Any) -> None: ... + def setSslConfiguration(self, config:PySide2.QtNetwork.QSslConfiguration) -> None: ... + def socketOption(self, option:PySide2.QtNetwork.QAbstractSocket.SocketOption) -> typing.Any: ... + def sslConfiguration(self) -> PySide2.QtNetwork.QSslConfiguration: ... + def sslErrors(self) -> typing.List: ... + def sslHandshakeErrors(self) -> typing.List: ... + @staticmethod + def sslLibraryBuildVersionNumber() -> int: ... + @staticmethod + def sslLibraryBuildVersionString() -> str: ... + @staticmethod + def sslLibraryVersionNumber() -> int: ... + @staticmethod + def sslLibraryVersionString() -> str: ... + def startClientEncryption(self) -> None: ... + def startServerEncryption(self) -> None: ... + @staticmethod + def supportedCiphers() -> typing.List: ... + @staticmethod + def supportsSsl() -> bool: ... + @staticmethod + def systemCaCertificates() -> typing.List: ... + def waitForBytesWritten(self, msecs:int=...) -> bool: ... + def waitForConnected(self, msecs:int=...) -> bool: ... + def waitForDisconnected(self, msecs:int=...) -> bool: ... + def waitForEncrypted(self, msecs:int=...) -> bool: ... + def waitForReadyRead(self, msecs:int=...) -> bool: ... + def writeData(self, data:bytes, len:int) -> int: ... + + +class QTcpServer(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def addPendingConnection(self, socket:PySide2.QtNetwork.QTcpSocket) -> None: ... + def close(self) -> None: ... + def errorString(self) -> str: ... + def hasPendingConnections(self) -> bool: ... + def incomingConnection(self, handle:int) -> None: ... + def isListening(self) -> bool: ... + def listen(self, address:PySide2.QtNetwork.QHostAddress=..., port:int=...) -> bool: ... + def maxPendingConnections(self) -> int: ... + def nextPendingConnection(self) -> PySide2.QtNetwork.QTcpSocket: ... + def pauseAccepting(self) -> None: ... + def proxy(self) -> PySide2.QtNetwork.QNetworkProxy: ... + def resumeAccepting(self) -> None: ... + def serverAddress(self) -> PySide2.QtNetwork.QHostAddress: ... + def serverError(self) -> PySide2.QtNetwork.QAbstractSocket.SocketError: ... + def serverPort(self) -> int: ... + def setMaxPendingConnections(self, numConnections:int) -> None: ... + def setProxy(self, networkProxy:PySide2.QtNetwork.QNetworkProxy) -> None: ... + def setSocketDescriptor(self, socketDescriptor:int) -> bool: ... + def socketDescriptor(self) -> int: ... + def waitForNewConnection(self, msec:int) -> typing.Tuple: ... + + +class QTcpSocket(PySide2.QtNetwork.QAbstractSocket): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + +class QUdpSocket(PySide2.QtNetwork.QAbstractSocket): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def hasPendingDatagrams(self) -> bool: ... + @typing.overload + def joinMulticastGroup(self, groupAddress:PySide2.QtNetwork.QHostAddress) -> bool: ... + @typing.overload + def joinMulticastGroup(self, groupAddress:PySide2.QtNetwork.QHostAddress, iface:PySide2.QtNetwork.QNetworkInterface) -> bool: ... + @typing.overload + def leaveMulticastGroup(self, groupAddress:PySide2.QtNetwork.QHostAddress) -> bool: ... + @typing.overload + def leaveMulticastGroup(self, groupAddress:PySide2.QtNetwork.QHostAddress, iface:PySide2.QtNetwork.QNetworkInterface) -> bool: ... + def multicastInterface(self) -> PySide2.QtNetwork.QNetworkInterface: ... + def pendingDatagramSize(self) -> int: ... + def readDatagram(self, data:bytes, maxlen:int, host:PySide2.QtNetwork.QHostAddress) -> typing.Tuple: ... + def receiveDatagram(self, maxSize:int=...) -> PySide2.QtNetwork.QNetworkDatagram: ... + def setMulticastInterface(self, iface:PySide2.QtNetwork.QNetworkInterface) -> None: ... + @typing.overload + def writeDatagram(self, datagram:PySide2.QtCore.QByteArray, host:PySide2.QtNetwork.QHostAddress, port:int) -> int: ... + @typing.overload + def writeDatagram(self, datagram:PySide2.QtNetwork.QNetworkDatagram) -> int: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtOpenGL.pyd b/venv/Lib/site-packages/PySide2/QtOpenGL.pyd new file mode 100644 index 0000000..d44aab9 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtOpenGL.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtOpenGL.pyi b/venv/Lib/site-packages/PySide2/QtOpenGL.pyi new file mode 100644 index 0000000..629aa40 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtOpenGL.pyi @@ -0,0 +1,886 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtOpenGL, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtOpenGL +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtGui +import PySide2.QtWidgets +import PySide2.QtOpenGL + + +class QGL(Shiboken.Object): + DoubleBuffer : QGL = ... # 0x1 + DepthBuffer : QGL = ... # 0x2 + Rgba : QGL = ... # 0x4 + AlphaChannel : QGL = ... # 0x8 + AccumBuffer : QGL = ... # 0x10 + StencilBuffer : QGL = ... # 0x20 + StereoBuffers : QGL = ... # 0x40 + DirectRendering : QGL = ... # 0x80 + HasOverlay : QGL = ... # 0x100 + SampleBuffers : QGL = ... # 0x200 + DeprecatedFunctions : QGL = ... # 0x400 + SingleBuffer : QGL = ... # 0x10000 + NoDepthBuffer : QGL = ... # 0x20000 + ColorIndex : QGL = ... # 0x40000 + NoAlphaChannel : QGL = ... # 0x80000 + NoAccumBuffer : QGL = ... # 0x100000 + NoStencilBuffer : QGL = ... # 0x200000 + NoStereoBuffers : QGL = ... # 0x400000 + IndirectRendering : QGL = ... # 0x800000 + NoOverlay : QGL = ... # 0x1000000 + NoSampleBuffers : QGL = ... # 0x2000000 + NoDeprecatedFunctions : QGL = ... # 0x4000000 + + class FormatOption(object): + DoubleBuffer : QGL.FormatOption = ... # 0x1 + DepthBuffer : QGL.FormatOption = ... # 0x2 + Rgba : QGL.FormatOption = ... # 0x4 + AlphaChannel : QGL.FormatOption = ... # 0x8 + AccumBuffer : QGL.FormatOption = ... # 0x10 + StencilBuffer : QGL.FormatOption = ... # 0x20 + StereoBuffers : QGL.FormatOption = ... # 0x40 + DirectRendering : QGL.FormatOption = ... # 0x80 + HasOverlay : QGL.FormatOption = ... # 0x100 + SampleBuffers : QGL.FormatOption = ... # 0x200 + DeprecatedFunctions : QGL.FormatOption = ... # 0x400 + SingleBuffer : QGL.FormatOption = ... # 0x10000 + NoDepthBuffer : QGL.FormatOption = ... # 0x20000 + ColorIndex : QGL.FormatOption = ... # 0x40000 + NoAlphaChannel : QGL.FormatOption = ... # 0x80000 + NoAccumBuffer : QGL.FormatOption = ... # 0x100000 + NoStencilBuffer : QGL.FormatOption = ... # 0x200000 + NoStereoBuffers : QGL.FormatOption = ... # 0x400000 + IndirectRendering : QGL.FormatOption = ... # 0x800000 + NoOverlay : QGL.FormatOption = ... # 0x1000000 + NoSampleBuffers : QGL.FormatOption = ... # 0x2000000 + NoDeprecatedFunctions : QGL.FormatOption = ... # 0x4000000 + + class FormatOptions(object): ... + + +class QGLBuffer(Shiboken.Object): + VertexBuffer : QGLBuffer = ... # 0x8892 + IndexBuffer : QGLBuffer = ... # 0x8893 + ReadOnly : QGLBuffer = ... # 0x88b8 + WriteOnly : QGLBuffer = ... # 0x88b9 + ReadWrite : QGLBuffer = ... # 0x88ba + StreamDraw : QGLBuffer = ... # 0x88e0 + StreamRead : QGLBuffer = ... # 0x88e1 + StreamCopy : QGLBuffer = ... # 0x88e2 + StaticDraw : QGLBuffer = ... # 0x88e4 + StaticRead : QGLBuffer = ... # 0x88e5 + StaticCopy : QGLBuffer = ... # 0x88e6 + DynamicDraw : QGLBuffer = ... # 0x88e8 + DynamicRead : QGLBuffer = ... # 0x88e9 + DynamicCopy : QGLBuffer = ... # 0x88ea + PixelPackBuffer : QGLBuffer = ... # 0x88eb + PixelUnpackBuffer : QGLBuffer = ... # 0x88ec + + class Access(object): + ReadOnly : QGLBuffer.Access = ... # 0x88b8 + WriteOnly : QGLBuffer.Access = ... # 0x88b9 + ReadWrite : QGLBuffer.Access = ... # 0x88ba + + class Type(object): + VertexBuffer : QGLBuffer.Type = ... # 0x8892 + IndexBuffer : QGLBuffer.Type = ... # 0x8893 + PixelPackBuffer : QGLBuffer.Type = ... # 0x88eb + PixelUnpackBuffer : QGLBuffer.Type = ... # 0x88ec + + class UsagePattern(object): + StreamDraw : QGLBuffer.UsagePattern = ... # 0x88e0 + StreamRead : QGLBuffer.UsagePattern = ... # 0x88e1 + StreamCopy : QGLBuffer.UsagePattern = ... # 0x88e2 + StaticDraw : QGLBuffer.UsagePattern = ... # 0x88e4 + StaticRead : QGLBuffer.UsagePattern = ... # 0x88e5 + StaticCopy : QGLBuffer.UsagePattern = ... # 0x88e6 + DynamicDraw : QGLBuffer.UsagePattern = ... # 0x88e8 + DynamicRead : QGLBuffer.UsagePattern = ... # 0x88e9 + DynamicCopy : QGLBuffer.UsagePattern = ... # 0x88ea + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtOpenGL.QGLBuffer) -> None: ... + @typing.overload + def __init__(self, type:PySide2.QtOpenGL.QGLBuffer.Type) -> None: ... + + @typing.overload + def allocate(self, count:int) -> None: ... + @typing.overload + def allocate(self, data:int, count:int=...) -> None: ... + def bind(self) -> bool: ... + def bufferId(self) -> int: ... + def create(self) -> bool: ... + def destroy(self) -> None: ... + def isCreated(self) -> bool: ... + def map(self, access:PySide2.QtOpenGL.QGLBuffer.Access) -> int: ... + def read(self, offset:int, data:int, count:int) -> bool: ... + @typing.overload + def release(self) -> None: ... + @typing.overload + @staticmethod + def release(type:PySide2.QtOpenGL.QGLBuffer.Type) -> None: ... + def setUsagePattern(self, value:PySide2.QtOpenGL.QGLBuffer.UsagePattern) -> None: ... + def size(self) -> int: ... + def type(self) -> PySide2.QtOpenGL.QGLBuffer.Type: ... + def unmap(self) -> bool: ... + def usagePattern(self) -> PySide2.QtOpenGL.QGLBuffer.UsagePattern: ... + def write(self, offset:int, data:int, count:int=...) -> None: ... + + +class QGLColormap(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtOpenGL.QGLColormap) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def entryColor(self, idx:int) -> PySide2.QtGui.QColor: ... + def entryRgb(self, idx:int) -> int: ... + def find(self, color:int) -> int: ... + def findNearest(self, color:int) -> int: ... + def handle(self) -> int: ... + def isEmpty(self) -> bool: ... + @typing.overload + def setEntry(self, idx:int, color:PySide2.QtGui.QColor) -> None: ... + @typing.overload + def setEntry(self, idx:int, color:int) -> None: ... + def setHandle(self, ahandle:int) -> None: ... + def size(self) -> int: ... + + +class QGLContext(Shiboken.Object): + NoBindOption : QGLContext = ... # 0x0 + InvertedYBindOption : QGLContext = ... # 0x1 + MipmapBindOption : QGLContext = ... # 0x2 + PremultipliedAlphaBindOption: QGLContext = ... # 0x4 + LinearFilteringBindOption: QGLContext = ... # 0x8 + DefaultBindOption : QGLContext = ... # 0xb + MemoryManagedBindOption : QGLContext = ... # 0x10 + InternalBindOption : QGLContext = ... # 0x14 + CanFlipNativePixmapBindOption: QGLContext = ... # 0x20 + TemporarilyCachedBindOption: QGLContext = ... # 0x40 + + class BindOption(object): + NoBindOption : QGLContext.BindOption = ... # 0x0 + InvertedYBindOption : QGLContext.BindOption = ... # 0x1 + MipmapBindOption : QGLContext.BindOption = ... # 0x2 + PremultipliedAlphaBindOption: QGLContext.BindOption = ... # 0x4 + LinearFilteringBindOption: QGLContext.BindOption = ... # 0x8 + DefaultBindOption : QGLContext.BindOption = ... # 0xb + MemoryManagedBindOption : QGLContext.BindOption = ... # 0x10 + InternalBindOption : QGLContext.BindOption = ... # 0x14 + CanFlipNativePixmapBindOption: QGLContext.BindOption = ... # 0x20 + TemporarilyCachedBindOption: QGLContext.BindOption = ... # 0x40 + + class BindOptions(object): ... + + def __init__(self, format:PySide2.QtOpenGL.QGLFormat) -> None: ... + + @staticmethod + def areSharing(context1:PySide2.QtOpenGL.QGLContext, context2:PySide2.QtOpenGL.QGLContext) -> bool: ... + @typing.overload + def bindTexture(self, fileName:str) -> int: ... + @typing.overload + def bindTexture(self, image:PySide2.QtGui.QImage, target:int, format:int, options:PySide2.QtOpenGL.QGLContext.BindOptions) -> int: ... + @typing.overload + def bindTexture(self, image:PySide2.QtGui.QImage, target:int=..., format:int=...) -> int: ... + @typing.overload + def bindTexture(self, pixmap:PySide2.QtGui.QPixmap, target:int, format:int, options:PySide2.QtOpenGL.QGLContext.BindOptions) -> int: ... + @typing.overload + def bindTexture(self, pixmap:PySide2.QtGui.QPixmap, target:int=..., format:int=...) -> int: ... + def chooseContext(self, shareContext:typing.Optional[PySide2.QtOpenGL.QGLContext]=...) -> bool: ... + def colorIndex(self, c:PySide2.QtGui.QColor) -> int: ... + def contextHandle(self) -> PySide2.QtGui.QOpenGLContext: ... + def create(self, shareContext:typing.Optional[PySide2.QtOpenGL.QGLContext]=...) -> bool: ... + @staticmethod + def currentContext() -> PySide2.QtOpenGL.QGLContext: ... + def deleteTexture(self, tx_id:int) -> None: ... + def device(self) -> PySide2.QtGui.QPaintDevice: ... + def deviceIsPixmap(self) -> bool: ... + def doneCurrent(self) -> None: ... + @typing.overload + def drawTexture(self, point:PySide2.QtCore.QPointF, textureId:int, textureTarget:int=...) -> None: ... + @typing.overload + def drawTexture(self, target:PySide2.QtCore.QRectF, textureId:int, textureTarget:int=...) -> None: ... + def format(self) -> PySide2.QtOpenGL.QGLFormat: ... + @staticmethod + def fromOpenGLContext(platformContext:PySide2.QtGui.QOpenGLContext) -> PySide2.QtOpenGL.QGLContext: ... + def initialized(self) -> bool: ... + def isSharing(self) -> bool: ... + def isValid(self) -> bool: ... + def makeCurrent(self) -> None: ... + def moveToThread(self, thread:PySide2.QtCore.QThread) -> None: ... + def overlayTransparentColor(self) -> PySide2.QtGui.QColor: ... + def requestedFormat(self) -> PySide2.QtOpenGL.QGLFormat: ... + def reset(self) -> None: ... + def setDevice(self, pDev:PySide2.QtGui.QPaintDevice) -> None: ... + def setFormat(self, format:PySide2.QtOpenGL.QGLFormat) -> None: ... + def setInitialized(self, on:bool) -> None: ... + @staticmethod + def setTextureCacheLimit(size:int) -> None: ... + def setValid(self, valid:bool) -> None: ... + def setWindowCreated(self, on:bool) -> None: ... + def swapBuffers(self) -> None: ... + @staticmethod + def textureCacheLimit() -> int: ... + def windowCreated(self) -> bool: ... + + +class QGLFormat(Shiboken.Object): + NoProfile : QGLFormat = ... # 0x0 + OpenGL_Version_None : QGLFormat = ... # 0x0 + CoreProfile : QGLFormat = ... # 0x1 + OpenGL_Version_1_1 : QGLFormat = ... # 0x1 + CompatibilityProfile : QGLFormat = ... # 0x2 + OpenGL_Version_1_2 : QGLFormat = ... # 0x2 + OpenGL_Version_1_3 : QGLFormat = ... # 0x4 + OpenGL_Version_1_4 : QGLFormat = ... # 0x8 + OpenGL_Version_1_5 : QGLFormat = ... # 0x10 + OpenGL_Version_2_0 : QGLFormat = ... # 0x20 + OpenGL_Version_2_1 : QGLFormat = ... # 0x40 + OpenGL_ES_Common_Version_1_0: QGLFormat = ... # 0x80 + OpenGL_ES_CommonLite_Version_1_0: QGLFormat = ... # 0x100 + OpenGL_ES_Common_Version_1_1: QGLFormat = ... # 0x200 + OpenGL_ES_CommonLite_Version_1_1: QGLFormat = ... # 0x400 + OpenGL_ES_Version_2_0 : QGLFormat = ... # 0x800 + OpenGL_Version_3_0 : QGLFormat = ... # 0x1000 + OpenGL_Version_3_1 : QGLFormat = ... # 0x2000 + OpenGL_Version_3_2 : QGLFormat = ... # 0x4000 + OpenGL_Version_3_3 : QGLFormat = ... # 0x8000 + OpenGL_Version_4_0 : QGLFormat = ... # 0x10000 + OpenGL_Version_4_1 : QGLFormat = ... # 0x20000 + OpenGL_Version_4_2 : QGLFormat = ... # 0x40000 + OpenGL_Version_4_3 : QGLFormat = ... # 0x80000 + + class OpenGLContextProfile(object): + NoProfile : QGLFormat.OpenGLContextProfile = ... # 0x0 + CoreProfile : QGLFormat.OpenGLContextProfile = ... # 0x1 + CompatibilityProfile : QGLFormat.OpenGLContextProfile = ... # 0x2 + + class OpenGLVersionFlag(object): + OpenGL_Version_None : QGLFormat.OpenGLVersionFlag = ... # 0x0 + OpenGL_Version_1_1 : QGLFormat.OpenGLVersionFlag = ... # 0x1 + OpenGL_Version_1_2 : QGLFormat.OpenGLVersionFlag = ... # 0x2 + OpenGL_Version_1_3 : QGLFormat.OpenGLVersionFlag = ... # 0x4 + OpenGL_Version_1_4 : QGLFormat.OpenGLVersionFlag = ... # 0x8 + OpenGL_Version_1_5 : QGLFormat.OpenGLVersionFlag = ... # 0x10 + OpenGL_Version_2_0 : QGLFormat.OpenGLVersionFlag = ... # 0x20 + OpenGL_Version_2_1 : QGLFormat.OpenGLVersionFlag = ... # 0x40 + OpenGL_ES_Common_Version_1_0: QGLFormat.OpenGLVersionFlag = ... # 0x80 + OpenGL_ES_CommonLite_Version_1_0: QGLFormat.OpenGLVersionFlag = ... # 0x100 + OpenGL_ES_Common_Version_1_1: QGLFormat.OpenGLVersionFlag = ... # 0x200 + OpenGL_ES_CommonLite_Version_1_1: QGLFormat.OpenGLVersionFlag = ... # 0x400 + OpenGL_ES_Version_2_0 : QGLFormat.OpenGLVersionFlag = ... # 0x800 + OpenGL_Version_3_0 : QGLFormat.OpenGLVersionFlag = ... # 0x1000 + OpenGL_Version_3_1 : QGLFormat.OpenGLVersionFlag = ... # 0x2000 + OpenGL_Version_3_2 : QGLFormat.OpenGLVersionFlag = ... # 0x4000 + OpenGL_Version_3_3 : QGLFormat.OpenGLVersionFlag = ... # 0x8000 + OpenGL_Version_4_0 : QGLFormat.OpenGLVersionFlag = ... # 0x10000 + OpenGL_Version_4_1 : QGLFormat.OpenGLVersionFlag = ... # 0x20000 + OpenGL_Version_4_2 : QGLFormat.OpenGLVersionFlag = ... # 0x40000 + OpenGL_Version_4_3 : QGLFormat.OpenGLVersionFlag = ... # 0x80000 + + class OpenGLVersionFlags(object): ... + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, options:PySide2.QtOpenGL.QGL.FormatOptions, plane:int=...) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtOpenGL.QGLFormat) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def accum(self) -> bool: ... + def accumBufferSize(self) -> int: ... + def alpha(self) -> bool: ... + def alphaBufferSize(self) -> int: ... + def blueBufferSize(self) -> int: ... + @staticmethod + def defaultFormat() -> PySide2.QtOpenGL.QGLFormat: ... + @staticmethod + def defaultOverlayFormat() -> PySide2.QtOpenGL.QGLFormat: ... + def depth(self) -> bool: ... + def depthBufferSize(self) -> int: ... + def directRendering(self) -> bool: ... + def doubleBuffer(self) -> bool: ... + @staticmethod + def fromSurfaceFormat(format:PySide2.QtGui.QSurfaceFormat) -> PySide2.QtOpenGL.QGLFormat: ... + def greenBufferSize(self) -> int: ... + @staticmethod + def hasOpenGL() -> bool: ... + @staticmethod + def hasOpenGLOverlays() -> bool: ... + def hasOverlay(self) -> bool: ... + def majorVersion(self) -> int: ... + def minorVersion(self) -> int: ... + @staticmethod + def openGLVersionFlags() -> PySide2.QtOpenGL.QGLFormat.OpenGLVersionFlags: ... + def plane(self) -> int: ... + def profile(self) -> PySide2.QtOpenGL.QGLFormat.OpenGLContextProfile: ... + def redBufferSize(self) -> int: ... + def rgba(self) -> bool: ... + def sampleBuffers(self) -> bool: ... + def samples(self) -> int: ... + def setAccum(self, enable:bool) -> None: ... + def setAccumBufferSize(self, size:int) -> None: ... + def setAlpha(self, enable:bool) -> None: ... + def setAlphaBufferSize(self, size:int) -> None: ... + def setBlueBufferSize(self, size:int) -> None: ... + @staticmethod + def setDefaultFormat(f:PySide2.QtOpenGL.QGLFormat) -> None: ... + @staticmethod + def setDefaultOverlayFormat(f:PySide2.QtOpenGL.QGLFormat) -> None: ... + def setDepth(self, enable:bool) -> None: ... + def setDepthBufferSize(self, size:int) -> None: ... + def setDirectRendering(self, enable:bool) -> None: ... + def setDoubleBuffer(self, enable:bool) -> None: ... + def setGreenBufferSize(self, size:int) -> None: ... + def setOption(self, opt:PySide2.QtOpenGL.QGL.FormatOptions) -> None: ... + def setOverlay(self, enable:bool) -> None: ... + def setPlane(self, plane:int) -> None: ... + def setProfile(self, profile:PySide2.QtOpenGL.QGLFormat.OpenGLContextProfile) -> None: ... + def setRedBufferSize(self, size:int) -> None: ... + def setRgba(self, enable:bool) -> None: ... + def setSampleBuffers(self, enable:bool) -> None: ... + def setSamples(self, numSamples:int) -> None: ... + def setStencil(self, enable:bool) -> None: ... + def setStencilBufferSize(self, size:int) -> None: ... + def setStereo(self, enable:bool) -> None: ... + def setSwapInterval(self, interval:int) -> None: ... + def setVersion(self, major:int, minor:int) -> None: ... + def stencil(self) -> bool: ... + def stencilBufferSize(self) -> int: ... + def stereo(self) -> bool: ... + def swapInterval(self) -> int: ... + def testOption(self, opt:PySide2.QtOpenGL.QGL.FormatOptions) -> bool: ... + @staticmethod + def toSurfaceFormat(format:PySide2.QtOpenGL.QGLFormat) -> PySide2.QtGui.QSurfaceFormat: ... + + +class QGLFramebufferObject(PySide2.QtGui.QPaintDevice): + NoAttachment : QGLFramebufferObject = ... # 0x0 + CombinedDepthStencil : QGLFramebufferObject = ... # 0x1 + Depth : QGLFramebufferObject = ... # 0x2 + + class Attachment(object): + NoAttachment : QGLFramebufferObject.Attachment = ... # 0x0 + CombinedDepthStencil : QGLFramebufferObject.Attachment = ... # 0x1 + Depth : QGLFramebufferObject.Attachment = ... # 0x2 + + @typing.overload + def __init__(self, size:PySide2.QtCore.QSize, attachment:PySide2.QtOpenGL.QGLFramebufferObject.Attachment, target:int=..., internal_format:int=...) -> None: ... + @typing.overload + def __init__(self, size:PySide2.QtCore.QSize, format:PySide2.QtOpenGL.QGLFramebufferObjectFormat) -> None: ... + @typing.overload + def __init__(self, size:PySide2.QtCore.QSize, target:int=...) -> None: ... + @typing.overload + def __init__(self, width:int, height:int, attachment:PySide2.QtOpenGL.QGLFramebufferObject.Attachment, target:int=..., internal_format:int=...) -> None: ... + @typing.overload + def __init__(self, width:int, height:int, format:PySide2.QtOpenGL.QGLFramebufferObjectFormat) -> None: ... + @typing.overload + def __init__(self, width:int, height:int, target:int=...) -> None: ... + + def attachment(self) -> PySide2.QtOpenGL.QGLFramebufferObject.Attachment: ... + def bind(self) -> bool: ... + @staticmethod + def bindDefault() -> bool: ... + @staticmethod + def blitFramebuffer(target:PySide2.QtOpenGL.QGLFramebufferObject, targetRect:PySide2.QtCore.QRect, source:PySide2.QtOpenGL.QGLFramebufferObject, sourceRect:PySide2.QtCore.QRect, buffers:int=..., filter:int=...) -> None: ... + def devType(self) -> int: ... + @typing.overload + def drawTexture(self, point:PySide2.QtCore.QPointF, textureId:int, textureTarget:int=...) -> None: ... + @typing.overload + def drawTexture(self, target:PySide2.QtCore.QRectF, textureId:int, textureTarget:int=...) -> None: ... + def format(self) -> PySide2.QtOpenGL.QGLFramebufferObjectFormat: ... + def handle(self) -> int: ... + @staticmethod + def hasOpenGLFramebufferBlit() -> bool: ... + @staticmethod + def hasOpenGLFramebufferObjects() -> bool: ... + def isBound(self) -> bool: ... + def isValid(self) -> bool: ... + def metric(self, metric:PySide2.QtGui.QPaintDevice.PaintDeviceMetric) -> int: ... + def paintEngine(self) -> PySide2.QtGui.QPaintEngine: ... + def release(self) -> bool: ... + def size(self) -> PySide2.QtCore.QSize: ... + def texture(self) -> int: ... + def toImage(self) -> PySide2.QtGui.QImage: ... + + +class QGLFramebufferObjectFormat(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtOpenGL.QGLFramebufferObjectFormat) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def attachment(self) -> PySide2.QtOpenGL.QGLFramebufferObject.Attachment: ... + def internalTextureFormat(self) -> int: ... + def mipmap(self) -> bool: ... + def samples(self) -> int: ... + def setAttachment(self, attachment:PySide2.QtOpenGL.QGLFramebufferObject.Attachment) -> None: ... + def setInternalTextureFormat(self, internalTextureFormat:int) -> None: ... + def setMipmap(self, enabled:bool) -> None: ... + def setSamples(self, samples:int) -> None: ... + def setTextureTarget(self, target:int) -> None: ... + def textureTarget(self) -> int: ... + + +class QGLPixelBuffer(PySide2.QtGui.QPaintDevice): + + @typing.overload + def __init__(self, size:PySide2.QtCore.QSize, format:PySide2.QtOpenGL.QGLFormat=..., shareWidget:typing.Optional[PySide2.QtOpenGL.QGLWidget]=...) -> None: ... + @typing.overload + def __init__(self, width:int, height:int, format:PySide2.QtOpenGL.QGLFormat=..., shareWidget:typing.Optional[PySide2.QtOpenGL.QGLWidget]=...) -> None: ... + + @typing.overload + def bindTexture(self, fileName:str) -> int: ... + @typing.overload + def bindTexture(self, image:PySide2.QtGui.QImage, target:int=...) -> int: ... + @typing.overload + def bindTexture(self, pixmap:PySide2.QtGui.QPixmap, target:int=...) -> int: ... + def bindToDynamicTexture(self, texture:int) -> bool: ... + def context(self) -> PySide2.QtOpenGL.QGLContext: ... + def deleteTexture(self, texture_id:int) -> None: ... + def devType(self) -> int: ... + def doneCurrent(self) -> bool: ... + @typing.overload + def drawTexture(self, point:PySide2.QtCore.QPointF, textureId:int, textureTarget:int=...) -> None: ... + @typing.overload + def drawTexture(self, target:PySide2.QtCore.QRectF, textureId:int, textureTarget:int=...) -> None: ... + def format(self) -> PySide2.QtOpenGL.QGLFormat: ... + def generateDynamicTexture(self) -> int: ... + def handle(self) -> int: ... + @staticmethod + def hasOpenGLPbuffers() -> bool: ... + def isValid(self) -> bool: ... + def makeCurrent(self) -> bool: ... + def metric(self, metric:PySide2.QtGui.QPaintDevice.PaintDeviceMetric) -> int: ... + def paintEngine(self) -> PySide2.QtGui.QPaintEngine: ... + def releaseFromDynamicTexture(self) -> None: ... + def size(self) -> PySide2.QtCore.QSize: ... + def toImage(self) -> PySide2.QtGui.QImage: ... + def updateDynamicTexture(self, texture_id:int) -> None: ... + + +class QGLShader(PySide2.QtCore.QObject): + Vertex : QGLShader = ... # 0x1 + Fragment : QGLShader = ... # 0x2 + Geometry : QGLShader = ... # 0x4 + + class ShaderType(object): ... + + class ShaderTypeBit(object): + Vertex : QGLShader.ShaderTypeBit = ... # 0x1 + Fragment : QGLShader.ShaderTypeBit = ... # 0x2 + Geometry : QGLShader.ShaderTypeBit = ... # 0x4 + + @typing.overload + def __init__(self, type:PySide2.QtOpenGL.QGLShader.ShaderType, context:PySide2.QtOpenGL.QGLContext, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, type:PySide2.QtOpenGL.QGLShader.ShaderType, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + @typing.overload + def compileSourceCode(self, source:PySide2.QtCore.QByteArray) -> bool: ... + @typing.overload + def compileSourceCode(self, source:str) -> bool: ... + @typing.overload + def compileSourceCode(self, source:bytes) -> bool: ... + def compileSourceFile(self, fileName:str) -> bool: ... + @staticmethod + def hasOpenGLShaders(type:PySide2.QtOpenGL.QGLShader.ShaderType, context:typing.Optional[PySide2.QtOpenGL.QGLContext]=...) -> bool: ... + def isCompiled(self) -> bool: ... + def log(self) -> str: ... + def shaderId(self) -> int: ... + def shaderType(self) -> PySide2.QtOpenGL.QGLShader.ShaderType: ... + def sourceCode(self) -> PySide2.QtCore.QByteArray: ... + + +class QGLShaderProgram(PySide2.QtCore.QObject): + + @typing.overload + def __init__(self, context:PySide2.QtOpenGL.QGLContext, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def addShader(self, shader:PySide2.QtOpenGL.QGLShader) -> bool: ... + @typing.overload + def addShaderFromSourceCode(self, type:PySide2.QtOpenGL.QGLShader.ShaderType, source:PySide2.QtCore.QByteArray) -> bool: ... + @typing.overload + def addShaderFromSourceCode(self, type:PySide2.QtOpenGL.QGLShader.ShaderType, source:str) -> bool: ... + @typing.overload + def addShaderFromSourceCode(self, type:PySide2.QtOpenGL.QGLShader.ShaderType, source:bytes) -> bool: ... + def addShaderFromSourceFile(self, type:PySide2.QtOpenGL.QGLShader.ShaderType, fileName:str) -> bool: ... + @typing.overload + def attributeLocation(self, name:PySide2.QtCore.QByteArray) -> int: ... + @typing.overload + def attributeLocation(self, name:str) -> int: ... + @typing.overload + def attributeLocation(self, name:bytes) -> int: ... + def bind(self) -> bool: ... + @typing.overload + def bindAttributeLocation(self, name:PySide2.QtCore.QByteArray, location:int) -> None: ... + @typing.overload + def bindAttributeLocation(self, name:str, location:int) -> None: ... + @typing.overload + def bindAttributeLocation(self, name:bytes, location:int) -> None: ... + @typing.overload + def disableAttributeArray(self, location:int) -> None: ... + @typing.overload + def disableAttributeArray(self, name:bytes) -> None: ... + @typing.overload + def enableAttributeArray(self, location:int) -> None: ... + @typing.overload + def enableAttributeArray(self, name:bytes) -> None: ... + def geometryInputType(self) -> int: ... + def geometryOutputType(self) -> int: ... + def geometryOutputVertexCount(self) -> int: ... + @staticmethod + def hasOpenGLShaderPrograms(context:typing.Optional[PySide2.QtOpenGL.QGLContext]=...) -> bool: ... + def isLinked(self) -> bool: ... + def link(self) -> bool: ... + def log(self) -> str: ... + def maxGeometryOutputVertices(self) -> int: ... + def programId(self) -> int: ... + def release(self) -> None: ... + def removeAllShaders(self) -> None: ... + def removeShader(self, shader:PySide2.QtOpenGL.QGLShader) -> None: ... + @typing.overload + def setAttributeArray2D(self, location:int, values:PySide2.QtGui.QVector2D, stride:int=...) -> None: ... + @typing.overload + def setAttributeArray2D(self, name:bytes, values:PySide2.QtGui.QVector2D, stride:int=...) -> None: ... + @typing.overload + def setAttributeArray3D(self, location:int, values:PySide2.QtGui.QVector3D, stride:int=...) -> None: ... + @typing.overload + def setAttributeArray3D(self, name:bytes, values:PySide2.QtGui.QVector3D, stride:int=...) -> None: ... + @typing.overload + def setAttributeArray4D(self, location:int, values:PySide2.QtGui.QVector4D, stride:int=...) -> None: ... + @typing.overload + def setAttributeArray4D(self, name:bytes, values:PySide2.QtGui.QVector4D, stride:int=...) -> None: ... + @typing.overload + def setAttributeBuffer(self, location:int, type:int, offset:int, tupleSize:int, stride:int=...) -> None: ... + @typing.overload + def setAttributeBuffer(self, name:bytes, type:int, offset:int, tupleSize:int, stride:int=...) -> None: ... + @typing.overload + def setAttributeValue(self, location:int, value:float) -> None: ... + @typing.overload + def setAttributeValue(self, location:int, value:PySide2.QtGui.QColor) -> None: ... + @typing.overload + def setAttributeValue(self, location:int, value:PySide2.QtGui.QVector2D) -> None: ... + @typing.overload + def setAttributeValue(self, location:int, value:PySide2.QtGui.QVector3D) -> None: ... + @typing.overload + def setAttributeValue(self, location:int, value:PySide2.QtGui.QVector4D) -> None: ... + @typing.overload + def setAttributeValue(self, location:int, x:float, y:float) -> None: ... + @typing.overload + def setAttributeValue(self, location:int, x:float, y:float, z:float) -> None: ... + @typing.overload + def setAttributeValue(self, location:int, x:float, y:float, z:float, w:float) -> None: ... + @typing.overload + def setAttributeValue(self, name:bytes, value:float) -> None: ... + @typing.overload + def setAttributeValue(self, name:bytes, value:PySide2.QtGui.QColor) -> None: ... + @typing.overload + def setAttributeValue(self, name:bytes, value:PySide2.QtGui.QVector2D) -> None: ... + @typing.overload + def setAttributeValue(self, name:bytes, value:PySide2.QtGui.QVector3D) -> None: ... + @typing.overload + def setAttributeValue(self, name:bytes, value:PySide2.QtGui.QVector4D) -> None: ... + @typing.overload + def setAttributeValue(self, name:bytes, x:float, y:float) -> None: ... + @typing.overload + def setAttributeValue(self, name:bytes, x:float, y:float, z:float) -> None: ... + @typing.overload + def setAttributeValue(self, name:bytes, x:float, y:float, z:float, w:float) -> None: ... + def setGeometryInputType(self, inputType:int) -> None: ... + def setGeometryOutputType(self, outputType:int) -> None: ... + def setGeometryOutputVertexCount(self, count:int) -> None: ... + @typing.overload + def setUniformValue(self, location:int, color:PySide2.QtGui.QColor) -> None: ... + @typing.overload + def setUniformValue(self, location:int, point:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + def setUniformValue(self, location:int, point:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def setUniformValue(self, location:int, size:PySide2.QtCore.QSize) -> None: ... + @typing.overload + def setUniformValue(self, location:int, size:PySide2.QtCore.QSizeF) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:float) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:int) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:int) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:PySide2.QtGui.QMatrix2x2) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:PySide2.QtGui.QMatrix2x3) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:PySide2.QtGui.QMatrix2x4) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:PySide2.QtGui.QMatrix3x2) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:PySide2.QtGui.QMatrix3x3) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:PySide2.QtGui.QMatrix3x4) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:PySide2.QtGui.QMatrix4x2) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:PySide2.QtGui.QMatrix4x3) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:PySide2.QtGui.QMatrix4x4) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:PySide2.QtGui.QTransform) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:PySide2.QtGui.QVector2D) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:PySide2.QtGui.QVector3D) -> None: ... + @typing.overload + def setUniformValue(self, location:int, value:PySide2.QtGui.QVector4D) -> None: ... + @typing.overload + def setUniformValue(self, location:int, x:float, y:float) -> None: ... + @typing.overload + def setUniformValue(self, location:int, x:float, y:float, z:float) -> None: ... + @typing.overload + def setUniformValue(self, location:int, x:float, y:float, z:float, w:float) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, color:PySide2.QtGui.QColor) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, point:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, point:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, size:PySide2.QtCore.QSize) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, size:PySide2.QtCore.QSizeF) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:float) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:int) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:int) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:PySide2.QtGui.QMatrix2x2) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:PySide2.QtGui.QMatrix2x3) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:PySide2.QtGui.QMatrix2x4) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:PySide2.QtGui.QMatrix3x2) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:PySide2.QtGui.QMatrix3x3) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:PySide2.QtGui.QMatrix3x4) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:PySide2.QtGui.QMatrix4x2) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:PySide2.QtGui.QMatrix4x3) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:PySide2.QtGui.QMatrix4x4) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:PySide2.QtGui.QTransform) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:PySide2.QtGui.QVector2D) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:PySide2.QtGui.QVector3D) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, value:PySide2.QtGui.QVector4D) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, x:float, y:float) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, x:float, y:float, z:float) -> None: ... + @typing.overload + def setUniformValue(self, name:bytes, x:float, y:float, z:float, w:float) -> None: ... + @typing.overload + def setUniformValueArray2D(self, location:int, values:PySide2.QtGui.QVector2D, count:int) -> None: ... + @typing.overload + def setUniformValueArray2D(self, name:bytes, values:PySide2.QtGui.QVector2D, count:int) -> None: ... + @typing.overload + def setUniformValueArray2x2(self, location:int, values:PySide2.QtGui.QMatrix2x2, count:int) -> None: ... + @typing.overload + def setUniformValueArray2x2(self, name:bytes, values:PySide2.QtGui.QMatrix2x2, count:int) -> None: ... + @typing.overload + def setUniformValueArray2x3(self, location:int, values:PySide2.QtGui.QMatrix2x3, count:int) -> None: ... + @typing.overload + def setUniformValueArray2x3(self, name:bytes, values:PySide2.QtGui.QMatrix2x3, count:int) -> None: ... + @typing.overload + def setUniformValueArray2x4(self, location:int, values:PySide2.QtGui.QMatrix2x4, count:int) -> None: ... + @typing.overload + def setUniformValueArray2x4(self, name:bytes, values:PySide2.QtGui.QMatrix2x4, count:int) -> None: ... + @typing.overload + def setUniformValueArray3D(self, location:int, values:PySide2.QtGui.QVector3D, count:int) -> None: ... + @typing.overload + def setUniformValueArray3D(self, name:bytes, values:PySide2.QtGui.QVector3D, count:int) -> None: ... + @typing.overload + def setUniformValueArray3x2(self, location:int, values:PySide2.QtGui.QMatrix3x2, count:int) -> None: ... + @typing.overload + def setUniformValueArray3x2(self, name:bytes, values:PySide2.QtGui.QMatrix3x2, count:int) -> None: ... + @typing.overload + def setUniformValueArray3x3(self, location:int, values:PySide2.QtGui.QMatrix3x3, count:int) -> None: ... + @typing.overload + def setUniformValueArray3x3(self, name:bytes, values:PySide2.QtGui.QMatrix3x3, count:int) -> None: ... + @typing.overload + def setUniformValueArray3x4(self, location:int, values:PySide2.QtGui.QMatrix3x4, count:int) -> None: ... + @typing.overload + def setUniformValueArray3x4(self, name:bytes, values:PySide2.QtGui.QMatrix3x4, count:int) -> None: ... + @typing.overload + def setUniformValueArray4D(self, location:int, values:PySide2.QtGui.QVector4D, count:int) -> None: ... + @typing.overload + def setUniformValueArray4D(self, name:bytes, values:PySide2.QtGui.QVector4D, count:int) -> None: ... + @typing.overload + def setUniformValueArray4x2(self, location:int, values:PySide2.QtGui.QMatrix4x2, count:int) -> None: ... + @typing.overload + def setUniformValueArray4x2(self, name:bytes, values:PySide2.QtGui.QMatrix4x2, count:int) -> None: ... + @typing.overload + def setUniformValueArray4x3(self, location:int, values:PySide2.QtGui.QMatrix4x3, count:int) -> None: ... + @typing.overload + def setUniformValueArray4x3(self, name:bytes, values:PySide2.QtGui.QMatrix4x3, count:int) -> None: ... + @typing.overload + def setUniformValueArray4x4(self, location:int, values:PySide2.QtGui.QMatrix4x4, count:int) -> None: ... + @typing.overload + def setUniformValueArray4x4(self, name:bytes, values:PySide2.QtGui.QMatrix4x4, count:int) -> None: ... + @typing.overload + def setUniformValueArrayInt(self, location:int, values:typing.Sequence, count:int) -> None: ... + @typing.overload + def setUniformValueArrayInt(self, name:bytes, values:typing.Sequence, count:int) -> None: ... + @typing.overload + def setUniformValueArrayUint(self, location:int, values:typing.Sequence, count:int) -> None: ... + @typing.overload + def setUniformValueArrayUint(self, name:bytes, values:typing.Sequence, count:int) -> None: ... + def shaders(self) -> typing.List: ... + @typing.overload + def uniformLocation(self, name:PySide2.QtCore.QByteArray) -> int: ... + @typing.overload + def uniformLocation(self, name:str) -> int: ... + @typing.overload + def uniformLocation(self, name:bytes) -> int: ... + + +class QGLWidget(PySide2.QtWidgets.QWidget): + + @typing.overload + def __init__(self, context:PySide2.QtOpenGL.QGLContext, parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., shareWidget:typing.Optional[PySide2.QtOpenGL.QGLWidget]=..., f:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + @typing.overload + def __init__(self, format:PySide2.QtOpenGL.QGLFormat, parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., shareWidget:typing.Optional[PySide2.QtOpenGL.QGLWidget]=..., f:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., shareWidget:typing.Optional[PySide2.QtOpenGL.QGLWidget]=..., f:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + + def autoBufferSwap(self) -> bool: ... + @typing.overload + def bindTexture(self, fileName:str) -> int: ... + @typing.overload + def bindTexture(self, image:PySide2.QtGui.QImage, target:int, format:int, options:PySide2.QtOpenGL.QGLContext.BindOptions) -> int: ... + @typing.overload + def bindTexture(self, image:PySide2.QtGui.QImage, target:int=..., format:int=...) -> int: ... + @typing.overload + def bindTexture(self, pixmap:PySide2.QtGui.QPixmap, target:int, format:int, options:PySide2.QtOpenGL.QGLContext.BindOptions) -> int: ... + @typing.overload + def bindTexture(self, pixmap:PySide2.QtGui.QPixmap, target:int=..., format:int=...) -> int: ... + def colormap(self) -> PySide2.QtOpenGL.QGLColormap: ... + def context(self) -> PySide2.QtOpenGL.QGLContext: ... + @staticmethod + def convertToGLFormat(img:PySide2.QtGui.QImage) -> PySide2.QtGui.QImage: ... + def deleteTexture(self, tx_id:int) -> None: ... + def doneCurrent(self) -> None: ... + def doubleBuffer(self) -> bool: ... + @typing.overload + def drawTexture(self, point:PySide2.QtCore.QPointF, textureId:int, textureTarget:int=...) -> None: ... + @typing.overload + def drawTexture(self, target:PySide2.QtCore.QRectF, textureId:int, textureTarget:int=...) -> None: ... + def event(self, arg__1:PySide2.QtCore.QEvent) -> bool: ... + def format(self) -> PySide2.QtOpenGL.QGLFormat: ... + def glDraw(self) -> None: ... + def glInit(self) -> None: ... + def grabFrameBuffer(self, withAlpha:bool=...) -> PySide2.QtGui.QImage: ... + def initializeGL(self) -> None: ... + def initializeOverlayGL(self) -> None: ... + def isSharing(self) -> bool: ... + def isValid(self) -> bool: ... + def makeCurrent(self) -> None: ... + def makeOverlayCurrent(self) -> None: ... + def overlayContext(self) -> PySide2.QtOpenGL.QGLContext: ... + def paintEngine(self) -> PySide2.QtGui.QPaintEngine: ... + def paintEvent(self, arg__1:PySide2.QtGui.QPaintEvent) -> None: ... + def paintGL(self) -> None: ... + def paintOverlayGL(self) -> None: ... + def qglClearColor(self, c:PySide2.QtGui.QColor) -> None: ... + def qglColor(self, c:PySide2.QtGui.QColor) -> None: ... + def renderPixmap(self, w:int=..., h:int=..., useContext:bool=...) -> PySide2.QtGui.QPixmap: ... + @typing.overload + def renderText(self, x:float, y:float, z:float, str:str, fnt:PySide2.QtGui.QFont=...) -> None: ... + @typing.overload + def renderText(self, x:int, y:int, str:str, fnt:PySide2.QtGui.QFont=...) -> None: ... + def resizeEvent(self, arg__1:PySide2.QtGui.QResizeEvent) -> None: ... + def resizeGL(self, w:int, h:int) -> None: ... + def resizeOverlayGL(self, w:int, h:int) -> None: ... + def setAutoBufferSwap(self, on:bool) -> None: ... + def setColormap(self, map:PySide2.QtOpenGL.QGLColormap) -> None: ... + def swapBuffers(self) -> None: ... + def updateGL(self) -> None: ... + def updateOverlayGL(self) -> None: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtOpenGLFunctions.pyd b/venv/Lib/site-packages/PySide2/QtOpenGLFunctions.pyd new file mode 100644 index 0000000..23bdcc8 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtOpenGLFunctions.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtOpenGLFunctions.pyi b/venv/Lib/site-packages/PySide2/QtOpenGLFunctions.pyi new file mode 100644 index 0000000..d0805f4 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtOpenGLFunctions.pyi @@ -0,0 +1,12790 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtOpenGLFunctions, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtOpenGLFunctions +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtGui +import PySide2.QtOpenGLFunctions + + +class QOpenGLFunctions_1_0(PySide2.QtGui.QAbstractOpenGLFunctions): + + def __init__(self) -> None: ... + + def glAccum(self, op:int, value:float) -> None: ... + def glAlphaFunc(self, func:int, ref:float) -> None: ... + def glBegin(self, mode:int) -> None: ... + def glBlendFunc(self, sfactor:int, dfactor:int) -> None: ... + def glCallList(self, list:int) -> None: ... + def glCallLists(self, n:int, type:int, lists:int) -> None: ... + def glClear(self, mask:int) -> None: ... + def glClearAccum(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearDepth(self, depth:float) -> None: ... + def glClearIndex(self, c:float) -> None: ... + def glClearStencil(self, s:int) -> None: ... + def glClipPlane(self, plane:int, equation:typing.Sequence) -> None: ... + def glColor3b(self, red:int, green:int, blue:int) -> None: ... + def glColor3bv(self, v:bytes) -> None: ... + def glColor3d(self, red:float, green:float, blue:float) -> None: ... + def glColor3dv(self, v:typing.Sequence) -> None: ... + def glColor3f(self, red:float, green:float, blue:float) -> None: ... + def glColor3fv(self, v:typing.Sequence) -> None: ... + def glColor3i(self, red:int, green:int, blue:int) -> None: ... + def glColor3iv(self, v:typing.Sequence) -> None: ... + def glColor3s(self, red:int, green:int, blue:int) -> None: ... + def glColor3sv(self, v:typing.Sequence) -> None: ... + def glColor3ub(self, red:int, green:int, blue:int) -> None: ... + def glColor3ubv(self, v:bytes) -> None: ... + def glColor3ui(self, red:int, green:int, blue:int) -> None: ... + def glColor3uiv(self, v:typing.Sequence) -> None: ... + def glColor3us(self, red:int, green:int, blue:int) -> None: ... + def glColor3usv(self, v:typing.Sequence) -> None: ... + def glColor4b(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4bv(self, v:bytes) -> None: ... + def glColor4d(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4dv(self, v:typing.Sequence) -> None: ... + def glColor4f(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4fv(self, v:typing.Sequence) -> None: ... + def glColor4i(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4iv(self, v:typing.Sequence) -> None: ... + def glColor4s(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4sv(self, v:typing.Sequence) -> None: ... + def glColor4ub(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4ubv(self, v:bytes) -> None: ... + def glColor4ui(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4uiv(self, v:typing.Sequence) -> None: ... + def glColor4us(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4usv(self, v:typing.Sequence) -> None: ... + def glColorMask(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColorMaterial(self, face:int, mode:int) -> None: ... + def glCopyPixels(self, x:int, y:int, width:int, height:int, type:int) -> None: ... + def glCullFace(self, mode:int) -> None: ... + def glDeleteLists(self, list:int, range:int) -> None: ... + def glDepthFunc(self, func:int) -> None: ... + def glDepthMask(self, flag:int) -> None: ... + def glDepthRange(self, nearVal:float, farVal:float) -> None: ... + def glDisable(self, cap:int) -> None: ... + def glDrawBuffer(self, mode:int) -> None: ... + def glDrawPixels(self, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glEdgeFlag(self, flag:int) -> None: ... + def glEnable(self, cap:int) -> None: ... + def glEnd(self) -> None: ... + def glEndList(self) -> None: ... + def glEvalCoord1d(self, u:float) -> None: ... + def glEvalCoord1dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord1f(self, u:float) -> None: ... + def glEvalCoord1fv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2d(self, u:float, v:float) -> None: ... + def glEvalCoord2dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2f(self, u:float, v:float) -> None: ... + def glEvalCoord2fv(self, u:typing.Sequence) -> None: ... + def glEvalMesh1(self, mode:int, i1:int, i2:int) -> None: ... + def glEvalMesh2(self, mode:int, i1:int, i2:int, j1:int, j2:int) -> None: ... + def glEvalPoint1(self, i:int) -> None: ... + def glEvalPoint2(self, i:int, j:int) -> None: ... + def glFinish(self) -> None: ... + def glFlush(self) -> None: ... + def glFogf(self, pname:int, param:float) -> None: ... + def glFogfv(self, pname:int, params:typing.Sequence) -> None: ... + def glFogi(self, pname:int, param:int) -> None: ... + def glFogiv(self, pname:int, params:typing.Sequence) -> None: ... + def glFrontFace(self, mode:int) -> None: ... + def glFrustum(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glGenLists(self, range:int) -> int: ... + def glGetError(self) -> int: ... + def glGetString(self, name:int) -> bytes: ... + def glHint(self, target:int, mode:int) -> None: ... + def glIndexMask(self, mask:int) -> None: ... + def glIndexd(self, c:float) -> None: ... + def glIndexdv(self, c:typing.Sequence) -> None: ... + def glIndexf(self, c:float) -> None: ... + def glIndexfv(self, c:typing.Sequence) -> None: ... + def glIndexi(self, c:int) -> None: ... + def glIndexiv(self, c:typing.Sequence) -> None: ... + def glIndexs(self, c:int) -> None: ... + def glIndexsv(self, c:typing.Sequence) -> None: ... + def glInitNames(self) -> None: ... + def glIsEnabled(self, cap:int) -> int: ... + def glIsList(self, list:int) -> int: ... + def glLightModelf(self, pname:int, param:float) -> None: ... + def glLightModelfv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightModeli(self, pname:int, param:int) -> None: ... + def glLightModeliv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightf(self, light:int, pname:int, param:float) -> None: ... + def glLightfv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLighti(self, light:int, pname:int, param:int) -> None: ... + def glLightiv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLineStipple(self, factor:int, pattern:int) -> None: ... + def glLineWidth(self, width:float) -> None: ... + def glListBase(self, base:int) -> None: ... + def glLoadIdentity(self) -> None: ... + def glLoadMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadMatrixf(self, m:typing.Sequence) -> None: ... + def glLoadName(self, name:int) -> None: ... + def glLogicOp(self, opcode:int) -> None: ... + def glMap1d(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap1f(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap2d(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMap2f(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMapGrid1d(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid1f(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid2d(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMapGrid2f(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMaterialf(self, face:int, pname:int, param:float) -> None: ... + def glMaterialfv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMateriali(self, face:int, pname:int, param:int) -> None: ... + def glMaterialiv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMatrixMode(self, mode:int) -> None: ... + def glMultMatrixd(self, m:typing.Sequence) -> None: ... + def glMultMatrixf(self, m:typing.Sequence) -> None: ... + def glNewList(self, list:int, mode:int) -> None: ... + def glNormal3b(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3bv(self, v:bytes) -> None: ... + def glNormal3d(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3dv(self, v:typing.Sequence) -> None: ... + def glNormal3f(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3fv(self, v:typing.Sequence) -> None: ... + def glNormal3i(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3iv(self, v:typing.Sequence) -> None: ... + def glNormal3s(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3sv(self, v:typing.Sequence) -> None: ... + def glOrtho(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glPassThrough(self, token:float) -> None: ... + def glPixelMapfv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapuiv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapusv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelStoref(self, pname:int, param:float) -> None: ... + def glPixelStorei(self, pname:int, param:int) -> None: ... + def glPixelTransferf(self, pname:int, param:float) -> None: ... + def glPixelTransferi(self, pname:int, param:int) -> None: ... + def glPixelZoom(self, xfactor:float, yfactor:float) -> None: ... + def glPointSize(self, size:float) -> None: ... + def glPolygonMode(self, face:int, mode:int) -> None: ... + def glPopAttrib(self) -> None: ... + def glPopMatrix(self) -> None: ... + def glPopName(self) -> None: ... + def glPushAttrib(self, mask:int) -> None: ... + def glPushMatrix(self) -> None: ... + def glPushName(self, name:int) -> None: ... + def glRasterPos2d(self, x:float, y:float) -> None: ... + def glRasterPos2dv(self, v:typing.Sequence) -> None: ... + def glRasterPos2f(self, x:float, y:float) -> None: ... + def glRasterPos2fv(self, v:typing.Sequence) -> None: ... + def glRasterPos2i(self, x:int, y:int) -> None: ... + def glRasterPos2iv(self, v:typing.Sequence) -> None: ... + def glRasterPos2s(self, x:int, y:int) -> None: ... + def glRasterPos2sv(self, v:typing.Sequence) -> None: ... + def glRasterPos3d(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3dv(self, v:typing.Sequence) -> None: ... + def glRasterPos3f(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3fv(self, v:typing.Sequence) -> None: ... + def glRasterPos3i(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3iv(self, v:typing.Sequence) -> None: ... + def glRasterPos3s(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3sv(self, v:typing.Sequence) -> None: ... + def glRasterPos4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4dv(self, v:typing.Sequence) -> None: ... + def glRasterPos4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4fv(self, v:typing.Sequence) -> None: ... + def glRasterPos4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4iv(self, v:typing.Sequence) -> None: ... + def glRasterPos4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4sv(self, v:typing.Sequence) -> None: ... + def glReadBuffer(self, mode:int) -> None: ... + def glRectd(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectdv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRectf(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectfv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRecti(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectiv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRects(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectsv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRenderMode(self, mode:int) -> int: ... + def glRotated(self, angle:float, x:float, y:float, z:float) -> None: ... + def glRotatef(self, angle:float, x:float, y:float, z:float) -> None: ... + def glScaled(self, x:float, y:float, z:float) -> None: ... + def glScalef(self, x:float, y:float, z:float) -> None: ... + def glScissor(self, x:int, y:int, width:int, height:int) -> None: ... + def glShadeModel(self, mode:int) -> None: ... + def glStencilFunc(self, func:int, ref:int, mask:int) -> None: ... + def glStencilMask(self, mask:int) -> None: ... + def glStencilOp(self, fail:int, zfail:int, zpass:int) -> None: ... + def glTexCoord1d(self, s:float) -> None: ... + def glTexCoord1dv(self, v:typing.Sequence) -> None: ... + def glTexCoord1f(self, s:float) -> None: ... + def glTexCoord1fv(self, v:typing.Sequence) -> None: ... + def glTexCoord1i(self, s:int) -> None: ... + def glTexCoord1iv(self, v:typing.Sequence) -> None: ... + def glTexCoord1s(self, s:int) -> None: ... + def glTexCoord1sv(self, v:typing.Sequence) -> None: ... + def glTexCoord2d(self, s:float, t:float) -> None: ... + def glTexCoord2dv(self, v:typing.Sequence) -> None: ... + def glTexCoord2f(self, s:float, t:float) -> None: ... + def glTexCoord2fv(self, v:typing.Sequence) -> None: ... + def glTexCoord2i(self, s:int, t:int) -> None: ... + def glTexCoord2iv(self, v:typing.Sequence) -> None: ... + def glTexCoord2s(self, s:int, t:int) -> None: ... + def glTexCoord2sv(self, v:typing.Sequence) -> None: ... + def glTexCoord3d(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3dv(self, v:typing.Sequence) -> None: ... + def glTexCoord3f(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3fv(self, v:typing.Sequence) -> None: ... + def glTexCoord3i(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3iv(self, v:typing.Sequence) -> None: ... + def glTexCoord3s(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3sv(self, v:typing.Sequence) -> None: ... + def glTexCoord4d(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4dv(self, v:typing.Sequence) -> None: ... + def glTexCoord4f(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4fv(self, v:typing.Sequence) -> None: ... + def glTexCoord4i(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4iv(self, v:typing.Sequence) -> None: ... + def glTexCoord4s(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4sv(self, v:typing.Sequence) -> None: ... + def glTexEnvf(self, target:int, pname:int, param:float) -> None: ... + def glTexEnvfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexEnvi(self, target:int, pname:int, param:int) -> None: ... + def glTexEnviv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGend(self, coord:int, pname:int, param:float) -> None: ... + def glTexGendv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGenf(self, coord:int, pname:int, param:float) -> None: ... + def glTexGenfv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGeni(self, coord:int, pname:int, param:int) -> None: ... + def glTexGeniv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexParameterf(self, target:int, pname:int, param:float) -> None: ... + def glTexParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameteri(self, target:int, pname:int, param:int) -> None: ... + def glTexParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTranslated(self, x:float, y:float, z:float) -> None: ... + def glTranslatef(self, x:float, y:float, z:float) -> None: ... + def glVertex2d(self, x:float, y:float) -> None: ... + def glVertex2dv(self, v:typing.Sequence) -> None: ... + def glVertex2f(self, x:float, y:float) -> None: ... + def glVertex2fv(self, v:typing.Sequence) -> None: ... + def glVertex2i(self, x:int, y:int) -> None: ... + def glVertex2iv(self, v:typing.Sequence) -> None: ... + def glVertex2s(self, x:int, y:int) -> None: ... + def glVertex2sv(self, v:typing.Sequence) -> None: ... + def glVertex3d(self, x:float, y:float, z:float) -> None: ... + def glVertex3dv(self, v:typing.Sequence) -> None: ... + def glVertex3f(self, x:float, y:float, z:float) -> None: ... + def glVertex3fv(self, v:typing.Sequence) -> None: ... + def glVertex3i(self, x:int, y:int, z:int) -> None: ... + def glVertex3iv(self, v:typing.Sequence) -> None: ... + def glVertex3s(self, x:int, y:int, z:int) -> None: ... + def glVertex3sv(self, v:typing.Sequence) -> None: ... + def glVertex4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4dv(self, v:typing.Sequence) -> None: ... + def glVertex4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4fv(self, v:typing.Sequence) -> None: ... + def glVertex4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4iv(self, v:typing.Sequence) -> None: ... + def glVertex4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4sv(self, v:typing.Sequence) -> None: ... + def glViewport(self, x:int, y:int, width:int, height:int) -> None: ... + def initializeOpenGLFunctions(self) -> bool: ... + + +class QOpenGLFunctions_1_1(PySide2.QtGui.QAbstractOpenGLFunctions): + + def __init__(self) -> None: ... + + def glAccum(self, op:int, value:float) -> None: ... + def glAlphaFunc(self, func:int, ref:float) -> None: ... + def glArrayElement(self, i:int) -> None: ... + def glBegin(self, mode:int) -> None: ... + def glBindTexture(self, target:int, texture:int) -> None: ... + def glBlendFunc(self, sfactor:int, dfactor:int) -> None: ... + def glCallList(self, list:int) -> None: ... + def glCallLists(self, n:int, type:int, lists:int) -> None: ... + def glClear(self, mask:int) -> None: ... + def glClearAccum(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearDepth(self, depth:float) -> None: ... + def glClearIndex(self, c:float) -> None: ... + def glClearStencil(self, s:int) -> None: ... + def glClipPlane(self, plane:int, equation:typing.Sequence) -> None: ... + def glColor3b(self, red:int, green:int, blue:int) -> None: ... + def glColor3bv(self, v:bytes) -> None: ... + def glColor3d(self, red:float, green:float, blue:float) -> None: ... + def glColor3dv(self, v:typing.Sequence) -> None: ... + def glColor3f(self, red:float, green:float, blue:float) -> None: ... + def glColor3fv(self, v:typing.Sequence) -> None: ... + def glColor3i(self, red:int, green:int, blue:int) -> None: ... + def glColor3iv(self, v:typing.Sequence) -> None: ... + def glColor3s(self, red:int, green:int, blue:int) -> None: ... + def glColor3sv(self, v:typing.Sequence) -> None: ... + def glColor3ub(self, red:int, green:int, blue:int) -> None: ... + def glColor3ubv(self, v:bytes) -> None: ... + def glColor3ui(self, red:int, green:int, blue:int) -> None: ... + def glColor3uiv(self, v:typing.Sequence) -> None: ... + def glColor3us(self, red:int, green:int, blue:int) -> None: ... + def glColor3usv(self, v:typing.Sequence) -> None: ... + def glColor4b(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4bv(self, v:bytes) -> None: ... + def glColor4d(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4dv(self, v:typing.Sequence) -> None: ... + def glColor4f(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4fv(self, v:typing.Sequence) -> None: ... + def glColor4i(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4iv(self, v:typing.Sequence) -> None: ... + def glColor4s(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4sv(self, v:typing.Sequence) -> None: ... + def glColor4ub(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4ubv(self, v:bytes) -> None: ... + def glColor4ui(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4uiv(self, v:typing.Sequence) -> None: ... + def glColor4us(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4usv(self, v:typing.Sequence) -> None: ... + def glColorMask(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColorMaterial(self, face:int, mode:int) -> None: ... + def glColorPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glCopyPixels(self, x:int, y:int, width:int, height:int, type:int) -> None: ... + def glCopyTexImage1D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, border:int) -> None: ... + def glCopyTexImage2D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, height:int, border:int) -> None: ... + def glCopyTexSubImage1D(self, target:int, level:int, xoffset:int, x:int, y:int, width:int) -> None: ... + def glCopyTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCullFace(self, mode:int) -> None: ... + def glDeleteLists(self, list:int, range:int) -> None: ... + def glDeleteTextures(self, n:int, textures:typing.Sequence) -> None: ... + def glDepthFunc(self, func:int) -> None: ... + def glDepthMask(self, flag:int) -> None: ... + def glDepthRange(self, nearVal:float, farVal:float) -> None: ... + def glDisable(self, cap:int) -> None: ... + def glDisableClientState(self, array:int) -> None: ... + def glDrawArrays(self, mode:int, first:int, count:int) -> None: ... + def glDrawBuffer(self, mode:int) -> None: ... + def glDrawElements(self, mode:int, count:int, type:int, indices:int) -> None: ... + def glDrawPixels(self, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glEdgeFlag(self, flag:int) -> None: ... + def glEdgeFlagPointer(self, stride:int, pointer:int) -> None: ... + def glEnable(self, cap:int) -> None: ... + def glEnableClientState(self, array:int) -> None: ... + def glEnd(self) -> None: ... + def glEndList(self) -> None: ... + def glEvalCoord1d(self, u:float) -> None: ... + def glEvalCoord1dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord1f(self, u:float) -> None: ... + def glEvalCoord1fv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2d(self, u:float, v:float) -> None: ... + def glEvalCoord2dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2f(self, u:float, v:float) -> None: ... + def glEvalCoord2fv(self, u:typing.Sequence) -> None: ... + def glEvalMesh1(self, mode:int, i1:int, i2:int) -> None: ... + def glEvalMesh2(self, mode:int, i1:int, i2:int, j1:int, j2:int) -> None: ... + def glEvalPoint1(self, i:int) -> None: ... + def glEvalPoint2(self, i:int, j:int) -> None: ... + def glFinish(self) -> None: ... + def glFlush(self) -> None: ... + def glFogf(self, pname:int, param:float) -> None: ... + def glFogfv(self, pname:int, params:typing.Sequence) -> None: ... + def glFogi(self, pname:int, param:int) -> None: ... + def glFogiv(self, pname:int, params:typing.Sequence) -> None: ... + def glFrontFace(self, mode:int) -> None: ... + def glFrustum(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glGenLists(self, range:int) -> int: ... + def glGetError(self) -> int: ... + def glGetString(self, name:int) -> bytes: ... + def glHint(self, target:int, mode:int) -> None: ... + def glIndexMask(self, mask:int) -> None: ... + def glIndexPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glIndexd(self, c:float) -> None: ... + def glIndexdv(self, c:typing.Sequence) -> None: ... + def glIndexf(self, c:float) -> None: ... + def glIndexfv(self, c:typing.Sequence) -> None: ... + def glIndexi(self, c:int) -> None: ... + def glIndexiv(self, c:typing.Sequence) -> None: ... + def glIndexs(self, c:int) -> None: ... + def glIndexsv(self, c:typing.Sequence) -> None: ... + def glIndexub(self, c:int) -> None: ... + def glIndexubv(self, c:bytes) -> None: ... + def glInitNames(self) -> None: ... + def glInterleavedArrays(self, format:int, stride:int, pointer:int) -> None: ... + def glIsEnabled(self, cap:int) -> int: ... + def glIsList(self, list:int) -> int: ... + def glIsTexture(self, texture:int) -> int: ... + def glLightModelf(self, pname:int, param:float) -> None: ... + def glLightModelfv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightModeli(self, pname:int, param:int) -> None: ... + def glLightModeliv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightf(self, light:int, pname:int, param:float) -> None: ... + def glLightfv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLighti(self, light:int, pname:int, param:int) -> None: ... + def glLightiv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLineStipple(self, factor:int, pattern:int) -> None: ... + def glLineWidth(self, width:float) -> None: ... + def glListBase(self, base:int) -> None: ... + def glLoadIdentity(self) -> None: ... + def glLoadMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadMatrixf(self, m:typing.Sequence) -> None: ... + def glLoadName(self, name:int) -> None: ... + def glLogicOp(self, opcode:int) -> None: ... + def glMap1d(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap1f(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap2d(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMap2f(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMapGrid1d(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid1f(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid2d(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMapGrid2f(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMaterialf(self, face:int, pname:int, param:float) -> None: ... + def glMaterialfv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMateriali(self, face:int, pname:int, param:int) -> None: ... + def glMaterialiv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMatrixMode(self, mode:int) -> None: ... + def glMultMatrixd(self, m:typing.Sequence) -> None: ... + def glMultMatrixf(self, m:typing.Sequence) -> None: ... + def glNewList(self, list:int, mode:int) -> None: ... + def glNormal3b(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3bv(self, v:bytes) -> None: ... + def glNormal3d(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3dv(self, v:typing.Sequence) -> None: ... + def glNormal3f(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3fv(self, v:typing.Sequence) -> None: ... + def glNormal3i(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3iv(self, v:typing.Sequence) -> None: ... + def glNormal3s(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3sv(self, v:typing.Sequence) -> None: ... + def glNormalPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glOrtho(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glPassThrough(self, token:float) -> None: ... + def glPixelMapfv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapuiv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapusv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelStoref(self, pname:int, param:float) -> None: ... + def glPixelStorei(self, pname:int, param:int) -> None: ... + def glPixelTransferf(self, pname:int, param:float) -> None: ... + def glPixelTransferi(self, pname:int, param:int) -> None: ... + def glPixelZoom(self, xfactor:float, yfactor:float) -> None: ... + def glPointSize(self, size:float) -> None: ... + def glPolygonMode(self, face:int, mode:int) -> None: ... + def glPolygonOffset(self, factor:float, units:float) -> None: ... + def glPopAttrib(self) -> None: ... + def glPopClientAttrib(self) -> None: ... + def glPopMatrix(self) -> None: ... + def glPopName(self) -> None: ... + def glPrioritizeTextures(self, n:int, textures:typing.Sequence, priorities:typing.Sequence) -> None: ... + def glPushAttrib(self, mask:int) -> None: ... + def glPushClientAttrib(self, mask:int) -> None: ... + def glPushMatrix(self) -> None: ... + def glPushName(self, name:int) -> None: ... + def glRasterPos2d(self, x:float, y:float) -> None: ... + def glRasterPos2dv(self, v:typing.Sequence) -> None: ... + def glRasterPos2f(self, x:float, y:float) -> None: ... + def glRasterPos2fv(self, v:typing.Sequence) -> None: ... + def glRasterPos2i(self, x:int, y:int) -> None: ... + def glRasterPos2iv(self, v:typing.Sequence) -> None: ... + def glRasterPos2s(self, x:int, y:int) -> None: ... + def glRasterPos2sv(self, v:typing.Sequence) -> None: ... + def glRasterPos3d(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3dv(self, v:typing.Sequence) -> None: ... + def glRasterPos3f(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3fv(self, v:typing.Sequence) -> None: ... + def glRasterPos3i(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3iv(self, v:typing.Sequence) -> None: ... + def glRasterPos3s(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3sv(self, v:typing.Sequence) -> None: ... + def glRasterPos4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4dv(self, v:typing.Sequence) -> None: ... + def glRasterPos4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4fv(self, v:typing.Sequence) -> None: ... + def glRasterPos4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4iv(self, v:typing.Sequence) -> None: ... + def glRasterPos4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4sv(self, v:typing.Sequence) -> None: ... + def glReadBuffer(self, mode:int) -> None: ... + def glRectd(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectdv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRectf(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectfv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRecti(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectiv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRects(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectsv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRenderMode(self, mode:int) -> int: ... + def glRotated(self, angle:float, x:float, y:float, z:float) -> None: ... + def glRotatef(self, angle:float, x:float, y:float, z:float) -> None: ... + def glScaled(self, x:float, y:float, z:float) -> None: ... + def glScalef(self, x:float, y:float, z:float) -> None: ... + def glScissor(self, x:int, y:int, width:int, height:int) -> None: ... + def glShadeModel(self, mode:int) -> None: ... + def glStencilFunc(self, func:int, ref:int, mask:int) -> None: ... + def glStencilMask(self, mask:int) -> None: ... + def glStencilOp(self, fail:int, zfail:int, zpass:int) -> None: ... + def glTexCoord1d(self, s:float) -> None: ... + def glTexCoord1dv(self, v:typing.Sequence) -> None: ... + def glTexCoord1f(self, s:float) -> None: ... + def glTexCoord1fv(self, v:typing.Sequence) -> None: ... + def glTexCoord1i(self, s:int) -> None: ... + def glTexCoord1iv(self, v:typing.Sequence) -> None: ... + def glTexCoord1s(self, s:int) -> None: ... + def glTexCoord1sv(self, v:typing.Sequence) -> None: ... + def glTexCoord2d(self, s:float, t:float) -> None: ... + def glTexCoord2dv(self, v:typing.Sequence) -> None: ... + def glTexCoord2f(self, s:float, t:float) -> None: ... + def glTexCoord2fv(self, v:typing.Sequence) -> None: ... + def glTexCoord2i(self, s:int, t:int) -> None: ... + def glTexCoord2iv(self, v:typing.Sequence) -> None: ... + def glTexCoord2s(self, s:int, t:int) -> None: ... + def glTexCoord2sv(self, v:typing.Sequence) -> None: ... + def glTexCoord3d(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3dv(self, v:typing.Sequence) -> None: ... + def glTexCoord3f(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3fv(self, v:typing.Sequence) -> None: ... + def glTexCoord3i(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3iv(self, v:typing.Sequence) -> None: ... + def glTexCoord3s(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3sv(self, v:typing.Sequence) -> None: ... + def glTexCoord4d(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4dv(self, v:typing.Sequence) -> None: ... + def glTexCoord4f(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4fv(self, v:typing.Sequence) -> None: ... + def glTexCoord4i(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4iv(self, v:typing.Sequence) -> None: ... + def glTexCoord4s(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4sv(self, v:typing.Sequence) -> None: ... + def glTexCoordPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glTexEnvf(self, target:int, pname:int, param:float) -> None: ... + def glTexEnvfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexEnvi(self, target:int, pname:int, param:int) -> None: ... + def glTexEnviv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGend(self, coord:int, pname:int, param:float) -> None: ... + def glTexGendv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGenf(self, coord:int, pname:int, param:float) -> None: ... + def glTexGenfv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGeni(self, coord:int, pname:int, param:int) -> None: ... + def glTexGeniv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexParameterf(self, target:int, pname:int, param:float) -> None: ... + def glTexParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameteri(self, target:int, pname:int, param:int) -> None: ... + def glTexParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glTranslated(self, x:float, y:float, z:float) -> None: ... + def glTranslatef(self, x:float, y:float, z:float) -> None: ... + def glVertex2d(self, x:float, y:float) -> None: ... + def glVertex2dv(self, v:typing.Sequence) -> None: ... + def glVertex2f(self, x:float, y:float) -> None: ... + def glVertex2fv(self, v:typing.Sequence) -> None: ... + def glVertex2i(self, x:int, y:int) -> None: ... + def glVertex2iv(self, v:typing.Sequence) -> None: ... + def glVertex2s(self, x:int, y:int) -> None: ... + def glVertex2sv(self, v:typing.Sequence) -> None: ... + def glVertex3d(self, x:float, y:float, z:float) -> None: ... + def glVertex3dv(self, v:typing.Sequence) -> None: ... + def glVertex3f(self, x:float, y:float, z:float) -> None: ... + def glVertex3fv(self, v:typing.Sequence) -> None: ... + def glVertex3i(self, x:int, y:int, z:int) -> None: ... + def glVertex3iv(self, v:typing.Sequence) -> None: ... + def glVertex3s(self, x:int, y:int, z:int) -> None: ... + def glVertex3sv(self, v:typing.Sequence) -> None: ... + def glVertex4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4dv(self, v:typing.Sequence) -> None: ... + def glVertex4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4fv(self, v:typing.Sequence) -> None: ... + def glVertex4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4iv(self, v:typing.Sequence) -> None: ... + def glVertex4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4sv(self, v:typing.Sequence) -> None: ... + def glVertexPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glViewport(self, x:int, y:int, width:int, height:int) -> None: ... + def initializeOpenGLFunctions(self) -> bool: ... + + +class QOpenGLFunctions_1_2(PySide2.QtGui.QAbstractOpenGLFunctions): + + def __init__(self) -> None: ... + + def glAccum(self, op:int, value:float) -> None: ... + def glAlphaFunc(self, func:int, ref:float) -> None: ... + def glArrayElement(self, i:int) -> None: ... + def glBegin(self, mode:int) -> None: ... + def glBindTexture(self, target:int, texture:int) -> None: ... + def glBlendColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glBlendEquation(self, mode:int) -> None: ... + def glBlendFunc(self, sfactor:int, dfactor:int) -> None: ... + def glCallList(self, list:int) -> None: ... + def glCallLists(self, n:int, type:int, lists:int) -> None: ... + def glClear(self, mask:int) -> None: ... + def glClearAccum(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearDepth(self, depth:float) -> None: ... + def glClearIndex(self, c:float) -> None: ... + def glClearStencil(self, s:int) -> None: ... + def glClipPlane(self, plane:int, equation:typing.Sequence) -> None: ... + def glColor3b(self, red:int, green:int, blue:int) -> None: ... + def glColor3bv(self, v:bytes) -> None: ... + def glColor3d(self, red:float, green:float, blue:float) -> None: ... + def glColor3dv(self, v:typing.Sequence) -> None: ... + def glColor3f(self, red:float, green:float, blue:float) -> None: ... + def glColor3fv(self, v:typing.Sequence) -> None: ... + def glColor3i(self, red:int, green:int, blue:int) -> None: ... + def glColor3iv(self, v:typing.Sequence) -> None: ... + def glColor3s(self, red:int, green:int, blue:int) -> None: ... + def glColor3sv(self, v:typing.Sequence) -> None: ... + def glColor3ub(self, red:int, green:int, blue:int) -> None: ... + def glColor3ubv(self, v:bytes) -> None: ... + def glColor3ui(self, red:int, green:int, blue:int) -> None: ... + def glColor3uiv(self, v:typing.Sequence) -> None: ... + def glColor3us(self, red:int, green:int, blue:int) -> None: ... + def glColor3usv(self, v:typing.Sequence) -> None: ... + def glColor4b(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4bv(self, v:bytes) -> None: ... + def glColor4d(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4dv(self, v:typing.Sequence) -> None: ... + def glColor4f(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4fv(self, v:typing.Sequence) -> None: ... + def glColor4i(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4iv(self, v:typing.Sequence) -> None: ... + def glColor4s(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4sv(self, v:typing.Sequence) -> None: ... + def glColor4ub(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4ubv(self, v:bytes) -> None: ... + def glColor4ui(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4uiv(self, v:typing.Sequence) -> None: ... + def glColor4us(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4usv(self, v:typing.Sequence) -> None: ... + def glColorMask(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColorMaterial(self, face:int, mode:int) -> None: ... + def glColorPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glColorSubTable(self, target:int, start:int, count:int, format:int, type:int, data:int) -> None: ... + def glColorTable(self, target:int, internalformat:int, width:int, format:int, type:int, table:int) -> None: ... + def glColorTableParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glColorTableParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glConvolutionFilter1D(self, target:int, internalformat:int, width:int, format:int, type:int, image:int) -> None: ... + def glConvolutionFilter2D(self, target:int, internalformat:int, width:int, height:int, format:int, type:int, image:int) -> None: ... + def glConvolutionParameterf(self, target:int, pname:int, params:float) -> None: ... + def glConvolutionParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glConvolutionParameteri(self, target:int, pname:int, params:int) -> None: ... + def glConvolutionParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glCopyColorSubTable(self, target:int, start:int, x:int, y:int, width:int) -> None: ... + def glCopyColorTable(self, target:int, internalformat:int, x:int, y:int, width:int) -> None: ... + def glCopyConvolutionFilter1D(self, target:int, internalformat:int, x:int, y:int, width:int) -> None: ... + def glCopyConvolutionFilter2D(self, target:int, internalformat:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyPixels(self, x:int, y:int, width:int, height:int, type:int) -> None: ... + def glCopyTexImage1D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, border:int) -> None: ... + def glCopyTexImage2D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, height:int, border:int) -> None: ... + def glCopyTexSubImage1D(self, target:int, level:int, xoffset:int, x:int, y:int, width:int) -> None: ... + def glCopyTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCullFace(self, mode:int) -> None: ... + def glDeleteLists(self, list:int, range:int) -> None: ... + def glDeleteTextures(self, n:int, textures:typing.Sequence) -> None: ... + def glDepthFunc(self, func:int) -> None: ... + def glDepthMask(self, flag:int) -> None: ... + def glDepthRange(self, nearVal:float, farVal:float) -> None: ... + def glDisable(self, cap:int) -> None: ... + def glDisableClientState(self, array:int) -> None: ... + def glDrawArrays(self, mode:int, first:int, count:int) -> None: ... + def glDrawBuffer(self, mode:int) -> None: ... + def glDrawElements(self, mode:int, count:int, type:int, indices:int) -> None: ... + def glDrawPixels(self, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glDrawRangeElements(self, mode:int, start:int, end:int, count:int, type:int, indices:int) -> None: ... + def glEdgeFlag(self, flag:int) -> None: ... + def glEdgeFlagPointer(self, stride:int, pointer:int) -> None: ... + def glEnable(self, cap:int) -> None: ... + def glEnableClientState(self, array:int) -> None: ... + def glEnd(self) -> None: ... + def glEndList(self) -> None: ... + def glEvalCoord1d(self, u:float) -> None: ... + def glEvalCoord1dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord1f(self, u:float) -> None: ... + def glEvalCoord1fv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2d(self, u:float, v:float) -> None: ... + def glEvalCoord2dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2f(self, u:float, v:float) -> None: ... + def glEvalCoord2fv(self, u:typing.Sequence) -> None: ... + def glEvalMesh1(self, mode:int, i1:int, i2:int) -> None: ... + def glEvalMesh2(self, mode:int, i1:int, i2:int, j1:int, j2:int) -> None: ... + def glEvalPoint1(self, i:int) -> None: ... + def glEvalPoint2(self, i:int, j:int) -> None: ... + def glFinish(self) -> None: ... + def glFlush(self) -> None: ... + def glFogf(self, pname:int, param:float) -> None: ... + def glFogfv(self, pname:int, params:typing.Sequence) -> None: ... + def glFogi(self, pname:int, param:int) -> None: ... + def glFogiv(self, pname:int, params:typing.Sequence) -> None: ... + def glFrontFace(self, mode:int) -> None: ... + def glFrustum(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glGenLists(self, range:int) -> int: ... + def glGetError(self) -> int: ... + def glGetString(self, name:int) -> bytes: ... + def glHint(self, target:int, mode:int) -> None: ... + def glHistogram(self, target:int, width:int, internalformat:int, sink:int) -> None: ... + def glIndexMask(self, mask:int) -> None: ... + def glIndexPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glIndexd(self, c:float) -> None: ... + def glIndexdv(self, c:typing.Sequence) -> None: ... + def glIndexf(self, c:float) -> None: ... + def glIndexfv(self, c:typing.Sequence) -> None: ... + def glIndexi(self, c:int) -> None: ... + def glIndexiv(self, c:typing.Sequence) -> None: ... + def glIndexs(self, c:int) -> None: ... + def glIndexsv(self, c:typing.Sequence) -> None: ... + def glIndexub(self, c:int) -> None: ... + def glIndexubv(self, c:bytes) -> None: ... + def glInitNames(self) -> None: ... + def glInterleavedArrays(self, format:int, stride:int, pointer:int) -> None: ... + def glIsEnabled(self, cap:int) -> int: ... + def glIsList(self, list:int) -> int: ... + def glIsTexture(self, texture:int) -> int: ... + def glLightModelf(self, pname:int, param:float) -> None: ... + def glLightModelfv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightModeli(self, pname:int, param:int) -> None: ... + def glLightModeliv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightf(self, light:int, pname:int, param:float) -> None: ... + def glLightfv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLighti(self, light:int, pname:int, param:int) -> None: ... + def glLightiv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLineStipple(self, factor:int, pattern:int) -> None: ... + def glLineWidth(self, width:float) -> None: ... + def glListBase(self, base:int) -> None: ... + def glLoadIdentity(self) -> None: ... + def glLoadMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadMatrixf(self, m:typing.Sequence) -> None: ... + def glLoadName(self, name:int) -> None: ... + def glLogicOp(self, opcode:int) -> None: ... + def glMap1d(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap1f(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap2d(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMap2f(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMapGrid1d(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid1f(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid2d(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMapGrid2f(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMaterialf(self, face:int, pname:int, param:float) -> None: ... + def glMaterialfv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMateriali(self, face:int, pname:int, param:int) -> None: ... + def glMaterialiv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMatrixMode(self, mode:int) -> None: ... + def glMinmax(self, target:int, internalformat:int, sink:int) -> None: ... + def glMultMatrixd(self, m:typing.Sequence) -> None: ... + def glMultMatrixf(self, m:typing.Sequence) -> None: ... + def glNewList(self, list:int, mode:int) -> None: ... + def glNormal3b(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3bv(self, v:bytes) -> None: ... + def glNormal3d(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3dv(self, v:typing.Sequence) -> None: ... + def glNormal3f(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3fv(self, v:typing.Sequence) -> None: ... + def glNormal3i(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3iv(self, v:typing.Sequence) -> None: ... + def glNormal3s(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3sv(self, v:typing.Sequence) -> None: ... + def glNormalPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glOrtho(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glPassThrough(self, token:float) -> None: ... + def glPixelMapfv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapuiv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapusv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelStoref(self, pname:int, param:float) -> None: ... + def glPixelStorei(self, pname:int, param:int) -> None: ... + def glPixelTransferf(self, pname:int, param:float) -> None: ... + def glPixelTransferi(self, pname:int, param:int) -> None: ... + def glPixelZoom(self, xfactor:float, yfactor:float) -> None: ... + def glPointSize(self, size:float) -> None: ... + def glPolygonMode(self, face:int, mode:int) -> None: ... + def glPolygonOffset(self, factor:float, units:float) -> None: ... + def glPopAttrib(self) -> None: ... + def glPopClientAttrib(self) -> None: ... + def glPopMatrix(self) -> None: ... + def glPopName(self) -> None: ... + def glPrioritizeTextures(self, n:int, textures:typing.Sequence, priorities:typing.Sequence) -> None: ... + def glPushAttrib(self, mask:int) -> None: ... + def glPushClientAttrib(self, mask:int) -> None: ... + def glPushMatrix(self) -> None: ... + def glPushName(self, name:int) -> None: ... + def glRasterPos2d(self, x:float, y:float) -> None: ... + def glRasterPos2dv(self, v:typing.Sequence) -> None: ... + def glRasterPos2f(self, x:float, y:float) -> None: ... + def glRasterPos2fv(self, v:typing.Sequence) -> None: ... + def glRasterPos2i(self, x:int, y:int) -> None: ... + def glRasterPos2iv(self, v:typing.Sequence) -> None: ... + def glRasterPos2s(self, x:int, y:int) -> None: ... + def glRasterPos2sv(self, v:typing.Sequence) -> None: ... + def glRasterPos3d(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3dv(self, v:typing.Sequence) -> None: ... + def glRasterPos3f(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3fv(self, v:typing.Sequence) -> None: ... + def glRasterPos3i(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3iv(self, v:typing.Sequence) -> None: ... + def glRasterPos3s(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3sv(self, v:typing.Sequence) -> None: ... + def glRasterPos4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4dv(self, v:typing.Sequence) -> None: ... + def glRasterPos4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4fv(self, v:typing.Sequence) -> None: ... + def glRasterPos4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4iv(self, v:typing.Sequence) -> None: ... + def glRasterPos4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4sv(self, v:typing.Sequence) -> None: ... + def glReadBuffer(self, mode:int) -> None: ... + def glRectd(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectdv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRectf(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectfv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRecti(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectiv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRects(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectsv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRenderMode(self, mode:int) -> int: ... + def glResetHistogram(self, target:int) -> None: ... + def glResetMinmax(self, target:int) -> None: ... + def glRotated(self, angle:float, x:float, y:float, z:float) -> None: ... + def glRotatef(self, angle:float, x:float, y:float, z:float) -> None: ... + def glScaled(self, x:float, y:float, z:float) -> None: ... + def glScalef(self, x:float, y:float, z:float) -> None: ... + def glScissor(self, x:int, y:int, width:int, height:int) -> None: ... + def glSeparableFilter2D(self, target:int, internalformat:int, width:int, height:int, format:int, type:int, row:int, column:int) -> None: ... + def glShadeModel(self, mode:int) -> None: ... + def glStencilFunc(self, func:int, ref:int, mask:int) -> None: ... + def glStencilMask(self, mask:int) -> None: ... + def glStencilOp(self, fail:int, zfail:int, zpass:int) -> None: ... + def glTexCoord1d(self, s:float) -> None: ... + def glTexCoord1dv(self, v:typing.Sequence) -> None: ... + def glTexCoord1f(self, s:float) -> None: ... + def glTexCoord1fv(self, v:typing.Sequence) -> None: ... + def glTexCoord1i(self, s:int) -> None: ... + def glTexCoord1iv(self, v:typing.Sequence) -> None: ... + def glTexCoord1s(self, s:int) -> None: ... + def glTexCoord1sv(self, v:typing.Sequence) -> None: ... + def glTexCoord2d(self, s:float, t:float) -> None: ... + def glTexCoord2dv(self, v:typing.Sequence) -> None: ... + def glTexCoord2f(self, s:float, t:float) -> None: ... + def glTexCoord2fv(self, v:typing.Sequence) -> None: ... + def glTexCoord2i(self, s:int, t:int) -> None: ... + def glTexCoord2iv(self, v:typing.Sequence) -> None: ... + def glTexCoord2s(self, s:int, t:int) -> None: ... + def glTexCoord2sv(self, v:typing.Sequence) -> None: ... + def glTexCoord3d(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3dv(self, v:typing.Sequence) -> None: ... + def glTexCoord3f(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3fv(self, v:typing.Sequence) -> None: ... + def glTexCoord3i(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3iv(self, v:typing.Sequence) -> None: ... + def glTexCoord3s(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3sv(self, v:typing.Sequence) -> None: ... + def glTexCoord4d(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4dv(self, v:typing.Sequence) -> None: ... + def glTexCoord4f(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4fv(self, v:typing.Sequence) -> None: ... + def glTexCoord4i(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4iv(self, v:typing.Sequence) -> None: ... + def glTexCoord4s(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4sv(self, v:typing.Sequence) -> None: ... + def glTexCoordPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glTexEnvf(self, target:int, pname:int, param:float) -> None: ... + def glTexEnvfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexEnvi(self, target:int, pname:int, param:int) -> None: ... + def glTexEnviv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGend(self, coord:int, pname:int, param:float) -> None: ... + def glTexGendv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGenf(self, coord:int, pname:int, param:float) -> None: ... + def glTexGenfv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGeni(self, coord:int, pname:int, param:int) -> None: ... + def glTexGeniv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexParameterf(self, target:int, pname:int, param:float) -> None: ... + def glTexParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameteri(self, target:int, pname:int, param:int) -> None: ... + def glTexParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, pixels:int) -> None: ... + def glTranslated(self, x:float, y:float, z:float) -> None: ... + def glTranslatef(self, x:float, y:float, z:float) -> None: ... + def glVertex2d(self, x:float, y:float) -> None: ... + def glVertex2dv(self, v:typing.Sequence) -> None: ... + def glVertex2f(self, x:float, y:float) -> None: ... + def glVertex2fv(self, v:typing.Sequence) -> None: ... + def glVertex2i(self, x:int, y:int) -> None: ... + def glVertex2iv(self, v:typing.Sequence) -> None: ... + def glVertex2s(self, x:int, y:int) -> None: ... + def glVertex2sv(self, v:typing.Sequence) -> None: ... + def glVertex3d(self, x:float, y:float, z:float) -> None: ... + def glVertex3dv(self, v:typing.Sequence) -> None: ... + def glVertex3f(self, x:float, y:float, z:float) -> None: ... + def glVertex3fv(self, v:typing.Sequence) -> None: ... + def glVertex3i(self, x:int, y:int, z:int) -> None: ... + def glVertex3iv(self, v:typing.Sequence) -> None: ... + def glVertex3s(self, x:int, y:int, z:int) -> None: ... + def glVertex3sv(self, v:typing.Sequence) -> None: ... + def glVertex4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4dv(self, v:typing.Sequence) -> None: ... + def glVertex4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4fv(self, v:typing.Sequence) -> None: ... + def glVertex4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4iv(self, v:typing.Sequence) -> None: ... + def glVertex4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4sv(self, v:typing.Sequence) -> None: ... + def glVertexPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glViewport(self, x:int, y:int, width:int, height:int) -> None: ... + def initializeOpenGLFunctions(self) -> bool: ... + + +class QOpenGLFunctions_1_3(PySide2.QtGui.QAbstractOpenGLFunctions): + + def __init__(self) -> None: ... + + def glAccum(self, op:int, value:float) -> None: ... + def glActiveTexture(self, texture:int) -> None: ... + def glAlphaFunc(self, func:int, ref:float) -> None: ... + def glArrayElement(self, i:int) -> None: ... + def glBegin(self, mode:int) -> None: ... + def glBindTexture(self, target:int, texture:int) -> None: ... + def glBlendColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glBlendEquation(self, mode:int) -> None: ... + def glBlendFunc(self, sfactor:int, dfactor:int) -> None: ... + def glCallList(self, list:int) -> None: ... + def glCallLists(self, n:int, type:int, lists:int) -> None: ... + def glClear(self, mask:int) -> None: ... + def glClearAccum(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearDepth(self, depth:float) -> None: ... + def glClearIndex(self, c:float) -> None: ... + def glClearStencil(self, s:int) -> None: ... + def glClientActiveTexture(self, texture:int) -> None: ... + def glClipPlane(self, plane:int, equation:typing.Sequence) -> None: ... + def glColor3b(self, red:int, green:int, blue:int) -> None: ... + def glColor3bv(self, v:bytes) -> None: ... + def glColor3d(self, red:float, green:float, blue:float) -> None: ... + def glColor3dv(self, v:typing.Sequence) -> None: ... + def glColor3f(self, red:float, green:float, blue:float) -> None: ... + def glColor3fv(self, v:typing.Sequence) -> None: ... + def glColor3i(self, red:int, green:int, blue:int) -> None: ... + def glColor3iv(self, v:typing.Sequence) -> None: ... + def glColor3s(self, red:int, green:int, blue:int) -> None: ... + def glColor3sv(self, v:typing.Sequence) -> None: ... + def glColor3ub(self, red:int, green:int, blue:int) -> None: ... + def glColor3ubv(self, v:bytes) -> None: ... + def glColor3ui(self, red:int, green:int, blue:int) -> None: ... + def glColor3uiv(self, v:typing.Sequence) -> None: ... + def glColor3us(self, red:int, green:int, blue:int) -> None: ... + def glColor3usv(self, v:typing.Sequence) -> None: ... + def glColor4b(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4bv(self, v:bytes) -> None: ... + def glColor4d(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4dv(self, v:typing.Sequence) -> None: ... + def glColor4f(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4fv(self, v:typing.Sequence) -> None: ... + def glColor4i(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4iv(self, v:typing.Sequence) -> None: ... + def glColor4s(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4sv(self, v:typing.Sequence) -> None: ... + def glColor4ub(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4ubv(self, v:bytes) -> None: ... + def glColor4ui(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4uiv(self, v:typing.Sequence) -> None: ... + def glColor4us(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4usv(self, v:typing.Sequence) -> None: ... + def glColorMask(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColorMaterial(self, face:int, mode:int) -> None: ... + def glColorPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glColorSubTable(self, target:int, start:int, count:int, format:int, type:int, data:int) -> None: ... + def glColorTable(self, target:int, internalformat:int, width:int, format:int, type:int, table:int) -> None: ... + def glColorTableParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glColorTableParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glCompressedTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, imageSize:int, data:int) -> None: ... + def glConvolutionFilter1D(self, target:int, internalformat:int, width:int, format:int, type:int, image:int) -> None: ... + def glConvolutionFilter2D(self, target:int, internalformat:int, width:int, height:int, format:int, type:int, image:int) -> None: ... + def glConvolutionParameterf(self, target:int, pname:int, params:float) -> None: ... + def glConvolutionParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glConvolutionParameteri(self, target:int, pname:int, params:int) -> None: ... + def glConvolutionParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glCopyColorSubTable(self, target:int, start:int, x:int, y:int, width:int) -> None: ... + def glCopyColorTable(self, target:int, internalformat:int, x:int, y:int, width:int) -> None: ... + def glCopyConvolutionFilter1D(self, target:int, internalformat:int, x:int, y:int, width:int) -> None: ... + def glCopyConvolutionFilter2D(self, target:int, internalformat:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyPixels(self, x:int, y:int, width:int, height:int, type:int) -> None: ... + def glCopyTexImage1D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, border:int) -> None: ... + def glCopyTexImage2D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, height:int, border:int) -> None: ... + def glCopyTexSubImage1D(self, target:int, level:int, xoffset:int, x:int, y:int, width:int) -> None: ... + def glCopyTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCullFace(self, mode:int) -> None: ... + def glDeleteLists(self, list:int, range:int) -> None: ... + def glDeleteTextures(self, n:int, textures:typing.Sequence) -> None: ... + def glDepthFunc(self, func:int) -> None: ... + def glDepthMask(self, flag:int) -> None: ... + def glDepthRange(self, nearVal:float, farVal:float) -> None: ... + def glDisable(self, cap:int) -> None: ... + def glDisableClientState(self, array:int) -> None: ... + def glDrawArrays(self, mode:int, first:int, count:int) -> None: ... + def glDrawBuffer(self, mode:int) -> None: ... + def glDrawElements(self, mode:int, count:int, type:int, indices:int) -> None: ... + def glDrawPixels(self, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glDrawRangeElements(self, mode:int, start:int, end:int, count:int, type:int, indices:int) -> None: ... + def glEdgeFlag(self, flag:int) -> None: ... + def glEdgeFlagPointer(self, stride:int, pointer:int) -> None: ... + def glEnable(self, cap:int) -> None: ... + def glEnableClientState(self, array:int) -> None: ... + def glEnd(self) -> None: ... + def glEndList(self) -> None: ... + def glEvalCoord1d(self, u:float) -> None: ... + def glEvalCoord1dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord1f(self, u:float) -> None: ... + def glEvalCoord1fv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2d(self, u:float, v:float) -> None: ... + def glEvalCoord2dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2f(self, u:float, v:float) -> None: ... + def glEvalCoord2fv(self, u:typing.Sequence) -> None: ... + def glEvalMesh1(self, mode:int, i1:int, i2:int) -> None: ... + def glEvalMesh2(self, mode:int, i1:int, i2:int, j1:int, j2:int) -> None: ... + def glEvalPoint1(self, i:int) -> None: ... + def glEvalPoint2(self, i:int, j:int) -> None: ... + def glFinish(self) -> None: ... + def glFlush(self) -> None: ... + def glFogf(self, pname:int, param:float) -> None: ... + def glFogfv(self, pname:int, params:typing.Sequence) -> None: ... + def glFogi(self, pname:int, param:int) -> None: ... + def glFogiv(self, pname:int, params:typing.Sequence) -> None: ... + def glFrontFace(self, mode:int) -> None: ... + def glFrustum(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glGenLists(self, range:int) -> int: ... + def glGetError(self) -> int: ... + def glGetString(self, name:int) -> bytes: ... + def glHint(self, target:int, mode:int) -> None: ... + def glHistogram(self, target:int, width:int, internalformat:int, sink:int) -> None: ... + def glIndexMask(self, mask:int) -> None: ... + def glIndexPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glIndexd(self, c:float) -> None: ... + def glIndexdv(self, c:typing.Sequence) -> None: ... + def glIndexf(self, c:float) -> None: ... + def glIndexfv(self, c:typing.Sequence) -> None: ... + def glIndexi(self, c:int) -> None: ... + def glIndexiv(self, c:typing.Sequence) -> None: ... + def glIndexs(self, c:int) -> None: ... + def glIndexsv(self, c:typing.Sequence) -> None: ... + def glIndexub(self, c:int) -> None: ... + def glIndexubv(self, c:bytes) -> None: ... + def glInitNames(self) -> None: ... + def glInterleavedArrays(self, format:int, stride:int, pointer:int) -> None: ... + def glIsEnabled(self, cap:int) -> int: ... + def glIsList(self, list:int) -> int: ... + def glIsTexture(self, texture:int) -> int: ... + def glLightModelf(self, pname:int, param:float) -> None: ... + def glLightModelfv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightModeli(self, pname:int, param:int) -> None: ... + def glLightModeliv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightf(self, light:int, pname:int, param:float) -> None: ... + def glLightfv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLighti(self, light:int, pname:int, param:int) -> None: ... + def glLightiv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLineStipple(self, factor:int, pattern:int) -> None: ... + def glLineWidth(self, width:float) -> None: ... + def glListBase(self, base:int) -> None: ... + def glLoadIdentity(self) -> None: ... + def glLoadMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadMatrixf(self, m:typing.Sequence) -> None: ... + def glLoadName(self, name:int) -> None: ... + def glLoadTransposeMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadTransposeMatrixf(self, m:typing.Sequence) -> None: ... + def glLogicOp(self, opcode:int) -> None: ... + def glMap1d(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap1f(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap2d(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMap2f(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMapGrid1d(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid1f(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid2d(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMapGrid2f(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMaterialf(self, face:int, pname:int, param:float) -> None: ... + def glMaterialfv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMateriali(self, face:int, pname:int, param:int) -> None: ... + def glMaterialiv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMatrixMode(self, mode:int) -> None: ... + def glMinmax(self, target:int, internalformat:int, sink:int) -> None: ... + def glMultMatrixd(self, m:typing.Sequence) -> None: ... + def glMultMatrixf(self, m:typing.Sequence) -> None: ... + def glMultTransposeMatrixd(self, m:typing.Sequence) -> None: ... + def glMultTransposeMatrixf(self, m:typing.Sequence) -> None: ... + def glMultiTexCoord1d(self, target:int, s:float) -> None: ... + def glMultiTexCoord1dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1f(self, target:int, s:float) -> None: ... + def glMultiTexCoord1fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1i(self, target:int, s:int) -> None: ... + def glMultiTexCoord1iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1s(self, target:int, s:int) -> None: ... + def glMultiTexCoord1sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2d(self, target:int, s:float, t:float) -> None: ... + def glMultiTexCoord2dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2f(self, target:int, s:float, t:float) -> None: ... + def glMultiTexCoord2fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2i(self, target:int, s:int, t:int) -> None: ... + def glMultiTexCoord2iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2s(self, target:int, s:int, t:int) -> None: ... + def glMultiTexCoord2sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3d(self, target:int, s:float, t:float, r:float) -> None: ... + def glMultiTexCoord3dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3f(self, target:int, s:float, t:float, r:float) -> None: ... + def glMultiTexCoord3fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3i(self, target:int, s:int, t:int, r:int) -> None: ... + def glMultiTexCoord3iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3s(self, target:int, s:int, t:int, r:int) -> None: ... + def glMultiTexCoord3sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4d(self, target:int, s:float, t:float, r:float, q:float) -> None: ... + def glMultiTexCoord4dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4f(self, target:int, s:float, t:float, r:float, q:float) -> None: ... + def glMultiTexCoord4fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4i(self, target:int, s:int, t:int, r:int, q:int) -> None: ... + def glMultiTexCoord4iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4s(self, target:int, s:int, t:int, r:int, q:int) -> None: ... + def glMultiTexCoord4sv(self, target:int, v:typing.Sequence) -> None: ... + def glNewList(self, list:int, mode:int) -> None: ... + def glNormal3b(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3bv(self, v:bytes) -> None: ... + def glNormal3d(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3dv(self, v:typing.Sequence) -> None: ... + def glNormal3f(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3fv(self, v:typing.Sequence) -> None: ... + def glNormal3i(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3iv(self, v:typing.Sequence) -> None: ... + def glNormal3s(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3sv(self, v:typing.Sequence) -> None: ... + def glNormalPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glOrtho(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glPassThrough(self, token:float) -> None: ... + def glPixelMapfv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapuiv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapusv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelStoref(self, pname:int, param:float) -> None: ... + def glPixelStorei(self, pname:int, param:int) -> None: ... + def glPixelTransferf(self, pname:int, param:float) -> None: ... + def glPixelTransferi(self, pname:int, param:int) -> None: ... + def glPixelZoom(self, xfactor:float, yfactor:float) -> None: ... + def glPointSize(self, size:float) -> None: ... + def glPolygonMode(self, face:int, mode:int) -> None: ... + def glPolygonOffset(self, factor:float, units:float) -> None: ... + def glPopAttrib(self) -> None: ... + def glPopClientAttrib(self) -> None: ... + def glPopMatrix(self) -> None: ... + def glPopName(self) -> None: ... + def glPrioritizeTextures(self, n:int, textures:typing.Sequence, priorities:typing.Sequence) -> None: ... + def glPushAttrib(self, mask:int) -> None: ... + def glPushClientAttrib(self, mask:int) -> None: ... + def glPushMatrix(self) -> None: ... + def glPushName(self, name:int) -> None: ... + def glRasterPos2d(self, x:float, y:float) -> None: ... + def glRasterPos2dv(self, v:typing.Sequence) -> None: ... + def glRasterPos2f(self, x:float, y:float) -> None: ... + def glRasterPos2fv(self, v:typing.Sequence) -> None: ... + def glRasterPos2i(self, x:int, y:int) -> None: ... + def glRasterPos2iv(self, v:typing.Sequence) -> None: ... + def glRasterPos2s(self, x:int, y:int) -> None: ... + def glRasterPos2sv(self, v:typing.Sequence) -> None: ... + def glRasterPos3d(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3dv(self, v:typing.Sequence) -> None: ... + def glRasterPos3f(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3fv(self, v:typing.Sequence) -> None: ... + def glRasterPos3i(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3iv(self, v:typing.Sequence) -> None: ... + def glRasterPos3s(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3sv(self, v:typing.Sequence) -> None: ... + def glRasterPos4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4dv(self, v:typing.Sequence) -> None: ... + def glRasterPos4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4fv(self, v:typing.Sequence) -> None: ... + def glRasterPos4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4iv(self, v:typing.Sequence) -> None: ... + def glRasterPos4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4sv(self, v:typing.Sequence) -> None: ... + def glReadBuffer(self, mode:int) -> None: ... + def glRectd(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectdv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRectf(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectfv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRecti(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectiv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRects(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectsv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRenderMode(self, mode:int) -> int: ... + def glResetHistogram(self, target:int) -> None: ... + def glResetMinmax(self, target:int) -> None: ... + def glRotated(self, angle:float, x:float, y:float, z:float) -> None: ... + def glRotatef(self, angle:float, x:float, y:float, z:float) -> None: ... + def glSampleCoverage(self, value:float, invert:int) -> None: ... + def glScaled(self, x:float, y:float, z:float) -> None: ... + def glScalef(self, x:float, y:float, z:float) -> None: ... + def glScissor(self, x:int, y:int, width:int, height:int) -> None: ... + def glSeparableFilter2D(self, target:int, internalformat:int, width:int, height:int, format:int, type:int, row:int, column:int) -> None: ... + def glShadeModel(self, mode:int) -> None: ... + def glStencilFunc(self, func:int, ref:int, mask:int) -> None: ... + def glStencilMask(self, mask:int) -> None: ... + def glStencilOp(self, fail:int, zfail:int, zpass:int) -> None: ... + def glTexCoord1d(self, s:float) -> None: ... + def glTexCoord1dv(self, v:typing.Sequence) -> None: ... + def glTexCoord1f(self, s:float) -> None: ... + def glTexCoord1fv(self, v:typing.Sequence) -> None: ... + def glTexCoord1i(self, s:int) -> None: ... + def glTexCoord1iv(self, v:typing.Sequence) -> None: ... + def glTexCoord1s(self, s:int) -> None: ... + def glTexCoord1sv(self, v:typing.Sequence) -> None: ... + def glTexCoord2d(self, s:float, t:float) -> None: ... + def glTexCoord2dv(self, v:typing.Sequence) -> None: ... + def glTexCoord2f(self, s:float, t:float) -> None: ... + def glTexCoord2fv(self, v:typing.Sequence) -> None: ... + def glTexCoord2i(self, s:int, t:int) -> None: ... + def glTexCoord2iv(self, v:typing.Sequence) -> None: ... + def glTexCoord2s(self, s:int, t:int) -> None: ... + def glTexCoord2sv(self, v:typing.Sequence) -> None: ... + def glTexCoord3d(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3dv(self, v:typing.Sequence) -> None: ... + def glTexCoord3f(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3fv(self, v:typing.Sequence) -> None: ... + def glTexCoord3i(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3iv(self, v:typing.Sequence) -> None: ... + def glTexCoord3s(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3sv(self, v:typing.Sequence) -> None: ... + def glTexCoord4d(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4dv(self, v:typing.Sequence) -> None: ... + def glTexCoord4f(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4fv(self, v:typing.Sequence) -> None: ... + def glTexCoord4i(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4iv(self, v:typing.Sequence) -> None: ... + def glTexCoord4s(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4sv(self, v:typing.Sequence) -> None: ... + def glTexCoordPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glTexEnvf(self, target:int, pname:int, param:float) -> None: ... + def glTexEnvfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexEnvi(self, target:int, pname:int, param:int) -> None: ... + def glTexEnviv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGend(self, coord:int, pname:int, param:float) -> None: ... + def glTexGendv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGenf(self, coord:int, pname:int, param:float) -> None: ... + def glTexGenfv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGeni(self, coord:int, pname:int, param:int) -> None: ... + def glTexGeniv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexParameterf(self, target:int, pname:int, param:float) -> None: ... + def glTexParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameteri(self, target:int, pname:int, param:int) -> None: ... + def glTexParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, pixels:int) -> None: ... + def glTranslated(self, x:float, y:float, z:float) -> None: ... + def glTranslatef(self, x:float, y:float, z:float) -> None: ... + def glVertex2d(self, x:float, y:float) -> None: ... + def glVertex2dv(self, v:typing.Sequence) -> None: ... + def glVertex2f(self, x:float, y:float) -> None: ... + def glVertex2fv(self, v:typing.Sequence) -> None: ... + def glVertex2i(self, x:int, y:int) -> None: ... + def glVertex2iv(self, v:typing.Sequence) -> None: ... + def glVertex2s(self, x:int, y:int) -> None: ... + def glVertex2sv(self, v:typing.Sequence) -> None: ... + def glVertex3d(self, x:float, y:float, z:float) -> None: ... + def glVertex3dv(self, v:typing.Sequence) -> None: ... + def glVertex3f(self, x:float, y:float, z:float) -> None: ... + def glVertex3fv(self, v:typing.Sequence) -> None: ... + def glVertex3i(self, x:int, y:int, z:int) -> None: ... + def glVertex3iv(self, v:typing.Sequence) -> None: ... + def glVertex3s(self, x:int, y:int, z:int) -> None: ... + def glVertex3sv(self, v:typing.Sequence) -> None: ... + def glVertex4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4dv(self, v:typing.Sequence) -> None: ... + def glVertex4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4fv(self, v:typing.Sequence) -> None: ... + def glVertex4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4iv(self, v:typing.Sequence) -> None: ... + def glVertex4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4sv(self, v:typing.Sequence) -> None: ... + def glVertexPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glViewport(self, x:int, y:int, width:int, height:int) -> None: ... + def initializeOpenGLFunctions(self) -> bool: ... + + +class QOpenGLFunctions_1_4(PySide2.QtGui.QAbstractOpenGLFunctions): + + def __init__(self) -> None: ... + + def glAccum(self, op:int, value:float) -> None: ... + def glActiveTexture(self, texture:int) -> None: ... + def glAlphaFunc(self, func:int, ref:float) -> None: ... + def glArrayElement(self, i:int) -> None: ... + def glBegin(self, mode:int) -> None: ... + def glBindTexture(self, target:int, texture:int) -> None: ... + def glBlendColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glBlendEquation(self, mode:int) -> None: ... + def glBlendFunc(self, sfactor:int, dfactor:int) -> None: ... + def glBlendFuncSeparate(self, sfactorRGB:int, dfactorRGB:int, sfactorAlpha:int, dfactorAlpha:int) -> None: ... + def glCallList(self, list:int) -> None: ... + def glCallLists(self, n:int, type:int, lists:int) -> None: ... + def glClear(self, mask:int) -> None: ... + def glClearAccum(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearDepth(self, depth:float) -> None: ... + def glClearIndex(self, c:float) -> None: ... + def glClearStencil(self, s:int) -> None: ... + def glClientActiveTexture(self, texture:int) -> None: ... + def glClipPlane(self, plane:int, equation:typing.Sequence) -> None: ... + def glColor3b(self, red:int, green:int, blue:int) -> None: ... + def glColor3bv(self, v:bytes) -> None: ... + def glColor3d(self, red:float, green:float, blue:float) -> None: ... + def glColor3dv(self, v:typing.Sequence) -> None: ... + def glColor3f(self, red:float, green:float, blue:float) -> None: ... + def glColor3fv(self, v:typing.Sequence) -> None: ... + def glColor3i(self, red:int, green:int, blue:int) -> None: ... + def glColor3iv(self, v:typing.Sequence) -> None: ... + def glColor3s(self, red:int, green:int, blue:int) -> None: ... + def glColor3sv(self, v:typing.Sequence) -> None: ... + def glColor3ub(self, red:int, green:int, blue:int) -> None: ... + def glColor3ubv(self, v:bytes) -> None: ... + def glColor3ui(self, red:int, green:int, blue:int) -> None: ... + def glColor3uiv(self, v:typing.Sequence) -> None: ... + def glColor3us(self, red:int, green:int, blue:int) -> None: ... + def glColor3usv(self, v:typing.Sequence) -> None: ... + def glColor4b(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4bv(self, v:bytes) -> None: ... + def glColor4d(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4dv(self, v:typing.Sequence) -> None: ... + def glColor4f(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4fv(self, v:typing.Sequence) -> None: ... + def glColor4i(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4iv(self, v:typing.Sequence) -> None: ... + def glColor4s(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4sv(self, v:typing.Sequence) -> None: ... + def glColor4ub(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4ubv(self, v:bytes) -> None: ... + def glColor4ui(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4uiv(self, v:typing.Sequence) -> None: ... + def glColor4us(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4usv(self, v:typing.Sequence) -> None: ... + def glColorMask(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColorMaterial(self, face:int, mode:int) -> None: ... + def glColorPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glColorSubTable(self, target:int, start:int, count:int, format:int, type:int, data:int) -> None: ... + def glColorTable(self, target:int, internalformat:int, width:int, format:int, type:int, table:int) -> None: ... + def glColorTableParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glColorTableParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glCompressedTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, imageSize:int, data:int) -> None: ... + def glConvolutionFilter1D(self, target:int, internalformat:int, width:int, format:int, type:int, image:int) -> None: ... + def glConvolutionFilter2D(self, target:int, internalformat:int, width:int, height:int, format:int, type:int, image:int) -> None: ... + def glConvolutionParameterf(self, target:int, pname:int, params:float) -> None: ... + def glConvolutionParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glConvolutionParameteri(self, target:int, pname:int, params:int) -> None: ... + def glConvolutionParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glCopyColorSubTable(self, target:int, start:int, x:int, y:int, width:int) -> None: ... + def glCopyColorTable(self, target:int, internalformat:int, x:int, y:int, width:int) -> None: ... + def glCopyConvolutionFilter1D(self, target:int, internalformat:int, x:int, y:int, width:int) -> None: ... + def glCopyConvolutionFilter2D(self, target:int, internalformat:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyPixels(self, x:int, y:int, width:int, height:int, type:int) -> None: ... + def glCopyTexImage1D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, border:int) -> None: ... + def glCopyTexImage2D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, height:int, border:int) -> None: ... + def glCopyTexSubImage1D(self, target:int, level:int, xoffset:int, x:int, y:int, width:int) -> None: ... + def glCopyTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCullFace(self, mode:int) -> None: ... + def glDeleteLists(self, list:int, range:int) -> None: ... + def glDeleteTextures(self, n:int, textures:typing.Sequence) -> None: ... + def glDepthFunc(self, func:int) -> None: ... + def glDepthMask(self, flag:int) -> None: ... + def glDepthRange(self, nearVal:float, farVal:float) -> None: ... + def glDisable(self, cap:int) -> None: ... + def glDisableClientState(self, array:int) -> None: ... + def glDrawArrays(self, mode:int, first:int, count:int) -> None: ... + def glDrawBuffer(self, mode:int) -> None: ... + def glDrawElements(self, mode:int, count:int, type:int, indices:int) -> None: ... + def glDrawPixels(self, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glDrawRangeElements(self, mode:int, start:int, end:int, count:int, type:int, indices:int) -> None: ... + def glEdgeFlag(self, flag:int) -> None: ... + def glEdgeFlagPointer(self, stride:int, pointer:int) -> None: ... + def glEnable(self, cap:int) -> None: ... + def glEnableClientState(self, array:int) -> None: ... + def glEnd(self) -> None: ... + def glEndList(self) -> None: ... + def glEvalCoord1d(self, u:float) -> None: ... + def glEvalCoord1dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord1f(self, u:float) -> None: ... + def glEvalCoord1fv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2d(self, u:float, v:float) -> None: ... + def glEvalCoord2dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2f(self, u:float, v:float) -> None: ... + def glEvalCoord2fv(self, u:typing.Sequence) -> None: ... + def glEvalMesh1(self, mode:int, i1:int, i2:int) -> None: ... + def glEvalMesh2(self, mode:int, i1:int, i2:int, j1:int, j2:int) -> None: ... + def glEvalPoint1(self, i:int) -> None: ... + def glEvalPoint2(self, i:int, j:int) -> None: ... + def glFinish(self) -> None: ... + def glFlush(self) -> None: ... + def glFogCoordPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glFogCoordd(self, coord:float) -> None: ... + def glFogCoorddv(self, coord:typing.Sequence) -> None: ... + def glFogCoordf(self, coord:float) -> None: ... + def glFogCoordfv(self, coord:typing.Sequence) -> None: ... + def glFogf(self, pname:int, param:float) -> None: ... + def glFogfv(self, pname:int, params:typing.Sequence) -> None: ... + def glFogi(self, pname:int, param:int) -> None: ... + def glFogiv(self, pname:int, params:typing.Sequence) -> None: ... + def glFrontFace(self, mode:int) -> None: ... + def glFrustum(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glGenLists(self, range:int) -> int: ... + def glGetError(self) -> int: ... + def glGetString(self, name:int) -> bytes: ... + def glHint(self, target:int, mode:int) -> None: ... + def glHistogram(self, target:int, width:int, internalformat:int, sink:int) -> None: ... + def glIndexMask(self, mask:int) -> None: ... + def glIndexPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glIndexd(self, c:float) -> None: ... + def glIndexdv(self, c:typing.Sequence) -> None: ... + def glIndexf(self, c:float) -> None: ... + def glIndexfv(self, c:typing.Sequence) -> None: ... + def glIndexi(self, c:int) -> None: ... + def glIndexiv(self, c:typing.Sequence) -> None: ... + def glIndexs(self, c:int) -> None: ... + def glIndexsv(self, c:typing.Sequence) -> None: ... + def glIndexub(self, c:int) -> None: ... + def glIndexubv(self, c:bytes) -> None: ... + def glInitNames(self) -> None: ... + def glInterleavedArrays(self, format:int, stride:int, pointer:int) -> None: ... + def glIsEnabled(self, cap:int) -> int: ... + def glIsList(self, list:int) -> int: ... + def glIsTexture(self, texture:int) -> int: ... + def glLightModelf(self, pname:int, param:float) -> None: ... + def glLightModelfv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightModeli(self, pname:int, param:int) -> None: ... + def glLightModeliv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightf(self, light:int, pname:int, param:float) -> None: ... + def glLightfv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLighti(self, light:int, pname:int, param:int) -> None: ... + def glLightiv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLineStipple(self, factor:int, pattern:int) -> None: ... + def glLineWidth(self, width:float) -> None: ... + def glListBase(self, base:int) -> None: ... + def glLoadIdentity(self) -> None: ... + def glLoadMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadMatrixf(self, m:typing.Sequence) -> None: ... + def glLoadName(self, name:int) -> None: ... + def glLoadTransposeMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadTransposeMatrixf(self, m:typing.Sequence) -> None: ... + def glLogicOp(self, opcode:int) -> None: ... + def glMap1d(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap1f(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap2d(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMap2f(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMapGrid1d(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid1f(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid2d(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMapGrid2f(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMaterialf(self, face:int, pname:int, param:float) -> None: ... + def glMaterialfv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMateriali(self, face:int, pname:int, param:int) -> None: ... + def glMaterialiv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMatrixMode(self, mode:int) -> None: ... + def glMinmax(self, target:int, internalformat:int, sink:int) -> None: ... + def glMultMatrixd(self, m:typing.Sequence) -> None: ... + def glMultMatrixf(self, m:typing.Sequence) -> None: ... + def glMultTransposeMatrixd(self, m:typing.Sequence) -> None: ... + def glMultTransposeMatrixf(self, m:typing.Sequence) -> None: ... + def glMultiDrawArrays(self, mode:int, first:typing.Sequence, count:typing.Sequence, drawcount:int) -> None: ... + def glMultiTexCoord1d(self, target:int, s:float) -> None: ... + def glMultiTexCoord1dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1f(self, target:int, s:float) -> None: ... + def glMultiTexCoord1fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1i(self, target:int, s:int) -> None: ... + def glMultiTexCoord1iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1s(self, target:int, s:int) -> None: ... + def glMultiTexCoord1sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2d(self, target:int, s:float, t:float) -> None: ... + def glMultiTexCoord2dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2f(self, target:int, s:float, t:float) -> None: ... + def glMultiTexCoord2fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2i(self, target:int, s:int, t:int) -> None: ... + def glMultiTexCoord2iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2s(self, target:int, s:int, t:int) -> None: ... + def glMultiTexCoord2sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3d(self, target:int, s:float, t:float, r:float) -> None: ... + def glMultiTexCoord3dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3f(self, target:int, s:float, t:float, r:float) -> None: ... + def glMultiTexCoord3fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3i(self, target:int, s:int, t:int, r:int) -> None: ... + def glMultiTexCoord3iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3s(self, target:int, s:int, t:int, r:int) -> None: ... + def glMultiTexCoord3sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4d(self, target:int, s:float, t:float, r:float, q:float) -> None: ... + def glMultiTexCoord4dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4f(self, target:int, s:float, t:float, r:float, q:float) -> None: ... + def glMultiTexCoord4fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4i(self, target:int, s:int, t:int, r:int, q:int) -> None: ... + def glMultiTexCoord4iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4s(self, target:int, s:int, t:int, r:int, q:int) -> None: ... + def glMultiTexCoord4sv(self, target:int, v:typing.Sequence) -> None: ... + def glNewList(self, list:int, mode:int) -> None: ... + def glNormal3b(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3bv(self, v:bytes) -> None: ... + def glNormal3d(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3dv(self, v:typing.Sequence) -> None: ... + def glNormal3f(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3fv(self, v:typing.Sequence) -> None: ... + def glNormal3i(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3iv(self, v:typing.Sequence) -> None: ... + def glNormal3s(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3sv(self, v:typing.Sequence) -> None: ... + def glNormalPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glOrtho(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glPassThrough(self, token:float) -> None: ... + def glPixelMapfv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapuiv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapusv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelStoref(self, pname:int, param:float) -> None: ... + def glPixelStorei(self, pname:int, param:int) -> None: ... + def glPixelTransferf(self, pname:int, param:float) -> None: ... + def glPixelTransferi(self, pname:int, param:int) -> None: ... + def glPixelZoom(self, xfactor:float, yfactor:float) -> None: ... + def glPointParameterf(self, pname:int, param:float) -> None: ... + def glPointParameterfv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointParameteri(self, pname:int, param:int) -> None: ... + def glPointParameteriv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointSize(self, size:float) -> None: ... + def glPolygonMode(self, face:int, mode:int) -> None: ... + def glPolygonOffset(self, factor:float, units:float) -> None: ... + def glPopAttrib(self) -> None: ... + def glPopClientAttrib(self) -> None: ... + def glPopMatrix(self) -> None: ... + def glPopName(self) -> None: ... + def glPrioritizeTextures(self, n:int, textures:typing.Sequence, priorities:typing.Sequence) -> None: ... + def glPushAttrib(self, mask:int) -> None: ... + def glPushClientAttrib(self, mask:int) -> None: ... + def glPushMatrix(self) -> None: ... + def glPushName(self, name:int) -> None: ... + def glRasterPos2d(self, x:float, y:float) -> None: ... + def glRasterPos2dv(self, v:typing.Sequence) -> None: ... + def glRasterPos2f(self, x:float, y:float) -> None: ... + def glRasterPos2fv(self, v:typing.Sequence) -> None: ... + def glRasterPos2i(self, x:int, y:int) -> None: ... + def glRasterPos2iv(self, v:typing.Sequence) -> None: ... + def glRasterPos2s(self, x:int, y:int) -> None: ... + def glRasterPos2sv(self, v:typing.Sequence) -> None: ... + def glRasterPos3d(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3dv(self, v:typing.Sequence) -> None: ... + def glRasterPos3f(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3fv(self, v:typing.Sequence) -> None: ... + def glRasterPos3i(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3iv(self, v:typing.Sequence) -> None: ... + def glRasterPos3s(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3sv(self, v:typing.Sequence) -> None: ... + def glRasterPos4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4dv(self, v:typing.Sequence) -> None: ... + def glRasterPos4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4fv(self, v:typing.Sequence) -> None: ... + def glRasterPos4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4iv(self, v:typing.Sequence) -> None: ... + def glRasterPos4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4sv(self, v:typing.Sequence) -> None: ... + def glReadBuffer(self, mode:int) -> None: ... + def glRectd(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectdv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRectf(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectfv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRecti(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectiv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRects(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectsv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRenderMode(self, mode:int) -> int: ... + def glResetHistogram(self, target:int) -> None: ... + def glResetMinmax(self, target:int) -> None: ... + def glRotated(self, angle:float, x:float, y:float, z:float) -> None: ... + def glRotatef(self, angle:float, x:float, y:float, z:float) -> None: ... + def glSampleCoverage(self, value:float, invert:int) -> None: ... + def glScaled(self, x:float, y:float, z:float) -> None: ... + def glScalef(self, x:float, y:float, z:float) -> None: ... + def glScissor(self, x:int, y:int, width:int, height:int) -> None: ... + def glSecondaryColor3b(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3bv(self, v:bytes) -> None: ... + def glSecondaryColor3d(self, red:float, green:float, blue:float) -> None: ... + def glSecondaryColor3dv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3f(self, red:float, green:float, blue:float) -> None: ... + def glSecondaryColor3fv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3i(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3iv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3s(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3sv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3ub(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3ubv(self, v:bytes) -> None: ... + def glSecondaryColor3ui(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3uiv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3us(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3usv(self, v:typing.Sequence) -> None: ... + def glSecondaryColorPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glSeparableFilter2D(self, target:int, internalformat:int, width:int, height:int, format:int, type:int, row:int, column:int) -> None: ... + def glShadeModel(self, mode:int) -> None: ... + def glStencilFunc(self, func:int, ref:int, mask:int) -> None: ... + def glStencilMask(self, mask:int) -> None: ... + def glStencilOp(self, fail:int, zfail:int, zpass:int) -> None: ... + def glTexCoord1d(self, s:float) -> None: ... + def glTexCoord1dv(self, v:typing.Sequence) -> None: ... + def glTexCoord1f(self, s:float) -> None: ... + def glTexCoord1fv(self, v:typing.Sequence) -> None: ... + def glTexCoord1i(self, s:int) -> None: ... + def glTexCoord1iv(self, v:typing.Sequence) -> None: ... + def glTexCoord1s(self, s:int) -> None: ... + def glTexCoord1sv(self, v:typing.Sequence) -> None: ... + def glTexCoord2d(self, s:float, t:float) -> None: ... + def glTexCoord2dv(self, v:typing.Sequence) -> None: ... + def glTexCoord2f(self, s:float, t:float) -> None: ... + def glTexCoord2fv(self, v:typing.Sequence) -> None: ... + def glTexCoord2i(self, s:int, t:int) -> None: ... + def glTexCoord2iv(self, v:typing.Sequence) -> None: ... + def glTexCoord2s(self, s:int, t:int) -> None: ... + def glTexCoord2sv(self, v:typing.Sequence) -> None: ... + def glTexCoord3d(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3dv(self, v:typing.Sequence) -> None: ... + def glTexCoord3f(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3fv(self, v:typing.Sequence) -> None: ... + def glTexCoord3i(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3iv(self, v:typing.Sequence) -> None: ... + def glTexCoord3s(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3sv(self, v:typing.Sequence) -> None: ... + def glTexCoord4d(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4dv(self, v:typing.Sequence) -> None: ... + def glTexCoord4f(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4fv(self, v:typing.Sequence) -> None: ... + def glTexCoord4i(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4iv(self, v:typing.Sequence) -> None: ... + def glTexCoord4s(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4sv(self, v:typing.Sequence) -> None: ... + def glTexCoordPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glTexEnvf(self, target:int, pname:int, param:float) -> None: ... + def glTexEnvfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexEnvi(self, target:int, pname:int, param:int) -> None: ... + def glTexEnviv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGend(self, coord:int, pname:int, param:float) -> None: ... + def glTexGendv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGenf(self, coord:int, pname:int, param:float) -> None: ... + def glTexGenfv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGeni(self, coord:int, pname:int, param:int) -> None: ... + def glTexGeniv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexParameterf(self, target:int, pname:int, param:float) -> None: ... + def glTexParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameteri(self, target:int, pname:int, param:int) -> None: ... + def glTexParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, pixels:int) -> None: ... + def glTranslated(self, x:float, y:float, z:float) -> None: ... + def glTranslatef(self, x:float, y:float, z:float) -> None: ... + def glVertex2d(self, x:float, y:float) -> None: ... + def glVertex2dv(self, v:typing.Sequence) -> None: ... + def glVertex2f(self, x:float, y:float) -> None: ... + def glVertex2fv(self, v:typing.Sequence) -> None: ... + def glVertex2i(self, x:int, y:int) -> None: ... + def glVertex2iv(self, v:typing.Sequence) -> None: ... + def glVertex2s(self, x:int, y:int) -> None: ... + def glVertex2sv(self, v:typing.Sequence) -> None: ... + def glVertex3d(self, x:float, y:float, z:float) -> None: ... + def glVertex3dv(self, v:typing.Sequence) -> None: ... + def glVertex3f(self, x:float, y:float, z:float) -> None: ... + def glVertex3fv(self, v:typing.Sequence) -> None: ... + def glVertex3i(self, x:int, y:int, z:int) -> None: ... + def glVertex3iv(self, v:typing.Sequence) -> None: ... + def glVertex3s(self, x:int, y:int, z:int) -> None: ... + def glVertex3sv(self, v:typing.Sequence) -> None: ... + def glVertex4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4dv(self, v:typing.Sequence) -> None: ... + def glVertex4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4fv(self, v:typing.Sequence) -> None: ... + def glVertex4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4iv(self, v:typing.Sequence) -> None: ... + def glVertex4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4sv(self, v:typing.Sequence) -> None: ... + def glVertexPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glViewport(self, x:int, y:int, width:int, height:int) -> None: ... + def glWindowPos2d(self, x:float, y:float) -> None: ... + def glWindowPos2dv(self, v:typing.Sequence) -> None: ... + def glWindowPos2f(self, x:float, y:float) -> None: ... + def glWindowPos2fv(self, v:typing.Sequence) -> None: ... + def glWindowPos2i(self, x:int, y:int) -> None: ... + def glWindowPos2iv(self, v:typing.Sequence) -> None: ... + def glWindowPos2s(self, x:int, y:int) -> None: ... + def glWindowPos2sv(self, v:typing.Sequence) -> None: ... + def glWindowPos3d(self, x:float, y:float, z:float) -> None: ... + def glWindowPos3dv(self, v:typing.Sequence) -> None: ... + def glWindowPos3f(self, x:float, y:float, z:float) -> None: ... + def glWindowPos3fv(self, v:typing.Sequence) -> None: ... + def glWindowPos3i(self, x:int, y:int, z:int) -> None: ... + def glWindowPos3iv(self, v:typing.Sequence) -> None: ... + def glWindowPos3s(self, x:int, y:int, z:int) -> None: ... + def glWindowPos3sv(self, v:typing.Sequence) -> None: ... + def initializeOpenGLFunctions(self) -> bool: ... + + +class QOpenGLFunctions_1_5(PySide2.QtGui.QAbstractOpenGLFunctions): + + def __init__(self) -> None: ... + + def glAccum(self, op:int, value:float) -> None: ... + def glActiveTexture(self, texture:int) -> None: ... + def glAlphaFunc(self, func:int, ref:float) -> None: ... + def glArrayElement(self, i:int) -> None: ... + def glBegin(self, mode:int) -> None: ... + def glBeginQuery(self, target:int, id:int) -> None: ... + def glBindBuffer(self, target:int, buffer:int) -> None: ... + def glBindTexture(self, target:int, texture:int) -> None: ... + def glBlendColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glBlendEquation(self, mode:int) -> None: ... + def glBlendFunc(self, sfactor:int, dfactor:int) -> None: ... + def glBlendFuncSeparate(self, sfactorRGB:int, dfactorRGB:int, sfactorAlpha:int, dfactorAlpha:int) -> None: ... + def glCallList(self, list:int) -> None: ... + def glCallLists(self, n:int, type:int, lists:int) -> None: ... + def glClear(self, mask:int) -> None: ... + def glClearAccum(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearDepth(self, depth:float) -> None: ... + def glClearIndex(self, c:float) -> None: ... + def glClearStencil(self, s:int) -> None: ... + def glClientActiveTexture(self, texture:int) -> None: ... + def glClipPlane(self, plane:int, equation:typing.Sequence) -> None: ... + def glColor3b(self, red:int, green:int, blue:int) -> None: ... + def glColor3bv(self, v:bytes) -> None: ... + def glColor3d(self, red:float, green:float, blue:float) -> None: ... + def glColor3dv(self, v:typing.Sequence) -> None: ... + def glColor3f(self, red:float, green:float, blue:float) -> None: ... + def glColor3fv(self, v:typing.Sequence) -> None: ... + def glColor3i(self, red:int, green:int, blue:int) -> None: ... + def glColor3iv(self, v:typing.Sequence) -> None: ... + def glColor3s(self, red:int, green:int, blue:int) -> None: ... + def glColor3sv(self, v:typing.Sequence) -> None: ... + def glColor3ub(self, red:int, green:int, blue:int) -> None: ... + def glColor3ubv(self, v:bytes) -> None: ... + def glColor3ui(self, red:int, green:int, blue:int) -> None: ... + def glColor3uiv(self, v:typing.Sequence) -> None: ... + def glColor3us(self, red:int, green:int, blue:int) -> None: ... + def glColor3usv(self, v:typing.Sequence) -> None: ... + def glColor4b(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4bv(self, v:bytes) -> None: ... + def glColor4d(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4dv(self, v:typing.Sequence) -> None: ... + def glColor4f(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4fv(self, v:typing.Sequence) -> None: ... + def glColor4i(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4iv(self, v:typing.Sequence) -> None: ... + def glColor4s(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4sv(self, v:typing.Sequence) -> None: ... + def glColor4ub(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4ubv(self, v:bytes) -> None: ... + def glColor4ui(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4uiv(self, v:typing.Sequence) -> None: ... + def glColor4us(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4usv(self, v:typing.Sequence) -> None: ... + def glColorMask(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColorMaterial(self, face:int, mode:int) -> None: ... + def glColorPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glColorSubTable(self, target:int, start:int, count:int, format:int, type:int, data:int) -> None: ... + def glColorTable(self, target:int, internalformat:int, width:int, format:int, type:int, table:int) -> None: ... + def glColorTableParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glColorTableParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glCompressedTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, imageSize:int, data:int) -> None: ... + def glConvolutionFilter1D(self, target:int, internalformat:int, width:int, format:int, type:int, image:int) -> None: ... + def glConvolutionFilter2D(self, target:int, internalformat:int, width:int, height:int, format:int, type:int, image:int) -> None: ... + def glConvolutionParameterf(self, target:int, pname:int, params:float) -> None: ... + def glConvolutionParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glConvolutionParameteri(self, target:int, pname:int, params:int) -> None: ... + def glConvolutionParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glCopyColorSubTable(self, target:int, start:int, x:int, y:int, width:int) -> None: ... + def glCopyColorTable(self, target:int, internalformat:int, x:int, y:int, width:int) -> None: ... + def glCopyConvolutionFilter1D(self, target:int, internalformat:int, x:int, y:int, width:int) -> None: ... + def glCopyConvolutionFilter2D(self, target:int, internalformat:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyPixels(self, x:int, y:int, width:int, height:int, type:int) -> None: ... + def glCopyTexImage1D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, border:int) -> None: ... + def glCopyTexImage2D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, height:int, border:int) -> None: ... + def glCopyTexSubImage1D(self, target:int, level:int, xoffset:int, x:int, y:int, width:int) -> None: ... + def glCopyTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCullFace(self, mode:int) -> None: ... + def glDeleteBuffers(self, n:int, buffers:typing.Sequence) -> None: ... + def glDeleteLists(self, list:int, range:int) -> None: ... + def glDeleteQueries(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteTextures(self, n:int, textures:typing.Sequence) -> None: ... + def glDepthFunc(self, func:int) -> None: ... + def glDepthMask(self, flag:int) -> None: ... + def glDepthRange(self, nearVal:float, farVal:float) -> None: ... + def glDisable(self, cap:int) -> None: ... + def glDisableClientState(self, array:int) -> None: ... + def glDrawArrays(self, mode:int, first:int, count:int) -> None: ... + def glDrawBuffer(self, mode:int) -> None: ... + def glDrawElements(self, mode:int, count:int, type:int, indices:int) -> None: ... + def glDrawPixels(self, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glDrawRangeElements(self, mode:int, start:int, end:int, count:int, type:int, indices:int) -> None: ... + def glEdgeFlag(self, flag:int) -> None: ... + def glEdgeFlagPointer(self, stride:int, pointer:int) -> None: ... + def glEnable(self, cap:int) -> None: ... + def glEnableClientState(self, array:int) -> None: ... + def glEnd(self) -> None: ... + def glEndList(self) -> None: ... + def glEndQuery(self, target:int) -> None: ... + def glEvalCoord1d(self, u:float) -> None: ... + def glEvalCoord1dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord1f(self, u:float) -> None: ... + def glEvalCoord1fv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2d(self, u:float, v:float) -> None: ... + def glEvalCoord2dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2f(self, u:float, v:float) -> None: ... + def glEvalCoord2fv(self, u:typing.Sequence) -> None: ... + def glEvalMesh1(self, mode:int, i1:int, i2:int) -> None: ... + def glEvalMesh2(self, mode:int, i1:int, i2:int, j1:int, j2:int) -> None: ... + def glEvalPoint1(self, i:int) -> None: ... + def glEvalPoint2(self, i:int, j:int) -> None: ... + def glFinish(self) -> None: ... + def glFlush(self) -> None: ... + def glFogCoordPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glFogCoordd(self, coord:float) -> None: ... + def glFogCoorddv(self, coord:typing.Sequence) -> None: ... + def glFogCoordf(self, coord:float) -> None: ... + def glFogCoordfv(self, coord:typing.Sequence) -> None: ... + def glFogf(self, pname:int, param:float) -> None: ... + def glFogfv(self, pname:int, params:typing.Sequence) -> None: ... + def glFogi(self, pname:int, param:int) -> None: ... + def glFogiv(self, pname:int, params:typing.Sequence) -> None: ... + def glFrontFace(self, mode:int) -> None: ... + def glFrustum(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glGenLists(self, range:int) -> int: ... + def glGetError(self) -> int: ... + def glGetString(self, name:int) -> bytes: ... + def glHint(self, target:int, mode:int) -> None: ... + def glHistogram(self, target:int, width:int, internalformat:int, sink:int) -> None: ... + def glIndexMask(self, mask:int) -> None: ... + def glIndexPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glIndexd(self, c:float) -> None: ... + def glIndexdv(self, c:typing.Sequence) -> None: ... + def glIndexf(self, c:float) -> None: ... + def glIndexfv(self, c:typing.Sequence) -> None: ... + def glIndexi(self, c:int) -> None: ... + def glIndexiv(self, c:typing.Sequence) -> None: ... + def glIndexs(self, c:int) -> None: ... + def glIndexsv(self, c:typing.Sequence) -> None: ... + def glIndexub(self, c:int) -> None: ... + def glIndexubv(self, c:bytes) -> None: ... + def glInitNames(self) -> None: ... + def glInterleavedArrays(self, format:int, stride:int, pointer:int) -> None: ... + def glIsBuffer(self, buffer:int) -> int: ... + def glIsEnabled(self, cap:int) -> int: ... + def glIsList(self, list:int) -> int: ... + def glIsQuery(self, id:int) -> int: ... + def glIsTexture(self, texture:int) -> int: ... + def glLightModelf(self, pname:int, param:float) -> None: ... + def glLightModelfv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightModeli(self, pname:int, param:int) -> None: ... + def glLightModeliv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightf(self, light:int, pname:int, param:float) -> None: ... + def glLightfv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLighti(self, light:int, pname:int, param:int) -> None: ... + def glLightiv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLineStipple(self, factor:int, pattern:int) -> None: ... + def glLineWidth(self, width:float) -> None: ... + def glListBase(self, base:int) -> None: ... + def glLoadIdentity(self) -> None: ... + def glLoadMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadMatrixf(self, m:typing.Sequence) -> None: ... + def glLoadName(self, name:int) -> None: ... + def glLoadTransposeMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadTransposeMatrixf(self, m:typing.Sequence) -> None: ... + def glLogicOp(self, opcode:int) -> None: ... + def glMap1d(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap1f(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap2d(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMap2f(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMapBuffer(self, target:int, access:int) -> int: ... + def glMapGrid1d(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid1f(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid2d(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMapGrid2f(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMaterialf(self, face:int, pname:int, param:float) -> None: ... + def glMaterialfv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMateriali(self, face:int, pname:int, param:int) -> None: ... + def glMaterialiv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMatrixMode(self, mode:int) -> None: ... + def glMinmax(self, target:int, internalformat:int, sink:int) -> None: ... + def glMultMatrixd(self, m:typing.Sequence) -> None: ... + def glMultMatrixf(self, m:typing.Sequence) -> None: ... + def glMultTransposeMatrixd(self, m:typing.Sequence) -> None: ... + def glMultTransposeMatrixf(self, m:typing.Sequence) -> None: ... + def glMultiDrawArrays(self, mode:int, first:typing.Sequence, count:typing.Sequence, drawcount:int) -> None: ... + def glMultiTexCoord1d(self, target:int, s:float) -> None: ... + def glMultiTexCoord1dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1f(self, target:int, s:float) -> None: ... + def glMultiTexCoord1fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1i(self, target:int, s:int) -> None: ... + def glMultiTexCoord1iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1s(self, target:int, s:int) -> None: ... + def glMultiTexCoord1sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2d(self, target:int, s:float, t:float) -> None: ... + def glMultiTexCoord2dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2f(self, target:int, s:float, t:float) -> None: ... + def glMultiTexCoord2fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2i(self, target:int, s:int, t:int) -> None: ... + def glMultiTexCoord2iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2s(self, target:int, s:int, t:int) -> None: ... + def glMultiTexCoord2sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3d(self, target:int, s:float, t:float, r:float) -> None: ... + def glMultiTexCoord3dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3f(self, target:int, s:float, t:float, r:float) -> None: ... + def glMultiTexCoord3fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3i(self, target:int, s:int, t:int, r:int) -> None: ... + def glMultiTexCoord3iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3s(self, target:int, s:int, t:int, r:int) -> None: ... + def glMultiTexCoord3sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4d(self, target:int, s:float, t:float, r:float, q:float) -> None: ... + def glMultiTexCoord4dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4f(self, target:int, s:float, t:float, r:float, q:float) -> None: ... + def glMultiTexCoord4fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4i(self, target:int, s:int, t:int, r:int, q:int) -> None: ... + def glMultiTexCoord4iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4s(self, target:int, s:int, t:int, r:int, q:int) -> None: ... + def glMultiTexCoord4sv(self, target:int, v:typing.Sequence) -> None: ... + def glNewList(self, list:int, mode:int) -> None: ... + def glNormal3b(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3bv(self, v:bytes) -> None: ... + def glNormal3d(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3dv(self, v:typing.Sequence) -> None: ... + def glNormal3f(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3fv(self, v:typing.Sequence) -> None: ... + def glNormal3i(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3iv(self, v:typing.Sequence) -> None: ... + def glNormal3s(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3sv(self, v:typing.Sequence) -> None: ... + def glNormalPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glOrtho(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glPassThrough(self, token:float) -> None: ... + def glPixelMapfv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapuiv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapusv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelStoref(self, pname:int, param:float) -> None: ... + def glPixelStorei(self, pname:int, param:int) -> None: ... + def glPixelTransferf(self, pname:int, param:float) -> None: ... + def glPixelTransferi(self, pname:int, param:int) -> None: ... + def glPixelZoom(self, xfactor:float, yfactor:float) -> None: ... + def glPointParameterf(self, pname:int, param:float) -> None: ... + def glPointParameterfv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointParameteri(self, pname:int, param:int) -> None: ... + def glPointParameteriv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointSize(self, size:float) -> None: ... + def glPolygonMode(self, face:int, mode:int) -> None: ... + def glPolygonOffset(self, factor:float, units:float) -> None: ... + def glPopAttrib(self) -> None: ... + def glPopClientAttrib(self) -> None: ... + def glPopMatrix(self) -> None: ... + def glPopName(self) -> None: ... + def glPrioritizeTextures(self, n:int, textures:typing.Sequence, priorities:typing.Sequence) -> None: ... + def glPushAttrib(self, mask:int) -> None: ... + def glPushClientAttrib(self, mask:int) -> None: ... + def glPushMatrix(self) -> None: ... + def glPushName(self, name:int) -> None: ... + def glRasterPos2d(self, x:float, y:float) -> None: ... + def glRasterPos2dv(self, v:typing.Sequence) -> None: ... + def glRasterPos2f(self, x:float, y:float) -> None: ... + def glRasterPos2fv(self, v:typing.Sequence) -> None: ... + def glRasterPos2i(self, x:int, y:int) -> None: ... + def glRasterPos2iv(self, v:typing.Sequence) -> None: ... + def glRasterPos2s(self, x:int, y:int) -> None: ... + def glRasterPos2sv(self, v:typing.Sequence) -> None: ... + def glRasterPos3d(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3dv(self, v:typing.Sequence) -> None: ... + def glRasterPos3f(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3fv(self, v:typing.Sequence) -> None: ... + def glRasterPos3i(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3iv(self, v:typing.Sequence) -> None: ... + def glRasterPos3s(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3sv(self, v:typing.Sequence) -> None: ... + def glRasterPos4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4dv(self, v:typing.Sequence) -> None: ... + def glRasterPos4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4fv(self, v:typing.Sequence) -> None: ... + def glRasterPos4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4iv(self, v:typing.Sequence) -> None: ... + def glRasterPos4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4sv(self, v:typing.Sequence) -> None: ... + def glReadBuffer(self, mode:int) -> None: ... + def glRectd(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectdv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRectf(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectfv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRecti(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectiv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRects(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectsv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRenderMode(self, mode:int) -> int: ... + def glResetHistogram(self, target:int) -> None: ... + def glResetMinmax(self, target:int) -> None: ... + def glRotated(self, angle:float, x:float, y:float, z:float) -> None: ... + def glRotatef(self, angle:float, x:float, y:float, z:float) -> None: ... + def glSampleCoverage(self, value:float, invert:int) -> None: ... + def glScaled(self, x:float, y:float, z:float) -> None: ... + def glScalef(self, x:float, y:float, z:float) -> None: ... + def glScissor(self, x:int, y:int, width:int, height:int) -> None: ... + def glSecondaryColor3b(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3bv(self, v:bytes) -> None: ... + def glSecondaryColor3d(self, red:float, green:float, blue:float) -> None: ... + def glSecondaryColor3dv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3f(self, red:float, green:float, blue:float) -> None: ... + def glSecondaryColor3fv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3i(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3iv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3s(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3sv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3ub(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3ubv(self, v:bytes) -> None: ... + def glSecondaryColor3ui(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3uiv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3us(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3usv(self, v:typing.Sequence) -> None: ... + def glSecondaryColorPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glSeparableFilter2D(self, target:int, internalformat:int, width:int, height:int, format:int, type:int, row:int, column:int) -> None: ... + def glShadeModel(self, mode:int) -> None: ... + def glStencilFunc(self, func:int, ref:int, mask:int) -> None: ... + def glStencilMask(self, mask:int) -> None: ... + def glStencilOp(self, fail:int, zfail:int, zpass:int) -> None: ... + def glTexCoord1d(self, s:float) -> None: ... + def glTexCoord1dv(self, v:typing.Sequence) -> None: ... + def glTexCoord1f(self, s:float) -> None: ... + def glTexCoord1fv(self, v:typing.Sequence) -> None: ... + def glTexCoord1i(self, s:int) -> None: ... + def glTexCoord1iv(self, v:typing.Sequence) -> None: ... + def glTexCoord1s(self, s:int) -> None: ... + def glTexCoord1sv(self, v:typing.Sequence) -> None: ... + def glTexCoord2d(self, s:float, t:float) -> None: ... + def glTexCoord2dv(self, v:typing.Sequence) -> None: ... + def glTexCoord2f(self, s:float, t:float) -> None: ... + def glTexCoord2fv(self, v:typing.Sequence) -> None: ... + def glTexCoord2i(self, s:int, t:int) -> None: ... + def glTexCoord2iv(self, v:typing.Sequence) -> None: ... + def glTexCoord2s(self, s:int, t:int) -> None: ... + def glTexCoord2sv(self, v:typing.Sequence) -> None: ... + def glTexCoord3d(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3dv(self, v:typing.Sequence) -> None: ... + def glTexCoord3f(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3fv(self, v:typing.Sequence) -> None: ... + def glTexCoord3i(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3iv(self, v:typing.Sequence) -> None: ... + def glTexCoord3s(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3sv(self, v:typing.Sequence) -> None: ... + def glTexCoord4d(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4dv(self, v:typing.Sequence) -> None: ... + def glTexCoord4f(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4fv(self, v:typing.Sequence) -> None: ... + def glTexCoord4i(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4iv(self, v:typing.Sequence) -> None: ... + def glTexCoord4s(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4sv(self, v:typing.Sequence) -> None: ... + def glTexCoordPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glTexEnvf(self, target:int, pname:int, param:float) -> None: ... + def glTexEnvfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexEnvi(self, target:int, pname:int, param:int) -> None: ... + def glTexEnviv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGend(self, coord:int, pname:int, param:float) -> None: ... + def glTexGendv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGenf(self, coord:int, pname:int, param:float) -> None: ... + def glTexGenfv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGeni(self, coord:int, pname:int, param:int) -> None: ... + def glTexGeniv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexParameterf(self, target:int, pname:int, param:float) -> None: ... + def glTexParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameteri(self, target:int, pname:int, param:int) -> None: ... + def glTexParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, pixels:int) -> None: ... + def glTranslated(self, x:float, y:float, z:float) -> None: ... + def glTranslatef(self, x:float, y:float, z:float) -> None: ... + def glUnmapBuffer(self, target:int) -> int: ... + def glVertex2d(self, x:float, y:float) -> None: ... + def glVertex2dv(self, v:typing.Sequence) -> None: ... + def glVertex2f(self, x:float, y:float) -> None: ... + def glVertex2fv(self, v:typing.Sequence) -> None: ... + def glVertex2i(self, x:int, y:int) -> None: ... + def glVertex2iv(self, v:typing.Sequence) -> None: ... + def glVertex2s(self, x:int, y:int) -> None: ... + def glVertex2sv(self, v:typing.Sequence) -> None: ... + def glVertex3d(self, x:float, y:float, z:float) -> None: ... + def glVertex3dv(self, v:typing.Sequence) -> None: ... + def glVertex3f(self, x:float, y:float, z:float) -> None: ... + def glVertex3fv(self, v:typing.Sequence) -> None: ... + def glVertex3i(self, x:int, y:int, z:int) -> None: ... + def glVertex3iv(self, v:typing.Sequence) -> None: ... + def glVertex3s(self, x:int, y:int, z:int) -> None: ... + def glVertex3sv(self, v:typing.Sequence) -> None: ... + def glVertex4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4dv(self, v:typing.Sequence) -> None: ... + def glVertex4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4fv(self, v:typing.Sequence) -> None: ... + def glVertex4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4iv(self, v:typing.Sequence) -> None: ... + def glVertex4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4sv(self, v:typing.Sequence) -> None: ... + def glVertexPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glViewport(self, x:int, y:int, width:int, height:int) -> None: ... + def glWindowPos2d(self, x:float, y:float) -> None: ... + def glWindowPos2dv(self, v:typing.Sequence) -> None: ... + def glWindowPos2f(self, x:float, y:float) -> None: ... + def glWindowPos2fv(self, v:typing.Sequence) -> None: ... + def glWindowPos2i(self, x:int, y:int) -> None: ... + def glWindowPos2iv(self, v:typing.Sequence) -> None: ... + def glWindowPos2s(self, x:int, y:int) -> None: ... + def glWindowPos2sv(self, v:typing.Sequence) -> None: ... + def glWindowPos3d(self, x:float, y:float, z:float) -> None: ... + def glWindowPos3dv(self, v:typing.Sequence) -> None: ... + def glWindowPos3f(self, x:float, y:float, z:float) -> None: ... + def glWindowPos3fv(self, v:typing.Sequence) -> None: ... + def glWindowPos3i(self, x:int, y:int, z:int) -> None: ... + def glWindowPos3iv(self, v:typing.Sequence) -> None: ... + def glWindowPos3s(self, x:int, y:int, z:int) -> None: ... + def glWindowPos3sv(self, v:typing.Sequence) -> None: ... + def initializeOpenGLFunctions(self) -> bool: ... + + +class QOpenGLFunctions_2_0(PySide2.QtGui.QAbstractOpenGLFunctions): + + def __init__(self) -> None: ... + + def glAccum(self, op:int, value:float) -> None: ... + def glActiveTexture(self, texture:int) -> None: ... + def glAlphaFunc(self, func:int, ref:float) -> None: ... + def glArrayElement(self, i:int) -> None: ... + def glAttachShader(self, program:int, shader:int) -> None: ... + def glBegin(self, mode:int) -> None: ... + def glBeginQuery(self, target:int, id:int) -> None: ... + def glBindAttribLocation(self, program:int, index:int, name:bytes) -> None: ... + def glBindBuffer(self, target:int, buffer:int) -> None: ... + def glBindTexture(self, target:int, texture:int) -> None: ... + def glBlendColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glBlendEquation(self, mode:int) -> None: ... + def glBlendEquationSeparate(self, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendFunc(self, sfactor:int, dfactor:int) -> None: ... + def glBlendFuncSeparate(self, sfactorRGB:int, dfactorRGB:int, sfactorAlpha:int, dfactorAlpha:int) -> None: ... + def glCallList(self, list:int) -> None: ... + def glCallLists(self, n:int, type:int, lists:int) -> None: ... + def glClear(self, mask:int) -> None: ... + def glClearAccum(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearDepth(self, depth:float) -> None: ... + def glClearIndex(self, c:float) -> None: ... + def glClearStencil(self, s:int) -> None: ... + def glClientActiveTexture(self, texture:int) -> None: ... + def glClipPlane(self, plane:int, equation:typing.Sequence) -> None: ... + def glColor3b(self, red:int, green:int, blue:int) -> None: ... + def glColor3bv(self, v:bytes) -> None: ... + def glColor3d(self, red:float, green:float, blue:float) -> None: ... + def glColor3dv(self, v:typing.Sequence) -> None: ... + def glColor3f(self, red:float, green:float, blue:float) -> None: ... + def glColor3fv(self, v:typing.Sequence) -> None: ... + def glColor3i(self, red:int, green:int, blue:int) -> None: ... + def glColor3iv(self, v:typing.Sequence) -> None: ... + def glColor3s(self, red:int, green:int, blue:int) -> None: ... + def glColor3sv(self, v:typing.Sequence) -> None: ... + def glColor3ub(self, red:int, green:int, blue:int) -> None: ... + def glColor3ubv(self, v:bytes) -> None: ... + def glColor3ui(self, red:int, green:int, blue:int) -> None: ... + def glColor3uiv(self, v:typing.Sequence) -> None: ... + def glColor3us(self, red:int, green:int, blue:int) -> None: ... + def glColor3usv(self, v:typing.Sequence) -> None: ... + def glColor4b(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4bv(self, v:bytes) -> None: ... + def glColor4d(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4dv(self, v:typing.Sequence) -> None: ... + def glColor4f(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4fv(self, v:typing.Sequence) -> None: ... + def glColor4i(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4iv(self, v:typing.Sequence) -> None: ... + def glColor4s(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4sv(self, v:typing.Sequence) -> None: ... + def glColor4ub(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4ubv(self, v:bytes) -> None: ... + def glColor4ui(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4uiv(self, v:typing.Sequence) -> None: ... + def glColor4us(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4usv(self, v:typing.Sequence) -> None: ... + def glColorMask(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColorMaterial(self, face:int, mode:int) -> None: ... + def glColorPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glColorSubTable(self, target:int, start:int, count:int, format:int, type:int, data:int) -> None: ... + def glColorTable(self, target:int, internalformat:int, width:int, format:int, type:int, table:int) -> None: ... + def glColorTableParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glColorTableParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glCompileShader(self, shader:int) -> None: ... + def glCompressedTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, imageSize:int, data:int) -> None: ... + def glConvolutionFilter1D(self, target:int, internalformat:int, width:int, format:int, type:int, image:int) -> None: ... + def glConvolutionFilter2D(self, target:int, internalformat:int, width:int, height:int, format:int, type:int, image:int) -> None: ... + def glConvolutionParameterf(self, target:int, pname:int, params:float) -> None: ... + def glConvolutionParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glConvolutionParameteri(self, target:int, pname:int, params:int) -> None: ... + def glConvolutionParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glCopyColorSubTable(self, target:int, start:int, x:int, y:int, width:int) -> None: ... + def glCopyColorTable(self, target:int, internalformat:int, x:int, y:int, width:int) -> None: ... + def glCopyConvolutionFilter1D(self, target:int, internalformat:int, x:int, y:int, width:int) -> None: ... + def glCopyConvolutionFilter2D(self, target:int, internalformat:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyPixels(self, x:int, y:int, width:int, height:int, type:int) -> None: ... + def glCopyTexImage1D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, border:int) -> None: ... + def glCopyTexImage2D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, height:int, border:int) -> None: ... + def glCopyTexSubImage1D(self, target:int, level:int, xoffset:int, x:int, y:int, width:int) -> None: ... + def glCopyTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCreateProgram(self) -> int: ... + def glCreateShader(self, type:int) -> int: ... + def glCullFace(self, mode:int) -> None: ... + def glDeleteBuffers(self, n:int, buffers:typing.Sequence) -> None: ... + def glDeleteLists(self, list:int, range:int) -> None: ... + def glDeleteProgram(self, program:int) -> None: ... + def glDeleteQueries(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteShader(self, shader:int) -> None: ... + def glDeleteTextures(self, n:int, textures:typing.Sequence) -> None: ... + def glDepthFunc(self, func:int) -> None: ... + def glDepthMask(self, flag:int) -> None: ... + def glDepthRange(self, nearVal:float, farVal:float) -> None: ... + def glDetachShader(self, program:int, shader:int) -> None: ... + def glDisable(self, cap:int) -> None: ... + def glDisableClientState(self, array:int) -> None: ... + def glDisableVertexAttribArray(self, index:int) -> None: ... + def glDrawArrays(self, mode:int, first:int, count:int) -> None: ... + def glDrawBuffer(self, mode:int) -> None: ... + def glDrawBuffers(self, n:int, bufs:typing.Sequence) -> None: ... + def glDrawElements(self, mode:int, count:int, type:int, indices:int) -> None: ... + def glDrawPixels(self, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glDrawRangeElements(self, mode:int, start:int, end:int, count:int, type:int, indices:int) -> None: ... + def glEdgeFlag(self, flag:int) -> None: ... + def glEdgeFlagPointer(self, stride:int, pointer:int) -> None: ... + def glEnable(self, cap:int) -> None: ... + def glEnableClientState(self, array:int) -> None: ... + def glEnableVertexAttribArray(self, index:int) -> None: ... + def glEnd(self) -> None: ... + def glEndList(self) -> None: ... + def glEndQuery(self, target:int) -> None: ... + def glEvalCoord1d(self, u:float) -> None: ... + def glEvalCoord1dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord1f(self, u:float) -> None: ... + def glEvalCoord1fv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2d(self, u:float, v:float) -> None: ... + def glEvalCoord2dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2f(self, u:float, v:float) -> None: ... + def glEvalCoord2fv(self, u:typing.Sequence) -> None: ... + def glEvalMesh1(self, mode:int, i1:int, i2:int) -> None: ... + def glEvalMesh2(self, mode:int, i1:int, i2:int, j1:int, j2:int) -> None: ... + def glEvalPoint1(self, i:int) -> None: ... + def glEvalPoint2(self, i:int, j:int) -> None: ... + def glFinish(self) -> None: ... + def glFlush(self) -> None: ... + def glFogCoordPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glFogCoordd(self, coord:float) -> None: ... + def glFogCoorddv(self, coord:typing.Sequence) -> None: ... + def glFogCoordf(self, coord:float) -> None: ... + def glFogCoordfv(self, coord:typing.Sequence) -> None: ... + def glFogf(self, pname:int, param:float) -> None: ... + def glFogfv(self, pname:int, params:typing.Sequence) -> None: ... + def glFogi(self, pname:int, param:int) -> None: ... + def glFogiv(self, pname:int, params:typing.Sequence) -> None: ... + def glFrontFace(self, mode:int) -> None: ... + def glFrustum(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glGenLists(self, range:int) -> int: ... + def glGetAttribLocation(self, program:int, name:bytes) -> int: ... + def glGetError(self) -> int: ... + def glGetString(self, name:int) -> bytes: ... + def glGetUniformLocation(self, program:int, name:bytes) -> int: ... + def glHint(self, target:int, mode:int) -> None: ... + def glHistogram(self, target:int, width:int, internalformat:int, sink:int) -> None: ... + def glIndexMask(self, mask:int) -> None: ... + def glIndexPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glIndexd(self, c:float) -> None: ... + def glIndexdv(self, c:typing.Sequence) -> None: ... + def glIndexf(self, c:float) -> None: ... + def glIndexfv(self, c:typing.Sequence) -> None: ... + def glIndexi(self, c:int) -> None: ... + def glIndexiv(self, c:typing.Sequence) -> None: ... + def glIndexs(self, c:int) -> None: ... + def glIndexsv(self, c:typing.Sequence) -> None: ... + def glIndexub(self, c:int) -> None: ... + def glIndexubv(self, c:bytes) -> None: ... + def glInitNames(self) -> None: ... + def glInterleavedArrays(self, format:int, stride:int, pointer:int) -> None: ... + def glIsBuffer(self, buffer:int) -> int: ... + def glIsEnabled(self, cap:int) -> int: ... + def glIsList(self, list:int) -> int: ... + def glIsProgram(self, program:int) -> int: ... + def glIsQuery(self, id:int) -> int: ... + def glIsShader(self, shader:int) -> int: ... + def glIsTexture(self, texture:int) -> int: ... + def glLightModelf(self, pname:int, param:float) -> None: ... + def glLightModelfv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightModeli(self, pname:int, param:int) -> None: ... + def glLightModeliv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightf(self, light:int, pname:int, param:float) -> None: ... + def glLightfv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLighti(self, light:int, pname:int, param:int) -> None: ... + def glLightiv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLineStipple(self, factor:int, pattern:int) -> None: ... + def glLineWidth(self, width:float) -> None: ... + def glLinkProgram(self, program:int) -> None: ... + def glListBase(self, base:int) -> None: ... + def glLoadIdentity(self) -> None: ... + def glLoadMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadMatrixf(self, m:typing.Sequence) -> None: ... + def glLoadName(self, name:int) -> None: ... + def glLoadTransposeMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadTransposeMatrixf(self, m:typing.Sequence) -> None: ... + def glLogicOp(self, opcode:int) -> None: ... + def glMap1d(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap1f(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap2d(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMap2f(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMapBuffer(self, target:int, access:int) -> int: ... + def glMapGrid1d(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid1f(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid2d(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMapGrid2f(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMaterialf(self, face:int, pname:int, param:float) -> None: ... + def glMaterialfv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMateriali(self, face:int, pname:int, param:int) -> None: ... + def glMaterialiv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMatrixMode(self, mode:int) -> None: ... + def glMinmax(self, target:int, internalformat:int, sink:int) -> None: ... + def glMultMatrixd(self, m:typing.Sequence) -> None: ... + def glMultMatrixf(self, m:typing.Sequence) -> None: ... + def glMultTransposeMatrixd(self, m:typing.Sequence) -> None: ... + def glMultTransposeMatrixf(self, m:typing.Sequence) -> None: ... + def glMultiDrawArrays(self, mode:int, first:typing.Sequence, count:typing.Sequence, drawcount:int) -> None: ... + def glMultiTexCoord1d(self, target:int, s:float) -> None: ... + def glMultiTexCoord1dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1f(self, target:int, s:float) -> None: ... + def glMultiTexCoord1fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1i(self, target:int, s:int) -> None: ... + def glMultiTexCoord1iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1s(self, target:int, s:int) -> None: ... + def glMultiTexCoord1sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2d(self, target:int, s:float, t:float) -> None: ... + def glMultiTexCoord2dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2f(self, target:int, s:float, t:float) -> None: ... + def glMultiTexCoord2fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2i(self, target:int, s:int, t:int) -> None: ... + def glMultiTexCoord2iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2s(self, target:int, s:int, t:int) -> None: ... + def glMultiTexCoord2sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3d(self, target:int, s:float, t:float, r:float) -> None: ... + def glMultiTexCoord3dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3f(self, target:int, s:float, t:float, r:float) -> None: ... + def glMultiTexCoord3fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3i(self, target:int, s:int, t:int, r:int) -> None: ... + def glMultiTexCoord3iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3s(self, target:int, s:int, t:int, r:int) -> None: ... + def glMultiTexCoord3sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4d(self, target:int, s:float, t:float, r:float, q:float) -> None: ... + def glMultiTexCoord4dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4f(self, target:int, s:float, t:float, r:float, q:float) -> None: ... + def glMultiTexCoord4fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4i(self, target:int, s:int, t:int, r:int, q:int) -> None: ... + def glMultiTexCoord4iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4s(self, target:int, s:int, t:int, r:int, q:int) -> None: ... + def glMultiTexCoord4sv(self, target:int, v:typing.Sequence) -> None: ... + def glNewList(self, list:int, mode:int) -> None: ... + def glNormal3b(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3bv(self, v:bytes) -> None: ... + def glNormal3d(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3dv(self, v:typing.Sequence) -> None: ... + def glNormal3f(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3fv(self, v:typing.Sequence) -> None: ... + def glNormal3i(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3iv(self, v:typing.Sequence) -> None: ... + def glNormal3s(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3sv(self, v:typing.Sequence) -> None: ... + def glNormalPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glOrtho(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glPassThrough(self, token:float) -> None: ... + def glPixelMapfv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapuiv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapusv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelStoref(self, pname:int, param:float) -> None: ... + def glPixelStorei(self, pname:int, param:int) -> None: ... + def glPixelTransferf(self, pname:int, param:float) -> None: ... + def glPixelTransferi(self, pname:int, param:int) -> None: ... + def glPixelZoom(self, xfactor:float, yfactor:float) -> None: ... + def glPointParameterf(self, pname:int, param:float) -> None: ... + def glPointParameterfv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointParameteri(self, pname:int, param:int) -> None: ... + def glPointParameteriv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointSize(self, size:float) -> None: ... + def glPolygonMode(self, face:int, mode:int) -> None: ... + def glPolygonOffset(self, factor:float, units:float) -> None: ... + def glPopAttrib(self) -> None: ... + def glPopClientAttrib(self) -> None: ... + def glPopMatrix(self) -> None: ... + def glPopName(self) -> None: ... + def glPrioritizeTextures(self, n:int, textures:typing.Sequence, priorities:typing.Sequence) -> None: ... + def glPushAttrib(self, mask:int) -> None: ... + def glPushClientAttrib(self, mask:int) -> None: ... + def glPushMatrix(self) -> None: ... + def glPushName(self, name:int) -> None: ... + def glRasterPos2d(self, x:float, y:float) -> None: ... + def glRasterPos2dv(self, v:typing.Sequence) -> None: ... + def glRasterPos2f(self, x:float, y:float) -> None: ... + def glRasterPos2fv(self, v:typing.Sequence) -> None: ... + def glRasterPos2i(self, x:int, y:int) -> None: ... + def glRasterPos2iv(self, v:typing.Sequence) -> None: ... + def glRasterPos2s(self, x:int, y:int) -> None: ... + def glRasterPos2sv(self, v:typing.Sequence) -> None: ... + def glRasterPos3d(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3dv(self, v:typing.Sequence) -> None: ... + def glRasterPos3f(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3fv(self, v:typing.Sequence) -> None: ... + def glRasterPos3i(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3iv(self, v:typing.Sequence) -> None: ... + def glRasterPos3s(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3sv(self, v:typing.Sequence) -> None: ... + def glRasterPos4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4dv(self, v:typing.Sequence) -> None: ... + def glRasterPos4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4fv(self, v:typing.Sequence) -> None: ... + def glRasterPos4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4iv(self, v:typing.Sequence) -> None: ... + def glRasterPos4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4sv(self, v:typing.Sequence) -> None: ... + def glReadBuffer(self, mode:int) -> None: ... + def glRectd(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectdv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRectf(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectfv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRecti(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectiv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRects(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectsv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRenderMode(self, mode:int) -> int: ... + def glResetHistogram(self, target:int) -> None: ... + def glResetMinmax(self, target:int) -> None: ... + def glRotated(self, angle:float, x:float, y:float, z:float) -> None: ... + def glRotatef(self, angle:float, x:float, y:float, z:float) -> None: ... + def glSampleCoverage(self, value:float, invert:int) -> None: ... + def glScaled(self, x:float, y:float, z:float) -> None: ... + def glScalef(self, x:float, y:float, z:float) -> None: ... + def glScissor(self, x:int, y:int, width:int, height:int) -> None: ... + def glSecondaryColor3b(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3bv(self, v:bytes) -> None: ... + def glSecondaryColor3d(self, red:float, green:float, blue:float) -> None: ... + def glSecondaryColor3dv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3f(self, red:float, green:float, blue:float) -> None: ... + def glSecondaryColor3fv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3i(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3iv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3s(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3sv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3ub(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3ubv(self, v:bytes) -> None: ... + def glSecondaryColor3ui(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3uiv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3us(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3usv(self, v:typing.Sequence) -> None: ... + def glSecondaryColorPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glSeparableFilter2D(self, target:int, internalformat:int, width:int, height:int, format:int, type:int, row:int, column:int) -> None: ... + def glShadeModel(self, mode:int) -> None: ... + def glStencilFunc(self, func:int, ref:int, mask:int) -> None: ... + def glStencilFuncSeparate(self, face:int, func:int, ref:int, mask:int) -> None: ... + def glStencilMask(self, mask:int) -> None: ... + def glStencilMaskSeparate(self, face:int, mask:int) -> None: ... + def glStencilOp(self, fail:int, zfail:int, zpass:int) -> None: ... + def glStencilOpSeparate(self, face:int, sfail:int, dpfail:int, dppass:int) -> None: ... + def glTexCoord1d(self, s:float) -> None: ... + def glTexCoord1dv(self, v:typing.Sequence) -> None: ... + def glTexCoord1f(self, s:float) -> None: ... + def glTexCoord1fv(self, v:typing.Sequence) -> None: ... + def glTexCoord1i(self, s:int) -> None: ... + def glTexCoord1iv(self, v:typing.Sequence) -> None: ... + def glTexCoord1s(self, s:int) -> None: ... + def glTexCoord1sv(self, v:typing.Sequence) -> None: ... + def glTexCoord2d(self, s:float, t:float) -> None: ... + def glTexCoord2dv(self, v:typing.Sequence) -> None: ... + def glTexCoord2f(self, s:float, t:float) -> None: ... + def glTexCoord2fv(self, v:typing.Sequence) -> None: ... + def glTexCoord2i(self, s:int, t:int) -> None: ... + def glTexCoord2iv(self, v:typing.Sequence) -> None: ... + def glTexCoord2s(self, s:int, t:int) -> None: ... + def glTexCoord2sv(self, v:typing.Sequence) -> None: ... + def glTexCoord3d(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3dv(self, v:typing.Sequence) -> None: ... + def glTexCoord3f(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3fv(self, v:typing.Sequence) -> None: ... + def glTexCoord3i(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3iv(self, v:typing.Sequence) -> None: ... + def glTexCoord3s(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3sv(self, v:typing.Sequence) -> None: ... + def glTexCoord4d(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4dv(self, v:typing.Sequence) -> None: ... + def glTexCoord4f(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4fv(self, v:typing.Sequence) -> None: ... + def glTexCoord4i(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4iv(self, v:typing.Sequence) -> None: ... + def glTexCoord4s(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4sv(self, v:typing.Sequence) -> None: ... + def glTexCoordPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glTexEnvf(self, target:int, pname:int, param:float) -> None: ... + def glTexEnvfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexEnvi(self, target:int, pname:int, param:int) -> None: ... + def glTexEnviv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGend(self, coord:int, pname:int, param:float) -> None: ... + def glTexGendv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGenf(self, coord:int, pname:int, param:float) -> None: ... + def glTexGenfv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGeni(self, coord:int, pname:int, param:int) -> None: ... + def glTexGeniv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexParameterf(self, target:int, pname:int, param:float) -> None: ... + def glTexParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameteri(self, target:int, pname:int, param:int) -> None: ... + def glTexParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, pixels:int) -> None: ... + def glTranslated(self, x:float, y:float, z:float) -> None: ... + def glTranslatef(self, x:float, y:float, z:float) -> None: ... + def glUniform1f(self, location:int, v0:float) -> None: ... + def glUniform1fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1i(self, location:int, v0:int) -> None: ... + def glUniform1iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2f(self, location:int, v0:float, v1:float) -> None: ... + def glUniform2fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2i(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3f(self, location:int, v0:float, v1:float, v2:float) -> None: ... + def glUniform3fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3i(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4f(self, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glUniform4fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4i(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUnmapBuffer(self, target:int) -> int: ... + def glUseProgram(self, program:int) -> None: ... + def glValidateProgram(self, program:int) -> None: ... + def glVertex2d(self, x:float, y:float) -> None: ... + def glVertex2dv(self, v:typing.Sequence) -> None: ... + def glVertex2f(self, x:float, y:float) -> None: ... + def glVertex2fv(self, v:typing.Sequence) -> None: ... + def glVertex2i(self, x:int, y:int) -> None: ... + def glVertex2iv(self, v:typing.Sequence) -> None: ... + def glVertex2s(self, x:int, y:int) -> None: ... + def glVertex2sv(self, v:typing.Sequence) -> None: ... + def glVertex3d(self, x:float, y:float, z:float) -> None: ... + def glVertex3dv(self, v:typing.Sequence) -> None: ... + def glVertex3f(self, x:float, y:float, z:float) -> None: ... + def glVertex3fv(self, v:typing.Sequence) -> None: ... + def glVertex3i(self, x:int, y:int, z:int) -> None: ... + def glVertex3iv(self, v:typing.Sequence) -> None: ... + def glVertex3s(self, x:int, y:int, z:int) -> None: ... + def glVertex3sv(self, v:typing.Sequence) -> None: ... + def glVertex4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4dv(self, v:typing.Sequence) -> None: ... + def glVertex4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4fv(self, v:typing.Sequence) -> None: ... + def glVertex4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4iv(self, v:typing.Sequence) -> None: ... + def glVertex4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4sv(self, v:typing.Sequence) -> None: ... + def glVertexAttrib1d(self, index:int, x:float) -> None: ... + def glVertexAttrib1dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib1f(self, index:int, x:float) -> None: ... + def glVertexAttrib1fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib1s(self, index:int, x:int) -> None: ... + def glVertexAttrib1sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2d(self, index:int, x:float, y:float) -> None: ... + def glVertexAttrib2dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2f(self, index:int, x:float, y:float) -> None: ... + def glVertexAttrib2fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2s(self, index:int, x:int, y:int) -> None: ... + def glVertexAttrib2sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3d(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttrib3dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3f(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttrib3fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3s(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttrib3sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nbv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4Niv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nsv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nub(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttrib4Nubv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4Nuiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nusv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4bv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4d(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttrib4dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4f(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttrib4fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4s(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttrib4sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4ubv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4usv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribPointer(self, index:int, size:int, type:int, normalized:int, stride:int, pointer:int) -> None: ... + def glVertexPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glViewport(self, x:int, y:int, width:int, height:int) -> None: ... + def glWindowPos2d(self, x:float, y:float) -> None: ... + def glWindowPos2dv(self, v:typing.Sequence) -> None: ... + def glWindowPos2f(self, x:float, y:float) -> None: ... + def glWindowPos2fv(self, v:typing.Sequence) -> None: ... + def glWindowPos2i(self, x:int, y:int) -> None: ... + def glWindowPos2iv(self, v:typing.Sequence) -> None: ... + def glWindowPos2s(self, x:int, y:int) -> None: ... + def glWindowPos2sv(self, v:typing.Sequence) -> None: ... + def glWindowPos3d(self, x:float, y:float, z:float) -> None: ... + def glWindowPos3dv(self, v:typing.Sequence) -> None: ... + def glWindowPos3f(self, x:float, y:float, z:float) -> None: ... + def glWindowPos3fv(self, v:typing.Sequence) -> None: ... + def glWindowPos3i(self, x:int, y:int, z:int) -> None: ... + def glWindowPos3iv(self, v:typing.Sequence) -> None: ... + def glWindowPos3s(self, x:int, y:int, z:int) -> None: ... + def glWindowPos3sv(self, v:typing.Sequence) -> None: ... + def initializeOpenGLFunctions(self) -> bool: ... + + +class QOpenGLFunctions_2_1(PySide2.QtGui.QAbstractOpenGLFunctions): + + def __init__(self) -> None: ... + + def glAccum(self, op:int, value:float) -> None: ... + def glActiveTexture(self, texture:int) -> None: ... + def glAlphaFunc(self, func:int, ref:float) -> None: ... + def glArrayElement(self, i:int) -> None: ... + def glAttachShader(self, program:int, shader:int) -> None: ... + def glBegin(self, mode:int) -> None: ... + def glBeginQuery(self, target:int, id:int) -> None: ... + def glBindAttribLocation(self, program:int, index:int, name:bytes) -> None: ... + def glBindBuffer(self, target:int, buffer:int) -> None: ... + def glBindTexture(self, target:int, texture:int) -> None: ... + def glBlendColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glBlendEquation(self, mode:int) -> None: ... + def glBlendEquationSeparate(self, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendFunc(self, sfactor:int, dfactor:int) -> None: ... + def glBlendFuncSeparate(self, sfactorRGB:int, dfactorRGB:int, sfactorAlpha:int, dfactorAlpha:int) -> None: ... + def glCallList(self, list:int) -> None: ... + def glCallLists(self, n:int, type:int, lists:int) -> None: ... + def glClear(self, mask:int) -> None: ... + def glClearAccum(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearDepth(self, depth:float) -> None: ... + def glClearIndex(self, c:float) -> None: ... + def glClearStencil(self, s:int) -> None: ... + def glClientActiveTexture(self, texture:int) -> None: ... + def glClipPlane(self, plane:int, equation:typing.Sequence) -> None: ... + def glColor3b(self, red:int, green:int, blue:int) -> None: ... + def glColor3bv(self, v:bytes) -> None: ... + def glColor3d(self, red:float, green:float, blue:float) -> None: ... + def glColor3dv(self, v:typing.Sequence) -> None: ... + def glColor3f(self, red:float, green:float, blue:float) -> None: ... + def glColor3fv(self, v:typing.Sequence) -> None: ... + def glColor3i(self, red:int, green:int, blue:int) -> None: ... + def glColor3iv(self, v:typing.Sequence) -> None: ... + def glColor3s(self, red:int, green:int, blue:int) -> None: ... + def glColor3sv(self, v:typing.Sequence) -> None: ... + def glColor3ub(self, red:int, green:int, blue:int) -> None: ... + def glColor3ubv(self, v:bytes) -> None: ... + def glColor3ui(self, red:int, green:int, blue:int) -> None: ... + def glColor3uiv(self, v:typing.Sequence) -> None: ... + def glColor3us(self, red:int, green:int, blue:int) -> None: ... + def glColor3usv(self, v:typing.Sequence) -> None: ... + def glColor4b(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4bv(self, v:bytes) -> None: ... + def glColor4d(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4dv(self, v:typing.Sequence) -> None: ... + def glColor4f(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4fv(self, v:typing.Sequence) -> None: ... + def glColor4i(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4iv(self, v:typing.Sequence) -> None: ... + def glColor4s(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4sv(self, v:typing.Sequence) -> None: ... + def glColor4ub(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4ubv(self, v:bytes) -> None: ... + def glColor4ui(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4uiv(self, v:typing.Sequence) -> None: ... + def glColor4us(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4usv(self, v:typing.Sequence) -> None: ... + def glColorMask(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColorMaterial(self, face:int, mode:int) -> None: ... + def glColorPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glColorSubTable(self, target:int, start:int, count:int, format:int, type:int, data:int) -> None: ... + def glColorTable(self, target:int, internalformat:int, width:int, format:int, type:int, table:int) -> None: ... + def glColorTableParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glColorTableParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glCompileShader(self, shader:int) -> None: ... + def glCompressedTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, imageSize:int, data:int) -> None: ... + def glConvolutionFilter1D(self, target:int, internalformat:int, width:int, format:int, type:int, image:int) -> None: ... + def glConvolutionFilter2D(self, target:int, internalformat:int, width:int, height:int, format:int, type:int, image:int) -> None: ... + def glConvolutionParameterf(self, target:int, pname:int, params:float) -> None: ... + def glConvolutionParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glConvolutionParameteri(self, target:int, pname:int, params:int) -> None: ... + def glConvolutionParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glCopyColorSubTable(self, target:int, start:int, x:int, y:int, width:int) -> None: ... + def glCopyColorTable(self, target:int, internalformat:int, x:int, y:int, width:int) -> None: ... + def glCopyConvolutionFilter1D(self, target:int, internalformat:int, x:int, y:int, width:int) -> None: ... + def glCopyConvolutionFilter2D(self, target:int, internalformat:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyPixels(self, x:int, y:int, width:int, height:int, type:int) -> None: ... + def glCopyTexImage1D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, border:int) -> None: ... + def glCopyTexImage2D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, height:int, border:int) -> None: ... + def glCopyTexSubImage1D(self, target:int, level:int, xoffset:int, x:int, y:int, width:int) -> None: ... + def glCopyTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCreateProgram(self) -> int: ... + def glCreateShader(self, type:int) -> int: ... + def glCullFace(self, mode:int) -> None: ... + def glDeleteBuffers(self, n:int, buffers:typing.Sequence) -> None: ... + def glDeleteLists(self, list:int, range:int) -> None: ... + def glDeleteProgram(self, program:int) -> None: ... + def glDeleteQueries(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteShader(self, shader:int) -> None: ... + def glDeleteTextures(self, n:int, textures:typing.Sequence) -> None: ... + def glDepthFunc(self, func:int) -> None: ... + def glDepthMask(self, flag:int) -> None: ... + def glDepthRange(self, nearVal:float, farVal:float) -> None: ... + def glDetachShader(self, program:int, shader:int) -> None: ... + def glDisable(self, cap:int) -> None: ... + def glDisableClientState(self, array:int) -> None: ... + def glDisableVertexAttribArray(self, index:int) -> None: ... + def glDrawArrays(self, mode:int, first:int, count:int) -> None: ... + def glDrawBuffer(self, mode:int) -> None: ... + def glDrawBuffers(self, n:int, bufs:typing.Sequence) -> None: ... + def glDrawElements(self, mode:int, count:int, type:int, indices:int) -> None: ... + def glDrawPixels(self, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glDrawRangeElements(self, mode:int, start:int, end:int, count:int, type:int, indices:int) -> None: ... + def glEdgeFlag(self, flag:int) -> None: ... + def glEdgeFlagPointer(self, stride:int, pointer:int) -> None: ... + def glEnable(self, cap:int) -> None: ... + def glEnableClientState(self, array:int) -> None: ... + def glEnableVertexAttribArray(self, index:int) -> None: ... + def glEnd(self) -> None: ... + def glEndList(self) -> None: ... + def glEndQuery(self, target:int) -> None: ... + def glEvalCoord1d(self, u:float) -> None: ... + def glEvalCoord1dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord1f(self, u:float) -> None: ... + def glEvalCoord1fv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2d(self, u:float, v:float) -> None: ... + def glEvalCoord2dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2f(self, u:float, v:float) -> None: ... + def glEvalCoord2fv(self, u:typing.Sequence) -> None: ... + def glEvalMesh1(self, mode:int, i1:int, i2:int) -> None: ... + def glEvalMesh2(self, mode:int, i1:int, i2:int, j1:int, j2:int) -> None: ... + def glEvalPoint1(self, i:int) -> None: ... + def glEvalPoint2(self, i:int, j:int) -> None: ... + def glFinish(self) -> None: ... + def glFlush(self) -> None: ... + def glFogCoordPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glFogCoordd(self, coord:float) -> None: ... + def glFogCoorddv(self, coord:typing.Sequence) -> None: ... + def glFogCoordf(self, coord:float) -> None: ... + def glFogCoordfv(self, coord:typing.Sequence) -> None: ... + def glFogf(self, pname:int, param:float) -> None: ... + def glFogfv(self, pname:int, params:typing.Sequence) -> None: ... + def glFogi(self, pname:int, param:int) -> None: ... + def glFogiv(self, pname:int, params:typing.Sequence) -> None: ... + def glFrontFace(self, mode:int) -> None: ... + def glFrustum(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glGenLists(self, range:int) -> int: ... + def glGetAttribLocation(self, program:int, name:bytes) -> int: ... + def glGetError(self) -> int: ... + def glGetString(self, name:int) -> bytes: ... + def glGetUniformLocation(self, program:int, name:bytes) -> int: ... + def glHint(self, target:int, mode:int) -> None: ... + def glHistogram(self, target:int, width:int, internalformat:int, sink:int) -> None: ... + def glIndexMask(self, mask:int) -> None: ... + def glIndexPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glIndexd(self, c:float) -> None: ... + def glIndexdv(self, c:typing.Sequence) -> None: ... + def glIndexf(self, c:float) -> None: ... + def glIndexfv(self, c:typing.Sequence) -> None: ... + def glIndexi(self, c:int) -> None: ... + def glIndexiv(self, c:typing.Sequence) -> None: ... + def glIndexs(self, c:int) -> None: ... + def glIndexsv(self, c:typing.Sequence) -> None: ... + def glIndexub(self, c:int) -> None: ... + def glIndexubv(self, c:bytes) -> None: ... + def glInitNames(self) -> None: ... + def glInterleavedArrays(self, format:int, stride:int, pointer:int) -> None: ... + def glIsBuffer(self, buffer:int) -> int: ... + def glIsEnabled(self, cap:int) -> int: ... + def glIsList(self, list:int) -> int: ... + def glIsProgram(self, program:int) -> int: ... + def glIsQuery(self, id:int) -> int: ... + def glIsShader(self, shader:int) -> int: ... + def glIsTexture(self, texture:int) -> int: ... + def glLightModelf(self, pname:int, param:float) -> None: ... + def glLightModelfv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightModeli(self, pname:int, param:int) -> None: ... + def glLightModeliv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightf(self, light:int, pname:int, param:float) -> None: ... + def glLightfv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLighti(self, light:int, pname:int, param:int) -> None: ... + def glLightiv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLineStipple(self, factor:int, pattern:int) -> None: ... + def glLineWidth(self, width:float) -> None: ... + def glLinkProgram(self, program:int) -> None: ... + def glListBase(self, base:int) -> None: ... + def glLoadIdentity(self) -> None: ... + def glLoadMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadMatrixf(self, m:typing.Sequence) -> None: ... + def glLoadName(self, name:int) -> None: ... + def glLoadTransposeMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadTransposeMatrixf(self, m:typing.Sequence) -> None: ... + def glLogicOp(self, opcode:int) -> None: ... + def glMap1d(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap1f(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap2d(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMap2f(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMapBuffer(self, target:int, access:int) -> int: ... + def glMapGrid1d(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid1f(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid2d(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMapGrid2f(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMaterialf(self, face:int, pname:int, param:float) -> None: ... + def glMaterialfv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMateriali(self, face:int, pname:int, param:int) -> None: ... + def glMaterialiv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMatrixMode(self, mode:int) -> None: ... + def glMinmax(self, target:int, internalformat:int, sink:int) -> None: ... + def glMultMatrixd(self, m:typing.Sequence) -> None: ... + def glMultMatrixf(self, m:typing.Sequence) -> None: ... + def glMultTransposeMatrixd(self, m:typing.Sequence) -> None: ... + def glMultTransposeMatrixf(self, m:typing.Sequence) -> None: ... + def glMultiDrawArrays(self, mode:int, first:typing.Sequence, count:typing.Sequence, drawcount:int) -> None: ... + def glMultiTexCoord1d(self, target:int, s:float) -> None: ... + def glMultiTexCoord1dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1f(self, target:int, s:float) -> None: ... + def glMultiTexCoord1fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1i(self, target:int, s:int) -> None: ... + def glMultiTexCoord1iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1s(self, target:int, s:int) -> None: ... + def glMultiTexCoord1sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2d(self, target:int, s:float, t:float) -> None: ... + def glMultiTexCoord2dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2f(self, target:int, s:float, t:float) -> None: ... + def glMultiTexCoord2fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2i(self, target:int, s:int, t:int) -> None: ... + def glMultiTexCoord2iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2s(self, target:int, s:int, t:int) -> None: ... + def glMultiTexCoord2sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3d(self, target:int, s:float, t:float, r:float) -> None: ... + def glMultiTexCoord3dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3f(self, target:int, s:float, t:float, r:float) -> None: ... + def glMultiTexCoord3fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3i(self, target:int, s:int, t:int, r:int) -> None: ... + def glMultiTexCoord3iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3s(self, target:int, s:int, t:int, r:int) -> None: ... + def glMultiTexCoord3sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4d(self, target:int, s:float, t:float, r:float, q:float) -> None: ... + def glMultiTexCoord4dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4f(self, target:int, s:float, t:float, r:float, q:float) -> None: ... + def glMultiTexCoord4fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4i(self, target:int, s:int, t:int, r:int, q:int) -> None: ... + def glMultiTexCoord4iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4s(self, target:int, s:int, t:int, r:int, q:int) -> None: ... + def glMultiTexCoord4sv(self, target:int, v:typing.Sequence) -> None: ... + def glNewList(self, list:int, mode:int) -> None: ... + def glNormal3b(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3bv(self, v:bytes) -> None: ... + def glNormal3d(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3dv(self, v:typing.Sequence) -> None: ... + def glNormal3f(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3fv(self, v:typing.Sequence) -> None: ... + def glNormal3i(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3iv(self, v:typing.Sequence) -> None: ... + def glNormal3s(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3sv(self, v:typing.Sequence) -> None: ... + def glNormalPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glOrtho(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glPassThrough(self, token:float) -> None: ... + def glPixelMapfv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapuiv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapusv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelStoref(self, pname:int, param:float) -> None: ... + def glPixelStorei(self, pname:int, param:int) -> None: ... + def glPixelTransferf(self, pname:int, param:float) -> None: ... + def glPixelTransferi(self, pname:int, param:int) -> None: ... + def glPixelZoom(self, xfactor:float, yfactor:float) -> None: ... + def glPointParameterf(self, pname:int, param:float) -> None: ... + def glPointParameterfv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointParameteri(self, pname:int, param:int) -> None: ... + def glPointParameteriv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointSize(self, size:float) -> None: ... + def glPolygonMode(self, face:int, mode:int) -> None: ... + def glPolygonOffset(self, factor:float, units:float) -> None: ... + def glPopAttrib(self) -> None: ... + def glPopClientAttrib(self) -> None: ... + def glPopMatrix(self) -> None: ... + def glPopName(self) -> None: ... + def glPrioritizeTextures(self, n:int, textures:typing.Sequence, priorities:typing.Sequence) -> None: ... + def glPushAttrib(self, mask:int) -> None: ... + def glPushClientAttrib(self, mask:int) -> None: ... + def glPushMatrix(self) -> None: ... + def glPushName(self, name:int) -> None: ... + def glRasterPos2d(self, x:float, y:float) -> None: ... + def glRasterPos2dv(self, v:typing.Sequence) -> None: ... + def glRasterPos2f(self, x:float, y:float) -> None: ... + def glRasterPos2fv(self, v:typing.Sequence) -> None: ... + def glRasterPos2i(self, x:int, y:int) -> None: ... + def glRasterPos2iv(self, v:typing.Sequence) -> None: ... + def glRasterPos2s(self, x:int, y:int) -> None: ... + def glRasterPos2sv(self, v:typing.Sequence) -> None: ... + def glRasterPos3d(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3dv(self, v:typing.Sequence) -> None: ... + def glRasterPos3f(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3fv(self, v:typing.Sequence) -> None: ... + def glRasterPos3i(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3iv(self, v:typing.Sequence) -> None: ... + def glRasterPos3s(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3sv(self, v:typing.Sequence) -> None: ... + def glRasterPos4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4dv(self, v:typing.Sequence) -> None: ... + def glRasterPos4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4fv(self, v:typing.Sequence) -> None: ... + def glRasterPos4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4iv(self, v:typing.Sequence) -> None: ... + def glRasterPos4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4sv(self, v:typing.Sequence) -> None: ... + def glReadBuffer(self, mode:int) -> None: ... + def glRectd(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectdv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRectf(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectfv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRecti(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectiv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRects(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectsv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRenderMode(self, mode:int) -> int: ... + def glResetHistogram(self, target:int) -> None: ... + def glResetMinmax(self, target:int) -> None: ... + def glRotated(self, angle:float, x:float, y:float, z:float) -> None: ... + def glRotatef(self, angle:float, x:float, y:float, z:float) -> None: ... + def glSampleCoverage(self, value:float, invert:int) -> None: ... + def glScaled(self, x:float, y:float, z:float) -> None: ... + def glScalef(self, x:float, y:float, z:float) -> None: ... + def glScissor(self, x:int, y:int, width:int, height:int) -> None: ... + def glSecondaryColor3b(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3bv(self, v:bytes) -> None: ... + def glSecondaryColor3d(self, red:float, green:float, blue:float) -> None: ... + def glSecondaryColor3dv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3f(self, red:float, green:float, blue:float) -> None: ... + def glSecondaryColor3fv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3i(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3iv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3s(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3sv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3ub(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3ubv(self, v:bytes) -> None: ... + def glSecondaryColor3ui(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3uiv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3us(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3usv(self, v:typing.Sequence) -> None: ... + def glSecondaryColorPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glSeparableFilter2D(self, target:int, internalformat:int, width:int, height:int, format:int, type:int, row:int, column:int) -> None: ... + def glShadeModel(self, mode:int) -> None: ... + def glStencilFunc(self, func:int, ref:int, mask:int) -> None: ... + def glStencilFuncSeparate(self, face:int, func:int, ref:int, mask:int) -> None: ... + def glStencilMask(self, mask:int) -> None: ... + def glStencilMaskSeparate(self, face:int, mask:int) -> None: ... + def glStencilOp(self, fail:int, zfail:int, zpass:int) -> None: ... + def glStencilOpSeparate(self, face:int, sfail:int, dpfail:int, dppass:int) -> None: ... + def glTexCoord1d(self, s:float) -> None: ... + def glTexCoord1dv(self, v:typing.Sequence) -> None: ... + def glTexCoord1f(self, s:float) -> None: ... + def glTexCoord1fv(self, v:typing.Sequence) -> None: ... + def glTexCoord1i(self, s:int) -> None: ... + def glTexCoord1iv(self, v:typing.Sequence) -> None: ... + def glTexCoord1s(self, s:int) -> None: ... + def glTexCoord1sv(self, v:typing.Sequence) -> None: ... + def glTexCoord2d(self, s:float, t:float) -> None: ... + def glTexCoord2dv(self, v:typing.Sequence) -> None: ... + def glTexCoord2f(self, s:float, t:float) -> None: ... + def glTexCoord2fv(self, v:typing.Sequence) -> None: ... + def glTexCoord2i(self, s:int, t:int) -> None: ... + def glTexCoord2iv(self, v:typing.Sequence) -> None: ... + def glTexCoord2s(self, s:int, t:int) -> None: ... + def glTexCoord2sv(self, v:typing.Sequence) -> None: ... + def glTexCoord3d(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3dv(self, v:typing.Sequence) -> None: ... + def glTexCoord3f(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3fv(self, v:typing.Sequence) -> None: ... + def glTexCoord3i(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3iv(self, v:typing.Sequence) -> None: ... + def glTexCoord3s(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3sv(self, v:typing.Sequence) -> None: ... + def glTexCoord4d(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4dv(self, v:typing.Sequence) -> None: ... + def glTexCoord4f(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4fv(self, v:typing.Sequence) -> None: ... + def glTexCoord4i(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4iv(self, v:typing.Sequence) -> None: ... + def glTexCoord4s(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4sv(self, v:typing.Sequence) -> None: ... + def glTexCoordPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glTexEnvf(self, target:int, pname:int, param:float) -> None: ... + def glTexEnvfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexEnvi(self, target:int, pname:int, param:int) -> None: ... + def glTexEnviv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGend(self, coord:int, pname:int, param:float) -> None: ... + def glTexGendv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGenf(self, coord:int, pname:int, param:float) -> None: ... + def glTexGenfv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGeni(self, coord:int, pname:int, param:int) -> None: ... + def glTexGeniv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexParameterf(self, target:int, pname:int, param:float) -> None: ... + def glTexParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameteri(self, target:int, pname:int, param:int) -> None: ... + def glTexParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, pixels:int) -> None: ... + def glTranslated(self, x:float, y:float, z:float) -> None: ... + def glTranslatef(self, x:float, y:float, z:float) -> None: ... + def glUniform1f(self, location:int, v0:float) -> None: ... + def glUniform1fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1i(self, location:int, v0:int) -> None: ... + def glUniform1iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2f(self, location:int, v0:float, v1:float) -> None: ... + def glUniform2fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2i(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3f(self, location:int, v0:float, v1:float, v2:float) -> None: ... + def glUniform3fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3i(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4f(self, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glUniform4fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4i(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUnmapBuffer(self, target:int) -> int: ... + def glUseProgram(self, program:int) -> None: ... + def glValidateProgram(self, program:int) -> None: ... + def glVertex2d(self, x:float, y:float) -> None: ... + def glVertex2dv(self, v:typing.Sequence) -> None: ... + def glVertex2f(self, x:float, y:float) -> None: ... + def glVertex2fv(self, v:typing.Sequence) -> None: ... + def glVertex2i(self, x:int, y:int) -> None: ... + def glVertex2iv(self, v:typing.Sequence) -> None: ... + def glVertex2s(self, x:int, y:int) -> None: ... + def glVertex2sv(self, v:typing.Sequence) -> None: ... + def glVertex3d(self, x:float, y:float, z:float) -> None: ... + def glVertex3dv(self, v:typing.Sequence) -> None: ... + def glVertex3f(self, x:float, y:float, z:float) -> None: ... + def glVertex3fv(self, v:typing.Sequence) -> None: ... + def glVertex3i(self, x:int, y:int, z:int) -> None: ... + def glVertex3iv(self, v:typing.Sequence) -> None: ... + def glVertex3s(self, x:int, y:int, z:int) -> None: ... + def glVertex3sv(self, v:typing.Sequence) -> None: ... + def glVertex4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4dv(self, v:typing.Sequence) -> None: ... + def glVertex4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4fv(self, v:typing.Sequence) -> None: ... + def glVertex4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4iv(self, v:typing.Sequence) -> None: ... + def glVertex4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4sv(self, v:typing.Sequence) -> None: ... + def glVertexAttrib1d(self, index:int, x:float) -> None: ... + def glVertexAttrib1dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib1f(self, index:int, x:float) -> None: ... + def glVertexAttrib1fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib1s(self, index:int, x:int) -> None: ... + def glVertexAttrib1sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2d(self, index:int, x:float, y:float) -> None: ... + def glVertexAttrib2dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2f(self, index:int, x:float, y:float) -> None: ... + def glVertexAttrib2fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2s(self, index:int, x:int, y:int) -> None: ... + def glVertexAttrib2sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3d(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttrib3dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3f(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttrib3fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3s(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttrib3sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nbv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4Niv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nsv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nub(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttrib4Nubv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4Nuiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nusv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4bv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4d(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttrib4dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4f(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttrib4fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4s(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttrib4sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4ubv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4usv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribPointer(self, index:int, size:int, type:int, normalized:int, stride:int, pointer:int) -> None: ... + def glVertexPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glViewport(self, x:int, y:int, width:int, height:int) -> None: ... + def glWindowPos2d(self, x:float, y:float) -> None: ... + def glWindowPos2dv(self, v:typing.Sequence) -> None: ... + def glWindowPos2f(self, x:float, y:float) -> None: ... + def glWindowPos2fv(self, v:typing.Sequence) -> None: ... + def glWindowPos2i(self, x:int, y:int) -> None: ... + def glWindowPos2iv(self, v:typing.Sequence) -> None: ... + def glWindowPos2s(self, x:int, y:int) -> None: ... + def glWindowPos2sv(self, v:typing.Sequence) -> None: ... + def glWindowPos3d(self, x:float, y:float, z:float) -> None: ... + def glWindowPos3dv(self, v:typing.Sequence) -> None: ... + def glWindowPos3f(self, x:float, y:float, z:float) -> None: ... + def glWindowPos3fv(self, v:typing.Sequence) -> None: ... + def glWindowPos3i(self, x:int, y:int, z:int) -> None: ... + def glWindowPos3iv(self, v:typing.Sequence) -> None: ... + def glWindowPos3s(self, x:int, y:int, z:int) -> None: ... + def glWindowPos3sv(self, v:typing.Sequence) -> None: ... + def initializeOpenGLFunctions(self) -> bool: ... + + +class QOpenGLFunctions_3_0(PySide2.QtGui.QAbstractOpenGLFunctions): + + def __init__(self) -> None: ... + + def glAccum(self, op:int, value:float) -> None: ... + def glActiveTexture(self, texture:int) -> None: ... + def glAlphaFunc(self, func:int, ref:float) -> None: ... + def glArrayElement(self, i:int) -> None: ... + def glAttachShader(self, program:int, shader:int) -> None: ... + def glBegin(self, mode:int) -> None: ... + def glBeginConditionalRender(self, id:int, mode:int) -> None: ... + def glBeginQuery(self, target:int, id:int) -> None: ... + def glBeginTransformFeedback(self, primitiveMode:int) -> None: ... + def glBindAttribLocation(self, program:int, index:int, name:bytes) -> None: ... + def glBindBuffer(self, target:int, buffer:int) -> None: ... + def glBindBufferBase(self, target:int, index:int, buffer:int) -> None: ... + def glBindFragDataLocation(self, program:int, color:int, name:bytes) -> None: ... + def glBindFramebuffer(self, target:int, framebuffer:int) -> None: ... + def glBindRenderbuffer(self, target:int, renderbuffer:int) -> None: ... + def glBindTexture(self, target:int, texture:int) -> None: ... + def glBindVertexArray(self, array:int) -> None: ... + def glBlendColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glBlendEquation(self, mode:int) -> None: ... + def glBlendEquationSeparate(self, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendFunc(self, sfactor:int, dfactor:int) -> None: ... + def glBlendFuncSeparate(self, sfactorRGB:int, dfactorRGB:int, sfactorAlpha:int, dfactorAlpha:int) -> None: ... + def glBlitFramebuffer(self, srcX0:int, srcY0:int, srcX1:int, srcY1:int, dstX0:int, dstY0:int, dstX1:int, dstY1:int, mask:int, filter:int) -> None: ... + def glCallList(self, list:int) -> None: ... + def glCallLists(self, n:int, type:int, lists:int) -> None: ... + def glCheckFramebufferStatus(self, target:int) -> int: ... + def glClampColor(self, target:int, clamp:int) -> None: ... + def glClear(self, mask:int) -> None: ... + def glClearAccum(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearBufferfi(self, buffer:int, drawbuffer:int, depth:float, stencil:int) -> None: ... + def glClearBufferfv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferuiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearDepth(self, depth:float) -> None: ... + def glClearIndex(self, c:float) -> None: ... + def glClearStencil(self, s:int) -> None: ... + def glClientActiveTexture(self, texture:int) -> None: ... + def glClipPlane(self, plane:int, equation:typing.Sequence) -> None: ... + def glColor3b(self, red:int, green:int, blue:int) -> None: ... + def glColor3bv(self, v:bytes) -> None: ... + def glColor3d(self, red:float, green:float, blue:float) -> None: ... + def glColor3dv(self, v:typing.Sequence) -> None: ... + def glColor3f(self, red:float, green:float, blue:float) -> None: ... + def glColor3fv(self, v:typing.Sequence) -> None: ... + def glColor3i(self, red:int, green:int, blue:int) -> None: ... + def glColor3iv(self, v:typing.Sequence) -> None: ... + def glColor3s(self, red:int, green:int, blue:int) -> None: ... + def glColor3sv(self, v:typing.Sequence) -> None: ... + def glColor3ub(self, red:int, green:int, blue:int) -> None: ... + def glColor3ubv(self, v:bytes) -> None: ... + def glColor3ui(self, red:int, green:int, blue:int) -> None: ... + def glColor3uiv(self, v:typing.Sequence) -> None: ... + def glColor3us(self, red:int, green:int, blue:int) -> None: ... + def glColor3usv(self, v:typing.Sequence) -> None: ... + def glColor4b(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4bv(self, v:bytes) -> None: ... + def glColor4d(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4dv(self, v:typing.Sequence) -> None: ... + def glColor4f(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4fv(self, v:typing.Sequence) -> None: ... + def glColor4i(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4iv(self, v:typing.Sequence) -> None: ... + def glColor4s(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4sv(self, v:typing.Sequence) -> None: ... + def glColor4ub(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4ubv(self, v:bytes) -> None: ... + def glColor4ui(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4uiv(self, v:typing.Sequence) -> None: ... + def glColor4us(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4usv(self, v:typing.Sequence) -> None: ... + def glColorMask(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColorMaski(self, index:int, r:int, g:int, b:int, a:int) -> None: ... + def glColorMaterial(self, face:int, mode:int) -> None: ... + def glColorPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glColorSubTable(self, target:int, start:int, count:int, format:int, type:int, data:int) -> None: ... + def glColorTable(self, target:int, internalformat:int, width:int, format:int, type:int, table:int) -> None: ... + def glColorTableParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glColorTableParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glCompileShader(self, shader:int) -> None: ... + def glCompressedTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, imageSize:int, data:int) -> None: ... + def glConvolutionFilter1D(self, target:int, internalformat:int, width:int, format:int, type:int, image:int) -> None: ... + def glConvolutionFilter2D(self, target:int, internalformat:int, width:int, height:int, format:int, type:int, image:int) -> None: ... + def glConvolutionParameterf(self, target:int, pname:int, params:float) -> None: ... + def glConvolutionParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glConvolutionParameteri(self, target:int, pname:int, params:int) -> None: ... + def glConvolutionParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glCopyColorSubTable(self, target:int, start:int, x:int, y:int, width:int) -> None: ... + def glCopyColorTable(self, target:int, internalformat:int, x:int, y:int, width:int) -> None: ... + def glCopyConvolutionFilter1D(self, target:int, internalformat:int, x:int, y:int, width:int) -> None: ... + def glCopyConvolutionFilter2D(self, target:int, internalformat:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyPixels(self, x:int, y:int, width:int, height:int, type:int) -> None: ... + def glCopyTexImage1D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, border:int) -> None: ... + def glCopyTexImage2D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, height:int, border:int) -> None: ... + def glCopyTexSubImage1D(self, target:int, level:int, xoffset:int, x:int, y:int, width:int) -> None: ... + def glCopyTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCreateProgram(self) -> int: ... + def glCreateShader(self, type:int) -> int: ... + def glCullFace(self, mode:int) -> None: ... + def glDeleteBuffers(self, n:int, buffers:typing.Sequence) -> None: ... + def glDeleteFramebuffers(self, n:int, framebuffers:typing.Sequence) -> None: ... + def glDeleteLists(self, list:int, range:int) -> None: ... + def glDeleteProgram(self, program:int) -> None: ... + def glDeleteQueries(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteRenderbuffers(self, n:int, renderbuffers:typing.Sequence) -> None: ... + def glDeleteShader(self, shader:int) -> None: ... + def glDeleteTextures(self, n:int, textures:typing.Sequence) -> None: ... + def glDeleteVertexArrays(self, n:int, arrays:typing.Sequence) -> None: ... + def glDepthFunc(self, func:int) -> None: ... + def glDepthMask(self, flag:int) -> None: ... + def glDepthRange(self, nearVal:float, farVal:float) -> None: ... + def glDetachShader(self, program:int, shader:int) -> None: ... + def glDisable(self, cap:int) -> None: ... + def glDisableClientState(self, array:int) -> None: ... + def glDisableVertexAttribArray(self, index:int) -> None: ... + def glDisablei(self, target:int, index:int) -> None: ... + def glDrawArrays(self, mode:int, first:int, count:int) -> None: ... + def glDrawBuffer(self, mode:int) -> None: ... + def glDrawBuffers(self, n:int, bufs:typing.Sequence) -> None: ... + def glDrawElements(self, mode:int, count:int, type:int, indices:int) -> None: ... + def glDrawPixels(self, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glDrawRangeElements(self, mode:int, start:int, end:int, count:int, type:int, indices:int) -> None: ... + def glEdgeFlag(self, flag:int) -> None: ... + def glEdgeFlagPointer(self, stride:int, pointer:int) -> None: ... + def glEnable(self, cap:int) -> None: ... + def glEnableClientState(self, array:int) -> None: ... + def glEnableVertexAttribArray(self, index:int) -> None: ... + def glEnablei(self, target:int, index:int) -> None: ... + def glEnd(self) -> None: ... + def glEndConditionalRender(self) -> None: ... + def glEndList(self) -> None: ... + def glEndQuery(self, target:int) -> None: ... + def glEndTransformFeedback(self) -> None: ... + def glEvalCoord1d(self, u:float) -> None: ... + def glEvalCoord1dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord1f(self, u:float) -> None: ... + def glEvalCoord1fv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2d(self, u:float, v:float) -> None: ... + def glEvalCoord2dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2f(self, u:float, v:float) -> None: ... + def glEvalCoord2fv(self, u:typing.Sequence) -> None: ... + def glEvalMesh1(self, mode:int, i1:int, i2:int) -> None: ... + def glEvalMesh2(self, mode:int, i1:int, i2:int, j1:int, j2:int) -> None: ... + def glEvalPoint1(self, i:int) -> None: ... + def glEvalPoint2(self, i:int, j:int) -> None: ... + def glFinish(self) -> None: ... + def glFlush(self) -> None: ... + def glFogCoordPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glFogCoordd(self, coord:float) -> None: ... + def glFogCoorddv(self, coord:typing.Sequence) -> None: ... + def glFogCoordf(self, coord:float) -> None: ... + def glFogCoordfv(self, coord:typing.Sequence) -> None: ... + def glFogf(self, pname:int, param:float) -> None: ... + def glFogfv(self, pname:int, params:typing.Sequence) -> None: ... + def glFogi(self, pname:int, param:int) -> None: ... + def glFogiv(self, pname:int, params:typing.Sequence) -> None: ... + def glFramebufferRenderbuffer(self, target:int, attachment:int, renderbuffertarget:int, renderbuffer:int) -> None: ... + def glFramebufferTexture1D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture2D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture3D(self, target:int, attachment:int, textarget:int, texture:int, level:int, zoffset:int) -> None: ... + def glFramebufferTextureLayer(self, target:int, attachment:int, texture:int, level:int, layer:int) -> None: ... + def glFrontFace(self, mode:int) -> None: ... + def glFrustum(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glGenLists(self, range:int) -> int: ... + def glGenerateMipmap(self, target:int) -> None: ... + def glGetAttribLocation(self, program:int, name:bytes) -> int: ... + def glGetError(self) -> int: ... + def glGetFragDataLocation(self, program:int, name:bytes) -> int: ... + def glGetString(self, name:int) -> bytes: ... + def glGetStringi(self, name:int, index:int) -> bytes: ... + def glGetUniformLocation(self, program:int, name:bytes) -> int: ... + def glHint(self, target:int, mode:int) -> None: ... + def glHistogram(self, target:int, width:int, internalformat:int, sink:int) -> None: ... + def glIndexMask(self, mask:int) -> None: ... + def glIndexPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glIndexd(self, c:float) -> None: ... + def glIndexdv(self, c:typing.Sequence) -> None: ... + def glIndexf(self, c:float) -> None: ... + def glIndexfv(self, c:typing.Sequence) -> None: ... + def glIndexi(self, c:int) -> None: ... + def glIndexiv(self, c:typing.Sequence) -> None: ... + def glIndexs(self, c:int) -> None: ... + def glIndexsv(self, c:typing.Sequence) -> None: ... + def glIndexub(self, c:int) -> None: ... + def glIndexubv(self, c:bytes) -> None: ... + def glInitNames(self) -> None: ... + def glInterleavedArrays(self, format:int, stride:int, pointer:int) -> None: ... + def glIsBuffer(self, buffer:int) -> int: ... + def glIsEnabled(self, cap:int) -> int: ... + def glIsEnabledi(self, target:int, index:int) -> int: ... + def glIsFramebuffer(self, framebuffer:int) -> int: ... + def glIsList(self, list:int) -> int: ... + def glIsProgram(self, program:int) -> int: ... + def glIsQuery(self, id:int) -> int: ... + def glIsRenderbuffer(self, renderbuffer:int) -> int: ... + def glIsShader(self, shader:int) -> int: ... + def glIsTexture(self, texture:int) -> int: ... + def glIsVertexArray(self, array:int) -> int: ... + def glLightModelf(self, pname:int, param:float) -> None: ... + def glLightModelfv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightModeli(self, pname:int, param:int) -> None: ... + def glLightModeliv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightf(self, light:int, pname:int, param:float) -> None: ... + def glLightfv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLighti(self, light:int, pname:int, param:int) -> None: ... + def glLightiv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLineStipple(self, factor:int, pattern:int) -> None: ... + def glLineWidth(self, width:float) -> None: ... + def glLinkProgram(self, program:int) -> None: ... + def glListBase(self, base:int) -> None: ... + def glLoadIdentity(self) -> None: ... + def glLoadMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadMatrixf(self, m:typing.Sequence) -> None: ... + def glLoadName(self, name:int) -> None: ... + def glLoadTransposeMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadTransposeMatrixf(self, m:typing.Sequence) -> None: ... + def glLogicOp(self, opcode:int) -> None: ... + def glMap1d(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap1f(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap2d(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMap2f(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMapBuffer(self, target:int, access:int) -> int: ... + def glMapGrid1d(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid1f(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid2d(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMapGrid2f(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMaterialf(self, face:int, pname:int, param:float) -> None: ... + def glMaterialfv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMateriali(self, face:int, pname:int, param:int) -> None: ... + def glMaterialiv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMatrixMode(self, mode:int) -> None: ... + def glMinmax(self, target:int, internalformat:int, sink:int) -> None: ... + def glMultMatrixd(self, m:typing.Sequence) -> None: ... + def glMultMatrixf(self, m:typing.Sequence) -> None: ... + def glMultTransposeMatrixd(self, m:typing.Sequence) -> None: ... + def glMultTransposeMatrixf(self, m:typing.Sequence) -> None: ... + def glMultiDrawArrays(self, mode:int, first:typing.Sequence, count:typing.Sequence, drawcount:int) -> None: ... + def glMultiTexCoord1d(self, target:int, s:float) -> None: ... + def glMultiTexCoord1dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1f(self, target:int, s:float) -> None: ... + def glMultiTexCoord1fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1i(self, target:int, s:int) -> None: ... + def glMultiTexCoord1iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1s(self, target:int, s:int) -> None: ... + def glMultiTexCoord1sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2d(self, target:int, s:float, t:float) -> None: ... + def glMultiTexCoord2dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2f(self, target:int, s:float, t:float) -> None: ... + def glMultiTexCoord2fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2i(self, target:int, s:int, t:int) -> None: ... + def glMultiTexCoord2iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2s(self, target:int, s:int, t:int) -> None: ... + def glMultiTexCoord2sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3d(self, target:int, s:float, t:float, r:float) -> None: ... + def glMultiTexCoord3dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3f(self, target:int, s:float, t:float, r:float) -> None: ... + def glMultiTexCoord3fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3i(self, target:int, s:int, t:int, r:int) -> None: ... + def glMultiTexCoord3iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3s(self, target:int, s:int, t:int, r:int) -> None: ... + def glMultiTexCoord3sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4d(self, target:int, s:float, t:float, r:float, q:float) -> None: ... + def glMultiTexCoord4dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4f(self, target:int, s:float, t:float, r:float, q:float) -> None: ... + def glMultiTexCoord4fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4i(self, target:int, s:int, t:int, r:int, q:int) -> None: ... + def glMultiTexCoord4iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4s(self, target:int, s:int, t:int, r:int, q:int) -> None: ... + def glMultiTexCoord4sv(self, target:int, v:typing.Sequence) -> None: ... + def glNewList(self, list:int, mode:int) -> None: ... + def glNormal3b(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3bv(self, v:bytes) -> None: ... + def glNormal3d(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3dv(self, v:typing.Sequence) -> None: ... + def glNormal3f(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3fv(self, v:typing.Sequence) -> None: ... + def glNormal3i(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3iv(self, v:typing.Sequence) -> None: ... + def glNormal3s(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3sv(self, v:typing.Sequence) -> None: ... + def glNormalPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glOrtho(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glPassThrough(self, token:float) -> None: ... + def glPixelMapfv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapuiv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapusv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelStoref(self, pname:int, param:float) -> None: ... + def glPixelStorei(self, pname:int, param:int) -> None: ... + def glPixelTransferf(self, pname:int, param:float) -> None: ... + def glPixelTransferi(self, pname:int, param:int) -> None: ... + def glPixelZoom(self, xfactor:float, yfactor:float) -> None: ... + def glPointParameterf(self, pname:int, param:float) -> None: ... + def glPointParameterfv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointParameteri(self, pname:int, param:int) -> None: ... + def glPointParameteriv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointSize(self, size:float) -> None: ... + def glPolygonMode(self, face:int, mode:int) -> None: ... + def glPolygonOffset(self, factor:float, units:float) -> None: ... + def glPopAttrib(self) -> None: ... + def glPopClientAttrib(self) -> None: ... + def glPopMatrix(self) -> None: ... + def glPopName(self) -> None: ... + def glPrioritizeTextures(self, n:int, textures:typing.Sequence, priorities:typing.Sequence) -> None: ... + def glPushAttrib(self, mask:int) -> None: ... + def glPushClientAttrib(self, mask:int) -> None: ... + def glPushMatrix(self) -> None: ... + def glPushName(self, name:int) -> None: ... + def glRasterPos2d(self, x:float, y:float) -> None: ... + def glRasterPos2dv(self, v:typing.Sequence) -> None: ... + def glRasterPos2f(self, x:float, y:float) -> None: ... + def glRasterPos2fv(self, v:typing.Sequence) -> None: ... + def glRasterPos2i(self, x:int, y:int) -> None: ... + def glRasterPos2iv(self, v:typing.Sequence) -> None: ... + def glRasterPos2s(self, x:int, y:int) -> None: ... + def glRasterPos2sv(self, v:typing.Sequence) -> None: ... + def glRasterPos3d(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3dv(self, v:typing.Sequence) -> None: ... + def glRasterPos3f(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3fv(self, v:typing.Sequence) -> None: ... + def glRasterPos3i(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3iv(self, v:typing.Sequence) -> None: ... + def glRasterPos3s(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3sv(self, v:typing.Sequence) -> None: ... + def glRasterPos4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4dv(self, v:typing.Sequence) -> None: ... + def glRasterPos4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4fv(self, v:typing.Sequence) -> None: ... + def glRasterPos4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4iv(self, v:typing.Sequence) -> None: ... + def glRasterPos4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4sv(self, v:typing.Sequence) -> None: ... + def glReadBuffer(self, mode:int) -> None: ... + def glRectd(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectdv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRectf(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectfv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRecti(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectiv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRects(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectsv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRenderMode(self, mode:int) -> int: ... + def glRenderbufferStorage(self, target:int, internalformat:int, width:int, height:int) -> None: ... + def glRenderbufferStorageMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int) -> None: ... + def glResetHistogram(self, target:int) -> None: ... + def glResetMinmax(self, target:int) -> None: ... + def glRotated(self, angle:float, x:float, y:float, z:float) -> None: ... + def glRotatef(self, angle:float, x:float, y:float, z:float) -> None: ... + def glSampleCoverage(self, value:float, invert:int) -> None: ... + def glScaled(self, x:float, y:float, z:float) -> None: ... + def glScalef(self, x:float, y:float, z:float) -> None: ... + def glScissor(self, x:int, y:int, width:int, height:int) -> None: ... + def glSecondaryColor3b(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3bv(self, v:bytes) -> None: ... + def glSecondaryColor3d(self, red:float, green:float, blue:float) -> None: ... + def glSecondaryColor3dv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3f(self, red:float, green:float, blue:float) -> None: ... + def glSecondaryColor3fv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3i(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3iv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3s(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3sv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3ub(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3ubv(self, v:bytes) -> None: ... + def glSecondaryColor3ui(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3uiv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3us(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3usv(self, v:typing.Sequence) -> None: ... + def glSecondaryColorPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glSeparableFilter2D(self, target:int, internalformat:int, width:int, height:int, format:int, type:int, row:int, column:int) -> None: ... + def glShadeModel(self, mode:int) -> None: ... + def glStencilFunc(self, func:int, ref:int, mask:int) -> None: ... + def glStencilFuncSeparate(self, face:int, func:int, ref:int, mask:int) -> None: ... + def glStencilMask(self, mask:int) -> None: ... + def glStencilMaskSeparate(self, face:int, mask:int) -> None: ... + def glStencilOp(self, fail:int, zfail:int, zpass:int) -> None: ... + def glStencilOpSeparate(self, face:int, sfail:int, dpfail:int, dppass:int) -> None: ... + def glTexCoord1d(self, s:float) -> None: ... + def glTexCoord1dv(self, v:typing.Sequence) -> None: ... + def glTexCoord1f(self, s:float) -> None: ... + def glTexCoord1fv(self, v:typing.Sequence) -> None: ... + def glTexCoord1i(self, s:int) -> None: ... + def glTexCoord1iv(self, v:typing.Sequence) -> None: ... + def glTexCoord1s(self, s:int) -> None: ... + def glTexCoord1sv(self, v:typing.Sequence) -> None: ... + def glTexCoord2d(self, s:float, t:float) -> None: ... + def glTexCoord2dv(self, v:typing.Sequence) -> None: ... + def glTexCoord2f(self, s:float, t:float) -> None: ... + def glTexCoord2fv(self, v:typing.Sequence) -> None: ... + def glTexCoord2i(self, s:int, t:int) -> None: ... + def glTexCoord2iv(self, v:typing.Sequence) -> None: ... + def glTexCoord2s(self, s:int, t:int) -> None: ... + def glTexCoord2sv(self, v:typing.Sequence) -> None: ... + def glTexCoord3d(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3dv(self, v:typing.Sequence) -> None: ... + def glTexCoord3f(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3fv(self, v:typing.Sequence) -> None: ... + def glTexCoord3i(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3iv(self, v:typing.Sequence) -> None: ... + def glTexCoord3s(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3sv(self, v:typing.Sequence) -> None: ... + def glTexCoord4d(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4dv(self, v:typing.Sequence) -> None: ... + def glTexCoord4f(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4fv(self, v:typing.Sequence) -> None: ... + def glTexCoord4i(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4iv(self, v:typing.Sequence) -> None: ... + def glTexCoord4s(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4sv(self, v:typing.Sequence) -> None: ... + def glTexCoordPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glTexEnvf(self, target:int, pname:int, param:float) -> None: ... + def glTexEnvfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexEnvi(self, target:int, pname:int, param:int) -> None: ... + def glTexEnviv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGend(self, coord:int, pname:int, param:float) -> None: ... + def glTexGendv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGenf(self, coord:int, pname:int, param:float) -> None: ... + def glTexGenfv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGeni(self, coord:int, pname:int, param:int) -> None: ... + def glTexGeniv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexParameterIiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterIuiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterf(self, target:int, pname:int, param:float) -> None: ... + def glTexParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameteri(self, target:int, pname:int, param:int) -> None: ... + def glTexParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, pixels:int) -> None: ... + def glTranslated(self, x:float, y:float, z:float) -> None: ... + def glTranslatef(self, x:float, y:float, z:float) -> None: ... + def glUniform1f(self, location:int, v0:float) -> None: ... + def glUniform1fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1i(self, location:int, v0:int) -> None: ... + def glUniform1iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1ui(self, location:int, v0:int) -> None: ... + def glUniform1uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2f(self, location:int, v0:float, v1:float) -> None: ... + def glUniform2fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2i(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2ui(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3f(self, location:int, v0:float, v1:float, v2:float) -> None: ... + def glUniform3fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3i(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3ui(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4f(self, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glUniform4fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4i(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4ui(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUnmapBuffer(self, target:int) -> int: ... + def glUseProgram(self, program:int) -> None: ... + def glValidateProgram(self, program:int) -> None: ... + def glVertex2d(self, x:float, y:float) -> None: ... + def glVertex2dv(self, v:typing.Sequence) -> None: ... + def glVertex2f(self, x:float, y:float) -> None: ... + def glVertex2fv(self, v:typing.Sequence) -> None: ... + def glVertex2i(self, x:int, y:int) -> None: ... + def glVertex2iv(self, v:typing.Sequence) -> None: ... + def glVertex2s(self, x:int, y:int) -> None: ... + def glVertex2sv(self, v:typing.Sequence) -> None: ... + def glVertex3d(self, x:float, y:float, z:float) -> None: ... + def glVertex3dv(self, v:typing.Sequence) -> None: ... + def glVertex3f(self, x:float, y:float, z:float) -> None: ... + def glVertex3fv(self, v:typing.Sequence) -> None: ... + def glVertex3i(self, x:int, y:int, z:int) -> None: ... + def glVertex3iv(self, v:typing.Sequence) -> None: ... + def glVertex3s(self, x:int, y:int, z:int) -> None: ... + def glVertex3sv(self, v:typing.Sequence) -> None: ... + def glVertex4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4dv(self, v:typing.Sequence) -> None: ... + def glVertex4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4fv(self, v:typing.Sequence) -> None: ... + def glVertex4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4iv(self, v:typing.Sequence) -> None: ... + def glVertex4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4sv(self, v:typing.Sequence) -> None: ... + def glVertexAttrib1d(self, index:int, x:float) -> None: ... + def glVertexAttrib1dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib1f(self, index:int, x:float) -> None: ... + def glVertexAttrib1fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib1s(self, index:int, x:int) -> None: ... + def glVertexAttrib1sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2d(self, index:int, x:float, y:float) -> None: ... + def glVertexAttrib2dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2f(self, index:int, x:float, y:float) -> None: ... + def glVertexAttrib2fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2s(self, index:int, x:int, y:int) -> None: ... + def glVertexAttrib2sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3d(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttrib3dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3f(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttrib3fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3s(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttrib3sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nbv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4Niv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nsv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nub(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttrib4Nubv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4Nuiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nusv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4bv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4d(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttrib4dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4f(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttrib4fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4s(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttrib4sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4ubv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4usv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI1i(self, index:int, x:int) -> None: ... + def glVertexAttribI1iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI1ui(self, index:int, x:int) -> None: ... + def glVertexAttribI1uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI2i(self, index:int, x:int, y:int) -> None: ... + def glVertexAttribI2iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI2ui(self, index:int, x:int, y:int) -> None: ... + def glVertexAttribI2uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI3i(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttribI3iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI3ui(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttribI3uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4bv(self, index:int, v:bytes) -> None: ... + def glVertexAttribI4i(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttribI4iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4ubv(self, index:int, v:bytes) -> None: ... + def glVertexAttribI4ui(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttribI4uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4usv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribIPointer(self, index:int, size:int, type:int, stride:int, pointer:int) -> None: ... + def glVertexAttribPointer(self, index:int, size:int, type:int, normalized:int, stride:int, pointer:int) -> None: ... + def glVertexPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glViewport(self, x:int, y:int, width:int, height:int) -> None: ... + def glWindowPos2d(self, x:float, y:float) -> None: ... + def glWindowPos2dv(self, v:typing.Sequence) -> None: ... + def glWindowPos2f(self, x:float, y:float) -> None: ... + def glWindowPos2fv(self, v:typing.Sequence) -> None: ... + def glWindowPos2i(self, x:int, y:int) -> None: ... + def glWindowPos2iv(self, v:typing.Sequence) -> None: ... + def glWindowPos2s(self, x:int, y:int) -> None: ... + def glWindowPos2sv(self, v:typing.Sequence) -> None: ... + def glWindowPos3d(self, x:float, y:float, z:float) -> None: ... + def glWindowPos3dv(self, v:typing.Sequence) -> None: ... + def glWindowPos3f(self, x:float, y:float, z:float) -> None: ... + def glWindowPos3fv(self, v:typing.Sequence) -> None: ... + def glWindowPos3i(self, x:int, y:int, z:int) -> None: ... + def glWindowPos3iv(self, v:typing.Sequence) -> None: ... + def glWindowPos3s(self, x:int, y:int, z:int) -> None: ... + def glWindowPos3sv(self, v:typing.Sequence) -> None: ... + def initializeOpenGLFunctions(self) -> bool: ... + + +class QOpenGLFunctions_3_1(PySide2.QtGui.QAbstractOpenGLFunctions): + + def __init__(self) -> None: ... + + def glActiveTexture(self, texture:int) -> None: ... + def glAttachShader(self, program:int, shader:int) -> None: ... + def glBeginConditionalRender(self, id:int, mode:int) -> None: ... + def glBeginQuery(self, target:int, id:int) -> None: ... + def glBeginTransformFeedback(self, primitiveMode:int) -> None: ... + def glBindAttribLocation(self, program:int, index:int, name:bytes) -> None: ... + def glBindBuffer(self, target:int, buffer:int) -> None: ... + def glBindBufferBase(self, target:int, index:int, buffer:int) -> None: ... + def glBindFragDataLocation(self, program:int, color:int, name:bytes) -> None: ... + def glBindFramebuffer(self, target:int, framebuffer:int) -> None: ... + def glBindRenderbuffer(self, target:int, renderbuffer:int) -> None: ... + def glBindTexture(self, target:int, texture:int) -> None: ... + def glBindVertexArray(self, array:int) -> None: ... + def glBlendColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glBlendEquation(self, mode:int) -> None: ... + def glBlendEquationSeparate(self, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendFunc(self, sfactor:int, dfactor:int) -> None: ... + def glBlendFuncSeparate(self, sfactorRGB:int, dfactorRGB:int, sfactorAlpha:int, dfactorAlpha:int) -> None: ... + def glBlitFramebuffer(self, srcX0:int, srcY0:int, srcX1:int, srcY1:int, dstX0:int, dstY0:int, dstX1:int, dstY1:int, mask:int, filter:int) -> None: ... + def glCheckFramebufferStatus(self, target:int) -> int: ... + def glClampColor(self, target:int, clamp:int) -> None: ... + def glClear(self, mask:int) -> None: ... + def glClearBufferfi(self, buffer:int, drawbuffer:int, depth:float, stencil:int) -> None: ... + def glClearBufferfv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferuiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearDepth(self, depth:float) -> None: ... + def glClearStencil(self, s:int) -> None: ... + def glColorMask(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColorMaski(self, index:int, r:int, g:int, b:int, a:int) -> None: ... + def glCompileShader(self, shader:int) -> None: ... + def glCompressedTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, imageSize:int, data:int) -> None: ... + def glCopyTexImage1D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, border:int) -> None: ... + def glCopyTexImage2D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, height:int, border:int) -> None: ... + def glCopyTexSubImage1D(self, target:int, level:int, xoffset:int, x:int, y:int, width:int) -> None: ... + def glCopyTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCreateProgram(self) -> int: ... + def glCreateShader(self, type:int) -> int: ... + def glCullFace(self, mode:int) -> None: ... + def glDeleteBuffers(self, n:int, buffers:typing.Sequence) -> None: ... + def glDeleteFramebuffers(self, n:int, framebuffers:typing.Sequence) -> None: ... + def glDeleteProgram(self, program:int) -> None: ... + def glDeleteQueries(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteRenderbuffers(self, n:int, renderbuffers:typing.Sequence) -> None: ... + def glDeleteShader(self, shader:int) -> None: ... + def glDeleteTextures(self, n:int, textures:typing.Sequence) -> None: ... + def glDeleteVertexArrays(self, n:int, arrays:typing.Sequence) -> None: ... + def glDepthFunc(self, func:int) -> None: ... + def glDepthMask(self, flag:int) -> None: ... + def glDepthRange(self, nearVal:float, farVal:float) -> None: ... + def glDetachShader(self, program:int, shader:int) -> None: ... + def glDisable(self, cap:int) -> None: ... + def glDisableVertexAttribArray(self, index:int) -> None: ... + def glDisablei(self, target:int, index:int) -> None: ... + def glDrawArrays(self, mode:int, first:int, count:int) -> None: ... + def glDrawArraysInstanced(self, mode:int, first:int, count:int, instancecount:int) -> None: ... + def glDrawBuffer(self, mode:int) -> None: ... + def glDrawBuffers(self, n:int, bufs:typing.Sequence) -> None: ... + def glDrawElements(self, mode:int, count:int, type:int, indices:int) -> None: ... + def glDrawElementsInstanced(self, mode:int, count:int, type:int, indices:int, instancecount:int) -> None: ... + def glDrawRangeElements(self, mode:int, start:int, end:int, count:int, type:int, indices:int) -> None: ... + def glEnable(self, cap:int) -> None: ... + def glEnableVertexAttribArray(self, index:int) -> None: ... + def glEnablei(self, target:int, index:int) -> None: ... + def glEndConditionalRender(self) -> None: ... + def glEndQuery(self, target:int) -> None: ... + def glEndTransformFeedback(self) -> None: ... + def glFinish(self) -> None: ... + def glFlush(self) -> None: ... + def glFramebufferRenderbuffer(self, target:int, attachment:int, renderbuffertarget:int, renderbuffer:int) -> None: ... + def glFramebufferTexture1D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture2D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture3D(self, target:int, attachment:int, textarget:int, texture:int, level:int, zoffset:int) -> None: ... + def glFramebufferTextureLayer(self, target:int, attachment:int, texture:int, level:int, layer:int) -> None: ... + def glFrontFace(self, mode:int) -> None: ... + def glGenerateMipmap(self, target:int) -> None: ... + def glGetAttribLocation(self, program:int, name:bytes) -> int: ... + def glGetError(self) -> int: ... + def glGetFragDataLocation(self, program:int, name:bytes) -> int: ... + def glGetString(self, name:int) -> bytes: ... + def glGetStringi(self, name:int, index:int) -> bytes: ... + def glGetUniformBlockIndex(self, program:int, uniformBlockName:bytes) -> int: ... + def glGetUniformLocation(self, program:int, name:bytes) -> int: ... + def glHint(self, target:int, mode:int) -> None: ... + def glIndexub(self, c:int) -> None: ... + def glIndexubv(self, c:bytes) -> None: ... + def glIsBuffer(self, buffer:int) -> int: ... + def glIsEnabled(self, cap:int) -> int: ... + def glIsEnabledi(self, target:int, index:int) -> int: ... + def glIsFramebuffer(self, framebuffer:int) -> int: ... + def glIsProgram(self, program:int) -> int: ... + def glIsQuery(self, id:int) -> int: ... + def glIsRenderbuffer(self, renderbuffer:int) -> int: ... + def glIsShader(self, shader:int) -> int: ... + def glIsTexture(self, texture:int) -> int: ... + def glIsVertexArray(self, array:int) -> int: ... + def glLineWidth(self, width:float) -> None: ... + def glLinkProgram(self, program:int) -> None: ... + def glLogicOp(self, opcode:int) -> None: ... + def glMapBuffer(self, target:int, access:int) -> int: ... + def glMultiDrawArrays(self, mode:int, first:typing.Sequence, count:typing.Sequence, drawcount:int) -> None: ... + def glPixelStoref(self, pname:int, param:float) -> None: ... + def glPixelStorei(self, pname:int, param:int) -> None: ... + def glPointParameterf(self, pname:int, param:float) -> None: ... + def glPointParameterfv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointParameteri(self, pname:int, param:int) -> None: ... + def glPointParameteriv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointSize(self, size:float) -> None: ... + def glPolygonMode(self, face:int, mode:int) -> None: ... + def glPolygonOffset(self, factor:float, units:float) -> None: ... + def glPrimitiveRestartIndex(self, index:int) -> None: ... + def glReadBuffer(self, mode:int) -> None: ... + def glRenderbufferStorage(self, target:int, internalformat:int, width:int, height:int) -> None: ... + def glRenderbufferStorageMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int) -> None: ... + def glSampleCoverage(self, value:float, invert:int) -> None: ... + def glScissor(self, x:int, y:int, width:int, height:int) -> None: ... + def glStencilFunc(self, func:int, ref:int, mask:int) -> None: ... + def glStencilFuncSeparate(self, face:int, func:int, ref:int, mask:int) -> None: ... + def glStencilMask(self, mask:int) -> None: ... + def glStencilMaskSeparate(self, face:int, mask:int) -> None: ... + def glStencilOp(self, fail:int, zfail:int, zpass:int) -> None: ... + def glStencilOpSeparate(self, face:int, sfail:int, dpfail:int, dppass:int) -> None: ... + def glTexBuffer(self, target:int, internalformat:int, buffer:int) -> None: ... + def glTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexParameterIiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterIuiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterf(self, target:int, pname:int, param:float) -> None: ... + def glTexParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameteri(self, target:int, pname:int, param:int) -> None: ... + def glTexParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, pixels:int) -> None: ... + def glUniform1f(self, location:int, v0:float) -> None: ... + def glUniform1fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1i(self, location:int, v0:int) -> None: ... + def glUniform1iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1ui(self, location:int, v0:int) -> None: ... + def glUniform1uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2f(self, location:int, v0:float, v1:float) -> None: ... + def glUniform2fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2i(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2ui(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3f(self, location:int, v0:float, v1:float, v2:float) -> None: ... + def glUniform3fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3i(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3ui(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4f(self, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glUniform4fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4i(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4ui(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniformBlockBinding(self, program:int, uniformBlockIndex:int, uniformBlockBinding:int) -> None: ... + def glUniformMatrix2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUnmapBuffer(self, target:int) -> int: ... + def glUseProgram(self, program:int) -> None: ... + def glValidateProgram(self, program:int) -> None: ... + def glVertexAttribIPointer(self, index:int, size:int, type:int, stride:int, pointer:int) -> None: ... + def glVertexAttribPointer(self, index:int, size:int, type:int, normalized:int, stride:int, pointer:int) -> None: ... + def glViewport(self, x:int, y:int, width:int, height:int) -> None: ... + def initializeOpenGLFunctions(self) -> bool: ... + + +class QOpenGLFunctions_3_2_Compatibility(PySide2.QtGui.QAbstractOpenGLFunctions): + + def __init__(self) -> None: ... + + def glAccum(self, op:int, value:float) -> None: ... + def glActiveTexture(self, texture:int) -> None: ... + def glAlphaFunc(self, func:int, ref:float) -> None: ... + def glArrayElement(self, i:int) -> None: ... + def glAttachShader(self, program:int, shader:int) -> None: ... + def glBegin(self, mode:int) -> None: ... + def glBeginConditionalRender(self, id:int, mode:int) -> None: ... + def glBeginQuery(self, target:int, id:int) -> None: ... + def glBeginTransformFeedback(self, primitiveMode:int) -> None: ... + def glBindAttribLocation(self, program:int, index:int, name:bytes) -> None: ... + def glBindBuffer(self, target:int, buffer:int) -> None: ... + def glBindBufferBase(self, target:int, index:int, buffer:int) -> None: ... + def glBindFragDataLocation(self, program:int, color:int, name:bytes) -> None: ... + def glBindFramebuffer(self, target:int, framebuffer:int) -> None: ... + def glBindRenderbuffer(self, target:int, renderbuffer:int) -> None: ... + def glBindTexture(self, target:int, texture:int) -> None: ... + def glBindVertexArray(self, array:int) -> None: ... + def glBlendColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glBlendEquation(self, mode:int) -> None: ... + def glBlendEquationSeparate(self, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendFunc(self, sfactor:int, dfactor:int) -> None: ... + def glBlendFuncSeparate(self, sfactorRGB:int, dfactorRGB:int, sfactorAlpha:int, dfactorAlpha:int) -> None: ... + def glBlitFramebuffer(self, srcX0:int, srcY0:int, srcX1:int, srcY1:int, dstX0:int, dstY0:int, dstX1:int, dstY1:int, mask:int, filter:int) -> None: ... + def glCallList(self, list:int) -> None: ... + def glCallLists(self, n:int, type:int, lists:int) -> None: ... + def glCheckFramebufferStatus(self, target:int) -> int: ... + def glClampColor(self, target:int, clamp:int) -> None: ... + def glClear(self, mask:int) -> None: ... + def glClearAccum(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearBufferfi(self, buffer:int, drawbuffer:int, depth:float, stencil:int) -> None: ... + def glClearBufferfv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferuiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearDepth(self, depth:float) -> None: ... + def glClearIndex(self, c:float) -> None: ... + def glClearStencil(self, s:int) -> None: ... + def glClientActiveTexture(self, texture:int) -> None: ... + def glClipPlane(self, plane:int, equation:typing.Sequence) -> None: ... + def glColor3b(self, red:int, green:int, blue:int) -> None: ... + def glColor3bv(self, v:bytes) -> None: ... + def glColor3d(self, red:float, green:float, blue:float) -> None: ... + def glColor3dv(self, v:typing.Sequence) -> None: ... + def glColor3f(self, red:float, green:float, blue:float) -> None: ... + def glColor3fv(self, v:typing.Sequence) -> None: ... + def glColor3i(self, red:int, green:int, blue:int) -> None: ... + def glColor3iv(self, v:typing.Sequence) -> None: ... + def glColor3s(self, red:int, green:int, blue:int) -> None: ... + def glColor3sv(self, v:typing.Sequence) -> None: ... + def glColor3ub(self, red:int, green:int, blue:int) -> None: ... + def glColor3ubv(self, v:bytes) -> None: ... + def glColor3ui(self, red:int, green:int, blue:int) -> None: ... + def glColor3uiv(self, v:typing.Sequence) -> None: ... + def glColor3us(self, red:int, green:int, blue:int) -> None: ... + def glColor3usv(self, v:typing.Sequence) -> None: ... + def glColor4b(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4bv(self, v:bytes) -> None: ... + def glColor4d(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4dv(self, v:typing.Sequence) -> None: ... + def glColor4f(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4fv(self, v:typing.Sequence) -> None: ... + def glColor4i(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4iv(self, v:typing.Sequence) -> None: ... + def glColor4s(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4sv(self, v:typing.Sequence) -> None: ... + def glColor4ub(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4ubv(self, v:bytes) -> None: ... + def glColor4ui(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4uiv(self, v:typing.Sequence) -> None: ... + def glColor4us(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4usv(self, v:typing.Sequence) -> None: ... + def glColorMask(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColorMaski(self, index:int, r:int, g:int, b:int, a:int) -> None: ... + def glColorMaterial(self, face:int, mode:int) -> None: ... + def glColorPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glColorSubTable(self, target:int, start:int, count:int, format:int, type:int, data:int) -> None: ... + def glColorTable(self, target:int, internalformat:int, width:int, format:int, type:int, table:int) -> None: ... + def glColorTableParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glColorTableParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glCompileShader(self, shader:int) -> None: ... + def glCompressedTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, imageSize:int, data:int) -> None: ... + def glConvolutionFilter1D(self, target:int, internalformat:int, width:int, format:int, type:int, image:int) -> None: ... + def glConvolutionFilter2D(self, target:int, internalformat:int, width:int, height:int, format:int, type:int, image:int) -> None: ... + def glConvolutionParameterf(self, target:int, pname:int, params:float) -> None: ... + def glConvolutionParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glConvolutionParameteri(self, target:int, pname:int, params:int) -> None: ... + def glConvolutionParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glCopyColorSubTable(self, target:int, start:int, x:int, y:int, width:int) -> None: ... + def glCopyColorTable(self, target:int, internalformat:int, x:int, y:int, width:int) -> None: ... + def glCopyConvolutionFilter1D(self, target:int, internalformat:int, x:int, y:int, width:int) -> None: ... + def glCopyConvolutionFilter2D(self, target:int, internalformat:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyPixels(self, x:int, y:int, width:int, height:int, type:int) -> None: ... + def glCopyTexImage1D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, border:int) -> None: ... + def glCopyTexImage2D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, height:int, border:int) -> None: ... + def glCopyTexSubImage1D(self, target:int, level:int, xoffset:int, x:int, y:int, width:int) -> None: ... + def glCopyTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCreateProgram(self) -> int: ... + def glCreateShader(self, type:int) -> int: ... + def glCullFace(self, mode:int) -> None: ... + def glDeleteBuffers(self, n:int, buffers:typing.Sequence) -> None: ... + def glDeleteFramebuffers(self, n:int, framebuffers:typing.Sequence) -> None: ... + def glDeleteLists(self, list:int, range:int) -> None: ... + def glDeleteProgram(self, program:int) -> None: ... + def glDeleteQueries(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteRenderbuffers(self, n:int, renderbuffers:typing.Sequence) -> None: ... + def glDeleteShader(self, shader:int) -> None: ... + def glDeleteTextures(self, n:int, textures:typing.Sequence) -> None: ... + def glDeleteVertexArrays(self, n:int, arrays:typing.Sequence) -> None: ... + def glDepthFunc(self, func:int) -> None: ... + def glDepthMask(self, flag:int) -> None: ... + def glDepthRange(self, nearVal:float, farVal:float) -> None: ... + def glDetachShader(self, program:int, shader:int) -> None: ... + def glDisable(self, cap:int) -> None: ... + def glDisableClientState(self, array:int) -> None: ... + def glDisableVertexAttribArray(self, index:int) -> None: ... + def glDisablei(self, target:int, index:int) -> None: ... + def glDrawArrays(self, mode:int, first:int, count:int) -> None: ... + def glDrawArraysInstanced(self, mode:int, first:int, count:int, instancecount:int) -> None: ... + def glDrawBuffer(self, mode:int) -> None: ... + def glDrawBuffers(self, n:int, bufs:typing.Sequence) -> None: ... + def glDrawElements(self, mode:int, count:int, type:int, indices:int) -> None: ... + def glDrawElementsBaseVertex(self, mode:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glDrawElementsInstanced(self, mode:int, count:int, type:int, indices:int, instancecount:int) -> None: ... + def glDrawElementsInstancedBaseVertex(self, mode:int, count:int, type:int, indices:int, instancecount:int, basevertex:int) -> None: ... + def glDrawPixels(self, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glDrawRangeElements(self, mode:int, start:int, end:int, count:int, type:int, indices:int) -> None: ... + def glDrawRangeElementsBaseVertex(self, mode:int, start:int, end:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glEdgeFlag(self, flag:int) -> None: ... + def glEdgeFlagPointer(self, stride:int, pointer:int) -> None: ... + def glEnable(self, cap:int) -> None: ... + def glEnableClientState(self, array:int) -> None: ... + def glEnableVertexAttribArray(self, index:int) -> None: ... + def glEnablei(self, target:int, index:int) -> None: ... + def glEnd(self) -> None: ... + def glEndConditionalRender(self) -> None: ... + def glEndList(self) -> None: ... + def glEndQuery(self, target:int) -> None: ... + def glEndTransformFeedback(self) -> None: ... + def glEvalCoord1d(self, u:float) -> None: ... + def glEvalCoord1dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord1f(self, u:float) -> None: ... + def glEvalCoord1fv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2d(self, u:float, v:float) -> None: ... + def glEvalCoord2dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2f(self, u:float, v:float) -> None: ... + def glEvalCoord2fv(self, u:typing.Sequence) -> None: ... + def glEvalMesh1(self, mode:int, i1:int, i2:int) -> None: ... + def glEvalMesh2(self, mode:int, i1:int, i2:int, j1:int, j2:int) -> None: ... + def glEvalPoint1(self, i:int) -> None: ... + def glEvalPoint2(self, i:int, j:int) -> None: ... + def glFinish(self) -> None: ... + def glFlush(self) -> None: ... + def glFogCoordPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glFogCoordd(self, coord:float) -> None: ... + def glFogCoorddv(self, coord:typing.Sequence) -> None: ... + def glFogCoordf(self, coord:float) -> None: ... + def glFogCoordfv(self, coord:typing.Sequence) -> None: ... + def glFogf(self, pname:int, param:float) -> None: ... + def glFogfv(self, pname:int, params:typing.Sequence) -> None: ... + def glFogi(self, pname:int, param:int) -> None: ... + def glFogiv(self, pname:int, params:typing.Sequence) -> None: ... + def glFramebufferRenderbuffer(self, target:int, attachment:int, renderbuffertarget:int, renderbuffer:int) -> None: ... + def glFramebufferTexture(self, target:int, attachment:int, texture:int, level:int) -> None: ... + def glFramebufferTexture1D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture2D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture3D(self, target:int, attachment:int, textarget:int, texture:int, level:int, zoffset:int) -> None: ... + def glFramebufferTextureLayer(self, target:int, attachment:int, texture:int, level:int, layer:int) -> None: ... + def glFrontFace(self, mode:int) -> None: ... + def glFrustum(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glGenLists(self, range:int) -> int: ... + def glGenerateMipmap(self, target:int) -> None: ... + def glGetAttribLocation(self, program:int, name:bytes) -> int: ... + def glGetError(self) -> int: ... + def glGetFragDataLocation(self, program:int, name:bytes) -> int: ... + def glGetString(self, name:int) -> bytes: ... + def glGetStringi(self, name:int, index:int) -> bytes: ... + def glGetUniformBlockIndex(self, program:int, uniformBlockName:bytes) -> int: ... + def glGetUniformLocation(self, program:int, name:bytes) -> int: ... + def glHint(self, target:int, mode:int) -> None: ... + def glHistogram(self, target:int, width:int, internalformat:int, sink:int) -> None: ... + def glIndexMask(self, mask:int) -> None: ... + def glIndexPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glIndexd(self, c:float) -> None: ... + def glIndexdv(self, c:typing.Sequence) -> None: ... + def glIndexf(self, c:float) -> None: ... + def glIndexfv(self, c:typing.Sequence) -> None: ... + def glIndexi(self, c:int) -> None: ... + def glIndexiv(self, c:typing.Sequence) -> None: ... + def glIndexs(self, c:int) -> None: ... + def glIndexsv(self, c:typing.Sequence) -> None: ... + def glIndexub(self, c:int) -> None: ... + def glIndexubv(self, c:bytes) -> None: ... + def glInitNames(self) -> None: ... + def glInterleavedArrays(self, format:int, stride:int, pointer:int) -> None: ... + def glIsBuffer(self, buffer:int) -> int: ... + def glIsEnabled(self, cap:int) -> int: ... + def glIsEnabledi(self, target:int, index:int) -> int: ... + def glIsFramebuffer(self, framebuffer:int) -> int: ... + def glIsList(self, list:int) -> int: ... + def glIsProgram(self, program:int) -> int: ... + def glIsQuery(self, id:int) -> int: ... + def glIsRenderbuffer(self, renderbuffer:int) -> int: ... + def glIsShader(self, shader:int) -> int: ... + def glIsTexture(self, texture:int) -> int: ... + def glIsVertexArray(self, array:int) -> int: ... + def glLightModelf(self, pname:int, param:float) -> None: ... + def glLightModelfv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightModeli(self, pname:int, param:int) -> None: ... + def glLightModeliv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightf(self, light:int, pname:int, param:float) -> None: ... + def glLightfv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLighti(self, light:int, pname:int, param:int) -> None: ... + def glLightiv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLineStipple(self, factor:int, pattern:int) -> None: ... + def glLineWidth(self, width:float) -> None: ... + def glLinkProgram(self, program:int) -> None: ... + def glListBase(self, base:int) -> None: ... + def glLoadIdentity(self) -> None: ... + def glLoadMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadMatrixf(self, m:typing.Sequence) -> None: ... + def glLoadName(self, name:int) -> None: ... + def glLoadTransposeMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadTransposeMatrixf(self, m:typing.Sequence) -> None: ... + def glLogicOp(self, opcode:int) -> None: ... + def glMap1d(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap1f(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap2d(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMap2f(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMapBuffer(self, target:int, access:int) -> int: ... + def glMapGrid1d(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid1f(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid2d(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMapGrid2f(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMaterialf(self, face:int, pname:int, param:float) -> None: ... + def glMaterialfv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMateriali(self, face:int, pname:int, param:int) -> None: ... + def glMaterialiv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMatrixMode(self, mode:int) -> None: ... + def glMinmax(self, target:int, internalformat:int, sink:int) -> None: ... + def glMultMatrixd(self, m:typing.Sequence) -> None: ... + def glMultMatrixf(self, m:typing.Sequence) -> None: ... + def glMultTransposeMatrixd(self, m:typing.Sequence) -> None: ... + def glMultTransposeMatrixf(self, m:typing.Sequence) -> None: ... + def glMultiDrawArrays(self, mode:int, first:typing.Sequence, count:typing.Sequence, drawcount:int) -> None: ... + def glMultiTexCoord1d(self, target:int, s:float) -> None: ... + def glMultiTexCoord1dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1f(self, target:int, s:float) -> None: ... + def glMultiTexCoord1fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1i(self, target:int, s:int) -> None: ... + def glMultiTexCoord1iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1s(self, target:int, s:int) -> None: ... + def glMultiTexCoord1sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2d(self, target:int, s:float, t:float) -> None: ... + def glMultiTexCoord2dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2f(self, target:int, s:float, t:float) -> None: ... + def glMultiTexCoord2fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2i(self, target:int, s:int, t:int) -> None: ... + def glMultiTexCoord2iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2s(self, target:int, s:int, t:int) -> None: ... + def glMultiTexCoord2sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3d(self, target:int, s:float, t:float, r:float) -> None: ... + def glMultiTexCoord3dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3f(self, target:int, s:float, t:float, r:float) -> None: ... + def glMultiTexCoord3fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3i(self, target:int, s:int, t:int, r:int) -> None: ... + def glMultiTexCoord3iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3s(self, target:int, s:int, t:int, r:int) -> None: ... + def glMultiTexCoord3sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4d(self, target:int, s:float, t:float, r:float, q:float) -> None: ... + def glMultiTexCoord4dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4f(self, target:int, s:float, t:float, r:float, q:float) -> None: ... + def glMultiTexCoord4fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4i(self, target:int, s:int, t:int, r:int, q:int) -> None: ... + def glMultiTexCoord4iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4s(self, target:int, s:int, t:int, r:int, q:int) -> None: ... + def glMultiTexCoord4sv(self, target:int, v:typing.Sequence) -> None: ... + def glNewList(self, list:int, mode:int) -> None: ... + def glNormal3b(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3bv(self, v:bytes) -> None: ... + def glNormal3d(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3dv(self, v:typing.Sequence) -> None: ... + def glNormal3f(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3fv(self, v:typing.Sequence) -> None: ... + def glNormal3i(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3iv(self, v:typing.Sequence) -> None: ... + def glNormal3s(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3sv(self, v:typing.Sequence) -> None: ... + def glNormalPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glOrtho(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glPassThrough(self, token:float) -> None: ... + def glPixelMapfv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapuiv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapusv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelStoref(self, pname:int, param:float) -> None: ... + def glPixelStorei(self, pname:int, param:int) -> None: ... + def glPixelTransferf(self, pname:int, param:float) -> None: ... + def glPixelTransferi(self, pname:int, param:int) -> None: ... + def glPixelZoom(self, xfactor:float, yfactor:float) -> None: ... + def glPointParameterf(self, pname:int, param:float) -> None: ... + def glPointParameterfv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointParameteri(self, pname:int, param:int) -> None: ... + def glPointParameteriv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointSize(self, size:float) -> None: ... + def glPolygonMode(self, face:int, mode:int) -> None: ... + def glPolygonOffset(self, factor:float, units:float) -> None: ... + def glPopAttrib(self) -> None: ... + def glPopClientAttrib(self) -> None: ... + def glPopMatrix(self) -> None: ... + def glPopName(self) -> None: ... + def glPrimitiveRestartIndex(self, index:int) -> None: ... + def glPrioritizeTextures(self, n:int, textures:typing.Sequence, priorities:typing.Sequence) -> None: ... + def glProvokingVertex(self, mode:int) -> None: ... + def glPushAttrib(self, mask:int) -> None: ... + def glPushClientAttrib(self, mask:int) -> None: ... + def glPushMatrix(self) -> None: ... + def glPushName(self, name:int) -> None: ... + def glRasterPos2d(self, x:float, y:float) -> None: ... + def glRasterPos2dv(self, v:typing.Sequence) -> None: ... + def glRasterPos2f(self, x:float, y:float) -> None: ... + def glRasterPos2fv(self, v:typing.Sequence) -> None: ... + def glRasterPos2i(self, x:int, y:int) -> None: ... + def glRasterPos2iv(self, v:typing.Sequence) -> None: ... + def glRasterPos2s(self, x:int, y:int) -> None: ... + def glRasterPos2sv(self, v:typing.Sequence) -> None: ... + def glRasterPos3d(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3dv(self, v:typing.Sequence) -> None: ... + def glRasterPos3f(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3fv(self, v:typing.Sequence) -> None: ... + def glRasterPos3i(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3iv(self, v:typing.Sequence) -> None: ... + def glRasterPos3s(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3sv(self, v:typing.Sequence) -> None: ... + def glRasterPos4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4dv(self, v:typing.Sequence) -> None: ... + def glRasterPos4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4fv(self, v:typing.Sequence) -> None: ... + def glRasterPos4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4iv(self, v:typing.Sequence) -> None: ... + def glRasterPos4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4sv(self, v:typing.Sequence) -> None: ... + def glReadBuffer(self, mode:int) -> None: ... + def glRectd(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectdv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRectf(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectfv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRecti(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectiv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRects(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectsv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRenderMode(self, mode:int) -> int: ... + def glRenderbufferStorage(self, target:int, internalformat:int, width:int, height:int) -> None: ... + def glRenderbufferStorageMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int) -> None: ... + def glResetHistogram(self, target:int) -> None: ... + def glResetMinmax(self, target:int) -> None: ... + def glRotated(self, angle:float, x:float, y:float, z:float) -> None: ... + def glRotatef(self, angle:float, x:float, y:float, z:float) -> None: ... + def glSampleCoverage(self, value:float, invert:int) -> None: ... + def glSampleMaski(self, index:int, mask:int) -> None: ... + def glScaled(self, x:float, y:float, z:float) -> None: ... + def glScalef(self, x:float, y:float, z:float) -> None: ... + def glScissor(self, x:int, y:int, width:int, height:int) -> None: ... + def glSecondaryColor3b(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3bv(self, v:bytes) -> None: ... + def glSecondaryColor3d(self, red:float, green:float, blue:float) -> None: ... + def glSecondaryColor3dv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3f(self, red:float, green:float, blue:float) -> None: ... + def glSecondaryColor3fv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3i(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3iv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3s(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3sv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3ub(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3ubv(self, v:bytes) -> None: ... + def glSecondaryColor3ui(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3uiv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3us(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3usv(self, v:typing.Sequence) -> None: ... + def glSecondaryColorPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glSeparableFilter2D(self, target:int, internalformat:int, width:int, height:int, format:int, type:int, row:int, column:int) -> None: ... + def glShadeModel(self, mode:int) -> None: ... + def glStencilFunc(self, func:int, ref:int, mask:int) -> None: ... + def glStencilFuncSeparate(self, face:int, func:int, ref:int, mask:int) -> None: ... + def glStencilMask(self, mask:int) -> None: ... + def glStencilMaskSeparate(self, face:int, mask:int) -> None: ... + def glStencilOp(self, fail:int, zfail:int, zpass:int) -> None: ... + def glStencilOpSeparate(self, face:int, sfail:int, dpfail:int, dppass:int) -> None: ... + def glTexBuffer(self, target:int, internalformat:int, buffer:int) -> None: ... + def glTexCoord1d(self, s:float) -> None: ... + def glTexCoord1dv(self, v:typing.Sequence) -> None: ... + def glTexCoord1f(self, s:float) -> None: ... + def glTexCoord1fv(self, v:typing.Sequence) -> None: ... + def glTexCoord1i(self, s:int) -> None: ... + def glTexCoord1iv(self, v:typing.Sequence) -> None: ... + def glTexCoord1s(self, s:int) -> None: ... + def glTexCoord1sv(self, v:typing.Sequence) -> None: ... + def glTexCoord2d(self, s:float, t:float) -> None: ... + def glTexCoord2dv(self, v:typing.Sequence) -> None: ... + def glTexCoord2f(self, s:float, t:float) -> None: ... + def glTexCoord2fv(self, v:typing.Sequence) -> None: ... + def glTexCoord2i(self, s:int, t:int) -> None: ... + def glTexCoord2iv(self, v:typing.Sequence) -> None: ... + def glTexCoord2s(self, s:int, t:int) -> None: ... + def glTexCoord2sv(self, v:typing.Sequence) -> None: ... + def glTexCoord3d(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3dv(self, v:typing.Sequence) -> None: ... + def glTexCoord3f(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3fv(self, v:typing.Sequence) -> None: ... + def glTexCoord3i(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3iv(self, v:typing.Sequence) -> None: ... + def glTexCoord3s(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3sv(self, v:typing.Sequence) -> None: ... + def glTexCoord4d(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4dv(self, v:typing.Sequence) -> None: ... + def glTexCoord4f(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4fv(self, v:typing.Sequence) -> None: ... + def glTexCoord4i(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4iv(self, v:typing.Sequence) -> None: ... + def glTexCoord4s(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4sv(self, v:typing.Sequence) -> None: ... + def glTexCoordPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glTexEnvf(self, target:int, pname:int, param:float) -> None: ... + def glTexEnvfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexEnvi(self, target:int, pname:int, param:int) -> None: ... + def glTexEnviv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGend(self, coord:int, pname:int, param:float) -> None: ... + def glTexGendv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGenf(self, coord:int, pname:int, param:float) -> None: ... + def glTexGenfv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGeni(self, coord:int, pname:int, param:int) -> None: ... + def glTexGeniv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, fixedsamplelocations:int) -> None: ... + def glTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage3DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, depth:int, fixedsamplelocations:int) -> None: ... + def glTexParameterIiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterIuiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterf(self, target:int, pname:int, param:float) -> None: ... + def glTexParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameteri(self, target:int, pname:int, param:int) -> None: ... + def glTexParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, pixels:int) -> None: ... + def glTranslated(self, x:float, y:float, z:float) -> None: ... + def glTranslatef(self, x:float, y:float, z:float) -> None: ... + def glUniform1f(self, location:int, v0:float) -> None: ... + def glUniform1fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1i(self, location:int, v0:int) -> None: ... + def glUniform1iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1ui(self, location:int, v0:int) -> None: ... + def glUniform1uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2f(self, location:int, v0:float, v1:float) -> None: ... + def glUniform2fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2i(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2ui(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3f(self, location:int, v0:float, v1:float, v2:float) -> None: ... + def glUniform3fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3i(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3ui(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4f(self, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glUniform4fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4i(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4ui(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniformBlockBinding(self, program:int, uniformBlockIndex:int, uniformBlockBinding:int) -> None: ... + def glUniformMatrix2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUnmapBuffer(self, target:int) -> int: ... + def glUseProgram(self, program:int) -> None: ... + def glValidateProgram(self, program:int) -> None: ... + def glVertex2d(self, x:float, y:float) -> None: ... + def glVertex2dv(self, v:typing.Sequence) -> None: ... + def glVertex2f(self, x:float, y:float) -> None: ... + def glVertex2fv(self, v:typing.Sequence) -> None: ... + def glVertex2i(self, x:int, y:int) -> None: ... + def glVertex2iv(self, v:typing.Sequence) -> None: ... + def glVertex2s(self, x:int, y:int) -> None: ... + def glVertex2sv(self, v:typing.Sequence) -> None: ... + def glVertex3d(self, x:float, y:float, z:float) -> None: ... + def glVertex3dv(self, v:typing.Sequence) -> None: ... + def glVertex3f(self, x:float, y:float, z:float) -> None: ... + def glVertex3fv(self, v:typing.Sequence) -> None: ... + def glVertex3i(self, x:int, y:int, z:int) -> None: ... + def glVertex3iv(self, v:typing.Sequence) -> None: ... + def glVertex3s(self, x:int, y:int, z:int) -> None: ... + def glVertex3sv(self, v:typing.Sequence) -> None: ... + def glVertex4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4dv(self, v:typing.Sequence) -> None: ... + def glVertex4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4fv(self, v:typing.Sequence) -> None: ... + def glVertex4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4iv(self, v:typing.Sequence) -> None: ... + def glVertex4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4sv(self, v:typing.Sequence) -> None: ... + def glVertexAttrib1d(self, index:int, x:float) -> None: ... + def glVertexAttrib1dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib1f(self, index:int, x:float) -> None: ... + def glVertexAttrib1fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib1s(self, index:int, x:int) -> None: ... + def glVertexAttrib1sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2d(self, index:int, x:float, y:float) -> None: ... + def glVertexAttrib2dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2f(self, index:int, x:float, y:float) -> None: ... + def glVertexAttrib2fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2s(self, index:int, x:int, y:int) -> None: ... + def glVertexAttrib2sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3d(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttrib3dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3f(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttrib3fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3s(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttrib3sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nbv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4Niv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nsv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nub(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttrib4Nubv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4Nuiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nusv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4bv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4d(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttrib4dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4f(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttrib4fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4s(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttrib4sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4ubv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4usv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI1i(self, index:int, x:int) -> None: ... + def glVertexAttribI1iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI1ui(self, index:int, x:int) -> None: ... + def glVertexAttribI1uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI2i(self, index:int, x:int, y:int) -> None: ... + def glVertexAttribI2iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI2ui(self, index:int, x:int, y:int) -> None: ... + def glVertexAttribI2uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI3i(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttribI3iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI3ui(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttribI3uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4bv(self, index:int, v:bytes) -> None: ... + def glVertexAttribI4i(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttribI4iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4ubv(self, index:int, v:bytes) -> None: ... + def glVertexAttribI4ui(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttribI4uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4usv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribIPointer(self, index:int, size:int, type:int, stride:int, pointer:int) -> None: ... + def glVertexAttribPointer(self, index:int, size:int, type:int, normalized:int, stride:int, pointer:int) -> None: ... + def glVertexPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glViewport(self, x:int, y:int, width:int, height:int) -> None: ... + def glWindowPos2d(self, x:float, y:float) -> None: ... + def glWindowPos2dv(self, v:typing.Sequence) -> None: ... + def glWindowPos2f(self, x:float, y:float) -> None: ... + def glWindowPos2fv(self, v:typing.Sequence) -> None: ... + def glWindowPos2i(self, x:int, y:int) -> None: ... + def glWindowPos2iv(self, v:typing.Sequence) -> None: ... + def glWindowPos2s(self, x:int, y:int) -> None: ... + def glWindowPos2sv(self, v:typing.Sequence) -> None: ... + def glWindowPos3d(self, x:float, y:float, z:float) -> None: ... + def glWindowPos3dv(self, v:typing.Sequence) -> None: ... + def glWindowPos3f(self, x:float, y:float, z:float) -> None: ... + def glWindowPos3fv(self, v:typing.Sequence) -> None: ... + def glWindowPos3i(self, x:int, y:int, z:int) -> None: ... + def glWindowPos3iv(self, v:typing.Sequence) -> None: ... + def glWindowPos3s(self, x:int, y:int, z:int) -> None: ... + def glWindowPos3sv(self, v:typing.Sequence) -> None: ... + def initializeOpenGLFunctions(self) -> bool: ... + + +class QOpenGLFunctions_3_2_Core(PySide2.QtGui.QAbstractOpenGLFunctions): + + def __init__(self) -> None: ... + + def glActiveTexture(self, texture:int) -> None: ... + def glAttachShader(self, program:int, shader:int) -> None: ... + def glBeginConditionalRender(self, id:int, mode:int) -> None: ... + def glBeginQuery(self, target:int, id:int) -> None: ... + def glBeginTransformFeedback(self, primitiveMode:int) -> None: ... + def glBindAttribLocation(self, program:int, index:int, name:bytes) -> None: ... + def glBindBuffer(self, target:int, buffer:int) -> None: ... + def glBindBufferBase(self, target:int, index:int, buffer:int) -> None: ... + def glBindFragDataLocation(self, program:int, color:int, name:bytes) -> None: ... + def glBindFramebuffer(self, target:int, framebuffer:int) -> None: ... + def glBindRenderbuffer(self, target:int, renderbuffer:int) -> None: ... + def glBindTexture(self, target:int, texture:int) -> None: ... + def glBindVertexArray(self, array:int) -> None: ... + def glBlendColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glBlendEquation(self, mode:int) -> None: ... + def glBlendEquationSeparate(self, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendFunc(self, sfactor:int, dfactor:int) -> None: ... + def glBlendFuncSeparate(self, sfactorRGB:int, dfactorRGB:int, sfactorAlpha:int, dfactorAlpha:int) -> None: ... + def glBlitFramebuffer(self, srcX0:int, srcY0:int, srcX1:int, srcY1:int, dstX0:int, dstY0:int, dstX1:int, dstY1:int, mask:int, filter:int) -> None: ... + def glCheckFramebufferStatus(self, target:int) -> int: ... + def glClampColor(self, target:int, clamp:int) -> None: ... + def glClear(self, mask:int) -> None: ... + def glClearBufferfi(self, buffer:int, drawbuffer:int, depth:float, stencil:int) -> None: ... + def glClearBufferfv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferuiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearDepth(self, depth:float) -> None: ... + def glClearStencil(self, s:int) -> None: ... + def glColorMask(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColorMaski(self, index:int, r:int, g:int, b:int, a:int) -> None: ... + def glCompileShader(self, shader:int) -> None: ... + def glCompressedTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, imageSize:int, data:int) -> None: ... + def glCopyTexImage1D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, border:int) -> None: ... + def glCopyTexImage2D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, height:int, border:int) -> None: ... + def glCopyTexSubImage1D(self, target:int, level:int, xoffset:int, x:int, y:int, width:int) -> None: ... + def glCopyTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCreateProgram(self) -> int: ... + def glCreateShader(self, type:int) -> int: ... + def glCullFace(self, mode:int) -> None: ... + def glDeleteBuffers(self, n:int, buffers:typing.Sequence) -> None: ... + def glDeleteFramebuffers(self, n:int, framebuffers:typing.Sequence) -> None: ... + def glDeleteProgram(self, program:int) -> None: ... + def glDeleteQueries(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteRenderbuffers(self, n:int, renderbuffers:typing.Sequence) -> None: ... + def glDeleteShader(self, shader:int) -> None: ... + def glDeleteTextures(self, n:int, textures:typing.Sequence) -> None: ... + def glDeleteVertexArrays(self, n:int, arrays:typing.Sequence) -> None: ... + def glDepthFunc(self, func:int) -> None: ... + def glDepthMask(self, flag:int) -> None: ... + def glDepthRange(self, nearVal:float, farVal:float) -> None: ... + def glDetachShader(self, program:int, shader:int) -> None: ... + def glDisable(self, cap:int) -> None: ... + def glDisableVertexAttribArray(self, index:int) -> None: ... + def glDisablei(self, target:int, index:int) -> None: ... + def glDrawArrays(self, mode:int, first:int, count:int) -> None: ... + def glDrawArraysInstanced(self, mode:int, first:int, count:int, instancecount:int) -> None: ... + def glDrawBuffer(self, mode:int) -> None: ... + def glDrawBuffers(self, n:int, bufs:typing.Sequence) -> None: ... + def glDrawElements(self, mode:int, count:int, type:int, indices:int) -> None: ... + def glDrawElementsBaseVertex(self, mode:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glDrawElementsInstanced(self, mode:int, count:int, type:int, indices:int, instancecount:int) -> None: ... + def glDrawElementsInstancedBaseVertex(self, mode:int, count:int, type:int, indices:int, instancecount:int, basevertex:int) -> None: ... + def glDrawRangeElements(self, mode:int, start:int, end:int, count:int, type:int, indices:int) -> None: ... + def glDrawRangeElementsBaseVertex(self, mode:int, start:int, end:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glEnable(self, cap:int) -> None: ... + def glEnableVertexAttribArray(self, index:int) -> None: ... + def glEnablei(self, target:int, index:int) -> None: ... + def glEndConditionalRender(self) -> None: ... + def glEndQuery(self, target:int) -> None: ... + def glEndTransformFeedback(self) -> None: ... + def glFinish(self) -> None: ... + def glFlush(self) -> None: ... + def glFramebufferRenderbuffer(self, target:int, attachment:int, renderbuffertarget:int, renderbuffer:int) -> None: ... + def glFramebufferTexture(self, target:int, attachment:int, texture:int, level:int) -> None: ... + def glFramebufferTexture1D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture2D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture3D(self, target:int, attachment:int, textarget:int, texture:int, level:int, zoffset:int) -> None: ... + def glFramebufferTextureLayer(self, target:int, attachment:int, texture:int, level:int, layer:int) -> None: ... + def glFrontFace(self, mode:int) -> None: ... + def glGenerateMipmap(self, target:int) -> None: ... + def glGetAttribLocation(self, program:int, name:bytes) -> int: ... + def glGetError(self) -> int: ... + def glGetFragDataLocation(self, program:int, name:bytes) -> int: ... + def glGetString(self, name:int) -> bytes: ... + def glGetStringi(self, name:int, index:int) -> bytes: ... + def glGetUniformBlockIndex(self, program:int, uniformBlockName:bytes) -> int: ... + def glGetUniformLocation(self, program:int, name:bytes) -> int: ... + def glHint(self, target:int, mode:int) -> None: ... + def glIndexub(self, c:int) -> None: ... + def glIndexubv(self, c:bytes) -> None: ... + def glIsBuffer(self, buffer:int) -> int: ... + def glIsEnabled(self, cap:int) -> int: ... + def glIsEnabledi(self, target:int, index:int) -> int: ... + def glIsFramebuffer(self, framebuffer:int) -> int: ... + def glIsProgram(self, program:int) -> int: ... + def glIsQuery(self, id:int) -> int: ... + def glIsRenderbuffer(self, renderbuffer:int) -> int: ... + def glIsShader(self, shader:int) -> int: ... + def glIsTexture(self, texture:int) -> int: ... + def glIsVertexArray(self, array:int) -> int: ... + def glLineWidth(self, width:float) -> None: ... + def glLinkProgram(self, program:int) -> None: ... + def glLogicOp(self, opcode:int) -> None: ... + def glMapBuffer(self, target:int, access:int) -> int: ... + def glMultiDrawArrays(self, mode:int, first:typing.Sequence, count:typing.Sequence, drawcount:int) -> None: ... + def glPixelStoref(self, pname:int, param:float) -> None: ... + def glPixelStorei(self, pname:int, param:int) -> None: ... + def glPointParameterf(self, pname:int, param:float) -> None: ... + def glPointParameterfv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointParameteri(self, pname:int, param:int) -> None: ... + def glPointParameteriv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointSize(self, size:float) -> None: ... + def glPolygonMode(self, face:int, mode:int) -> None: ... + def glPolygonOffset(self, factor:float, units:float) -> None: ... + def glPrimitiveRestartIndex(self, index:int) -> None: ... + def glProvokingVertex(self, mode:int) -> None: ... + def glReadBuffer(self, mode:int) -> None: ... + def glRenderbufferStorage(self, target:int, internalformat:int, width:int, height:int) -> None: ... + def glRenderbufferStorageMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int) -> None: ... + def glSampleCoverage(self, value:float, invert:int) -> None: ... + def glSampleMaski(self, index:int, mask:int) -> None: ... + def glScissor(self, x:int, y:int, width:int, height:int) -> None: ... + def glStencilFunc(self, func:int, ref:int, mask:int) -> None: ... + def glStencilFuncSeparate(self, face:int, func:int, ref:int, mask:int) -> None: ... + def glStencilMask(self, mask:int) -> None: ... + def glStencilMaskSeparate(self, face:int, mask:int) -> None: ... + def glStencilOp(self, fail:int, zfail:int, zpass:int) -> None: ... + def glStencilOpSeparate(self, face:int, sfail:int, dpfail:int, dppass:int) -> None: ... + def glTexBuffer(self, target:int, internalformat:int, buffer:int) -> None: ... + def glTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, fixedsamplelocations:int) -> None: ... + def glTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage3DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, depth:int, fixedsamplelocations:int) -> None: ... + def glTexParameterIiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterIuiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterf(self, target:int, pname:int, param:float) -> None: ... + def glTexParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameteri(self, target:int, pname:int, param:int) -> None: ... + def glTexParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, pixels:int) -> None: ... + def glUniform1f(self, location:int, v0:float) -> None: ... + def glUniform1fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1i(self, location:int, v0:int) -> None: ... + def glUniform1iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1ui(self, location:int, v0:int) -> None: ... + def glUniform1uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2f(self, location:int, v0:float, v1:float) -> None: ... + def glUniform2fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2i(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2ui(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3f(self, location:int, v0:float, v1:float, v2:float) -> None: ... + def glUniform3fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3i(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3ui(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4f(self, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glUniform4fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4i(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4ui(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniformBlockBinding(self, program:int, uniformBlockIndex:int, uniformBlockBinding:int) -> None: ... + def glUniformMatrix2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUnmapBuffer(self, target:int) -> int: ... + def glUseProgram(self, program:int) -> None: ... + def glValidateProgram(self, program:int) -> None: ... + def glVertexAttribIPointer(self, index:int, size:int, type:int, stride:int, pointer:int) -> None: ... + def glVertexAttribPointer(self, index:int, size:int, type:int, normalized:int, stride:int, pointer:int) -> None: ... + def glViewport(self, x:int, y:int, width:int, height:int) -> None: ... + def initializeOpenGLFunctions(self) -> bool: ... + + +class QOpenGLFunctions_3_3_Compatibility(PySide2.QtGui.QAbstractOpenGLFunctions): + + def __init__(self) -> None: ... + + def glAccum(self, op:int, value:float) -> None: ... + def glActiveTexture(self, texture:int) -> None: ... + def glAlphaFunc(self, func:int, ref:float) -> None: ... + def glArrayElement(self, i:int) -> None: ... + def glAttachShader(self, program:int, shader:int) -> None: ... + def glBegin(self, mode:int) -> None: ... + def glBeginConditionalRender(self, id:int, mode:int) -> None: ... + def glBeginQuery(self, target:int, id:int) -> None: ... + def glBeginTransformFeedback(self, primitiveMode:int) -> None: ... + def glBindAttribLocation(self, program:int, index:int, name:bytes) -> None: ... + def glBindBuffer(self, target:int, buffer:int) -> None: ... + def glBindBufferBase(self, target:int, index:int, buffer:int) -> None: ... + def glBindFragDataLocation(self, program:int, color:int, name:bytes) -> None: ... + def glBindFragDataLocationIndexed(self, program:int, colorNumber:int, index:int, name:bytes) -> None: ... + def glBindFramebuffer(self, target:int, framebuffer:int) -> None: ... + def glBindRenderbuffer(self, target:int, renderbuffer:int) -> None: ... + def glBindSampler(self, unit:int, sampler:int) -> None: ... + def glBindTexture(self, target:int, texture:int) -> None: ... + def glBindVertexArray(self, array:int) -> None: ... + def glBlendColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glBlendEquation(self, mode:int) -> None: ... + def glBlendEquationSeparate(self, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendFunc(self, sfactor:int, dfactor:int) -> None: ... + def glBlendFuncSeparate(self, sfactorRGB:int, dfactorRGB:int, sfactorAlpha:int, dfactorAlpha:int) -> None: ... + def glBlitFramebuffer(self, srcX0:int, srcY0:int, srcX1:int, srcY1:int, dstX0:int, dstY0:int, dstX1:int, dstY1:int, mask:int, filter:int) -> None: ... + def glCallList(self, list:int) -> None: ... + def glCallLists(self, n:int, type:int, lists:int) -> None: ... + def glCheckFramebufferStatus(self, target:int) -> int: ... + def glClampColor(self, target:int, clamp:int) -> None: ... + def glClear(self, mask:int) -> None: ... + def glClearAccum(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearBufferfi(self, buffer:int, drawbuffer:int, depth:float, stencil:int) -> None: ... + def glClearBufferfv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferuiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearDepth(self, depth:float) -> None: ... + def glClearIndex(self, c:float) -> None: ... + def glClearStencil(self, s:int) -> None: ... + def glClientActiveTexture(self, texture:int) -> None: ... + def glClipPlane(self, plane:int, equation:typing.Sequence) -> None: ... + def glColor3b(self, red:int, green:int, blue:int) -> None: ... + def glColor3bv(self, v:bytes) -> None: ... + def glColor3d(self, red:float, green:float, blue:float) -> None: ... + def glColor3dv(self, v:typing.Sequence) -> None: ... + def glColor3f(self, red:float, green:float, blue:float) -> None: ... + def glColor3fv(self, v:typing.Sequence) -> None: ... + def glColor3i(self, red:int, green:int, blue:int) -> None: ... + def glColor3iv(self, v:typing.Sequence) -> None: ... + def glColor3s(self, red:int, green:int, blue:int) -> None: ... + def glColor3sv(self, v:typing.Sequence) -> None: ... + def glColor3ub(self, red:int, green:int, blue:int) -> None: ... + def glColor3ubv(self, v:bytes) -> None: ... + def glColor3ui(self, red:int, green:int, blue:int) -> None: ... + def glColor3uiv(self, v:typing.Sequence) -> None: ... + def glColor3us(self, red:int, green:int, blue:int) -> None: ... + def glColor3usv(self, v:typing.Sequence) -> None: ... + def glColor4b(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4bv(self, v:bytes) -> None: ... + def glColor4d(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4dv(self, v:typing.Sequence) -> None: ... + def glColor4f(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4fv(self, v:typing.Sequence) -> None: ... + def glColor4i(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4iv(self, v:typing.Sequence) -> None: ... + def glColor4s(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4sv(self, v:typing.Sequence) -> None: ... + def glColor4ub(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4ubv(self, v:bytes) -> None: ... + def glColor4ui(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4uiv(self, v:typing.Sequence) -> None: ... + def glColor4us(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4usv(self, v:typing.Sequence) -> None: ... + def glColorMask(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColorMaski(self, index:int, r:int, g:int, b:int, a:int) -> None: ... + def glColorMaterial(self, face:int, mode:int) -> None: ... + def glColorP3ui(self, type:int, color:int) -> None: ... + def glColorP3uiv(self, type:int, color:typing.Sequence) -> None: ... + def glColorP4ui(self, type:int, color:int) -> None: ... + def glColorP4uiv(self, type:int, color:typing.Sequence) -> None: ... + def glColorPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glColorSubTable(self, target:int, start:int, count:int, format:int, type:int, data:int) -> None: ... + def glColorTable(self, target:int, internalformat:int, width:int, format:int, type:int, table:int) -> None: ... + def glColorTableParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glColorTableParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glCompileShader(self, shader:int) -> None: ... + def glCompressedTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, imageSize:int, data:int) -> None: ... + def glConvolutionFilter1D(self, target:int, internalformat:int, width:int, format:int, type:int, image:int) -> None: ... + def glConvolutionFilter2D(self, target:int, internalformat:int, width:int, height:int, format:int, type:int, image:int) -> None: ... + def glConvolutionParameterf(self, target:int, pname:int, params:float) -> None: ... + def glConvolutionParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glConvolutionParameteri(self, target:int, pname:int, params:int) -> None: ... + def glConvolutionParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glCopyColorSubTable(self, target:int, start:int, x:int, y:int, width:int) -> None: ... + def glCopyColorTable(self, target:int, internalformat:int, x:int, y:int, width:int) -> None: ... + def glCopyConvolutionFilter1D(self, target:int, internalformat:int, x:int, y:int, width:int) -> None: ... + def glCopyConvolutionFilter2D(self, target:int, internalformat:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyPixels(self, x:int, y:int, width:int, height:int, type:int) -> None: ... + def glCopyTexImage1D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, border:int) -> None: ... + def glCopyTexImage2D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, height:int, border:int) -> None: ... + def glCopyTexSubImage1D(self, target:int, level:int, xoffset:int, x:int, y:int, width:int) -> None: ... + def glCopyTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCreateProgram(self) -> int: ... + def glCreateShader(self, type:int) -> int: ... + def glCullFace(self, mode:int) -> None: ... + def glDeleteBuffers(self, n:int, buffers:typing.Sequence) -> None: ... + def glDeleteFramebuffers(self, n:int, framebuffers:typing.Sequence) -> None: ... + def glDeleteLists(self, list:int, range:int) -> None: ... + def glDeleteProgram(self, program:int) -> None: ... + def glDeleteQueries(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteRenderbuffers(self, n:int, renderbuffers:typing.Sequence) -> None: ... + def glDeleteSamplers(self, count:int, samplers:typing.Sequence) -> None: ... + def glDeleteShader(self, shader:int) -> None: ... + def glDeleteTextures(self, n:int, textures:typing.Sequence) -> None: ... + def glDeleteVertexArrays(self, n:int, arrays:typing.Sequence) -> None: ... + def glDepthFunc(self, func:int) -> None: ... + def glDepthMask(self, flag:int) -> None: ... + def glDepthRange(self, nearVal:float, farVal:float) -> None: ... + def glDetachShader(self, program:int, shader:int) -> None: ... + def glDisable(self, cap:int) -> None: ... + def glDisableClientState(self, array:int) -> None: ... + def glDisableVertexAttribArray(self, index:int) -> None: ... + def glDisablei(self, target:int, index:int) -> None: ... + def glDrawArrays(self, mode:int, first:int, count:int) -> None: ... + def glDrawArraysInstanced(self, mode:int, first:int, count:int, instancecount:int) -> None: ... + def glDrawBuffer(self, mode:int) -> None: ... + def glDrawBuffers(self, n:int, bufs:typing.Sequence) -> None: ... + def glDrawElements(self, mode:int, count:int, type:int, indices:int) -> None: ... + def glDrawElementsBaseVertex(self, mode:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glDrawElementsInstanced(self, mode:int, count:int, type:int, indices:int, instancecount:int) -> None: ... + def glDrawElementsInstancedBaseVertex(self, mode:int, count:int, type:int, indices:int, instancecount:int, basevertex:int) -> None: ... + def glDrawPixels(self, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glDrawRangeElements(self, mode:int, start:int, end:int, count:int, type:int, indices:int) -> None: ... + def glDrawRangeElementsBaseVertex(self, mode:int, start:int, end:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glEdgeFlag(self, flag:int) -> None: ... + def glEdgeFlagPointer(self, stride:int, pointer:int) -> None: ... + def glEnable(self, cap:int) -> None: ... + def glEnableClientState(self, array:int) -> None: ... + def glEnableVertexAttribArray(self, index:int) -> None: ... + def glEnablei(self, target:int, index:int) -> None: ... + def glEnd(self) -> None: ... + def glEndConditionalRender(self) -> None: ... + def glEndList(self) -> None: ... + def glEndQuery(self, target:int) -> None: ... + def glEndTransformFeedback(self) -> None: ... + def glEvalCoord1d(self, u:float) -> None: ... + def glEvalCoord1dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord1f(self, u:float) -> None: ... + def glEvalCoord1fv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2d(self, u:float, v:float) -> None: ... + def glEvalCoord2dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2f(self, u:float, v:float) -> None: ... + def glEvalCoord2fv(self, u:typing.Sequence) -> None: ... + def glEvalMesh1(self, mode:int, i1:int, i2:int) -> None: ... + def glEvalMesh2(self, mode:int, i1:int, i2:int, j1:int, j2:int) -> None: ... + def glEvalPoint1(self, i:int) -> None: ... + def glEvalPoint2(self, i:int, j:int) -> None: ... + def glFinish(self) -> None: ... + def glFlush(self) -> None: ... + def glFogCoordPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glFogCoordd(self, coord:float) -> None: ... + def glFogCoorddv(self, coord:typing.Sequence) -> None: ... + def glFogCoordf(self, coord:float) -> None: ... + def glFogCoordfv(self, coord:typing.Sequence) -> None: ... + def glFogf(self, pname:int, param:float) -> None: ... + def glFogfv(self, pname:int, params:typing.Sequence) -> None: ... + def glFogi(self, pname:int, param:int) -> None: ... + def glFogiv(self, pname:int, params:typing.Sequence) -> None: ... + def glFramebufferRenderbuffer(self, target:int, attachment:int, renderbuffertarget:int, renderbuffer:int) -> None: ... + def glFramebufferTexture(self, target:int, attachment:int, texture:int, level:int) -> None: ... + def glFramebufferTexture1D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture2D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture3D(self, target:int, attachment:int, textarget:int, texture:int, level:int, zoffset:int) -> None: ... + def glFramebufferTextureLayer(self, target:int, attachment:int, texture:int, level:int, layer:int) -> None: ... + def glFrontFace(self, mode:int) -> None: ... + def glFrustum(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glGenLists(self, range:int) -> int: ... + def glGenerateMipmap(self, target:int) -> None: ... + def glGetAttribLocation(self, program:int, name:bytes) -> int: ... + def glGetError(self) -> int: ... + def glGetFragDataIndex(self, program:int, name:bytes) -> int: ... + def glGetFragDataLocation(self, program:int, name:bytes) -> int: ... + def glGetString(self, name:int) -> bytes: ... + def glGetStringi(self, name:int, index:int) -> bytes: ... + def glGetUniformBlockIndex(self, program:int, uniformBlockName:bytes) -> int: ... + def glGetUniformLocation(self, program:int, name:bytes) -> int: ... + def glHint(self, target:int, mode:int) -> None: ... + def glHistogram(self, target:int, width:int, internalformat:int, sink:int) -> None: ... + def glIndexMask(self, mask:int) -> None: ... + def glIndexPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glIndexd(self, c:float) -> None: ... + def glIndexdv(self, c:typing.Sequence) -> None: ... + def glIndexf(self, c:float) -> None: ... + def glIndexfv(self, c:typing.Sequence) -> None: ... + def glIndexi(self, c:int) -> None: ... + def glIndexiv(self, c:typing.Sequence) -> None: ... + def glIndexs(self, c:int) -> None: ... + def glIndexsv(self, c:typing.Sequence) -> None: ... + def glIndexub(self, c:int) -> None: ... + def glIndexubv(self, c:bytes) -> None: ... + def glInitNames(self) -> None: ... + def glInterleavedArrays(self, format:int, stride:int, pointer:int) -> None: ... + def glIsBuffer(self, buffer:int) -> int: ... + def glIsEnabled(self, cap:int) -> int: ... + def glIsEnabledi(self, target:int, index:int) -> int: ... + def glIsFramebuffer(self, framebuffer:int) -> int: ... + def glIsList(self, list:int) -> int: ... + def glIsProgram(self, program:int) -> int: ... + def glIsQuery(self, id:int) -> int: ... + def glIsRenderbuffer(self, renderbuffer:int) -> int: ... + def glIsSampler(self, sampler:int) -> int: ... + def glIsShader(self, shader:int) -> int: ... + def glIsTexture(self, texture:int) -> int: ... + def glIsVertexArray(self, array:int) -> int: ... + def glLightModelf(self, pname:int, param:float) -> None: ... + def glLightModelfv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightModeli(self, pname:int, param:int) -> None: ... + def glLightModeliv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightf(self, light:int, pname:int, param:float) -> None: ... + def glLightfv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLighti(self, light:int, pname:int, param:int) -> None: ... + def glLightiv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLineStipple(self, factor:int, pattern:int) -> None: ... + def glLineWidth(self, width:float) -> None: ... + def glLinkProgram(self, program:int) -> None: ... + def glListBase(self, base:int) -> None: ... + def glLoadIdentity(self) -> None: ... + def glLoadMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadMatrixf(self, m:typing.Sequence) -> None: ... + def glLoadName(self, name:int) -> None: ... + def glLoadTransposeMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadTransposeMatrixf(self, m:typing.Sequence) -> None: ... + def glLogicOp(self, opcode:int) -> None: ... + def glMap1d(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap1f(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap2d(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMap2f(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMapBuffer(self, target:int, access:int) -> int: ... + def glMapGrid1d(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid1f(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid2d(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMapGrid2f(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMaterialf(self, face:int, pname:int, param:float) -> None: ... + def glMaterialfv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMateriali(self, face:int, pname:int, param:int) -> None: ... + def glMaterialiv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMatrixMode(self, mode:int) -> None: ... + def glMinmax(self, target:int, internalformat:int, sink:int) -> None: ... + def glMultMatrixd(self, m:typing.Sequence) -> None: ... + def glMultMatrixf(self, m:typing.Sequence) -> None: ... + def glMultTransposeMatrixd(self, m:typing.Sequence) -> None: ... + def glMultTransposeMatrixf(self, m:typing.Sequence) -> None: ... + def glMultiDrawArrays(self, mode:int, first:typing.Sequence, count:typing.Sequence, drawcount:int) -> None: ... + def glMultiTexCoord1d(self, target:int, s:float) -> None: ... + def glMultiTexCoord1dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1f(self, target:int, s:float) -> None: ... + def glMultiTexCoord1fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1i(self, target:int, s:int) -> None: ... + def glMultiTexCoord1iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1s(self, target:int, s:int) -> None: ... + def glMultiTexCoord1sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2d(self, target:int, s:float, t:float) -> None: ... + def glMultiTexCoord2dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2f(self, target:int, s:float, t:float) -> None: ... + def glMultiTexCoord2fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2i(self, target:int, s:int, t:int) -> None: ... + def glMultiTexCoord2iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2s(self, target:int, s:int, t:int) -> None: ... + def glMultiTexCoord2sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3d(self, target:int, s:float, t:float, r:float) -> None: ... + def glMultiTexCoord3dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3f(self, target:int, s:float, t:float, r:float) -> None: ... + def glMultiTexCoord3fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3i(self, target:int, s:int, t:int, r:int) -> None: ... + def glMultiTexCoord3iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3s(self, target:int, s:int, t:int, r:int) -> None: ... + def glMultiTexCoord3sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4d(self, target:int, s:float, t:float, r:float, q:float) -> None: ... + def glMultiTexCoord4dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4f(self, target:int, s:float, t:float, r:float, q:float) -> None: ... + def glMultiTexCoord4fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4i(self, target:int, s:int, t:int, r:int, q:int) -> None: ... + def glMultiTexCoord4iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4s(self, target:int, s:int, t:int, r:int, q:int) -> None: ... + def glMultiTexCoord4sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoordP1ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP1uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP2ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP2uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP3ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP3uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP4ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP4uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glNewList(self, list:int, mode:int) -> None: ... + def glNormal3b(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3bv(self, v:bytes) -> None: ... + def glNormal3d(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3dv(self, v:typing.Sequence) -> None: ... + def glNormal3f(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3fv(self, v:typing.Sequence) -> None: ... + def glNormal3i(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3iv(self, v:typing.Sequence) -> None: ... + def glNormal3s(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3sv(self, v:typing.Sequence) -> None: ... + def glNormalP3ui(self, type:int, coords:int) -> None: ... + def glNormalP3uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glNormalPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glOrtho(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glPassThrough(self, token:float) -> None: ... + def glPixelMapfv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapuiv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapusv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelStoref(self, pname:int, param:float) -> None: ... + def glPixelStorei(self, pname:int, param:int) -> None: ... + def glPixelTransferf(self, pname:int, param:float) -> None: ... + def glPixelTransferi(self, pname:int, param:int) -> None: ... + def glPixelZoom(self, xfactor:float, yfactor:float) -> None: ... + def glPointParameterf(self, pname:int, param:float) -> None: ... + def glPointParameterfv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointParameteri(self, pname:int, param:int) -> None: ... + def glPointParameteriv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointSize(self, size:float) -> None: ... + def glPolygonMode(self, face:int, mode:int) -> None: ... + def glPolygonOffset(self, factor:float, units:float) -> None: ... + def glPopAttrib(self) -> None: ... + def glPopClientAttrib(self) -> None: ... + def glPopMatrix(self) -> None: ... + def glPopName(self) -> None: ... + def glPrimitiveRestartIndex(self, index:int) -> None: ... + def glPrioritizeTextures(self, n:int, textures:typing.Sequence, priorities:typing.Sequence) -> None: ... + def glProvokingVertex(self, mode:int) -> None: ... + def glPushAttrib(self, mask:int) -> None: ... + def glPushClientAttrib(self, mask:int) -> None: ... + def glPushMatrix(self) -> None: ... + def glPushName(self, name:int) -> None: ... + def glQueryCounter(self, id:int, target:int) -> None: ... + def glRasterPos2d(self, x:float, y:float) -> None: ... + def glRasterPos2dv(self, v:typing.Sequence) -> None: ... + def glRasterPos2f(self, x:float, y:float) -> None: ... + def glRasterPos2fv(self, v:typing.Sequence) -> None: ... + def glRasterPos2i(self, x:int, y:int) -> None: ... + def glRasterPos2iv(self, v:typing.Sequence) -> None: ... + def glRasterPos2s(self, x:int, y:int) -> None: ... + def glRasterPos2sv(self, v:typing.Sequence) -> None: ... + def glRasterPos3d(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3dv(self, v:typing.Sequence) -> None: ... + def glRasterPos3f(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3fv(self, v:typing.Sequence) -> None: ... + def glRasterPos3i(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3iv(self, v:typing.Sequence) -> None: ... + def glRasterPos3s(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3sv(self, v:typing.Sequence) -> None: ... + def glRasterPos4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4dv(self, v:typing.Sequence) -> None: ... + def glRasterPos4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4fv(self, v:typing.Sequence) -> None: ... + def glRasterPos4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4iv(self, v:typing.Sequence) -> None: ... + def glRasterPos4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4sv(self, v:typing.Sequence) -> None: ... + def glReadBuffer(self, mode:int) -> None: ... + def glRectd(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectdv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRectf(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectfv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRecti(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectiv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRects(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectsv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRenderMode(self, mode:int) -> int: ... + def glRenderbufferStorage(self, target:int, internalformat:int, width:int, height:int) -> None: ... + def glRenderbufferStorageMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int) -> None: ... + def glResetHistogram(self, target:int) -> None: ... + def glResetMinmax(self, target:int) -> None: ... + def glRotated(self, angle:float, x:float, y:float, z:float) -> None: ... + def glRotatef(self, angle:float, x:float, y:float, z:float) -> None: ... + def glSampleCoverage(self, value:float, invert:int) -> None: ... + def glSampleMaski(self, index:int, mask:int) -> None: ... + def glSamplerParameterIiv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameterIuiv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameterf(self, sampler:int, pname:int, param:float) -> None: ... + def glSamplerParameterfv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameteri(self, sampler:int, pname:int, param:int) -> None: ... + def glSamplerParameteriv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glScaled(self, x:float, y:float, z:float) -> None: ... + def glScalef(self, x:float, y:float, z:float) -> None: ... + def glScissor(self, x:int, y:int, width:int, height:int) -> None: ... + def glSecondaryColor3b(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3bv(self, v:bytes) -> None: ... + def glSecondaryColor3d(self, red:float, green:float, blue:float) -> None: ... + def glSecondaryColor3dv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3f(self, red:float, green:float, blue:float) -> None: ... + def glSecondaryColor3fv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3i(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3iv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3s(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3sv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3ub(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3ubv(self, v:bytes) -> None: ... + def glSecondaryColor3ui(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3uiv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3us(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3usv(self, v:typing.Sequence) -> None: ... + def glSecondaryColorP3ui(self, type:int, color:int) -> None: ... + def glSecondaryColorP3uiv(self, type:int, color:typing.Sequence) -> None: ... + def glSecondaryColorPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glSeparableFilter2D(self, target:int, internalformat:int, width:int, height:int, format:int, type:int, row:int, column:int) -> None: ... + def glShadeModel(self, mode:int) -> None: ... + def glStencilFunc(self, func:int, ref:int, mask:int) -> None: ... + def glStencilFuncSeparate(self, face:int, func:int, ref:int, mask:int) -> None: ... + def glStencilMask(self, mask:int) -> None: ... + def glStencilMaskSeparate(self, face:int, mask:int) -> None: ... + def glStencilOp(self, fail:int, zfail:int, zpass:int) -> None: ... + def glStencilOpSeparate(self, face:int, sfail:int, dpfail:int, dppass:int) -> None: ... + def glTexBuffer(self, target:int, internalformat:int, buffer:int) -> None: ... + def glTexCoord1d(self, s:float) -> None: ... + def glTexCoord1dv(self, v:typing.Sequence) -> None: ... + def glTexCoord1f(self, s:float) -> None: ... + def glTexCoord1fv(self, v:typing.Sequence) -> None: ... + def glTexCoord1i(self, s:int) -> None: ... + def glTexCoord1iv(self, v:typing.Sequence) -> None: ... + def glTexCoord1s(self, s:int) -> None: ... + def glTexCoord1sv(self, v:typing.Sequence) -> None: ... + def glTexCoord2d(self, s:float, t:float) -> None: ... + def glTexCoord2dv(self, v:typing.Sequence) -> None: ... + def glTexCoord2f(self, s:float, t:float) -> None: ... + def glTexCoord2fv(self, v:typing.Sequence) -> None: ... + def glTexCoord2i(self, s:int, t:int) -> None: ... + def glTexCoord2iv(self, v:typing.Sequence) -> None: ... + def glTexCoord2s(self, s:int, t:int) -> None: ... + def glTexCoord2sv(self, v:typing.Sequence) -> None: ... + def glTexCoord3d(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3dv(self, v:typing.Sequence) -> None: ... + def glTexCoord3f(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3fv(self, v:typing.Sequence) -> None: ... + def glTexCoord3i(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3iv(self, v:typing.Sequence) -> None: ... + def glTexCoord3s(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3sv(self, v:typing.Sequence) -> None: ... + def glTexCoord4d(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4dv(self, v:typing.Sequence) -> None: ... + def glTexCoord4f(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4fv(self, v:typing.Sequence) -> None: ... + def glTexCoord4i(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4iv(self, v:typing.Sequence) -> None: ... + def glTexCoord4s(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4sv(self, v:typing.Sequence) -> None: ... + def glTexCoordP1ui(self, type:int, coords:int) -> None: ... + def glTexCoordP1uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP2ui(self, type:int, coords:int) -> None: ... + def glTexCoordP2uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP3ui(self, type:int, coords:int) -> None: ... + def glTexCoordP3uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP4ui(self, type:int, coords:int) -> None: ... + def glTexCoordP4uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glTexEnvf(self, target:int, pname:int, param:float) -> None: ... + def glTexEnvfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexEnvi(self, target:int, pname:int, param:int) -> None: ... + def glTexEnviv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGend(self, coord:int, pname:int, param:float) -> None: ... + def glTexGendv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGenf(self, coord:int, pname:int, param:float) -> None: ... + def glTexGenfv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGeni(self, coord:int, pname:int, param:int) -> None: ... + def glTexGeniv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, fixedsamplelocations:int) -> None: ... + def glTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage3DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, depth:int, fixedsamplelocations:int) -> None: ... + def glTexParameterIiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterIuiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterf(self, target:int, pname:int, param:float) -> None: ... + def glTexParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameteri(self, target:int, pname:int, param:int) -> None: ... + def glTexParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, pixels:int) -> None: ... + def glTranslated(self, x:float, y:float, z:float) -> None: ... + def glTranslatef(self, x:float, y:float, z:float) -> None: ... + def glUniform1f(self, location:int, v0:float) -> None: ... + def glUniform1fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1i(self, location:int, v0:int) -> None: ... + def glUniform1iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1ui(self, location:int, v0:int) -> None: ... + def glUniform1uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2f(self, location:int, v0:float, v1:float) -> None: ... + def glUniform2fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2i(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2ui(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3f(self, location:int, v0:float, v1:float, v2:float) -> None: ... + def glUniform3fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3i(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3ui(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4f(self, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glUniform4fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4i(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4ui(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniformBlockBinding(self, program:int, uniformBlockIndex:int, uniformBlockBinding:int) -> None: ... + def glUniformMatrix2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUnmapBuffer(self, target:int) -> int: ... + def glUseProgram(self, program:int) -> None: ... + def glValidateProgram(self, program:int) -> None: ... + def glVertex2d(self, x:float, y:float) -> None: ... + def glVertex2dv(self, v:typing.Sequence) -> None: ... + def glVertex2f(self, x:float, y:float) -> None: ... + def glVertex2fv(self, v:typing.Sequence) -> None: ... + def glVertex2i(self, x:int, y:int) -> None: ... + def glVertex2iv(self, v:typing.Sequence) -> None: ... + def glVertex2s(self, x:int, y:int) -> None: ... + def glVertex2sv(self, v:typing.Sequence) -> None: ... + def glVertex3d(self, x:float, y:float, z:float) -> None: ... + def glVertex3dv(self, v:typing.Sequence) -> None: ... + def glVertex3f(self, x:float, y:float, z:float) -> None: ... + def glVertex3fv(self, v:typing.Sequence) -> None: ... + def glVertex3i(self, x:int, y:int, z:int) -> None: ... + def glVertex3iv(self, v:typing.Sequence) -> None: ... + def glVertex3s(self, x:int, y:int, z:int) -> None: ... + def glVertex3sv(self, v:typing.Sequence) -> None: ... + def glVertex4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4dv(self, v:typing.Sequence) -> None: ... + def glVertex4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4fv(self, v:typing.Sequence) -> None: ... + def glVertex4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4iv(self, v:typing.Sequence) -> None: ... + def glVertex4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4sv(self, v:typing.Sequence) -> None: ... + def glVertexAttrib1d(self, index:int, x:float) -> None: ... + def glVertexAttrib1dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib1f(self, index:int, x:float) -> None: ... + def glVertexAttrib1fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib1s(self, index:int, x:int) -> None: ... + def glVertexAttrib1sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2d(self, index:int, x:float, y:float) -> None: ... + def glVertexAttrib2dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2f(self, index:int, x:float, y:float) -> None: ... + def glVertexAttrib2fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2s(self, index:int, x:int, y:int) -> None: ... + def glVertexAttrib2sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3d(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttrib3dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3f(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttrib3fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3s(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttrib3sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nbv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4Niv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nsv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nub(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttrib4Nubv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4Nuiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nusv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4bv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4d(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttrib4dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4f(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttrib4fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4s(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttrib4sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4ubv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4usv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribDivisor(self, index:int, divisor:int) -> None: ... + def glVertexAttribI1i(self, index:int, x:int) -> None: ... + def glVertexAttribI1iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI1ui(self, index:int, x:int) -> None: ... + def glVertexAttribI1uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI2i(self, index:int, x:int, y:int) -> None: ... + def glVertexAttribI2iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI2ui(self, index:int, x:int, y:int) -> None: ... + def glVertexAttribI2uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI3i(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttribI3iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI3ui(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttribI3uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4bv(self, index:int, v:bytes) -> None: ... + def glVertexAttribI4i(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttribI4iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4ubv(self, index:int, v:bytes) -> None: ... + def glVertexAttribI4ui(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttribI4uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4usv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribIPointer(self, index:int, size:int, type:int, stride:int, pointer:int) -> None: ... + def glVertexAttribP1ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP1uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP2ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP2uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP3ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP3uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP4ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP4uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribPointer(self, index:int, size:int, type:int, normalized:int, stride:int, pointer:int) -> None: ... + def glVertexP2ui(self, type:int, value:int) -> None: ... + def glVertexP2uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexP3ui(self, type:int, value:int) -> None: ... + def glVertexP3uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexP4ui(self, type:int, value:int) -> None: ... + def glVertexP4uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glViewport(self, x:int, y:int, width:int, height:int) -> None: ... + def glWindowPos2d(self, x:float, y:float) -> None: ... + def glWindowPos2dv(self, v:typing.Sequence) -> None: ... + def glWindowPos2f(self, x:float, y:float) -> None: ... + def glWindowPos2fv(self, v:typing.Sequence) -> None: ... + def glWindowPos2i(self, x:int, y:int) -> None: ... + def glWindowPos2iv(self, v:typing.Sequence) -> None: ... + def glWindowPos2s(self, x:int, y:int) -> None: ... + def glWindowPos2sv(self, v:typing.Sequence) -> None: ... + def glWindowPos3d(self, x:float, y:float, z:float) -> None: ... + def glWindowPos3dv(self, v:typing.Sequence) -> None: ... + def glWindowPos3f(self, x:float, y:float, z:float) -> None: ... + def glWindowPos3fv(self, v:typing.Sequence) -> None: ... + def glWindowPos3i(self, x:int, y:int, z:int) -> None: ... + def glWindowPos3iv(self, v:typing.Sequence) -> None: ... + def glWindowPos3s(self, x:int, y:int, z:int) -> None: ... + def glWindowPos3sv(self, v:typing.Sequence) -> None: ... + def initializeOpenGLFunctions(self) -> bool: ... + + +class QOpenGLFunctions_3_3_Core(PySide2.QtGui.QAbstractOpenGLFunctions): + + def __init__(self) -> None: ... + + def glActiveTexture(self, texture:int) -> None: ... + def glAttachShader(self, program:int, shader:int) -> None: ... + def glBeginConditionalRender(self, id:int, mode:int) -> None: ... + def glBeginQuery(self, target:int, id:int) -> None: ... + def glBeginTransformFeedback(self, primitiveMode:int) -> None: ... + def glBindAttribLocation(self, program:int, index:int, name:bytes) -> None: ... + def glBindBuffer(self, target:int, buffer:int) -> None: ... + def glBindBufferBase(self, target:int, index:int, buffer:int) -> None: ... + def glBindFragDataLocation(self, program:int, color:int, name:bytes) -> None: ... + def glBindFragDataLocationIndexed(self, program:int, colorNumber:int, index:int, name:bytes) -> None: ... + def glBindFramebuffer(self, target:int, framebuffer:int) -> None: ... + def glBindRenderbuffer(self, target:int, renderbuffer:int) -> None: ... + def glBindSampler(self, unit:int, sampler:int) -> None: ... + def glBindTexture(self, target:int, texture:int) -> None: ... + def glBindVertexArray(self, array:int) -> None: ... + def glBlendColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glBlendEquation(self, mode:int) -> None: ... + def glBlendEquationSeparate(self, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendFunc(self, sfactor:int, dfactor:int) -> None: ... + def glBlendFuncSeparate(self, sfactorRGB:int, dfactorRGB:int, sfactorAlpha:int, dfactorAlpha:int) -> None: ... + def glBlitFramebuffer(self, srcX0:int, srcY0:int, srcX1:int, srcY1:int, dstX0:int, dstY0:int, dstX1:int, dstY1:int, mask:int, filter:int) -> None: ... + def glCheckFramebufferStatus(self, target:int) -> int: ... + def glClampColor(self, target:int, clamp:int) -> None: ... + def glClear(self, mask:int) -> None: ... + def glClearBufferfi(self, buffer:int, drawbuffer:int, depth:float, stencil:int) -> None: ... + def glClearBufferfv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferuiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearDepth(self, depth:float) -> None: ... + def glClearStencil(self, s:int) -> None: ... + def glColorMask(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColorMaski(self, index:int, r:int, g:int, b:int, a:int) -> None: ... + def glColorP3ui(self, type:int, color:int) -> None: ... + def glColorP3uiv(self, type:int, color:typing.Sequence) -> None: ... + def glColorP4ui(self, type:int, color:int) -> None: ... + def glColorP4uiv(self, type:int, color:typing.Sequence) -> None: ... + def glCompileShader(self, shader:int) -> None: ... + def glCompressedTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, imageSize:int, data:int) -> None: ... + def glCopyTexImage1D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, border:int) -> None: ... + def glCopyTexImage2D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, height:int, border:int) -> None: ... + def glCopyTexSubImage1D(self, target:int, level:int, xoffset:int, x:int, y:int, width:int) -> None: ... + def glCopyTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCreateProgram(self) -> int: ... + def glCreateShader(self, type:int) -> int: ... + def glCullFace(self, mode:int) -> None: ... + def glDeleteBuffers(self, n:int, buffers:typing.Sequence) -> None: ... + def glDeleteFramebuffers(self, n:int, framebuffers:typing.Sequence) -> None: ... + def glDeleteProgram(self, program:int) -> None: ... + def glDeleteQueries(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteRenderbuffers(self, n:int, renderbuffers:typing.Sequence) -> None: ... + def glDeleteSamplers(self, count:int, samplers:typing.Sequence) -> None: ... + def glDeleteShader(self, shader:int) -> None: ... + def glDeleteTextures(self, n:int, textures:typing.Sequence) -> None: ... + def glDeleteVertexArrays(self, n:int, arrays:typing.Sequence) -> None: ... + def glDepthFunc(self, func:int) -> None: ... + def glDepthMask(self, flag:int) -> None: ... + def glDepthRange(self, nearVal:float, farVal:float) -> None: ... + def glDetachShader(self, program:int, shader:int) -> None: ... + def glDisable(self, cap:int) -> None: ... + def glDisableVertexAttribArray(self, index:int) -> None: ... + def glDisablei(self, target:int, index:int) -> None: ... + def glDrawArrays(self, mode:int, first:int, count:int) -> None: ... + def glDrawArraysInstanced(self, mode:int, first:int, count:int, instancecount:int) -> None: ... + def glDrawBuffer(self, mode:int) -> None: ... + def glDrawBuffers(self, n:int, bufs:typing.Sequence) -> None: ... + def glDrawElements(self, mode:int, count:int, type:int, indices:int) -> None: ... + def glDrawElementsBaseVertex(self, mode:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glDrawElementsInstanced(self, mode:int, count:int, type:int, indices:int, instancecount:int) -> None: ... + def glDrawElementsInstancedBaseVertex(self, mode:int, count:int, type:int, indices:int, instancecount:int, basevertex:int) -> None: ... + def glDrawRangeElements(self, mode:int, start:int, end:int, count:int, type:int, indices:int) -> None: ... + def glDrawRangeElementsBaseVertex(self, mode:int, start:int, end:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glEnable(self, cap:int) -> None: ... + def glEnableVertexAttribArray(self, index:int) -> None: ... + def glEnablei(self, target:int, index:int) -> None: ... + def glEndConditionalRender(self) -> None: ... + def glEndQuery(self, target:int) -> None: ... + def glEndTransformFeedback(self) -> None: ... + def glFinish(self) -> None: ... + def glFlush(self) -> None: ... + def glFramebufferRenderbuffer(self, target:int, attachment:int, renderbuffertarget:int, renderbuffer:int) -> None: ... + def glFramebufferTexture(self, target:int, attachment:int, texture:int, level:int) -> None: ... + def glFramebufferTexture1D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture2D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture3D(self, target:int, attachment:int, textarget:int, texture:int, level:int, zoffset:int) -> None: ... + def glFramebufferTextureLayer(self, target:int, attachment:int, texture:int, level:int, layer:int) -> None: ... + def glFrontFace(self, mode:int) -> None: ... + def glGenerateMipmap(self, target:int) -> None: ... + def glGetAttribLocation(self, program:int, name:bytes) -> int: ... + def glGetError(self) -> int: ... + def glGetFragDataIndex(self, program:int, name:bytes) -> int: ... + def glGetFragDataLocation(self, program:int, name:bytes) -> int: ... + def glGetString(self, name:int) -> bytes: ... + def glGetStringi(self, name:int, index:int) -> bytes: ... + def glGetUniformBlockIndex(self, program:int, uniformBlockName:bytes) -> int: ... + def glGetUniformLocation(self, program:int, name:bytes) -> int: ... + def glHint(self, target:int, mode:int) -> None: ... + def glIndexub(self, c:int) -> None: ... + def glIndexubv(self, c:bytes) -> None: ... + def glIsBuffer(self, buffer:int) -> int: ... + def glIsEnabled(self, cap:int) -> int: ... + def glIsEnabledi(self, target:int, index:int) -> int: ... + def glIsFramebuffer(self, framebuffer:int) -> int: ... + def glIsProgram(self, program:int) -> int: ... + def glIsQuery(self, id:int) -> int: ... + def glIsRenderbuffer(self, renderbuffer:int) -> int: ... + def glIsSampler(self, sampler:int) -> int: ... + def glIsShader(self, shader:int) -> int: ... + def glIsTexture(self, texture:int) -> int: ... + def glIsVertexArray(self, array:int) -> int: ... + def glLineWidth(self, width:float) -> None: ... + def glLinkProgram(self, program:int) -> None: ... + def glLogicOp(self, opcode:int) -> None: ... + def glMapBuffer(self, target:int, access:int) -> int: ... + def glMultiDrawArrays(self, mode:int, first:typing.Sequence, count:typing.Sequence, drawcount:int) -> None: ... + def glMultiTexCoordP1ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP1uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP2ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP2uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP3ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP3uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP4ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP4uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glNormalP3ui(self, type:int, coords:int) -> None: ... + def glNormalP3uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glPixelStoref(self, pname:int, param:float) -> None: ... + def glPixelStorei(self, pname:int, param:int) -> None: ... + def glPointParameterf(self, pname:int, param:float) -> None: ... + def glPointParameterfv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointParameteri(self, pname:int, param:int) -> None: ... + def glPointParameteriv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointSize(self, size:float) -> None: ... + def glPolygonMode(self, face:int, mode:int) -> None: ... + def glPolygonOffset(self, factor:float, units:float) -> None: ... + def glPrimitiveRestartIndex(self, index:int) -> None: ... + def glProvokingVertex(self, mode:int) -> None: ... + def glQueryCounter(self, id:int, target:int) -> None: ... + def glReadBuffer(self, mode:int) -> None: ... + def glRenderbufferStorage(self, target:int, internalformat:int, width:int, height:int) -> None: ... + def glRenderbufferStorageMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int) -> None: ... + def glSampleCoverage(self, value:float, invert:int) -> None: ... + def glSampleMaski(self, index:int, mask:int) -> None: ... + def glSamplerParameterIiv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameterIuiv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameterf(self, sampler:int, pname:int, param:float) -> None: ... + def glSamplerParameterfv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameteri(self, sampler:int, pname:int, param:int) -> None: ... + def glSamplerParameteriv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glScissor(self, x:int, y:int, width:int, height:int) -> None: ... + def glSecondaryColorP3ui(self, type:int, color:int) -> None: ... + def glSecondaryColorP3uiv(self, type:int, color:typing.Sequence) -> None: ... + def glStencilFunc(self, func:int, ref:int, mask:int) -> None: ... + def glStencilFuncSeparate(self, face:int, func:int, ref:int, mask:int) -> None: ... + def glStencilMask(self, mask:int) -> None: ... + def glStencilMaskSeparate(self, face:int, mask:int) -> None: ... + def glStencilOp(self, fail:int, zfail:int, zpass:int) -> None: ... + def glStencilOpSeparate(self, face:int, sfail:int, dpfail:int, dppass:int) -> None: ... + def glTexBuffer(self, target:int, internalformat:int, buffer:int) -> None: ... + def glTexCoordP1ui(self, type:int, coords:int) -> None: ... + def glTexCoordP1uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP2ui(self, type:int, coords:int) -> None: ... + def glTexCoordP2uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP3ui(self, type:int, coords:int) -> None: ... + def glTexCoordP3uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP4ui(self, type:int, coords:int) -> None: ... + def glTexCoordP4uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, fixedsamplelocations:int) -> None: ... + def glTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage3DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, depth:int, fixedsamplelocations:int) -> None: ... + def glTexParameterIiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterIuiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterf(self, target:int, pname:int, param:float) -> None: ... + def glTexParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameteri(self, target:int, pname:int, param:int) -> None: ... + def glTexParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, pixels:int) -> None: ... + def glUniform1f(self, location:int, v0:float) -> None: ... + def glUniform1fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1i(self, location:int, v0:int) -> None: ... + def glUniform1iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1ui(self, location:int, v0:int) -> None: ... + def glUniform1uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2f(self, location:int, v0:float, v1:float) -> None: ... + def glUniform2fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2i(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2ui(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3f(self, location:int, v0:float, v1:float, v2:float) -> None: ... + def glUniform3fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3i(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3ui(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4f(self, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glUniform4fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4i(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4ui(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniformBlockBinding(self, program:int, uniformBlockIndex:int, uniformBlockBinding:int) -> None: ... + def glUniformMatrix2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUnmapBuffer(self, target:int) -> int: ... + def glUseProgram(self, program:int) -> None: ... + def glValidateProgram(self, program:int) -> None: ... + def glVertexAttribDivisor(self, index:int, divisor:int) -> None: ... + def glVertexAttribIPointer(self, index:int, size:int, type:int, stride:int, pointer:int) -> None: ... + def glVertexAttribP1ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP1uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP2ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP2uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP3ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP3uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP4ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP4uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribPointer(self, index:int, size:int, type:int, normalized:int, stride:int, pointer:int) -> None: ... + def glVertexP2ui(self, type:int, value:int) -> None: ... + def glVertexP2uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexP3ui(self, type:int, value:int) -> None: ... + def glVertexP3uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexP4ui(self, type:int, value:int) -> None: ... + def glVertexP4uiv(self, type:int, value:typing.Sequence) -> None: ... + def glViewport(self, x:int, y:int, width:int, height:int) -> None: ... + def initializeOpenGLFunctions(self) -> bool: ... + + +class QOpenGLFunctions_4_0_Compatibility(PySide2.QtGui.QAbstractOpenGLFunctions): + + def __init__(self) -> None: ... + + def glAccum(self, op:int, value:float) -> None: ... + def glActiveTexture(self, texture:int) -> None: ... + def glAlphaFunc(self, func:int, ref:float) -> None: ... + def glArrayElement(self, i:int) -> None: ... + def glAttachShader(self, program:int, shader:int) -> None: ... + def glBegin(self, mode:int) -> None: ... + def glBeginConditionalRender(self, id:int, mode:int) -> None: ... + def glBeginQuery(self, target:int, id:int) -> None: ... + def glBeginQueryIndexed(self, target:int, index:int, id:int) -> None: ... + def glBeginTransformFeedback(self, primitiveMode:int) -> None: ... + def glBindAttribLocation(self, program:int, index:int, name:bytes) -> None: ... + def glBindBuffer(self, target:int, buffer:int) -> None: ... + def glBindBufferBase(self, target:int, index:int, buffer:int) -> None: ... + def glBindFragDataLocation(self, program:int, color:int, name:bytes) -> None: ... + def glBindFragDataLocationIndexed(self, program:int, colorNumber:int, index:int, name:bytes) -> None: ... + def glBindFramebuffer(self, target:int, framebuffer:int) -> None: ... + def glBindRenderbuffer(self, target:int, renderbuffer:int) -> None: ... + def glBindSampler(self, unit:int, sampler:int) -> None: ... + def glBindTexture(self, target:int, texture:int) -> None: ... + def glBindTransformFeedback(self, target:int, id:int) -> None: ... + def glBindVertexArray(self, array:int) -> None: ... + def glBlendColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glBlendEquation(self, mode:int) -> None: ... + def glBlendEquationSeparate(self, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendEquationSeparatei(self, buf:int, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendEquationi(self, buf:int, mode:int) -> None: ... + def glBlendFunc(self, sfactor:int, dfactor:int) -> None: ... + def glBlendFuncSeparate(self, sfactorRGB:int, dfactorRGB:int, sfactorAlpha:int, dfactorAlpha:int) -> None: ... + def glBlendFuncSeparatei(self, buf:int, srcRGB:int, dstRGB:int, srcAlpha:int, dstAlpha:int) -> None: ... + def glBlendFunci(self, buf:int, src:int, dst:int) -> None: ... + def glBlitFramebuffer(self, srcX0:int, srcY0:int, srcX1:int, srcY1:int, dstX0:int, dstY0:int, dstX1:int, dstY1:int, mask:int, filter:int) -> None: ... + def glCallList(self, list:int) -> None: ... + def glCallLists(self, n:int, type:int, lists:int) -> None: ... + def glCheckFramebufferStatus(self, target:int) -> int: ... + def glClampColor(self, target:int, clamp:int) -> None: ... + def glClear(self, mask:int) -> None: ... + def glClearAccum(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearBufferfi(self, buffer:int, drawbuffer:int, depth:float, stencil:int) -> None: ... + def glClearBufferfv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferuiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearDepth(self, depth:float) -> None: ... + def glClearIndex(self, c:float) -> None: ... + def glClearStencil(self, s:int) -> None: ... + def glClientActiveTexture(self, texture:int) -> None: ... + def glClipPlane(self, plane:int, equation:typing.Sequence) -> None: ... + def glColor3b(self, red:int, green:int, blue:int) -> None: ... + def glColor3bv(self, v:bytes) -> None: ... + def glColor3d(self, red:float, green:float, blue:float) -> None: ... + def glColor3dv(self, v:typing.Sequence) -> None: ... + def glColor3f(self, red:float, green:float, blue:float) -> None: ... + def glColor3fv(self, v:typing.Sequence) -> None: ... + def glColor3i(self, red:int, green:int, blue:int) -> None: ... + def glColor3iv(self, v:typing.Sequence) -> None: ... + def glColor3s(self, red:int, green:int, blue:int) -> None: ... + def glColor3sv(self, v:typing.Sequence) -> None: ... + def glColor3ub(self, red:int, green:int, blue:int) -> None: ... + def glColor3ubv(self, v:bytes) -> None: ... + def glColor3ui(self, red:int, green:int, blue:int) -> None: ... + def glColor3uiv(self, v:typing.Sequence) -> None: ... + def glColor3us(self, red:int, green:int, blue:int) -> None: ... + def glColor3usv(self, v:typing.Sequence) -> None: ... + def glColor4b(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4bv(self, v:bytes) -> None: ... + def glColor4d(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4dv(self, v:typing.Sequence) -> None: ... + def glColor4f(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4fv(self, v:typing.Sequence) -> None: ... + def glColor4i(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4iv(self, v:typing.Sequence) -> None: ... + def glColor4s(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4sv(self, v:typing.Sequence) -> None: ... + def glColor4ub(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4ubv(self, v:bytes) -> None: ... + def glColor4ui(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4uiv(self, v:typing.Sequence) -> None: ... + def glColor4us(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4usv(self, v:typing.Sequence) -> None: ... + def glColorMask(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColorMaski(self, index:int, r:int, g:int, b:int, a:int) -> None: ... + def glColorMaterial(self, face:int, mode:int) -> None: ... + def glColorP3ui(self, type:int, color:int) -> None: ... + def glColorP3uiv(self, type:int, color:typing.Sequence) -> None: ... + def glColorP4ui(self, type:int, color:int) -> None: ... + def glColorP4uiv(self, type:int, color:typing.Sequence) -> None: ... + def glColorPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glColorSubTable(self, target:int, start:int, count:int, format:int, type:int, data:int) -> None: ... + def glColorTable(self, target:int, internalformat:int, width:int, format:int, type:int, table:int) -> None: ... + def glColorTableParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glColorTableParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glCompileShader(self, shader:int) -> None: ... + def glCompressedTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, imageSize:int, data:int) -> None: ... + def glConvolutionFilter1D(self, target:int, internalformat:int, width:int, format:int, type:int, image:int) -> None: ... + def glConvolutionFilter2D(self, target:int, internalformat:int, width:int, height:int, format:int, type:int, image:int) -> None: ... + def glConvolutionParameterf(self, target:int, pname:int, params:float) -> None: ... + def glConvolutionParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glConvolutionParameteri(self, target:int, pname:int, params:int) -> None: ... + def glConvolutionParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glCopyColorSubTable(self, target:int, start:int, x:int, y:int, width:int) -> None: ... + def glCopyColorTable(self, target:int, internalformat:int, x:int, y:int, width:int) -> None: ... + def glCopyConvolutionFilter1D(self, target:int, internalformat:int, x:int, y:int, width:int) -> None: ... + def glCopyConvolutionFilter2D(self, target:int, internalformat:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyPixels(self, x:int, y:int, width:int, height:int, type:int) -> None: ... + def glCopyTexImage1D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, border:int) -> None: ... + def glCopyTexImage2D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, height:int, border:int) -> None: ... + def glCopyTexSubImage1D(self, target:int, level:int, xoffset:int, x:int, y:int, width:int) -> None: ... + def glCopyTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCreateProgram(self) -> int: ... + def glCreateShader(self, type:int) -> int: ... + def glCullFace(self, mode:int) -> None: ... + def glDeleteBuffers(self, n:int, buffers:typing.Sequence) -> None: ... + def glDeleteFramebuffers(self, n:int, framebuffers:typing.Sequence) -> None: ... + def glDeleteLists(self, list:int, range:int) -> None: ... + def glDeleteProgram(self, program:int) -> None: ... + def glDeleteQueries(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteRenderbuffers(self, n:int, renderbuffers:typing.Sequence) -> None: ... + def glDeleteSamplers(self, count:int, samplers:typing.Sequence) -> None: ... + def glDeleteShader(self, shader:int) -> None: ... + def glDeleteTextures(self, n:int, textures:typing.Sequence) -> None: ... + def glDeleteTransformFeedbacks(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteVertexArrays(self, n:int, arrays:typing.Sequence) -> None: ... + def glDepthFunc(self, func:int) -> None: ... + def glDepthMask(self, flag:int) -> None: ... + def glDepthRange(self, nearVal:float, farVal:float) -> None: ... + def glDetachShader(self, program:int, shader:int) -> None: ... + def glDisable(self, cap:int) -> None: ... + def glDisableClientState(self, array:int) -> None: ... + def glDisableVertexAttribArray(self, index:int) -> None: ... + def glDisablei(self, target:int, index:int) -> None: ... + def glDrawArrays(self, mode:int, first:int, count:int) -> None: ... + def glDrawArraysIndirect(self, mode:int, indirect:int) -> None: ... + def glDrawArraysInstanced(self, mode:int, first:int, count:int, instancecount:int) -> None: ... + def glDrawBuffer(self, mode:int) -> None: ... + def glDrawBuffers(self, n:int, bufs:typing.Sequence) -> None: ... + def glDrawElements(self, mode:int, count:int, type:int, indices:int) -> None: ... + def glDrawElementsBaseVertex(self, mode:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glDrawElementsIndirect(self, mode:int, type:int, indirect:int) -> None: ... + def glDrawElementsInstanced(self, mode:int, count:int, type:int, indices:int, instancecount:int) -> None: ... + def glDrawElementsInstancedBaseVertex(self, mode:int, count:int, type:int, indices:int, instancecount:int, basevertex:int) -> None: ... + def glDrawPixels(self, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glDrawRangeElements(self, mode:int, start:int, end:int, count:int, type:int, indices:int) -> None: ... + def glDrawRangeElementsBaseVertex(self, mode:int, start:int, end:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glDrawTransformFeedback(self, mode:int, id:int) -> None: ... + def glDrawTransformFeedbackStream(self, mode:int, id:int, stream:int) -> None: ... + def glEdgeFlag(self, flag:int) -> None: ... + def glEdgeFlagPointer(self, stride:int, pointer:int) -> None: ... + def glEnable(self, cap:int) -> None: ... + def glEnableClientState(self, array:int) -> None: ... + def glEnableVertexAttribArray(self, index:int) -> None: ... + def glEnablei(self, target:int, index:int) -> None: ... + def glEnd(self) -> None: ... + def glEndConditionalRender(self) -> None: ... + def glEndList(self) -> None: ... + def glEndQuery(self, target:int) -> None: ... + def glEndQueryIndexed(self, target:int, index:int) -> None: ... + def glEndTransformFeedback(self) -> None: ... + def glEvalCoord1d(self, u:float) -> None: ... + def glEvalCoord1dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord1f(self, u:float) -> None: ... + def glEvalCoord1fv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2d(self, u:float, v:float) -> None: ... + def glEvalCoord2dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2f(self, u:float, v:float) -> None: ... + def glEvalCoord2fv(self, u:typing.Sequence) -> None: ... + def glEvalMesh1(self, mode:int, i1:int, i2:int) -> None: ... + def glEvalMesh2(self, mode:int, i1:int, i2:int, j1:int, j2:int) -> None: ... + def glEvalPoint1(self, i:int) -> None: ... + def glEvalPoint2(self, i:int, j:int) -> None: ... + def glFinish(self) -> None: ... + def glFlush(self) -> None: ... + def glFogCoordPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glFogCoordd(self, coord:float) -> None: ... + def glFogCoorddv(self, coord:typing.Sequence) -> None: ... + def glFogCoordf(self, coord:float) -> None: ... + def glFogCoordfv(self, coord:typing.Sequence) -> None: ... + def glFogf(self, pname:int, param:float) -> None: ... + def glFogfv(self, pname:int, params:typing.Sequence) -> None: ... + def glFogi(self, pname:int, param:int) -> None: ... + def glFogiv(self, pname:int, params:typing.Sequence) -> None: ... + def glFramebufferRenderbuffer(self, target:int, attachment:int, renderbuffertarget:int, renderbuffer:int) -> None: ... + def glFramebufferTexture(self, target:int, attachment:int, texture:int, level:int) -> None: ... + def glFramebufferTexture1D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture2D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture3D(self, target:int, attachment:int, textarget:int, texture:int, level:int, zoffset:int) -> None: ... + def glFramebufferTextureLayer(self, target:int, attachment:int, texture:int, level:int, layer:int) -> None: ... + def glFrontFace(self, mode:int) -> None: ... + def glFrustum(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glGenLists(self, range:int) -> int: ... + def glGenerateMipmap(self, target:int) -> None: ... + def glGetAttribLocation(self, program:int, name:bytes) -> int: ... + def glGetError(self) -> int: ... + def glGetFragDataIndex(self, program:int, name:bytes) -> int: ... + def glGetFragDataLocation(self, program:int, name:bytes) -> int: ... + def glGetString(self, name:int) -> bytes: ... + def glGetStringi(self, name:int, index:int) -> bytes: ... + def glGetSubroutineIndex(self, program:int, shadertype:int, name:bytes) -> int: ... + def glGetSubroutineUniformLocation(self, program:int, shadertype:int, name:bytes) -> int: ... + def glGetUniformBlockIndex(self, program:int, uniformBlockName:bytes) -> int: ... + def glGetUniformLocation(self, program:int, name:bytes) -> int: ... + def glHint(self, target:int, mode:int) -> None: ... + def glHistogram(self, target:int, width:int, internalformat:int, sink:int) -> None: ... + def glIndexMask(self, mask:int) -> None: ... + def glIndexPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glIndexd(self, c:float) -> None: ... + def glIndexdv(self, c:typing.Sequence) -> None: ... + def glIndexf(self, c:float) -> None: ... + def glIndexfv(self, c:typing.Sequence) -> None: ... + def glIndexi(self, c:int) -> None: ... + def glIndexiv(self, c:typing.Sequence) -> None: ... + def glIndexs(self, c:int) -> None: ... + def glIndexsv(self, c:typing.Sequence) -> None: ... + def glIndexub(self, c:int) -> None: ... + def glIndexubv(self, c:bytes) -> None: ... + def glInitNames(self) -> None: ... + def glInterleavedArrays(self, format:int, stride:int, pointer:int) -> None: ... + def glIsBuffer(self, buffer:int) -> int: ... + def glIsEnabled(self, cap:int) -> int: ... + def glIsEnabledi(self, target:int, index:int) -> int: ... + def glIsFramebuffer(self, framebuffer:int) -> int: ... + def glIsList(self, list:int) -> int: ... + def glIsProgram(self, program:int) -> int: ... + def glIsQuery(self, id:int) -> int: ... + def glIsRenderbuffer(self, renderbuffer:int) -> int: ... + def glIsSampler(self, sampler:int) -> int: ... + def glIsShader(self, shader:int) -> int: ... + def glIsTexture(self, texture:int) -> int: ... + def glIsTransformFeedback(self, id:int) -> int: ... + def glIsVertexArray(self, array:int) -> int: ... + def glLightModelf(self, pname:int, param:float) -> None: ... + def glLightModelfv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightModeli(self, pname:int, param:int) -> None: ... + def glLightModeliv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightf(self, light:int, pname:int, param:float) -> None: ... + def glLightfv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLighti(self, light:int, pname:int, param:int) -> None: ... + def glLightiv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLineStipple(self, factor:int, pattern:int) -> None: ... + def glLineWidth(self, width:float) -> None: ... + def glLinkProgram(self, program:int) -> None: ... + def glListBase(self, base:int) -> None: ... + def glLoadIdentity(self) -> None: ... + def glLoadMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadMatrixf(self, m:typing.Sequence) -> None: ... + def glLoadName(self, name:int) -> None: ... + def glLoadTransposeMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadTransposeMatrixf(self, m:typing.Sequence) -> None: ... + def glLogicOp(self, opcode:int) -> None: ... + def glMap1d(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap1f(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap2d(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMap2f(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMapBuffer(self, target:int, access:int) -> int: ... + def glMapGrid1d(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid1f(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid2d(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMapGrid2f(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMaterialf(self, face:int, pname:int, param:float) -> None: ... + def glMaterialfv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMateriali(self, face:int, pname:int, param:int) -> None: ... + def glMaterialiv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMatrixMode(self, mode:int) -> None: ... + def glMinSampleShading(self, value:float) -> None: ... + def glMinmax(self, target:int, internalformat:int, sink:int) -> None: ... + def glMultMatrixd(self, m:typing.Sequence) -> None: ... + def glMultMatrixf(self, m:typing.Sequence) -> None: ... + def glMultTransposeMatrixd(self, m:typing.Sequence) -> None: ... + def glMultTransposeMatrixf(self, m:typing.Sequence) -> None: ... + def glMultiDrawArrays(self, mode:int, first:typing.Sequence, count:typing.Sequence, drawcount:int) -> None: ... + def glMultiTexCoord1d(self, target:int, s:float) -> None: ... + def glMultiTexCoord1dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1f(self, target:int, s:float) -> None: ... + def glMultiTexCoord1fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1i(self, target:int, s:int) -> None: ... + def glMultiTexCoord1iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1s(self, target:int, s:int) -> None: ... + def glMultiTexCoord1sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2d(self, target:int, s:float, t:float) -> None: ... + def glMultiTexCoord2dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2f(self, target:int, s:float, t:float) -> None: ... + def glMultiTexCoord2fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2i(self, target:int, s:int, t:int) -> None: ... + def glMultiTexCoord2iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2s(self, target:int, s:int, t:int) -> None: ... + def glMultiTexCoord2sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3d(self, target:int, s:float, t:float, r:float) -> None: ... + def glMultiTexCoord3dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3f(self, target:int, s:float, t:float, r:float) -> None: ... + def glMultiTexCoord3fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3i(self, target:int, s:int, t:int, r:int) -> None: ... + def glMultiTexCoord3iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3s(self, target:int, s:int, t:int, r:int) -> None: ... + def glMultiTexCoord3sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4d(self, target:int, s:float, t:float, r:float, q:float) -> None: ... + def glMultiTexCoord4dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4f(self, target:int, s:float, t:float, r:float, q:float) -> None: ... + def glMultiTexCoord4fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4i(self, target:int, s:int, t:int, r:int, q:int) -> None: ... + def glMultiTexCoord4iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4s(self, target:int, s:int, t:int, r:int, q:int) -> None: ... + def glMultiTexCoord4sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoordP1ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP1uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP2ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP2uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP3ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP3uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP4ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP4uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glNewList(self, list:int, mode:int) -> None: ... + def glNormal3b(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3bv(self, v:bytes) -> None: ... + def glNormal3d(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3dv(self, v:typing.Sequence) -> None: ... + def glNormal3f(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3fv(self, v:typing.Sequence) -> None: ... + def glNormal3i(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3iv(self, v:typing.Sequence) -> None: ... + def glNormal3s(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3sv(self, v:typing.Sequence) -> None: ... + def glNormalP3ui(self, type:int, coords:int) -> None: ... + def glNormalP3uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glNormalPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glOrtho(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glPassThrough(self, token:float) -> None: ... + def glPatchParameterfv(self, pname:int, values:typing.Sequence) -> None: ... + def glPatchParameteri(self, pname:int, value:int) -> None: ... + def glPauseTransformFeedback(self) -> None: ... + def glPixelMapfv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapuiv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapusv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelStoref(self, pname:int, param:float) -> None: ... + def glPixelStorei(self, pname:int, param:int) -> None: ... + def glPixelTransferf(self, pname:int, param:float) -> None: ... + def glPixelTransferi(self, pname:int, param:int) -> None: ... + def glPixelZoom(self, xfactor:float, yfactor:float) -> None: ... + def glPointParameterf(self, pname:int, param:float) -> None: ... + def glPointParameterfv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointParameteri(self, pname:int, param:int) -> None: ... + def glPointParameteriv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointSize(self, size:float) -> None: ... + def glPolygonMode(self, face:int, mode:int) -> None: ... + def glPolygonOffset(self, factor:float, units:float) -> None: ... + def glPopAttrib(self) -> None: ... + def glPopClientAttrib(self) -> None: ... + def glPopMatrix(self) -> None: ... + def glPopName(self) -> None: ... + def glPrimitiveRestartIndex(self, index:int) -> None: ... + def glPrioritizeTextures(self, n:int, textures:typing.Sequence, priorities:typing.Sequence) -> None: ... + def glProvokingVertex(self, mode:int) -> None: ... + def glPushAttrib(self, mask:int) -> None: ... + def glPushClientAttrib(self, mask:int) -> None: ... + def glPushMatrix(self) -> None: ... + def glPushName(self, name:int) -> None: ... + def glQueryCounter(self, id:int, target:int) -> None: ... + def glRasterPos2d(self, x:float, y:float) -> None: ... + def glRasterPos2dv(self, v:typing.Sequence) -> None: ... + def glRasterPos2f(self, x:float, y:float) -> None: ... + def glRasterPos2fv(self, v:typing.Sequence) -> None: ... + def glRasterPos2i(self, x:int, y:int) -> None: ... + def glRasterPos2iv(self, v:typing.Sequence) -> None: ... + def glRasterPos2s(self, x:int, y:int) -> None: ... + def glRasterPos2sv(self, v:typing.Sequence) -> None: ... + def glRasterPos3d(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3dv(self, v:typing.Sequence) -> None: ... + def glRasterPos3f(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3fv(self, v:typing.Sequence) -> None: ... + def glRasterPos3i(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3iv(self, v:typing.Sequence) -> None: ... + def glRasterPos3s(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3sv(self, v:typing.Sequence) -> None: ... + def glRasterPos4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4dv(self, v:typing.Sequence) -> None: ... + def glRasterPos4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4fv(self, v:typing.Sequence) -> None: ... + def glRasterPos4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4iv(self, v:typing.Sequence) -> None: ... + def glRasterPos4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4sv(self, v:typing.Sequence) -> None: ... + def glReadBuffer(self, mode:int) -> None: ... + def glRectd(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectdv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRectf(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectfv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRecti(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectiv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRects(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectsv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRenderMode(self, mode:int) -> int: ... + def glRenderbufferStorage(self, target:int, internalformat:int, width:int, height:int) -> None: ... + def glRenderbufferStorageMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int) -> None: ... + def glResetHistogram(self, target:int) -> None: ... + def glResetMinmax(self, target:int) -> None: ... + def glResumeTransformFeedback(self) -> None: ... + def glRotated(self, angle:float, x:float, y:float, z:float) -> None: ... + def glRotatef(self, angle:float, x:float, y:float, z:float) -> None: ... + def glSampleCoverage(self, value:float, invert:int) -> None: ... + def glSampleMaski(self, index:int, mask:int) -> None: ... + def glSamplerParameterIiv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameterIuiv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameterf(self, sampler:int, pname:int, param:float) -> None: ... + def glSamplerParameterfv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameteri(self, sampler:int, pname:int, param:int) -> None: ... + def glSamplerParameteriv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glScaled(self, x:float, y:float, z:float) -> None: ... + def glScalef(self, x:float, y:float, z:float) -> None: ... + def glScissor(self, x:int, y:int, width:int, height:int) -> None: ... + def glSecondaryColor3b(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3bv(self, v:bytes) -> None: ... + def glSecondaryColor3d(self, red:float, green:float, blue:float) -> None: ... + def glSecondaryColor3dv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3f(self, red:float, green:float, blue:float) -> None: ... + def glSecondaryColor3fv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3i(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3iv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3s(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3sv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3ub(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3ubv(self, v:bytes) -> None: ... + def glSecondaryColor3ui(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3uiv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3us(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3usv(self, v:typing.Sequence) -> None: ... + def glSecondaryColorP3ui(self, type:int, color:int) -> None: ... + def glSecondaryColorP3uiv(self, type:int, color:typing.Sequence) -> None: ... + def glSecondaryColorPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glSeparableFilter2D(self, target:int, internalformat:int, width:int, height:int, format:int, type:int, row:int, column:int) -> None: ... + def glShadeModel(self, mode:int) -> None: ... + def glStencilFunc(self, func:int, ref:int, mask:int) -> None: ... + def glStencilFuncSeparate(self, face:int, func:int, ref:int, mask:int) -> None: ... + def glStencilMask(self, mask:int) -> None: ... + def glStencilMaskSeparate(self, face:int, mask:int) -> None: ... + def glStencilOp(self, fail:int, zfail:int, zpass:int) -> None: ... + def glStencilOpSeparate(self, face:int, sfail:int, dpfail:int, dppass:int) -> None: ... + def glTexBuffer(self, target:int, internalformat:int, buffer:int) -> None: ... + def glTexCoord1d(self, s:float) -> None: ... + def glTexCoord1dv(self, v:typing.Sequence) -> None: ... + def glTexCoord1f(self, s:float) -> None: ... + def glTexCoord1fv(self, v:typing.Sequence) -> None: ... + def glTexCoord1i(self, s:int) -> None: ... + def glTexCoord1iv(self, v:typing.Sequence) -> None: ... + def glTexCoord1s(self, s:int) -> None: ... + def glTexCoord1sv(self, v:typing.Sequence) -> None: ... + def glTexCoord2d(self, s:float, t:float) -> None: ... + def glTexCoord2dv(self, v:typing.Sequence) -> None: ... + def glTexCoord2f(self, s:float, t:float) -> None: ... + def glTexCoord2fv(self, v:typing.Sequence) -> None: ... + def glTexCoord2i(self, s:int, t:int) -> None: ... + def glTexCoord2iv(self, v:typing.Sequence) -> None: ... + def glTexCoord2s(self, s:int, t:int) -> None: ... + def glTexCoord2sv(self, v:typing.Sequence) -> None: ... + def glTexCoord3d(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3dv(self, v:typing.Sequence) -> None: ... + def glTexCoord3f(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3fv(self, v:typing.Sequence) -> None: ... + def glTexCoord3i(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3iv(self, v:typing.Sequence) -> None: ... + def glTexCoord3s(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3sv(self, v:typing.Sequence) -> None: ... + def glTexCoord4d(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4dv(self, v:typing.Sequence) -> None: ... + def glTexCoord4f(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4fv(self, v:typing.Sequence) -> None: ... + def glTexCoord4i(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4iv(self, v:typing.Sequence) -> None: ... + def glTexCoord4s(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4sv(self, v:typing.Sequence) -> None: ... + def glTexCoordP1ui(self, type:int, coords:int) -> None: ... + def glTexCoordP1uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP2ui(self, type:int, coords:int) -> None: ... + def glTexCoordP2uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP3ui(self, type:int, coords:int) -> None: ... + def glTexCoordP3uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP4ui(self, type:int, coords:int) -> None: ... + def glTexCoordP4uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glTexEnvf(self, target:int, pname:int, param:float) -> None: ... + def glTexEnvfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexEnvi(self, target:int, pname:int, param:int) -> None: ... + def glTexEnviv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGend(self, coord:int, pname:int, param:float) -> None: ... + def glTexGendv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGenf(self, coord:int, pname:int, param:float) -> None: ... + def glTexGenfv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGeni(self, coord:int, pname:int, param:int) -> None: ... + def glTexGeniv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, fixedsamplelocations:int) -> None: ... + def glTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage3DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, depth:int, fixedsamplelocations:int) -> None: ... + def glTexParameterIiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterIuiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterf(self, target:int, pname:int, param:float) -> None: ... + def glTexParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameteri(self, target:int, pname:int, param:int) -> None: ... + def glTexParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, pixels:int) -> None: ... + def glTranslated(self, x:float, y:float, z:float) -> None: ... + def glTranslatef(self, x:float, y:float, z:float) -> None: ... + def glUniform1d(self, location:int, x:float) -> None: ... + def glUniform1dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1f(self, location:int, v0:float) -> None: ... + def glUniform1fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1i(self, location:int, v0:int) -> None: ... + def glUniform1iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1ui(self, location:int, v0:int) -> None: ... + def glUniform1uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2d(self, location:int, x:float, y:float) -> None: ... + def glUniform2dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2f(self, location:int, v0:float, v1:float) -> None: ... + def glUniform2fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2i(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2ui(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3d(self, location:int, x:float, y:float, z:float) -> None: ... + def glUniform3dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3f(self, location:int, v0:float, v1:float, v2:float) -> None: ... + def glUniform3fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3i(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3ui(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4d(self, location:int, x:float, y:float, z:float, w:float) -> None: ... + def glUniform4dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4f(self, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glUniform4fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4i(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4ui(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniformBlockBinding(self, program:int, uniformBlockIndex:int, uniformBlockBinding:int) -> None: ... + def glUniformMatrix2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformSubroutinesuiv(self, shadertype:int, count:int, indices:typing.Sequence) -> None: ... + def glUnmapBuffer(self, target:int) -> int: ... + def glUseProgram(self, program:int) -> None: ... + def glValidateProgram(self, program:int) -> None: ... + def glVertex2d(self, x:float, y:float) -> None: ... + def glVertex2dv(self, v:typing.Sequence) -> None: ... + def glVertex2f(self, x:float, y:float) -> None: ... + def glVertex2fv(self, v:typing.Sequence) -> None: ... + def glVertex2i(self, x:int, y:int) -> None: ... + def glVertex2iv(self, v:typing.Sequence) -> None: ... + def glVertex2s(self, x:int, y:int) -> None: ... + def glVertex2sv(self, v:typing.Sequence) -> None: ... + def glVertex3d(self, x:float, y:float, z:float) -> None: ... + def glVertex3dv(self, v:typing.Sequence) -> None: ... + def glVertex3f(self, x:float, y:float, z:float) -> None: ... + def glVertex3fv(self, v:typing.Sequence) -> None: ... + def glVertex3i(self, x:int, y:int, z:int) -> None: ... + def glVertex3iv(self, v:typing.Sequence) -> None: ... + def glVertex3s(self, x:int, y:int, z:int) -> None: ... + def glVertex3sv(self, v:typing.Sequence) -> None: ... + def glVertex4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4dv(self, v:typing.Sequence) -> None: ... + def glVertex4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4fv(self, v:typing.Sequence) -> None: ... + def glVertex4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4iv(self, v:typing.Sequence) -> None: ... + def glVertex4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4sv(self, v:typing.Sequence) -> None: ... + def glVertexAttrib1d(self, index:int, x:float) -> None: ... + def glVertexAttrib1dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib1f(self, index:int, x:float) -> None: ... + def glVertexAttrib1fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib1s(self, index:int, x:int) -> None: ... + def glVertexAttrib1sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2d(self, index:int, x:float, y:float) -> None: ... + def glVertexAttrib2dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2f(self, index:int, x:float, y:float) -> None: ... + def glVertexAttrib2fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2s(self, index:int, x:int, y:int) -> None: ... + def glVertexAttrib2sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3d(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttrib3dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3f(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttrib3fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3s(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttrib3sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nbv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4Niv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nsv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nub(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttrib4Nubv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4Nuiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nusv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4bv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4d(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttrib4dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4f(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttrib4fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4s(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttrib4sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4ubv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4usv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribDivisor(self, index:int, divisor:int) -> None: ... + def glVertexAttribI1i(self, index:int, x:int) -> None: ... + def glVertexAttribI1iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI1ui(self, index:int, x:int) -> None: ... + def glVertexAttribI1uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI2i(self, index:int, x:int, y:int) -> None: ... + def glVertexAttribI2iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI2ui(self, index:int, x:int, y:int) -> None: ... + def glVertexAttribI2uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI3i(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttribI3iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI3ui(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttribI3uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4bv(self, index:int, v:bytes) -> None: ... + def glVertexAttribI4i(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttribI4iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4ubv(self, index:int, v:bytes) -> None: ... + def glVertexAttribI4ui(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttribI4uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4usv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribIPointer(self, index:int, size:int, type:int, stride:int, pointer:int) -> None: ... + def glVertexAttribP1ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP1uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP2ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP2uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP3ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP3uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP4ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP4uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribPointer(self, index:int, size:int, type:int, normalized:int, stride:int, pointer:int) -> None: ... + def glVertexP2ui(self, type:int, value:int) -> None: ... + def glVertexP2uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexP3ui(self, type:int, value:int) -> None: ... + def glVertexP3uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexP4ui(self, type:int, value:int) -> None: ... + def glVertexP4uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glViewport(self, x:int, y:int, width:int, height:int) -> None: ... + def glWindowPos2d(self, x:float, y:float) -> None: ... + def glWindowPos2dv(self, v:typing.Sequence) -> None: ... + def glWindowPos2f(self, x:float, y:float) -> None: ... + def glWindowPos2fv(self, v:typing.Sequence) -> None: ... + def glWindowPos2i(self, x:int, y:int) -> None: ... + def glWindowPos2iv(self, v:typing.Sequence) -> None: ... + def glWindowPos2s(self, x:int, y:int) -> None: ... + def glWindowPos2sv(self, v:typing.Sequence) -> None: ... + def glWindowPos3d(self, x:float, y:float, z:float) -> None: ... + def glWindowPos3dv(self, v:typing.Sequence) -> None: ... + def glWindowPos3f(self, x:float, y:float, z:float) -> None: ... + def glWindowPos3fv(self, v:typing.Sequence) -> None: ... + def glWindowPos3i(self, x:int, y:int, z:int) -> None: ... + def glWindowPos3iv(self, v:typing.Sequence) -> None: ... + def glWindowPos3s(self, x:int, y:int, z:int) -> None: ... + def glWindowPos3sv(self, v:typing.Sequence) -> None: ... + def initializeOpenGLFunctions(self) -> bool: ... + + +class QOpenGLFunctions_4_0_Core(PySide2.QtGui.QAbstractOpenGLFunctions): + + def __init__(self) -> None: ... + + def glActiveTexture(self, texture:int) -> None: ... + def glAttachShader(self, program:int, shader:int) -> None: ... + def glBeginConditionalRender(self, id:int, mode:int) -> None: ... + def glBeginQuery(self, target:int, id:int) -> None: ... + def glBeginQueryIndexed(self, target:int, index:int, id:int) -> None: ... + def glBeginTransformFeedback(self, primitiveMode:int) -> None: ... + def glBindAttribLocation(self, program:int, index:int, name:bytes) -> None: ... + def glBindBuffer(self, target:int, buffer:int) -> None: ... + def glBindBufferBase(self, target:int, index:int, buffer:int) -> None: ... + def glBindFragDataLocation(self, program:int, color:int, name:bytes) -> None: ... + def glBindFragDataLocationIndexed(self, program:int, colorNumber:int, index:int, name:bytes) -> None: ... + def glBindFramebuffer(self, target:int, framebuffer:int) -> None: ... + def glBindRenderbuffer(self, target:int, renderbuffer:int) -> None: ... + def glBindSampler(self, unit:int, sampler:int) -> None: ... + def glBindTexture(self, target:int, texture:int) -> None: ... + def glBindTransformFeedback(self, target:int, id:int) -> None: ... + def glBindVertexArray(self, array:int) -> None: ... + def glBlendColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glBlendEquation(self, mode:int) -> None: ... + def glBlendEquationSeparate(self, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendEquationSeparatei(self, buf:int, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendEquationi(self, buf:int, mode:int) -> None: ... + def glBlendFunc(self, sfactor:int, dfactor:int) -> None: ... + def glBlendFuncSeparate(self, sfactorRGB:int, dfactorRGB:int, sfactorAlpha:int, dfactorAlpha:int) -> None: ... + def glBlendFuncSeparatei(self, buf:int, srcRGB:int, dstRGB:int, srcAlpha:int, dstAlpha:int) -> None: ... + def glBlendFunci(self, buf:int, src:int, dst:int) -> None: ... + def glBlitFramebuffer(self, srcX0:int, srcY0:int, srcX1:int, srcY1:int, dstX0:int, dstY0:int, dstX1:int, dstY1:int, mask:int, filter:int) -> None: ... + def glCheckFramebufferStatus(self, target:int) -> int: ... + def glClampColor(self, target:int, clamp:int) -> None: ... + def glClear(self, mask:int) -> None: ... + def glClearBufferfi(self, buffer:int, drawbuffer:int, depth:float, stencil:int) -> None: ... + def glClearBufferfv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferuiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearDepth(self, depth:float) -> None: ... + def glClearStencil(self, s:int) -> None: ... + def glColorMask(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColorMaski(self, index:int, r:int, g:int, b:int, a:int) -> None: ... + def glColorP3ui(self, type:int, color:int) -> None: ... + def glColorP3uiv(self, type:int, color:typing.Sequence) -> None: ... + def glColorP4ui(self, type:int, color:int) -> None: ... + def glColorP4uiv(self, type:int, color:typing.Sequence) -> None: ... + def glCompileShader(self, shader:int) -> None: ... + def glCompressedTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, imageSize:int, data:int) -> None: ... + def glCopyTexImage1D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, border:int) -> None: ... + def glCopyTexImage2D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, height:int, border:int) -> None: ... + def glCopyTexSubImage1D(self, target:int, level:int, xoffset:int, x:int, y:int, width:int) -> None: ... + def glCopyTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCreateProgram(self) -> int: ... + def glCreateShader(self, type:int) -> int: ... + def glCullFace(self, mode:int) -> None: ... + def glDeleteBuffers(self, n:int, buffers:typing.Sequence) -> None: ... + def glDeleteFramebuffers(self, n:int, framebuffers:typing.Sequence) -> None: ... + def glDeleteProgram(self, program:int) -> None: ... + def glDeleteQueries(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteRenderbuffers(self, n:int, renderbuffers:typing.Sequence) -> None: ... + def glDeleteSamplers(self, count:int, samplers:typing.Sequence) -> None: ... + def glDeleteShader(self, shader:int) -> None: ... + def glDeleteTextures(self, n:int, textures:typing.Sequence) -> None: ... + def glDeleteTransformFeedbacks(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteVertexArrays(self, n:int, arrays:typing.Sequence) -> None: ... + def glDepthFunc(self, func:int) -> None: ... + def glDepthMask(self, flag:int) -> None: ... + def glDepthRange(self, nearVal:float, farVal:float) -> None: ... + def glDetachShader(self, program:int, shader:int) -> None: ... + def glDisable(self, cap:int) -> None: ... + def glDisableVertexAttribArray(self, index:int) -> None: ... + def glDisablei(self, target:int, index:int) -> None: ... + def glDrawArrays(self, mode:int, first:int, count:int) -> None: ... + def glDrawArraysIndirect(self, mode:int, indirect:int) -> None: ... + def glDrawArraysInstanced(self, mode:int, first:int, count:int, instancecount:int) -> None: ... + def glDrawBuffer(self, mode:int) -> None: ... + def glDrawBuffers(self, n:int, bufs:typing.Sequence) -> None: ... + def glDrawElements(self, mode:int, count:int, type:int, indices:int) -> None: ... + def glDrawElementsBaseVertex(self, mode:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glDrawElementsIndirect(self, mode:int, type:int, indirect:int) -> None: ... + def glDrawElementsInstanced(self, mode:int, count:int, type:int, indices:int, instancecount:int) -> None: ... + def glDrawElementsInstancedBaseVertex(self, mode:int, count:int, type:int, indices:int, instancecount:int, basevertex:int) -> None: ... + def glDrawRangeElements(self, mode:int, start:int, end:int, count:int, type:int, indices:int) -> None: ... + def glDrawRangeElementsBaseVertex(self, mode:int, start:int, end:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glDrawTransformFeedback(self, mode:int, id:int) -> None: ... + def glDrawTransformFeedbackStream(self, mode:int, id:int, stream:int) -> None: ... + def glEnable(self, cap:int) -> None: ... + def glEnableVertexAttribArray(self, index:int) -> None: ... + def glEnablei(self, target:int, index:int) -> None: ... + def glEndConditionalRender(self) -> None: ... + def glEndQuery(self, target:int) -> None: ... + def glEndQueryIndexed(self, target:int, index:int) -> None: ... + def glEndTransformFeedback(self) -> None: ... + def glFinish(self) -> None: ... + def glFlush(self) -> None: ... + def glFramebufferRenderbuffer(self, target:int, attachment:int, renderbuffertarget:int, renderbuffer:int) -> None: ... + def glFramebufferTexture(self, target:int, attachment:int, texture:int, level:int) -> None: ... + def glFramebufferTexture1D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture2D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture3D(self, target:int, attachment:int, textarget:int, texture:int, level:int, zoffset:int) -> None: ... + def glFramebufferTextureLayer(self, target:int, attachment:int, texture:int, level:int, layer:int) -> None: ... + def glFrontFace(self, mode:int) -> None: ... + def glGenerateMipmap(self, target:int) -> None: ... + def glGetAttribLocation(self, program:int, name:bytes) -> int: ... + def glGetError(self) -> int: ... + def glGetFragDataIndex(self, program:int, name:bytes) -> int: ... + def glGetFragDataLocation(self, program:int, name:bytes) -> int: ... + def glGetString(self, name:int) -> bytes: ... + def glGetStringi(self, name:int, index:int) -> bytes: ... + def glGetSubroutineIndex(self, program:int, shadertype:int, name:bytes) -> int: ... + def glGetSubroutineUniformLocation(self, program:int, shadertype:int, name:bytes) -> int: ... + def glGetUniformBlockIndex(self, program:int, uniformBlockName:bytes) -> int: ... + def glGetUniformLocation(self, program:int, name:bytes) -> int: ... + def glHint(self, target:int, mode:int) -> None: ... + def glIndexub(self, c:int) -> None: ... + def glIndexubv(self, c:bytes) -> None: ... + def glIsBuffer(self, buffer:int) -> int: ... + def glIsEnabled(self, cap:int) -> int: ... + def glIsEnabledi(self, target:int, index:int) -> int: ... + def glIsFramebuffer(self, framebuffer:int) -> int: ... + def glIsProgram(self, program:int) -> int: ... + def glIsQuery(self, id:int) -> int: ... + def glIsRenderbuffer(self, renderbuffer:int) -> int: ... + def glIsSampler(self, sampler:int) -> int: ... + def glIsShader(self, shader:int) -> int: ... + def glIsTexture(self, texture:int) -> int: ... + def glIsTransformFeedback(self, id:int) -> int: ... + def glIsVertexArray(self, array:int) -> int: ... + def glLineWidth(self, width:float) -> None: ... + def glLinkProgram(self, program:int) -> None: ... + def glLogicOp(self, opcode:int) -> None: ... + def glMapBuffer(self, target:int, access:int) -> int: ... + def glMinSampleShading(self, value:float) -> None: ... + def glMultiDrawArrays(self, mode:int, first:typing.Sequence, count:typing.Sequence, drawcount:int) -> None: ... + def glMultiTexCoordP1ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP1uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP2ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP2uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP3ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP3uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP4ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP4uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glNormalP3ui(self, type:int, coords:int) -> None: ... + def glNormalP3uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glPatchParameterfv(self, pname:int, values:typing.Sequence) -> None: ... + def glPatchParameteri(self, pname:int, value:int) -> None: ... + def glPauseTransformFeedback(self) -> None: ... + def glPixelStoref(self, pname:int, param:float) -> None: ... + def glPixelStorei(self, pname:int, param:int) -> None: ... + def glPointParameterf(self, pname:int, param:float) -> None: ... + def glPointParameterfv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointParameteri(self, pname:int, param:int) -> None: ... + def glPointParameteriv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointSize(self, size:float) -> None: ... + def glPolygonMode(self, face:int, mode:int) -> None: ... + def glPolygonOffset(self, factor:float, units:float) -> None: ... + def glPrimitiveRestartIndex(self, index:int) -> None: ... + def glProvokingVertex(self, mode:int) -> None: ... + def glQueryCounter(self, id:int, target:int) -> None: ... + def glReadBuffer(self, mode:int) -> None: ... + def glRenderbufferStorage(self, target:int, internalformat:int, width:int, height:int) -> None: ... + def glRenderbufferStorageMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int) -> None: ... + def glResumeTransformFeedback(self) -> None: ... + def glSampleCoverage(self, value:float, invert:int) -> None: ... + def glSampleMaski(self, index:int, mask:int) -> None: ... + def glSamplerParameterIiv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameterIuiv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameterf(self, sampler:int, pname:int, param:float) -> None: ... + def glSamplerParameterfv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameteri(self, sampler:int, pname:int, param:int) -> None: ... + def glSamplerParameteriv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glScissor(self, x:int, y:int, width:int, height:int) -> None: ... + def glSecondaryColorP3ui(self, type:int, color:int) -> None: ... + def glSecondaryColorP3uiv(self, type:int, color:typing.Sequence) -> None: ... + def glStencilFunc(self, func:int, ref:int, mask:int) -> None: ... + def glStencilFuncSeparate(self, face:int, func:int, ref:int, mask:int) -> None: ... + def glStencilMask(self, mask:int) -> None: ... + def glStencilMaskSeparate(self, face:int, mask:int) -> None: ... + def glStencilOp(self, fail:int, zfail:int, zpass:int) -> None: ... + def glStencilOpSeparate(self, face:int, sfail:int, dpfail:int, dppass:int) -> None: ... + def glTexBuffer(self, target:int, internalformat:int, buffer:int) -> None: ... + def glTexCoordP1ui(self, type:int, coords:int) -> None: ... + def glTexCoordP1uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP2ui(self, type:int, coords:int) -> None: ... + def glTexCoordP2uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP3ui(self, type:int, coords:int) -> None: ... + def glTexCoordP3uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP4ui(self, type:int, coords:int) -> None: ... + def glTexCoordP4uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, fixedsamplelocations:int) -> None: ... + def glTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage3DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, depth:int, fixedsamplelocations:int) -> None: ... + def glTexParameterIiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterIuiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterf(self, target:int, pname:int, param:float) -> None: ... + def glTexParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameteri(self, target:int, pname:int, param:int) -> None: ... + def glTexParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, pixels:int) -> None: ... + def glUniform1d(self, location:int, x:float) -> None: ... + def glUniform1dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1f(self, location:int, v0:float) -> None: ... + def glUniform1fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1i(self, location:int, v0:int) -> None: ... + def glUniform1iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1ui(self, location:int, v0:int) -> None: ... + def glUniform1uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2d(self, location:int, x:float, y:float) -> None: ... + def glUniform2dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2f(self, location:int, v0:float, v1:float) -> None: ... + def glUniform2fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2i(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2ui(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3d(self, location:int, x:float, y:float, z:float) -> None: ... + def glUniform3dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3f(self, location:int, v0:float, v1:float, v2:float) -> None: ... + def glUniform3fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3i(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3ui(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4d(self, location:int, x:float, y:float, z:float, w:float) -> None: ... + def glUniform4dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4f(self, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glUniform4fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4i(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4ui(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniformBlockBinding(self, program:int, uniformBlockIndex:int, uniformBlockBinding:int) -> None: ... + def glUniformMatrix2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformSubroutinesuiv(self, shadertype:int, count:int, indices:typing.Sequence) -> None: ... + def glUnmapBuffer(self, target:int) -> int: ... + def glUseProgram(self, program:int) -> None: ... + def glValidateProgram(self, program:int) -> None: ... + def glVertexAttribDivisor(self, index:int, divisor:int) -> None: ... + def glVertexAttribIPointer(self, index:int, size:int, type:int, stride:int, pointer:int) -> None: ... + def glVertexAttribP1ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP1uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP2ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP2uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP3ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP3uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP4ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP4uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribPointer(self, index:int, size:int, type:int, normalized:int, stride:int, pointer:int) -> None: ... + def glVertexP2ui(self, type:int, value:int) -> None: ... + def glVertexP2uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexP3ui(self, type:int, value:int) -> None: ... + def glVertexP3uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexP4ui(self, type:int, value:int) -> None: ... + def glVertexP4uiv(self, type:int, value:typing.Sequence) -> None: ... + def glViewport(self, x:int, y:int, width:int, height:int) -> None: ... + def initializeOpenGLFunctions(self) -> bool: ... + + +class QOpenGLFunctions_4_1_Compatibility(PySide2.QtGui.QAbstractOpenGLFunctions): + + def __init__(self) -> None: ... + + def glAccum(self, op:int, value:float) -> None: ... + def glActiveShaderProgram(self, pipeline:int, program:int) -> None: ... + def glActiveTexture(self, texture:int) -> None: ... + def glAlphaFunc(self, func:int, ref:float) -> None: ... + def glArrayElement(self, i:int) -> None: ... + def glAttachShader(self, program:int, shader:int) -> None: ... + def glBegin(self, mode:int) -> None: ... + def glBeginConditionalRender(self, id:int, mode:int) -> None: ... + def glBeginQuery(self, target:int, id:int) -> None: ... + def glBeginQueryIndexed(self, target:int, index:int, id:int) -> None: ... + def glBeginTransformFeedback(self, primitiveMode:int) -> None: ... + def glBindAttribLocation(self, program:int, index:int, name:bytes) -> None: ... + def glBindBuffer(self, target:int, buffer:int) -> None: ... + def glBindBufferBase(self, target:int, index:int, buffer:int) -> None: ... + def glBindFragDataLocation(self, program:int, color:int, name:bytes) -> None: ... + def glBindFragDataLocationIndexed(self, program:int, colorNumber:int, index:int, name:bytes) -> None: ... + def glBindFramebuffer(self, target:int, framebuffer:int) -> None: ... + def glBindProgramPipeline(self, pipeline:int) -> None: ... + def glBindRenderbuffer(self, target:int, renderbuffer:int) -> None: ... + def glBindSampler(self, unit:int, sampler:int) -> None: ... + def glBindTexture(self, target:int, texture:int) -> None: ... + def glBindTransformFeedback(self, target:int, id:int) -> None: ... + def glBindVertexArray(self, array:int) -> None: ... + def glBlendColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glBlendEquation(self, mode:int) -> None: ... + def glBlendEquationSeparate(self, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendEquationSeparatei(self, buf:int, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendEquationi(self, buf:int, mode:int) -> None: ... + def glBlendFunc(self, sfactor:int, dfactor:int) -> None: ... + def glBlendFuncSeparate(self, sfactorRGB:int, dfactorRGB:int, sfactorAlpha:int, dfactorAlpha:int) -> None: ... + def glBlendFuncSeparatei(self, buf:int, srcRGB:int, dstRGB:int, srcAlpha:int, dstAlpha:int) -> None: ... + def glBlendFunci(self, buf:int, src:int, dst:int) -> None: ... + def glBlitFramebuffer(self, srcX0:int, srcY0:int, srcX1:int, srcY1:int, dstX0:int, dstY0:int, dstX1:int, dstY1:int, mask:int, filter:int) -> None: ... + def glCallList(self, list:int) -> None: ... + def glCallLists(self, n:int, type:int, lists:int) -> None: ... + def glCheckFramebufferStatus(self, target:int) -> int: ... + def glClampColor(self, target:int, clamp:int) -> None: ... + def glClear(self, mask:int) -> None: ... + def glClearAccum(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearBufferfi(self, buffer:int, drawbuffer:int, depth:float, stencil:int) -> None: ... + def glClearBufferfv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferuiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearDepth(self, depth:float) -> None: ... + def glClearDepthf(self, dd:float) -> None: ... + def glClearIndex(self, c:float) -> None: ... + def glClearStencil(self, s:int) -> None: ... + def glClientActiveTexture(self, texture:int) -> None: ... + def glClipPlane(self, plane:int, equation:typing.Sequence) -> None: ... + def glColor3b(self, red:int, green:int, blue:int) -> None: ... + def glColor3bv(self, v:bytes) -> None: ... + def glColor3d(self, red:float, green:float, blue:float) -> None: ... + def glColor3dv(self, v:typing.Sequence) -> None: ... + def glColor3f(self, red:float, green:float, blue:float) -> None: ... + def glColor3fv(self, v:typing.Sequence) -> None: ... + def glColor3i(self, red:int, green:int, blue:int) -> None: ... + def glColor3iv(self, v:typing.Sequence) -> None: ... + def glColor3s(self, red:int, green:int, blue:int) -> None: ... + def glColor3sv(self, v:typing.Sequence) -> None: ... + def glColor3ub(self, red:int, green:int, blue:int) -> None: ... + def glColor3ubv(self, v:bytes) -> None: ... + def glColor3ui(self, red:int, green:int, blue:int) -> None: ... + def glColor3uiv(self, v:typing.Sequence) -> None: ... + def glColor3us(self, red:int, green:int, blue:int) -> None: ... + def glColor3usv(self, v:typing.Sequence) -> None: ... + def glColor4b(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4bv(self, v:bytes) -> None: ... + def glColor4d(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4dv(self, v:typing.Sequence) -> None: ... + def glColor4f(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4fv(self, v:typing.Sequence) -> None: ... + def glColor4i(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4iv(self, v:typing.Sequence) -> None: ... + def glColor4s(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4sv(self, v:typing.Sequence) -> None: ... + def glColor4ub(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4ubv(self, v:bytes) -> None: ... + def glColor4ui(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4uiv(self, v:typing.Sequence) -> None: ... + def glColor4us(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4usv(self, v:typing.Sequence) -> None: ... + def glColorMask(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColorMaski(self, index:int, r:int, g:int, b:int, a:int) -> None: ... + def glColorMaterial(self, face:int, mode:int) -> None: ... + def glColorP3ui(self, type:int, color:int) -> None: ... + def glColorP3uiv(self, type:int, color:typing.Sequence) -> None: ... + def glColorP4ui(self, type:int, color:int) -> None: ... + def glColorP4uiv(self, type:int, color:typing.Sequence) -> None: ... + def glColorPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glColorSubTable(self, target:int, start:int, count:int, format:int, type:int, data:int) -> None: ... + def glColorTable(self, target:int, internalformat:int, width:int, format:int, type:int, table:int) -> None: ... + def glColorTableParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glColorTableParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glCompileShader(self, shader:int) -> None: ... + def glCompressedTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, imageSize:int, data:int) -> None: ... + def glConvolutionFilter1D(self, target:int, internalformat:int, width:int, format:int, type:int, image:int) -> None: ... + def glConvolutionFilter2D(self, target:int, internalformat:int, width:int, height:int, format:int, type:int, image:int) -> None: ... + def glConvolutionParameterf(self, target:int, pname:int, params:float) -> None: ... + def glConvolutionParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glConvolutionParameteri(self, target:int, pname:int, params:int) -> None: ... + def glConvolutionParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glCopyColorSubTable(self, target:int, start:int, x:int, y:int, width:int) -> None: ... + def glCopyColorTable(self, target:int, internalformat:int, x:int, y:int, width:int) -> None: ... + def glCopyConvolutionFilter1D(self, target:int, internalformat:int, x:int, y:int, width:int) -> None: ... + def glCopyConvolutionFilter2D(self, target:int, internalformat:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyPixels(self, x:int, y:int, width:int, height:int, type:int) -> None: ... + def glCopyTexImage1D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, border:int) -> None: ... + def glCopyTexImage2D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, height:int, border:int) -> None: ... + def glCopyTexSubImage1D(self, target:int, level:int, xoffset:int, x:int, y:int, width:int) -> None: ... + def glCopyTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCreateProgram(self) -> int: ... + def glCreateShader(self, type:int) -> int: ... + def glCullFace(self, mode:int) -> None: ... + def glDeleteBuffers(self, n:int, buffers:typing.Sequence) -> None: ... + def glDeleteFramebuffers(self, n:int, framebuffers:typing.Sequence) -> None: ... + def glDeleteLists(self, list:int, range:int) -> None: ... + def glDeleteProgram(self, program:int) -> None: ... + def glDeleteProgramPipelines(self, n:int, pipelines:typing.Sequence) -> None: ... + def glDeleteQueries(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteRenderbuffers(self, n:int, renderbuffers:typing.Sequence) -> None: ... + def glDeleteSamplers(self, count:int, samplers:typing.Sequence) -> None: ... + def glDeleteShader(self, shader:int) -> None: ... + def glDeleteTextures(self, n:int, textures:typing.Sequence) -> None: ... + def glDeleteTransformFeedbacks(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteVertexArrays(self, n:int, arrays:typing.Sequence) -> None: ... + def glDepthFunc(self, func:int) -> None: ... + def glDepthMask(self, flag:int) -> None: ... + def glDepthRange(self, nearVal:float, farVal:float) -> None: ... + def glDepthRangeArrayv(self, first:int, count:int, v:typing.Sequence) -> None: ... + def glDepthRangeIndexed(self, index:int, n:float, f:float) -> None: ... + def glDepthRangef(self, n:float, f:float) -> None: ... + def glDetachShader(self, program:int, shader:int) -> None: ... + def glDisable(self, cap:int) -> None: ... + def glDisableClientState(self, array:int) -> None: ... + def glDisableVertexAttribArray(self, index:int) -> None: ... + def glDisablei(self, target:int, index:int) -> None: ... + def glDrawArrays(self, mode:int, first:int, count:int) -> None: ... + def glDrawArraysIndirect(self, mode:int, indirect:int) -> None: ... + def glDrawArraysInstanced(self, mode:int, first:int, count:int, instancecount:int) -> None: ... + def glDrawBuffer(self, mode:int) -> None: ... + def glDrawBuffers(self, n:int, bufs:typing.Sequence) -> None: ... + def glDrawElements(self, mode:int, count:int, type:int, indices:int) -> None: ... + def glDrawElementsBaseVertex(self, mode:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glDrawElementsIndirect(self, mode:int, type:int, indirect:int) -> None: ... + def glDrawElementsInstanced(self, mode:int, count:int, type:int, indices:int, instancecount:int) -> None: ... + def glDrawElementsInstancedBaseVertex(self, mode:int, count:int, type:int, indices:int, instancecount:int, basevertex:int) -> None: ... + def glDrawPixels(self, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glDrawRangeElements(self, mode:int, start:int, end:int, count:int, type:int, indices:int) -> None: ... + def glDrawRangeElementsBaseVertex(self, mode:int, start:int, end:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glDrawTransformFeedback(self, mode:int, id:int) -> None: ... + def glDrawTransformFeedbackStream(self, mode:int, id:int, stream:int) -> None: ... + def glEdgeFlag(self, flag:int) -> None: ... + def glEdgeFlagPointer(self, stride:int, pointer:int) -> None: ... + def glEnable(self, cap:int) -> None: ... + def glEnableClientState(self, array:int) -> None: ... + def glEnableVertexAttribArray(self, index:int) -> None: ... + def glEnablei(self, target:int, index:int) -> None: ... + def glEnd(self) -> None: ... + def glEndConditionalRender(self) -> None: ... + def glEndList(self) -> None: ... + def glEndQuery(self, target:int) -> None: ... + def glEndQueryIndexed(self, target:int, index:int) -> None: ... + def glEndTransformFeedback(self) -> None: ... + def glEvalCoord1d(self, u:float) -> None: ... + def glEvalCoord1dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord1f(self, u:float) -> None: ... + def glEvalCoord1fv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2d(self, u:float, v:float) -> None: ... + def glEvalCoord2dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2f(self, u:float, v:float) -> None: ... + def glEvalCoord2fv(self, u:typing.Sequence) -> None: ... + def glEvalMesh1(self, mode:int, i1:int, i2:int) -> None: ... + def glEvalMesh2(self, mode:int, i1:int, i2:int, j1:int, j2:int) -> None: ... + def glEvalPoint1(self, i:int) -> None: ... + def glEvalPoint2(self, i:int, j:int) -> None: ... + def glFinish(self) -> None: ... + def glFlush(self) -> None: ... + def glFogCoordPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glFogCoordd(self, coord:float) -> None: ... + def glFogCoorddv(self, coord:typing.Sequence) -> None: ... + def glFogCoordf(self, coord:float) -> None: ... + def glFogCoordfv(self, coord:typing.Sequence) -> None: ... + def glFogf(self, pname:int, param:float) -> None: ... + def glFogfv(self, pname:int, params:typing.Sequence) -> None: ... + def glFogi(self, pname:int, param:int) -> None: ... + def glFogiv(self, pname:int, params:typing.Sequence) -> None: ... + def glFramebufferRenderbuffer(self, target:int, attachment:int, renderbuffertarget:int, renderbuffer:int) -> None: ... + def glFramebufferTexture(self, target:int, attachment:int, texture:int, level:int) -> None: ... + def glFramebufferTexture1D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture2D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture3D(self, target:int, attachment:int, textarget:int, texture:int, level:int, zoffset:int) -> None: ... + def glFramebufferTextureLayer(self, target:int, attachment:int, texture:int, level:int, layer:int) -> None: ... + def glFrontFace(self, mode:int) -> None: ... + def glFrustum(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glGenLists(self, range:int) -> int: ... + def glGenerateMipmap(self, target:int) -> None: ... + def glGetAttribLocation(self, program:int, name:bytes) -> int: ... + def glGetError(self) -> int: ... + def glGetFragDataIndex(self, program:int, name:bytes) -> int: ... + def glGetFragDataLocation(self, program:int, name:bytes) -> int: ... + def glGetString(self, name:int) -> bytes: ... + def glGetStringi(self, name:int, index:int) -> bytes: ... + def glGetSubroutineIndex(self, program:int, shadertype:int, name:bytes) -> int: ... + def glGetSubroutineUniformLocation(self, program:int, shadertype:int, name:bytes) -> int: ... + def glGetUniformBlockIndex(self, program:int, uniformBlockName:bytes) -> int: ... + def glGetUniformLocation(self, program:int, name:bytes) -> int: ... + def glHint(self, target:int, mode:int) -> None: ... + def glHistogram(self, target:int, width:int, internalformat:int, sink:int) -> None: ... + def glIndexMask(self, mask:int) -> None: ... + def glIndexPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glIndexd(self, c:float) -> None: ... + def glIndexdv(self, c:typing.Sequence) -> None: ... + def glIndexf(self, c:float) -> None: ... + def glIndexfv(self, c:typing.Sequence) -> None: ... + def glIndexi(self, c:int) -> None: ... + def glIndexiv(self, c:typing.Sequence) -> None: ... + def glIndexs(self, c:int) -> None: ... + def glIndexsv(self, c:typing.Sequence) -> None: ... + def glIndexub(self, c:int) -> None: ... + def glIndexubv(self, c:bytes) -> None: ... + def glInitNames(self) -> None: ... + def glInterleavedArrays(self, format:int, stride:int, pointer:int) -> None: ... + def glIsBuffer(self, buffer:int) -> int: ... + def glIsEnabled(self, cap:int) -> int: ... + def glIsEnabledi(self, target:int, index:int) -> int: ... + def glIsFramebuffer(self, framebuffer:int) -> int: ... + def glIsList(self, list:int) -> int: ... + def glIsProgram(self, program:int) -> int: ... + def glIsProgramPipeline(self, pipeline:int) -> int: ... + def glIsQuery(self, id:int) -> int: ... + def glIsRenderbuffer(self, renderbuffer:int) -> int: ... + def glIsSampler(self, sampler:int) -> int: ... + def glIsShader(self, shader:int) -> int: ... + def glIsTexture(self, texture:int) -> int: ... + def glIsTransformFeedback(self, id:int) -> int: ... + def glIsVertexArray(self, array:int) -> int: ... + def glLightModelf(self, pname:int, param:float) -> None: ... + def glLightModelfv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightModeli(self, pname:int, param:int) -> None: ... + def glLightModeliv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightf(self, light:int, pname:int, param:float) -> None: ... + def glLightfv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLighti(self, light:int, pname:int, param:int) -> None: ... + def glLightiv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLineStipple(self, factor:int, pattern:int) -> None: ... + def glLineWidth(self, width:float) -> None: ... + def glLinkProgram(self, program:int) -> None: ... + def glListBase(self, base:int) -> None: ... + def glLoadIdentity(self) -> None: ... + def glLoadMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadMatrixf(self, m:typing.Sequence) -> None: ... + def glLoadName(self, name:int) -> None: ... + def glLoadTransposeMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadTransposeMatrixf(self, m:typing.Sequence) -> None: ... + def glLogicOp(self, opcode:int) -> None: ... + def glMap1d(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap1f(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap2d(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMap2f(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMapBuffer(self, target:int, access:int) -> int: ... + def glMapGrid1d(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid1f(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid2d(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMapGrid2f(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMaterialf(self, face:int, pname:int, param:float) -> None: ... + def glMaterialfv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMateriali(self, face:int, pname:int, param:int) -> None: ... + def glMaterialiv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMatrixMode(self, mode:int) -> None: ... + def glMinSampleShading(self, value:float) -> None: ... + def glMinmax(self, target:int, internalformat:int, sink:int) -> None: ... + def glMultMatrixd(self, m:typing.Sequence) -> None: ... + def glMultMatrixf(self, m:typing.Sequence) -> None: ... + def glMultTransposeMatrixd(self, m:typing.Sequence) -> None: ... + def glMultTransposeMatrixf(self, m:typing.Sequence) -> None: ... + def glMultiDrawArrays(self, mode:int, first:typing.Sequence, count:typing.Sequence, drawcount:int) -> None: ... + def glMultiTexCoord1d(self, target:int, s:float) -> None: ... + def glMultiTexCoord1dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1f(self, target:int, s:float) -> None: ... + def glMultiTexCoord1fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1i(self, target:int, s:int) -> None: ... + def glMultiTexCoord1iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1s(self, target:int, s:int) -> None: ... + def glMultiTexCoord1sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2d(self, target:int, s:float, t:float) -> None: ... + def glMultiTexCoord2dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2f(self, target:int, s:float, t:float) -> None: ... + def glMultiTexCoord2fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2i(self, target:int, s:int, t:int) -> None: ... + def glMultiTexCoord2iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2s(self, target:int, s:int, t:int) -> None: ... + def glMultiTexCoord2sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3d(self, target:int, s:float, t:float, r:float) -> None: ... + def glMultiTexCoord3dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3f(self, target:int, s:float, t:float, r:float) -> None: ... + def glMultiTexCoord3fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3i(self, target:int, s:int, t:int, r:int) -> None: ... + def glMultiTexCoord3iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3s(self, target:int, s:int, t:int, r:int) -> None: ... + def glMultiTexCoord3sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4d(self, target:int, s:float, t:float, r:float, q:float) -> None: ... + def glMultiTexCoord4dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4f(self, target:int, s:float, t:float, r:float, q:float) -> None: ... + def glMultiTexCoord4fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4i(self, target:int, s:int, t:int, r:int, q:int) -> None: ... + def glMultiTexCoord4iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4s(self, target:int, s:int, t:int, r:int, q:int) -> None: ... + def glMultiTexCoord4sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoordP1ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP1uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP2ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP2uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP3ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP3uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP4ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP4uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glNewList(self, list:int, mode:int) -> None: ... + def glNormal3b(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3bv(self, v:bytes) -> None: ... + def glNormal3d(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3dv(self, v:typing.Sequence) -> None: ... + def glNormal3f(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3fv(self, v:typing.Sequence) -> None: ... + def glNormal3i(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3iv(self, v:typing.Sequence) -> None: ... + def glNormal3s(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3sv(self, v:typing.Sequence) -> None: ... + def glNormalP3ui(self, type:int, coords:int) -> None: ... + def glNormalP3uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glNormalPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glOrtho(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glPassThrough(self, token:float) -> None: ... + def glPatchParameterfv(self, pname:int, values:typing.Sequence) -> None: ... + def glPatchParameteri(self, pname:int, value:int) -> None: ... + def glPauseTransformFeedback(self) -> None: ... + def glPixelMapfv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapuiv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapusv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelStoref(self, pname:int, param:float) -> None: ... + def glPixelStorei(self, pname:int, param:int) -> None: ... + def glPixelTransferf(self, pname:int, param:float) -> None: ... + def glPixelTransferi(self, pname:int, param:int) -> None: ... + def glPixelZoom(self, xfactor:float, yfactor:float) -> None: ... + def glPointParameterf(self, pname:int, param:float) -> None: ... + def glPointParameterfv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointParameteri(self, pname:int, param:int) -> None: ... + def glPointParameteriv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointSize(self, size:float) -> None: ... + def glPolygonMode(self, face:int, mode:int) -> None: ... + def glPolygonOffset(self, factor:float, units:float) -> None: ... + def glPopAttrib(self) -> None: ... + def glPopClientAttrib(self) -> None: ... + def glPopMatrix(self) -> None: ... + def glPopName(self) -> None: ... + def glPrimitiveRestartIndex(self, index:int) -> None: ... + def glPrioritizeTextures(self, n:int, textures:typing.Sequence, priorities:typing.Sequence) -> None: ... + def glProgramBinary(self, program:int, binaryFormat:int, binary:int, length:int) -> None: ... + def glProgramParameteri(self, program:int, pname:int, value:int) -> None: ... + def glProgramUniform1d(self, program:int, location:int, v0:float) -> None: ... + def glProgramUniform1dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1f(self, program:int, location:int, v0:float) -> None: ... + def glProgramUniform1fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1i(self, program:int, location:int, v0:int) -> None: ... + def glProgramUniform1iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1ui(self, program:int, location:int, v0:int) -> None: ... + def glProgramUniform1uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2d(self, program:int, location:int, v0:float, v1:float) -> None: ... + def glProgramUniform2dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2f(self, program:int, location:int, v0:float, v1:float) -> None: ... + def glProgramUniform2fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2i(self, program:int, location:int, v0:int, v1:int) -> None: ... + def glProgramUniform2iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2ui(self, program:int, location:int, v0:int, v1:int) -> None: ... + def glProgramUniform2uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3d(self, program:int, location:int, v0:float, v1:float, v2:float) -> None: ... + def glProgramUniform3dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3f(self, program:int, location:int, v0:float, v1:float, v2:float) -> None: ... + def glProgramUniform3fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3i(self, program:int, location:int, v0:int, v1:int, v2:int) -> None: ... + def glProgramUniform3iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3ui(self, program:int, location:int, v0:int, v1:int, v2:int) -> None: ... + def glProgramUniform3uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4d(self, program:int, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glProgramUniform4dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4f(self, program:int, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glProgramUniform4fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4i(self, program:int, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glProgramUniform4iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4ui(self, program:int, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glProgramUniform4uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x3dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x4dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x2dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x4dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x2dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x3dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProvokingVertex(self, mode:int) -> None: ... + def glPushAttrib(self, mask:int) -> None: ... + def glPushClientAttrib(self, mask:int) -> None: ... + def glPushMatrix(self) -> None: ... + def glPushName(self, name:int) -> None: ... + def glQueryCounter(self, id:int, target:int) -> None: ... + def glRasterPos2d(self, x:float, y:float) -> None: ... + def glRasterPos2dv(self, v:typing.Sequence) -> None: ... + def glRasterPos2f(self, x:float, y:float) -> None: ... + def glRasterPos2fv(self, v:typing.Sequence) -> None: ... + def glRasterPos2i(self, x:int, y:int) -> None: ... + def glRasterPos2iv(self, v:typing.Sequence) -> None: ... + def glRasterPos2s(self, x:int, y:int) -> None: ... + def glRasterPos2sv(self, v:typing.Sequence) -> None: ... + def glRasterPos3d(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3dv(self, v:typing.Sequence) -> None: ... + def glRasterPos3f(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3fv(self, v:typing.Sequence) -> None: ... + def glRasterPos3i(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3iv(self, v:typing.Sequence) -> None: ... + def glRasterPos3s(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3sv(self, v:typing.Sequence) -> None: ... + def glRasterPos4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4dv(self, v:typing.Sequence) -> None: ... + def glRasterPos4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4fv(self, v:typing.Sequence) -> None: ... + def glRasterPos4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4iv(self, v:typing.Sequence) -> None: ... + def glRasterPos4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4sv(self, v:typing.Sequence) -> None: ... + def glReadBuffer(self, mode:int) -> None: ... + def glRectd(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectdv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRectf(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectfv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRecti(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectiv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRects(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectsv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glReleaseShaderCompiler(self) -> None: ... + def glRenderMode(self, mode:int) -> int: ... + def glRenderbufferStorage(self, target:int, internalformat:int, width:int, height:int) -> None: ... + def glRenderbufferStorageMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int) -> None: ... + def glResetHistogram(self, target:int) -> None: ... + def glResetMinmax(self, target:int) -> None: ... + def glResumeTransformFeedback(self) -> None: ... + def glRotated(self, angle:float, x:float, y:float, z:float) -> None: ... + def glRotatef(self, angle:float, x:float, y:float, z:float) -> None: ... + def glSampleCoverage(self, value:float, invert:int) -> None: ... + def glSampleMaski(self, index:int, mask:int) -> None: ... + def glSamplerParameterIiv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameterIuiv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameterf(self, sampler:int, pname:int, param:float) -> None: ... + def glSamplerParameterfv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameteri(self, sampler:int, pname:int, param:int) -> None: ... + def glSamplerParameteriv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glScaled(self, x:float, y:float, z:float) -> None: ... + def glScalef(self, x:float, y:float, z:float) -> None: ... + def glScissor(self, x:int, y:int, width:int, height:int) -> None: ... + def glScissorArrayv(self, first:int, count:int, v:typing.Sequence) -> None: ... + def glScissorIndexed(self, index:int, left:int, bottom:int, width:int, height:int) -> None: ... + def glScissorIndexedv(self, index:int, v:typing.Sequence) -> None: ... + def glSecondaryColor3b(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3bv(self, v:bytes) -> None: ... + def glSecondaryColor3d(self, red:float, green:float, blue:float) -> None: ... + def glSecondaryColor3dv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3f(self, red:float, green:float, blue:float) -> None: ... + def glSecondaryColor3fv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3i(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3iv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3s(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3sv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3ub(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3ubv(self, v:bytes) -> None: ... + def glSecondaryColor3ui(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3uiv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3us(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3usv(self, v:typing.Sequence) -> None: ... + def glSecondaryColorP3ui(self, type:int, color:int) -> None: ... + def glSecondaryColorP3uiv(self, type:int, color:typing.Sequence) -> None: ... + def glSecondaryColorPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glSeparableFilter2D(self, target:int, internalformat:int, width:int, height:int, format:int, type:int, row:int, column:int) -> None: ... + def glShadeModel(self, mode:int) -> None: ... + def glShaderBinary(self, count:int, shaders:typing.Sequence, binaryformat:int, binary:int, length:int) -> None: ... + def glStencilFunc(self, func:int, ref:int, mask:int) -> None: ... + def glStencilFuncSeparate(self, face:int, func:int, ref:int, mask:int) -> None: ... + def glStencilMask(self, mask:int) -> None: ... + def glStencilMaskSeparate(self, face:int, mask:int) -> None: ... + def glStencilOp(self, fail:int, zfail:int, zpass:int) -> None: ... + def glStencilOpSeparate(self, face:int, sfail:int, dpfail:int, dppass:int) -> None: ... + def glTexBuffer(self, target:int, internalformat:int, buffer:int) -> None: ... + def glTexCoord1d(self, s:float) -> None: ... + def glTexCoord1dv(self, v:typing.Sequence) -> None: ... + def glTexCoord1f(self, s:float) -> None: ... + def glTexCoord1fv(self, v:typing.Sequence) -> None: ... + def glTexCoord1i(self, s:int) -> None: ... + def glTexCoord1iv(self, v:typing.Sequence) -> None: ... + def glTexCoord1s(self, s:int) -> None: ... + def glTexCoord1sv(self, v:typing.Sequence) -> None: ... + def glTexCoord2d(self, s:float, t:float) -> None: ... + def glTexCoord2dv(self, v:typing.Sequence) -> None: ... + def glTexCoord2f(self, s:float, t:float) -> None: ... + def glTexCoord2fv(self, v:typing.Sequence) -> None: ... + def glTexCoord2i(self, s:int, t:int) -> None: ... + def glTexCoord2iv(self, v:typing.Sequence) -> None: ... + def glTexCoord2s(self, s:int, t:int) -> None: ... + def glTexCoord2sv(self, v:typing.Sequence) -> None: ... + def glTexCoord3d(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3dv(self, v:typing.Sequence) -> None: ... + def glTexCoord3f(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3fv(self, v:typing.Sequence) -> None: ... + def glTexCoord3i(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3iv(self, v:typing.Sequence) -> None: ... + def glTexCoord3s(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3sv(self, v:typing.Sequence) -> None: ... + def glTexCoord4d(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4dv(self, v:typing.Sequence) -> None: ... + def glTexCoord4f(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4fv(self, v:typing.Sequence) -> None: ... + def glTexCoord4i(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4iv(self, v:typing.Sequence) -> None: ... + def glTexCoord4s(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4sv(self, v:typing.Sequence) -> None: ... + def glTexCoordP1ui(self, type:int, coords:int) -> None: ... + def glTexCoordP1uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP2ui(self, type:int, coords:int) -> None: ... + def glTexCoordP2uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP3ui(self, type:int, coords:int) -> None: ... + def glTexCoordP3uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP4ui(self, type:int, coords:int) -> None: ... + def glTexCoordP4uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glTexEnvf(self, target:int, pname:int, param:float) -> None: ... + def glTexEnvfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexEnvi(self, target:int, pname:int, param:int) -> None: ... + def glTexEnviv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGend(self, coord:int, pname:int, param:float) -> None: ... + def glTexGendv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGenf(self, coord:int, pname:int, param:float) -> None: ... + def glTexGenfv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGeni(self, coord:int, pname:int, param:int) -> None: ... + def glTexGeniv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, fixedsamplelocations:int) -> None: ... + def glTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage3DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, depth:int, fixedsamplelocations:int) -> None: ... + def glTexParameterIiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterIuiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterf(self, target:int, pname:int, param:float) -> None: ... + def glTexParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameteri(self, target:int, pname:int, param:int) -> None: ... + def glTexParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, pixels:int) -> None: ... + def glTranslated(self, x:float, y:float, z:float) -> None: ... + def glTranslatef(self, x:float, y:float, z:float) -> None: ... + def glUniform1d(self, location:int, x:float) -> None: ... + def glUniform1dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1f(self, location:int, v0:float) -> None: ... + def glUniform1fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1i(self, location:int, v0:int) -> None: ... + def glUniform1iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1ui(self, location:int, v0:int) -> None: ... + def glUniform1uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2d(self, location:int, x:float, y:float) -> None: ... + def glUniform2dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2f(self, location:int, v0:float, v1:float) -> None: ... + def glUniform2fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2i(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2ui(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3d(self, location:int, x:float, y:float, z:float) -> None: ... + def glUniform3dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3f(self, location:int, v0:float, v1:float, v2:float) -> None: ... + def glUniform3fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3i(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3ui(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4d(self, location:int, x:float, y:float, z:float, w:float) -> None: ... + def glUniform4dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4f(self, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glUniform4fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4i(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4ui(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniformBlockBinding(self, program:int, uniformBlockIndex:int, uniformBlockBinding:int) -> None: ... + def glUniformMatrix2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformSubroutinesuiv(self, shadertype:int, count:int, indices:typing.Sequence) -> None: ... + def glUnmapBuffer(self, target:int) -> int: ... + def glUseProgram(self, program:int) -> None: ... + def glUseProgramStages(self, pipeline:int, stages:int, program:int) -> None: ... + def glValidateProgram(self, program:int) -> None: ... + def glValidateProgramPipeline(self, pipeline:int) -> None: ... + def glVertex2d(self, x:float, y:float) -> None: ... + def glVertex2dv(self, v:typing.Sequence) -> None: ... + def glVertex2f(self, x:float, y:float) -> None: ... + def glVertex2fv(self, v:typing.Sequence) -> None: ... + def glVertex2i(self, x:int, y:int) -> None: ... + def glVertex2iv(self, v:typing.Sequence) -> None: ... + def glVertex2s(self, x:int, y:int) -> None: ... + def glVertex2sv(self, v:typing.Sequence) -> None: ... + def glVertex3d(self, x:float, y:float, z:float) -> None: ... + def glVertex3dv(self, v:typing.Sequence) -> None: ... + def glVertex3f(self, x:float, y:float, z:float) -> None: ... + def glVertex3fv(self, v:typing.Sequence) -> None: ... + def glVertex3i(self, x:int, y:int, z:int) -> None: ... + def glVertex3iv(self, v:typing.Sequence) -> None: ... + def glVertex3s(self, x:int, y:int, z:int) -> None: ... + def glVertex3sv(self, v:typing.Sequence) -> None: ... + def glVertex4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4dv(self, v:typing.Sequence) -> None: ... + def glVertex4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4fv(self, v:typing.Sequence) -> None: ... + def glVertex4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4iv(self, v:typing.Sequence) -> None: ... + def glVertex4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4sv(self, v:typing.Sequence) -> None: ... + def glVertexAttrib1d(self, index:int, x:float) -> None: ... + def glVertexAttrib1dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib1f(self, index:int, x:float) -> None: ... + def glVertexAttrib1fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib1s(self, index:int, x:int) -> None: ... + def glVertexAttrib1sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2d(self, index:int, x:float, y:float) -> None: ... + def glVertexAttrib2dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2f(self, index:int, x:float, y:float) -> None: ... + def glVertexAttrib2fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2s(self, index:int, x:int, y:int) -> None: ... + def glVertexAttrib2sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3d(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttrib3dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3f(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttrib3fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3s(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttrib3sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nbv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4Niv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nsv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nub(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttrib4Nubv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4Nuiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nusv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4bv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4d(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttrib4dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4f(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttrib4fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4s(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttrib4sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4ubv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4usv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribDivisor(self, index:int, divisor:int) -> None: ... + def glVertexAttribI1i(self, index:int, x:int) -> None: ... + def glVertexAttribI1iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI1ui(self, index:int, x:int) -> None: ... + def glVertexAttribI1uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI2i(self, index:int, x:int, y:int) -> None: ... + def glVertexAttribI2iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI2ui(self, index:int, x:int, y:int) -> None: ... + def glVertexAttribI2uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI3i(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttribI3iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI3ui(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttribI3uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4bv(self, index:int, v:bytes) -> None: ... + def glVertexAttribI4i(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttribI4iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4ubv(self, index:int, v:bytes) -> None: ... + def glVertexAttribI4ui(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttribI4uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4usv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribIPointer(self, index:int, size:int, type:int, stride:int, pointer:int) -> None: ... + def glVertexAttribL1d(self, index:int, x:float) -> None: ... + def glVertexAttribL1dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribL2d(self, index:int, x:float, y:float) -> None: ... + def glVertexAttribL2dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribL3d(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttribL3dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribL4d(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttribL4dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribLPointer(self, index:int, size:int, type:int, stride:int, pointer:int) -> None: ... + def glVertexAttribP1ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP1uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP2ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP2uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP3ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP3uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP4ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP4uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribPointer(self, index:int, size:int, type:int, normalized:int, stride:int, pointer:int) -> None: ... + def glVertexP2ui(self, type:int, value:int) -> None: ... + def glVertexP2uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexP3ui(self, type:int, value:int) -> None: ... + def glVertexP3uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexP4ui(self, type:int, value:int) -> None: ... + def glVertexP4uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glViewport(self, x:int, y:int, width:int, height:int) -> None: ... + def glViewportArrayv(self, first:int, count:int, v:typing.Sequence) -> None: ... + def glViewportIndexedf(self, index:int, x:float, y:float, w:float, h:float) -> None: ... + def glViewportIndexedfv(self, index:int, v:typing.Sequence) -> None: ... + def glWindowPos2d(self, x:float, y:float) -> None: ... + def glWindowPos2dv(self, v:typing.Sequence) -> None: ... + def glWindowPos2f(self, x:float, y:float) -> None: ... + def glWindowPos2fv(self, v:typing.Sequence) -> None: ... + def glWindowPos2i(self, x:int, y:int) -> None: ... + def glWindowPos2iv(self, v:typing.Sequence) -> None: ... + def glWindowPos2s(self, x:int, y:int) -> None: ... + def glWindowPos2sv(self, v:typing.Sequence) -> None: ... + def glWindowPos3d(self, x:float, y:float, z:float) -> None: ... + def glWindowPos3dv(self, v:typing.Sequence) -> None: ... + def glWindowPos3f(self, x:float, y:float, z:float) -> None: ... + def glWindowPos3fv(self, v:typing.Sequence) -> None: ... + def glWindowPos3i(self, x:int, y:int, z:int) -> None: ... + def glWindowPos3iv(self, v:typing.Sequence) -> None: ... + def glWindowPos3s(self, x:int, y:int, z:int) -> None: ... + def glWindowPos3sv(self, v:typing.Sequence) -> None: ... + def initializeOpenGLFunctions(self) -> bool: ... + + +class QOpenGLFunctions_4_1_Core(PySide2.QtGui.QAbstractOpenGLFunctions): + + def __init__(self) -> None: ... + + def glActiveShaderProgram(self, pipeline:int, program:int) -> None: ... + def glActiveTexture(self, texture:int) -> None: ... + def glAttachShader(self, program:int, shader:int) -> None: ... + def glBeginConditionalRender(self, id:int, mode:int) -> None: ... + def glBeginQuery(self, target:int, id:int) -> None: ... + def glBeginQueryIndexed(self, target:int, index:int, id:int) -> None: ... + def glBeginTransformFeedback(self, primitiveMode:int) -> None: ... + def glBindAttribLocation(self, program:int, index:int, name:bytes) -> None: ... + def glBindBuffer(self, target:int, buffer:int) -> None: ... + def glBindBufferBase(self, target:int, index:int, buffer:int) -> None: ... + def glBindFragDataLocation(self, program:int, color:int, name:bytes) -> None: ... + def glBindFragDataLocationIndexed(self, program:int, colorNumber:int, index:int, name:bytes) -> None: ... + def glBindFramebuffer(self, target:int, framebuffer:int) -> None: ... + def glBindProgramPipeline(self, pipeline:int) -> None: ... + def glBindRenderbuffer(self, target:int, renderbuffer:int) -> None: ... + def glBindSampler(self, unit:int, sampler:int) -> None: ... + def glBindTexture(self, target:int, texture:int) -> None: ... + def glBindTransformFeedback(self, target:int, id:int) -> None: ... + def glBindVertexArray(self, array:int) -> None: ... + def glBlendColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glBlendEquation(self, mode:int) -> None: ... + def glBlendEquationSeparate(self, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendEquationSeparatei(self, buf:int, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendEquationi(self, buf:int, mode:int) -> None: ... + def glBlendFunc(self, sfactor:int, dfactor:int) -> None: ... + def glBlendFuncSeparate(self, sfactorRGB:int, dfactorRGB:int, sfactorAlpha:int, dfactorAlpha:int) -> None: ... + def glBlendFuncSeparatei(self, buf:int, srcRGB:int, dstRGB:int, srcAlpha:int, dstAlpha:int) -> None: ... + def glBlendFunci(self, buf:int, src:int, dst:int) -> None: ... + def glBlitFramebuffer(self, srcX0:int, srcY0:int, srcX1:int, srcY1:int, dstX0:int, dstY0:int, dstX1:int, dstY1:int, mask:int, filter:int) -> None: ... + def glCheckFramebufferStatus(self, target:int) -> int: ... + def glClampColor(self, target:int, clamp:int) -> None: ... + def glClear(self, mask:int) -> None: ... + def glClearBufferfi(self, buffer:int, drawbuffer:int, depth:float, stencil:int) -> None: ... + def glClearBufferfv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferuiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearDepth(self, depth:float) -> None: ... + def glClearDepthf(self, dd:float) -> None: ... + def glClearStencil(self, s:int) -> None: ... + def glColorMask(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColorMaski(self, index:int, r:int, g:int, b:int, a:int) -> None: ... + def glColorP3ui(self, type:int, color:int) -> None: ... + def glColorP3uiv(self, type:int, color:typing.Sequence) -> None: ... + def glColorP4ui(self, type:int, color:int) -> None: ... + def glColorP4uiv(self, type:int, color:typing.Sequence) -> None: ... + def glCompileShader(self, shader:int) -> None: ... + def glCompressedTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, imageSize:int, data:int) -> None: ... + def glCopyTexImage1D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, border:int) -> None: ... + def glCopyTexImage2D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, height:int, border:int) -> None: ... + def glCopyTexSubImage1D(self, target:int, level:int, xoffset:int, x:int, y:int, width:int) -> None: ... + def glCopyTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCreateProgram(self) -> int: ... + def glCreateShader(self, type:int) -> int: ... + def glCullFace(self, mode:int) -> None: ... + def glDeleteBuffers(self, n:int, buffers:typing.Sequence) -> None: ... + def glDeleteFramebuffers(self, n:int, framebuffers:typing.Sequence) -> None: ... + def glDeleteProgram(self, program:int) -> None: ... + def glDeleteProgramPipelines(self, n:int, pipelines:typing.Sequence) -> None: ... + def glDeleteQueries(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteRenderbuffers(self, n:int, renderbuffers:typing.Sequence) -> None: ... + def glDeleteSamplers(self, count:int, samplers:typing.Sequence) -> None: ... + def glDeleteShader(self, shader:int) -> None: ... + def glDeleteTextures(self, n:int, textures:typing.Sequence) -> None: ... + def glDeleteTransformFeedbacks(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteVertexArrays(self, n:int, arrays:typing.Sequence) -> None: ... + def glDepthFunc(self, func:int) -> None: ... + def glDepthMask(self, flag:int) -> None: ... + def glDepthRange(self, nearVal:float, farVal:float) -> None: ... + def glDepthRangeArrayv(self, first:int, count:int, v:typing.Sequence) -> None: ... + def glDepthRangeIndexed(self, index:int, n:float, f:float) -> None: ... + def glDepthRangef(self, n:float, f:float) -> None: ... + def glDetachShader(self, program:int, shader:int) -> None: ... + def glDisable(self, cap:int) -> None: ... + def glDisableVertexAttribArray(self, index:int) -> None: ... + def glDisablei(self, target:int, index:int) -> None: ... + def glDrawArrays(self, mode:int, first:int, count:int) -> None: ... + def glDrawArraysIndirect(self, mode:int, indirect:int) -> None: ... + def glDrawArraysInstanced(self, mode:int, first:int, count:int, instancecount:int) -> None: ... + def glDrawBuffer(self, mode:int) -> None: ... + def glDrawBuffers(self, n:int, bufs:typing.Sequence) -> None: ... + def glDrawElements(self, mode:int, count:int, type:int, indices:int) -> None: ... + def glDrawElementsBaseVertex(self, mode:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glDrawElementsIndirect(self, mode:int, type:int, indirect:int) -> None: ... + def glDrawElementsInstanced(self, mode:int, count:int, type:int, indices:int, instancecount:int) -> None: ... + def glDrawElementsInstancedBaseVertex(self, mode:int, count:int, type:int, indices:int, instancecount:int, basevertex:int) -> None: ... + def glDrawRangeElements(self, mode:int, start:int, end:int, count:int, type:int, indices:int) -> None: ... + def glDrawRangeElementsBaseVertex(self, mode:int, start:int, end:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glDrawTransformFeedback(self, mode:int, id:int) -> None: ... + def glDrawTransformFeedbackStream(self, mode:int, id:int, stream:int) -> None: ... + def glEnable(self, cap:int) -> None: ... + def glEnableVertexAttribArray(self, index:int) -> None: ... + def glEnablei(self, target:int, index:int) -> None: ... + def glEndConditionalRender(self) -> None: ... + def glEndQuery(self, target:int) -> None: ... + def glEndQueryIndexed(self, target:int, index:int) -> None: ... + def glEndTransformFeedback(self) -> None: ... + def glFinish(self) -> None: ... + def glFlush(self) -> None: ... + def glFramebufferRenderbuffer(self, target:int, attachment:int, renderbuffertarget:int, renderbuffer:int) -> None: ... + def glFramebufferTexture(self, target:int, attachment:int, texture:int, level:int) -> None: ... + def glFramebufferTexture1D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture2D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture3D(self, target:int, attachment:int, textarget:int, texture:int, level:int, zoffset:int) -> None: ... + def glFramebufferTextureLayer(self, target:int, attachment:int, texture:int, level:int, layer:int) -> None: ... + def glFrontFace(self, mode:int) -> None: ... + def glGenerateMipmap(self, target:int) -> None: ... + def glGetAttribLocation(self, program:int, name:bytes) -> int: ... + def glGetError(self) -> int: ... + def glGetFragDataIndex(self, program:int, name:bytes) -> int: ... + def glGetFragDataLocation(self, program:int, name:bytes) -> int: ... + def glGetString(self, name:int) -> bytes: ... + def glGetStringi(self, name:int, index:int) -> bytes: ... + def glGetSubroutineIndex(self, program:int, shadertype:int, name:bytes) -> int: ... + def glGetSubroutineUniformLocation(self, program:int, shadertype:int, name:bytes) -> int: ... + def glGetUniformBlockIndex(self, program:int, uniformBlockName:bytes) -> int: ... + def glGetUniformLocation(self, program:int, name:bytes) -> int: ... + def glHint(self, target:int, mode:int) -> None: ... + def glIndexub(self, c:int) -> None: ... + def glIndexubv(self, c:bytes) -> None: ... + def glIsBuffer(self, buffer:int) -> int: ... + def glIsEnabled(self, cap:int) -> int: ... + def glIsEnabledi(self, target:int, index:int) -> int: ... + def glIsFramebuffer(self, framebuffer:int) -> int: ... + def glIsProgram(self, program:int) -> int: ... + def glIsProgramPipeline(self, pipeline:int) -> int: ... + def glIsQuery(self, id:int) -> int: ... + def glIsRenderbuffer(self, renderbuffer:int) -> int: ... + def glIsSampler(self, sampler:int) -> int: ... + def glIsShader(self, shader:int) -> int: ... + def glIsTexture(self, texture:int) -> int: ... + def glIsTransformFeedback(self, id:int) -> int: ... + def glIsVertexArray(self, array:int) -> int: ... + def glLineWidth(self, width:float) -> None: ... + def glLinkProgram(self, program:int) -> None: ... + def glLogicOp(self, opcode:int) -> None: ... + def glMapBuffer(self, target:int, access:int) -> int: ... + def glMinSampleShading(self, value:float) -> None: ... + def glMultiDrawArrays(self, mode:int, first:typing.Sequence, count:typing.Sequence, drawcount:int) -> None: ... + def glMultiTexCoordP1ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP1uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP2ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP2uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP3ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP3uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP4ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP4uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glNormalP3ui(self, type:int, coords:int) -> None: ... + def glNormalP3uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glPatchParameterfv(self, pname:int, values:typing.Sequence) -> None: ... + def glPatchParameteri(self, pname:int, value:int) -> None: ... + def glPauseTransformFeedback(self) -> None: ... + def glPixelStoref(self, pname:int, param:float) -> None: ... + def glPixelStorei(self, pname:int, param:int) -> None: ... + def glPointParameterf(self, pname:int, param:float) -> None: ... + def glPointParameterfv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointParameteri(self, pname:int, param:int) -> None: ... + def glPointParameteriv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointSize(self, size:float) -> None: ... + def glPolygonMode(self, face:int, mode:int) -> None: ... + def glPolygonOffset(self, factor:float, units:float) -> None: ... + def glPrimitiveRestartIndex(self, index:int) -> None: ... + def glProgramBinary(self, program:int, binaryFormat:int, binary:int, length:int) -> None: ... + def glProgramParameteri(self, program:int, pname:int, value:int) -> None: ... + def glProgramUniform1d(self, program:int, location:int, v0:float) -> None: ... + def glProgramUniform1dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1f(self, program:int, location:int, v0:float) -> None: ... + def glProgramUniform1fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1i(self, program:int, location:int, v0:int) -> None: ... + def glProgramUniform1iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1ui(self, program:int, location:int, v0:int) -> None: ... + def glProgramUniform1uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2d(self, program:int, location:int, v0:float, v1:float) -> None: ... + def glProgramUniform2dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2f(self, program:int, location:int, v0:float, v1:float) -> None: ... + def glProgramUniform2fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2i(self, program:int, location:int, v0:int, v1:int) -> None: ... + def glProgramUniform2iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2ui(self, program:int, location:int, v0:int, v1:int) -> None: ... + def glProgramUniform2uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3d(self, program:int, location:int, v0:float, v1:float, v2:float) -> None: ... + def glProgramUniform3dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3f(self, program:int, location:int, v0:float, v1:float, v2:float) -> None: ... + def glProgramUniform3fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3i(self, program:int, location:int, v0:int, v1:int, v2:int) -> None: ... + def glProgramUniform3iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3ui(self, program:int, location:int, v0:int, v1:int, v2:int) -> None: ... + def glProgramUniform3uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4d(self, program:int, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glProgramUniform4dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4f(self, program:int, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glProgramUniform4fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4i(self, program:int, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glProgramUniform4iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4ui(self, program:int, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glProgramUniform4uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x3dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x4dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x2dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x4dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x2dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x3dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProvokingVertex(self, mode:int) -> None: ... + def glQueryCounter(self, id:int, target:int) -> None: ... + def glReadBuffer(self, mode:int) -> None: ... + def glReleaseShaderCompiler(self) -> None: ... + def glRenderbufferStorage(self, target:int, internalformat:int, width:int, height:int) -> None: ... + def glRenderbufferStorageMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int) -> None: ... + def glResumeTransformFeedback(self) -> None: ... + def glSampleCoverage(self, value:float, invert:int) -> None: ... + def glSampleMaski(self, index:int, mask:int) -> None: ... + def glSamplerParameterIiv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameterIuiv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameterf(self, sampler:int, pname:int, param:float) -> None: ... + def glSamplerParameterfv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameteri(self, sampler:int, pname:int, param:int) -> None: ... + def glSamplerParameteriv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glScissor(self, x:int, y:int, width:int, height:int) -> None: ... + def glScissorArrayv(self, first:int, count:int, v:typing.Sequence) -> None: ... + def glScissorIndexed(self, index:int, left:int, bottom:int, width:int, height:int) -> None: ... + def glScissorIndexedv(self, index:int, v:typing.Sequence) -> None: ... + def glSecondaryColorP3ui(self, type:int, color:int) -> None: ... + def glSecondaryColorP3uiv(self, type:int, color:typing.Sequence) -> None: ... + def glShaderBinary(self, count:int, shaders:typing.Sequence, binaryformat:int, binary:int, length:int) -> None: ... + def glStencilFunc(self, func:int, ref:int, mask:int) -> None: ... + def glStencilFuncSeparate(self, face:int, func:int, ref:int, mask:int) -> None: ... + def glStencilMask(self, mask:int) -> None: ... + def glStencilMaskSeparate(self, face:int, mask:int) -> None: ... + def glStencilOp(self, fail:int, zfail:int, zpass:int) -> None: ... + def glStencilOpSeparate(self, face:int, sfail:int, dpfail:int, dppass:int) -> None: ... + def glTexBuffer(self, target:int, internalformat:int, buffer:int) -> None: ... + def glTexCoordP1ui(self, type:int, coords:int) -> None: ... + def glTexCoordP1uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP2ui(self, type:int, coords:int) -> None: ... + def glTexCoordP2uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP3ui(self, type:int, coords:int) -> None: ... + def glTexCoordP3uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP4ui(self, type:int, coords:int) -> None: ... + def glTexCoordP4uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, fixedsamplelocations:int) -> None: ... + def glTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage3DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, depth:int, fixedsamplelocations:int) -> None: ... + def glTexParameterIiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterIuiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterf(self, target:int, pname:int, param:float) -> None: ... + def glTexParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameteri(self, target:int, pname:int, param:int) -> None: ... + def glTexParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, pixels:int) -> None: ... + def glUniform1d(self, location:int, x:float) -> None: ... + def glUniform1dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1f(self, location:int, v0:float) -> None: ... + def glUniform1fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1i(self, location:int, v0:int) -> None: ... + def glUniform1iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1ui(self, location:int, v0:int) -> None: ... + def glUniform1uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2d(self, location:int, x:float, y:float) -> None: ... + def glUniform2dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2f(self, location:int, v0:float, v1:float) -> None: ... + def glUniform2fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2i(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2ui(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3d(self, location:int, x:float, y:float, z:float) -> None: ... + def glUniform3dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3f(self, location:int, v0:float, v1:float, v2:float) -> None: ... + def glUniform3fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3i(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3ui(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4d(self, location:int, x:float, y:float, z:float, w:float) -> None: ... + def glUniform4dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4f(self, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glUniform4fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4i(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4ui(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniformBlockBinding(self, program:int, uniformBlockIndex:int, uniformBlockBinding:int) -> None: ... + def glUniformMatrix2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformSubroutinesuiv(self, shadertype:int, count:int, indices:typing.Sequence) -> None: ... + def glUnmapBuffer(self, target:int) -> int: ... + def glUseProgram(self, program:int) -> None: ... + def glUseProgramStages(self, pipeline:int, stages:int, program:int) -> None: ... + def glValidateProgram(self, program:int) -> None: ... + def glValidateProgramPipeline(self, pipeline:int) -> None: ... + def glVertexAttribDivisor(self, index:int, divisor:int) -> None: ... + def glVertexAttribIPointer(self, index:int, size:int, type:int, stride:int, pointer:int) -> None: ... + def glVertexAttribL1d(self, index:int, x:float) -> None: ... + def glVertexAttribL1dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribL2d(self, index:int, x:float, y:float) -> None: ... + def glVertexAttribL2dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribL3d(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttribL3dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribL4d(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttribL4dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribLPointer(self, index:int, size:int, type:int, stride:int, pointer:int) -> None: ... + def glVertexAttribP1ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP1uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP2ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP2uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP3ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP3uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP4ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP4uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribPointer(self, index:int, size:int, type:int, normalized:int, stride:int, pointer:int) -> None: ... + def glVertexP2ui(self, type:int, value:int) -> None: ... + def glVertexP2uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexP3ui(self, type:int, value:int) -> None: ... + def glVertexP3uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexP4ui(self, type:int, value:int) -> None: ... + def glVertexP4uiv(self, type:int, value:typing.Sequence) -> None: ... + def glViewport(self, x:int, y:int, width:int, height:int) -> None: ... + def glViewportArrayv(self, first:int, count:int, v:typing.Sequence) -> None: ... + def glViewportIndexedf(self, index:int, x:float, y:float, w:float, h:float) -> None: ... + def glViewportIndexedfv(self, index:int, v:typing.Sequence) -> None: ... + def initializeOpenGLFunctions(self) -> bool: ... + + +class QOpenGLFunctions_4_2_Compatibility(PySide2.QtGui.QAbstractOpenGLFunctions): + + def __init__(self) -> None: ... + + def glAccum(self, op:int, value:float) -> None: ... + def glActiveShaderProgram(self, pipeline:int, program:int) -> None: ... + def glActiveTexture(self, texture:int) -> None: ... + def glAlphaFunc(self, func:int, ref:float) -> None: ... + def glArrayElement(self, i:int) -> None: ... + def glAttachShader(self, program:int, shader:int) -> None: ... + def glBegin(self, mode:int) -> None: ... + def glBeginConditionalRender(self, id:int, mode:int) -> None: ... + def glBeginQuery(self, target:int, id:int) -> None: ... + def glBeginQueryIndexed(self, target:int, index:int, id:int) -> None: ... + def glBeginTransformFeedback(self, primitiveMode:int) -> None: ... + def glBindAttribLocation(self, program:int, index:int, name:bytes) -> None: ... + def glBindBuffer(self, target:int, buffer:int) -> None: ... + def glBindBufferBase(self, target:int, index:int, buffer:int) -> None: ... + def glBindFragDataLocation(self, program:int, color:int, name:bytes) -> None: ... + def glBindFragDataLocationIndexed(self, program:int, colorNumber:int, index:int, name:bytes) -> None: ... + def glBindFramebuffer(self, target:int, framebuffer:int) -> None: ... + def glBindImageTexture(self, unit:int, texture:int, level:int, layered:int, layer:int, access:int, format:int) -> None: ... + def glBindProgramPipeline(self, pipeline:int) -> None: ... + def glBindRenderbuffer(self, target:int, renderbuffer:int) -> None: ... + def glBindSampler(self, unit:int, sampler:int) -> None: ... + def glBindTexture(self, target:int, texture:int) -> None: ... + def glBindTransformFeedback(self, target:int, id:int) -> None: ... + def glBindVertexArray(self, array:int) -> None: ... + def glBlendColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glBlendEquation(self, mode:int) -> None: ... + def glBlendEquationSeparate(self, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendEquationSeparatei(self, buf:int, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendEquationi(self, buf:int, mode:int) -> None: ... + def glBlendFunc(self, sfactor:int, dfactor:int) -> None: ... + def glBlendFuncSeparate(self, sfactorRGB:int, dfactorRGB:int, sfactorAlpha:int, dfactorAlpha:int) -> None: ... + def glBlendFuncSeparatei(self, buf:int, srcRGB:int, dstRGB:int, srcAlpha:int, dstAlpha:int) -> None: ... + def glBlendFunci(self, buf:int, src:int, dst:int) -> None: ... + def glBlitFramebuffer(self, srcX0:int, srcY0:int, srcX1:int, srcY1:int, dstX0:int, dstY0:int, dstX1:int, dstY1:int, mask:int, filter:int) -> None: ... + def glCallList(self, list:int) -> None: ... + def glCallLists(self, n:int, type:int, lists:int) -> None: ... + def glCheckFramebufferStatus(self, target:int) -> int: ... + def glClampColor(self, target:int, clamp:int) -> None: ... + def glClear(self, mask:int) -> None: ... + def glClearAccum(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearBufferfi(self, buffer:int, drawbuffer:int, depth:float, stencil:int) -> None: ... + def glClearBufferfv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferuiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearDepth(self, depth:float) -> None: ... + def glClearDepthf(self, dd:float) -> None: ... + def glClearIndex(self, c:float) -> None: ... + def glClearStencil(self, s:int) -> None: ... + def glClientActiveTexture(self, texture:int) -> None: ... + def glClipPlane(self, plane:int, equation:typing.Sequence) -> None: ... + def glColor3b(self, red:int, green:int, blue:int) -> None: ... + def glColor3bv(self, v:bytes) -> None: ... + def glColor3d(self, red:float, green:float, blue:float) -> None: ... + def glColor3dv(self, v:typing.Sequence) -> None: ... + def glColor3f(self, red:float, green:float, blue:float) -> None: ... + def glColor3fv(self, v:typing.Sequence) -> None: ... + def glColor3i(self, red:int, green:int, blue:int) -> None: ... + def glColor3iv(self, v:typing.Sequence) -> None: ... + def glColor3s(self, red:int, green:int, blue:int) -> None: ... + def glColor3sv(self, v:typing.Sequence) -> None: ... + def glColor3ub(self, red:int, green:int, blue:int) -> None: ... + def glColor3ubv(self, v:bytes) -> None: ... + def glColor3ui(self, red:int, green:int, blue:int) -> None: ... + def glColor3uiv(self, v:typing.Sequence) -> None: ... + def glColor3us(self, red:int, green:int, blue:int) -> None: ... + def glColor3usv(self, v:typing.Sequence) -> None: ... + def glColor4b(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4bv(self, v:bytes) -> None: ... + def glColor4d(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4dv(self, v:typing.Sequence) -> None: ... + def glColor4f(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4fv(self, v:typing.Sequence) -> None: ... + def glColor4i(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4iv(self, v:typing.Sequence) -> None: ... + def glColor4s(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4sv(self, v:typing.Sequence) -> None: ... + def glColor4ub(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4ubv(self, v:bytes) -> None: ... + def glColor4ui(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4uiv(self, v:typing.Sequence) -> None: ... + def glColor4us(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4usv(self, v:typing.Sequence) -> None: ... + def glColorMask(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColorMaski(self, index:int, r:int, g:int, b:int, a:int) -> None: ... + def glColorMaterial(self, face:int, mode:int) -> None: ... + def glColorP3ui(self, type:int, color:int) -> None: ... + def glColorP3uiv(self, type:int, color:typing.Sequence) -> None: ... + def glColorP4ui(self, type:int, color:int) -> None: ... + def glColorP4uiv(self, type:int, color:typing.Sequence) -> None: ... + def glColorPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glColorSubTable(self, target:int, start:int, count:int, format:int, type:int, data:int) -> None: ... + def glColorTable(self, target:int, internalformat:int, width:int, format:int, type:int, table:int) -> None: ... + def glColorTableParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glColorTableParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glCompileShader(self, shader:int) -> None: ... + def glCompressedTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, imageSize:int, data:int) -> None: ... + def glConvolutionFilter1D(self, target:int, internalformat:int, width:int, format:int, type:int, image:int) -> None: ... + def glConvolutionFilter2D(self, target:int, internalformat:int, width:int, height:int, format:int, type:int, image:int) -> None: ... + def glConvolutionParameterf(self, target:int, pname:int, params:float) -> None: ... + def glConvolutionParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glConvolutionParameteri(self, target:int, pname:int, params:int) -> None: ... + def glConvolutionParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glCopyColorSubTable(self, target:int, start:int, x:int, y:int, width:int) -> None: ... + def glCopyColorTable(self, target:int, internalformat:int, x:int, y:int, width:int) -> None: ... + def glCopyConvolutionFilter1D(self, target:int, internalformat:int, x:int, y:int, width:int) -> None: ... + def glCopyConvolutionFilter2D(self, target:int, internalformat:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyPixels(self, x:int, y:int, width:int, height:int, type:int) -> None: ... + def glCopyTexImage1D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, border:int) -> None: ... + def glCopyTexImage2D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, height:int, border:int) -> None: ... + def glCopyTexSubImage1D(self, target:int, level:int, xoffset:int, x:int, y:int, width:int) -> None: ... + def glCopyTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCreateProgram(self) -> int: ... + def glCreateShader(self, type:int) -> int: ... + def glCullFace(self, mode:int) -> None: ... + def glDeleteBuffers(self, n:int, buffers:typing.Sequence) -> None: ... + def glDeleteFramebuffers(self, n:int, framebuffers:typing.Sequence) -> None: ... + def glDeleteLists(self, list:int, range:int) -> None: ... + def glDeleteProgram(self, program:int) -> None: ... + def glDeleteProgramPipelines(self, n:int, pipelines:typing.Sequence) -> None: ... + def glDeleteQueries(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteRenderbuffers(self, n:int, renderbuffers:typing.Sequence) -> None: ... + def glDeleteSamplers(self, count:int, samplers:typing.Sequence) -> None: ... + def glDeleteShader(self, shader:int) -> None: ... + def glDeleteTextures(self, n:int, textures:typing.Sequence) -> None: ... + def glDeleteTransformFeedbacks(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteVertexArrays(self, n:int, arrays:typing.Sequence) -> None: ... + def glDepthFunc(self, func:int) -> None: ... + def glDepthMask(self, flag:int) -> None: ... + def glDepthRange(self, nearVal:float, farVal:float) -> None: ... + def glDepthRangeArrayv(self, first:int, count:int, v:typing.Sequence) -> None: ... + def glDepthRangeIndexed(self, index:int, n:float, f:float) -> None: ... + def glDepthRangef(self, n:float, f:float) -> None: ... + def glDetachShader(self, program:int, shader:int) -> None: ... + def glDisable(self, cap:int) -> None: ... + def glDisableClientState(self, array:int) -> None: ... + def glDisableVertexAttribArray(self, index:int) -> None: ... + def glDisablei(self, target:int, index:int) -> None: ... + def glDrawArrays(self, mode:int, first:int, count:int) -> None: ... + def glDrawArraysIndirect(self, mode:int, indirect:int) -> None: ... + def glDrawArraysInstanced(self, mode:int, first:int, count:int, instancecount:int) -> None: ... + def glDrawArraysInstancedBaseInstance(self, mode:int, first:int, count:int, instancecount:int, baseinstance:int) -> None: ... + def glDrawBuffer(self, mode:int) -> None: ... + def glDrawBuffers(self, n:int, bufs:typing.Sequence) -> None: ... + def glDrawElements(self, mode:int, count:int, type:int, indices:int) -> None: ... + def glDrawElementsBaseVertex(self, mode:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glDrawElementsIndirect(self, mode:int, type:int, indirect:int) -> None: ... + def glDrawElementsInstanced(self, mode:int, count:int, type:int, indices:int, instancecount:int) -> None: ... + def glDrawElementsInstancedBaseInstance(self, mode:int, count:int, type:int, indices:int, instancecount:int, baseinstance:int) -> None: ... + def glDrawElementsInstancedBaseVertex(self, mode:int, count:int, type:int, indices:int, instancecount:int, basevertex:int) -> None: ... + def glDrawElementsInstancedBaseVertexBaseInstance(self, mode:int, count:int, type:int, indices:int, instancecount:int, basevertex:int, baseinstance:int) -> None: ... + def glDrawPixels(self, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glDrawRangeElements(self, mode:int, start:int, end:int, count:int, type:int, indices:int) -> None: ... + def glDrawRangeElementsBaseVertex(self, mode:int, start:int, end:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glDrawTransformFeedback(self, mode:int, id:int) -> None: ... + def glDrawTransformFeedbackInstanced(self, mode:int, id:int, instancecount:int) -> None: ... + def glDrawTransformFeedbackStream(self, mode:int, id:int, stream:int) -> None: ... + def glDrawTransformFeedbackStreamInstanced(self, mode:int, id:int, stream:int, instancecount:int) -> None: ... + def glEdgeFlag(self, flag:int) -> None: ... + def glEdgeFlagPointer(self, stride:int, pointer:int) -> None: ... + def glEnable(self, cap:int) -> None: ... + def glEnableClientState(self, array:int) -> None: ... + def glEnableVertexAttribArray(self, index:int) -> None: ... + def glEnablei(self, target:int, index:int) -> None: ... + def glEnd(self) -> None: ... + def glEndConditionalRender(self) -> None: ... + def glEndList(self) -> None: ... + def glEndQuery(self, target:int) -> None: ... + def glEndQueryIndexed(self, target:int, index:int) -> None: ... + def glEndTransformFeedback(self) -> None: ... + def glEvalCoord1d(self, u:float) -> None: ... + def glEvalCoord1dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord1f(self, u:float) -> None: ... + def glEvalCoord1fv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2d(self, u:float, v:float) -> None: ... + def glEvalCoord2dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2f(self, u:float, v:float) -> None: ... + def glEvalCoord2fv(self, u:typing.Sequence) -> None: ... + def glEvalMesh1(self, mode:int, i1:int, i2:int) -> None: ... + def glEvalMesh2(self, mode:int, i1:int, i2:int, j1:int, j2:int) -> None: ... + def glEvalPoint1(self, i:int) -> None: ... + def glEvalPoint2(self, i:int, j:int) -> None: ... + def glFinish(self) -> None: ... + def glFlush(self) -> None: ... + def glFogCoordPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glFogCoordd(self, coord:float) -> None: ... + def glFogCoorddv(self, coord:typing.Sequence) -> None: ... + def glFogCoordf(self, coord:float) -> None: ... + def glFogCoordfv(self, coord:typing.Sequence) -> None: ... + def glFogf(self, pname:int, param:float) -> None: ... + def glFogfv(self, pname:int, params:typing.Sequence) -> None: ... + def glFogi(self, pname:int, param:int) -> None: ... + def glFogiv(self, pname:int, params:typing.Sequence) -> None: ... + def glFramebufferRenderbuffer(self, target:int, attachment:int, renderbuffertarget:int, renderbuffer:int) -> None: ... + def glFramebufferTexture(self, target:int, attachment:int, texture:int, level:int) -> None: ... + def glFramebufferTexture1D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture2D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture3D(self, target:int, attachment:int, textarget:int, texture:int, level:int, zoffset:int) -> None: ... + def glFramebufferTextureLayer(self, target:int, attachment:int, texture:int, level:int, layer:int) -> None: ... + def glFrontFace(self, mode:int) -> None: ... + def glFrustum(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glGenLists(self, range:int) -> int: ... + def glGenerateMipmap(self, target:int) -> None: ... + def glGetAttribLocation(self, program:int, name:bytes) -> int: ... + def glGetError(self) -> int: ... + def glGetFragDataIndex(self, program:int, name:bytes) -> int: ... + def glGetFragDataLocation(self, program:int, name:bytes) -> int: ... + def glGetString(self, name:int) -> bytes: ... + def glGetStringi(self, name:int, index:int) -> bytes: ... + def glGetSubroutineIndex(self, program:int, shadertype:int, name:bytes) -> int: ... + def glGetSubroutineUniformLocation(self, program:int, shadertype:int, name:bytes) -> int: ... + def glGetUniformBlockIndex(self, program:int, uniformBlockName:bytes) -> int: ... + def glGetUniformLocation(self, program:int, name:bytes) -> int: ... + def glHint(self, target:int, mode:int) -> None: ... + def glHistogram(self, target:int, width:int, internalformat:int, sink:int) -> None: ... + def glIndexMask(self, mask:int) -> None: ... + def glIndexPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glIndexd(self, c:float) -> None: ... + def glIndexdv(self, c:typing.Sequence) -> None: ... + def glIndexf(self, c:float) -> None: ... + def glIndexfv(self, c:typing.Sequence) -> None: ... + def glIndexi(self, c:int) -> None: ... + def glIndexiv(self, c:typing.Sequence) -> None: ... + def glIndexs(self, c:int) -> None: ... + def glIndexsv(self, c:typing.Sequence) -> None: ... + def glIndexub(self, c:int) -> None: ... + def glIndexubv(self, c:bytes) -> None: ... + def glInitNames(self) -> None: ... + def glInterleavedArrays(self, format:int, stride:int, pointer:int) -> None: ... + def glIsBuffer(self, buffer:int) -> int: ... + def glIsEnabled(self, cap:int) -> int: ... + def glIsEnabledi(self, target:int, index:int) -> int: ... + def glIsFramebuffer(self, framebuffer:int) -> int: ... + def glIsList(self, list:int) -> int: ... + def glIsProgram(self, program:int) -> int: ... + def glIsProgramPipeline(self, pipeline:int) -> int: ... + def glIsQuery(self, id:int) -> int: ... + def glIsRenderbuffer(self, renderbuffer:int) -> int: ... + def glIsSampler(self, sampler:int) -> int: ... + def glIsShader(self, shader:int) -> int: ... + def glIsTexture(self, texture:int) -> int: ... + def glIsTransformFeedback(self, id:int) -> int: ... + def glIsVertexArray(self, array:int) -> int: ... + def glLightModelf(self, pname:int, param:float) -> None: ... + def glLightModelfv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightModeli(self, pname:int, param:int) -> None: ... + def glLightModeliv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightf(self, light:int, pname:int, param:float) -> None: ... + def glLightfv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLighti(self, light:int, pname:int, param:int) -> None: ... + def glLightiv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLineStipple(self, factor:int, pattern:int) -> None: ... + def glLineWidth(self, width:float) -> None: ... + def glLinkProgram(self, program:int) -> None: ... + def glListBase(self, base:int) -> None: ... + def glLoadIdentity(self) -> None: ... + def glLoadMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadMatrixf(self, m:typing.Sequence) -> None: ... + def glLoadName(self, name:int) -> None: ... + def glLoadTransposeMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadTransposeMatrixf(self, m:typing.Sequence) -> None: ... + def glLogicOp(self, opcode:int) -> None: ... + def glMap1d(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap1f(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap2d(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMap2f(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMapBuffer(self, target:int, access:int) -> int: ... + def glMapGrid1d(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid1f(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid2d(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMapGrid2f(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMaterialf(self, face:int, pname:int, param:float) -> None: ... + def glMaterialfv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMateriali(self, face:int, pname:int, param:int) -> None: ... + def glMaterialiv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMatrixMode(self, mode:int) -> None: ... + def glMemoryBarrier(self, barriers:int) -> None: ... + def glMinSampleShading(self, value:float) -> None: ... + def glMinmax(self, target:int, internalformat:int, sink:int) -> None: ... + def glMultMatrixd(self, m:typing.Sequence) -> None: ... + def glMultMatrixf(self, m:typing.Sequence) -> None: ... + def glMultTransposeMatrixd(self, m:typing.Sequence) -> None: ... + def glMultTransposeMatrixf(self, m:typing.Sequence) -> None: ... + def glMultiDrawArrays(self, mode:int, first:typing.Sequence, count:typing.Sequence, drawcount:int) -> None: ... + def glMultiTexCoord1d(self, target:int, s:float) -> None: ... + def glMultiTexCoord1dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1f(self, target:int, s:float) -> None: ... + def glMultiTexCoord1fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1i(self, target:int, s:int) -> None: ... + def glMultiTexCoord1iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1s(self, target:int, s:int) -> None: ... + def glMultiTexCoord1sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2d(self, target:int, s:float, t:float) -> None: ... + def glMultiTexCoord2dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2f(self, target:int, s:float, t:float) -> None: ... + def glMultiTexCoord2fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2i(self, target:int, s:int, t:int) -> None: ... + def glMultiTexCoord2iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2s(self, target:int, s:int, t:int) -> None: ... + def glMultiTexCoord2sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3d(self, target:int, s:float, t:float, r:float) -> None: ... + def glMultiTexCoord3dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3f(self, target:int, s:float, t:float, r:float) -> None: ... + def glMultiTexCoord3fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3i(self, target:int, s:int, t:int, r:int) -> None: ... + def glMultiTexCoord3iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3s(self, target:int, s:int, t:int, r:int) -> None: ... + def glMultiTexCoord3sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4d(self, target:int, s:float, t:float, r:float, q:float) -> None: ... + def glMultiTexCoord4dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4f(self, target:int, s:float, t:float, r:float, q:float) -> None: ... + def glMultiTexCoord4fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4i(self, target:int, s:int, t:int, r:int, q:int) -> None: ... + def glMultiTexCoord4iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4s(self, target:int, s:int, t:int, r:int, q:int) -> None: ... + def glMultiTexCoord4sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoordP1ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP1uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP2ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP2uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP3ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP3uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP4ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP4uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glNewList(self, list:int, mode:int) -> None: ... + def glNormal3b(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3bv(self, v:bytes) -> None: ... + def glNormal3d(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3dv(self, v:typing.Sequence) -> None: ... + def glNormal3f(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3fv(self, v:typing.Sequence) -> None: ... + def glNormal3i(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3iv(self, v:typing.Sequence) -> None: ... + def glNormal3s(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3sv(self, v:typing.Sequence) -> None: ... + def glNormalP3ui(self, type:int, coords:int) -> None: ... + def glNormalP3uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glNormalPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glOrtho(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glPassThrough(self, token:float) -> None: ... + def glPatchParameterfv(self, pname:int, values:typing.Sequence) -> None: ... + def glPatchParameteri(self, pname:int, value:int) -> None: ... + def glPauseTransformFeedback(self) -> None: ... + def glPixelMapfv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapuiv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapusv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelStoref(self, pname:int, param:float) -> None: ... + def glPixelStorei(self, pname:int, param:int) -> None: ... + def glPixelTransferf(self, pname:int, param:float) -> None: ... + def glPixelTransferi(self, pname:int, param:int) -> None: ... + def glPixelZoom(self, xfactor:float, yfactor:float) -> None: ... + def glPointParameterf(self, pname:int, param:float) -> None: ... + def glPointParameterfv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointParameteri(self, pname:int, param:int) -> None: ... + def glPointParameteriv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointSize(self, size:float) -> None: ... + def glPolygonMode(self, face:int, mode:int) -> None: ... + def glPolygonOffset(self, factor:float, units:float) -> None: ... + def glPopAttrib(self) -> None: ... + def glPopClientAttrib(self) -> None: ... + def glPopMatrix(self) -> None: ... + def glPopName(self) -> None: ... + def glPrimitiveRestartIndex(self, index:int) -> None: ... + def glPrioritizeTextures(self, n:int, textures:typing.Sequence, priorities:typing.Sequence) -> None: ... + def glProgramBinary(self, program:int, binaryFormat:int, binary:int, length:int) -> None: ... + def glProgramParameteri(self, program:int, pname:int, value:int) -> None: ... + def glProgramUniform1d(self, program:int, location:int, v0:float) -> None: ... + def glProgramUniform1dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1f(self, program:int, location:int, v0:float) -> None: ... + def glProgramUniform1fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1i(self, program:int, location:int, v0:int) -> None: ... + def glProgramUniform1iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1ui(self, program:int, location:int, v0:int) -> None: ... + def glProgramUniform1uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2d(self, program:int, location:int, v0:float, v1:float) -> None: ... + def glProgramUniform2dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2f(self, program:int, location:int, v0:float, v1:float) -> None: ... + def glProgramUniform2fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2i(self, program:int, location:int, v0:int, v1:int) -> None: ... + def glProgramUniform2iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2ui(self, program:int, location:int, v0:int, v1:int) -> None: ... + def glProgramUniform2uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3d(self, program:int, location:int, v0:float, v1:float, v2:float) -> None: ... + def glProgramUniform3dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3f(self, program:int, location:int, v0:float, v1:float, v2:float) -> None: ... + def glProgramUniform3fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3i(self, program:int, location:int, v0:int, v1:int, v2:int) -> None: ... + def glProgramUniform3iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3ui(self, program:int, location:int, v0:int, v1:int, v2:int) -> None: ... + def glProgramUniform3uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4d(self, program:int, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glProgramUniform4dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4f(self, program:int, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glProgramUniform4fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4i(self, program:int, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glProgramUniform4iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4ui(self, program:int, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glProgramUniform4uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x3dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x4dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x2dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x4dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x2dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x3dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProvokingVertex(self, mode:int) -> None: ... + def glPushAttrib(self, mask:int) -> None: ... + def glPushClientAttrib(self, mask:int) -> None: ... + def glPushMatrix(self) -> None: ... + def glPushName(self, name:int) -> None: ... + def glQueryCounter(self, id:int, target:int) -> None: ... + def glRasterPos2d(self, x:float, y:float) -> None: ... + def glRasterPos2dv(self, v:typing.Sequence) -> None: ... + def glRasterPos2f(self, x:float, y:float) -> None: ... + def glRasterPos2fv(self, v:typing.Sequence) -> None: ... + def glRasterPos2i(self, x:int, y:int) -> None: ... + def glRasterPos2iv(self, v:typing.Sequence) -> None: ... + def glRasterPos2s(self, x:int, y:int) -> None: ... + def glRasterPos2sv(self, v:typing.Sequence) -> None: ... + def glRasterPos3d(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3dv(self, v:typing.Sequence) -> None: ... + def glRasterPos3f(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3fv(self, v:typing.Sequence) -> None: ... + def glRasterPos3i(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3iv(self, v:typing.Sequence) -> None: ... + def glRasterPos3s(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3sv(self, v:typing.Sequence) -> None: ... + def glRasterPos4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4dv(self, v:typing.Sequence) -> None: ... + def glRasterPos4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4fv(self, v:typing.Sequence) -> None: ... + def glRasterPos4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4iv(self, v:typing.Sequence) -> None: ... + def glRasterPos4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4sv(self, v:typing.Sequence) -> None: ... + def glReadBuffer(self, mode:int) -> None: ... + def glRectd(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectdv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRectf(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectfv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRecti(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectiv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRects(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectsv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glReleaseShaderCompiler(self) -> None: ... + def glRenderMode(self, mode:int) -> int: ... + def glRenderbufferStorage(self, target:int, internalformat:int, width:int, height:int) -> None: ... + def glRenderbufferStorageMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int) -> None: ... + def glResetHistogram(self, target:int) -> None: ... + def glResetMinmax(self, target:int) -> None: ... + def glResumeTransformFeedback(self) -> None: ... + def glRotated(self, angle:float, x:float, y:float, z:float) -> None: ... + def glRotatef(self, angle:float, x:float, y:float, z:float) -> None: ... + def glSampleCoverage(self, value:float, invert:int) -> None: ... + def glSampleMaski(self, index:int, mask:int) -> None: ... + def glSamplerParameterIiv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameterIuiv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameterf(self, sampler:int, pname:int, param:float) -> None: ... + def glSamplerParameterfv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameteri(self, sampler:int, pname:int, param:int) -> None: ... + def glSamplerParameteriv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glScaled(self, x:float, y:float, z:float) -> None: ... + def glScalef(self, x:float, y:float, z:float) -> None: ... + def glScissor(self, x:int, y:int, width:int, height:int) -> None: ... + def glScissorArrayv(self, first:int, count:int, v:typing.Sequence) -> None: ... + def glScissorIndexed(self, index:int, left:int, bottom:int, width:int, height:int) -> None: ... + def glScissorIndexedv(self, index:int, v:typing.Sequence) -> None: ... + def glSecondaryColor3b(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3bv(self, v:bytes) -> None: ... + def glSecondaryColor3d(self, red:float, green:float, blue:float) -> None: ... + def glSecondaryColor3dv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3f(self, red:float, green:float, blue:float) -> None: ... + def glSecondaryColor3fv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3i(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3iv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3s(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3sv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3ub(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3ubv(self, v:bytes) -> None: ... + def glSecondaryColor3ui(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3uiv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3us(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3usv(self, v:typing.Sequence) -> None: ... + def glSecondaryColorP3ui(self, type:int, color:int) -> None: ... + def glSecondaryColorP3uiv(self, type:int, color:typing.Sequence) -> None: ... + def glSecondaryColorPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glSeparableFilter2D(self, target:int, internalformat:int, width:int, height:int, format:int, type:int, row:int, column:int) -> None: ... + def glShadeModel(self, mode:int) -> None: ... + def glShaderBinary(self, count:int, shaders:typing.Sequence, binaryformat:int, binary:int, length:int) -> None: ... + def glStencilFunc(self, func:int, ref:int, mask:int) -> None: ... + def glStencilFuncSeparate(self, face:int, func:int, ref:int, mask:int) -> None: ... + def glStencilMask(self, mask:int) -> None: ... + def glStencilMaskSeparate(self, face:int, mask:int) -> None: ... + def glStencilOp(self, fail:int, zfail:int, zpass:int) -> None: ... + def glStencilOpSeparate(self, face:int, sfail:int, dpfail:int, dppass:int) -> None: ... + def glTexBuffer(self, target:int, internalformat:int, buffer:int) -> None: ... + def glTexCoord1d(self, s:float) -> None: ... + def glTexCoord1dv(self, v:typing.Sequence) -> None: ... + def glTexCoord1f(self, s:float) -> None: ... + def glTexCoord1fv(self, v:typing.Sequence) -> None: ... + def glTexCoord1i(self, s:int) -> None: ... + def glTexCoord1iv(self, v:typing.Sequence) -> None: ... + def glTexCoord1s(self, s:int) -> None: ... + def glTexCoord1sv(self, v:typing.Sequence) -> None: ... + def glTexCoord2d(self, s:float, t:float) -> None: ... + def glTexCoord2dv(self, v:typing.Sequence) -> None: ... + def glTexCoord2f(self, s:float, t:float) -> None: ... + def glTexCoord2fv(self, v:typing.Sequence) -> None: ... + def glTexCoord2i(self, s:int, t:int) -> None: ... + def glTexCoord2iv(self, v:typing.Sequence) -> None: ... + def glTexCoord2s(self, s:int, t:int) -> None: ... + def glTexCoord2sv(self, v:typing.Sequence) -> None: ... + def glTexCoord3d(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3dv(self, v:typing.Sequence) -> None: ... + def glTexCoord3f(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3fv(self, v:typing.Sequence) -> None: ... + def glTexCoord3i(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3iv(self, v:typing.Sequence) -> None: ... + def glTexCoord3s(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3sv(self, v:typing.Sequence) -> None: ... + def glTexCoord4d(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4dv(self, v:typing.Sequence) -> None: ... + def glTexCoord4f(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4fv(self, v:typing.Sequence) -> None: ... + def glTexCoord4i(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4iv(self, v:typing.Sequence) -> None: ... + def glTexCoord4s(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4sv(self, v:typing.Sequence) -> None: ... + def glTexCoordP1ui(self, type:int, coords:int) -> None: ... + def glTexCoordP1uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP2ui(self, type:int, coords:int) -> None: ... + def glTexCoordP2uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP3ui(self, type:int, coords:int) -> None: ... + def glTexCoordP3uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP4ui(self, type:int, coords:int) -> None: ... + def glTexCoordP4uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glTexEnvf(self, target:int, pname:int, param:float) -> None: ... + def glTexEnvfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexEnvi(self, target:int, pname:int, param:int) -> None: ... + def glTexEnviv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGend(self, coord:int, pname:int, param:float) -> None: ... + def glTexGendv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGenf(self, coord:int, pname:int, param:float) -> None: ... + def glTexGenfv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGeni(self, coord:int, pname:int, param:int) -> None: ... + def glTexGeniv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, fixedsamplelocations:int) -> None: ... + def glTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage3DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, depth:int, fixedsamplelocations:int) -> None: ... + def glTexParameterIiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterIuiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterf(self, target:int, pname:int, param:float) -> None: ... + def glTexParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameteri(self, target:int, pname:int, param:int) -> None: ... + def glTexParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexStorage1D(self, target:int, levels:int, internalformat:int, width:int) -> None: ... + def glTexStorage2D(self, target:int, levels:int, internalformat:int, width:int, height:int) -> None: ... + def glTexStorage3D(self, target:int, levels:int, internalformat:int, width:int, height:int, depth:int) -> None: ... + def glTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, pixels:int) -> None: ... + def glTranslated(self, x:float, y:float, z:float) -> None: ... + def glTranslatef(self, x:float, y:float, z:float) -> None: ... + def glUniform1d(self, location:int, x:float) -> None: ... + def glUniform1dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1f(self, location:int, v0:float) -> None: ... + def glUniform1fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1i(self, location:int, v0:int) -> None: ... + def glUniform1iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1ui(self, location:int, v0:int) -> None: ... + def glUniform1uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2d(self, location:int, x:float, y:float) -> None: ... + def glUniform2dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2f(self, location:int, v0:float, v1:float) -> None: ... + def glUniform2fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2i(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2ui(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3d(self, location:int, x:float, y:float, z:float) -> None: ... + def glUniform3dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3f(self, location:int, v0:float, v1:float, v2:float) -> None: ... + def glUniform3fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3i(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3ui(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4d(self, location:int, x:float, y:float, z:float, w:float) -> None: ... + def glUniform4dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4f(self, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glUniform4fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4i(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4ui(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniformBlockBinding(self, program:int, uniformBlockIndex:int, uniformBlockBinding:int) -> None: ... + def glUniformMatrix2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformSubroutinesuiv(self, shadertype:int, count:int, indices:typing.Sequence) -> None: ... + def glUnmapBuffer(self, target:int) -> int: ... + def glUseProgram(self, program:int) -> None: ... + def glUseProgramStages(self, pipeline:int, stages:int, program:int) -> None: ... + def glValidateProgram(self, program:int) -> None: ... + def glValidateProgramPipeline(self, pipeline:int) -> None: ... + def glVertex2d(self, x:float, y:float) -> None: ... + def glVertex2dv(self, v:typing.Sequence) -> None: ... + def glVertex2f(self, x:float, y:float) -> None: ... + def glVertex2fv(self, v:typing.Sequence) -> None: ... + def glVertex2i(self, x:int, y:int) -> None: ... + def glVertex2iv(self, v:typing.Sequence) -> None: ... + def glVertex2s(self, x:int, y:int) -> None: ... + def glVertex2sv(self, v:typing.Sequence) -> None: ... + def glVertex3d(self, x:float, y:float, z:float) -> None: ... + def glVertex3dv(self, v:typing.Sequence) -> None: ... + def glVertex3f(self, x:float, y:float, z:float) -> None: ... + def glVertex3fv(self, v:typing.Sequence) -> None: ... + def glVertex3i(self, x:int, y:int, z:int) -> None: ... + def glVertex3iv(self, v:typing.Sequence) -> None: ... + def glVertex3s(self, x:int, y:int, z:int) -> None: ... + def glVertex3sv(self, v:typing.Sequence) -> None: ... + def glVertex4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4dv(self, v:typing.Sequence) -> None: ... + def glVertex4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4fv(self, v:typing.Sequence) -> None: ... + def glVertex4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4iv(self, v:typing.Sequence) -> None: ... + def glVertex4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4sv(self, v:typing.Sequence) -> None: ... + def glVertexAttrib1d(self, index:int, x:float) -> None: ... + def glVertexAttrib1dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib1f(self, index:int, x:float) -> None: ... + def glVertexAttrib1fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib1s(self, index:int, x:int) -> None: ... + def glVertexAttrib1sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2d(self, index:int, x:float, y:float) -> None: ... + def glVertexAttrib2dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2f(self, index:int, x:float, y:float) -> None: ... + def glVertexAttrib2fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2s(self, index:int, x:int, y:int) -> None: ... + def glVertexAttrib2sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3d(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttrib3dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3f(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttrib3fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3s(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttrib3sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nbv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4Niv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nsv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nub(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttrib4Nubv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4Nuiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nusv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4bv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4d(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttrib4dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4f(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttrib4fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4s(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttrib4sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4ubv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4usv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribDivisor(self, index:int, divisor:int) -> None: ... + def glVertexAttribI1i(self, index:int, x:int) -> None: ... + def glVertexAttribI1iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI1ui(self, index:int, x:int) -> None: ... + def glVertexAttribI1uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI2i(self, index:int, x:int, y:int) -> None: ... + def glVertexAttribI2iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI2ui(self, index:int, x:int, y:int) -> None: ... + def glVertexAttribI2uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI3i(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttribI3iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI3ui(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttribI3uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4bv(self, index:int, v:bytes) -> None: ... + def glVertexAttribI4i(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttribI4iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4ubv(self, index:int, v:bytes) -> None: ... + def glVertexAttribI4ui(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttribI4uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4usv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribIPointer(self, index:int, size:int, type:int, stride:int, pointer:int) -> None: ... + def glVertexAttribL1d(self, index:int, x:float) -> None: ... + def glVertexAttribL1dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribL2d(self, index:int, x:float, y:float) -> None: ... + def glVertexAttribL2dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribL3d(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttribL3dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribL4d(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttribL4dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribLPointer(self, index:int, size:int, type:int, stride:int, pointer:int) -> None: ... + def glVertexAttribP1ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP1uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP2ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP2uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP3ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP3uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP4ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP4uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribPointer(self, index:int, size:int, type:int, normalized:int, stride:int, pointer:int) -> None: ... + def glVertexP2ui(self, type:int, value:int) -> None: ... + def glVertexP2uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexP3ui(self, type:int, value:int) -> None: ... + def glVertexP3uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexP4ui(self, type:int, value:int) -> None: ... + def glVertexP4uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glViewport(self, x:int, y:int, width:int, height:int) -> None: ... + def glViewportArrayv(self, first:int, count:int, v:typing.Sequence) -> None: ... + def glViewportIndexedf(self, index:int, x:float, y:float, w:float, h:float) -> None: ... + def glViewportIndexedfv(self, index:int, v:typing.Sequence) -> None: ... + def glWindowPos2d(self, x:float, y:float) -> None: ... + def glWindowPos2dv(self, v:typing.Sequence) -> None: ... + def glWindowPos2f(self, x:float, y:float) -> None: ... + def glWindowPos2fv(self, v:typing.Sequence) -> None: ... + def glWindowPos2i(self, x:int, y:int) -> None: ... + def glWindowPos2iv(self, v:typing.Sequence) -> None: ... + def glWindowPos2s(self, x:int, y:int) -> None: ... + def glWindowPos2sv(self, v:typing.Sequence) -> None: ... + def glWindowPos3d(self, x:float, y:float, z:float) -> None: ... + def glWindowPos3dv(self, v:typing.Sequence) -> None: ... + def glWindowPos3f(self, x:float, y:float, z:float) -> None: ... + def glWindowPos3fv(self, v:typing.Sequence) -> None: ... + def glWindowPos3i(self, x:int, y:int, z:int) -> None: ... + def glWindowPos3iv(self, v:typing.Sequence) -> None: ... + def glWindowPos3s(self, x:int, y:int, z:int) -> None: ... + def glWindowPos3sv(self, v:typing.Sequence) -> None: ... + def initializeOpenGLFunctions(self) -> bool: ... + + +class QOpenGLFunctions_4_2_Core(PySide2.QtGui.QAbstractOpenGLFunctions): + + def __init__(self) -> None: ... + + def glActiveShaderProgram(self, pipeline:int, program:int) -> None: ... + def glActiveTexture(self, texture:int) -> None: ... + def glAttachShader(self, program:int, shader:int) -> None: ... + def glBeginConditionalRender(self, id:int, mode:int) -> None: ... + def glBeginQuery(self, target:int, id:int) -> None: ... + def glBeginQueryIndexed(self, target:int, index:int, id:int) -> None: ... + def glBeginTransformFeedback(self, primitiveMode:int) -> None: ... + def glBindAttribLocation(self, program:int, index:int, name:bytes) -> None: ... + def glBindBuffer(self, target:int, buffer:int) -> None: ... + def glBindBufferBase(self, target:int, index:int, buffer:int) -> None: ... + def glBindFragDataLocation(self, program:int, color:int, name:bytes) -> None: ... + def glBindFragDataLocationIndexed(self, program:int, colorNumber:int, index:int, name:bytes) -> None: ... + def glBindFramebuffer(self, target:int, framebuffer:int) -> None: ... + def glBindImageTexture(self, unit:int, texture:int, level:int, layered:int, layer:int, access:int, format:int) -> None: ... + def glBindProgramPipeline(self, pipeline:int) -> None: ... + def glBindRenderbuffer(self, target:int, renderbuffer:int) -> None: ... + def glBindSampler(self, unit:int, sampler:int) -> None: ... + def glBindTexture(self, target:int, texture:int) -> None: ... + def glBindTransformFeedback(self, target:int, id:int) -> None: ... + def glBindVertexArray(self, array:int) -> None: ... + def glBlendColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glBlendEquation(self, mode:int) -> None: ... + def glBlendEquationSeparate(self, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendEquationSeparatei(self, buf:int, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendEquationi(self, buf:int, mode:int) -> None: ... + def glBlendFunc(self, sfactor:int, dfactor:int) -> None: ... + def glBlendFuncSeparate(self, sfactorRGB:int, dfactorRGB:int, sfactorAlpha:int, dfactorAlpha:int) -> None: ... + def glBlendFuncSeparatei(self, buf:int, srcRGB:int, dstRGB:int, srcAlpha:int, dstAlpha:int) -> None: ... + def glBlendFunci(self, buf:int, src:int, dst:int) -> None: ... + def glBlitFramebuffer(self, srcX0:int, srcY0:int, srcX1:int, srcY1:int, dstX0:int, dstY0:int, dstX1:int, dstY1:int, mask:int, filter:int) -> None: ... + def glCheckFramebufferStatus(self, target:int) -> int: ... + def glClampColor(self, target:int, clamp:int) -> None: ... + def glClear(self, mask:int) -> None: ... + def glClearBufferfi(self, buffer:int, drawbuffer:int, depth:float, stencil:int) -> None: ... + def glClearBufferfv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferuiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearDepth(self, depth:float) -> None: ... + def glClearDepthf(self, dd:float) -> None: ... + def glClearStencil(self, s:int) -> None: ... + def glColorMask(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColorMaski(self, index:int, r:int, g:int, b:int, a:int) -> None: ... + def glColorP3ui(self, type:int, color:int) -> None: ... + def glColorP3uiv(self, type:int, color:typing.Sequence) -> None: ... + def glColorP4ui(self, type:int, color:int) -> None: ... + def glColorP4uiv(self, type:int, color:typing.Sequence) -> None: ... + def glCompileShader(self, shader:int) -> None: ... + def glCompressedTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, imageSize:int, data:int) -> None: ... + def glCopyTexImage1D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, border:int) -> None: ... + def glCopyTexImage2D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, height:int, border:int) -> None: ... + def glCopyTexSubImage1D(self, target:int, level:int, xoffset:int, x:int, y:int, width:int) -> None: ... + def glCopyTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCreateProgram(self) -> int: ... + def glCreateShader(self, type:int) -> int: ... + def glCullFace(self, mode:int) -> None: ... + def glDeleteBuffers(self, n:int, buffers:typing.Sequence) -> None: ... + def glDeleteFramebuffers(self, n:int, framebuffers:typing.Sequence) -> None: ... + def glDeleteProgram(self, program:int) -> None: ... + def glDeleteProgramPipelines(self, n:int, pipelines:typing.Sequence) -> None: ... + def glDeleteQueries(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteRenderbuffers(self, n:int, renderbuffers:typing.Sequence) -> None: ... + def glDeleteSamplers(self, count:int, samplers:typing.Sequence) -> None: ... + def glDeleteShader(self, shader:int) -> None: ... + def glDeleteTextures(self, n:int, textures:typing.Sequence) -> None: ... + def glDeleteTransformFeedbacks(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteVertexArrays(self, n:int, arrays:typing.Sequence) -> None: ... + def glDepthFunc(self, func:int) -> None: ... + def glDepthMask(self, flag:int) -> None: ... + def glDepthRange(self, nearVal:float, farVal:float) -> None: ... + def glDepthRangeArrayv(self, first:int, count:int, v:typing.Sequence) -> None: ... + def glDepthRangeIndexed(self, index:int, n:float, f:float) -> None: ... + def glDepthRangef(self, n:float, f:float) -> None: ... + def glDetachShader(self, program:int, shader:int) -> None: ... + def glDisable(self, cap:int) -> None: ... + def glDisableVertexAttribArray(self, index:int) -> None: ... + def glDisablei(self, target:int, index:int) -> None: ... + def glDrawArrays(self, mode:int, first:int, count:int) -> None: ... + def glDrawArraysIndirect(self, mode:int, indirect:int) -> None: ... + def glDrawArraysInstanced(self, mode:int, first:int, count:int, instancecount:int) -> None: ... + def glDrawArraysInstancedBaseInstance(self, mode:int, first:int, count:int, instancecount:int, baseinstance:int) -> None: ... + def glDrawBuffer(self, mode:int) -> None: ... + def glDrawBuffers(self, n:int, bufs:typing.Sequence) -> None: ... + def glDrawElements(self, mode:int, count:int, type:int, indices:int) -> None: ... + def glDrawElementsBaseVertex(self, mode:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glDrawElementsIndirect(self, mode:int, type:int, indirect:int) -> None: ... + def glDrawElementsInstanced(self, mode:int, count:int, type:int, indices:int, instancecount:int) -> None: ... + def glDrawElementsInstancedBaseInstance(self, mode:int, count:int, type:int, indices:int, instancecount:int, baseinstance:int) -> None: ... + def glDrawElementsInstancedBaseVertex(self, mode:int, count:int, type:int, indices:int, instancecount:int, basevertex:int) -> None: ... + def glDrawElementsInstancedBaseVertexBaseInstance(self, mode:int, count:int, type:int, indices:int, instancecount:int, basevertex:int, baseinstance:int) -> None: ... + def glDrawRangeElements(self, mode:int, start:int, end:int, count:int, type:int, indices:int) -> None: ... + def glDrawRangeElementsBaseVertex(self, mode:int, start:int, end:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glDrawTransformFeedback(self, mode:int, id:int) -> None: ... + def glDrawTransformFeedbackInstanced(self, mode:int, id:int, instancecount:int) -> None: ... + def glDrawTransformFeedbackStream(self, mode:int, id:int, stream:int) -> None: ... + def glDrawTransformFeedbackStreamInstanced(self, mode:int, id:int, stream:int, instancecount:int) -> None: ... + def glEnable(self, cap:int) -> None: ... + def glEnableVertexAttribArray(self, index:int) -> None: ... + def glEnablei(self, target:int, index:int) -> None: ... + def glEndConditionalRender(self) -> None: ... + def glEndQuery(self, target:int) -> None: ... + def glEndQueryIndexed(self, target:int, index:int) -> None: ... + def glEndTransformFeedback(self) -> None: ... + def glFinish(self) -> None: ... + def glFlush(self) -> None: ... + def glFramebufferRenderbuffer(self, target:int, attachment:int, renderbuffertarget:int, renderbuffer:int) -> None: ... + def glFramebufferTexture(self, target:int, attachment:int, texture:int, level:int) -> None: ... + def glFramebufferTexture1D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture2D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture3D(self, target:int, attachment:int, textarget:int, texture:int, level:int, zoffset:int) -> None: ... + def glFramebufferTextureLayer(self, target:int, attachment:int, texture:int, level:int, layer:int) -> None: ... + def glFrontFace(self, mode:int) -> None: ... + def glGenerateMipmap(self, target:int) -> None: ... + def glGetAttribLocation(self, program:int, name:bytes) -> int: ... + def glGetError(self) -> int: ... + def glGetFragDataIndex(self, program:int, name:bytes) -> int: ... + def glGetFragDataLocation(self, program:int, name:bytes) -> int: ... + def glGetString(self, name:int) -> bytes: ... + def glGetStringi(self, name:int, index:int) -> bytes: ... + def glGetSubroutineIndex(self, program:int, shadertype:int, name:bytes) -> int: ... + def glGetSubroutineUniformLocation(self, program:int, shadertype:int, name:bytes) -> int: ... + def glGetUniformBlockIndex(self, program:int, uniformBlockName:bytes) -> int: ... + def glGetUniformLocation(self, program:int, name:bytes) -> int: ... + def glHint(self, target:int, mode:int) -> None: ... + def glIndexub(self, c:int) -> None: ... + def glIndexubv(self, c:bytes) -> None: ... + def glIsBuffer(self, buffer:int) -> int: ... + def glIsEnabled(self, cap:int) -> int: ... + def glIsEnabledi(self, target:int, index:int) -> int: ... + def glIsFramebuffer(self, framebuffer:int) -> int: ... + def glIsProgram(self, program:int) -> int: ... + def glIsProgramPipeline(self, pipeline:int) -> int: ... + def glIsQuery(self, id:int) -> int: ... + def glIsRenderbuffer(self, renderbuffer:int) -> int: ... + def glIsSampler(self, sampler:int) -> int: ... + def glIsShader(self, shader:int) -> int: ... + def glIsTexture(self, texture:int) -> int: ... + def glIsTransformFeedback(self, id:int) -> int: ... + def glIsVertexArray(self, array:int) -> int: ... + def glLineWidth(self, width:float) -> None: ... + def glLinkProgram(self, program:int) -> None: ... + def glLogicOp(self, opcode:int) -> None: ... + def glMapBuffer(self, target:int, access:int) -> int: ... + def glMemoryBarrier(self, barriers:int) -> None: ... + def glMinSampleShading(self, value:float) -> None: ... + def glMultiDrawArrays(self, mode:int, first:typing.Sequence, count:typing.Sequence, drawcount:int) -> None: ... + def glMultiTexCoordP1ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP1uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP2ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP2uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP3ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP3uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP4ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP4uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glNormalP3ui(self, type:int, coords:int) -> None: ... + def glNormalP3uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glPatchParameterfv(self, pname:int, values:typing.Sequence) -> None: ... + def glPatchParameteri(self, pname:int, value:int) -> None: ... + def glPauseTransformFeedback(self) -> None: ... + def glPixelStoref(self, pname:int, param:float) -> None: ... + def glPixelStorei(self, pname:int, param:int) -> None: ... + def glPointParameterf(self, pname:int, param:float) -> None: ... + def glPointParameterfv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointParameteri(self, pname:int, param:int) -> None: ... + def glPointParameteriv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointSize(self, size:float) -> None: ... + def glPolygonMode(self, face:int, mode:int) -> None: ... + def glPolygonOffset(self, factor:float, units:float) -> None: ... + def glPrimitiveRestartIndex(self, index:int) -> None: ... + def glProgramBinary(self, program:int, binaryFormat:int, binary:int, length:int) -> None: ... + def glProgramParameteri(self, program:int, pname:int, value:int) -> None: ... + def glProgramUniform1d(self, program:int, location:int, v0:float) -> None: ... + def glProgramUniform1dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1f(self, program:int, location:int, v0:float) -> None: ... + def glProgramUniform1fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1i(self, program:int, location:int, v0:int) -> None: ... + def glProgramUniform1iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1ui(self, program:int, location:int, v0:int) -> None: ... + def glProgramUniform1uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2d(self, program:int, location:int, v0:float, v1:float) -> None: ... + def glProgramUniform2dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2f(self, program:int, location:int, v0:float, v1:float) -> None: ... + def glProgramUniform2fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2i(self, program:int, location:int, v0:int, v1:int) -> None: ... + def glProgramUniform2iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2ui(self, program:int, location:int, v0:int, v1:int) -> None: ... + def glProgramUniform2uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3d(self, program:int, location:int, v0:float, v1:float, v2:float) -> None: ... + def glProgramUniform3dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3f(self, program:int, location:int, v0:float, v1:float, v2:float) -> None: ... + def glProgramUniform3fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3i(self, program:int, location:int, v0:int, v1:int, v2:int) -> None: ... + def glProgramUniform3iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3ui(self, program:int, location:int, v0:int, v1:int, v2:int) -> None: ... + def glProgramUniform3uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4d(self, program:int, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glProgramUniform4dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4f(self, program:int, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glProgramUniform4fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4i(self, program:int, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glProgramUniform4iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4ui(self, program:int, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glProgramUniform4uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x3dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x4dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x2dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x4dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x2dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x3dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProvokingVertex(self, mode:int) -> None: ... + def glQueryCounter(self, id:int, target:int) -> None: ... + def glReadBuffer(self, mode:int) -> None: ... + def glReleaseShaderCompiler(self) -> None: ... + def glRenderbufferStorage(self, target:int, internalformat:int, width:int, height:int) -> None: ... + def glRenderbufferStorageMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int) -> None: ... + def glResumeTransformFeedback(self) -> None: ... + def glSampleCoverage(self, value:float, invert:int) -> None: ... + def glSampleMaski(self, index:int, mask:int) -> None: ... + def glSamplerParameterIiv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameterIuiv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameterf(self, sampler:int, pname:int, param:float) -> None: ... + def glSamplerParameterfv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameteri(self, sampler:int, pname:int, param:int) -> None: ... + def glSamplerParameteriv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glScissor(self, x:int, y:int, width:int, height:int) -> None: ... + def glScissorArrayv(self, first:int, count:int, v:typing.Sequence) -> None: ... + def glScissorIndexed(self, index:int, left:int, bottom:int, width:int, height:int) -> None: ... + def glScissorIndexedv(self, index:int, v:typing.Sequence) -> None: ... + def glSecondaryColorP3ui(self, type:int, color:int) -> None: ... + def glSecondaryColorP3uiv(self, type:int, color:typing.Sequence) -> None: ... + def glShaderBinary(self, count:int, shaders:typing.Sequence, binaryformat:int, binary:int, length:int) -> None: ... + def glStencilFunc(self, func:int, ref:int, mask:int) -> None: ... + def glStencilFuncSeparate(self, face:int, func:int, ref:int, mask:int) -> None: ... + def glStencilMask(self, mask:int) -> None: ... + def glStencilMaskSeparate(self, face:int, mask:int) -> None: ... + def glStencilOp(self, fail:int, zfail:int, zpass:int) -> None: ... + def glStencilOpSeparate(self, face:int, sfail:int, dpfail:int, dppass:int) -> None: ... + def glTexBuffer(self, target:int, internalformat:int, buffer:int) -> None: ... + def glTexCoordP1ui(self, type:int, coords:int) -> None: ... + def glTexCoordP1uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP2ui(self, type:int, coords:int) -> None: ... + def glTexCoordP2uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP3ui(self, type:int, coords:int) -> None: ... + def glTexCoordP3uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP4ui(self, type:int, coords:int) -> None: ... + def glTexCoordP4uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, fixedsamplelocations:int) -> None: ... + def glTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage3DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, depth:int, fixedsamplelocations:int) -> None: ... + def glTexParameterIiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterIuiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterf(self, target:int, pname:int, param:float) -> None: ... + def glTexParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameteri(self, target:int, pname:int, param:int) -> None: ... + def glTexParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexStorage1D(self, target:int, levels:int, internalformat:int, width:int) -> None: ... + def glTexStorage2D(self, target:int, levels:int, internalformat:int, width:int, height:int) -> None: ... + def glTexStorage3D(self, target:int, levels:int, internalformat:int, width:int, height:int, depth:int) -> None: ... + def glTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, pixels:int) -> None: ... + def glUniform1d(self, location:int, x:float) -> None: ... + def glUniform1dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1f(self, location:int, v0:float) -> None: ... + def glUniform1fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1i(self, location:int, v0:int) -> None: ... + def glUniform1iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1ui(self, location:int, v0:int) -> None: ... + def glUniform1uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2d(self, location:int, x:float, y:float) -> None: ... + def glUniform2dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2f(self, location:int, v0:float, v1:float) -> None: ... + def glUniform2fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2i(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2ui(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3d(self, location:int, x:float, y:float, z:float) -> None: ... + def glUniform3dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3f(self, location:int, v0:float, v1:float, v2:float) -> None: ... + def glUniform3fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3i(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3ui(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4d(self, location:int, x:float, y:float, z:float, w:float) -> None: ... + def glUniform4dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4f(self, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glUniform4fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4i(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4ui(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniformBlockBinding(self, program:int, uniformBlockIndex:int, uniformBlockBinding:int) -> None: ... + def glUniformMatrix2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformSubroutinesuiv(self, shadertype:int, count:int, indices:typing.Sequence) -> None: ... + def glUnmapBuffer(self, target:int) -> int: ... + def glUseProgram(self, program:int) -> None: ... + def glUseProgramStages(self, pipeline:int, stages:int, program:int) -> None: ... + def glValidateProgram(self, program:int) -> None: ... + def glValidateProgramPipeline(self, pipeline:int) -> None: ... + def glVertexAttribDivisor(self, index:int, divisor:int) -> None: ... + def glVertexAttribIPointer(self, index:int, size:int, type:int, stride:int, pointer:int) -> None: ... + def glVertexAttribL1d(self, index:int, x:float) -> None: ... + def glVertexAttribL1dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribL2d(self, index:int, x:float, y:float) -> None: ... + def glVertexAttribL2dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribL3d(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttribL3dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribL4d(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttribL4dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribLPointer(self, index:int, size:int, type:int, stride:int, pointer:int) -> None: ... + def glVertexAttribP1ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP1uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP2ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP2uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP3ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP3uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP4ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP4uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribPointer(self, index:int, size:int, type:int, normalized:int, stride:int, pointer:int) -> None: ... + def glVertexP2ui(self, type:int, value:int) -> None: ... + def glVertexP2uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexP3ui(self, type:int, value:int) -> None: ... + def glVertexP3uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexP4ui(self, type:int, value:int) -> None: ... + def glVertexP4uiv(self, type:int, value:typing.Sequence) -> None: ... + def glViewport(self, x:int, y:int, width:int, height:int) -> None: ... + def glViewportArrayv(self, first:int, count:int, v:typing.Sequence) -> None: ... + def glViewportIndexedf(self, index:int, x:float, y:float, w:float, h:float) -> None: ... + def glViewportIndexedfv(self, index:int, v:typing.Sequence) -> None: ... + def initializeOpenGLFunctions(self) -> bool: ... + + +class QOpenGLFunctions_4_3_Compatibility(PySide2.QtGui.QAbstractOpenGLFunctions): + + def __init__(self) -> None: ... + + def glAccum(self, op:int, value:float) -> None: ... + def glActiveShaderProgram(self, pipeline:int, program:int) -> None: ... + def glActiveTexture(self, texture:int) -> None: ... + def glAlphaFunc(self, func:int, ref:float) -> None: ... + def glArrayElement(self, i:int) -> None: ... + def glAttachShader(self, program:int, shader:int) -> None: ... + def glBegin(self, mode:int) -> None: ... + def glBeginConditionalRender(self, id:int, mode:int) -> None: ... + def glBeginQuery(self, target:int, id:int) -> None: ... + def glBeginQueryIndexed(self, target:int, index:int, id:int) -> None: ... + def glBeginTransformFeedback(self, primitiveMode:int) -> None: ... + def glBindAttribLocation(self, program:int, index:int, name:bytes) -> None: ... + def glBindBuffer(self, target:int, buffer:int) -> None: ... + def glBindBufferBase(self, target:int, index:int, buffer:int) -> None: ... + def glBindFragDataLocation(self, program:int, color:int, name:bytes) -> None: ... + def glBindFragDataLocationIndexed(self, program:int, colorNumber:int, index:int, name:bytes) -> None: ... + def glBindFramebuffer(self, target:int, framebuffer:int) -> None: ... + def glBindImageTexture(self, unit:int, texture:int, level:int, layered:int, layer:int, access:int, format:int) -> None: ... + def glBindProgramPipeline(self, pipeline:int) -> None: ... + def glBindRenderbuffer(self, target:int, renderbuffer:int) -> None: ... + def glBindSampler(self, unit:int, sampler:int) -> None: ... + def glBindTexture(self, target:int, texture:int) -> None: ... + def glBindTransformFeedback(self, target:int, id:int) -> None: ... + def glBindVertexArray(self, array:int) -> None: ... + def glBlendColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glBlendEquation(self, mode:int) -> None: ... + def glBlendEquationSeparate(self, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendEquationSeparatei(self, buf:int, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendEquationi(self, buf:int, mode:int) -> None: ... + def glBlendFunc(self, sfactor:int, dfactor:int) -> None: ... + def glBlendFuncSeparate(self, sfactorRGB:int, dfactorRGB:int, sfactorAlpha:int, dfactorAlpha:int) -> None: ... + def glBlendFuncSeparatei(self, buf:int, srcRGB:int, dstRGB:int, srcAlpha:int, dstAlpha:int) -> None: ... + def glBlendFunci(self, buf:int, src:int, dst:int) -> None: ... + def glBlitFramebuffer(self, srcX0:int, srcY0:int, srcX1:int, srcY1:int, dstX0:int, dstY0:int, dstX1:int, dstY1:int, mask:int, filter:int) -> None: ... + def glCallList(self, list:int) -> None: ... + def glCallLists(self, n:int, type:int, lists:int) -> None: ... + def glCheckFramebufferStatus(self, target:int) -> int: ... + def glClampColor(self, target:int, clamp:int) -> None: ... + def glClear(self, mask:int) -> None: ... + def glClearAccum(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearBufferData(self, target:int, internalformat:int, format:int, type:int, data:int) -> None: ... + def glClearBufferfi(self, buffer:int, drawbuffer:int, depth:float, stencil:int) -> None: ... + def glClearBufferfv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferuiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearDepth(self, depth:float) -> None: ... + def glClearDepthf(self, dd:float) -> None: ... + def glClearIndex(self, c:float) -> None: ... + def glClearStencil(self, s:int) -> None: ... + def glClientActiveTexture(self, texture:int) -> None: ... + def glClipPlane(self, plane:int, equation:typing.Sequence) -> None: ... + def glColor3b(self, red:int, green:int, blue:int) -> None: ... + def glColor3bv(self, v:bytes) -> None: ... + def glColor3d(self, red:float, green:float, blue:float) -> None: ... + def glColor3dv(self, v:typing.Sequence) -> None: ... + def glColor3f(self, red:float, green:float, blue:float) -> None: ... + def glColor3fv(self, v:typing.Sequence) -> None: ... + def glColor3i(self, red:int, green:int, blue:int) -> None: ... + def glColor3iv(self, v:typing.Sequence) -> None: ... + def glColor3s(self, red:int, green:int, blue:int) -> None: ... + def glColor3sv(self, v:typing.Sequence) -> None: ... + def glColor3ub(self, red:int, green:int, blue:int) -> None: ... + def glColor3ubv(self, v:bytes) -> None: ... + def glColor3ui(self, red:int, green:int, blue:int) -> None: ... + def glColor3uiv(self, v:typing.Sequence) -> None: ... + def glColor3us(self, red:int, green:int, blue:int) -> None: ... + def glColor3usv(self, v:typing.Sequence) -> None: ... + def glColor4b(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4bv(self, v:bytes) -> None: ... + def glColor4d(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4dv(self, v:typing.Sequence) -> None: ... + def glColor4f(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4fv(self, v:typing.Sequence) -> None: ... + def glColor4i(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4iv(self, v:typing.Sequence) -> None: ... + def glColor4s(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4sv(self, v:typing.Sequence) -> None: ... + def glColor4ub(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4ubv(self, v:bytes) -> None: ... + def glColor4ui(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4uiv(self, v:typing.Sequence) -> None: ... + def glColor4us(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4usv(self, v:typing.Sequence) -> None: ... + def glColorMask(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColorMaski(self, index:int, r:int, g:int, b:int, a:int) -> None: ... + def glColorMaterial(self, face:int, mode:int) -> None: ... + def glColorP3ui(self, type:int, color:int) -> None: ... + def glColorP3uiv(self, type:int, color:typing.Sequence) -> None: ... + def glColorP4ui(self, type:int, color:int) -> None: ... + def glColorP4uiv(self, type:int, color:typing.Sequence) -> None: ... + def glColorPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glColorSubTable(self, target:int, start:int, count:int, format:int, type:int, data:int) -> None: ... + def glColorTable(self, target:int, internalformat:int, width:int, format:int, type:int, table:int) -> None: ... + def glColorTableParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glColorTableParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glCompileShader(self, shader:int) -> None: ... + def glCompressedTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, imageSize:int, data:int) -> None: ... + def glConvolutionFilter1D(self, target:int, internalformat:int, width:int, format:int, type:int, image:int) -> None: ... + def glConvolutionFilter2D(self, target:int, internalformat:int, width:int, height:int, format:int, type:int, image:int) -> None: ... + def glConvolutionParameterf(self, target:int, pname:int, params:float) -> None: ... + def glConvolutionParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glConvolutionParameteri(self, target:int, pname:int, params:int) -> None: ... + def glConvolutionParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glCopyColorSubTable(self, target:int, start:int, x:int, y:int, width:int) -> None: ... + def glCopyColorTable(self, target:int, internalformat:int, x:int, y:int, width:int) -> None: ... + def glCopyConvolutionFilter1D(self, target:int, internalformat:int, x:int, y:int, width:int) -> None: ... + def glCopyConvolutionFilter2D(self, target:int, internalformat:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyImageSubData(self, srcName:int, srcTarget:int, srcLevel:int, srcX:int, srcY:int, srcZ:int, dstName:int, dstTarget:int, dstLevel:int, dstX:int, dstY:int, dstZ:int, srcWidth:int, srcHeight:int, srcDepth:int) -> None: ... + def glCopyPixels(self, x:int, y:int, width:int, height:int, type:int) -> None: ... + def glCopyTexImage1D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, border:int) -> None: ... + def glCopyTexImage2D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, height:int, border:int) -> None: ... + def glCopyTexSubImage1D(self, target:int, level:int, xoffset:int, x:int, y:int, width:int) -> None: ... + def glCopyTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCreateProgram(self) -> int: ... + def glCreateShader(self, type:int) -> int: ... + def glCullFace(self, mode:int) -> None: ... + def glDeleteBuffers(self, n:int, buffers:typing.Sequence) -> None: ... + def glDeleteFramebuffers(self, n:int, framebuffers:typing.Sequence) -> None: ... + def glDeleteLists(self, list:int, range:int) -> None: ... + def glDeleteProgram(self, program:int) -> None: ... + def glDeleteProgramPipelines(self, n:int, pipelines:typing.Sequence) -> None: ... + def glDeleteQueries(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteRenderbuffers(self, n:int, renderbuffers:typing.Sequence) -> None: ... + def glDeleteSamplers(self, count:int, samplers:typing.Sequence) -> None: ... + def glDeleteShader(self, shader:int) -> None: ... + def glDeleteTextures(self, n:int, textures:typing.Sequence) -> None: ... + def glDeleteTransformFeedbacks(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteVertexArrays(self, n:int, arrays:typing.Sequence) -> None: ... + def glDepthFunc(self, func:int) -> None: ... + def glDepthMask(self, flag:int) -> None: ... + def glDepthRange(self, nearVal:float, farVal:float) -> None: ... + def glDepthRangeArrayv(self, first:int, count:int, v:typing.Sequence) -> None: ... + def glDepthRangeIndexed(self, index:int, n:float, f:float) -> None: ... + def glDepthRangef(self, n:float, f:float) -> None: ... + def glDetachShader(self, program:int, shader:int) -> None: ... + def glDisable(self, cap:int) -> None: ... + def glDisableClientState(self, array:int) -> None: ... + def glDisableVertexAttribArray(self, index:int) -> None: ... + def glDisablei(self, target:int, index:int) -> None: ... + def glDispatchCompute(self, num_groups_x:int, num_groups_y:int, num_groups_z:int) -> None: ... + def glDrawArrays(self, mode:int, first:int, count:int) -> None: ... + def glDrawArraysIndirect(self, mode:int, indirect:int) -> None: ... + def glDrawArraysInstanced(self, mode:int, first:int, count:int, instancecount:int) -> None: ... + def glDrawArraysInstancedBaseInstance(self, mode:int, first:int, count:int, instancecount:int, baseinstance:int) -> None: ... + def glDrawBuffer(self, mode:int) -> None: ... + def glDrawBuffers(self, n:int, bufs:typing.Sequence) -> None: ... + def glDrawElements(self, mode:int, count:int, type:int, indices:int) -> None: ... + def glDrawElementsBaseVertex(self, mode:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glDrawElementsIndirect(self, mode:int, type:int, indirect:int) -> None: ... + def glDrawElementsInstanced(self, mode:int, count:int, type:int, indices:int, instancecount:int) -> None: ... + def glDrawElementsInstancedBaseInstance(self, mode:int, count:int, type:int, indices:int, instancecount:int, baseinstance:int) -> None: ... + def glDrawElementsInstancedBaseVertex(self, mode:int, count:int, type:int, indices:int, instancecount:int, basevertex:int) -> None: ... + def glDrawElementsInstancedBaseVertexBaseInstance(self, mode:int, count:int, type:int, indices:int, instancecount:int, basevertex:int, baseinstance:int) -> None: ... + def glDrawPixels(self, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glDrawRangeElements(self, mode:int, start:int, end:int, count:int, type:int, indices:int) -> None: ... + def glDrawRangeElementsBaseVertex(self, mode:int, start:int, end:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glDrawTransformFeedback(self, mode:int, id:int) -> None: ... + def glDrawTransformFeedbackInstanced(self, mode:int, id:int, instancecount:int) -> None: ... + def glDrawTransformFeedbackStream(self, mode:int, id:int, stream:int) -> None: ... + def glDrawTransformFeedbackStreamInstanced(self, mode:int, id:int, stream:int, instancecount:int) -> None: ... + def glEdgeFlag(self, flag:int) -> None: ... + def glEdgeFlagPointer(self, stride:int, pointer:int) -> None: ... + def glEnable(self, cap:int) -> None: ... + def glEnableClientState(self, array:int) -> None: ... + def glEnableVertexAttribArray(self, index:int) -> None: ... + def glEnablei(self, target:int, index:int) -> None: ... + def glEnd(self) -> None: ... + def glEndConditionalRender(self) -> None: ... + def glEndList(self) -> None: ... + def glEndQuery(self, target:int) -> None: ... + def glEndQueryIndexed(self, target:int, index:int) -> None: ... + def glEndTransformFeedback(self) -> None: ... + def glEvalCoord1d(self, u:float) -> None: ... + def glEvalCoord1dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord1f(self, u:float) -> None: ... + def glEvalCoord1fv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2d(self, u:float, v:float) -> None: ... + def glEvalCoord2dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2f(self, u:float, v:float) -> None: ... + def glEvalCoord2fv(self, u:typing.Sequence) -> None: ... + def glEvalMesh1(self, mode:int, i1:int, i2:int) -> None: ... + def glEvalMesh2(self, mode:int, i1:int, i2:int, j1:int, j2:int) -> None: ... + def glEvalPoint1(self, i:int) -> None: ... + def glEvalPoint2(self, i:int, j:int) -> None: ... + def glFinish(self) -> None: ... + def glFlush(self) -> None: ... + def glFogCoordPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glFogCoordd(self, coord:float) -> None: ... + def glFogCoorddv(self, coord:typing.Sequence) -> None: ... + def glFogCoordf(self, coord:float) -> None: ... + def glFogCoordfv(self, coord:typing.Sequence) -> None: ... + def glFogf(self, pname:int, param:float) -> None: ... + def glFogfv(self, pname:int, params:typing.Sequence) -> None: ... + def glFogi(self, pname:int, param:int) -> None: ... + def glFogiv(self, pname:int, params:typing.Sequence) -> None: ... + def glFramebufferParameteri(self, target:int, pname:int, param:int) -> None: ... + def glFramebufferRenderbuffer(self, target:int, attachment:int, renderbuffertarget:int, renderbuffer:int) -> None: ... + def glFramebufferTexture(self, target:int, attachment:int, texture:int, level:int) -> None: ... + def glFramebufferTexture1D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture2D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture3D(self, target:int, attachment:int, textarget:int, texture:int, level:int, zoffset:int) -> None: ... + def glFramebufferTextureLayer(self, target:int, attachment:int, texture:int, level:int, layer:int) -> None: ... + def glFrontFace(self, mode:int) -> None: ... + def glFrustum(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glGenLists(self, range:int) -> int: ... + def glGenerateMipmap(self, target:int) -> None: ... + def glGetAttribLocation(self, program:int, name:bytes) -> int: ... + def glGetError(self) -> int: ... + def glGetFragDataIndex(self, program:int, name:bytes) -> int: ... + def glGetFragDataLocation(self, program:int, name:bytes) -> int: ... + def glGetProgramResourceIndex(self, program:int, programInterface:int, name:bytes) -> int: ... + def glGetProgramResourceLocation(self, program:int, programInterface:int, name:bytes) -> int: ... + def glGetProgramResourceLocationIndex(self, program:int, programInterface:int, name:bytes) -> int: ... + def glGetString(self, name:int) -> bytes: ... + def glGetStringi(self, name:int, index:int) -> bytes: ... + def glGetSubroutineIndex(self, program:int, shadertype:int, name:bytes) -> int: ... + def glGetSubroutineUniformLocation(self, program:int, shadertype:int, name:bytes) -> int: ... + def glGetUniformBlockIndex(self, program:int, uniformBlockName:bytes) -> int: ... + def glGetUniformLocation(self, program:int, name:bytes) -> int: ... + def glHint(self, target:int, mode:int) -> None: ... + def glHistogram(self, target:int, width:int, internalformat:int, sink:int) -> None: ... + def glIndexMask(self, mask:int) -> None: ... + def glIndexPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glIndexd(self, c:float) -> None: ... + def glIndexdv(self, c:typing.Sequence) -> None: ... + def glIndexf(self, c:float) -> None: ... + def glIndexfv(self, c:typing.Sequence) -> None: ... + def glIndexi(self, c:int) -> None: ... + def glIndexiv(self, c:typing.Sequence) -> None: ... + def glIndexs(self, c:int) -> None: ... + def glIndexsv(self, c:typing.Sequence) -> None: ... + def glIndexub(self, c:int) -> None: ... + def glIndexubv(self, c:bytes) -> None: ... + def glInitNames(self) -> None: ... + def glInterleavedArrays(self, format:int, stride:int, pointer:int) -> None: ... + def glInvalidateBufferData(self, buffer:int) -> None: ... + def glInvalidateFramebuffer(self, target:int, numAttachments:int, attachments:typing.Sequence) -> None: ... + def glInvalidateSubFramebuffer(self, target:int, numAttachments:int, attachments:typing.Sequence, x:int, y:int, width:int, height:int) -> None: ... + def glInvalidateTexImage(self, texture:int, level:int) -> None: ... + def glInvalidateTexSubImage(self, texture:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int) -> None: ... + def glIsBuffer(self, buffer:int) -> int: ... + def glIsEnabled(self, cap:int) -> int: ... + def glIsEnabledi(self, target:int, index:int) -> int: ... + def glIsFramebuffer(self, framebuffer:int) -> int: ... + def glIsList(self, list:int) -> int: ... + def glIsProgram(self, program:int) -> int: ... + def glIsProgramPipeline(self, pipeline:int) -> int: ... + def glIsQuery(self, id:int) -> int: ... + def glIsRenderbuffer(self, renderbuffer:int) -> int: ... + def glIsSampler(self, sampler:int) -> int: ... + def glIsShader(self, shader:int) -> int: ... + def glIsTexture(self, texture:int) -> int: ... + def glIsTransformFeedback(self, id:int) -> int: ... + def glIsVertexArray(self, array:int) -> int: ... + def glLightModelf(self, pname:int, param:float) -> None: ... + def glLightModelfv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightModeli(self, pname:int, param:int) -> None: ... + def glLightModeliv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightf(self, light:int, pname:int, param:float) -> None: ... + def glLightfv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLighti(self, light:int, pname:int, param:int) -> None: ... + def glLightiv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLineStipple(self, factor:int, pattern:int) -> None: ... + def glLineWidth(self, width:float) -> None: ... + def glLinkProgram(self, program:int) -> None: ... + def glListBase(self, base:int) -> None: ... + def glLoadIdentity(self) -> None: ... + def glLoadMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadMatrixf(self, m:typing.Sequence) -> None: ... + def glLoadName(self, name:int) -> None: ... + def glLoadTransposeMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadTransposeMatrixf(self, m:typing.Sequence) -> None: ... + def glLogicOp(self, opcode:int) -> None: ... + def glMap1d(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap1f(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap2d(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMap2f(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMapBuffer(self, target:int, access:int) -> int: ... + def glMapGrid1d(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid1f(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid2d(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMapGrid2f(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMaterialf(self, face:int, pname:int, param:float) -> None: ... + def glMaterialfv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMateriali(self, face:int, pname:int, param:int) -> None: ... + def glMaterialiv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMatrixMode(self, mode:int) -> None: ... + def glMemoryBarrier(self, barriers:int) -> None: ... + def glMinSampleShading(self, value:float) -> None: ... + def glMinmax(self, target:int, internalformat:int, sink:int) -> None: ... + def glMultMatrixd(self, m:typing.Sequence) -> None: ... + def glMultMatrixf(self, m:typing.Sequence) -> None: ... + def glMultTransposeMatrixd(self, m:typing.Sequence) -> None: ... + def glMultTransposeMatrixf(self, m:typing.Sequence) -> None: ... + def glMultiDrawArrays(self, mode:int, first:typing.Sequence, count:typing.Sequence, drawcount:int) -> None: ... + def glMultiDrawArraysIndirect(self, mode:int, indirect:int, drawcount:int, stride:int) -> None: ... + def glMultiTexCoord1d(self, target:int, s:float) -> None: ... + def glMultiTexCoord1dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1f(self, target:int, s:float) -> None: ... + def glMultiTexCoord1fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1i(self, target:int, s:int) -> None: ... + def glMultiTexCoord1iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1s(self, target:int, s:int) -> None: ... + def glMultiTexCoord1sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2d(self, target:int, s:float, t:float) -> None: ... + def glMultiTexCoord2dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2f(self, target:int, s:float, t:float) -> None: ... + def glMultiTexCoord2fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2i(self, target:int, s:int, t:int) -> None: ... + def glMultiTexCoord2iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2s(self, target:int, s:int, t:int) -> None: ... + def glMultiTexCoord2sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3d(self, target:int, s:float, t:float, r:float) -> None: ... + def glMultiTexCoord3dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3f(self, target:int, s:float, t:float, r:float) -> None: ... + def glMultiTexCoord3fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3i(self, target:int, s:int, t:int, r:int) -> None: ... + def glMultiTexCoord3iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3s(self, target:int, s:int, t:int, r:int) -> None: ... + def glMultiTexCoord3sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4d(self, target:int, s:float, t:float, r:float, q:float) -> None: ... + def glMultiTexCoord4dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4f(self, target:int, s:float, t:float, r:float, q:float) -> None: ... + def glMultiTexCoord4fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4i(self, target:int, s:int, t:int, r:int, q:int) -> None: ... + def glMultiTexCoord4iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4s(self, target:int, s:int, t:int, r:int, q:int) -> None: ... + def glMultiTexCoord4sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoordP1ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP1uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP2ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP2uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP3ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP3uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP4ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP4uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glNewList(self, list:int, mode:int) -> None: ... + def glNormal3b(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3bv(self, v:bytes) -> None: ... + def glNormal3d(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3dv(self, v:typing.Sequence) -> None: ... + def glNormal3f(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3fv(self, v:typing.Sequence) -> None: ... + def glNormal3i(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3iv(self, v:typing.Sequence) -> None: ... + def glNormal3s(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3sv(self, v:typing.Sequence) -> None: ... + def glNormalP3ui(self, type:int, coords:int) -> None: ... + def glNormalP3uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glNormalPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glOrtho(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glPassThrough(self, token:float) -> None: ... + def glPatchParameterfv(self, pname:int, values:typing.Sequence) -> None: ... + def glPatchParameteri(self, pname:int, value:int) -> None: ... + def glPauseTransformFeedback(self) -> None: ... + def glPixelMapfv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapuiv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapusv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelStoref(self, pname:int, param:float) -> None: ... + def glPixelStorei(self, pname:int, param:int) -> None: ... + def glPixelTransferf(self, pname:int, param:float) -> None: ... + def glPixelTransferi(self, pname:int, param:int) -> None: ... + def glPixelZoom(self, xfactor:float, yfactor:float) -> None: ... + def glPointParameterf(self, pname:int, param:float) -> None: ... + def glPointParameterfv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointParameteri(self, pname:int, param:int) -> None: ... + def glPointParameteriv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointSize(self, size:float) -> None: ... + def glPolygonMode(self, face:int, mode:int) -> None: ... + def glPolygonOffset(self, factor:float, units:float) -> None: ... + def glPopAttrib(self) -> None: ... + def glPopClientAttrib(self) -> None: ... + def glPopMatrix(self) -> None: ... + def glPopName(self) -> None: ... + def glPrimitiveRestartIndex(self, index:int) -> None: ... + def glPrioritizeTextures(self, n:int, textures:typing.Sequence, priorities:typing.Sequence) -> None: ... + def glProgramBinary(self, program:int, binaryFormat:int, binary:int, length:int) -> None: ... + def glProgramParameteri(self, program:int, pname:int, value:int) -> None: ... + def glProgramUniform1d(self, program:int, location:int, v0:float) -> None: ... + def glProgramUniform1dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1f(self, program:int, location:int, v0:float) -> None: ... + def glProgramUniform1fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1i(self, program:int, location:int, v0:int) -> None: ... + def glProgramUniform1iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1ui(self, program:int, location:int, v0:int) -> None: ... + def glProgramUniform1uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2d(self, program:int, location:int, v0:float, v1:float) -> None: ... + def glProgramUniform2dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2f(self, program:int, location:int, v0:float, v1:float) -> None: ... + def glProgramUniform2fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2i(self, program:int, location:int, v0:int, v1:int) -> None: ... + def glProgramUniform2iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2ui(self, program:int, location:int, v0:int, v1:int) -> None: ... + def glProgramUniform2uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3d(self, program:int, location:int, v0:float, v1:float, v2:float) -> None: ... + def glProgramUniform3dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3f(self, program:int, location:int, v0:float, v1:float, v2:float) -> None: ... + def glProgramUniform3fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3i(self, program:int, location:int, v0:int, v1:int, v2:int) -> None: ... + def glProgramUniform3iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3ui(self, program:int, location:int, v0:int, v1:int, v2:int) -> None: ... + def glProgramUniform3uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4d(self, program:int, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glProgramUniform4dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4f(self, program:int, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glProgramUniform4fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4i(self, program:int, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glProgramUniform4iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4ui(self, program:int, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glProgramUniform4uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x3dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x4dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x2dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x4dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x2dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x3dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProvokingVertex(self, mode:int) -> None: ... + def glPushAttrib(self, mask:int) -> None: ... + def glPushClientAttrib(self, mask:int) -> None: ... + def glPushMatrix(self) -> None: ... + def glPushName(self, name:int) -> None: ... + def glQueryCounter(self, id:int, target:int) -> None: ... + def glRasterPos2d(self, x:float, y:float) -> None: ... + def glRasterPos2dv(self, v:typing.Sequence) -> None: ... + def glRasterPos2f(self, x:float, y:float) -> None: ... + def glRasterPos2fv(self, v:typing.Sequence) -> None: ... + def glRasterPos2i(self, x:int, y:int) -> None: ... + def glRasterPos2iv(self, v:typing.Sequence) -> None: ... + def glRasterPos2s(self, x:int, y:int) -> None: ... + def glRasterPos2sv(self, v:typing.Sequence) -> None: ... + def glRasterPos3d(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3dv(self, v:typing.Sequence) -> None: ... + def glRasterPos3f(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3fv(self, v:typing.Sequence) -> None: ... + def glRasterPos3i(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3iv(self, v:typing.Sequence) -> None: ... + def glRasterPos3s(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3sv(self, v:typing.Sequence) -> None: ... + def glRasterPos4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4dv(self, v:typing.Sequence) -> None: ... + def glRasterPos4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4fv(self, v:typing.Sequence) -> None: ... + def glRasterPos4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4iv(self, v:typing.Sequence) -> None: ... + def glRasterPos4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4sv(self, v:typing.Sequence) -> None: ... + def glReadBuffer(self, mode:int) -> None: ... + def glRectd(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectdv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRectf(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectfv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRecti(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectiv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRects(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectsv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glReleaseShaderCompiler(self) -> None: ... + def glRenderMode(self, mode:int) -> int: ... + def glRenderbufferStorage(self, target:int, internalformat:int, width:int, height:int) -> None: ... + def glRenderbufferStorageMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int) -> None: ... + def glResetHistogram(self, target:int) -> None: ... + def glResetMinmax(self, target:int) -> None: ... + def glResumeTransformFeedback(self) -> None: ... + def glRotated(self, angle:float, x:float, y:float, z:float) -> None: ... + def glRotatef(self, angle:float, x:float, y:float, z:float) -> None: ... + def glSampleCoverage(self, value:float, invert:int) -> None: ... + def glSampleMaski(self, index:int, mask:int) -> None: ... + def glSamplerParameterIiv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameterIuiv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameterf(self, sampler:int, pname:int, param:float) -> None: ... + def glSamplerParameterfv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameteri(self, sampler:int, pname:int, param:int) -> None: ... + def glSamplerParameteriv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glScaled(self, x:float, y:float, z:float) -> None: ... + def glScalef(self, x:float, y:float, z:float) -> None: ... + def glScissor(self, x:int, y:int, width:int, height:int) -> None: ... + def glScissorArrayv(self, first:int, count:int, v:typing.Sequence) -> None: ... + def glScissorIndexed(self, index:int, left:int, bottom:int, width:int, height:int) -> None: ... + def glScissorIndexedv(self, index:int, v:typing.Sequence) -> None: ... + def glSecondaryColor3b(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3bv(self, v:bytes) -> None: ... + def glSecondaryColor3d(self, red:float, green:float, blue:float) -> None: ... + def glSecondaryColor3dv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3f(self, red:float, green:float, blue:float) -> None: ... + def glSecondaryColor3fv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3i(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3iv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3s(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3sv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3ub(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3ubv(self, v:bytes) -> None: ... + def glSecondaryColor3ui(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3uiv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3us(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3usv(self, v:typing.Sequence) -> None: ... + def glSecondaryColorP3ui(self, type:int, color:int) -> None: ... + def glSecondaryColorP3uiv(self, type:int, color:typing.Sequence) -> None: ... + def glSecondaryColorPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glSeparableFilter2D(self, target:int, internalformat:int, width:int, height:int, format:int, type:int, row:int, column:int) -> None: ... + def glShadeModel(self, mode:int) -> None: ... + def glShaderBinary(self, count:int, shaders:typing.Sequence, binaryformat:int, binary:int, length:int) -> None: ... + def glShaderStorageBlockBinding(self, program:int, storageBlockIndex:int, storageBlockBinding:int) -> None: ... + def glStencilFunc(self, func:int, ref:int, mask:int) -> None: ... + def glStencilFuncSeparate(self, face:int, func:int, ref:int, mask:int) -> None: ... + def glStencilMask(self, mask:int) -> None: ... + def glStencilMaskSeparate(self, face:int, mask:int) -> None: ... + def glStencilOp(self, fail:int, zfail:int, zpass:int) -> None: ... + def glStencilOpSeparate(self, face:int, sfail:int, dpfail:int, dppass:int) -> None: ... + def glTexBuffer(self, target:int, internalformat:int, buffer:int) -> None: ... + def glTexCoord1d(self, s:float) -> None: ... + def glTexCoord1dv(self, v:typing.Sequence) -> None: ... + def glTexCoord1f(self, s:float) -> None: ... + def glTexCoord1fv(self, v:typing.Sequence) -> None: ... + def glTexCoord1i(self, s:int) -> None: ... + def glTexCoord1iv(self, v:typing.Sequence) -> None: ... + def glTexCoord1s(self, s:int) -> None: ... + def glTexCoord1sv(self, v:typing.Sequence) -> None: ... + def glTexCoord2d(self, s:float, t:float) -> None: ... + def glTexCoord2dv(self, v:typing.Sequence) -> None: ... + def glTexCoord2f(self, s:float, t:float) -> None: ... + def glTexCoord2fv(self, v:typing.Sequence) -> None: ... + def glTexCoord2i(self, s:int, t:int) -> None: ... + def glTexCoord2iv(self, v:typing.Sequence) -> None: ... + def glTexCoord2s(self, s:int, t:int) -> None: ... + def glTexCoord2sv(self, v:typing.Sequence) -> None: ... + def glTexCoord3d(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3dv(self, v:typing.Sequence) -> None: ... + def glTexCoord3f(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3fv(self, v:typing.Sequence) -> None: ... + def glTexCoord3i(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3iv(self, v:typing.Sequence) -> None: ... + def glTexCoord3s(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3sv(self, v:typing.Sequence) -> None: ... + def glTexCoord4d(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4dv(self, v:typing.Sequence) -> None: ... + def glTexCoord4f(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4fv(self, v:typing.Sequence) -> None: ... + def glTexCoord4i(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4iv(self, v:typing.Sequence) -> None: ... + def glTexCoord4s(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4sv(self, v:typing.Sequence) -> None: ... + def glTexCoordP1ui(self, type:int, coords:int) -> None: ... + def glTexCoordP1uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP2ui(self, type:int, coords:int) -> None: ... + def glTexCoordP2uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP3ui(self, type:int, coords:int) -> None: ... + def glTexCoordP3uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP4ui(self, type:int, coords:int) -> None: ... + def glTexCoordP4uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glTexEnvf(self, target:int, pname:int, param:float) -> None: ... + def glTexEnvfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexEnvi(self, target:int, pname:int, param:int) -> None: ... + def glTexEnviv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGend(self, coord:int, pname:int, param:float) -> None: ... + def glTexGendv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGenf(self, coord:int, pname:int, param:float) -> None: ... + def glTexGenfv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGeni(self, coord:int, pname:int, param:int) -> None: ... + def glTexGeniv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, fixedsamplelocations:int) -> None: ... + def glTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage3DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, depth:int, fixedsamplelocations:int) -> None: ... + def glTexParameterIiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterIuiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterf(self, target:int, pname:int, param:float) -> None: ... + def glTexParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameteri(self, target:int, pname:int, param:int) -> None: ... + def glTexParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexStorage1D(self, target:int, levels:int, internalformat:int, width:int) -> None: ... + def glTexStorage2D(self, target:int, levels:int, internalformat:int, width:int, height:int) -> None: ... + def glTexStorage2DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, fixedsamplelocations:int) -> None: ... + def glTexStorage3D(self, target:int, levels:int, internalformat:int, width:int, height:int, depth:int) -> None: ... + def glTexStorage3DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, depth:int, fixedsamplelocations:int) -> None: ... + def glTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, pixels:int) -> None: ... + def glTextureView(self, texture:int, target:int, origtexture:int, internalformat:int, minlevel:int, numlevels:int, minlayer:int, numlayers:int) -> None: ... + def glTranslated(self, x:float, y:float, z:float) -> None: ... + def glTranslatef(self, x:float, y:float, z:float) -> None: ... + def glUniform1d(self, location:int, x:float) -> None: ... + def glUniform1dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1f(self, location:int, v0:float) -> None: ... + def glUniform1fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1i(self, location:int, v0:int) -> None: ... + def glUniform1iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1ui(self, location:int, v0:int) -> None: ... + def glUniform1uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2d(self, location:int, x:float, y:float) -> None: ... + def glUniform2dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2f(self, location:int, v0:float, v1:float) -> None: ... + def glUniform2fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2i(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2ui(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3d(self, location:int, x:float, y:float, z:float) -> None: ... + def glUniform3dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3f(self, location:int, v0:float, v1:float, v2:float) -> None: ... + def glUniform3fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3i(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3ui(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4d(self, location:int, x:float, y:float, z:float, w:float) -> None: ... + def glUniform4dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4f(self, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glUniform4fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4i(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4ui(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniformBlockBinding(self, program:int, uniformBlockIndex:int, uniformBlockBinding:int) -> None: ... + def glUniformMatrix2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformSubroutinesuiv(self, shadertype:int, count:int, indices:typing.Sequence) -> None: ... + def glUnmapBuffer(self, target:int) -> int: ... + def glUseProgram(self, program:int) -> None: ... + def glUseProgramStages(self, pipeline:int, stages:int, program:int) -> None: ... + def glValidateProgram(self, program:int) -> None: ... + def glValidateProgramPipeline(self, pipeline:int) -> None: ... + def glVertex2d(self, x:float, y:float) -> None: ... + def glVertex2dv(self, v:typing.Sequence) -> None: ... + def glVertex2f(self, x:float, y:float) -> None: ... + def glVertex2fv(self, v:typing.Sequence) -> None: ... + def glVertex2i(self, x:int, y:int) -> None: ... + def glVertex2iv(self, v:typing.Sequence) -> None: ... + def glVertex2s(self, x:int, y:int) -> None: ... + def glVertex2sv(self, v:typing.Sequence) -> None: ... + def glVertex3d(self, x:float, y:float, z:float) -> None: ... + def glVertex3dv(self, v:typing.Sequence) -> None: ... + def glVertex3f(self, x:float, y:float, z:float) -> None: ... + def glVertex3fv(self, v:typing.Sequence) -> None: ... + def glVertex3i(self, x:int, y:int, z:int) -> None: ... + def glVertex3iv(self, v:typing.Sequence) -> None: ... + def glVertex3s(self, x:int, y:int, z:int) -> None: ... + def glVertex3sv(self, v:typing.Sequence) -> None: ... + def glVertex4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4dv(self, v:typing.Sequence) -> None: ... + def glVertex4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4fv(self, v:typing.Sequence) -> None: ... + def glVertex4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4iv(self, v:typing.Sequence) -> None: ... + def glVertex4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4sv(self, v:typing.Sequence) -> None: ... + def glVertexAttrib1d(self, index:int, x:float) -> None: ... + def glVertexAttrib1dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib1f(self, index:int, x:float) -> None: ... + def glVertexAttrib1fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib1s(self, index:int, x:int) -> None: ... + def glVertexAttrib1sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2d(self, index:int, x:float, y:float) -> None: ... + def glVertexAttrib2dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2f(self, index:int, x:float, y:float) -> None: ... + def glVertexAttrib2fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2s(self, index:int, x:int, y:int) -> None: ... + def glVertexAttrib2sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3d(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttrib3dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3f(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttrib3fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3s(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttrib3sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nbv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4Niv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nsv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nub(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttrib4Nubv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4Nuiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nusv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4bv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4d(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttrib4dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4f(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttrib4fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4s(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttrib4sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4ubv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4usv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribBinding(self, attribindex:int, bindingindex:int) -> None: ... + def glVertexAttribDivisor(self, index:int, divisor:int) -> None: ... + def glVertexAttribFormat(self, attribindex:int, size:int, type:int, normalized:int, relativeoffset:int) -> None: ... + def glVertexAttribI1i(self, index:int, x:int) -> None: ... + def glVertexAttribI1iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI1ui(self, index:int, x:int) -> None: ... + def glVertexAttribI1uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI2i(self, index:int, x:int, y:int) -> None: ... + def glVertexAttribI2iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI2ui(self, index:int, x:int, y:int) -> None: ... + def glVertexAttribI2uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI3i(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttribI3iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI3ui(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttribI3uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4bv(self, index:int, v:bytes) -> None: ... + def glVertexAttribI4i(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttribI4iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4ubv(self, index:int, v:bytes) -> None: ... + def glVertexAttribI4ui(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttribI4uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4usv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribIFormat(self, attribindex:int, size:int, type:int, relativeoffset:int) -> None: ... + def glVertexAttribIPointer(self, index:int, size:int, type:int, stride:int, pointer:int) -> None: ... + def glVertexAttribL1d(self, index:int, x:float) -> None: ... + def glVertexAttribL1dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribL2d(self, index:int, x:float, y:float) -> None: ... + def glVertexAttribL2dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribL3d(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttribL3dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribL4d(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttribL4dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribLFormat(self, attribindex:int, size:int, type:int, relativeoffset:int) -> None: ... + def glVertexAttribLPointer(self, index:int, size:int, type:int, stride:int, pointer:int) -> None: ... + def glVertexAttribP1ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP1uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP2ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP2uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP3ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP3uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP4ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP4uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribPointer(self, index:int, size:int, type:int, normalized:int, stride:int, pointer:int) -> None: ... + def glVertexBindingDivisor(self, bindingindex:int, divisor:int) -> None: ... + def glVertexP2ui(self, type:int, value:int) -> None: ... + def glVertexP2uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexP3ui(self, type:int, value:int) -> None: ... + def glVertexP3uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexP4ui(self, type:int, value:int) -> None: ... + def glVertexP4uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glViewport(self, x:int, y:int, width:int, height:int) -> None: ... + def glViewportArrayv(self, first:int, count:int, v:typing.Sequence) -> None: ... + def glViewportIndexedf(self, index:int, x:float, y:float, w:float, h:float) -> None: ... + def glViewportIndexedfv(self, index:int, v:typing.Sequence) -> None: ... + def glWindowPos2d(self, x:float, y:float) -> None: ... + def glWindowPos2dv(self, v:typing.Sequence) -> None: ... + def glWindowPos2f(self, x:float, y:float) -> None: ... + def glWindowPos2fv(self, v:typing.Sequence) -> None: ... + def glWindowPos2i(self, x:int, y:int) -> None: ... + def glWindowPos2iv(self, v:typing.Sequence) -> None: ... + def glWindowPos2s(self, x:int, y:int) -> None: ... + def glWindowPos2sv(self, v:typing.Sequence) -> None: ... + def glWindowPos3d(self, x:float, y:float, z:float) -> None: ... + def glWindowPos3dv(self, v:typing.Sequence) -> None: ... + def glWindowPos3f(self, x:float, y:float, z:float) -> None: ... + def glWindowPos3fv(self, v:typing.Sequence) -> None: ... + def glWindowPos3i(self, x:int, y:int, z:int) -> None: ... + def glWindowPos3iv(self, v:typing.Sequence) -> None: ... + def glWindowPos3s(self, x:int, y:int, z:int) -> None: ... + def glWindowPos3sv(self, v:typing.Sequence) -> None: ... + def initializeOpenGLFunctions(self) -> bool: ... + + +class QOpenGLFunctions_4_3_Core(PySide2.QtGui.QAbstractOpenGLFunctions): + + def __init__(self) -> None: ... + + def glActiveShaderProgram(self, pipeline:int, program:int) -> None: ... + def glActiveTexture(self, texture:int) -> None: ... + def glAttachShader(self, program:int, shader:int) -> None: ... + def glBeginConditionalRender(self, id:int, mode:int) -> None: ... + def glBeginQuery(self, target:int, id:int) -> None: ... + def glBeginQueryIndexed(self, target:int, index:int, id:int) -> None: ... + def glBeginTransformFeedback(self, primitiveMode:int) -> None: ... + def glBindAttribLocation(self, program:int, index:int, name:bytes) -> None: ... + def glBindBuffer(self, target:int, buffer:int) -> None: ... + def glBindBufferBase(self, target:int, index:int, buffer:int) -> None: ... + def glBindFragDataLocation(self, program:int, color:int, name:bytes) -> None: ... + def glBindFragDataLocationIndexed(self, program:int, colorNumber:int, index:int, name:bytes) -> None: ... + def glBindFramebuffer(self, target:int, framebuffer:int) -> None: ... + def glBindImageTexture(self, unit:int, texture:int, level:int, layered:int, layer:int, access:int, format:int) -> None: ... + def glBindProgramPipeline(self, pipeline:int) -> None: ... + def glBindRenderbuffer(self, target:int, renderbuffer:int) -> None: ... + def glBindSampler(self, unit:int, sampler:int) -> None: ... + def glBindTexture(self, target:int, texture:int) -> None: ... + def glBindTransformFeedback(self, target:int, id:int) -> None: ... + def glBindVertexArray(self, array:int) -> None: ... + def glBlendColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glBlendEquation(self, mode:int) -> None: ... + def glBlendEquationSeparate(self, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendEquationSeparatei(self, buf:int, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendEquationi(self, buf:int, mode:int) -> None: ... + def glBlendFunc(self, sfactor:int, dfactor:int) -> None: ... + def glBlendFuncSeparate(self, sfactorRGB:int, dfactorRGB:int, sfactorAlpha:int, dfactorAlpha:int) -> None: ... + def glBlendFuncSeparatei(self, buf:int, srcRGB:int, dstRGB:int, srcAlpha:int, dstAlpha:int) -> None: ... + def glBlendFunci(self, buf:int, src:int, dst:int) -> None: ... + def glBlitFramebuffer(self, srcX0:int, srcY0:int, srcX1:int, srcY1:int, dstX0:int, dstY0:int, dstX1:int, dstY1:int, mask:int, filter:int) -> None: ... + def glCheckFramebufferStatus(self, target:int) -> int: ... + def glClampColor(self, target:int, clamp:int) -> None: ... + def glClear(self, mask:int) -> None: ... + def glClearBufferData(self, target:int, internalformat:int, format:int, type:int, data:int) -> None: ... + def glClearBufferfi(self, buffer:int, drawbuffer:int, depth:float, stencil:int) -> None: ... + def glClearBufferfv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferuiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearDepth(self, depth:float) -> None: ... + def glClearDepthf(self, dd:float) -> None: ... + def glClearStencil(self, s:int) -> None: ... + def glColorMask(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColorMaski(self, index:int, r:int, g:int, b:int, a:int) -> None: ... + def glColorP3ui(self, type:int, color:int) -> None: ... + def glColorP3uiv(self, type:int, color:typing.Sequence) -> None: ... + def glColorP4ui(self, type:int, color:int) -> None: ... + def glColorP4uiv(self, type:int, color:typing.Sequence) -> None: ... + def glCompileShader(self, shader:int) -> None: ... + def glCompressedTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, imageSize:int, data:int) -> None: ... + def glCopyImageSubData(self, srcName:int, srcTarget:int, srcLevel:int, srcX:int, srcY:int, srcZ:int, dstName:int, dstTarget:int, dstLevel:int, dstX:int, dstY:int, dstZ:int, srcWidth:int, srcHeight:int, srcDepth:int) -> None: ... + def glCopyTexImage1D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, border:int) -> None: ... + def glCopyTexImage2D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, height:int, border:int) -> None: ... + def glCopyTexSubImage1D(self, target:int, level:int, xoffset:int, x:int, y:int, width:int) -> None: ... + def glCopyTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCreateProgram(self) -> int: ... + def glCreateShader(self, type:int) -> int: ... + def glCullFace(self, mode:int) -> None: ... + def glDeleteBuffers(self, n:int, buffers:typing.Sequence) -> None: ... + def glDeleteFramebuffers(self, n:int, framebuffers:typing.Sequence) -> None: ... + def glDeleteProgram(self, program:int) -> None: ... + def glDeleteProgramPipelines(self, n:int, pipelines:typing.Sequence) -> None: ... + def glDeleteQueries(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteRenderbuffers(self, n:int, renderbuffers:typing.Sequence) -> None: ... + def glDeleteSamplers(self, count:int, samplers:typing.Sequence) -> None: ... + def glDeleteShader(self, shader:int) -> None: ... + def glDeleteTextures(self, n:int, textures:typing.Sequence) -> None: ... + def glDeleteTransformFeedbacks(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteVertexArrays(self, n:int, arrays:typing.Sequence) -> None: ... + def glDepthFunc(self, func:int) -> None: ... + def glDepthMask(self, flag:int) -> None: ... + def glDepthRange(self, nearVal:float, farVal:float) -> None: ... + def glDepthRangeArrayv(self, first:int, count:int, v:typing.Sequence) -> None: ... + def glDepthRangeIndexed(self, index:int, n:float, f:float) -> None: ... + def glDepthRangef(self, n:float, f:float) -> None: ... + def glDetachShader(self, program:int, shader:int) -> None: ... + def glDisable(self, cap:int) -> None: ... + def glDisableVertexAttribArray(self, index:int) -> None: ... + def glDisablei(self, target:int, index:int) -> None: ... + def glDispatchCompute(self, num_groups_x:int, num_groups_y:int, num_groups_z:int) -> None: ... + def glDrawArrays(self, mode:int, first:int, count:int) -> None: ... + def glDrawArraysIndirect(self, mode:int, indirect:int) -> None: ... + def glDrawArraysInstanced(self, mode:int, first:int, count:int, instancecount:int) -> None: ... + def glDrawArraysInstancedBaseInstance(self, mode:int, first:int, count:int, instancecount:int, baseinstance:int) -> None: ... + def glDrawBuffer(self, mode:int) -> None: ... + def glDrawBuffers(self, n:int, bufs:typing.Sequence) -> None: ... + def glDrawElements(self, mode:int, count:int, type:int, indices:int) -> None: ... + def glDrawElementsBaseVertex(self, mode:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glDrawElementsIndirect(self, mode:int, type:int, indirect:int) -> None: ... + def glDrawElementsInstanced(self, mode:int, count:int, type:int, indices:int, instancecount:int) -> None: ... + def glDrawElementsInstancedBaseInstance(self, mode:int, count:int, type:int, indices:int, instancecount:int, baseinstance:int) -> None: ... + def glDrawElementsInstancedBaseVertex(self, mode:int, count:int, type:int, indices:int, instancecount:int, basevertex:int) -> None: ... + def glDrawElementsInstancedBaseVertexBaseInstance(self, mode:int, count:int, type:int, indices:int, instancecount:int, basevertex:int, baseinstance:int) -> None: ... + def glDrawRangeElements(self, mode:int, start:int, end:int, count:int, type:int, indices:int) -> None: ... + def glDrawRangeElementsBaseVertex(self, mode:int, start:int, end:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glDrawTransformFeedback(self, mode:int, id:int) -> None: ... + def glDrawTransformFeedbackInstanced(self, mode:int, id:int, instancecount:int) -> None: ... + def glDrawTransformFeedbackStream(self, mode:int, id:int, stream:int) -> None: ... + def glDrawTransformFeedbackStreamInstanced(self, mode:int, id:int, stream:int, instancecount:int) -> None: ... + def glEnable(self, cap:int) -> None: ... + def glEnableVertexAttribArray(self, index:int) -> None: ... + def glEnablei(self, target:int, index:int) -> None: ... + def glEndConditionalRender(self) -> None: ... + def glEndQuery(self, target:int) -> None: ... + def glEndQueryIndexed(self, target:int, index:int) -> None: ... + def glEndTransformFeedback(self) -> None: ... + def glFinish(self) -> None: ... + def glFlush(self) -> None: ... + def glFramebufferParameteri(self, target:int, pname:int, param:int) -> None: ... + def glFramebufferRenderbuffer(self, target:int, attachment:int, renderbuffertarget:int, renderbuffer:int) -> None: ... + def glFramebufferTexture(self, target:int, attachment:int, texture:int, level:int) -> None: ... + def glFramebufferTexture1D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture2D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture3D(self, target:int, attachment:int, textarget:int, texture:int, level:int, zoffset:int) -> None: ... + def glFramebufferTextureLayer(self, target:int, attachment:int, texture:int, level:int, layer:int) -> None: ... + def glFrontFace(self, mode:int) -> None: ... + def glGenerateMipmap(self, target:int) -> None: ... + def glGetAttribLocation(self, program:int, name:bytes) -> int: ... + def glGetError(self) -> int: ... + def glGetFragDataIndex(self, program:int, name:bytes) -> int: ... + def glGetFragDataLocation(self, program:int, name:bytes) -> int: ... + def glGetProgramResourceIndex(self, program:int, programInterface:int, name:bytes) -> int: ... + def glGetProgramResourceLocation(self, program:int, programInterface:int, name:bytes) -> int: ... + def glGetProgramResourceLocationIndex(self, program:int, programInterface:int, name:bytes) -> int: ... + def glGetString(self, name:int) -> bytes: ... + def glGetStringi(self, name:int, index:int) -> bytes: ... + def glGetSubroutineIndex(self, program:int, shadertype:int, name:bytes) -> int: ... + def glGetSubroutineUniformLocation(self, program:int, shadertype:int, name:bytes) -> int: ... + def glGetUniformBlockIndex(self, program:int, uniformBlockName:bytes) -> int: ... + def glGetUniformLocation(self, program:int, name:bytes) -> int: ... + def glHint(self, target:int, mode:int) -> None: ... + def glIndexub(self, c:int) -> None: ... + def glIndexubv(self, c:bytes) -> None: ... + def glInvalidateBufferData(self, buffer:int) -> None: ... + def glInvalidateFramebuffer(self, target:int, numAttachments:int, attachments:typing.Sequence) -> None: ... + def glInvalidateSubFramebuffer(self, target:int, numAttachments:int, attachments:typing.Sequence, x:int, y:int, width:int, height:int) -> None: ... + def glInvalidateTexImage(self, texture:int, level:int) -> None: ... + def glInvalidateTexSubImage(self, texture:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int) -> None: ... + def glIsBuffer(self, buffer:int) -> int: ... + def glIsEnabled(self, cap:int) -> int: ... + def glIsEnabledi(self, target:int, index:int) -> int: ... + def glIsFramebuffer(self, framebuffer:int) -> int: ... + def glIsProgram(self, program:int) -> int: ... + def glIsProgramPipeline(self, pipeline:int) -> int: ... + def glIsQuery(self, id:int) -> int: ... + def glIsRenderbuffer(self, renderbuffer:int) -> int: ... + def glIsSampler(self, sampler:int) -> int: ... + def glIsShader(self, shader:int) -> int: ... + def glIsTexture(self, texture:int) -> int: ... + def glIsTransformFeedback(self, id:int) -> int: ... + def glIsVertexArray(self, array:int) -> int: ... + def glLineWidth(self, width:float) -> None: ... + def glLinkProgram(self, program:int) -> None: ... + def glLogicOp(self, opcode:int) -> None: ... + def glMapBuffer(self, target:int, access:int) -> int: ... + def glMemoryBarrier(self, barriers:int) -> None: ... + def glMinSampleShading(self, value:float) -> None: ... + def glMultiDrawArrays(self, mode:int, first:typing.Sequence, count:typing.Sequence, drawcount:int) -> None: ... + def glMultiDrawArraysIndirect(self, mode:int, indirect:int, drawcount:int, stride:int) -> None: ... + def glMultiTexCoordP1ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP1uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP2ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP2uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP3ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP3uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP4ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP4uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glNormalP3ui(self, type:int, coords:int) -> None: ... + def glNormalP3uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glPatchParameterfv(self, pname:int, values:typing.Sequence) -> None: ... + def glPatchParameteri(self, pname:int, value:int) -> None: ... + def glPauseTransformFeedback(self) -> None: ... + def glPixelStoref(self, pname:int, param:float) -> None: ... + def glPixelStorei(self, pname:int, param:int) -> None: ... + def glPointParameterf(self, pname:int, param:float) -> None: ... + def glPointParameterfv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointParameteri(self, pname:int, param:int) -> None: ... + def glPointParameteriv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointSize(self, size:float) -> None: ... + def glPolygonMode(self, face:int, mode:int) -> None: ... + def glPolygonOffset(self, factor:float, units:float) -> None: ... + def glPrimitiveRestartIndex(self, index:int) -> None: ... + def glProgramBinary(self, program:int, binaryFormat:int, binary:int, length:int) -> None: ... + def glProgramParameteri(self, program:int, pname:int, value:int) -> None: ... + def glProgramUniform1d(self, program:int, location:int, v0:float) -> None: ... + def glProgramUniform1dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1f(self, program:int, location:int, v0:float) -> None: ... + def glProgramUniform1fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1i(self, program:int, location:int, v0:int) -> None: ... + def glProgramUniform1iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1ui(self, program:int, location:int, v0:int) -> None: ... + def glProgramUniform1uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2d(self, program:int, location:int, v0:float, v1:float) -> None: ... + def glProgramUniform2dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2f(self, program:int, location:int, v0:float, v1:float) -> None: ... + def glProgramUniform2fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2i(self, program:int, location:int, v0:int, v1:int) -> None: ... + def glProgramUniform2iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2ui(self, program:int, location:int, v0:int, v1:int) -> None: ... + def glProgramUniform2uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3d(self, program:int, location:int, v0:float, v1:float, v2:float) -> None: ... + def glProgramUniform3dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3f(self, program:int, location:int, v0:float, v1:float, v2:float) -> None: ... + def glProgramUniform3fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3i(self, program:int, location:int, v0:int, v1:int, v2:int) -> None: ... + def glProgramUniform3iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3ui(self, program:int, location:int, v0:int, v1:int, v2:int) -> None: ... + def glProgramUniform3uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4d(self, program:int, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glProgramUniform4dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4f(self, program:int, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glProgramUniform4fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4i(self, program:int, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glProgramUniform4iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4ui(self, program:int, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glProgramUniform4uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x3dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x4dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x2dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x4dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x2dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x3dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProvokingVertex(self, mode:int) -> None: ... + def glQueryCounter(self, id:int, target:int) -> None: ... + def glReadBuffer(self, mode:int) -> None: ... + def glReleaseShaderCompiler(self) -> None: ... + def glRenderbufferStorage(self, target:int, internalformat:int, width:int, height:int) -> None: ... + def glRenderbufferStorageMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int) -> None: ... + def glResumeTransformFeedback(self) -> None: ... + def glSampleCoverage(self, value:float, invert:int) -> None: ... + def glSampleMaski(self, index:int, mask:int) -> None: ... + def glSamplerParameterIiv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameterIuiv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameterf(self, sampler:int, pname:int, param:float) -> None: ... + def glSamplerParameterfv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameteri(self, sampler:int, pname:int, param:int) -> None: ... + def glSamplerParameteriv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glScissor(self, x:int, y:int, width:int, height:int) -> None: ... + def glScissorArrayv(self, first:int, count:int, v:typing.Sequence) -> None: ... + def glScissorIndexed(self, index:int, left:int, bottom:int, width:int, height:int) -> None: ... + def glScissorIndexedv(self, index:int, v:typing.Sequence) -> None: ... + def glSecondaryColorP3ui(self, type:int, color:int) -> None: ... + def glSecondaryColorP3uiv(self, type:int, color:typing.Sequence) -> None: ... + def glShaderBinary(self, count:int, shaders:typing.Sequence, binaryformat:int, binary:int, length:int) -> None: ... + def glShaderStorageBlockBinding(self, program:int, storageBlockIndex:int, storageBlockBinding:int) -> None: ... + def glStencilFunc(self, func:int, ref:int, mask:int) -> None: ... + def glStencilFuncSeparate(self, face:int, func:int, ref:int, mask:int) -> None: ... + def glStencilMask(self, mask:int) -> None: ... + def glStencilMaskSeparate(self, face:int, mask:int) -> None: ... + def glStencilOp(self, fail:int, zfail:int, zpass:int) -> None: ... + def glStencilOpSeparate(self, face:int, sfail:int, dpfail:int, dppass:int) -> None: ... + def glTexBuffer(self, target:int, internalformat:int, buffer:int) -> None: ... + def glTexCoordP1ui(self, type:int, coords:int) -> None: ... + def glTexCoordP1uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP2ui(self, type:int, coords:int) -> None: ... + def glTexCoordP2uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP3ui(self, type:int, coords:int) -> None: ... + def glTexCoordP3uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP4ui(self, type:int, coords:int) -> None: ... + def glTexCoordP4uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, fixedsamplelocations:int) -> None: ... + def glTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage3DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, depth:int, fixedsamplelocations:int) -> None: ... + def glTexParameterIiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterIuiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterf(self, target:int, pname:int, param:float) -> None: ... + def glTexParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameteri(self, target:int, pname:int, param:int) -> None: ... + def glTexParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexStorage1D(self, target:int, levels:int, internalformat:int, width:int) -> None: ... + def glTexStorage2D(self, target:int, levels:int, internalformat:int, width:int, height:int) -> None: ... + def glTexStorage2DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, fixedsamplelocations:int) -> None: ... + def glTexStorage3D(self, target:int, levels:int, internalformat:int, width:int, height:int, depth:int) -> None: ... + def glTexStorage3DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, depth:int, fixedsamplelocations:int) -> None: ... + def glTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, pixels:int) -> None: ... + def glTextureView(self, texture:int, target:int, origtexture:int, internalformat:int, minlevel:int, numlevels:int, minlayer:int, numlayers:int) -> None: ... + def glUniform1d(self, location:int, x:float) -> None: ... + def glUniform1dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1f(self, location:int, v0:float) -> None: ... + def glUniform1fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1i(self, location:int, v0:int) -> None: ... + def glUniform1iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1ui(self, location:int, v0:int) -> None: ... + def glUniform1uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2d(self, location:int, x:float, y:float) -> None: ... + def glUniform2dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2f(self, location:int, v0:float, v1:float) -> None: ... + def glUniform2fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2i(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2ui(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3d(self, location:int, x:float, y:float, z:float) -> None: ... + def glUniform3dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3f(self, location:int, v0:float, v1:float, v2:float) -> None: ... + def glUniform3fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3i(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3ui(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4d(self, location:int, x:float, y:float, z:float, w:float) -> None: ... + def glUniform4dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4f(self, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glUniform4fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4i(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4ui(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniformBlockBinding(self, program:int, uniformBlockIndex:int, uniformBlockBinding:int) -> None: ... + def glUniformMatrix2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformSubroutinesuiv(self, shadertype:int, count:int, indices:typing.Sequence) -> None: ... + def glUnmapBuffer(self, target:int) -> int: ... + def glUseProgram(self, program:int) -> None: ... + def glUseProgramStages(self, pipeline:int, stages:int, program:int) -> None: ... + def glValidateProgram(self, program:int) -> None: ... + def glValidateProgramPipeline(self, pipeline:int) -> None: ... + def glVertexAttribBinding(self, attribindex:int, bindingindex:int) -> None: ... + def glVertexAttribDivisor(self, index:int, divisor:int) -> None: ... + def glVertexAttribFormat(self, attribindex:int, size:int, type:int, normalized:int, relativeoffset:int) -> None: ... + def glVertexAttribIFormat(self, attribindex:int, size:int, type:int, relativeoffset:int) -> None: ... + def glVertexAttribIPointer(self, index:int, size:int, type:int, stride:int, pointer:int) -> None: ... + def glVertexAttribL1d(self, index:int, x:float) -> None: ... + def glVertexAttribL1dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribL2d(self, index:int, x:float, y:float) -> None: ... + def glVertexAttribL2dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribL3d(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttribL3dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribL4d(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttribL4dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribLFormat(self, attribindex:int, size:int, type:int, relativeoffset:int) -> None: ... + def glVertexAttribLPointer(self, index:int, size:int, type:int, stride:int, pointer:int) -> None: ... + def glVertexAttribP1ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP1uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP2ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP2uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP3ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP3uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP4ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP4uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribPointer(self, index:int, size:int, type:int, normalized:int, stride:int, pointer:int) -> None: ... + def glVertexBindingDivisor(self, bindingindex:int, divisor:int) -> None: ... + def glVertexP2ui(self, type:int, value:int) -> None: ... + def glVertexP2uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexP3ui(self, type:int, value:int) -> None: ... + def glVertexP3uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexP4ui(self, type:int, value:int) -> None: ... + def glVertexP4uiv(self, type:int, value:typing.Sequence) -> None: ... + def glViewport(self, x:int, y:int, width:int, height:int) -> None: ... + def glViewportArrayv(self, first:int, count:int, v:typing.Sequence) -> None: ... + def glViewportIndexedf(self, index:int, x:float, y:float, w:float, h:float) -> None: ... + def glViewportIndexedfv(self, index:int, v:typing.Sequence) -> None: ... + def initializeOpenGLFunctions(self) -> bool: ... + + +class QOpenGLFunctions_4_4_Compatibility(PySide2.QtGui.QAbstractOpenGLFunctions): + + def __init__(self) -> None: ... + + def glAccum(self, op:int, value:float) -> None: ... + def glActiveShaderProgram(self, pipeline:int, program:int) -> None: ... + def glActiveTexture(self, texture:int) -> None: ... + def glAlphaFunc(self, func:int, ref:float) -> None: ... + def glArrayElement(self, i:int) -> None: ... + def glAttachShader(self, program:int, shader:int) -> None: ... + def glBegin(self, mode:int) -> None: ... + def glBeginConditionalRender(self, id:int, mode:int) -> None: ... + def glBeginQuery(self, target:int, id:int) -> None: ... + def glBeginQueryIndexed(self, target:int, index:int, id:int) -> None: ... + def glBeginTransformFeedback(self, primitiveMode:int) -> None: ... + def glBindAttribLocation(self, program:int, index:int, name:bytes) -> None: ... + def glBindBuffer(self, target:int, buffer:int) -> None: ... + def glBindBufferBase(self, target:int, index:int, buffer:int) -> None: ... + def glBindBuffersBase(self, target:int, first:int, count:int, buffers:typing.Sequence) -> None: ... + def glBindBuffersRange(self, target:int, first:int, count:int) -> typing.Tuple: ... + def glBindFragDataLocation(self, program:int, color:int, name:bytes) -> None: ... + def glBindFragDataLocationIndexed(self, program:int, colorNumber:int, index:int, name:bytes) -> None: ... + def glBindFramebuffer(self, target:int, framebuffer:int) -> None: ... + def glBindImageTexture(self, unit:int, texture:int, level:int, layered:int, layer:int, access:int, format:int) -> None: ... + def glBindImageTextures(self, first:int, count:int, textures:typing.Sequence) -> None: ... + def glBindProgramPipeline(self, pipeline:int) -> None: ... + def glBindRenderbuffer(self, target:int, renderbuffer:int) -> None: ... + def glBindSampler(self, unit:int, sampler:int) -> None: ... + def glBindSamplers(self, first:int, count:int, samplers:typing.Sequence) -> None: ... + def glBindTexture(self, target:int, texture:int) -> None: ... + def glBindTextures(self, first:int, count:int, textures:typing.Sequence) -> None: ... + def glBindTransformFeedback(self, target:int, id:int) -> None: ... + def glBindVertexArray(self, array:int) -> None: ... + def glBindVertexBuffers(self, first:int, count:int) -> typing.Tuple: ... + def glBlendColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glBlendEquation(self, mode:int) -> None: ... + def glBlendEquationSeparate(self, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendEquationSeparatei(self, buf:int, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendEquationi(self, buf:int, mode:int) -> None: ... + def glBlendFunc(self, sfactor:int, dfactor:int) -> None: ... + def glBlendFuncSeparate(self, sfactorRGB:int, dfactorRGB:int, sfactorAlpha:int, dfactorAlpha:int) -> None: ... + def glBlendFuncSeparatei(self, buf:int, srcRGB:int, dstRGB:int, srcAlpha:int, dstAlpha:int) -> None: ... + def glBlendFunci(self, buf:int, src:int, dst:int) -> None: ... + def glBlitFramebuffer(self, srcX0:int, srcY0:int, srcX1:int, srcY1:int, dstX0:int, dstY0:int, dstX1:int, dstY1:int, mask:int, filter:int) -> None: ... + def glCallList(self, list:int) -> None: ... + def glCallLists(self, n:int, type:int, lists:int) -> None: ... + def glCheckFramebufferStatus(self, target:int) -> int: ... + def glClampColor(self, target:int, clamp:int) -> None: ... + def glClear(self, mask:int) -> None: ... + def glClearAccum(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearBufferData(self, target:int, internalformat:int, format:int, type:int, data:int) -> None: ... + def glClearBufferfi(self, buffer:int, drawbuffer:int, depth:float, stencil:int) -> None: ... + def glClearBufferfv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferuiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearDepth(self, depth:float) -> None: ... + def glClearDepthf(self, dd:float) -> None: ... + def glClearIndex(self, c:float) -> None: ... + def glClearStencil(self, s:int) -> None: ... + def glClearTexImage(self, texture:int, level:int, format:int, type:int, data:int) -> None: ... + def glClearTexSubImage(self, texture:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, data:int) -> None: ... + def glClientActiveTexture(self, texture:int) -> None: ... + def glClipPlane(self, plane:int, equation:typing.Sequence) -> None: ... + def glColor3b(self, red:int, green:int, blue:int) -> None: ... + def glColor3bv(self, v:bytes) -> None: ... + def glColor3d(self, red:float, green:float, blue:float) -> None: ... + def glColor3dv(self, v:typing.Sequence) -> None: ... + def glColor3f(self, red:float, green:float, blue:float) -> None: ... + def glColor3fv(self, v:typing.Sequence) -> None: ... + def glColor3i(self, red:int, green:int, blue:int) -> None: ... + def glColor3iv(self, v:typing.Sequence) -> None: ... + def glColor3s(self, red:int, green:int, blue:int) -> None: ... + def glColor3sv(self, v:typing.Sequence) -> None: ... + def glColor3ub(self, red:int, green:int, blue:int) -> None: ... + def glColor3ubv(self, v:bytes) -> None: ... + def glColor3ui(self, red:int, green:int, blue:int) -> None: ... + def glColor3uiv(self, v:typing.Sequence) -> None: ... + def glColor3us(self, red:int, green:int, blue:int) -> None: ... + def glColor3usv(self, v:typing.Sequence) -> None: ... + def glColor4b(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4bv(self, v:bytes) -> None: ... + def glColor4d(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4dv(self, v:typing.Sequence) -> None: ... + def glColor4f(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4fv(self, v:typing.Sequence) -> None: ... + def glColor4i(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4iv(self, v:typing.Sequence) -> None: ... + def glColor4s(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4sv(self, v:typing.Sequence) -> None: ... + def glColor4ub(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4ubv(self, v:bytes) -> None: ... + def glColor4ui(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4uiv(self, v:typing.Sequence) -> None: ... + def glColor4us(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4usv(self, v:typing.Sequence) -> None: ... + def glColorMask(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColorMaski(self, index:int, r:int, g:int, b:int, a:int) -> None: ... + def glColorMaterial(self, face:int, mode:int) -> None: ... + def glColorP3ui(self, type:int, color:int) -> None: ... + def glColorP3uiv(self, type:int, color:typing.Sequence) -> None: ... + def glColorP4ui(self, type:int, color:int) -> None: ... + def glColorP4uiv(self, type:int, color:typing.Sequence) -> None: ... + def glColorPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glColorSubTable(self, target:int, start:int, count:int, format:int, type:int, data:int) -> None: ... + def glColorTable(self, target:int, internalformat:int, width:int, format:int, type:int, table:int) -> None: ... + def glColorTableParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glColorTableParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glCompileShader(self, shader:int) -> None: ... + def glCompressedTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, imageSize:int, data:int) -> None: ... + def glConvolutionFilter1D(self, target:int, internalformat:int, width:int, format:int, type:int, image:int) -> None: ... + def glConvolutionFilter2D(self, target:int, internalformat:int, width:int, height:int, format:int, type:int, image:int) -> None: ... + def glConvolutionParameterf(self, target:int, pname:int, params:float) -> None: ... + def glConvolutionParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glConvolutionParameteri(self, target:int, pname:int, params:int) -> None: ... + def glConvolutionParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glCopyColorSubTable(self, target:int, start:int, x:int, y:int, width:int) -> None: ... + def glCopyColorTable(self, target:int, internalformat:int, x:int, y:int, width:int) -> None: ... + def glCopyConvolutionFilter1D(self, target:int, internalformat:int, x:int, y:int, width:int) -> None: ... + def glCopyConvolutionFilter2D(self, target:int, internalformat:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyImageSubData(self, srcName:int, srcTarget:int, srcLevel:int, srcX:int, srcY:int, srcZ:int, dstName:int, dstTarget:int, dstLevel:int, dstX:int, dstY:int, dstZ:int, srcWidth:int, srcHeight:int, srcDepth:int) -> None: ... + def glCopyPixels(self, x:int, y:int, width:int, height:int, type:int) -> None: ... + def glCopyTexImage1D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, border:int) -> None: ... + def glCopyTexImage2D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, height:int, border:int) -> None: ... + def glCopyTexSubImage1D(self, target:int, level:int, xoffset:int, x:int, y:int, width:int) -> None: ... + def glCopyTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCreateProgram(self) -> int: ... + def glCreateShader(self, type:int) -> int: ... + def glCullFace(self, mode:int) -> None: ... + def glDebugMessageControl(self, source:int, type:int, severity:int, count:int, ids:typing.Sequence, enabled:int) -> None: ... + def glDebugMessageInsert(self, source:int, type:int, id:int, severity:int, length:int, buf:bytes) -> None: ... + def glDeleteBuffers(self, n:int, buffers:typing.Sequence) -> None: ... + def glDeleteFramebuffers(self, n:int, framebuffers:typing.Sequence) -> None: ... + def glDeleteLists(self, list:int, range:int) -> None: ... + def glDeleteProgram(self, program:int) -> None: ... + def glDeleteProgramPipelines(self, n:int, pipelines:typing.Sequence) -> None: ... + def glDeleteQueries(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteRenderbuffers(self, n:int, renderbuffers:typing.Sequence) -> None: ... + def glDeleteSamplers(self, count:int, samplers:typing.Sequence) -> None: ... + def glDeleteShader(self, shader:int) -> None: ... + def glDeleteTextures(self, n:int, textures:typing.Sequence) -> None: ... + def glDeleteTransformFeedbacks(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteVertexArrays(self, n:int, arrays:typing.Sequence) -> None: ... + def glDepthFunc(self, func:int) -> None: ... + def glDepthMask(self, flag:int) -> None: ... + def glDepthRange(self, nearVal:float, farVal:float) -> None: ... + def glDepthRangeArrayv(self, first:int, count:int, v:typing.Sequence) -> None: ... + def glDepthRangeIndexed(self, index:int, n:float, f:float) -> None: ... + def glDepthRangef(self, n:float, f:float) -> None: ... + def glDetachShader(self, program:int, shader:int) -> None: ... + def glDisable(self, cap:int) -> None: ... + def glDisableClientState(self, array:int) -> None: ... + def glDisableVertexAttribArray(self, index:int) -> None: ... + def glDisablei(self, target:int, index:int) -> None: ... + def glDispatchCompute(self, num_groups_x:int, num_groups_y:int, num_groups_z:int) -> None: ... + def glDrawArrays(self, mode:int, first:int, count:int) -> None: ... + def glDrawArraysIndirect(self, mode:int, indirect:int) -> None: ... + def glDrawArraysInstanced(self, mode:int, first:int, count:int, instancecount:int) -> None: ... + def glDrawArraysInstancedBaseInstance(self, mode:int, first:int, count:int, instancecount:int, baseinstance:int) -> None: ... + def glDrawBuffer(self, buf:int) -> None: ... + def glDrawBuffers(self, n:int, bufs:typing.Sequence) -> None: ... + def glDrawElements(self, mode:int, count:int, type:int, indices:int) -> None: ... + def glDrawElementsBaseVertex(self, mode:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glDrawElementsIndirect(self, mode:int, type:int, indirect:int) -> None: ... + def glDrawElementsInstanced(self, mode:int, count:int, type:int, indices:int, instancecount:int) -> None: ... + def glDrawElementsInstancedBaseInstance(self, mode:int, count:int, type:int, indices:int, instancecount:int, baseinstance:int) -> None: ... + def glDrawElementsInstancedBaseVertex(self, mode:int, count:int, type:int, indices:int, instancecount:int, basevertex:int) -> None: ... + def glDrawElementsInstancedBaseVertexBaseInstance(self, mode:int, count:int, type:int, indices:int, instancecount:int, basevertex:int, baseinstance:int) -> None: ... + def glDrawPixels(self, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glDrawRangeElements(self, mode:int, start:int, end:int, count:int, type:int, indices:int) -> None: ... + def glDrawRangeElementsBaseVertex(self, mode:int, start:int, end:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glDrawTransformFeedback(self, mode:int, id:int) -> None: ... + def glDrawTransformFeedbackInstanced(self, mode:int, id:int, instancecount:int) -> None: ... + def glDrawTransformFeedbackStream(self, mode:int, id:int, stream:int) -> None: ... + def glDrawTransformFeedbackStreamInstanced(self, mode:int, id:int, stream:int, instancecount:int) -> None: ... + def glEdgeFlag(self, flag:int) -> None: ... + def glEdgeFlagPointer(self, stride:int, pointer:int) -> None: ... + def glEnable(self, cap:int) -> None: ... + def glEnableClientState(self, array:int) -> None: ... + def glEnableVertexAttribArray(self, index:int) -> None: ... + def glEnablei(self, target:int, index:int) -> None: ... + def glEnd(self) -> None: ... + def glEndConditionalRender(self) -> None: ... + def glEndList(self) -> None: ... + def glEndQuery(self, target:int) -> None: ... + def glEndQueryIndexed(self, target:int, index:int) -> None: ... + def glEndTransformFeedback(self) -> None: ... + def glEvalCoord1d(self, u:float) -> None: ... + def glEvalCoord1dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord1f(self, u:float) -> None: ... + def glEvalCoord1fv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2d(self, u:float, v:float) -> None: ... + def glEvalCoord2dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2f(self, u:float, v:float) -> None: ... + def glEvalCoord2fv(self, u:typing.Sequence) -> None: ... + def glEvalMesh1(self, mode:int, i1:int, i2:int) -> None: ... + def glEvalMesh2(self, mode:int, i1:int, i2:int, j1:int, j2:int) -> None: ... + def glEvalPoint1(self, i:int) -> None: ... + def glEvalPoint2(self, i:int, j:int) -> None: ... + def glFinish(self) -> None: ... + def glFlush(self) -> None: ... + def glFogCoordPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glFogCoordd(self, coord:float) -> None: ... + def glFogCoorddv(self, coord:typing.Sequence) -> None: ... + def glFogCoordf(self, coord:float) -> None: ... + def glFogCoordfv(self, coord:typing.Sequence) -> None: ... + def glFogf(self, pname:int, param:float) -> None: ... + def glFogfv(self, pname:int, params:typing.Sequence) -> None: ... + def glFogi(self, pname:int, param:int) -> None: ... + def glFogiv(self, pname:int, params:typing.Sequence) -> None: ... + def glFramebufferParameteri(self, target:int, pname:int, param:int) -> None: ... + def glFramebufferRenderbuffer(self, target:int, attachment:int, renderbuffertarget:int, renderbuffer:int) -> None: ... + def glFramebufferTexture(self, target:int, attachment:int, texture:int, level:int) -> None: ... + def glFramebufferTexture1D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture2D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture3D(self, target:int, attachment:int, textarget:int, texture:int, level:int, zoffset:int) -> None: ... + def glFramebufferTextureLayer(self, target:int, attachment:int, texture:int, level:int, layer:int) -> None: ... + def glFrontFace(self, mode:int) -> None: ... + def glFrustum(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glGenLists(self, range:int) -> int: ... + def glGenerateMipmap(self, target:int) -> None: ... + def glGetAttribLocation(self, program:int, name:bytes) -> int: ... + def glGetColorTable(self, target:int, format:int, type:int, table:int) -> None: ... + def glGetCompressedTexImage(self, target:int, level:int, img:int) -> None: ... + def glGetConvolutionFilter(self, target:int, format:int, type:int, image:int) -> None: ... + def glGetError(self) -> int: ... + def glGetFragDataIndex(self, program:int, name:bytes) -> int: ... + def glGetFragDataLocation(self, program:int, name:bytes) -> int: ... + def glGetHistogram(self, target:int, reset:int, format:int, type:int, values:int) -> None: ... + def glGetMinmax(self, target:int, reset:int, format:int, type:int, values:int) -> None: ... + def glGetProgramResourceIndex(self, program:int, programInterface:int, name:bytes) -> int: ... + def glGetProgramResourceLocation(self, program:int, programInterface:int, name:bytes) -> int: ... + def glGetProgramResourceLocationIndex(self, program:int, programInterface:int, name:bytes) -> int: ... + def glGetSeparableFilter(self, target:int, format:int, type:int, row:int, column:int, span:int) -> None: ... + def glGetString(self, name:int) -> bytes: ... + def glGetStringi(self, name:int, index:int) -> bytes: ... + def glGetSubroutineIndex(self, program:int, shadertype:int, name:bytes) -> int: ... + def glGetSubroutineUniformLocation(self, program:int, shadertype:int, name:bytes) -> int: ... + def glGetTexImage(self, target:int, level:int, format:int, type:int, pixels:int) -> None: ... + def glGetUniformBlockIndex(self, program:int, uniformBlockName:bytes) -> int: ... + def glGetUniformLocation(self, program:int, name:bytes) -> int: ... + def glHint(self, target:int, mode:int) -> None: ... + def glHistogram(self, target:int, width:int, internalformat:int, sink:int) -> None: ... + def glIndexMask(self, mask:int) -> None: ... + def glIndexPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glIndexd(self, c:float) -> None: ... + def glIndexdv(self, c:typing.Sequence) -> None: ... + def glIndexf(self, c:float) -> None: ... + def glIndexfv(self, c:typing.Sequence) -> None: ... + def glIndexi(self, c:int) -> None: ... + def glIndexiv(self, c:typing.Sequence) -> None: ... + def glIndexs(self, c:int) -> None: ... + def glIndexsv(self, c:typing.Sequence) -> None: ... + def glIndexub(self, c:int) -> None: ... + def glIndexubv(self, c:bytes) -> None: ... + def glInitNames(self) -> None: ... + def glInterleavedArrays(self, format:int, stride:int, pointer:int) -> None: ... + def glInvalidateBufferData(self, buffer:int) -> None: ... + def glInvalidateFramebuffer(self, target:int, numAttachments:int, attachments:typing.Sequence) -> None: ... + def glInvalidateSubFramebuffer(self, target:int, numAttachments:int, attachments:typing.Sequence, x:int, y:int, width:int, height:int) -> None: ... + def glInvalidateTexImage(self, texture:int, level:int) -> None: ... + def glInvalidateTexSubImage(self, texture:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int) -> None: ... + def glIsBuffer(self, buffer:int) -> int: ... + def glIsEnabled(self, cap:int) -> int: ... + def glIsEnabledi(self, target:int, index:int) -> int: ... + def glIsFramebuffer(self, framebuffer:int) -> int: ... + def glIsList(self, list:int) -> int: ... + def glIsProgram(self, program:int) -> int: ... + def glIsProgramPipeline(self, pipeline:int) -> int: ... + def glIsQuery(self, id:int) -> int: ... + def glIsRenderbuffer(self, renderbuffer:int) -> int: ... + def glIsSampler(self, sampler:int) -> int: ... + def glIsShader(self, shader:int) -> int: ... + def glIsTexture(self, texture:int) -> int: ... + def glIsTransformFeedback(self, id:int) -> int: ... + def glIsVertexArray(self, array:int) -> int: ... + def glLightModelf(self, pname:int, param:float) -> None: ... + def glLightModelfv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightModeli(self, pname:int, param:int) -> None: ... + def glLightModeliv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightf(self, light:int, pname:int, param:float) -> None: ... + def glLightfv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLighti(self, light:int, pname:int, param:int) -> None: ... + def glLightiv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLineStipple(self, factor:int, pattern:int) -> None: ... + def glLineWidth(self, width:float) -> None: ... + def glLinkProgram(self, program:int) -> None: ... + def glListBase(self, base:int) -> None: ... + def glLoadIdentity(self) -> None: ... + def glLoadMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadMatrixf(self, m:typing.Sequence) -> None: ... + def glLoadName(self, name:int) -> None: ... + def glLoadTransposeMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadTransposeMatrixf(self, m:typing.Sequence) -> None: ... + def glLogicOp(self, opcode:int) -> None: ... + def glMap1d(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap1f(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap2d(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMap2f(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMapBuffer(self, target:int, access:int) -> int: ... + def glMapGrid1d(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid1f(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid2d(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMapGrid2f(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMaterialf(self, face:int, pname:int, param:float) -> None: ... + def glMaterialfv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMateriali(self, face:int, pname:int, param:int) -> None: ... + def glMaterialiv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMatrixMode(self, mode:int) -> None: ... + def glMemoryBarrier(self, barriers:int) -> None: ... + def glMinSampleShading(self, value:float) -> None: ... + def glMinmax(self, target:int, internalformat:int, sink:int) -> None: ... + def glMultMatrixd(self, m:typing.Sequence) -> None: ... + def glMultMatrixf(self, m:typing.Sequence) -> None: ... + def glMultTransposeMatrixd(self, m:typing.Sequence) -> None: ... + def glMultTransposeMatrixf(self, m:typing.Sequence) -> None: ... + def glMultiDrawArrays(self, mode:int, first:typing.Sequence, count:typing.Sequence, drawcount:int) -> None: ... + def glMultiDrawArraysIndirect(self, mode:int, indirect:int, drawcount:int, stride:int) -> None: ... + def glMultiTexCoord1d(self, target:int, s:float) -> None: ... + def glMultiTexCoord1dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1f(self, target:int, s:float) -> None: ... + def glMultiTexCoord1fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1i(self, target:int, s:int) -> None: ... + def glMultiTexCoord1iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1s(self, target:int, s:int) -> None: ... + def glMultiTexCoord1sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2d(self, target:int, s:float, t:float) -> None: ... + def glMultiTexCoord2dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2f(self, target:int, s:float, t:float) -> None: ... + def glMultiTexCoord2fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2i(self, target:int, s:int, t:int) -> None: ... + def glMultiTexCoord2iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2s(self, target:int, s:int, t:int) -> None: ... + def glMultiTexCoord2sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3d(self, target:int, s:float, t:float, r:float) -> None: ... + def glMultiTexCoord3dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3f(self, target:int, s:float, t:float, r:float) -> None: ... + def glMultiTexCoord3fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3i(self, target:int, s:int, t:int, r:int) -> None: ... + def glMultiTexCoord3iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3s(self, target:int, s:int, t:int, r:int) -> None: ... + def glMultiTexCoord3sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4d(self, target:int, s:float, t:float, r:float, q:float) -> None: ... + def glMultiTexCoord4dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4f(self, target:int, s:float, t:float, r:float, q:float) -> None: ... + def glMultiTexCoord4fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4i(self, target:int, s:int, t:int, r:int, q:int) -> None: ... + def glMultiTexCoord4iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4s(self, target:int, s:int, t:int, r:int, q:int) -> None: ... + def glMultiTexCoord4sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoordP1ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP1uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP2ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP2uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP3ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP3uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP4ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP4uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glNewList(self, list:int, mode:int) -> None: ... + def glNormal3b(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3bv(self, v:bytes) -> None: ... + def glNormal3d(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3dv(self, v:typing.Sequence) -> None: ... + def glNormal3f(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3fv(self, v:typing.Sequence) -> None: ... + def glNormal3i(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3iv(self, v:typing.Sequence) -> None: ... + def glNormal3s(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3sv(self, v:typing.Sequence) -> None: ... + def glNormalP3ui(self, type:int, coords:int) -> None: ... + def glNormalP3uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glNormalPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glObjectLabel(self, identifier:int, name:int, length:int, label:bytes) -> None: ... + def glObjectPtrLabel(self, ptr:int, length:int, label:bytes) -> None: ... + def glOrtho(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glPassThrough(self, token:float) -> None: ... + def glPatchParameterfv(self, pname:int, values:typing.Sequence) -> None: ... + def glPatchParameteri(self, pname:int, value:int) -> None: ... + def glPauseTransformFeedback(self) -> None: ... + def glPixelMapfv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapuiv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapusv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelStoref(self, pname:int, param:float) -> None: ... + def glPixelStorei(self, pname:int, param:int) -> None: ... + def glPixelTransferf(self, pname:int, param:float) -> None: ... + def glPixelTransferi(self, pname:int, param:int) -> None: ... + def glPixelZoom(self, xfactor:float, yfactor:float) -> None: ... + def glPointParameterf(self, pname:int, param:float) -> None: ... + def glPointParameterfv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointParameteri(self, pname:int, param:int) -> None: ... + def glPointParameteriv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointSize(self, size:float) -> None: ... + def glPolygonMode(self, face:int, mode:int) -> None: ... + def glPolygonOffset(self, factor:float, units:float) -> None: ... + def glPopAttrib(self) -> None: ... + def glPopClientAttrib(self) -> None: ... + def glPopDebugGroup(self) -> None: ... + def glPopMatrix(self) -> None: ... + def glPopName(self) -> None: ... + def glPrimitiveRestartIndex(self, index:int) -> None: ... + def glPrioritizeTextures(self, n:int, textures:typing.Sequence, priorities:typing.Sequence) -> None: ... + def glProgramBinary(self, program:int, binaryFormat:int, binary:int, length:int) -> None: ... + def glProgramParameteri(self, program:int, pname:int, value:int) -> None: ... + def glProgramUniform1d(self, program:int, location:int, v0:float) -> None: ... + def glProgramUniform1dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1f(self, program:int, location:int, v0:float) -> None: ... + def glProgramUniform1fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1i(self, program:int, location:int, v0:int) -> None: ... + def glProgramUniform1iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1ui(self, program:int, location:int, v0:int) -> None: ... + def glProgramUniform1uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2d(self, program:int, location:int, v0:float, v1:float) -> None: ... + def glProgramUniform2dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2f(self, program:int, location:int, v0:float, v1:float) -> None: ... + def glProgramUniform2fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2i(self, program:int, location:int, v0:int, v1:int) -> None: ... + def glProgramUniform2iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2ui(self, program:int, location:int, v0:int, v1:int) -> None: ... + def glProgramUniform2uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3d(self, program:int, location:int, v0:float, v1:float, v2:float) -> None: ... + def glProgramUniform3dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3f(self, program:int, location:int, v0:float, v1:float, v2:float) -> None: ... + def glProgramUniform3fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3i(self, program:int, location:int, v0:int, v1:int, v2:int) -> None: ... + def glProgramUniform3iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3ui(self, program:int, location:int, v0:int, v1:int, v2:int) -> None: ... + def glProgramUniform3uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4d(self, program:int, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glProgramUniform4dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4f(self, program:int, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glProgramUniform4fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4i(self, program:int, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glProgramUniform4iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4ui(self, program:int, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glProgramUniform4uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x3dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x4dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x2dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x4dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x2dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x3dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProvokingVertex(self, mode:int) -> None: ... + def glPushAttrib(self, mask:int) -> None: ... + def glPushClientAttrib(self, mask:int) -> None: ... + def glPushDebugGroup(self, source:int, id:int, length:int, message:bytes) -> None: ... + def glPushMatrix(self) -> None: ... + def glPushName(self, name:int) -> None: ... + def glQueryCounter(self, id:int, target:int) -> None: ... + def glRasterPos2d(self, x:float, y:float) -> None: ... + def glRasterPos2dv(self, v:typing.Sequence) -> None: ... + def glRasterPos2f(self, x:float, y:float) -> None: ... + def glRasterPos2fv(self, v:typing.Sequence) -> None: ... + def glRasterPos2i(self, x:int, y:int) -> None: ... + def glRasterPos2iv(self, v:typing.Sequence) -> None: ... + def glRasterPos2s(self, x:int, y:int) -> None: ... + def glRasterPos2sv(self, v:typing.Sequence) -> None: ... + def glRasterPos3d(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3dv(self, v:typing.Sequence) -> None: ... + def glRasterPos3f(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3fv(self, v:typing.Sequence) -> None: ... + def glRasterPos3i(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3iv(self, v:typing.Sequence) -> None: ... + def glRasterPos3s(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3sv(self, v:typing.Sequence) -> None: ... + def glRasterPos4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4dv(self, v:typing.Sequence) -> None: ... + def glRasterPos4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4fv(self, v:typing.Sequence) -> None: ... + def glRasterPos4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4iv(self, v:typing.Sequence) -> None: ... + def glRasterPos4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4sv(self, v:typing.Sequence) -> None: ... + def glReadBuffer(self, src:int) -> None: ... + def glReadPixels(self, x:int, y:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glRectd(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectdv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRectf(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectfv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRecti(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectiv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRects(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectsv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glReleaseShaderCompiler(self) -> None: ... + def glRenderMode(self, mode:int) -> int: ... + def glRenderbufferStorage(self, target:int, internalformat:int, width:int, height:int) -> None: ... + def glRenderbufferStorageMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int) -> None: ... + def glResetHistogram(self, target:int) -> None: ... + def glResetMinmax(self, target:int) -> None: ... + def glResumeTransformFeedback(self) -> None: ... + def glRotated(self, angle:float, x:float, y:float, z:float) -> None: ... + def glRotatef(self, angle:float, x:float, y:float, z:float) -> None: ... + def glSampleCoverage(self, value:float, invert:int) -> None: ... + def glSampleMaski(self, maskNumber:int, mask:int) -> None: ... + def glSamplerParameterIiv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameterIuiv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameterf(self, sampler:int, pname:int, param:float) -> None: ... + def glSamplerParameterfv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameteri(self, sampler:int, pname:int, param:int) -> None: ... + def glSamplerParameteriv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glScaled(self, x:float, y:float, z:float) -> None: ... + def glScalef(self, x:float, y:float, z:float) -> None: ... + def glScissor(self, x:int, y:int, width:int, height:int) -> None: ... + def glScissorArrayv(self, first:int, count:int, v:typing.Sequence) -> None: ... + def glScissorIndexed(self, index:int, left:int, bottom:int, width:int, height:int) -> None: ... + def glScissorIndexedv(self, index:int, v:typing.Sequence) -> None: ... + def glSecondaryColor3b(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3bv(self, v:bytes) -> None: ... + def glSecondaryColor3d(self, red:float, green:float, blue:float) -> None: ... + def glSecondaryColor3dv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3f(self, red:float, green:float, blue:float) -> None: ... + def glSecondaryColor3fv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3i(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3iv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3s(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3sv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3ub(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3ubv(self, v:bytes) -> None: ... + def glSecondaryColor3ui(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3uiv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3us(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3usv(self, v:typing.Sequence) -> None: ... + def glSecondaryColorP3ui(self, type:int, color:int) -> None: ... + def glSecondaryColorP3uiv(self, type:int, color:typing.Sequence) -> None: ... + def glSecondaryColorPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glSeparableFilter2D(self, target:int, internalformat:int, width:int, height:int, format:int, type:int, row:int, column:int) -> None: ... + def glShadeModel(self, mode:int) -> None: ... + def glShaderBinary(self, count:int, shaders:typing.Sequence, binaryformat:int, binary:int, length:int) -> None: ... + def glShaderStorageBlockBinding(self, program:int, storageBlockIndex:int, storageBlockBinding:int) -> None: ... + def glStencilFunc(self, func:int, ref:int, mask:int) -> None: ... + def glStencilFuncSeparate(self, face:int, func:int, ref:int, mask:int) -> None: ... + def glStencilMask(self, mask:int) -> None: ... + def glStencilMaskSeparate(self, face:int, mask:int) -> None: ... + def glStencilOp(self, fail:int, zfail:int, zpass:int) -> None: ... + def glStencilOpSeparate(self, face:int, sfail:int, dpfail:int, dppass:int) -> None: ... + def glTexBuffer(self, target:int, internalformat:int, buffer:int) -> None: ... + def glTexCoord1d(self, s:float) -> None: ... + def glTexCoord1dv(self, v:typing.Sequence) -> None: ... + def glTexCoord1f(self, s:float) -> None: ... + def glTexCoord1fv(self, v:typing.Sequence) -> None: ... + def glTexCoord1i(self, s:int) -> None: ... + def glTexCoord1iv(self, v:typing.Sequence) -> None: ... + def glTexCoord1s(self, s:int) -> None: ... + def glTexCoord1sv(self, v:typing.Sequence) -> None: ... + def glTexCoord2d(self, s:float, t:float) -> None: ... + def glTexCoord2dv(self, v:typing.Sequence) -> None: ... + def glTexCoord2f(self, s:float, t:float) -> None: ... + def glTexCoord2fv(self, v:typing.Sequence) -> None: ... + def glTexCoord2i(self, s:int, t:int) -> None: ... + def glTexCoord2iv(self, v:typing.Sequence) -> None: ... + def glTexCoord2s(self, s:int, t:int) -> None: ... + def glTexCoord2sv(self, v:typing.Sequence) -> None: ... + def glTexCoord3d(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3dv(self, v:typing.Sequence) -> None: ... + def glTexCoord3f(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3fv(self, v:typing.Sequence) -> None: ... + def glTexCoord3i(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3iv(self, v:typing.Sequence) -> None: ... + def glTexCoord3s(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3sv(self, v:typing.Sequence) -> None: ... + def glTexCoord4d(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4dv(self, v:typing.Sequence) -> None: ... + def glTexCoord4f(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4fv(self, v:typing.Sequence) -> None: ... + def glTexCoord4i(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4iv(self, v:typing.Sequence) -> None: ... + def glTexCoord4s(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4sv(self, v:typing.Sequence) -> None: ... + def glTexCoordP1ui(self, type:int, coords:int) -> None: ... + def glTexCoordP1uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP2ui(self, type:int, coords:int) -> None: ... + def glTexCoordP2uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP3ui(self, type:int, coords:int) -> None: ... + def glTexCoordP3uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP4ui(self, type:int, coords:int) -> None: ... + def glTexCoordP4uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glTexEnvf(self, target:int, pname:int, param:float) -> None: ... + def glTexEnvfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexEnvi(self, target:int, pname:int, param:int) -> None: ... + def glTexEnviv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGend(self, coord:int, pname:int, param:float) -> None: ... + def glTexGendv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGenf(self, coord:int, pname:int, param:float) -> None: ... + def glTexGenfv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGeni(self, coord:int, pname:int, param:int) -> None: ... + def glTexGeniv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, fixedsamplelocations:int) -> None: ... + def glTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage3DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, depth:int, fixedsamplelocations:int) -> None: ... + def glTexParameterIiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterIuiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterf(self, target:int, pname:int, param:float) -> None: ... + def glTexParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameteri(self, target:int, pname:int, param:int) -> None: ... + def glTexParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexStorage1D(self, target:int, levels:int, internalformat:int, width:int) -> None: ... + def glTexStorage2D(self, target:int, levels:int, internalformat:int, width:int, height:int) -> None: ... + def glTexStorage2DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, fixedsamplelocations:int) -> None: ... + def glTexStorage3D(self, target:int, levels:int, internalformat:int, width:int, height:int, depth:int) -> None: ... + def glTexStorage3DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, depth:int, fixedsamplelocations:int) -> None: ... + def glTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, pixels:int) -> None: ... + def glTextureView(self, texture:int, target:int, origtexture:int, internalformat:int, minlevel:int, numlevels:int, minlayer:int, numlayers:int) -> None: ... + def glTranslated(self, x:float, y:float, z:float) -> None: ... + def glTranslatef(self, x:float, y:float, z:float) -> None: ... + def glUniform1d(self, location:int, x:float) -> None: ... + def glUniform1dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1f(self, location:int, v0:float) -> None: ... + def glUniform1fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1i(self, location:int, v0:int) -> None: ... + def glUniform1iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1ui(self, location:int, v0:int) -> None: ... + def glUniform1uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2d(self, location:int, x:float, y:float) -> None: ... + def glUniform2dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2f(self, location:int, v0:float, v1:float) -> None: ... + def glUniform2fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2i(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2ui(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3d(self, location:int, x:float, y:float, z:float) -> None: ... + def glUniform3dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3f(self, location:int, v0:float, v1:float, v2:float) -> None: ... + def glUniform3fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3i(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3ui(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4d(self, location:int, x:float, y:float, z:float, w:float) -> None: ... + def glUniform4dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4f(self, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glUniform4fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4i(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4ui(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniformBlockBinding(self, program:int, uniformBlockIndex:int, uniformBlockBinding:int) -> None: ... + def glUniformMatrix2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformSubroutinesuiv(self, shadertype:int, count:int, indices:typing.Sequence) -> None: ... + def glUnmapBuffer(self, target:int) -> int: ... + def glUseProgram(self, program:int) -> None: ... + def glUseProgramStages(self, pipeline:int, stages:int, program:int) -> None: ... + def glValidateProgram(self, program:int) -> None: ... + def glValidateProgramPipeline(self, pipeline:int) -> None: ... + def glVertex2d(self, x:float, y:float) -> None: ... + def glVertex2dv(self, v:typing.Sequence) -> None: ... + def glVertex2f(self, x:float, y:float) -> None: ... + def glVertex2fv(self, v:typing.Sequence) -> None: ... + def glVertex2i(self, x:int, y:int) -> None: ... + def glVertex2iv(self, v:typing.Sequence) -> None: ... + def glVertex2s(self, x:int, y:int) -> None: ... + def glVertex2sv(self, v:typing.Sequence) -> None: ... + def glVertex3d(self, x:float, y:float, z:float) -> None: ... + def glVertex3dv(self, v:typing.Sequence) -> None: ... + def glVertex3f(self, x:float, y:float, z:float) -> None: ... + def glVertex3fv(self, v:typing.Sequence) -> None: ... + def glVertex3i(self, x:int, y:int, z:int) -> None: ... + def glVertex3iv(self, v:typing.Sequence) -> None: ... + def glVertex3s(self, x:int, y:int, z:int) -> None: ... + def glVertex3sv(self, v:typing.Sequence) -> None: ... + def glVertex4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4dv(self, v:typing.Sequence) -> None: ... + def glVertex4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4fv(self, v:typing.Sequence) -> None: ... + def glVertex4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4iv(self, v:typing.Sequence) -> None: ... + def glVertex4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4sv(self, v:typing.Sequence) -> None: ... + def glVertexAttrib1d(self, index:int, x:float) -> None: ... + def glVertexAttrib1dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib1f(self, index:int, x:float) -> None: ... + def glVertexAttrib1fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib1s(self, index:int, x:int) -> None: ... + def glVertexAttrib1sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2d(self, index:int, x:float, y:float) -> None: ... + def glVertexAttrib2dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2f(self, index:int, x:float, y:float) -> None: ... + def glVertexAttrib2fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2s(self, index:int, x:int, y:int) -> None: ... + def glVertexAttrib2sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3d(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttrib3dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3f(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttrib3fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3s(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttrib3sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nbv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4Niv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nsv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nub(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttrib4Nubv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4Nuiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nusv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4bv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4d(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttrib4dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4f(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttrib4fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4s(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttrib4sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4ubv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4usv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribBinding(self, attribindex:int, bindingindex:int) -> None: ... + def glVertexAttribDivisor(self, index:int, divisor:int) -> None: ... + def glVertexAttribFormat(self, attribindex:int, size:int, type:int, normalized:int, relativeoffset:int) -> None: ... + def glVertexAttribI1i(self, index:int, x:int) -> None: ... + def glVertexAttribI1iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI1ui(self, index:int, x:int) -> None: ... + def glVertexAttribI1uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI2i(self, index:int, x:int, y:int) -> None: ... + def glVertexAttribI2iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI2ui(self, index:int, x:int, y:int) -> None: ... + def glVertexAttribI2uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI3i(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttribI3iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI3ui(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttribI3uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4bv(self, index:int, v:bytes) -> None: ... + def glVertexAttribI4i(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttribI4iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4ubv(self, index:int, v:bytes) -> None: ... + def glVertexAttribI4ui(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttribI4uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4usv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribIFormat(self, attribindex:int, size:int, type:int, relativeoffset:int) -> None: ... + def glVertexAttribIPointer(self, index:int, size:int, type:int, stride:int, pointer:int) -> None: ... + def glVertexAttribL1d(self, index:int, x:float) -> None: ... + def glVertexAttribL1dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribL2d(self, index:int, x:float, y:float) -> None: ... + def glVertexAttribL2dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribL3d(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttribL3dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribL4d(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttribL4dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribLFormat(self, attribindex:int, size:int, type:int, relativeoffset:int) -> None: ... + def glVertexAttribLPointer(self, index:int, size:int, type:int, stride:int, pointer:int) -> None: ... + def glVertexAttribP1ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP1uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP2ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP2uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP3ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP3uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP4ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP4uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribPointer(self, index:int, size:int, type:int, normalized:int, stride:int, pointer:int) -> None: ... + def glVertexBindingDivisor(self, bindingindex:int, divisor:int) -> None: ... + def glVertexP2ui(self, type:int, value:int) -> None: ... + def glVertexP2uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexP3ui(self, type:int, value:int) -> None: ... + def glVertexP3uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexP4ui(self, type:int, value:int) -> None: ... + def glVertexP4uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glViewport(self, x:int, y:int, width:int, height:int) -> None: ... + def glViewportArrayv(self, first:int, count:int, v:typing.Sequence) -> None: ... + def glViewportIndexedf(self, index:int, x:float, y:float, w:float, h:float) -> None: ... + def glViewportIndexedfv(self, index:int, v:typing.Sequence) -> None: ... + def glWindowPos2d(self, x:float, y:float) -> None: ... + def glWindowPos2dv(self, v:typing.Sequence) -> None: ... + def glWindowPos2f(self, x:float, y:float) -> None: ... + def glWindowPos2fv(self, v:typing.Sequence) -> None: ... + def glWindowPos2i(self, x:int, y:int) -> None: ... + def glWindowPos2iv(self, v:typing.Sequence) -> None: ... + def glWindowPos2s(self, x:int, y:int) -> None: ... + def glWindowPos2sv(self, v:typing.Sequence) -> None: ... + def glWindowPos3d(self, x:float, y:float, z:float) -> None: ... + def glWindowPos3dv(self, v:typing.Sequence) -> None: ... + def glWindowPos3f(self, x:float, y:float, z:float) -> None: ... + def glWindowPos3fv(self, v:typing.Sequence) -> None: ... + def glWindowPos3i(self, x:int, y:int, z:int) -> None: ... + def glWindowPos3iv(self, v:typing.Sequence) -> None: ... + def glWindowPos3s(self, x:int, y:int, z:int) -> None: ... + def glWindowPos3sv(self, v:typing.Sequence) -> None: ... + def initializeOpenGLFunctions(self) -> bool: ... + + +class QOpenGLFunctions_4_4_Core(PySide2.QtGui.QAbstractOpenGLFunctions): + + def __init__(self) -> None: ... + + def glActiveShaderProgram(self, pipeline:int, program:int) -> None: ... + def glActiveTexture(self, texture:int) -> None: ... + def glAttachShader(self, program:int, shader:int) -> None: ... + def glBeginConditionalRender(self, id:int, mode:int) -> None: ... + def glBeginQuery(self, target:int, id:int) -> None: ... + def glBeginQueryIndexed(self, target:int, index:int, id:int) -> None: ... + def glBeginTransformFeedback(self, primitiveMode:int) -> None: ... + def glBindAttribLocation(self, program:int, index:int, name:bytes) -> None: ... + def glBindBuffer(self, target:int, buffer:int) -> None: ... + def glBindBufferBase(self, target:int, index:int, buffer:int) -> None: ... + def glBindBuffersBase(self, target:int, first:int, count:int, buffers:typing.Sequence) -> None: ... + def glBindBuffersRange(self, target:int, first:int, count:int) -> typing.Tuple: ... + def glBindFragDataLocation(self, program:int, color:int, name:bytes) -> None: ... + def glBindFragDataLocationIndexed(self, program:int, colorNumber:int, index:int, name:bytes) -> None: ... + def glBindFramebuffer(self, target:int, framebuffer:int) -> None: ... + def glBindImageTexture(self, unit:int, texture:int, level:int, layered:int, layer:int, access:int, format:int) -> None: ... + def glBindImageTextures(self, first:int, count:int, textures:typing.Sequence) -> None: ... + def glBindProgramPipeline(self, pipeline:int) -> None: ... + def glBindRenderbuffer(self, target:int, renderbuffer:int) -> None: ... + def glBindSampler(self, unit:int, sampler:int) -> None: ... + def glBindSamplers(self, first:int, count:int, samplers:typing.Sequence) -> None: ... + def glBindTexture(self, target:int, texture:int) -> None: ... + def glBindTextures(self, first:int, count:int, textures:typing.Sequence) -> None: ... + def glBindTransformFeedback(self, target:int, id:int) -> None: ... + def glBindVertexArray(self, array:int) -> None: ... + def glBindVertexBuffers(self, first:int, count:int) -> typing.Tuple: ... + def glBlendColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glBlendEquation(self, mode:int) -> None: ... + def glBlendEquationSeparate(self, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendEquationSeparatei(self, buf:int, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendEquationi(self, buf:int, mode:int) -> None: ... + def glBlendFunc(self, sfactor:int, dfactor:int) -> None: ... + def glBlendFuncSeparate(self, sfactorRGB:int, dfactorRGB:int, sfactorAlpha:int, dfactorAlpha:int) -> None: ... + def glBlendFuncSeparatei(self, buf:int, srcRGB:int, dstRGB:int, srcAlpha:int, dstAlpha:int) -> None: ... + def glBlendFunci(self, buf:int, src:int, dst:int) -> None: ... + def glBlitFramebuffer(self, srcX0:int, srcY0:int, srcX1:int, srcY1:int, dstX0:int, dstY0:int, dstX1:int, dstY1:int, mask:int, filter:int) -> None: ... + def glCheckFramebufferStatus(self, target:int) -> int: ... + def glClampColor(self, target:int, clamp:int) -> None: ... + def glClear(self, mask:int) -> None: ... + def glClearBufferData(self, target:int, internalformat:int, format:int, type:int, data:int) -> None: ... + def glClearBufferfi(self, buffer:int, drawbuffer:int, depth:float, stencil:int) -> None: ... + def glClearBufferfv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferuiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearDepth(self, depth:float) -> None: ... + def glClearDepthf(self, dd:float) -> None: ... + def glClearStencil(self, s:int) -> None: ... + def glClearTexImage(self, texture:int, level:int, format:int, type:int, data:int) -> None: ... + def glClearTexSubImage(self, texture:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, data:int) -> None: ... + def glColorMask(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColorMaski(self, index:int, r:int, g:int, b:int, a:int) -> None: ... + def glCompileShader(self, shader:int) -> None: ... + def glCompressedTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, imageSize:int, data:int) -> None: ... + def glCopyImageSubData(self, srcName:int, srcTarget:int, srcLevel:int, srcX:int, srcY:int, srcZ:int, dstName:int, dstTarget:int, dstLevel:int, dstX:int, dstY:int, dstZ:int, srcWidth:int, srcHeight:int, srcDepth:int) -> None: ... + def glCopyTexImage1D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, border:int) -> None: ... + def glCopyTexImage2D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, height:int, border:int) -> None: ... + def glCopyTexSubImage1D(self, target:int, level:int, xoffset:int, x:int, y:int, width:int) -> None: ... + def glCopyTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCreateProgram(self) -> int: ... + def glCreateShader(self, type:int) -> int: ... + def glCullFace(self, mode:int) -> None: ... + def glDebugMessageControl(self, source:int, type:int, severity:int, count:int, ids:typing.Sequence, enabled:int) -> None: ... + def glDebugMessageInsert(self, source:int, type:int, id:int, severity:int, length:int, buf:bytes) -> None: ... + def glDeleteBuffers(self, n:int, buffers:typing.Sequence) -> None: ... + def glDeleteFramebuffers(self, n:int, framebuffers:typing.Sequence) -> None: ... + def glDeleteProgram(self, program:int) -> None: ... + def glDeleteProgramPipelines(self, n:int, pipelines:typing.Sequence) -> None: ... + def glDeleteQueries(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteRenderbuffers(self, n:int, renderbuffers:typing.Sequence) -> None: ... + def glDeleteSamplers(self, count:int, samplers:typing.Sequence) -> None: ... + def glDeleteShader(self, shader:int) -> None: ... + def glDeleteTextures(self, n:int, textures:typing.Sequence) -> None: ... + def glDeleteTransformFeedbacks(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteVertexArrays(self, n:int, arrays:typing.Sequence) -> None: ... + def glDepthFunc(self, func:int) -> None: ... + def glDepthMask(self, flag:int) -> None: ... + def glDepthRange(self, nearVal:float, farVal:float) -> None: ... + def glDepthRangeArrayv(self, first:int, count:int, v:typing.Sequence) -> None: ... + def glDepthRangeIndexed(self, index:int, n:float, f:float) -> None: ... + def glDepthRangef(self, n:float, f:float) -> None: ... + def glDetachShader(self, program:int, shader:int) -> None: ... + def glDisable(self, cap:int) -> None: ... + def glDisableVertexAttribArray(self, index:int) -> None: ... + def glDisablei(self, target:int, index:int) -> None: ... + def glDispatchCompute(self, num_groups_x:int, num_groups_y:int, num_groups_z:int) -> None: ... + def glDrawArrays(self, mode:int, first:int, count:int) -> None: ... + def glDrawArraysIndirect(self, mode:int, indirect:int) -> None: ... + def glDrawArraysInstanced(self, mode:int, first:int, count:int, instancecount:int) -> None: ... + def glDrawArraysInstancedBaseInstance(self, mode:int, first:int, count:int, instancecount:int, baseinstance:int) -> None: ... + def glDrawBuffer(self, buf:int) -> None: ... + def glDrawBuffers(self, n:int, bufs:typing.Sequence) -> None: ... + def glDrawElements(self, mode:int, count:int, type:int, indices:int) -> None: ... + def glDrawElementsBaseVertex(self, mode:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glDrawElementsIndirect(self, mode:int, type:int, indirect:int) -> None: ... + def glDrawElementsInstanced(self, mode:int, count:int, type:int, indices:int, instancecount:int) -> None: ... + def glDrawElementsInstancedBaseInstance(self, mode:int, count:int, type:int, indices:int, instancecount:int, baseinstance:int) -> None: ... + def glDrawElementsInstancedBaseVertex(self, mode:int, count:int, type:int, indices:int, instancecount:int, basevertex:int) -> None: ... + def glDrawElementsInstancedBaseVertexBaseInstance(self, mode:int, count:int, type:int, indices:int, instancecount:int, basevertex:int, baseinstance:int) -> None: ... + def glDrawRangeElements(self, mode:int, start:int, end:int, count:int, type:int, indices:int) -> None: ... + def glDrawRangeElementsBaseVertex(self, mode:int, start:int, end:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glDrawTransformFeedback(self, mode:int, id:int) -> None: ... + def glDrawTransformFeedbackInstanced(self, mode:int, id:int, instancecount:int) -> None: ... + def glDrawTransformFeedbackStream(self, mode:int, id:int, stream:int) -> None: ... + def glDrawTransformFeedbackStreamInstanced(self, mode:int, id:int, stream:int, instancecount:int) -> None: ... + def glEnable(self, cap:int) -> None: ... + def glEnableVertexAttribArray(self, index:int) -> None: ... + def glEnablei(self, target:int, index:int) -> None: ... + def glEndConditionalRender(self) -> None: ... + def glEndQuery(self, target:int) -> None: ... + def glEndQueryIndexed(self, target:int, index:int) -> None: ... + def glEndTransformFeedback(self) -> None: ... + def glFinish(self) -> None: ... + def glFlush(self) -> None: ... + def glFramebufferParameteri(self, target:int, pname:int, param:int) -> None: ... + def glFramebufferRenderbuffer(self, target:int, attachment:int, renderbuffertarget:int, renderbuffer:int) -> None: ... + def glFramebufferTexture(self, target:int, attachment:int, texture:int, level:int) -> None: ... + def glFramebufferTexture1D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture2D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture3D(self, target:int, attachment:int, textarget:int, texture:int, level:int, zoffset:int) -> None: ... + def glFramebufferTextureLayer(self, target:int, attachment:int, texture:int, level:int, layer:int) -> None: ... + def glFrontFace(self, mode:int) -> None: ... + def glGenerateMipmap(self, target:int) -> None: ... + def glGetAttribLocation(self, program:int, name:bytes) -> int: ... + def glGetCompressedTexImage(self, target:int, level:int, img:int) -> None: ... + def glGetError(self) -> int: ... + def glGetFragDataIndex(self, program:int, name:bytes) -> int: ... + def glGetFragDataLocation(self, program:int, name:bytes) -> int: ... + def glGetProgramResourceIndex(self, program:int, programInterface:int, name:bytes) -> int: ... + def glGetProgramResourceLocation(self, program:int, programInterface:int, name:bytes) -> int: ... + def glGetProgramResourceLocationIndex(self, program:int, programInterface:int, name:bytes) -> int: ... + def glGetString(self, name:int) -> bytes: ... + def glGetStringi(self, name:int, index:int) -> bytes: ... + def glGetSubroutineIndex(self, program:int, shadertype:int, name:bytes) -> int: ... + def glGetSubroutineUniformLocation(self, program:int, shadertype:int, name:bytes) -> int: ... + def glGetTexImage(self, target:int, level:int, format:int, type:int, pixels:int) -> None: ... + def glGetUniformBlockIndex(self, program:int, uniformBlockName:bytes) -> int: ... + def glGetUniformLocation(self, program:int, name:bytes) -> int: ... + def glHint(self, target:int, mode:int) -> None: ... + def glInvalidateBufferData(self, buffer:int) -> None: ... + def glInvalidateFramebuffer(self, target:int, numAttachments:int, attachments:typing.Sequence) -> None: ... + def glInvalidateSubFramebuffer(self, target:int, numAttachments:int, attachments:typing.Sequence, x:int, y:int, width:int, height:int) -> None: ... + def glInvalidateTexImage(self, texture:int, level:int) -> None: ... + def glInvalidateTexSubImage(self, texture:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int) -> None: ... + def glIsBuffer(self, buffer:int) -> int: ... + def glIsEnabled(self, cap:int) -> int: ... + def glIsEnabledi(self, target:int, index:int) -> int: ... + def glIsFramebuffer(self, framebuffer:int) -> int: ... + def glIsProgram(self, program:int) -> int: ... + def glIsProgramPipeline(self, pipeline:int) -> int: ... + def glIsQuery(self, id:int) -> int: ... + def glIsRenderbuffer(self, renderbuffer:int) -> int: ... + def glIsSampler(self, sampler:int) -> int: ... + def glIsShader(self, shader:int) -> int: ... + def glIsTexture(self, texture:int) -> int: ... + def glIsTransformFeedback(self, id:int) -> int: ... + def glIsVertexArray(self, array:int) -> int: ... + def glLineWidth(self, width:float) -> None: ... + def glLinkProgram(self, program:int) -> None: ... + def glLogicOp(self, opcode:int) -> None: ... + def glMapBuffer(self, target:int, access:int) -> int: ... + def glMemoryBarrier(self, barriers:int) -> None: ... + def glMinSampleShading(self, value:float) -> None: ... + def glMultiDrawArrays(self, mode:int, first:typing.Sequence, count:typing.Sequence, drawcount:int) -> None: ... + def glMultiDrawArraysIndirect(self, mode:int, indirect:int, drawcount:int, stride:int) -> None: ... + def glObjectLabel(self, identifier:int, name:int, length:int, label:bytes) -> None: ... + def glObjectPtrLabel(self, ptr:int, length:int, label:bytes) -> None: ... + def glPatchParameterfv(self, pname:int, values:typing.Sequence) -> None: ... + def glPatchParameteri(self, pname:int, value:int) -> None: ... + def glPauseTransformFeedback(self) -> None: ... + def glPixelStoref(self, pname:int, param:float) -> None: ... + def glPixelStorei(self, pname:int, param:int) -> None: ... + def glPointParameterf(self, pname:int, param:float) -> None: ... + def glPointParameterfv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointParameteri(self, pname:int, param:int) -> None: ... + def glPointParameteriv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointSize(self, size:float) -> None: ... + def glPolygonMode(self, face:int, mode:int) -> None: ... + def glPolygonOffset(self, factor:float, units:float) -> None: ... + def glPopDebugGroup(self) -> None: ... + def glPrimitiveRestartIndex(self, index:int) -> None: ... + def glProgramBinary(self, program:int, binaryFormat:int, binary:int, length:int) -> None: ... + def glProgramParameteri(self, program:int, pname:int, value:int) -> None: ... + def glProgramUniform1d(self, program:int, location:int, v0:float) -> None: ... + def glProgramUniform1dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1f(self, program:int, location:int, v0:float) -> None: ... + def glProgramUniform1fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1i(self, program:int, location:int, v0:int) -> None: ... + def glProgramUniform1iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1ui(self, program:int, location:int, v0:int) -> None: ... + def glProgramUniform1uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2d(self, program:int, location:int, v0:float, v1:float) -> None: ... + def glProgramUniform2dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2f(self, program:int, location:int, v0:float, v1:float) -> None: ... + def glProgramUniform2fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2i(self, program:int, location:int, v0:int, v1:int) -> None: ... + def glProgramUniform2iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2ui(self, program:int, location:int, v0:int, v1:int) -> None: ... + def glProgramUniform2uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3d(self, program:int, location:int, v0:float, v1:float, v2:float) -> None: ... + def glProgramUniform3dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3f(self, program:int, location:int, v0:float, v1:float, v2:float) -> None: ... + def glProgramUniform3fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3i(self, program:int, location:int, v0:int, v1:int, v2:int) -> None: ... + def glProgramUniform3iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3ui(self, program:int, location:int, v0:int, v1:int, v2:int) -> None: ... + def glProgramUniform3uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4d(self, program:int, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glProgramUniform4dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4f(self, program:int, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glProgramUniform4fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4i(self, program:int, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glProgramUniform4iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4ui(self, program:int, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glProgramUniform4uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x3dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x4dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x2dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x4dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x2dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x3dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProvokingVertex(self, mode:int) -> None: ... + def glPushDebugGroup(self, source:int, id:int, length:int, message:bytes) -> None: ... + def glQueryCounter(self, id:int, target:int) -> None: ... + def glReadBuffer(self, src:int) -> None: ... + def glReadPixels(self, x:int, y:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glReleaseShaderCompiler(self) -> None: ... + def glRenderbufferStorage(self, target:int, internalformat:int, width:int, height:int) -> None: ... + def glRenderbufferStorageMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int) -> None: ... + def glResumeTransformFeedback(self) -> None: ... + def glSampleCoverage(self, value:float, invert:int) -> None: ... + def glSampleMaski(self, maskNumber:int, mask:int) -> None: ... + def glSamplerParameterIiv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameterIuiv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameterf(self, sampler:int, pname:int, param:float) -> None: ... + def glSamplerParameterfv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameteri(self, sampler:int, pname:int, param:int) -> None: ... + def glSamplerParameteriv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glScissor(self, x:int, y:int, width:int, height:int) -> None: ... + def glScissorArrayv(self, first:int, count:int, v:typing.Sequence) -> None: ... + def glScissorIndexed(self, index:int, left:int, bottom:int, width:int, height:int) -> None: ... + def glScissorIndexedv(self, index:int, v:typing.Sequence) -> None: ... + def glShaderBinary(self, count:int, shaders:typing.Sequence, binaryformat:int, binary:int, length:int) -> None: ... + def glShaderStorageBlockBinding(self, program:int, storageBlockIndex:int, storageBlockBinding:int) -> None: ... + def glStencilFunc(self, func:int, ref:int, mask:int) -> None: ... + def glStencilFuncSeparate(self, face:int, func:int, ref:int, mask:int) -> None: ... + def glStencilMask(self, mask:int) -> None: ... + def glStencilMaskSeparate(self, face:int, mask:int) -> None: ... + def glStencilOp(self, fail:int, zfail:int, zpass:int) -> None: ... + def glStencilOpSeparate(self, face:int, sfail:int, dpfail:int, dppass:int) -> None: ... + def glTexBuffer(self, target:int, internalformat:int, buffer:int) -> None: ... + def glTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, fixedsamplelocations:int) -> None: ... + def glTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage3DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, depth:int, fixedsamplelocations:int) -> None: ... + def glTexParameterIiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterIuiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterf(self, target:int, pname:int, param:float) -> None: ... + def glTexParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameteri(self, target:int, pname:int, param:int) -> None: ... + def glTexParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexStorage1D(self, target:int, levels:int, internalformat:int, width:int) -> None: ... + def glTexStorage2D(self, target:int, levels:int, internalformat:int, width:int, height:int) -> None: ... + def glTexStorage2DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, fixedsamplelocations:int) -> None: ... + def glTexStorage3D(self, target:int, levels:int, internalformat:int, width:int, height:int, depth:int) -> None: ... + def glTexStorage3DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, depth:int, fixedsamplelocations:int) -> None: ... + def glTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, pixels:int) -> None: ... + def glTextureView(self, texture:int, target:int, origtexture:int, internalformat:int, minlevel:int, numlevels:int, minlayer:int, numlayers:int) -> None: ... + def glUniform1d(self, location:int, x:float) -> None: ... + def glUniform1dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1f(self, location:int, v0:float) -> None: ... + def glUniform1fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1i(self, location:int, v0:int) -> None: ... + def glUniform1iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1ui(self, location:int, v0:int) -> None: ... + def glUniform1uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2d(self, location:int, x:float, y:float) -> None: ... + def glUniform2dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2f(self, location:int, v0:float, v1:float) -> None: ... + def glUniform2fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2i(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2ui(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3d(self, location:int, x:float, y:float, z:float) -> None: ... + def glUniform3dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3f(self, location:int, v0:float, v1:float, v2:float) -> None: ... + def glUniform3fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3i(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3ui(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4d(self, location:int, x:float, y:float, z:float, w:float) -> None: ... + def glUniform4dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4f(self, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glUniform4fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4i(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4ui(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniformBlockBinding(self, program:int, uniformBlockIndex:int, uniformBlockBinding:int) -> None: ... + def glUniformMatrix2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformSubroutinesuiv(self, shadertype:int, count:int, indices:typing.Sequence) -> None: ... + def glUnmapBuffer(self, target:int) -> int: ... + def glUseProgram(self, program:int) -> None: ... + def glUseProgramStages(self, pipeline:int, stages:int, program:int) -> None: ... + def glValidateProgram(self, program:int) -> None: ... + def glValidateProgramPipeline(self, pipeline:int) -> None: ... + def glVertexAttrib1d(self, index:int, x:float) -> None: ... + def glVertexAttrib1dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib1f(self, index:int, x:float) -> None: ... + def glVertexAttrib1fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib1s(self, index:int, x:int) -> None: ... + def glVertexAttrib1sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2d(self, index:int, x:float, y:float) -> None: ... + def glVertexAttrib2dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2f(self, index:int, x:float, y:float) -> None: ... + def glVertexAttrib2fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2s(self, index:int, x:int, y:int) -> None: ... + def glVertexAttrib2sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3d(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttrib3dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3f(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttrib3fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3s(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttrib3sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nbv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4Niv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nsv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nub(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttrib4Nubv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4Nuiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nusv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4bv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4d(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttrib4dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4f(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttrib4fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4s(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttrib4sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4ubv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4usv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribBinding(self, attribindex:int, bindingindex:int) -> None: ... + def glVertexAttribDivisor(self, index:int, divisor:int) -> None: ... + def glVertexAttribFormat(self, attribindex:int, size:int, type:int, normalized:int, relativeoffset:int) -> None: ... + def glVertexAttribI1i(self, index:int, x:int) -> None: ... + def glVertexAttribI1iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI1ui(self, index:int, x:int) -> None: ... + def glVertexAttribI1uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI2i(self, index:int, x:int, y:int) -> None: ... + def glVertexAttribI2iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI2ui(self, index:int, x:int, y:int) -> None: ... + def glVertexAttribI2uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI3i(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttribI3iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI3ui(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttribI3uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4bv(self, index:int, v:bytes) -> None: ... + def glVertexAttribI4i(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttribI4iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4ubv(self, index:int, v:bytes) -> None: ... + def glVertexAttribI4ui(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttribI4uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4usv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribIFormat(self, attribindex:int, size:int, type:int, relativeoffset:int) -> None: ... + def glVertexAttribIPointer(self, index:int, size:int, type:int, stride:int, pointer:int) -> None: ... + def glVertexAttribL1d(self, index:int, x:float) -> None: ... + def glVertexAttribL1dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribL2d(self, index:int, x:float, y:float) -> None: ... + def glVertexAttribL2dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribL3d(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttribL3dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribL4d(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttribL4dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribLFormat(self, attribindex:int, size:int, type:int, relativeoffset:int) -> None: ... + def glVertexAttribLPointer(self, index:int, size:int, type:int, stride:int, pointer:int) -> None: ... + def glVertexAttribP1ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP1uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP2ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP2uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP3ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP3uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP4ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP4uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribPointer(self, index:int, size:int, type:int, normalized:int, stride:int, pointer:int) -> None: ... + def glVertexBindingDivisor(self, bindingindex:int, divisor:int) -> None: ... + def glViewport(self, x:int, y:int, width:int, height:int) -> None: ... + def glViewportArrayv(self, first:int, count:int, v:typing.Sequence) -> None: ... + def glViewportIndexedf(self, index:int, x:float, y:float, w:float, h:float) -> None: ... + def glViewportIndexedfv(self, index:int, v:typing.Sequence) -> None: ... + def initializeOpenGLFunctions(self) -> bool: ... + + +class QOpenGLFunctions_4_5_Compatibility(PySide2.QtGui.QAbstractOpenGLFunctions): + + def __init__(self) -> None: ... + + def glAccum(self, op:int, value:float) -> None: ... + def glActiveShaderProgram(self, pipeline:int, program:int) -> None: ... + def glActiveTexture(self, texture:int) -> None: ... + def glAlphaFunc(self, func:int, ref:float) -> None: ... + def glArrayElement(self, i:int) -> None: ... + def glAttachShader(self, program:int, shader:int) -> None: ... + def glBegin(self, mode:int) -> None: ... + def glBeginConditionalRender(self, id:int, mode:int) -> None: ... + def glBeginQuery(self, target:int, id:int) -> None: ... + def glBeginQueryIndexed(self, target:int, index:int, id:int) -> None: ... + def glBeginTransformFeedback(self, primitiveMode:int) -> None: ... + def glBindAttribLocation(self, program:int, index:int, name:bytes) -> None: ... + def glBindBuffer(self, target:int, buffer:int) -> None: ... + def glBindBufferBase(self, target:int, index:int, buffer:int) -> None: ... + def glBindBuffersBase(self, target:int, first:int, count:int, buffers:typing.Sequence) -> None: ... + def glBindBuffersRange(self, target:int, first:int, count:int) -> typing.Tuple: ... + def glBindFragDataLocation(self, program:int, color:int, name:bytes) -> None: ... + def glBindFragDataLocationIndexed(self, program:int, colorNumber:int, index:int, name:bytes) -> None: ... + def glBindFramebuffer(self, target:int, framebuffer:int) -> None: ... + def glBindImageTexture(self, unit:int, texture:int, level:int, layered:int, layer:int, access:int, format:int) -> None: ... + def glBindImageTextures(self, first:int, count:int, textures:typing.Sequence) -> None: ... + def glBindProgramPipeline(self, pipeline:int) -> None: ... + def glBindRenderbuffer(self, target:int, renderbuffer:int) -> None: ... + def glBindSampler(self, unit:int, sampler:int) -> None: ... + def glBindSamplers(self, first:int, count:int, samplers:typing.Sequence) -> None: ... + def glBindTexture(self, target:int, texture:int) -> None: ... + def glBindTextureUnit(self, unit:int, texture:int) -> None: ... + def glBindTextures(self, first:int, count:int, textures:typing.Sequence) -> None: ... + def glBindTransformFeedback(self, target:int, id:int) -> None: ... + def glBindVertexArray(self, array:int) -> None: ... + def glBindVertexBuffers(self, first:int, count:int) -> typing.Tuple: ... + def glBlendColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glBlendEquation(self, mode:int) -> None: ... + def glBlendEquationSeparate(self, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendEquationSeparatei(self, buf:int, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendEquationi(self, buf:int, mode:int) -> None: ... + def glBlendFunc(self, sfactor:int, dfactor:int) -> None: ... + def glBlendFuncSeparate(self, sfactorRGB:int, dfactorRGB:int, sfactorAlpha:int, dfactorAlpha:int) -> None: ... + def glBlendFuncSeparatei(self, buf:int, srcRGB:int, dstRGB:int, srcAlpha:int, dstAlpha:int) -> None: ... + def glBlendFunci(self, buf:int, src:int, dst:int) -> None: ... + def glBlitFramebuffer(self, srcX0:int, srcY0:int, srcX1:int, srcY1:int, dstX0:int, dstY0:int, dstX1:int, dstY1:int, mask:int, filter:int) -> None: ... + def glBlitNamedFramebuffer(self, readFramebuffer:int, drawFramebuffer:int, srcX0:int, srcY0:int, srcX1:int, srcY1:int, dstX0:int, dstY0:int, dstX1:int, dstY1:int, mask:int, filter:int) -> None: ... + def glCallList(self, list:int) -> None: ... + def glCallLists(self, n:int, type:int, lists:int) -> None: ... + def glCheckFramebufferStatus(self, target:int) -> int: ... + def glCheckNamedFramebufferStatus(self, framebuffer:int, target:int) -> int: ... + def glClampColor(self, target:int, clamp:int) -> None: ... + def glClear(self, mask:int) -> None: ... + def glClearAccum(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearBufferData(self, target:int, internalformat:int, format:int, type:int, data:int) -> None: ... + def glClearBufferfi(self, buffer:int, drawbuffer:int, depth:float, stencil:int) -> None: ... + def glClearBufferfv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferuiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearDepth(self, depth:float) -> None: ... + def glClearDepthf(self, dd:float) -> None: ... + def glClearIndex(self, c:float) -> None: ... + def glClearNamedBufferData(self, buffer:int, internalformat:int, format:int, type:int, data:int) -> None: ... + def glClearNamedFramebufferfi(self, framebuffer:int, buffer:int, depth:float, stencil:int) -> None: ... + def glClearNamedFramebufferfv(self, framebuffer:int, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearNamedFramebufferiv(self, framebuffer:int, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearNamedFramebufferuiv(self, framebuffer:int, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearStencil(self, s:int) -> None: ... + def glClearTexImage(self, texture:int, level:int, format:int, type:int, data:int) -> None: ... + def glClearTexSubImage(self, texture:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, data:int) -> None: ... + def glClientActiveTexture(self, texture:int) -> None: ... + def glClipControl(self, origin:int, depth:int) -> None: ... + def glClipPlane(self, plane:int, equation:typing.Sequence) -> None: ... + def glColor3b(self, red:int, green:int, blue:int) -> None: ... + def glColor3bv(self, v:bytes) -> None: ... + def glColor3d(self, red:float, green:float, blue:float) -> None: ... + def glColor3dv(self, v:typing.Sequence) -> None: ... + def glColor3f(self, red:float, green:float, blue:float) -> None: ... + def glColor3fv(self, v:typing.Sequence) -> None: ... + def glColor3i(self, red:int, green:int, blue:int) -> None: ... + def glColor3iv(self, v:typing.Sequence) -> None: ... + def glColor3s(self, red:int, green:int, blue:int) -> None: ... + def glColor3sv(self, v:typing.Sequence) -> None: ... + def glColor3ub(self, red:int, green:int, blue:int) -> None: ... + def glColor3ubv(self, v:bytes) -> None: ... + def glColor3ui(self, red:int, green:int, blue:int) -> None: ... + def glColor3uiv(self, v:typing.Sequence) -> None: ... + def glColor3us(self, red:int, green:int, blue:int) -> None: ... + def glColor3usv(self, v:typing.Sequence) -> None: ... + def glColor4b(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4bv(self, v:bytes) -> None: ... + def glColor4d(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4dv(self, v:typing.Sequence) -> None: ... + def glColor4f(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glColor4fv(self, v:typing.Sequence) -> None: ... + def glColor4i(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4iv(self, v:typing.Sequence) -> None: ... + def glColor4s(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4sv(self, v:typing.Sequence) -> None: ... + def glColor4ub(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4ubv(self, v:bytes) -> None: ... + def glColor4ui(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4uiv(self, v:typing.Sequence) -> None: ... + def glColor4us(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColor4usv(self, v:typing.Sequence) -> None: ... + def glColorMask(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColorMaski(self, index:int, r:int, g:int, b:int, a:int) -> None: ... + def glColorMaterial(self, face:int, mode:int) -> None: ... + def glColorP3ui(self, type:int, color:int) -> None: ... + def glColorP3uiv(self, type:int, color:typing.Sequence) -> None: ... + def glColorP4ui(self, type:int, color:int) -> None: ... + def glColorP4uiv(self, type:int, color:typing.Sequence) -> None: ... + def glColorPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glColorSubTable(self, target:int, start:int, count:int, format:int, type:int, data:int) -> None: ... + def glColorTable(self, target:int, internalformat:int, width:int, format:int, type:int, table:int) -> None: ... + def glColorTableParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glColorTableParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glCompileShader(self, shader:int) -> None: ... + def glCompressedTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTextureSubImage1D(self, texture:int, level:int, xoffset:int, width:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTextureSubImage2D(self, texture:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTextureSubImage3D(self, texture:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, imageSize:int, data:int) -> None: ... + def glConvolutionFilter1D(self, target:int, internalformat:int, width:int, format:int, type:int, image:int) -> None: ... + def glConvolutionFilter2D(self, target:int, internalformat:int, width:int, height:int, format:int, type:int, image:int) -> None: ... + def glConvolutionParameterf(self, target:int, pname:int, params:float) -> None: ... + def glConvolutionParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glConvolutionParameteri(self, target:int, pname:int, params:int) -> None: ... + def glConvolutionParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glCopyColorSubTable(self, target:int, start:int, x:int, y:int, width:int) -> None: ... + def glCopyColorTable(self, target:int, internalformat:int, x:int, y:int, width:int) -> None: ... + def glCopyConvolutionFilter1D(self, target:int, internalformat:int, x:int, y:int, width:int) -> None: ... + def glCopyConvolutionFilter2D(self, target:int, internalformat:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyImageSubData(self, srcName:int, srcTarget:int, srcLevel:int, srcX:int, srcY:int, srcZ:int, dstName:int, dstTarget:int, dstLevel:int, dstX:int, dstY:int, dstZ:int, srcWidth:int, srcHeight:int, srcDepth:int) -> None: ... + def glCopyPixels(self, x:int, y:int, width:int, height:int, type:int) -> None: ... + def glCopyTexImage1D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, border:int) -> None: ... + def glCopyTexImage2D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, height:int, border:int) -> None: ... + def glCopyTexSubImage1D(self, target:int, level:int, xoffset:int, x:int, y:int, width:int) -> None: ... + def glCopyTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyTextureSubImage1D(self, texture:int, level:int, xoffset:int, x:int, y:int, width:int) -> None: ... + def glCopyTextureSubImage2D(self, texture:int, level:int, xoffset:int, yoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyTextureSubImage3D(self, texture:int, level:int, xoffset:int, yoffset:int, zoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCreateProgram(self) -> int: ... + def glCreateShader(self, type:int) -> int: ... + def glCullFace(self, mode:int) -> None: ... + def glDebugMessageControl(self, source:int, type:int, severity:int, count:int, ids:typing.Sequence, enabled:int) -> None: ... + def glDebugMessageInsert(self, source:int, type:int, id:int, severity:int, length:int, buf:bytes) -> None: ... + def glDeleteBuffers(self, n:int, buffers:typing.Sequence) -> None: ... + def glDeleteFramebuffers(self, n:int, framebuffers:typing.Sequence) -> None: ... + def glDeleteLists(self, list:int, range:int) -> None: ... + def glDeleteProgram(self, program:int) -> None: ... + def glDeleteProgramPipelines(self, n:int, pipelines:typing.Sequence) -> None: ... + def glDeleteQueries(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteRenderbuffers(self, n:int, renderbuffers:typing.Sequence) -> None: ... + def glDeleteSamplers(self, count:int, samplers:typing.Sequence) -> None: ... + def glDeleteShader(self, shader:int) -> None: ... + def glDeleteTextures(self, n:int, textures:typing.Sequence) -> None: ... + def glDeleteTransformFeedbacks(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteVertexArrays(self, n:int, arrays:typing.Sequence) -> None: ... + def glDepthFunc(self, func:int) -> None: ... + def glDepthMask(self, flag:int) -> None: ... + def glDepthRange(self, nearVal:float, farVal:float) -> None: ... + def glDepthRangeArrayv(self, first:int, count:int, v:typing.Sequence) -> None: ... + def glDepthRangeIndexed(self, index:int, n:float, f:float) -> None: ... + def glDepthRangef(self, n:float, f:float) -> None: ... + def glDetachShader(self, program:int, shader:int) -> None: ... + def glDisable(self, cap:int) -> None: ... + def glDisableClientState(self, array:int) -> None: ... + def glDisableVertexArrayAttrib(self, vaobj:int, index:int) -> None: ... + def glDisableVertexAttribArray(self, index:int) -> None: ... + def glDisablei(self, target:int, index:int) -> None: ... + def glDispatchCompute(self, num_groups_x:int, num_groups_y:int, num_groups_z:int) -> None: ... + def glDrawArrays(self, mode:int, first:int, count:int) -> None: ... + def glDrawArraysIndirect(self, mode:int, indirect:int) -> None: ... + def glDrawArraysInstanced(self, mode:int, first:int, count:int, instancecount:int) -> None: ... + def glDrawArraysInstancedBaseInstance(self, mode:int, first:int, count:int, instancecount:int, baseinstance:int) -> None: ... + def glDrawBuffer(self, buf:int) -> None: ... + def glDrawBuffers(self, n:int, bufs:typing.Sequence) -> None: ... + def glDrawElements(self, mode:int, count:int, type:int, indices:int) -> None: ... + def glDrawElementsBaseVertex(self, mode:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glDrawElementsIndirect(self, mode:int, type:int, indirect:int) -> None: ... + def glDrawElementsInstanced(self, mode:int, count:int, type:int, indices:int, instancecount:int) -> None: ... + def glDrawElementsInstancedBaseInstance(self, mode:int, count:int, type:int, indices:int, instancecount:int, baseinstance:int) -> None: ... + def glDrawElementsInstancedBaseVertex(self, mode:int, count:int, type:int, indices:int, instancecount:int, basevertex:int) -> None: ... + def glDrawElementsInstancedBaseVertexBaseInstance(self, mode:int, count:int, type:int, indices:int, instancecount:int, basevertex:int, baseinstance:int) -> None: ... + def glDrawPixels(self, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glDrawRangeElements(self, mode:int, start:int, end:int, count:int, type:int, indices:int) -> None: ... + def glDrawRangeElementsBaseVertex(self, mode:int, start:int, end:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glDrawTransformFeedback(self, mode:int, id:int) -> None: ... + def glDrawTransformFeedbackInstanced(self, mode:int, id:int, instancecount:int) -> None: ... + def glDrawTransformFeedbackStream(self, mode:int, id:int, stream:int) -> None: ... + def glDrawTransformFeedbackStreamInstanced(self, mode:int, id:int, stream:int, instancecount:int) -> None: ... + def glEdgeFlag(self, flag:int) -> None: ... + def glEdgeFlagPointer(self, stride:int, pointer:int) -> None: ... + def glEnable(self, cap:int) -> None: ... + def glEnableClientState(self, array:int) -> None: ... + def glEnableVertexArrayAttrib(self, vaobj:int, index:int) -> None: ... + def glEnableVertexAttribArray(self, index:int) -> None: ... + def glEnablei(self, target:int, index:int) -> None: ... + def glEnd(self) -> None: ... + def glEndConditionalRender(self) -> None: ... + def glEndList(self) -> None: ... + def glEndQuery(self, target:int) -> None: ... + def glEndQueryIndexed(self, target:int, index:int) -> None: ... + def glEndTransformFeedback(self) -> None: ... + def glEvalCoord1d(self, u:float) -> None: ... + def glEvalCoord1dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord1f(self, u:float) -> None: ... + def glEvalCoord1fv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2d(self, u:float, v:float) -> None: ... + def glEvalCoord2dv(self, u:typing.Sequence) -> None: ... + def glEvalCoord2f(self, u:float, v:float) -> None: ... + def glEvalCoord2fv(self, u:typing.Sequence) -> None: ... + def glEvalMesh1(self, mode:int, i1:int, i2:int) -> None: ... + def glEvalMesh2(self, mode:int, i1:int, i2:int, j1:int, j2:int) -> None: ... + def glEvalPoint1(self, i:int) -> None: ... + def glEvalPoint2(self, i:int, j:int) -> None: ... + def glFinish(self) -> None: ... + def glFlush(self) -> None: ... + def glFogCoordPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glFogCoordd(self, coord:float) -> None: ... + def glFogCoorddv(self, coord:typing.Sequence) -> None: ... + def glFogCoordf(self, coord:float) -> None: ... + def glFogCoordfv(self, coord:typing.Sequence) -> None: ... + def glFogf(self, pname:int, param:float) -> None: ... + def glFogfv(self, pname:int, params:typing.Sequence) -> None: ... + def glFogi(self, pname:int, param:int) -> None: ... + def glFogiv(self, pname:int, params:typing.Sequence) -> None: ... + def glFramebufferParameteri(self, target:int, pname:int, param:int) -> None: ... + def glFramebufferRenderbuffer(self, target:int, attachment:int, renderbuffertarget:int, renderbuffer:int) -> None: ... + def glFramebufferTexture(self, target:int, attachment:int, texture:int, level:int) -> None: ... + def glFramebufferTexture1D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture2D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture3D(self, target:int, attachment:int, textarget:int, texture:int, level:int, zoffset:int) -> None: ... + def glFramebufferTextureLayer(self, target:int, attachment:int, texture:int, level:int, layer:int) -> None: ... + def glFrontFace(self, mode:int) -> None: ... + def glFrustum(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glGenLists(self, range:int) -> int: ... + def glGenerateMipmap(self, target:int) -> None: ... + def glGenerateTextureMipmap(self, texture:int) -> None: ... + def glGetAttribLocation(self, program:int, name:bytes) -> int: ... + def glGetColorTable(self, target:int, format:int, type:int, table:int) -> None: ... + def glGetCompressedTexImage(self, target:int, level:int, img:int) -> None: ... + def glGetCompressedTextureImage(self, texture:int, level:int, bufSize:int, pixels:int) -> None: ... + def glGetCompressedTextureSubImage(self, texture:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, bufSize:int, pixels:int) -> None: ... + def glGetConvolutionFilter(self, target:int, format:int, type:int, image:int) -> None: ... + def glGetError(self) -> int: ... + def glGetFragDataIndex(self, program:int, name:bytes) -> int: ... + def glGetFragDataLocation(self, program:int, name:bytes) -> int: ... + def glGetGraphicsResetStatus(self) -> int: ... + def glGetHistogram(self, target:int, reset:int, format:int, type:int, values:int) -> None: ... + def glGetMinmax(self, target:int, reset:int, format:int, type:int, values:int) -> None: ... + def glGetProgramResourceIndex(self, program:int, programInterface:int, name:bytes) -> int: ... + def glGetProgramResourceLocation(self, program:int, programInterface:int, name:bytes) -> int: ... + def glGetProgramResourceLocationIndex(self, program:int, programInterface:int, name:bytes) -> int: ... + def glGetSeparableFilter(self, target:int, format:int, type:int, row:int, column:int, span:int) -> None: ... + def glGetString(self, name:int) -> bytes: ... + def glGetStringi(self, name:int, index:int) -> bytes: ... + def glGetSubroutineIndex(self, program:int, shadertype:int, name:bytes) -> int: ... + def glGetSubroutineUniformLocation(self, program:int, shadertype:int, name:bytes) -> int: ... + def glGetTexImage(self, target:int, level:int, format:int, type:int, pixels:int) -> None: ... + def glGetTextureImage(self, texture:int, level:int, format:int, type:int, bufSize:int, pixels:int) -> None: ... + def glGetTextureSubImage(self, texture:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, bufSize:int, pixels:int) -> None: ... + def glGetUniformBlockIndex(self, program:int, uniformBlockName:bytes) -> int: ... + def glGetUniformLocation(self, program:int, name:bytes) -> int: ... + def glGetnColorTable(self, target:int, format:int, type:int, bufSize:int, table:int) -> None: ... + def glGetnCompressedTexImage(self, target:int, lod:int, bufSize:int, pixels:int) -> None: ... + def glGetnConvolutionFilter(self, target:int, format:int, type:int, bufSize:int, image:int) -> None: ... + def glGetnHistogram(self, target:int, reset:int, format:int, type:int, bufSize:int, values:int) -> None: ... + def glGetnMinmax(self, target:int, reset:int, format:int, type:int, bufSize:int, values:int) -> None: ... + def glGetnSeparableFilter(self, target:int, format:int, type:int, rowBufSize:int, row:int, columnBufSize:int, column:int, span:int) -> None: ... + def glGetnTexImage(self, target:int, level:int, format:int, type:int, bufSize:int, pixels:int) -> None: ... + def glHint(self, target:int, mode:int) -> None: ... + def glHistogram(self, target:int, width:int, internalformat:int, sink:int) -> None: ... + def glIndexMask(self, mask:int) -> None: ... + def glIndexPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glIndexd(self, c:float) -> None: ... + def glIndexdv(self, c:typing.Sequence) -> None: ... + def glIndexf(self, c:float) -> None: ... + def glIndexfv(self, c:typing.Sequence) -> None: ... + def glIndexi(self, c:int) -> None: ... + def glIndexiv(self, c:typing.Sequence) -> None: ... + def glIndexs(self, c:int) -> None: ... + def glIndexsv(self, c:typing.Sequence) -> None: ... + def glIndexub(self, c:int) -> None: ... + def glIndexubv(self, c:bytes) -> None: ... + def glInitNames(self) -> None: ... + def glInterleavedArrays(self, format:int, stride:int, pointer:int) -> None: ... + def glInvalidateBufferData(self, buffer:int) -> None: ... + def glInvalidateFramebuffer(self, target:int, numAttachments:int, attachments:typing.Sequence) -> None: ... + def glInvalidateNamedFramebufferData(self, framebuffer:int, numAttachments:int, attachments:typing.Sequence) -> None: ... + def glInvalidateNamedFramebufferSubData(self, framebuffer:int, numAttachments:int, attachments:typing.Sequence, x:int, y:int, width:int, height:int) -> None: ... + def glInvalidateSubFramebuffer(self, target:int, numAttachments:int, attachments:typing.Sequence, x:int, y:int, width:int, height:int) -> None: ... + def glInvalidateTexImage(self, texture:int, level:int) -> None: ... + def glInvalidateTexSubImage(self, texture:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int) -> None: ... + def glIsBuffer(self, buffer:int) -> int: ... + def glIsEnabled(self, cap:int) -> int: ... + def glIsEnabledi(self, target:int, index:int) -> int: ... + def glIsFramebuffer(self, framebuffer:int) -> int: ... + def glIsList(self, list:int) -> int: ... + def glIsProgram(self, program:int) -> int: ... + def glIsProgramPipeline(self, pipeline:int) -> int: ... + def glIsQuery(self, id:int) -> int: ... + def glIsRenderbuffer(self, renderbuffer:int) -> int: ... + def glIsSampler(self, sampler:int) -> int: ... + def glIsShader(self, shader:int) -> int: ... + def glIsTexture(self, texture:int) -> int: ... + def glIsTransformFeedback(self, id:int) -> int: ... + def glIsVertexArray(self, array:int) -> int: ... + def glLightModelf(self, pname:int, param:float) -> None: ... + def glLightModelfv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightModeli(self, pname:int, param:int) -> None: ... + def glLightModeliv(self, pname:int, params:typing.Sequence) -> None: ... + def glLightf(self, light:int, pname:int, param:float) -> None: ... + def glLightfv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLighti(self, light:int, pname:int, param:int) -> None: ... + def glLightiv(self, light:int, pname:int, params:typing.Sequence) -> None: ... + def glLineStipple(self, factor:int, pattern:int) -> None: ... + def glLineWidth(self, width:float) -> None: ... + def glLinkProgram(self, program:int) -> None: ... + def glListBase(self, base:int) -> None: ... + def glLoadIdentity(self) -> None: ... + def glLoadMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadMatrixf(self, m:typing.Sequence) -> None: ... + def glLoadName(self, name:int) -> None: ... + def glLoadTransposeMatrixd(self, m:typing.Sequence) -> None: ... + def glLoadTransposeMatrixf(self, m:typing.Sequence) -> None: ... + def glLogicOp(self, opcode:int) -> None: ... + def glMap1d(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap1f(self, target:int, u1:float, u2:float, stride:int, order:int, points:typing.Sequence) -> None: ... + def glMap2d(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMap2f(self, target:int, u1:float, u2:float, ustride:int, uorder:int, v1:float, v2:float, vstride:int, vorder:int, points:typing.Sequence) -> None: ... + def glMapBuffer(self, target:int, access:int) -> int: ... + def glMapGrid1d(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid1f(self, un:int, u1:float, u2:float) -> None: ... + def glMapGrid2d(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMapGrid2f(self, un:int, u1:float, u2:float, vn:int, v1:float, v2:float) -> None: ... + def glMapNamedBuffer(self, buffer:int, access:int) -> int: ... + def glMaterialf(self, face:int, pname:int, param:float) -> None: ... + def glMaterialfv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMateriali(self, face:int, pname:int, param:int) -> None: ... + def glMaterialiv(self, face:int, pname:int, params:typing.Sequence) -> None: ... + def glMatrixMode(self, mode:int) -> None: ... + def glMemoryBarrier(self, barriers:int) -> None: ... + def glMemoryBarrierByRegion(self, barriers:int) -> None: ... + def glMinSampleShading(self, value:float) -> None: ... + def glMinmax(self, target:int, internalformat:int, sink:int) -> None: ... + def glMultMatrixd(self, m:typing.Sequence) -> None: ... + def glMultMatrixf(self, m:typing.Sequence) -> None: ... + def glMultTransposeMatrixd(self, m:typing.Sequence) -> None: ... + def glMultTransposeMatrixf(self, m:typing.Sequence) -> None: ... + def glMultiDrawArrays(self, mode:int, first:typing.Sequence, count:typing.Sequence, drawcount:int) -> None: ... + def glMultiDrawArraysIndirect(self, mode:int, indirect:int, drawcount:int, stride:int) -> None: ... + def glMultiTexCoord1d(self, target:int, s:float) -> None: ... + def glMultiTexCoord1dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1f(self, target:int, s:float) -> None: ... + def glMultiTexCoord1fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1i(self, target:int, s:int) -> None: ... + def glMultiTexCoord1iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord1s(self, target:int, s:int) -> None: ... + def glMultiTexCoord1sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2d(self, target:int, s:float, t:float) -> None: ... + def glMultiTexCoord2dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2f(self, target:int, s:float, t:float) -> None: ... + def glMultiTexCoord2fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2i(self, target:int, s:int, t:int) -> None: ... + def glMultiTexCoord2iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord2s(self, target:int, s:int, t:int) -> None: ... + def glMultiTexCoord2sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3d(self, target:int, s:float, t:float, r:float) -> None: ... + def glMultiTexCoord3dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3f(self, target:int, s:float, t:float, r:float) -> None: ... + def glMultiTexCoord3fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3i(self, target:int, s:int, t:int, r:int) -> None: ... + def glMultiTexCoord3iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord3s(self, target:int, s:int, t:int, r:int) -> None: ... + def glMultiTexCoord3sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4d(self, target:int, s:float, t:float, r:float, q:float) -> None: ... + def glMultiTexCoord4dv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4f(self, target:int, s:float, t:float, r:float, q:float) -> None: ... + def glMultiTexCoord4fv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4i(self, target:int, s:int, t:int, r:int, q:int) -> None: ... + def glMultiTexCoord4iv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoord4s(self, target:int, s:int, t:int, r:int, q:int) -> None: ... + def glMultiTexCoord4sv(self, target:int, v:typing.Sequence) -> None: ... + def glMultiTexCoordP1ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP1uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP2ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP2uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP3ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP3uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glMultiTexCoordP4ui(self, texture:int, type:int, coords:int) -> None: ... + def glMultiTexCoordP4uiv(self, texture:int, type:int, coords:typing.Sequence) -> None: ... + def glNamedBufferData(self, buffer:int, size:int, data:int, usage:int) -> None: ... + def glNamedBufferStorage(self, buffer:int, size:int, data:int, flags:int) -> None: ... + def glNamedFramebufferDrawBuffer(self, framebuffer:int, buf:int) -> None: ... + def glNamedFramebufferDrawBuffers(self, framebuffer:int, n:int, bufs:typing.Sequence) -> None: ... + def glNamedFramebufferParameteri(self, framebuffer:int, pname:int, param:int) -> None: ... + def glNamedFramebufferReadBuffer(self, framebuffer:int, src:int) -> None: ... + def glNamedFramebufferRenderbuffer(self, framebuffer:int, attachment:int, renderbuffertarget:int, renderbuffer:int) -> None: ... + def glNamedFramebufferTexture(self, framebuffer:int, attachment:int, texture:int, level:int) -> None: ... + def glNamedFramebufferTextureLayer(self, framebuffer:int, attachment:int, texture:int, level:int, layer:int) -> None: ... + def glNamedRenderbufferStorage(self, renderbuffer:int, internalformat:int, width:int, height:int) -> None: ... + def glNamedRenderbufferStorageMultisample(self, renderbuffer:int, samples:int, internalformat:int, width:int, height:int) -> None: ... + def glNewList(self, list:int, mode:int) -> None: ... + def glNormal3b(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3bv(self, v:bytes) -> None: ... + def glNormal3d(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3dv(self, v:typing.Sequence) -> None: ... + def glNormal3f(self, nx:float, ny:float, nz:float) -> None: ... + def glNormal3fv(self, v:typing.Sequence) -> None: ... + def glNormal3i(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3iv(self, v:typing.Sequence) -> None: ... + def glNormal3s(self, nx:int, ny:int, nz:int) -> None: ... + def glNormal3sv(self, v:typing.Sequence) -> None: ... + def glNormalP3ui(self, type:int, coords:int) -> None: ... + def glNormalP3uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glNormalPointer(self, type:int, stride:int, pointer:int) -> None: ... + def glObjectLabel(self, identifier:int, name:int, length:int, label:bytes) -> None: ... + def glObjectPtrLabel(self, ptr:int, length:int, label:bytes) -> None: ... + def glOrtho(self, left:float, right:float, bottom:float, top:float, zNear:float, zFar:float) -> None: ... + def glPassThrough(self, token:float) -> None: ... + def glPatchParameterfv(self, pname:int, values:typing.Sequence) -> None: ... + def glPatchParameteri(self, pname:int, value:int) -> None: ... + def glPauseTransformFeedback(self) -> None: ... + def glPixelMapfv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapuiv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelMapusv(self, map:int, mapsize:int, values:typing.Sequence) -> None: ... + def glPixelStoref(self, pname:int, param:float) -> None: ... + def glPixelStorei(self, pname:int, param:int) -> None: ... + def glPixelTransferf(self, pname:int, param:float) -> None: ... + def glPixelTransferi(self, pname:int, param:int) -> None: ... + def glPixelZoom(self, xfactor:float, yfactor:float) -> None: ... + def glPointParameterf(self, pname:int, param:float) -> None: ... + def glPointParameterfv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointParameteri(self, pname:int, param:int) -> None: ... + def glPointParameteriv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointSize(self, size:float) -> None: ... + def glPolygonMode(self, face:int, mode:int) -> None: ... + def glPolygonOffset(self, factor:float, units:float) -> None: ... + def glPopAttrib(self) -> None: ... + def glPopClientAttrib(self) -> None: ... + def glPopDebugGroup(self) -> None: ... + def glPopMatrix(self) -> None: ... + def glPopName(self) -> None: ... + def glPrimitiveRestartIndex(self, index:int) -> None: ... + def glPrioritizeTextures(self, n:int, textures:typing.Sequence, priorities:typing.Sequence) -> None: ... + def glProgramBinary(self, program:int, binaryFormat:int, binary:int, length:int) -> None: ... + def glProgramParameteri(self, program:int, pname:int, value:int) -> None: ... + def glProgramUniform1d(self, program:int, location:int, v0:float) -> None: ... + def glProgramUniform1dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1f(self, program:int, location:int, v0:float) -> None: ... + def glProgramUniform1fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1i(self, program:int, location:int, v0:int) -> None: ... + def glProgramUniform1iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1ui(self, program:int, location:int, v0:int) -> None: ... + def glProgramUniform1uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2d(self, program:int, location:int, v0:float, v1:float) -> None: ... + def glProgramUniform2dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2f(self, program:int, location:int, v0:float, v1:float) -> None: ... + def glProgramUniform2fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2i(self, program:int, location:int, v0:int, v1:int) -> None: ... + def glProgramUniform2iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2ui(self, program:int, location:int, v0:int, v1:int) -> None: ... + def glProgramUniform2uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3d(self, program:int, location:int, v0:float, v1:float, v2:float) -> None: ... + def glProgramUniform3dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3f(self, program:int, location:int, v0:float, v1:float, v2:float) -> None: ... + def glProgramUniform3fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3i(self, program:int, location:int, v0:int, v1:int, v2:int) -> None: ... + def glProgramUniform3iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3ui(self, program:int, location:int, v0:int, v1:int, v2:int) -> None: ... + def glProgramUniform3uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4d(self, program:int, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glProgramUniform4dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4f(self, program:int, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glProgramUniform4fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4i(self, program:int, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glProgramUniform4iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4ui(self, program:int, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glProgramUniform4uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x3dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x4dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x2dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x4dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x2dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x3dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProvokingVertex(self, mode:int) -> None: ... + def glPushAttrib(self, mask:int) -> None: ... + def glPushClientAttrib(self, mask:int) -> None: ... + def glPushDebugGroup(self, source:int, id:int, length:int, message:bytes) -> None: ... + def glPushMatrix(self) -> None: ... + def glPushName(self, name:int) -> None: ... + def glQueryCounter(self, id:int, target:int) -> None: ... + def glRasterPos2d(self, x:float, y:float) -> None: ... + def glRasterPos2dv(self, v:typing.Sequence) -> None: ... + def glRasterPos2f(self, x:float, y:float) -> None: ... + def glRasterPos2fv(self, v:typing.Sequence) -> None: ... + def glRasterPos2i(self, x:int, y:int) -> None: ... + def glRasterPos2iv(self, v:typing.Sequence) -> None: ... + def glRasterPos2s(self, x:int, y:int) -> None: ... + def glRasterPos2sv(self, v:typing.Sequence) -> None: ... + def glRasterPos3d(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3dv(self, v:typing.Sequence) -> None: ... + def glRasterPos3f(self, x:float, y:float, z:float) -> None: ... + def glRasterPos3fv(self, v:typing.Sequence) -> None: ... + def glRasterPos3i(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3iv(self, v:typing.Sequence) -> None: ... + def glRasterPos3s(self, x:int, y:int, z:int) -> None: ... + def glRasterPos3sv(self, v:typing.Sequence) -> None: ... + def glRasterPos4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4dv(self, v:typing.Sequence) -> None: ... + def glRasterPos4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glRasterPos4fv(self, v:typing.Sequence) -> None: ... + def glRasterPos4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4iv(self, v:typing.Sequence) -> None: ... + def glRasterPos4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glRasterPos4sv(self, v:typing.Sequence) -> None: ... + def glReadBuffer(self, src:int) -> None: ... + def glReadPixels(self, x:int, y:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glReadnPixels(self, x:int, y:int, width:int, height:int, format:int, type:int, bufSize:int, data:int) -> None: ... + def glRectd(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectdv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRectf(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def glRectfv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRecti(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectiv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glRects(self, x1:int, y1:int, x2:int, y2:int) -> None: ... + def glRectsv(self, v1:typing.Sequence, v2:typing.Sequence) -> None: ... + def glReleaseShaderCompiler(self) -> None: ... + def glRenderMode(self, mode:int) -> int: ... + def glRenderbufferStorage(self, target:int, internalformat:int, width:int, height:int) -> None: ... + def glRenderbufferStorageMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int) -> None: ... + def glResetHistogram(self, target:int) -> None: ... + def glResetMinmax(self, target:int) -> None: ... + def glResumeTransformFeedback(self) -> None: ... + def glRotated(self, angle:float, x:float, y:float, z:float) -> None: ... + def glRotatef(self, angle:float, x:float, y:float, z:float) -> None: ... + def glSampleCoverage(self, value:float, invert:int) -> None: ... + def glSampleMaski(self, maskNumber:int, mask:int) -> None: ... + def glSamplerParameterIiv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameterIuiv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameterf(self, sampler:int, pname:int, param:float) -> None: ... + def glSamplerParameterfv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameteri(self, sampler:int, pname:int, param:int) -> None: ... + def glSamplerParameteriv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glScaled(self, x:float, y:float, z:float) -> None: ... + def glScalef(self, x:float, y:float, z:float) -> None: ... + def glScissor(self, x:int, y:int, width:int, height:int) -> None: ... + def glScissorArrayv(self, first:int, count:int, v:typing.Sequence) -> None: ... + def glScissorIndexed(self, index:int, left:int, bottom:int, width:int, height:int) -> None: ... + def glScissorIndexedv(self, index:int, v:typing.Sequence) -> None: ... + def glSecondaryColor3b(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3bv(self, v:bytes) -> None: ... + def glSecondaryColor3d(self, red:float, green:float, blue:float) -> None: ... + def glSecondaryColor3dv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3f(self, red:float, green:float, blue:float) -> None: ... + def glSecondaryColor3fv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3i(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3iv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3s(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3sv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3ub(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3ubv(self, v:bytes) -> None: ... + def glSecondaryColor3ui(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3uiv(self, v:typing.Sequence) -> None: ... + def glSecondaryColor3us(self, red:int, green:int, blue:int) -> None: ... + def glSecondaryColor3usv(self, v:typing.Sequence) -> None: ... + def glSecondaryColorP3ui(self, type:int, color:int) -> None: ... + def glSecondaryColorP3uiv(self, type:int, color:typing.Sequence) -> None: ... + def glSecondaryColorPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glSeparableFilter2D(self, target:int, internalformat:int, width:int, height:int, format:int, type:int, row:int, column:int) -> None: ... + def glShadeModel(self, mode:int) -> None: ... + def glShaderBinary(self, count:int, shaders:typing.Sequence, binaryformat:int, binary:int, length:int) -> None: ... + def glShaderStorageBlockBinding(self, program:int, storageBlockIndex:int, storageBlockBinding:int) -> None: ... + def glStencilFunc(self, func:int, ref:int, mask:int) -> None: ... + def glStencilFuncSeparate(self, face:int, func:int, ref:int, mask:int) -> None: ... + def glStencilMask(self, mask:int) -> None: ... + def glStencilMaskSeparate(self, face:int, mask:int) -> None: ... + def glStencilOp(self, fail:int, zfail:int, zpass:int) -> None: ... + def glStencilOpSeparate(self, face:int, sfail:int, dpfail:int, dppass:int) -> None: ... + def glTexBuffer(self, target:int, internalformat:int, buffer:int) -> None: ... + def glTexCoord1d(self, s:float) -> None: ... + def glTexCoord1dv(self, v:typing.Sequence) -> None: ... + def glTexCoord1f(self, s:float) -> None: ... + def glTexCoord1fv(self, v:typing.Sequence) -> None: ... + def glTexCoord1i(self, s:int) -> None: ... + def glTexCoord1iv(self, v:typing.Sequence) -> None: ... + def glTexCoord1s(self, s:int) -> None: ... + def glTexCoord1sv(self, v:typing.Sequence) -> None: ... + def glTexCoord2d(self, s:float, t:float) -> None: ... + def glTexCoord2dv(self, v:typing.Sequence) -> None: ... + def glTexCoord2f(self, s:float, t:float) -> None: ... + def glTexCoord2fv(self, v:typing.Sequence) -> None: ... + def glTexCoord2i(self, s:int, t:int) -> None: ... + def glTexCoord2iv(self, v:typing.Sequence) -> None: ... + def glTexCoord2s(self, s:int, t:int) -> None: ... + def glTexCoord2sv(self, v:typing.Sequence) -> None: ... + def glTexCoord3d(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3dv(self, v:typing.Sequence) -> None: ... + def glTexCoord3f(self, s:float, t:float, r:float) -> None: ... + def glTexCoord3fv(self, v:typing.Sequence) -> None: ... + def glTexCoord3i(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3iv(self, v:typing.Sequence) -> None: ... + def glTexCoord3s(self, s:int, t:int, r:int) -> None: ... + def glTexCoord3sv(self, v:typing.Sequence) -> None: ... + def glTexCoord4d(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4dv(self, v:typing.Sequence) -> None: ... + def glTexCoord4f(self, s:float, t:float, r:float, q:float) -> None: ... + def glTexCoord4fv(self, v:typing.Sequence) -> None: ... + def glTexCoord4i(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4iv(self, v:typing.Sequence) -> None: ... + def glTexCoord4s(self, s:int, t:int, r:int, q:int) -> None: ... + def glTexCoord4sv(self, v:typing.Sequence) -> None: ... + def glTexCoordP1ui(self, type:int, coords:int) -> None: ... + def glTexCoordP1uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP2ui(self, type:int, coords:int) -> None: ... + def glTexCoordP2uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP3ui(self, type:int, coords:int) -> None: ... + def glTexCoordP3uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordP4ui(self, type:int, coords:int) -> None: ... + def glTexCoordP4uiv(self, type:int, coords:typing.Sequence) -> None: ... + def glTexCoordPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glTexEnvf(self, target:int, pname:int, param:float) -> None: ... + def glTexEnvfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexEnvi(self, target:int, pname:int, param:int) -> None: ... + def glTexEnviv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGend(self, coord:int, pname:int, param:float) -> None: ... + def glTexGendv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGenf(self, coord:int, pname:int, param:float) -> None: ... + def glTexGenfv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexGeni(self, coord:int, pname:int, param:int) -> None: ... + def glTexGeniv(self, coord:int, pname:int, params:typing.Sequence) -> None: ... + def glTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, fixedsamplelocations:int) -> None: ... + def glTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage3DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, depth:int, fixedsamplelocations:int) -> None: ... + def glTexParameterIiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterIuiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterf(self, target:int, pname:int, param:float) -> None: ... + def glTexParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameteri(self, target:int, pname:int, param:int) -> None: ... + def glTexParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexStorage1D(self, target:int, levels:int, internalformat:int, width:int) -> None: ... + def glTexStorage2D(self, target:int, levels:int, internalformat:int, width:int, height:int) -> None: ... + def glTexStorage2DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, fixedsamplelocations:int) -> None: ... + def glTexStorage3D(self, target:int, levels:int, internalformat:int, width:int, height:int, depth:int) -> None: ... + def glTexStorage3DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, depth:int, fixedsamplelocations:int) -> None: ... + def glTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, pixels:int) -> None: ... + def glTextureBarrier(self) -> None: ... + def glTextureBuffer(self, texture:int, internalformat:int, buffer:int) -> None: ... + def glTextureParameterIiv(self, texture:int, pname:int, params:typing.Sequence) -> None: ... + def glTextureParameterIuiv(self, texture:int, pname:int, params:typing.Sequence) -> None: ... + def glTextureParameterf(self, texture:int, pname:int, param:float) -> None: ... + def glTextureParameterfv(self, texture:int, pname:int, param:typing.Sequence) -> None: ... + def glTextureParameteri(self, texture:int, pname:int, param:int) -> None: ... + def glTextureParameteriv(self, texture:int, pname:int, param:typing.Sequence) -> None: ... + def glTextureStorage1D(self, texture:int, levels:int, internalformat:int, width:int) -> None: ... + def glTextureStorage2D(self, texture:int, levels:int, internalformat:int, width:int, height:int) -> None: ... + def glTextureStorage2DMultisample(self, texture:int, samples:int, internalformat:int, width:int, height:int, fixedsamplelocations:int) -> None: ... + def glTextureStorage3D(self, texture:int, levels:int, internalformat:int, width:int, height:int, depth:int) -> None: ... + def glTextureStorage3DMultisample(self, texture:int, samples:int, internalformat:int, width:int, height:int, depth:int, fixedsamplelocations:int) -> None: ... + def glTextureSubImage1D(self, texture:int, level:int, xoffset:int, width:int, format:int, type:int, pixels:int) -> None: ... + def glTextureSubImage2D(self, texture:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glTextureSubImage3D(self, texture:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, pixels:int) -> None: ... + def glTextureView(self, texture:int, target:int, origtexture:int, internalformat:int, minlevel:int, numlevels:int, minlayer:int, numlayers:int) -> None: ... + def glTransformFeedbackBufferBase(self, xfb:int, index:int, buffer:int) -> None: ... + def glTranslated(self, x:float, y:float, z:float) -> None: ... + def glTranslatef(self, x:float, y:float, z:float) -> None: ... + def glUniform1d(self, location:int, x:float) -> None: ... + def glUniform1dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1f(self, location:int, v0:float) -> None: ... + def glUniform1fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1i(self, location:int, v0:int) -> None: ... + def glUniform1iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1ui(self, location:int, v0:int) -> None: ... + def glUniform1uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2d(self, location:int, x:float, y:float) -> None: ... + def glUniform2dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2f(self, location:int, v0:float, v1:float) -> None: ... + def glUniform2fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2i(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2ui(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3d(self, location:int, x:float, y:float, z:float) -> None: ... + def glUniform3dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3f(self, location:int, v0:float, v1:float, v2:float) -> None: ... + def glUniform3fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3i(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3ui(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4d(self, location:int, x:float, y:float, z:float, w:float) -> None: ... + def glUniform4dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4f(self, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glUniform4fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4i(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4ui(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniformBlockBinding(self, program:int, uniformBlockIndex:int, uniformBlockBinding:int) -> None: ... + def glUniformMatrix2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformSubroutinesuiv(self, shadertype:int, count:int, indices:typing.Sequence) -> None: ... + def glUnmapBuffer(self, target:int) -> int: ... + def glUnmapNamedBuffer(self, buffer:int) -> int: ... + def glUseProgram(self, program:int) -> None: ... + def glUseProgramStages(self, pipeline:int, stages:int, program:int) -> None: ... + def glValidateProgram(self, program:int) -> None: ... + def glValidateProgramPipeline(self, pipeline:int) -> None: ... + def glVertex2d(self, x:float, y:float) -> None: ... + def glVertex2dv(self, v:typing.Sequence) -> None: ... + def glVertex2f(self, x:float, y:float) -> None: ... + def glVertex2fv(self, v:typing.Sequence) -> None: ... + def glVertex2i(self, x:int, y:int) -> None: ... + def glVertex2iv(self, v:typing.Sequence) -> None: ... + def glVertex2s(self, x:int, y:int) -> None: ... + def glVertex2sv(self, v:typing.Sequence) -> None: ... + def glVertex3d(self, x:float, y:float, z:float) -> None: ... + def glVertex3dv(self, v:typing.Sequence) -> None: ... + def glVertex3f(self, x:float, y:float, z:float) -> None: ... + def glVertex3fv(self, v:typing.Sequence) -> None: ... + def glVertex3i(self, x:int, y:int, z:int) -> None: ... + def glVertex3iv(self, v:typing.Sequence) -> None: ... + def glVertex3s(self, x:int, y:int, z:int) -> None: ... + def glVertex3sv(self, v:typing.Sequence) -> None: ... + def glVertex4d(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4dv(self, v:typing.Sequence) -> None: ... + def glVertex4f(self, x:float, y:float, z:float, w:float) -> None: ... + def glVertex4fv(self, v:typing.Sequence) -> None: ... + def glVertex4i(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4iv(self, v:typing.Sequence) -> None: ... + def glVertex4s(self, x:int, y:int, z:int, w:int) -> None: ... + def glVertex4sv(self, v:typing.Sequence) -> None: ... + def glVertexArrayAttribBinding(self, vaobj:int, attribindex:int, bindingindex:int) -> None: ... + def glVertexArrayAttribFormat(self, vaobj:int, attribindex:int, size:int, type:int, normalized:int, relativeoffset:int) -> None: ... + def glVertexArrayAttribIFormat(self, vaobj:int, attribindex:int, size:int, type:int, relativeoffset:int) -> None: ... + def glVertexArrayAttribLFormat(self, vaobj:int, attribindex:int, size:int, type:int, relativeoffset:int) -> None: ... + def glVertexArrayBindingDivisor(self, vaobj:int, bindingindex:int, divisor:int) -> None: ... + def glVertexArrayElementBuffer(self, vaobj:int, buffer:int) -> None: ... + def glVertexArrayVertexBuffers(self, vaobj:int, first:int, count:int) -> typing.Tuple: ... + def glVertexAttrib1d(self, index:int, x:float) -> None: ... + def glVertexAttrib1dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib1f(self, index:int, x:float) -> None: ... + def glVertexAttrib1fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib1s(self, index:int, x:int) -> None: ... + def glVertexAttrib1sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2d(self, index:int, x:float, y:float) -> None: ... + def glVertexAttrib2dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2f(self, index:int, x:float, y:float) -> None: ... + def glVertexAttrib2fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2s(self, index:int, x:int, y:int) -> None: ... + def glVertexAttrib2sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3d(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttrib3dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3f(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttrib3fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3s(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttrib3sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nbv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4Niv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nsv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nub(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttrib4Nubv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4Nuiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nusv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4bv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4d(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttrib4dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4f(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttrib4fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4s(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttrib4sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4ubv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4usv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribBinding(self, attribindex:int, bindingindex:int) -> None: ... + def glVertexAttribDivisor(self, index:int, divisor:int) -> None: ... + def glVertexAttribFormat(self, attribindex:int, size:int, type:int, normalized:int, relativeoffset:int) -> None: ... + def glVertexAttribI1i(self, index:int, x:int) -> None: ... + def glVertexAttribI1iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI1ui(self, index:int, x:int) -> None: ... + def glVertexAttribI1uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI2i(self, index:int, x:int, y:int) -> None: ... + def glVertexAttribI2iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI2ui(self, index:int, x:int, y:int) -> None: ... + def glVertexAttribI2uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI3i(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttribI3iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI3ui(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttribI3uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4bv(self, index:int, v:bytes) -> None: ... + def glVertexAttribI4i(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttribI4iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4ubv(self, index:int, v:bytes) -> None: ... + def glVertexAttribI4ui(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttribI4uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4usv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribIFormat(self, attribindex:int, size:int, type:int, relativeoffset:int) -> None: ... + def glVertexAttribIPointer(self, index:int, size:int, type:int, stride:int, pointer:int) -> None: ... + def glVertexAttribL1d(self, index:int, x:float) -> None: ... + def glVertexAttribL1dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribL2d(self, index:int, x:float, y:float) -> None: ... + def glVertexAttribL2dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribL3d(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttribL3dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribL4d(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttribL4dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribLFormat(self, attribindex:int, size:int, type:int, relativeoffset:int) -> None: ... + def glVertexAttribLPointer(self, index:int, size:int, type:int, stride:int, pointer:int) -> None: ... + def glVertexAttribP1ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP1uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP2ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP2uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP3ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP3uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP4ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP4uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribPointer(self, index:int, size:int, type:int, normalized:int, stride:int, pointer:int) -> None: ... + def glVertexBindingDivisor(self, bindingindex:int, divisor:int) -> None: ... + def glVertexP2ui(self, type:int, value:int) -> None: ... + def glVertexP2uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexP3ui(self, type:int, value:int) -> None: ... + def glVertexP3uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexP4ui(self, type:int, value:int) -> None: ... + def glVertexP4uiv(self, type:int, value:typing.Sequence) -> None: ... + def glVertexPointer(self, size:int, type:int, stride:int, pointer:int) -> None: ... + def glViewport(self, x:int, y:int, width:int, height:int) -> None: ... + def glViewportArrayv(self, first:int, count:int, v:typing.Sequence) -> None: ... + def glViewportIndexedf(self, index:int, x:float, y:float, w:float, h:float) -> None: ... + def glViewportIndexedfv(self, index:int, v:typing.Sequence) -> None: ... + def glWindowPos2d(self, x:float, y:float) -> None: ... + def glWindowPos2dv(self, v:typing.Sequence) -> None: ... + def glWindowPos2f(self, x:float, y:float) -> None: ... + def glWindowPos2fv(self, v:typing.Sequence) -> None: ... + def glWindowPos2i(self, x:int, y:int) -> None: ... + def glWindowPos2iv(self, v:typing.Sequence) -> None: ... + def glWindowPos2s(self, x:int, y:int) -> None: ... + def glWindowPos2sv(self, v:typing.Sequence) -> None: ... + def glWindowPos3d(self, x:float, y:float, z:float) -> None: ... + def glWindowPos3dv(self, v:typing.Sequence) -> None: ... + def glWindowPos3f(self, x:float, y:float, z:float) -> None: ... + def glWindowPos3fv(self, v:typing.Sequence) -> None: ... + def glWindowPos3i(self, x:int, y:int, z:int) -> None: ... + def glWindowPos3iv(self, v:typing.Sequence) -> None: ... + def glWindowPos3s(self, x:int, y:int, z:int) -> None: ... + def glWindowPos3sv(self, v:typing.Sequence) -> None: ... + def initializeOpenGLFunctions(self) -> bool: ... + + +class QOpenGLFunctions_4_5_Core(PySide2.QtGui.QAbstractOpenGLFunctions): + + def __init__(self) -> None: ... + + def glActiveShaderProgram(self, pipeline:int, program:int) -> None: ... + def glActiveTexture(self, texture:int) -> None: ... + def glAttachShader(self, program:int, shader:int) -> None: ... + def glBeginConditionalRender(self, id:int, mode:int) -> None: ... + def glBeginQuery(self, target:int, id:int) -> None: ... + def glBeginQueryIndexed(self, target:int, index:int, id:int) -> None: ... + def glBeginTransformFeedback(self, primitiveMode:int) -> None: ... + def glBindAttribLocation(self, program:int, index:int, name:bytes) -> None: ... + def glBindBuffer(self, target:int, buffer:int) -> None: ... + def glBindBufferBase(self, target:int, index:int, buffer:int) -> None: ... + def glBindBuffersBase(self, target:int, first:int, count:int, buffers:typing.Sequence) -> None: ... + def glBindBuffersRange(self, target:int, first:int, count:int) -> typing.Tuple: ... + def glBindFragDataLocation(self, program:int, color:int, name:bytes) -> None: ... + def glBindFragDataLocationIndexed(self, program:int, colorNumber:int, index:int, name:bytes) -> None: ... + def glBindFramebuffer(self, target:int, framebuffer:int) -> None: ... + def glBindImageTexture(self, unit:int, texture:int, level:int, layered:int, layer:int, access:int, format:int) -> None: ... + def glBindImageTextures(self, first:int, count:int, textures:typing.Sequence) -> None: ... + def glBindProgramPipeline(self, pipeline:int) -> None: ... + def glBindRenderbuffer(self, target:int, renderbuffer:int) -> None: ... + def glBindSampler(self, unit:int, sampler:int) -> None: ... + def glBindSamplers(self, first:int, count:int, samplers:typing.Sequence) -> None: ... + def glBindTexture(self, target:int, texture:int) -> None: ... + def glBindTextureUnit(self, unit:int, texture:int) -> None: ... + def glBindTextures(self, first:int, count:int, textures:typing.Sequence) -> None: ... + def glBindTransformFeedback(self, target:int, id:int) -> None: ... + def glBindVertexArray(self, array:int) -> None: ... + def glBindVertexBuffers(self, first:int, count:int) -> typing.Tuple: ... + def glBlendColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glBlendEquation(self, mode:int) -> None: ... + def glBlendEquationSeparate(self, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendEquationSeparatei(self, buf:int, modeRGB:int, modeAlpha:int) -> None: ... + def glBlendEquationi(self, buf:int, mode:int) -> None: ... + def glBlendFunc(self, sfactor:int, dfactor:int) -> None: ... + def glBlendFuncSeparate(self, sfactorRGB:int, dfactorRGB:int, sfactorAlpha:int, dfactorAlpha:int) -> None: ... + def glBlendFuncSeparatei(self, buf:int, srcRGB:int, dstRGB:int, srcAlpha:int, dstAlpha:int) -> None: ... + def glBlendFunci(self, buf:int, src:int, dst:int) -> None: ... + def glBlitFramebuffer(self, srcX0:int, srcY0:int, srcX1:int, srcY1:int, dstX0:int, dstY0:int, dstX1:int, dstY1:int, mask:int, filter:int) -> None: ... + def glBlitNamedFramebuffer(self, readFramebuffer:int, drawFramebuffer:int, srcX0:int, srcY0:int, srcX1:int, srcY1:int, dstX0:int, dstY0:int, dstX1:int, dstY1:int, mask:int, filter:int) -> None: ... + def glCheckFramebufferStatus(self, target:int) -> int: ... + def glCheckNamedFramebufferStatus(self, framebuffer:int, target:int) -> int: ... + def glClampColor(self, target:int, clamp:int) -> None: ... + def glClear(self, mask:int) -> None: ... + def glClearBufferData(self, target:int, internalformat:int, format:int, type:int, data:int) -> None: ... + def glClearBufferfi(self, buffer:int, drawbuffer:int, depth:float, stencil:int) -> None: ... + def glClearBufferfv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearBufferuiv(self, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearColor(self, red:float, green:float, blue:float, alpha:float) -> None: ... + def glClearDepth(self, depth:float) -> None: ... + def glClearDepthf(self, dd:float) -> None: ... + def glClearNamedBufferData(self, buffer:int, internalformat:int, format:int, type:int, data:int) -> None: ... + def glClearNamedFramebufferfi(self, framebuffer:int, buffer:int, depth:float, stencil:int) -> None: ... + def glClearNamedFramebufferfv(self, framebuffer:int, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearNamedFramebufferiv(self, framebuffer:int, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearNamedFramebufferuiv(self, framebuffer:int, buffer:int, drawbuffer:int, value:typing.Sequence) -> None: ... + def glClearStencil(self, s:int) -> None: ... + def glClearTexImage(self, texture:int, level:int, format:int, type:int, data:int) -> None: ... + def glClearTexSubImage(self, texture:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, data:int) -> None: ... + def glClipControl(self, origin:int, depth:int) -> None: ... + def glColorMask(self, red:int, green:int, blue:int, alpha:int) -> None: ... + def glColorMaski(self, index:int, r:int, g:int, b:int, a:int) -> None: ... + def glCompileShader(self, shader:int) -> None: ... + def glCompressedTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTextureSubImage1D(self, texture:int, level:int, xoffset:int, width:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTextureSubImage2D(self, texture:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, imageSize:int, data:int) -> None: ... + def glCompressedTextureSubImage3D(self, texture:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, imageSize:int, data:int) -> None: ... + def glCopyImageSubData(self, srcName:int, srcTarget:int, srcLevel:int, srcX:int, srcY:int, srcZ:int, dstName:int, dstTarget:int, dstLevel:int, dstX:int, dstY:int, dstZ:int, srcWidth:int, srcHeight:int, srcDepth:int) -> None: ... + def glCopyTexImage1D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, border:int) -> None: ... + def glCopyTexImage2D(self, target:int, level:int, internalformat:int, x:int, y:int, width:int, height:int, border:int) -> None: ... + def glCopyTexSubImage1D(self, target:int, level:int, xoffset:int, x:int, y:int, width:int) -> None: ... + def glCopyTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyTextureSubImage1D(self, texture:int, level:int, xoffset:int, x:int, y:int, width:int) -> None: ... + def glCopyTextureSubImage2D(self, texture:int, level:int, xoffset:int, yoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCopyTextureSubImage3D(self, texture:int, level:int, xoffset:int, yoffset:int, zoffset:int, x:int, y:int, width:int, height:int) -> None: ... + def glCreateProgram(self) -> int: ... + def glCreateShader(self, type:int) -> int: ... + def glCullFace(self, mode:int) -> None: ... + def glDebugMessageControl(self, source:int, type:int, severity:int, count:int, ids:typing.Sequence, enabled:int) -> None: ... + def glDebugMessageInsert(self, source:int, type:int, id:int, severity:int, length:int, buf:bytes) -> None: ... + def glDeleteBuffers(self, n:int, buffers:typing.Sequence) -> None: ... + def glDeleteFramebuffers(self, n:int, framebuffers:typing.Sequence) -> None: ... + def glDeleteProgram(self, program:int) -> None: ... + def glDeleteProgramPipelines(self, n:int, pipelines:typing.Sequence) -> None: ... + def glDeleteQueries(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteRenderbuffers(self, n:int, renderbuffers:typing.Sequence) -> None: ... + def glDeleteSamplers(self, count:int, samplers:typing.Sequence) -> None: ... + def glDeleteShader(self, shader:int) -> None: ... + def glDeleteTextures(self, n:int, textures:typing.Sequence) -> None: ... + def glDeleteTransformFeedbacks(self, n:int, ids:typing.Sequence) -> None: ... + def glDeleteVertexArrays(self, n:int, arrays:typing.Sequence) -> None: ... + def glDepthFunc(self, func:int) -> None: ... + def glDepthMask(self, flag:int) -> None: ... + def glDepthRange(self, nearVal:float, farVal:float) -> None: ... + def glDepthRangeArrayv(self, first:int, count:int, v:typing.Sequence) -> None: ... + def glDepthRangeIndexed(self, index:int, n:float, f:float) -> None: ... + def glDepthRangef(self, n:float, f:float) -> None: ... + def glDetachShader(self, program:int, shader:int) -> None: ... + def glDisable(self, cap:int) -> None: ... + def glDisableVertexArrayAttrib(self, vaobj:int, index:int) -> None: ... + def glDisableVertexAttribArray(self, index:int) -> None: ... + def glDisablei(self, target:int, index:int) -> None: ... + def glDispatchCompute(self, num_groups_x:int, num_groups_y:int, num_groups_z:int) -> None: ... + def glDrawArrays(self, mode:int, first:int, count:int) -> None: ... + def glDrawArraysIndirect(self, mode:int, indirect:int) -> None: ... + def glDrawArraysInstanced(self, mode:int, first:int, count:int, instancecount:int) -> None: ... + def glDrawArraysInstancedBaseInstance(self, mode:int, first:int, count:int, instancecount:int, baseinstance:int) -> None: ... + def glDrawBuffer(self, buf:int) -> None: ... + def glDrawBuffers(self, n:int, bufs:typing.Sequence) -> None: ... + def glDrawElements(self, mode:int, count:int, type:int, indices:int) -> None: ... + def glDrawElementsBaseVertex(self, mode:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glDrawElementsIndirect(self, mode:int, type:int, indirect:int) -> None: ... + def glDrawElementsInstanced(self, mode:int, count:int, type:int, indices:int, instancecount:int) -> None: ... + def glDrawElementsInstancedBaseInstance(self, mode:int, count:int, type:int, indices:int, instancecount:int, baseinstance:int) -> None: ... + def glDrawElementsInstancedBaseVertex(self, mode:int, count:int, type:int, indices:int, instancecount:int, basevertex:int) -> None: ... + def glDrawElementsInstancedBaseVertexBaseInstance(self, mode:int, count:int, type:int, indices:int, instancecount:int, basevertex:int, baseinstance:int) -> None: ... + def glDrawRangeElements(self, mode:int, start:int, end:int, count:int, type:int, indices:int) -> None: ... + def glDrawRangeElementsBaseVertex(self, mode:int, start:int, end:int, count:int, type:int, indices:int, basevertex:int) -> None: ... + def glDrawTransformFeedback(self, mode:int, id:int) -> None: ... + def glDrawTransformFeedbackInstanced(self, mode:int, id:int, instancecount:int) -> None: ... + def glDrawTransformFeedbackStream(self, mode:int, id:int, stream:int) -> None: ... + def glDrawTransformFeedbackStreamInstanced(self, mode:int, id:int, stream:int, instancecount:int) -> None: ... + def glEnable(self, cap:int) -> None: ... + def glEnableVertexArrayAttrib(self, vaobj:int, index:int) -> None: ... + def glEnableVertexAttribArray(self, index:int) -> None: ... + def glEnablei(self, target:int, index:int) -> None: ... + def glEndConditionalRender(self) -> None: ... + def glEndQuery(self, target:int) -> None: ... + def glEndQueryIndexed(self, target:int, index:int) -> None: ... + def glEndTransformFeedback(self) -> None: ... + def glFinish(self) -> None: ... + def glFlush(self) -> None: ... + def glFramebufferParameteri(self, target:int, pname:int, param:int) -> None: ... + def glFramebufferRenderbuffer(self, target:int, attachment:int, renderbuffertarget:int, renderbuffer:int) -> None: ... + def glFramebufferTexture(self, target:int, attachment:int, texture:int, level:int) -> None: ... + def glFramebufferTexture1D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture2D(self, target:int, attachment:int, textarget:int, texture:int, level:int) -> None: ... + def glFramebufferTexture3D(self, target:int, attachment:int, textarget:int, texture:int, level:int, zoffset:int) -> None: ... + def glFramebufferTextureLayer(self, target:int, attachment:int, texture:int, level:int, layer:int) -> None: ... + def glFrontFace(self, mode:int) -> None: ... + def glGenerateMipmap(self, target:int) -> None: ... + def glGenerateTextureMipmap(self, texture:int) -> None: ... + def glGetAttribLocation(self, program:int, name:bytes) -> int: ... + def glGetCompressedTexImage(self, target:int, level:int, img:int) -> None: ... + def glGetCompressedTextureImage(self, texture:int, level:int, bufSize:int, pixels:int) -> None: ... + def glGetCompressedTextureSubImage(self, texture:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, bufSize:int, pixels:int) -> None: ... + def glGetError(self) -> int: ... + def glGetFragDataIndex(self, program:int, name:bytes) -> int: ... + def glGetFragDataLocation(self, program:int, name:bytes) -> int: ... + def glGetGraphicsResetStatus(self) -> int: ... + def glGetProgramResourceIndex(self, program:int, programInterface:int, name:bytes) -> int: ... + def glGetProgramResourceLocation(self, program:int, programInterface:int, name:bytes) -> int: ... + def glGetProgramResourceLocationIndex(self, program:int, programInterface:int, name:bytes) -> int: ... + def glGetString(self, name:int) -> bytes: ... + def glGetStringi(self, name:int, index:int) -> bytes: ... + def glGetSubroutineIndex(self, program:int, shadertype:int, name:bytes) -> int: ... + def glGetSubroutineUniformLocation(self, program:int, shadertype:int, name:bytes) -> int: ... + def glGetTexImage(self, target:int, level:int, format:int, type:int, pixels:int) -> None: ... + def glGetTextureImage(self, texture:int, level:int, format:int, type:int, bufSize:int, pixels:int) -> None: ... + def glGetTextureSubImage(self, texture:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, bufSize:int, pixels:int) -> None: ... + def glGetUniformBlockIndex(self, program:int, uniformBlockName:bytes) -> int: ... + def glGetUniformLocation(self, program:int, name:bytes) -> int: ... + def glGetnCompressedTexImage(self, target:int, lod:int, bufSize:int, pixels:int) -> None: ... + def glGetnTexImage(self, target:int, level:int, format:int, type:int, bufSize:int, pixels:int) -> None: ... + def glHint(self, target:int, mode:int) -> None: ... + def glInvalidateBufferData(self, buffer:int) -> None: ... + def glInvalidateFramebuffer(self, target:int, numAttachments:int, attachments:typing.Sequence) -> None: ... + def glInvalidateNamedFramebufferData(self, framebuffer:int, numAttachments:int, attachments:typing.Sequence) -> None: ... + def glInvalidateNamedFramebufferSubData(self, framebuffer:int, numAttachments:int, attachments:typing.Sequence, x:int, y:int, width:int, height:int) -> None: ... + def glInvalidateSubFramebuffer(self, target:int, numAttachments:int, attachments:typing.Sequence, x:int, y:int, width:int, height:int) -> None: ... + def glInvalidateTexImage(self, texture:int, level:int) -> None: ... + def glInvalidateTexSubImage(self, texture:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int) -> None: ... + def glIsBuffer(self, buffer:int) -> int: ... + def glIsEnabled(self, cap:int) -> int: ... + def glIsEnabledi(self, target:int, index:int) -> int: ... + def glIsFramebuffer(self, framebuffer:int) -> int: ... + def glIsProgram(self, program:int) -> int: ... + def glIsProgramPipeline(self, pipeline:int) -> int: ... + def glIsQuery(self, id:int) -> int: ... + def glIsRenderbuffer(self, renderbuffer:int) -> int: ... + def glIsSampler(self, sampler:int) -> int: ... + def glIsShader(self, shader:int) -> int: ... + def glIsTexture(self, texture:int) -> int: ... + def glIsTransformFeedback(self, id:int) -> int: ... + def glIsVertexArray(self, array:int) -> int: ... + def glLineWidth(self, width:float) -> None: ... + def glLinkProgram(self, program:int) -> None: ... + def glLogicOp(self, opcode:int) -> None: ... + def glMapBuffer(self, target:int, access:int) -> int: ... + def glMapNamedBuffer(self, buffer:int, access:int) -> int: ... + def glMemoryBarrier(self, barriers:int) -> None: ... + def glMemoryBarrierByRegion(self, barriers:int) -> None: ... + def glMinSampleShading(self, value:float) -> None: ... + def glMultiDrawArrays(self, mode:int, first:typing.Sequence, count:typing.Sequence, drawcount:int) -> None: ... + def glMultiDrawArraysIndirect(self, mode:int, indirect:int, drawcount:int, stride:int) -> None: ... + def glNamedBufferData(self, buffer:int, size:int, data:int, usage:int) -> None: ... + def glNamedBufferStorage(self, buffer:int, size:int, data:int, flags:int) -> None: ... + def glNamedFramebufferDrawBuffer(self, framebuffer:int, buf:int) -> None: ... + def glNamedFramebufferDrawBuffers(self, framebuffer:int, n:int, bufs:typing.Sequence) -> None: ... + def glNamedFramebufferParameteri(self, framebuffer:int, pname:int, param:int) -> None: ... + def glNamedFramebufferReadBuffer(self, framebuffer:int, src:int) -> None: ... + def glNamedFramebufferRenderbuffer(self, framebuffer:int, attachment:int, renderbuffertarget:int, renderbuffer:int) -> None: ... + def glNamedFramebufferTexture(self, framebuffer:int, attachment:int, texture:int, level:int) -> None: ... + def glNamedFramebufferTextureLayer(self, framebuffer:int, attachment:int, texture:int, level:int, layer:int) -> None: ... + def glNamedRenderbufferStorage(self, renderbuffer:int, internalformat:int, width:int, height:int) -> None: ... + def glNamedRenderbufferStorageMultisample(self, renderbuffer:int, samples:int, internalformat:int, width:int, height:int) -> None: ... + def glObjectLabel(self, identifier:int, name:int, length:int, label:bytes) -> None: ... + def glObjectPtrLabel(self, ptr:int, length:int, label:bytes) -> None: ... + def glPatchParameterfv(self, pname:int, values:typing.Sequence) -> None: ... + def glPatchParameteri(self, pname:int, value:int) -> None: ... + def glPauseTransformFeedback(self) -> None: ... + def glPixelStoref(self, pname:int, param:float) -> None: ... + def glPixelStorei(self, pname:int, param:int) -> None: ... + def glPointParameterf(self, pname:int, param:float) -> None: ... + def glPointParameterfv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointParameteri(self, pname:int, param:int) -> None: ... + def glPointParameteriv(self, pname:int, params:typing.Sequence) -> None: ... + def glPointSize(self, size:float) -> None: ... + def glPolygonMode(self, face:int, mode:int) -> None: ... + def glPolygonOffset(self, factor:float, units:float) -> None: ... + def glPopDebugGroup(self) -> None: ... + def glPrimitiveRestartIndex(self, index:int) -> None: ... + def glProgramBinary(self, program:int, binaryFormat:int, binary:int, length:int) -> None: ... + def glProgramParameteri(self, program:int, pname:int, value:int) -> None: ... + def glProgramUniform1d(self, program:int, location:int, v0:float) -> None: ... + def glProgramUniform1dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1f(self, program:int, location:int, v0:float) -> None: ... + def glProgramUniform1fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1i(self, program:int, location:int, v0:int) -> None: ... + def glProgramUniform1iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform1ui(self, program:int, location:int, v0:int) -> None: ... + def glProgramUniform1uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2d(self, program:int, location:int, v0:float, v1:float) -> None: ... + def glProgramUniform2dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2f(self, program:int, location:int, v0:float, v1:float) -> None: ... + def glProgramUniform2fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2i(self, program:int, location:int, v0:int, v1:int) -> None: ... + def glProgramUniform2iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform2ui(self, program:int, location:int, v0:int, v1:int) -> None: ... + def glProgramUniform2uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3d(self, program:int, location:int, v0:float, v1:float, v2:float) -> None: ... + def glProgramUniform3dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3f(self, program:int, location:int, v0:float, v1:float, v2:float) -> None: ... + def glProgramUniform3fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3i(self, program:int, location:int, v0:int, v1:int, v2:int) -> None: ... + def glProgramUniform3iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform3ui(self, program:int, location:int, v0:int, v1:int, v2:int) -> None: ... + def glProgramUniform3uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4d(self, program:int, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glProgramUniform4dv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4f(self, program:int, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glProgramUniform4fv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4i(self, program:int, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glProgramUniform4iv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniform4ui(self, program:int, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glProgramUniform4uiv(self, program:int, location:int, count:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x3dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x4dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix2x4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x2dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x4dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix3x4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x2dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x2fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x3dv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProgramUniformMatrix4x3fv(self, program:int, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glProvokingVertex(self, mode:int) -> None: ... + def glPushDebugGroup(self, source:int, id:int, length:int, message:bytes) -> None: ... + def glQueryCounter(self, id:int, target:int) -> None: ... + def glReadBuffer(self, src:int) -> None: ... + def glReadPixels(self, x:int, y:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glReadnPixels(self, x:int, y:int, width:int, height:int, format:int, type:int, bufSize:int, data:int) -> None: ... + def glReleaseShaderCompiler(self) -> None: ... + def glRenderbufferStorage(self, target:int, internalformat:int, width:int, height:int) -> None: ... + def glRenderbufferStorageMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int) -> None: ... + def glResumeTransformFeedback(self) -> None: ... + def glSampleCoverage(self, value:float, invert:int) -> None: ... + def glSampleMaski(self, maskNumber:int, mask:int) -> None: ... + def glSamplerParameterIiv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameterIuiv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameterf(self, sampler:int, pname:int, param:float) -> None: ... + def glSamplerParameterfv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glSamplerParameteri(self, sampler:int, pname:int, param:int) -> None: ... + def glSamplerParameteriv(self, sampler:int, pname:int, param:typing.Sequence) -> None: ... + def glScissor(self, x:int, y:int, width:int, height:int) -> None: ... + def glScissorArrayv(self, first:int, count:int, v:typing.Sequence) -> None: ... + def glScissorIndexed(self, index:int, left:int, bottom:int, width:int, height:int) -> None: ... + def glScissorIndexedv(self, index:int, v:typing.Sequence) -> None: ... + def glShaderBinary(self, count:int, shaders:typing.Sequence, binaryformat:int, binary:int, length:int) -> None: ... + def glShaderStorageBlockBinding(self, program:int, storageBlockIndex:int, storageBlockBinding:int) -> None: ... + def glStencilFunc(self, func:int, ref:int, mask:int) -> None: ... + def glStencilFuncSeparate(self, face:int, func:int, ref:int, mask:int) -> None: ... + def glStencilMask(self, mask:int) -> None: ... + def glStencilMaskSeparate(self, face:int, mask:int) -> None: ... + def glStencilOp(self, fail:int, zfail:int, zpass:int) -> None: ... + def glStencilOpSeparate(self, face:int, sfail:int, dpfail:int, dppass:int) -> None: ... + def glTexBuffer(self, target:int, internalformat:int, buffer:int) -> None: ... + def glTexImage1D(self, target:int, level:int, internalformat:int, width:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2D(self, target:int, level:int, internalformat:int, width:int, height:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage2DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, fixedsamplelocations:int) -> None: ... + def glTexImage3D(self, target:int, level:int, internalformat:int, width:int, height:int, depth:int, border:int, format:int, type:int, pixels:int) -> None: ... + def glTexImage3DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, depth:int, fixedsamplelocations:int) -> None: ... + def glTexParameterIiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterIuiv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameterf(self, target:int, pname:int, param:float) -> None: ... + def glTexParameterfv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexParameteri(self, target:int, pname:int, param:int) -> None: ... + def glTexParameteriv(self, target:int, pname:int, params:typing.Sequence) -> None: ... + def glTexStorage1D(self, target:int, levels:int, internalformat:int, width:int) -> None: ... + def glTexStorage2D(self, target:int, levels:int, internalformat:int, width:int, height:int) -> None: ... + def glTexStorage2DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, fixedsamplelocations:int) -> None: ... + def glTexStorage3D(self, target:int, levels:int, internalformat:int, width:int, height:int, depth:int) -> None: ... + def glTexStorage3DMultisample(self, target:int, samples:int, internalformat:int, width:int, height:int, depth:int, fixedsamplelocations:int) -> None: ... + def glTexSubImage1D(self, target:int, level:int, xoffset:int, width:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage2D(self, target:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glTexSubImage3D(self, target:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, pixels:int) -> None: ... + def glTextureBarrier(self) -> None: ... + def glTextureBuffer(self, texture:int, internalformat:int, buffer:int) -> None: ... + def glTextureParameterIiv(self, texture:int, pname:int, params:typing.Sequence) -> None: ... + def glTextureParameterIuiv(self, texture:int, pname:int, params:typing.Sequence) -> None: ... + def glTextureParameterf(self, texture:int, pname:int, param:float) -> None: ... + def glTextureParameterfv(self, texture:int, pname:int, param:typing.Sequence) -> None: ... + def glTextureParameteri(self, texture:int, pname:int, param:int) -> None: ... + def glTextureParameteriv(self, texture:int, pname:int, param:typing.Sequence) -> None: ... + def glTextureStorage1D(self, texture:int, levels:int, internalformat:int, width:int) -> None: ... + def glTextureStorage2D(self, texture:int, levels:int, internalformat:int, width:int, height:int) -> None: ... + def glTextureStorage2DMultisample(self, texture:int, samples:int, internalformat:int, width:int, height:int, fixedsamplelocations:int) -> None: ... + def glTextureStorage3D(self, texture:int, levels:int, internalformat:int, width:int, height:int, depth:int) -> None: ... + def glTextureStorage3DMultisample(self, texture:int, samples:int, internalformat:int, width:int, height:int, depth:int, fixedsamplelocations:int) -> None: ... + def glTextureSubImage1D(self, texture:int, level:int, xoffset:int, width:int, format:int, type:int, pixels:int) -> None: ... + def glTextureSubImage2D(self, texture:int, level:int, xoffset:int, yoffset:int, width:int, height:int, format:int, type:int, pixels:int) -> None: ... + def glTextureSubImage3D(self, texture:int, level:int, xoffset:int, yoffset:int, zoffset:int, width:int, height:int, depth:int, format:int, type:int, pixels:int) -> None: ... + def glTextureView(self, texture:int, target:int, origtexture:int, internalformat:int, minlevel:int, numlevels:int, minlayer:int, numlayers:int) -> None: ... + def glTransformFeedbackBufferBase(self, xfb:int, index:int, buffer:int) -> None: ... + def glUniform1d(self, location:int, x:float) -> None: ... + def glUniform1dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1f(self, location:int, v0:float) -> None: ... + def glUniform1fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1i(self, location:int, v0:int) -> None: ... + def glUniform1iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform1ui(self, location:int, v0:int) -> None: ... + def glUniform1uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2d(self, location:int, x:float, y:float) -> None: ... + def glUniform2dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2f(self, location:int, v0:float, v1:float) -> None: ... + def glUniform2fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2i(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform2ui(self, location:int, v0:int, v1:int) -> None: ... + def glUniform2uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3d(self, location:int, x:float, y:float, z:float) -> None: ... + def glUniform3dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3f(self, location:int, v0:float, v1:float, v2:float) -> None: ... + def glUniform3fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3i(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform3ui(self, location:int, v0:int, v1:int, v2:int) -> None: ... + def glUniform3uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4d(self, location:int, x:float, y:float, z:float, w:float) -> None: ... + def glUniform4dv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4f(self, location:int, v0:float, v1:float, v2:float, v3:float) -> None: ... + def glUniform4fv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4i(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4iv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniform4ui(self, location:int, v0:int, v1:int, v2:int, v3:int) -> None: ... + def glUniform4uiv(self, location:int, count:int, value:typing.Sequence) -> None: ... + def glUniformBlockBinding(self, program:int, uniformBlockIndex:int, uniformBlockBinding:int) -> None: ... + def glUniformMatrix2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix2x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix3x4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x2fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3dv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformMatrix4x3fv(self, location:int, count:int, transpose:int, value:typing.Sequence) -> None: ... + def glUniformSubroutinesuiv(self, shadertype:int, count:int, indices:typing.Sequence) -> None: ... + def glUnmapBuffer(self, target:int) -> int: ... + def glUnmapNamedBuffer(self, buffer:int) -> int: ... + def glUseProgram(self, program:int) -> None: ... + def glUseProgramStages(self, pipeline:int, stages:int, program:int) -> None: ... + def glValidateProgram(self, program:int) -> None: ... + def glValidateProgramPipeline(self, pipeline:int) -> None: ... + def glVertexArrayAttribBinding(self, vaobj:int, attribindex:int, bindingindex:int) -> None: ... + def glVertexArrayAttribFormat(self, vaobj:int, attribindex:int, size:int, type:int, normalized:int, relativeoffset:int) -> None: ... + def glVertexArrayAttribIFormat(self, vaobj:int, attribindex:int, size:int, type:int, relativeoffset:int) -> None: ... + def glVertexArrayAttribLFormat(self, vaobj:int, attribindex:int, size:int, type:int, relativeoffset:int) -> None: ... + def glVertexArrayBindingDivisor(self, vaobj:int, bindingindex:int, divisor:int) -> None: ... + def glVertexArrayElementBuffer(self, vaobj:int, buffer:int) -> None: ... + def glVertexArrayVertexBuffers(self, vaobj:int, first:int, count:int) -> typing.Tuple: ... + def glVertexAttrib1d(self, index:int, x:float) -> None: ... + def glVertexAttrib1dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib1f(self, index:int, x:float) -> None: ... + def glVertexAttrib1fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib1s(self, index:int, x:int) -> None: ... + def glVertexAttrib1sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2d(self, index:int, x:float, y:float) -> None: ... + def glVertexAttrib2dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2f(self, index:int, x:float, y:float) -> None: ... + def glVertexAttrib2fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib2s(self, index:int, x:int, y:int) -> None: ... + def glVertexAttrib2sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3d(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttrib3dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3f(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttrib3fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib3s(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttrib3sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nbv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4Niv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nsv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nub(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttrib4Nubv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4Nuiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4Nusv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4bv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4d(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttrib4dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4f(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttrib4fv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4s(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttrib4sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4ubv(self, index:int, v:bytes) -> None: ... + def glVertexAttrib4uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttrib4usv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribBinding(self, attribindex:int, bindingindex:int) -> None: ... + def glVertexAttribDivisor(self, index:int, divisor:int) -> None: ... + def glVertexAttribFormat(self, attribindex:int, size:int, type:int, normalized:int, relativeoffset:int) -> None: ... + def glVertexAttribI1i(self, index:int, x:int) -> None: ... + def glVertexAttribI1iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI1ui(self, index:int, x:int) -> None: ... + def glVertexAttribI1uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI2i(self, index:int, x:int, y:int) -> None: ... + def glVertexAttribI2iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI2ui(self, index:int, x:int, y:int) -> None: ... + def glVertexAttribI2uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI3i(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttribI3iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI3ui(self, index:int, x:int, y:int, z:int) -> None: ... + def glVertexAttribI3uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4bv(self, index:int, v:bytes) -> None: ... + def glVertexAttribI4i(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttribI4iv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4sv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4ubv(self, index:int, v:bytes) -> None: ... + def glVertexAttribI4ui(self, index:int, x:int, y:int, z:int, w:int) -> None: ... + def glVertexAttribI4uiv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribI4usv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribIFormat(self, attribindex:int, size:int, type:int, relativeoffset:int) -> None: ... + def glVertexAttribIPointer(self, index:int, size:int, type:int, stride:int, pointer:int) -> None: ... + def glVertexAttribL1d(self, index:int, x:float) -> None: ... + def glVertexAttribL1dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribL2d(self, index:int, x:float, y:float) -> None: ... + def glVertexAttribL2dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribL3d(self, index:int, x:float, y:float, z:float) -> None: ... + def glVertexAttribL3dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribL4d(self, index:int, x:float, y:float, z:float, w:float) -> None: ... + def glVertexAttribL4dv(self, index:int, v:typing.Sequence) -> None: ... + def glVertexAttribLFormat(self, attribindex:int, size:int, type:int, relativeoffset:int) -> None: ... + def glVertexAttribLPointer(self, index:int, size:int, type:int, stride:int, pointer:int) -> None: ... + def glVertexAttribP1ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP1uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP2ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP2uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP3ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP3uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribP4ui(self, index:int, type:int, normalized:int, value:int) -> None: ... + def glVertexAttribP4uiv(self, index:int, type:int, normalized:int, value:typing.Sequence) -> None: ... + def glVertexAttribPointer(self, index:int, size:int, type:int, normalized:int, stride:int, pointer:int) -> None: ... + def glVertexBindingDivisor(self, bindingindex:int, divisor:int) -> None: ... + def glViewport(self, x:int, y:int, width:int, height:int) -> None: ... + def glViewportArrayv(self, first:int, count:int, v:typing.Sequence) -> None: ... + def glViewportIndexedf(self, index:int, x:float, y:float, w:float, h:float) -> None: ... + def glViewportIndexedfv(self, index:int, v:typing.Sequence) -> None: ... + def initializeOpenGLFunctions(self) -> bool: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtPositioning.pyd b/venv/Lib/site-packages/PySide2/QtPositioning.pyd new file mode 100644 index 0000000..6d8e45f Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtPositioning.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtPositioning.pyi b/venv/Lib/site-packages/PySide2/QtPositioning.pyi new file mode 100644 index 0000000..edd1209 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtPositioning.pyi @@ -0,0 +1,615 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtPositioning, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtPositioning +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtPositioning + + +class QGeoAddress(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtPositioning.QGeoAddress) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def city(self) -> str: ... + def clear(self) -> None: ... + def country(self) -> str: ... + def countryCode(self) -> str: ... + def county(self) -> str: ... + def district(self) -> str: ... + def isEmpty(self) -> bool: ... + def isTextGenerated(self) -> bool: ... + def postalCode(self) -> str: ... + def setCity(self, city:str) -> None: ... + def setCountry(self, country:str) -> None: ... + def setCountryCode(self, countryCode:str) -> None: ... + def setCounty(self, county:str) -> None: ... + def setDistrict(self, district:str) -> None: ... + def setPostalCode(self, postalCode:str) -> None: ... + def setState(self, state:str) -> None: ... + def setStreet(self, street:str) -> None: ... + def setText(self, text:str) -> None: ... + def state(self) -> str: ... + def street(self) -> str: ... + def text(self) -> str: ... + + +class QGeoAreaMonitorInfo(Shiboken.Object): + + @typing.overload + def __init__(self, name:str=...) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtPositioning.QGeoAreaMonitorInfo) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __lshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __rshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def area(self) -> PySide2.QtPositioning.QGeoShape: ... + def expiration(self) -> PySide2.QtCore.QDateTime: ... + def identifier(self) -> str: ... + def isPersistent(self) -> bool: ... + def isValid(self) -> bool: ... + def name(self) -> str: ... + def notificationParameters(self) -> typing.Dict: ... + def setArea(self, newShape:PySide2.QtPositioning.QGeoShape) -> None: ... + def setExpiration(self, expiry:PySide2.QtCore.QDateTime) -> None: ... + def setName(self, name:str) -> None: ... + def setNotificationParameters(self, parameters:typing.Dict) -> None: ... + def setPersistent(self, isPersistent:bool) -> None: ... + + +class QGeoAreaMonitorSource(PySide2.QtCore.QObject): + AnyAreaMonitorFeature : QGeoAreaMonitorSource = ... # -0x1 + AccessError : QGeoAreaMonitorSource = ... # 0x0 + InsufficientPositionInfo : QGeoAreaMonitorSource = ... # 0x1 + PersistentAreaMonitorFeature: QGeoAreaMonitorSource = ... # 0x1 + UnknownSourceError : QGeoAreaMonitorSource = ... # 0x2 + NoError : QGeoAreaMonitorSource = ... # 0x3 + + class AreaMonitorFeature(object): + AnyAreaMonitorFeature : QGeoAreaMonitorSource.AreaMonitorFeature = ... # -0x1 + PersistentAreaMonitorFeature: QGeoAreaMonitorSource.AreaMonitorFeature = ... # 0x1 + + class AreaMonitorFeatures(object): ... + + class Error(object): + AccessError : QGeoAreaMonitorSource.Error = ... # 0x0 + InsufficientPositionInfo : QGeoAreaMonitorSource.Error = ... # 0x1 + UnknownSourceError : QGeoAreaMonitorSource.Error = ... # 0x2 + NoError : QGeoAreaMonitorSource.Error = ... # 0x3 + + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + + @typing.overload + def activeMonitors(self) -> typing.List: ... + @typing.overload + def activeMonitors(self, lookupArea:PySide2.QtPositioning.QGeoShape) -> typing.List: ... + @staticmethod + def availableSources() -> typing.List: ... + @staticmethod + def createDefaultSource(parent:PySide2.QtCore.QObject) -> PySide2.QtPositioning.QGeoAreaMonitorSource: ... + @staticmethod + def createSource(sourceName:str, parent:PySide2.QtCore.QObject) -> PySide2.QtPositioning.QGeoAreaMonitorSource: ... + def error(self) -> PySide2.QtPositioning.QGeoAreaMonitorSource.Error: ... + def positionInfoSource(self) -> PySide2.QtPositioning.QGeoPositionInfoSource: ... + def requestUpdate(self, monitor:PySide2.QtPositioning.QGeoAreaMonitorInfo, signal:bytes) -> bool: ... + def setPositionInfoSource(self, source:PySide2.QtPositioning.QGeoPositionInfoSource) -> None: ... + def sourceName(self) -> str: ... + def startMonitoring(self, monitor:PySide2.QtPositioning.QGeoAreaMonitorInfo) -> bool: ... + def stopMonitoring(self, monitor:PySide2.QtPositioning.QGeoAreaMonitorInfo) -> bool: ... + def supportedAreaMonitorFeatures(self) -> PySide2.QtPositioning.QGeoAreaMonitorSource.AreaMonitorFeatures: ... + + +class QGeoCircle(PySide2.QtPositioning.QGeoShape): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, center:PySide2.QtPositioning.QGeoCoordinate, radius:float=...) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtPositioning.QGeoCircle) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtPositioning.QGeoShape) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def center(self) -> PySide2.QtPositioning.QGeoCoordinate: ... + def extendCircle(self, coordinate:PySide2.QtPositioning.QGeoCoordinate) -> None: ... + def radius(self) -> float: ... + def setCenter(self, center:PySide2.QtPositioning.QGeoCoordinate) -> None: ... + def setRadius(self, radius:float) -> None: ... + def toString(self) -> str: ... + def translate(self, degreesLatitude:float, degreesLongitude:float) -> None: ... + def translated(self, degreesLatitude:float, degreesLongitude:float) -> PySide2.QtPositioning.QGeoCircle: ... + + +class QGeoCoordinate(Shiboken.Object): + Degrees : QGeoCoordinate = ... # 0x0 + InvalidCoordinate : QGeoCoordinate = ... # 0x0 + Coordinate2D : QGeoCoordinate = ... # 0x1 + DegreesWithHemisphere : QGeoCoordinate = ... # 0x1 + Coordinate3D : QGeoCoordinate = ... # 0x2 + DegreesMinutes : QGeoCoordinate = ... # 0x2 + DegreesMinutesWithHemisphere: QGeoCoordinate = ... # 0x3 + DegreesMinutesSeconds : QGeoCoordinate = ... # 0x4 + DegreesMinutesSecondsWithHemisphere: QGeoCoordinate = ... # 0x5 + + class CoordinateFormat(object): + Degrees : QGeoCoordinate.CoordinateFormat = ... # 0x0 + DegreesWithHemisphere : QGeoCoordinate.CoordinateFormat = ... # 0x1 + DegreesMinutes : QGeoCoordinate.CoordinateFormat = ... # 0x2 + DegreesMinutesWithHemisphere: QGeoCoordinate.CoordinateFormat = ... # 0x3 + DegreesMinutesSeconds : QGeoCoordinate.CoordinateFormat = ... # 0x4 + DegreesMinutesSecondsWithHemisphere: QGeoCoordinate.CoordinateFormat = ... # 0x5 + + class CoordinateType(object): + InvalidCoordinate : QGeoCoordinate.CoordinateType = ... # 0x0 + Coordinate2D : QGeoCoordinate.CoordinateType = ... # 0x1 + Coordinate3D : QGeoCoordinate.CoordinateType = ... # 0x2 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, latitude:float, longitude:float) -> None: ... + @typing.overload + def __init__(self, latitude:float, longitude:float, altitude:float) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtPositioning.QGeoCoordinate) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __lshift__(self, stream:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __rshift__(self, stream:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def altitude(self) -> float: ... + def atDistanceAndAzimuth(self, distance:float, azimuth:float, distanceUp:float=...) -> PySide2.QtPositioning.QGeoCoordinate: ... + def azimuthTo(self, other:PySide2.QtPositioning.QGeoCoordinate) -> float: ... + def distanceTo(self, other:PySide2.QtPositioning.QGeoCoordinate) -> float: ... + def isValid(self) -> bool: ... + def latitude(self) -> float: ... + def longitude(self) -> float: ... + def setAltitude(self, altitude:float) -> None: ... + def setLatitude(self, latitude:float) -> None: ... + def setLongitude(self, longitude:float) -> None: ... + def toString(self, format:PySide2.QtPositioning.QGeoCoordinate.CoordinateFormat=...) -> str: ... + def type(self) -> PySide2.QtPositioning.QGeoCoordinate.CoordinateType: ... + + +class QGeoLocation(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtPositioning.QGeoLocation) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def address(self) -> PySide2.QtPositioning.QGeoAddress: ... + def boundingBox(self) -> PySide2.QtPositioning.QGeoRectangle: ... + def coordinate(self) -> PySide2.QtPositioning.QGeoCoordinate: ... + def extendedAttributes(self) -> typing.Dict: ... + def isEmpty(self) -> bool: ... + def setAddress(self, address:PySide2.QtPositioning.QGeoAddress) -> None: ... + def setBoundingBox(self, box:PySide2.QtPositioning.QGeoRectangle) -> None: ... + def setCoordinate(self, position:PySide2.QtPositioning.QGeoCoordinate) -> None: ... + def setExtendedAttributes(self, data:typing.Dict) -> None: ... + + +class QGeoPath(PySide2.QtPositioning.QGeoShape): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtPositioning.QGeoPath) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtPositioning.QGeoShape) -> None: ... + @typing.overload + def __init__(self, path:typing.Sequence, width:float=...) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def addCoordinate(self, coordinate:PySide2.QtPositioning.QGeoCoordinate) -> None: ... + def clearPath(self) -> None: ... + def containsCoordinate(self, coordinate:PySide2.QtPositioning.QGeoCoordinate) -> bool: ... + def coordinateAt(self, index:int) -> PySide2.QtPositioning.QGeoCoordinate: ... + def insertCoordinate(self, index:int, coordinate:PySide2.QtPositioning.QGeoCoordinate) -> None: ... + def length(self, indexFrom:int=..., indexTo:int=...) -> float: ... + def path(self) -> typing.List: ... + @typing.overload + def removeCoordinate(self, coordinate:PySide2.QtPositioning.QGeoCoordinate) -> None: ... + @typing.overload + def removeCoordinate(self, index:int) -> None: ... + def replaceCoordinate(self, index:int, coordinate:PySide2.QtPositioning.QGeoCoordinate) -> None: ... + def setPath(self, path:typing.Sequence) -> None: ... + def setVariantPath(self, path:typing.Sequence) -> None: ... + def setWidth(self, width:float) -> None: ... + def size(self) -> int: ... + def toString(self) -> str: ... + def translate(self, degreesLatitude:float, degreesLongitude:float) -> None: ... + def translated(self, degreesLatitude:float, degreesLongitude:float) -> PySide2.QtPositioning.QGeoPath: ... + def variantPath(self) -> typing.List: ... + def width(self) -> float: ... + + +class QGeoPolygon(PySide2.QtPositioning.QGeoShape): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtPositioning.QGeoPolygon) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtPositioning.QGeoShape) -> None: ... + @typing.overload + def __init__(self, path:typing.Sequence) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def addCoordinate(self, coordinate:PySide2.QtPositioning.QGeoCoordinate) -> None: ... + @typing.overload + def addHole(self, holePath:typing.Sequence) -> None: ... + @typing.overload + def addHole(self, holePath:typing.Any) -> None: ... + def containsCoordinate(self, coordinate:PySide2.QtPositioning.QGeoCoordinate) -> bool: ... + def coordinateAt(self, index:int) -> PySide2.QtPositioning.QGeoCoordinate: ... + def hole(self, index:int) -> typing.List: ... + def holePath(self, index:int) -> typing.List: ... + def holesCount(self) -> int: ... + def insertCoordinate(self, index:int, coordinate:PySide2.QtPositioning.QGeoCoordinate) -> None: ... + def length(self, indexFrom:int=..., indexTo:int=...) -> float: ... + def path(self) -> typing.List: ... + def perimeter(self) -> typing.List: ... + @typing.overload + def removeCoordinate(self, coordinate:PySide2.QtPositioning.QGeoCoordinate) -> None: ... + @typing.overload + def removeCoordinate(self, index:int) -> None: ... + def removeHole(self, index:int) -> None: ... + def replaceCoordinate(self, index:int, coordinate:PySide2.QtPositioning.QGeoCoordinate) -> None: ... + def setPath(self, path:typing.Sequence) -> None: ... + def setPerimeter(self, path:typing.Sequence) -> None: ... + def size(self) -> int: ... + def toString(self) -> str: ... + def translate(self, degreesLatitude:float, degreesLongitude:float) -> None: ... + def translated(self, degreesLatitude:float, degreesLongitude:float) -> PySide2.QtPositioning.QGeoPolygon: ... + + +class QGeoPositionInfo(Shiboken.Object): + Direction : QGeoPositionInfo = ... # 0x0 + GroundSpeed : QGeoPositionInfo = ... # 0x1 + VerticalSpeed : QGeoPositionInfo = ... # 0x2 + MagneticVariation : QGeoPositionInfo = ... # 0x3 + HorizontalAccuracy : QGeoPositionInfo = ... # 0x4 + VerticalAccuracy : QGeoPositionInfo = ... # 0x5 + + class Attribute(object): + Direction : QGeoPositionInfo.Attribute = ... # 0x0 + GroundSpeed : QGeoPositionInfo.Attribute = ... # 0x1 + VerticalSpeed : QGeoPositionInfo.Attribute = ... # 0x2 + MagneticVariation : QGeoPositionInfo.Attribute = ... # 0x3 + HorizontalAccuracy : QGeoPositionInfo.Attribute = ... # 0x4 + VerticalAccuracy : QGeoPositionInfo.Attribute = ... # 0x5 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, coordinate:PySide2.QtPositioning.QGeoCoordinate, updateTime:PySide2.QtCore.QDateTime) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtPositioning.QGeoPositionInfo) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __lshift__(self, stream:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __rshift__(self, stream:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def attribute(self, attribute:PySide2.QtPositioning.QGeoPositionInfo.Attribute) -> float: ... + def coordinate(self) -> PySide2.QtPositioning.QGeoCoordinate: ... + def hasAttribute(self, attribute:PySide2.QtPositioning.QGeoPositionInfo.Attribute) -> bool: ... + def isValid(self) -> bool: ... + def removeAttribute(self, attribute:PySide2.QtPositioning.QGeoPositionInfo.Attribute) -> None: ... + def setAttribute(self, attribute:PySide2.QtPositioning.QGeoPositionInfo.Attribute, value:float) -> None: ... + def setCoordinate(self, coordinate:PySide2.QtPositioning.QGeoCoordinate) -> None: ... + def setTimestamp(self, timestamp:PySide2.QtCore.QDateTime) -> None: ... + def timestamp(self) -> PySide2.QtCore.QDateTime: ... + + +class QGeoPositionInfoSource(PySide2.QtCore.QObject): + NonSatellitePositioningMethods: QGeoPositionInfoSource = ... # -0x100 + AllPositioningMethods : QGeoPositionInfoSource = ... # -0x1 + AccessError : QGeoPositionInfoSource = ... # 0x0 + NoPositioningMethods : QGeoPositionInfoSource = ... # 0x0 + ClosedError : QGeoPositionInfoSource = ... # 0x1 + UnknownSourceError : QGeoPositionInfoSource = ... # 0x2 + NoError : QGeoPositionInfoSource = ... # 0x3 + SatellitePositioningMethods: QGeoPositionInfoSource = ... # 0xff + + class Error(object): + AccessError : QGeoPositionInfoSource.Error = ... # 0x0 + ClosedError : QGeoPositionInfoSource.Error = ... # 0x1 + UnknownSourceError : QGeoPositionInfoSource.Error = ... # 0x2 + NoError : QGeoPositionInfoSource.Error = ... # 0x3 + + class PositioningMethod(object): + NonSatellitePositioningMethods: QGeoPositionInfoSource.PositioningMethod = ... # -0x100 + AllPositioningMethods : QGeoPositionInfoSource.PositioningMethod = ... # -0x1 + NoPositioningMethods : QGeoPositionInfoSource.PositioningMethod = ... # 0x0 + SatellitePositioningMethods: QGeoPositionInfoSource.PositioningMethod = ... # 0xff + + class PositioningMethods(object): ... + + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + + @staticmethod + def availableSources() -> typing.List: ... + def backendProperty(self, name:str) -> typing.Any: ... + @typing.overload + @staticmethod + def createDefaultSource(parameters:typing.Dict, parent:PySide2.QtCore.QObject) -> PySide2.QtPositioning.QGeoPositionInfoSource: ... + @typing.overload + @staticmethod + def createDefaultSource(parent:PySide2.QtCore.QObject) -> PySide2.QtPositioning.QGeoPositionInfoSource: ... + @typing.overload + @staticmethod + def createSource(sourceName:str, parameters:typing.Dict, parent:PySide2.QtCore.QObject) -> PySide2.QtPositioning.QGeoPositionInfoSource: ... + @typing.overload + @staticmethod + def createSource(sourceName:str, parent:PySide2.QtCore.QObject) -> PySide2.QtPositioning.QGeoPositionInfoSource: ... + def error(self) -> PySide2.QtPositioning.QGeoPositionInfoSource.Error: ... + def lastKnownPosition(self, fromSatellitePositioningMethodsOnly:bool=...) -> PySide2.QtPositioning.QGeoPositionInfo: ... + def minimumUpdateInterval(self) -> int: ... + def preferredPositioningMethods(self) -> PySide2.QtPositioning.QGeoPositionInfoSource.PositioningMethods: ... + def requestUpdate(self, timeout:int=...) -> None: ... + def setBackendProperty(self, name:str, value:typing.Any) -> bool: ... + def setPreferredPositioningMethods(self, methods:PySide2.QtPositioning.QGeoPositionInfoSource.PositioningMethods) -> None: ... + def setUpdateInterval(self, msec:int) -> None: ... + def sourceName(self) -> str: ... + def startUpdates(self) -> None: ... + def stopUpdates(self) -> None: ... + def supportedPositioningMethods(self) -> PySide2.QtPositioning.QGeoPositionInfoSource.PositioningMethods: ... + def updateInterval(self) -> int: ... + + +class QGeoPositionInfoSourceFactory(Shiboken.Object): + + def __init__(self) -> None: ... + + def areaMonitor(self, parent:PySide2.QtCore.QObject) -> PySide2.QtPositioning.QGeoAreaMonitorSource: ... + def positionInfoSource(self, parent:PySide2.QtCore.QObject) -> PySide2.QtPositioning.QGeoPositionInfoSource: ... + def satelliteInfoSource(self, parent:PySide2.QtCore.QObject) -> PySide2.QtPositioning.QGeoSatelliteInfoSource: ... + + +class QGeoRectangle(PySide2.QtPositioning.QGeoShape): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, center:PySide2.QtPositioning.QGeoCoordinate, degreesWidth:float, degreesHeight:float) -> None: ... + @typing.overload + def __init__(self, coordinates:typing.Sequence) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtPositioning.QGeoRectangle) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtPositioning.QGeoShape) -> None: ... + @typing.overload + def __init__(self, topLeft:PySide2.QtPositioning.QGeoCoordinate, bottomRight:PySide2.QtPositioning.QGeoCoordinate) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __ior__(self, rectangle:PySide2.QtPositioning.QGeoRectangle) -> PySide2.QtPositioning.QGeoRectangle: ... + def __or__(self, rectangle:PySide2.QtPositioning.QGeoRectangle) -> PySide2.QtPositioning.QGeoRectangle: ... + def bottomLeft(self) -> PySide2.QtPositioning.QGeoCoordinate: ... + def bottomRight(self) -> PySide2.QtPositioning.QGeoCoordinate: ... + def center(self) -> PySide2.QtPositioning.QGeoCoordinate: ... + @typing.overload + def contains(self, coordinate:PySide2.QtPositioning.QGeoCoordinate) -> bool: ... + @typing.overload + def contains(self, rectangle:PySide2.QtPositioning.QGeoRectangle) -> bool: ... + def extendRectangle(self, coordinate:PySide2.QtPositioning.QGeoCoordinate) -> None: ... + def height(self) -> float: ... + def intersects(self, rectangle:PySide2.QtPositioning.QGeoRectangle) -> bool: ... + def setBottomLeft(self, bottomLeft:PySide2.QtPositioning.QGeoCoordinate) -> None: ... + def setBottomRight(self, bottomRight:PySide2.QtPositioning.QGeoCoordinate) -> None: ... + def setCenter(self, center:PySide2.QtPositioning.QGeoCoordinate) -> None: ... + def setHeight(self, degreesHeight:float) -> None: ... + def setTopLeft(self, topLeft:PySide2.QtPositioning.QGeoCoordinate) -> None: ... + def setTopRight(self, topRight:PySide2.QtPositioning.QGeoCoordinate) -> None: ... + def setWidth(self, degreesWidth:float) -> None: ... + def toString(self) -> str: ... + def topLeft(self) -> PySide2.QtPositioning.QGeoCoordinate: ... + def topRight(self) -> PySide2.QtPositioning.QGeoCoordinate: ... + def translate(self, degreesLatitude:float, degreesLongitude:float) -> None: ... + def translated(self, degreesLatitude:float, degreesLongitude:float) -> PySide2.QtPositioning.QGeoRectangle: ... + def united(self, rectangle:PySide2.QtPositioning.QGeoRectangle) -> PySide2.QtPositioning.QGeoRectangle: ... + def width(self) -> float: ... + + +class QGeoSatelliteInfo(Shiboken.Object): + Elevation : QGeoSatelliteInfo = ... # 0x0 + Undefined : QGeoSatelliteInfo = ... # 0x0 + Azimuth : QGeoSatelliteInfo = ... # 0x1 + GPS : QGeoSatelliteInfo = ... # 0x1 + GLONASS : QGeoSatelliteInfo = ... # 0x2 + + class Attribute(object): + Elevation : QGeoSatelliteInfo.Attribute = ... # 0x0 + Azimuth : QGeoSatelliteInfo.Attribute = ... # 0x1 + + class SatelliteSystem(object): + Undefined : QGeoSatelliteInfo.SatelliteSystem = ... # 0x0 + GPS : QGeoSatelliteInfo.SatelliteSystem = ... # 0x1 + GLONASS : QGeoSatelliteInfo.SatelliteSystem = ... # 0x2 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtPositioning.QGeoSatelliteInfo) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __lshift__(self, stream:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __rshift__(self, stream:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def attribute(self, attribute:PySide2.QtPositioning.QGeoSatelliteInfo.Attribute) -> float: ... + def hasAttribute(self, attribute:PySide2.QtPositioning.QGeoSatelliteInfo.Attribute) -> bool: ... + def removeAttribute(self, attribute:PySide2.QtPositioning.QGeoSatelliteInfo.Attribute) -> None: ... + def satelliteIdentifier(self) -> int: ... + def satelliteSystem(self) -> PySide2.QtPositioning.QGeoSatelliteInfo.SatelliteSystem: ... + def setAttribute(self, attribute:PySide2.QtPositioning.QGeoSatelliteInfo.Attribute, value:float) -> None: ... + def setSatelliteIdentifier(self, satId:int) -> None: ... + def setSatelliteSystem(self, system:PySide2.QtPositioning.QGeoSatelliteInfo.SatelliteSystem) -> None: ... + def setSignalStrength(self, signalStrength:int) -> None: ... + def signalStrength(self) -> int: ... + + +class QGeoSatelliteInfoSource(PySide2.QtCore.QObject): + UnknownSourceError : QGeoSatelliteInfoSource = ... # -0x1 + AccessError : QGeoSatelliteInfoSource = ... # 0x0 + ClosedError : QGeoSatelliteInfoSource = ... # 0x1 + NoError : QGeoSatelliteInfoSource = ... # 0x2 + + class Error(object): + UnknownSourceError : QGeoSatelliteInfoSource.Error = ... # -0x1 + AccessError : QGeoSatelliteInfoSource.Error = ... # 0x0 + ClosedError : QGeoSatelliteInfoSource.Error = ... # 0x1 + NoError : QGeoSatelliteInfoSource.Error = ... # 0x2 + + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + + @staticmethod + def availableSources() -> typing.List: ... + @typing.overload + @staticmethod + def createDefaultSource(parameters:typing.Dict, parent:PySide2.QtCore.QObject) -> PySide2.QtPositioning.QGeoSatelliteInfoSource: ... + @typing.overload + @staticmethod + def createDefaultSource(parent:PySide2.QtCore.QObject) -> PySide2.QtPositioning.QGeoSatelliteInfoSource: ... + @typing.overload + @staticmethod + def createSource(sourceName:str, parameters:typing.Dict, parent:PySide2.QtCore.QObject) -> PySide2.QtPositioning.QGeoSatelliteInfoSource: ... + @typing.overload + @staticmethod + def createSource(sourceName:str, parent:PySide2.QtCore.QObject) -> PySide2.QtPositioning.QGeoSatelliteInfoSource: ... + def error(self) -> PySide2.QtPositioning.QGeoSatelliteInfoSource.Error: ... + def minimumUpdateInterval(self) -> int: ... + def requestUpdate(self, timeout:int=...) -> None: ... + def setUpdateInterval(self, msec:int) -> None: ... + def sourceName(self) -> str: ... + def startUpdates(self) -> None: ... + def stopUpdates(self) -> None: ... + def updateInterval(self) -> int: ... + + +class QGeoShape(Shiboken.Object): + UnknownType : QGeoShape = ... # 0x0 + RectangleType : QGeoShape = ... # 0x1 + CircleType : QGeoShape = ... # 0x2 + PathType : QGeoShape = ... # 0x3 + PolygonType : QGeoShape = ... # 0x4 + + class ShapeType(object): + UnknownType : QGeoShape.ShapeType = ... # 0x0 + RectangleType : QGeoShape.ShapeType = ... # 0x1 + CircleType : QGeoShape.ShapeType = ... # 0x2 + PathType : QGeoShape.ShapeType = ... # 0x3 + PolygonType : QGeoShape.ShapeType = ... # 0x4 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtPositioning.QGeoShape) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __lshift__(self, stream:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __rshift__(self, stream:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def boundingGeoRectangle(self) -> PySide2.QtPositioning.QGeoRectangle: ... + def center(self) -> PySide2.QtPositioning.QGeoCoordinate: ... + def contains(self, coordinate:PySide2.QtPositioning.QGeoCoordinate) -> bool: ... + def extendShape(self, coordinate:PySide2.QtPositioning.QGeoCoordinate) -> None: ... + def isEmpty(self) -> bool: ... + def isValid(self) -> bool: ... + def toString(self) -> str: ... + def type(self) -> PySide2.QtPositioning.QGeoShape.ShapeType: ... + + +class QNmeaPositionInfoSource(PySide2.QtPositioning.QGeoPositionInfoSource): + RealTimeMode : QNmeaPositionInfoSource = ... # 0x1 + SimulationMode : QNmeaPositionInfoSource = ... # 0x2 + + class UpdateMode(object): + RealTimeMode : QNmeaPositionInfoSource.UpdateMode = ... # 0x1 + SimulationMode : QNmeaPositionInfoSource.UpdateMode = ... # 0x2 + + def __init__(self, updateMode:PySide2.QtPositioning.QNmeaPositionInfoSource.UpdateMode, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def device(self) -> PySide2.QtCore.QIODevice: ... + def error(self) -> PySide2.QtPositioning.QGeoPositionInfoSource.Error: ... + def lastKnownPosition(self, fromSatellitePositioningMethodsOnly:bool=...) -> PySide2.QtPositioning.QGeoPositionInfo: ... + def minimumUpdateInterval(self) -> int: ... + def parsePosInfoFromNmeaData(self, data:bytes, size:int, posInfo:PySide2.QtPositioning.QGeoPositionInfo) -> typing.Tuple: ... + def requestUpdate(self, timeout:int=...) -> None: ... + def setDevice(self, source:PySide2.QtCore.QIODevice) -> None: ... + def setUpdateInterval(self, msec:int) -> None: ... + def setUserEquivalentRangeError(self, uere:float) -> None: ... + def startUpdates(self) -> None: ... + def stopUpdates(self) -> None: ... + def supportedPositioningMethods(self) -> PySide2.QtPositioning.QGeoPositionInfoSource.PositioningMethods: ... + def updateMode(self) -> PySide2.QtPositioning.QNmeaPositionInfoSource.UpdateMode: ... + def userEquivalentRangeError(self) -> float: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtPrintSupport.pyd b/venv/Lib/site-packages/PySide2/QtPrintSupport.pyd new file mode 100644 index 0000000..5a2d7b6 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtPrintSupport.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtPrintSupport.pyi b/venv/Lib/site-packages/PySide2/QtPrintSupport.pyi new file mode 100644 index 0000000..fbe1561 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtPrintSupport.pyi @@ -0,0 +1,548 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtPrintSupport, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtPrintSupport +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtGui +import PySide2.QtWidgets +import PySide2.QtPrintSupport + + +class QAbstractPrintDialog(PySide2.QtWidgets.QDialog): + AllPages : QAbstractPrintDialog = ... # 0x0 + None_ : QAbstractPrintDialog = ... # 0x0 + PrintToFile : QAbstractPrintDialog = ... # 0x1 + Selection : QAbstractPrintDialog = ... # 0x1 + PageRange : QAbstractPrintDialog = ... # 0x2 + PrintSelection : QAbstractPrintDialog = ... # 0x2 + CurrentPage : QAbstractPrintDialog = ... # 0x3 + PrintPageRange : QAbstractPrintDialog = ... # 0x4 + PrintShowPageSize : QAbstractPrintDialog = ... # 0x8 + PrintCollateCopies : QAbstractPrintDialog = ... # 0x10 + DontUseSheet : QAbstractPrintDialog = ... # 0x20 + PrintCurrentPage : QAbstractPrintDialog = ... # 0x40 + + class PrintDialogOption(object): + None_ : QAbstractPrintDialog.PrintDialogOption = ... # 0x0 + PrintToFile : QAbstractPrintDialog.PrintDialogOption = ... # 0x1 + PrintSelection : QAbstractPrintDialog.PrintDialogOption = ... # 0x2 + PrintPageRange : QAbstractPrintDialog.PrintDialogOption = ... # 0x4 + PrintShowPageSize : QAbstractPrintDialog.PrintDialogOption = ... # 0x8 + PrintCollateCopies : QAbstractPrintDialog.PrintDialogOption = ... # 0x10 + DontUseSheet : QAbstractPrintDialog.PrintDialogOption = ... # 0x20 + PrintCurrentPage : QAbstractPrintDialog.PrintDialogOption = ... # 0x40 + + class PrintDialogOptions(object): ... + + class PrintRange(object): + AllPages : QAbstractPrintDialog.PrintRange = ... # 0x0 + Selection : QAbstractPrintDialog.PrintRange = ... # 0x1 + PageRange : QAbstractPrintDialog.PrintRange = ... # 0x2 + CurrentPage : QAbstractPrintDialog.PrintRange = ... # 0x3 + + def __init__(self, printer:PySide2.QtPrintSupport.QPrinter, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def addEnabledOption(self, option:PySide2.QtPrintSupport.QAbstractPrintDialog.PrintDialogOption) -> None: ... + def enabledOptions(self) -> PySide2.QtPrintSupport.QAbstractPrintDialog.PrintDialogOptions: ... + def fromPage(self) -> int: ... + def isOptionEnabled(self, option:PySide2.QtPrintSupport.QAbstractPrintDialog.PrintDialogOption) -> bool: ... + def maxPage(self) -> int: ... + def minPage(self) -> int: ... + def printRange(self) -> PySide2.QtPrintSupport.QAbstractPrintDialog.PrintRange: ... + def printer(self) -> PySide2.QtPrintSupport.QPrinter: ... + def setEnabledOptions(self, options:PySide2.QtPrintSupport.QAbstractPrintDialog.PrintDialogOptions) -> None: ... + def setFromTo(self, fromPage:int, toPage:int) -> None: ... + def setMinMax(self, min:int, max:int) -> None: ... + def setOptionTabs(self, tabs:typing.Sequence) -> None: ... + def setPrintRange(self, range:PySide2.QtPrintSupport.QAbstractPrintDialog.PrintRange) -> None: ... + def toPage(self) -> int: ... + + +class QPageSetupDialog(PySide2.QtWidgets.QDialog): + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, printer:PySide2.QtPrintSupport.QPrinter, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def done(self, result:int) -> None: ... + def exec_(self) -> int: ... + @typing.overload + def open(self) -> None: ... + @typing.overload + def open(self, receiver:PySide2.QtCore.QObject, member:bytes) -> None: ... + def printer(self) -> PySide2.QtPrintSupport.QPrinter: ... + def setVisible(self, visible:bool) -> None: ... + + +class QPrintDialog(PySide2.QtPrintSupport.QAbstractPrintDialog): + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, printer:PySide2.QtPrintSupport.QPrinter, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def done(self, result:int) -> None: ... + def exec_(self) -> int: ... + @typing.overload + def open(self) -> None: ... + @typing.overload + def open(self, receiver:PySide2.QtCore.QObject, member:bytes) -> None: ... + def options(self) -> PySide2.QtPrintSupport.QAbstractPrintDialog.PrintDialogOptions: ... + def setOption(self, option:PySide2.QtPrintSupport.QAbstractPrintDialog.PrintDialogOption, on:bool=...) -> None: ... + def setOptions(self, options:PySide2.QtPrintSupport.QAbstractPrintDialog.PrintDialogOptions) -> None: ... + def setVisible(self, visible:bool) -> None: ... + def testOption(self, option:PySide2.QtPrintSupport.QAbstractPrintDialog.PrintDialogOption) -> bool: ... + + +class QPrintEngine(Shiboken.Object): + PPK_CollateCopies : QPrintEngine = ... # 0x0 + PPK_ColorMode : QPrintEngine = ... # 0x1 + PPK_Creator : QPrintEngine = ... # 0x2 + PPK_DocumentName : QPrintEngine = ... # 0x3 + PPK_FullPage : QPrintEngine = ... # 0x4 + PPK_NumberOfCopies : QPrintEngine = ... # 0x5 + PPK_Orientation : QPrintEngine = ... # 0x6 + PPK_OutputFileName : QPrintEngine = ... # 0x7 + PPK_PageOrder : QPrintEngine = ... # 0x8 + PPK_PageRect : QPrintEngine = ... # 0x9 + PPK_PageSize : QPrintEngine = ... # 0xa + PPK_PaperSize : QPrintEngine = ... # 0xa + PPK_PaperRect : QPrintEngine = ... # 0xb + PPK_PaperSource : QPrintEngine = ... # 0xc + PPK_PrinterName : QPrintEngine = ... # 0xd + PPK_PrinterProgram : QPrintEngine = ... # 0xe + PPK_Resolution : QPrintEngine = ... # 0xf + PPK_SelectionOption : QPrintEngine = ... # 0x10 + PPK_SupportedResolutions : QPrintEngine = ... # 0x11 + PPK_WindowsPageSize : QPrintEngine = ... # 0x12 + PPK_FontEmbedding : QPrintEngine = ... # 0x13 + PPK_Duplex : QPrintEngine = ... # 0x14 + PPK_PaperSources : QPrintEngine = ... # 0x15 + PPK_CustomPaperSize : QPrintEngine = ... # 0x16 + PPK_PageMargins : QPrintEngine = ... # 0x17 + PPK_CopyCount : QPrintEngine = ... # 0x18 + PPK_SupportsMultipleCopies: QPrintEngine = ... # 0x19 + PPK_PaperName : QPrintEngine = ... # 0x1a + PPK_QPageSize : QPrintEngine = ... # 0x1b + PPK_QPageMargins : QPrintEngine = ... # 0x1c + PPK_QPageLayout : QPrintEngine = ... # 0x1d + PPK_CustomBase : QPrintEngine = ... # 0xff00 + + class PrintEnginePropertyKey(object): + PPK_CollateCopies : QPrintEngine.PrintEnginePropertyKey = ... # 0x0 + PPK_ColorMode : QPrintEngine.PrintEnginePropertyKey = ... # 0x1 + PPK_Creator : QPrintEngine.PrintEnginePropertyKey = ... # 0x2 + PPK_DocumentName : QPrintEngine.PrintEnginePropertyKey = ... # 0x3 + PPK_FullPage : QPrintEngine.PrintEnginePropertyKey = ... # 0x4 + PPK_NumberOfCopies : QPrintEngine.PrintEnginePropertyKey = ... # 0x5 + PPK_Orientation : QPrintEngine.PrintEnginePropertyKey = ... # 0x6 + PPK_OutputFileName : QPrintEngine.PrintEnginePropertyKey = ... # 0x7 + PPK_PageOrder : QPrintEngine.PrintEnginePropertyKey = ... # 0x8 + PPK_PageRect : QPrintEngine.PrintEnginePropertyKey = ... # 0x9 + PPK_PageSize : QPrintEngine.PrintEnginePropertyKey = ... # 0xa + PPK_PaperSize : QPrintEngine.PrintEnginePropertyKey = ... # 0xa + PPK_PaperRect : QPrintEngine.PrintEnginePropertyKey = ... # 0xb + PPK_PaperSource : QPrintEngine.PrintEnginePropertyKey = ... # 0xc + PPK_PrinterName : QPrintEngine.PrintEnginePropertyKey = ... # 0xd + PPK_PrinterProgram : QPrintEngine.PrintEnginePropertyKey = ... # 0xe + PPK_Resolution : QPrintEngine.PrintEnginePropertyKey = ... # 0xf + PPK_SelectionOption : QPrintEngine.PrintEnginePropertyKey = ... # 0x10 + PPK_SupportedResolutions : QPrintEngine.PrintEnginePropertyKey = ... # 0x11 + PPK_WindowsPageSize : QPrintEngine.PrintEnginePropertyKey = ... # 0x12 + PPK_FontEmbedding : QPrintEngine.PrintEnginePropertyKey = ... # 0x13 + PPK_Duplex : QPrintEngine.PrintEnginePropertyKey = ... # 0x14 + PPK_PaperSources : QPrintEngine.PrintEnginePropertyKey = ... # 0x15 + PPK_CustomPaperSize : QPrintEngine.PrintEnginePropertyKey = ... # 0x16 + PPK_PageMargins : QPrintEngine.PrintEnginePropertyKey = ... # 0x17 + PPK_CopyCount : QPrintEngine.PrintEnginePropertyKey = ... # 0x18 + PPK_SupportsMultipleCopies: QPrintEngine.PrintEnginePropertyKey = ... # 0x19 + PPK_PaperName : QPrintEngine.PrintEnginePropertyKey = ... # 0x1a + PPK_QPageSize : QPrintEngine.PrintEnginePropertyKey = ... # 0x1b + PPK_QPageMargins : QPrintEngine.PrintEnginePropertyKey = ... # 0x1c + PPK_QPageLayout : QPrintEngine.PrintEnginePropertyKey = ... # 0x1d + PPK_CustomBase : QPrintEngine.PrintEnginePropertyKey = ... # 0xff00 + + def __init__(self) -> None: ... + + def abort(self) -> bool: ... + def metric(self, arg__1:PySide2.QtGui.QPaintDevice.PaintDeviceMetric) -> int: ... + def newPage(self) -> bool: ... + def printerState(self) -> PySide2.QtPrintSupport.QPrinter.PrinterState: ... + def property(self, key:PySide2.QtPrintSupport.QPrintEngine.PrintEnginePropertyKey) -> typing.Any: ... + def setProperty(self, key:PySide2.QtPrintSupport.QPrintEngine.PrintEnginePropertyKey, value:typing.Any) -> None: ... + + +class QPrintPreviewDialog(PySide2.QtWidgets.QDialog): + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., flags:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + @typing.overload + def __init__(self, printer:PySide2.QtPrintSupport.QPrinter, parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., flags:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + + def done(self, result:int) -> None: ... + @typing.overload + def open(self) -> None: ... + @typing.overload + def open(self, receiver:PySide2.QtCore.QObject, member:bytes) -> None: ... + def printer(self) -> PySide2.QtPrintSupport.QPrinter: ... + def setVisible(self, visible:bool) -> None: ... + + +class QPrintPreviewWidget(PySide2.QtWidgets.QWidget): + CustomZoom : QPrintPreviewWidget = ... # 0x0 + SinglePageView : QPrintPreviewWidget = ... # 0x0 + FacingPagesView : QPrintPreviewWidget = ... # 0x1 + FitToWidth : QPrintPreviewWidget = ... # 0x1 + AllPagesView : QPrintPreviewWidget = ... # 0x2 + FitInView : QPrintPreviewWidget = ... # 0x2 + + class ViewMode(object): + SinglePageView : QPrintPreviewWidget.ViewMode = ... # 0x0 + FacingPagesView : QPrintPreviewWidget.ViewMode = ... # 0x1 + AllPagesView : QPrintPreviewWidget.ViewMode = ... # 0x2 + + class ZoomMode(object): + CustomZoom : QPrintPreviewWidget.ZoomMode = ... # 0x0 + FitToWidth : QPrintPreviewWidget.ZoomMode = ... # 0x1 + FitInView : QPrintPreviewWidget.ZoomMode = ... # 0x2 + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., flags:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + @typing.overload + def __init__(self, printer:PySide2.QtPrintSupport.QPrinter, parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., flags:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + + def currentPage(self) -> int: ... + def fitInView(self) -> None: ... + def fitToWidth(self) -> None: ... + def orientation(self) -> PySide2.QtPrintSupport.QPrinter.Orientation: ... + def pageCount(self) -> int: ... + def print_(self) -> None: ... + def setAllPagesViewMode(self) -> None: ... + def setCurrentPage(self, pageNumber:int) -> None: ... + def setFacingPagesViewMode(self) -> None: ... + def setLandscapeOrientation(self) -> None: ... + def setOrientation(self, orientation:PySide2.QtPrintSupport.QPrinter.Orientation) -> None: ... + def setPortraitOrientation(self) -> None: ... + def setSinglePageViewMode(self) -> None: ... + def setViewMode(self, viewMode:PySide2.QtPrintSupport.QPrintPreviewWidget.ViewMode) -> None: ... + def setVisible(self, visible:bool) -> None: ... + def setZoomFactor(self, zoomFactor:float) -> None: ... + def setZoomMode(self, zoomMode:PySide2.QtPrintSupport.QPrintPreviewWidget.ZoomMode) -> None: ... + def updatePreview(self) -> None: ... + def viewMode(self) -> PySide2.QtPrintSupport.QPrintPreviewWidget.ViewMode: ... + def zoomFactor(self) -> float: ... + def zoomIn(self, zoom:float=...) -> None: ... + def zoomMode(self) -> PySide2.QtPrintSupport.QPrintPreviewWidget.ZoomMode: ... + def zoomOut(self, zoom:float=...) -> None: ... + + +class QPrinter(PySide2.QtGui.QPagedPaintDevice): + AllPages : QPrinter = ... # 0x0 + DuplexNone : QPrinter = ... # 0x0 + FirstPageFirst : QPrinter = ... # 0x0 + GrayScale : QPrinter = ... # 0x0 + Idle : QPrinter = ... # 0x0 + Millimeter : QPrinter = ... # 0x0 + NativeFormat : QPrinter = ... # 0x0 + OnlyOne : QPrinter = ... # 0x0 + Portrait : QPrinter = ... # 0x0 + ScreenResolution : QPrinter = ... # 0x0 + Upper : QPrinter = ... # 0x0 + Active : QPrinter = ... # 0x1 + Color : QPrinter = ... # 0x1 + DuplexAuto : QPrinter = ... # 0x1 + Landscape : QPrinter = ... # 0x1 + LastPageFirst : QPrinter = ... # 0x1 + Lower : QPrinter = ... # 0x1 + PdfFormat : QPrinter = ... # 0x1 + Point : QPrinter = ... # 0x1 + PrinterResolution : QPrinter = ... # 0x1 + Selection : QPrinter = ... # 0x1 + Aborted : QPrinter = ... # 0x2 + DuplexLongSide : QPrinter = ... # 0x2 + HighResolution : QPrinter = ... # 0x2 + Inch : QPrinter = ... # 0x2 + Middle : QPrinter = ... # 0x2 + PageRange : QPrinter = ... # 0x2 + CurrentPage : QPrinter = ... # 0x3 + DuplexShortSide : QPrinter = ... # 0x3 + Error : QPrinter = ... # 0x3 + Manual : QPrinter = ... # 0x3 + Pica : QPrinter = ... # 0x3 + Didot : QPrinter = ... # 0x4 + Envelope : QPrinter = ... # 0x4 + Cicero : QPrinter = ... # 0x5 + EnvelopeManual : QPrinter = ... # 0x5 + Auto : QPrinter = ... # 0x6 + DevicePixel : QPrinter = ... # 0x6 + Tractor : QPrinter = ... # 0x7 + SmallFormat : QPrinter = ... # 0x8 + LargeFormat : QPrinter = ... # 0x9 + LargeCapacity : QPrinter = ... # 0xa + Cassette : QPrinter = ... # 0xb + FormSource : QPrinter = ... # 0xc + MaxPageSource : QPrinter = ... # 0xd + CustomSource : QPrinter = ... # 0xe + LastPaperSource : QPrinter = ... # 0xe + + class ColorMode(object): + GrayScale : QPrinter.ColorMode = ... # 0x0 + Color : QPrinter.ColorMode = ... # 0x1 + + class DuplexMode(object): + DuplexNone : QPrinter.DuplexMode = ... # 0x0 + DuplexAuto : QPrinter.DuplexMode = ... # 0x1 + DuplexLongSide : QPrinter.DuplexMode = ... # 0x2 + DuplexShortSide : QPrinter.DuplexMode = ... # 0x3 + + class Orientation(object): + Portrait : QPrinter.Orientation = ... # 0x0 + Landscape : QPrinter.Orientation = ... # 0x1 + + class OutputFormat(object): + NativeFormat : QPrinter.OutputFormat = ... # 0x0 + PdfFormat : QPrinter.OutputFormat = ... # 0x1 + + class PageOrder(object): + FirstPageFirst : QPrinter.PageOrder = ... # 0x0 + LastPageFirst : QPrinter.PageOrder = ... # 0x1 + + class PaperSource(object): + OnlyOne : QPrinter.PaperSource = ... # 0x0 + Upper : QPrinter.PaperSource = ... # 0x0 + Lower : QPrinter.PaperSource = ... # 0x1 + Middle : QPrinter.PaperSource = ... # 0x2 + Manual : QPrinter.PaperSource = ... # 0x3 + Envelope : QPrinter.PaperSource = ... # 0x4 + EnvelopeManual : QPrinter.PaperSource = ... # 0x5 + Auto : QPrinter.PaperSource = ... # 0x6 + Tractor : QPrinter.PaperSource = ... # 0x7 + SmallFormat : QPrinter.PaperSource = ... # 0x8 + LargeFormat : QPrinter.PaperSource = ... # 0x9 + LargeCapacity : QPrinter.PaperSource = ... # 0xa + Cassette : QPrinter.PaperSource = ... # 0xb + FormSource : QPrinter.PaperSource = ... # 0xc + MaxPageSource : QPrinter.PaperSource = ... # 0xd + CustomSource : QPrinter.PaperSource = ... # 0xe + LastPaperSource : QPrinter.PaperSource = ... # 0xe + + class PrintRange(object): + AllPages : QPrinter.PrintRange = ... # 0x0 + Selection : QPrinter.PrintRange = ... # 0x1 + PageRange : QPrinter.PrintRange = ... # 0x2 + CurrentPage : QPrinter.PrintRange = ... # 0x3 + + class PrinterMode(object): + ScreenResolution : QPrinter.PrinterMode = ... # 0x0 + PrinterResolution : QPrinter.PrinterMode = ... # 0x1 + HighResolution : QPrinter.PrinterMode = ... # 0x2 + + class PrinterState(object): + Idle : QPrinter.PrinterState = ... # 0x0 + Active : QPrinter.PrinterState = ... # 0x1 + Aborted : QPrinter.PrinterState = ... # 0x2 + Error : QPrinter.PrinterState = ... # 0x3 + + class Unit(object): + Millimeter : QPrinter.Unit = ... # 0x0 + Point : QPrinter.Unit = ... # 0x1 + Inch : QPrinter.Unit = ... # 0x2 + Pica : QPrinter.Unit = ... # 0x3 + Didot : QPrinter.Unit = ... # 0x4 + Cicero : QPrinter.Unit = ... # 0x5 + DevicePixel : QPrinter.Unit = ... # 0x6 + + @typing.overload + def __init__(self, mode:PySide2.QtPrintSupport.QPrinter.PrinterMode=...) -> None: ... + @typing.overload + def __init__(self, printer:PySide2.QtPrintSupport.QPrinterInfo, mode:PySide2.QtPrintSupport.QPrinter.PrinterMode=...) -> None: ... + + def abort(self) -> bool: ... + def actualNumCopies(self) -> int: ... + def collateCopies(self) -> bool: ... + def colorMode(self) -> PySide2.QtPrintSupport.QPrinter.ColorMode: ... + def copyCount(self) -> int: ... + def creator(self) -> str: ... + def devType(self) -> int: ... + def docName(self) -> str: ... + def doubleSidedPrinting(self) -> bool: ... + def duplex(self) -> PySide2.QtPrintSupport.QPrinter.DuplexMode: ... + def fontEmbeddingEnabled(self) -> bool: ... + def fromPage(self) -> int: ... + def fullPage(self) -> bool: ... + def getPageMargins(self, unit:PySide2.QtPrintSupport.QPrinter.Unit) -> typing.Tuple: ... + def isValid(self) -> bool: ... + def metric(self, arg__1:PySide2.QtGui.QPaintDevice.PaintDeviceMetric) -> int: ... + def newPage(self) -> bool: ... + def numCopies(self) -> int: ... + def orientation(self) -> PySide2.QtPrintSupport.QPrinter.Orientation: ... + def outputFileName(self) -> str: ... + def outputFormat(self) -> PySide2.QtPrintSupport.QPrinter.OutputFormat: ... + def pageOrder(self) -> PySide2.QtPrintSupport.QPrinter.PageOrder: ... + @typing.overload + def pageRect(self) -> PySide2.QtCore.QRect: ... + @typing.overload + def pageRect(self, arg__1:PySide2.QtPrintSupport.QPrinter.Unit) -> PySide2.QtCore.QRectF: ... + def pageSize(self) -> PySide2.QtGui.QPagedPaintDevice.PageSize: ... + def paintEngine(self) -> PySide2.QtGui.QPaintEngine: ... + def paperName(self) -> str: ... + @typing.overload + def paperRect(self) -> PySide2.QtCore.QRect: ... + @typing.overload + def paperRect(self, arg__1:PySide2.QtPrintSupport.QPrinter.Unit) -> PySide2.QtCore.QRectF: ... + @typing.overload + def paperSize(self) -> PySide2.QtGui.QPagedPaintDevice.PageSize: ... + @typing.overload + def paperSize(self, unit:PySide2.QtPrintSupport.QPrinter.Unit) -> PySide2.QtCore.QSizeF: ... + def paperSource(self) -> PySide2.QtPrintSupport.QPrinter.PaperSource: ... + def pdfVersion(self) -> PySide2.QtGui.QPagedPaintDevice.PdfVersion: ... + def printEngine(self) -> PySide2.QtPrintSupport.QPrintEngine: ... + def printProgram(self) -> str: ... + def printRange(self) -> PySide2.QtPrintSupport.QPrinter.PrintRange: ... + def printerName(self) -> str: ... + def printerState(self) -> PySide2.QtPrintSupport.QPrinter.PrinterState: ... + def resolution(self) -> int: ... + def setCollateCopies(self, collate:bool) -> None: ... + def setColorMode(self, arg__1:PySide2.QtPrintSupport.QPrinter.ColorMode) -> None: ... + def setCopyCount(self, arg__1:int) -> None: ... + def setCreator(self, arg__1:str) -> None: ... + def setDocName(self, arg__1:str) -> None: ... + def setDoubleSidedPrinting(self, enable:bool) -> None: ... + def setDuplex(self, duplex:PySide2.QtPrintSupport.QPrinter.DuplexMode) -> None: ... + def setEngines(self, printEngine:PySide2.QtPrintSupport.QPrintEngine, paintEngine:PySide2.QtGui.QPaintEngine) -> None: ... + def setFontEmbeddingEnabled(self, enable:bool) -> None: ... + def setFromTo(self, fromPage:int, toPage:int) -> None: ... + def setFullPage(self, arg__1:bool) -> None: ... + def setMargins(self, m:PySide2.QtGui.QPagedPaintDevice.Margins) -> None: ... + def setNumCopies(self, arg__1:int) -> None: ... + def setOrientation(self, arg__1:PySide2.QtPrintSupport.QPrinter.Orientation) -> None: ... + def setOutputFileName(self, arg__1:str) -> None: ... + def setOutputFormat(self, format:PySide2.QtPrintSupport.QPrinter.OutputFormat) -> None: ... + @typing.overload + def setPageMargins(self, left:float, top:float, right:float, bottom:float, unit:PySide2.QtPrintSupport.QPrinter.Unit) -> None: ... + @typing.overload + def setPageMargins(self, margins:PySide2.QtCore.QMarginsF) -> bool: ... + def setPageOrder(self, arg__1:PySide2.QtPrintSupport.QPrinter.PageOrder) -> None: ... + @typing.overload + def setPageSize(self, arg__1:PySide2.QtGui.QPageSize) -> bool: ... + @typing.overload + def setPageSize(self, arg__1:PySide2.QtGui.QPagedPaintDevice.PageSize) -> None: ... + def setPageSizeMM(self, size:PySide2.QtCore.QSizeF) -> None: ... + def setPaperName(self, paperName:str) -> None: ... + @typing.overload + def setPaperSize(self, arg__1:PySide2.QtGui.QPagedPaintDevice.PageSize) -> None: ... + @typing.overload + def setPaperSize(self, paperSize:PySide2.QtCore.QSizeF, unit:PySide2.QtPrintSupport.QPrinter.Unit) -> None: ... + def setPaperSource(self, arg__1:PySide2.QtPrintSupport.QPrinter.PaperSource) -> None: ... + def setPdfVersion(self, version:PySide2.QtGui.QPagedPaintDevice.PdfVersion) -> None: ... + def setPrintProgram(self, arg__1:str) -> None: ... + def setPrintRange(self, range:PySide2.QtPrintSupport.QPrinter.PrintRange) -> None: ... + def setPrinterName(self, arg__1:str) -> None: ... + def setResolution(self, arg__1:int) -> None: ... + def setWinPageSize(self, winPageSize:int) -> None: ... + def supportedPaperSources(self) -> typing.List: ... + def supportedResolutions(self) -> typing.List: ... + def supportsMultipleCopies(self) -> bool: ... + def toPage(self) -> int: ... + def winPageSize(self) -> int: ... + + +class QPrinterInfo(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtPrintSupport.QPrinterInfo) -> None: ... + @typing.overload + def __init__(self, printer:PySide2.QtPrintSupport.QPrinter) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @staticmethod + def availablePrinterNames() -> typing.List: ... + @staticmethod + def availablePrinters() -> typing.List: ... + def defaultColorMode(self) -> PySide2.QtPrintSupport.QPrinter.ColorMode: ... + def defaultDuplexMode(self) -> PySide2.QtPrintSupport.QPrinter.DuplexMode: ... + def defaultPageSize(self) -> PySide2.QtGui.QPageSize: ... + @staticmethod + def defaultPrinter() -> PySide2.QtPrintSupport.QPrinterInfo: ... + @staticmethod + def defaultPrinterName() -> str: ... + def description(self) -> str: ... + def isDefault(self) -> bool: ... + def isNull(self) -> bool: ... + def isRemote(self) -> bool: ... + def location(self) -> str: ... + def makeAndModel(self) -> str: ... + def maximumPhysicalPageSize(self) -> PySide2.QtGui.QPageSize: ... + def minimumPhysicalPageSize(self) -> PySide2.QtGui.QPageSize: ... + @staticmethod + def printerInfo(printerName:str) -> PySide2.QtPrintSupport.QPrinterInfo: ... + def printerName(self) -> str: ... + def state(self) -> PySide2.QtPrintSupport.QPrinter.PrinterState: ... + def supportedColorModes(self) -> typing.List: ... + def supportedDuplexModes(self) -> typing.List: ... + def supportedPageSizes(self) -> typing.List: ... + def supportedPaperSizes(self) -> typing.List: ... + def supportedResolutions(self) -> typing.List: ... + def supportedSizesWithNames(self) -> typing.List: ... + def supportsCustomPageSizes(self) -> bool: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtQml.pyd b/venv/Lib/site-packages/PySide2/QtQml.pyd new file mode 100644 index 0000000..523c095 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtQml.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtQml.pyi b/venv/Lib/site-packages/PySide2/QtQml.pyi new file mode 100644 index 0000000..79030d7 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtQml.pyi @@ -0,0 +1,816 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtQml, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtQml +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtNetwork +import PySide2.QtQml + + +class ListProperty(PySide2.QtCore.Property): + + @staticmethod + def __init__(type:type, append:typing.Callable, at:typing.Optional[typing.Callable]=..., clear:typing.Optional[typing.Callable]=..., count:typing.Optional[typing.Callable]=...) -> None: ... + + +class QJSEngine(PySide2.QtCore.QObject): + AllExtensions : QJSEngine = ... # -0x1 + TranslationExtension : QJSEngine = ... # 0x1 + ConsoleExtension : QJSEngine = ... # 0x2 + GarbageCollectionExtension: QJSEngine = ... # 0x4 + + class Extension(object): + AllExtensions : QJSEngine.Extension = ... # -0x1 + TranslationExtension : QJSEngine.Extension = ... # 0x1 + ConsoleExtension : QJSEngine.Extension = ... # 0x2 + GarbageCollectionExtension: QJSEngine.Extension = ... # 0x4 + + class Extensions(object): ... + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + + def collectGarbage(self) -> None: ... + def evaluate(self, program:str, fileName:str=..., lineNumber:int=...) -> PySide2.QtQml.QJSValue: ... + def globalObject(self) -> PySide2.QtQml.QJSValue: ... + def importModule(self, fileName:str) -> PySide2.QtQml.QJSValue: ... + def installExtensions(self, extensions:PySide2.QtQml.QJSEngine.Extensions, object:PySide2.QtQml.QJSValue=...) -> None: ... + def installTranslatorFunctions(self, object:PySide2.QtQml.QJSValue=...) -> None: ... + def isInterrupted(self) -> bool: ... + def newArray(self, length:int=...) -> PySide2.QtQml.QJSValue: ... + def newErrorObject(self, errorType:PySide2.QtQml.QJSValue.ErrorType, message:str=...) -> PySide2.QtQml.QJSValue: ... + def newObject(self) -> PySide2.QtQml.QJSValue: ... + def newQMetaObject(self, metaObject:PySide2.QtCore.QMetaObject) -> PySide2.QtQml.QJSValue: ... + def newQObject(self, object:PySide2.QtCore.QObject) -> PySide2.QtQml.QJSValue: ... + def setInterrupted(self, interrupted:bool) -> None: ... + def setUiLanguage(self, language:str) -> None: ... + @typing.overload + def throwError(self, errorType:PySide2.QtQml.QJSValue.ErrorType, message:str=...) -> None: ... + @typing.overload + def throwError(self, message:str) -> None: ... + def toScriptValue(self, arg__1:typing.Any) -> PySide2.QtQml.QJSValue: ... + def uiLanguage(self) -> str: ... + + +class QJSValue(Shiboken.Object): + NoError : QJSValue = ... # 0x0 + NullValue : QJSValue = ... # 0x0 + GenericError : QJSValue = ... # 0x1 + UndefinedValue : QJSValue = ... # 0x1 + EvalError : QJSValue = ... # 0x2 + RangeError : QJSValue = ... # 0x3 + ReferenceError : QJSValue = ... # 0x4 + SyntaxError : QJSValue = ... # 0x5 + TypeError : QJSValue = ... # 0x6 + URIError : QJSValue = ... # 0x7 + + class ErrorType(object): + NoError : QJSValue.ErrorType = ... # 0x0 + GenericError : QJSValue.ErrorType = ... # 0x1 + EvalError : QJSValue.ErrorType = ... # 0x2 + RangeError : QJSValue.ErrorType = ... # 0x3 + ReferenceError : QJSValue.ErrorType = ... # 0x4 + SyntaxError : QJSValue.ErrorType = ... # 0x5 + TypeError : QJSValue.ErrorType = ... # 0x6 + URIError : QJSValue.ErrorType = ... # 0x7 + + class SpecialValue(object): + NullValue : QJSValue.SpecialValue = ... # 0x0 + UndefinedValue : QJSValue.SpecialValue = ... # 0x1 + + @typing.overload + def __init__(self, other:PySide2.QtQml.QJSValue) -> None: ... + @typing.overload + def __init__(self, str:bytes) -> None: ... + @typing.overload + def __init__(self, value:PySide2.QtQml.QJSValue.SpecialValue=...) -> None: ... + @typing.overload + def __init__(self, value:str) -> None: ... + @typing.overload + def __init__(self, value:bool) -> None: ... + @typing.overload + def __init__(self, value:float) -> None: ... + @typing.overload + def __init__(self, value:int) -> None: ... + @typing.overload + def __init__(self, value:int) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def call(self, args:typing.Sequence=...) -> PySide2.QtQml.QJSValue: ... + def callAsConstructor(self, args:typing.Sequence=...) -> PySide2.QtQml.QJSValue: ... + def callWithInstance(self, instance:PySide2.QtQml.QJSValue, args:typing.Sequence=...) -> PySide2.QtQml.QJSValue: ... + def deleteProperty(self, name:str) -> bool: ... + def engine(self) -> PySide2.QtQml.QJSEngine: ... + def equals(self, other:PySide2.QtQml.QJSValue) -> bool: ... + def errorType(self) -> PySide2.QtQml.QJSValue.ErrorType: ... + def hasOwnProperty(self, name:str) -> bool: ... + def hasProperty(self, name:str) -> bool: ... + def isArray(self) -> bool: ... + def isBool(self) -> bool: ... + def isCallable(self) -> bool: ... + def isDate(self) -> bool: ... + def isError(self) -> bool: ... + def isNull(self) -> bool: ... + def isNumber(self) -> bool: ... + def isObject(self) -> bool: ... + def isQMetaObject(self) -> bool: ... + def isQObject(self) -> bool: ... + def isRegExp(self) -> bool: ... + def isString(self) -> bool: ... + def isUndefined(self) -> bool: ... + def isVariant(self) -> bool: ... + @typing.overload + def property(self, arrayIndex:int) -> PySide2.QtQml.QJSValue: ... + @typing.overload + def property(self, name:str) -> PySide2.QtQml.QJSValue: ... + def prototype(self) -> PySide2.QtQml.QJSValue: ... + @typing.overload + def setProperty(self, arrayIndex:int, value:PySide2.QtQml.QJSValue) -> None: ... + @typing.overload + def setProperty(self, name:str, value:PySide2.QtQml.QJSValue) -> None: ... + def setPrototype(self, prototype:PySide2.QtQml.QJSValue) -> None: ... + def strictlyEquals(self, other:PySide2.QtQml.QJSValue) -> bool: ... + def toBool(self) -> bool: ... + def toDateTime(self) -> PySide2.QtCore.QDateTime: ... + def toInt(self) -> int: ... + def toNumber(self) -> float: ... + def toQMetaObject(self) -> PySide2.QtCore.QMetaObject: ... + def toQObject(self) -> PySide2.QtCore.QObject: ... + def toString(self) -> str: ... + def toUInt(self) -> int: ... + def toVariant(self) -> typing.Any: ... + + +class QJSValueIterator(Shiboken.Object): + + def __init__(self, value:PySide2.QtQml.QJSValue) -> None: ... + + def hasNext(self) -> bool: ... + def name(self) -> str: ... + def next(self) -> bool: ... + def value(self) -> PySide2.QtQml.QJSValue: ... + + +class QQmlAbstractUrlInterceptor(Shiboken.Object): + QmlFile : QQmlAbstractUrlInterceptor = ... # 0x0 + JavaScriptFile : QQmlAbstractUrlInterceptor = ... # 0x1 + QmldirFile : QQmlAbstractUrlInterceptor = ... # 0x2 + UrlString : QQmlAbstractUrlInterceptor = ... # 0x1000 + + class DataType(object): + QmlFile : QQmlAbstractUrlInterceptor.DataType = ... # 0x0 + JavaScriptFile : QQmlAbstractUrlInterceptor.DataType = ... # 0x1 + QmldirFile : QQmlAbstractUrlInterceptor.DataType = ... # 0x2 + UrlString : QQmlAbstractUrlInterceptor.DataType = ... # 0x1000 + + def __init__(self) -> None: ... + + def intercept(self, path:PySide2.QtCore.QUrl, type:PySide2.QtQml.QQmlAbstractUrlInterceptor.DataType) -> PySide2.QtCore.QUrl: ... + + +class QQmlApplicationEngine(PySide2.QtQml.QQmlEngine): + + @typing.overload + def __init__(self, filePath:str, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, url:PySide2.QtCore.QUrl, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + @typing.overload + def load(self, filePath:str) -> None: ... + @typing.overload + def load(self, url:PySide2.QtCore.QUrl) -> None: ... + def loadData(self, data:PySide2.QtCore.QByteArray, url:PySide2.QtCore.QUrl=...) -> None: ... + def rootObjects(self) -> typing.List: ... + def setInitialProperties(self, initialProperties:typing.Dict) -> None: ... + + +class QQmlComponent(PySide2.QtCore.QObject): + Null : QQmlComponent = ... # 0x0 + PreferSynchronous : QQmlComponent = ... # 0x0 + Asynchronous : QQmlComponent = ... # 0x1 + Ready : QQmlComponent = ... # 0x1 + Loading : QQmlComponent = ... # 0x2 + Error : QQmlComponent = ... # 0x3 + + class CompilationMode(object): + PreferSynchronous : QQmlComponent.CompilationMode = ... # 0x0 + Asynchronous : QQmlComponent.CompilationMode = ... # 0x1 + + class Status(object): + Null : QQmlComponent.Status = ... # 0x0 + Ready : QQmlComponent.Status = ... # 0x1 + Loading : QQmlComponent.Status = ... # 0x2 + Error : QQmlComponent.Status = ... # 0x3 + + @typing.overload + def __init__(self, arg__1:PySide2.QtQml.QQmlEngine, fileName:str, mode:PySide2.QtQml.QQmlComponent.CompilationMode, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtQml.QQmlEngine, fileName:str, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtQml.QQmlEngine, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtQml.QQmlEngine, url:PySide2.QtCore.QUrl, mode:PySide2.QtQml.QQmlComponent.CompilationMode, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtQml.QQmlEngine, url:PySide2.QtCore.QUrl, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def beginCreate(self, arg__1:PySide2.QtQml.QQmlContext) -> PySide2.QtCore.QObject: ... + def completeCreate(self) -> None: ... + @typing.overload + def create(self, arg__1:PySide2.QtQml.QQmlIncubator, context:typing.Optional[PySide2.QtQml.QQmlContext]=..., forContext:typing.Optional[PySide2.QtQml.QQmlContext]=...) -> None: ... + @typing.overload + def create(self, context:typing.Optional[PySide2.QtQml.QQmlContext]=...) -> PySide2.QtCore.QObject: ... + def createWithInitialProperties(self, initialProperties:typing.Dict, context:typing.Optional[PySide2.QtQml.QQmlContext]=...) -> PySide2.QtCore.QObject: ... + def creationContext(self) -> PySide2.QtQml.QQmlContext: ... + def engine(self) -> PySide2.QtQml.QQmlEngine: ... + def errorString(self) -> str: ... + def errors(self) -> typing.List: ... + def isError(self) -> bool: ... + def isLoading(self) -> bool: ... + def isNull(self) -> bool: ... + def isReady(self) -> bool: ... + @typing.overload + def loadUrl(self, url:PySide2.QtCore.QUrl) -> None: ... + @typing.overload + def loadUrl(self, url:PySide2.QtCore.QUrl, mode:PySide2.QtQml.QQmlComponent.CompilationMode) -> None: ... + def progress(self) -> float: ... + def setData(self, arg__1:PySide2.QtCore.QByteArray, baseUrl:PySide2.QtCore.QUrl) -> None: ... + def setInitialProperties(self, component:PySide2.QtCore.QObject, properties:typing.Dict) -> None: ... + def status(self) -> PySide2.QtQml.QQmlComponent.Status: ... + def url(self) -> PySide2.QtCore.QUrl: ... + + +class QQmlContext(PySide2.QtCore.QObject): + + @typing.overload + def __init__(self, parent:PySide2.QtQml.QQmlContext, objParent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:PySide2.QtQml.QQmlEngine, objParent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def baseUrl(self) -> PySide2.QtCore.QUrl: ... + def contextObject(self) -> PySide2.QtCore.QObject: ... + def contextProperty(self, arg__1:str) -> typing.Any: ... + def engine(self) -> PySide2.QtQml.QQmlEngine: ... + def isValid(self) -> bool: ... + def nameForObject(self, arg__1:PySide2.QtCore.QObject) -> str: ... + def parentContext(self) -> PySide2.QtQml.QQmlContext: ... + def resolvedUrl(self, arg__1:PySide2.QtCore.QUrl) -> PySide2.QtCore.QUrl: ... + def setBaseUrl(self, arg__1:PySide2.QtCore.QUrl) -> None: ... + def setContextObject(self, arg__1:PySide2.QtCore.QObject) -> None: ... + @typing.overload + def setContextProperty(self, arg__1:str, arg__2:PySide2.QtCore.QObject) -> None: ... + @typing.overload + def setContextProperty(self, arg__1:str, arg__2:typing.Any) -> None: ... + + +class QQmlDebuggingEnabler(Shiboken.Object): + DoNotWaitForClient : QQmlDebuggingEnabler = ... # 0x0 + WaitForClient : QQmlDebuggingEnabler = ... # 0x1 + + class StartMode(object): + DoNotWaitForClient : QQmlDebuggingEnabler.StartMode = ... # 0x0 + WaitForClient : QQmlDebuggingEnabler.StartMode = ... # 0x1 + + def __init__(self, printWarning:bool=...) -> None: ... + + @staticmethod + def connectToLocalDebugger(socketFileName:str, mode:PySide2.QtQml.QQmlDebuggingEnabler.StartMode=...) -> bool: ... + @staticmethod + def debuggerServices() -> typing.List: ... + @staticmethod + def inspectorServices() -> typing.List: ... + @staticmethod + def nativeDebuggerServices() -> typing.List: ... + @staticmethod + def profilerServices() -> typing.List: ... + @staticmethod + def setServices(services:typing.Sequence) -> None: ... + @staticmethod + def startDebugConnector(pluginName:str, configuration:typing.Dict=...) -> bool: ... + @staticmethod + def startTcpDebugServer(port:int, mode:PySide2.QtQml.QQmlDebuggingEnabler.StartMode=..., hostName:str=...) -> bool: ... + + +class QQmlEngine(PySide2.QtQml.QJSEngine): + CppOwnership : QQmlEngine = ... # 0x0 + JavaScriptOwnership : QQmlEngine = ... # 0x1 + + class ObjectOwnership(object): + CppOwnership : QQmlEngine.ObjectOwnership = ... # 0x0 + JavaScriptOwnership : QQmlEngine.ObjectOwnership = ... # 0x1 + + def __init__(self, p:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def addImageProvider(self, id:str, arg__2:PySide2.QtQml.QQmlImageProviderBase) -> None: ... + def addImportPath(self, dir:str) -> None: ... + def addNamedBundle(self, name:str, fileName:str) -> bool: ... + def addPluginPath(self, dir:str) -> None: ... + def baseUrl(self) -> PySide2.QtCore.QUrl: ... + def clearComponentCache(self) -> None: ... + @staticmethod + def contextForObject(arg__1:PySide2.QtCore.QObject) -> PySide2.QtQml.QQmlContext: ... + def event(self, arg__1:PySide2.QtCore.QEvent) -> bool: ... + def imageProvider(self, id:str) -> PySide2.QtQml.QQmlImageProviderBase: ... + def importPathList(self) -> typing.List: ... + def importPlugin(self, filePath:str, uri:str, errors:typing.Sequence) -> bool: ... + def incubationController(self) -> PySide2.QtQml.QQmlIncubationController: ... + def networkAccessManager(self) -> PySide2.QtNetwork.QNetworkAccessManager: ... + def networkAccessManagerFactory(self) -> PySide2.QtQml.QQmlNetworkAccessManagerFactory: ... + @staticmethod + def objectOwnership(arg__1:PySide2.QtCore.QObject) -> PySide2.QtQml.QQmlEngine.ObjectOwnership: ... + def offlineStorageDatabaseFilePath(self, databaseName:str) -> str: ... + def offlineStoragePath(self) -> str: ... + def outputWarningsToStandardError(self) -> bool: ... + def pluginPathList(self) -> typing.List: ... + def removeImageProvider(self, id:str) -> None: ... + def retranslate(self) -> None: ... + def rootContext(self) -> PySide2.QtQml.QQmlContext: ... + def setBaseUrl(self, arg__1:PySide2.QtCore.QUrl) -> None: ... + @staticmethod + def setContextForObject(arg__1:PySide2.QtCore.QObject, arg__2:PySide2.QtQml.QQmlContext) -> None: ... + def setImportPathList(self, paths:typing.Sequence) -> None: ... + def setIncubationController(self, arg__1:PySide2.QtQml.QQmlIncubationController) -> None: ... + def setNetworkAccessManagerFactory(self, arg__1:PySide2.QtQml.QQmlNetworkAccessManagerFactory) -> None: ... + @staticmethod + def setObjectOwnership(arg__1:PySide2.QtCore.QObject, arg__2:PySide2.QtQml.QQmlEngine.ObjectOwnership) -> None: ... + def setOfflineStoragePath(self, dir:str) -> None: ... + def setOutputWarningsToStandardError(self, arg__1:bool) -> None: ... + def setPluginPathList(self, paths:typing.Sequence) -> None: ... + def setUrlInterceptor(self, urlInterceptor:PySide2.QtQml.QQmlAbstractUrlInterceptor) -> None: ... + def trimComponentCache(self) -> None: ... + def urlInterceptor(self) -> PySide2.QtQml.QQmlAbstractUrlInterceptor: ... + + +class QQmlError(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtQml.QQmlError) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def column(self) -> int: ... + def description(self) -> str: ... + def isValid(self) -> bool: ... + def line(self) -> int: ... + def messageType(self) -> PySide2.QtCore.QtMsgType: ... + def object(self) -> PySide2.QtCore.QObject: ... + def setColumn(self, arg__1:int) -> None: ... + def setDescription(self, arg__1:str) -> None: ... + def setLine(self, arg__1:int) -> None: ... + def setMessageType(self, messageType:PySide2.QtCore.QtMsgType) -> None: ... + def setObject(self, arg__1:PySide2.QtCore.QObject) -> None: ... + def setUrl(self, arg__1:PySide2.QtCore.QUrl) -> None: ... + def toString(self) -> str: ... + def url(self) -> PySide2.QtCore.QUrl: ... + + +class QQmlExpression(PySide2.QtCore.QObject): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtQml.QQmlContext, arg__2:PySide2.QtCore.QObject, arg__3:str, arg__4:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtQml.QQmlScriptString, arg__2:typing.Optional[PySide2.QtQml.QQmlContext]=..., arg__3:typing.Optional[PySide2.QtCore.QObject]=..., arg__4:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def clearError(self) -> None: ... + def columnNumber(self) -> int: ... + def context(self) -> PySide2.QtQml.QQmlContext: ... + def engine(self) -> PySide2.QtQml.QQmlEngine: ... + def error(self) -> PySide2.QtQml.QQmlError: ... + def evaluate(self) -> typing.Tuple: ... + def expression(self) -> str: ... + def hasError(self) -> bool: ... + def lineNumber(self) -> int: ... + def notifyOnValueChanged(self) -> bool: ... + def scopeObject(self) -> PySide2.QtCore.QObject: ... + def setExpression(self, arg__1:str) -> None: ... + def setNotifyOnValueChanged(self, arg__1:bool) -> None: ... + def setSourceLocation(self, fileName:str, line:int, column:int=...) -> None: ... + def sourceFile(self) -> str: ... + + +class QQmlExtensionInterface(PySide2.QtQml.QQmlTypesExtensionInterface): + + def __init__(self) -> None: ... + + def initializeEngine(self, engine:PySide2.QtQml.QQmlEngine, uri:bytes) -> None: ... + + +class QQmlExtensionPlugin(PySide2.QtCore.QObject, PySide2.QtQml.QQmlExtensionInterface): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def baseUrl(self) -> PySide2.QtCore.QUrl: ... + def initializeEngine(self, engine:PySide2.QtQml.QQmlEngine, uri:bytes) -> None: ... + def registerTypes(self, uri:bytes) -> None: ... + + +class QQmlFile(Shiboken.Object): + Null : QQmlFile = ... # 0x0 + Ready : QQmlFile = ... # 0x1 + Error : QQmlFile = ... # 0x2 + Loading : QQmlFile = ... # 0x3 + + class Status(object): + Null : QQmlFile.Status = ... # 0x0 + Ready : QQmlFile.Status = ... # 0x1 + Error : QQmlFile.Status = ... # 0x2 + Loading : QQmlFile.Status = ... # 0x3 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtQml.QQmlEngine, arg__2:PySide2.QtCore.QUrl) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtQml.QQmlEngine, arg__2:str) -> None: ... + + @typing.overload + def clear(self) -> None: ... + @typing.overload + def clear(self, arg__1:PySide2.QtCore.QObject) -> None: ... + @typing.overload + def connectDownloadProgress(self, arg__1:PySide2.QtCore.QObject, arg__2:bytes) -> bool: ... + @typing.overload + def connectDownloadProgress(self, arg__1:PySide2.QtCore.QObject, arg__2:int) -> bool: ... + @typing.overload + def connectFinished(self, arg__1:PySide2.QtCore.QObject, arg__2:bytes) -> bool: ... + @typing.overload + def connectFinished(self, arg__1:PySide2.QtCore.QObject, arg__2:int) -> bool: ... + def data(self) -> bytes: ... + def dataByteArray(self) -> PySide2.QtCore.QByteArray: ... + def error(self) -> str: ... + def isError(self) -> bool: ... + def isLoading(self) -> bool: ... + @typing.overload + @staticmethod + def isLocalFile(url:PySide2.QtCore.QUrl) -> bool: ... + @typing.overload + @staticmethod + def isLocalFile(url:str) -> bool: ... + def isNull(self) -> bool: ... + def isReady(self) -> bool: ... + @typing.overload + @staticmethod + def isSynchronous(url:PySide2.QtCore.QUrl) -> bool: ... + @typing.overload + @staticmethod + def isSynchronous(url:str) -> bool: ... + @typing.overload + def load(self, arg__1:PySide2.QtQml.QQmlEngine, arg__2:PySide2.QtCore.QUrl) -> None: ... + @typing.overload + def load(self, arg__1:PySide2.QtQml.QQmlEngine, arg__2:str) -> None: ... + def size(self) -> int: ... + def status(self) -> PySide2.QtQml.QQmlFile.Status: ... + def url(self) -> PySide2.QtCore.QUrl: ... + @typing.overload + @staticmethod + def urlToLocalFileOrQrc(arg__1:PySide2.QtCore.QUrl) -> str: ... + @typing.overload + @staticmethod + def urlToLocalFileOrQrc(arg__1:str) -> str: ... + + +class QQmlFileSelector(PySide2.QtCore.QObject): + + def __init__(self, engine:PySide2.QtQml.QQmlEngine, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + @staticmethod + def get(arg__1:PySide2.QtQml.QQmlEngine) -> PySide2.QtQml.QQmlFileSelector: ... + def selector(self) -> PySide2.QtCore.QFileSelector: ... + def setExtraSelectors(self, strings:typing.Sequence) -> None: ... + def setSelector(self, selector:PySide2.QtCore.QFileSelector) -> None: ... + + +class QQmlImageProviderBase(Shiboken.Object): + Image : QQmlImageProviderBase = ... # 0x0 + ForceAsynchronousImageLoading: QQmlImageProviderBase = ... # 0x1 + Pixmap : QQmlImageProviderBase = ... # 0x1 + Texture : QQmlImageProviderBase = ... # 0x2 + Invalid : QQmlImageProviderBase = ... # 0x3 + ImageResponse : QQmlImageProviderBase = ... # 0x4 + + class Flag(object): + ForceAsynchronousImageLoading: QQmlImageProviderBase.Flag = ... # 0x1 + + class Flags(object): ... + + class ImageType(object): + Image : QQmlImageProviderBase.ImageType = ... # 0x0 + Pixmap : QQmlImageProviderBase.ImageType = ... # 0x1 + Texture : QQmlImageProviderBase.ImageType = ... # 0x2 + Invalid : QQmlImageProviderBase.ImageType = ... # 0x3 + ImageResponse : QQmlImageProviderBase.ImageType = ... # 0x4 + def flags(self) -> PySide2.QtQml.QQmlImageProviderBase.Flags: ... + def imageType(self) -> PySide2.QtQml.QQmlImageProviderBase.ImageType: ... + + +class QQmlIncubationController(Shiboken.Object): + + def __init__(self) -> None: ... + + def engine(self) -> PySide2.QtQml.QQmlEngine: ... + def incubateFor(self, msecs:int) -> None: ... + def incubateWhile(self, msecs:int=...) -> bool: ... + def incubatingObjectCount(self) -> int: ... + def incubatingObjectCountChanged(self, arg__1:int) -> None: ... + + +class QQmlIncubator(Shiboken.Object): + Asynchronous : QQmlIncubator = ... # 0x0 + Null : QQmlIncubator = ... # 0x0 + AsynchronousIfNested : QQmlIncubator = ... # 0x1 + Ready : QQmlIncubator = ... # 0x1 + Loading : QQmlIncubator = ... # 0x2 + Synchronous : QQmlIncubator = ... # 0x2 + Error : QQmlIncubator = ... # 0x3 + + class IncubationMode(object): + Asynchronous : QQmlIncubator.IncubationMode = ... # 0x0 + AsynchronousIfNested : QQmlIncubator.IncubationMode = ... # 0x1 + Synchronous : QQmlIncubator.IncubationMode = ... # 0x2 + + class Status(object): + Null : QQmlIncubator.Status = ... # 0x0 + Ready : QQmlIncubator.Status = ... # 0x1 + Loading : QQmlIncubator.Status = ... # 0x2 + Error : QQmlIncubator.Status = ... # 0x3 + + def __init__(self, arg__1:PySide2.QtQml.QQmlIncubator.IncubationMode=...) -> None: ... + + def clear(self) -> None: ... + def errors(self) -> typing.List: ... + def forceCompletion(self) -> None: ... + def incubationMode(self) -> PySide2.QtQml.QQmlIncubator.IncubationMode: ... + def isError(self) -> bool: ... + def isLoading(self) -> bool: ... + def isNull(self) -> bool: ... + def isReady(self) -> bool: ... + def object(self) -> PySide2.QtCore.QObject: ... + def setInitialProperties(self, initialProperties:typing.Dict) -> None: ... + def setInitialState(self, arg__1:PySide2.QtCore.QObject) -> None: ... + def status(self) -> PySide2.QtQml.QQmlIncubator.Status: ... + def statusChanged(self, arg__1:PySide2.QtQml.QQmlIncubator.Status) -> None: ... + + +class QQmlListReference(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtCore.QObject, property:bytes, arg__3:typing.Optional[PySide2.QtQml.QQmlEngine]=...) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtQml.QQmlListReference) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def append(self, arg__1:PySide2.QtCore.QObject) -> bool: ... + def at(self, arg__1:int) -> PySide2.QtCore.QObject: ... + def canAppend(self) -> bool: ... + def canAt(self) -> bool: ... + def canClear(self) -> bool: ... + def canCount(self) -> bool: ... + def canRemoveLast(self) -> bool: ... + def canReplace(self) -> bool: ... + def clear(self) -> bool: ... + def count(self) -> int: ... + def isManipulable(self) -> bool: ... + def isReadable(self) -> bool: ... + def isValid(self) -> bool: ... + def listElementType(self) -> PySide2.QtCore.QMetaObject: ... + def object(self) -> PySide2.QtCore.QObject: ... + def removeLast(self) -> bool: ... + def replace(self, arg__1:int, arg__2:PySide2.QtCore.QObject) -> bool: ... + + +class QQmlNetworkAccessManagerFactory(Shiboken.Object): + + def __init__(self) -> None: ... + + def create(self, parent:PySide2.QtCore.QObject) -> PySide2.QtNetwork.QNetworkAccessManager: ... + + +class QQmlParserStatus(Shiboken.Object): + + def __init__(self) -> None: ... + + def classBegin(self) -> None: ... + def componentComplete(self) -> None: ... + + +class QQmlProperty(Shiboken.Object): + Invalid : QQmlProperty = ... # 0x0 + InvalidCategory : QQmlProperty = ... # 0x0 + List : QQmlProperty = ... # 0x1 + Property : QQmlProperty = ... # 0x1 + Object : QQmlProperty = ... # 0x2 + SignalProperty : QQmlProperty = ... # 0x2 + Normal : QQmlProperty = ... # 0x3 + + class PropertyTypeCategory(object): + InvalidCategory : QQmlProperty.PropertyTypeCategory = ... # 0x0 + List : QQmlProperty.PropertyTypeCategory = ... # 0x1 + Object : QQmlProperty.PropertyTypeCategory = ... # 0x2 + Normal : QQmlProperty.PropertyTypeCategory = ... # 0x3 + + class Type(object): + Invalid : QQmlProperty.Type = ... # 0x0 + Property : QQmlProperty.Type = ... # 0x1 + SignalProperty : QQmlProperty.Type = ... # 0x2 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtCore.QObject) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtCore.QObject, arg__2:PySide2.QtQml.QQmlContext) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtCore.QObject, arg__2:PySide2.QtQml.QQmlEngine) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtCore.QObject, arg__2:str) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtCore.QObject, arg__2:str, arg__3:PySide2.QtQml.QQmlContext) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtCore.QObject, arg__2:str, arg__3:PySide2.QtQml.QQmlEngine) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtQml.QQmlProperty) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @typing.overload + def connectNotifySignal(self, dest:PySide2.QtCore.QObject, method:int) -> bool: ... + @typing.overload + def connectNotifySignal(self, dest:PySide2.QtCore.QObject, slot:bytes) -> bool: ... + def hasNotifySignal(self) -> bool: ... + def index(self) -> int: ... + def isDesignable(self) -> bool: ... + def isProperty(self) -> bool: ... + def isResettable(self) -> bool: ... + def isSignalProperty(self) -> bool: ... + def isValid(self) -> bool: ... + def isWritable(self) -> bool: ... + def method(self) -> PySide2.QtCore.QMetaMethod: ... + def name(self) -> str: ... + def needsNotifySignal(self) -> bool: ... + def object(self) -> PySide2.QtCore.QObject: ... + def property(self) -> PySide2.QtCore.QMetaProperty: ... + def propertyType(self) -> int: ... + def propertyTypeCategory(self) -> PySide2.QtQml.QQmlProperty.PropertyTypeCategory: ... + def propertyTypeName(self) -> bytes: ... + @typing.overload + @staticmethod + def read(arg__1:PySide2.QtCore.QObject, arg__2:str) -> typing.Any: ... + @typing.overload + @staticmethod + def read(arg__1:PySide2.QtCore.QObject, arg__2:str, arg__3:PySide2.QtQml.QQmlContext) -> typing.Any: ... + @typing.overload + @staticmethod + def read(arg__1:PySide2.QtCore.QObject, arg__2:str, arg__3:PySide2.QtQml.QQmlEngine) -> typing.Any: ... + @typing.overload + def read(self) -> typing.Any: ... + def reset(self) -> bool: ... + def type(self) -> PySide2.QtQml.QQmlProperty.Type: ... + @typing.overload + @staticmethod + def write(arg__1:PySide2.QtCore.QObject, arg__2:str, arg__3:typing.Any) -> bool: ... + @typing.overload + @staticmethod + def write(arg__1:PySide2.QtCore.QObject, arg__2:str, arg__3:typing.Any, arg__4:PySide2.QtQml.QQmlContext) -> bool: ... + @typing.overload + @staticmethod + def write(arg__1:PySide2.QtCore.QObject, arg__2:str, arg__3:typing.Any, arg__4:PySide2.QtQml.QQmlEngine) -> bool: ... + @typing.overload + def write(self, arg__1:typing.Any) -> bool: ... + + +class QQmlPropertyMap(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def clear(self, key:str) -> None: ... + def contains(self, key:str) -> bool: ... + def count(self) -> int: ... + def insert(self, key:str, value:typing.Any) -> None: ... + def isEmpty(self) -> bool: ... + def keys(self) -> typing.List: ... + def size(self) -> int: ... + def updateValue(self, key:str, input:typing.Any) -> typing.Any: ... + def value(self, key:str) -> typing.Any: ... + + +class QQmlPropertyValueSource(Shiboken.Object): + + def __init__(self) -> None: ... + + def setTarget(self, arg__1:PySide2.QtQml.QQmlProperty) -> None: ... + + +class QQmlScriptString(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtQml.QQmlScriptString) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def booleanLiteral(self) -> typing.Tuple: ... + def isEmpty(self) -> bool: ... + def isNullLiteral(self) -> bool: ... + def isUndefinedLiteral(self) -> bool: ... + def numberLiteral(self) -> typing.Tuple: ... + def stringLiteral(self) -> str: ... + + +class QQmlTypesExtensionInterface(Shiboken.Object): + + def __init__(self) -> None: ... + + def registerTypes(self, uri:bytes) -> None: ... + + +class QtQml(Shiboken.Object): + @staticmethod + def qmlAttachedPropertiesObject(arg__2:PySide2.QtCore.QObject, arg__3:PySide2.QtCore.QMetaObject, create:bool) -> typing.Tuple: ... + @staticmethod + def qmlAttachedPropertiesObjectById(arg__1:int, arg__2:PySide2.QtCore.QObject, create:bool=...) -> PySide2.QtCore.QObject: ... + @staticmethod + def qmlContext(arg__1:PySide2.QtCore.QObject) -> PySide2.QtQml.QQmlContext: ... + @staticmethod + def qmlEngine(arg__1:PySide2.QtCore.QObject) -> PySide2.QtQml.QQmlEngine: ... + @staticmethod + def qmlExecuteDeferred(arg__1:PySide2.QtCore.QObject) -> None: ... + + +class VolatileBool(object): + @staticmethod + def get() -> bool: ... + @staticmethod + def set(a:object) -> None: ... +@staticmethod +def qmlRegisterType(arg__1:type, arg__2:bytes, arg__3:int, arg__4:int, arg__5:bytes) -> int: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtQuick.pyd b/venv/Lib/site-packages/PySide2/QtQuick.pyd new file mode 100644 index 0000000..fd0672a Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtQuick.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtQuick.pyi b/venv/Lib/site-packages/PySide2/QtQuick.pyi new file mode 100644 index 0000000..e95c839 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtQuick.pyi @@ -0,0 +1,1103 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtQuick, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtQuick +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtGui +import PySide2.QtQml +import PySide2.QtQuick + + +class QQuickAsyncImageProvider(PySide2.QtQuick.QQuickImageProvider): + + def __init__(self) -> None: ... + + def requestImageResponse(self, id:str, requestedSize:PySide2.QtCore.QSize) -> PySide2.QtQuick.QQuickImageResponse: ... + + +class QQuickFramebufferObject(PySide2.QtQuick.QQuickItem): + + class Renderer(Shiboken.Object): + + def __init__(self) -> None: ... + + def createFramebufferObject(self, size:PySide2.QtCore.QSize) -> PySide2.QtGui.QOpenGLFramebufferObject: ... + def framebufferObject(self) -> PySide2.QtGui.QOpenGLFramebufferObject: ... + def invalidateFramebufferObject(self) -> None: ... + def render(self) -> None: ... + def synchronize(self, arg__1:PySide2.QtQuick.QQuickFramebufferObject) -> None: ... + def update(self) -> None: ... + + def __init__(self, parent:typing.Optional[PySide2.QtQuick.QQuickItem]=...) -> None: ... + + def createRenderer(self) -> PySide2.QtQuick.QQuickFramebufferObject.Renderer: ... + def geometryChanged(self, newGeometry:PySide2.QtCore.QRectF, oldGeometry:PySide2.QtCore.QRectF) -> None: ... + def isTextureProvider(self) -> bool: ... + def mirrorVertically(self) -> bool: ... + def releaseResources(self) -> None: ... + def setMirrorVertically(self, enable:bool) -> None: ... + def setTextureFollowsItemSize(self, follows:bool) -> None: ... + def textureFollowsItemSize(self) -> bool: ... + def textureProvider(self) -> PySide2.QtQuick.QSGTextureProvider: ... + def updatePaintNode(self, arg__1:PySide2.QtQuick.QSGNode, arg__2:PySide2.QtQuick.QQuickItem.UpdatePaintNodeData) -> PySide2.QtQuick.QSGNode: ... + + +class QQuickImageProvider(PySide2.QtQml.QQmlImageProviderBase): + + def __init__(self, type:PySide2.QtQml.QQmlImageProviderBase.ImageType, flags:PySide2.QtQml.QQmlImageProviderBase.Flags=...) -> None: ... + + def flags(self) -> PySide2.QtQml.QQmlImageProviderBase.Flags: ... + def imageType(self) -> PySide2.QtQml.QQmlImageProviderBase.ImageType: ... + def requestImage(self, id:str, size:PySide2.QtCore.QSize, requestedSize:PySide2.QtCore.QSize) -> PySide2.QtGui.QImage: ... + def requestPixmap(self, id:str, size:PySide2.QtCore.QSize, requestedSize:PySide2.QtCore.QSize) -> PySide2.QtGui.QPixmap: ... + def requestTexture(self, id:str, size:PySide2.QtCore.QSize, requestedSize:PySide2.QtCore.QSize) -> PySide2.QtQuick.QQuickTextureFactory: ... + + +class QQuickImageResponse(PySide2.QtCore.QObject): + + def __init__(self) -> None: ... + + def cancel(self) -> None: ... + def errorString(self) -> str: ... + def textureFactory(self) -> PySide2.QtQuick.QQuickTextureFactory: ... + + +class QQuickItem(PySide2.QtCore.QObject, PySide2.QtQml.QQmlParserStatus): + ItemChildAddedChange : QQuickItem = ... # 0x0 + TopLeft : QQuickItem = ... # 0x0 + ItemChildRemovedChange : QQuickItem = ... # 0x1 + ItemClipsChildrenToShape : QQuickItem = ... # 0x1 + Top : QQuickItem = ... # 0x1 + ItemAcceptsInputMethod : QQuickItem = ... # 0x2 + ItemSceneChange : QQuickItem = ... # 0x2 + TopRight : QQuickItem = ... # 0x2 + ItemVisibleHasChanged : QQuickItem = ... # 0x3 + Left : QQuickItem = ... # 0x3 + Center : QQuickItem = ... # 0x4 + ItemIsFocusScope : QQuickItem = ... # 0x4 + ItemParentHasChanged : QQuickItem = ... # 0x4 + ItemOpacityHasChanged : QQuickItem = ... # 0x5 + Right : QQuickItem = ... # 0x5 + BottomLeft : QQuickItem = ... # 0x6 + ItemActiveFocusHasChanged: QQuickItem = ... # 0x6 + Bottom : QQuickItem = ... # 0x7 + ItemRotationHasChanged : QQuickItem = ... # 0x7 + BottomRight : QQuickItem = ... # 0x8 + ItemAntialiasingHasChanged: QQuickItem = ... # 0x8 + ItemHasContents : QQuickItem = ... # 0x8 + ItemDevicePixelRatioHasChanged: QQuickItem = ... # 0x9 + ItemEnabledHasChanged : QQuickItem = ... # 0xa + ItemAcceptsDrops : QQuickItem = ... # 0x10 + + class Flag(object): + ItemClipsChildrenToShape : QQuickItem.Flag = ... # 0x1 + ItemAcceptsInputMethod : QQuickItem.Flag = ... # 0x2 + ItemIsFocusScope : QQuickItem.Flag = ... # 0x4 + ItemHasContents : QQuickItem.Flag = ... # 0x8 + ItemAcceptsDrops : QQuickItem.Flag = ... # 0x10 + + class Flags(object): ... + + class ItemChange(object): + ItemChildAddedChange : QQuickItem.ItemChange = ... # 0x0 + ItemChildRemovedChange : QQuickItem.ItemChange = ... # 0x1 + ItemSceneChange : QQuickItem.ItemChange = ... # 0x2 + ItemVisibleHasChanged : QQuickItem.ItemChange = ... # 0x3 + ItemParentHasChanged : QQuickItem.ItemChange = ... # 0x4 + ItemOpacityHasChanged : QQuickItem.ItemChange = ... # 0x5 + ItemActiveFocusHasChanged: QQuickItem.ItemChange = ... # 0x6 + ItemRotationHasChanged : QQuickItem.ItemChange = ... # 0x7 + ItemAntialiasingHasChanged: QQuickItem.ItemChange = ... # 0x8 + ItemDevicePixelRatioHasChanged: QQuickItem.ItemChange = ... # 0x9 + ItemEnabledHasChanged : QQuickItem.ItemChange = ... # 0xa + + class TransformOrigin(object): + TopLeft : QQuickItem.TransformOrigin = ... # 0x0 + Top : QQuickItem.TransformOrigin = ... # 0x1 + TopRight : QQuickItem.TransformOrigin = ... # 0x2 + Left : QQuickItem.TransformOrigin = ... # 0x3 + Center : QQuickItem.TransformOrigin = ... # 0x4 + Right : QQuickItem.TransformOrigin = ... # 0x5 + BottomLeft : QQuickItem.TransformOrigin = ... # 0x6 + Bottom : QQuickItem.TransformOrigin = ... # 0x7 + BottomRight : QQuickItem.TransformOrigin = ... # 0x8 + + class UpdatePaintNodeData(Shiboken.Object): + @staticmethod + def __copy__() -> None: ... + + def __init__(self, parent:typing.Optional[PySide2.QtQuick.QQuickItem]=...) -> None: ... + + def acceptHoverEvents(self) -> bool: ... + def acceptTouchEvents(self) -> bool: ... + def acceptedMouseButtons(self) -> PySide2.QtCore.Qt.MouseButtons: ... + def activeFocusOnTab(self) -> bool: ... + def antialiasing(self) -> bool: ... + def baselineOffset(self) -> float: ... + def boundingRect(self) -> PySide2.QtCore.QRectF: ... + def childAt(self, x:float, y:float) -> PySide2.QtQuick.QQuickItem: ... + def childItems(self) -> typing.List: ... + def childMouseEventFilter(self, arg__1:PySide2.QtQuick.QQuickItem, arg__2:PySide2.QtCore.QEvent) -> bool: ... + def childrenRect(self) -> PySide2.QtCore.QRectF: ... + def classBegin(self) -> None: ... + def clip(self) -> bool: ... + def clipRect(self) -> PySide2.QtCore.QRectF: ... + def componentComplete(self) -> None: ... + def containmentMask(self) -> PySide2.QtCore.QObject: ... + def contains(self, point:PySide2.QtCore.QPointF) -> bool: ... + def cursor(self) -> PySide2.QtGui.QCursor: ... + def dragEnterEvent(self, arg__1:PySide2.QtGui.QDragEnterEvent) -> None: ... + def dragLeaveEvent(self, arg__1:PySide2.QtGui.QDragLeaveEvent) -> None: ... + def dragMoveEvent(self, arg__1:PySide2.QtGui.QDragMoveEvent) -> None: ... + def dropEvent(self, arg__1:PySide2.QtGui.QDropEvent) -> None: ... + def event(self, arg__1:PySide2.QtCore.QEvent) -> bool: ... + def filtersChildMouseEvents(self) -> bool: ... + def flags(self) -> PySide2.QtQuick.QQuickItem.Flags: ... + def focusInEvent(self, arg__1:PySide2.QtGui.QFocusEvent) -> None: ... + def focusOutEvent(self, arg__1:PySide2.QtGui.QFocusEvent) -> None: ... + @typing.overload + def forceActiveFocus(self) -> None: ... + @typing.overload + def forceActiveFocus(self, reason:PySide2.QtCore.Qt.FocusReason) -> None: ... + def geometryChanged(self, newGeometry:PySide2.QtCore.QRectF, oldGeometry:PySide2.QtCore.QRectF) -> None: ... + def grabMouse(self) -> None: ... + @typing.overload + def grabToImage(self, callback:PySide2.QtQml.QJSValue, targetSize:PySide2.QtCore.QSize=...) -> bool: ... + @typing.overload + def grabToImage(self, targetSize:PySide2.QtCore.QSize=...) -> typing.Tuple: ... + def grabTouchPoints(self, ids:typing.List) -> None: ... + def hasActiveFocus(self) -> bool: ... + def hasFocus(self) -> bool: ... + def height(self) -> float: ... + def heightValid(self) -> bool: ... + def hoverEnterEvent(self, event:PySide2.QtGui.QHoverEvent) -> None: ... + def hoverLeaveEvent(self, event:PySide2.QtGui.QHoverEvent) -> None: ... + def hoverMoveEvent(self, event:PySide2.QtGui.QHoverEvent) -> None: ... + def implicitHeight(self) -> float: ... + def implicitWidth(self) -> float: ... + def inputMethodEvent(self, arg__1:PySide2.QtGui.QInputMethodEvent) -> None: ... + def inputMethodQuery(self, query:PySide2.QtCore.Qt.InputMethodQuery) -> typing.Any: ... + def isAncestorOf(self, child:PySide2.QtQuick.QQuickItem) -> bool: ... + def isComponentComplete(self) -> bool: ... + def isEnabled(self) -> bool: ... + def isFocusScope(self) -> bool: ... + def isTextureProvider(self) -> bool: ... + def isUnderMouse(self) -> bool: ... + def isVisible(self) -> bool: ... + def itemTransform(self, arg__1:PySide2.QtQuick.QQuickItem) -> typing.Tuple: ... + def keepMouseGrab(self) -> bool: ... + def keepTouchGrab(self) -> bool: ... + def keyPressEvent(self, event:PySide2.QtGui.QKeyEvent) -> None: ... + def keyReleaseEvent(self, event:PySide2.QtGui.QKeyEvent) -> None: ... + def mapFromGlobal(self, point:PySide2.QtCore.QPointF) -> PySide2.QtCore.QPointF: ... + def mapFromItem(self, item:PySide2.QtQuick.QQuickItem, point:PySide2.QtCore.QPointF) -> PySide2.QtCore.QPointF: ... + def mapFromScene(self, point:PySide2.QtCore.QPointF) -> PySide2.QtCore.QPointF: ... + def mapRectFromItem(self, item:PySide2.QtQuick.QQuickItem, rect:PySide2.QtCore.QRectF) -> PySide2.QtCore.QRectF: ... + def mapRectFromScene(self, rect:PySide2.QtCore.QRectF) -> PySide2.QtCore.QRectF: ... + def mapRectToItem(self, item:PySide2.QtQuick.QQuickItem, rect:PySide2.QtCore.QRectF) -> PySide2.QtCore.QRectF: ... + def mapRectToScene(self, rect:PySide2.QtCore.QRectF) -> PySide2.QtCore.QRectF: ... + def mapToGlobal(self, point:PySide2.QtCore.QPointF) -> PySide2.QtCore.QPointF: ... + def mapToItem(self, item:PySide2.QtQuick.QQuickItem, point:PySide2.QtCore.QPointF) -> PySide2.QtCore.QPointF: ... + def mapToScene(self, point:PySide2.QtCore.QPointF) -> PySide2.QtCore.QPointF: ... + def mouseDoubleClickEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseMoveEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def mousePressEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseUngrabEvent(self) -> None: ... + def nextItemInFocusChain(self, forward:bool=...) -> PySide2.QtQuick.QQuickItem: ... + def opacity(self) -> float: ... + def parentItem(self) -> PySide2.QtQuick.QQuickItem: ... + def polish(self) -> None: ... + def position(self) -> PySide2.QtCore.QPointF: ... + def releaseResources(self) -> None: ... + def resetAntialiasing(self) -> None: ... + def resetHeight(self) -> None: ... + def resetWidth(self) -> None: ... + def rotation(self) -> float: ... + def scale(self) -> float: ... + def scopedFocusItem(self) -> PySide2.QtQuick.QQuickItem: ... + def setAcceptHoverEvents(self, enabled:bool) -> None: ... + def setAcceptTouchEvents(self, accept:bool) -> None: ... + def setAcceptedMouseButtons(self, buttons:PySide2.QtCore.Qt.MouseButtons) -> None: ... + def setActiveFocusOnTab(self, arg__1:bool) -> None: ... + def setAntialiasing(self, arg__1:bool) -> None: ... + def setBaselineOffset(self, arg__1:float) -> None: ... + def setClip(self, arg__1:bool) -> None: ... + def setContainmentMask(self, mask:PySide2.QtCore.QObject) -> None: ... + def setCursor(self, cursor:PySide2.QtGui.QCursor) -> None: ... + def setEnabled(self, arg__1:bool) -> None: ... + def setFiltersChildMouseEvents(self, filter:bool) -> None: ... + def setFlag(self, flag:PySide2.QtQuick.QQuickItem.Flag, enabled:bool=...) -> None: ... + def setFlags(self, flags:PySide2.QtQuick.QQuickItem.Flags) -> None: ... + @typing.overload + def setFocus(self, arg__1:bool) -> None: ... + @typing.overload + def setFocus(self, focus:bool, reason:PySide2.QtCore.Qt.FocusReason) -> None: ... + def setHeight(self, arg__1:float) -> None: ... + def setImplicitHeight(self, arg__1:float) -> None: ... + def setImplicitSize(self, arg__1:float, arg__2:float) -> None: ... + def setImplicitWidth(self, arg__1:float) -> None: ... + def setKeepMouseGrab(self, arg__1:bool) -> None: ... + def setKeepTouchGrab(self, arg__1:bool) -> None: ... + def setOpacity(self, arg__1:float) -> None: ... + def setParentItem(self, parent:PySide2.QtQuick.QQuickItem) -> None: ... + def setPosition(self, arg__1:PySide2.QtCore.QPointF) -> None: ... + def setRotation(self, arg__1:float) -> None: ... + def setScale(self, arg__1:float) -> None: ... + def setSize(self, size:PySide2.QtCore.QSizeF) -> None: ... + def setSmooth(self, arg__1:bool) -> None: ... + def setState(self, arg__1:str) -> None: ... + def setTransformOrigin(self, arg__1:PySide2.QtQuick.QQuickItem.TransformOrigin) -> None: ... + def setTransformOriginPoint(self, arg__1:PySide2.QtCore.QPointF) -> None: ... + def setVisible(self, arg__1:bool) -> None: ... + def setWidth(self, arg__1:float) -> None: ... + def setX(self, arg__1:float) -> None: ... + def setY(self, arg__1:float) -> None: ... + def setZ(self, arg__1:float) -> None: ... + def size(self) -> PySide2.QtCore.QSizeF: ... + def smooth(self) -> bool: ... + def stackAfter(self, arg__1:PySide2.QtQuick.QQuickItem) -> None: ... + def stackBefore(self, arg__1:PySide2.QtQuick.QQuickItem) -> None: ... + def state(self) -> str: ... + def textureProvider(self) -> PySide2.QtQuick.QSGTextureProvider: ... + def touchEvent(self, event:PySide2.QtGui.QTouchEvent) -> None: ... + def touchUngrabEvent(self) -> None: ... + def transformOrigin(self) -> PySide2.QtQuick.QQuickItem.TransformOrigin: ... + def transformOriginPoint(self) -> PySide2.QtCore.QPointF: ... + def ungrabMouse(self) -> None: ... + def ungrabTouchPoints(self) -> None: ... + def unsetCursor(self) -> None: ... + def update(self) -> None: ... + def updateInputMethod(self, queries:PySide2.QtCore.Qt.InputMethodQueries=...) -> None: ... + def updatePaintNode(self, arg__1:PySide2.QtQuick.QSGNode, arg__2:PySide2.QtQuick.QQuickItem.UpdatePaintNodeData) -> PySide2.QtQuick.QSGNode: ... + def updatePolish(self) -> None: ... + def wheelEvent(self, event:PySide2.QtGui.QWheelEvent) -> None: ... + def width(self) -> float: ... + def widthValid(self) -> bool: ... + def window(self) -> PySide2.QtQuick.QQuickWindow: ... + def windowDeactivateEvent(self) -> None: ... + def x(self) -> float: ... + def y(self) -> float: ... + def z(self) -> float: ... + + +class QQuickItemGrabResult(PySide2.QtCore.QObject): + def event(self, arg__1:PySide2.QtCore.QEvent) -> bool: ... + def image(self) -> PySide2.QtGui.QImage: ... + def saveToFile(self, fileName:str) -> bool: ... + def url(self) -> PySide2.QtCore.QUrl: ... + + +class QQuickPaintedItem(PySide2.QtQuick.QQuickItem): + Image : QQuickPaintedItem = ... # 0x0 + FastFBOResizing : QQuickPaintedItem = ... # 0x1 + FramebufferObject : QQuickPaintedItem = ... # 0x1 + InvertedYFramebufferObject: QQuickPaintedItem = ... # 0x2 + + class PerformanceHint(object): + FastFBOResizing : QQuickPaintedItem.PerformanceHint = ... # 0x1 + + class PerformanceHints(object): ... + + class RenderTarget(object): + Image : QQuickPaintedItem.RenderTarget = ... # 0x0 + FramebufferObject : QQuickPaintedItem.RenderTarget = ... # 0x1 + InvertedYFramebufferObject: QQuickPaintedItem.RenderTarget = ... # 0x2 + + def __init__(self, parent:typing.Optional[PySide2.QtQuick.QQuickItem]=...) -> None: ... + + def antialiasing(self) -> bool: ... + def contentsBoundingRect(self) -> PySide2.QtCore.QRectF: ... + def contentsScale(self) -> float: ... + def contentsSize(self) -> PySide2.QtCore.QSize: ... + def fillColor(self) -> PySide2.QtGui.QColor: ... + def isTextureProvider(self) -> bool: ... + def mipmap(self) -> bool: ... + def opaquePainting(self) -> bool: ... + def paint(self, painter:PySide2.QtGui.QPainter) -> None: ... + def performanceHints(self) -> PySide2.QtQuick.QQuickPaintedItem.PerformanceHints: ... + def releaseResources(self) -> None: ... + def renderTarget(self) -> PySide2.QtQuick.QQuickPaintedItem.RenderTarget: ... + def resetContentsSize(self) -> None: ... + def setAntialiasing(self, enable:bool) -> None: ... + def setContentsScale(self, arg__1:float) -> None: ... + def setContentsSize(self, arg__1:PySide2.QtCore.QSize) -> None: ... + def setFillColor(self, arg__1:PySide2.QtGui.QColor) -> None: ... + def setMipmap(self, enable:bool) -> None: ... + def setOpaquePainting(self, opaque:bool) -> None: ... + def setPerformanceHint(self, hint:PySide2.QtQuick.QQuickPaintedItem.PerformanceHint, enabled:bool=...) -> None: ... + def setPerformanceHints(self, hints:PySide2.QtQuick.QQuickPaintedItem.PerformanceHints) -> None: ... + def setRenderTarget(self, target:PySide2.QtQuick.QQuickPaintedItem.RenderTarget) -> None: ... + def setTextureSize(self, size:PySide2.QtCore.QSize) -> None: ... + def textureProvider(self) -> PySide2.QtQuick.QSGTextureProvider: ... + def textureSize(self) -> PySide2.QtCore.QSize: ... + @typing.overload + def update(self) -> None: ... + @typing.overload + def update(self, rect:PySide2.QtCore.QRect=...) -> None: ... + def updatePaintNode(self, arg__1:PySide2.QtQuick.QSGNode, arg__2:PySide2.QtQuick.QQuickItem.UpdatePaintNodeData) -> PySide2.QtQuick.QSGNode: ... + + +class QQuickRenderControl(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def grab(self) -> PySide2.QtGui.QImage: ... + def initialize(self, gl:PySide2.QtGui.QOpenGLContext) -> None: ... + def invalidate(self) -> None: ... + def polishItems(self) -> None: ... + def prepareThread(self, targetThread:PySide2.QtCore.QThread) -> None: ... + def render(self) -> None: ... + def renderWindow(self, offset:PySide2.QtCore.QPoint) -> PySide2.QtGui.QWindow: ... + @staticmethod + def renderWindowFor(win:PySide2.QtQuick.QQuickWindow, offset:typing.Optional[PySide2.QtCore.QPoint]=...) -> PySide2.QtGui.QWindow: ... + def sync(self) -> bool: ... + + +class QQuickTextDocument(PySide2.QtCore.QObject): + + def __init__(self, parent:PySide2.QtQuick.QQuickItem) -> None: ... + + def textDocument(self) -> PySide2.QtGui.QTextDocument: ... + + +class QQuickTextureFactory(PySide2.QtCore.QObject): + + def __init__(self) -> None: ... + + def createTexture(self, window:PySide2.QtQuick.QQuickWindow) -> PySide2.QtQuick.QSGTexture: ... + def image(self) -> PySide2.QtGui.QImage: ... + def textureByteCount(self) -> int: ... + @staticmethod + def textureFactoryForImage(image:PySide2.QtGui.QImage) -> PySide2.QtQuick.QQuickTextureFactory: ... + def textureSize(self) -> PySide2.QtCore.QSize: ... + + +class QQuickTransform(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def appendToItem(self, arg__1:PySide2.QtQuick.QQuickItem) -> None: ... + def applyTo(self, matrix:PySide2.QtGui.QMatrix4x4) -> None: ... + def prependToItem(self, arg__1:PySide2.QtQuick.QQuickItem) -> None: ... + def update(self) -> None: ... + + +class QQuickView(PySide2.QtQuick.QQuickWindow): + Null : QQuickView = ... # 0x0 + SizeViewToRootObject : QQuickView = ... # 0x0 + Ready : QQuickView = ... # 0x1 + SizeRootObjectToView : QQuickView = ... # 0x1 + Loading : QQuickView = ... # 0x2 + Error : QQuickView = ... # 0x3 + + class ResizeMode(object): + SizeViewToRootObject : QQuickView.ResizeMode = ... # 0x0 + SizeRootObjectToView : QQuickView.ResizeMode = ... # 0x1 + + class Status(object): + Null : QQuickView.Status = ... # 0x0 + Ready : QQuickView.Status = ... # 0x1 + Loading : QQuickView.Status = ... # 0x2 + Error : QQuickView.Status = ... # 0x3 + + @typing.overload + def __init__(self, engine:PySide2.QtQml.QQmlEngine, parent:PySide2.QtGui.QWindow) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtGui.QWindow]=...) -> None: ... + @typing.overload + def __init__(self, source:PySide2.QtCore.QUrl, parent:typing.Optional[PySide2.QtGui.QWindow]=...) -> None: ... + @typing.overload + def __init__(self, source:PySide2.QtCore.QUrl, renderControl:PySide2.QtQuick.QQuickRenderControl) -> None: ... + + def engine(self) -> PySide2.QtQml.QQmlEngine: ... + def errors(self) -> typing.List: ... + def initialSize(self) -> PySide2.QtCore.QSize: ... + def keyPressEvent(self, arg__1:PySide2.QtGui.QKeyEvent) -> None: ... + def keyReleaseEvent(self, arg__1:PySide2.QtGui.QKeyEvent) -> None: ... + def mouseMoveEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def mousePressEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def resizeEvent(self, arg__1:PySide2.QtGui.QResizeEvent) -> None: ... + def resizeMode(self) -> PySide2.QtQuick.QQuickView.ResizeMode: ... + def rootContext(self) -> PySide2.QtQml.QQmlContext: ... + def rootObject(self) -> PySide2.QtQuick.QQuickItem: ... + def setContent(self, url:PySide2.QtCore.QUrl, component:PySide2.QtQml.QQmlComponent, item:PySide2.QtCore.QObject) -> None: ... + def setInitialProperties(self, initialProperties:typing.Dict) -> None: ... + def setResizeMode(self, arg__1:PySide2.QtQuick.QQuickView.ResizeMode) -> None: ... + def setSource(self, arg__1:PySide2.QtCore.QUrl) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def source(self) -> PySide2.QtCore.QUrl: ... + def status(self) -> PySide2.QtQuick.QQuickView.Status: ... + def timerEvent(self, arg__1:PySide2.QtCore.QTimerEvent) -> None: ... + + +class QQuickWindow(PySide2.QtGui.QWindow): + BeforeSynchronizingStage : QQuickWindow = ... # 0x0 + NativeObjectTexture : QQuickWindow = ... # 0x0 + QtTextRendering : QQuickWindow = ... # 0x0 + AfterSynchronizingStage : QQuickWindow = ... # 0x1 + ContextNotAvailable : QQuickWindow = ... # 0x1 + NativeTextRendering : QQuickWindow = ... # 0x1 + TextureHasAlphaChannel : QQuickWindow = ... # 0x1 + BeforeRenderingStage : QQuickWindow = ... # 0x2 + TextureHasMipmaps : QQuickWindow = ... # 0x2 + AfterRenderingStage : QQuickWindow = ... # 0x3 + AfterSwapStage : QQuickWindow = ... # 0x4 + TextureOwnsGLTexture : QQuickWindow = ... # 0x4 + NoStage : QQuickWindow = ... # 0x5 + TextureCanUseAtlas : QQuickWindow = ... # 0x8 + TextureIsOpaque : QQuickWindow = ... # 0x10 + + class CreateTextureOption(object): + TextureHasAlphaChannel : QQuickWindow.CreateTextureOption = ... # 0x1 + TextureHasMipmaps : QQuickWindow.CreateTextureOption = ... # 0x2 + TextureOwnsGLTexture : QQuickWindow.CreateTextureOption = ... # 0x4 + TextureCanUseAtlas : QQuickWindow.CreateTextureOption = ... # 0x8 + TextureIsOpaque : QQuickWindow.CreateTextureOption = ... # 0x10 + + class CreateTextureOptions(object): ... + + class NativeObjectType(object): + NativeObjectTexture : QQuickWindow.NativeObjectType = ... # 0x0 + + class RenderStage(object): + BeforeSynchronizingStage : QQuickWindow.RenderStage = ... # 0x0 + AfterSynchronizingStage : QQuickWindow.RenderStage = ... # 0x1 + BeforeRenderingStage : QQuickWindow.RenderStage = ... # 0x2 + AfterRenderingStage : QQuickWindow.RenderStage = ... # 0x3 + AfterSwapStage : QQuickWindow.RenderStage = ... # 0x4 + NoStage : QQuickWindow.RenderStage = ... # 0x5 + + class SceneGraphError(object): + ContextNotAvailable : QQuickWindow.SceneGraphError = ... # 0x1 + + class TextRenderType(object): + QtTextRendering : QQuickWindow.TextRenderType = ... # 0x0 + NativeTextRendering : QQuickWindow.TextRenderType = ... # 0x1 + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtGui.QWindow]=...) -> None: ... + @typing.overload + def __init__(self, renderControl:PySide2.QtQuick.QQuickRenderControl) -> None: ... + + def accessibleRoot(self) -> PySide2.QtGui.QAccessibleInterface: ... + def activeFocusItem(self) -> PySide2.QtQuick.QQuickItem: ... + def beginExternalCommands(self) -> None: ... + def clearBeforeRendering(self) -> bool: ... + def color(self) -> PySide2.QtGui.QColor: ... + def contentItem(self) -> PySide2.QtQuick.QQuickItem: ... + def createTextureFromId(self, id:int, size:PySide2.QtCore.QSize, options:PySide2.QtQuick.QQuickWindow.CreateTextureOptions=...) -> PySide2.QtQuick.QSGTexture: ... + @typing.overload + def createTextureFromImage(self, image:PySide2.QtGui.QImage) -> PySide2.QtQuick.QSGTexture: ... + @typing.overload + def createTextureFromImage(self, image:PySide2.QtGui.QImage, options:PySide2.QtQuick.QQuickWindow.CreateTextureOptions) -> PySide2.QtQuick.QSGTexture: ... + def createTextureFromNativeObject(self, type:PySide2.QtQuick.QQuickWindow.NativeObjectType, nativeObjectPtr:int, nativeLayout:int, size:PySide2.QtCore.QSize, options:PySide2.QtQuick.QQuickWindow.CreateTextureOptions=...) -> PySide2.QtQuick.QSGTexture: ... + def effectiveDevicePixelRatio(self) -> float: ... + def endExternalCommands(self) -> None: ... + def event(self, arg__1:PySide2.QtCore.QEvent) -> bool: ... + def exposeEvent(self, arg__1:PySide2.QtGui.QExposeEvent) -> None: ... + def focusInEvent(self, arg__1:PySide2.QtGui.QFocusEvent) -> None: ... + def focusObject(self) -> PySide2.QtCore.QObject: ... + def focusOutEvent(self, arg__1:PySide2.QtGui.QFocusEvent) -> None: ... + def grabWindow(self) -> PySide2.QtGui.QImage: ... + @staticmethod + def hasDefaultAlphaBuffer() -> bool: ... + def hideEvent(self, arg__1:PySide2.QtGui.QHideEvent) -> None: ... + def incubationController(self) -> PySide2.QtQml.QQmlIncubationController: ... + def isPersistentOpenGLContext(self) -> bool: ... + def isPersistentSceneGraph(self) -> bool: ... + def isSceneGraphInitialized(self) -> bool: ... + def keyPressEvent(self, arg__1:PySide2.QtGui.QKeyEvent) -> None: ... + def keyReleaseEvent(self, arg__1:PySide2.QtGui.QKeyEvent) -> None: ... + def mouseDoubleClickEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseGrabberItem(self) -> PySide2.QtQuick.QQuickItem: ... + def mouseMoveEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def mousePressEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def openglContext(self) -> PySide2.QtGui.QOpenGLContext: ... + def releaseResources(self) -> None: ... + def renderTarget(self) -> PySide2.QtGui.QOpenGLFramebufferObject: ... + def renderTargetId(self) -> int: ... + def renderTargetSize(self) -> PySide2.QtCore.QSize: ... + def resetOpenGLState(self) -> None: ... + def resizeEvent(self, arg__1:PySide2.QtGui.QResizeEvent) -> None: ... + @staticmethod + def sceneGraphBackend() -> str: ... + def scheduleRenderJob(self, job:PySide2.QtCore.QRunnable, schedule:PySide2.QtQuick.QQuickWindow.RenderStage) -> None: ... + def sendEvent(self, arg__1:PySide2.QtQuick.QQuickItem, arg__2:PySide2.QtCore.QEvent) -> bool: ... + def setClearBeforeRendering(self, enabled:bool) -> None: ... + def setColor(self, color:PySide2.QtGui.QColor) -> None: ... + @staticmethod + def setDefaultAlphaBuffer(useAlpha:bool) -> None: ... + def setPersistentOpenGLContext(self, persistent:bool) -> None: ... + def setPersistentSceneGraph(self, persistent:bool) -> None: ... + @typing.overload + def setRenderTarget(self, fbo:PySide2.QtGui.QOpenGLFramebufferObject) -> None: ... + @typing.overload + def setRenderTarget(self, fboId:int, size:PySide2.QtCore.QSize) -> None: ... + @staticmethod + def setSceneGraphBackend(backend:str) -> None: ... + @staticmethod + def setTextRenderType(renderType:PySide2.QtQuick.QQuickWindow.TextRenderType) -> None: ... + def showEvent(self, arg__1:PySide2.QtGui.QShowEvent) -> None: ... + def tabletEvent(self, arg__1:PySide2.QtGui.QTabletEvent) -> None: ... + @staticmethod + def textRenderType() -> PySide2.QtQuick.QQuickWindow.TextRenderType: ... + def update(self) -> None: ... + def wheelEvent(self, arg__1:PySide2.QtGui.QWheelEvent) -> None: ... + + +class QSGAbstractRenderer(PySide2.QtCore.QObject): + ClearColorBuffer : QSGAbstractRenderer = ... # 0x1 + MatrixTransformFlipY : QSGAbstractRenderer = ... # 0x1 + ClearDepthBuffer : QSGAbstractRenderer = ... # 0x2 + ClearStencilBuffer : QSGAbstractRenderer = ... # 0x4 + + class ClearMode(object): ... + + class ClearModeBit(object): + ClearColorBuffer : QSGAbstractRenderer.ClearModeBit = ... # 0x1 + ClearDepthBuffer : QSGAbstractRenderer.ClearModeBit = ... # 0x2 + ClearStencilBuffer : QSGAbstractRenderer.ClearModeBit = ... # 0x4 + + class MatrixTransformFlag(object): + MatrixTransformFlipY : QSGAbstractRenderer.MatrixTransformFlag = ... # 0x1 + + class MatrixTransformFlags(object): ... + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def clearColor(self) -> PySide2.QtGui.QColor: ... + def clearMode(self) -> PySide2.QtQuick.QSGAbstractRenderer.ClearMode: ... + def deviceRect(self) -> PySide2.QtCore.QRect: ... + def nodeChanged(self, node:PySide2.QtQuick.QSGNode, state:PySide2.QtQuick.QSGNode.DirtyState) -> None: ... + def projectionMatrix(self) -> PySide2.QtGui.QMatrix4x4: ... + def projectionMatrixWithNativeNDC(self) -> PySide2.QtGui.QMatrix4x4: ... + def renderScene(self, fboId:int=...) -> None: ... + def setClearColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setClearMode(self, mode:PySide2.QtQuick.QSGAbstractRenderer.ClearMode) -> None: ... + @typing.overload + def setDeviceRect(self, rect:PySide2.QtCore.QRect) -> None: ... + @typing.overload + def setDeviceRect(self, size:PySide2.QtCore.QSize) -> None: ... + def setProjectionMatrix(self, matrix:PySide2.QtGui.QMatrix4x4) -> None: ... + @typing.overload + def setProjectionMatrixToRect(self, rect:PySide2.QtCore.QRectF) -> None: ... + @typing.overload + def setProjectionMatrixToRect(self, rect:PySide2.QtCore.QRectF, flags:PySide2.QtQuick.QSGAbstractRenderer.MatrixTransformFlags) -> None: ... + def setProjectionMatrixWithNativeNDC(self, matrix:PySide2.QtGui.QMatrix4x4) -> None: ... + @typing.overload + def setViewportRect(self, rect:PySide2.QtCore.QRect) -> None: ... + @typing.overload + def setViewportRect(self, size:PySide2.QtCore.QSize) -> None: ... + def viewportRect(self) -> PySide2.QtCore.QRect: ... + + +class QSGBasicGeometryNode(PySide2.QtQuick.QSGNode): + + def __init__(self, type:PySide2.QtQuick.QSGNode.NodeType) -> None: ... + + def clipList(self) -> PySide2.QtQuick.QSGClipNode: ... + def geometry(self) -> PySide2.QtQuick.QSGGeometry: ... + def matrix(self) -> PySide2.QtGui.QMatrix4x4: ... + def setGeometry(self, geometry:PySide2.QtQuick.QSGGeometry) -> None: ... + def setRendererClipList(self, c:PySide2.QtQuick.QSGClipNode) -> None: ... + def setRendererMatrix(self, m:PySide2.QtGui.QMatrix4x4) -> None: ... + + +class QSGClipNode(PySide2.QtQuick.QSGBasicGeometryNode): + + def __init__(self) -> None: ... + + def clipRect(self) -> PySide2.QtCore.QRectF: ... + def isRectangular(self) -> bool: ... + def setClipRect(self, arg__1:PySide2.QtCore.QRectF) -> None: ... + def setIsRectangular(self, rectHint:bool) -> None: ... + + +class QSGDynamicTexture(PySide2.QtQuick.QSGTexture): + + def __init__(self) -> None: ... + + def updateTexture(self) -> bool: ... + + +class QSGEngine(PySide2.QtCore.QObject): + TextureHasAlphaChannel : QSGEngine = ... # 0x1 + TextureOwnsGLTexture : QSGEngine = ... # 0x4 + TextureCanUseAtlas : QSGEngine = ... # 0x8 + TextureIsOpaque : QSGEngine = ... # 0x10 + + class CreateTextureOption(object): + TextureHasAlphaChannel : QSGEngine.CreateTextureOption = ... # 0x1 + TextureOwnsGLTexture : QSGEngine.CreateTextureOption = ... # 0x4 + TextureCanUseAtlas : QSGEngine.CreateTextureOption = ... # 0x8 + TextureIsOpaque : QSGEngine.CreateTextureOption = ... # 0x10 + + class CreateTextureOptions(object): ... + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def createRenderer(self) -> PySide2.QtQuick.QSGAbstractRenderer: ... + def createTextureFromId(self, id:int, size:PySide2.QtCore.QSize, options:PySide2.QtQuick.QSGEngine.CreateTextureOptions=...) -> PySide2.QtQuick.QSGTexture: ... + def createTextureFromImage(self, image:PySide2.QtGui.QImage, options:PySide2.QtQuick.QSGEngine.CreateTextureOptions=...) -> PySide2.QtQuick.QSGTexture: ... + def initialize(self, context:PySide2.QtGui.QOpenGLContext) -> None: ... + def invalidate(self) -> None: ... + + +class QSGGeometry(Shiboken.Object): + AlwaysUploadPattern : QSGGeometry = ... # 0x0 + DrawPoints : QSGGeometry = ... # 0x0 + UnknownAttribute : QSGGeometry = ... # 0x0 + DrawLines : QSGGeometry = ... # 0x1 + PositionAttribute : QSGGeometry = ... # 0x1 + StreamPattern : QSGGeometry = ... # 0x1 + ColorAttribute : QSGGeometry = ... # 0x2 + DrawLineLoop : QSGGeometry = ... # 0x2 + DynamicPattern : QSGGeometry = ... # 0x2 + DrawLineStrip : QSGGeometry = ... # 0x3 + StaticPattern : QSGGeometry = ... # 0x3 + TexCoordAttribute : QSGGeometry = ... # 0x3 + DrawTriangles : QSGGeometry = ... # 0x4 + TexCoord1Attribute : QSGGeometry = ... # 0x4 + DrawTriangleStrip : QSGGeometry = ... # 0x5 + TexCoord2Attribute : QSGGeometry = ... # 0x5 + DrawTriangleFan : QSGGeometry = ... # 0x6 + ByteType : QSGGeometry = ... # 0x1400 + UnsignedByteType : QSGGeometry = ... # 0x1401 + ShortType : QSGGeometry = ... # 0x1402 + UnsignedShortType : QSGGeometry = ... # 0x1403 + IntType : QSGGeometry = ... # 0x1404 + UnsignedIntType : QSGGeometry = ... # 0x1405 + FloatType : QSGGeometry = ... # 0x1406 + Bytes2Type : QSGGeometry = ... # 0x1407 + Bytes3Type : QSGGeometry = ... # 0x1408 + Bytes4Type : QSGGeometry = ... # 0x1409 + DoubleType : QSGGeometry = ... # 0x140a + + class Attribute(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, Attribute:PySide2.QtQuick.QSGGeometry.Attribute) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @staticmethod + def create(pos:int, tupleSize:int, primitiveType:int, isPosition:bool=...) -> PySide2.QtQuick.QSGGeometry.Attribute: ... + @staticmethod + def createWithAttributeType(pos:int, tupleSize:int, primitiveType:int, attributeType:PySide2.QtQuick.QSGGeometry.AttributeType) -> PySide2.QtQuick.QSGGeometry.Attribute: ... + + class AttributeSet(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, AttributeSet:PySide2.QtQuick.QSGGeometry.AttributeSet) -> None: ... + + @staticmethod + def __copy__() -> None: ... + + class AttributeType(object): + UnknownAttribute : QSGGeometry.AttributeType = ... # 0x0 + PositionAttribute : QSGGeometry.AttributeType = ... # 0x1 + ColorAttribute : QSGGeometry.AttributeType = ... # 0x2 + TexCoordAttribute : QSGGeometry.AttributeType = ... # 0x3 + TexCoord1Attribute : QSGGeometry.AttributeType = ... # 0x4 + TexCoord2Attribute : QSGGeometry.AttributeType = ... # 0x5 + + class ColoredPoint2D(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, ColoredPoint2D:PySide2.QtQuick.QSGGeometry.ColoredPoint2D) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def set(self, nx:float, ny:float, nr:int, ng:int, nb:int, na:int) -> None: ... + + class DataPattern(object): + AlwaysUploadPattern : QSGGeometry.DataPattern = ... # 0x0 + StreamPattern : QSGGeometry.DataPattern = ... # 0x1 + DynamicPattern : QSGGeometry.DataPattern = ... # 0x2 + StaticPattern : QSGGeometry.DataPattern = ... # 0x3 + + class DrawingMode(object): + DrawPoints : QSGGeometry.DrawingMode = ... # 0x0 + DrawLines : QSGGeometry.DrawingMode = ... # 0x1 + DrawLineLoop : QSGGeometry.DrawingMode = ... # 0x2 + DrawLineStrip : QSGGeometry.DrawingMode = ... # 0x3 + DrawTriangles : QSGGeometry.DrawingMode = ... # 0x4 + DrawTriangleStrip : QSGGeometry.DrawingMode = ... # 0x5 + DrawTriangleFan : QSGGeometry.DrawingMode = ... # 0x6 + + class Point2D(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, Point2D:PySide2.QtQuick.QSGGeometry.Point2D) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def set(self, nx:float, ny:float) -> None: ... + + class TexturedPoint2D(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, TexturedPoint2D:PySide2.QtQuick.QSGGeometry.TexturedPoint2D) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def set(self, nx:float, ny:float, ntx:float, nty:float) -> None: ... + + class Type(object): + ByteType : QSGGeometry.Type = ... # 0x1400 + UnsignedByteType : QSGGeometry.Type = ... # 0x1401 + ShortType : QSGGeometry.Type = ... # 0x1402 + UnsignedShortType : QSGGeometry.Type = ... # 0x1403 + IntType : QSGGeometry.Type = ... # 0x1404 + UnsignedIntType : QSGGeometry.Type = ... # 0x1405 + FloatType : QSGGeometry.Type = ... # 0x1406 + Bytes2Type : QSGGeometry.Type = ... # 0x1407 + Bytes3Type : QSGGeometry.Type = ... # 0x1408 + Bytes4Type : QSGGeometry.Type = ... # 0x1409 + DoubleType : QSGGeometry.Type = ... # 0x140a + + def __init__(self, attribs:PySide2.QtQuick.QSGGeometry.AttributeSet, vertexCount:int, indexCount:int=..., indexType:int=...) -> None: ... + + def allocate(self, vertexCount:int, indexCount:int=...) -> None: ... + def attributeCount(self) -> int: ... + def attributes(self) -> PySide2.QtQuick.QSGGeometry.Attribute: ... + @staticmethod + def defaultAttributes_ColoredPoint2D() -> PySide2.QtQuick.QSGGeometry.AttributeSet: ... + @staticmethod + def defaultAttributes_Point2D() -> PySide2.QtQuick.QSGGeometry.AttributeSet: ... + @staticmethod + def defaultAttributes_TexturedPoint2D() -> PySide2.QtQuick.QSGGeometry.AttributeSet: ... + def drawingMode(self) -> int: ... + def indexCount(self) -> int: ... + def indexData(self) -> int: ... + def indexDataAsUInt(self) -> typing.List: ... + def indexDataAsUShort(self) -> typing.List: ... + def indexDataPattern(self) -> PySide2.QtQuick.QSGGeometry.DataPattern: ... + def indexType(self) -> int: ... + def lineWidth(self) -> float: ... + def markIndexDataDirty(self) -> None: ... + def markVertexDataDirty(self) -> None: ... + def setDrawingMode(self, mode:int) -> None: ... + def setIndexDataPattern(self, p:PySide2.QtQuick.QSGGeometry.DataPattern) -> None: ... + def setLineWidth(self, w:float) -> None: ... + def setVertexDataPattern(self, p:PySide2.QtQuick.QSGGeometry.DataPattern) -> None: ... + def sizeOfIndex(self) -> int: ... + def sizeOfVertex(self) -> int: ... + @staticmethod + def updateColoredRectGeometry(g:PySide2.QtQuick.QSGGeometry, rect:PySide2.QtCore.QRectF) -> None: ... + @staticmethod + def updateRectGeometry(g:PySide2.QtQuick.QSGGeometry, rect:PySide2.QtCore.QRectF) -> None: ... + @staticmethod + def updateTexturedRectGeometry(g:PySide2.QtQuick.QSGGeometry, rect:PySide2.QtCore.QRectF, sourceRect:PySide2.QtCore.QRectF) -> None: ... + def vertexCount(self) -> int: ... + def vertexData(self) -> int: ... + def vertexDataAsColoredPoint2D(self) -> PySide2.QtQuick.QSGGeometry.ColoredPoint2D: ... + def vertexDataAsPoint2D(self) -> PySide2.QtQuick.QSGGeometry.Point2D: ... + def vertexDataAsTexturedPoint2D(self) -> PySide2.QtQuick.QSGGeometry.TexturedPoint2D: ... + def vertexDataPattern(self) -> PySide2.QtQuick.QSGGeometry.DataPattern: ... + + +class QSGGeometryNode(PySide2.QtQuick.QSGBasicGeometryNode): + + def __init__(self) -> None: ... + + def inheritedOpacity(self) -> float: ... + def renderOrder(self) -> int: ... + def setInheritedOpacity(self, opacity:float) -> None: ... + def setRenderOrder(self, order:int) -> None: ... + + +class QSGMaterialType(Shiboken.Object): + + def __init__(self) -> None: ... + + +class QSGNode(Shiboken.Object): + BasicNodeType : QSGNode = ... # 0x0 + GeometryNodeType : QSGNode = ... # 0x1 + OwnedByParent : QSGNode = ... # 0x1 + DirtyUsePreprocess : QSGNode = ... # 0x2 + TransformNodeType : QSGNode = ... # 0x2 + UsePreprocess : QSGNode = ... # 0x2 + ClipNodeType : QSGNode = ... # 0x3 + OpacityNodeType : QSGNode = ... # 0x4 + RootNodeType : QSGNode = ... # 0x5 + RenderNodeType : QSGNode = ... # 0x6 + DirtySubtreeBlocked : QSGNode = ... # 0x80 + DirtyMatrix : QSGNode = ... # 0x100 + DirtyNodeAdded : QSGNode = ... # 0x400 + DirtyNodeRemoved : QSGNode = ... # 0x800 + DirtyGeometry : QSGNode = ... # 0x1000 + DirtyMaterial : QSGNode = ... # 0x2000 + DirtyOpacity : QSGNode = ... # 0x4000 + DirtyForceUpdate : QSGNode = ... # 0x8000 + DirtyPropagationMask : QSGNode = ... # 0xc500 + OwnsGeometry : QSGNode = ... # 0x10000 + OwnsMaterial : QSGNode = ... # 0x20000 + OwnsOpaqueMaterial : QSGNode = ... # 0x40000 + IsVisitableNode : QSGNode = ... # 0x1000000 + + class DirtyState(object): ... + + class DirtyStateBit(object): + DirtyUsePreprocess : QSGNode.DirtyStateBit = ... # 0x2 + DirtySubtreeBlocked : QSGNode.DirtyStateBit = ... # 0x80 + DirtyMatrix : QSGNode.DirtyStateBit = ... # 0x100 + DirtyNodeAdded : QSGNode.DirtyStateBit = ... # 0x400 + DirtyNodeRemoved : QSGNode.DirtyStateBit = ... # 0x800 + DirtyGeometry : QSGNode.DirtyStateBit = ... # 0x1000 + DirtyMaterial : QSGNode.DirtyStateBit = ... # 0x2000 + DirtyOpacity : QSGNode.DirtyStateBit = ... # 0x4000 + DirtyForceUpdate : QSGNode.DirtyStateBit = ... # 0x8000 + DirtyPropagationMask : QSGNode.DirtyStateBit = ... # 0xc500 + + class Flag(object): + OwnedByParent : QSGNode.Flag = ... # 0x1 + UsePreprocess : QSGNode.Flag = ... # 0x2 + OwnsGeometry : QSGNode.Flag = ... # 0x10000 + OwnsMaterial : QSGNode.Flag = ... # 0x20000 + OwnsOpaqueMaterial : QSGNode.Flag = ... # 0x40000 + IsVisitableNode : QSGNode.Flag = ... # 0x1000000 + + class Flags(object): ... + + class NodeType(object): + BasicNodeType : QSGNode.NodeType = ... # 0x0 + GeometryNodeType : QSGNode.NodeType = ... # 0x1 + TransformNodeType : QSGNode.NodeType = ... # 0x2 + ClipNodeType : QSGNode.NodeType = ... # 0x3 + OpacityNodeType : QSGNode.NodeType = ... # 0x4 + RootNodeType : QSGNode.NodeType = ... # 0x5 + RenderNodeType : QSGNode.NodeType = ... # 0x6 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, type:PySide2.QtQuick.QSGNode.NodeType) -> None: ... + + def appendChildNode(self, node:PySide2.QtQuick.QSGNode) -> None: ... + def childAtIndex(self, i:int) -> PySide2.QtQuick.QSGNode: ... + def childCount(self) -> int: ... + def clearDirty(self) -> None: ... + def dirtyState(self) -> PySide2.QtQuick.QSGNode.DirtyState: ... + def firstChild(self) -> PySide2.QtQuick.QSGNode: ... + def flags(self) -> PySide2.QtQuick.QSGNode.Flags: ... + def insertChildNodeAfter(self, node:PySide2.QtQuick.QSGNode, after:PySide2.QtQuick.QSGNode) -> None: ... + def insertChildNodeBefore(self, node:PySide2.QtQuick.QSGNode, before:PySide2.QtQuick.QSGNode) -> None: ... + def isSubtreeBlocked(self) -> bool: ... + def lastChild(self) -> PySide2.QtQuick.QSGNode: ... + def markDirty(self, bits:PySide2.QtQuick.QSGNode.DirtyState) -> None: ... + def nextSibling(self) -> PySide2.QtQuick.QSGNode: ... + def parent(self) -> PySide2.QtQuick.QSGNode: ... + def prependChildNode(self, node:PySide2.QtQuick.QSGNode) -> None: ... + def preprocess(self) -> None: ... + def previousSibling(self) -> PySide2.QtQuick.QSGNode: ... + def removeAllChildNodes(self) -> None: ... + def removeChildNode(self, node:PySide2.QtQuick.QSGNode) -> None: ... + def reparentChildNodesTo(self, newParent:PySide2.QtQuick.QSGNode) -> None: ... + def setFlag(self, arg__1:PySide2.QtQuick.QSGNode.Flag, arg__2:bool=...) -> None: ... + def setFlags(self, arg__1:PySide2.QtQuick.QSGNode.Flags, arg__2:bool=...) -> None: ... + def type(self) -> PySide2.QtQuick.QSGNode.NodeType: ... + + +class QSGOpacityNode(PySide2.QtQuick.QSGNode): + + def __init__(self) -> None: ... + + def combinedOpacity(self) -> float: ... + def isSubtreeBlocked(self) -> bool: ... + def opacity(self) -> float: ... + def setCombinedOpacity(self, opacity:float) -> None: ... + def setOpacity(self, opacity:float) -> None: ... + + +class QSGSimpleRectNode(PySide2.QtQuick.QSGGeometryNode): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, rect:PySide2.QtCore.QRectF, color:PySide2.QtGui.QColor) -> None: ... + + def color(self) -> PySide2.QtGui.QColor: ... + def rect(self) -> PySide2.QtCore.QRectF: ... + def setColor(self, color:PySide2.QtGui.QColor) -> None: ... + @typing.overload + def setRect(self, rect:PySide2.QtCore.QRectF) -> None: ... + @typing.overload + def setRect(self, x:float, y:float, w:float, h:float) -> None: ... + + +class QSGSimpleTextureNode(PySide2.QtQuick.QSGGeometryNode): + NoTransform : QSGSimpleTextureNode = ... # 0x0 + MirrorHorizontally : QSGSimpleTextureNode = ... # 0x1 + MirrorVertically : QSGSimpleTextureNode = ... # 0x2 + + class TextureCoordinatesTransformFlag(object): + NoTransform : QSGSimpleTextureNode.TextureCoordinatesTransformFlag = ... # 0x0 + MirrorHorizontally : QSGSimpleTextureNode.TextureCoordinatesTransformFlag = ... # 0x1 + MirrorVertically : QSGSimpleTextureNode.TextureCoordinatesTransformFlag = ... # 0x2 + + class TextureCoordinatesTransformMode(object): ... + + def __init__(self) -> None: ... + + def filtering(self) -> PySide2.QtQuick.QSGTexture.Filtering: ... + def ownsTexture(self) -> bool: ... + def rect(self) -> PySide2.QtCore.QRectF: ... + def setFiltering(self, filtering:PySide2.QtQuick.QSGTexture.Filtering) -> None: ... + def setOwnsTexture(self, owns:bool) -> None: ... + @typing.overload + def setRect(self, rect:PySide2.QtCore.QRectF) -> None: ... + @typing.overload + def setRect(self, x:float, y:float, w:float, h:float) -> None: ... + @typing.overload + def setSourceRect(self, r:PySide2.QtCore.QRectF) -> None: ... + @typing.overload + def setSourceRect(self, x:float, y:float, w:float, h:float) -> None: ... + def setTexture(self, texture:PySide2.QtQuick.QSGTexture) -> None: ... + def setTextureCoordinatesTransform(self, mode:PySide2.QtQuick.QSGSimpleTextureNode.TextureCoordinatesTransformMode) -> None: ... + def sourceRect(self) -> PySide2.QtCore.QRectF: ... + def texture(self) -> PySide2.QtQuick.QSGTexture: ... + def textureCoordinatesTransform(self) -> PySide2.QtQuick.QSGSimpleTextureNode.TextureCoordinatesTransformMode: ... + + +class QSGTexture(PySide2.QtCore.QObject): + AnisotropyNone : QSGTexture = ... # 0x0 + None_ : QSGTexture = ... # 0x0 + Repeat : QSGTexture = ... # 0x0 + Anisotropy2x : QSGTexture = ... # 0x1 + ClampToEdge : QSGTexture = ... # 0x1 + Nearest : QSGTexture = ... # 0x1 + Anisotropy4x : QSGTexture = ... # 0x2 + Linear : QSGTexture = ... # 0x2 + MirroredRepeat : QSGTexture = ... # 0x2 + Anisotropy8x : QSGTexture = ... # 0x3 + Anisotropy16x : QSGTexture = ... # 0x4 + + class AnisotropyLevel(object): + AnisotropyNone : QSGTexture.AnisotropyLevel = ... # 0x0 + Anisotropy2x : QSGTexture.AnisotropyLevel = ... # 0x1 + Anisotropy4x : QSGTexture.AnisotropyLevel = ... # 0x2 + Anisotropy8x : QSGTexture.AnisotropyLevel = ... # 0x3 + Anisotropy16x : QSGTexture.AnisotropyLevel = ... # 0x4 + + class Filtering(object): + None_ : QSGTexture.Filtering = ... # 0x0 + Nearest : QSGTexture.Filtering = ... # 0x1 + Linear : QSGTexture.Filtering = ... # 0x2 + + class WrapMode(object): + Repeat : QSGTexture.WrapMode = ... # 0x0 + ClampToEdge : QSGTexture.WrapMode = ... # 0x1 + MirroredRepeat : QSGTexture.WrapMode = ... # 0x2 + + def __init__(self) -> None: ... + + def anisotropyLevel(self) -> PySide2.QtQuick.QSGTexture.AnisotropyLevel: ... + def bind(self) -> None: ... + def comparisonKey(self) -> int: ... + def convertToNormalizedSourceRect(self, rect:PySide2.QtCore.QRectF) -> PySide2.QtCore.QRectF: ... + def filtering(self) -> PySide2.QtQuick.QSGTexture.Filtering: ... + def hasAlphaChannel(self) -> bool: ... + def hasMipmaps(self) -> bool: ... + def horizontalWrapMode(self) -> PySide2.QtQuick.QSGTexture.WrapMode: ... + def isAtlasTexture(self) -> bool: ... + def mipmapFiltering(self) -> PySide2.QtQuick.QSGTexture.Filtering: ... + def normalizedTextureSubRect(self) -> PySide2.QtCore.QRectF: ... + def removedFromAtlas(self) -> PySide2.QtQuick.QSGTexture: ... + def setAnisotropyLevel(self, level:PySide2.QtQuick.QSGTexture.AnisotropyLevel) -> None: ... + def setFiltering(self, filter:PySide2.QtQuick.QSGTexture.Filtering) -> None: ... + def setHorizontalWrapMode(self, hwrap:PySide2.QtQuick.QSGTexture.WrapMode) -> None: ... + def setMipmapFiltering(self, filter:PySide2.QtQuick.QSGTexture.Filtering) -> None: ... + def setVerticalWrapMode(self, vwrap:PySide2.QtQuick.QSGTexture.WrapMode) -> None: ... + def textureId(self) -> int: ... + def textureSize(self) -> PySide2.QtCore.QSize: ... + def updateBindOptions(self, force:bool=...) -> None: ... + def verticalWrapMode(self) -> PySide2.QtQuick.QSGTexture.WrapMode: ... + + +class QSGTextureProvider(PySide2.QtCore.QObject): + + def __init__(self) -> None: ... + + def texture(self) -> PySide2.QtQuick.QSGTexture: ... + + +class QSGTransformNode(PySide2.QtQuick.QSGNode): + + def __init__(self) -> None: ... + + def combinedMatrix(self) -> PySide2.QtGui.QMatrix4x4: ... + def matrix(self) -> PySide2.QtGui.QMatrix4x4: ... + def setCombinedMatrix(self, matrix:PySide2.QtGui.QMatrix4x4) -> None: ... + def setMatrix(self, matrix:PySide2.QtGui.QMatrix4x4) -> None: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtQuickControls2.pyd b/venv/Lib/site-packages/PySide2/QtQuickControls2.pyd new file mode 100644 index 0000000..38c4bb6 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtQuickControls2.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtQuickControls2.pyi b/venv/Lib/site-packages/PySide2/QtQuickControls2.pyi new file mode 100644 index 0000000..79c4ae5 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtQuickControls2.pyi @@ -0,0 +1,82 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtQuickControls2, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtQuickControls2 +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtQuickControls2 + + +class QQuickStyle(Shiboken.Object): + + def __init__(self) -> None: ... + + @staticmethod + def addStylePath(path:str) -> None: ... + @staticmethod + def availableStyles() -> typing.List: ... + @staticmethod + def name() -> str: ... + @staticmethod + def path() -> str: ... + @staticmethod + def setFallbackStyle(style:str) -> None: ... + @staticmethod + def setStyle(style:str) -> None: ... + @staticmethod + def stylePathList() -> typing.List: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtQuickWidgets.pyd b/venv/Lib/site-packages/PySide2/QtQuickWidgets.pyd new file mode 100644 index 0000000..70b2a92 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtQuickWidgets.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtQuickWidgets.pyi b/venv/Lib/site-packages/PySide2/QtQuickWidgets.pyi new file mode 100644 index 0000000..9ae8683 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtQuickWidgets.pyi @@ -0,0 +1,131 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtQuickWidgets, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtQuickWidgets +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtGui +import PySide2.QtWidgets +import PySide2.QtQml +import PySide2.QtQuick +import PySide2.QtQuickWidgets + + +class QQuickWidget(PySide2.QtWidgets.QWidget): + Null : QQuickWidget = ... # 0x0 + SizeViewToRootObject : QQuickWidget = ... # 0x0 + Ready : QQuickWidget = ... # 0x1 + SizeRootObjectToView : QQuickWidget = ... # 0x1 + Loading : QQuickWidget = ... # 0x2 + Error : QQuickWidget = ... # 0x3 + + class ResizeMode(object): + SizeViewToRootObject : QQuickWidget.ResizeMode = ... # 0x0 + SizeRootObjectToView : QQuickWidget.ResizeMode = ... # 0x1 + + class Status(object): + Null : QQuickWidget.Status = ... # 0x0 + Ready : QQuickWidget.Status = ... # 0x1 + Loading : QQuickWidget.Status = ... # 0x2 + Error : QQuickWidget.Status = ... # 0x3 + + @typing.overload + def __init__(self, engine:PySide2.QtQml.QQmlEngine, parent:PySide2.QtWidgets.QWidget) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, source:PySide2.QtCore.QUrl, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def dragEnterEvent(self, arg__1:PySide2.QtGui.QDragEnterEvent) -> None: ... + def dragLeaveEvent(self, arg__1:PySide2.QtGui.QDragLeaveEvent) -> None: ... + def dragMoveEvent(self, arg__1:PySide2.QtGui.QDragMoveEvent) -> None: ... + def dropEvent(self, arg__1:PySide2.QtGui.QDropEvent) -> None: ... + def engine(self) -> PySide2.QtQml.QQmlEngine: ... + def errors(self) -> typing.List: ... + def event(self, arg__1:PySide2.QtCore.QEvent) -> bool: ... + def focusInEvent(self, event:PySide2.QtGui.QFocusEvent) -> None: ... + def focusNextPrevChild(self, next:bool) -> bool: ... + def focusOutEvent(self, event:PySide2.QtGui.QFocusEvent) -> None: ... + def format(self) -> PySide2.QtGui.QSurfaceFormat: ... + def grabFramebuffer(self) -> PySide2.QtGui.QImage: ... + def hideEvent(self, arg__1:PySide2.QtGui.QHideEvent) -> None: ... + def initialSize(self) -> PySide2.QtCore.QSize: ... + def keyPressEvent(self, arg__1:PySide2.QtGui.QKeyEvent) -> None: ... + def keyReleaseEvent(self, arg__1:PySide2.QtGui.QKeyEvent) -> None: ... + def mouseDoubleClickEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseMoveEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def mousePressEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def paintEvent(self, event:PySide2.QtGui.QPaintEvent) -> None: ... + def quickWindow(self) -> PySide2.QtQuick.QQuickWindow: ... + def resizeEvent(self, arg__1:PySide2.QtGui.QResizeEvent) -> None: ... + def resizeMode(self) -> PySide2.QtQuickWidgets.QQuickWidget.ResizeMode: ... + def rootContext(self) -> PySide2.QtQml.QQmlContext: ... + def rootObject(self) -> PySide2.QtQuick.QQuickItem: ... + def setClearColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setContent(self, url:PySide2.QtCore.QUrl, component:PySide2.QtQml.QQmlComponent, item:PySide2.QtCore.QObject) -> None: ... + def setFormat(self, format:PySide2.QtGui.QSurfaceFormat) -> None: ... + def setResizeMode(self, arg__1:PySide2.QtQuickWidgets.QQuickWidget.ResizeMode) -> None: ... + def setSource(self, arg__1:PySide2.QtCore.QUrl) -> None: ... + def showEvent(self, arg__1:PySide2.QtGui.QShowEvent) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def source(self) -> PySide2.QtCore.QUrl: ... + def status(self) -> PySide2.QtQuickWidgets.QQuickWidget.Status: ... + def timerEvent(self, arg__1:PySide2.QtCore.QTimerEvent) -> None: ... + def wheelEvent(self, arg__1:PySide2.QtGui.QWheelEvent) -> None: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtRemoteObjects.pyd b/venv/Lib/site-packages/PySide2/QtRemoteObjects.pyd new file mode 100644 index 0000000..1784ad0 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtRemoteObjects.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtRemoteObjects.pyi b/venv/Lib/site-packages/PySide2/QtRemoteObjects.pyi new file mode 100644 index 0000000..fbc0e95 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtRemoteObjects.pyi @@ -0,0 +1,280 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtRemoteObjects, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtRemoteObjects +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtRemoteObjects + + +class QAbstractItemModelReplica(PySide2.QtCore.QAbstractItemModel): + def availableRoles(self) -> typing.List: ... + def columnCount(self, parent:PySide2.QtCore.QModelIndex=...) -> int: ... + def data(self, index:PySide2.QtCore.QModelIndex, role:int=...) -> typing.Any: ... + def flags(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.Qt.ItemFlags: ... + def hasChildren(self, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def hasData(self, index:PySide2.QtCore.QModelIndex, role:int) -> bool: ... + def headerData(self, section:int, orientation:PySide2.QtCore.Qt.Orientation, role:int) -> typing.Any: ... + def index(self, row:int, column:int, parent:PySide2.QtCore.QModelIndex=...) -> PySide2.QtCore.QModelIndex: ... + def isInitialized(self) -> bool: ... + @typing.overload + def parent(self) -> PySide2.QtCore.QObject: ... + @typing.overload + def parent(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def roleNames(self) -> typing.Dict: ... + def rowCount(self, parent:PySide2.QtCore.QModelIndex=...) -> int: ... + def selectionModel(self) -> PySide2.QtCore.QItemSelectionModel: ... + def setData(self, index:PySide2.QtCore.QModelIndex, value:typing.Any, role:int=...) -> bool: ... + + +class QRemoteObjectAbstractPersistedStore(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def restoreProperties(self, repName:str, repSig:PySide2.QtCore.QByteArray) -> typing.List: ... + def saveProperties(self, repName:str, repSig:PySide2.QtCore.QByteArray, values:typing.Sequence) -> None: ... + + +class QRemoteObjectDynamicReplica(PySide2.QtRemoteObjects.QRemoteObjectReplica): ... + + +class QRemoteObjectHost(PySide2.QtRemoteObjects.QRemoteObjectHostBase): + + @typing.overload + def __init__(self, address:PySide2.QtCore.QUrl, parent:PySide2.QtCore.QObject) -> None: ... + @typing.overload + def __init__(self, address:PySide2.QtCore.QUrl, registryAddress:PySide2.QtCore.QUrl=..., allowedSchemas:PySide2.QtRemoteObjects.QRemoteObjectHostBase.AllowedSchemas=..., parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def hostUrl(self) -> PySide2.QtCore.QUrl: ... + def setHostUrl(self, hostAddress:PySide2.QtCore.QUrl, allowedSchemas:PySide2.QtRemoteObjects.QRemoteObjectHostBase.AllowedSchemas=...) -> bool: ... + + +class QRemoteObjectHostBase(PySide2.QtRemoteObjects.QRemoteObjectNode): + BuiltInSchemasOnly : QRemoteObjectHostBase = ... # 0x0 + AllowExternalRegistration: QRemoteObjectHostBase = ... # 0x1 + + class AllowedSchemas(object): + BuiltInSchemasOnly : QRemoteObjectHostBase.AllowedSchemas = ... # 0x0 + AllowExternalRegistration: QRemoteObjectHostBase.AllowedSchemas = ... # 0x1 + def addHostSideConnection(self, ioDevice:PySide2.QtCore.QIODevice) -> None: ... + def disableRemoting(self, remoteObject:PySide2.QtCore.QObject) -> bool: ... + @typing.overload + def enableRemoting(self, model:PySide2.QtCore.QAbstractItemModel, name:str, roles:typing.List, selectionModel:typing.Optional[PySide2.QtCore.QItemSelectionModel]=...) -> bool: ... + @typing.overload + def enableRemoting(self, object:PySide2.QtCore.QObject, name:str=...) -> bool: ... + def hostUrl(self) -> PySide2.QtCore.QUrl: ... + def proxy(self, registryUrl:PySide2.QtCore.QUrl, hostUrl:PySide2.QtCore.QUrl=...) -> bool: ... + def reverseProxy(self) -> bool: ... + def setHostUrl(self, hostAddress:PySide2.QtCore.QUrl, allowedSchemas:PySide2.QtRemoteObjects.QRemoteObjectHostBase.AllowedSchemas=...) -> bool: ... + def setName(self, name:str) -> None: ... + + +class QRemoteObjectNode(PySide2.QtCore.QObject): + NoError : QRemoteObjectNode = ... # 0x0 + RegistryNotAcquired : QRemoteObjectNode = ... # 0x1 + RegistryAlreadyHosted : QRemoteObjectNode = ... # 0x2 + NodeIsNoServer : QRemoteObjectNode = ... # 0x3 + ServerAlreadyCreated : QRemoteObjectNode = ... # 0x4 + UnintendedRegistryHosting: QRemoteObjectNode = ... # 0x5 + OperationNotValidOnClientNode: QRemoteObjectNode = ... # 0x6 + SourceNotRegistered : QRemoteObjectNode = ... # 0x7 + MissingObjectName : QRemoteObjectNode = ... # 0x8 + HostUrlInvalid : QRemoteObjectNode = ... # 0x9 + ProtocolMismatch : QRemoteObjectNode = ... # 0xa + ListenFailed : QRemoteObjectNode = ... # 0xb + + class ErrorCode(object): + NoError : QRemoteObjectNode.ErrorCode = ... # 0x0 + RegistryNotAcquired : QRemoteObjectNode.ErrorCode = ... # 0x1 + RegistryAlreadyHosted : QRemoteObjectNode.ErrorCode = ... # 0x2 + NodeIsNoServer : QRemoteObjectNode.ErrorCode = ... # 0x3 + ServerAlreadyCreated : QRemoteObjectNode.ErrorCode = ... # 0x4 + UnintendedRegistryHosting: QRemoteObjectNode.ErrorCode = ... # 0x5 + OperationNotValidOnClientNode: QRemoteObjectNode.ErrorCode = ... # 0x6 + SourceNotRegistered : QRemoteObjectNode.ErrorCode = ... # 0x7 + MissingObjectName : QRemoteObjectNode.ErrorCode = ... # 0x8 + HostUrlInvalid : QRemoteObjectNode.ErrorCode = ... # 0x9 + ProtocolMismatch : QRemoteObjectNode.ErrorCode = ... # 0xa + ListenFailed : QRemoteObjectNode.ErrorCode = ... # 0xb + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, registryAddress:PySide2.QtCore.QUrl, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def acquireDynamic(self, name:str) -> PySide2.QtRemoteObjects.QRemoteObjectDynamicReplica: ... + def acquireModel(self, name:str) -> PySide2.QtRemoteObjects.QAbstractItemModelReplica: ... + def addClientSideConnection(self, ioDevice:PySide2.QtCore.QIODevice) -> None: ... + def connectToNode(self, address:PySide2.QtCore.QUrl) -> bool: ... + def heartbeatInterval(self) -> int: ... + def instances(self, typeName:str) -> typing.List: ... + def lastError(self) -> PySide2.QtRemoteObjects.QRemoteObjectNode.ErrorCode: ... + def persistedStore(self) -> PySide2.QtRemoteObjects.QRemoteObjectAbstractPersistedStore: ... + def registry(self) -> PySide2.QtRemoteObjects.QRemoteObjectRegistry: ... + def registryUrl(self) -> PySide2.QtCore.QUrl: ... + def setHeartbeatInterval(self, interval:int) -> None: ... + def setName(self, name:str) -> None: ... + def setPersistedStore(self, persistedStore:PySide2.QtRemoteObjects.QRemoteObjectAbstractPersistedStore) -> None: ... + def setRegistryUrl(self, registryAddress:PySide2.QtCore.QUrl) -> bool: ... + def timerEvent(self, arg__1:PySide2.QtCore.QTimerEvent) -> None: ... + def waitForRegistry(self, timeout:int=...) -> bool: ... + + +class QRemoteObjectPendingCall(Shiboken.Object): + NoError : QRemoteObjectPendingCall = ... # 0x0 + InvalidMessage : QRemoteObjectPendingCall = ... # 0x1 + + class Error(object): + NoError : QRemoteObjectPendingCall.Error = ... # 0x0 + InvalidMessage : QRemoteObjectPendingCall.Error = ... # 0x1 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtRemoteObjects.QRemoteObjectPendingCall) -> None: ... + + def error(self) -> PySide2.QtRemoteObjects.QRemoteObjectPendingCall.Error: ... + @staticmethod + def fromCompletedCall(returnValue:typing.Any) -> PySide2.QtRemoteObjects.QRemoteObjectPendingCall: ... + def isFinished(self) -> bool: ... + def returnValue(self) -> typing.Any: ... + def waitForFinished(self, timeout:int=...) -> bool: ... + + +class QRemoteObjectPendingCallWatcher(PySide2.QtCore.QObject, PySide2.QtRemoteObjects.QRemoteObjectPendingCall): + + def __init__(self, call:PySide2.QtRemoteObjects.QRemoteObjectPendingCall, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def isFinished(self) -> bool: ... + def waitForFinished(self) -> None: ... + + +class QRemoteObjectRegistry(PySide2.QtRemoteObjects.QRemoteObjectReplica): + def addSource(self, entry:typing.Tuple) -> None: ... + def initialize(self) -> None: ... + def pushToRegistryIfNeeded(self) -> None: ... + @staticmethod + def registerMetatypes() -> None: ... + def removeSource(self, entry:typing.Tuple) -> None: ... + def sourceLocations(self) -> typing.Dict: ... + + +class QRemoteObjectRegistryHost(PySide2.QtRemoteObjects.QRemoteObjectHostBase): + + def __init__(self, registryAddress:PySide2.QtCore.QUrl=..., parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def setRegistryUrl(self, registryUrl:PySide2.QtCore.QUrl) -> bool: ... + + +class QRemoteObjectReplica(PySide2.QtCore.QObject): + Uninitialized : QRemoteObjectReplica = ... # 0x0 + Default : QRemoteObjectReplica = ... # 0x1 + Valid : QRemoteObjectReplica = ... # 0x2 + Suspect : QRemoteObjectReplica = ... # 0x3 + SignatureMismatch : QRemoteObjectReplica = ... # 0x4 + + class State(object): + Uninitialized : QRemoteObjectReplica.State = ... # 0x0 + Default : QRemoteObjectReplica.State = ... # 0x1 + Valid : QRemoteObjectReplica.State = ... # 0x2 + Suspect : QRemoteObjectReplica.State = ... # 0x3 + SignatureMismatch : QRemoteObjectReplica.State = ... # 0x4 + + def __init__(self) -> None: ... + + def initialize(self) -> None: ... + def initializeNode(self, node:PySide2.QtRemoteObjects.QRemoteObjectNode, name:str=...) -> None: ... + def isInitialized(self) -> bool: ... + def isReplicaValid(self) -> bool: ... + def node(self) -> PySide2.QtRemoteObjects.QRemoteObjectNode: ... + def persistProperties(self, repName:str, repSig:PySide2.QtCore.QByteArray, props:typing.Sequence) -> None: ... + def propAsVariant(self, i:int) -> typing.Any: ... + def retrieveProperties(self, repName:str, repSig:PySide2.QtCore.QByteArray) -> typing.List: ... + def send(self, call:PySide2.QtCore.QMetaObject.Call, index:int, args:typing.Sequence) -> None: ... + def sendWithReply(self, call:PySide2.QtCore.QMetaObject.Call, index:int, args:typing.Sequence) -> PySide2.QtRemoteObjects.QRemoteObjectPendingCall: ... + def setChild(self, i:int, arg__2:typing.Any) -> None: ... + def setNode(self, node:PySide2.QtRemoteObjects.QRemoteObjectNode) -> None: ... + def setProperties(self, arg__1:typing.Sequence) -> None: ... + def state(self) -> PySide2.QtRemoteObjects.QRemoteObjectReplica.State: ... + def waitForSource(self, timeout:int=...) -> bool: ... + + +class QRemoteObjectSettingsStore(PySide2.QtRemoteObjects.QRemoteObjectAbstractPersistedStore): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def restoreProperties(self, repName:str, repSig:PySide2.QtCore.QByteArray) -> typing.List: ... + def saveProperties(self, repName:str, repSig:PySide2.QtCore.QByteArray, values:typing.Sequence) -> None: ... + + +class QRemoteObjectSourceLocationInfo(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QRemoteObjectSourceLocationInfo:PySide2.QtRemoteObjects.QRemoteObjectSourceLocationInfo) -> None: ... + @typing.overload + def __init__(self, typeName_:str, hostUrl_:PySide2.QtCore.QUrl) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __lshift__(self, stream:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __rshift__(self, stream:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtScript.pyd b/venv/Lib/site-packages/PySide2/QtScript.pyd new file mode 100644 index 0000000..74cc674 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtScript.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtScript.pyi b/venv/Lib/site-packages/PySide2/QtScript.pyi new file mode 100644 index 0000000..034d135 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtScript.pyi @@ -0,0 +1,532 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtScript, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtScript +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtScript + + +class QScriptClass(Shiboken.Object): + Callable : QScriptClass = ... # 0x0 + HandlesReadAccess : QScriptClass = ... # 0x1 + HasInstance : QScriptClass = ... # 0x1 + HandlesWriteAccess : QScriptClass = ... # 0x2 + + class Extension(object): + Callable : QScriptClass.Extension = ... # 0x0 + HasInstance : QScriptClass.Extension = ... # 0x1 + + class QueryFlag(object): + HandlesReadAccess : QScriptClass.QueryFlag = ... # 0x1 + HandlesWriteAccess : QScriptClass.QueryFlag = ... # 0x2 + + def __init__(self, engine:PySide2.QtScript.QScriptEngine) -> None: ... + + def engine(self) -> PySide2.QtScript.QScriptEngine: ... + def extension(self, extension:PySide2.QtScript.QScriptClass.Extension, argument:typing.Any=...) -> typing.Any: ... + def name(self) -> str: ... + def newIterator(self, object:PySide2.QtScript.QScriptValue) -> PySide2.QtScript.QScriptClassPropertyIterator: ... + def property(self, object:PySide2.QtScript.QScriptValue, name:PySide2.QtScript.QScriptString, id:int) -> PySide2.QtScript.QScriptValue: ... + def propertyFlags(self, object:PySide2.QtScript.QScriptValue, name:PySide2.QtScript.QScriptString, id:int) -> PySide2.QtScript.QScriptValue.PropertyFlags: ... + def prototype(self) -> PySide2.QtScript.QScriptValue: ... + def setProperty(self, object:PySide2.QtScript.QScriptValue, name:PySide2.QtScript.QScriptString, id:int, value:PySide2.QtScript.QScriptValue) -> None: ... + def supportsExtension(self, extension:PySide2.QtScript.QScriptClass.Extension) -> bool: ... + + +class QScriptClassPropertyIterator(Shiboken.Object): + + def __init__(self, object:PySide2.QtScript.QScriptValue) -> None: ... + + def flags(self) -> PySide2.QtScript.QScriptValue.PropertyFlags: ... + def hasNext(self) -> bool: ... + def hasPrevious(self) -> bool: ... + def id(self) -> int: ... + def name(self) -> PySide2.QtScript.QScriptString: ... + def next(self) -> None: ... + def object(self) -> PySide2.QtScript.QScriptValue: ... + def previous(self) -> None: ... + def toBack(self) -> None: ... + def toFront(self) -> None: ... + + +class QScriptContext(Shiboken.Object): + NormalState : QScriptContext = ... # 0x0 + UnknownError : QScriptContext = ... # 0x0 + ExceptionState : QScriptContext = ... # 0x1 + ReferenceError : QScriptContext = ... # 0x1 + SyntaxError : QScriptContext = ... # 0x2 + TypeError : QScriptContext = ... # 0x3 + RangeError : QScriptContext = ... # 0x4 + URIError : QScriptContext = ... # 0x5 + + class Error(object): + UnknownError : QScriptContext.Error = ... # 0x0 + ReferenceError : QScriptContext.Error = ... # 0x1 + SyntaxError : QScriptContext.Error = ... # 0x2 + TypeError : QScriptContext.Error = ... # 0x3 + RangeError : QScriptContext.Error = ... # 0x4 + URIError : QScriptContext.Error = ... # 0x5 + + class ExecutionState(object): + NormalState : QScriptContext.ExecutionState = ... # 0x0 + ExceptionState : QScriptContext.ExecutionState = ... # 0x1 + def activationObject(self) -> PySide2.QtScript.QScriptValue: ... + def argument(self, index:int) -> PySide2.QtScript.QScriptValue: ... + def argumentCount(self) -> int: ... + def argumentsObject(self) -> PySide2.QtScript.QScriptValue: ... + def backtrace(self) -> typing.List: ... + def callee(self) -> PySide2.QtScript.QScriptValue: ... + def engine(self) -> PySide2.QtScript.QScriptEngine: ... + def isCalledAsConstructor(self) -> bool: ... + def parentContext(self) -> PySide2.QtScript.QScriptContext: ... + def popScope(self) -> PySide2.QtScript.QScriptValue: ... + def pushScope(self, object:PySide2.QtScript.QScriptValue) -> None: ... + def returnValue(self) -> PySide2.QtScript.QScriptValue: ... + def scopeChain(self) -> typing.List: ... + def setActivationObject(self, activation:PySide2.QtScript.QScriptValue) -> None: ... + def setReturnValue(self, result:PySide2.QtScript.QScriptValue) -> None: ... + def setThisObject(self, thisObject:PySide2.QtScript.QScriptValue) -> None: ... + def state(self) -> PySide2.QtScript.QScriptContext.ExecutionState: ... + def thisObject(self) -> PySide2.QtScript.QScriptValue: ... + @typing.overload + def throwError(self, error:PySide2.QtScript.QScriptContext.Error, text:str) -> PySide2.QtScript.QScriptValue: ... + @typing.overload + def throwError(self, text:str) -> PySide2.QtScript.QScriptValue: ... + def throwValue(self, value:PySide2.QtScript.QScriptValue) -> PySide2.QtScript.QScriptValue: ... + def toString(self) -> str: ... + + +class QScriptContextInfo(Shiboken.Object): + ScriptFunction : QScriptContextInfo = ... # 0x0 + QtFunction : QScriptContextInfo = ... # 0x1 + QtPropertyFunction : QScriptContextInfo = ... # 0x2 + NativeFunction : QScriptContextInfo = ... # 0x3 + + class FunctionType(object): + ScriptFunction : QScriptContextInfo.FunctionType = ... # 0x0 + QtFunction : QScriptContextInfo.FunctionType = ... # 0x1 + QtPropertyFunction : QScriptContextInfo.FunctionType = ... # 0x2 + NativeFunction : QScriptContextInfo.FunctionType = ... # 0x3 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, context:PySide2.QtScript.QScriptContext) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtScript.QScriptContextInfo) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __lshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __rshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def columnNumber(self) -> int: ... + def fileName(self) -> str: ... + def functionEndLineNumber(self) -> int: ... + def functionMetaIndex(self) -> int: ... + def functionName(self) -> str: ... + def functionParameterNames(self) -> typing.List: ... + def functionStartLineNumber(self) -> int: ... + def functionType(self) -> PySide2.QtScript.QScriptContextInfo.FunctionType: ... + def isNull(self) -> bool: ... + def lineNumber(self) -> int: ... + def scriptId(self) -> int: ... + + +class QScriptEngine(PySide2.QtCore.QObject): + QtOwnership : QScriptEngine = ... # 0x0 + ExcludeChildObjects : QScriptEngine = ... # 0x1 + ScriptOwnership : QScriptEngine = ... # 0x1 + AutoOwnership : QScriptEngine = ... # 0x2 + ExcludeSuperClassMethods : QScriptEngine = ... # 0x2 + ExcludeSuperClassProperties: QScriptEngine = ... # 0x4 + ExcludeSuperClassContents: QScriptEngine = ... # 0x6 + SkipMethodsInEnumeration : QScriptEngine = ... # 0x8 + ExcludeDeleteLater : QScriptEngine = ... # 0x10 + ExcludeSlots : QScriptEngine = ... # 0x20 + AutoCreateDynamicProperties: QScriptEngine = ... # 0x100 + PreferExistingWrapperObject: QScriptEngine = ... # 0x200 + + class QObjectWrapOption(object): + ExcludeChildObjects : QScriptEngine.QObjectWrapOption = ... # 0x1 + ExcludeSuperClassMethods : QScriptEngine.QObjectWrapOption = ... # 0x2 + ExcludeSuperClassProperties: QScriptEngine.QObjectWrapOption = ... # 0x4 + ExcludeSuperClassContents: QScriptEngine.QObjectWrapOption = ... # 0x6 + SkipMethodsInEnumeration : QScriptEngine.QObjectWrapOption = ... # 0x8 + ExcludeDeleteLater : QScriptEngine.QObjectWrapOption = ... # 0x10 + ExcludeSlots : QScriptEngine.QObjectWrapOption = ... # 0x20 + AutoCreateDynamicProperties: QScriptEngine.QObjectWrapOption = ... # 0x100 + PreferExistingWrapperObject: QScriptEngine.QObjectWrapOption = ... # 0x200 + + class QObjectWrapOptions(object): ... + + class ValueOwnership(object): + QtOwnership : QScriptEngine.ValueOwnership = ... # 0x0 + ScriptOwnership : QScriptEngine.ValueOwnership = ... # 0x1 + AutoOwnership : QScriptEngine.ValueOwnership = ... # 0x2 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + + def abortEvaluation(self, result:PySide2.QtScript.QScriptValue=...) -> None: ... + def agent(self) -> PySide2.QtScript.QScriptEngineAgent: ... + def availableExtensions(self) -> typing.List: ... + def canEvaluate(self, program:str) -> bool: ... + def clearExceptions(self) -> None: ... + def collectGarbage(self) -> None: ... + def currentContext(self) -> PySide2.QtScript.QScriptContext: ... + def defaultPrototype(self, metaTypeId:int) -> PySide2.QtScript.QScriptValue: ... + @typing.overload + def evaluate(self, program:PySide2.QtScript.QScriptProgram) -> PySide2.QtScript.QScriptValue: ... + @typing.overload + def evaluate(self, program:str, fileName:str=..., lineNumber:int=...) -> PySide2.QtScript.QScriptValue: ... + def globalObject(self) -> PySide2.QtScript.QScriptValue: ... + def hasUncaughtException(self) -> bool: ... + def importExtension(self, extension:str) -> PySide2.QtScript.QScriptValue: ... + def importedExtensions(self) -> typing.List: ... + def installTranslatorFunctions(self, object:PySide2.QtScript.QScriptValue=...) -> None: ... + def isEvaluating(self) -> bool: ... + def newActivationObject(self) -> PySide2.QtScript.QScriptValue: ... + def newArray(self, length:int=...) -> PySide2.QtScript.QScriptValue: ... + @typing.overload + def newDate(self, value:PySide2.QtCore.QDateTime) -> PySide2.QtScript.QScriptValue: ... + @typing.overload + def newDate(self, value:float) -> PySide2.QtScript.QScriptValue: ... + @typing.overload + def newObject(self) -> PySide2.QtScript.QScriptValue: ... + @typing.overload + def newObject(self, scriptClass:PySide2.QtScript.QScriptClass, data:PySide2.QtScript.QScriptValue=...) -> PySide2.QtScript.QScriptValue: ... + def newQMetaObject(self, metaObject:PySide2.QtCore.QMetaObject, ctor:PySide2.QtScript.QScriptValue=...) -> PySide2.QtScript.QScriptValue: ... + @typing.overload + def newQObject(self, object:PySide2.QtCore.QObject, ownership:PySide2.QtScript.QScriptEngine.ValueOwnership=..., options:PySide2.QtScript.QScriptEngine.QObjectWrapOptions=...) -> PySide2.QtScript.QScriptValue: ... + @typing.overload + def newQObject(self, scriptObject:PySide2.QtScript.QScriptValue, qtObject:PySide2.QtCore.QObject, ownership:PySide2.QtScript.QScriptEngine.ValueOwnership=..., options:PySide2.QtScript.QScriptEngine.QObjectWrapOptions=...) -> PySide2.QtScript.QScriptValue: ... + @typing.overload + def newRegExp(self, pattern:str, flags:str) -> PySide2.QtScript.QScriptValue: ... + @typing.overload + def newRegExp(self, regexp:PySide2.QtCore.QRegExp) -> PySide2.QtScript.QScriptValue: ... + @typing.overload + def newVariant(self, object:PySide2.QtScript.QScriptValue, value:typing.Any) -> PySide2.QtScript.QScriptValue: ... + @typing.overload + def newVariant(self, value:typing.Any) -> PySide2.QtScript.QScriptValue: ... + def nullValue(self) -> PySide2.QtScript.QScriptValue: ... + def objectById(self, id:int) -> PySide2.QtScript.QScriptValue: ... + def popContext(self) -> None: ... + def processEventsInterval(self) -> int: ... + def pushContext(self) -> PySide2.QtScript.QScriptContext: ... + def reportAdditionalMemoryCost(self, size:int) -> None: ... + def setAgent(self, agent:PySide2.QtScript.QScriptEngineAgent) -> None: ... + def setDefaultPrototype(self, metaTypeId:int, prototype:PySide2.QtScript.QScriptValue) -> None: ... + def setGlobalObject(self, object:PySide2.QtScript.QScriptValue) -> None: ... + def setProcessEventsInterval(self, interval:int) -> None: ... + def toObject(self, value:PySide2.QtScript.QScriptValue) -> PySide2.QtScript.QScriptValue: ... + def toStringHandle(self, str:str) -> PySide2.QtScript.QScriptString: ... + def uncaughtException(self) -> PySide2.QtScript.QScriptValue: ... + def uncaughtExceptionBacktrace(self) -> typing.List: ... + def uncaughtExceptionLineNumber(self) -> int: ... + def undefinedValue(self) -> PySide2.QtScript.QScriptValue: ... + + +class QScriptEngineAgent(Shiboken.Object): + DebuggerInvocationRequest: QScriptEngineAgent = ... # 0x0 + + class Extension(object): + DebuggerInvocationRequest: QScriptEngineAgent.Extension = ... # 0x0 + + def __init__(self, engine:PySide2.QtScript.QScriptEngine) -> None: ... + + def contextPop(self) -> None: ... + def contextPush(self) -> None: ... + def engine(self) -> PySide2.QtScript.QScriptEngine: ... + def exceptionCatch(self, scriptId:int, exception:PySide2.QtScript.QScriptValue) -> None: ... + def exceptionThrow(self, scriptId:int, exception:PySide2.QtScript.QScriptValue, hasHandler:bool) -> None: ... + def extension(self, extension:PySide2.QtScript.QScriptEngineAgent.Extension, argument:typing.Any=...) -> typing.Any: ... + def functionEntry(self, scriptId:int) -> None: ... + def functionExit(self, scriptId:int, returnValue:PySide2.QtScript.QScriptValue) -> None: ... + def positionChange(self, scriptId:int, lineNumber:int, columnNumber:int) -> None: ... + def scriptLoad(self, id:int, program:str, fileName:str, baseLineNumber:int) -> None: ... + def scriptUnload(self, id:int) -> None: ... + def supportsExtension(self, extension:PySide2.QtScript.QScriptEngineAgent.Extension) -> bool: ... + + +class QScriptExtensionInterface(PySide2.QtCore.QFactoryInterface): + + def __init__(self) -> None: ... + + def initialize(self, key:str, engine:PySide2.QtScript.QScriptEngine) -> None: ... + + +class QScriptExtensionPlugin(PySide2.QtCore.QObject, PySide2.QtScript.QScriptExtensionInterface): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def initialize(self, key:str, engine:PySide2.QtScript.QScriptEngine) -> None: ... + def keys(self) -> typing.List: ... + def setupPackage(self, key:str, engine:PySide2.QtScript.QScriptEngine) -> PySide2.QtScript.QScriptValue: ... + + +class QScriptProgram(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtScript.QScriptProgram) -> None: ... + @typing.overload + def __init__(self, sourceCode:str, fileName:str=..., firstLineNumber:int=...) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def fileName(self) -> str: ... + def firstLineNumber(self) -> int: ... + def isNull(self) -> bool: ... + def sourceCode(self) -> str: ... + + +class QScriptString(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtScript.QScriptString) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def isValid(self) -> bool: ... + def toArrayIndex(self) -> typing.Tuple: ... + def toString(self) -> str: ... + + +class QScriptValue(Shiboken.Object): + UserRange : QScriptValue = ... # -0x1000000 + NullValue : QScriptValue = ... # 0x0 + ResolveLocal : QScriptValue = ... # 0x0 + ReadOnly : QScriptValue = ... # 0x1 + ResolvePrototype : QScriptValue = ... # 0x1 + UndefinedValue : QScriptValue = ... # 0x1 + ResolveScope : QScriptValue = ... # 0x2 + Undeletable : QScriptValue = ... # 0x2 + ResolveFull : QScriptValue = ... # 0x3 + SkipInEnumeration : QScriptValue = ... # 0x4 + PropertyGetter : QScriptValue = ... # 0x8 + PropertySetter : QScriptValue = ... # 0x10 + QObjectMember : QScriptValue = ... # 0x20 + KeepExistingFlags : QScriptValue = ... # 0x800 + + class PropertyFlag(object): + UserRange : QScriptValue.PropertyFlag = ... # -0x1000000 + ReadOnly : QScriptValue.PropertyFlag = ... # 0x1 + Undeletable : QScriptValue.PropertyFlag = ... # 0x2 + SkipInEnumeration : QScriptValue.PropertyFlag = ... # 0x4 + PropertyGetter : QScriptValue.PropertyFlag = ... # 0x8 + PropertySetter : QScriptValue.PropertyFlag = ... # 0x10 + QObjectMember : QScriptValue.PropertyFlag = ... # 0x20 + KeepExistingFlags : QScriptValue.PropertyFlag = ... # 0x800 + + class PropertyFlags(object): ... + + class ResolveFlag(object): + ResolveLocal : QScriptValue.ResolveFlag = ... # 0x0 + ResolvePrototype : QScriptValue.ResolveFlag = ... # 0x1 + ResolveScope : QScriptValue.ResolveFlag = ... # 0x2 + ResolveFull : QScriptValue.ResolveFlag = ... # 0x3 + + class ResolveFlags(object): ... + + class SpecialValue(object): + NullValue : QScriptValue.SpecialValue = ... # 0x0 + UndefinedValue : QScriptValue.SpecialValue = ... # 0x1 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, engine:PySide2.QtScript.QScriptEngine, val:PySide2.QtScript.QScriptValue.SpecialValue) -> None: ... + @typing.overload + def __init__(self, engine:PySide2.QtScript.QScriptEngine, val:str) -> None: ... + @typing.overload + def __init__(self, engine:PySide2.QtScript.QScriptEngine, val:bool) -> None: ... + @typing.overload + def __init__(self, engine:PySide2.QtScript.QScriptEngine, val:bytes) -> None: ... + @typing.overload + def __init__(self, engine:PySide2.QtScript.QScriptEngine, val:float) -> None: ... + @typing.overload + def __init__(self, engine:PySide2.QtScript.QScriptEngine, val:int) -> None: ... + @typing.overload + def __init__(self, engine:PySide2.QtScript.QScriptEngine, val:int) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtScript.QScriptValue) -> None: ... + @typing.overload + def __init__(self, value:PySide2.QtScript.QScriptValue.SpecialValue) -> None: ... + @typing.overload + def __init__(self, value:str) -> None: ... + @typing.overload + def __init__(self, value:bool) -> None: ... + @typing.overload + def __init__(self, value:bytes) -> None: ... + @typing.overload + def __init__(self, value:float) -> None: ... + @typing.overload + def __init__(self, value:int) -> None: ... + @typing.overload + def __init__(self, value:int) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __iter__(self) -> object: ... + def __repr__(self) -> object: ... + @typing.overload + def call(self, thisObject:PySide2.QtScript.QScriptValue, arguments:PySide2.QtScript.QScriptValue) -> PySide2.QtScript.QScriptValue: ... + @typing.overload + def call(self, thisObject:PySide2.QtScript.QScriptValue=..., args:typing.Sequence=...) -> PySide2.QtScript.QScriptValue: ... + @typing.overload + def construct(self, args:typing.Sequence=...) -> PySide2.QtScript.QScriptValue: ... + @typing.overload + def construct(self, arguments:PySide2.QtScript.QScriptValue) -> PySide2.QtScript.QScriptValue: ... + def data(self) -> PySide2.QtScript.QScriptValue: ... + def engine(self) -> PySide2.QtScript.QScriptEngine: ... + def equals(self, other:PySide2.QtScript.QScriptValue) -> bool: ... + def instanceOf(self, other:PySide2.QtScript.QScriptValue) -> bool: ... + def isArray(self) -> bool: ... + def isBool(self) -> bool: ... + def isBoolean(self) -> bool: ... + def isDate(self) -> bool: ... + def isError(self) -> bool: ... + def isFunction(self) -> bool: ... + def isNull(self) -> bool: ... + def isNumber(self) -> bool: ... + def isObject(self) -> bool: ... + def isQMetaObject(self) -> bool: ... + def isQObject(self) -> bool: ... + def isRegExp(self) -> bool: ... + def isString(self) -> bool: ... + def isUndefined(self) -> bool: ... + def isValid(self) -> bool: ... + def isVariant(self) -> bool: ... + def lessThan(self, other:PySide2.QtScript.QScriptValue) -> bool: ... + def objectId(self) -> int: ... + @typing.overload + def property(self, arrayIndex:int, mode:PySide2.QtScript.QScriptValue.ResolveFlags=...) -> PySide2.QtScript.QScriptValue: ... + @typing.overload + def property(self, name:PySide2.QtScript.QScriptString, mode:PySide2.QtScript.QScriptValue.ResolveFlags=...) -> PySide2.QtScript.QScriptValue: ... + @typing.overload + def property(self, name:str, mode:PySide2.QtScript.QScriptValue.ResolveFlags=...) -> PySide2.QtScript.QScriptValue: ... + @typing.overload + def propertyFlags(self, name:PySide2.QtScript.QScriptString, mode:PySide2.QtScript.QScriptValue.ResolveFlags=...) -> PySide2.QtScript.QScriptValue.PropertyFlags: ... + @typing.overload + def propertyFlags(self, name:str, mode:PySide2.QtScript.QScriptValue.ResolveFlags=...) -> PySide2.QtScript.QScriptValue.PropertyFlags: ... + def prototype(self) -> PySide2.QtScript.QScriptValue: ... + def scope(self) -> PySide2.QtScript.QScriptValue: ... + def scriptClass(self) -> PySide2.QtScript.QScriptClass: ... + def setData(self, data:PySide2.QtScript.QScriptValue) -> None: ... + @typing.overload + def setProperty(self, arrayIndex:int, value:PySide2.QtScript.QScriptValue, flags:PySide2.QtScript.QScriptValue.PropertyFlags=...) -> None: ... + @typing.overload + def setProperty(self, name:PySide2.QtScript.QScriptString, value:PySide2.QtScript.QScriptValue, flags:PySide2.QtScript.QScriptValue.PropertyFlags=...) -> None: ... + @typing.overload + def setProperty(self, name:str, value:PySide2.QtScript.QScriptValue, flags:PySide2.QtScript.QScriptValue.PropertyFlags=...) -> None: ... + def setPrototype(self, prototype:PySide2.QtScript.QScriptValue) -> None: ... + def setScope(self, scope:PySide2.QtScript.QScriptValue) -> None: ... + def setScriptClass(self, scriptClass:PySide2.QtScript.QScriptClass) -> None: ... + def strictlyEquals(self, other:PySide2.QtScript.QScriptValue) -> bool: ... + def toBool(self) -> bool: ... + def toBoolean(self) -> bool: ... + def toDateTime(self) -> PySide2.QtCore.QDateTime: ... + def toInt32(self) -> int: ... + def toInteger(self) -> float: ... + def toNumber(self) -> float: ... + def toObject(self) -> PySide2.QtScript.QScriptValue: ... + def toQMetaObject(self) -> PySide2.QtCore.QMetaObject: ... + def toQObject(self) -> PySide2.QtCore.QObject: ... + def toRegExp(self) -> PySide2.QtCore.QRegExp: ... + def toString(self) -> str: ... + def toUInt16(self) -> int: ... + def toUInt32(self) -> int: ... + def toVariant(self) -> typing.Any: ... + + +class QScriptValueIterator(Shiboken.Object): + + def __init__(self, value:PySide2.QtScript.QScriptValue) -> None: ... + + def __iter__(self) -> object: ... + def __next__(self) -> object: ... + def flags(self) -> PySide2.QtScript.QScriptValue.PropertyFlags: ... + def hasNext(self) -> bool: ... + def hasPrevious(self) -> bool: ... + def name(self) -> str: ... + def next(self) -> None: ... + def previous(self) -> None: ... + def remove(self) -> None: ... + def scriptName(self) -> PySide2.QtScript.QScriptString: ... + def setValue(self, value:PySide2.QtScript.QScriptValue) -> None: ... + def toBack(self) -> None: ... + def toFront(self) -> None: ... + def value(self) -> PySide2.QtScript.QScriptValue: ... + + +class QScriptable(Shiboken.Object): + + def __init__(self) -> None: ... + + def argument(self, index:int) -> PySide2.QtScript.QScriptValue: ... + def argumentCount(self) -> int: ... + def context(self) -> PySide2.QtScript.QScriptContext: ... + def engine(self) -> PySide2.QtScript.QScriptEngine: ... + def thisObject(self) -> PySide2.QtScript.QScriptValue: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtScriptTools.pyd b/venv/Lib/site-packages/PySide2/QtScriptTools.pyd new file mode 100644 index 0000000..21544d7 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtScriptTools.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtScriptTools.pyi b/venv/Lib/site-packages/PySide2/QtScriptTools.pyi new file mode 100644 index 0000000..470820b --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtScriptTools.pyi @@ -0,0 +1,138 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtScriptTools, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtScriptTools +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtWidgets +import PySide2.QtScript +import PySide2.QtScriptTools + + +class QScriptEngineDebugger(PySide2.QtCore.QObject): + ConsoleWidget : QScriptEngineDebugger = ... # 0x0 + InterruptAction : QScriptEngineDebugger = ... # 0x0 + RunningState : QScriptEngineDebugger = ... # 0x0 + ContinueAction : QScriptEngineDebugger = ... # 0x1 + StackWidget : QScriptEngineDebugger = ... # 0x1 + SuspendedState : QScriptEngineDebugger = ... # 0x1 + ScriptsWidget : QScriptEngineDebugger = ... # 0x2 + StepIntoAction : QScriptEngineDebugger = ... # 0x2 + LocalsWidget : QScriptEngineDebugger = ... # 0x3 + StepOverAction : QScriptEngineDebugger = ... # 0x3 + CodeWidget : QScriptEngineDebugger = ... # 0x4 + StepOutAction : QScriptEngineDebugger = ... # 0x4 + CodeFinderWidget : QScriptEngineDebugger = ... # 0x5 + RunToCursorAction : QScriptEngineDebugger = ... # 0x5 + BreakpointsWidget : QScriptEngineDebugger = ... # 0x6 + RunToNewScriptAction : QScriptEngineDebugger = ... # 0x6 + DebugOutputWidget : QScriptEngineDebugger = ... # 0x7 + ToggleBreakpointAction : QScriptEngineDebugger = ... # 0x7 + ClearDebugOutputAction : QScriptEngineDebugger = ... # 0x8 + ErrorLogWidget : QScriptEngineDebugger = ... # 0x8 + ClearErrorLogAction : QScriptEngineDebugger = ... # 0x9 + ClearConsoleAction : QScriptEngineDebugger = ... # 0xa + FindInScriptAction : QScriptEngineDebugger = ... # 0xb + FindNextInScriptAction : QScriptEngineDebugger = ... # 0xc + FindPreviousInScriptAction: QScriptEngineDebugger = ... # 0xd + GoToLineAction : QScriptEngineDebugger = ... # 0xe + + class DebuggerAction(object): + InterruptAction : QScriptEngineDebugger.DebuggerAction = ... # 0x0 + ContinueAction : QScriptEngineDebugger.DebuggerAction = ... # 0x1 + StepIntoAction : QScriptEngineDebugger.DebuggerAction = ... # 0x2 + StepOverAction : QScriptEngineDebugger.DebuggerAction = ... # 0x3 + StepOutAction : QScriptEngineDebugger.DebuggerAction = ... # 0x4 + RunToCursorAction : QScriptEngineDebugger.DebuggerAction = ... # 0x5 + RunToNewScriptAction : QScriptEngineDebugger.DebuggerAction = ... # 0x6 + ToggleBreakpointAction : QScriptEngineDebugger.DebuggerAction = ... # 0x7 + ClearDebugOutputAction : QScriptEngineDebugger.DebuggerAction = ... # 0x8 + ClearErrorLogAction : QScriptEngineDebugger.DebuggerAction = ... # 0x9 + ClearConsoleAction : QScriptEngineDebugger.DebuggerAction = ... # 0xa + FindInScriptAction : QScriptEngineDebugger.DebuggerAction = ... # 0xb + FindNextInScriptAction : QScriptEngineDebugger.DebuggerAction = ... # 0xc + FindPreviousInScriptAction: QScriptEngineDebugger.DebuggerAction = ... # 0xd + GoToLineAction : QScriptEngineDebugger.DebuggerAction = ... # 0xe + + class DebuggerState(object): + RunningState : QScriptEngineDebugger.DebuggerState = ... # 0x0 + SuspendedState : QScriptEngineDebugger.DebuggerState = ... # 0x1 + + class DebuggerWidget(object): + ConsoleWidget : QScriptEngineDebugger.DebuggerWidget = ... # 0x0 + StackWidget : QScriptEngineDebugger.DebuggerWidget = ... # 0x1 + ScriptsWidget : QScriptEngineDebugger.DebuggerWidget = ... # 0x2 + LocalsWidget : QScriptEngineDebugger.DebuggerWidget = ... # 0x3 + CodeWidget : QScriptEngineDebugger.DebuggerWidget = ... # 0x4 + CodeFinderWidget : QScriptEngineDebugger.DebuggerWidget = ... # 0x5 + BreakpointsWidget : QScriptEngineDebugger.DebuggerWidget = ... # 0x6 + DebugOutputWidget : QScriptEngineDebugger.DebuggerWidget = ... # 0x7 + ErrorLogWidget : QScriptEngineDebugger.DebuggerWidget = ... # 0x8 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def action(self, action:PySide2.QtScriptTools.QScriptEngineDebugger.DebuggerAction) -> PySide2.QtWidgets.QAction: ... + def attachTo(self, engine:PySide2.QtScript.QScriptEngine) -> None: ... + def autoShowStandardWindow(self) -> bool: ... + def createStandardMenu(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> PySide2.QtWidgets.QMenu: ... + def createStandardToolBar(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> PySide2.QtWidgets.QToolBar: ... + def setAutoShowStandardWindow(self, autoShow:bool) -> None: ... + def standardWindow(self) -> PySide2.QtWidgets.QMainWindow: ... + def state(self) -> PySide2.QtScriptTools.QScriptEngineDebugger.DebuggerState: ... + def widget(self, widget:PySide2.QtScriptTools.QScriptEngineDebugger.DebuggerWidget) -> PySide2.QtWidgets.QWidget: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtScxml.pyd b/venv/Lib/site-packages/PySide2/QtScxml.pyd new file mode 100644 index 0000000..6586fa8 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtScxml.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtScxml.pyi b/venv/Lib/site-packages/PySide2/QtScxml.pyi new file mode 100644 index 0000000..1121b2d --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtScxml.pyi @@ -0,0 +1,365 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtScxml, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtScxml +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtScxml + + +class QScxmlCompiler(Shiboken.Object): + + class Loader(Shiboken.Object): + + def __init__(self) -> None: ... + + def load(self, name:str, baseDir:str) -> typing.Tuple: ... + + def __init__(self, xmlReader:PySide2.QtCore.QXmlStreamReader) -> None: ... + + def compile(self) -> PySide2.QtScxml.QScxmlStateMachine: ... + def errors(self) -> typing.List: ... + def fileName(self) -> str: ... + def loader(self) -> PySide2.QtScxml.QScxmlCompiler.Loader: ... + def setFileName(self, fileName:str) -> None: ... + def setLoader(self, newLoader:PySide2.QtScxml.QScxmlCompiler.Loader) -> None: ... + + +class QScxmlCppDataModel(PySide2.QtScxml.QScxmlDataModel): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def evaluateAssignment(self, id:int) -> bool: ... + def evaluateForeach(self, id:int, body:PySide2.QtScxml.QScxmlDataModel.ForeachLoopBody) -> bool: ... + def evaluateInitialization(self, id:int) -> bool: ... + def hasScxmlProperty(self, name:str) -> bool: ... + def inState(self, stateName:str) -> bool: ... + def scxmlEvent(self) -> PySide2.QtScxml.QScxmlEvent: ... + def scxmlProperty(self, name:str) -> typing.Any: ... + def setScxmlEvent(self, scxmlEvent:PySide2.QtScxml.QScxmlEvent) -> None: ... + def setScxmlProperty(self, name:str, value:typing.Any, context:str) -> bool: ... + def setup(self, initialDataValues:typing.Dict) -> bool: ... + + +class QScxmlDataModel(PySide2.QtCore.QObject): + + class ForeachLoopBody(Shiboken.Object): + + def __init__(self) -> None: ... + + def run(self) -> bool: ... + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def evaluateAssignment(self, id:int) -> bool: ... + def evaluateForeach(self, id:int, body:PySide2.QtScxml.QScxmlDataModel.ForeachLoopBody) -> bool: ... + def evaluateInitialization(self, id:int) -> bool: ... + def evaluateToBool(self, id:int) -> typing.Tuple: ... + def evaluateToString(self, id:int) -> typing.Tuple: ... + def evaluateToVariant(self, id:int) -> typing.Tuple: ... + def evaluateToVoid(self, id:int) -> bool: ... + def hasScxmlProperty(self, name:str) -> bool: ... + def scxmlProperty(self, name:str) -> typing.Any: ... + def setScxmlEvent(self, event:PySide2.QtScxml.QScxmlEvent) -> None: ... + def setScxmlProperty(self, name:str, value:typing.Any, context:str) -> bool: ... + def setStateMachine(self, stateMachine:PySide2.QtScxml.QScxmlStateMachine) -> None: ... + def setup(self, initialDataValues:typing.Dict) -> bool: ... + def stateMachine(self) -> PySide2.QtScxml.QScxmlStateMachine: ... + + +class QScxmlDynamicScxmlServiceFactory(PySide2.QtScxml.QScxmlInvokableServiceFactory): + + def __init__(self, invokeInfo:PySide2.QtScxml.QScxmlExecutableContent.InvokeInfo, names:typing.List, parameters:typing.List, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def invoke(self, parentStateMachine:PySide2.QtScxml.QScxmlStateMachine) -> PySide2.QtScxml.QScxmlInvokableService: ... + + +class QScxmlEcmaScriptDataModel(PySide2.QtScxml.QScxmlDataModel): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def evaluateAssignment(self, id:int) -> bool: ... + def evaluateForeach(self, id:int, body:PySide2.QtScxml.QScxmlDataModel.ForeachLoopBody) -> bool: ... + def evaluateInitialization(self, id:int) -> bool: ... + def evaluateToBool(self, id:int) -> typing.Tuple: ... + def evaluateToString(self, id:int) -> typing.Tuple: ... + def evaluateToVariant(self, id:int) -> typing.Tuple: ... + def evaluateToVoid(self, id:int) -> bool: ... + def hasScxmlProperty(self, name:str) -> bool: ... + def scxmlProperty(self, name:str) -> typing.Any: ... + def setScxmlEvent(self, event:PySide2.QtScxml.QScxmlEvent) -> None: ... + def setScxmlProperty(self, name:str, value:typing.Any, context:str) -> bool: ... + def setup(self, initialDataValues:typing.Dict) -> bool: ... + + +class QScxmlError(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtScxml.QScxmlError) -> None: ... + @typing.overload + def __init__(self, fileName:str, line:int, column:int, description:str) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def column(self) -> int: ... + def description(self) -> str: ... + def fileName(self) -> str: ... + def isValid(self) -> bool: ... + def line(self) -> int: ... + def toString(self) -> str: ... + + +class QScxmlEvent(Shiboken.Object): + PlatformEvent : QScxmlEvent = ... # 0x0 + InternalEvent : QScxmlEvent = ... # 0x1 + ExternalEvent : QScxmlEvent = ... # 0x2 + + class EventType(object): + PlatformEvent : QScxmlEvent.EventType = ... # 0x0 + InternalEvent : QScxmlEvent.EventType = ... # 0x1 + ExternalEvent : QScxmlEvent.EventType = ... # 0x2 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtScxml.QScxmlEvent) -> None: ... + + def clear(self) -> None: ... + def data(self) -> typing.Any: ... + def delay(self) -> int: ... + def errorMessage(self) -> str: ... + def eventType(self) -> PySide2.QtScxml.QScxmlEvent.EventType: ... + def invokeId(self) -> str: ... + def isErrorEvent(self) -> bool: ... + def name(self) -> str: ... + def origin(self) -> str: ... + def originType(self) -> str: ... + def scxmlType(self) -> str: ... + def sendId(self) -> str: ... + def setData(self, data:typing.Any) -> None: ... + def setDelay(self, delayInMiliSecs:int) -> None: ... + def setErrorMessage(self, message:str) -> None: ... + def setEventType(self, type:PySide2.QtScxml.QScxmlEvent.EventType) -> None: ... + def setInvokeId(self, invokeId:str) -> None: ... + def setName(self, name:str) -> None: ... + def setOrigin(self, origin:str) -> None: ... + def setOriginType(self, originType:str) -> None: ... + def setSendId(self, sendId:str) -> None: ... + + +class QScxmlExecutableContent(Shiboken.Object): + + class AssignmentInfo(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, AssignmentInfo:PySide2.QtScxml.QScxmlExecutableContent.AssignmentInfo) -> None: ... + + @staticmethod + def __copy__() -> None: ... + + class EvaluatorInfo(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, EvaluatorInfo:PySide2.QtScxml.QScxmlExecutableContent.EvaluatorInfo) -> None: ... + + @staticmethod + def __copy__() -> None: ... + + class ForeachInfo(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, ForeachInfo:PySide2.QtScxml.QScxmlExecutableContent.ForeachInfo) -> None: ... + + @staticmethod + def __copy__() -> None: ... + + class InvokeInfo(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, InvokeInfo:PySide2.QtScxml.QScxmlExecutableContent.InvokeInfo) -> None: ... + + @staticmethod + def __copy__() -> None: ... + + class ParameterInfo(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, ParameterInfo:PySide2.QtScxml.QScxmlExecutableContent.ParameterInfo) -> None: ... + + @staticmethod + def __copy__() -> None: ... + + +class QScxmlInvokableService(PySide2.QtCore.QObject): + + def __init__(self, parentStateMachine:PySide2.QtScxml.QScxmlStateMachine, parent:PySide2.QtScxml.QScxmlInvokableServiceFactory) -> None: ... + + def id(self) -> str: ... + def name(self) -> str: ... + def parentStateMachine(self) -> PySide2.QtScxml.QScxmlStateMachine: ... + def postEvent(self, event:PySide2.QtScxml.QScxmlEvent) -> None: ... + def start(self) -> bool: ... + + +class QScxmlInvokableServiceFactory(PySide2.QtCore.QObject): + + def __init__(self, invokeInfo:PySide2.QtScxml.QScxmlExecutableContent.InvokeInfo, names:typing.List, parameters:typing.List, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def invoke(self, parentStateMachine:PySide2.QtScxml.QScxmlStateMachine) -> PySide2.QtScxml.QScxmlInvokableService: ... + def invokeInfo(self) -> PySide2.QtScxml.QScxmlExecutableContent.InvokeInfo: ... + def names(self) -> typing.List: ... + def parameters(self) -> typing.List: ... + + +class QScxmlNullDataModel(PySide2.QtScxml.QScxmlDataModel): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def evaluateAssignment(self, id:int) -> bool: ... + def evaluateForeach(self, id:int, body:PySide2.QtScxml.QScxmlDataModel.ForeachLoopBody) -> bool: ... + def evaluateInitialization(self, id:int) -> bool: ... + def evaluateToBool(self, id:int) -> typing.Tuple: ... + def evaluateToString(self, id:int) -> typing.Tuple: ... + def evaluateToVariant(self, id:int) -> typing.Tuple: ... + def evaluateToVoid(self, id:int) -> bool: ... + def hasScxmlProperty(self, name:str) -> bool: ... + def scxmlProperty(self, name:str) -> typing.Any: ... + def setScxmlEvent(self, event:PySide2.QtScxml.QScxmlEvent) -> None: ... + def setScxmlProperty(self, name:str, value:typing.Any, context:str) -> bool: ... + def setup(self, initialDataValues:typing.Dict) -> bool: ... + + +class QScxmlStateMachine(PySide2.QtCore.QObject): + + def __init__(self, metaObject:PySide2.QtCore.QMetaObject, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def activeStateNames(self, compress:bool=...) -> typing.List: ... + def cancelDelayedEvent(self, sendId:str) -> None: ... + def connectToEvent(self, scxmlEventSpec:str, receiver:PySide2.QtCore.QObject, method:bytes, type:PySide2.QtCore.Qt.ConnectionType=...) -> PySide2.QtCore.QMetaObject.Connection: ... + def connectToState(self, scxmlStateName:str, receiver:PySide2.QtCore.QObject, method:bytes, type:PySide2.QtCore.Qt.ConnectionType=...) -> PySide2.QtCore.QMetaObject.Connection: ... + def dataModel(self) -> PySide2.QtScxml.QScxmlDataModel: ... + @staticmethod + def fromData(data:PySide2.QtCore.QIODevice, fileName:str=...) -> PySide2.QtScxml.QScxmlStateMachine: ... + @staticmethod + def fromFile(fileName:str) -> PySide2.QtScxml.QScxmlStateMachine: ... + def init(self) -> bool: ... + def initialValues(self) -> typing.Dict: ... + def invokedServices(self) -> typing.List: ... + @typing.overload + def isActive(self, scxmlStateName:str) -> bool: ... + @typing.overload + def isActive(self, stateIndex:int) -> bool: ... + def isDispatchableTarget(self, target:str) -> bool: ... + def isInitialized(self) -> bool: ... + def isInvoked(self) -> bool: ... + def isRunning(self) -> bool: ... + def loader(self) -> PySide2.QtScxml.QScxmlCompiler.Loader: ... + def name(self) -> str: ... + def parseErrors(self) -> typing.List: ... + def sessionId(self) -> str: ... + def setDataModel(self, model:PySide2.QtScxml.QScxmlDataModel) -> None: ... + def setInitialValues(self, initialValues:typing.Dict) -> None: ... + def setLoader(self, loader:PySide2.QtScxml.QScxmlCompiler.Loader) -> None: ... + def setRunning(self, running:bool) -> None: ... + def setTableData(self, tableData:PySide2.QtScxml.QScxmlTableData) -> None: ... + def start(self) -> None: ... + def stateNames(self, compress:bool=...) -> typing.List: ... + def stop(self) -> None: ... + @typing.overload + def submitEvent(self, event:PySide2.QtScxml.QScxmlEvent) -> None: ... + @typing.overload + def submitEvent(self, eventName:str) -> None: ... + @typing.overload + def submitEvent(self, eventName:str, data:typing.Any) -> None: ... + def tableData(self) -> PySide2.QtScxml.QScxmlTableData: ... + + +class QScxmlStaticScxmlServiceFactory(PySide2.QtScxml.QScxmlInvokableServiceFactory): + + def __init__(self, metaObject:PySide2.QtCore.QMetaObject, invokeInfo:PySide2.QtScxml.QScxmlExecutableContent.InvokeInfo, nameList:typing.List, parameters:typing.List, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def invoke(self, parentStateMachine:PySide2.QtScxml.QScxmlStateMachine) -> PySide2.QtScxml.QScxmlInvokableService: ... + + +class QScxmlTableData(Shiboken.Object): + + def __init__(self) -> None: ... + + def assignmentInfo(self, assignmentId:int) -> PySide2.QtScxml.QScxmlExecutableContent.AssignmentInfo: ... + def dataNames(self) -> typing.Tuple: ... + def evaluatorInfo(self, evaluatorId:int) -> PySide2.QtScxml.QScxmlExecutableContent.EvaluatorInfo: ... + def foreachInfo(self, foreachId:int) -> PySide2.QtScxml.QScxmlExecutableContent.ForeachInfo: ... + def initialSetup(self) -> int: ... + def instructions(self) -> typing.List: ... + def name(self) -> str: ... + def serviceFactory(self, id:int) -> PySide2.QtScxml.QScxmlInvokableServiceFactory: ... + def stateMachineTable(self) -> typing.List: ... + def string(self, id:int) -> str: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtSensors.pyd b/venv/Lib/site-packages/PySide2/QtSensors.pyd new file mode 100644 index 0000000..7013727 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtSensors.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtSensors.pyi b/venv/Lib/site-packages/PySide2/QtSensors.pyi new file mode 100644 index 0000000..631718a --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtSensors.pyi @@ -0,0 +1,860 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtSensors, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtSensors +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtSensors + + +class QAccelerometer(PySide2.QtSensors.QSensor): + Combined : QAccelerometer = ... # 0x0 + Gravity : QAccelerometer = ... # 0x1 + User : QAccelerometer = ... # 0x2 + + class AccelerationMode(object): + Combined : QAccelerometer.AccelerationMode = ... # 0x0 + Gravity : QAccelerometer.AccelerationMode = ... # 0x1 + User : QAccelerometer.AccelerationMode = ... # 0x2 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def accelerationMode(self) -> PySide2.QtSensors.QAccelerometer.AccelerationMode: ... + def reading(self) -> PySide2.QtSensors.QAccelerometerReading: ... + def setAccelerationMode(self, accelerationMode:PySide2.QtSensors.QAccelerometer.AccelerationMode) -> None: ... + + +class QAccelerometerFilter(PySide2.QtSensors.QSensorFilter): + + def __init__(self) -> None: ... + + @typing.overload + def filter(self, reading:PySide2.QtSensors.QAccelerometerReading) -> bool: ... + @typing.overload + def filter(self, reading:PySide2.QtSensors.QSensorReading) -> bool: ... + + +class QAccelerometerReading(PySide2.QtSensors.QSensorReading): + + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + + def copyValuesFrom(self, other:PySide2.QtSensors.QSensorReading) -> None: ... + def setX(self, x:float) -> None: ... + def setY(self, y:float) -> None: ... + def setZ(self, z:float) -> None: ... + def x(self) -> float: ... + def y(self) -> float: ... + def z(self) -> float: ... + + +class QAltimeter(PySide2.QtSensors.QSensor): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def reading(self) -> PySide2.QtSensors.QAltimeterReading: ... + + +class QAltimeterFilter(PySide2.QtSensors.QSensorFilter): + + def __init__(self) -> None: ... + + @typing.overload + def filter(self, reading:PySide2.QtSensors.QAltimeterReading) -> bool: ... + @typing.overload + def filter(self, reading:PySide2.QtSensors.QSensorReading) -> bool: ... + + +class QAltimeterReading(PySide2.QtSensors.QSensorReading): + + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + + def altitude(self) -> float: ... + def copyValuesFrom(self, other:PySide2.QtSensors.QSensorReading) -> None: ... + def setAltitude(self, altitude:float) -> None: ... + + +class QAmbientLightFilter(PySide2.QtSensors.QSensorFilter): + + def __init__(self) -> None: ... + + @typing.overload + def filter(self, reading:PySide2.QtSensors.QAmbientLightReading) -> bool: ... + @typing.overload + def filter(self, reading:PySide2.QtSensors.QSensorReading) -> bool: ... + + +class QAmbientLightReading(PySide2.QtSensors.QSensorReading): + Undefined : QAmbientLightReading = ... # 0x0 + Dark : QAmbientLightReading = ... # 0x1 + Twilight : QAmbientLightReading = ... # 0x2 + Light : QAmbientLightReading = ... # 0x3 + Bright : QAmbientLightReading = ... # 0x4 + Sunny : QAmbientLightReading = ... # 0x5 + + class LightLevel(object): + Undefined : QAmbientLightReading.LightLevel = ... # 0x0 + Dark : QAmbientLightReading.LightLevel = ... # 0x1 + Twilight : QAmbientLightReading.LightLevel = ... # 0x2 + Light : QAmbientLightReading.LightLevel = ... # 0x3 + Bright : QAmbientLightReading.LightLevel = ... # 0x4 + Sunny : QAmbientLightReading.LightLevel = ... # 0x5 + + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + + def copyValuesFrom(self, other:PySide2.QtSensors.QSensorReading) -> None: ... + def lightLevel(self) -> PySide2.QtSensors.QAmbientLightReading.LightLevel: ... + def setLightLevel(self, lightLevel:PySide2.QtSensors.QAmbientLightReading.LightLevel) -> None: ... + + +class QAmbientLightSensor(PySide2.QtSensors.QSensor): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def reading(self) -> PySide2.QtSensors.QAmbientLightReading: ... + + +class QAmbientTemperatureFilter(PySide2.QtSensors.QSensorFilter): + + def __init__(self) -> None: ... + + @typing.overload + def filter(self, reading:PySide2.QtSensors.QAmbientTemperatureReading) -> bool: ... + @typing.overload + def filter(self, reading:PySide2.QtSensors.QSensorReading) -> bool: ... + + +class QAmbientTemperatureReading(PySide2.QtSensors.QSensorReading): + + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + + def copyValuesFrom(self, other:PySide2.QtSensors.QSensorReading) -> None: ... + def setTemperature(self, temperature:float) -> None: ... + def temperature(self) -> float: ... + + +class QAmbientTemperatureSensor(PySide2.QtSensors.QSensor): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def reading(self) -> PySide2.QtSensors.QAmbientTemperatureReading: ... + + +class QCompass(PySide2.QtSensors.QSensor): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def reading(self) -> PySide2.QtSensors.QCompassReading: ... + + +class QCompassFilter(PySide2.QtSensors.QSensorFilter): + + def __init__(self) -> None: ... + + @typing.overload + def filter(self, reading:PySide2.QtSensors.QCompassReading) -> bool: ... + @typing.overload + def filter(self, reading:PySide2.QtSensors.QSensorReading) -> bool: ... + + +class QCompassReading(PySide2.QtSensors.QSensorReading): + + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + + def azimuth(self) -> float: ... + def calibrationLevel(self) -> float: ... + def copyValuesFrom(self, other:PySide2.QtSensors.QSensorReading) -> None: ... + def setAzimuth(self, azimuth:float) -> None: ... + def setCalibrationLevel(self, calibrationLevel:float) -> None: ... + + +class QDistanceFilter(PySide2.QtSensors.QSensorFilter): + + def __init__(self) -> None: ... + + @typing.overload + def filter(self, reading:PySide2.QtSensors.QDistanceReading) -> bool: ... + @typing.overload + def filter(self, reading:PySide2.QtSensors.QSensorReading) -> bool: ... + + +class QDistanceReading(PySide2.QtSensors.QSensorReading): + + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + + def copyValuesFrom(self, other:PySide2.QtSensors.QSensorReading) -> None: ... + def distance(self) -> float: ... + def setDistance(self, distance:float) -> None: ... + + +class QDistanceSensor(PySide2.QtSensors.QSensor): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def reading(self) -> PySide2.QtSensors.QDistanceReading: ... + + +class QGyroscope(PySide2.QtSensors.QSensor): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def reading(self) -> PySide2.QtSensors.QGyroscopeReading: ... + + +class QGyroscopeFilter(PySide2.QtSensors.QSensorFilter): + + def __init__(self) -> None: ... + + @typing.overload + def filter(self, reading:PySide2.QtSensors.QGyroscopeReading) -> bool: ... + @typing.overload + def filter(self, reading:PySide2.QtSensors.QSensorReading) -> bool: ... + + +class QGyroscopeReading(PySide2.QtSensors.QSensorReading): + + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + + def copyValuesFrom(self, other:PySide2.QtSensors.QSensorReading) -> None: ... + def setX(self, x:float) -> None: ... + def setY(self, y:float) -> None: ... + def setZ(self, z:float) -> None: ... + def x(self) -> float: ... + def y(self) -> float: ... + def z(self) -> float: ... + + +class QHolsterFilter(PySide2.QtSensors.QSensorFilter): + + def __init__(self) -> None: ... + + @typing.overload + def filter(self, reading:PySide2.QtSensors.QHolsterReading) -> bool: ... + @typing.overload + def filter(self, reading:PySide2.QtSensors.QSensorReading) -> bool: ... + + +class QHolsterReading(PySide2.QtSensors.QSensorReading): + + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + + def copyValuesFrom(self, other:PySide2.QtSensors.QSensorReading) -> None: ... + def holstered(self) -> bool: ... + def setHolstered(self, holstered:bool) -> None: ... + + +class QHolsterSensor(PySide2.QtSensors.QSensor): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def reading(self) -> PySide2.QtSensors.QHolsterReading: ... + + +class QHumidityFilter(PySide2.QtSensors.QSensorFilter): + + def __init__(self) -> None: ... + + @typing.overload + def filter(self, reading:PySide2.QtSensors.QHumidityReading) -> bool: ... + @typing.overload + def filter(self, reading:PySide2.QtSensors.QSensorReading) -> bool: ... + + +class QHumidityReading(PySide2.QtSensors.QSensorReading): + + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + + def absoluteHumidity(self) -> float: ... + def copyValuesFrom(self, other:PySide2.QtSensors.QSensorReading) -> None: ... + def relativeHumidity(self) -> float: ... + def setAbsoluteHumidity(self, value:float) -> None: ... + def setRelativeHumidity(self, percent:float) -> None: ... + + +class QHumiditySensor(PySide2.QtSensors.QSensor): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def reading(self) -> PySide2.QtSensors.QHumidityReading: ... + + +class QIRProximityFilter(PySide2.QtSensors.QSensorFilter): + + def __init__(self) -> None: ... + + @typing.overload + def filter(self, reading:PySide2.QtSensors.QIRProximityReading) -> bool: ... + @typing.overload + def filter(self, reading:PySide2.QtSensors.QSensorReading) -> bool: ... + + +class QIRProximityReading(PySide2.QtSensors.QSensorReading): + + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + + def copyValuesFrom(self, other:PySide2.QtSensors.QSensorReading) -> None: ... + def reflectance(self) -> float: ... + def setReflectance(self, reflectance:float) -> None: ... + + +class QIRProximitySensor(PySide2.QtSensors.QSensor): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def reading(self) -> PySide2.QtSensors.QIRProximityReading: ... + + +class QLidFilter(PySide2.QtSensors.QSensorFilter): + + def __init__(self) -> None: ... + + @typing.overload + def filter(self, reading:PySide2.QtSensors.QLidReading) -> bool: ... + @typing.overload + def filter(self, reading:PySide2.QtSensors.QSensorReading) -> bool: ... + + +class QLidReading(PySide2.QtSensors.QSensorReading): + + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + + def backLidClosed(self) -> bool: ... + def copyValuesFrom(self, other:PySide2.QtSensors.QSensorReading) -> None: ... + def frontLidClosed(self) -> bool: ... + def setBackLidClosed(self, closed:bool) -> None: ... + def setFrontLidClosed(self, closed:bool) -> None: ... + + +class QLidSensor(PySide2.QtSensors.QSensor): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def reading(self) -> PySide2.QtSensors.QLidReading: ... + + +class QLightFilter(PySide2.QtSensors.QSensorFilter): + + def __init__(self) -> None: ... + + @typing.overload + def filter(self, reading:PySide2.QtSensors.QLightReading) -> bool: ... + @typing.overload + def filter(self, reading:PySide2.QtSensors.QSensorReading) -> bool: ... + + +class QLightReading(PySide2.QtSensors.QSensorReading): + + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + + def copyValuesFrom(self, other:PySide2.QtSensors.QSensorReading) -> None: ... + def lux(self) -> float: ... + def setLux(self, lux:float) -> None: ... + + +class QLightSensor(PySide2.QtSensors.QSensor): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def fieldOfView(self) -> float: ... + def reading(self) -> PySide2.QtSensors.QLightReading: ... + def setFieldOfView(self, fieldOfView:float) -> None: ... + + +class QMagnetometer(PySide2.QtSensors.QSensor): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def reading(self) -> PySide2.QtSensors.QMagnetometerReading: ... + def returnGeoValues(self) -> bool: ... + def setReturnGeoValues(self, returnGeoValues:bool) -> None: ... + + +class QMagnetometerFilter(PySide2.QtSensors.QSensorFilter): + + def __init__(self) -> None: ... + + @typing.overload + def filter(self, reading:PySide2.QtSensors.QMagnetometerReading) -> bool: ... + @typing.overload + def filter(self, reading:PySide2.QtSensors.QSensorReading) -> bool: ... + + +class QMagnetometerReading(PySide2.QtSensors.QSensorReading): + + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + + def calibrationLevel(self) -> float: ... + def copyValuesFrom(self, other:PySide2.QtSensors.QSensorReading) -> None: ... + def setCalibrationLevel(self, calibrationLevel:float) -> None: ... + def setX(self, x:float) -> None: ... + def setY(self, y:float) -> None: ... + def setZ(self, z:float) -> None: ... + def x(self) -> float: ... + def y(self) -> float: ... + def z(self) -> float: ... + + +class QOrientationFilter(PySide2.QtSensors.QSensorFilter): + + def __init__(self) -> None: ... + + @typing.overload + def filter(self, reading:PySide2.QtSensors.QOrientationReading) -> bool: ... + @typing.overload + def filter(self, reading:PySide2.QtSensors.QSensorReading) -> bool: ... + + +class QOrientationReading(PySide2.QtSensors.QSensorReading): + Undefined : QOrientationReading = ... # 0x0 + TopUp : QOrientationReading = ... # 0x1 + TopDown : QOrientationReading = ... # 0x2 + LeftUp : QOrientationReading = ... # 0x3 + RightUp : QOrientationReading = ... # 0x4 + FaceUp : QOrientationReading = ... # 0x5 + FaceDown : QOrientationReading = ... # 0x6 + + class Orientation(object): + Undefined : QOrientationReading.Orientation = ... # 0x0 + TopUp : QOrientationReading.Orientation = ... # 0x1 + TopDown : QOrientationReading.Orientation = ... # 0x2 + LeftUp : QOrientationReading.Orientation = ... # 0x3 + RightUp : QOrientationReading.Orientation = ... # 0x4 + FaceUp : QOrientationReading.Orientation = ... # 0x5 + FaceDown : QOrientationReading.Orientation = ... # 0x6 + + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + + def copyValuesFrom(self, other:PySide2.QtSensors.QSensorReading) -> None: ... + def orientation(self) -> PySide2.QtSensors.QOrientationReading.Orientation: ... + def setOrientation(self, orientation:PySide2.QtSensors.QOrientationReading.Orientation) -> None: ... + + +class QOrientationSensor(PySide2.QtSensors.QSensor): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def reading(self) -> PySide2.QtSensors.QOrientationReading: ... + + +class QPressureFilter(PySide2.QtSensors.QSensorFilter): + + def __init__(self) -> None: ... + + @typing.overload + def filter(self, reading:PySide2.QtSensors.QPressureReading) -> bool: ... + @typing.overload + def filter(self, reading:PySide2.QtSensors.QSensorReading) -> bool: ... + + +class QPressureReading(PySide2.QtSensors.QSensorReading): + + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + + def copyValuesFrom(self, other:PySide2.QtSensors.QSensorReading) -> None: ... + def pressure(self) -> float: ... + def setPressure(self, pressure:float) -> None: ... + def setTemperature(self, temperature:float) -> None: ... + def temperature(self) -> float: ... + + +class QPressureSensor(PySide2.QtSensors.QSensor): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def reading(self) -> PySide2.QtSensors.QPressureReading: ... + + +class QProximityFilter(PySide2.QtSensors.QSensorFilter): + + def __init__(self) -> None: ... + + @typing.overload + def filter(self, reading:PySide2.QtSensors.QProximityReading) -> bool: ... + @typing.overload + def filter(self, reading:PySide2.QtSensors.QSensorReading) -> bool: ... + + +class QProximityReading(PySide2.QtSensors.QSensorReading): + + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + + def close(self) -> bool: ... + def copyValuesFrom(self, other:PySide2.QtSensors.QSensorReading) -> None: ... + def setClose(self, close:bool) -> None: ... + + +class QProximitySensor(PySide2.QtSensors.QSensor): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def reading(self) -> PySide2.QtSensors.QProximityReading: ... + + +class QRotationFilter(PySide2.QtSensors.QSensorFilter): + + def __init__(self) -> None: ... + + @typing.overload + def filter(self, reading:PySide2.QtSensors.QRotationReading) -> bool: ... + @typing.overload + def filter(self, reading:PySide2.QtSensors.QSensorReading) -> bool: ... + + +class QRotationReading(PySide2.QtSensors.QSensorReading): + + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + + def copyValuesFrom(self, other:PySide2.QtSensors.QSensorReading) -> None: ... + def setFromEuler(self, x:float, y:float, z:float) -> None: ... + def x(self) -> float: ... + def y(self) -> float: ... + def z(self) -> float: ... + + +class QRotationSensor(PySide2.QtSensors.QSensor): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def hasZ(self) -> bool: ... + def reading(self) -> PySide2.QtSensors.QRotationReading: ... + def setHasZ(self, hasZ:bool) -> None: ... + + +class QSensor(PySide2.QtCore.QObject): + Buffering : QSensor = ... # 0x0 + FixedOrientation : QSensor = ... # 0x0 + AlwaysOn : QSensor = ... # 0x1 + AutomaticOrientation : QSensor = ... # 0x1 + GeoValues : QSensor = ... # 0x2 + UserOrientation : QSensor = ... # 0x2 + FieldOfView : QSensor = ... # 0x3 + AccelerationMode : QSensor = ... # 0x4 + SkipDuplicates : QSensor = ... # 0x5 + AxesOrientation : QSensor = ... # 0x6 + PressureSensorTemperature: QSensor = ... # 0x7 + Reserved : QSensor = ... # 0x101 + + class AxesOrientationMode(object): + FixedOrientation : QSensor.AxesOrientationMode = ... # 0x0 + AutomaticOrientation : QSensor.AxesOrientationMode = ... # 0x1 + UserOrientation : QSensor.AxesOrientationMode = ... # 0x2 + + class Feature(object): + Buffering : QSensor.Feature = ... # 0x0 + AlwaysOn : QSensor.Feature = ... # 0x1 + GeoValues : QSensor.Feature = ... # 0x2 + FieldOfView : QSensor.Feature = ... # 0x3 + AccelerationMode : QSensor.Feature = ... # 0x4 + SkipDuplicates : QSensor.Feature = ... # 0x5 + AxesOrientation : QSensor.Feature = ... # 0x6 + PressureSensorTemperature: QSensor.Feature = ... # 0x7 + Reserved : QSensor.Feature = ... # 0x101 + + def __init__(self, type:PySide2.QtCore.QByteArray, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def addFilter(self, filter:PySide2.QtSensors.QSensorFilter) -> None: ... + def availableDataRates(self) -> typing.List: ... + def axesOrientationMode(self) -> PySide2.QtSensors.QSensor.AxesOrientationMode: ... + def backend(self) -> PySide2.QtSensors.QSensorBackend: ... + def bufferSize(self) -> int: ... + def connectToBackend(self) -> bool: ... + def currentOrientation(self) -> int: ... + def dataRate(self) -> int: ... + @staticmethod + def defaultSensorForType(type:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QByteArray: ... + def description(self) -> str: ... + def efficientBufferSize(self) -> int: ... + def error(self) -> int: ... + def filters(self) -> typing.List: ... + def identifier(self) -> PySide2.QtCore.QByteArray: ... + def isActive(self) -> bool: ... + def isAlwaysOn(self) -> bool: ... + def isBusy(self) -> bool: ... + def isConnectedToBackend(self) -> bool: ... + def isFeatureSupported(self, feature:PySide2.QtSensors.QSensor.Feature) -> bool: ... + def maxBufferSize(self) -> int: ... + def outputRange(self) -> int: ... + def outputRanges(self) -> typing.List: ... + def reading(self) -> PySide2.QtSensors.QSensorReading: ... + def removeFilter(self, filter:PySide2.QtSensors.QSensorFilter) -> None: ... + @staticmethod + def sensorTypes() -> typing.List: ... + @staticmethod + def sensorsForType(type:PySide2.QtCore.QByteArray) -> typing.List: ... + def setActive(self, active:bool) -> None: ... + def setAlwaysOn(self, alwaysOn:bool) -> None: ... + def setAxesOrientationMode(self, axesOrientationMode:PySide2.QtSensors.QSensor.AxesOrientationMode) -> None: ... + def setBufferSize(self, bufferSize:int) -> None: ... + def setCurrentOrientation(self, currentOrientation:int) -> None: ... + def setDataRate(self, rate:int) -> None: ... + def setEfficientBufferSize(self, efficientBufferSize:int) -> None: ... + def setIdentifier(self, identifier:PySide2.QtCore.QByteArray) -> None: ... + def setMaxBufferSize(self, maxBufferSize:int) -> None: ... + def setOutputRange(self, index:int) -> None: ... + def setSkipDuplicates(self, skipDuplicates:bool) -> None: ... + def setUserOrientation(self, userOrientation:int) -> None: ... + def skipDuplicates(self) -> bool: ... + def start(self) -> bool: ... + def stop(self) -> None: ... + def type(self) -> PySide2.QtCore.QByteArray: ... + def userOrientation(self) -> int: ... + + +class QSensorBackend(PySide2.QtCore.QObject): + + def __init__(self, sensor:PySide2.QtSensors.QSensor, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def addDataRate(self, min:float, max:float) -> None: ... + def addOutputRange(self, min:float, max:float, accuracy:float) -> None: ... + def isFeatureSupported(self, feature:PySide2.QtSensors.QSensor.Feature) -> bool: ... + def newReadingAvailable(self) -> None: ... + def reading(self) -> PySide2.QtSensors.QSensorReading: ... + def sensor(self) -> PySide2.QtSensors.QSensor: ... + def sensorBusy(self) -> None: ... + def sensorError(self, error:int) -> None: ... + def sensorStopped(self) -> None: ... + def setDataRates(self, otherSensor:PySide2.QtSensors.QSensor) -> None: ... + def setDescription(self, description:str) -> None: ... + def start(self) -> None: ... + def stop(self) -> None: ... + + +class QSensorBackendFactory(Shiboken.Object): + + def __init__(self) -> None: ... + + def createBackend(self, sensor:PySide2.QtSensors.QSensor) -> PySide2.QtSensors.QSensorBackend: ... + + +class QSensorChangesInterface(Shiboken.Object): + + def __init__(self) -> None: ... + + def sensorsChanged(self) -> None: ... + + +class QSensorFilter(Shiboken.Object): + + def __init__(self) -> None: ... + + def filter(self, reading:PySide2.QtSensors.QSensorReading) -> bool: ... + def setSensor(self, sensor:PySide2.QtSensors.QSensor) -> None: ... + + +class QSensorGestureManager(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def gestureIds(self) -> typing.List: ... + def recognizerSignals(self, recognizerId:str) -> typing.List: ... + def registerSensorGestureRecognizer(self, recognizer:PySide2.QtSensors.QSensorGestureRecognizer) -> bool: ... + @staticmethod + def sensorGestureRecognizer(id:str) -> PySide2.QtSensors.QSensorGestureRecognizer: ... + + +class QSensorGesturePluginInterface(Shiboken.Object): + + def __init__(self) -> None: ... + + def createRecognizers(self) -> typing.List: ... + def name(self) -> str: ... + def supportedIds(self) -> typing.List: ... + + +class QSensorGestureRecognizer(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def create(self) -> None: ... + def createBackend(self) -> None: ... + def gestureSignals(self) -> typing.List: ... + def id(self) -> str: ... + def isActive(self) -> bool: ... + def start(self) -> bool: ... + def startBackend(self) -> None: ... + def stop(self) -> bool: ... + def stopBackend(self) -> None: ... + + +class QSensorManager(Shiboken.Object): + + def __init__(self) -> None: ... + + @staticmethod + def createBackend(sensor:PySide2.QtSensors.QSensor) -> PySide2.QtSensors.QSensorBackend: ... + @staticmethod + def isBackendRegistered(type:PySide2.QtCore.QByteArray, identifier:PySide2.QtCore.QByteArray) -> bool: ... + @staticmethod + def registerBackend(type:PySide2.QtCore.QByteArray, identifier:PySide2.QtCore.QByteArray, factory:PySide2.QtSensors.QSensorBackendFactory) -> None: ... + @staticmethod + def setDefaultBackend(type:PySide2.QtCore.QByteArray, identifier:PySide2.QtCore.QByteArray) -> None: ... + @staticmethod + def unregisterBackend(type:PySide2.QtCore.QByteArray, identifier:PySide2.QtCore.QByteArray) -> None: ... + + +class QSensorPluginInterface(Shiboken.Object): + + def __init__(self) -> None: ... + + def registerSensors(self) -> None: ... + + +class QSensorReading(PySide2.QtCore.QObject): + def copyValuesFrom(self, other:PySide2.QtSensors.QSensorReading) -> None: ... + def setTimestamp(self, timestamp:int) -> None: ... + def timestamp(self) -> int: ... + def value(self, index:int) -> typing.Any: ... + def valueCount(self) -> int: ... + + +class QTapFilter(PySide2.QtSensors.QSensorFilter): + + def __init__(self) -> None: ... + + @typing.overload + def filter(self, reading:PySide2.QtSensors.QSensorReading) -> bool: ... + @typing.overload + def filter(self, reading:PySide2.QtSensors.QTapReading) -> bool: ... + + +class QTapReading(PySide2.QtSensors.QSensorReading): + Undefined : QTapReading = ... # 0x0 + X : QTapReading = ... # 0x1 + Y : QTapReading = ... # 0x2 + Z : QTapReading = ... # 0x4 + X_Pos : QTapReading = ... # 0x11 + Y_Pos : QTapReading = ... # 0x22 + Z_Pos : QTapReading = ... # 0x44 + X_Neg : QTapReading = ... # 0x101 + X_Both : QTapReading = ... # 0x111 + Y_Neg : QTapReading = ... # 0x202 + Y_Both : QTapReading = ... # 0x222 + Z_Neg : QTapReading = ... # 0x404 + Z_Both : QTapReading = ... # 0x444 + + class TapDirection(object): + Undefined : QTapReading.TapDirection = ... # 0x0 + X : QTapReading.TapDirection = ... # 0x1 + Y : QTapReading.TapDirection = ... # 0x2 + Z : QTapReading.TapDirection = ... # 0x4 + X_Pos : QTapReading.TapDirection = ... # 0x11 + Y_Pos : QTapReading.TapDirection = ... # 0x22 + Z_Pos : QTapReading.TapDirection = ... # 0x44 + X_Neg : QTapReading.TapDirection = ... # 0x101 + X_Both : QTapReading.TapDirection = ... # 0x111 + Y_Neg : QTapReading.TapDirection = ... # 0x202 + Y_Both : QTapReading.TapDirection = ... # 0x222 + Z_Neg : QTapReading.TapDirection = ... # 0x404 + Z_Both : QTapReading.TapDirection = ... # 0x444 + + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + + def copyValuesFrom(self, other:PySide2.QtSensors.QSensorReading) -> None: ... + def isDoubleTap(self) -> bool: ... + def setDoubleTap(self, doubleTap:bool) -> None: ... + def setTapDirection(self, tapDirection:PySide2.QtSensors.QTapReading.TapDirection) -> None: ... + def tapDirection(self) -> PySide2.QtSensors.QTapReading.TapDirection: ... + + +class QTapSensor(PySide2.QtSensors.QSensor): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def reading(self) -> PySide2.QtSensors.QTapReading: ... + def returnDoubleTapEvents(self) -> bool: ... + def setReturnDoubleTapEvents(self, returnDoubleTapEvents:bool) -> None: ... + + +class QTiltFilter(PySide2.QtSensors.QSensorFilter): + + def __init__(self) -> None: ... + + @typing.overload + def filter(self, reading:PySide2.QtSensors.QSensorReading) -> bool: ... + @typing.overload + def filter(self, reading:PySide2.QtSensors.QTiltReading) -> bool: ... + + +class QTiltReading(PySide2.QtSensors.QSensorReading): + + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + + def copyValuesFrom(self, other:PySide2.QtSensors.QSensorReading) -> None: ... + def setXRotation(self, x:float) -> None: ... + def setYRotation(self, y:float) -> None: ... + def xRotation(self) -> float: ... + def yRotation(self) -> float: ... + + +class QTiltSensor(PySide2.QtSensors.QSensor): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def calibrate(self) -> None: ... + def reading(self) -> PySide2.QtSensors.QTiltReading: ... + + +class qoutputrange(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, qoutputrange:PySide2.QtSensors.qoutputrange) -> None: ... + + @staticmethod + def __copy__() -> None: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtSerialPort.pyd b/venv/Lib/site-packages/PySide2/QtSerialPort.pyd new file mode 100644 index 0000000..af13994 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtSerialPort.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtSerialPort.pyi b/venv/Lib/site-packages/PySide2/QtSerialPort.pyi new file mode 100644 index 0000000..f8822bd --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtSerialPort.pyi @@ -0,0 +1,294 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtSerialPort, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtSerialPort +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtSerialPort + + +class QSerialPort(PySide2.QtCore.QIODevice): + UnknownBaud : QSerialPort = ... # -0x1 + UnknownDataBits : QSerialPort = ... # -0x1 + UnknownFlowControl : QSerialPort = ... # -0x1 + UnknownParity : QSerialPort = ... # -0x1 + UnknownPolicy : QSerialPort = ... # -0x1 + UnknownStopBits : QSerialPort = ... # -0x1 + NoError : QSerialPort = ... # 0x0 + NoFlowControl : QSerialPort = ... # 0x0 + NoParity : QSerialPort = ... # 0x0 + NoSignal : QSerialPort = ... # 0x0 + SkipPolicy : QSerialPort = ... # 0x0 + DeviceNotFoundError : QSerialPort = ... # 0x1 + HardwareControl : QSerialPort = ... # 0x1 + Input : QSerialPort = ... # 0x1 + OneStop : QSerialPort = ... # 0x1 + PassZeroPolicy : QSerialPort = ... # 0x1 + TransmittedDataSignal : QSerialPort = ... # 0x1 + EvenParity : QSerialPort = ... # 0x2 + IgnorePolicy : QSerialPort = ... # 0x2 + Output : QSerialPort = ... # 0x2 + PermissionError : QSerialPort = ... # 0x2 + ReceivedDataSignal : QSerialPort = ... # 0x2 + SoftwareControl : QSerialPort = ... # 0x2 + TwoStop : QSerialPort = ... # 0x2 + AllDirections : QSerialPort = ... # 0x3 + OddParity : QSerialPort = ... # 0x3 + OneAndHalfStop : QSerialPort = ... # 0x3 + OpenError : QSerialPort = ... # 0x3 + StopReceivingPolicy : QSerialPort = ... # 0x3 + DataTerminalReadySignal : QSerialPort = ... # 0x4 + ParityError : QSerialPort = ... # 0x4 + SpaceParity : QSerialPort = ... # 0x4 + Data5 : QSerialPort = ... # 0x5 + FramingError : QSerialPort = ... # 0x5 + MarkParity : QSerialPort = ... # 0x5 + BreakConditionError : QSerialPort = ... # 0x6 + Data6 : QSerialPort = ... # 0x6 + Data7 : QSerialPort = ... # 0x7 + WriteError : QSerialPort = ... # 0x7 + Data8 : QSerialPort = ... # 0x8 + DataCarrierDetectSignal : QSerialPort = ... # 0x8 + ReadError : QSerialPort = ... # 0x8 + ResourceError : QSerialPort = ... # 0x9 + UnsupportedOperationError: QSerialPort = ... # 0xa + UnknownError : QSerialPort = ... # 0xb + TimeoutError : QSerialPort = ... # 0xc + NotOpenError : QSerialPort = ... # 0xd + DataSetReadySignal : QSerialPort = ... # 0x10 + RingIndicatorSignal : QSerialPort = ... # 0x20 + RequestToSendSignal : QSerialPort = ... # 0x40 + ClearToSendSignal : QSerialPort = ... # 0x80 + SecondaryTransmittedDataSignal: QSerialPort = ... # 0x100 + SecondaryReceivedDataSignal: QSerialPort = ... # 0x200 + Baud1200 : QSerialPort = ... # 0x4b0 + Baud2400 : QSerialPort = ... # 0x960 + Baud4800 : QSerialPort = ... # 0x12c0 + Baud9600 : QSerialPort = ... # 0x2580 + Baud19200 : QSerialPort = ... # 0x4b00 + Baud38400 : QSerialPort = ... # 0x9600 + Baud57600 : QSerialPort = ... # 0xe100 + Baud115200 : QSerialPort = ... # 0x1c200 + + class BaudRate(object): + UnknownBaud : QSerialPort.BaudRate = ... # -0x1 + Baud1200 : QSerialPort.BaudRate = ... # 0x4b0 + Baud2400 : QSerialPort.BaudRate = ... # 0x960 + Baud4800 : QSerialPort.BaudRate = ... # 0x12c0 + Baud9600 : QSerialPort.BaudRate = ... # 0x2580 + Baud19200 : QSerialPort.BaudRate = ... # 0x4b00 + Baud38400 : QSerialPort.BaudRate = ... # 0x9600 + Baud57600 : QSerialPort.BaudRate = ... # 0xe100 + Baud115200 : QSerialPort.BaudRate = ... # 0x1c200 + + class DataBits(object): + UnknownDataBits : QSerialPort.DataBits = ... # -0x1 + Data5 : QSerialPort.DataBits = ... # 0x5 + Data6 : QSerialPort.DataBits = ... # 0x6 + Data7 : QSerialPort.DataBits = ... # 0x7 + Data8 : QSerialPort.DataBits = ... # 0x8 + + class DataErrorPolicy(object): + UnknownPolicy : QSerialPort.DataErrorPolicy = ... # -0x1 + SkipPolicy : QSerialPort.DataErrorPolicy = ... # 0x0 + PassZeroPolicy : QSerialPort.DataErrorPolicy = ... # 0x1 + IgnorePolicy : QSerialPort.DataErrorPolicy = ... # 0x2 + StopReceivingPolicy : QSerialPort.DataErrorPolicy = ... # 0x3 + + class Direction(object): + Input : QSerialPort.Direction = ... # 0x1 + Output : QSerialPort.Direction = ... # 0x2 + AllDirections : QSerialPort.Direction = ... # 0x3 + + class Directions(object): ... + + class FlowControl(object): + UnknownFlowControl : QSerialPort.FlowControl = ... # -0x1 + NoFlowControl : QSerialPort.FlowControl = ... # 0x0 + HardwareControl : QSerialPort.FlowControl = ... # 0x1 + SoftwareControl : QSerialPort.FlowControl = ... # 0x2 + + class Parity(object): + UnknownParity : QSerialPort.Parity = ... # -0x1 + NoParity : QSerialPort.Parity = ... # 0x0 + EvenParity : QSerialPort.Parity = ... # 0x2 + OddParity : QSerialPort.Parity = ... # 0x3 + SpaceParity : QSerialPort.Parity = ... # 0x4 + MarkParity : QSerialPort.Parity = ... # 0x5 + + class PinoutSignal(object): + NoSignal : QSerialPort.PinoutSignal = ... # 0x0 + TransmittedDataSignal : QSerialPort.PinoutSignal = ... # 0x1 + ReceivedDataSignal : QSerialPort.PinoutSignal = ... # 0x2 + DataTerminalReadySignal : QSerialPort.PinoutSignal = ... # 0x4 + DataCarrierDetectSignal : QSerialPort.PinoutSignal = ... # 0x8 + DataSetReadySignal : QSerialPort.PinoutSignal = ... # 0x10 + RingIndicatorSignal : QSerialPort.PinoutSignal = ... # 0x20 + RequestToSendSignal : QSerialPort.PinoutSignal = ... # 0x40 + ClearToSendSignal : QSerialPort.PinoutSignal = ... # 0x80 + SecondaryTransmittedDataSignal: QSerialPort.PinoutSignal = ... # 0x100 + SecondaryReceivedDataSignal: QSerialPort.PinoutSignal = ... # 0x200 + + class PinoutSignals(object): ... + + class SerialPortError(object): + NoError : QSerialPort.SerialPortError = ... # 0x0 + DeviceNotFoundError : QSerialPort.SerialPortError = ... # 0x1 + PermissionError : QSerialPort.SerialPortError = ... # 0x2 + OpenError : QSerialPort.SerialPortError = ... # 0x3 + ParityError : QSerialPort.SerialPortError = ... # 0x4 + FramingError : QSerialPort.SerialPortError = ... # 0x5 + BreakConditionError : QSerialPort.SerialPortError = ... # 0x6 + WriteError : QSerialPort.SerialPortError = ... # 0x7 + ReadError : QSerialPort.SerialPortError = ... # 0x8 + ResourceError : QSerialPort.SerialPortError = ... # 0x9 + UnsupportedOperationError: QSerialPort.SerialPortError = ... # 0xa + UnknownError : QSerialPort.SerialPortError = ... # 0xb + TimeoutError : QSerialPort.SerialPortError = ... # 0xc + NotOpenError : QSerialPort.SerialPortError = ... # 0xd + + class StopBits(object): + UnknownStopBits : QSerialPort.StopBits = ... # -0x1 + OneStop : QSerialPort.StopBits = ... # 0x1 + TwoStop : QSerialPort.StopBits = ... # 0x2 + OneAndHalfStop : QSerialPort.StopBits = ... # 0x3 + + @typing.overload + def __init__(self, info:PySide2.QtSerialPort.QSerialPortInfo, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, name:str, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def atEnd(self) -> bool: ... + def baudRate(self, directions:PySide2.QtSerialPort.QSerialPort.Directions=...) -> int: ... + def bytesAvailable(self) -> int: ... + def bytesToWrite(self) -> int: ... + def canReadLine(self) -> bool: ... + def clear(self, directions:PySide2.QtSerialPort.QSerialPort.Directions=...) -> bool: ... + def clearError(self) -> None: ... + def close(self) -> None: ... + def dataBits(self) -> PySide2.QtSerialPort.QSerialPort.DataBits: ... + def dataErrorPolicy(self) -> PySide2.QtSerialPort.QSerialPort.DataErrorPolicy: ... + def error(self) -> PySide2.QtSerialPort.QSerialPort.SerialPortError: ... + def flowControl(self) -> PySide2.QtSerialPort.QSerialPort.FlowControl: ... + def flush(self) -> bool: ... + def handle(self) -> int: ... + def isBreakEnabled(self) -> bool: ... + def isDataTerminalReady(self) -> bool: ... + def isRequestToSend(self) -> bool: ... + def isSequential(self) -> bool: ... + def open(self, mode:PySide2.QtCore.QIODevice.OpenMode) -> bool: ... + def parity(self) -> PySide2.QtSerialPort.QSerialPort.Parity: ... + def pinoutSignals(self) -> PySide2.QtSerialPort.QSerialPort.PinoutSignals: ... + def portName(self) -> str: ... + def readBufferSize(self) -> int: ... + def readData(self, data:bytes, maxSize:int) -> int: ... + def readLineData(self, data:bytes, maxSize:int) -> int: ... + def sendBreak(self, duration:int=...) -> bool: ... + def setBaudRate(self, baudRate:int, directions:PySide2.QtSerialPort.QSerialPort.Directions=...) -> bool: ... + def setBreakEnabled(self, set:bool=...) -> bool: ... + def setDataBits(self, dataBits:PySide2.QtSerialPort.QSerialPort.DataBits) -> bool: ... + def setDataErrorPolicy(self, policy:PySide2.QtSerialPort.QSerialPort.DataErrorPolicy=...) -> bool: ... + def setDataTerminalReady(self, set:bool) -> bool: ... + def setFlowControl(self, flowControl:PySide2.QtSerialPort.QSerialPort.FlowControl) -> bool: ... + def setParity(self, parity:PySide2.QtSerialPort.QSerialPort.Parity) -> bool: ... + def setPort(self, info:PySide2.QtSerialPort.QSerialPortInfo) -> None: ... + def setPortName(self, name:str) -> None: ... + def setReadBufferSize(self, size:int) -> None: ... + def setRequestToSend(self, set:bool) -> bool: ... + def setSettingsRestoredOnClose(self, restore:bool) -> None: ... + def setStopBits(self, stopBits:PySide2.QtSerialPort.QSerialPort.StopBits) -> bool: ... + def settingsRestoredOnClose(self) -> bool: ... + def stopBits(self) -> PySide2.QtSerialPort.QSerialPort.StopBits: ... + def waitForBytesWritten(self, msecs:int=...) -> bool: ... + def waitForReadyRead(self, msecs:int=...) -> bool: ... + def writeData(self, data:bytes, maxSize:int) -> int: ... + + +class QSerialPortInfo(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, name:str) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtSerialPort.QSerialPortInfo) -> None: ... + @typing.overload + def __init__(self, port:PySide2.QtSerialPort.QSerialPort) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @staticmethod + def availablePorts() -> typing.List: ... + def description(self) -> str: ... + def hasProductIdentifier(self) -> bool: ... + def hasVendorIdentifier(self) -> bool: ... + def isBusy(self) -> bool: ... + def isNull(self) -> bool: ... + def isValid(self) -> bool: ... + def manufacturer(self) -> str: ... + def portName(self) -> str: ... + def productIdentifier(self) -> int: ... + def serialNumber(self) -> str: ... + @staticmethod + def standardBaudRates() -> typing.List: ... + def swap(self, other:PySide2.QtSerialPort.QSerialPortInfo) -> None: ... + def systemLocation(self) -> str: ... + def vendorIdentifier(self) -> int: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtSql.pyd b/venv/Lib/site-packages/PySide2/QtSql.pyd new file mode 100644 index 0000000..074d5e3 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtSql.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtSql.pyi b/venv/Lib/site-packages/PySide2/QtSql.pyi new file mode 100644 index 0000000..f919e6c --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtSql.pyi @@ -0,0 +1,748 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtSql, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtSql +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtWidgets +import PySide2.QtSql + + +class QSql(Shiboken.Object): + AfterLastRow : QSql = ... # -0x2 + BeforeFirstRow : QSql = ... # -0x1 + HighPrecision : QSql = ... # 0x0 + In : QSql = ... # 0x1 + LowPrecisionInt32 : QSql = ... # 0x1 + Tables : QSql = ... # 0x1 + LowPrecisionInt64 : QSql = ... # 0x2 + Out : QSql = ... # 0x2 + SystemTables : QSql = ... # 0x2 + InOut : QSql = ... # 0x3 + Binary : QSql = ... # 0x4 + LowPrecisionDouble : QSql = ... # 0x4 + Views : QSql = ... # 0x4 + AllTables : QSql = ... # 0xff + + class Location(object): + AfterLastRow : QSql.Location = ... # -0x2 + BeforeFirstRow : QSql.Location = ... # -0x1 + + class NumericalPrecisionPolicy(object): + HighPrecision : QSql.NumericalPrecisionPolicy = ... # 0x0 + LowPrecisionInt32 : QSql.NumericalPrecisionPolicy = ... # 0x1 + LowPrecisionInt64 : QSql.NumericalPrecisionPolicy = ... # 0x2 + LowPrecisionDouble : QSql.NumericalPrecisionPolicy = ... # 0x4 + + class ParamType(object): ... + + class ParamTypeFlag(object): + In : QSql.ParamTypeFlag = ... # 0x1 + Out : QSql.ParamTypeFlag = ... # 0x2 + InOut : QSql.ParamTypeFlag = ... # 0x3 + Binary : QSql.ParamTypeFlag = ... # 0x4 + + class TableType(object): + Tables : QSql.TableType = ... # 0x1 + SystemTables : QSql.TableType = ... # 0x2 + Views : QSql.TableType = ... # 0x4 + AllTables : QSql.TableType = ... # 0xff + + +class QSqlDatabase(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, driver:PySide2.QtSql.QSqlDriver) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtSql.QSqlDatabase) -> None: ... + @typing.overload + def __init__(self, type:str) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @typing.overload + @staticmethod + def addDatabase(driver:PySide2.QtSql.QSqlDriver, connectionName:str=...) -> PySide2.QtSql.QSqlDatabase: ... + @typing.overload + @staticmethod + def addDatabase(type:str, connectionName:str=...) -> PySide2.QtSql.QSqlDatabase: ... + @typing.overload + @staticmethod + def cloneDatabase(other:PySide2.QtSql.QSqlDatabase, connectionName:str) -> PySide2.QtSql.QSqlDatabase: ... + @typing.overload + @staticmethod + def cloneDatabase(other:str, connectionName:str) -> PySide2.QtSql.QSqlDatabase: ... + def close(self) -> None: ... + def commit(self) -> bool: ... + def connectOptions(self) -> str: ... + def connectionName(self) -> str: ... + @staticmethod + def connectionNames() -> typing.List: ... + @staticmethod + def contains(connectionName:str=...) -> bool: ... + @staticmethod + def database(connectionName:str=..., open:bool=...) -> PySide2.QtSql.QSqlDatabase: ... + def databaseName(self) -> str: ... + def driver(self) -> PySide2.QtSql.QSqlDriver: ... + def driverName(self) -> str: ... + @staticmethod + def drivers() -> typing.List: ... + def exec_(self, query:str=...) -> PySide2.QtSql.QSqlQuery: ... + def hostName(self) -> str: ... + @staticmethod + def isDriverAvailable(name:str) -> bool: ... + def isOpen(self) -> bool: ... + def isOpenError(self) -> bool: ... + def isValid(self) -> bool: ... + def lastError(self) -> PySide2.QtSql.QSqlError: ... + def numericalPrecisionPolicy(self) -> PySide2.QtSql.QSql.NumericalPrecisionPolicy: ... + @typing.overload + def open(self) -> bool: ... + @typing.overload + def open(self, user:str, password:str) -> bool: ... + def password(self) -> str: ... + def port(self) -> int: ... + def primaryIndex(self, tablename:str) -> PySide2.QtSql.QSqlIndex: ... + def record(self, tablename:str) -> PySide2.QtSql.QSqlRecord: ... + @staticmethod + def registerSqlDriver(name:str, creator:PySide2.QtSql.QSqlDriverCreatorBase) -> None: ... + @staticmethod + def removeDatabase(connectionName:str) -> None: ... + def rollback(self) -> bool: ... + def setConnectOptions(self, options:str=...) -> None: ... + def setDatabaseName(self, name:str) -> None: ... + def setHostName(self, host:str) -> None: ... + def setNumericalPrecisionPolicy(self, precisionPolicy:PySide2.QtSql.QSql.NumericalPrecisionPolicy) -> None: ... + def setPassword(self, password:str) -> None: ... + def setPort(self, p:int) -> None: ... + def setUserName(self, name:str) -> None: ... + def tables(self, type:PySide2.QtSql.QSql.TableType=...) -> typing.List: ... + def transaction(self) -> bool: ... + def userName(self) -> str: ... + + +class QSqlDriver(PySide2.QtCore.QObject): + FieldName : QSqlDriver = ... # 0x0 + Transactions : QSqlDriver = ... # 0x0 + UnknownDbms : QSqlDriver = ... # 0x0 + UnknownSource : QSqlDriver = ... # 0x0 + WhereStatement : QSqlDriver = ... # 0x0 + MSSqlServer : QSqlDriver = ... # 0x1 + QuerySize : QSqlDriver = ... # 0x1 + SelectStatement : QSqlDriver = ... # 0x1 + SelfSource : QSqlDriver = ... # 0x1 + TableName : QSqlDriver = ... # 0x1 + BLOB : QSqlDriver = ... # 0x2 + MySqlServer : QSqlDriver = ... # 0x2 + OtherSource : QSqlDriver = ... # 0x2 + UpdateStatement : QSqlDriver = ... # 0x2 + InsertStatement : QSqlDriver = ... # 0x3 + PostgreSQL : QSqlDriver = ... # 0x3 + Unicode : QSqlDriver = ... # 0x3 + DeleteStatement : QSqlDriver = ... # 0x4 + Oracle : QSqlDriver = ... # 0x4 + PreparedQueries : QSqlDriver = ... # 0x4 + NamedPlaceholders : QSqlDriver = ... # 0x5 + Sybase : QSqlDriver = ... # 0x5 + PositionalPlaceholders : QSqlDriver = ... # 0x6 + SQLite : QSqlDriver = ... # 0x6 + Interbase : QSqlDriver = ... # 0x7 + LastInsertId : QSqlDriver = ... # 0x7 + BatchOperations : QSqlDriver = ... # 0x8 + DB2 : QSqlDriver = ... # 0x8 + SimpleLocking : QSqlDriver = ... # 0x9 + LowPrecisionNumbers : QSqlDriver = ... # 0xa + EventNotifications : QSqlDriver = ... # 0xb + FinishQuery : QSqlDriver = ... # 0xc + MultipleResultSets : QSqlDriver = ... # 0xd + CancelQuery : QSqlDriver = ... # 0xe + + class DbmsType(object): + UnknownDbms : QSqlDriver.DbmsType = ... # 0x0 + MSSqlServer : QSqlDriver.DbmsType = ... # 0x1 + MySqlServer : QSqlDriver.DbmsType = ... # 0x2 + PostgreSQL : QSqlDriver.DbmsType = ... # 0x3 + Oracle : QSqlDriver.DbmsType = ... # 0x4 + Sybase : QSqlDriver.DbmsType = ... # 0x5 + SQLite : QSqlDriver.DbmsType = ... # 0x6 + Interbase : QSqlDriver.DbmsType = ... # 0x7 + DB2 : QSqlDriver.DbmsType = ... # 0x8 + + class DriverFeature(object): + Transactions : QSqlDriver.DriverFeature = ... # 0x0 + QuerySize : QSqlDriver.DriverFeature = ... # 0x1 + BLOB : QSqlDriver.DriverFeature = ... # 0x2 + Unicode : QSqlDriver.DriverFeature = ... # 0x3 + PreparedQueries : QSqlDriver.DriverFeature = ... # 0x4 + NamedPlaceholders : QSqlDriver.DriverFeature = ... # 0x5 + PositionalPlaceholders : QSqlDriver.DriverFeature = ... # 0x6 + LastInsertId : QSqlDriver.DriverFeature = ... # 0x7 + BatchOperations : QSqlDriver.DriverFeature = ... # 0x8 + SimpleLocking : QSqlDriver.DriverFeature = ... # 0x9 + LowPrecisionNumbers : QSqlDriver.DriverFeature = ... # 0xa + EventNotifications : QSqlDriver.DriverFeature = ... # 0xb + FinishQuery : QSqlDriver.DriverFeature = ... # 0xc + MultipleResultSets : QSqlDriver.DriverFeature = ... # 0xd + CancelQuery : QSqlDriver.DriverFeature = ... # 0xe + + class IdentifierType(object): + FieldName : QSqlDriver.IdentifierType = ... # 0x0 + TableName : QSqlDriver.IdentifierType = ... # 0x1 + + class NotificationSource(object): + UnknownSource : QSqlDriver.NotificationSource = ... # 0x0 + SelfSource : QSqlDriver.NotificationSource = ... # 0x1 + OtherSource : QSqlDriver.NotificationSource = ... # 0x2 + + class StatementType(object): + WhereStatement : QSqlDriver.StatementType = ... # 0x0 + SelectStatement : QSqlDriver.StatementType = ... # 0x1 + UpdateStatement : QSqlDriver.StatementType = ... # 0x2 + InsertStatement : QSqlDriver.StatementType = ... # 0x3 + DeleteStatement : QSqlDriver.StatementType = ... # 0x4 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def beginTransaction(self) -> bool: ... + def cancelQuery(self) -> bool: ... + def close(self) -> None: ... + def commitTransaction(self) -> bool: ... + def createResult(self) -> PySide2.QtSql.QSqlResult: ... + def dbmsType(self) -> PySide2.QtSql.QSqlDriver.DbmsType: ... + def escapeIdentifier(self, identifier:str, type:PySide2.QtSql.QSqlDriver.IdentifierType) -> str: ... + def formatValue(self, field:PySide2.QtSql.QSqlField, trimStrings:bool=...) -> str: ... + def hasFeature(self, f:PySide2.QtSql.QSqlDriver.DriverFeature) -> bool: ... + def isIdentifierEscaped(self, identifier:str, type:PySide2.QtSql.QSqlDriver.IdentifierType) -> bool: ... + def isOpen(self) -> bool: ... + def isOpenError(self) -> bool: ... + def lastError(self) -> PySide2.QtSql.QSqlError: ... + def numericalPrecisionPolicy(self) -> PySide2.QtSql.QSql.NumericalPrecisionPolicy: ... + def open(self, db:str, user:str=..., password:str=..., host:str=..., port:int=..., connOpts:str=...) -> bool: ... + def primaryIndex(self, tableName:str) -> PySide2.QtSql.QSqlIndex: ... + def record(self, tableName:str) -> PySide2.QtSql.QSqlRecord: ... + def rollbackTransaction(self) -> bool: ... + def setLastError(self, e:PySide2.QtSql.QSqlError) -> None: ... + def setNumericalPrecisionPolicy(self, precisionPolicy:PySide2.QtSql.QSql.NumericalPrecisionPolicy) -> None: ... + def setOpen(self, o:bool) -> None: ... + def setOpenError(self, e:bool) -> None: ... + def sqlStatement(self, type:PySide2.QtSql.QSqlDriver.StatementType, tableName:str, rec:PySide2.QtSql.QSqlRecord, preparedStatement:bool) -> str: ... + def stripDelimiters(self, identifier:str, type:PySide2.QtSql.QSqlDriver.IdentifierType) -> str: ... + def subscribeToNotification(self, name:str) -> bool: ... + def subscribedToNotifications(self) -> typing.List: ... + def tables(self, tableType:PySide2.QtSql.QSql.TableType) -> typing.List: ... + def unsubscribeFromNotification(self, name:str) -> bool: ... + + +class QSqlDriverCreatorBase(Shiboken.Object): + + def __init__(self) -> None: ... + + def createObject(self) -> PySide2.QtSql.QSqlDriver: ... + + +class QSqlError(Shiboken.Object): + NoError : QSqlError = ... # 0x0 + ConnectionError : QSqlError = ... # 0x1 + StatementError : QSqlError = ... # 0x2 + TransactionError : QSqlError = ... # 0x3 + UnknownError : QSqlError = ... # 0x4 + + class ErrorType(object): + NoError : QSqlError.ErrorType = ... # 0x0 + ConnectionError : QSqlError.ErrorType = ... # 0x1 + StatementError : QSqlError.ErrorType = ... # 0x2 + TransactionError : QSqlError.ErrorType = ... # 0x3 + UnknownError : QSqlError.ErrorType = ... # 0x4 + + @typing.overload + def __init__(self, driverText:str, databaseText:str, type:PySide2.QtSql.QSqlError.ErrorType, number:int) -> None: ... + @typing.overload + def __init__(self, driverText:str=..., databaseText:str=..., type:PySide2.QtSql.QSqlError.ErrorType=..., errorCode:str=...) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtSql.QSqlError) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def databaseText(self) -> str: ... + def driverText(self) -> str: ... + def isValid(self) -> bool: ... + def nativeErrorCode(self) -> str: ... + def number(self) -> int: ... + def setDatabaseText(self, databaseText:str) -> None: ... + def setDriverText(self, driverText:str) -> None: ... + def setNumber(self, number:int) -> None: ... + def setType(self, type:PySide2.QtSql.QSqlError.ErrorType) -> None: ... + def swap(self, other:PySide2.QtSql.QSqlError) -> None: ... + def text(self) -> str: ... + def type(self) -> PySide2.QtSql.QSqlError.ErrorType: ... + + +class QSqlField(Shiboken.Object): + Unknown : QSqlField = ... # -0x1 + Optional : QSqlField = ... # 0x0 + Required : QSqlField = ... # 0x1 + + class RequiredStatus(object): + Unknown : QSqlField.RequiredStatus = ... # -0x1 + Optional : QSqlField.RequiredStatus = ... # 0x0 + Required : QSqlField.RequiredStatus = ... # 0x1 + + @typing.overload + def __init__(self, fieldName:str, type:type, tableName:str) -> None: ... + @typing.overload + def __init__(self, fieldName:str=..., type:type=...) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtSql.QSqlField) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def clear(self) -> None: ... + def defaultValue(self) -> typing.Any: ... + def isAutoValue(self) -> bool: ... + def isGenerated(self) -> bool: ... + def isNull(self) -> bool: ... + def isReadOnly(self) -> bool: ... + def isValid(self) -> bool: ... + def length(self) -> int: ... + def name(self) -> str: ... + def precision(self) -> int: ... + def requiredStatus(self) -> PySide2.QtSql.QSqlField.RequiredStatus: ... + def setAutoValue(self, autoVal:bool) -> None: ... + def setDefaultValue(self, value:typing.Any) -> None: ... + def setGenerated(self, gen:bool) -> None: ... + def setLength(self, fieldLength:int) -> None: ... + def setName(self, name:str) -> None: ... + def setPrecision(self, precision:int) -> None: ... + def setReadOnly(self, readOnly:bool) -> None: ... + def setRequired(self, required:bool) -> None: ... + def setRequiredStatus(self, status:PySide2.QtSql.QSqlField.RequiredStatus) -> None: ... + def setSqlType(self, type:int) -> None: ... + def setTableName(self, tableName:str) -> None: ... + def setType(self, type:type) -> None: ... + def setValue(self, value:typing.Any) -> None: ... + def tableName(self) -> str: ... + def type(self) -> type: ... + def typeID(self) -> int: ... + def value(self) -> typing.Any: ... + + +class QSqlIndex(PySide2.QtSql.QSqlRecord): + + @typing.overload + def __init__(self, cursorName:str=..., name:str=...) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtSql.QSqlIndex) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @typing.overload + def append(self, field:PySide2.QtSql.QSqlField) -> None: ... + @typing.overload + def append(self, field:PySide2.QtSql.QSqlField, desc:bool) -> None: ... + def cursorName(self) -> str: ... + def isDescending(self, i:int) -> bool: ... + def name(self) -> str: ... + def setCursorName(self, cursorName:str) -> None: ... + def setDescending(self, i:int, desc:bool) -> None: ... + def setName(self, name:str) -> None: ... + + +class QSqlQuery(Shiboken.Object): + ValuesAsRows : QSqlQuery = ... # 0x0 + ValuesAsColumns : QSqlQuery = ... # 0x1 + + class BatchExecutionMode(object): + ValuesAsRows : QSqlQuery.BatchExecutionMode = ... # 0x0 + ValuesAsColumns : QSqlQuery.BatchExecutionMode = ... # 0x1 + + @typing.overload + def __init__(self, db:PySide2.QtSql.QSqlDatabase) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtSql.QSqlQuery) -> None: ... + @typing.overload + def __init__(self, query:str=..., db:PySide2.QtSql.QSqlDatabase=...) -> None: ... + @typing.overload + def __init__(self, r:PySide2.QtSql.QSqlResult) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def addBindValue(self, val:typing.Any, type:PySide2.QtSql.QSql.ParamType=...) -> None: ... + def at(self) -> int: ... + @typing.overload + def bindValue(self, placeholder:str, val:typing.Any, type:PySide2.QtSql.QSql.ParamType=...) -> None: ... + @typing.overload + def bindValue(self, pos:int, val:typing.Any, type:PySide2.QtSql.QSql.ParamType=...) -> None: ... + @typing.overload + def boundValue(self, placeholder:str) -> typing.Any: ... + @typing.overload + def boundValue(self, pos:int) -> typing.Any: ... + def boundValues(self) -> typing.Dict: ... + def clear(self) -> None: ... + def driver(self) -> PySide2.QtSql.QSqlDriver: ... + def execBatch(self, mode:PySide2.QtSql.QSqlQuery.BatchExecutionMode=...) -> bool: ... + @typing.overload + def exec_(self) -> bool: ... + @typing.overload + def exec_(self, query:str) -> bool: ... + def executedQuery(self) -> str: ... + def finish(self) -> None: ... + def first(self) -> bool: ... + def isActive(self) -> bool: ... + def isForwardOnly(self) -> bool: ... + @typing.overload + def isNull(self, field:int) -> bool: ... + @typing.overload + def isNull(self, name:str) -> bool: ... + def isSelect(self) -> bool: ... + def isValid(self) -> bool: ... + def last(self) -> bool: ... + def lastError(self) -> PySide2.QtSql.QSqlError: ... + def lastInsertId(self) -> typing.Any: ... + def lastQuery(self) -> str: ... + def next(self) -> bool: ... + def nextResult(self) -> bool: ... + def numRowsAffected(self) -> int: ... + def numericalPrecisionPolicy(self) -> PySide2.QtSql.QSql.NumericalPrecisionPolicy: ... + def prepare(self, query:str) -> bool: ... + def previous(self) -> bool: ... + def record(self) -> PySide2.QtSql.QSqlRecord: ... + def result(self) -> PySide2.QtSql.QSqlResult: ... + def seek(self, i:int, relative:bool=...) -> bool: ... + def setForwardOnly(self, forward:bool) -> None: ... + def setNumericalPrecisionPolicy(self, precisionPolicy:PySide2.QtSql.QSql.NumericalPrecisionPolicy) -> None: ... + def size(self) -> int: ... + @typing.overload + def value(self, i:int) -> typing.Any: ... + @typing.overload + def value(self, name:str) -> typing.Any: ... + + +class QSqlQueryModel(PySide2.QtCore.QAbstractTableModel): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def beginInsertColumns(self, parent:PySide2.QtCore.QModelIndex, first:int, last:int) -> None: ... + def beginInsertRows(self, parent:PySide2.QtCore.QModelIndex, first:int, last:int) -> None: ... + def beginRemoveColumns(self, parent:PySide2.QtCore.QModelIndex, first:int, last:int) -> None: ... + def beginRemoveRows(self, parent:PySide2.QtCore.QModelIndex, first:int, last:int) -> None: ... + def beginResetModel(self) -> None: ... + def canFetchMore(self, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def clear(self) -> None: ... + def columnCount(self, parent:PySide2.QtCore.QModelIndex=...) -> int: ... + def data(self, item:PySide2.QtCore.QModelIndex, role:int=...) -> typing.Any: ... + def endInsertColumns(self) -> None: ... + def endInsertRows(self) -> None: ... + def endRemoveColumns(self) -> None: ... + def endRemoveRows(self) -> None: ... + def endResetModel(self) -> None: ... + def fetchMore(self, parent:PySide2.QtCore.QModelIndex=...) -> None: ... + def headerData(self, section:int, orientation:PySide2.QtCore.Qt.Orientation, role:int=...) -> typing.Any: ... + def indexInQuery(self, item:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def insertColumns(self, column:int, count:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def lastError(self) -> PySide2.QtSql.QSqlError: ... + def query(self) -> PySide2.QtSql.QSqlQuery: ... + def queryChange(self) -> None: ... + @typing.overload + def record(self) -> PySide2.QtSql.QSqlRecord: ... + @typing.overload + def record(self, row:int) -> PySide2.QtSql.QSqlRecord: ... + def removeColumns(self, column:int, count:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def roleNames(self) -> typing.Dict: ... + def rowCount(self, parent:PySide2.QtCore.QModelIndex=...) -> int: ... + def setHeaderData(self, section:int, orientation:PySide2.QtCore.Qt.Orientation, value:typing.Any, role:int=...) -> bool: ... + def setLastError(self, error:PySide2.QtSql.QSqlError) -> None: ... + @typing.overload + def setQuery(self, query:PySide2.QtSql.QSqlQuery) -> None: ... + @typing.overload + def setQuery(self, query:str, db:PySide2.QtSql.QSqlDatabase=...) -> None: ... + + +class QSqlRecord(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtSql.QSqlRecord) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def append(self, field:PySide2.QtSql.QSqlField) -> None: ... + def clear(self) -> None: ... + def clearValues(self) -> None: ... + def contains(self, name:str) -> bool: ... + def count(self) -> int: ... + @typing.overload + def field(self, i:int) -> PySide2.QtSql.QSqlField: ... + @typing.overload + def field(self, name:str) -> PySide2.QtSql.QSqlField: ... + def fieldName(self, i:int) -> str: ... + def indexOf(self, name:str) -> int: ... + def insert(self, pos:int, field:PySide2.QtSql.QSqlField) -> None: ... + def isEmpty(self) -> bool: ... + @typing.overload + def isGenerated(self, i:int) -> bool: ... + @typing.overload + def isGenerated(self, name:str) -> bool: ... + @typing.overload + def isNull(self, i:int) -> bool: ... + @typing.overload + def isNull(self, name:str) -> bool: ... + def keyValues(self, keyFields:PySide2.QtSql.QSqlRecord) -> PySide2.QtSql.QSqlRecord: ... + def remove(self, pos:int) -> None: ... + def replace(self, pos:int, field:PySide2.QtSql.QSqlField) -> None: ... + @typing.overload + def setGenerated(self, i:int, generated:bool) -> None: ... + @typing.overload + def setGenerated(self, name:str, generated:bool) -> None: ... + @typing.overload + def setNull(self, i:int) -> None: ... + @typing.overload + def setNull(self, name:str) -> None: ... + @typing.overload + def setValue(self, i:int, val:typing.Any) -> None: ... + @typing.overload + def setValue(self, name:str, val:typing.Any) -> None: ... + @typing.overload + def value(self, i:int) -> typing.Any: ... + @typing.overload + def value(self, name:str) -> typing.Any: ... + + +class QSqlRelation(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, QSqlRelation:PySide2.QtSql.QSqlRelation) -> None: ... + @typing.overload + def __init__(self, aTableName:str, indexCol:str, displayCol:str) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def displayColumn(self) -> str: ... + def indexColumn(self) -> str: ... + def isValid(self) -> bool: ... + def swap(self, other:PySide2.QtSql.QSqlRelation) -> None: ... + def tableName(self) -> str: ... + + +class QSqlRelationalDelegate(PySide2.QtWidgets.QItemDelegate): + + def __init__(self, aParent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def createEditor(self, aParent:PySide2.QtWidgets.QWidget, option:PySide2.QtWidgets.QStyleOptionViewItem, index:PySide2.QtCore.QModelIndex) -> PySide2.QtWidgets.QWidget: ... + def setEditorData(self, editor:PySide2.QtWidgets.QWidget, index:PySide2.QtCore.QModelIndex) -> None: ... + def setModelData(self, editor:PySide2.QtWidgets.QWidget, model:PySide2.QtCore.QAbstractItemModel, index:PySide2.QtCore.QModelIndex) -> None: ... + + +class QSqlRelationalTableModel(PySide2.QtSql.QSqlTableModel): + InnerJoin : QSqlRelationalTableModel = ... # 0x0 + LeftJoin : QSqlRelationalTableModel = ... # 0x1 + + class JoinMode(object): + InnerJoin : QSqlRelationalTableModel.JoinMode = ... # 0x0 + LeftJoin : QSqlRelationalTableModel.JoinMode = ... # 0x1 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=..., db:PySide2.QtSql.QSqlDatabase=...) -> None: ... + + def clear(self) -> None: ... + def data(self, item:PySide2.QtCore.QModelIndex, role:int=...) -> typing.Any: ... + def insertRowIntoTable(self, values:PySide2.QtSql.QSqlRecord) -> bool: ... + def orderByClause(self) -> str: ... + def relation(self, column:int) -> PySide2.QtSql.QSqlRelation: ... + def relationModel(self, column:int) -> PySide2.QtSql.QSqlTableModel: ... + def removeColumns(self, column:int, count:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def revertRow(self, row:int) -> None: ... + def select(self) -> bool: ... + def selectStatement(self) -> str: ... + def setData(self, item:PySide2.QtCore.QModelIndex, value:typing.Any, role:int=...) -> bool: ... + def setJoinMode(self, joinMode:PySide2.QtSql.QSqlRelationalTableModel.JoinMode) -> None: ... + def setRelation(self, column:int, relation:PySide2.QtSql.QSqlRelation) -> None: ... + def setTable(self, tableName:str) -> None: ... + def updateRowInTable(self, row:int, values:PySide2.QtSql.QSqlRecord) -> bool: ... + + +class QSqlResult(Shiboken.Object): + PositionalBinding : QSqlResult = ... # 0x0 + NamedBinding : QSqlResult = ... # 0x1 + + class BindingSyntax(object): + PositionalBinding : QSqlResult.BindingSyntax = ... # 0x0 + NamedBinding : QSqlResult.BindingSyntax = ... # 0x1 + + def __init__(self, db:PySide2.QtSql.QSqlDriver) -> None: ... + + def addBindValue(self, val:typing.Any, type:PySide2.QtSql.QSql.ParamType) -> None: ... + def at(self) -> int: ... + @typing.overload + def bindValue(self, placeholder:str, val:typing.Any, type:PySide2.QtSql.QSql.ParamType) -> None: ... + @typing.overload + def bindValue(self, pos:int, val:typing.Any, type:PySide2.QtSql.QSql.ParamType) -> None: ... + @typing.overload + def bindValueType(self, placeholder:str) -> PySide2.QtSql.QSql.ParamType: ... + @typing.overload + def bindValueType(self, pos:int) -> PySide2.QtSql.QSql.ParamType: ... + def bindingSyntax(self) -> PySide2.QtSql.QSqlResult.BindingSyntax: ... + @typing.overload + def boundValue(self, placeholder:str) -> typing.Any: ... + @typing.overload + def boundValue(self, pos:int) -> typing.Any: ... + def boundValueCount(self) -> int: ... + def boundValueName(self, pos:int) -> str: ... + def boundValues(self) -> typing.List: ... + def clear(self) -> None: ... + def data(self, i:int) -> typing.Any: ... + def detachFromResultSet(self) -> None: ... + def driver(self) -> PySide2.QtSql.QSqlDriver: ... + def execBatch(self, arrayBind:bool=...) -> bool: ... + def exec_(self) -> bool: ... + def executedQuery(self) -> str: ... + def fetch(self, i:int) -> bool: ... + def fetchFirst(self) -> bool: ... + def fetchLast(self) -> bool: ... + def fetchNext(self) -> bool: ... + def fetchPrevious(self) -> bool: ... + def handle(self) -> typing.Any: ... + def hasOutValues(self) -> bool: ... + def isActive(self) -> bool: ... + def isForwardOnly(self) -> bool: ... + def isNull(self, i:int) -> bool: ... + def isSelect(self) -> bool: ... + def isValid(self) -> bool: ... + def lastError(self) -> PySide2.QtSql.QSqlError: ... + def lastInsertId(self) -> typing.Any: ... + def lastQuery(self) -> str: ... + def nextResult(self) -> bool: ... + def numRowsAffected(self) -> int: ... + def numericalPrecisionPolicy(self) -> PySide2.QtSql.QSql.NumericalPrecisionPolicy: ... + def prepare(self, query:str) -> bool: ... + def record(self) -> PySide2.QtSql.QSqlRecord: ... + def reset(self, sqlquery:str) -> bool: ... + def resetBindCount(self) -> None: ... + def savePrepare(self, sqlquery:str) -> bool: ... + def setActive(self, a:bool) -> None: ... + def setAt(self, at:int) -> None: ... + def setForwardOnly(self, forward:bool) -> None: ... + def setLastError(self, e:PySide2.QtSql.QSqlError) -> None: ... + def setNumericalPrecisionPolicy(self, policy:PySide2.QtSql.QSql.NumericalPrecisionPolicy) -> None: ... + def setQuery(self, query:str) -> None: ... + def setSelect(self, s:bool) -> None: ... + def size(self) -> int: ... + + +class QSqlTableModel(PySide2.QtSql.QSqlQueryModel): + OnFieldChange : QSqlTableModel = ... # 0x0 + OnRowChange : QSqlTableModel = ... # 0x1 + OnManualSubmit : QSqlTableModel = ... # 0x2 + + class EditStrategy(object): + OnFieldChange : QSqlTableModel.EditStrategy = ... # 0x0 + OnRowChange : QSqlTableModel.EditStrategy = ... # 0x1 + OnManualSubmit : QSqlTableModel.EditStrategy = ... # 0x2 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=..., db:PySide2.QtSql.QSqlDatabase=...) -> None: ... + + def clear(self) -> None: ... + def data(self, idx:PySide2.QtCore.QModelIndex, role:int=...) -> typing.Any: ... + def database(self) -> PySide2.QtSql.QSqlDatabase: ... + def deleteRowFromTable(self, row:int) -> bool: ... + def editStrategy(self) -> PySide2.QtSql.QSqlTableModel.EditStrategy: ... + def fieldIndex(self, fieldName:str) -> int: ... + def filter(self) -> str: ... + def flags(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.Qt.ItemFlags: ... + def headerData(self, section:int, orientation:PySide2.QtCore.Qt.Orientation, role:int=...) -> typing.Any: ... + def indexInQuery(self, item:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def insertRecord(self, row:int, record:PySide2.QtSql.QSqlRecord) -> bool: ... + def insertRowIntoTable(self, values:PySide2.QtSql.QSqlRecord) -> bool: ... + def insertRows(self, row:int, count:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + @typing.overload + def isDirty(self) -> bool: ... + @typing.overload + def isDirty(self, index:PySide2.QtCore.QModelIndex) -> bool: ... + def orderByClause(self) -> str: ... + def primaryKey(self) -> PySide2.QtSql.QSqlIndex: ... + def primaryValues(self, row:int) -> PySide2.QtSql.QSqlRecord: ... + @typing.overload + def record(self) -> PySide2.QtSql.QSqlRecord: ... + @typing.overload + def record(self, row:int) -> PySide2.QtSql.QSqlRecord: ... + def removeColumns(self, column:int, count:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def removeRows(self, row:int, count:int, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def revert(self) -> None: ... + def revertAll(self) -> None: ... + def revertRow(self, row:int) -> None: ... + def rowCount(self, parent:PySide2.QtCore.QModelIndex=...) -> int: ... + def select(self) -> bool: ... + def selectRow(self, row:int) -> bool: ... + def selectStatement(self) -> str: ... + def setData(self, index:PySide2.QtCore.QModelIndex, value:typing.Any, role:int=...) -> bool: ... + def setEditStrategy(self, strategy:PySide2.QtSql.QSqlTableModel.EditStrategy) -> None: ... + def setFilter(self, filter:str) -> None: ... + def setPrimaryKey(self, key:PySide2.QtSql.QSqlIndex) -> None: ... + def setQuery(self, query:PySide2.QtSql.QSqlQuery) -> None: ... + def setRecord(self, row:int, record:PySide2.QtSql.QSqlRecord) -> bool: ... + def setSort(self, column:int, order:PySide2.QtCore.Qt.SortOrder) -> None: ... + def setTable(self, tableName:str) -> None: ... + def sort(self, column:int, order:PySide2.QtCore.Qt.SortOrder) -> None: ... + def submit(self) -> bool: ... + def submitAll(self) -> bool: ... + def tableName(self) -> str: ... + def updateRowInTable(self, row:int, values:PySide2.QtSql.QSqlRecord) -> bool: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtSvg.pyd b/venv/Lib/site-packages/PySide2/QtSvg.pyd new file mode 100644 index 0000000..5b1e6b4 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtSvg.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtSvg.pyi b/venv/Lib/site-packages/PySide2/QtSvg.pyi new file mode 100644 index 0000000..cbff3f3 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtSvg.pyi @@ -0,0 +1,172 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtSvg, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtSvg +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtGui +import PySide2.QtWidgets +import PySide2.QtSvg + + +class QGraphicsSvgItem(PySide2.QtWidgets.QGraphicsObject): + + @typing.overload + def __init__(self, fileName:str, parentItem:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=...) -> None: ... + @typing.overload + def __init__(self, parentItem:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=...) -> None: ... + + def boundingRect(self) -> PySide2.QtCore.QRectF: ... + def elementId(self) -> str: ... + def isCachingEnabled(self) -> bool: ... + def maximumCacheSize(self) -> PySide2.QtCore.QSize: ... + def paint(self, painter:PySide2.QtGui.QPainter, option:PySide2.QtWidgets.QStyleOptionGraphicsItem, widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + def renderer(self) -> PySide2.QtSvg.QSvgRenderer: ... + def setCachingEnabled(self, arg__1:bool) -> None: ... + def setElementId(self, id:str) -> None: ... + def setMaximumCacheSize(self, size:PySide2.QtCore.QSize) -> None: ... + def setSharedRenderer(self, renderer:PySide2.QtSvg.QSvgRenderer) -> None: ... + def type(self) -> int: ... + + +class QSvgGenerator(PySide2.QtGui.QPaintDevice): + + def __init__(self) -> None: ... + + def description(self) -> str: ... + def fileName(self) -> str: ... + def metric(self, metric:PySide2.QtGui.QPaintDevice.PaintDeviceMetric) -> int: ... + def outputDevice(self) -> PySide2.QtCore.QIODevice: ... + def paintEngine(self) -> PySide2.QtGui.QPaintEngine: ... + def resolution(self) -> int: ... + def setDescription(self, description:str) -> None: ... + def setFileName(self, fileName:str) -> None: ... + def setOutputDevice(self, outputDevice:PySide2.QtCore.QIODevice) -> None: ... + def setResolution(self, dpi:int) -> None: ... + def setSize(self, size:PySide2.QtCore.QSize) -> None: ... + def setTitle(self, title:str) -> None: ... + @typing.overload + def setViewBox(self, viewBox:PySide2.QtCore.QRect) -> None: ... + @typing.overload + def setViewBox(self, viewBox:PySide2.QtCore.QRectF) -> None: ... + def size(self) -> PySide2.QtCore.QSize: ... + def title(self) -> str: ... + def viewBox(self) -> PySide2.QtCore.QRect: ... + def viewBoxF(self) -> PySide2.QtCore.QRectF: ... + + +class QSvgRenderer(PySide2.QtCore.QObject): + + @typing.overload + def __init__(self, contents:PySide2.QtCore.QByteArray, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, contents:PySide2.QtCore.QXmlStreamReader, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, filename:str, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def animated(self) -> bool: ... + def animationDuration(self) -> int: ... + def aspectRatioMode(self) -> PySide2.QtCore.Qt.AspectRatioMode: ... + def boundsOnElement(self, id:str) -> PySide2.QtCore.QRectF: ... + def currentFrame(self) -> int: ... + def defaultSize(self) -> PySide2.QtCore.QSize: ... + def elementExists(self, id:str) -> bool: ... + def framesPerSecond(self) -> int: ... + def isValid(self) -> bool: ... + @typing.overload + def load(self, contents:PySide2.QtCore.QByteArray) -> bool: ... + @typing.overload + def load(self, contents:PySide2.QtCore.QXmlStreamReader) -> bool: ... + @typing.overload + def load(self, filename:str) -> bool: ... + def matrixForElement(self, id:str) -> PySide2.QtGui.QMatrix: ... + @typing.overload + def render(self, p:PySide2.QtGui.QPainter) -> None: ... + @typing.overload + def render(self, p:PySide2.QtGui.QPainter, bounds:PySide2.QtCore.QRectF) -> None: ... + @typing.overload + def render(self, p:PySide2.QtGui.QPainter, elementId:str, bounds:PySide2.QtCore.QRectF=...) -> None: ... + def setAspectRatioMode(self, mode:PySide2.QtCore.Qt.AspectRatioMode) -> None: ... + def setCurrentFrame(self, arg__1:int) -> None: ... + def setFramesPerSecond(self, num:int) -> None: ... + @typing.overload + def setViewBox(self, viewbox:PySide2.QtCore.QRect) -> None: ... + @typing.overload + def setViewBox(self, viewbox:PySide2.QtCore.QRectF) -> None: ... + def transformForElement(self, id:str) -> PySide2.QtGui.QTransform: ... + def viewBox(self) -> PySide2.QtCore.QRect: ... + def viewBoxF(self) -> PySide2.QtCore.QRectF: ... + + +class QSvgWidget(PySide2.QtWidgets.QWidget): + + @typing.overload + def __init__(self, file:str, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + @typing.overload + def load(self, contents:PySide2.QtCore.QByteArray) -> None: ... + @typing.overload + def load(self, file:str) -> None: ... + def paintEvent(self, event:PySide2.QtGui.QPaintEvent) -> None: ... + def renderer(self) -> PySide2.QtSvg.QSvgRenderer: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtTest.pyd b/venv/Lib/site-packages/PySide2/QtTest.pyd new file mode 100644 index 0000000..b933596 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtTest.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtTest.pyi b/venv/Lib/site-packages/PySide2/QtTest.pyi new file mode 100644 index 0000000..33559a5 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtTest.pyi @@ -0,0 +1,348 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtTest, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtTest +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtGui +import PySide2.QtWidgets +import PySide2.QtTest + + +class QTest(Shiboken.Object): + FramesPerSecond : QTest = ... # 0x0 + MousePress : QTest = ... # 0x0 + Press : QTest = ... # 0x0 + Abort : QTest = ... # 0x1 + BitsPerSecond : QTest = ... # 0x1 + MouseRelease : QTest = ... # 0x1 + Release : QTest = ... # 0x1 + BytesPerSecond : QTest = ... # 0x2 + Click : QTest = ... # 0x2 + Continue : QTest = ... # 0x2 + MouseClick : QTest = ... # 0x2 + MouseDClick : QTest = ... # 0x3 + Shortcut : QTest = ... # 0x3 + WalltimeMilliseconds : QTest = ... # 0x3 + CPUTicks : QTest = ... # 0x4 + MouseMove : QTest = ... # 0x4 + InstructionReads : QTest = ... # 0x5 + Events : QTest = ... # 0x6 + WalltimeNanoseconds : QTest = ... # 0x7 + BytesAllocated : QTest = ... # 0x8 + CPUMigrations : QTest = ... # 0x9 + CPUCycles : QTest = ... # 0xa + BusCycles : QTest = ... # 0xb + StalledCycles : QTest = ... # 0xc + Instructions : QTest = ... # 0xd + BranchInstructions : QTest = ... # 0xe + BranchMisses : QTest = ... # 0xf + CacheReferences : QTest = ... # 0x10 + CacheReads : QTest = ... # 0x11 + CacheWrites : QTest = ... # 0x12 + CachePrefetches : QTest = ... # 0x13 + CacheMisses : QTest = ... # 0x14 + CacheReadMisses : QTest = ... # 0x15 + CacheWriteMisses : QTest = ... # 0x16 + CachePrefetchMisses : QTest = ... # 0x17 + ContextSwitches : QTest = ... # 0x18 + PageFaults : QTest = ... # 0x19 + MinorPageFaults : QTest = ... # 0x1a + MajorPageFaults : QTest = ... # 0x1b + AlignmentFaults : QTest = ... # 0x1c + EmulationFaults : QTest = ... # 0x1d + RefCPUCycles : QTest = ... # 0x1e + + class KeyAction(object): + Press : QTest.KeyAction = ... # 0x0 + Release : QTest.KeyAction = ... # 0x1 + Click : QTest.KeyAction = ... # 0x2 + Shortcut : QTest.KeyAction = ... # 0x3 + + class MouseAction(object): + MousePress : QTest.MouseAction = ... # 0x0 + MouseRelease : QTest.MouseAction = ... # 0x1 + MouseClick : QTest.MouseAction = ... # 0x2 + MouseDClick : QTest.MouseAction = ... # 0x3 + MouseMove : QTest.MouseAction = ... # 0x4 + + class QBenchmarkMetric(object): + FramesPerSecond : QTest.QBenchmarkMetric = ... # 0x0 + BitsPerSecond : QTest.QBenchmarkMetric = ... # 0x1 + BytesPerSecond : QTest.QBenchmarkMetric = ... # 0x2 + WalltimeMilliseconds : QTest.QBenchmarkMetric = ... # 0x3 + CPUTicks : QTest.QBenchmarkMetric = ... # 0x4 + InstructionReads : QTest.QBenchmarkMetric = ... # 0x5 + Events : QTest.QBenchmarkMetric = ... # 0x6 + WalltimeNanoseconds : QTest.QBenchmarkMetric = ... # 0x7 + BytesAllocated : QTest.QBenchmarkMetric = ... # 0x8 + CPUMigrations : QTest.QBenchmarkMetric = ... # 0x9 + CPUCycles : QTest.QBenchmarkMetric = ... # 0xa + BusCycles : QTest.QBenchmarkMetric = ... # 0xb + StalledCycles : QTest.QBenchmarkMetric = ... # 0xc + Instructions : QTest.QBenchmarkMetric = ... # 0xd + BranchInstructions : QTest.QBenchmarkMetric = ... # 0xe + BranchMisses : QTest.QBenchmarkMetric = ... # 0xf + CacheReferences : QTest.QBenchmarkMetric = ... # 0x10 + CacheReads : QTest.QBenchmarkMetric = ... # 0x11 + CacheWrites : QTest.QBenchmarkMetric = ... # 0x12 + CachePrefetches : QTest.QBenchmarkMetric = ... # 0x13 + CacheMisses : QTest.QBenchmarkMetric = ... # 0x14 + CacheReadMisses : QTest.QBenchmarkMetric = ... # 0x15 + CacheWriteMisses : QTest.QBenchmarkMetric = ... # 0x16 + CachePrefetchMisses : QTest.QBenchmarkMetric = ... # 0x17 + ContextSwitches : QTest.QBenchmarkMetric = ... # 0x18 + PageFaults : QTest.QBenchmarkMetric = ... # 0x19 + MinorPageFaults : QTest.QBenchmarkMetric = ... # 0x1a + MajorPageFaults : QTest.QBenchmarkMetric = ... # 0x1b + AlignmentFaults : QTest.QBenchmarkMetric = ... # 0x1c + EmulationFaults : QTest.QBenchmarkMetric = ... # 0x1d + RefCPUCycles : QTest.QBenchmarkMetric = ... # 0x1e + + class QTouchEventSequence(Shiboken.Object): + def commit(self, processEvents:bool=...) -> None: ... + @typing.overload + def move(self, touchId:int, pt:PySide2.QtCore.QPoint, widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> PySide2.QtTest.QTest.QTouchEventSequence: ... + @typing.overload + def move(self, touchId:int, pt:PySide2.QtCore.QPoint, window:typing.Optional[PySide2.QtGui.QWindow]=...) -> PySide2.QtTest.QTest.QTouchEventSequence: ... + @typing.overload + def press(self, touchId:int, pt:PySide2.QtCore.QPoint, widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> PySide2.QtTest.QTest.QTouchEventSequence: ... + @typing.overload + def press(self, touchId:int, pt:PySide2.QtCore.QPoint, window:typing.Optional[PySide2.QtGui.QWindow]=...) -> PySide2.QtTest.QTest.QTouchEventSequence: ... + @typing.overload + def release(self, touchId:int, pt:PySide2.QtCore.QPoint, widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> PySide2.QtTest.QTest.QTouchEventSequence: ... + @typing.overload + def release(self, touchId:int, pt:PySide2.QtCore.QPoint, window:typing.Optional[PySide2.QtGui.QWindow]=...) -> PySide2.QtTest.QTest.QTouchEventSequence: ... + def stationary(self, touchId:int) -> PySide2.QtTest.QTest.QTouchEventSequence: ... + + class TestFailMode(object): + Abort : QTest.TestFailMode = ... # 0x1 + Continue : QTest.TestFailMode = ... # 0x2 + @staticmethod + def addColumnInternal(id:int, name:bytes) -> None: ... + @staticmethod + def asciiToKey(ascii:int) -> PySide2.QtCore.Qt.Key: ... + @staticmethod + def compare_ptr_helper(t1:int, t2:int, actual:bytes, expected:bytes, file:bytes, line:int) -> bool: ... + @staticmethod + def compare_string_helper(t1:bytes, t2:bytes, actual:bytes, expected:bytes, file:bytes, line:int) -> bool: ... + @staticmethod + def createTouchDevice(devType:PySide2.QtGui.QTouchDevice.DeviceType=...) -> PySide2.QtGui.QTouchDevice: ... + @staticmethod + def currentAppName() -> bytes: ... + @staticmethod + def currentDataTag() -> bytes: ... + @staticmethod + def currentTestFailed() -> bool: ... + @staticmethod + def currentTestFunction() -> bytes: ... + @typing.overload + @staticmethod + def ignoreMessage(type:PySide2.QtCore.QtMsgType, message:bytes) -> None: ... + @typing.overload + @staticmethod + def ignoreMessage(type:PySide2.QtCore.QtMsgType, messagePattern:PySide2.QtCore.QRegularExpression) -> None: ... + @typing.overload + @staticmethod + def keyClick(widget:PySide2.QtWidgets.QWidget, key:PySide2.QtCore.Qt.Key, modifier:PySide2.QtCore.Qt.KeyboardModifiers=..., delay:int=...) -> None: ... + @typing.overload + @staticmethod + def keyClick(widget:PySide2.QtWidgets.QWidget, key:int, modifier:PySide2.QtCore.Qt.KeyboardModifiers=..., delay:int=...) -> None: ... + @typing.overload + @staticmethod + def keyClick(window:PySide2.QtGui.QWindow, key:PySide2.QtCore.Qt.Key, modifier:PySide2.QtCore.Qt.KeyboardModifiers=..., delay:int=...) -> None: ... + @typing.overload + @staticmethod + def keyClick(window:PySide2.QtGui.QWindow, key:int, modifier:PySide2.QtCore.Qt.KeyboardModifiers=..., delay:int=...) -> None: ... + @staticmethod + def keyClicks(widget:PySide2.QtWidgets.QWidget, sequence:str, modifier:PySide2.QtCore.Qt.KeyboardModifiers=..., delay:int=...) -> None: ... + @typing.overload + @staticmethod + def keyEvent(action:PySide2.QtTest.QTest.KeyAction, widget:PySide2.QtWidgets.QWidget, ascii:int, modifier:PySide2.QtCore.Qt.KeyboardModifiers=..., delay:int=...) -> None: ... + @typing.overload + @staticmethod + def keyEvent(action:PySide2.QtTest.QTest.KeyAction, widget:PySide2.QtWidgets.QWidget, key:PySide2.QtCore.Qt.Key, modifier:PySide2.QtCore.Qt.KeyboardModifiers=..., delay:int=...) -> None: ... + @typing.overload + @staticmethod + def keyEvent(action:PySide2.QtTest.QTest.KeyAction, window:PySide2.QtGui.QWindow, ascii:int, modifier:PySide2.QtCore.Qt.KeyboardModifiers=..., delay:int=...) -> None: ... + @typing.overload + @staticmethod + def keyEvent(action:PySide2.QtTest.QTest.KeyAction, window:PySide2.QtGui.QWindow, key:PySide2.QtCore.Qt.Key, modifier:PySide2.QtCore.Qt.KeyboardModifiers=..., delay:int=...) -> None: ... + @typing.overload + @staticmethod + def keyPress(widget:PySide2.QtWidgets.QWidget, key:PySide2.QtCore.Qt.Key, modifier:PySide2.QtCore.Qt.KeyboardModifiers=..., delay:int=...) -> None: ... + @typing.overload + @staticmethod + def keyPress(widget:PySide2.QtWidgets.QWidget, key:int, modifier:PySide2.QtCore.Qt.KeyboardModifiers=..., delay:int=...) -> None: ... + @typing.overload + @staticmethod + def keyPress(window:PySide2.QtGui.QWindow, key:PySide2.QtCore.Qt.Key, modifier:PySide2.QtCore.Qt.KeyboardModifiers=..., delay:int=...) -> None: ... + @typing.overload + @staticmethod + def keyPress(window:PySide2.QtGui.QWindow, key:int, modifier:PySide2.QtCore.Qt.KeyboardModifiers=..., delay:int=...) -> None: ... + @typing.overload + @staticmethod + def keyRelease(widget:PySide2.QtWidgets.QWidget, key:PySide2.QtCore.Qt.Key, modifier:PySide2.QtCore.Qt.KeyboardModifiers=..., delay:int=...) -> None: ... + @typing.overload + @staticmethod + def keyRelease(widget:PySide2.QtWidgets.QWidget, key:int, modifier:PySide2.QtCore.Qt.KeyboardModifiers=..., delay:int=...) -> None: ... + @typing.overload + @staticmethod + def keyRelease(window:PySide2.QtGui.QWindow, key:PySide2.QtCore.Qt.Key, modifier:PySide2.QtCore.Qt.KeyboardModifiers=..., delay:int=...) -> None: ... + @typing.overload + @staticmethod + def keyRelease(window:PySide2.QtGui.QWindow, key:int, modifier:PySide2.QtCore.Qt.KeyboardModifiers=..., delay:int=...) -> None: ... + @typing.overload + @staticmethod + def keySequence(widget:PySide2.QtWidgets.QWidget, keySequence:PySide2.QtGui.QKeySequence) -> None: ... + @typing.overload + @staticmethod + def keySequence(window:PySide2.QtGui.QWindow, keySequence:PySide2.QtGui.QKeySequence) -> None: ... + @staticmethod + def keyToAscii(key:PySide2.QtCore.Qt.Key) -> int: ... + @typing.overload + @staticmethod + def mouseClick(widget:PySide2.QtWidgets.QWidget, button:PySide2.QtCore.Qt.MouseButton, stateKey:PySide2.QtCore.Qt.KeyboardModifiers=..., pos:PySide2.QtCore.QPoint=..., delay:int=...) -> None: ... + @typing.overload + @staticmethod + def mouseClick(window:PySide2.QtGui.QWindow, button:PySide2.QtCore.Qt.MouseButton, stateKey:PySide2.QtCore.Qt.KeyboardModifiers=..., pos:PySide2.QtCore.QPoint=..., delay:int=...) -> None: ... + @typing.overload + @staticmethod + def mouseDClick(widget:PySide2.QtWidgets.QWidget, button:PySide2.QtCore.Qt.MouseButton, stateKey:PySide2.QtCore.Qt.KeyboardModifiers=..., pos:PySide2.QtCore.QPoint=..., delay:int=...) -> None: ... + @typing.overload + @staticmethod + def mouseDClick(window:PySide2.QtGui.QWindow, button:PySide2.QtCore.Qt.MouseButton, stateKey:PySide2.QtCore.Qt.KeyboardModifiers=..., pos:PySide2.QtCore.QPoint=..., delay:int=...) -> None: ... + @typing.overload + @staticmethod + def mouseEvent(action:PySide2.QtTest.QTest.MouseAction, widget:PySide2.QtWidgets.QWidget, button:PySide2.QtCore.Qt.MouseButton, stateKey:PySide2.QtCore.Qt.KeyboardModifiers, pos:PySide2.QtCore.QPoint, delay:int=...) -> None: ... + @typing.overload + @staticmethod + def mouseEvent(action:PySide2.QtTest.QTest.MouseAction, window:PySide2.QtGui.QWindow, button:PySide2.QtCore.Qt.MouseButton, stateKey:PySide2.QtCore.Qt.KeyboardModifiers, pos:PySide2.QtCore.QPoint, delay:int=...) -> None: ... + @typing.overload + @staticmethod + def mouseMove(widget:PySide2.QtWidgets.QWidget, pos:PySide2.QtCore.QPoint=..., delay:int=...) -> None: ... + @typing.overload + @staticmethod + def mouseMove(window:PySide2.QtGui.QWindow, pos:PySide2.QtCore.QPoint=..., delay:int=...) -> None: ... + @typing.overload + @staticmethod + def mousePress(widget:PySide2.QtWidgets.QWidget, button:PySide2.QtCore.Qt.MouseButton, stateKey:PySide2.QtCore.Qt.KeyboardModifiers=..., pos:PySide2.QtCore.QPoint=..., delay:int=...) -> None: ... + @typing.overload + @staticmethod + def mousePress(window:PySide2.QtGui.QWindow, button:PySide2.QtCore.Qt.MouseButton, stateKey:PySide2.QtCore.Qt.KeyboardModifiers=..., pos:PySide2.QtCore.QPoint=..., delay:int=...) -> None: ... + @typing.overload + @staticmethod + def mouseRelease(widget:PySide2.QtWidgets.QWidget, button:PySide2.QtCore.Qt.MouseButton, stateKey:PySide2.QtCore.Qt.KeyboardModifiers=..., pos:PySide2.QtCore.QPoint=..., delay:int=...) -> None: ... + @typing.overload + @staticmethod + def mouseRelease(window:PySide2.QtGui.QWindow, button:PySide2.QtCore.Qt.MouseButton, stateKey:PySide2.QtCore.Qt.KeyboardModifiers=..., pos:PySide2.QtCore.QPoint=..., delay:int=...) -> None: ... + @staticmethod + def qCleanup() -> None: ... + @staticmethod + def qElementData(elementName:bytes, metaTypeId:int) -> int: ... + @staticmethod + def qExpectFail(dataIndex:bytes, comment:bytes, mode:PySide2.QtTest.QTest.TestFailMode, file:bytes, line:int) -> bool: ... + @typing.overload + @staticmethod + def qFindTestData(basepath:str, file:typing.Optional[bytes]=..., line:int=..., builddir:typing.Optional[bytes]=...) -> str: ... + @typing.overload + @staticmethod + def qFindTestData(basepath:bytes, file:typing.Optional[bytes]=..., line:int=..., builddir:typing.Optional[bytes]=...) -> str: ... + @staticmethod + def qGlobalData(tagName:bytes, typeId:int) -> int: ... + @staticmethod + def qRun() -> int: ... + @staticmethod + def qSkip(message:bytes, file:bytes, line:int) -> None: ... + @staticmethod + def qWaitForWindowActive(widget:PySide2.QtWidgets.QWidget, timeout:int=...) -> bool: ... + @staticmethod + def qWaitForWindowExposed(widget:PySide2.QtWidgets.QWidget, timeout:int=...) -> bool: ... + @typing.overload + @staticmethod + def sendKeyEvent(action:PySide2.QtTest.QTest.KeyAction, widget:PySide2.QtWidgets.QWidget, code:PySide2.QtCore.Qt.Key, ascii:int, modifier:PySide2.QtCore.Qt.KeyboardModifiers, delay:int=...) -> None: ... + @typing.overload + @staticmethod + def sendKeyEvent(action:PySide2.QtTest.QTest.KeyAction, widget:PySide2.QtWidgets.QWidget, code:PySide2.QtCore.Qt.Key, text:str, modifier:PySide2.QtCore.Qt.KeyboardModifiers, delay:int=...) -> None: ... + @typing.overload + @staticmethod + def sendKeyEvent(action:PySide2.QtTest.QTest.KeyAction, window:PySide2.QtGui.QWindow, code:PySide2.QtCore.Qt.Key, ascii:int, modifier:PySide2.QtCore.Qt.KeyboardModifiers, delay:int=...) -> None: ... + @typing.overload + @staticmethod + def sendKeyEvent(action:PySide2.QtTest.QTest.KeyAction, window:PySide2.QtGui.QWindow, code:PySide2.QtCore.Qt.Key, text:str, modifier:PySide2.QtCore.Qt.KeyboardModifiers, delay:int=...) -> None: ... + @staticmethod + def setBenchmarkResult(result:float, metric:PySide2.QtTest.QTest.QBenchmarkMetric) -> None: ... + @staticmethod + def setMainSourcePath(file:bytes, builddir:typing.Optional[bytes]=...) -> None: ... + @typing.overload + @staticmethod + def simulateEvent(widget:PySide2.QtWidgets.QWidget, press:bool, code:int, modifier:PySide2.QtCore.Qt.KeyboardModifiers, text:str, repeat:bool, delay:int=...) -> None: ... + @typing.overload + @staticmethod + def simulateEvent(window:PySide2.QtGui.QWindow, press:bool, code:int, modifier:PySide2.QtCore.Qt.KeyboardModifiers, text:str, repeat:bool, delay:int=...) -> None: ... + @staticmethod + def testObject() -> PySide2.QtCore.QObject: ... + @staticmethod + def toPrettyCString(unicode:bytes, length:int) -> bytes: ... + @typing.overload + @staticmethod + def touchEvent(widget:PySide2.QtWidgets.QWidget, device:PySide2.QtGui.QTouchDevice, autoCommit:bool=...) -> PySide2.QtTest.QTest.QTouchEventSequence: ... + @typing.overload + @staticmethod + def touchEvent(window:PySide2.QtGui.QWindow, device:PySide2.QtGui.QTouchDevice, autoCommit:bool=...) -> PySide2.QtTest.QTest.QTouchEventSequence: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtTextToSpeech.pyd b/venv/Lib/site-packages/PySide2/QtTextToSpeech.pyd new file mode 100644 index 0000000..a673446 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtTextToSpeech.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtTextToSpeech.pyi b/venv/Lib/site-packages/PySide2/QtTextToSpeech.pyi new file mode 100644 index 0000000..a7b4fe7 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtTextToSpeech.pyi @@ -0,0 +1,166 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtTextToSpeech, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtTextToSpeech +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtTextToSpeech + + +class QTextToSpeech(PySide2.QtCore.QObject): + Ready : QTextToSpeech = ... # 0x0 + Speaking : QTextToSpeech = ... # 0x1 + Paused : QTextToSpeech = ... # 0x2 + BackendError : QTextToSpeech = ... # 0x3 + + class State(object): + Ready : QTextToSpeech.State = ... # 0x0 + Speaking : QTextToSpeech.State = ... # 0x1 + Paused : QTextToSpeech.State = ... # 0x2 + BackendError : QTextToSpeech.State = ... # 0x3 + + @typing.overload + def __init__(self, engine:str, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + @staticmethod + def availableEngines() -> typing.List: ... + def availableLocales(self) -> typing.List: ... + def availableVoices(self) -> typing.List: ... + def locale(self) -> PySide2.QtCore.QLocale: ... + def pause(self) -> None: ... + def pitch(self) -> float: ... + def rate(self) -> float: ... + def resume(self) -> None: ... + def say(self, text:str) -> None: ... + def setLocale(self, locale:PySide2.QtCore.QLocale) -> None: ... + def setPitch(self, pitch:float) -> None: ... + def setRate(self, rate:float) -> None: ... + def setVoice(self, voice:PySide2.QtTextToSpeech.QVoice) -> None: ... + def setVolume(self, volume:float) -> None: ... + def state(self) -> PySide2.QtTextToSpeech.QTextToSpeech.State: ... + def stop(self) -> None: ... + def voice(self) -> PySide2.QtTextToSpeech.QVoice: ... + def volume(self) -> float: ... + + +class QTextToSpeechEngine(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def availableLocales(self) -> typing.List: ... + def availableVoices(self) -> typing.List: ... + @staticmethod + def createVoice(name:str, gender:PySide2.QtTextToSpeech.QVoice.Gender, age:PySide2.QtTextToSpeech.QVoice.Age, data:typing.Any) -> PySide2.QtTextToSpeech.QVoice: ... + def locale(self) -> PySide2.QtCore.QLocale: ... + def pause(self) -> None: ... + def pitch(self) -> float: ... + def rate(self) -> float: ... + def resume(self) -> None: ... + def say(self, text:str) -> None: ... + def setLocale(self, locale:PySide2.QtCore.QLocale) -> bool: ... + def setPitch(self, pitch:float) -> bool: ... + def setRate(self, rate:float) -> bool: ... + def setVoice(self, voice:PySide2.QtTextToSpeech.QVoice) -> bool: ... + def setVolume(self, volume:float) -> bool: ... + def state(self) -> PySide2.QtTextToSpeech.QTextToSpeech.State: ... + def stop(self) -> None: ... + def voice(self) -> PySide2.QtTextToSpeech.QVoice: ... + @staticmethod + def voiceData(voice:PySide2.QtTextToSpeech.QVoice) -> typing.Any: ... + def volume(self) -> float: ... + + +class QVoice(Shiboken.Object): + Child : QVoice = ... # 0x0 + Male : QVoice = ... # 0x0 + Female : QVoice = ... # 0x1 + Teenager : QVoice = ... # 0x1 + Adult : QVoice = ... # 0x2 + Unknown : QVoice = ... # 0x2 + Senior : QVoice = ... # 0x3 + Other : QVoice = ... # 0x4 + + class Age(object): + Child : QVoice.Age = ... # 0x0 + Teenager : QVoice.Age = ... # 0x1 + Adult : QVoice.Age = ... # 0x2 + Senior : QVoice.Age = ... # 0x3 + Other : QVoice.Age = ... # 0x4 + + class Gender(object): + Male : QVoice.Gender = ... # 0x0 + Female : QVoice.Gender = ... # 0x1 + Unknown : QVoice.Gender = ... # 0x2 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtTextToSpeech.QVoice) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def age(self) -> PySide2.QtTextToSpeech.QVoice.Age: ... + @staticmethod + def ageName(age:PySide2.QtTextToSpeech.QVoice.Age) -> str: ... + def gender(self) -> PySide2.QtTextToSpeech.QVoice.Gender: ... + @staticmethod + def genderName(gender:PySide2.QtTextToSpeech.QVoice.Gender) -> str: ... + def name(self) -> str: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtUiTools.pyd b/venv/Lib/site-packages/PySide2/QtUiTools.pyd new file mode 100644 index 0000000..da1ec5e Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtUiTools.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtUiTools.pyi b/venv/Lib/site-packages/PySide2/QtUiTools.pyi new file mode 100644 index 0000000..cab7784 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtUiTools.pyi @@ -0,0 +1,93 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtUiTools, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtUiTools +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtWidgets +import PySide2.QtUiTools + + +class QUiLoader(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def addPluginPath(self, path:str) -> None: ... + def availableLayouts(self) -> typing.List: ... + def availableWidgets(self) -> typing.List: ... + def clearPluginPaths(self) -> None: ... + def createAction(self, parent:typing.Optional[PySide2.QtCore.QObject]=..., name:str=...) -> PySide2.QtWidgets.QAction: ... + def createActionGroup(self, parent:typing.Optional[PySide2.QtCore.QObject]=..., name:str=...) -> PySide2.QtWidgets.QActionGroup: ... + def createLayout(self, className:str, parent:typing.Optional[PySide2.QtCore.QObject]=..., name:str=...) -> PySide2.QtWidgets.QLayout: ... + def createWidget(self, className:str, parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., name:str=...) -> PySide2.QtWidgets.QWidget: ... + def errorString(self) -> str: ... + def isLanguageChangeEnabled(self) -> bool: ... + def isTranslationEnabled(self) -> bool: ... + @typing.overload + def load(self, arg__1:str, parentWidget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> PySide2.QtWidgets.QWidget: ... + @typing.overload + def load(self, device:PySide2.QtCore.QIODevice, parentWidget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> PySide2.QtWidgets.QWidget: ... + def pluginPaths(self) -> typing.List: ... + def registerCustomWidget(self, customWidgetType:object) -> None: ... + def setLanguageChangeEnabled(self, enabled:bool) -> None: ... + def setTranslationEnabled(self, enabled:bool) -> None: ... + def setWorkingDirectory(self, dir:PySide2.QtCore.QDir) -> None: ... + def workingDirectory(self) -> PySide2.QtCore.QDir: ... +@staticmethod +def loadUiType(uifile:str) -> object: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtWebChannel.pyd b/venv/Lib/site-packages/PySide2/QtWebChannel.pyd new file mode 100644 index 0000000..e08d8df Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtWebChannel.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtWebChannel.pyi b/venv/Lib/site-packages/PySide2/QtWebChannel.pyi new file mode 100644 index 0000000..46fda34 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtWebChannel.pyi @@ -0,0 +1,84 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtWebChannel, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtWebChannel +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtWebChannel + + +class QWebChannel(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def blockUpdates(self) -> bool: ... + def connectTo(self, transport:PySide2.QtWebChannel.QWebChannelAbstractTransport) -> None: ... + def deregisterObject(self, object:PySide2.QtCore.QObject) -> None: ... + def disconnectFrom(self, transport:PySide2.QtWebChannel.QWebChannelAbstractTransport) -> None: ... + def registerObject(self, id:str, object:PySide2.QtCore.QObject) -> None: ... + def registerObjects(self, objects:typing.Dict) -> None: ... + def registeredObjects(self) -> typing.Dict: ... + def setBlockUpdates(self, block:bool) -> None: ... + + +class QWebChannelAbstractTransport(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def sendMessage(self, message:typing.Dict) -> None: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtWebEngine.pyd b/venv/Lib/site-packages/PySide2/QtWebEngine.pyd new file mode 100644 index 0000000..4b14ebf Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtWebEngine.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtWebEngine.pyi b/venv/Lib/site-packages/PySide2/QtWebEngine.pyi new file mode 100644 index 0000000..3eb9e36 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtWebEngine.pyi @@ -0,0 +1,67 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtWebEngine, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtWebEngine +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtWebEngine + + +class QtWebEngine(Shiboken.Object): + @staticmethod + def initialize() -> None: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtWebEngineCore.pyd b/venv/Lib/site-packages/PySide2/QtWebEngineCore.pyd new file mode 100644 index 0000000..cc7f085 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtWebEngineCore.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtWebEngineCore.pyi b/venv/Lib/site-packages/PySide2/QtWebEngineCore.pyi new file mode 100644 index 0000000..653cba2 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtWebEngineCore.pyi @@ -0,0 +1,269 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtWebEngineCore, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtWebEngineCore +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtNetwork +import PySide2.QtWebEngineCore + + +class QWebEngineCookieStore(PySide2.QtCore.QObject): + def deleteAllCookies(self) -> None: ... + def deleteCookie(self, cookie:PySide2.QtNetwork.QNetworkCookie, origin:PySide2.QtCore.QUrl=...) -> None: ... + def deleteSessionCookies(self) -> None: ... + def loadAllCookies(self) -> None: ... + def setCookie(self, cookie:PySide2.QtNetwork.QNetworkCookie, origin:PySide2.QtCore.QUrl=...) -> None: ... + + +class QWebEngineHttpRequest(Shiboken.Object): + Get : QWebEngineHttpRequest = ... # 0x0 + Post : QWebEngineHttpRequest = ... # 0x1 + + class Method(object): + Get : QWebEngineHttpRequest.Method = ... # 0x0 + Post : QWebEngineHttpRequest.Method = ... # 0x1 + + @typing.overload + def __init__(self, other:PySide2.QtWebEngineCore.QWebEngineHttpRequest) -> None: ... + @typing.overload + def __init__(self, url:PySide2.QtCore.QUrl=..., method:PySide2.QtWebEngineCore.QWebEngineHttpRequest.Method=...) -> None: ... + + def hasHeader(self, headerName:PySide2.QtCore.QByteArray) -> bool: ... + def header(self, headerName:PySide2.QtCore.QByteArray) -> PySide2.QtCore.QByteArray: ... + def headers(self) -> typing.List: ... + def method(self) -> PySide2.QtWebEngineCore.QWebEngineHttpRequest.Method: ... + def postData(self) -> PySide2.QtCore.QByteArray: ... + @staticmethod + def postRequest(url:PySide2.QtCore.QUrl, postData:typing.Dict) -> PySide2.QtWebEngineCore.QWebEngineHttpRequest: ... + def setHeader(self, headerName:PySide2.QtCore.QByteArray, value:PySide2.QtCore.QByteArray) -> None: ... + def setMethod(self, method:PySide2.QtWebEngineCore.QWebEngineHttpRequest.Method) -> None: ... + def setPostData(self, postData:PySide2.QtCore.QByteArray) -> None: ... + def setUrl(self, url:PySide2.QtCore.QUrl) -> None: ... + def swap(self, other:PySide2.QtWebEngineCore.QWebEngineHttpRequest) -> None: ... + def unsetHeader(self, headerName:PySide2.QtCore.QByteArray) -> None: ... + def url(self) -> PySide2.QtCore.QUrl: ... + + +class QWebEngineUrlRequestInfo(Shiboken.Object): + NavigationTypeLink : QWebEngineUrlRequestInfo = ... # 0x0 + ResourceTypeMainFrame : QWebEngineUrlRequestInfo = ... # 0x0 + NavigationTypeTyped : QWebEngineUrlRequestInfo = ... # 0x1 + ResourceTypeSubFrame : QWebEngineUrlRequestInfo = ... # 0x1 + NavigationTypeFormSubmitted: QWebEngineUrlRequestInfo = ... # 0x2 + ResourceTypeStylesheet : QWebEngineUrlRequestInfo = ... # 0x2 + NavigationTypeBackForward: QWebEngineUrlRequestInfo = ... # 0x3 + ResourceTypeScript : QWebEngineUrlRequestInfo = ... # 0x3 + NavigationTypeReload : QWebEngineUrlRequestInfo = ... # 0x4 + ResourceTypeImage : QWebEngineUrlRequestInfo = ... # 0x4 + NavigationTypeOther : QWebEngineUrlRequestInfo = ... # 0x5 + ResourceTypeFontResource : QWebEngineUrlRequestInfo = ... # 0x5 + NavigationTypeRedirect : QWebEngineUrlRequestInfo = ... # 0x6 + ResourceTypeSubResource : QWebEngineUrlRequestInfo = ... # 0x6 + ResourceTypeObject : QWebEngineUrlRequestInfo = ... # 0x7 + ResourceTypeMedia : QWebEngineUrlRequestInfo = ... # 0x8 + ResourceTypeWorker : QWebEngineUrlRequestInfo = ... # 0x9 + ResourceTypeSharedWorker : QWebEngineUrlRequestInfo = ... # 0xa + ResourceTypePrefetch : QWebEngineUrlRequestInfo = ... # 0xb + ResourceTypeFavicon : QWebEngineUrlRequestInfo = ... # 0xc + ResourceTypeXhr : QWebEngineUrlRequestInfo = ... # 0xd + ResourceTypePing : QWebEngineUrlRequestInfo = ... # 0xe + ResourceTypeServiceWorker: QWebEngineUrlRequestInfo = ... # 0xf + ResourceTypeCspReport : QWebEngineUrlRequestInfo = ... # 0x10 + ResourceTypePluginResource: QWebEngineUrlRequestInfo = ... # 0x11 + ResourceTypeNavigationPreloadMainFrame: QWebEngineUrlRequestInfo = ... # 0x13 + ResourceTypeLast : QWebEngineUrlRequestInfo = ... # 0x14 + ResourceTypeNavigationPreloadSubFrame: QWebEngineUrlRequestInfo = ... # 0x14 + ResourceTypeUnknown : QWebEngineUrlRequestInfo = ... # 0xff + + class NavigationType(object): + NavigationTypeLink : QWebEngineUrlRequestInfo.NavigationType = ... # 0x0 + NavigationTypeTyped : QWebEngineUrlRequestInfo.NavigationType = ... # 0x1 + NavigationTypeFormSubmitted: QWebEngineUrlRequestInfo.NavigationType = ... # 0x2 + NavigationTypeBackForward: QWebEngineUrlRequestInfo.NavigationType = ... # 0x3 + NavigationTypeReload : QWebEngineUrlRequestInfo.NavigationType = ... # 0x4 + NavigationTypeOther : QWebEngineUrlRequestInfo.NavigationType = ... # 0x5 + NavigationTypeRedirect : QWebEngineUrlRequestInfo.NavigationType = ... # 0x6 + + class ResourceType(object): + ResourceTypeMainFrame : QWebEngineUrlRequestInfo.ResourceType = ... # 0x0 + ResourceTypeSubFrame : QWebEngineUrlRequestInfo.ResourceType = ... # 0x1 + ResourceTypeStylesheet : QWebEngineUrlRequestInfo.ResourceType = ... # 0x2 + ResourceTypeScript : QWebEngineUrlRequestInfo.ResourceType = ... # 0x3 + ResourceTypeImage : QWebEngineUrlRequestInfo.ResourceType = ... # 0x4 + ResourceTypeFontResource : QWebEngineUrlRequestInfo.ResourceType = ... # 0x5 + ResourceTypeSubResource : QWebEngineUrlRequestInfo.ResourceType = ... # 0x6 + ResourceTypeObject : QWebEngineUrlRequestInfo.ResourceType = ... # 0x7 + ResourceTypeMedia : QWebEngineUrlRequestInfo.ResourceType = ... # 0x8 + ResourceTypeWorker : QWebEngineUrlRequestInfo.ResourceType = ... # 0x9 + ResourceTypeSharedWorker : QWebEngineUrlRequestInfo.ResourceType = ... # 0xa + ResourceTypePrefetch : QWebEngineUrlRequestInfo.ResourceType = ... # 0xb + ResourceTypeFavicon : QWebEngineUrlRequestInfo.ResourceType = ... # 0xc + ResourceTypeXhr : QWebEngineUrlRequestInfo.ResourceType = ... # 0xd + ResourceTypePing : QWebEngineUrlRequestInfo.ResourceType = ... # 0xe + ResourceTypeServiceWorker: QWebEngineUrlRequestInfo.ResourceType = ... # 0xf + ResourceTypeCspReport : QWebEngineUrlRequestInfo.ResourceType = ... # 0x10 + ResourceTypePluginResource: QWebEngineUrlRequestInfo.ResourceType = ... # 0x11 + ResourceTypeNavigationPreloadMainFrame: QWebEngineUrlRequestInfo.ResourceType = ... # 0x13 + ResourceTypeLast : QWebEngineUrlRequestInfo.ResourceType = ... # 0x14 + ResourceTypeNavigationPreloadSubFrame: QWebEngineUrlRequestInfo.ResourceType = ... # 0x14 + ResourceTypeUnknown : QWebEngineUrlRequestInfo.ResourceType = ... # 0xff + def block(self, shouldBlock:bool) -> None: ... + def changed(self) -> bool: ... + def firstPartyUrl(self) -> PySide2.QtCore.QUrl: ... + def initiator(self) -> PySide2.QtCore.QUrl: ... + def navigationType(self) -> PySide2.QtWebEngineCore.QWebEngineUrlRequestInfo.NavigationType: ... + def redirect(self, url:PySide2.QtCore.QUrl) -> None: ... + def requestMethod(self) -> PySide2.QtCore.QByteArray: ... + def requestUrl(self) -> PySide2.QtCore.QUrl: ... + def resourceType(self) -> PySide2.QtWebEngineCore.QWebEngineUrlRequestInfo.ResourceType: ... + def setHttpHeader(self, name:PySide2.QtCore.QByteArray, value:PySide2.QtCore.QByteArray) -> None: ... + + +class QWebEngineUrlRequestInterceptor(PySide2.QtCore.QObject): + + def __init__(self, p:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def interceptRequest(self, info:PySide2.QtWebEngineCore.QWebEngineUrlRequestInfo) -> None: ... + + +class QWebEngineUrlRequestJob(PySide2.QtCore.QObject): + NoError : QWebEngineUrlRequestJob = ... # 0x0 + UrlNotFound : QWebEngineUrlRequestJob = ... # 0x1 + UrlInvalid : QWebEngineUrlRequestJob = ... # 0x2 + RequestAborted : QWebEngineUrlRequestJob = ... # 0x3 + RequestDenied : QWebEngineUrlRequestJob = ... # 0x4 + RequestFailed : QWebEngineUrlRequestJob = ... # 0x5 + + class Error(object): + NoError : QWebEngineUrlRequestJob.Error = ... # 0x0 + UrlNotFound : QWebEngineUrlRequestJob.Error = ... # 0x1 + UrlInvalid : QWebEngineUrlRequestJob.Error = ... # 0x2 + RequestAborted : QWebEngineUrlRequestJob.Error = ... # 0x3 + RequestDenied : QWebEngineUrlRequestJob.Error = ... # 0x4 + RequestFailed : QWebEngineUrlRequestJob.Error = ... # 0x5 + def fail(self, error:PySide2.QtWebEngineCore.QWebEngineUrlRequestJob.Error) -> None: ... + def initiator(self) -> PySide2.QtCore.QUrl: ... + def redirect(self, url:PySide2.QtCore.QUrl) -> None: ... + def reply(self, contentType:PySide2.QtCore.QByteArray, device:PySide2.QtCore.QIODevice) -> None: ... + def requestHeaders(self) -> typing.Dict: ... + def requestMethod(self) -> PySide2.QtCore.QByteArray: ... + def requestUrl(self) -> PySide2.QtCore.QUrl: ... + + +class QWebEngineUrlScheme(Shiboken.Object): + PortUnspecified : QWebEngineUrlScheme = ... # -0x1 + SecureScheme : QWebEngineUrlScheme = ... # 0x1 + LocalScheme : QWebEngineUrlScheme = ... # 0x2 + LocalAccessAllowed : QWebEngineUrlScheme = ... # 0x4 + NoAccessAllowed : QWebEngineUrlScheme = ... # 0x8 + ServiceWorkersAllowed : QWebEngineUrlScheme = ... # 0x10 + ViewSourceAllowed : QWebEngineUrlScheme = ... # 0x20 + ContentSecurityPolicyIgnored: QWebEngineUrlScheme = ... # 0x40 + CorsEnabled : QWebEngineUrlScheme = ... # 0x80 + + class Flag(object): + SecureScheme : QWebEngineUrlScheme.Flag = ... # 0x1 + LocalScheme : QWebEngineUrlScheme.Flag = ... # 0x2 + LocalAccessAllowed : QWebEngineUrlScheme.Flag = ... # 0x4 + NoAccessAllowed : QWebEngineUrlScheme.Flag = ... # 0x8 + ServiceWorkersAllowed : QWebEngineUrlScheme.Flag = ... # 0x10 + ViewSourceAllowed : QWebEngineUrlScheme.Flag = ... # 0x20 + ContentSecurityPolicyIgnored: QWebEngineUrlScheme.Flag = ... # 0x40 + CorsEnabled : QWebEngineUrlScheme.Flag = ... # 0x80 + + class Flags(object): ... + + class SpecialPort(object): + PortUnspecified : QWebEngineUrlScheme.SpecialPort = ... # -0x1 + + class Syntax(object): + HostPortAndUserInformation: QWebEngineUrlScheme.Syntax = ... # 0x0 + HostAndPort : QWebEngineUrlScheme.Syntax = ... # 0x1 + Host : QWebEngineUrlScheme.Syntax = ... # 0x2 + Path : QWebEngineUrlScheme.Syntax = ... # 0x3 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, name:PySide2.QtCore.QByteArray) -> None: ... + @typing.overload + def __init__(self, that:PySide2.QtWebEngineCore.QWebEngineUrlScheme) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def defaultPort(self) -> int: ... + def flags(self) -> PySide2.QtWebEngineCore.QWebEngineUrlScheme.Flags: ... + def name(self) -> PySide2.QtCore.QByteArray: ... + @staticmethod + def registerScheme(scheme:PySide2.QtWebEngineCore.QWebEngineUrlScheme) -> None: ... + @staticmethod + def schemeByName(name:PySide2.QtCore.QByteArray) -> PySide2.QtWebEngineCore.QWebEngineUrlScheme: ... + def setDefaultPort(self, newValue:int) -> None: ... + def setFlags(self, newValue:PySide2.QtWebEngineCore.QWebEngineUrlScheme.Flags) -> None: ... + def setName(self, newValue:PySide2.QtCore.QByteArray) -> None: ... + def setSyntax(self, newValue:PySide2.QtWebEngineCore.QWebEngineUrlScheme.Syntax) -> None: ... + def syntax(self) -> PySide2.QtWebEngineCore.QWebEngineUrlScheme.Syntax: ... + + +class QWebEngineUrlSchemeHandler(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def requestStarted(self, arg__1:PySide2.QtWebEngineCore.QWebEngineUrlRequestJob) -> None: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtWebEngineProcess.exe b/venv/Lib/site-packages/PySide2/QtWebEngineProcess.exe new file mode 100644 index 0000000..d9e5183 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtWebEngineProcess.exe differ diff --git a/venv/Lib/site-packages/PySide2/QtWebEngineWidgets.pyd b/venv/Lib/site-packages/PySide2/QtWebEngineWidgets.pyd new file mode 100644 index 0000000..fd49ce6 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtWebEngineWidgets.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtWebEngineWidgets.pyi b/venv/Lib/site-packages/PySide2/QtWebEngineWidgets.pyi new file mode 100644 index 0000000..b4338be --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtWebEngineWidgets.pyi @@ -0,0 +1,917 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtWebEngineWidgets, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtWebEngineWidgets +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtGui +import PySide2.QtWidgets +import PySide2.QtPrintSupport +import PySide2.QtWebChannel +import PySide2.QtWebEngineCore +import PySide2.QtWebEngineWidgets + + +class QWebEngineCertificateError(Shiboken.Object): + CertificateKnownInterceptionBlocked: QWebEngineCertificateError = ... # -0xd9 + CertificateTransparencyRequired: QWebEngineCertificateError = ... # -0xd6 + CertificateValidityTooLong: QWebEngineCertificateError = ... # -0xd5 + CertificateNameConstraintViolation: QWebEngineCertificateError = ... # -0xd4 + CertificateWeakKey : QWebEngineCertificateError = ... # -0xd3 + CertificateNonUniqueName : QWebEngineCertificateError = ... # -0xd2 + CertificateWeakSignatureAlgorithm: QWebEngineCertificateError = ... # -0xd0 + CertificateInvalid : QWebEngineCertificateError = ... # -0xcf + CertificateRevoked : QWebEngineCertificateError = ... # -0xce + CertificateUnableToCheckRevocation: QWebEngineCertificateError = ... # -0xcd + CertificateNoRevocationMechanism: QWebEngineCertificateError = ... # -0xcc + CertificateContainsErrors: QWebEngineCertificateError = ... # -0xcb + CertificateAuthorityInvalid: QWebEngineCertificateError = ... # -0xca + CertificateDateInvalid : QWebEngineCertificateError = ... # -0xc9 + CertificateCommonNameInvalid: QWebEngineCertificateError = ... # -0xc8 + SslPinnedKeyNotInCertificateChain: QWebEngineCertificateError = ... # -0x96 + + class Error(object): + CertificateKnownInterceptionBlocked: QWebEngineCertificateError.Error = ... # -0xd9 + CertificateTransparencyRequired: QWebEngineCertificateError.Error = ... # -0xd6 + CertificateValidityTooLong: QWebEngineCertificateError.Error = ... # -0xd5 + CertificateNameConstraintViolation: QWebEngineCertificateError.Error = ... # -0xd4 + CertificateWeakKey : QWebEngineCertificateError.Error = ... # -0xd3 + CertificateNonUniqueName : QWebEngineCertificateError.Error = ... # -0xd2 + CertificateWeakSignatureAlgorithm: QWebEngineCertificateError.Error = ... # -0xd0 + CertificateInvalid : QWebEngineCertificateError.Error = ... # -0xcf + CertificateRevoked : QWebEngineCertificateError.Error = ... # -0xce + CertificateUnableToCheckRevocation: QWebEngineCertificateError.Error = ... # -0xcd + CertificateNoRevocationMechanism: QWebEngineCertificateError.Error = ... # -0xcc + CertificateContainsErrors: QWebEngineCertificateError.Error = ... # -0xcb + CertificateAuthorityInvalid: QWebEngineCertificateError.Error = ... # -0xca + CertificateDateInvalid : QWebEngineCertificateError.Error = ... # -0xc9 + CertificateCommonNameInvalid: QWebEngineCertificateError.Error = ... # -0xc8 + SslPinnedKeyNotInCertificateChain: QWebEngineCertificateError.Error = ... # -0x96 + + @typing.overload + def __init__(self, error:int, url:PySide2.QtCore.QUrl, overridable:bool, errorDescription:str) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtWebEngineWidgets.QWebEngineCertificateError) -> None: ... + + def answered(self) -> bool: ... + def certificateChain(self) -> typing.List: ... + def defer(self) -> None: ... + def deferred(self) -> bool: ... + def error(self) -> PySide2.QtWebEngineWidgets.QWebEngineCertificateError.Error: ... + def errorDescription(self) -> str: ... + def ignoreCertificateError(self) -> None: ... + def isOverridable(self) -> bool: ... + def rejectCertificate(self) -> None: ... + def url(self) -> PySide2.QtCore.QUrl: ... + + +class QWebEngineContextMenuData(Shiboken.Object): + MediaTypeNone : QWebEngineContextMenuData = ... # 0x0 + CanUndo : QWebEngineContextMenuData = ... # 0x1 + MediaInError : QWebEngineContextMenuData = ... # 0x1 + MediaTypeImage : QWebEngineContextMenuData = ... # 0x1 + CanRedo : QWebEngineContextMenuData = ... # 0x2 + MediaPaused : QWebEngineContextMenuData = ... # 0x2 + MediaTypeVideo : QWebEngineContextMenuData = ... # 0x2 + MediaTypeAudio : QWebEngineContextMenuData = ... # 0x3 + CanCut : QWebEngineContextMenuData = ... # 0x4 + MediaMuted : QWebEngineContextMenuData = ... # 0x4 + MediaTypeCanvas : QWebEngineContextMenuData = ... # 0x4 + MediaTypeFile : QWebEngineContextMenuData = ... # 0x5 + MediaTypePlugin : QWebEngineContextMenuData = ... # 0x6 + CanCopy : QWebEngineContextMenuData = ... # 0x8 + MediaLoop : QWebEngineContextMenuData = ... # 0x8 + CanPaste : QWebEngineContextMenuData = ... # 0x10 + MediaCanSave : QWebEngineContextMenuData = ... # 0x10 + CanDelete : QWebEngineContextMenuData = ... # 0x20 + MediaHasAudio : QWebEngineContextMenuData = ... # 0x20 + CanSelectAll : QWebEngineContextMenuData = ... # 0x40 + MediaCanToggleControls : QWebEngineContextMenuData = ... # 0x40 + CanTranslate : QWebEngineContextMenuData = ... # 0x80 + MediaControls : QWebEngineContextMenuData = ... # 0x80 + CanEditRichly : QWebEngineContextMenuData = ... # 0x100 + MediaCanPrint : QWebEngineContextMenuData = ... # 0x100 + MediaCanRotate : QWebEngineContextMenuData = ... # 0x200 + + class EditFlag(object): + CanUndo : QWebEngineContextMenuData.EditFlag = ... # 0x1 + CanRedo : QWebEngineContextMenuData.EditFlag = ... # 0x2 + CanCut : QWebEngineContextMenuData.EditFlag = ... # 0x4 + CanCopy : QWebEngineContextMenuData.EditFlag = ... # 0x8 + CanPaste : QWebEngineContextMenuData.EditFlag = ... # 0x10 + CanDelete : QWebEngineContextMenuData.EditFlag = ... # 0x20 + CanSelectAll : QWebEngineContextMenuData.EditFlag = ... # 0x40 + CanTranslate : QWebEngineContextMenuData.EditFlag = ... # 0x80 + CanEditRichly : QWebEngineContextMenuData.EditFlag = ... # 0x100 + + class EditFlags(object): ... + + class MediaFlag(object): + MediaInError : QWebEngineContextMenuData.MediaFlag = ... # 0x1 + MediaPaused : QWebEngineContextMenuData.MediaFlag = ... # 0x2 + MediaMuted : QWebEngineContextMenuData.MediaFlag = ... # 0x4 + MediaLoop : QWebEngineContextMenuData.MediaFlag = ... # 0x8 + MediaCanSave : QWebEngineContextMenuData.MediaFlag = ... # 0x10 + MediaHasAudio : QWebEngineContextMenuData.MediaFlag = ... # 0x20 + MediaCanToggleControls : QWebEngineContextMenuData.MediaFlag = ... # 0x40 + MediaControls : QWebEngineContextMenuData.MediaFlag = ... # 0x80 + MediaCanPrint : QWebEngineContextMenuData.MediaFlag = ... # 0x100 + MediaCanRotate : QWebEngineContextMenuData.MediaFlag = ... # 0x200 + + class MediaFlags(object): ... + + class MediaType(object): + MediaTypeNone : QWebEngineContextMenuData.MediaType = ... # 0x0 + MediaTypeImage : QWebEngineContextMenuData.MediaType = ... # 0x1 + MediaTypeVideo : QWebEngineContextMenuData.MediaType = ... # 0x2 + MediaTypeAudio : QWebEngineContextMenuData.MediaType = ... # 0x3 + MediaTypeCanvas : QWebEngineContextMenuData.MediaType = ... # 0x4 + MediaTypeFile : QWebEngineContextMenuData.MediaType = ... # 0x5 + MediaTypePlugin : QWebEngineContextMenuData.MediaType = ... # 0x6 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtWebEngineWidgets.QWebEngineContextMenuData) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def editFlags(self) -> PySide2.QtWebEngineWidgets.QWebEngineContextMenuData.EditFlags: ... + def isContentEditable(self) -> bool: ... + def isValid(self) -> bool: ... + def linkText(self) -> str: ... + def linkUrl(self) -> PySide2.QtCore.QUrl: ... + def mediaFlags(self) -> PySide2.QtWebEngineWidgets.QWebEngineContextMenuData.MediaFlags: ... + def mediaType(self) -> PySide2.QtWebEngineWidgets.QWebEngineContextMenuData.MediaType: ... + def mediaUrl(self) -> PySide2.QtCore.QUrl: ... + def misspelledWord(self) -> str: ... + def position(self) -> PySide2.QtCore.QPoint: ... + def selectedText(self) -> str: ... + def spellCheckerSuggestions(self) -> typing.List: ... + + +class QWebEngineDownloadItem(PySide2.QtCore.QObject): + UnknownSaveFormat : QWebEngineDownloadItem = ... # -0x1 + Attachment : QWebEngineDownloadItem = ... # 0x0 + DownloadRequested : QWebEngineDownloadItem = ... # 0x0 + NoReason : QWebEngineDownloadItem = ... # 0x0 + SingleHtmlSaveFormat : QWebEngineDownloadItem = ... # 0x0 + CompleteHtmlSaveFormat : QWebEngineDownloadItem = ... # 0x1 + DownloadAttribute : QWebEngineDownloadItem = ... # 0x1 + DownloadInProgress : QWebEngineDownloadItem = ... # 0x1 + FileFailed : QWebEngineDownloadItem = ... # 0x1 + DownloadCompleted : QWebEngineDownloadItem = ... # 0x2 + FileAccessDenied : QWebEngineDownloadItem = ... # 0x2 + MimeHtmlSaveFormat : QWebEngineDownloadItem = ... # 0x2 + UserRequested : QWebEngineDownloadItem = ... # 0x2 + DownloadCancelled : QWebEngineDownloadItem = ... # 0x3 + FileNoSpace : QWebEngineDownloadItem = ... # 0x3 + SavePage : QWebEngineDownloadItem = ... # 0x3 + DownloadInterrupted : QWebEngineDownloadItem = ... # 0x4 + FileNameTooLong : QWebEngineDownloadItem = ... # 0x5 + FileTooLarge : QWebEngineDownloadItem = ... # 0x6 + FileVirusInfected : QWebEngineDownloadItem = ... # 0x7 + FileTransientError : QWebEngineDownloadItem = ... # 0xa + FileBlocked : QWebEngineDownloadItem = ... # 0xb + FileSecurityCheckFailed : QWebEngineDownloadItem = ... # 0xc + FileTooShort : QWebEngineDownloadItem = ... # 0xd + FileHashMismatch : QWebEngineDownloadItem = ... # 0xe + NetworkFailed : QWebEngineDownloadItem = ... # 0x14 + NetworkTimeout : QWebEngineDownloadItem = ... # 0x15 + NetworkDisconnected : QWebEngineDownloadItem = ... # 0x16 + NetworkServerDown : QWebEngineDownloadItem = ... # 0x17 + NetworkInvalidRequest : QWebEngineDownloadItem = ... # 0x18 + ServerFailed : QWebEngineDownloadItem = ... # 0x1e + ServerBadContent : QWebEngineDownloadItem = ... # 0x21 + ServerUnauthorized : QWebEngineDownloadItem = ... # 0x22 + ServerCertProblem : QWebEngineDownloadItem = ... # 0x23 + ServerForbidden : QWebEngineDownloadItem = ... # 0x24 + ServerUnreachable : QWebEngineDownloadItem = ... # 0x25 + UserCanceled : QWebEngineDownloadItem = ... # 0x28 + + class DownloadInterruptReason(object): + NoReason : QWebEngineDownloadItem.DownloadInterruptReason = ... # 0x0 + FileFailed : QWebEngineDownloadItem.DownloadInterruptReason = ... # 0x1 + FileAccessDenied : QWebEngineDownloadItem.DownloadInterruptReason = ... # 0x2 + FileNoSpace : QWebEngineDownloadItem.DownloadInterruptReason = ... # 0x3 + FileNameTooLong : QWebEngineDownloadItem.DownloadInterruptReason = ... # 0x5 + FileTooLarge : QWebEngineDownloadItem.DownloadInterruptReason = ... # 0x6 + FileVirusInfected : QWebEngineDownloadItem.DownloadInterruptReason = ... # 0x7 + FileTransientError : QWebEngineDownloadItem.DownloadInterruptReason = ... # 0xa + FileBlocked : QWebEngineDownloadItem.DownloadInterruptReason = ... # 0xb + FileSecurityCheckFailed : QWebEngineDownloadItem.DownloadInterruptReason = ... # 0xc + FileTooShort : QWebEngineDownloadItem.DownloadInterruptReason = ... # 0xd + FileHashMismatch : QWebEngineDownloadItem.DownloadInterruptReason = ... # 0xe + NetworkFailed : QWebEngineDownloadItem.DownloadInterruptReason = ... # 0x14 + NetworkTimeout : QWebEngineDownloadItem.DownloadInterruptReason = ... # 0x15 + NetworkDisconnected : QWebEngineDownloadItem.DownloadInterruptReason = ... # 0x16 + NetworkServerDown : QWebEngineDownloadItem.DownloadInterruptReason = ... # 0x17 + NetworkInvalidRequest : QWebEngineDownloadItem.DownloadInterruptReason = ... # 0x18 + ServerFailed : QWebEngineDownloadItem.DownloadInterruptReason = ... # 0x1e + ServerBadContent : QWebEngineDownloadItem.DownloadInterruptReason = ... # 0x21 + ServerUnauthorized : QWebEngineDownloadItem.DownloadInterruptReason = ... # 0x22 + ServerCertProblem : QWebEngineDownloadItem.DownloadInterruptReason = ... # 0x23 + ServerForbidden : QWebEngineDownloadItem.DownloadInterruptReason = ... # 0x24 + ServerUnreachable : QWebEngineDownloadItem.DownloadInterruptReason = ... # 0x25 + UserCanceled : QWebEngineDownloadItem.DownloadInterruptReason = ... # 0x28 + + class DownloadState(object): + DownloadRequested : QWebEngineDownloadItem.DownloadState = ... # 0x0 + DownloadInProgress : QWebEngineDownloadItem.DownloadState = ... # 0x1 + DownloadCompleted : QWebEngineDownloadItem.DownloadState = ... # 0x2 + DownloadCancelled : QWebEngineDownloadItem.DownloadState = ... # 0x3 + DownloadInterrupted : QWebEngineDownloadItem.DownloadState = ... # 0x4 + + class DownloadType(object): + Attachment : QWebEngineDownloadItem.DownloadType = ... # 0x0 + DownloadAttribute : QWebEngineDownloadItem.DownloadType = ... # 0x1 + UserRequested : QWebEngineDownloadItem.DownloadType = ... # 0x2 + SavePage : QWebEngineDownloadItem.DownloadType = ... # 0x3 + + class SavePageFormat(object): + UnknownSaveFormat : QWebEngineDownloadItem.SavePageFormat = ... # -0x1 + SingleHtmlSaveFormat : QWebEngineDownloadItem.SavePageFormat = ... # 0x0 + CompleteHtmlSaveFormat : QWebEngineDownloadItem.SavePageFormat = ... # 0x1 + MimeHtmlSaveFormat : QWebEngineDownloadItem.SavePageFormat = ... # 0x2 + def accept(self) -> None: ... + def cancel(self) -> None: ... + def downloadDirectory(self) -> str: ... + def downloadFileName(self) -> str: ... + def id(self) -> int: ... + def interruptReason(self) -> PySide2.QtWebEngineWidgets.QWebEngineDownloadItem.DownloadInterruptReason: ... + def interruptReasonString(self) -> str: ... + def isFinished(self) -> bool: ... + def isPaused(self) -> bool: ... + def isSavePageDownload(self) -> bool: ... + def mimeType(self) -> str: ... + def page(self) -> PySide2.QtWebEngineWidgets.QWebEnginePage: ... + def path(self) -> str: ... + def pause(self) -> None: ... + def receivedBytes(self) -> int: ... + def resume(self) -> None: ... + def savePageFormat(self) -> PySide2.QtWebEngineWidgets.QWebEngineDownloadItem.SavePageFormat: ... + def setDownloadDirectory(self, directory:str) -> None: ... + def setDownloadFileName(self, fileName:str) -> None: ... + def setPath(self, path:str) -> None: ... + def setSavePageFormat(self, format:PySide2.QtWebEngineWidgets.QWebEngineDownloadItem.SavePageFormat) -> None: ... + def state(self) -> PySide2.QtWebEngineWidgets.QWebEngineDownloadItem.DownloadState: ... + def suggestedFileName(self) -> str: ... + def totalBytes(self) -> int: ... + def type(self) -> PySide2.QtWebEngineWidgets.QWebEngineDownloadItem.DownloadType: ... + def url(self) -> PySide2.QtCore.QUrl: ... + + +class QWebEngineFullScreenRequest(Shiboken.Object): + def accept(self) -> None: ... + def origin(self) -> PySide2.QtCore.QUrl: ... + def reject(self) -> None: ... + def toggleOn(self) -> bool: ... + + +class QWebEngineHistory(Shiboken.Object): + def __lshift__(self, stream:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __rshift__(self, stream:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def back(self) -> None: ... + def backItem(self) -> PySide2.QtWebEngineWidgets.QWebEngineHistoryItem: ... + def backItems(self, maxItems:int) -> typing.List: ... + def canGoBack(self) -> bool: ... + def canGoForward(self) -> bool: ... + def clear(self) -> None: ... + def count(self) -> int: ... + def currentItem(self) -> PySide2.QtWebEngineWidgets.QWebEngineHistoryItem: ... + def currentItemIndex(self) -> int: ... + def forward(self) -> None: ... + def forwardItem(self) -> PySide2.QtWebEngineWidgets.QWebEngineHistoryItem: ... + def forwardItems(self, maxItems:int) -> typing.List: ... + def goToItem(self, item:PySide2.QtWebEngineWidgets.QWebEngineHistoryItem) -> None: ... + def itemAt(self, i:int) -> PySide2.QtWebEngineWidgets.QWebEngineHistoryItem: ... + def items(self) -> typing.List: ... + + +class QWebEngineHistoryItem(Shiboken.Object): + + def __init__(self, other:PySide2.QtWebEngineWidgets.QWebEngineHistoryItem) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def iconUrl(self) -> PySide2.QtCore.QUrl: ... + def isValid(self) -> bool: ... + def lastVisited(self) -> PySide2.QtCore.QDateTime: ... + def originalUrl(self) -> PySide2.QtCore.QUrl: ... + def swap(self, other:PySide2.QtWebEngineWidgets.QWebEngineHistoryItem) -> None: ... + def title(self) -> str: ... + def url(self) -> PySide2.QtCore.QUrl: ... + + +class QWebEnginePage(PySide2.QtCore.QObject): + NoWebAction : QWebEnginePage = ... # -0x1 + Back : QWebEnginePage = ... # 0x0 + FileSelectOpen : QWebEnginePage = ... # 0x0 + InfoMessageLevel : QWebEnginePage = ... # 0x0 + NavigationTypeLinkClicked: QWebEnginePage = ... # 0x0 + NormalTerminationStatus : QWebEnginePage = ... # 0x0 + Notifications : QWebEnginePage = ... # 0x0 + PermissionUnknown : QWebEnginePage = ... # 0x0 + WebBrowserWindow : QWebEnginePage = ... # 0x0 + AbnormalTerminationStatus: QWebEnginePage = ... # 0x1 + FileSelectOpenMultiple : QWebEnginePage = ... # 0x1 + FindBackward : QWebEnginePage = ... # 0x1 + Forward : QWebEnginePage = ... # 0x1 + Geolocation : QWebEnginePage = ... # 0x1 + NavigationTypeTyped : QWebEnginePage = ... # 0x1 + PermissionGrantedByUser : QWebEnginePage = ... # 0x1 + WarningMessageLevel : QWebEnginePage = ... # 0x1 + WebBrowserTab : QWebEnginePage = ... # 0x1 + CrashedTerminationStatus : QWebEnginePage = ... # 0x2 + ErrorMessageLevel : QWebEnginePage = ... # 0x2 + FindCaseSensitively : QWebEnginePage = ... # 0x2 + MediaAudioCapture : QWebEnginePage = ... # 0x2 + NavigationTypeFormSubmitted: QWebEnginePage = ... # 0x2 + PermissionDeniedByUser : QWebEnginePage = ... # 0x2 + Stop : QWebEnginePage = ... # 0x2 + WebDialog : QWebEnginePage = ... # 0x2 + KilledTerminationStatus : QWebEnginePage = ... # 0x3 + MediaVideoCapture : QWebEnginePage = ... # 0x3 + NavigationTypeBackForward: QWebEnginePage = ... # 0x3 + Reload : QWebEnginePage = ... # 0x3 + WebBrowserBackgroundTab : QWebEnginePage = ... # 0x3 + Cut : QWebEnginePage = ... # 0x4 + MediaAudioVideoCapture : QWebEnginePage = ... # 0x4 + NavigationTypeReload : QWebEnginePage = ... # 0x4 + Copy : QWebEnginePage = ... # 0x5 + MouseLock : QWebEnginePage = ... # 0x5 + NavigationTypeOther : QWebEnginePage = ... # 0x5 + DesktopVideoCapture : QWebEnginePage = ... # 0x6 + NavigationTypeRedirect : QWebEnginePage = ... # 0x6 + Paste : QWebEnginePage = ... # 0x6 + DesktopAudioVideoCapture : QWebEnginePage = ... # 0x7 + Undo : QWebEnginePage = ... # 0x7 + Redo : QWebEnginePage = ... # 0x8 + SelectAll : QWebEnginePage = ... # 0x9 + ReloadAndBypassCache : QWebEnginePage = ... # 0xa + PasteAndMatchStyle : QWebEnginePage = ... # 0xb + OpenLinkInThisWindow : QWebEnginePage = ... # 0xc + OpenLinkInNewWindow : QWebEnginePage = ... # 0xd + OpenLinkInNewTab : QWebEnginePage = ... # 0xe + CopyLinkToClipboard : QWebEnginePage = ... # 0xf + DownloadLinkToDisk : QWebEnginePage = ... # 0x10 + CopyImageToClipboard : QWebEnginePage = ... # 0x11 + CopyImageUrlToClipboard : QWebEnginePage = ... # 0x12 + DownloadImageToDisk : QWebEnginePage = ... # 0x13 + CopyMediaUrlToClipboard : QWebEnginePage = ... # 0x14 + ToggleMediaControls : QWebEnginePage = ... # 0x15 + ToggleMediaLoop : QWebEnginePage = ... # 0x16 + ToggleMediaPlayPause : QWebEnginePage = ... # 0x17 + ToggleMediaMute : QWebEnginePage = ... # 0x18 + DownloadMediaToDisk : QWebEnginePage = ... # 0x19 + InspectElement : QWebEnginePage = ... # 0x1a + ExitFullScreen : QWebEnginePage = ... # 0x1b + RequestClose : QWebEnginePage = ... # 0x1c + Unselect : QWebEnginePage = ... # 0x1d + SavePage : QWebEnginePage = ... # 0x1e + OpenLinkInNewBackgroundTab: QWebEnginePage = ... # 0x1f + ViewSource : QWebEnginePage = ... # 0x20 + ToggleBold : QWebEnginePage = ... # 0x21 + ToggleItalic : QWebEnginePage = ... # 0x22 + ToggleUnderline : QWebEnginePage = ... # 0x23 + ToggleStrikethrough : QWebEnginePage = ... # 0x24 + AlignLeft : QWebEnginePage = ... # 0x25 + AlignCenter : QWebEnginePage = ... # 0x26 + AlignRight : QWebEnginePage = ... # 0x27 + AlignJustified : QWebEnginePage = ... # 0x28 + Indent : QWebEnginePage = ... # 0x29 + Outdent : QWebEnginePage = ... # 0x2a + InsertOrderedList : QWebEnginePage = ... # 0x2b + InsertUnorderedList : QWebEnginePage = ... # 0x2c + WebActionCount : QWebEnginePage = ... # 0x2d + + class Feature(object): + Notifications : QWebEnginePage.Feature = ... # 0x0 + Geolocation : QWebEnginePage.Feature = ... # 0x1 + MediaAudioCapture : QWebEnginePage.Feature = ... # 0x2 + MediaVideoCapture : QWebEnginePage.Feature = ... # 0x3 + MediaAudioVideoCapture : QWebEnginePage.Feature = ... # 0x4 + MouseLock : QWebEnginePage.Feature = ... # 0x5 + DesktopVideoCapture : QWebEnginePage.Feature = ... # 0x6 + DesktopAudioVideoCapture : QWebEnginePage.Feature = ... # 0x7 + + class FileSelectionMode(object): + FileSelectOpen : QWebEnginePage.FileSelectionMode = ... # 0x0 + FileSelectOpenMultiple : QWebEnginePage.FileSelectionMode = ... # 0x1 + + class FindFlag(object): + FindBackward : QWebEnginePage.FindFlag = ... # 0x1 + FindCaseSensitively : QWebEnginePage.FindFlag = ... # 0x2 + + class FindFlags(object): ... + + class JavaScriptConsoleMessageLevel(object): + InfoMessageLevel : QWebEnginePage.JavaScriptConsoleMessageLevel = ... # 0x0 + WarningMessageLevel : QWebEnginePage.JavaScriptConsoleMessageLevel = ... # 0x1 + ErrorMessageLevel : QWebEnginePage.JavaScriptConsoleMessageLevel = ... # 0x2 + + class LifecycleState(object): + Active : QWebEnginePage.LifecycleState = ... # 0x0 + Frozen : QWebEnginePage.LifecycleState = ... # 0x1 + Discarded : QWebEnginePage.LifecycleState = ... # 0x2 + + class NavigationType(object): + NavigationTypeLinkClicked: QWebEnginePage.NavigationType = ... # 0x0 + NavigationTypeTyped : QWebEnginePage.NavigationType = ... # 0x1 + NavigationTypeFormSubmitted: QWebEnginePage.NavigationType = ... # 0x2 + NavigationTypeBackForward: QWebEnginePage.NavigationType = ... # 0x3 + NavigationTypeReload : QWebEnginePage.NavigationType = ... # 0x4 + NavigationTypeOther : QWebEnginePage.NavigationType = ... # 0x5 + NavigationTypeRedirect : QWebEnginePage.NavigationType = ... # 0x6 + + class PermissionPolicy(object): + PermissionUnknown : QWebEnginePage.PermissionPolicy = ... # 0x0 + PermissionGrantedByUser : QWebEnginePage.PermissionPolicy = ... # 0x1 + PermissionDeniedByUser : QWebEnginePage.PermissionPolicy = ... # 0x2 + + class RenderProcessTerminationStatus(object): + NormalTerminationStatus : QWebEnginePage.RenderProcessTerminationStatus = ... # 0x0 + AbnormalTerminationStatus: QWebEnginePage.RenderProcessTerminationStatus = ... # 0x1 + CrashedTerminationStatus : QWebEnginePage.RenderProcessTerminationStatus = ... # 0x2 + KilledTerminationStatus : QWebEnginePage.RenderProcessTerminationStatus = ... # 0x3 + + class WebAction(object): + NoWebAction : QWebEnginePage.WebAction = ... # -0x1 + Back : QWebEnginePage.WebAction = ... # 0x0 + Forward : QWebEnginePage.WebAction = ... # 0x1 + Stop : QWebEnginePage.WebAction = ... # 0x2 + Reload : QWebEnginePage.WebAction = ... # 0x3 + Cut : QWebEnginePage.WebAction = ... # 0x4 + Copy : QWebEnginePage.WebAction = ... # 0x5 + Paste : QWebEnginePage.WebAction = ... # 0x6 + Undo : QWebEnginePage.WebAction = ... # 0x7 + Redo : QWebEnginePage.WebAction = ... # 0x8 + SelectAll : QWebEnginePage.WebAction = ... # 0x9 + ReloadAndBypassCache : QWebEnginePage.WebAction = ... # 0xa + PasteAndMatchStyle : QWebEnginePage.WebAction = ... # 0xb + OpenLinkInThisWindow : QWebEnginePage.WebAction = ... # 0xc + OpenLinkInNewWindow : QWebEnginePage.WebAction = ... # 0xd + OpenLinkInNewTab : QWebEnginePage.WebAction = ... # 0xe + CopyLinkToClipboard : QWebEnginePage.WebAction = ... # 0xf + DownloadLinkToDisk : QWebEnginePage.WebAction = ... # 0x10 + CopyImageToClipboard : QWebEnginePage.WebAction = ... # 0x11 + CopyImageUrlToClipboard : QWebEnginePage.WebAction = ... # 0x12 + DownloadImageToDisk : QWebEnginePage.WebAction = ... # 0x13 + CopyMediaUrlToClipboard : QWebEnginePage.WebAction = ... # 0x14 + ToggleMediaControls : QWebEnginePage.WebAction = ... # 0x15 + ToggleMediaLoop : QWebEnginePage.WebAction = ... # 0x16 + ToggleMediaPlayPause : QWebEnginePage.WebAction = ... # 0x17 + ToggleMediaMute : QWebEnginePage.WebAction = ... # 0x18 + DownloadMediaToDisk : QWebEnginePage.WebAction = ... # 0x19 + InspectElement : QWebEnginePage.WebAction = ... # 0x1a + ExitFullScreen : QWebEnginePage.WebAction = ... # 0x1b + RequestClose : QWebEnginePage.WebAction = ... # 0x1c + Unselect : QWebEnginePage.WebAction = ... # 0x1d + SavePage : QWebEnginePage.WebAction = ... # 0x1e + OpenLinkInNewBackgroundTab: QWebEnginePage.WebAction = ... # 0x1f + ViewSource : QWebEnginePage.WebAction = ... # 0x20 + ToggleBold : QWebEnginePage.WebAction = ... # 0x21 + ToggleItalic : QWebEnginePage.WebAction = ... # 0x22 + ToggleUnderline : QWebEnginePage.WebAction = ... # 0x23 + ToggleStrikethrough : QWebEnginePage.WebAction = ... # 0x24 + AlignLeft : QWebEnginePage.WebAction = ... # 0x25 + AlignCenter : QWebEnginePage.WebAction = ... # 0x26 + AlignRight : QWebEnginePage.WebAction = ... # 0x27 + AlignJustified : QWebEnginePage.WebAction = ... # 0x28 + Indent : QWebEnginePage.WebAction = ... # 0x29 + Outdent : QWebEnginePage.WebAction = ... # 0x2a + InsertOrderedList : QWebEnginePage.WebAction = ... # 0x2b + InsertUnorderedList : QWebEnginePage.WebAction = ... # 0x2c + WebActionCount : QWebEnginePage.WebAction = ... # 0x2d + + class WebWindowType(object): + WebBrowserWindow : QWebEnginePage.WebWindowType = ... # 0x0 + WebBrowserTab : QWebEnginePage.WebWindowType = ... # 0x1 + WebDialog : QWebEnginePage.WebWindowType = ... # 0x2 + WebBrowserBackgroundTab : QWebEnginePage.WebWindowType = ... # 0x3 + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, profile:PySide2.QtWebEngineWidgets.QWebEngineProfile, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def acceptNavigationRequest(self, url:PySide2.QtCore.QUrl, type:PySide2.QtWebEngineWidgets.QWebEnginePage.NavigationType, isMainFrame:bool) -> bool: ... + def action(self, action:PySide2.QtWebEngineWidgets.QWebEnginePage.WebAction) -> PySide2.QtWidgets.QAction: ... + def backgroundColor(self) -> PySide2.QtGui.QColor: ... + def certificateError(self, certificateError:PySide2.QtWebEngineWidgets.QWebEngineCertificateError) -> bool: ... + def chooseFiles(self, mode:PySide2.QtWebEngineWidgets.QWebEnginePage.FileSelectionMode, oldFiles:typing.Sequence, acceptedMimeTypes:typing.Sequence) -> typing.List: ... + def contentsSize(self) -> PySide2.QtCore.QSizeF: ... + def contextMenuData(self) -> PySide2.QtWebEngineWidgets.QWebEngineContextMenuData: ... + def createStandardContextMenu(self) -> PySide2.QtWidgets.QMenu: ... + def createWindow(self, type:PySide2.QtWebEngineWidgets.QWebEnginePage.WebWindowType) -> PySide2.QtWebEngineWidgets.QWebEnginePage: ... + def devToolsPage(self) -> PySide2.QtWebEngineWidgets.QWebEnginePage: ... + def download(self, url:PySide2.QtCore.QUrl, filename:str=...) -> None: ... + def event(self, arg__1:PySide2.QtCore.QEvent) -> bool: ... + @typing.overload + def findText(self, arg__1:str, arg__2:PySide2.QtWebEngineWidgets.QWebEnginePage.FindFlags, arg__3:object) -> None: ... + @typing.overload + def findText(self, subString:str, options:PySide2.QtWebEngineWidgets.QWebEnginePage.FindFlags=...) -> None: ... + def hasSelection(self) -> bool: ... + def history(self) -> PySide2.QtWebEngineWidgets.QWebEngineHistory: ... + def icon(self) -> PySide2.QtGui.QIcon: ... + def iconUrl(self) -> PySide2.QtCore.QUrl: ... + def inspectedPage(self) -> PySide2.QtWebEngineWidgets.QWebEnginePage: ... + def isAudioMuted(self) -> bool: ... + def isVisible(self) -> bool: ... + def javaScriptAlert(self, securityOrigin:PySide2.QtCore.QUrl, msg:str) -> None: ... + def javaScriptConfirm(self, securityOrigin:PySide2.QtCore.QUrl, msg:str) -> bool: ... + def javaScriptConsoleMessage(self, level:PySide2.QtWebEngineWidgets.QWebEnginePage.JavaScriptConsoleMessageLevel, message:str, lineNumber:int, sourceID:str) -> None: ... + def javaScriptPrompt(self, securityOrigin:PySide2.QtCore.QUrl, msg:str, defaultValue:str) -> typing.Tuple: ... + def lifecycleState(self) -> PySide2.QtWebEngineWidgets.QWebEnginePage.LifecycleState: ... + @typing.overload + def load(self, request:PySide2.QtWebEngineCore.QWebEngineHttpRequest) -> None: ... + @typing.overload + def load(self, url:PySide2.QtCore.QUrl) -> None: ... + def print(self, arg__1:PySide2.QtPrintSupport.QPrinter, arg__2:object) -> None: ... + @typing.overload + def printToPdf(self, arg__1:object, arg__2:PySide2.QtGui.QPageLayout) -> None: ... + @typing.overload + def printToPdf(self, filePath:str, layout:PySide2.QtGui.QPageLayout=...) -> None: ... + def profile(self) -> PySide2.QtWebEngineWidgets.QWebEngineProfile: ... + def recentlyAudible(self) -> bool: ... + def recommendedState(self) -> PySide2.QtWebEngineWidgets.QWebEnginePage.LifecycleState: ... + def renderProcessPid(self) -> int: ... + def replaceMisspelledWord(self, replacement:str) -> None: ... + def requestedUrl(self) -> PySide2.QtCore.QUrl: ... + @typing.overload + def runJavaScript(self, arg__1:str, arg__2:int, arg__3:object) -> None: ... + @typing.overload + def runJavaScript(self, scriptSource:str) -> None: ... + @typing.overload + def runJavaScript(self, scriptSource:str, worldId:int) -> None: ... + def save(self, filePath:str, format:PySide2.QtWebEngineWidgets.QWebEngineDownloadItem.SavePageFormat=...) -> None: ... + def scripts(self) -> PySide2.QtWebEngineWidgets.QWebEngineScriptCollection: ... + def scrollPosition(self) -> PySide2.QtCore.QPointF: ... + def selectedText(self) -> str: ... + def setAudioMuted(self, muted:bool) -> None: ... + def setBackgroundColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setContent(self, data:PySide2.QtCore.QByteArray, mimeType:str=..., baseUrl:PySide2.QtCore.QUrl=...) -> None: ... + def setDevToolsPage(self, page:PySide2.QtWebEngineWidgets.QWebEnginePage) -> None: ... + def setFeaturePermission(self, securityOrigin:PySide2.QtCore.QUrl, feature:PySide2.QtWebEngineWidgets.QWebEnginePage.Feature, policy:PySide2.QtWebEngineWidgets.QWebEnginePage.PermissionPolicy) -> None: ... + def setHtml(self, html:str, baseUrl:PySide2.QtCore.QUrl=...) -> None: ... + def setInspectedPage(self, page:PySide2.QtWebEngineWidgets.QWebEnginePage) -> None: ... + def setLifecycleState(self, state:PySide2.QtWebEngineWidgets.QWebEnginePage.LifecycleState) -> None: ... + def setUrl(self, url:PySide2.QtCore.QUrl) -> None: ... + def setUrlRequestInterceptor(self, interceptor:PySide2.QtWebEngineCore.QWebEngineUrlRequestInterceptor) -> None: ... + def setView(self, view:PySide2.QtWidgets.QWidget) -> None: ... + def setVisible(self, visible:bool) -> None: ... + @typing.overload + def setWebChannel(self, arg__1:PySide2.QtWebChannel.QWebChannel) -> None: ... + @typing.overload + def setWebChannel(self, arg__1:PySide2.QtWebChannel.QWebChannel, worldId:int) -> None: ... + def setZoomFactor(self, factor:float) -> None: ... + def settings(self) -> PySide2.QtWebEngineWidgets.QWebEngineSettings: ... + def title(self) -> str: ... + def toHtml(self, arg__1:object) -> None: ... + def toPlainText(self, arg__1:object) -> None: ... + def triggerAction(self, action:PySide2.QtWebEngineWidgets.QWebEnginePage.WebAction, checked:bool=...) -> None: ... + def url(self) -> PySide2.QtCore.QUrl: ... + def view(self) -> PySide2.QtWidgets.QWidget: ... + def webChannel(self) -> PySide2.QtWebChannel.QWebChannel: ... + def zoomFactor(self) -> float: ... + + +class QWebEngineProfile(PySide2.QtCore.QObject): + MemoryHttpCache : QWebEngineProfile = ... # 0x0 + NoPersistentCookies : QWebEngineProfile = ... # 0x0 + AllowPersistentCookies : QWebEngineProfile = ... # 0x1 + DiskHttpCache : QWebEngineProfile = ... # 0x1 + ForcePersistentCookies : QWebEngineProfile = ... # 0x2 + NoCache : QWebEngineProfile = ... # 0x2 + + class HttpCacheType(object): + MemoryHttpCache : QWebEngineProfile.HttpCacheType = ... # 0x0 + DiskHttpCache : QWebEngineProfile.HttpCacheType = ... # 0x1 + NoCache : QWebEngineProfile.HttpCacheType = ... # 0x2 + + class PersistentCookiesPolicy(object): + NoPersistentCookies : QWebEngineProfile.PersistentCookiesPolicy = ... # 0x0 + AllowPersistentCookies : QWebEngineProfile.PersistentCookiesPolicy = ... # 0x1 + ForcePersistentCookies : QWebEngineProfile.PersistentCookiesPolicy = ... # 0x2 + + @typing.overload + def __init__(self, name:str, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def cachePath(self) -> str: ... + def clearAllVisitedLinks(self) -> None: ... + def clearHttpCache(self) -> None: ... + def clearVisitedLinks(self, urls:typing.Sequence) -> None: ... + def cookieStore(self) -> PySide2.QtWebEngineCore.QWebEngineCookieStore: ... + @staticmethod + def defaultProfile() -> PySide2.QtWebEngineWidgets.QWebEngineProfile: ... + def downloadPath(self) -> str: ... + def httpAcceptLanguage(self) -> str: ... + def httpCacheMaximumSize(self) -> int: ... + def httpCacheType(self) -> PySide2.QtWebEngineWidgets.QWebEngineProfile.HttpCacheType: ... + def httpUserAgent(self) -> str: ... + def installUrlSchemeHandler(self, scheme:PySide2.QtCore.QByteArray, arg__2:PySide2.QtWebEngineCore.QWebEngineUrlSchemeHandler) -> None: ... + def isOffTheRecord(self) -> bool: ... + def isSpellCheckEnabled(self) -> bool: ... + def isUsedForGlobalCertificateVerification(self) -> bool: ... + def persistentCookiesPolicy(self) -> PySide2.QtWebEngineWidgets.QWebEngineProfile.PersistentCookiesPolicy: ... + def persistentStoragePath(self) -> str: ... + def removeAllUrlSchemeHandlers(self) -> None: ... + def removeUrlScheme(self, scheme:PySide2.QtCore.QByteArray) -> None: ... + def removeUrlSchemeHandler(self, arg__1:PySide2.QtWebEngineCore.QWebEngineUrlSchemeHandler) -> None: ... + def scripts(self) -> PySide2.QtWebEngineWidgets.QWebEngineScriptCollection: ... + def setCachePath(self, path:str) -> None: ... + def setDownloadPath(self, path:str) -> None: ... + def setHttpAcceptLanguage(self, httpAcceptLanguage:str) -> None: ... + def setHttpCacheMaximumSize(self, maxSize:int) -> None: ... + def setHttpCacheType(self, arg__1:PySide2.QtWebEngineWidgets.QWebEngineProfile.HttpCacheType) -> None: ... + def setHttpUserAgent(self, userAgent:str) -> None: ... + def setPersistentCookiesPolicy(self, arg__1:PySide2.QtWebEngineWidgets.QWebEngineProfile.PersistentCookiesPolicy) -> None: ... + def setPersistentStoragePath(self, path:str) -> None: ... + def setRequestInterceptor(self, interceptor:PySide2.QtWebEngineCore.QWebEngineUrlRequestInterceptor) -> None: ... + def setSpellCheckEnabled(self, enabled:bool) -> None: ... + def setSpellCheckLanguages(self, languages:typing.Sequence) -> None: ... + def setUrlRequestInterceptor(self, interceptor:PySide2.QtWebEngineCore.QWebEngineUrlRequestInterceptor) -> None: ... + def setUseForGlobalCertificateVerification(self, enabled:bool=...) -> None: ... + def settings(self) -> PySide2.QtWebEngineWidgets.QWebEngineSettings: ... + def spellCheckLanguages(self) -> typing.List: ... + def storageName(self) -> str: ... + def urlSchemeHandler(self, arg__1:PySide2.QtCore.QByteArray) -> PySide2.QtWebEngineCore.QWebEngineUrlSchemeHandler: ... + def visitedLinksContainsUrl(self, url:PySide2.QtCore.QUrl) -> bool: ... + + +class QWebEngineScript(Shiboken.Object): + Deferred : QWebEngineScript = ... # 0x0 + MainWorld : QWebEngineScript = ... # 0x0 + ApplicationWorld : QWebEngineScript = ... # 0x1 + DocumentReady : QWebEngineScript = ... # 0x1 + DocumentCreation : QWebEngineScript = ... # 0x2 + UserWorld : QWebEngineScript = ... # 0x2 + + class InjectionPoint(object): + Deferred : QWebEngineScript.InjectionPoint = ... # 0x0 + DocumentReady : QWebEngineScript.InjectionPoint = ... # 0x1 + DocumentCreation : QWebEngineScript.InjectionPoint = ... # 0x2 + + class ScriptWorldId(object): + MainWorld : QWebEngineScript.ScriptWorldId = ... # 0x0 + ApplicationWorld : QWebEngineScript.ScriptWorldId = ... # 0x1 + UserWorld : QWebEngineScript.ScriptWorldId = ... # 0x2 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtWebEngineWidgets.QWebEngineScript) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def injectionPoint(self) -> PySide2.QtWebEngineWidgets.QWebEngineScript.InjectionPoint: ... + def isNull(self) -> bool: ... + def name(self) -> str: ... + def runsOnSubFrames(self) -> bool: ... + def setInjectionPoint(self, arg__1:PySide2.QtWebEngineWidgets.QWebEngineScript.InjectionPoint) -> None: ... + def setName(self, arg__1:str) -> None: ... + def setRunsOnSubFrames(self, on:bool) -> None: ... + def setSourceCode(self, arg__1:str) -> None: ... + def setWorldId(self, arg__1:int) -> None: ... + def sourceCode(self) -> str: ... + def swap(self, other:PySide2.QtWebEngineWidgets.QWebEngineScript) -> None: ... + def worldId(self) -> int: ... + + +class QWebEngineScriptCollection(Shiboken.Object): + def clear(self) -> None: ... + def contains(self, value:PySide2.QtWebEngineWidgets.QWebEngineScript) -> bool: ... + def count(self) -> int: ... + def findScript(self, name:str) -> PySide2.QtWebEngineWidgets.QWebEngineScript: ... + def findScripts(self, name:str) -> typing.List: ... + @typing.overload + def insert(self, arg__1:PySide2.QtWebEngineWidgets.QWebEngineScript) -> None: ... + @typing.overload + def insert(self, list:typing.Sequence) -> None: ... + def isEmpty(self) -> bool: ... + def remove(self, arg__1:PySide2.QtWebEngineWidgets.QWebEngineScript) -> bool: ... + def size(self) -> int: ... + def toList(self) -> typing.List: ... + + +class QWebEngineSettings(Shiboken.Object): + AutoLoadImages : QWebEngineSettings = ... # 0x0 + MinimumFontSize : QWebEngineSettings = ... # 0x0 + StandardFont : QWebEngineSettings = ... # 0x0 + DisallowUnknownUrlSchemes: QWebEngineSettings = ... # 0x1 + FixedFont : QWebEngineSettings = ... # 0x1 + JavascriptEnabled : QWebEngineSettings = ... # 0x1 + MinimumLogicalFontSize : QWebEngineSettings = ... # 0x1 + AllowUnknownUrlSchemesFromUserInteraction: QWebEngineSettings = ... # 0x2 + DefaultFontSize : QWebEngineSettings = ... # 0x2 + JavascriptCanOpenWindows : QWebEngineSettings = ... # 0x2 + SerifFont : QWebEngineSettings = ... # 0x2 + AllowAllUnknownUrlSchemes: QWebEngineSettings = ... # 0x3 + DefaultFixedFontSize : QWebEngineSettings = ... # 0x3 + JavascriptCanAccessClipboard: QWebEngineSettings = ... # 0x3 + SansSerifFont : QWebEngineSettings = ... # 0x3 + CursiveFont : QWebEngineSettings = ... # 0x4 + LinksIncludedInFocusChain: QWebEngineSettings = ... # 0x4 + FantasyFont : QWebEngineSettings = ... # 0x5 + LocalStorageEnabled : QWebEngineSettings = ... # 0x5 + LocalContentCanAccessRemoteUrls: QWebEngineSettings = ... # 0x6 + PictographFont : QWebEngineSettings = ... # 0x6 + XSSAuditingEnabled : QWebEngineSettings = ... # 0x7 + SpatialNavigationEnabled : QWebEngineSettings = ... # 0x8 + LocalContentCanAccessFileUrls: QWebEngineSettings = ... # 0x9 + HyperlinkAuditingEnabled : QWebEngineSettings = ... # 0xa + ScrollAnimatorEnabled : QWebEngineSettings = ... # 0xb + ErrorPageEnabled : QWebEngineSettings = ... # 0xc + PluginsEnabled : QWebEngineSettings = ... # 0xd + FullScreenSupportEnabled : QWebEngineSettings = ... # 0xe + ScreenCaptureEnabled : QWebEngineSettings = ... # 0xf + WebGLEnabled : QWebEngineSettings = ... # 0x10 + Accelerated2dCanvasEnabled: QWebEngineSettings = ... # 0x11 + AutoLoadIconsForPage : QWebEngineSettings = ... # 0x12 + TouchIconsEnabled : QWebEngineSettings = ... # 0x13 + FocusOnNavigationEnabled : QWebEngineSettings = ... # 0x14 + PrintElementBackgrounds : QWebEngineSettings = ... # 0x15 + AllowRunningInsecureContent: QWebEngineSettings = ... # 0x16 + AllowGeolocationOnInsecureOrigins: QWebEngineSettings = ... # 0x17 + AllowWindowActivationFromJavaScript: QWebEngineSettings = ... # 0x18 + ShowScrollBars : QWebEngineSettings = ... # 0x19 + PlaybackRequiresUserGesture: QWebEngineSettings = ... # 0x1a + WebRTCPublicInterfacesOnly: QWebEngineSettings = ... # 0x1b + JavascriptCanPaste : QWebEngineSettings = ... # 0x1c + DnsPrefetchEnabled : QWebEngineSettings = ... # 0x1d + PdfViewerEnabled : QWebEngineSettings = ... # 0x1e + + class FontFamily(object): + StandardFont : QWebEngineSettings.FontFamily = ... # 0x0 + FixedFont : QWebEngineSettings.FontFamily = ... # 0x1 + SerifFont : QWebEngineSettings.FontFamily = ... # 0x2 + SansSerifFont : QWebEngineSettings.FontFamily = ... # 0x3 + CursiveFont : QWebEngineSettings.FontFamily = ... # 0x4 + FantasyFont : QWebEngineSettings.FontFamily = ... # 0x5 + PictographFont : QWebEngineSettings.FontFamily = ... # 0x6 + + class FontSize(object): + MinimumFontSize : QWebEngineSettings.FontSize = ... # 0x0 + MinimumLogicalFontSize : QWebEngineSettings.FontSize = ... # 0x1 + DefaultFontSize : QWebEngineSettings.FontSize = ... # 0x2 + DefaultFixedFontSize : QWebEngineSettings.FontSize = ... # 0x3 + + class UnknownUrlSchemePolicy(object): + DisallowUnknownUrlSchemes: QWebEngineSettings.UnknownUrlSchemePolicy = ... # 0x1 + AllowUnknownUrlSchemesFromUserInteraction: QWebEngineSettings.UnknownUrlSchemePolicy = ... # 0x2 + AllowAllUnknownUrlSchemes: QWebEngineSettings.UnknownUrlSchemePolicy = ... # 0x3 + + class WebAttribute(object): + AutoLoadImages : QWebEngineSettings.WebAttribute = ... # 0x0 + JavascriptEnabled : QWebEngineSettings.WebAttribute = ... # 0x1 + JavascriptCanOpenWindows : QWebEngineSettings.WebAttribute = ... # 0x2 + JavascriptCanAccessClipboard: QWebEngineSettings.WebAttribute = ... # 0x3 + LinksIncludedInFocusChain: QWebEngineSettings.WebAttribute = ... # 0x4 + LocalStorageEnabled : QWebEngineSettings.WebAttribute = ... # 0x5 + LocalContentCanAccessRemoteUrls: QWebEngineSettings.WebAttribute = ... # 0x6 + XSSAuditingEnabled : QWebEngineSettings.WebAttribute = ... # 0x7 + SpatialNavigationEnabled : QWebEngineSettings.WebAttribute = ... # 0x8 + LocalContentCanAccessFileUrls: QWebEngineSettings.WebAttribute = ... # 0x9 + HyperlinkAuditingEnabled : QWebEngineSettings.WebAttribute = ... # 0xa + ScrollAnimatorEnabled : QWebEngineSettings.WebAttribute = ... # 0xb + ErrorPageEnabled : QWebEngineSettings.WebAttribute = ... # 0xc + PluginsEnabled : QWebEngineSettings.WebAttribute = ... # 0xd + FullScreenSupportEnabled : QWebEngineSettings.WebAttribute = ... # 0xe + ScreenCaptureEnabled : QWebEngineSettings.WebAttribute = ... # 0xf + WebGLEnabled : QWebEngineSettings.WebAttribute = ... # 0x10 + Accelerated2dCanvasEnabled: QWebEngineSettings.WebAttribute = ... # 0x11 + AutoLoadIconsForPage : QWebEngineSettings.WebAttribute = ... # 0x12 + TouchIconsEnabled : QWebEngineSettings.WebAttribute = ... # 0x13 + FocusOnNavigationEnabled : QWebEngineSettings.WebAttribute = ... # 0x14 + PrintElementBackgrounds : QWebEngineSettings.WebAttribute = ... # 0x15 + AllowRunningInsecureContent: QWebEngineSettings.WebAttribute = ... # 0x16 + AllowGeolocationOnInsecureOrigins: QWebEngineSettings.WebAttribute = ... # 0x17 + AllowWindowActivationFromJavaScript: QWebEngineSettings.WebAttribute = ... # 0x18 + ShowScrollBars : QWebEngineSettings.WebAttribute = ... # 0x19 + PlaybackRequiresUserGesture: QWebEngineSettings.WebAttribute = ... # 0x1a + WebRTCPublicInterfacesOnly: QWebEngineSettings.WebAttribute = ... # 0x1b + JavascriptCanPaste : QWebEngineSettings.WebAttribute = ... # 0x1c + DnsPrefetchEnabled : QWebEngineSettings.WebAttribute = ... # 0x1d + PdfViewerEnabled : QWebEngineSettings.WebAttribute = ... # 0x1e + @staticmethod + def defaultSettings() -> PySide2.QtWebEngineWidgets.QWebEngineSettings: ... + def defaultTextEncoding(self) -> str: ... + def fontFamily(self, which:PySide2.QtWebEngineWidgets.QWebEngineSettings.FontFamily) -> str: ... + def fontSize(self, type:PySide2.QtWebEngineWidgets.QWebEngineSettings.FontSize) -> int: ... + @staticmethod + def globalSettings() -> PySide2.QtWebEngineWidgets.QWebEngineSettings: ... + def resetAttribute(self, attr:PySide2.QtWebEngineWidgets.QWebEngineSettings.WebAttribute) -> None: ... + def resetFontFamily(self, which:PySide2.QtWebEngineWidgets.QWebEngineSettings.FontFamily) -> None: ... + def resetFontSize(self, type:PySide2.QtWebEngineWidgets.QWebEngineSettings.FontSize) -> None: ... + def resetUnknownUrlSchemePolicy(self) -> None: ... + def setAttribute(self, attr:PySide2.QtWebEngineWidgets.QWebEngineSettings.WebAttribute, on:bool) -> None: ... + def setDefaultTextEncoding(self, encoding:str) -> None: ... + def setFontFamily(self, which:PySide2.QtWebEngineWidgets.QWebEngineSettings.FontFamily, family:str) -> None: ... + def setFontSize(self, type:PySide2.QtWebEngineWidgets.QWebEngineSettings.FontSize, size:int) -> None: ... + def setUnknownUrlSchemePolicy(self, policy:PySide2.QtWebEngineWidgets.QWebEngineSettings.UnknownUrlSchemePolicy) -> None: ... + def testAttribute(self, attr:PySide2.QtWebEngineWidgets.QWebEngineSettings.WebAttribute) -> bool: ... + def unknownUrlSchemePolicy(self) -> PySide2.QtWebEngineWidgets.QWebEngineSettings.UnknownUrlSchemePolicy: ... + + +class QWebEngineView(PySide2.QtWidgets.QWidget): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def back(self) -> None: ... + def closeEvent(self, arg__1:PySide2.QtGui.QCloseEvent) -> None: ... + def contextMenuEvent(self, arg__1:PySide2.QtGui.QContextMenuEvent) -> None: ... + def createWindow(self, type:PySide2.QtWebEngineWidgets.QWebEnginePage.WebWindowType) -> PySide2.QtWebEngineWidgets.QWebEngineView: ... + def dragEnterEvent(self, e:PySide2.QtGui.QDragEnterEvent) -> None: ... + def dragLeaveEvent(self, e:PySide2.QtGui.QDragLeaveEvent) -> None: ... + def dragMoveEvent(self, e:PySide2.QtGui.QDragMoveEvent) -> None: ... + def dropEvent(self, e:PySide2.QtGui.QDropEvent) -> None: ... + def event(self, arg__1:PySide2.QtCore.QEvent) -> bool: ... + @typing.overload + def findText(self, arg__1:str, arg__2:PySide2.QtWebEngineWidgets.QWebEnginePage.FindFlags, arg__3:object) -> None: ... + @typing.overload + def findText(self, subString:str, options:PySide2.QtWebEngineWidgets.QWebEnginePage.FindFlags=...) -> None: ... + def forward(self) -> None: ... + def hasSelection(self) -> bool: ... + def hideEvent(self, arg__1:PySide2.QtGui.QHideEvent) -> None: ... + def history(self) -> PySide2.QtWebEngineWidgets.QWebEngineHistory: ... + def icon(self) -> PySide2.QtGui.QIcon: ... + def iconUrl(self) -> PySide2.QtCore.QUrl: ... + @typing.overload + def load(self, request:PySide2.QtWebEngineCore.QWebEngineHttpRequest) -> None: ... + @typing.overload + def load(self, url:PySide2.QtCore.QUrl) -> None: ... + def page(self) -> PySide2.QtWebEngineWidgets.QWebEnginePage: ... + def pageAction(self, action:PySide2.QtWebEngineWidgets.QWebEnginePage.WebAction) -> PySide2.QtWidgets.QAction: ... + def reload(self) -> None: ... + def selectedText(self) -> str: ... + def setContent(self, data:PySide2.QtCore.QByteArray, mimeType:str=..., baseUrl:PySide2.QtCore.QUrl=...) -> None: ... + def setHtml(self, html:str, baseUrl:PySide2.QtCore.QUrl=...) -> None: ... + def setPage(self, page:PySide2.QtWebEngineWidgets.QWebEnginePage) -> None: ... + def setUrl(self, url:PySide2.QtCore.QUrl) -> None: ... + def setZoomFactor(self, factor:float) -> None: ... + def settings(self) -> PySide2.QtWebEngineWidgets.QWebEngineSettings: ... + def showEvent(self, arg__1:PySide2.QtGui.QShowEvent) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def stop(self) -> None: ... + def title(self) -> str: ... + def triggerPageAction(self, action:PySide2.QtWebEngineWidgets.QWebEnginePage.WebAction, checked:bool=...) -> None: ... + def url(self) -> PySide2.QtCore.QUrl: ... + def zoomFactor(self) -> float: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtWebSockets.pyd b/venv/Lib/site-packages/PySide2/QtWebSockets.pyd new file mode 100644 index 0000000..d20ad81 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtWebSockets.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtWebSockets.pyi b/venv/Lib/site-packages/PySide2/QtWebSockets.pyi new file mode 100644 index 0000000..895c709 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtWebSockets.pyi @@ -0,0 +1,229 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtWebSockets, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtWebSockets +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtNetwork +import PySide2.QtWebSockets + + +class QMaskGenerator(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def nextMask(self) -> int: ... + def seed(self) -> bool: ... + + +class QWebSocket(PySide2.QtCore.QObject): + + def __init__(self, origin:str=..., version:PySide2.QtWebSockets.QWebSocketProtocol.Version=..., parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def abort(self) -> None: ... + def bytesToWrite(self) -> int: ... + def close(self, closeCode:PySide2.QtWebSockets.QWebSocketProtocol.CloseCode=..., reason:str=...) -> None: ... + def closeCode(self) -> PySide2.QtWebSockets.QWebSocketProtocol.CloseCode: ... + def closeReason(self) -> str: ... + def error(self) -> PySide2.QtNetwork.QAbstractSocket.SocketError: ... + def errorString(self) -> str: ... + def flush(self) -> bool: ... + def isValid(self) -> bool: ... + def localAddress(self) -> PySide2.QtNetwork.QHostAddress: ... + def localPort(self) -> int: ... + def maskGenerator(self) -> PySide2.QtWebSockets.QMaskGenerator: ... + def maxAllowedIncomingFrameSize(self) -> int: ... + def maxAllowedIncomingMessageSize(self) -> int: ... + @staticmethod + def maxIncomingFrameSize() -> int: ... + @staticmethod + def maxIncomingMessageSize() -> int: ... + @staticmethod + def maxOutgoingFrameSize() -> int: ... + @typing.overload + def open(self, request:PySide2.QtNetwork.QNetworkRequest) -> None: ... + @typing.overload + def open(self, url:PySide2.QtCore.QUrl) -> None: ... + def origin(self) -> str: ... + def outgoingFrameSize(self) -> int: ... + def pauseMode(self) -> PySide2.QtNetwork.QAbstractSocket.PauseModes: ... + def peerAddress(self) -> PySide2.QtNetwork.QHostAddress: ... + def peerName(self) -> str: ... + def peerPort(self) -> int: ... + def ping(self, payload:PySide2.QtCore.QByteArray=...) -> None: ... + def proxy(self) -> PySide2.QtNetwork.QNetworkProxy: ... + def readBufferSize(self) -> int: ... + def request(self) -> PySide2.QtNetwork.QNetworkRequest: ... + def requestUrl(self) -> PySide2.QtCore.QUrl: ... + def resourceName(self) -> str: ... + def resume(self) -> None: ... + def sendBinaryMessage(self, data:PySide2.QtCore.QByteArray) -> int: ... + def sendTextMessage(self, message:str) -> int: ... + def setMaskGenerator(self, maskGenerator:PySide2.QtWebSockets.QMaskGenerator) -> None: ... + def setMaxAllowedIncomingFrameSize(self, maxAllowedIncomingFrameSize:int) -> None: ... + def setMaxAllowedIncomingMessageSize(self, maxAllowedIncomingMessageSize:int) -> None: ... + def setOutgoingFrameSize(self, outgoingFrameSize:int) -> None: ... + def setPauseMode(self, pauseMode:PySide2.QtNetwork.QAbstractSocket.PauseModes) -> None: ... + def setProxy(self, networkProxy:PySide2.QtNetwork.QNetworkProxy) -> None: ... + def setReadBufferSize(self, size:int) -> None: ... + def state(self) -> PySide2.QtNetwork.QAbstractSocket.SocketState: ... + def version(self) -> PySide2.QtWebSockets.QWebSocketProtocol.Version: ... + + +class QWebSocketCorsAuthenticator(Shiboken.Object): + + @typing.overload + def __init__(self, origin:str) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtWebSockets.QWebSocketCorsAuthenticator) -> None: ... + + def allowed(self) -> bool: ... + def origin(self) -> str: ... + def setAllowed(self, allowed:bool) -> None: ... + def swap(self, other:PySide2.QtWebSockets.QWebSocketCorsAuthenticator) -> None: ... + + +class QWebSocketProtocol(Shiboken.Object): + VersionUnknown : QWebSocketProtocol = ... # -0x1 + Version0 : QWebSocketProtocol = ... # 0x0 + Version4 : QWebSocketProtocol = ... # 0x4 + Version5 : QWebSocketProtocol = ... # 0x5 + Version6 : QWebSocketProtocol = ... # 0x6 + Version7 : QWebSocketProtocol = ... # 0x7 + Version8 : QWebSocketProtocol = ... # 0x8 + Version13 : QWebSocketProtocol = ... # 0xd + VersionLatest : QWebSocketProtocol = ... # 0xd + CloseCodeNormal : QWebSocketProtocol = ... # 0x3e8 + CloseCodeGoingAway : QWebSocketProtocol = ... # 0x3e9 + CloseCodeProtocolError : QWebSocketProtocol = ... # 0x3ea + CloseCodeDatatypeNotSupported: QWebSocketProtocol = ... # 0x3eb + CloseCodeReserved1004 : QWebSocketProtocol = ... # 0x3ec + CloseCodeMissingStatusCode: QWebSocketProtocol = ... # 0x3ed + CloseCodeAbnormalDisconnection: QWebSocketProtocol = ... # 0x3ee + CloseCodeWrongDatatype : QWebSocketProtocol = ... # 0x3ef + CloseCodePolicyViolated : QWebSocketProtocol = ... # 0x3f0 + CloseCodeTooMuchData : QWebSocketProtocol = ... # 0x3f1 + CloseCodeMissingExtension: QWebSocketProtocol = ... # 0x3f2 + CloseCodeBadOperation : QWebSocketProtocol = ... # 0x3f3 + CloseCodeTlsHandshakeFailed: QWebSocketProtocol = ... # 0x3f7 + + class CloseCode(object): + CloseCodeNormal : QWebSocketProtocol.CloseCode = ... # 0x3e8 + CloseCodeGoingAway : QWebSocketProtocol.CloseCode = ... # 0x3e9 + CloseCodeProtocolError : QWebSocketProtocol.CloseCode = ... # 0x3ea + CloseCodeDatatypeNotSupported: QWebSocketProtocol.CloseCode = ... # 0x3eb + CloseCodeReserved1004 : QWebSocketProtocol.CloseCode = ... # 0x3ec + CloseCodeMissingStatusCode: QWebSocketProtocol.CloseCode = ... # 0x3ed + CloseCodeAbnormalDisconnection: QWebSocketProtocol.CloseCode = ... # 0x3ee + CloseCodeWrongDatatype : QWebSocketProtocol.CloseCode = ... # 0x3ef + CloseCodePolicyViolated : QWebSocketProtocol.CloseCode = ... # 0x3f0 + CloseCodeTooMuchData : QWebSocketProtocol.CloseCode = ... # 0x3f1 + CloseCodeMissingExtension: QWebSocketProtocol.CloseCode = ... # 0x3f2 + CloseCodeBadOperation : QWebSocketProtocol.CloseCode = ... # 0x3f3 + CloseCodeTlsHandshakeFailed: QWebSocketProtocol.CloseCode = ... # 0x3f7 + + class Version(object): + VersionUnknown : QWebSocketProtocol.Version = ... # -0x1 + Version0 : QWebSocketProtocol.Version = ... # 0x0 + Version4 : QWebSocketProtocol.Version = ... # 0x4 + Version5 : QWebSocketProtocol.Version = ... # 0x5 + Version6 : QWebSocketProtocol.Version = ... # 0x6 + Version7 : QWebSocketProtocol.Version = ... # 0x7 + Version8 : QWebSocketProtocol.Version = ... # 0x8 + Version13 : QWebSocketProtocol.Version = ... # 0xd + VersionLatest : QWebSocketProtocol.Version = ... # 0xd + + +class QWebSocketServer(PySide2.QtCore.QObject): + SecureMode : QWebSocketServer = ... # 0x0 + NonSecureMode : QWebSocketServer = ... # 0x1 + + class SslMode(object): + SecureMode : QWebSocketServer.SslMode = ... # 0x0 + NonSecureMode : QWebSocketServer.SslMode = ... # 0x1 + + def __init__(self, serverName:str, secureMode:PySide2.QtWebSockets.QWebSocketServer.SslMode, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def close(self) -> None: ... + def error(self) -> PySide2.QtWebSockets.QWebSocketProtocol.CloseCode: ... + def errorString(self) -> str: ... + def handleConnection(self, socket:PySide2.QtNetwork.QTcpSocket) -> None: ... + def handshakeTimeoutMS(self) -> int: ... + def hasPendingConnections(self) -> bool: ... + def isListening(self) -> bool: ... + def listen(self, address:PySide2.QtNetwork.QHostAddress=..., port:int=...) -> bool: ... + def maxPendingConnections(self) -> int: ... + def nativeDescriptor(self) -> int: ... + def nextPendingConnection(self) -> PySide2.QtWebSockets.QWebSocket: ... + def pauseAccepting(self) -> None: ... + def proxy(self) -> PySide2.QtNetwork.QNetworkProxy: ... + def resumeAccepting(self) -> None: ... + def secureMode(self) -> PySide2.QtWebSockets.QWebSocketServer.SslMode: ... + def serverAddress(self) -> PySide2.QtNetwork.QHostAddress: ... + def serverName(self) -> str: ... + def serverPort(self) -> int: ... + def serverUrl(self) -> PySide2.QtCore.QUrl: ... + def setHandshakeTimeout(self, msec:int) -> None: ... + def setMaxPendingConnections(self, numConnections:int) -> None: ... + def setNativeDescriptor(self, descriptor:int) -> bool: ... + def setProxy(self, networkProxy:PySide2.QtNetwork.QNetworkProxy) -> None: ... + def setServerName(self, serverName:str) -> None: ... + def setSocketDescriptor(self, socketDescriptor:int) -> bool: ... + def socketDescriptor(self) -> int: ... + def supportedVersions(self) -> typing.List: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtWidgets.pyd b/venv/Lib/site-packages/PySide2/QtWidgets.pyd new file mode 100644 index 0000000..642a3e7 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtWidgets.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtWidgets.pyi b/venv/Lib/site-packages/PySide2/QtWidgets.pyi new file mode 100644 index 0000000..aaf7dec --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtWidgets.pyi @@ -0,0 +1,10676 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtWidgets, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtWidgets +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtGui +import PySide2.QtWidgets + + +class QAbstractButton(PySide2.QtWidgets.QWidget): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def animateClick(self, msec:int=...) -> None: ... + def autoExclusive(self) -> bool: ... + def autoRepeat(self) -> bool: ... + def autoRepeatDelay(self) -> int: ... + def autoRepeatInterval(self) -> int: ... + def changeEvent(self, e:PySide2.QtCore.QEvent) -> None: ... + def checkStateSet(self) -> None: ... + def click(self) -> None: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def focusInEvent(self, e:PySide2.QtGui.QFocusEvent) -> None: ... + def focusOutEvent(self, e:PySide2.QtGui.QFocusEvent) -> None: ... + def group(self) -> PySide2.QtWidgets.QButtonGroup: ... + def hitButton(self, pos:PySide2.QtCore.QPoint) -> bool: ... + def icon(self) -> PySide2.QtGui.QIcon: ... + def iconSize(self) -> PySide2.QtCore.QSize: ... + def isCheckable(self) -> bool: ... + def isChecked(self) -> bool: ... + def isDown(self) -> bool: ... + def keyPressEvent(self, e:PySide2.QtGui.QKeyEvent) -> None: ... + def keyReleaseEvent(self, e:PySide2.QtGui.QKeyEvent) -> None: ... + def mouseMoveEvent(self, e:PySide2.QtGui.QMouseEvent) -> None: ... + def mousePressEvent(self, e:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, e:PySide2.QtGui.QMouseEvent) -> None: ... + def nextCheckState(self) -> None: ... + def paintEvent(self, e:PySide2.QtGui.QPaintEvent) -> None: ... + def setAutoExclusive(self, arg__1:bool) -> None: ... + def setAutoRepeat(self, arg__1:bool) -> None: ... + def setAutoRepeatDelay(self, arg__1:int) -> None: ... + def setAutoRepeatInterval(self, arg__1:int) -> None: ... + def setCheckable(self, arg__1:bool) -> None: ... + def setChecked(self, arg__1:bool) -> None: ... + def setDown(self, arg__1:bool) -> None: ... + def setIcon(self, icon:PySide2.QtGui.QIcon) -> None: ... + def setIconSize(self, size:PySide2.QtCore.QSize) -> None: ... + def setShortcut(self, key:PySide2.QtGui.QKeySequence) -> None: ... + def setText(self, text:str) -> None: ... + def shortcut(self) -> PySide2.QtGui.QKeySequence: ... + def text(self) -> str: ... + def timerEvent(self, e:PySide2.QtCore.QTimerEvent) -> None: ... + def toggle(self) -> None: ... + + +class QAbstractGraphicsShapeItem(PySide2.QtWidgets.QGraphicsItem): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=...) -> None: ... + + def brush(self) -> PySide2.QtGui.QBrush: ... + def isObscuredBy(self, item:PySide2.QtWidgets.QGraphicsItem) -> bool: ... + def opaqueArea(self) -> PySide2.QtGui.QPainterPath: ... + def pen(self) -> PySide2.QtGui.QPen: ... + def setBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setPen(self, pen:PySide2.QtGui.QPen) -> None: ... + + +class QAbstractItemDelegate(PySide2.QtCore.QObject): + NoHint : QAbstractItemDelegate = ... # 0x0 + EditNextItem : QAbstractItemDelegate = ... # 0x1 + EditPreviousItem : QAbstractItemDelegate = ... # 0x2 + SubmitModelCache : QAbstractItemDelegate = ... # 0x3 + RevertModelCache : QAbstractItemDelegate = ... # 0x4 + + class EndEditHint(object): + NoHint : QAbstractItemDelegate.EndEditHint = ... # 0x0 + EditNextItem : QAbstractItemDelegate.EndEditHint = ... # 0x1 + EditPreviousItem : QAbstractItemDelegate.EndEditHint = ... # 0x2 + SubmitModelCache : QAbstractItemDelegate.EndEditHint = ... # 0x3 + RevertModelCache : QAbstractItemDelegate.EndEditHint = ... # 0x4 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def createEditor(self, parent:PySide2.QtWidgets.QWidget, option:PySide2.QtWidgets.QStyleOptionViewItem, index:PySide2.QtCore.QModelIndex) -> PySide2.QtWidgets.QWidget: ... + def destroyEditor(self, editor:PySide2.QtWidgets.QWidget, index:PySide2.QtCore.QModelIndex) -> None: ... + def editorEvent(self, event:PySide2.QtCore.QEvent, model:PySide2.QtCore.QAbstractItemModel, option:PySide2.QtWidgets.QStyleOptionViewItem, index:PySide2.QtCore.QModelIndex) -> bool: ... + @staticmethod + def elidedText(fontMetrics:PySide2.QtGui.QFontMetrics, width:int, mode:PySide2.QtCore.Qt.TextElideMode, text:str) -> str: ... + def helpEvent(self, event:PySide2.QtGui.QHelpEvent, view:PySide2.QtWidgets.QAbstractItemView, option:PySide2.QtWidgets.QStyleOptionViewItem, index:PySide2.QtCore.QModelIndex) -> bool: ... + def paint(self, painter:PySide2.QtGui.QPainter, option:PySide2.QtWidgets.QStyleOptionViewItem, index:PySide2.QtCore.QModelIndex) -> None: ... + def paintingRoles(self) -> typing.List: ... + def setEditorData(self, editor:PySide2.QtWidgets.QWidget, index:PySide2.QtCore.QModelIndex) -> None: ... + def setModelData(self, editor:PySide2.QtWidgets.QWidget, model:PySide2.QtCore.QAbstractItemModel, index:PySide2.QtCore.QModelIndex) -> None: ... + def sizeHint(self, option:PySide2.QtWidgets.QStyleOptionViewItem, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QSize: ... + def updateEditorGeometry(self, editor:PySide2.QtWidgets.QWidget, option:PySide2.QtWidgets.QStyleOptionViewItem, index:PySide2.QtCore.QModelIndex) -> None: ... + + +class QAbstractItemView(PySide2.QtWidgets.QAbstractScrollArea): + EnsureVisible : QAbstractItemView = ... # 0x0 + MoveUp : QAbstractItemView = ... # 0x0 + NoDragDrop : QAbstractItemView = ... # 0x0 + NoEditTriggers : QAbstractItemView = ... # 0x0 + NoSelection : QAbstractItemView = ... # 0x0 + NoState : QAbstractItemView = ... # 0x0 + OnItem : QAbstractItemView = ... # 0x0 + ScrollPerItem : QAbstractItemView = ... # 0x0 + SelectItems : QAbstractItemView = ... # 0x0 + AboveItem : QAbstractItemView = ... # 0x1 + CurrentChanged : QAbstractItemView = ... # 0x1 + DragOnly : QAbstractItemView = ... # 0x1 + DraggingState : QAbstractItemView = ... # 0x1 + MoveDown : QAbstractItemView = ... # 0x1 + PositionAtTop : QAbstractItemView = ... # 0x1 + ScrollPerPixel : QAbstractItemView = ... # 0x1 + SelectRows : QAbstractItemView = ... # 0x1 + SingleSelection : QAbstractItemView = ... # 0x1 + BelowItem : QAbstractItemView = ... # 0x2 + DoubleClicked : QAbstractItemView = ... # 0x2 + DragSelectingState : QAbstractItemView = ... # 0x2 + DropOnly : QAbstractItemView = ... # 0x2 + MoveLeft : QAbstractItemView = ... # 0x2 + MultiSelection : QAbstractItemView = ... # 0x2 + PositionAtBottom : QAbstractItemView = ... # 0x2 + SelectColumns : QAbstractItemView = ... # 0x2 + DragDrop : QAbstractItemView = ... # 0x3 + EditingState : QAbstractItemView = ... # 0x3 + ExtendedSelection : QAbstractItemView = ... # 0x3 + MoveRight : QAbstractItemView = ... # 0x3 + OnViewport : QAbstractItemView = ... # 0x3 + PositionAtCenter : QAbstractItemView = ... # 0x3 + ContiguousSelection : QAbstractItemView = ... # 0x4 + ExpandingState : QAbstractItemView = ... # 0x4 + InternalMove : QAbstractItemView = ... # 0x4 + MoveHome : QAbstractItemView = ... # 0x4 + SelectedClicked : QAbstractItemView = ... # 0x4 + CollapsingState : QAbstractItemView = ... # 0x5 + MoveEnd : QAbstractItemView = ... # 0x5 + AnimatingState : QAbstractItemView = ... # 0x6 + MovePageUp : QAbstractItemView = ... # 0x6 + MovePageDown : QAbstractItemView = ... # 0x7 + EditKeyPressed : QAbstractItemView = ... # 0x8 + MoveNext : QAbstractItemView = ... # 0x8 + MovePrevious : QAbstractItemView = ... # 0x9 + AnyKeyPressed : QAbstractItemView = ... # 0x10 + AllEditTriggers : QAbstractItemView = ... # 0x1f + + class CursorAction(object): + MoveUp : QAbstractItemView.CursorAction = ... # 0x0 + MoveDown : QAbstractItemView.CursorAction = ... # 0x1 + MoveLeft : QAbstractItemView.CursorAction = ... # 0x2 + MoveRight : QAbstractItemView.CursorAction = ... # 0x3 + MoveHome : QAbstractItemView.CursorAction = ... # 0x4 + MoveEnd : QAbstractItemView.CursorAction = ... # 0x5 + MovePageUp : QAbstractItemView.CursorAction = ... # 0x6 + MovePageDown : QAbstractItemView.CursorAction = ... # 0x7 + MoveNext : QAbstractItemView.CursorAction = ... # 0x8 + MovePrevious : QAbstractItemView.CursorAction = ... # 0x9 + + class DragDropMode(object): + NoDragDrop : QAbstractItemView.DragDropMode = ... # 0x0 + DragOnly : QAbstractItemView.DragDropMode = ... # 0x1 + DropOnly : QAbstractItemView.DragDropMode = ... # 0x2 + DragDrop : QAbstractItemView.DragDropMode = ... # 0x3 + InternalMove : QAbstractItemView.DragDropMode = ... # 0x4 + + class DropIndicatorPosition(object): + OnItem : QAbstractItemView.DropIndicatorPosition = ... # 0x0 + AboveItem : QAbstractItemView.DropIndicatorPosition = ... # 0x1 + BelowItem : QAbstractItemView.DropIndicatorPosition = ... # 0x2 + OnViewport : QAbstractItemView.DropIndicatorPosition = ... # 0x3 + + class EditTrigger(object): + NoEditTriggers : QAbstractItemView.EditTrigger = ... # 0x0 + CurrentChanged : QAbstractItemView.EditTrigger = ... # 0x1 + DoubleClicked : QAbstractItemView.EditTrigger = ... # 0x2 + SelectedClicked : QAbstractItemView.EditTrigger = ... # 0x4 + EditKeyPressed : QAbstractItemView.EditTrigger = ... # 0x8 + AnyKeyPressed : QAbstractItemView.EditTrigger = ... # 0x10 + AllEditTriggers : QAbstractItemView.EditTrigger = ... # 0x1f + + class EditTriggers(object): ... + + class ScrollHint(object): + EnsureVisible : QAbstractItemView.ScrollHint = ... # 0x0 + PositionAtTop : QAbstractItemView.ScrollHint = ... # 0x1 + PositionAtBottom : QAbstractItemView.ScrollHint = ... # 0x2 + PositionAtCenter : QAbstractItemView.ScrollHint = ... # 0x3 + + class ScrollMode(object): + ScrollPerItem : QAbstractItemView.ScrollMode = ... # 0x0 + ScrollPerPixel : QAbstractItemView.ScrollMode = ... # 0x1 + + class SelectionBehavior(object): + SelectItems : QAbstractItemView.SelectionBehavior = ... # 0x0 + SelectRows : QAbstractItemView.SelectionBehavior = ... # 0x1 + SelectColumns : QAbstractItemView.SelectionBehavior = ... # 0x2 + + class SelectionMode(object): + NoSelection : QAbstractItemView.SelectionMode = ... # 0x0 + SingleSelection : QAbstractItemView.SelectionMode = ... # 0x1 + MultiSelection : QAbstractItemView.SelectionMode = ... # 0x2 + ExtendedSelection : QAbstractItemView.SelectionMode = ... # 0x3 + ContiguousSelection : QAbstractItemView.SelectionMode = ... # 0x4 + + class State(object): + NoState : QAbstractItemView.State = ... # 0x0 + DraggingState : QAbstractItemView.State = ... # 0x1 + DragSelectingState : QAbstractItemView.State = ... # 0x2 + EditingState : QAbstractItemView.State = ... # 0x3 + ExpandingState : QAbstractItemView.State = ... # 0x4 + CollapsingState : QAbstractItemView.State = ... # 0x5 + AnimatingState : QAbstractItemView.State = ... # 0x6 + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def alternatingRowColors(self) -> bool: ... + def autoScrollMargin(self) -> int: ... + def clearSelection(self) -> None: ... + def closeEditor(self, editor:PySide2.QtWidgets.QWidget, hint:PySide2.QtWidgets.QAbstractItemDelegate.EndEditHint) -> None: ... + def closePersistentEditor(self, index:PySide2.QtCore.QModelIndex) -> None: ... + def commitData(self, editor:PySide2.QtWidgets.QWidget) -> None: ... + def currentChanged(self, current:PySide2.QtCore.QModelIndex, previous:PySide2.QtCore.QModelIndex) -> None: ... + def currentIndex(self) -> PySide2.QtCore.QModelIndex: ... + def dataChanged(self, topLeft:PySide2.QtCore.QModelIndex, bottomRight:PySide2.QtCore.QModelIndex, roles:typing.List=...) -> None: ... + def defaultDropAction(self) -> PySide2.QtCore.Qt.DropAction: ... + def dirtyRegionOffset(self) -> PySide2.QtCore.QPoint: ... + def doAutoScroll(self) -> None: ... + def doItemsLayout(self) -> None: ... + def dragDropMode(self) -> PySide2.QtWidgets.QAbstractItemView.DragDropMode: ... + def dragDropOverwriteMode(self) -> bool: ... + def dragEnabled(self) -> bool: ... + def dragEnterEvent(self, event:PySide2.QtGui.QDragEnterEvent) -> None: ... + def dragLeaveEvent(self, event:PySide2.QtGui.QDragLeaveEvent) -> None: ... + def dragMoveEvent(self, event:PySide2.QtGui.QDragMoveEvent) -> None: ... + def dropEvent(self, event:PySide2.QtGui.QDropEvent) -> None: ... + def dropIndicatorPosition(self) -> PySide2.QtWidgets.QAbstractItemView.DropIndicatorPosition: ... + @typing.overload + def edit(self, index:PySide2.QtCore.QModelIndex) -> None: ... + @typing.overload + def edit(self, index:PySide2.QtCore.QModelIndex, trigger:PySide2.QtWidgets.QAbstractItemView.EditTrigger, event:PySide2.QtCore.QEvent) -> bool: ... + def editTriggers(self) -> PySide2.QtWidgets.QAbstractItemView.EditTriggers: ... + def editorDestroyed(self, editor:PySide2.QtCore.QObject) -> None: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def eventFilter(self, object:PySide2.QtCore.QObject, event:PySide2.QtCore.QEvent) -> bool: ... + def executeDelayedItemsLayout(self) -> None: ... + def focusInEvent(self, event:PySide2.QtGui.QFocusEvent) -> None: ... + def focusNextPrevChild(self, next:bool) -> bool: ... + def focusOutEvent(self, event:PySide2.QtGui.QFocusEvent) -> None: ... + def hasAutoScroll(self) -> bool: ... + def horizontalOffset(self) -> int: ... + def horizontalScrollMode(self) -> PySide2.QtWidgets.QAbstractItemView.ScrollMode: ... + def horizontalScrollbarAction(self, action:int) -> None: ... + def horizontalScrollbarValueChanged(self, value:int) -> None: ... + def horizontalStepsPerItem(self) -> int: ... + def iconSize(self) -> PySide2.QtCore.QSize: ... + def indexAt(self, point:PySide2.QtCore.QPoint) -> PySide2.QtCore.QModelIndex: ... + def indexWidget(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtWidgets.QWidget: ... + def inputMethodEvent(self, event:PySide2.QtGui.QInputMethodEvent) -> None: ... + def inputMethodQuery(self, query:PySide2.QtCore.Qt.InputMethodQuery) -> typing.Any: ... + def isIndexHidden(self, index:PySide2.QtCore.QModelIndex) -> bool: ... + def isPersistentEditorOpen(self, index:PySide2.QtCore.QModelIndex) -> bool: ... + @typing.overload + def itemDelegate(self) -> PySide2.QtWidgets.QAbstractItemDelegate: ... + @typing.overload + def itemDelegate(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtWidgets.QAbstractItemDelegate: ... + def itemDelegateForColumn(self, column:int) -> PySide2.QtWidgets.QAbstractItemDelegate: ... + def itemDelegateForRow(self, row:int) -> PySide2.QtWidgets.QAbstractItemDelegate: ... + def keyPressEvent(self, event:PySide2.QtGui.QKeyEvent) -> None: ... + def keyboardSearch(self, search:str) -> None: ... + def model(self) -> PySide2.QtCore.QAbstractItemModel: ... + def mouseDoubleClickEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseMoveEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def mousePressEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def moveCursor(self, cursorAction:PySide2.QtWidgets.QAbstractItemView.CursorAction, modifiers:PySide2.QtCore.Qt.KeyboardModifiers) -> PySide2.QtCore.QModelIndex: ... + def openPersistentEditor(self, index:PySide2.QtCore.QModelIndex) -> None: ... + def reset(self) -> None: ... + def resetHorizontalScrollMode(self) -> None: ... + def resetVerticalScrollMode(self) -> None: ... + def resizeEvent(self, event:PySide2.QtGui.QResizeEvent) -> None: ... + def rootIndex(self) -> PySide2.QtCore.QModelIndex: ... + def rowsAboutToBeRemoved(self, parent:PySide2.QtCore.QModelIndex, start:int, end:int) -> None: ... + def rowsInserted(self, parent:PySide2.QtCore.QModelIndex, start:int, end:int) -> None: ... + def scheduleDelayedItemsLayout(self) -> None: ... + def scrollDirtyRegion(self, dx:int, dy:int) -> None: ... + def scrollTo(self, index:PySide2.QtCore.QModelIndex, hint:PySide2.QtWidgets.QAbstractItemView.ScrollHint=...) -> None: ... + def scrollToBottom(self) -> None: ... + def scrollToTop(self) -> None: ... + def selectAll(self) -> None: ... + def selectedIndexes(self) -> typing.List: ... + def selectionBehavior(self) -> PySide2.QtWidgets.QAbstractItemView.SelectionBehavior: ... + def selectionChanged(self, selected:PySide2.QtCore.QItemSelection, deselected:PySide2.QtCore.QItemSelection) -> None: ... + def selectionCommand(self, index:PySide2.QtCore.QModelIndex, event:typing.Optional[PySide2.QtCore.QEvent]=...) -> PySide2.QtCore.QItemSelectionModel.SelectionFlags: ... + def selectionMode(self) -> PySide2.QtWidgets.QAbstractItemView.SelectionMode: ... + def selectionModel(self) -> PySide2.QtCore.QItemSelectionModel: ... + def setAlternatingRowColors(self, enable:bool) -> None: ... + def setAutoScroll(self, enable:bool) -> None: ... + def setAutoScrollMargin(self, margin:int) -> None: ... + def setCurrentIndex(self, index:PySide2.QtCore.QModelIndex) -> None: ... + def setDefaultDropAction(self, dropAction:PySide2.QtCore.Qt.DropAction) -> None: ... + def setDirtyRegion(self, region:PySide2.QtGui.QRegion) -> None: ... + def setDragDropMode(self, behavior:PySide2.QtWidgets.QAbstractItemView.DragDropMode) -> None: ... + def setDragDropOverwriteMode(self, overwrite:bool) -> None: ... + def setDragEnabled(self, enable:bool) -> None: ... + def setDropIndicatorShown(self, enable:bool) -> None: ... + def setEditTriggers(self, triggers:PySide2.QtWidgets.QAbstractItemView.EditTriggers) -> None: ... + def setHorizontalScrollMode(self, mode:PySide2.QtWidgets.QAbstractItemView.ScrollMode) -> None: ... + def setHorizontalStepsPerItem(self, steps:int) -> None: ... + def setIconSize(self, size:PySide2.QtCore.QSize) -> None: ... + def setIndexWidget(self, index:PySide2.QtCore.QModelIndex, widget:PySide2.QtWidgets.QWidget) -> None: ... + def setItemDelegate(self, delegate:PySide2.QtWidgets.QAbstractItemDelegate) -> None: ... + def setItemDelegateForColumn(self, column:int, delegate:PySide2.QtWidgets.QAbstractItemDelegate) -> None: ... + def setItemDelegateForRow(self, row:int, delegate:PySide2.QtWidgets.QAbstractItemDelegate) -> None: ... + def setModel(self, model:PySide2.QtCore.QAbstractItemModel) -> None: ... + def setRootIndex(self, index:PySide2.QtCore.QModelIndex) -> None: ... + def setSelection(self, rect:PySide2.QtCore.QRect, command:PySide2.QtCore.QItemSelectionModel.SelectionFlags) -> None: ... + def setSelectionBehavior(self, behavior:PySide2.QtWidgets.QAbstractItemView.SelectionBehavior) -> None: ... + def setSelectionMode(self, mode:PySide2.QtWidgets.QAbstractItemView.SelectionMode) -> None: ... + def setSelectionModel(self, selectionModel:PySide2.QtCore.QItemSelectionModel) -> None: ... + def setState(self, state:PySide2.QtWidgets.QAbstractItemView.State) -> None: ... + def setTabKeyNavigation(self, enable:bool) -> None: ... + def setTextElideMode(self, mode:PySide2.QtCore.Qt.TextElideMode) -> None: ... + def setVerticalScrollMode(self, mode:PySide2.QtWidgets.QAbstractItemView.ScrollMode) -> None: ... + def setVerticalStepsPerItem(self, steps:int) -> None: ... + def showDropIndicator(self) -> bool: ... + def sizeHintForColumn(self, column:int) -> int: ... + def sizeHintForIndex(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QSize: ... + def sizeHintForRow(self, row:int) -> int: ... + def startAutoScroll(self) -> None: ... + def startDrag(self, supportedActions:PySide2.QtCore.Qt.DropActions) -> None: ... + def state(self) -> PySide2.QtWidgets.QAbstractItemView.State: ... + def stopAutoScroll(self) -> None: ... + def tabKeyNavigation(self) -> bool: ... + def textElideMode(self) -> PySide2.QtCore.Qt.TextElideMode: ... + def timerEvent(self, event:PySide2.QtCore.QTimerEvent) -> None: ... + @typing.overload + def update(self) -> None: ... + @typing.overload + def update(self, index:PySide2.QtCore.QModelIndex) -> None: ... + def updateEditorData(self) -> None: ... + def updateEditorGeometries(self) -> None: ... + def updateGeometries(self) -> None: ... + def verticalOffset(self) -> int: ... + def verticalScrollMode(self) -> PySide2.QtWidgets.QAbstractItemView.ScrollMode: ... + def verticalScrollbarAction(self, action:int) -> None: ... + def verticalScrollbarValueChanged(self, value:int) -> None: ... + def verticalStepsPerItem(self) -> int: ... + def viewOptions(self) -> PySide2.QtWidgets.QStyleOptionViewItem: ... + def viewportEvent(self, event:PySide2.QtCore.QEvent) -> bool: ... + def viewportSizeHint(self) -> PySide2.QtCore.QSize: ... + def visualRect(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QRect: ... + def visualRegionForSelection(self, selection:PySide2.QtCore.QItemSelection) -> PySide2.QtGui.QRegion: ... + + +class QAbstractScrollArea(PySide2.QtWidgets.QFrame): + AdjustIgnored : QAbstractScrollArea = ... # 0x0 + AdjustToContentsOnFirstShow: QAbstractScrollArea = ... # 0x1 + AdjustToContents : QAbstractScrollArea = ... # 0x2 + + class SizeAdjustPolicy(object): + AdjustIgnored : QAbstractScrollArea.SizeAdjustPolicy = ... # 0x0 + AdjustToContentsOnFirstShow: QAbstractScrollArea.SizeAdjustPolicy = ... # 0x1 + AdjustToContents : QAbstractScrollArea.SizeAdjustPolicy = ... # 0x2 + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def addScrollBarWidget(self, widget:PySide2.QtWidgets.QWidget, alignment:PySide2.QtCore.Qt.Alignment) -> None: ... + def contextMenuEvent(self, arg__1:PySide2.QtGui.QContextMenuEvent) -> None: ... + def cornerWidget(self) -> PySide2.QtWidgets.QWidget: ... + def dragEnterEvent(self, arg__1:PySide2.QtGui.QDragEnterEvent) -> None: ... + def dragLeaveEvent(self, arg__1:PySide2.QtGui.QDragLeaveEvent) -> None: ... + def dragMoveEvent(self, arg__1:PySide2.QtGui.QDragMoveEvent) -> None: ... + def dropEvent(self, arg__1:PySide2.QtGui.QDropEvent) -> None: ... + def event(self, arg__1:PySide2.QtCore.QEvent) -> bool: ... + def eventFilter(self, arg__1:PySide2.QtCore.QObject, arg__2:PySide2.QtCore.QEvent) -> bool: ... + def horizontalScrollBar(self) -> PySide2.QtWidgets.QScrollBar: ... + def horizontalScrollBarPolicy(self) -> PySide2.QtCore.Qt.ScrollBarPolicy: ... + def keyPressEvent(self, arg__1:PySide2.QtGui.QKeyEvent) -> None: ... + def maximumViewportSize(self) -> PySide2.QtCore.QSize: ... + def minimumSizeHint(self) -> PySide2.QtCore.QSize: ... + def mouseDoubleClickEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseMoveEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def mousePressEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def paintEvent(self, arg__1:PySide2.QtGui.QPaintEvent) -> None: ... + def resizeEvent(self, arg__1:PySide2.QtGui.QResizeEvent) -> None: ... + def scrollBarWidgets(self, alignment:PySide2.QtCore.Qt.Alignment) -> typing.List: ... + def scrollContentsBy(self, dx:int, dy:int) -> None: ... + def setCornerWidget(self, widget:PySide2.QtWidgets.QWidget) -> None: ... + def setHorizontalScrollBar(self, scrollbar:PySide2.QtWidgets.QScrollBar) -> None: ... + def setHorizontalScrollBarPolicy(self, arg__1:PySide2.QtCore.Qt.ScrollBarPolicy) -> None: ... + def setSizeAdjustPolicy(self, policy:PySide2.QtWidgets.QAbstractScrollArea.SizeAdjustPolicy) -> None: ... + def setVerticalScrollBar(self, scrollbar:PySide2.QtWidgets.QScrollBar) -> None: ... + def setVerticalScrollBarPolicy(self, arg__1:PySide2.QtCore.Qt.ScrollBarPolicy) -> None: ... + def setViewport(self, widget:PySide2.QtWidgets.QWidget) -> None: ... + @typing.overload + def setViewportMargins(self, left:int, top:int, right:int, bottom:int) -> None: ... + @typing.overload + def setViewportMargins(self, margins:PySide2.QtCore.QMargins) -> None: ... + def setupViewport(self, viewport:PySide2.QtWidgets.QWidget) -> None: ... + def sizeAdjustPolicy(self) -> PySide2.QtWidgets.QAbstractScrollArea.SizeAdjustPolicy: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def verticalScrollBar(self) -> PySide2.QtWidgets.QScrollBar: ... + def verticalScrollBarPolicy(self) -> PySide2.QtCore.Qt.ScrollBarPolicy: ... + def viewport(self) -> PySide2.QtWidgets.QWidget: ... + def viewportEvent(self, arg__1:PySide2.QtCore.QEvent) -> bool: ... + def viewportMargins(self) -> PySide2.QtCore.QMargins: ... + def viewportSizeHint(self) -> PySide2.QtCore.QSize: ... + def wheelEvent(self, arg__1:PySide2.QtGui.QWheelEvent) -> None: ... + + +class QAbstractSlider(PySide2.QtWidgets.QWidget): + SliderNoAction : QAbstractSlider = ... # 0x0 + SliderRangeChange : QAbstractSlider = ... # 0x0 + SliderOrientationChange : QAbstractSlider = ... # 0x1 + SliderSingleStepAdd : QAbstractSlider = ... # 0x1 + SliderSingleStepSub : QAbstractSlider = ... # 0x2 + SliderStepsChange : QAbstractSlider = ... # 0x2 + SliderPageStepAdd : QAbstractSlider = ... # 0x3 + SliderValueChange : QAbstractSlider = ... # 0x3 + SliderPageStepSub : QAbstractSlider = ... # 0x4 + SliderToMinimum : QAbstractSlider = ... # 0x5 + SliderToMaximum : QAbstractSlider = ... # 0x6 + SliderMove : QAbstractSlider = ... # 0x7 + + class SliderAction(object): + SliderNoAction : QAbstractSlider.SliderAction = ... # 0x0 + SliderSingleStepAdd : QAbstractSlider.SliderAction = ... # 0x1 + SliderSingleStepSub : QAbstractSlider.SliderAction = ... # 0x2 + SliderPageStepAdd : QAbstractSlider.SliderAction = ... # 0x3 + SliderPageStepSub : QAbstractSlider.SliderAction = ... # 0x4 + SliderToMinimum : QAbstractSlider.SliderAction = ... # 0x5 + SliderToMaximum : QAbstractSlider.SliderAction = ... # 0x6 + SliderMove : QAbstractSlider.SliderAction = ... # 0x7 + + class SliderChange(object): + SliderRangeChange : QAbstractSlider.SliderChange = ... # 0x0 + SliderOrientationChange : QAbstractSlider.SliderChange = ... # 0x1 + SliderStepsChange : QAbstractSlider.SliderChange = ... # 0x2 + SliderValueChange : QAbstractSlider.SliderChange = ... # 0x3 + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def changeEvent(self, e:PySide2.QtCore.QEvent) -> None: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def hasTracking(self) -> bool: ... + def invertedAppearance(self) -> bool: ... + def invertedControls(self) -> bool: ... + def isSliderDown(self) -> bool: ... + def keyPressEvent(self, ev:PySide2.QtGui.QKeyEvent) -> None: ... + def maximum(self) -> int: ... + def minimum(self) -> int: ... + def orientation(self) -> PySide2.QtCore.Qt.Orientation: ... + def pageStep(self) -> int: ... + def repeatAction(self) -> PySide2.QtWidgets.QAbstractSlider.SliderAction: ... + def setInvertedAppearance(self, arg__1:bool) -> None: ... + def setInvertedControls(self, arg__1:bool) -> None: ... + def setMaximum(self, arg__1:int) -> None: ... + def setMinimum(self, arg__1:int) -> None: ... + def setOrientation(self, arg__1:PySide2.QtCore.Qt.Orientation) -> None: ... + def setPageStep(self, arg__1:int) -> None: ... + def setRange(self, min:int, max:int) -> None: ... + def setRepeatAction(self, action:PySide2.QtWidgets.QAbstractSlider.SliderAction, thresholdTime:int=..., repeatTime:int=...) -> None: ... + def setSingleStep(self, arg__1:int) -> None: ... + def setSliderDown(self, arg__1:bool) -> None: ... + def setSliderPosition(self, arg__1:int) -> None: ... + def setTracking(self, enable:bool) -> None: ... + def setValue(self, arg__1:int) -> None: ... + def singleStep(self) -> int: ... + def sliderChange(self, change:PySide2.QtWidgets.QAbstractSlider.SliderChange) -> None: ... + def sliderPosition(self) -> int: ... + def timerEvent(self, arg__1:PySide2.QtCore.QTimerEvent) -> None: ... + def triggerAction(self, action:PySide2.QtWidgets.QAbstractSlider.SliderAction) -> None: ... + def value(self) -> int: ... + def wheelEvent(self, e:PySide2.QtGui.QWheelEvent) -> None: ... + + +class QAbstractSpinBox(PySide2.QtWidgets.QWidget): + CorrectToPreviousValue : QAbstractSpinBox = ... # 0x0 + DefaultStepType : QAbstractSpinBox = ... # 0x0 + StepNone : QAbstractSpinBox = ... # 0x0 + UpDownArrows : QAbstractSpinBox = ... # 0x0 + AdaptiveDecimalStepType : QAbstractSpinBox = ... # 0x1 + CorrectToNearestValue : QAbstractSpinBox = ... # 0x1 + PlusMinus : QAbstractSpinBox = ... # 0x1 + StepUpEnabled : QAbstractSpinBox = ... # 0x1 + NoButtons : QAbstractSpinBox = ... # 0x2 + StepDownEnabled : QAbstractSpinBox = ... # 0x2 + + class ButtonSymbols(object): + UpDownArrows : QAbstractSpinBox.ButtonSymbols = ... # 0x0 + PlusMinus : QAbstractSpinBox.ButtonSymbols = ... # 0x1 + NoButtons : QAbstractSpinBox.ButtonSymbols = ... # 0x2 + + class CorrectionMode(object): + CorrectToPreviousValue : QAbstractSpinBox.CorrectionMode = ... # 0x0 + CorrectToNearestValue : QAbstractSpinBox.CorrectionMode = ... # 0x1 + + class StepEnabled(object): ... + + class StepEnabledFlag(object): + StepNone : QAbstractSpinBox.StepEnabledFlag = ... # 0x0 + StepUpEnabled : QAbstractSpinBox.StepEnabledFlag = ... # 0x1 + StepDownEnabled : QAbstractSpinBox.StepEnabledFlag = ... # 0x2 + + class StepType(object): + DefaultStepType : QAbstractSpinBox.StepType = ... # 0x0 + AdaptiveDecimalStepType : QAbstractSpinBox.StepType = ... # 0x1 + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def alignment(self) -> PySide2.QtCore.Qt.Alignment: ... + def buttonSymbols(self) -> PySide2.QtWidgets.QAbstractSpinBox.ButtonSymbols: ... + def changeEvent(self, event:PySide2.QtCore.QEvent) -> None: ... + def clear(self) -> None: ... + def closeEvent(self, event:PySide2.QtGui.QCloseEvent) -> None: ... + def contextMenuEvent(self, event:PySide2.QtGui.QContextMenuEvent) -> None: ... + def correctionMode(self) -> PySide2.QtWidgets.QAbstractSpinBox.CorrectionMode: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def fixup(self, input:str) -> None: ... + def focusInEvent(self, event:PySide2.QtGui.QFocusEvent) -> None: ... + def focusOutEvent(self, event:PySide2.QtGui.QFocusEvent) -> None: ... + def hasAcceptableInput(self) -> bool: ... + def hasFrame(self) -> bool: ... + def hideEvent(self, event:PySide2.QtGui.QHideEvent) -> None: ... + def initStyleOption(self, option:PySide2.QtWidgets.QStyleOptionSpinBox) -> None: ... + def inputMethodQuery(self, arg__1:PySide2.QtCore.Qt.InputMethodQuery) -> typing.Any: ... + def interpretText(self) -> None: ... + def isAccelerated(self) -> bool: ... + def isGroupSeparatorShown(self) -> bool: ... + def isReadOnly(self) -> bool: ... + def keyPressEvent(self, event:PySide2.QtGui.QKeyEvent) -> None: ... + def keyReleaseEvent(self, event:PySide2.QtGui.QKeyEvent) -> None: ... + def keyboardTracking(self) -> bool: ... + def lineEdit(self) -> PySide2.QtWidgets.QLineEdit: ... + def minimumSizeHint(self) -> PySide2.QtCore.QSize: ... + def mouseMoveEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def mousePressEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def paintEvent(self, event:PySide2.QtGui.QPaintEvent) -> None: ... + def resizeEvent(self, event:PySide2.QtGui.QResizeEvent) -> None: ... + def selectAll(self) -> None: ... + def setAccelerated(self, on:bool) -> None: ... + def setAlignment(self, flag:PySide2.QtCore.Qt.Alignment) -> None: ... + def setButtonSymbols(self, bs:PySide2.QtWidgets.QAbstractSpinBox.ButtonSymbols) -> None: ... + def setCorrectionMode(self, cm:PySide2.QtWidgets.QAbstractSpinBox.CorrectionMode) -> None: ... + def setFrame(self, arg__1:bool) -> None: ... + def setGroupSeparatorShown(self, shown:bool) -> None: ... + def setKeyboardTracking(self, kt:bool) -> None: ... + def setLineEdit(self, edit:PySide2.QtWidgets.QLineEdit) -> None: ... + def setReadOnly(self, r:bool) -> None: ... + def setSpecialValueText(self, txt:str) -> None: ... + def setWrapping(self, w:bool) -> None: ... + def showEvent(self, event:PySide2.QtGui.QShowEvent) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def specialValueText(self) -> str: ... + def stepBy(self, steps:int) -> None: ... + def stepDown(self) -> None: ... + def stepEnabled(self) -> PySide2.QtWidgets.QAbstractSpinBox.StepEnabled: ... + def stepUp(self) -> None: ... + def text(self) -> str: ... + def timerEvent(self, event:PySide2.QtCore.QTimerEvent) -> None: ... + def validate(self, input:str, pos:int) -> PySide2.QtGui.QValidator.State: ... + def wheelEvent(self, event:PySide2.QtGui.QWheelEvent) -> None: ... + def wrapping(self) -> bool: ... + + +class QAccessibleWidget(PySide2.QtGui.QAccessibleObject): + + def __init__(self, o:PySide2.QtWidgets.QWidget, r:PySide2.QtGui.QAccessible.Role=..., name:str=...) -> None: ... + + def actionNames(self) -> typing.List: ... + def addControllingSignal(self, signal:str) -> None: ... + def backgroundColor(self) -> PySide2.QtGui.QColor: ... + def child(self, index:int) -> PySide2.QtGui.QAccessibleInterface: ... + def childCount(self) -> int: ... + def doAction(self, actionName:str) -> None: ... + def focusChild(self) -> PySide2.QtGui.QAccessibleInterface: ... + def foregroundColor(self) -> PySide2.QtGui.QColor: ... + def indexOfChild(self, child:PySide2.QtGui.QAccessibleInterface) -> int: ... + def interface_cast(self, t:PySide2.QtGui.QAccessible.InterfaceType) -> int: ... + def isValid(self) -> bool: ... + def keyBindingsForAction(self, actionName:str) -> typing.List: ... + def parent(self) -> PySide2.QtGui.QAccessibleInterface: ... + def parentObject(self) -> PySide2.QtCore.QObject: ... + def rect(self) -> PySide2.QtCore.QRect: ... + def relations(self, match:PySide2.QtGui.QAccessible.Relation=...) -> typing.List: ... + def role(self) -> PySide2.QtGui.QAccessible.Role: ... + def state(self) -> PySide2.QtGui.QAccessible.State: ... + def text(self, t:PySide2.QtGui.QAccessible.Text) -> str: ... + def widget(self) -> PySide2.QtWidgets.QWidget: ... + def window(self) -> PySide2.QtGui.QWindow: ... + + +class QAction(PySide2.QtCore.QObject): + LowPriority : QAction = ... # 0x0 + NoRole : QAction = ... # 0x0 + Trigger : QAction = ... # 0x0 + Hover : QAction = ... # 0x1 + TextHeuristicRole : QAction = ... # 0x1 + ApplicationSpecificRole : QAction = ... # 0x2 + AboutQtRole : QAction = ... # 0x3 + AboutRole : QAction = ... # 0x4 + PreferencesRole : QAction = ... # 0x5 + QuitRole : QAction = ... # 0x6 + NormalPriority : QAction = ... # 0x80 + HighPriority : QAction = ... # 0x100 + + class ActionEvent(object): + Trigger : QAction.ActionEvent = ... # 0x0 + Hover : QAction.ActionEvent = ... # 0x1 + + class MenuRole(object): + NoRole : QAction.MenuRole = ... # 0x0 + TextHeuristicRole : QAction.MenuRole = ... # 0x1 + ApplicationSpecificRole : QAction.MenuRole = ... # 0x2 + AboutQtRole : QAction.MenuRole = ... # 0x3 + AboutRole : QAction.MenuRole = ... # 0x4 + PreferencesRole : QAction.MenuRole = ... # 0x5 + QuitRole : QAction.MenuRole = ... # 0x6 + + class Priority(object): + LowPriority : QAction.Priority = ... # 0x0 + NormalPriority : QAction.Priority = ... # 0x80 + HighPriority : QAction.Priority = ... # 0x100 + + @typing.overload + def __init__(self, icon:PySide2.QtGui.QIcon, text:str, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, text:str, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def actionGroup(self) -> PySide2.QtWidgets.QActionGroup: ... + def activate(self, event:PySide2.QtWidgets.QAction.ActionEvent) -> None: ... + def associatedGraphicsWidgets(self) -> typing.List: ... + def associatedWidgets(self) -> typing.List: ... + def autoRepeat(self) -> bool: ... + def data(self) -> typing.Any: ... + def event(self, arg__1:PySide2.QtCore.QEvent) -> bool: ... + def font(self) -> PySide2.QtGui.QFont: ... + def hover(self) -> None: ... + def icon(self) -> PySide2.QtGui.QIcon: ... + def iconText(self) -> str: ... + def isCheckable(self) -> bool: ... + def isChecked(self) -> bool: ... + def isEnabled(self) -> bool: ... + def isIconVisibleInMenu(self) -> bool: ... + def isSeparator(self) -> bool: ... + def isShortcutVisibleInContextMenu(self) -> bool: ... + def isVisible(self) -> bool: ... + def menu(self) -> PySide2.QtWidgets.QMenu: ... + def menuRole(self) -> PySide2.QtWidgets.QAction.MenuRole: ... + def parentWidget(self) -> PySide2.QtWidgets.QWidget: ... + def priority(self) -> PySide2.QtWidgets.QAction.Priority: ... + def setActionGroup(self, group:PySide2.QtWidgets.QActionGroup) -> None: ... + def setAutoRepeat(self, arg__1:bool) -> None: ... + def setCheckable(self, arg__1:bool) -> None: ... + def setChecked(self, arg__1:bool) -> None: ... + def setData(self, var:typing.Any) -> None: ... + def setDisabled(self, b:bool) -> None: ... + def setEnabled(self, arg__1:bool) -> None: ... + def setFont(self, font:PySide2.QtGui.QFont) -> None: ... + def setIcon(self, icon:PySide2.QtGui.QIcon) -> None: ... + def setIconText(self, text:str) -> None: ... + def setIconVisibleInMenu(self, visible:bool) -> None: ... + def setMenu(self, menu:PySide2.QtWidgets.QMenu) -> None: ... + def setMenuRole(self, menuRole:PySide2.QtWidgets.QAction.MenuRole) -> None: ... + def setPriority(self, priority:PySide2.QtWidgets.QAction.Priority) -> None: ... + def setSeparator(self, b:bool) -> None: ... + def setShortcut(self, shortcut:PySide2.QtGui.QKeySequence) -> None: ... + def setShortcutContext(self, context:PySide2.QtCore.Qt.ShortcutContext) -> None: ... + def setShortcutVisibleInContextMenu(self, show:bool) -> None: ... + @typing.overload + def setShortcuts(self, arg__1:PySide2.QtGui.QKeySequence.StandardKey) -> None: ... + @typing.overload + def setShortcuts(self, shortcuts:typing.Sequence) -> None: ... + def setStatusTip(self, statusTip:str) -> None: ... + def setText(self, text:str) -> None: ... + def setToolTip(self, tip:str) -> None: ... + def setVisible(self, arg__1:bool) -> None: ... + def setWhatsThis(self, what:str) -> None: ... + def shortcut(self) -> PySide2.QtGui.QKeySequence: ... + def shortcutContext(self) -> PySide2.QtCore.Qt.ShortcutContext: ... + def shortcuts(self) -> typing.List: ... + def showStatusText(self, widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> bool: ... + def statusTip(self) -> str: ... + def text(self) -> str: ... + def toggle(self) -> None: ... + def toolTip(self) -> str: ... + def trigger(self) -> None: ... + def whatsThis(self) -> str: ... + + +class QActionGroup(PySide2.QtCore.QObject): + + class ExclusionPolicy(object): + None_ : QActionGroup.ExclusionPolicy = ... # 0x0 + Exclusive : QActionGroup.ExclusionPolicy = ... # 0x1 + ExclusiveOptional : QActionGroup.ExclusionPolicy = ... # 0x2 + + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + + def actions(self) -> typing.List: ... + @typing.overload + def addAction(self, a:PySide2.QtWidgets.QAction) -> PySide2.QtWidgets.QAction: ... + @typing.overload + def addAction(self, icon:PySide2.QtGui.QIcon, text:str) -> PySide2.QtWidgets.QAction: ... + @typing.overload + def addAction(self, text:str) -> PySide2.QtWidgets.QAction: ... + def checkedAction(self) -> PySide2.QtWidgets.QAction: ... + def exclusionPolicy(self) -> PySide2.QtWidgets.QActionGroup.ExclusionPolicy: ... + def isEnabled(self) -> bool: ... + def isExclusive(self) -> bool: ... + def isVisible(self) -> bool: ... + def removeAction(self, a:PySide2.QtWidgets.QAction) -> None: ... + def setDisabled(self, b:bool) -> None: ... + def setEnabled(self, arg__1:bool) -> None: ... + def setExclusionPolicy(self, policy:PySide2.QtWidgets.QActionGroup.ExclusionPolicy) -> None: ... + def setExclusive(self, arg__1:bool) -> None: ... + def setVisible(self, arg__1:bool) -> None: ... + + +class QApplication(PySide2.QtGui.QGuiApplication): + NormalColor : QApplication = ... # 0x0 + CustomColor : QApplication = ... # 0x1 + ManyColor : QApplication = ... # 0x2 + + class ColorSpec(object): + NormalColor : QApplication.ColorSpec = ... # 0x0 + CustomColor : QApplication.ColorSpec = ... # 0x1 + ManyColor : QApplication.ColorSpec = ... # 0x2 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:typing.Sequence) -> None: ... + + @staticmethod + def aboutQt() -> None: ... + @staticmethod + def activeModalWidget() -> PySide2.QtWidgets.QWidget: ... + @staticmethod + def activePopupWidget() -> PySide2.QtWidgets.QWidget: ... + @staticmethod + def activeWindow() -> PySide2.QtWidgets.QWidget: ... + @staticmethod + def alert(widget:PySide2.QtWidgets.QWidget, duration:int=...) -> None: ... + @staticmethod + def allWidgets() -> typing.List: ... + def autoSipEnabled(self) -> bool: ... + @staticmethod + def beep() -> None: ... + @staticmethod + def closeAllWindows() -> None: ... + @staticmethod + def colorSpec() -> int: ... + @staticmethod + def cursorFlashTime() -> int: ... + @staticmethod + def desktop() -> PySide2.QtWidgets.QDesktopWidget: ... + @staticmethod + def doubleClickInterval() -> int: ... + def event(self, arg__1:PySide2.QtCore.QEvent) -> bool: ... + @staticmethod + def exec_() -> int: ... + @staticmethod + def focusWidget() -> PySide2.QtWidgets.QWidget: ... + @typing.overload + @staticmethod + def font() -> PySide2.QtGui.QFont: ... + @typing.overload + @staticmethod + def font(arg__1:PySide2.QtWidgets.QWidget) -> PySide2.QtGui.QFont: ... + @typing.overload + @staticmethod + def font(className:bytes) -> PySide2.QtGui.QFont: ... + @staticmethod + def fontMetrics() -> PySide2.QtGui.QFontMetrics: ... + @staticmethod + def globalStrut() -> PySide2.QtCore.QSize: ... + @staticmethod + def isEffectEnabled(arg__1:PySide2.QtCore.Qt.UIEffect) -> bool: ... + @staticmethod + def keyboardInputInterval() -> int: ... + def notify(self, arg__1:PySide2.QtCore.QObject, arg__2:PySide2.QtCore.QEvent) -> bool: ... + @typing.overload + @staticmethod + def palette() -> PySide2.QtGui.QPalette: ... + @typing.overload + @staticmethod + def palette(arg__1:PySide2.QtWidgets.QWidget) -> PySide2.QtGui.QPalette: ... + @typing.overload + @staticmethod + def palette(className:bytes) -> PySide2.QtGui.QPalette: ... + @staticmethod + def setActiveWindow(act:PySide2.QtWidgets.QWidget) -> None: ... + def setAutoSipEnabled(self, enabled:bool) -> None: ... + @staticmethod + def setColorSpec(arg__1:int) -> None: ... + @staticmethod + def setCursorFlashTime(arg__1:int) -> None: ... + @staticmethod + def setDoubleClickInterval(arg__1:int) -> None: ... + @staticmethod + def setEffectEnabled(arg__1:PySide2.QtCore.Qt.UIEffect, enable:bool=...) -> None: ... + @typing.overload + @staticmethod + def setFont(arg__1:PySide2.QtGui.QFont) -> None: ... + @typing.overload + @staticmethod + def setFont(arg__1:PySide2.QtGui.QFont, className:typing.Optional[bytes]=...) -> None: ... + @staticmethod + def setGlobalStrut(arg__1:PySide2.QtCore.QSize) -> None: ... + @staticmethod + def setKeyboardInputInterval(arg__1:int) -> None: ... + @typing.overload + @staticmethod + def setPalette(arg__1:PySide2.QtGui.QPalette, className:typing.Optional[bytes]=...) -> None: ... + @typing.overload + @staticmethod + def setPalette(pal:PySide2.QtGui.QPalette) -> None: ... + @staticmethod + def setStartDragDistance(l:int) -> None: ... + @staticmethod + def setStartDragTime(ms:int) -> None: ... + @typing.overload + @staticmethod + def setStyle(arg__1:PySide2.QtWidgets.QStyle) -> None: ... + @typing.overload + @staticmethod + def setStyle(arg__1:str) -> PySide2.QtWidgets.QStyle: ... + def setStyleSheet(self, sheet:str) -> None: ... + @staticmethod + def setWheelScrollLines(arg__1:int) -> None: ... + @staticmethod + def setWindowIcon(icon:PySide2.QtGui.QIcon) -> None: ... + @staticmethod + def startDragDistance() -> int: ... + @staticmethod + def startDragTime() -> int: ... + @staticmethod + def style() -> PySide2.QtWidgets.QStyle: ... + def styleSheet(self) -> str: ... + @typing.overload + @staticmethod + def topLevelAt(p:PySide2.QtCore.QPoint) -> PySide2.QtWidgets.QWidget: ... + @typing.overload + @staticmethod + def topLevelAt(x:int, y:int) -> PySide2.QtWidgets.QWidget: ... + @staticmethod + def topLevelWidgets() -> typing.List: ... + @staticmethod + def wheelScrollLines() -> int: ... + @typing.overload + @staticmethod + def widgetAt(p:PySide2.QtCore.QPoint) -> PySide2.QtWidgets.QWidget: ... + @typing.overload + @staticmethod + def widgetAt(x:int, y:int) -> PySide2.QtWidgets.QWidget: ... + @staticmethod + def windowIcon() -> PySide2.QtGui.QIcon: ... + + +class QBoxLayout(PySide2.QtWidgets.QLayout): + LeftToRight : QBoxLayout = ... # 0x0 + RightToLeft : QBoxLayout = ... # 0x1 + Down : QBoxLayout = ... # 0x2 + TopToBottom : QBoxLayout = ... # 0x2 + BottomToTop : QBoxLayout = ... # 0x3 + Up : QBoxLayout = ... # 0x3 + + class Direction(object): + LeftToRight : QBoxLayout.Direction = ... # 0x0 + RightToLeft : QBoxLayout.Direction = ... # 0x1 + Down : QBoxLayout.Direction = ... # 0x2 + TopToBottom : QBoxLayout.Direction = ... # 0x2 + BottomToTop : QBoxLayout.Direction = ... # 0x3 + Up : QBoxLayout.Direction = ... # 0x3 + + def __init__(self, arg__1:PySide2.QtWidgets.QBoxLayout.Direction, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def addItem(self, arg__1:PySide2.QtWidgets.QLayoutItem) -> None: ... + def addLayout(self, layout:PySide2.QtWidgets.QLayout, stretch:int=...) -> None: ... + def addSpacerItem(self, spacerItem:PySide2.QtWidgets.QSpacerItem) -> None: ... + def addSpacing(self, size:int) -> None: ... + def addStretch(self, stretch:int=...) -> None: ... + def addStrut(self, arg__1:int) -> None: ... + @typing.overload + def addWidget(self, arg__1:PySide2.QtWidgets.QWidget, stretch:int=..., alignment:PySide2.QtCore.Qt.Alignment=...) -> None: ... + @typing.overload + def addWidget(self, w:PySide2.QtWidgets.QWidget) -> None: ... + def count(self) -> int: ... + def direction(self) -> PySide2.QtWidgets.QBoxLayout.Direction: ... + def expandingDirections(self) -> PySide2.QtCore.Qt.Orientations: ... + def hasHeightForWidth(self) -> bool: ... + def heightForWidth(self, arg__1:int) -> int: ... + def insertItem(self, index:int, arg__2:PySide2.QtWidgets.QLayoutItem) -> None: ... + def insertLayout(self, index:int, layout:PySide2.QtWidgets.QLayout, stretch:int=...) -> None: ... + def insertSpacerItem(self, index:int, spacerItem:PySide2.QtWidgets.QSpacerItem) -> None: ... + def insertSpacing(self, index:int, size:int) -> None: ... + def insertStretch(self, index:int, stretch:int=...) -> None: ... + def insertWidget(self, index:int, widget:PySide2.QtWidgets.QWidget, stretch:int=..., alignment:PySide2.QtCore.Qt.Alignment=...) -> None: ... + def invalidate(self) -> None: ... + def itemAt(self, arg__1:int) -> PySide2.QtWidgets.QLayoutItem: ... + def maximumSize(self) -> PySide2.QtCore.QSize: ... + def minimumHeightForWidth(self, arg__1:int) -> int: ... + def minimumSize(self) -> PySide2.QtCore.QSize: ... + def setDirection(self, arg__1:PySide2.QtWidgets.QBoxLayout.Direction) -> None: ... + def setGeometry(self, arg__1:PySide2.QtCore.QRect) -> None: ... + def setSpacing(self, spacing:int) -> None: ... + def setStretch(self, index:int, stretch:int) -> None: ... + @typing.overload + def setStretchFactor(self, l:PySide2.QtWidgets.QLayout, stretch:int) -> bool: ... + @typing.overload + def setStretchFactor(self, w:PySide2.QtWidgets.QWidget, stretch:int) -> bool: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def spacing(self) -> int: ... + def stretch(self, index:int) -> int: ... + def takeAt(self, arg__1:int) -> PySide2.QtWidgets.QLayoutItem: ... + + +class QButtonGroup(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def addButton(self, arg__1:PySide2.QtWidgets.QAbstractButton, id:int=...) -> None: ... + def button(self, id:int) -> PySide2.QtWidgets.QAbstractButton: ... + def buttons(self) -> typing.List: ... + def checkedButton(self) -> PySide2.QtWidgets.QAbstractButton: ... + def checkedId(self) -> int: ... + def exclusive(self) -> bool: ... + def id(self, button:PySide2.QtWidgets.QAbstractButton) -> int: ... + def removeButton(self, arg__1:PySide2.QtWidgets.QAbstractButton) -> None: ... + def setExclusive(self, arg__1:bool) -> None: ... + def setId(self, button:PySide2.QtWidgets.QAbstractButton, id:int) -> None: ... + + +class QCalendarWidget(PySide2.QtWidgets.QWidget): + NoHorizontalHeader : QCalendarWidget = ... # 0x0 + NoSelection : QCalendarWidget = ... # 0x0 + NoVerticalHeader : QCalendarWidget = ... # 0x0 + ISOWeekNumbers : QCalendarWidget = ... # 0x1 + SingleLetterDayNames : QCalendarWidget = ... # 0x1 + SingleSelection : QCalendarWidget = ... # 0x1 + ShortDayNames : QCalendarWidget = ... # 0x2 + LongDayNames : QCalendarWidget = ... # 0x3 + + class HorizontalHeaderFormat(object): + NoHorizontalHeader : QCalendarWidget.HorizontalHeaderFormat = ... # 0x0 + SingleLetterDayNames : QCalendarWidget.HorizontalHeaderFormat = ... # 0x1 + ShortDayNames : QCalendarWidget.HorizontalHeaderFormat = ... # 0x2 + LongDayNames : QCalendarWidget.HorizontalHeaderFormat = ... # 0x3 + + class SelectionMode(object): + NoSelection : QCalendarWidget.SelectionMode = ... # 0x0 + SingleSelection : QCalendarWidget.SelectionMode = ... # 0x1 + + class VerticalHeaderFormat(object): + NoVerticalHeader : QCalendarWidget.VerticalHeaderFormat = ... # 0x0 + ISOWeekNumbers : QCalendarWidget.VerticalHeaderFormat = ... # 0x1 + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def calendar(self) -> PySide2.QtCore.QCalendar: ... + def dateEditAcceptDelay(self) -> int: ... + @typing.overload + def dateTextFormat(self) -> typing.Dict: ... + @typing.overload + def dateTextFormat(self, date:PySide2.QtCore.QDate) -> PySide2.QtGui.QTextCharFormat: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def eventFilter(self, watched:PySide2.QtCore.QObject, event:PySide2.QtCore.QEvent) -> bool: ... + def firstDayOfWeek(self) -> PySide2.QtCore.Qt.DayOfWeek: ... + def headerTextFormat(self) -> PySide2.QtGui.QTextCharFormat: ... + def horizontalHeaderFormat(self) -> PySide2.QtWidgets.QCalendarWidget.HorizontalHeaderFormat: ... + def isDateEditEnabled(self) -> bool: ... + def isGridVisible(self) -> bool: ... + def isNavigationBarVisible(self) -> bool: ... + def keyPressEvent(self, event:PySide2.QtGui.QKeyEvent) -> None: ... + def maximumDate(self) -> PySide2.QtCore.QDate: ... + def minimumDate(self) -> PySide2.QtCore.QDate: ... + def minimumSizeHint(self) -> PySide2.QtCore.QSize: ... + def monthShown(self) -> int: ... + def mousePressEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def paintCell(self, painter:PySide2.QtGui.QPainter, rect:PySide2.QtCore.QRect, date:PySide2.QtCore.QDate) -> None: ... + def resizeEvent(self, event:PySide2.QtGui.QResizeEvent) -> None: ... + def selectedDate(self) -> PySide2.QtCore.QDate: ... + def selectionMode(self) -> PySide2.QtWidgets.QCalendarWidget.SelectionMode: ... + def setCalendar(self, calendar:PySide2.QtCore.QCalendar) -> None: ... + def setCurrentPage(self, year:int, month:int) -> None: ... + def setDateEditAcceptDelay(self, delay:int) -> None: ... + def setDateEditEnabled(self, enable:bool) -> None: ... + def setDateRange(self, min:PySide2.QtCore.QDate, max:PySide2.QtCore.QDate) -> None: ... + def setDateTextFormat(self, date:PySide2.QtCore.QDate, format:PySide2.QtGui.QTextCharFormat) -> None: ... + def setFirstDayOfWeek(self, dayOfWeek:PySide2.QtCore.Qt.DayOfWeek) -> None: ... + def setGridVisible(self, show:bool) -> None: ... + def setHeaderTextFormat(self, format:PySide2.QtGui.QTextCharFormat) -> None: ... + def setHorizontalHeaderFormat(self, format:PySide2.QtWidgets.QCalendarWidget.HorizontalHeaderFormat) -> None: ... + def setMaximumDate(self, date:PySide2.QtCore.QDate) -> None: ... + def setMinimumDate(self, date:PySide2.QtCore.QDate) -> None: ... + def setNavigationBarVisible(self, visible:bool) -> None: ... + def setSelectedDate(self, date:PySide2.QtCore.QDate) -> None: ... + def setSelectionMode(self, mode:PySide2.QtWidgets.QCalendarWidget.SelectionMode) -> None: ... + def setVerticalHeaderFormat(self, format:PySide2.QtWidgets.QCalendarWidget.VerticalHeaderFormat) -> None: ... + def setWeekdayTextFormat(self, dayOfWeek:PySide2.QtCore.Qt.DayOfWeek, format:PySide2.QtGui.QTextCharFormat) -> None: ... + def showNextMonth(self) -> None: ... + def showNextYear(self) -> None: ... + def showPreviousMonth(self) -> None: ... + def showPreviousYear(self) -> None: ... + def showSelectedDate(self) -> None: ... + def showToday(self) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def updateCell(self, date:PySide2.QtCore.QDate) -> None: ... + def updateCells(self) -> None: ... + def verticalHeaderFormat(self) -> PySide2.QtWidgets.QCalendarWidget.VerticalHeaderFormat: ... + def weekdayTextFormat(self, dayOfWeek:PySide2.QtCore.Qt.DayOfWeek) -> PySide2.QtGui.QTextCharFormat: ... + def yearShown(self) -> int: ... + + +class QCheckBox(PySide2.QtWidgets.QAbstractButton): + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, text:str, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def checkState(self) -> PySide2.QtCore.Qt.CheckState: ... + def checkStateSet(self) -> None: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def hitButton(self, pos:PySide2.QtCore.QPoint) -> bool: ... + def initStyleOption(self, option:PySide2.QtWidgets.QStyleOptionButton) -> None: ... + def isTristate(self) -> bool: ... + def minimumSizeHint(self) -> PySide2.QtCore.QSize: ... + def mouseMoveEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def nextCheckState(self) -> None: ... + def paintEvent(self, arg__1:PySide2.QtGui.QPaintEvent) -> None: ... + def setCheckState(self, state:PySide2.QtCore.Qt.CheckState) -> None: ... + def setTristate(self, y:bool=...) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + + +class QColorDialog(PySide2.QtWidgets.QDialog): + ShowAlphaChannel : QColorDialog = ... # 0x1 + NoButtons : QColorDialog = ... # 0x2 + DontUseNativeDialog : QColorDialog = ... # 0x4 + + class ColorDialogOption(object): + ShowAlphaChannel : QColorDialog.ColorDialogOption = ... # 0x1 + NoButtons : QColorDialog.ColorDialogOption = ... # 0x2 + DontUseNativeDialog : QColorDialog.ColorDialogOption = ... # 0x4 + + class ColorDialogOptions(object): ... + + @typing.overload + def __init__(self, initial:PySide2.QtGui.QColor, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def changeEvent(self, event:PySide2.QtCore.QEvent) -> None: ... + def currentColor(self) -> PySide2.QtGui.QColor: ... + @staticmethod + def customColor(index:int) -> PySide2.QtGui.QColor: ... + @staticmethod + def customCount() -> int: ... + def done(self, result:int) -> None: ... + @staticmethod + def getColor(initial:PySide2.QtGui.QColor=..., parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., title:str=..., options:PySide2.QtWidgets.QColorDialog.ColorDialogOptions=...) -> PySide2.QtGui.QColor: ... + @typing.overload + def open(self) -> None: ... + @typing.overload + def open(self, receiver:PySide2.QtCore.QObject, member:bytes) -> None: ... + def options(self) -> PySide2.QtWidgets.QColorDialog.ColorDialogOptions: ... + def selectedColor(self) -> PySide2.QtGui.QColor: ... + def setCurrentColor(self, color:PySide2.QtGui.QColor) -> None: ... + @staticmethod + def setCustomColor(index:int, color:PySide2.QtGui.QColor) -> None: ... + def setOption(self, option:PySide2.QtWidgets.QColorDialog.ColorDialogOption, on:bool=...) -> None: ... + def setOptions(self, options:PySide2.QtWidgets.QColorDialog.ColorDialogOptions) -> None: ... + @staticmethod + def setStandardColor(index:int, color:PySide2.QtGui.QColor) -> None: ... + def setVisible(self, visible:bool) -> None: ... + @staticmethod + def standardColor(index:int) -> PySide2.QtGui.QColor: ... + def testOption(self, option:PySide2.QtWidgets.QColorDialog.ColorDialogOption) -> bool: ... + + +class QColormap(Shiboken.Object): + Direct : QColormap = ... # 0x0 + Indexed : QColormap = ... # 0x1 + Gray : QColormap = ... # 0x2 + + class Mode(object): + Direct : QColormap.Mode = ... # 0x0 + Indexed : QColormap.Mode = ... # 0x1 + Gray : QColormap.Mode = ... # 0x2 + + def __init__(self, colormap:PySide2.QtWidgets.QColormap) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @staticmethod + def cleanup() -> None: ... + def colorAt(self, pixel:int) -> PySide2.QtGui.QColor: ... + def colormap(self) -> typing.List: ... + def depth(self) -> int: ... + @staticmethod + def initialize() -> None: ... + @staticmethod + def instance(screen:int=...) -> PySide2.QtWidgets.QColormap: ... + def mode(self) -> PySide2.QtWidgets.QColormap.Mode: ... + def pixel(self, color:PySide2.QtGui.QColor) -> int: ... + def size(self) -> int: ... + + +class QColumnView(PySide2.QtWidgets.QAbstractItemView): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def columnWidths(self) -> typing.List: ... + def createColumn(self, rootIndex:PySide2.QtCore.QModelIndex) -> PySide2.QtWidgets.QAbstractItemView: ... + def currentChanged(self, current:PySide2.QtCore.QModelIndex, previous:PySide2.QtCore.QModelIndex) -> None: ... + def horizontalOffset(self) -> int: ... + def indexAt(self, point:PySide2.QtCore.QPoint) -> PySide2.QtCore.QModelIndex: ... + def initializeColumn(self, column:PySide2.QtWidgets.QAbstractItemView) -> None: ... + def isIndexHidden(self, index:PySide2.QtCore.QModelIndex) -> bool: ... + def moveCursor(self, cursorAction:PySide2.QtWidgets.QAbstractItemView.CursorAction, modifiers:PySide2.QtCore.Qt.KeyboardModifiers) -> PySide2.QtCore.QModelIndex: ... + def previewWidget(self) -> PySide2.QtWidgets.QWidget: ... + def resizeEvent(self, event:PySide2.QtGui.QResizeEvent) -> None: ... + def resizeGripsVisible(self) -> bool: ... + def rowsInserted(self, parent:PySide2.QtCore.QModelIndex, start:int, end:int) -> None: ... + def scrollContentsBy(self, dx:int, dy:int) -> None: ... + def scrollTo(self, index:PySide2.QtCore.QModelIndex, hint:PySide2.QtWidgets.QAbstractItemView.ScrollHint=...) -> None: ... + def selectAll(self) -> None: ... + def setColumnWidths(self, list:typing.Sequence) -> None: ... + def setModel(self, model:PySide2.QtCore.QAbstractItemModel) -> None: ... + def setPreviewWidget(self, widget:PySide2.QtWidgets.QWidget) -> None: ... + def setResizeGripsVisible(self, visible:bool) -> None: ... + def setRootIndex(self, index:PySide2.QtCore.QModelIndex) -> None: ... + def setSelection(self, rect:PySide2.QtCore.QRect, command:PySide2.QtCore.QItemSelectionModel.SelectionFlags) -> None: ... + def setSelectionModel(self, selectionModel:PySide2.QtCore.QItemSelectionModel) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def verticalOffset(self) -> int: ... + def visualRect(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QRect: ... + def visualRegionForSelection(self, selection:PySide2.QtCore.QItemSelection) -> PySide2.QtGui.QRegion: ... + + +class QComboBox(PySide2.QtWidgets.QWidget): + AdjustToContents : QComboBox = ... # 0x0 + NoInsert : QComboBox = ... # 0x0 + AdjustToContentsOnFirstShow: QComboBox = ... # 0x1 + InsertAtTop : QComboBox = ... # 0x1 + AdjustToMinimumContentsLength: QComboBox = ... # 0x2 + InsertAtCurrent : QComboBox = ... # 0x2 + AdjustToMinimumContentsLengthWithIcon: QComboBox = ... # 0x3 + InsertAtBottom : QComboBox = ... # 0x3 + InsertAfterCurrent : QComboBox = ... # 0x4 + InsertBeforeCurrent : QComboBox = ... # 0x5 + InsertAlphabetically : QComboBox = ... # 0x6 + + class InsertPolicy(object): + NoInsert : QComboBox.InsertPolicy = ... # 0x0 + InsertAtTop : QComboBox.InsertPolicy = ... # 0x1 + InsertAtCurrent : QComboBox.InsertPolicy = ... # 0x2 + InsertAtBottom : QComboBox.InsertPolicy = ... # 0x3 + InsertAfterCurrent : QComboBox.InsertPolicy = ... # 0x4 + InsertBeforeCurrent : QComboBox.InsertPolicy = ... # 0x5 + InsertAlphabetically : QComboBox.InsertPolicy = ... # 0x6 + + class SizeAdjustPolicy(object): + AdjustToContents : QComboBox.SizeAdjustPolicy = ... # 0x0 + AdjustToContentsOnFirstShow: QComboBox.SizeAdjustPolicy = ... # 0x1 + AdjustToMinimumContentsLength: QComboBox.SizeAdjustPolicy = ... # 0x2 + AdjustToMinimumContentsLengthWithIcon: QComboBox.SizeAdjustPolicy = ... # 0x3 + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + @typing.overload + def addItem(self, icon:PySide2.QtGui.QIcon, text:str, userData:typing.Any=...) -> None: ... + @typing.overload + def addItem(self, text:str, userData:typing.Any=...) -> None: ... + def addItems(self, texts:typing.Sequence) -> None: ... + def autoCompletion(self) -> bool: ... + def autoCompletionCaseSensitivity(self) -> PySide2.QtCore.Qt.CaseSensitivity: ... + def changeEvent(self, e:PySide2.QtCore.QEvent) -> None: ... + def clear(self) -> None: ... + def clearEditText(self) -> None: ... + def completer(self) -> PySide2.QtWidgets.QCompleter: ... + def contextMenuEvent(self, e:PySide2.QtGui.QContextMenuEvent) -> None: ... + def count(self) -> int: ... + def currentData(self, role:int=...) -> typing.Any: ... + def currentIndex(self) -> int: ... + def currentText(self) -> str: ... + def duplicatesEnabled(self) -> bool: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def findData(self, data:typing.Any, role:int=..., flags:PySide2.QtCore.Qt.MatchFlags=...) -> int: ... + def findText(self, text:str, flags:PySide2.QtCore.Qt.MatchFlags=...) -> int: ... + def focusInEvent(self, e:PySide2.QtGui.QFocusEvent) -> None: ... + def focusOutEvent(self, e:PySide2.QtGui.QFocusEvent) -> None: ... + def hasFrame(self) -> bool: ... + def hideEvent(self, e:PySide2.QtGui.QHideEvent) -> None: ... + def hidePopup(self) -> None: ... + def iconSize(self) -> PySide2.QtCore.QSize: ... + def initStyleOption(self, option:PySide2.QtWidgets.QStyleOptionComboBox) -> None: ... + def inputMethodEvent(self, arg__1:PySide2.QtGui.QInputMethodEvent) -> None: ... + @typing.overload + def inputMethodQuery(self, arg__1:PySide2.QtCore.Qt.InputMethodQuery) -> typing.Any: ... + @typing.overload + def inputMethodQuery(self, query:PySide2.QtCore.Qt.InputMethodQuery, argument:typing.Any) -> typing.Any: ... + @typing.overload + def insertItem(self, index:int, icon:PySide2.QtGui.QIcon, text:str, userData:typing.Any=...) -> None: ... + @typing.overload + def insertItem(self, index:int, text:str, userData:typing.Any=...) -> None: ... + def insertItems(self, index:int, texts:typing.Sequence) -> None: ... + def insertPolicy(self) -> PySide2.QtWidgets.QComboBox.InsertPolicy: ... + def insertSeparator(self, index:int) -> None: ... + def isEditable(self) -> bool: ... + def itemData(self, index:int, role:int=...) -> typing.Any: ... + def itemDelegate(self) -> PySide2.QtWidgets.QAbstractItemDelegate: ... + def itemIcon(self, index:int) -> PySide2.QtGui.QIcon: ... + def itemText(self, index:int) -> str: ... + def keyPressEvent(self, e:PySide2.QtGui.QKeyEvent) -> None: ... + def keyReleaseEvent(self, e:PySide2.QtGui.QKeyEvent) -> None: ... + def lineEdit(self) -> PySide2.QtWidgets.QLineEdit: ... + def maxCount(self) -> int: ... + def maxVisibleItems(self) -> int: ... + def minimumContentsLength(self) -> int: ... + def minimumSizeHint(self) -> PySide2.QtCore.QSize: ... + def model(self) -> PySide2.QtCore.QAbstractItemModel: ... + def modelColumn(self) -> int: ... + def mousePressEvent(self, e:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, e:PySide2.QtGui.QMouseEvent) -> None: ... + def paintEvent(self, e:PySide2.QtGui.QPaintEvent) -> None: ... + def placeholderText(self) -> str: ... + def removeItem(self, index:int) -> None: ... + def resizeEvent(self, e:PySide2.QtGui.QResizeEvent) -> None: ... + def rootModelIndex(self) -> PySide2.QtCore.QModelIndex: ... + def setAutoCompletion(self, enable:bool) -> None: ... + def setAutoCompletionCaseSensitivity(self, sensitivity:PySide2.QtCore.Qt.CaseSensitivity) -> None: ... + def setCompleter(self, c:PySide2.QtWidgets.QCompleter) -> None: ... + def setCurrentIndex(self, index:int) -> None: ... + def setCurrentText(self, text:str) -> None: ... + def setDuplicatesEnabled(self, enable:bool) -> None: ... + def setEditText(self, text:str) -> None: ... + def setEditable(self, editable:bool) -> None: ... + def setFrame(self, arg__1:bool) -> None: ... + def setIconSize(self, size:PySide2.QtCore.QSize) -> None: ... + def setInsertPolicy(self, policy:PySide2.QtWidgets.QComboBox.InsertPolicy) -> None: ... + def setItemData(self, index:int, value:typing.Any, role:int=...) -> None: ... + def setItemDelegate(self, delegate:PySide2.QtWidgets.QAbstractItemDelegate) -> None: ... + def setItemIcon(self, index:int, icon:PySide2.QtGui.QIcon) -> None: ... + def setItemText(self, index:int, text:str) -> None: ... + def setLineEdit(self, edit:PySide2.QtWidgets.QLineEdit) -> None: ... + def setMaxCount(self, max:int) -> None: ... + def setMaxVisibleItems(self, maxItems:int) -> None: ... + def setMinimumContentsLength(self, characters:int) -> None: ... + def setModel(self, model:PySide2.QtCore.QAbstractItemModel) -> None: ... + def setModelColumn(self, visibleColumn:int) -> None: ... + def setPlaceholderText(self, placeholderText:str) -> None: ... + def setRootModelIndex(self, index:PySide2.QtCore.QModelIndex) -> None: ... + def setSizeAdjustPolicy(self, policy:PySide2.QtWidgets.QComboBox.SizeAdjustPolicy) -> None: ... + def setValidator(self, v:PySide2.QtGui.QValidator) -> None: ... + def setView(self, itemView:PySide2.QtWidgets.QAbstractItemView) -> None: ... + def showEvent(self, e:PySide2.QtGui.QShowEvent) -> None: ... + def showPopup(self) -> None: ... + def sizeAdjustPolicy(self) -> PySide2.QtWidgets.QComboBox.SizeAdjustPolicy: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def validator(self) -> PySide2.QtGui.QValidator: ... + def view(self) -> PySide2.QtWidgets.QAbstractItemView: ... + def wheelEvent(self, e:PySide2.QtGui.QWheelEvent) -> None: ... + + +class QCommandLinkButton(PySide2.QtWidgets.QPushButton): + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, text:str, description:str, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, text:str, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def description(self) -> str: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def heightForWidth(self, arg__1:int) -> int: ... + def minimumSizeHint(self) -> PySide2.QtCore.QSize: ... + def paintEvent(self, arg__1:PySide2.QtGui.QPaintEvent) -> None: ... + def setDescription(self, description:str) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + + +class QCommonStyle(PySide2.QtWidgets.QStyle): + + def __init__(self) -> None: ... + + def drawComplexControl(self, cc:PySide2.QtWidgets.QStyle.ComplexControl, opt:PySide2.QtWidgets.QStyleOptionComplex, p:PySide2.QtGui.QPainter, w:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + def drawControl(self, element:PySide2.QtWidgets.QStyle.ControlElement, opt:PySide2.QtWidgets.QStyleOption, p:PySide2.QtGui.QPainter, w:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + def drawPrimitive(self, pe:PySide2.QtWidgets.QStyle.PrimitiveElement, opt:PySide2.QtWidgets.QStyleOption, p:PySide2.QtGui.QPainter, w:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + def generatedIconPixmap(self, iconMode:PySide2.QtGui.QIcon.Mode, pixmap:PySide2.QtGui.QPixmap, opt:PySide2.QtWidgets.QStyleOption) -> PySide2.QtGui.QPixmap: ... + def hitTestComplexControl(self, cc:PySide2.QtWidgets.QStyle.ComplexControl, opt:PySide2.QtWidgets.QStyleOptionComplex, pt:PySide2.QtCore.QPoint, w:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> PySide2.QtWidgets.QStyle.SubControl: ... + def layoutSpacing(self, control1:PySide2.QtWidgets.QSizePolicy.ControlType, control2:PySide2.QtWidgets.QSizePolicy.ControlType, orientation:PySide2.QtCore.Qt.Orientation, option:typing.Optional[PySide2.QtWidgets.QStyleOption]=..., widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> int: ... + def pixelMetric(self, m:PySide2.QtWidgets.QStyle.PixelMetric, opt:typing.Optional[PySide2.QtWidgets.QStyleOption]=..., widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> int: ... + @typing.overload + def polish(self, app:PySide2.QtWidgets.QApplication) -> None: ... + @typing.overload + def polish(self, application:PySide2.QtWidgets.QApplication) -> None: ... + @typing.overload + def polish(self, arg__1:PySide2.QtGui.QPalette) -> None: ... + @typing.overload + def polish(self, widget:PySide2.QtWidgets.QWidget) -> None: ... + def sizeFromContents(self, ct:PySide2.QtWidgets.QStyle.ContentsType, opt:PySide2.QtWidgets.QStyleOption, contentsSize:PySide2.QtCore.QSize, widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> PySide2.QtCore.QSize: ... + def standardIcon(self, standardIcon:PySide2.QtWidgets.QStyle.StandardPixmap, opt:typing.Optional[PySide2.QtWidgets.QStyleOption]=..., widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> PySide2.QtGui.QIcon: ... + def standardPixmap(self, sp:PySide2.QtWidgets.QStyle.StandardPixmap, opt:typing.Optional[PySide2.QtWidgets.QStyleOption]=..., widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> PySide2.QtGui.QPixmap: ... + def styleHint(self, sh:PySide2.QtWidgets.QStyle.StyleHint, opt:typing.Optional[PySide2.QtWidgets.QStyleOption]=..., w:typing.Optional[PySide2.QtWidgets.QWidget]=..., shret:typing.Optional[PySide2.QtWidgets.QStyleHintReturn]=...) -> int: ... + def subControlRect(self, cc:PySide2.QtWidgets.QStyle.ComplexControl, opt:PySide2.QtWidgets.QStyleOptionComplex, sc:PySide2.QtWidgets.QStyle.SubControl, w:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> PySide2.QtCore.QRect: ... + def subElementRect(self, r:PySide2.QtWidgets.QStyle.SubElement, opt:PySide2.QtWidgets.QStyleOption, widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> PySide2.QtCore.QRect: ... + @typing.overload + def unpolish(self, application:PySide2.QtWidgets.QApplication) -> None: ... + @typing.overload + def unpolish(self, widget:PySide2.QtWidgets.QWidget) -> None: ... + + +class QCompleter(PySide2.QtCore.QObject): + PopupCompletion : QCompleter = ... # 0x0 + UnsortedModel : QCompleter = ... # 0x0 + CaseSensitivelySortedModel: QCompleter = ... # 0x1 + UnfilteredPopupCompletion: QCompleter = ... # 0x1 + CaseInsensitivelySortedModel: QCompleter = ... # 0x2 + InlineCompletion : QCompleter = ... # 0x2 + + class CompletionMode(object): + PopupCompletion : QCompleter.CompletionMode = ... # 0x0 + UnfilteredPopupCompletion: QCompleter.CompletionMode = ... # 0x1 + InlineCompletion : QCompleter.CompletionMode = ... # 0x2 + + class ModelSorting(object): + UnsortedModel : QCompleter.ModelSorting = ... # 0x0 + CaseSensitivelySortedModel: QCompleter.ModelSorting = ... # 0x1 + CaseInsensitivelySortedModel: QCompleter.ModelSorting = ... # 0x2 + + @typing.overload + def __init__(self, completions:typing.Sequence, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, model:PySide2.QtCore.QAbstractItemModel, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def caseSensitivity(self) -> PySide2.QtCore.Qt.CaseSensitivity: ... + def complete(self, rect:PySide2.QtCore.QRect=...) -> None: ... + def completionColumn(self) -> int: ... + def completionCount(self) -> int: ... + def completionMode(self) -> PySide2.QtWidgets.QCompleter.CompletionMode: ... + def completionModel(self) -> PySide2.QtCore.QAbstractItemModel: ... + def completionPrefix(self) -> str: ... + def completionRole(self) -> int: ... + def currentCompletion(self) -> str: ... + def currentIndex(self) -> PySide2.QtCore.QModelIndex: ... + def currentRow(self) -> int: ... + def event(self, arg__1:PySide2.QtCore.QEvent) -> bool: ... + def eventFilter(self, o:PySide2.QtCore.QObject, e:PySide2.QtCore.QEvent) -> bool: ... + def filterMode(self) -> PySide2.QtCore.Qt.MatchFlags: ... + def maxVisibleItems(self) -> int: ... + def model(self) -> PySide2.QtCore.QAbstractItemModel: ... + def modelSorting(self) -> PySide2.QtWidgets.QCompleter.ModelSorting: ... + def pathFromIndex(self, index:PySide2.QtCore.QModelIndex) -> str: ... + def popup(self) -> PySide2.QtWidgets.QAbstractItemView: ... + def setCaseSensitivity(self, caseSensitivity:PySide2.QtCore.Qt.CaseSensitivity) -> None: ... + def setCompletionColumn(self, column:int) -> None: ... + def setCompletionMode(self, mode:PySide2.QtWidgets.QCompleter.CompletionMode) -> None: ... + def setCompletionPrefix(self, prefix:str) -> None: ... + def setCompletionRole(self, role:int) -> None: ... + def setCurrentRow(self, row:int) -> bool: ... + def setFilterMode(self, filterMode:PySide2.QtCore.Qt.MatchFlags) -> None: ... + def setMaxVisibleItems(self, maxItems:int) -> None: ... + def setModel(self, c:PySide2.QtCore.QAbstractItemModel) -> None: ... + def setModelSorting(self, sorting:PySide2.QtWidgets.QCompleter.ModelSorting) -> None: ... + def setPopup(self, popup:PySide2.QtWidgets.QAbstractItemView) -> None: ... + def setWidget(self, widget:PySide2.QtWidgets.QWidget) -> None: ... + def setWrapAround(self, wrap:bool) -> None: ... + def splitPath(self, path:str) -> typing.List: ... + def widget(self) -> PySide2.QtWidgets.QWidget: ... + def wrapAround(self) -> bool: ... + + +class QDataWidgetMapper(PySide2.QtCore.QObject): + AutoSubmit : QDataWidgetMapper = ... # 0x0 + ManualSubmit : QDataWidgetMapper = ... # 0x1 + + class SubmitPolicy(object): + AutoSubmit : QDataWidgetMapper.SubmitPolicy = ... # 0x0 + ManualSubmit : QDataWidgetMapper.SubmitPolicy = ... # 0x1 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + @typing.overload + def addMapping(self, widget:PySide2.QtWidgets.QWidget, section:int) -> None: ... + @typing.overload + def addMapping(self, widget:PySide2.QtWidgets.QWidget, section:int, propertyName:PySide2.QtCore.QByteArray) -> None: ... + def clearMapping(self) -> None: ... + def currentIndex(self) -> int: ... + def itemDelegate(self) -> PySide2.QtWidgets.QAbstractItemDelegate: ... + def mappedPropertyName(self, widget:PySide2.QtWidgets.QWidget) -> PySide2.QtCore.QByteArray: ... + def mappedSection(self, widget:PySide2.QtWidgets.QWidget) -> int: ... + def mappedWidgetAt(self, section:int) -> PySide2.QtWidgets.QWidget: ... + def model(self) -> PySide2.QtCore.QAbstractItemModel: ... + def orientation(self) -> PySide2.QtCore.Qt.Orientation: ... + def removeMapping(self, widget:PySide2.QtWidgets.QWidget) -> None: ... + def revert(self) -> None: ... + def rootIndex(self) -> PySide2.QtCore.QModelIndex: ... + def setCurrentIndex(self, index:int) -> None: ... + def setCurrentModelIndex(self, index:PySide2.QtCore.QModelIndex) -> None: ... + def setItemDelegate(self, delegate:PySide2.QtWidgets.QAbstractItemDelegate) -> None: ... + def setModel(self, model:PySide2.QtCore.QAbstractItemModel) -> None: ... + def setOrientation(self, aOrientation:PySide2.QtCore.Qt.Orientation) -> None: ... + def setRootIndex(self, index:PySide2.QtCore.QModelIndex) -> None: ... + def setSubmitPolicy(self, policy:PySide2.QtWidgets.QDataWidgetMapper.SubmitPolicy) -> None: ... + def submit(self) -> bool: ... + def submitPolicy(self) -> PySide2.QtWidgets.QDataWidgetMapper.SubmitPolicy: ... + def toFirst(self) -> None: ... + def toLast(self) -> None: ... + def toNext(self) -> None: ... + def toPrevious(self) -> None: ... + + +class QDateEdit(PySide2.QtWidgets.QDateTimeEdit): + + @typing.overload + def __init__(self, date:PySide2.QtCore.QDate, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + +class QDateTimeEdit(PySide2.QtWidgets.QAbstractSpinBox): + NoSection : QDateTimeEdit = ... # 0x0 + AmPmSection : QDateTimeEdit = ... # 0x1 + MSecSection : QDateTimeEdit = ... # 0x2 + SecondSection : QDateTimeEdit = ... # 0x4 + MinuteSection : QDateTimeEdit = ... # 0x8 + HourSection : QDateTimeEdit = ... # 0x10 + TimeSections_Mask : QDateTimeEdit = ... # 0x1f + DaySection : QDateTimeEdit = ... # 0x100 + MonthSection : QDateTimeEdit = ... # 0x200 + YearSection : QDateTimeEdit = ... # 0x400 + DateSections_Mask : QDateTimeEdit = ... # 0x700 + + class Section(object): + NoSection : QDateTimeEdit.Section = ... # 0x0 + AmPmSection : QDateTimeEdit.Section = ... # 0x1 + MSecSection : QDateTimeEdit.Section = ... # 0x2 + SecondSection : QDateTimeEdit.Section = ... # 0x4 + MinuteSection : QDateTimeEdit.Section = ... # 0x8 + HourSection : QDateTimeEdit.Section = ... # 0x10 + TimeSections_Mask : QDateTimeEdit.Section = ... # 0x1f + DaySection : QDateTimeEdit.Section = ... # 0x100 + MonthSection : QDateTimeEdit.Section = ... # 0x200 + YearSection : QDateTimeEdit.Section = ... # 0x400 + DateSections_Mask : QDateTimeEdit.Section = ... # 0x700 + + class Sections(object): ... + + @typing.overload + def __init__(self, d:PySide2.QtCore.QDate, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, dt:PySide2.QtCore.QDateTime, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, t:PySide2.QtCore.QTime, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, val:typing.Any, parserType:type, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def calendar(self) -> PySide2.QtCore.QCalendar: ... + def calendarPopup(self) -> bool: ... + def calendarWidget(self) -> PySide2.QtWidgets.QCalendarWidget: ... + def clear(self) -> None: ... + def clearMaximumDate(self) -> None: ... + def clearMaximumDateTime(self) -> None: ... + def clearMaximumTime(self) -> None: ... + def clearMinimumDate(self) -> None: ... + def clearMinimumDateTime(self) -> None: ... + def clearMinimumTime(self) -> None: ... + def currentSection(self) -> PySide2.QtWidgets.QDateTimeEdit.Section: ... + def currentSectionIndex(self) -> int: ... + def date(self) -> PySide2.QtCore.QDate: ... + def dateTime(self) -> PySide2.QtCore.QDateTime: ... + def dateTimeFromText(self, text:str) -> PySide2.QtCore.QDateTime: ... + def displayFormat(self) -> str: ... + def displayedSections(self) -> PySide2.QtWidgets.QDateTimeEdit.Sections: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def fixup(self, input:str) -> None: ... + def focusInEvent(self, event:PySide2.QtGui.QFocusEvent) -> None: ... + def focusNextPrevChild(self, next:bool) -> bool: ... + def initStyleOption(self, option:PySide2.QtWidgets.QStyleOptionSpinBox) -> None: ... + def keyPressEvent(self, event:PySide2.QtGui.QKeyEvent) -> None: ... + def maximumDate(self) -> PySide2.QtCore.QDate: ... + def maximumDateTime(self) -> PySide2.QtCore.QDateTime: ... + def maximumTime(self) -> PySide2.QtCore.QTime: ... + def minimumDate(self) -> PySide2.QtCore.QDate: ... + def minimumDateTime(self) -> PySide2.QtCore.QDateTime: ... + def minimumTime(self) -> PySide2.QtCore.QTime: ... + def mousePressEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def paintEvent(self, event:PySide2.QtGui.QPaintEvent) -> None: ... + def sectionAt(self, index:int) -> PySide2.QtWidgets.QDateTimeEdit.Section: ... + def sectionCount(self) -> int: ... + def sectionText(self, section:PySide2.QtWidgets.QDateTimeEdit.Section) -> str: ... + def setCalendar(self, calendar:PySide2.QtCore.QCalendar) -> None: ... + def setCalendarPopup(self, enable:bool) -> None: ... + def setCalendarWidget(self, calendarWidget:PySide2.QtWidgets.QCalendarWidget) -> None: ... + def setCurrentSection(self, section:PySide2.QtWidgets.QDateTimeEdit.Section) -> None: ... + def setCurrentSectionIndex(self, index:int) -> None: ... + def setDate(self, date:PySide2.QtCore.QDate) -> None: ... + def setDateRange(self, min:PySide2.QtCore.QDate, max:PySide2.QtCore.QDate) -> None: ... + def setDateTime(self, dateTime:PySide2.QtCore.QDateTime) -> None: ... + def setDateTimeRange(self, min:PySide2.QtCore.QDateTime, max:PySide2.QtCore.QDateTime) -> None: ... + def setDisplayFormat(self, format:str) -> None: ... + def setMaximumDate(self, max:PySide2.QtCore.QDate) -> None: ... + def setMaximumDateTime(self, dt:PySide2.QtCore.QDateTime) -> None: ... + def setMaximumTime(self, max:PySide2.QtCore.QTime) -> None: ... + def setMinimumDate(self, min:PySide2.QtCore.QDate) -> None: ... + def setMinimumDateTime(self, dt:PySide2.QtCore.QDateTime) -> None: ... + def setMinimumTime(self, min:PySide2.QtCore.QTime) -> None: ... + def setSelectedSection(self, section:PySide2.QtWidgets.QDateTimeEdit.Section) -> None: ... + def setTime(self, time:PySide2.QtCore.QTime) -> None: ... + def setTimeRange(self, min:PySide2.QtCore.QTime, max:PySide2.QtCore.QTime) -> None: ... + def setTimeSpec(self, spec:PySide2.QtCore.Qt.TimeSpec) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def stepBy(self, steps:int) -> None: ... + def stepEnabled(self) -> PySide2.QtWidgets.QAbstractSpinBox.StepEnabled: ... + def textFromDateTime(self, dt:PySide2.QtCore.QDateTime) -> str: ... + def time(self) -> PySide2.QtCore.QTime: ... + def timeSpec(self) -> PySide2.QtCore.Qt.TimeSpec: ... + def validate(self, input:str, pos:int) -> PySide2.QtGui.QValidator.State: ... + def wheelEvent(self, event:PySide2.QtGui.QWheelEvent) -> None: ... + + +class QDesktopWidget(PySide2.QtWidgets.QWidget): + + def __init__(self) -> None: ... + + @typing.overload + def availableGeometry(self, point:PySide2.QtCore.QPoint) -> PySide2.QtCore.QRect: ... + @typing.overload + def availableGeometry(self, screen:int=...) -> PySide2.QtCore.QRect: ... + @typing.overload + def availableGeometry(self, widget:PySide2.QtWidgets.QWidget) -> PySide2.QtCore.QRect: ... + def isVirtualDesktop(self) -> bool: ... + def numScreens(self) -> int: ... + def primaryScreen(self) -> int: ... + def resizeEvent(self, e:PySide2.QtGui.QResizeEvent) -> None: ... + @typing.overload + def screen(self) -> PySide2.QtGui.QScreen: ... + @typing.overload + def screen(self, screen:int=...) -> PySide2.QtWidgets.QWidget: ... + def screenCount(self) -> int: ... + @typing.overload + def screenGeometry(self, point:PySide2.QtCore.QPoint) -> PySide2.QtCore.QRect: ... + @typing.overload + def screenGeometry(self, screen:int=...) -> PySide2.QtCore.QRect: ... + @typing.overload + def screenGeometry(self, widget:PySide2.QtWidgets.QWidget) -> PySide2.QtCore.QRect: ... + @typing.overload + def screenNumber(self, arg__1:PySide2.QtCore.QPoint) -> int: ... + @typing.overload + def screenNumber(self, widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> int: ... + + +class QDial(PySide2.QtWidgets.QAbstractSlider): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def initStyleOption(self, option:PySide2.QtWidgets.QStyleOptionSlider) -> None: ... + def minimumSizeHint(self) -> PySide2.QtCore.QSize: ... + def mouseMoveEvent(self, me:PySide2.QtGui.QMouseEvent) -> None: ... + def mousePressEvent(self, me:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, me:PySide2.QtGui.QMouseEvent) -> None: ... + def notchSize(self) -> int: ... + def notchTarget(self) -> float: ... + def notchesVisible(self) -> bool: ... + def paintEvent(self, pe:PySide2.QtGui.QPaintEvent) -> None: ... + def resizeEvent(self, re:PySide2.QtGui.QResizeEvent) -> None: ... + def setNotchTarget(self, target:float) -> None: ... + def setNotchesVisible(self, visible:bool) -> None: ... + def setWrapping(self, on:bool) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def sliderChange(self, change:PySide2.QtWidgets.QAbstractSlider.SliderChange) -> None: ... + def wrapping(self) -> bool: ... + + +class QDialog(PySide2.QtWidgets.QWidget): + Rejected : QDialog = ... # 0x0 + Accepted : QDialog = ... # 0x1 + + class DialogCode(object): + Rejected : QDialog.DialogCode = ... # 0x0 + Accepted : QDialog.DialogCode = ... # 0x1 + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., f:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + + def accept(self) -> None: ... + def adjustPosition(self, arg__1:PySide2.QtWidgets.QWidget) -> None: ... + def closeEvent(self, arg__1:PySide2.QtGui.QCloseEvent) -> None: ... + def contextMenuEvent(self, arg__1:PySide2.QtGui.QContextMenuEvent) -> None: ... + def done(self, arg__1:int) -> None: ... + def eventFilter(self, arg__1:PySide2.QtCore.QObject, arg__2:PySide2.QtCore.QEvent) -> bool: ... + def exec_(self) -> int: ... + def extension(self) -> PySide2.QtWidgets.QWidget: ... + def isSizeGripEnabled(self) -> bool: ... + def keyPressEvent(self, arg__1:PySide2.QtGui.QKeyEvent) -> None: ... + def minimumSizeHint(self) -> PySide2.QtCore.QSize: ... + def open(self) -> None: ... + def orientation(self) -> PySide2.QtCore.Qt.Orientation: ... + def reject(self) -> None: ... + def resizeEvent(self, arg__1:PySide2.QtGui.QResizeEvent) -> None: ... + def result(self) -> int: ... + def setExtension(self, extension:PySide2.QtWidgets.QWidget) -> None: ... + def setModal(self, modal:bool) -> None: ... + def setOrientation(self, orientation:PySide2.QtCore.Qt.Orientation) -> None: ... + def setResult(self, r:int) -> None: ... + def setSizeGripEnabled(self, arg__1:bool) -> None: ... + def setVisible(self, visible:bool) -> None: ... + def showEvent(self, arg__1:PySide2.QtGui.QShowEvent) -> None: ... + def showExtension(self, arg__1:bool) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + + +class QDialogButtonBox(PySide2.QtWidgets.QWidget): + InvalidRole : QDialogButtonBox = ... # -0x1 + AcceptRole : QDialogButtonBox = ... # 0x0 + NoButton : QDialogButtonBox = ... # 0x0 + WinLayout : QDialogButtonBox = ... # 0x0 + MacLayout : QDialogButtonBox = ... # 0x1 + RejectRole : QDialogButtonBox = ... # 0x1 + DestructiveRole : QDialogButtonBox = ... # 0x2 + KdeLayout : QDialogButtonBox = ... # 0x2 + ActionRole : QDialogButtonBox = ... # 0x3 + GnomeLayout : QDialogButtonBox = ... # 0x3 + HelpRole : QDialogButtonBox = ... # 0x4 + AndroidLayout : QDialogButtonBox = ... # 0x5 + YesRole : QDialogButtonBox = ... # 0x5 + NoRole : QDialogButtonBox = ... # 0x6 + ResetRole : QDialogButtonBox = ... # 0x7 + ApplyRole : QDialogButtonBox = ... # 0x8 + NRoles : QDialogButtonBox = ... # 0x9 + FirstButton : QDialogButtonBox = ... # 0x400 + Ok : QDialogButtonBox = ... # 0x400 + Save : QDialogButtonBox = ... # 0x800 + SaveAll : QDialogButtonBox = ... # 0x1000 + Open : QDialogButtonBox = ... # 0x2000 + Yes : QDialogButtonBox = ... # 0x4000 + YesToAll : QDialogButtonBox = ... # 0x8000 + No : QDialogButtonBox = ... # 0x10000 + NoToAll : QDialogButtonBox = ... # 0x20000 + Abort : QDialogButtonBox = ... # 0x40000 + Retry : QDialogButtonBox = ... # 0x80000 + Ignore : QDialogButtonBox = ... # 0x100000 + Close : QDialogButtonBox = ... # 0x200000 + Cancel : QDialogButtonBox = ... # 0x400000 + Discard : QDialogButtonBox = ... # 0x800000 + Help : QDialogButtonBox = ... # 0x1000000 + Apply : QDialogButtonBox = ... # 0x2000000 + Reset : QDialogButtonBox = ... # 0x4000000 + LastButton : QDialogButtonBox = ... # 0x8000000 + RestoreDefaults : QDialogButtonBox = ... # 0x8000000 + + class ButtonLayout(object): + WinLayout : QDialogButtonBox.ButtonLayout = ... # 0x0 + MacLayout : QDialogButtonBox.ButtonLayout = ... # 0x1 + KdeLayout : QDialogButtonBox.ButtonLayout = ... # 0x2 + GnomeLayout : QDialogButtonBox.ButtonLayout = ... # 0x3 + AndroidLayout : QDialogButtonBox.ButtonLayout = ... # 0x5 + + class ButtonRole(object): + InvalidRole : QDialogButtonBox.ButtonRole = ... # -0x1 + AcceptRole : QDialogButtonBox.ButtonRole = ... # 0x0 + RejectRole : QDialogButtonBox.ButtonRole = ... # 0x1 + DestructiveRole : QDialogButtonBox.ButtonRole = ... # 0x2 + ActionRole : QDialogButtonBox.ButtonRole = ... # 0x3 + HelpRole : QDialogButtonBox.ButtonRole = ... # 0x4 + YesRole : QDialogButtonBox.ButtonRole = ... # 0x5 + NoRole : QDialogButtonBox.ButtonRole = ... # 0x6 + ResetRole : QDialogButtonBox.ButtonRole = ... # 0x7 + ApplyRole : QDialogButtonBox.ButtonRole = ... # 0x8 + NRoles : QDialogButtonBox.ButtonRole = ... # 0x9 + + class StandardButton(object): + NoButton : QDialogButtonBox.StandardButton = ... # 0x0 + FirstButton : QDialogButtonBox.StandardButton = ... # 0x400 + Ok : QDialogButtonBox.StandardButton = ... # 0x400 + Save : QDialogButtonBox.StandardButton = ... # 0x800 + SaveAll : QDialogButtonBox.StandardButton = ... # 0x1000 + Open : QDialogButtonBox.StandardButton = ... # 0x2000 + Yes : QDialogButtonBox.StandardButton = ... # 0x4000 + YesToAll : QDialogButtonBox.StandardButton = ... # 0x8000 + No : QDialogButtonBox.StandardButton = ... # 0x10000 + NoToAll : QDialogButtonBox.StandardButton = ... # 0x20000 + Abort : QDialogButtonBox.StandardButton = ... # 0x40000 + Retry : QDialogButtonBox.StandardButton = ... # 0x80000 + Ignore : QDialogButtonBox.StandardButton = ... # 0x100000 + Close : QDialogButtonBox.StandardButton = ... # 0x200000 + Cancel : QDialogButtonBox.StandardButton = ... # 0x400000 + Discard : QDialogButtonBox.StandardButton = ... # 0x800000 + Help : QDialogButtonBox.StandardButton = ... # 0x1000000 + Apply : QDialogButtonBox.StandardButton = ... # 0x2000000 + Reset : QDialogButtonBox.StandardButton = ... # 0x4000000 + LastButton : QDialogButtonBox.StandardButton = ... # 0x8000000 + RestoreDefaults : QDialogButtonBox.StandardButton = ... # 0x8000000 + + class StandardButtons(object): ... + + @typing.overload + def __init__(self, buttons:PySide2.QtWidgets.QDialogButtonBox.StandardButtons, orientation:PySide2.QtCore.Qt.Orientation, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, buttons:PySide2.QtWidgets.QDialogButtonBox.StandardButtons, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, orientation:PySide2.QtCore.Qt.Orientation, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + @typing.overload + def addButton(self, button:PySide2.QtWidgets.QAbstractButton, role:PySide2.QtWidgets.QDialogButtonBox.ButtonRole) -> None: ... + @typing.overload + def addButton(self, button:PySide2.QtWidgets.QDialogButtonBox.StandardButton) -> PySide2.QtWidgets.QPushButton: ... + @typing.overload + def addButton(self, text:str, role:PySide2.QtWidgets.QDialogButtonBox.ButtonRole) -> PySide2.QtWidgets.QPushButton: ... + def button(self, which:PySide2.QtWidgets.QDialogButtonBox.StandardButton) -> PySide2.QtWidgets.QPushButton: ... + def buttonRole(self, button:PySide2.QtWidgets.QAbstractButton) -> PySide2.QtWidgets.QDialogButtonBox.ButtonRole: ... + def buttons(self) -> typing.List: ... + def centerButtons(self) -> bool: ... + def changeEvent(self, event:PySide2.QtCore.QEvent) -> None: ... + def clear(self) -> None: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def orientation(self) -> PySide2.QtCore.Qt.Orientation: ... + def removeButton(self, button:PySide2.QtWidgets.QAbstractButton) -> None: ... + def setCenterButtons(self, center:bool) -> None: ... + def setOrientation(self, orientation:PySide2.QtCore.Qt.Orientation) -> None: ... + def setStandardButtons(self, buttons:PySide2.QtWidgets.QDialogButtonBox.StandardButtons) -> None: ... + def standardButton(self, button:PySide2.QtWidgets.QAbstractButton) -> PySide2.QtWidgets.QDialogButtonBox.StandardButton: ... + def standardButtons(self) -> PySide2.QtWidgets.QDialogButtonBox.StandardButtons: ... + + +class QDirModel(PySide2.QtCore.QAbstractItemModel): + FileIconRole : QDirModel = ... # 0x1 + FilePathRole : QDirModel = ... # 0x101 + FileNameRole : QDirModel = ... # 0x102 + + class Roles(object): + FileIconRole : QDirModel.Roles = ... # 0x1 + FilePathRole : QDirModel.Roles = ... # 0x101 + FileNameRole : QDirModel.Roles = ... # 0x102 + + @typing.overload + def __init__(self, nameFilters:typing.Sequence, filters:PySide2.QtCore.QDir.Filters, sort:PySide2.QtCore.QDir.SortFlags, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def columnCount(self, parent:PySide2.QtCore.QModelIndex=...) -> int: ... + def data(self, index:PySide2.QtCore.QModelIndex, role:int=...) -> typing.Any: ... + def dropMimeData(self, data:PySide2.QtCore.QMimeData, action:PySide2.QtCore.Qt.DropAction, row:int, column:int, parent:PySide2.QtCore.QModelIndex) -> bool: ... + def fileIcon(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtGui.QIcon: ... + def fileInfo(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QFileInfo: ... + def fileName(self, index:PySide2.QtCore.QModelIndex) -> str: ... + def filePath(self, index:PySide2.QtCore.QModelIndex) -> str: ... + def filter(self) -> PySide2.QtCore.QDir.Filters: ... + def flags(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.Qt.ItemFlags: ... + def hasChildren(self, index:PySide2.QtCore.QModelIndex=...) -> bool: ... + def headerData(self, section:int, orientation:PySide2.QtCore.Qt.Orientation, role:int=...) -> typing.Any: ... + def iconProvider(self) -> PySide2.QtWidgets.QFileIconProvider: ... + @typing.overload + def index(self, path:str, column:int=...) -> PySide2.QtCore.QModelIndex: ... + @typing.overload + def index(self, row:int, column:int, parent:PySide2.QtCore.QModelIndex=...) -> PySide2.QtCore.QModelIndex: ... + def isDir(self, index:PySide2.QtCore.QModelIndex) -> bool: ... + def isReadOnly(self) -> bool: ... + def lazyChildCount(self) -> bool: ... + def mimeData(self, indexes:typing.List) -> PySide2.QtCore.QMimeData: ... + def mimeTypes(self) -> typing.List: ... + def mkdir(self, parent:PySide2.QtCore.QModelIndex, name:str) -> PySide2.QtCore.QModelIndex: ... + def nameFilters(self) -> typing.List: ... + @typing.overload + def parent(self) -> PySide2.QtCore.QObject: ... + @typing.overload + def parent(self, child:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def refresh(self, parent:PySide2.QtCore.QModelIndex=...) -> None: ... + def remove(self, index:PySide2.QtCore.QModelIndex) -> bool: ... + def resolveSymlinks(self) -> bool: ... + def rmdir(self, index:PySide2.QtCore.QModelIndex) -> bool: ... + def rowCount(self, parent:PySide2.QtCore.QModelIndex=...) -> int: ... + def setData(self, index:PySide2.QtCore.QModelIndex, value:typing.Any, role:int=...) -> bool: ... + def setFilter(self, filters:PySide2.QtCore.QDir.Filters) -> None: ... + def setIconProvider(self, provider:PySide2.QtWidgets.QFileIconProvider) -> None: ... + def setLazyChildCount(self, enable:bool) -> None: ... + def setNameFilters(self, filters:typing.Sequence) -> None: ... + def setReadOnly(self, enable:bool) -> None: ... + def setResolveSymlinks(self, enable:bool) -> None: ... + def setSorting(self, sort:PySide2.QtCore.QDir.SortFlags) -> None: ... + def sort(self, column:int, order:PySide2.QtCore.Qt.SortOrder=...) -> None: ... + def sorting(self) -> PySide2.QtCore.QDir.SortFlags: ... + def supportedDropActions(self) -> PySide2.QtCore.Qt.DropActions: ... + + +class QDockWidget(PySide2.QtWidgets.QWidget): + NoDockWidgetFeatures : QDockWidget = ... # 0x0 + DockWidgetClosable : QDockWidget = ... # 0x1 + DockWidgetMovable : QDockWidget = ... # 0x2 + DockWidgetFloatable : QDockWidget = ... # 0x4 + AllDockWidgetFeatures : QDockWidget = ... # 0x7 + DockWidgetVerticalTitleBar: QDockWidget = ... # 0x8 + DockWidgetFeatureMask : QDockWidget = ... # 0xf + Reserved : QDockWidget = ... # 0xff + + class DockWidgetFeature(object): + NoDockWidgetFeatures : QDockWidget.DockWidgetFeature = ... # 0x0 + DockWidgetClosable : QDockWidget.DockWidgetFeature = ... # 0x1 + DockWidgetMovable : QDockWidget.DockWidgetFeature = ... # 0x2 + DockWidgetFloatable : QDockWidget.DockWidgetFeature = ... # 0x4 + AllDockWidgetFeatures : QDockWidget.DockWidgetFeature = ... # 0x7 + DockWidgetVerticalTitleBar: QDockWidget.DockWidgetFeature = ... # 0x8 + DockWidgetFeatureMask : QDockWidget.DockWidgetFeature = ... # 0xf + Reserved : QDockWidget.DockWidgetFeature = ... # 0xff + + class DockWidgetFeatures(object): ... + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., flags:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + @typing.overload + def __init__(self, title:str, parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., flags:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + + def allowedAreas(self) -> PySide2.QtCore.Qt.DockWidgetAreas: ... + def changeEvent(self, event:PySide2.QtCore.QEvent) -> None: ... + def closeEvent(self, event:PySide2.QtGui.QCloseEvent) -> None: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def features(self) -> PySide2.QtWidgets.QDockWidget.DockWidgetFeatures: ... + def initStyleOption(self, option:PySide2.QtWidgets.QStyleOptionDockWidget) -> None: ... + def isAreaAllowed(self, area:PySide2.QtCore.Qt.DockWidgetArea) -> bool: ... + def isFloating(self) -> bool: ... + def paintEvent(self, event:PySide2.QtGui.QPaintEvent) -> None: ... + def setAllowedAreas(self, areas:PySide2.QtCore.Qt.DockWidgetAreas) -> None: ... + def setFeatures(self, features:PySide2.QtWidgets.QDockWidget.DockWidgetFeatures) -> None: ... + def setFloating(self, floating:bool) -> None: ... + def setTitleBarWidget(self, widget:PySide2.QtWidgets.QWidget) -> None: ... + def setWidget(self, widget:PySide2.QtWidgets.QWidget) -> None: ... + def titleBarWidget(self) -> PySide2.QtWidgets.QWidget: ... + def toggleViewAction(self) -> PySide2.QtWidgets.QAction: ... + def widget(self) -> PySide2.QtWidgets.QWidget: ... + + +class QDoubleSpinBox(PySide2.QtWidgets.QAbstractSpinBox): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def cleanText(self) -> str: ... + def decimals(self) -> int: ... + def fixup(self, str:str) -> None: ... + def maximum(self) -> float: ... + def minimum(self) -> float: ... + def prefix(self) -> str: ... + def setDecimals(self, prec:int) -> None: ... + def setMaximum(self, max:float) -> None: ... + def setMinimum(self, min:float) -> None: ... + def setPrefix(self, prefix:str) -> None: ... + def setRange(self, min:float, max:float) -> None: ... + def setSingleStep(self, val:float) -> None: ... + def setStepType(self, stepType:PySide2.QtWidgets.QAbstractSpinBox.StepType) -> None: ... + def setSuffix(self, suffix:str) -> None: ... + def setValue(self, val:float) -> None: ... + def singleStep(self) -> float: ... + def stepType(self) -> PySide2.QtWidgets.QAbstractSpinBox.StepType: ... + def suffix(self) -> str: ... + def textFromValue(self, val:float) -> str: ... + def validate(self, input:str, pos:int) -> PySide2.QtGui.QValidator.State: ... + def value(self) -> float: ... + def valueFromText(self, text:str) -> float: ... + + +class QErrorMessage(PySide2.QtWidgets.QDialog): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def changeEvent(self, e:PySide2.QtCore.QEvent) -> None: ... + def done(self, arg__1:int) -> None: ... + @staticmethod + def qtHandler() -> PySide2.QtWidgets.QErrorMessage: ... + @typing.overload + def showMessage(self, message:str) -> None: ... + @typing.overload + def showMessage(self, message:str, type:str) -> None: ... + + +class QFileDialog(PySide2.QtWidgets.QDialog): + AcceptOpen : QFileDialog = ... # 0x0 + AnyFile : QFileDialog = ... # 0x0 + Detail : QFileDialog = ... # 0x0 + LookIn : QFileDialog = ... # 0x0 + AcceptSave : QFileDialog = ... # 0x1 + ExistingFile : QFileDialog = ... # 0x1 + FileName : QFileDialog = ... # 0x1 + List : QFileDialog = ... # 0x1 + ShowDirsOnly : QFileDialog = ... # 0x1 + Directory : QFileDialog = ... # 0x2 + DontResolveSymlinks : QFileDialog = ... # 0x2 + FileType : QFileDialog = ... # 0x2 + Accept : QFileDialog = ... # 0x3 + ExistingFiles : QFileDialog = ... # 0x3 + DirectoryOnly : QFileDialog = ... # 0x4 + DontConfirmOverwrite : QFileDialog = ... # 0x4 + Reject : QFileDialog = ... # 0x4 + DontUseSheet : QFileDialog = ... # 0x8 + DontUseNativeDialog : QFileDialog = ... # 0x10 + ReadOnly : QFileDialog = ... # 0x20 + HideNameFilterDetails : QFileDialog = ... # 0x40 + DontUseCustomDirectoryIcons: QFileDialog = ... # 0x80 + + class AcceptMode(object): + AcceptOpen : QFileDialog.AcceptMode = ... # 0x0 + AcceptSave : QFileDialog.AcceptMode = ... # 0x1 + + class DialogLabel(object): + LookIn : QFileDialog.DialogLabel = ... # 0x0 + FileName : QFileDialog.DialogLabel = ... # 0x1 + FileType : QFileDialog.DialogLabel = ... # 0x2 + Accept : QFileDialog.DialogLabel = ... # 0x3 + Reject : QFileDialog.DialogLabel = ... # 0x4 + + class FileMode(object): + AnyFile : QFileDialog.FileMode = ... # 0x0 + ExistingFile : QFileDialog.FileMode = ... # 0x1 + Directory : QFileDialog.FileMode = ... # 0x2 + ExistingFiles : QFileDialog.FileMode = ... # 0x3 + DirectoryOnly : QFileDialog.FileMode = ... # 0x4 + + class Option(object): + ShowDirsOnly : QFileDialog.Option = ... # 0x1 + DontResolveSymlinks : QFileDialog.Option = ... # 0x2 + DontConfirmOverwrite : QFileDialog.Option = ... # 0x4 + DontUseSheet : QFileDialog.Option = ... # 0x8 + DontUseNativeDialog : QFileDialog.Option = ... # 0x10 + ReadOnly : QFileDialog.Option = ... # 0x20 + HideNameFilterDetails : QFileDialog.Option = ... # 0x40 + DontUseCustomDirectoryIcons: QFileDialog.Option = ... # 0x80 + + class Options(object): ... + + class ViewMode(object): + Detail : QFileDialog.ViewMode = ... # 0x0 + List : QFileDialog.ViewMode = ... # 0x1 + + @typing.overload + def __init__(self, parent:PySide2.QtWidgets.QWidget, f:PySide2.QtCore.Qt.WindowFlags) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., caption:str=..., directory:str=..., filter:str=...) -> None: ... + + def accept(self) -> None: ... + def acceptMode(self) -> PySide2.QtWidgets.QFileDialog.AcceptMode: ... + def changeEvent(self, e:PySide2.QtCore.QEvent) -> None: ... + def confirmOverwrite(self) -> bool: ... + def defaultSuffix(self) -> str: ... + def directory(self) -> PySide2.QtCore.QDir: ... + def directoryUrl(self) -> PySide2.QtCore.QUrl: ... + def done(self, result:int) -> None: ... + def fileMode(self) -> PySide2.QtWidgets.QFileDialog.FileMode: ... + def filter(self) -> PySide2.QtCore.QDir.Filters: ... + @staticmethod + def getExistingDirectory(parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., caption:str=..., dir:str=..., options:PySide2.QtWidgets.QFileDialog.Options=...) -> str: ... + @staticmethod + def getExistingDirectoryUrl(parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., caption:str=..., dir:PySide2.QtCore.QUrl=..., options:PySide2.QtWidgets.QFileDialog.Options=..., supportedSchemes:typing.Sequence=...) -> PySide2.QtCore.QUrl: ... + @staticmethod + def getOpenFileName(parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., caption:str=..., dir:str=..., filter:str=..., options:PySide2.QtWidgets.QFileDialog.Options=...) -> typing.Tuple: ... + @staticmethod + def getOpenFileNames(parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., caption:str=..., dir:str=..., filter:str=..., options:PySide2.QtWidgets.QFileDialog.Options=...) -> typing.Tuple: ... + @staticmethod + def getOpenFileUrl(parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., caption:str=..., dir:PySide2.QtCore.QUrl=..., filter:str=..., options:PySide2.QtWidgets.QFileDialog.Options=..., supportedSchemes:typing.Sequence=...) -> typing.Tuple: ... + @staticmethod + def getOpenFileUrls(parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., caption:str=..., dir:PySide2.QtCore.QUrl=..., filter:str=..., options:PySide2.QtWidgets.QFileDialog.Options=..., supportedSchemes:typing.Sequence=...) -> typing.Tuple: ... + @staticmethod + def getSaveFileName(parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., caption:str=..., dir:str=..., filter:str=..., options:PySide2.QtWidgets.QFileDialog.Options=...) -> typing.Tuple: ... + @staticmethod + def getSaveFileUrl(parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., caption:str=..., dir:PySide2.QtCore.QUrl=..., filter:str=..., options:PySide2.QtWidgets.QFileDialog.Options=..., supportedSchemes:typing.Sequence=...) -> typing.Tuple: ... + def history(self) -> typing.List: ... + def iconProvider(self) -> PySide2.QtWidgets.QFileIconProvider: ... + def isNameFilterDetailsVisible(self) -> bool: ... + def isReadOnly(self) -> bool: ... + def itemDelegate(self) -> PySide2.QtWidgets.QAbstractItemDelegate: ... + def labelText(self, label:PySide2.QtWidgets.QFileDialog.DialogLabel) -> str: ... + def mimeTypeFilters(self) -> typing.List: ... + def nameFilters(self) -> typing.List: ... + @typing.overload + def open(self) -> None: ... + @typing.overload + def open(self, receiver:PySide2.QtCore.QObject, member:bytes) -> None: ... + def options(self) -> PySide2.QtWidgets.QFileDialog.Options: ... + def proxyModel(self) -> PySide2.QtCore.QAbstractProxyModel: ... + def resolveSymlinks(self) -> bool: ... + def restoreState(self, state:PySide2.QtCore.QByteArray) -> bool: ... + @staticmethod + def saveFileContent(fileContent:PySide2.QtCore.QByteArray, fileNameHint:str=...) -> None: ... + def saveState(self) -> PySide2.QtCore.QByteArray: ... + def selectFile(self, filename:str) -> None: ... + def selectMimeTypeFilter(self, filter:str) -> None: ... + def selectNameFilter(self, filter:str) -> None: ... + def selectUrl(self, url:PySide2.QtCore.QUrl) -> None: ... + def selectedFiles(self) -> typing.List: ... + def selectedMimeTypeFilter(self) -> str: ... + def selectedNameFilter(self) -> str: ... + def selectedUrls(self) -> typing.List: ... + def setAcceptMode(self, mode:PySide2.QtWidgets.QFileDialog.AcceptMode) -> None: ... + def setConfirmOverwrite(self, enabled:bool) -> None: ... + def setDefaultSuffix(self, suffix:str) -> None: ... + @typing.overload + def setDirectory(self, directory:PySide2.QtCore.QDir) -> None: ... + @typing.overload + def setDirectory(self, directory:str) -> None: ... + def setDirectoryUrl(self, directory:PySide2.QtCore.QUrl) -> None: ... + def setFileMode(self, mode:PySide2.QtWidgets.QFileDialog.FileMode) -> None: ... + def setFilter(self, filters:PySide2.QtCore.QDir.Filters) -> None: ... + def setHistory(self, paths:typing.Sequence) -> None: ... + def setIconProvider(self, provider:PySide2.QtWidgets.QFileIconProvider) -> None: ... + def setItemDelegate(self, delegate:PySide2.QtWidgets.QAbstractItemDelegate) -> None: ... + def setLabelText(self, label:PySide2.QtWidgets.QFileDialog.DialogLabel, text:str) -> None: ... + def setMimeTypeFilters(self, filters:typing.Sequence) -> None: ... + def setNameFilter(self, filter:str) -> None: ... + def setNameFilterDetailsVisible(self, enabled:bool) -> None: ... + def setNameFilters(self, filters:typing.Sequence) -> None: ... + def setOption(self, option:PySide2.QtWidgets.QFileDialog.Option, on:bool=...) -> None: ... + def setOptions(self, options:PySide2.QtWidgets.QFileDialog.Options) -> None: ... + def setProxyModel(self, model:PySide2.QtCore.QAbstractProxyModel) -> None: ... + def setReadOnly(self, enabled:bool) -> None: ... + def setResolveSymlinks(self, enabled:bool) -> None: ... + def setSidebarUrls(self, urls:typing.Sequence) -> None: ... + def setSupportedSchemes(self, schemes:typing.Sequence) -> None: ... + def setViewMode(self, mode:PySide2.QtWidgets.QFileDialog.ViewMode) -> None: ... + def setVisible(self, visible:bool) -> None: ... + def sidebarUrls(self) -> typing.List: ... + def supportedSchemes(self) -> typing.List: ... + def testOption(self, option:PySide2.QtWidgets.QFileDialog.Option) -> bool: ... + def viewMode(self) -> PySide2.QtWidgets.QFileDialog.ViewMode: ... + + +class QFileIconProvider(Shiboken.Object): + Computer : QFileIconProvider = ... # 0x0 + Desktop : QFileIconProvider = ... # 0x1 + DontUseCustomDirectoryIcons: QFileIconProvider = ... # 0x1 + Trashcan : QFileIconProvider = ... # 0x2 + Network : QFileIconProvider = ... # 0x3 + Drive : QFileIconProvider = ... # 0x4 + Folder : QFileIconProvider = ... # 0x5 + File : QFileIconProvider = ... # 0x6 + + class IconType(object): + Computer : QFileIconProvider.IconType = ... # 0x0 + Desktop : QFileIconProvider.IconType = ... # 0x1 + Trashcan : QFileIconProvider.IconType = ... # 0x2 + Network : QFileIconProvider.IconType = ... # 0x3 + Drive : QFileIconProvider.IconType = ... # 0x4 + Folder : QFileIconProvider.IconType = ... # 0x5 + File : QFileIconProvider.IconType = ... # 0x6 + + class Option(object): + DontUseCustomDirectoryIcons: QFileIconProvider.Option = ... # 0x1 + + class Options(object): ... + + def __init__(self) -> None: ... + + @typing.overload + def icon(self, info:PySide2.QtCore.QFileInfo) -> PySide2.QtGui.QIcon: ... + @typing.overload + def icon(self, type:PySide2.QtWidgets.QFileIconProvider.IconType) -> PySide2.QtGui.QIcon: ... + def options(self) -> PySide2.QtWidgets.QFileIconProvider.Options: ... + def setOptions(self, options:PySide2.QtWidgets.QFileIconProvider.Options) -> None: ... + def type(self, info:PySide2.QtCore.QFileInfo) -> str: ... + + +class QFileSystemModel(PySide2.QtCore.QAbstractItemModel): + DontWatchForChanges : QFileSystemModel = ... # 0x1 + FileIconRole : QFileSystemModel = ... # 0x1 + DontResolveSymlinks : QFileSystemModel = ... # 0x2 + DontUseCustomDirectoryIcons: QFileSystemModel = ... # 0x4 + FilePathRole : QFileSystemModel = ... # 0x101 + FileNameRole : QFileSystemModel = ... # 0x102 + FilePermissions : QFileSystemModel = ... # 0x103 + + class Option(object): + DontWatchForChanges : QFileSystemModel.Option = ... # 0x1 + DontResolveSymlinks : QFileSystemModel.Option = ... # 0x2 + DontUseCustomDirectoryIcons: QFileSystemModel.Option = ... # 0x4 + + class Options(object): ... + + class Roles(object): + FileIconRole : QFileSystemModel.Roles = ... # 0x1 + FilePathRole : QFileSystemModel.Roles = ... # 0x101 + FileNameRole : QFileSystemModel.Roles = ... # 0x102 + FilePermissions : QFileSystemModel.Roles = ... # 0x103 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def canFetchMore(self, parent:PySide2.QtCore.QModelIndex) -> bool: ... + def columnCount(self, parent:PySide2.QtCore.QModelIndex=...) -> int: ... + def data(self, index:PySide2.QtCore.QModelIndex, role:int=...) -> typing.Any: ... + def dropMimeData(self, data:PySide2.QtCore.QMimeData, action:PySide2.QtCore.Qt.DropAction, row:int, column:int, parent:PySide2.QtCore.QModelIndex) -> bool: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def fetchMore(self, parent:PySide2.QtCore.QModelIndex) -> None: ... + def fileIcon(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtGui.QIcon: ... + def fileInfo(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QFileInfo: ... + def fileName(self, index:PySide2.QtCore.QModelIndex) -> str: ... + def filePath(self, index:PySide2.QtCore.QModelIndex) -> str: ... + def filter(self) -> PySide2.QtCore.QDir.Filters: ... + def flags(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.Qt.ItemFlags: ... + def hasChildren(self, parent:PySide2.QtCore.QModelIndex=...) -> bool: ... + def headerData(self, section:int, orientation:PySide2.QtCore.Qt.Orientation, role:int=...) -> typing.Any: ... + def iconProvider(self) -> PySide2.QtWidgets.QFileIconProvider: ... + @typing.overload + def index(self, path:str, column:int=...) -> PySide2.QtCore.QModelIndex: ... + @typing.overload + def index(self, row:int, column:int, parent:PySide2.QtCore.QModelIndex=...) -> PySide2.QtCore.QModelIndex: ... + def isDir(self, index:PySide2.QtCore.QModelIndex) -> bool: ... + def isReadOnly(self) -> bool: ... + def lastModified(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QDateTime: ... + def mimeData(self, indexes:typing.List) -> PySide2.QtCore.QMimeData: ... + def mimeTypes(self) -> typing.List: ... + def mkdir(self, parent:PySide2.QtCore.QModelIndex, name:str) -> PySide2.QtCore.QModelIndex: ... + def myComputer(self, role:int=...) -> typing.Any: ... + def nameFilterDisables(self) -> bool: ... + def nameFilters(self) -> typing.List: ... + def options(self) -> PySide2.QtWidgets.QFileSystemModel.Options: ... + @typing.overload + def parent(self) -> PySide2.QtCore.QObject: ... + @typing.overload + def parent(self, child:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def remove(self, index:PySide2.QtCore.QModelIndex) -> bool: ... + def resolveSymlinks(self) -> bool: ... + def rmdir(self, index:PySide2.QtCore.QModelIndex) -> bool: ... + def rootDirectory(self) -> PySide2.QtCore.QDir: ... + def rootPath(self) -> str: ... + def rowCount(self, parent:PySide2.QtCore.QModelIndex=...) -> int: ... + def setData(self, index:PySide2.QtCore.QModelIndex, value:typing.Any, role:int=...) -> bool: ... + def setFilter(self, filters:PySide2.QtCore.QDir.Filters) -> None: ... + def setIconProvider(self, provider:PySide2.QtWidgets.QFileIconProvider) -> None: ... + def setNameFilterDisables(self, enable:bool) -> None: ... + def setNameFilters(self, filters:typing.Sequence) -> None: ... + def setOption(self, option:PySide2.QtWidgets.QFileSystemModel.Option, on:bool=...) -> None: ... + def setOptions(self, options:PySide2.QtWidgets.QFileSystemModel.Options) -> None: ... + def setReadOnly(self, enable:bool) -> None: ... + def setResolveSymlinks(self, enable:bool) -> None: ... + def setRootPath(self, path:str) -> PySide2.QtCore.QModelIndex: ... + def sibling(self, row:int, column:int, idx:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def size(self, index:PySide2.QtCore.QModelIndex) -> int: ... + def sort(self, column:int, order:PySide2.QtCore.Qt.SortOrder=...) -> None: ... + def supportedDropActions(self) -> PySide2.QtCore.Qt.DropActions: ... + def testOption(self, option:PySide2.QtWidgets.QFileSystemModel.Option) -> bool: ... + def timerEvent(self, event:PySide2.QtCore.QTimerEvent) -> None: ... + def type(self, index:PySide2.QtCore.QModelIndex) -> str: ... + + +class QFocusFrame(PySide2.QtWidgets.QWidget): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def eventFilter(self, arg__1:PySide2.QtCore.QObject, arg__2:PySide2.QtCore.QEvent) -> bool: ... + def initStyleOption(self, option:PySide2.QtWidgets.QStyleOption) -> None: ... + def paintEvent(self, arg__1:PySide2.QtGui.QPaintEvent) -> None: ... + def setWidget(self, widget:PySide2.QtWidgets.QWidget) -> None: ... + def widget(self) -> PySide2.QtWidgets.QWidget: ... + + +class QFontComboBox(PySide2.QtWidgets.QComboBox): + AllFonts : QFontComboBox = ... # 0x0 + ScalableFonts : QFontComboBox = ... # 0x1 + NonScalableFonts : QFontComboBox = ... # 0x2 + MonospacedFonts : QFontComboBox = ... # 0x4 + ProportionalFonts : QFontComboBox = ... # 0x8 + + class FontFilter(object): + AllFonts : QFontComboBox.FontFilter = ... # 0x0 + ScalableFonts : QFontComboBox.FontFilter = ... # 0x1 + NonScalableFonts : QFontComboBox.FontFilter = ... # 0x2 + MonospacedFonts : QFontComboBox.FontFilter = ... # 0x4 + ProportionalFonts : QFontComboBox.FontFilter = ... # 0x8 + + class FontFilters(object): ... + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def currentFont(self) -> PySide2.QtGui.QFont: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def fontFilters(self) -> PySide2.QtWidgets.QFontComboBox.FontFilters: ... + def setCurrentFont(self, f:PySide2.QtGui.QFont) -> None: ... + def setFontFilters(self, filters:PySide2.QtWidgets.QFontComboBox.FontFilters) -> None: ... + def setWritingSystem(self, arg__1:PySide2.QtGui.QFontDatabase.WritingSystem) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def writingSystem(self) -> PySide2.QtGui.QFontDatabase.WritingSystem: ... + + +class QFontDialog(PySide2.QtWidgets.QDialog): + NoButtons : QFontDialog = ... # 0x1 + DontUseNativeDialog : QFontDialog = ... # 0x2 + ScalableFonts : QFontDialog = ... # 0x4 + NonScalableFonts : QFontDialog = ... # 0x8 + MonospacedFonts : QFontDialog = ... # 0x10 + ProportionalFonts : QFontDialog = ... # 0x20 + + class FontDialogOption(object): + NoButtons : QFontDialog.FontDialogOption = ... # 0x1 + DontUseNativeDialog : QFontDialog.FontDialogOption = ... # 0x2 + ScalableFonts : QFontDialog.FontDialogOption = ... # 0x4 + NonScalableFonts : QFontDialog.FontDialogOption = ... # 0x8 + MonospacedFonts : QFontDialog.FontDialogOption = ... # 0x10 + ProportionalFonts : QFontDialog.FontDialogOption = ... # 0x20 + + class FontDialogOptions(object): ... + + @typing.overload + def __init__(self, initial:PySide2.QtGui.QFont, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def changeEvent(self, event:PySide2.QtCore.QEvent) -> None: ... + def currentFont(self) -> PySide2.QtGui.QFont: ... + def done(self, result:int) -> None: ... + def eventFilter(self, object:PySide2.QtCore.QObject, event:PySide2.QtCore.QEvent) -> bool: ... + @typing.overload + @staticmethod + def getFont(initial:PySide2.QtGui.QFont, parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., title:str=..., options:PySide2.QtWidgets.QFontDialog.FontDialogOptions=...) -> typing.Tuple: ... + @typing.overload + @staticmethod + def getFont(parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> typing.Tuple: ... + @typing.overload + def open(self) -> None: ... + @typing.overload + def open(self, receiver:PySide2.QtCore.QObject, member:bytes) -> None: ... + def options(self) -> PySide2.QtWidgets.QFontDialog.FontDialogOptions: ... + def selectedFont(self) -> PySide2.QtGui.QFont: ... + def setCurrentFont(self, font:PySide2.QtGui.QFont) -> None: ... + def setOption(self, option:PySide2.QtWidgets.QFontDialog.FontDialogOption, on:bool=...) -> None: ... + def setOptions(self, options:PySide2.QtWidgets.QFontDialog.FontDialogOptions) -> None: ... + def setVisible(self, visible:bool) -> None: ... + def testOption(self, option:PySide2.QtWidgets.QFontDialog.FontDialogOption) -> bool: ... + + +class QFormLayout(PySide2.QtWidgets.QLayout): + DontWrapRows : QFormLayout = ... # 0x0 + FieldsStayAtSizeHint : QFormLayout = ... # 0x0 + LabelRole : QFormLayout = ... # 0x0 + ExpandingFieldsGrow : QFormLayout = ... # 0x1 + FieldRole : QFormLayout = ... # 0x1 + WrapLongRows : QFormLayout = ... # 0x1 + AllNonFixedFieldsGrow : QFormLayout = ... # 0x2 + SpanningRole : QFormLayout = ... # 0x2 + WrapAllRows : QFormLayout = ... # 0x2 + + class FieldGrowthPolicy(object): + FieldsStayAtSizeHint : QFormLayout.FieldGrowthPolicy = ... # 0x0 + ExpandingFieldsGrow : QFormLayout.FieldGrowthPolicy = ... # 0x1 + AllNonFixedFieldsGrow : QFormLayout.FieldGrowthPolicy = ... # 0x2 + + class ItemRole(object): + LabelRole : QFormLayout.ItemRole = ... # 0x0 + FieldRole : QFormLayout.ItemRole = ... # 0x1 + SpanningRole : QFormLayout.ItemRole = ... # 0x2 + + class RowWrapPolicy(object): + DontWrapRows : QFormLayout.RowWrapPolicy = ... # 0x0 + WrapLongRows : QFormLayout.RowWrapPolicy = ... # 0x1 + WrapAllRows : QFormLayout.RowWrapPolicy = ... # 0x2 + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def addItem(self, item:PySide2.QtWidgets.QLayoutItem) -> None: ... + @typing.overload + def addRow(self, label:PySide2.QtWidgets.QWidget, field:PySide2.QtWidgets.QLayout) -> None: ... + @typing.overload + def addRow(self, label:PySide2.QtWidgets.QWidget, field:PySide2.QtWidgets.QWidget) -> None: ... + @typing.overload + def addRow(self, labelText:str, field:PySide2.QtWidgets.QLayout) -> None: ... + @typing.overload + def addRow(self, labelText:str, field:PySide2.QtWidgets.QWidget) -> None: ... + @typing.overload + def addRow(self, layout:PySide2.QtWidgets.QLayout) -> None: ... + @typing.overload + def addRow(self, widget:PySide2.QtWidgets.QWidget) -> None: ... + def count(self) -> int: ... + def expandingDirections(self) -> PySide2.QtCore.Qt.Orientations: ... + def fieldGrowthPolicy(self) -> PySide2.QtWidgets.QFormLayout.FieldGrowthPolicy: ... + def formAlignment(self) -> PySide2.QtCore.Qt.Alignment: ... + def getItemPosition(self, index:int, rolePtr:PySide2.QtWidgets.QFormLayout.ItemRole) -> int: ... + def getLayoutPosition(self, layout:PySide2.QtWidgets.QLayout, rolePtr:PySide2.QtWidgets.QFormLayout.ItemRole) -> int: ... + def getWidgetPosition(self, widget:PySide2.QtWidgets.QWidget, rolePtr:PySide2.QtWidgets.QFormLayout.ItemRole) -> int: ... + def hasHeightForWidth(self) -> bool: ... + def heightForWidth(self, width:int) -> int: ... + def horizontalSpacing(self) -> int: ... + @typing.overload + def insertRow(self, row:int, label:PySide2.QtWidgets.QWidget, field:PySide2.QtWidgets.QLayout) -> None: ... + @typing.overload + def insertRow(self, row:int, label:PySide2.QtWidgets.QWidget, field:PySide2.QtWidgets.QWidget) -> None: ... + @typing.overload + def insertRow(self, row:int, labelText:str, field:PySide2.QtWidgets.QLayout) -> None: ... + @typing.overload + def insertRow(self, row:int, labelText:str, field:PySide2.QtWidgets.QWidget) -> None: ... + @typing.overload + def insertRow(self, row:int, layout:PySide2.QtWidgets.QLayout) -> None: ... + @typing.overload + def insertRow(self, row:int, widget:PySide2.QtWidgets.QWidget) -> None: ... + def invalidate(self) -> None: ... + @typing.overload + def itemAt(self, index:int) -> PySide2.QtWidgets.QLayoutItem: ... + @typing.overload + def itemAt(self, row:int, role:PySide2.QtWidgets.QFormLayout.ItemRole) -> PySide2.QtWidgets.QLayoutItem: ... + def labelAlignment(self) -> PySide2.QtCore.Qt.Alignment: ... + @typing.overload + def labelForField(self, field:PySide2.QtWidgets.QLayout) -> PySide2.QtWidgets.QWidget: ... + @typing.overload + def labelForField(self, field:PySide2.QtWidgets.QWidget) -> PySide2.QtWidgets.QWidget: ... + def minimumSize(self) -> PySide2.QtCore.QSize: ... + @typing.overload + def removeRow(self, layout:PySide2.QtWidgets.QLayout) -> None: ... + @typing.overload + def removeRow(self, row:int) -> None: ... + @typing.overload + def removeRow(self, widget:PySide2.QtWidgets.QWidget) -> None: ... + def rowCount(self) -> int: ... + def rowWrapPolicy(self) -> PySide2.QtWidgets.QFormLayout.RowWrapPolicy: ... + def setFieldGrowthPolicy(self, policy:PySide2.QtWidgets.QFormLayout.FieldGrowthPolicy) -> None: ... + def setFormAlignment(self, alignment:PySide2.QtCore.Qt.Alignment) -> None: ... + def setGeometry(self, rect:PySide2.QtCore.QRect) -> None: ... + def setHorizontalSpacing(self, spacing:int) -> None: ... + def setItem(self, row:int, role:PySide2.QtWidgets.QFormLayout.ItemRole, item:PySide2.QtWidgets.QLayoutItem) -> None: ... + def setLabelAlignment(self, alignment:PySide2.QtCore.Qt.Alignment) -> None: ... + def setLayout(self, row:int, role:PySide2.QtWidgets.QFormLayout.ItemRole, layout:PySide2.QtWidgets.QLayout) -> None: ... + def setRowWrapPolicy(self, policy:PySide2.QtWidgets.QFormLayout.RowWrapPolicy) -> None: ... + def setSpacing(self, arg__1:int) -> None: ... + def setVerticalSpacing(self, spacing:int) -> None: ... + def setWidget(self, row:int, role:PySide2.QtWidgets.QFormLayout.ItemRole, widget:PySide2.QtWidgets.QWidget) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def spacing(self) -> int: ... + def takeAt(self, index:int) -> PySide2.QtWidgets.QLayoutItem: ... + def verticalSpacing(self) -> int: ... + + +class QFrame(PySide2.QtWidgets.QWidget): + NoFrame : QFrame = ... # 0x0 + Box : QFrame = ... # 0x1 + Panel : QFrame = ... # 0x2 + WinPanel : QFrame = ... # 0x3 + HLine : QFrame = ... # 0x4 + VLine : QFrame = ... # 0x5 + StyledPanel : QFrame = ... # 0x6 + Shape_Mask : QFrame = ... # 0xf + Plain : QFrame = ... # 0x10 + Raised : QFrame = ... # 0x20 + Sunken : QFrame = ... # 0x30 + Shadow_Mask : QFrame = ... # 0xf0 + + class Shadow(object): + Plain : QFrame.Shadow = ... # 0x10 + Raised : QFrame.Shadow = ... # 0x20 + Sunken : QFrame.Shadow = ... # 0x30 + + class Shape(object): + NoFrame : QFrame.Shape = ... # 0x0 + Box : QFrame.Shape = ... # 0x1 + Panel : QFrame.Shape = ... # 0x2 + WinPanel : QFrame.Shape = ... # 0x3 + HLine : QFrame.Shape = ... # 0x4 + VLine : QFrame.Shape = ... # 0x5 + StyledPanel : QFrame.Shape = ... # 0x6 + + class StyleMask(object): + Shape_Mask : QFrame.StyleMask = ... # 0xf + Shadow_Mask : QFrame.StyleMask = ... # 0xf0 + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., f:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + + def changeEvent(self, arg__1:PySide2.QtCore.QEvent) -> None: ... + def drawFrame(self, arg__1:PySide2.QtGui.QPainter) -> None: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def frameRect(self) -> PySide2.QtCore.QRect: ... + def frameShadow(self) -> PySide2.QtWidgets.QFrame.Shadow: ... + def frameShape(self) -> PySide2.QtWidgets.QFrame.Shape: ... + def frameStyle(self) -> int: ... + def frameWidth(self) -> int: ... + def initStyleOption(self, option:PySide2.QtWidgets.QStyleOptionFrame) -> None: ... + def lineWidth(self) -> int: ... + def midLineWidth(self) -> int: ... + def paintEvent(self, arg__1:PySide2.QtGui.QPaintEvent) -> None: ... + def setFrameRect(self, arg__1:PySide2.QtCore.QRect) -> None: ... + def setFrameShadow(self, arg__1:PySide2.QtWidgets.QFrame.Shadow) -> None: ... + def setFrameShape(self, arg__1:PySide2.QtWidgets.QFrame.Shape) -> None: ... + def setFrameStyle(self, arg__1:int) -> None: ... + def setLineWidth(self, arg__1:int) -> None: ... + def setMidLineWidth(self, arg__1:int) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + + +class QGesture(PySide2.QtCore.QObject): + CancelNone : QGesture = ... # 0x0 + CancelAllInContext : QGesture = ... # 0x1 + + class GestureCancelPolicy(object): + CancelNone : QGesture.GestureCancelPolicy = ... # 0x0 + CancelAllInContext : QGesture.GestureCancelPolicy = ... # 0x1 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def gestureCancelPolicy(self) -> PySide2.QtWidgets.QGesture.GestureCancelPolicy: ... + def gestureType(self) -> PySide2.QtCore.Qt.GestureType: ... + def hasHotSpot(self) -> bool: ... + def hotSpot(self) -> PySide2.QtCore.QPointF: ... + def setGestureCancelPolicy(self, policy:PySide2.QtWidgets.QGesture.GestureCancelPolicy) -> None: ... + def setHotSpot(self, value:PySide2.QtCore.QPointF) -> None: ... + def state(self) -> PySide2.QtCore.Qt.GestureState: ... + def unsetHotSpot(self) -> None: ... + + +class QGestureEvent(PySide2.QtCore.QEvent): + + def __init__(self, gestures:typing.Sequence) -> None: ... + + @typing.overload + def accept(self) -> None: ... + @typing.overload + def accept(self, arg__1:PySide2.QtCore.Qt.GestureType) -> None: ... + @typing.overload + def accept(self, arg__1:PySide2.QtWidgets.QGesture) -> None: ... + def activeGestures(self) -> typing.List: ... + def canceledGestures(self) -> typing.List: ... + def gesture(self, type:PySide2.QtCore.Qt.GestureType) -> PySide2.QtWidgets.QGesture: ... + def gestures(self) -> typing.List: ... + @typing.overload + def ignore(self) -> None: ... + @typing.overload + def ignore(self, arg__1:PySide2.QtCore.Qt.GestureType) -> None: ... + @typing.overload + def ignore(self, arg__1:PySide2.QtWidgets.QGesture) -> None: ... + @typing.overload + def isAccepted(self) -> bool: ... + @typing.overload + def isAccepted(self, arg__1:PySide2.QtCore.Qt.GestureType) -> bool: ... + @typing.overload + def isAccepted(self, arg__1:PySide2.QtWidgets.QGesture) -> bool: ... + def mapToGraphicsScene(self, gesturePoint:PySide2.QtCore.QPointF) -> PySide2.QtCore.QPointF: ... + @typing.overload + def setAccepted(self, accepted:bool) -> None: ... + @typing.overload + def setAccepted(self, arg__1:PySide2.QtCore.Qt.GestureType, arg__2:bool) -> None: ... + @typing.overload + def setAccepted(self, arg__1:PySide2.QtWidgets.QGesture, arg__2:bool) -> None: ... + def setWidget(self, widget:PySide2.QtWidgets.QWidget) -> None: ... + def widget(self) -> PySide2.QtWidgets.QWidget: ... + + +class QGestureRecognizer(Shiboken.Object): + Ignore : QGestureRecognizer = ... # 0x1 + MayBeGesture : QGestureRecognizer = ... # 0x2 + TriggerGesture : QGestureRecognizer = ... # 0x4 + FinishGesture : QGestureRecognizer = ... # 0x8 + CancelGesture : QGestureRecognizer = ... # 0x10 + ResultState_Mask : QGestureRecognizer = ... # 0xff + ConsumeEventHint : QGestureRecognizer = ... # 0x100 + ResultHint_Mask : QGestureRecognizer = ... # 0xff00 + + class Result(object): ... + + class ResultFlag(object): + Ignore : QGestureRecognizer.ResultFlag = ... # 0x1 + MayBeGesture : QGestureRecognizer.ResultFlag = ... # 0x2 + TriggerGesture : QGestureRecognizer.ResultFlag = ... # 0x4 + FinishGesture : QGestureRecognizer.ResultFlag = ... # 0x8 + CancelGesture : QGestureRecognizer.ResultFlag = ... # 0x10 + ResultState_Mask : QGestureRecognizer.ResultFlag = ... # 0xff + ConsumeEventHint : QGestureRecognizer.ResultFlag = ... # 0x100 + ResultHint_Mask : QGestureRecognizer.ResultFlag = ... # 0xff00 + + def __init__(self) -> None: ... + + def create(self, target:PySide2.QtCore.QObject) -> PySide2.QtWidgets.QGesture: ... + def recognize(self, state:PySide2.QtWidgets.QGesture, watched:PySide2.QtCore.QObject, event:PySide2.QtCore.QEvent) -> PySide2.QtWidgets.QGestureRecognizer.Result: ... + @staticmethod + def registerRecognizer(recognizer:PySide2.QtWidgets.QGestureRecognizer) -> PySide2.QtCore.Qt.GestureType: ... + def reset(self, state:PySide2.QtWidgets.QGesture) -> None: ... + @staticmethod + def unregisterRecognizer(type:PySide2.QtCore.Qt.GestureType) -> None: ... + + +class QGraphicsAnchor(PySide2.QtCore.QObject): + def setSizePolicy(self, policy:PySide2.QtWidgets.QSizePolicy.Policy) -> None: ... + def setSpacing(self, spacing:float) -> None: ... + def sizePolicy(self) -> PySide2.QtWidgets.QSizePolicy.Policy: ... + def spacing(self) -> float: ... + def unsetSpacing(self) -> None: ... + + +class QGraphicsAnchorLayout(PySide2.QtWidgets.QGraphicsLayout): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QGraphicsLayoutItem]=...) -> None: ... + + def addAnchor(self, firstItem:PySide2.QtWidgets.QGraphicsLayoutItem, firstEdge:PySide2.QtCore.Qt.AnchorPoint, secondItem:PySide2.QtWidgets.QGraphicsLayoutItem, secondEdge:PySide2.QtCore.Qt.AnchorPoint) -> PySide2.QtWidgets.QGraphicsAnchor: ... + def addAnchors(self, firstItem:PySide2.QtWidgets.QGraphicsLayoutItem, secondItem:PySide2.QtWidgets.QGraphicsLayoutItem, orientations:PySide2.QtCore.Qt.Orientations=...) -> None: ... + def addCornerAnchors(self, firstItem:PySide2.QtWidgets.QGraphicsLayoutItem, firstCorner:PySide2.QtCore.Qt.Corner, secondItem:PySide2.QtWidgets.QGraphicsLayoutItem, secondCorner:PySide2.QtCore.Qt.Corner) -> None: ... + def anchor(self, firstItem:PySide2.QtWidgets.QGraphicsLayoutItem, firstEdge:PySide2.QtCore.Qt.AnchorPoint, secondItem:PySide2.QtWidgets.QGraphicsLayoutItem, secondEdge:PySide2.QtCore.Qt.AnchorPoint) -> PySide2.QtWidgets.QGraphicsAnchor: ... + def count(self) -> int: ... + def horizontalSpacing(self) -> float: ... + def invalidate(self) -> None: ... + def itemAt(self, index:int) -> PySide2.QtWidgets.QGraphicsLayoutItem: ... + def removeAt(self, index:int) -> None: ... + def setGeometry(self, rect:PySide2.QtCore.QRectF) -> None: ... + def setHorizontalSpacing(self, spacing:float) -> None: ... + def setSpacing(self, spacing:float) -> None: ... + def setVerticalSpacing(self, spacing:float) -> None: ... + def sizeHint(self, which:PySide2.QtCore.Qt.SizeHint, constraint:PySide2.QtCore.QSizeF=...) -> PySide2.QtCore.QSizeF: ... + def verticalSpacing(self) -> float: ... + + +class QGraphicsBlurEffect(PySide2.QtWidgets.QGraphicsEffect): + PerformanceHint : QGraphicsBlurEffect = ... # 0x0 + QualityHint : QGraphicsBlurEffect = ... # 0x1 + AnimationHint : QGraphicsBlurEffect = ... # 0x2 + + class BlurHint(object): + PerformanceHint : QGraphicsBlurEffect.BlurHint = ... # 0x0 + QualityHint : QGraphicsBlurEffect.BlurHint = ... # 0x1 + AnimationHint : QGraphicsBlurEffect.BlurHint = ... # 0x2 + + class BlurHints(object): ... + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def blurHints(self) -> PySide2.QtWidgets.QGraphicsBlurEffect.BlurHints: ... + def blurRadius(self) -> float: ... + def boundingRectFor(self, rect:PySide2.QtCore.QRectF) -> PySide2.QtCore.QRectF: ... + def draw(self, painter:PySide2.QtGui.QPainter) -> None: ... + def setBlurHints(self, hints:PySide2.QtWidgets.QGraphicsBlurEffect.BlurHints) -> None: ... + def setBlurRadius(self, blurRadius:float) -> None: ... + + +class QGraphicsColorizeEffect(PySide2.QtWidgets.QGraphicsEffect): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def color(self) -> PySide2.QtGui.QColor: ... + def draw(self, painter:PySide2.QtGui.QPainter) -> None: ... + def setColor(self, c:PySide2.QtGui.QColor) -> None: ... + def setStrength(self, strength:float) -> None: ... + def strength(self) -> float: ... + + +class QGraphicsDropShadowEffect(PySide2.QtWidgets.QGraphicsEffect): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def blurRadius(self) -> float: ... + def boundingRectFor(self, rect:PySide2.QtCore.QRectF) -> PySide2.QtCore.QRectF: ... + def color(self) -> PySide2.QtGui.QColor: ... + def draw(self, painter:PySide2.QtGui.QPainter) -> None: ... + def offset(self) -> PySide2.QtCore.QPointF: ... + def setBlurRadius(self, blurRadius:float) -> None: ... + def setColor(self, color:PySide2.QtGui.QColor) -> None: ... + @typing.overload + def setOffset(self, d:float) -> None: ... + @typing.overload + def setOffset(self, dx:float, dy:float) -> None: ... + @typing.overload + def setOffset(self, ofs:PySide2.QtCore.QPointF) -> None: ... + def setXOffset(self, dx:float) -> None: ... + def setYOffset(self, dy:float) -> None: ... + def xOffset(self) -> float: ... + def yOffset(self) -> float: ... + + +class QGraphicsEffect(PySide2.QtCore.QObject): + NoPad : QGraphicsEffect = ... # 0x0 + PadToTransparentBorder : QGraphicsEffect = ... # 0x1 + SourceAttached : QGraphicsEffect = ... # 0x1 + PadToEffectiveBoundingRect: QGraphicsEffect = ... # 0x2 + SourceDetached : QGraphicsEffect = ... # 0x2 + SourceBoundingRectChanged: QGraphicsEffect = ... # 0x4 + SourceInvalidated : QGraphicsEffect = ... # 0x8 + + class ChangeFlag(object): + SourceAttached : QGraphicsEffect.ChangeFlag = ... # 0x1 + SourceDetached : QGraphicsEffect.ChangeFlag = ... # 0x2 + SourceBoundingRectChanged: QGraphicsEffect.ChangeFlag = ... # 0x4 + SourceInvalidated : QGraphicsEffect.ChangeFlag = ... # 0x8 + + class ChangeFlags(object): ... + + class PixmapPadMode(object): + NoPad : QGraphicsEffect.PixmapPadMode = ... # 0x0 + PadToTransparentBorder : QGraphicsEffect.PixmapPadMode = ... # 0x1 + PadToEffectiveBoundingRect: QGraphicsEffect.PixmapPadMode = ... # 0x2 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def boundingRect(self) -> PySide2.QtCore.QRectF: ... + def boundingRectFor(self, sourceRect:PySide2.QtCore.QRectF) -> PySide2.QtCore.QRectF: ... + def draw(self, painter:PySide2.QtGui.QPainter) -> None: ... + def drawSource(self, painter:PySide2.QtGui.QPainter) -> None: ... + def isEnabled(self) -> bool: ... + def setEnabled(self, enable:bool) -> None: ... + def sourceBoundingRect(self, system:PySide2.QtCore.Qt.CoordinateSystem=...) -> PySide2.QtCore.QRectF: ... + def sourceChanged(self, flags:PySide2.QtWidgets.QGraphicsEffect.ChangeFlags) -> None: ... + def sourceIsPixmap(self) -> bool: ... + def sourcePixmap(self, system:PySide2.QtCore.Qt.CoordinateSystem=..., offset:typing.Optional[PySide2.QtCore.QPoint]=..., mode:PySide2.QtWidgets.QGraphicsEffect.PixmapPadMode=...) -> PySide2.QtGui.QPixmap: ... + def update(self) -> None: ... + def updateBoundingRect(self) -> None: ... + + +class QGraphicsEllipseItem(PySide2.QtWidgets.QAbstractGraphicsShapeItem): + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=...) -> None: ... + @typing.overload + def __init__(self, rect:PySide2.QtCore.QRectF, parent:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=...) -> None: ... + @typing.overload + def __init__(self, x:float, y:float, w:float, h:float, parent:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=...) -> None: ... + + def boundingRect(self) -> PySide2.QtCore.QRectF: ... + def contains(self, point:PySide2.QtCore.QPointF) -> bool: ... + def extension(self, variant:typing.Any) -> typing.Any: ... + def isObscuredBy(self, item:PySide2.QtWidgets.QGraphicsItem) -> bool: ... + def opaqueArea(self) -> PySide2.QtGui.QPainterPath: ... + def paint(self, painter:PySide2.QtGui.QPainter, option:PySide2.QtWidgets.QStyleOptionGraphicsItem, widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + def rect(self) -> PySide2.QtCore.QRectF: ... + @typing.overload + def setRect(self, rect:PySide2.QtCore.QRectF) -> None: ... + @typing.overload + def setRect(self, x:float, y:float, w:float, h:float) -> None: ... + def setSpanAngle(self, angle:int) -> None: ... + def setStartAngle(self, angle:int) -> None: ... + def shape(self) -> PySide2.QtGui.QPainterPath: ... + def spanAngle(self) -> int: ... + def startAngle(self) -> int: ... + def type(self) -> int: ... + + +class QGraphicsGridLayout(PySide2.QtWidgets.QGraphicsLayout): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QGraphicsLayoutItem]=...) -> None: ... + + @typing.overload + def addItem(self, item:PySide2.QtWidgets.QGraphicsLayoutItem, row:int, column:int, alignment:PySide2.QtCore.Qt.Alignment=...) -> None: ... + @typing.overload + def addItem(self, item:PySide2.QtWidgets.QGraphicsLayoutItem, row:int, column:int, rowSpan:int, columnSpan:int, alignment:PySide2.QtCore.Qt.Alignment=...) -> None: ... + def alignment(self, item:PySide2.QtWidgets.QGraphicsLayoutItem) -> PySide2.QtCore.Qt.Alignment: ... + def columnAlignment(self, column:int) -> PySide2.QtCore.Qt.Alignment: ... + def columnCount(self) -> int: ... + def columnMaximumWidth(self, column:int) -> float: ... + def columnMinimumWidth(self, column:int) -> float: ... + def columnPreferredWidth(self, column:int) -> float: ... + def columnSpacing(self, column:int) -> float: ... + def columnStretchFactor(self, column:int) -> int: ... + def count(self) -> int: ... + def horizontalSpacing(self) -> float: ... + def invalidate(self) -> None: ... + @typing.overload + def itemAt(self, index:int) -> PySide2.QtWidgets.QGraphicsLayoutItem: ... + @typing.overload + def itemAt(self, row:int, column:int) -> PySide2.QtWidgets.QGraphicsLayoutItem: ... + def removeAt(self, index:int) -> None: ... + def removeItem(self, item:PySide2.QtWidgets.QGraphicsLayoutItem) -> None: ... + def rowAlignment(self, row:int) -> PySide2.QtCore.Qt.Alignment: ... + def rowCount(self) -> int: ... + def rowMaximumHeight(self, row:int) -> float: ... + def rowMinimumHeight(self, row:int) -> float: ... + def rowPreferredHeight(self, row:int) -> float: ... + def rowSpacing(self, row:int) -> float: ... + def rowStretchFactor(self, row:int) -> int: ... + def setAlignment(self, item:PySide2.QtWidgets.QGraphicsLayoutItem, alignment:PySide2.QtCore.Qt.Alignment) -> None: ... + def setColumnAlignment(self, column:int, alignment:PySide2.QtCore.Qt.Alignment) -> None: ... + def setColumnFixedWidth(self, column:int, width:float) -> None: ... + def setColumnMaximumWidth(self, column:int, width:float) -> None: ... + def setColumnMinimumWidth(self, column:int, width:float) -> None: ... + def setColumnPreferredWidth(self, column:int, width:float) -> None: ... + def setColumnSpacing(self, column:int, spacing:float) -> None: ... + def setColumnStretchFactor(self, column:int, stretch:int) -> None: ... + def setGeometry(self, rect:PySide2.QtCore.QRectF) -> None: ... + def setHorizontalSpacing(self, spacing:float) -> None: ... + def setRowAlignment(self, row:int, alignment:PySide2.QtCore.Qt.Alignment) -> None: ... + def setRowFixedHeight(self, row:int, height:float) -> None: ... + def setRowMaximumHeight(self, row:int, height:float) -> None: ... + def setRowMinimumHeight(self, row:int, height:float) -> None: ... + def setRowPreferredHeight(self, row:int, height:float) -> None: ... + def setRowSpacing(self, row:int, spacing:float) -> None: ... + def setRowStretchFactor(self, row:int, stretch:int) -> None: ... + def setSpacing(self, spacing:float) -> None: ... + def setVerticalSpacing(self, spacing:float) -> None: ... + def sizeHint(self, which:PySide2.QtCore.Qt.SizeHint, constraint:PySide2.QtCore.QSizeF=...) -> PySide2.QtCore.QSizeF: ... + def verticalSpacing(self) -> float: ... + + +class QGraphicsItem(Shiboken.Object): + UserExtension : QGraphicsItem = ... # -0x80000000 + ItemPositionChange : QGraphicsItem = ... # 0x0 + NoCache : QGraphicsItem = ... # 0x0 + NonModal : QGraphicsItem = ... # 0x0 + ItemCoordinateCache : QGraphicsItem = ... # 0x1 + ItemIsMovable : QGraphicsItem = ... # 0x1 + ItemMatrixChange : QGraphicsItem = ... # 0x1 + PanelModal : QGraphicsItem = ... # 0x1 + DeviceCoordinateCache : QGraphicsItem = ... # 0x2 + ItemIsSelectable : QGraphicsItem = ... # 0x2 + ItemVisibleChange : QGraphicsItem = ... # 0x2 + SceneModal : QGraphicsItem = ... # 0x2 + ItemEnabledChange : QGraphicsItem = ... # 0x3 + ItemIsFocusable : QGraphicsItem = ... # 0x4 + ItemSelectedChange : QGraphicsItem = ... # 0x4 + ItemParentChange : QGraphicsItem = ... # 0x5 + ItemChildAddedChange : QGraphicsItem = ... # 0x6 + ItemChildRemovedChange : QGraphicsItem = ... # 0x7 + ItemClipsToShape : QGraphicsItem = ... # 0x8 + ItemTransformChange : QGraphicsItem = ... # 0x8 + ItemPositionHasChanged : QGraphicsItem = ... # 0x9 + ItemTransformHasChanged : QGraphicsItem = ... # 0xa + ItemSceneChange : QGraphicsItem = ... # 0xb + ItemVisibleHasChanged : QGraphicsItem = ... # 0xc + ItemEnabledHasChanged : QGraphicsItem = ... # 0xd + ItemSelectedHasChanged : QGraphicsItem = ... # 0xe + ItemParentHasChanged : QGraphicsItem = ... # 0xf + ItemClipsChildrenToShape : QGraphicsItem = ... # 0x10 + ItemSceneHasChanged : QGraphicsItem = ... # 0x10 + ItemCursorChange : QGraphicsItem = ... # 0x11 + ItemCursorHasChanged : QGraphicsItem = ... # 0x12 + ItemToolTipChange : QGraphicsItem = ... # 0x13 + ItemToolTipHasChanged : QGraphicsItem = ... # 0x14 + ItemFlagsChange : QGraphicsItem = ... # 0x15 + ItemFlagsHaveChanged : QGraphicsItem = ... # 0x16 + ItemZValueChange : QGraphicsItem = ... # 0x17 + ItemZValueHasChanged : QGraphicsItem = ... # 0x18 + ItemOpacityChange : QGraphicsItem = ... # 0x19 + ItemOpacityHasChanged : QGraphicsItem = ... # 0x1a + ItemScenePositionHasChanged: QGraphicsItem = ... # 0x1b + ItemRotationChange : QGraphicsItem = ... # 0x1c + ItemRotationHasChanged : QGraphicsItem = ... # 0x1d + ItemScaleChange : QGraphicsItem = ... # 0x1e + ItemScaleHasChanged : QGraphicsItem = ... # 0x1f + ItemIgnoresTransformations: QGraphicsItem = ... # 0x20 + ItemTransformOriginPointChange: QGraphicsItem = ... # 0x20 + ItemTransformOriginPointHasChanged: QGraphicsItem = ... # 0x21 + ItemIgnoresParentOpacity : QGraphicsItem = ... # 0x40 + ItemDoesntPropagateOpacityToChildren: QGraphicsItem = ... # 0x80 + ItemStacksBehindParent : QGraphicsItem = ... # 0x100 + ItemUsesExtendedStyleOption: QGraphicsItem = ... # 0x200 + ItemHasNoContents : QGraphicsItem = ... # 0x400 + ItemSendsGeometryChanges : QGraphicsItem = ... # 0x800 + ItemAcceptsInputMethod : QGraphicsItem = ... # 0x1000 + ItemNegativeZStacksBehindParent: QGraphicsItem = ... # 0x2000 + ItemIsPanel : QGraphicsItem = ... # 0x4000 + ItemIsFocusScope : QGraphicsItem = ... # 0x8000 + ItemSendsScenePositionChanges: QGraphicsItem = ... # 0x10000 + ItemStopsClickFocusPropagation: QGraphicsItem = ... # 0x20000 + ItemStopsFocusHandling : QGraphicsItem = ... # 0x40000 + ItemContainsChildrenInShape: QGraphicsItem = ... # 0x80000 + + class CacheMode(object): + NoCache : QGraphicsItem.CacheMode = ... # 0x0 + ItemCoordinateCache : QGraphicsItem.CacheMode = ... # 0x1 + DeviceCoordinateCache : QGraphicsItem.CacheMode = ... # 0x2 + + class Extension(object): + UserExtension : QGraphicsItem.Extension = ... # -0x80000000 + + class GraphicsItemChange(object): + ItemPositionChange : QGraphicsItem.GraphicsItemChange = ... # 0x0 + ItemMatrixChange : QGraphicsItem.GraphicsItemChange = ... # 0x1 + ItemVisibleChange : QGraphicsItem.GraphicsItemChange = ... # 0x2 + ItemEnabledChange : QGraphicsItem.GraphicsItemChange = ... # 0x3 + ItemSelectedChange : QGraphicsItem.GraphicsItemChange = ... # 0x4 + ItemParentChange : QGraphicsItem.GraphicsItemChange = ... # 0x5 + ItemChildAddedChange : QGraphicsItem.GraphicsItemChange = ... # 0x6 + ItemChildRemovedChange : QGraphicsItem.GraphicsItemChange = ... # 0x7 + ItemTransformChange : QGraphicsItem.GraphicsItemChange = ... # 0x8 + ItemPositionHasChanged : QGraphicsItem.GraphicsItemChange = ... # 0x9 + ItemTransformHasChanged : QGraphicsItem.GraphicsItemChange = ... # 0xa + ItemSceneChange : QGraphicsItem.GraphicsItemChange = ... # 0xb + ItemVisibleHasChanged : QGraphicsItem.GraphicsItemChange = ... # 0xc + ItemEnabledHasChanged : QGraphicsItem.GraphicsItemChange = ... # 0xd + ItemSelectedHasChanged : QGraphicsItem.GraphicsItemChange = ... # 0xe + ItemParentHasChanged : QGraphicsItem.GraphicsItemChange = ... # 0xf + ItemSceneHasChanged : QGraphicsItem.GraphicsItemChange = ... # 0x10 + ItemCursorChange : QGraphicsItem.GraphicsItemChange = ... # 0x11 + ItemCursorHasChanged : QGraphicsItem.GraphicsItemChange = ... # 0x12 + ItemToolTipChange : QGraphicsItem.GraphicsItemChange = ... # 0x13 + ItemToolTipHasChanged : QGraphicsItem.GraphicsItemChange = ... # 0x14 + ItemFlagsChange : QGraphicsItem.GraphicsItemChange = ... # 0x15 + ItemFlagsHaveChanged : QGraphicsItem.GraphicsItemChange = ... # 0x16 + ItemZValueChange : QGraphicsItem.GraphicsItemChange = ... # 0x17 + ItemZValueHasChanged : QGraphicsItem.GraphicsItemChange = ... # 0x18 + ItemOpacityChange : QGraphicsItem.GraphicsItemChange = ... # 0x19 + ItemOpacityHasChanged : QGraphicsItem.GraphicsItemChange = ... # 0x1a + ItemScenePositionHasChanged: QGraphicsItem.GraphicsItemChange = ... # 0x1b + ItemRotationChange : QGraphicsItem.GraphicsItemChange = ... # 0x1c + ItemRotationHasChanged : QGraphicsItem.GraphicsItemChange = ... # 0x1d + ItemScaleChange : QGraphicsItem.GraphicsItemChange = ... # 0x1e + ItemScaleHasChanged : QGraphicsItem.GraphicsItemChange = ... # 0x1f + ItemTransformOriginPointChange: QGraphicsItem.GraphicsItemChange = ... # 0x20 + ItemTransformOriginPointHasChanged: QGraphicsItem.GraphicsItemChange = ... # 0x21 + + class GraphicsItemFlag(object): + ItemIsMovable : QGraphicsItem.GraphicsItemFlag = ... # 0x1 + ItemIsSelectable : QGraphicsItem.GraphicsItemFlag = ... # 0x2 + ItemIsFocusable : QGraphicsItem.GraphicsItemFlag = ... # 0x4 + ItemClipsToShape : QGraphicsItem.GraphicsItemFlag = ... # 0x8 + ItemClipsChildrenToShape : QGraphicsItem.GraphicsItemFlag = ... # 0x10 + ItemIgnoresTransformations: QGraphicsItem.GraphicsItemFlag = ... # 0x20 + ItemIgnoresParentOpacity : QGraphicsItem.GraphicsItemFlag = ... # 0x40 + ItemDoesntPropagateOpacityToChildren: QGraphicsItem.GraphicsItemFlag = ... # 0x80 + ItemStacksBehindParent : QGraphicsItem.GraphicsItemFlag = ... # 0x100 + ItemUsesExtendedStyleOption: QGraphicsItem.GraphicsItemFlag = ... # 0x200 + ItemHasNoContents : QGraphicsItem.GraphicsItemFlag = ... # 0x400 + ItemSendsGeometryChanges : QGraphicsItem.GraphicsItemFlag = ... # 0x800 + ItemAcceptsInputMethod : QGraphicsItem.GraphicsItemFlag = ... # 0x1000 + ItemNegativeZStacksBehindParent: QGraphicsItem.GraphicsItemFlag = ... # 0x2000 + ItemIsPanel : QGraphicsItem.GraphicsItemFlag = ... # 0x4000 + ItemIsFocusScope : QGraphicsItem.GraphicsItemFlag = ... # 0x8000 + ItemSendsScenePositionChanges: QGraphicsItem.GraphicsItemFlag = ... # 0x10000 + ItemStopsClickFocusPropagation: QGraphicsItem.GraphicsItemFlag = ... # 0x20000 + ItemStopsFocusHandling : QGraphicsItem.GraphicsItemFlag = ... # 0x40000 + ItemContainsChildrenInShape: QGraphicsItem.GraphicsItemFlag = ... # 0x80000 + + class GraphicsItemFlags(object): ... + + class PanelModality(object): + NonModal : QGraphicsItem.PanelModality = ... # 0x0 + PanelModal : QGraphicsItem.PanelModality = ... # 0x1 + SceneModal : QGraphicsItem.PanelModality = ... # 0x2 + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=...) -> None: ... + + def acceptDrops(self) -> bool: ... + def acceptHoverEvents(self) -> bool: ... + def acceptTouchEvents(self) -> bool: ... + def acceptedMouseButtons(self) -> PySide2.QtCore.Qt.MouseButtons: ... + def addToIndex(self) -> None: ... + def advance(self, phase:int) -> None: ... + def boundingRect(self) -> PySide2.QtCore.QRectF: ... + def boundingRegion(self, itemToDeviceTransform:PySide2.QtGui.QTransform) -> PySide2.QtGui.QRegion: ... + def boundingRegionGranularity(self) -> float: ... + def cacheMode(self) -> PySide2.QtWidgets.QGraphicsItem.CacheMode: ... + def childItems(self) -> typing.List: ... + def childrenBoundingRect(self) -> PySide2.QtCore.QRectF: ... + def clearFocus(self) -> None: ... + def clipPath(self) -> PySide2.QtGui.QPainterPath: ... + def collidesWithItem(self, other:PySide2.QtWidgets.QGraphicsItem, mode:PySide2.QtCore.Qt.ItemSelectionMode=...) -> bool: ... + def collidesWithPath(self, path:PySide2.QtGui.QPainterPath, mode:PySide2.QtCore.Qt.ItemSelectionMode=...) -> bool: ... + def collidingItems(self, mode:PySide2.QtCore.Qt.ItemSelectionMode=...) -> typing.List: ... + def commonAncestorItem(self, other:PySide2.QtWidgets.QGraphicsItem) -> PySide2.QtWidgets.QGraphicsItem: ... + def contains(self, point:PySide2.QtCore.QPointF) -> bool: ... + def contextMenuEvent(self, event:PySide2.QtWidgets.QGraphicsSceneContextMenuEvent) -> None: ... + def cursor(self) -> PySide2.QtGui.QCursor: ... + def data(self, key:int) -> typing.Any: ... + def deviceTransform(self, viewportTransform:PySide2.QtGui.QTransform) -> PySide2.QtGui.QTransform: ... + def dragEnterEvent(self, event:PySide2.QtWidgets.QGraphicsSceneDragDropEvent) -> None: ... + def dragLeaveEvent(self, event:PySide2.QtWidgets.QGraphicsSceneDragDropEvent) -> None: ... + def dragMoveEvent(self, event:PySide2.QtWidgets.QGraphicsSceneDragDropEvent) -> None: ... + def dropEvent(self, event:PySide2.QtWidgets.QGraphicsSceneDragDropEvent) -> None: ... + def effectiveOpacity(self) -> float: ... + @typing.overload + def ensureVisible(self, rect:PySide2.QtCore.QRectF=..., xmargin:int=..., ymargin:int=...) -> None: ... + @typing.overload + def ensureVisible(self, x:float, y:float, w:float, h:float, xmargin:int=..., ymargin:int=...) -> None: ... + def extension(self, variant:typing.Any) -> typing.Any: ... + def filtersChildEvents(self) -> bool: ... + def flags(self) -> PySide2.QtWidgets.QGraphicsItem.GraphicsItemFlags: ... + def focusInEvent(self, event:PySide2.QtGui.QFocusEvent) -> None: ... + def focusItem(self) -> PySide2.QtWidgets.QGraphicsItem: ... + def focusOutEvent(self, event:PySide2.QtGui.QFocusEvent) -> None: ... + def focusProxy(self) -> PySide2.QtWidgets.QGraphicsItem: ... + def focusScopeItem(self) -> PySide2.QtWidgets.QGraphicsItem: ... + def grabKeyboard(self) -> None: ... + def grabMouse(self) -> None: ... + def graphicsEffect(self) -> PySide2.QtWidgets.QGraphicsEffect: ... + def group(self) -> PySide2.QtWidgets.QGraphicsItemGroup: ... + def handlesChildEvents(self) -> bool: ... + def hasCursor(self) -> bool: ... + def hasFocus(self) -> bool: ... + def hide(self) -> None: ... + def hoverEnterEvent(self, event:PySide2.QtWidgets.QGraphicsSceneHoverEvent) -> None: ... + def hoverLeaveEvent(self, event:PySide2.QtWidgets.QGraphicsSceneHoverEvent) -> None: ... + def hoverMoveEvent(self, event:PySide2.QtWidgets.QGraphicsSceneHoverEvent) -> None: ... + def inputMethodEvent(self, event:PySide2.QtGui.QInputMethodEvent) -> None: ... + def inputMethodHints(self) -> PySide2.QtCore.Qt.InputMethodHints: ... + def inputMethodQuery(self, query:PySide2.QtCore.Qt.InputMethodQuery) -> typing.Any: ... + def installSceneEventFilter(self, filterItem:PySide2.QtWidgets.QGraphicsItem) -> None: ... + def isActive(self) -> bool: ... + def isAncestorOf(self, child:PySide2.QtWidgets.QGraphicsItem) -> bool: ... + def isBlockedByModalPanel(self, blockingPanel:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=...) -> bool: ... + def isClipped(self) -> bool: ... + def isEnabled(self) -> bool: ... + @typing.overload + def isObscured(self, rect:PySide2.QtCore.QRectF=...) -> bool: ... + @typing.overload + def isObscured(self, x:float, y:float, w:float, h:float) -> bool: ... + def isObscuredBy(self, item:PySide2.QtWidgets.QGraphicsItem) -> bool: ... + def isPanel(self) -> bool: ... + def isSelected(self) -> bool: ... + def isUnderMouse(self) -> bool: ... + def isVisible(self) -> bool: ... + def isVisibleTo(self, parent:PySide2.QtWidgets.QGraphicsItem) -> bool: ... + def isWidget(self) -> bool: ... + def isWindow(self) -> bool: ... + def itemChange(self, change:PySide2.QtWidgets.QGraphicsItem.GraphicsItemChange, value:typing.Any) -> typing.Any: ... + def itemTransform(self, other:PySide2.QtWidgets.QGraphicsItem) -> typing.Tuple: ... + def keyPressEvent(self, event:PySide2.QtGui.QKeyEvent) -> None: ... + def keyReleaseEvent(self, event:PySide2.QtGui.QKeyEvent) -> None: ... + @typing.overload + def mapFromItem(self, item:PySide2.QtWidgets.QGraphicsItem, path:PySide2.QtGui.QPainterPath) -> PySide2.QtGui.QPainterPath: ... + @typing.overload + def mapFromItem(self, item:PySide2.QtWidgets.QGraphicsItem, point:PySide2.QtCore.QPointF) -> PySide2.QtCore.QPointF: ... + @typing.overload + def mapFromItem(self, item:PySide2.QtWidgets.QGraphicsItem, polygon:PySide2.QtGui.QPolygonF) -> PySide2.QtGui.QPolygonF: ... + @typing.overload + def mapFromItem(self, item:PySide2.QtWidgets.QGraphicsItem, rect:PySide2.QtCore.QRectF) -> PySide2.QtGui.QPolygonF: ... + @typing.overload + def mapFromItem(self, item:PySide2.QtWidgets.QGraphicsItem, x:float, y:float) -> PySide2.QtCore.QPointF: ... + @typing.overload + def mapFromItem(self, item:PySide2.QtWidgets.QGraphicsItem, x:float, y:float, w:float, h:float) -> PySide2.QtGui.QPolygonF: ... + @typing.overload + def mapFromParent(self, path:PySide2.QtGui.QPainterPath) -> PySide2.QtGui.QPainterPath: ... + @typing.overload + def mapFromParent(self, point:PySide2.QtCore.QPointF) -> PySide2.QtCore.QPointF: ... + @typing.overload + def mapFromParent(self, polygon:PySide2.QtGui.QPolygonF) -> PySide2.QtGui.QPolygonF: ... + @typing.overload + def mapFromParent(self, rect:PySide2.QtCore.QRectF) -> PySide2.QtGui.QPolygonF: ... + @typing.overload + def mapFromParent(self, x:float, y:float) -> PySide2.QtCore.QPointF: ... + @typing.overload + def mapFromParent(self, x:float, y:float, w:float, h:float) -> PySide2.QtGui.QPolygonF: ... + @typing.overload + def mapFromScene(self, path:PySide2.QtGui.QPainterPath) -> PySide2.QtGui.QPainterPath: ... + @typing.overload + def mapFromScene(self, point:PySide2.QtCore.QPointF) -> PySide2.QtCore.QPointF: ... + @typing.overload + def mapFromScene(self, polygon:PySide2.QtGui.QPolygonF) -> PySide2.QtGui.QPolygonF: ... + @typing.overload + def mapFromScene(self, rect:PySide2.QtCore.QRectF) -> PySide2.QtGui.QPolygonF: ... + @typing.overload + def mapFromScene(self, x:float, y:float) -> PySide2.QtCore.QPointF: ... + @typing.overload + def mapFromScene(self, x:float, y:float, w:float, h:float) -> PySide2.QtGui.QPolygonF: ... + @typing.overload + def mapRectFromItem(self, item:PySide2.QtWidgets.QGraphicsItem, rect:PySide2.QtCore.QRectF) -> PySide2.QtCore.QRectF: ... + @typing.overload + def mapRectFromItem(self, item:PySide2.QtWidgets.QGraphicsItem, x:float, y:float, w:float, h:float) -> PySide2.QtCore.QRectF: ... + @typing.overload + def mapRectFromParent(self, rect:PySide2.QtCore.QRectF) -> PySide2.QtCore.QRectF: ... + @typing.overload + def mapRectFromParent(self, x:float, y:float, w:float, h:float) -> PySide2.QtCore.QRectF: ... + @typing.overload + def mapRectFromScene(self, rect:PySide2.QtCore.QRectF) -> PySide2.QtCore.QRectF: ... + @typing.overload + def mapRectFromScene(self, x:float, y:float, w:float, h:float) -> PySide2.QtCore.QRectF: ... + @typing.overload + def mapRectToItem(self, item:PySide2.QtWidgets.QGraphicsItem, rect:PySide2.QtCore.QRectF) -> PySide2.QtCore.QRectF: ... + @typing.overload + def mapRectToItem(self, item:PySide2.QtWidgets.QGraphicsItem, x:float, y:float, w:float, h:float) -> PySide2.QtCore.QRectF: ... + @typing.overload + def mapRectToParent(self, rect:PySide2.QtCore.QRectF) -> PySide2.QtCore.QRectF: ... + @typing.overload + def mapRectToParent(self, x:float, y:float, w:float, h:float) -> PySide2.QtCore.QRectF: ... + @typing.overload + def mapRectToScene(self, rect:PySide2.QtCore.QRectF) -> PySide2.QtCore.QRectF: ... + @typing.overload + def mapRectToScene(self, x:float, y:float, w:float, h:float) -> PySide2.QtCore.QRectF: ... + @typing.overload + def mapToItem(self, item:PySide2.QtWidgets.QGraphicsItem, path:PySide2.QtGui.QPainterPath) -> PySide2.QtGui.QPainterPath: ... + @typing.overload + def mapToItem(self, item:PySide2.QtWidgets.QGraphicsItem, point:PySide2.QtCore.QPointF) -> PySide2.QtCore.QPointF: ... + @typing.overload + def mapToItem(self, item:PySide2.QtWidgets.QGraphicsItem, polygon:PySide2.QtGui.QPolygonF) -> PySide2.QtGui.QPolygonF: ... + @typing.overload + def mapToItem(self, item:PySide2.QtWidgets.QGraphicsItem, rect:PySide2.QtCore.QRectF) -> PySide2.QtGui.QPolygonF: ... + @typing.overload + def mapToItem(self, item:PySide2.QtWidgets.QGraphicsItem, x:float, y:float) -> PySide2.QtCore.QPointF: ... + @typing.overload + def mapToItem(self, item:PySide2.QtWidgets.QGraphicsItem, x:float, y:float, w:float, h:float) -> PySide2.QtGui.QPolygonF: ... + @typing.overload + def mapToParent(self, path:PySide2.QtGui.QPainterPath) -> PySide2.QtGui.QPainterPath: ... + @typing.overload + def mapToParent(self, point:PySide2.QtCore.QPointF) -> PySide2.QtCore.QPointF: ... + @typing.overload + def mapToParent(self, polygon:PySide2.QtGui.QPolygonF) -> PySide2.QtGui.QPolygonF: ... + @typing.overload + def mapToParent(self, rect:PySide2.QtCore.QRectF) -> PySide2.QtGui.QPolygonF: ... + @typing.overload + def mapToParent(self, x:float, y:float) -> PySide2.QtCore.QPointF: ... + @typing.overload + def mapToParent(self, x:float, y:float, w:float, h:float) -> PySide2.QtGui.QPolygonF: ... + @typing.overload + def mapToScene(self, path:PySide2.QtGui.QPainterPath) -> PySide2.QtGui.QPainterPath: ... + @typing.overload + def mapToScene(self, point:PySide2.QtCore.QPointF) -> PySide2.QtCore.QPointF: ... + @typing.overload + def mapToScene(self, polygon:PySide2.QtGui.QPolygonF) -> PySide2.QtGui.QPolygonF: ... + @typing.overload + def mapToScene(self, rect:PySide2.QtCore.QRectF) -> PySide2.QtGui.QPolygonF: ... + @typing.overload + def mapToScene(self, x:float, y:float) -> PySide2.QtCore.QPointF: ... + @typing.overload + def mapToScene(self, x:float, y:float, w:float, h:float) -> PySide2.QtGui.QPolygonF: ... + def matrix(self) -> PySide2.QtGui.QMatrix: ... + def mouseDoubleClickEvent(self, event:PySide2.QtWidgets.QGraphicsSceneMouseEvent) -> None: ... + def mouseMoveEvent(self, event:PySide2.QtWidgets.QGraphicsSceneMouseEvent) -> None: ... + def mousePressEvent(self, event:PySide2.QtWidgets.QGraphicsSceneMouseEvent) -> None: ... + def mouseReleaseEvent(self, event:PySide2.QtWidgets.QGraphicsSceneMouseEvent) -> None: ... + def moveBy(self, dx:float, dy:float) -> None: ... + def opacity(self) -> float: ... + def opaqueArea(self) -> PySide2.QtGui.QPainterPath: ... + def paint(self, painter:PySide2.QtGui.QPainter, option:PySide2.QtWidgets.QStyleOptionGraphicsItem, widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + def panel(self) -> PySide2.QtWidgets.QGraphicsItem: ... + def panelModality(self) -> PySide2.QtWidgets.QGraphicsItem.PanelModality: ... + def parentItem(self) -> PySide2.QtWidgets.QGraphicsItem: ... + def parentObject(self) -> PySide2.QtWidgets.QGraphicsObject: ... + def parentWidget(self) -> PySide2.QtWidgets.QGraphicsWidget: ... + def pos(self) -> PySide2.QtCore.QPointF: ... + def prepareGeometryChange(self) -> None: ... + def removeFromIndex(self) -> None: ... + def removeSceneEventFilter(self, filterItem:PySide2.QtWidgets.QGraphicsItem) -> None: ... + def resetMatrix(self) -> None: ... + def resetTransform(self) -> None: ... + def rotation(self) -> float: ... + def scale(self) -> float: ... + def scene(self) -> PySide2.QtWidgets.QGraphicsScene: ... + def sceneBoundingRect(self) -> PySide2.QtCore.QRectF: ... + def sceneEvent(self, event:PySide2.QtCore.QEvent) -> bool: ... + def sceneEventFilter(self, watched:PySide2.QtWidgets.QGraphicsItem, event:PySide2.QtCore.QEvent) -> bool: ... + def sceneMatrix(self) -> PySide2.QtGui.QMatrix: ... + def scenePos(self) -> PySide2.QtCore.QPointF: ... + def sceneTransform(self) -> PySide2.QtGui.QTransform: ... + def scroll(self, dx:float, dy:float, rect:PySide2.QtCore.QRectF=...) -> None: ... + def setAcceptDrops(self, on:bool) -> None: ... + def setAcceptHoverEvents(self, enabled:bool) -> None: ... + def setAcceptTouchEvents(self, enabled:bool) -> None: ... + def setAcceptedMouseButtons(self, buttons:PySide2.QtCore.Qt.MouseButtons) -> None: ... + def setActive(self, active:bool) -> None: ... + def setBoundingRegionGranularity(self, granularity:float) -> None: ... + def setCacheMode(self, mode:PySide2.QtWidgets.QGraphicsItem.CacheMode, cacheSize:PySide2.QtCore.QSize=...) -> None: ... + def setCursor(self, cursor:PySide2.QtGui.QCursor) -> None: ... + def setData(self, key:int, value:typing.Any) -> None: ... + def setEnabled(self, enabled:bool) -> None: ... + def setFiltersChildEvents(self, enabled:bool) -> None: ... + def setFlag(self, flag:PySide2.QtWidgets.QGraphicsItem.GraphicsItemFlag, enabled:bool=...) -> None: ... + def setFlags(self, flags:PySide2.QtWidgets.QGraphicsItem.GraphicsItemFlags) -> None: ... + def setFocus(self, focusReason:PySide2.QtCore.Qt.FocusReason=...) -> None: ... + def setFocusProxy(self, item:PySide2.QtWidgets.QGraphicsItem) -> None: ... + def setGraphicsEffect(self, effect:PySide2.QtWidgets.QGraphicsEffect) -> None: ... + def setGroup(self, group:PySide2.QtWidgets.QGraphicsItemGroup) -> None: ... + def setHandlesChildEvents(self, enabled:bool) -> None: ... + def setInputMethodHints(self, hints:PySide2.QtCore.Qt.InputMethodHints) -> None: ... + def setMatrix(self, matrix:PySide2.QtGui.QMatrix, combine:bool=...) -> None: ... + def setOpacity(self, opacity:float) -> None: ... + def setPanelModality(self, panelModality:PySide2.QtWidgets.QGraphicsItem.PanelModality) -> None: ... + def setParentItem(self, parent:PySide2.QtWidgets.QGraphicsItem) -> None: ... + @typing.overload + def setPos(self, pos:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def setPos(self, x:float, y:float) -> None: ... + def setRotation(self, angle:float) -> None: ... + def setScale(self, scale:float) -> None: ... + def setSelected(self, selected:bool) -> None: ... + def setToolTip(self, toolTip:str) -> None: ... + def setTransform(self, matrix:PySide2.QtGui.QTransform, combine:bool=...) -> None: ... + @typing.overload + def setTransformOriginPoint(self, ax:float, ay:float) -> None: ... + @typing.overload + def setTransformOriginPoint(self, origin:PySide2.QtCore.QPointF) -> None: ... + def setTransformations(self, transformations:typing.Sequence) -> None: ... + def setVisible(self, visible:bool) -> None: ... + def setX(self, x:float) -> None: ... + def setY(self, y:float) -> None: ... + def setZValue(self, z:float) -> None: ... + def shape(self) -> PySide2.QtGui.QPainterPath: ... + def show(self) -> None: ... + def stackBefore(self, sibling:PySide2.QtWidgets.QGraphicsItem) -> None: ... + def toGraphicsObject(self) -> PySide2.QtWidgets.QGraphicsObject: ... + def toolTip(self) -> str: ... + def topLevelItem(self) -> PySide2.QtWidgets.QGraphicsItem: ... + def topLevelWidget(self) -> PySide2.QtWidgets.QGraphicsWidget: ... + def transform(self) -> PySide2.QtGui.QTransform: ... + def transformOriginPoint(self) -> PySide2.QtCore.QPointF: ... + def transformations(self) -> typing.List: ... + def type(self) -> int: ... + def ungrabKeyboard(self) -> None: ... + def ungrabMouse(self) -> None: ... + def unsetCursor(self) -> None: ... + @typing.overload + def update(self, rect:PySide2.QtCore.QRectF=...) -> None: ... + @typing.overload + def update(self, x:float, y:float, width:float, height:float) -> None: ... + def updateMicroFocus(self) -> None: ... + def wheelEvent(self, event:PySide2.QtWidgets.QGraphicsSceneWheelEvent) -> None: ... + def window(self) -> PySide2.QtWidgets.QGraphicsWidget: ... + def x(self) -> float: ... + def y(self) -> float: ... + def zValue(self) -> float: ... + + +class QGraphicsItemAnimation(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def afterAnimationStep(self, step:float) -> None: ... + def beforeAnimationStep(self, step:float) -> None: ... + def clear(self) -> None: ... + def horizontalScaleAt(self, step:float) -> float: ... + def horizontalShearAt(self, step:float) -> float: ... + def item(self) -> PySide2.QtWidgets.QGraphicsItem: ... + def matrixAt(self, step:float) -> PySide2.QtGui.QMatrix: ... + def posAt(self, step:float) -> PySide2.QtCore.QPointF: ... + def posList(self) -> typing.List: ... + def reset(self) -> None: ... + def rotationAt(self, step:float) -> float: ... + def rotationList(self) -> typing.List: ... + def scaleList(self) -> typing.List: ... + def setItem(self, item:PySide2.QtWidgets.QGraphicsItem) -> None: ... + def setPosAt(self, step:float, pos:PySide2.QtCore.QPointF) -> None: ... + def setRotationAt(self, step:float, angle:float) -> None: ... + def setScaleAt(self, step:float, sx:float, sy:float) -> None: ... + def setShearAt(self, step:float, sh:float, sv:float) -> None: ... + def setStep(self, x:float) -> None: ... + def setTimeLine(self, timeLine:PySide2.QtCore.QTimeLine) -> None: ... + def setTranslationAt(self, step:float, dx:float, dy:float) -> None: ... + def shearList(self) -> typing.List: ... + def timeLine(self) -> PySide2.QtCore.QTimeLine: ... + def transformAt(self, step:float) -> PySide2.QtGui.QTransform: ... + def translationList(self) -> typing.List: ... + def verticalScaleAt(self, step:float) -> float: ... + def verticalShearAt(self, step:float) -> float: ... + def xTranslationAt(self, step:float) -> float: ... + def yTranslationAt(self, step:float) -> float: ... + + +class QGraphicsItemGroup(PySide2.QtWidgets.QGraphicsItem): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=...) -> None: ... + + def addToGroup(self, item:PySide2.QtWidgets.QGraphicsItem) -> None: ... + def boundingRect(self) -> PySide2.QtCore.QRectF: ... + def isObscuredBy(self, item:PySide2.QtWidgets.QGraphicsItem) -> bool: ... + def opaqueArea(self) -> PySide2.QtGui.QPainterPath: ... + def paint(self, painter:PySide2.QtGui.QPainter, option:PySide2.QtWidgets.QStyleOptionGraphicsItem, widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + def removeFromGroup(self, item:PySide2.QtWidgets.QGraphicsItem) -> None: ... + def type(self) -> int: ... + + +class QGraphicsLayout(PySide2.QtWidgets.QGraphicsLayoutItem): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QGraphicsLayoutItem]=...) -> None: ... + + def activate(self) -> None: ... + def addChildLayoutItem(self, layoutItem:PySide2.QtWidgets.QGraphicsLayoutItem) -> None: ... + def count(self) -> int: ... + def getContentsMargins(self) -> typing.Tuple: ... + @staticmethod + def instantInvalidatePropagation() -> bool: ... + def invalidate(self) -> None: ... + def isActivated(self) -> bool: ... + def itemAt(self, i:int) -> PySide2.QtWidgets.QGraphicsLayoutItem: ... + def removeAt(self, index:int) -> None: ... + def setContentsMargins(self, left:float, top:float, right:float, bottom:float) -> None: ... + @staticmethod + def setInstantInvalidatePropagation(enable:bool) -> None: ... + def updateGeometry(self) -> None: ... + def widgetEvent(self, e:PySide2.QtCore.QEvent) -> None: ... + + +class QGraphicsLayoutItem(Shiboken.Object): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QGraphicsLayoutItem]=..., isLayout:bool=...) -> None: ... + + def contentsRect(self) -> PySide2.QtCore.QRectF: ... + def effectiveSizeHint(self, which:PySide2.QtCore.Qt.SizeHint, constraint:PySide2.QtCore.QSizeF=...) -> PySide2.QtCore.QSizeF: ... + def geometry(self) -> PySide2.QtCore.QRectF: ... + def getContentsMargins(self) -> typing.Tuple: ... + def graphicsItem(self) -> PySide2.QtWidgets.QGraphicsItem: ... + def isLayout(self) -> bool: ... + def maximumHeight(self) -> float: ... + def maximumSize(self) -> PySide2.QtCore.QSizeF: ... + def maximumWidth(self) -> float: ... + def minimumHeight(self) -> float: ... + def minimumSize(self) -> PySide2.QtCore.QSizeF: ... + def minimumWidth(self) -> float: ... + def ownedByLayout(self) -> bool: ... + def parentLayoutItem(self) -> PySide2.QtWidgets.QGraphicsLayoutItem: ... + def preferredHeight(self) -> float: ... + def preferredSize(self) -> PySide2.QtCore.QSizeF: ... + def preferredWidth(self) -> float: ... + def setGeometry(self, rect:PySide2.QtCore.QRectF) -> None: ... + def setGraphicsItem(self, item:PySide2.QtWidgets.QGraphicsItem) -> None: ... + def setMaximumHeight(self, height:float) -> None: ... + @typing.overload + def setMaximumSize(self, size:PySide2.QtCore.QSizeF) -> None: ... + @typing.overload + def setMaximumSize(self, w:float, h:float) -> None: ... + def setMaximumWidth(self, width:float) -> None: ... + def setMinimumHeight(self, height:float) -> None: ... + @typing.overload + def setMinimumSize(self, size:PySide2.QtCore.QSizeF) -> None: ... + @typing.overload + def setMinimumSize(self, w:float, h:float) -> None: ... + def setMinimumWidth(self, width:float) -> None: ... + def setOwnedByLayout(self, ownedByLayout:bool) -> None: ... + def setParentLayoutItem(self, parent:PySide2.QtWidgets.QGraphicsLayoutItem) -> None: ... + def setPreferredHeight(self, height:float) -> None: ... + @typing.overload + def setPreferredSize(self, size:PySide2.QtCore.QSizeF) -> None: ... + @typing.overload + def setPreferredSize(self, w:float, h:float) -> None: ... + def setPreferredWidth(self, width:float) -> None: ... + @typing.overload + def setSizePolicy(self, hPolicy:PySide2.QtWidgets.QSizePolicy.Policy, vPolicy:PySide2.QtWidgets.QSizePolicy.Policy, controlType:PySide2.QtWidgets.QSizePolicy.ControlType=...) -> None: ... + @typing.overload + def setSizePolicy(self, policy:PySide2.QtWidgets.QSizePolicy) -> None: ... + def sizeHint(self, which:PySide2.QtCore.Qt.SizeHint, constraint:PySide2.QtCore.QSizeF=...) -> PySide2.QtCore.QSizeF: ... + def sizePolicy(self) -> PySide2.QtWidgets.QSizePolicy: ... + def updateGeometry(self) -> None: ... + + +class QGraphicsLineItem(PySide2.QtWidgets.QGraphicsItem): + + @typing.overload + def __init__(self, line:PySide2.QtCore.QLineF, parent:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=...) -> None: ... + @typing.overload + def __init__(self, x1:float, y1:float, x2:float, y2:float, parent:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=...) -> None: ... + + def boundingRect(self) -> PySide2.QtCore.QRectF: ... + def contains(self, point:PySide2.QtCore.QPointF) -> bool: ... + def extension(self, variant:typing.Any) -> typing.Any: ... + def isObscuredBy(self, item:PySide2.QtWidgets.QGraphicsItem) -> bool: ... + def line(self) -> PySide2.QtCore.QLineF: ... + def opaqueArea(self) -> PySide2.QtGui.QPainterPath: ... + def paint(self, painter:PySide2.QtGui.QPainter, option:PySide2.QtWidgets.QStyleOptionGraphicsItem, widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + def pen(self) -> PySide2.QtGui.QPen: ... + @typing.overload + def setLine(self, line:PySide2.QtCore.QLineF) -> None: ... + @typing.overload + def setLine(self, x1:float, y1:float, x2:float, y2:float) -> None: ... + def setPen(self, pen:PySide2.QtGui.QPen) -> None: ... + def shape(self) -> PySide2.QtGui.QPainterPath: ... + def type(self) -> int: ... + + +class QGraphicsLinearLayout(PySide2.QtWidgets.QGraphicsLayout): + + @typing.overload + def __init__(self, orientation:PySide2.QtCore.Qt.Orientation, parent:typing.Optional[PySide2.QtWidgets.QGraphicsLayoutItem]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QGraphicsLayoutItem]=...) -> None: ... + + def addItem(self, item:PySide2.QtWidgets.QGraphicsLayoutItem) -> None: ... + def addStretch(self, stretch:int=...) -> None: ... + def alignment(self, item:PySide2.QtWidgets.QGraphicsLayoutItem) -> PySide2.QtCore.Qt.Alignment: ... + def count(self) -> int: ... + def dump(self, indent:int=...) -> None: ... + def insertItem(self, index:int, item:PySide2.QtWidgets.QGraphicsLayoutItem) -> None: ... + def insertStretch(self, index:int, stretch:int=...) -> None: ... + def invalidate(self) -> None: ... + def itemAt(self, index:int) -> PySide2.QtWidgets.QGraphicsLayoutItem: ... + def itemSpacing(self, index:int) -> float: ... + def orientation(self) -> PySide2.QtCore.Qt.Orientation: ... + def removeAt(self, index:int) -> None: ... + def removeItem(self, item:PySide2.QtWidgets.QGraphicsLayoutItem) -> None: ... + def setAlignment(self, item:PySide2.QtWidgets.QGraphicsLayoutItem, alignment:PySide2.QtCore.Qt.Alignment) -> None: ... + def setGeometry(self, rect:PySide2.QtCore.QRectF) -> None: ... + def setItemSpacing(self, index:int, spacing:float) -> None: ... + def setOrientation(self, orientation:PySide2.QtCore.Qt.Orientation) -> None: ... + def setSpacing(self, spacing:float) -> None: ... + def setStretchFactor(self, item:PySide2.QtWidgets.QGraphicsLayoutItem, stretch:int) -> None: ... + def sizeHint(self, which:PySide2.QtCore.Qt.SizeHint, constraint:PySide2.QtCore.QSizeF=...) -> PySide2.QtCore.QSizeF: ... + def spacing(self) -> float: ... + def stretchFactor(self, item:PySide2.QtWidgets.QGraphicsLayoutItem) -> int: ... + + +class QGraphicsObject(PySide2.QtWidgets.QGraphicsItem, PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=...) -> None: ... + + def event(self, ev:PySide2.QtCore.QEvent) -> bool: ... + def grabGesture(self, type:PySide2.QtCore.Qt.GestureType, flags:PySide2.QtCore.Qt.GestureFlags=...) -> None: ... + def ungrabGesture(self, type:PySide2.QtCore.Qt.GestureType) -> None: ... + def updateMicroFocus(self) -> None: ... + + +class QGraphicsOpacityEffect(PySide2.QtWidgets.QGraphicsEffect): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def draw(self, painter:PySide2.QtGui.QPainter) -> None: ... + def opacity(self) -> float: ... + def opacityMask(self) -> PySide2.QtGui.QBrush: ... + def setOpacity(self, opacity:float) -> None: ... + def setOpacityMask(self, mask:PySide2.QtGui.QBrush) -> None: ... + + +class QGraphicsPathItem(PySide2.QtWidgets.QAbstractGraphicsShapeItem): + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=...) -> None: ... + @typing.overload + def __init__(self, path:PySide2.QtGui.QPainterPath, parent:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=...) -> None: ... + + def boundingRect(self) -> PySide2.QtCore.QRectF: ... + def contains(self, point:PySide2.QtCore.QPointF) -> bool: ... + def extension(self, variant:typing.Any) -> typing.Any: ... + def isObscuredBy(self, item:PySide2.QtWidgets.QGraphicsItem) -> bool: ... + def opaqueArea(self) -> PySide2.QtGui.QPainterPath: ... + def paint(self, painter:PySide2.QtGui.QPainter, option:PySide2.QtWidgets.QStyleOptionGraphicsItem, widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + def path(self) -> PySide2.QtGui.QPainterPath: ... + def setPath(self, path:PySide2.QtGui.QPainterPath) -> None: ... + def shape(self) -> PySide2.QtGui.QPainterPath: ... + def type(self) -> int: ... + + +class QGraphicsPixmapItem(PySide2.QtWidgets.QGraphicsItem): + MaskShape : QGraphicsPixmapItem = ... # 0x0 + BoundingRectShape : QGraphicsPixmapItem = ... # 0x1 + HeuristicMaskShape : QGraphicsPixmapItem = ... # 0x2 + + class ShapeMode(object): + MaskShape : QGraphicsPixmapItem.ShapeMode = ... # 0x0 + BoundingRectShape : QGraphicsPixmapItem.ShapeMode = ... # 0x1 + HeuristicMaskShape : QGraphicsPixmapItem.ShapeMode = ... # 0x2 + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=...) -> None: ... + @typing.overload + def __init__(self, pixmap:PySide2.QtGui.QPixmap, parent:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=...) -> None: ... + + def boundingRect(self) -> PySide2.QtCore.QRectF: ... + def contains(self, point:PySide2.QtCore.QPointF) -> bool: ... + def extension(self, variant:typing.Any) -> typing.Any: ... + def isObscuredBy(self, item:PySide2.QtWidgets.QGraphicsItem) -> bool: ... + def offset(self) -> PySide2.QtCore.QPointF: ... + def opaqueArea(self) -> PySide2.QtGui.QPainterPath: ... + def paint(self, painter:PySide2.QtGui.QPainter, option:PySide2.QtWidgets.QStyleOptionGraphicsItem, widget:PySide2.QtWidgets.QWidget) -> None: ... + def pixmap(self) -> PySide2.QtGui.QPixmap: ... + @typing.overload + def setOffset(self, offset:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def setOffset(self, x:float, y:float) -> None: ... + def setPixmap(self, pixmap:PySide2.QtGui.QPixmap) -> None: ... + def setShapeMode(self, mode:PySide2.QtWidgets.QGraphicsPixmapItem.ShapeMode) -> None: ... + def setTransformationMode(self, mode:PySide2.QtCore.Qt.TransformationMode) -> None: ... + def shape(self) -> PySide2.QtGui.QPainterPath: ... + def shapeMode(self) -> PySide2.QtWidgets.QGraphicsPixmapItem.ShapeMode: ... + def transformationMode(self) -> PySide2.QtCore.Qt.TransformationMode: ... + def type(self) -> int: ... + + +class QGraphicsPolygonItem(PySide2.QtWidgets.QAbstractGraphicsShapeItem): + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=...) -> None: ... + @typing.overload + def __init__(self, polygon:PySide2.QtGui.QPolygonF, parent:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=...) -> None: ... + + def boundingRect(self) -> PySide2.QtCore.QRectF: ... + def contains(self, point:PySide2.QtCore.QPointF) -> bool: ... + def extension(self, variant:typing.Any) -> typing.Any: ... + def fillRule(self) -> PySide2.QtCore.Qt.FillRule: ... + def isObscuredBy(self, item:PySide2.QtWidgets.QGraphicsItem) -> bool: ... + def opaqueArea(self) -> PySide2.QtGui.QPainterPath: ... + def paint(self, painter:PySide2.QtGui.QPainter, option:PySide2.QtWidgets.QStyleOptionGraphicsItem, widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + def polygon(self) -> PySide2.QtGui.QPolygonF: ... + def setFillRule(self, rule:PySide2.QtCore.Qt.FillRule) -> None: ... + def setPolygon(self, polygon:PySide2.QtGui.QPolygonF) -> None: ... + def shape(self) -> PySide2.QtGui.QPainterPath: ... + def type(self) -> int: ... + + +class QGraphicsProxyWidget(PySide2.QtWidgets.QGraphicsWidget): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=..., wFlags:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + + def contextMenuEvent(self, event:PySide2.QtWidgets.QGraphicsSceneContextMenuEvent) -> None: ... + def createProxyForChildWidget(self, child:PySide2.QtWidgets.QWidget) -> PySide2.QtWidgets.QGraphicsProxyWidget: ... + def dragEnterEvent(self, event:PySide2.QtWidgets.QGraphicsSceneDragDropEvent) -> None: ... + def dragLeaveEvent(self, event:PySide2.QtWidgets.QGraphicsSceneDragDropEvent) -> None: ... + def dragMoveEvent(self, event:PySide2.QtWidgets.QGraphicsSceneDragDropEvent) -> None: ... + def dropEvent(self, event:PySide2.QtWidgets.QGraphicsSceneDragDropEvent) -> None: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def eventFilter(self, object:PySide2.QtCore.QObject, event:PySide2.QtCore.QEvent) -> bool: ... + def focusInEvent(self, event:PySide2.QtGui.QFocusEvent) -> None: ... + def focusNextPrevChild(self, next:bool) -> bool: ... + def focusOutEvent(self, event:PySide2.QtGui.QFocusEvent) -> None: ... + def grabMouseEvent(self, event:PySide2.QtCore.QEvent) -> None: ... + def hideEvent(self, event:PySide2.QtGui.QHideEvent) -> None: ... + def hoverEnterEvent(self, event:PySide2.QtWidgets.QGraphicsSceneHoverEvent) -> None: ... + def hoverLeaveEvent(self, event:PySide2.QtWidgets.QGraphicsSceneHoverEvent) -> None: ... + def hoverMoveEvent(self, event:PySide2.QtWidgets.QGraphicsSceneHoverEvent) -> None: ... + def inputMethodEvent(self, event:PySide2.QtGui.QInputMethodEvent) -> None: ... + def inputMethodQuery(self, query:PySide2.QtCore.Qt.InputMethodQuery) -> typing.Any: ... + def itemChange(self, change:PySide2.QtWidgets.QGraphicsItem.GraphicsItemChange, value:typing.Any) -> typing.Any: ... + def keyPressEvent(self, event:PySide2.QtGui.QKeyEvent) -> None: ... + def keyReleaseEvent(self, event:PySide2.QtGui.QKeyEvent) -> None: ... + def mouseDoubleClickEvent(self, event:PySide2.QtWidgets.QGraphicsSceneMouseEvent) -> None: ... + def mouseMoveEvent(self, event:PySide2.QtWidgets.QGraphicsSceneMouseEvent) -> None: ... + def mousePressEvent(self, event:PySide2.QtWidgets.QGraphicsSceneMouseEvent) -> None: ... + def mouseReleaseEvent(self, event:PySide2.QtWidgets.QGraphicsSceneMouseEvent) -> None: ... + def newProxyWidget(self, arg__1:PySide2.QtWidgets.QWidget) -> PySide2.QtWidgets.QGraphicsProxyWidget: ... + def paint(self, painter:PySide2.QtGui.QPainter, option:PySide2.QtWidgets.QStyleOptionGraphicsItem, widget:PySide2.QtWidgets.QWidget) -> None: ... + def resizeEvent(self, event:PySide2.QtWidgets.QGraphicsSceneResizeEvent) -> None: ... + def setGeometry(self, rect:PySide2.QtCore.QRectF) -> None: ... + def setWidget(self, widget:PySide2.QtWidgets.QWidget) -> None: ... + def showEvent(self, event:PySide2.QtGui.QShowEvent) -> None: ... + def sizeHint(self, which:PySide2.QtCore.Qt.SizeHint, constraint:PySide2.QtCore.QSizeF=...) -> PySide2.QtCore.QSizeF: ... + def subWidgetRect(self, widget:PySide2.QtWidgets.QWidget) -> PySide2.QtCore.QRectF: ... + def type(self) -> int: ... + def ungrabMouseEvent(self, event:PySide2.QtCore.QEvent) -> None: ... + def wheelEvent(self, event:PySide2.QtWidgets.QGraphicsSceneWheelEvent) -> None: ... + def widget(self) -> PySide2.QtWidgets.QWidget: ... + + +class QGraphicsRectItem(PySide2.QtWidgets.QAbstractGraphicsShapeItem): + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=...) -> None: ... + @typing.overload + def __init__(self, rect:PySide2.QtCore.QRectF, parent:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=...) -> None: ... + @typing.overload + def __init__(self, x:float, y:float, w:float, h:float, parent:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=...) -> None: ... + + def boundingRect(self) -> PySide2.QtCore.QRectF: ... + def contains(self, point:PySide2.QtCore.QPointF) -> bool: ... + def extension(self, variant:typing.Any) -> typing.Any: ... + def isObscuredBy(self, item:PySide2.QtWidgets.QGraphicsItem) -> bool: ... + def opaqueArea(self) -> PySide2.QtGui.QPainterPath: ... + def paint(self, painter:PySide2.QtGui.QPainter, option:PySide2.QtWidgets.QStyleOptionGraphicsItem, widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + def rect(self) -> PySide2.QtCore.QRectF: ... + @typing.overload + def setRect(self, rect:PySide2.QtCore.QRectF) -> None: ... + @typing.overload + def setRect(self, x:float, y:float, w:float, h:float) -> None: ... + def shape(self) -> PySide2.QtGui.QPainterPath: ... + def type(self) -> int: ... + + +class QGraphicsRotation(PySide2.QtWidgets.QGraphicsTransform): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def angle(self) -> float: ... + def applyTo(self, matrix:PySide2.QtGui.QMatrix4x4) -> None: ... + def axis(self) -> PySide2.QtGui.QVector3D: ... + def origin(self) -> PySide2.QtGui.QVector3D: ... + def setAngle(self, arg__1:float) -> None: ... + @typing.overload + def setAxis(self, axis:PySide2.QtCore.Qt.Axis) -> None: ... + @typing.overload + def setAxis(self, axis:PySide2.QtGui.QVector3D) -> None: ... + def setOrigin(self, point:PySide2.QtGui.QVector3D) -> None: ... + + +class QGraphicsScale(PySide2.QtWidgets.QGraphicsTransform): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def applyTo(self, matrix:PySide2.QtGui.QMatrix4x4) -> None: ... + def origin(self) -> PySide2.QtGui.QVector3D: ... + def setOrigin(self, point:PySide2.QtGui.QVector3D) -> None: ... + def setXScale(self, arg__1:float) -> None: ... + def setYScale(self, arg__1:float) -> None: ... + def setZScale(self, arg__1:float) -> None: ... + def xScale(self) -> float: ... + def yScale(self) -> float: ... + def zScale(self) -> float: ... + + +class QGraphicsScene(PySide2.QtCore.QObject): + NoIndex : QGraphicsScene = ... # -0x1 + BspTreeIndex : QGraphicsScene = ... # 0x0 + ItemLayer : QGraphicsScene = ... # 0x1 + BackgroundLayer : QGraphicsScene = ... # 0x2 + ForegroundLayer : QGraphicsScene = ... # 0x4 + AllLayers : QGraphicsScene = ... # 0xffff + + class ItemIndexMethod(object): + NoIndex : QGraphicsScene.ItemIndexMethod = ... # -0x1 + BspTreeIndex : QGraphicsScene.ItemIndexMethod = ... # 0x0 + + class SceneLayer(object): + ItemLayer : QGraphicsScene.SceneLayer = ... # 0x1 + BackgroundLayer : QGraphicsScene.SceneLayer = ... # 0x2 + ForegroundLayer : QGraphicsScene.SceneLayer = ... # 0x4 + AllLayers : QGraphicsScene.SceneLayer = ... # 0xffff + + class SceneLayers(object): ... + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, sceneRect:PySide2.QtCore.QRectF, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, x:float, y:float, width:float, height:float, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def activePanel(self) -> PySide2.QtWidgets.QGraphicsItem: ... + def activeWindow(self) -> PySide2.QtWidgets.QGraphicsWidget: ... + @typing.overload + def addEllipse(self, rect:PySide2.QtCore.QRectF, pen:PySide2.QtGui.QPen=..., brush:PySide2.QtGui.QBrush=...) -> PySide2.QtWidgets.QGraphicsEllipseItem: ... + @typing.overload + def addEllipse(self, x:float, y:float, w:float, h:float, pen:PySide2.QtGui.QPen=..., brush:PySide2.QtGui.QBrush=...) -> PySide2.QtWidgets.QGraphicsEllipseItem: ... + def addItem(self, item:PySide2.QtWidgets.QGraphicsItem) -> None: ... + @typing.overload + def addLine(self, line:PySide2.QtCore.QLineF, pen:PySide2.QtGui.QPen=...) -> PySide2.QtWidgets.QGraphicsLineItem: ... + @typing.overload + def addLine(self, x1:float, y1:float, x2:float, y2:float, pen:PySide2.QtGui.QPen=...) -> PySide2.QtWidgets.QGraphicsLineItem: ... + def addPath(self, path:PySide2.QtGui.QPainterPath, pen:PySide2.QtGui.QPen=..., brush:PySide2.QtGui.QBrush=...) -> PySide2.QtWidgets.QGraphicsPathItem: ... + def addPixmap(self, pixmap:PySide2.QtGui.QPixmap) -> PySide2.QtWidgets.QGraphicsPixmapItem: ... + def addPolygon(self, polygon:PySide2.QtGui.QPolygonF, pen:PySide2.QtGui.QPen=..., brush:PySide2.QtGui.QBrush=...) -> PySide2.QtWidgets.QGraphicsPolygonItem: ... + @typing.overload + def addRect(self, rect:PySide2.QtCore.QRectF, pen:PySide2.QtGui.QPen=..., brush:PySide2.QtGui.QBrush=...) -> PySide2.QtWidgets.QGraphicsRectItem: ... + @typing.overload + def addRect(self, x:float, y:float, w:float, h:float, pen:PySide2.QtGui.QPen=..., brush:PySide2.QtGui.QBrush=...) -> PySide2.QtWidgets.QGraphicsRectItem: ... + def addSimpleText(self, text:str, font:PySide2.QtGui.QFont=...) -> PySide2.QtWidgets.QGraphicsSimpleTextItem: ... + def addText(self, text:str, font:PySide2.QtGui.QFont=...) -> PySide2.QtWidgets.QGraphicsTextItem: ... + def addWidget(self, widget:PySide2.QtWidgets.QWidget, wFlags:PySide2.QtCore.Qt.WindowFlags=...) -> PySide2.QtWidgets.QGraphicsProxyWidget: ... + def advance(self) -> None: ... + def backgroundBrush(self) -> PySide2.QtGui.QBrush: ... + def bspTreeDepth(self) -> int: ... + def clear(self) -> None: ... + def clearFocus(self) -> None: ... + def clearSelection(self) -> None: ... + def collidingItems(self, item:PySide2.QtWidgets.QGraphicsItem, mode:PySide2.QtCore.Qt.ItemSelectionMode=...) -> typing.List: ... + def contextMenuEvent(self, event:PySide2.QtWidgets.QGraphicsSceneContextMenuEvent) -> None: ... + def createItemGroup(self, items:typing.Sequence) -> PySide2.QtWidgets.QGraphicsItemGroup: ... + def destroyItemGroup(self, group:PySide2.QtWidgets.QGraphicsItemGroup) -> None: ... + def dragEnterEvent(self, event:PySide2.QtWidgets.QGraphicsSceneDragDropEvent) -> None: ... + def dragLeaveEvent(self, event:PySide2.QtWidgets.QGraphicsSceneDragDropEvent) -> None: ... + def dragMoveEvent(self, event:PySide2.QtWidgets.QGraphicsSceneDragDropEvent) -> None: ... + def drawBackground(self, painter:PySide2.QtGui.QPainter, rect:PySide2.QtCore.QRectF) -> None: ... + def drawForeground(self, painter:PySide2.QtGui.QPainter, rect:PySide2.QtCore.QRectF) -> None: ... + def dropEvent(self, event:PySide2.QtWidgets.QGraphicsSceneDragDropEvent) -> None: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def eventFilter(self, watched:PySide2.QtCore.QObject, event:PySide2.QtCore.QEvent) -> bool: ... + def focusInEvent(self, event:PySide2.QtGui.QFocusEvent) -> None: ... + def focusItem(self) -> PySide2.QtWidgets.QGraphicsItem: ... + def focusNextPrevChild(self, next:bool) -> bool: ... + def focusOnTouch(self) -> bool: ... + def focusOutEvent(self, event:PySide2.QtGui.QFocusEvent) -> None: ... + def font(self) -> PySide2.QtGui.QFont: ... + def foregroundBrush(self) -> PySide2.QtGui.QBrush: ... + def hasFocus(self) -> bool: ... + def height(self) -> float: ... + def helpEvent(self, event:PySide2.QtWidgets.QGraphicsSceneHelpEvent) -> None: ... + def inputMethodEvent(self, event:PySide2.QtGui.QInputMethodEvent) -> None: ... + def inputMethodQuery(self, query:PySide2.QtCore.Qt.InputMethodQuery) -> typing.Any: ... + @typing.overload + def invalidate(self, rect:PySide2.QtCore.QRectF=..., layers:PySide2.QtWidgets.QGraphicsScene.SceneLayers=...) -> None: ... + @typing.overload + def invalidate(self, x:float, y:float, w:float, h:float, layers:PySide2.QtWidgets.QGraphicsScene.SceneLayers=...) -> None: ... + def isActive(self) -> bool: ... + def isSortCacheEnabled(self) -> bool: ... + @typing.overload + def itemAt(self, pos:PySide2.QtCore.QPointF, deviceTransform:PySide2.QtGui.QTransform) -> PySide2.QtWidgets.QGraphicsItem: ... + @typing.overload + def itemAt(self, x:float, y:float, deviceTransform:PySide2.QtGui.QTransform) -> PySide2.QtWidgets.QGraphicsItem: ... + def itemIndexMethod(self) -> PySide2.QtWidgets.QGraphicsScene.ItemIndexMethod: ... + @typing.overload + def items(self, order:PySide2.QtCore.Qt.SortOrder=...) -> typing.List: ... + @typing.overload + def items(self, path:PySide2.QtGui.QPainterPath, mode:PySide2.QtCore.Qt.ItemSelectionMode=..., order:PySide2.QtCore.Qt.SortOrder=..., deviceTransform:PySide2.QtGui.QTransform=...) -> typing.List: ... + @typing.overload + def items(self, polygon:PySide2.QtGui.QPolygonF, mode:PySide2.QtCore.Qt.ItemSelectionMode=..., order:PySide2.QtCore.Qt.SortOrder=..., deviceTransform:PySide2.QtGui.QTransform=...) -> typing.List: ... + @typing.overload + def items(self, pos:PySide2.QtCore.QPointF, mode:PySide2.QtCore.Qt.ItemSelectionMode=..., order:PySide2.QtCore.Qt.SortOrder=..., deviceTransform:PySide2.QtGui.QTransform=...) -> typing.List: ... + @typing.overload + def items(self, rect:PySide2.QtCore.QRectF, mode:PySide2.QtCore.Qt.ItemSelectionMode=..., order:PySide2.QtCore.Qt.SortOrder=..., deviceTransform:PySide2.QtGui.QTransform=...) -> typing.List: ... + @typing.overload + def items(self, x:float, y:float, w:float, h:float, mode:PySide2.QtCore.Qt.ItemSelectionMode, order:PySide2.QtCore.Qt.SortOrder, deviceTransform:PySide2.QtGui.QTransform=...) -> typing.List: ... + def itemsBoundingRect(self) -> PySide2.QtCore.QRectF: ... + def keyPressEvent(self, event:PySide2.QtGui.QKeyEvent) -> None: ... + def keyReleaseEvent(self, event:PySide2.QtGui.QKeyEvent) -> None: ... + def minimumRenderSize(self) -> float: ... + def mouseDoubleClickEvent(self, event:PySide2.QtWidgets.QGraphicsSceneMouseEvent) -> None: ... + def mouseGrabberItem(self) -> PySide2.QtWidgets.QGraphicsItem: ... + def mouseMoveEvent(self, event:PySide2.QtWidgets.QGraphicsSceneMouseEvent) -> None: ... + def mousePressEvent(self, event:PySide2.QtWidgets.QGraphicsSceneMouseEvent) -> None: ... + def mouseReleaseEvent(self, event:PySide2.QtWidgets.QGraphicsSceneMouseEvent) -> None: ... + def palette(self) -> PySide2.QtGui.QPalette: ... + def removeItem(self, item:PySide2.QtWidgets.QGraphicsItem) -> None: ... + def render(self, painter:PySide2.QtGui.QPainter, target:PySide2.QtCore.QRectF=..., source:PySide2.QtCore.QRectF=..., aspectRatioMode:PySide2.QtCore.Qt.AspectRatioMode=...) -> None: ... + def sceneRect(self) -> PySide2.QtCore.QRectF: ... + def selectedItems(self) -> typing.List: ... + def selectionArea(self) -> PySide2.QtGui.QPainterPath: ... + def sendEvent(self, item:PySide2.QtWidgets.QGraphicsItem, event:PySide2.QtCore.QEvent) -> bool: ... + def setActivePanel(self, item:PySide2.QtWidgets.QGraphicsItem) -> None: ... + def setActiveWindow(self, widget:PySide2.QtWidgets.QGraphicsWidget) -> None: ... + def setBackgroundBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setBspTreeDepth(self, depth:int) -> None: ... + def setFocus(self, focusReason:PySide2.QtCore.Qt.FocusReason=...) -> None: ... + def setFocusItem(self, item:PySide2.QtWidgets.QGraphicsItem, focusReason:PySide2.QtCore.Qt.FocusReason=...) -> None: ... + def setFocusOnTouch(self, enabled:bool) -> None: ... + def setFont(self, font:PySide2.QtGui.QFont) -> None: ... + def setForegroundBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setItemIndexMethod(self, method:PySide2.QtWidgets.QGraphicsScene.ItemIndexMethod) -> None: ... + def setMinimumRenderSize(self, minSize:float) -> None: ... + def setPalette(self, palette:PySide2.QtGui.QPalette) -> None: ... + @typing.overload + def setSceneRect(self, rect:PySide2.QtCore.QRectF) -> None: ... + @typing.overload + def setSceneRect(self, x:float, y:float, w:float, h:float) -> None: ... + @typing.overload + def setSelectionArea(self, path:PySide2.QtGui.QPainterPath, deviceTransform:PySide2.QtGui.QTransform) -> None: ... + @typing.overload + def setSelectionArea(self, path:PySide2.QtGui.QPainterPath, mode:PySide2.QtCore.Qt.ItemSelectionMode=..., deviceTransform:PySide2.QtGui.QTransform=...) -> None: ... + @typing.overload + def setSelectionArea(self, path:PySide2.QtGui.QPainterPath, selectionOperation:PySide2.QtCore.Qt.ItemSelectionOperation, mode:PySide2.QtCore.Qt.ItemSelectionMode=..., deviceTransform:PySide2.QtGui.QTransform=...) -> None: ... + def setSortCacheEnabled(self, enabled:bool) -> None: ... + def setStickyFocus(self, enabled:bool) -> None: ... + def setStyle(self, style:PySide2.QtWidgets.QStyle) -> None: ... + def stickyFocus(self) -> bool: ... + def style(self) -> PySide2.QtWidgets.QStyle: ... + @typing.overload + def update(self, rect:PySide2.QtCore.QRectF=...) -> None: ... + @typing.overload + def update(self, x:float, y:float, w:float, h:float) -> None: ... + def views(self) -> typing.List: ... + def wheelEvent(self, event:PySide2.QtWidgets.QGraphicsSceneWheelEvent) -> None: ... + def width(self) -> float: ... + + +class QGraphicsSceneContextMenuEvent(PySide2.QtWidgets.QGraphicsSceneEvent): + Mouse : QGraphicsSceneContextMenuEvent = ... # 0x0 + Keyboard : QGraphicsSceneContextMenuEvent = ... # 0x1 + Other : QGraphicsSceneContextMenuEvent = ... # 0x2 + + class Reason(object): + Mouse : QGraphicsSceneContextMenuEvent.Reason = ... # 0x0 + Keyboard : QGraphicsSceneContextMenuEvent.Reason = ... # 0x1 + Other : QGraphicsSceneContextMenuEvent.Reason = ... # 0x2 + + def __init__(self, type:typing.Optional[PySide2.QtCore.QEvent.Type]=...) -> None: ... + + def modifiers(self) -> PySide2.QtCore.Qt.KeyboardModifiers: ... + def pos(self) -> PySide2.QtCore.QPointF: ... + def reason(self) -> PySide2.QtWidgets.QGraphicsSceneContextMenuEvent.Reason: ... + def scenePos(self) -> PySide2.QtCore.QPointF: ... + def screenPos(self) -> PySide2.QtCore.QPoint: ... + def setModifiers(self, modifiers:PySide2.QtCore.Qt.KeyboardModifiers) -> None: ... + def setPos(self, pos:PySide2.QtCore.QPointF) -> None: ... + def setReason(self, reason:PySide2.QtWidgets.QGraphicsSceneContextMenuEvent.Reason) -> None: ... + def setScenePos(self, pos:PySide2.QtCore.QPointF) -> None: ... + def setScreenPos(self, pos:PySide2.QtCore.QPoint) -> None: ... + + +class QGraphicsSceneDragDropEvent(PySide2.QtWidgets.QGraphicsSceneEvent): + + def __init__(self, type:typing.Optional[PySide2.QtCore.QEvent.Type]=...) -> None: ... + + def acceptProposedAction(self) -> None: ... + def buttons(self) -> PySide2.QtCore.Qt.MouseButtons: ... + def dropAction(self) -> PySide2.QtCore.Qt.DropAction: ... + def mimeData(self) -> PySide2.QtCore.QMimeData: ... + def modifiers(self) -> PySide2.QtCore.Qt.KeyboardModifiers: ... + def pos(self) -> PySide2.QtCore.QPointF: ... + def possibleActions(self) -> PySide2.QtCore.Qt.DropActions: ... + def proposedAction(self) -> PySide2.QtCore.Qt.DropAction: ... + def scenePos(self) -> PySide2.QtCore.QPointF: ... + def screenPos(self) -> PySide2.QtCore.QPoint: ... + def setButtons(self, buttons:PySide2.QtCore.Qt.MouseButtons) -> None: ... + def setDropAction(self, action:PySide2.QtCore.Qt.DropAction) -> None: ... + def setModifiers(self, modifiers:PySide2.QtCore.Qt.KeyboardModifiers) -> None: ... + def setPos(self, pos:PySide2.QtCore.QPointF) -> None: ... + def setPossibleActions(self, actions:PySide2.QtCore.Qt.DropActions) -> None: ... + def setProposedAction(self, action:PySide2.QtCore.Qt.DropAction) -> None: ... + def setScenePos(self, pos:PySide2.QtCore.QPointF) -> None: ... + def setScreenPos(self, pos:PySide2.QtCore.QPoint) -> None: ... + def source(self) -> PySide2.QtWidgets.QWidget: ... + + +class QGraphicsSceneEvent(PySide2.QtCore.QEvent): + + def __init__(self, type:PySide2.QtCore.QEvent.Type) -> None: ... + + def widget(self) -> PySide2.QtWidgets.QWidget: ... + + +class QGraphicsSceneHelpEvent(PySide2.QtWidgets.QGraphicsSceneEvent): + + def __init__(self, type:typing.Optional[PySide2.QtCore.QEvent.Type]=...) -> None: ... + + def scenePos(self) -> PySide2.QtCore.QPointF: ... + def screenPos(self) -> PySide2.QtCore.QPoint: ... + def setScenePos(self, pos:PySide2.QtCore.QPointF) -> None: ... + def setScreenPos(self, pos:PySide2.QtCore.QPoint) -> None: ... + + +class QGraphicsSceneHoverEvent(PySide2.QtWidgets.QGraphicsSceneEvent): + + def __init__(self, type:typing.Optional[PySide2.QtCore.QEvent.Type]=...) -> None: ... + + def lastPos(self) -> PySide2.QtCore.QPointF: ... + def lastScenePos(self) -> PySide2.QtCore.QPointF: ... + def lastScreenPos(self) -> PySide2.QtCore.QPoint: ... + def modifiers(self) -> PySide2.QtCore.Qt.KeyboardModifiers: ... + def pos(self) -> PySide2.QtCore.QPointF: ... + def scenePos(self) -> PySide2.QtCore.QPointF: ... + def screenPos(self) -> PySide2.QtCore.QPoint: ... + def setLastPos(self, pos:PySide2.QtCore.QPointF) -> None: ... + def setLastScenePos(self, pos:PySide2.QtCore.QPointF) -> None: ... + def setLastScreenPos(self, pos:PySide2.QtCore.QPoint) -> None: ... + def setModifiers(self, modifiers:PySide2.QtCore.Qt.KeyboardModifiers) -> None: ... + def setPos(self, pos:PySide2.QtCore.QPointF) -> None: ... + def setScenePos(self, pos:PySide2.QtCore.QPointF) -> None: ... + def setScreenPos(self, pos:PySide2.QtCore.QPoint) -> None: ... + + +class QGraphicsSceneMouseEvent(PySide2.QtWidgets.QGraphicsSceneEvent): + + def __init__(self, type:typing.Optional[PySide2.QtCore.QEvent.Type]=...) -> None: ... + + def button(self) -> PySide2.QtCore.Qt.MouseButton: ... + def buttonDownPos(self, button:PySide2.QtCore.Qt.MouseButton) -> PySide2.QtCore.QPointF: ... + def buttonDownScenePos(self, button:PySide2.QtCore.Qt.MouseButton) -> PySide2.QtCore.QPointF: ... + def buttonDownScreenPos(self, button:PySide2.QtCore.Qt.MouseButton) -> PySide2.QtCore.QPoint: ... + def buttons(self) -> PySide2.QtCore.Qt.MouseButtons: ... + def flags(self) -> PySide2.QtCore.Qt.MouseEventFlags: ... + def lastPos(self) -> PySide2.QtCore.QPointF: ... + def lastScenePos(self) -> PySide2.QtCore.QPointF: ... + def lastScreenPos(self) -> PySide2.QtCore.QPoint: ... + def modifiers(self) -> PySide2.QtCore.Qt.KeyboardModifiers: ... + def pos(self) -> PySide2.QtCore.QPointF: ... + def scenePos(self) -> PySide2.QtCore.QPointF: ... + def screenPos(self) -> PySide2.QtCore.QPoint: ... + def setButton(self, button:PySide2.QtCore.Qt.MouseButton) -> None: ... + def setButtonDownPos(self, button:PySide2.QtCore.Qt.MouseButton, pos:PySide2.QtCore.QPointF) -> None: ... + def setButtonDownScenePos(self, button:PySide2.QtCore.Qt.MouseButton, pos:PySide2.QtCore.QPointF) -> None: ... + def setButtonDownScreenPos(self, button:PySide2.QtCore.Qt.MouseButton, pos:PySide2.QtCore.QPoint) -> None: ... + def setButtons(self, buttons:PySide2.QtCore.Qt.MouseButtons) -> None: ... + def setFlags(self, arg__1:PySide2.QtCore.Qt.MouseEventFlags) -> None: ... + def setLastPos(self, pos:PySide2.QtCore.QPointF) -> None: ... + def setLastScenePos(self, pos:PySide2.QtCore.QPointF) -> None: ... + def setLastScreenPos(self, pos:PySide2.QtCore.QPoint) -> None: ... + def setModifiers(self, modifiers:PySide2.QtCore.Qt.KeyboardModifiers) -> None: ... + def setPos(self, pos:PySide2.QtCore.QPointF) -> None: ... + def setScenePos(self, pos:PySide2.QtCore.QPointF) -> None: ... + def setScreenPos(self, pos:PySide2.QtCore.QPoint) -> None: ... + def setSource(self, source:PySide2.QtCore.Qt.MouseEventSource) -> None: ... + def source(self) -> PySide2.QtCore.Qt.MouseEventSource: ... + + +class QGraphicsSceneMoveEvent(PySide2.QtWidgets.QGraphicsSceneEvent): + + def __init__(self) -> None: ... + + def newPos(self) -> PySide2.QtCore.QPointF: ... + def oldPos(self) -> PySide2.QtCore.QPointF: ... + def setNewPos(self, pos:PySide2.QtCore.QPointF) -> None: ... + def setOldPos(self, pos:PySide2.QtCore.QPointF) -> None: ... + + +class QGraphicsSceneResizeEvent(PySide2.QtWidgets.QGraphicsSceneEvent): + + def __init__(self) -> None: ... + + def newSize(self) -> PySide2.QtCore.QSizeF: ... + def oldSize(self) -> PySide2.QtCore.QSizeF: ... + def setNewSize(self, size:PySide2.QtCore.QSizeF) -> None: ... + def setOldSize(self, size:PySide2.QtCore.QSizeF) -> None: ... + + +class QGraphicsSceneWheelEvent(PySide2.QtWidgets.QGraphicsSceneEvent): + + def __init__(self, type:typing.Optional[PySide2.QtCore.QEvent.Type]=...) -> None: ... + + def buttons(self) -> PySide2.QtCore.Qt.MouseButtons: ... + def delta(self) -> int: ... + def modifiers(self) -> PySide2.QtCore.Qt.KeyboardModifiers: ... + def orientation(self) -> PySide2.QtCore.Qt.Orientation: ... + def pos(self) -> PySide2.QtCore.QPointF: ... + def scenePos(self) -> PySide2.QtCore.QPointF: ... + def screenPos(self) -> PySide2.QtCore.QPoint: ... + def setButtons(self, buttons:PySide2.QtCore.Qt.MouseButtons) -> None: ... + def setDelta(self, delta:int) -> None: ... + def setModifiers(self, modifiers:PySide2.QtCore.Qt.KeyboardModifiers) -> None: ... + def setOrientation(self, orientation:PySide2.QtCore.Qt.Orientation) -> None: ... + def setPos(self, pos:PySide2.QtCore.QPointF) -> None: ... + def setScenePos(self, pos:PySide2.QtCore.QPointF) -> None: ... + def setScreenPos(self, pos:PySide2.QtCore.QPoint) -> None: ... + + +class QGraphicsSimpleTextItem(PySide2.QtWidgets.QAbstractGraphicsShapeItem): + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=...) -> None: ... + @typing.overload + def __init__(self, text:str, parent:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=...) -> None: ... + + def boundingRect(self) -> PySide2.QtCore.QRectF: ... + def contains(self, point:PySide2.QtCore.QPointF) -> bool: ... + def extension(self, variant:typing.Any) -> typing.Any: ... + def font(self) -> PySide2.QtGui.QFont: ... + def isObscuredBy(self, item:PySide2.QtWidgets.QGraphicsItem) -> bool: ... + def opaqueArea(self) -> PySide2.QtGui.QPainterPath: ... + def paint(self, painter:PySide2.QtGui.QPainter, option:PySide2.QtWidgets.QStyleOptionGraphicsItem, widget:PySide2.QtWidgets.QWidget) -> None: ... + def setFont(self, font:PySide2.QtGui.QFont) -> None: ... + def setText(self, text:str) -> None: ... + def shape(self) -> PySide2.QtGui.QPainterPath: ... + def text(self) -> str: ... + def type(self) -> int: ... + + +class QGraphicsTextItem(PySide2.QtWidgets.QGraphicsObject): + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=...) -> None: ... + @typing.overload + def __init__(self, text:str, parent:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=...) -> None: ... + + def adjustSize(self) -> None: ... + def boundingRect(self) -> PySide2.QtCore.QRectF: ... + def contains(self, point:PySide2.QtCore.QPointF) -> bool: ... + def contextMenuEvent(self, event:PySide2.QtWidgets.QGraphicsSceneContextMenuEvent) -> None: ... + def defaultTextColor(self) -> PySide2.QtGui.QColor: ... + def document(self) -> PySide2.QtGui.QTextDocument: ... + def dragEnterEvent(self, event:PySide2.QtWidgets.QGraphicsSceneDragDropEvent) -> None: ... + def dragLeaveEvent(self, event:PySide2.QtWidgets.QGraphicsSceneDragDropEvent) -> None: ... + def dragMoveEvent(self, event:PySide2.QtWidgets.QGraphicsSceneDragDropEvent) -> None: ... + def dropEvent(self, event:PySide2.QtWidgets.QGraphicsSceneDragDropEvent) -> None: ... + def extension(self, variant:typing.Any) -> typing.Any: ... + def focusInEvent(self, event:PySide2.QtGui.QFocusEvent) -> None: ... + def focusOutEvent(self, event:PySide2.QtGui.QFocusEvent) -> None: ... + def font(self) -> PySide2.QtGui.QFont: ... + def hoverEnterEvent(self, event:PySide2.QtWidgets.QGraphicsSceneHoverEvent) -> None: ... + def hoverLeaveEvent(self, event:PySide2.QtWidgets.QGraphicsSceneHoverEvent) -> None: ... + def hoverMoveEvent(self, event:PySide2.QtWidgets.QGraphicsSceneHoverEvent) -> None: ... + def inputMethodEvent(self, event:PySide2.QtGui.QInputMethodEvent) -> None: ... + def inputMethodQuery(self, query:PySide2.QtCore.Qt.InputMethodQuery) -> typing.Any: ... + def isObscuredBy(self, item:PySide2.QtWidgets.QGraphicsItem) -> bool: ... + def keyPressEvent(self, event:PySide2.QtGui.QKeyEvent) -> None: ... + def keyReleaseEvent(self, event:PySide2.QtGui.QKeyEvent) -> None: ... + def mouseDoubleClickEvent(self, event:PySide2.QtWidgets.QGraphicsSceneMouseEvent) -> None: ... + def mouseMoveEvent(self, event:PySide2.QtWidgets.QGraphicsSceneMouseEvent) -> None: ... + def mousePressEvent(self, event:PySide2.QtWidgets.QGraphicsSceneMouseEvent) -> None: ... + def mouseReleaseEvent(self, event:PySide2.QtWidgets.QGraphicsSceneMouseEvent) -> None: ... + def opaqueArea(self) -> PySide2.QtGui.QPainterPath: ... + def openExternalLinks(self) -> bool: ... + def paint(self, painter:PySide2.QtGui.QPainter, option:PySide2.QtWidgets.QStyleOptionGraphicsItem, widget:PySide2.QtWidgets.QWidget) -> None: ... + def sceneEvent(self, event:PySide2.QtCore.QEvent) -> bool: ... + def setDefaultTextColor(self, c:PySide2.QtGui.QColor) -> None: ... + def setDocument(self, document:PySide2.QtGui.QTextDocument) -> None: ... + def setExtension(self, extension:PySide2.QtWidgets.QGraphicsItem.Extension, variant:typing.Any) -> None: ... + def setFont(self, font:PySide2.QtGui.QFont) -> None: ... + def setHtml(self, html:str) -> None: ... + def setOpenExternalLinks(self, open:bool) -> None: ... + def setPlainText(self, text:str) -> None: ... + def setTabChangesFocus(self, b:bool) -> None: ... + def setTextCursor(self, cursor:PySide2.QtGui.QTextCursor) -> None: ... + def setTextInteractionFlags(self, flags:PySide2.QtCore.Qt.TextInteractionFlags) -> None: ... + def setTextWidth(self, width:float) -> None: ... + def shape(self) -> PySide2.QtGui.QPainterPath: ... + def supportsExtension(self, extension:PySide2.QtWidgets.QGraphicsItem.Extension) -> bool: ... + def tabChangesFocus(self) -> bool: ... + def textCursor(self) -> PySide2.QtGui.QTextCursor: ... + def textInteractionFlags(self) -> PySide2.QtCore.Qt.TextInteractionFlags: ... + def textWidth(self) -> float: ... + def toHtml(self) -> str: ... + def toPlainText(self) -> str: ... + def type(self) -> int: ... + + +class QGraphicsTransform(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def applyTo(self, matrix:PySide2.QtGui.QMatrix4x4) -> None: ... + def update(self) -> None: ... + + +class QGraphicsView(PySide2.QtWidgets.QAbstractScrollArea): + CacheNone : QGraphicsView = ... # 0x0 + FullViewportUpdate : QGraphicsView = ... # 0x0 + NoAnchor : QGraphicsView = ... # 0x0 + NoDrag : QGraphicsView = ... # 0x0 + AnchorViewCenter : QGraphicsView = ... # 0x1 + CacheBackground : QGraphicsView = ... # 0x1 + DontClipPainter : QGraphicsView = ... # 0x1 + MinimalViewportUpdate : QGraphicsView = ... # 0x1 + ScrollHandDrag : QGraphicsView = ... # 0x1 + AnchorUnderMouse : QGraphicsView = ... # 0x2 + DontSavePainterState : QGraphicsView = ... # 0x2 + RubberBandDrag : QGraphicsView = ... # 0x2 + SmartViewportUpdate : QGraphicsView = ... # 0x2 + NoViewportUpdate : QGraphicsView = ... # 0x3 + BoundingRectViewportUpdate: QGraphicsView = ... # 0x4 + DontAdjustForAntialiasing: QGraphicsView = ... # 0x4 + IndirectPainting : QGraphicsView = ... # 0x8 + + class CacheMode(object): ... + + class CacheModeFlag(object): + CacheNone : QGraphicsView.CacheModeFlag = ... # 0x0 + CacheBackground : QGraphicsView.CacheModeFlag = ... # 0x1 + + class DragMode(object): + NoDrag : QGraphicsView.DragMode = ... # 0x0 + ScrollHandDrag : QGraphicsView.DragMode = ... # 0x1 + RubberBandDrag : QGraphicsView.DragMode = ... # 0x2 + + class OptimizationFlag(object): + DontClipPainter : QGraphicsView.OptimizationFlag = ... # 0x1 + DontSavePainterState : QGraphicsView.OptimizationFlag = ... # 0x2 + DontAdjustForAntialiasing: QGraphicsView.OptimizationFlag = ... # 0x4 + IndirectPainting : QGraphicsView.OptimizationFlag = ... # 0x8 + + class OptimizationFlags(object): ... + + class ViewportAnchor(object): + NoAnchor : QGraphicsView.ViewportAnchor = ... # 0x0 + AnchorViewCenter : QGraphicsView.ViewportAnchor = ... # 0x1 + AnchorUnderMouse : QGraphicsView.ViewportAnchor = ... # 0x2 + + class ViewportUpdateMode(object): + FullViewportUpdate : QGraphicsView.ViewportUpdateMode = ... # 0x0 + MinimalViewportUpdate : QGraphicsView.ViewportUpdateMode = ... # 0x1 + SmartViewportUpdate : QGraphicsView.ViewportUpdateMode = ... # 0x2 + NoViewportUpdate : QGraphicsView.ViewportUpdateMode = ... # 0x3 + BoundingRectViewportUpdate: QGraphicsView.ViewportUpdateMode = ... # 0x4 + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, scene:PySide2.QtWidgets.QGraphicsScene, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def alignment(self) -> PySide2.QtCore.Qt.Alignment: ... + def backgroundBrush(self) -> PySide2.QtGui.QBrush: ... + def cacheMode(self) -> PySide2.QtWidgets.QGraphicsView.CacheMode: ... + @typing.overload + def centerOn(self, item:PySide2.QtWidgets.QGraphicsItem) -> None: ... + @typing.overload + def centerOn(self, pos:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def centerOn(self, x:float, y:float) -> None: ... + def contextMenuEvent(self, event:PySide2.QtGui.QContextMenuEvent) -> None: ... + def dragEnterEvent(self, event:PySide2.QtGui.QDragEnterEvent) -> None: ... + def dragLeaveEvent(self, event:PySide2.QtGui.QDragLeaveEvent) -> None: ... + def dragMode(self) -> PySide2.QtWidgets.QGraphicsView.DragMode: ... + def dragMoveEvent(self, event:PySide2.QtGui.QDragMoveEvent) -> None: ... + def drawBackground(self, painter:PySide2.QtGui.QPainter, rect:PySide2.QtCore.QRectF) -> None: ... + def drawForeground(self, painter:PySide2.QtGui.QPainter, rect:PySide2.QtCore.QRectF) -> None: ... + def drawItems(self, painter:PySide2.QtGui.QPainter, numItems:int, items:typing.Sequence, options:typing.Sequence) -> None: ... + def dropEvent(self, event:PySide2.QtGui.QDropEvent) -> None: ... + @typing.overload + def ensureVisible(self, item:PySide2.QtWidgets.QGraphicsItem, xmargin:int=..., ymargin:int=...) -> None: ... + @typing.overload + def ensureVisible(self, rect:PySide2.QtCore.QRectF, xmargin:int=..., ymargin:int=...) -> None: ... + @typing.overload + def ensureVisible(self, x:float, y:float, w:float, h:float, xmargin:int=..., ymargin:int=...) -> None: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + @typing.overload + def fitInView(self, item:PySide2.QtWidgets.QGraphicsItem, aspectRadioMode:PySide2.QtCore.Qt.AspectRatioMode=...) -> None: ... + @typing.overload + def fitInView(self, rect:PySide2.QtCore.QRectF, aspectRadioMode:PySide2.QtCore.Qt.AspectRatioMode=...) -> None: ... + @typing.overload + def fitInView(self, x:float, y:float, w:float, h:float, aspectRadioMode:PySide2.QtCore.Qt.AspectRatioMode=...) -> None: ... + def focusInEvent(self, event:PySide2.QtGui.QFocusEvent) -> None: ... + def focusNextPrevChild(self, next:bool) -> bool: ... + def focusOutEvent(self, event:PySide2.QtGui.QFocusEvent) -> None: ... + def foregroundBrush(self) -> PySide2.QtGui.QBrush: ... + def inputMethodEvent(self, event:PySide2.QtGui.QInputMethodEvent) -> None: ... + def inputMethodQuery(self, query:PySide2.QtCore.Qt.InputMethodQuery) -> typing.Any: ... + def invalidateScene(self, rect:PySide2.QtCore.QRectF=..., layers:PySide2.QtWidgets.QGraphicsScene.SceneLayers=...) -> None: ... + def isInteractive(self) -> bool: ... + def isTransformed(self) -> bool: ... + @typing.overload + def itemAt(self, pos:PySide2.QtCore.QPoint) -> PySide2.QtWidgets.QGraphicsItem: ... + @typing.overload + def itemAt(self, x:int, y:int) -> PySide2.QtWidgets.QGraphicsItem: ... + @typing.overload + def items(self) -> typing.List: ... + @typing.overload + def items(self, path:PySide2.QtGui.QPainterPath, mode:PySide2.QtCore.Qt.ItemSelectionMode=...) -> typing.List: ... + @typing.overload + def items(self, polygon:PySide2.QtGui.QPolygon, mode:PySide2.QtCore.Qt.ItemSelectionMode=...) -> typing.List: ... + @typing.overload + def items(self, pos:PySide2.QtCore.QPoint) -> typing.List: ... + @typing.overload + def items(self, rect:PySide2.QtCore.QRect, mode:PySide2.QtCore.Qt.ItemSelectionMode=...) -> typing.List: ... + @typing.overload + def items(self, x:int, y:int) -> typing.List: ... + @typing.overload + def items(self, x:int, y:int, w:int, h:int, mode:PySide2.QtCore.Qt.ItemSelectionMode=...) -> typing.List: ... + def keyPressEvent(self, event:PySide2.QtGui.QKeyEvent) -> None: ... + def keyReleaseEvent(self, event:PySide2.QtGui.QKeyEvent) -> None: ... + @typing.overload + def mapFromScene(self, path:PySide2.QtGui.QPainterPath) -> PySide2.QtGui.QPainterPath: ... + @typing.overload + def mapFromScene(self, point:PySide2.QtCore.QPointF) -> PySide2.QtCore.QPoint: ... + @typing.overload + def mapFromScene(self, polygon:PySide2.QtGui.QPolygonF) -> PySide2.QtGui.QPolygon: ... + @typing.overload + def mapFromScene(self, rect:PySide2.QtCore.QRectF) -> PySide2.QtGui.QPolygon: ... + @typing.overload + def mapFromScene(self, x:float, y:float) -> PySide2.QtCore.QPoint: ... + @typing.overload + def mapFromScene(self, x:float, y:float, w:float, h:float) -> PySide2.QtGui.QPolygon: ... + @typing.overload + def mapToScene(self, path:PySide2.QtGui.QPainterPath) -> PySide2.QtGui.QPainterPath: ... + @typing.overload + def mapToScene(self, point:PySide2.QtCore.QPoint) -> PySide2.QtCore.QPointF: ... + @typing.overload + def mapToScene(self, polygon:PySide2.QtGui.QPolygon) -> PySide2.QtGui.QPolygonF: ... + @typing.overload + def mapToScene(self, rect:PySide2.QtCore.QRect) -> PySide2.QtGui.QPolygonF: ... + @typing.overload + def mapToScene(self, x:int, y:int) -> PySide2.QtCore.QPointF: ... + @typing.overload + def mapToScene(self, x:int, y:int, w:int, h:int) -> PySide2.QtGui.QPolygonF: ... + def matrix(self) -> PySide2.QtGui.QMatrix: ... + def mouseDoubleClickEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseMoveEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def mousePressEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def optimizationFlags(self) -> PySide2.QtWidgets.QGraphicsView.OptimizationFlags: ... + def paintEvent(self, event:PySide2.QtGui.QPaintEvent) -> None: ... + @typing.overload + def render(self, painter:PySide2.QtGui.QPainter, target:PySide2.QtCore.QRectF=..., source:PySide2.QtCore.QRect=..., aspectRatioMode:PySide2.QtCore.Qt.AspectRatioMode=...) -> None: ... + @typing.overload + def render(self, target:PySide2.QtGui.QPaintDevice, targetOffset:PySide2.QtCore.QPoint=..., sourceRegion:PySide2.QtGui.QRegion=..., renderFlags:PySide2.QtWidgets.QWidget.RenderFlags=...) -> None: ... + def renderHints(self) -> PySide2.QtGui.QPainter.RenderHints: ... + def resetCachedContent(self) -> None: ... + def resetMatrix(self) -> None: ... + def resetTransform(self) -> None: ... + def resizeAnchor(self) -> PySide2.QtWidgets.QGraphicsView.ViewportAnchor: ... + def resizeEvent(self, event:PySide2.QtGui.QResizeEvent) -> None: ... + def rotate(self, angle:float) -> None: ... + def rubberBandRect(self) -> PySide2.QtCore.QRect: ... + def rubberBandSelectionMode(self) -> PySide2.QtCore.Qt.ItemSelectionMode: ... + def scale(self, sx:float, sy:float) -> None: ... + def scene(self) -> PySide2.QtWidgets.QGraphicsScene: ... + def sceneRect(self) -> PySide2.QtCore.QRectF: ... + def scrollContentsBy(self, dx:int, dy:int) -> None: ... + def setAlignment(self, alignment:PySide2.QtCore.Qt.Alignment) -> None: ... + def setBackgroundBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setCacheMode(self, mode:PySide2.QtWidgets.QGraphicsView.CacheMode) -> None: ... + def setDragMode(self, mode:PySide2.QtWidgets.QGraphicsView.DragMode) -> None: ... + def setForegroundBrush(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setInteractive(self, allowed:bool) -> None: ... + def setMatrix(self, matrix:PySide2.QtGui.QMatrix, combine:bool=...) -> None: ... + def setOptimizationFlag(self, flag:PySide2.QtWidgets.QGraphicsView.OptimizationFlag, enabled:bool=...) -> None: ... + def setOptimizationFlags(self, flags:PySide2.QtWidgets.QGraphicsView.OptimizationFlags) -> None: ... + def setRenderHint(self, hint:PySide2.QtGui.QPainter.RenderHint, enabled:bool=...) -> None: ... + def setRenderHints(self, hints:PySide2.QtGui.QPainter.RenderHints) -> None: ... + def setResizeAnchor(self, anchor:PySide2.QtWidgets.QGraphicsView.ViewportAnchor) -> None: ... + def setRubberBandSelectionMode(self, mode:PySide2.QtCore.Qt.ItemSelectionMode) -> None: ... + def setScene(self, scene:PySide2.QtWidgets.QGraphicsScene) -> None: ... + @typing.overload + def setSceneRect(self, rect:PySide2.QtCore.QRectF) -> None: ... + @typing.overload + def setSceneRect(self, x:float, y:float, w:float, h:float) -> None: ... + def setTransform(self, matrix:PySide2.QtGui.QTransform, combine:bool=...) -> None: ... + def setTransformationAnchor(self, anchor:PySide2.QtWidgets.QGraphicsView.ViewportAnchor) -> None: ... + def setViewportUpdateMode(self, mode:PySide2.QtWidgets.QGraphicsView.ViewportUpdateMode) -> None: ... + def setupViewport(self, widget:PySide2.QtWidgets.QWidget) -> None: ... + def shear(self, sh:float, sv:float) -> None: ... + def showEvent(self, event:PySide2.QtGui.QShowEvent) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def transform(self) -> PySide2.QtGui.QTransform: ... + def transformationAnchor(self) -> PySide2.QtWidgets.QGraphicsView.ViewportAnchor: ... + def translate(self, dx:float, dy:float) -> None: ... + def updateScene(self, rects:typing.Sequence) -> None: ... + def updateSceneRect(self, rect:PySide2.QtCore.QRectF) -> None: ... + def viewportEvent(self, event:PySide2.QtCore.QEvent) -> bool: ... + def viewportTransform(self) -> PySide2.QtGui.QTransform: ... + def viewportUpdateMode(self) -> PySide2.QtWidgets.QGraphicsView.ViewportUpdateMode: ... + def wheelEvent(self, event:PySide2.QtGui.QWheelEvent) -> None: ... + + +class QGraphicsWidget(PySide2.QtWidgets.QGraphicsObject, PySide2.QtWidgets.QGraphicsLayoutItem): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QGraphicsItem]=..., wFlags:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + + def actions(self) -> typing.List: ... + def addAction(self, action:PySide2.QtWidgets.QAction) -> None: ... + def addActions(self, actions:typing.Sequence) -> None: ... + def adjustSize(self) -> None: ... + def autoFillBackground(self) -> bool: ... + def boundingRect(self) -> PySide2.QtCore.QRectF: ... + def changeEvent(self, event:PySide2.QtCore.QEvent) -> None: ... + def close(self) -> bool: ... + def closeEvent(self, event:PySide2.QtGui.QCloseEvent) -> None: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def focusInEvent(self, event:PySide2.QtGui.QFocusEvent) -> None: ... + def focusNextPrevChild(self, next:bool) -> bool: ... + def focusOutEvent(self, event:PySide2.QtGui.QFocusEvent) -> None: ... + def focusPolicy(self) -> PySide2.QtCore.Qt.FocusPolicy: ... + def focusWidget(self) -> PySide2.QtWidgets.QGraphicsWidget: ... + def font(self) -> PySide2.QtGui.QFont: ... + def getContentsMargins(self) -> typing.Tuple: ... + def getWindowFrameMargins(self) -> typing.Tuple: ... + def grabKeyboardEvent(self, event:PySide2.QtCore.QEvent) -> None: ... + def grabMouseEvent(self, event:PySide2.QtCore.QEvent) -> None: ... + def grabShortcut(self, sequence:PySide2.QtGui.QKeySequence, context:PySide2.QtCore.Qt.ShortcutContext=...) -> int: ... + def hideEvent(self, event:PySide2.QtGui.QHideEvent) -> None: ... + def hoverLeaveEvent(self, event:PySide2.QtWidgets.QGraphicsSceneHoverEvent) -> None: ... + def hoverMoveEvent(self, event:PySide2.QtWidgets.QGraphicsSceneHoverEvent) -> None: ... + def initStyleOption(self, option:PySide2.QtWidgets.QStyleOption) -> None: ... + def insertAction(self, before:PySide2.QtWidgets.QAction, action:PySide2.QtWidgets.QAction) -> None: ... + def insertActions(self, before:PySide2.QtWidgets.QAction, actions:typing.Sequence) -> None: ... + def isActiveWindow(self) -> bool: ... + def itemChange(self, change:PySide2.QtWidgets.QGraphicsItem.GraphicsItemChange, value:typing.Any) -> typing.Any: ... + def layout(self) -> PySide2.QtWidgets.QGraphicsLayout: ... + def layoutDirection(self) -> PySide2.QtCore.Qt.LayoutDirection: ... + def moveEvent(self, event:PySide2.QtWidgets.QGraphicsSceneMoveEvent) -> None: ... + def paint(self, painter:PySide2.QtGui.QPainter, option:PySide2.QtWidgets.QStyleOptionGraphicsItem, widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + def paintWindowFrame(self, painter:PySide2.QtGui.QPainter, option:PySide2.QtWidgets.QStyleOptionGraphicsItem, widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + def palette(self) -> PySide2.QtGui.QPalette: ... + def polishEvent(self) -> None: ... + def propertyChange(self, propertyName:str, value:typing.Any) -> typing.Any: ... + def rect(self) -> PySide2.QtCore.QRectF: ... + def releaseShortcut(self, id:int) -> None: ... + def removeAction(self, action:PySide2.QtWidgets.QAction) -> None: ... + @typing.overload + def resize(self, size:PySide2.QtCore.QSizeF) -> None: ... + @typing.overload + def resize(self, w:float, h:float) -> None: ... + def resizeEvent(self, event:PySide2.QtWidgets.QGraphicsSceneResizeEvent) -> None: ... + def sceneEvent(self, event:PySide2.QtCore.QEvent) -> bool: ... + def setAttribute(self, attribute:PySide2.QtCore.Qt.WidgetAttribute, on:bool=...) -> None: ... + def setAutoFillBackground(self, enabled:bool) -> None: ... + @typing.overload + def setContentsMargins(self, left:float, top:float, right:float, bottom:float) -> None: ... + @typing.overload + def setContentsMargins(self, margins:PySide2.QtCore.QMarginsF) -> None: ... + def setFocusPolicy(self, policy:PySide2.QtCore.Qt.FocusPolicy) -> None: ... + def setFont(self, font:PySide2.QtGui.QFont) -> None: ... + @typing.overload + def setGeometry(self, rect:PySide2.QtCore.QRectF) -> None: ... + @typing.overload + def setGeometry(self, x:float, y:float, w:float, h:float) -> None: ... + def setLayout(self, layout:PySide2.QtWidgets.QGraphicsLayout) -> None: ... + def setLayoutDirection(self, direction:PySide2.QtCore.Qt.LayoutDirection) -> None: ... + def setPalette(self, palette:PySide2.QtGui.QPalette) -> None: ... + def setShortcutAutoRepeat(self, id:int, enabled:bool=...) -> None: ... + def setShortcutEnabled(self, id:int, enabled:bool=...) -> None: ... + def setStyle(self, style:PySide2.QtWidgets.QStyle) -> None: ... + @staticmethod + def setTabOrder(first:PySide2.QtWidgets.QGraphicsWidget, second:PySide2.QtWidgets.QGraphicsWidget) -> None: ... + def setWindowFlags(self, wFlags:PySide2.QtCore.Qt.WindowFlags) -> None: ... + @typing.overload + def setWindowFrameMargins(self, left:float, top:float, right:float, bottom:float) -> None: ... + @typing.overload + def setWindowFrameMargins(self, margins:PySide2.QtCore.QMarginsF) -> None: ... + def setWindowTitle(self, title:str) -> None: ... + def shape(self) -> PySide2.QtGui.QPainterPath: ... + def showEvent(self, event:PySide2.QtGui.QShowEvent) -> None: ... + def size(self) -> PySide2.QtCore.QSizeF: ... + def sizeHint(self, which:PySide2.QtCore.Qt.SizeHint, constraint:PySide2.QtCore.QSizeF=...) -> PySide2.QtCore.QSizeF: ... + def style(self) -> PySide2.QtWidgets.QStyle: ... + def testAttribute(self, attribute:PySide2.QtCore.Qt.WidgetAttribute) -> bool: ... + def type(self) -> int: ... + def ungrabKeyboardEvent(self, event:PySide2.QtCore.QEvent) -> None: ... + def ungrabMouseEvent(self, event:PySide2.QtCore.QEvent) -> None: ... + def unsetLayoutDirection(self) -> None: ... + def unsetWindowFrameMargins(self) -> None: ... + def updateGeometry(self) -> None: ... + def windowFlags(self) -> PySide2.QtCore.Qt.WindowFlags: ... + def windowFrameEvent(self, e:PySide2.QtCore.QEvent) -> bool: ... + def windowFrameGeometry(self) -> PySide2.QtCore.QRectF: ... + def windowFrameRect(self) -> PySide2.QtCore.QRectF: ... + def windowFrameSectionAt(self, pos:PySide2.QtCore.QPointF) -> PySide2.QtCore.Qt.WindowFrameSection: ... + def windowTitle(self) -> str: ... + def windowType(self) -> PySide2.QtCore.Qt.WindowType: ... + + +class QGridLayout(PySide2.QtWidgets.QLayout): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, parent:PySide2.QtWidgets.QWidget) -> None: ... + + @typing.overload + def addItem(self, arg__1:PySide2.QtWidgets.QLayoutItem) -> None: ... + @typing.overload + def addItem(self, item:PySide2.QtWidgets.QLayoutItem, row:int, column:int, rowSpan:int=..., columnSpan:int=..., alignment:PySide2.QtCore.Qt.Alignment=...) -> None: ... + @typing.overload + def addLayout(self, arg__1:PySide2.QtWidgets.QLayout, row:int, column:int, alignment:PySide2.QtCore.Qt.Alignment=...) -> None: ... + @typing.overload + def addLayout(self, arg__1:PySide2.QtWidgets.QLayout, row:int, column:int, rowSpan:int, columnSpan:int, alignment:PySide2.QtCore.Qt.Alignment=...) -> None: ... + @typing.overload + def addWidget(self, arg__1:PySide2.QtWidgets.QWidget, row:int, column:int, alignment:PySide2.QtCore.Qt.Alignment=...) -> None: ... + @typing.overload + def addWidget(self, arg__1:PySide2.QtWidgets.QWidget, row:int, column:int, rowSpan:int, columnSpan:int, alignment:PySide2.QtCore.Qt.Alignment=...) -> None: ... + @typing.overload + def addWidget(self, w:PySide2.QtWidgets.QWidget) -> None: ... + def cellRect(self, row:int, column:int) -> PySide2.QtCore.QRect: ... + def columnCount(self) -> int: ... + def columnMinimumWidth(self, column:int) -> int: ... + def columnStretch(self, column:int) -> int: ... + def count(self) -> int: ... + def expandingDirections(self) -> PySide2.QtCore.Qt.Orientations: ... + def getItemPosition(self, idx:int) -> typing.Tuple: ... + def hasHeightForWidth(self) -> bool: ... + def heightForWidth(self, arg__1:int) -> int: ... + def horizontalSpacing(self) -> int: ... + def invalidate(self) -> None: ... + def itemAt(self, index:int) -> PySide2.QtWidgets.QLayoutItem: ... + def itemAtPosition(self, row:int, column:int) -> PySide2.QtWidgets.QLayoutItem: ... + def maximumSize(self) -> PySide2.QtCore.QSize: ... + def minimumHeightForWidth(self, arg__1:int) -> int: ... + def minimumSize(self) -> PySide2.QtCore.QSize: ... + def originCorner(self) -> PySide2.QtCore.Qt.Corner: ... + def rowCount(self) -> int: ... + def rowMinimumHeight(self, row:int) -> int: ... + def rowStretch(self, row:int) -> int: ... + def setColumnMinimumWidth(self, column:int, minSize:int) -> None: ... + def setColumnStretch(self, column:int, stretch:int) -> None: ... + def setDefaultPositioning(self, n:int, orient:PySide2.QtCore.Qt.Orientation) -> None: ... + def setGeometry(self, arg__1:PySide2.QtCore.QRect) -> None: ... + def setHorizontalSpacing(self, spacing:int) -> None: ... + def setOriginCorner(self, arg__1:PySide2.QtCore.Qt.Corner) -> None: ... + def setRowMinimumHeight(self, row:int, minSize:int) -> None: ... + def setRowStretch(self, row:int, stretch:int) -> None: ... + def setSpacing(self, spacing:int) -> None: ... + def setVerticalSpacing(self, spacing:int) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def spacing(self) -> int: ... + def takeAt(self, index:int) -> PySide2.QtWidgets.QLayoutItem: ... + def verticalSpacing(self) -> int: ... + + +class QGroupBox(PySide2.QtWidgets.QWidget): + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, title:str, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def alignment(self) -> PySide2.QtCore.Qt.Alignment: ... + def changeEvent(self, event:PySide2.QtCore.QEvent) -> None: ... + def childEvent(self, event:PySide2.QtCore.QChildEvent) -> None: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def focusInEvent(self, event:PySide2.QtGui.QFocusEvent) -> None: ... + def initStyleOption(self, option:PySide2.QtWidgets.QStyleOptionGroupBox) -> None: ... + def isCheckable(self) -> bool: ... + def isChecked(self) -> bool: ... + def isFlat(self) -> bool: ... + def minimumSizeHint(self) -> PySide2.QtCore.QSize: ... + def mouseMoveEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def mousePressEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def paintEvent(self, event:PySide2.QtGui.QPaintEvent) -> None: ... + def resizeEvent(self, event:PySide2.QtGui.QResizeEvent) -> None: ... + def setAlignment(self, alignment:int) -> None: ... + def setCheckable(self, checkable:bool) -> None: ... + def setChecked(self, checked:bool) -> None: ... + def setFlat(self, flat:bool) -> None: ... + def setTitle(self, title:str) -> None: ... + def title(self) -> str: ... + + +class QHBoxLayout(PySide2.QtWidgets.QBoxLayout): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, parent:PySide2.QtWidgets.QWidget) -> None: ... + + +class QHeaderView(PySide2.QtWidgets.QAbstractItemView): + Interactive : QHeaderView = ... # 0x0 + Stretch : QHeaderView = ... # 0x1 + Custom : QHeaderView = ... # 0x2 + Fixed : QHeaderView = ... # 0x2 + ResizeToContents : QHeaderView = ... # 0x3 + + class ResizeMode(object): + Interactive : QHeaderView.ResizeMode = ... # 0x0 + Stretch : QHeaderView.ResizeMode = ... # 0x1 + Custom : QHeaderView.ResizeMode = ... # 0x2 + Fixed : QHeaderView.ResizeMode = ... # 0x2 + ResizeToContents : QHeaderView.ResizeMode = ... # 0x3 + + def __init__(self, orientation:PySide2.QtCore.Qt.Orientation, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def cascadingSectionResizes(self) -> bool: ... + def count(self) -> int: ... + def currentChanged(self, current:PySide2.QtCore.QModelIndex, old:PySide2.QtCore.QModelIndex) -> None: ... + def dataChanged(self, topLeft:PySide2.QtCore.QModelIndex, bottomRight:PySide2.QtCore.QModelIndex, roles:typing.List=...) -> None: ... + def defaultAlignment(self) -> PySide2.QtCore.Qt.Alignment: ... + def defaultSectionSize(self) -> int: ... + def doItemsLayout(self) -> None: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def headerDataChanged(self, orientation:PySide2.QtCore.Qt.Orientation, logicalFirst:int, logicalLast:int) -> None: ... + def hiddenSectionCount(self) -> int: ... + def hideSection(self, logicalIndex:int) -> None: ... + def highlightSections(self) -> bool: ... + def horizontalOffset(self) -> int: ... + def indexAt(self, p:PySide2.QtCore.QPoint) -> PySide2.QtCore.QModelIndex: ... + @typing.overload + def initStyleOption(self, option:PySide2.QtWidgets.QStyleOptionFrame) -> None: ... + @typing.overload + def initStyleOption(self, option:PySide2.QtWidgets.QStyleOptionHeader) -> None: ... + def initialize(self) -> None: ... + @typing.overload + def initializeSections(self) -> None: ... + @typing.overload + def initializeSections(self, start:int, end:int) -> None: ... + def isFirstSectionMovable(self) -> bool: ... + def isIndexHidden(self, index:PySide2.QtCore.QModelIndex) -> bool: ... + def isSectionHidden(self, logicalIndex:int) -> bool: ... + def isSortIndicatorShown(self) -> bool: ... + def length(self) -> int: ... + def logicalIndex(self, visualIndex:int) -> int: ... + @typing.overload + def logicalIndexAt(self, pos:PySide2.QtCore.QPoint) -> int: ... + @typing.overload + def logicalIndexAt(self, position:int) -> int: ... + @typing.overload + def logicalIndexAt(self, x:int, y:int) -> int: ... + def maximumSectionSize(self) -> int: ... + def minimumSectionSize(self) -> int: ... + def mouseDoubleClickEvent(self, e:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseMoveEvent(self, e:PySide2.QtGui.QMouseEvent) -> None: ... + def mousePressEvent(self, e:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, e:PySide2.QtGui.QMouseEvent) -> None: ... + def moveCursor(self, arg__1:PySide2.QtWidgets.QAbstractItemView.CursorAction, arg__2:PySide2.QtCore.Qt.KeyboardModifiers) -> PySide2.QtCore.QModelIndex: ... + def moveSection(self, from_:int, to:int) -> None: ... + def offset(self) -> int: ... + def orientation(self) -> PySide2.QtCore.Qt.Orientation: ... + def paintEvent(self, e:PySide2.QtGui.QPaintEvent) -> None: ... + def paintSection(self, painter:PySide2.QtGui.QPainter, rect:PySide2.QtCore.QRect, logicalIndex:int) -> None: ... + def reset(self) -> None: ... + def resetDefaultSectionSize(self) -> None: ... + def resizeContentsPrecision(self) -> int: ... + def resizeSection(self, logicalIndex:int, size:int) -> None: ... + @typing.overload + def resizeSections(self) -> None: ... + @typing.overload + def resizeSections(self, mode:PySide2.QtWidgets.QHeaderView.ResizeMode) -> None: ... + def restoreState(self, state:PySide2.QtCore.QByteArray) -> bool: ... + def rowsInserted(self, parent:PySide2.QtCore.QModelIndex, start:int, end:int) -> None: ... + def saveState(self) -> PySide2.QtCore.QByteArray: ... + def scrollContentsBy(self, dx:int, dy:int) -> None: ... + def scrollTo(self, index:PySide2.QtCore.QModelIndex, hint:PySide2.QtWidgets.QAbstractItemView.ScrollHint) -> None: ... + def sectionPosition(self, logicalIndex:int) -> int: ... + def sectionResizeMode(self, logicalIndex:int) -> PySide2.QtWidgets.QHeaderView.ResizeMode: ... + def sectionSize(self, logicalIndex:int) -> int: ... + def sectionSizeFromContents(self, logicalIndex:int) -> PySide2.QtCore.QSize: ... + def sectionSizeHint(self, logicalIndex:int) -> int: ... + def sectionViewportPosition(self, logicalIndex:int) -> int: ... + def sectionsAboutToBeRemoved(self, parent:PySide2.QtCore.QModelIndex, logicalFirst:int, logicalLast:int) -> None: ... + def sectionsClickable(self) -> bool: ... + def sectionsHidden(self) -> bool: ... + def sectionsInserted(self, parent:PySide2.QtCore.QModelIndex, logicalFirst:int, logicalLast:int) -> None: ... + def sectionsMovable(self) -> bool: ... + def sectionsMoved(self) -> bool: ... + def setCascadingSectionResizes(self, enable:bool) -> None: ... + def setDefaultAlignment(self, alignment:PySide2.QtCore.Qt.Alignment) -> None: ... + def setDefaultSectionSize(self, size:int) -> None: ... + def setFirstSectionMovable(self, movable:bool) -> None: ... + def setHighlightSections(self, highlight:bool) -> None: ... + def setMaximumSectionSize(self, size:int) -> None: ... + def setMinimumSectionSize(self, size:int) -> None: ... + def setModel(self, model:PySide2.QtCore.QAbstractItemModel) -> None: ... + def setOffset(self, offset:int) -> None: ... + def setOffsetToLastSection(self) -> None: ... + def setOffsetToSectionPosition(self, visualIndex:int) -> None: ... + def setResizeContentsPrecision(self, precision:int) -> None: ... + def setSectionHidden(self, logicalIndex:int, hide:bool) -> None: ... + @typing.overload + def setSectionResizeMode(self, logicalIndex:int, mode:PySide2.QtWidgets.QHeaderView.ResizeMode) -> None: ... + @typing.overload + def setSectionResizeMode(self, mode:PySide2.QtWidgets.QHeaderView.ResizeMode) -> None: ... + def setSectionsClickable(self, clickable:bool) -> None: ... + def setSectionsMovable(self, movable:bool) -> None: ... + def setSelection(self, rect:PySide2.QtCore.QRect, flags:PySide2.QtCore.QItemSelectionModel.SelectionFlags) -> None: ... + def setSortIndicator(self, logicalIndex:int, order:PySide2.QtCore.Qt.SortOrder) -> None: ... + def setSortIndicatorShown(self, show:bool) -> None: ... + def setStretchLastSection(self, stretch:bool) -> None: ... + def setVisible(self, v:bool) -> None: ... + def showSection(self, logicalIndex:int) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def sortIndicatorOrder(self) -> PySide2.QtCore.Qt.SortOrder: ... + def sortIndicatorSection(self) -> int: ... + def stretchLastSection(self) -> bool: ... + def stretchSectionCount(self) -> int: ... + def swapSections(self, first:int, second:int) -> None: ... + def updateGeometries(self) -> None: ... + def updateSection(self, logicalIndex:int) -> None: ... + def verticalOffset(self) -> int: ... + def viewportEvent(self, e:PySide2.QtCore.QEvent) -> bool: ... + def visualIndex(self, logicalIndex:int) -> int: ... + def visualIndexAt(self, position:int) -> int: ... + def visualRect(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QRect: ... + def visualRegionForSelection(self, selection:PySide2.QtCore.QItemSelection) -> PySide2.QtGui.QRegion: ... + + +class QInputDialog(PySide2.QtWidgets.QDialog): + TextInput : QInputDialog = ... # 0x0 + IntInput : QInputDialog = ... # 0x1 + NoButtons : QInputDialog = ... # 0x1 + DoubleInput : QInputDialog = ... # 0x2 + UseListViewForComboBoxItems: QInputDialog = ... # 0x2 + UsePlainTextEditForTextInput: QInputDialog = ... # 0x4 + + class InputDialogOption(object): + NoButtons : QInputDialog.InputDialogOption = ... # 0x1 + UseListViewForComboBoxItems: QInputDialog.InputDialogOption = ... # 0x2 + UsePlainTextEditForTextInput: QInputDialog.InputDialogOption = ... # 0x4 + + class InputMode(object): + TextInput : QInputDialog.InputMode = ... # 0x0 + IntInput : QInputDialog.InputMode = ... # 0x1 + DoubleInput : QInputDialog.InputMode = ... # 0x2 + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., flags:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + + def cancelButtonText(self) -> str: ... + def comboBoxItems(self) -> typing.List: ... + def done(self, result:int) -> None: ... + def doubleDecimals(self) -> int: ... + def doubleMaximum(self) -> float: ... + def doubleMinimum(self) -> float: ... + def doubleStep(self) -> float: ... + def doubleValue(self) -> float: ... + @typing.overload + @staticmethod + def getDouble(parent:PySide2.QtWidgets.QWidget, title:str, label:str, value:float, minValue:float, maxValue:float, decimals:int, flags:PySide2.QtCore.Qt.WindowFlags, step:float) -> typing.Tuple: ... + @typing.overload + @staticmethod + def getDouble(parent:PySide2.QtWidgets.QWidget, title:str, label:str, value:float, minValue:float=..., maxValue:float=..., decimals:int=..., flags:PySide2.QtCore.Qt.WindowFlags=...) -> typing.Tuple: ... + @staticmethod + def getInt(parent:PySide2.QtWidgets.QWidget, title:str, label:str, value:int, minValue:int=..., maxValue:int=..., step:int=..., flags:PySide2.QtCore.Qt.WindowFlags=...) -> typing.Tuple: ... + @staticmethod + def getItem(parent:PySide2.QtWidgets.QWidget, title:str, label:str, items:typing.Sequence, current:int, editable:bool=..., flags:PySide2.QtCore.Qt.WindowFlags=..., inputMethodHints:PySide2.QtCore.Qt.InputMethodHints=...) -> typing.Tuple: ... + @staticmethod + def getMultiLineText(parent:PySide2.QtWidgets.QWidget, title:str, label:str, text:str, flags:PySide2.QtCore.Qt.WindowFlags=..., inputMethodHints:PySide2.QtCore.Qt.InputMethodHints=...) -> typing.Tuple: ... + @staticmethod + def getText(parent:PySide2.QtWidgets.QWidget, title:str, label:str, echo:PySide2.QtWidgets.QLineEdit.EchoMode, text:str=..., flags:PySide2.QtCore.Qt.WindowFlags=..., inputMethodHints:PySide2.QtCore.Qt.InputMethodHints=...) -> typing.Tuple: ... + def inputMode(self) -> PySide2.QtWidgets.QInputDialog.InputMode: ... + def intMaximum(self) -> int: ... + def intMinimum(self) -> int: ... + def intStep(self) -> int: ... + def intValue(self) -> int: ... + def isComboBoxEditable(self) -> bool: ... + def labelText(self) -> str: ... + def minimumSizeHint(self) -> PySide2.QtCore.QSize: ... + def okButtonText(self) -> str: ... + @typing.overload + def open(self) -> None: ... + @typing.overload + def open(self, receiver:PySide2.QtCore.QObject, member:bytes) -> None: ... + def setCancelButtonText(self, text:str) -> None: ... + def setComboBoxEditable(self, editable:bool) -> None: ... + def setComboBoxItems(self, items:typing.Sequence) -> None: ... + def setDoubleDecimals(self, decimals:int) -> None: ... + def setDoubleMaximum(self, max:float) -> None: ... + def setDoubleMinimum(self, min:float) -> None: ... + def setDoubleRange(self, min:float, max:float) -> None: ... + def setDoubleStep(self, step:float) -> None: ... + def setDoubleValue(self, value:float) -> None: ... + def setInputMode(self, mode:PySide2.QtWidgets.QInputDialog.InputMode) -> None: ... + def setIntMaximum(self, max:int) -> None: ... + def setIntMinimum(self, min:int) -> None: ... + def setIntRange(self, min:int, max:int) -> None: ... + def setIntStep(self, step:int) -> None: ... + def setIntValue(self, value:int) -> None: ... + def setLabelText(self, text:str) -> None: ... + def setOkButtonText(self, text:str) -> None: ... + def setOption(self, option:PySide2.QtWidgets.QInputDialog.InputDialogOption, on:bool=...) -> None: ... + def setTextEchoMode(self, mode:PySide2.QtWidgets.QLineEdit.EchoMode) -> None: ... + def setTextValue(self, text:str) -> None: ... + def setVisible(self, visible:bool) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def testOption(self, option:PySide2.QtWidgets.QInputDialog.InputDialogOption) -> bool: ... + def textEchoMode(self) -> PySide2.QtWidgets.QLineEdit.EchoMode: ... + def textValue(self) -> str: ... + + +class QItemDelegate(PySide2.QtWidgets.QAbstractItemDelegate): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def createEditor(self, parent:PySide2.QtWidgets.QWidget, option:PySide2.QtWidgets.QStyleOptionViewItem, index:PySide2.QtCore.QModelIndex) -> PySide2.QtWidgets.QWidget: ... + def decoration(self, option:PySide2.QtWidgets.QStyleOptionViewItem, variant:typing.Any) -> PySide2.QtGui.QPixmap: ... + def doCheck(self, option:PySide2.QtWidgets.QStyleOptionViewItem, bounding:PySide2.QtCore.QRect, variant:typing.Any) -> PySide2.QtCore.QRect: ... + def drawBackground(self, painter:PySide2.QtGui.QPainter, option:PySide2.QtWidgets.QStyleOptionViewItem, index:PySide2.QtCore.QModelIndex) -> None: ... + def drawCheck(self, painter:PySide2.QtGui.QPainter, option:PySide2.QtWidgets.QStyleOptionViewItem, rect:PySide2.QtCore.QRect, state:PySide2.QtCore.Qt.CheckState) -> None: ... + def drawDecoration(self, painter:PySide2.QtGui.QPainter, option:PySide2.QtWidgets.QStyleOptionViewItem, rect:PySide2.QtCore.QRect, pixmap:PySide2.QtGui.QPixmap) -> None: ... + def drawDisplay(self, painter:PySide2.QtGui.QPainter, option:PySide2.QtWidgets.QStyleOptionViewItem, rect:PySide2.QtCore.QRect, text:str) -> None: ... + def drawFocus(self, painter:PySide2.QtGui.QPainter, option:PySide2.QtWidgets.QStyleOptionViewItem, rect:PySide2.QtCore.QRect) -> None: ... + def editorEvent(self, event:PySide2.QtCore.QEvent, model:PySide2.QtCore.QAbstractItemModel, option:PySide2.QtWidgets.QStyleOptionViewItem, index:PySide2.QtCore.QModelIndex) -> bool: ... + def eventFilter(self, object:PySide2.QtCore.QObject, event:PySide2.QtCore.QEvent) -> bool: ... + def hasClipping(self) -> bool: ... + def itemEditorFactory(self) -> PySide2.QtWidgets.QItemEditorFactory: ... + def paint(self, painter:PySide2.QtGui.QPainter, option:PySide2.QtWidgets.QStyleOptionViewItem, index:PySide2.QtCore.QModelIndex) -> None: ... + def rect(self, option:PySide2.QtWidgets.QStyleOptionViewItem, index:PySide2.QtCore.QModelIndex, role:int) -> PySide2.QtCore.QRect: ... + @staticmethod + def selectedPixmap(pixmap:PySide2.QtGui.QPixmap, palette:PySide2.QtGui.QPalette, enabled:bool) -> PySide2.QtGui.QPixmap: ... + def setClipping(self, clip:bool) -> None: ... + def setEditorData(self, editor:PySide2.QtWidgets.QWidget, index:PySide2.QtCore.QModelIndex) -> None: ... + def setItemEditorFactory(self, factory:PySide2.QtWidgets.QItemEditorFactory) -> None: ... + def setModelData(self, editor:PySide2.QtWidgets.QWidget, model:PySide2.QtCore.QAbstractItemModel, index:PySide2.QtCore.QModelIndex) -> None: ... + def setOptions(self, index:PySide2.QtCore.QModelIndex, option:PySide2.QtWidgets.QStyleOptionViewItem) -> PySide2.QtWidgets.QStyleOptionViewItem: ... + def sizeHint(self, option:PySide2.QtWidgets.QStyleOptionViewItem, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QSize: ... + def textRectangle(self, painter:PySide2.QtGui.QPainter, rect:PySide2.QtCore.QRect, font:PySide2.QtGui.QFont, text:str) -> PySide2.QtCore.QRect: ... + def updateEditorGeometry(self, editor:PySide2.QtWidgets.QWidget, option:PySide2.QtWidgets.QStyleOptionViewItem, index:PySide2.QtCore.QModelIndex) -> None: ... + + +class QItemEditorCreatorBase(Shiboken.Object): + + def __init__(self) -> None: ... + + def createWidget(self, parent:PySide2.QtWidgets.QWidget) -> PySide2.QtWidgets.QWidget: ... + def valuePropertyName(self) -> PySide2.QtCore.QByteArray: ... + + +class QItemEditorFactory(Shiboken.Object): + + def __init__(self) -> None: ... + + def createEditor(self, userType:int, parent:PySide2.QtWidgets.QWidget) -> PySide2.QtWidgets.QWidget: ... + @staticmethod + def defaultFactory() -> PySide2.QtWidgets.QItemEditorFactory: ... + def registerEditor(self, userType:int, creator:PySide2.QtWidgets.QItemEditorCreatorBase) -> None: ... + @staticmethod + def setDefaultFactory(factory:PySide2.QtWidgets.QItemEditorFactory) -> None: ... + def valuePropertyName(self, userType:int) -> PySide2.QtCore.QByteArray: ... + + +class QKeyEventTransition(PySide2.QtCore.QEventTransition): + + @typing.overload + def __init__(self, object:PySide2.QtCore.QObject, type:PySide2.QtCore.QEvent.Type, key:int, sourceState:typing.Optional[PySide2.QtCore.QState]=...) -> None: ... + @typing.overload + def __init__(self, sourceState:typing.Optional[PySide2.QtCore.QState]=...) -> None: ... + + def eventTest(self, event:PySide2.QtCore.QEvent) -> bool: ... + def key(self) -> int: ... + def modifierMask(self) -> PySide2.QtCore.Qt.KeyboardModifiers: ... + def onTransition(self, event:PySide2.QtCore.QEvent) -> None: ... + def setKey(self, key:int) -> None: ... + def setModifierMask(self, modifiers:PySide2.QtCore.Qt.KeyboardModifiers) -> None: ... + + +class QKeySequenceEdit(PySide2.QtWidgets.QWidget): + + @typing.overload + def __init__(self, keySequence:PySide2.QtGui.QKeySequence, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def clear(self) -> None: ... + def event(self, arg__1:PySide2.QtCore.QEvent) -> bool: ... + def keyPressEvent(self, arg__1:PySide2.QtGui.QKeyEvent) -> None: ... + def keyReleaseEvent(self, arg__1:PySide2.QtGui.QKeyEvent) -> None: ... + def keySequence(self) -> PySide2.QtGui.QKeySequence: ... + def setKeySequence(self, keySequence:PySide2.QtGui.QKeySequence) -> None: ... + def timerEvent(self, arg__1:PySide2.QtCore.QTimerEvent) -> None: ... + + +class QLCDNumber(PySide2.QtWidgets.QFrame): + Hex : QLCDNumber = ... # 0x0 + Outline : QLCDNumber = ... # 0x0 + Dec : QLCDNumber = ... # 0x1 + Filled : QLCDNumber = ... # 0x1 + Flat : QLCDNumber = ... # 0x2 + Oct : QLCDNumber = ... # 0x2 + Bin : QLCDNumber = ... # 0x3 + + class Mode(object): + Hex : QLCDNumber.Mode = ... # 0x0 + Dec : QLCDNumber.Mode = ... # 0x1 + Oct : QLCDNumber.Mode = ... # 0x2 + Bin : QLCDNumber.Mode = ... # 0x3 + + class SegmentStyle(object): + Outline : QLCDNumber.SegmentStyle = ... # 0x0 + Filled : QLCDNumber.SegmentStyle = ... # 0x1 + Flat : QLCDNumber.SegmentStyle = ... # 0x2 + + @typing.overload + def __init__(self, numDigits:int, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + @typing.overload + def checkOverflow(self, num:float) -> bool: ... + @typing.overload + def checkOverflow(self, num:int) -> bool: ... + def digitCount(self) -> int: ... + @typing.overload + def display(self, num:float) -> None: ... + @typing.overload + def display(self, num:int) -> None: ... + @typing.overload + def display(self, str:str) -> None: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def intValue(self) -> int: ... + def mode(self) -> PySide2.QtWidgets.QLCDNumber.Mode: ... + def paintEvent(self, arg__1:PySide2.QtGui.QPaintEvent) -> None: ... + def segmentStyle(self) -> PySide2.QtWidgets.QLCDNumber.SegmentStyle: ... + def setBinMode(self) -> None: ... + def setDecMode(self) -> None: ... + def setDigitCount(self, nDigits:int) -> None: ... + def setHexMode(self) -> None: ... + def setMode(self, arg__1:PySide2.QtWidgets.QLCDNumber.Mode) -> None: ... + def setOctMode(self) -> None: ... + def setSegmentStyle(self, arg__1:PySide2.QtWidgets.QLCDNumber.SegmentStyle) -> None: ... + def setSmallDecimalPoint(self, arg__1:bool) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def smallDecimalPoint(self) -> bool: ... + def value(self) -> float: ... + + +class QLabel(PySide2.QtWidgets.QFrame): + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., f:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + @typing.overload + def __init__(self, text:str, parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., f:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + + def alignment(self) -> PySide2.QtCore.Qt.Alignment: ... + def buddy(self) -> PySide2.QtWidgets.QWidget: ... + def changeEvent(self, arg__1:PySide2.QtCore.QEvent) -> None: ... + def clear(self) -> None: ... + def contextMenuEvent(self, ev:PySide2.QtGui.QContextMenuEvent) -> None: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def focusInEvent(self, ev:PySide2.QtGui.QFocusEvent) -> None: ... + def focusNextPrevChild(self, next:bool) -> bool: ... + def focusOutEvent(self, ev:PySide2.QtGui.QFocusEvent) -> None: ... + def hasScaledContents(self) -> bool: ... + def hasSelectedText(self) -> bool: ... + def heightForWidth(self, arg__1:int) -> int: ... + def indent(self) -> int: ... + def keyPressEvent(self, ev:PySide2.QtGui.QKeyEvent) -> None: ... + def margin(self) -> int: ... + def minimumSizeHint(self) -> PySide2.QtCore.QSize: ... + def mouseMoveEvent(self, ev:PySide2.QtGui.QMouseEvent) -> None: ... + def mousePressEvent(self, ev:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, ev:PySide2.QtGui.QMouseEvent) -> None: ... + def movie(self) -> PySide2.QtGui.QMovie: ... + def openExternalLinks(self) -> bool: ... + def paintEvent(self, arg__1:PySide2.QtGui.QPaintEvent) -> None: ... + def picture(self) -> PySide2.QtGui.QPicture: ... + def pixmap(self) -> PySide2.QtGui.QPixmap: ... + def selectedText(self) -> str: ... + def selectionStart(self) -> int: ... + def setAlignment(self, arg__1:PySide2.QtCore.Qt.Alignment) -> None: ... + def setBuddy(self, arg__1:PySide2.QtWidgets.QWidget) -> None: ... + def setIndent(self, arg__1:int) -> None: ... + def setMargin(self, arg__1:int) -> None: ... + def setMovie(self, movie:PySide2.QtGui.QMovie) -> None: ... + @typing.overload + def setNum(self, arg__1:float) -> None: ... + @typing.overload + def setNum(self, arg__1:int) -> None: ... + def setOpenExternalLinks(self, open:bool) -> None: ... + def setPicture(self, arg__1:PySide2.QtGui.QPicture) -> None: ... + def setPixmap(self, arg__1:PySide2.QtGui.QPixmap) -> None: ... + def setScaledContents(self, arg__1:bool) -> None: ... + def setSelection(self, arg__1:int, arg__2:int) -> None: ... + def setText(self, arg__1:str) -> None: ... + def setTextFormat(self, arg__1:PySide2.QtCore.Qt.TextFormat) -> None: ... + def setTextInteractionFlags(self, flags:PySide2.QtCore.Qt.TextInteractionFlags) -> None: ... + def setWordWrap(self, on:bool) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def text(self) -> str: ... + def textFormat(self) -> PySide2.QtCore.Qt.TextFormat: ... + def textInteractionFlags(self) -> PySide2.QtCore.Qt.TextInteractionFlags: ... + def wordWrap(self) -> bool: ... + + +class QLayout(PySide2.QtCore.QObject, PySide2.QtWidgets.QLayoutItem): + SetDefaultConstraint : QLayout = ... # 0x0 + SetNoConstraint : QLayout = ... # 0x1 + SetMinimumSize : QLayout = ... # 0x2 + SetFixedSize : QLayout = ... # 0x3 + SetMaximumSize : QLayout = ... # 0x4 + SetMinAndMaxSize : QLayout = ... # 0x5 + + class SizeConstraint(object): + SetDefaultConstraint : QLayout.SizeConstraint = ... # 0x0 + SetNoConstraint : QLayout.SizeConstraint = ... # 0x1 + SetMinimumSize : QLayout.SizeConstraint = ... # 0x2 + SetFixedSize : QLayout.SizeConstraint = ... # 0x3 + SetMaximumSize : QLayout.SizeConstraint = ... # 0x4 + SetMinAndMaxSize : QLayout.SizeConstraint = ... # 0x5 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, parent:PySide2.QtWidgets.QWidget) -> None: ... + + def activate(self) -> bool: ... + def addChildLayout(self, l:PySide2.QtWidgets.QLayout) -> None: ... + def addChildWidget(self, w:PySide2.QtWidgets.QWidget) -> None: ... + def addItem(self, arg__1:PySide2.QtWidgets.QLayoutItem) -> None: ... + def addWidget(self, w:PySide2.QtWidgets.QWidget) -> None: ... + def adoptLayout(self, layout:PySide2.QtWidgets.QLayout) -> bool: ... + def alignmentRect(self, arg__1:PySide2.QtCore.QRect) -> PySide2.QtCore.QRect: ... + def childEvent(self, e:PySide2.QtCore.QChildEvent) -> None: ... + @staticmethod + def closestAcceptableSize(w:PySide2.QtWidgets.QWidget, s:PySide2.QtCore.QSize) -> PySide2.QtCore.QSize: ... + def contentsMargins(self) -> PySide2.QtCore.QMargins: ... + def contentsRect(self) -> PySide2.QtCore.QRect: ... + def controlTypes(self) -> PySide2.QtWidgets.QSizePolicy.ControlTypes: ... + def count(self) -> int: ... + def expandingDirections(self) -> PySide2.QtCore.Qt.Orientations: ... + def geometry(self) -> PySide2.QtCore.QRect: ... + def getContentsMargins(self) -> typing.Tuple: ... + @typing.overload + def indexOf(self, arg__1:PySide2.QtWidgets.QLayoutItem) -> int: ... + @typing.overload + def indexOf(self, arg__1:PySide2.QtWidgets.QWidget) -> int: ... + def invalidate(self) -> None: ... + def isEmpty(self) -> bool: ... + def isEnabled(self) -> bool: ... + def itemAt(self, index:int) -> PySide2.QtWidgets.QLayoutItem: ... + def layout(self) -> PySide2.QtWidgets.QLayout: ... + def margin(self) -> int: ... + def maximumSize(self) -> PySide2.QtCore.QSize: ... + def menuBar(self) -> PySide2.QtWidgets.QWidget: ... + def minimumSize(self) -> PySide2.QtCore.QSize: ... + def parentWidget(self) -> PySide2.QtWidgets.QWidget: ... + def removeItem(self, arg__1:PySide2.QtWidgets.QLayoutItem) -> None: ... + def removeWidget(self, w:PySide2.QtWidgets.QWidget) -> None: ... + def replaceWidget(self, from_:PySide2.QtWidgets.QWidget, to:PySide2.QtWidgets.QWidget, options:PySide2.QtCore.Qt.FindChildOptions=...) -> PySide2.QtWidgets.QLayoutItem: ... + @typing.overload + def setAlignment(self, arg__1:PySide2.QtCore.Qt.Alignment) -> None: ... + @typing.overload + def setAlignment(self, l:PySide2.QtWidgets.QLayout, alignment:PySide2.QtCore.Qt.Alignment) -> bool: ... + @typing.overload + def setAlignment(self, w:PySide2.QtWidgets.QWidget, alignment:PySide2.QtCore.Qt.Alignment) -> bool: ... + @typing.overload + def setContentsMargins(self, left:int, top:int, right:int, bottom:int) -> None: ... + @typing.overload + def setContentsMargins(self, margins:PySide2.QtCore.QMargins) -> None: ... + def setEnabled(self, arg__1:bool) -> None: ... + def setGeometry(self, arg__1:PySide2.QtCore.QRect) -> None: ... + def setMargin(self, arg__1:int) -> None: ... + def setMenuBar(self, w:PySide2.QtWidgets.QWidget) -> None: ... + def setSizeConstraint(self, arg__1:PySide2.QtWidgets.QLayout.SizeConstraint) -> None: ... + def setSpacing(self, arg__1:int) -> None: ... + def sizeConstraint(self) -> PySide2.QtWidgets.QLayout.SizeConstraint: ... + def spacing(self) -> int: ... + def takeAt(self, index:int) -> PySide2.QtWidgets.QLayoutItem: ... + def totalHeightForWidth(self, w:int) -> int: ... + def totalMaximumSize(self) -> PySide2.QtCore.QSize: ... + def totalMinimumSize(self) -> PySide2.QtCore.QSize: ... + def totalSizeHint(self) -> PySide2.QtCore.QSize: ... + def update(self) -> None: ... + def widgetEvent(self, arg__1:PySide2.QtCore.QEvent) -> None: ... + + +class QLayoutItem(Shiboken.Object): + + def __init__(self, alignment:PySide2.QtCore.Qt.Alignment=...) -> None: ... + + def alignment(self) -> PySide2.QtCore.Qt.Alignment: ... + def controlTypes(self) -> PySide2.QtWidgets.QSizePolicy.ControlTypes: ... + def expandingDirections(self) -> PySide2.QtCore.Qt.Orientations: ... + def geometry(self) -> PySide2.QtCore.QRect: ... + def hasHeightForWidth(self) -> bool: ... + def heightForWidth(self, arg__1:int) -> int: ... + def invalidate(self) -> None: ... + def isEmpty(self) -> bool: ... + def layout(self) -> PySide2.QtWidgets.QLayout: ... + def maximumSize(self) -> PySide2.QtCore.QSize: ... + def minimumHeightForWidth(self, arg__1:int) -> int: ... + def minimumSize(self) -> PySide2.QtCore.QSize: ... + def setAlignment(self, a:PySide2.QtCore.Qt.Alignment) -> None: ... + def setGeometry(self, arg__1:PySide2.QtCore.QRect) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def spacerItem(self) -> PySide2.QtWidgets.QSpacerItem: ... + def widget(self) -> PySide2.QtWidgets.QWidget: ... + + +class QLineEdit(PySide2.QtWidgets.QWidget): + LeadingPosition : QLineEdit = ... # 0x0 + Normal : QLineEdit = ... # 0x0 + NoEcho : QLineEdit = ... # 0x1 + TrailingPosition : QLineEdit = ... # 0x1 + Password : QLineEdit = ... # 0x2 + PasswordEchoOnEdit : QLineEdit = ... # 0x3 + + class ActionPosition(object): + LeadingPosition : QLineEdit.ActionPosition = ... # 0x0 + TrailingPosition : QLineEdit.ActionPosition = ... # 0x1 + + class EchoMode(object): + Normal : QLineEdit.EchoMode = ... # 0x0 + NoEcho : QLineEdit.EchoMode = ... # 0x1 + Password : QLineEdit.EchoMode = ... # 0x2 + PasswordEchoOnEdit : QLineEdit.EchoMode = ... # 0x3 + + @typing.overload + def __init__(self, arg__1:str, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + @typing.overload + def addAction(self, action:PySide2.QtWidgets.QAction) -> None: ... + @typing.overload + def addAction(self, action:PySide2.QtWidgets.QAction, position:PySide2.QtWidgets.QLineEdit.ActionPosition) -> None: ... + @typing.overload + def addAction(self, arg__1:PySide2.QtWidgets.QAction) -> None: ... + @typing.overload + def addAction(self, icon:PySide2.QtGui.QIcon, position:PySide2.QtWidgets.QLineEdit.ActionPosition) -> PySide2.QtWidgets.QAction: ... + def alignment(self) -> PySide2.QtCore.Qt.Alignment: ... + def backspace(self) -> None: ... + def changeEvent(self, arg__1:PySide2.QtCore.QEvent) -> None: ... + def clear(self) -> None: ... + def completer(self) -> PySide2.QtWidgets.QCompleter: ... + def contextMenuEvent(self, arg__1:PySide2.QtGui.QContextMenuEvent) -> None: ... + def copy(self) -> None: ... + def createStandardContextMenu(self) -> PySide2.QtWidgets.QMenu: ... + def cursorBackward(self, mark:bool, steps:int=...) -> None: ... + def cursorForward(self, mark:bool, steps:int=...) -> None: ... + def cursorMoveStyle(self) -> PySide2.QtCore.Qt.CursorMoveStyle: ... + def cursorPosition(self) -> int: ... + def cursorPositionAt(self, pos:PySide2.QtCore.QPoint) -> int: ... + def cursorRect(self) -> PySide2.QtCore.QRect: ... + def cursorWordBackward(self, mark:bool) -> None: ... + def cursorWordForward(self, mark:bool) -> None: ... + def cut(self) -> None: ... + def del_(self) -> None: ... + def deselect(self) -> None: ... + def displayText(self) -> str: ... + def dragEnabled(self) -> bool: ... + def dragEnterEvent(self, arg__1:PySide2.QtGui.QDragEnterEvent) -> None: ... + def dragLeaveEvent(self, e:PySide2.QtGui.QDragLeaveEvent) -> None: ... + def dragMoveEvent(self, e:PySide2.QtGui.QDragMoveEvent) -> None: ... + def dropEvent(self, arg__1:PySide2.QtGui.QDropEvent) -> None: ... + def echoMode(self) -> PySide2.QtWidgets.QLineEdit.EchoMode: ... + def end(self, mark:bool) -> None: ... + def event(self, arg__1:PySide2.QtCore.QEvent) -> bool: ... + def focusInEvent(self, arg__1:PySide2.QtGui.QFocusEvent) -> None: ... + def focusOutEvent(self, arg__1:PySide2.QtGui.QFocusEvent) -> None: ... + def getTextMargins(self) -> typing.Tuple: ... + def hasAcceptableInput(self) -> bool: ... + def hasFrame(self) -> bool: ... + def hasSelectedText(self) -> bool: ... + def home(self, mark:bool) -> None: ... + def initStyleOption(self, option:PySide2.QtWidgets.QStyleOptionFrame) -> None: ... + def inputMask(self) -> str: ... + def inputMethodEvent(self, arg__1:PySide2.QtGui.QInputMethodEvent) -> None: ... + @typing.overload + def inputMethodQuery(self, arg__1:PySide2.QtCore.Qt.InputMethodQuery) -> typing.Any: ... + @typing.overload + def inputMethodQuery(self, property:PySide2.QtCore.Qt.InputMethodQuery, argument:typing.Any) -> typing.Any: ... + def insert(self, arg__1:str) -> None: ... + def isClearButtonEnabled(self) -> bool: ... + def isModified(self) -> bool: ... + def isReadOnly(self) -> bool: ... + def isRedoAvailable(self) -> bool: ... + def isUndoAvailable(self) -> bool: ... + def keyPressEvent(self, arg__1:PySide2.QtGui.QKeyEvent) -> None: ... + def maxLength(self) -> int: ... + def minimumSizeHint(self) -> PySide2.QtCore.QSize: ... + def mouseDoubleClickEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseMoveEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def mousePressEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def paintEvent(self, arg__1:PySide2.QtGui.QPaintEvent) -> None: ... + def paste(self) -> None: ... + def placeholderText(self) -> str: ... + def redo(self) -> None: ... + def selectAll(self) -> None: ... + def selectedText(self) -> str: ... + def selectionEnd(self) -> int: ... + def selectionLength(self) -> int: ... + def selectionStart(self) -> int: ... + def setAlignment(self, flag:PySide2.QtCore.Qt.Alignment) -> None: ... + def setClearButtonEnabled(self, enable:bool) -> None: ... + def setCompleter(self, completer:PySide2.QtWidgets.QCompleter) -> None: ... + def setCursorMoveStyle(self, style:PySide2.QtCore.Qt.CursorMoveStyle) -> None: ... + def setCursorPosition(self, arg__1:int) -> None: ... + def setDragEnabled(self, b:bool) -> None: ... + def setEchoMode(self, arg__1:PySide2.QtWidgets.QLineEdit.EchoMode) -> None: ... + def setFrame(self, arg__1:bool) -> None: ... + def setInputMask(self, inputMask:str) -> None: ... + def setMaxLength(self, arg__1:int) -> None: ... + def setModified(self, arg__1:bool) -> None: ... + def setPlaceholderText(self, arg__1:str) -> None: ... + def setReadOnly(self, arg__1:bool) -> None: ... + def setSelection(self, arg__1:int, arg__2:int) -> None: ... + def setText(self, arg__1:str) -> None: ... + @typing.overload + def setTextMargins(self, left:int, top:int, right:int, bottom:int) -> None: ... + @typing.overload + def setTextMargins(self, margins:PySide2.QtCore.QMargins) -> None: ... + def setValidator(self, arg__1:PySide2.QtGui.QValidator) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def text(self) -> str: ... + def textMargins(self) -> PySide2.QtCore.QMargins: ... + def undo(self) -> None: ... + def validator(self) -> PySide2.QtGui.QValidator: ... + + +class QListView(PySide2.QtWidgets.QAbstractItemView): + Fixed : QListView = ... # 0x0 + LeftToRight : QListView = ... # 0x0 + ListMode : QListView = ... # 0x0 + SinglePass : QListView = ... # 0x0 + Static : QListView = ... # 0x0 + Adjust : QListView = ... # 0x1 + Batched : QListView = ... # 0x1 + Free : QListView = ... # 0x1 + IconMode : QListView = ... # 0x1 + TopToBottom : QListView = ... # 0x1 + Snap : QListView = ... # 0x2 + + class Flow(object): + LeftToRight : QListView.Flow = ... # 0x0 + TopToBottom : QListView.Flow = ... # 0x1 + + class LayoutMode(object): + SinglePass : QListView.LayoutMode = ... # 0x0 + Batched : QListView.LayoutMode = ... # 0x1 + + class Movement(object): + Static : QListView.Movement = ... # 0x0 + Free : QListView.Movement = ... # 0x1 + Snap : QListView.Movement = ... # 0x2 + + class ResizeMode(object): + Fixed : QListView.ResizeMode = ... # 0x0 + Adjust : QListView.ResizeMode = ... # 0x1 + + class ViewMode(object): + ListMode : QListView.ViewMode = ... # 0x0 + IconMode : QListView.ViewMode = ... # 0x1 + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def batchSize(self) -> int: ... + def clearPropertyFlags(self) -> None: ... + def contentsSize(self) -> PySide2.QtCore.QSize: ... + def currentChanged(self, current:PySide2.QtCore.QModelIndex, previous:PySide2.QtCore.QModelIndex) -> None: ... + def dataChanged(self, topLeft:PySide2.QtCore.QModelIndex, bottomRight:PySide2.QtCore.QModelIndex, roles:typing.List=...) -> None: ... + def doItemsLayout(self) -> None: ... + def dragLeaveEvent(self, e:PySide2.QtGui.QDragLeaveEvent) -> None: ... + def dragMoveEvent(self, e:PySide2.QtGui.QDragMoveEvent) -> None: ... + def dropEvent(self, e:PySide2.QtGui.QDropEvent) -> None: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def flow(self) -> PySide2.QtWidgets.QListView.Flow: ... + def gridSize(self) -> PySide2.QtCore.QSize: ... + def horizontalOffset(self) -> int: ... + def indexAt(self, p:PySide2.QtCore.QPoint) -> PySide2.QtCore.QModelIndex: ... + def isIndexHidden(self, index:PySide2.QtCore.QModelIndex) -> bool: ... + def isRowHidden(self, row:int) -> bool: ... + def isSelectionRectVisible(self) -> bool: ... + def isWrapping(self) -> bool: ... + def itemAlignment(self) -> PySide2.QtCore.Qt.Alignment: ... + def layoutMode(self) -> PySide2.QtWidgets.QListView.LayoutMode: ... + def modelColumn(self) -> int: ... + def mouseMoveEvent(self, e:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, e:PySide2.QtGui.QMouseEvent) -> None: ... + def moveCursor(self, cursorAction:PySide2.QtWidgets.QAbstractItemView.CursorAction, modifiers:PySide2.QtCore.Qt.KeyboardModifiers) -> PySide2.QtCore.QModelIndex: ... + def movement(self) -> PySide2.QtWidgets.QListView.Movement: ... + def paintEvent(self, e:PySide2.QtGui.QPaintEvent) -> None: ... + def rectForIndex(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QRect: ... + def reset(self) -> None: ... + def resizeContents(self, width:int, height:int) -> None: ... + def resizeEvent(self, e:PySide2.QtGui.QResizeEvent) -> None: ... + def resizeMode(self) -> PySide2.QtWidgets.QListView.ResizeMode: ... + def rowsAboutToBeRemoved(self, parent:PySide2.QtCore.QModelIndex, start:int, end:int) -> None: ... + def rowsInserted(self, parent:PySide2.QtCore.QModelIndex, start:int, end:int) -> None: ... + def scrollContentsBy(self, dx:int, dy:int) -> None: ... + def scrollTo(self, index:PySide2.QtCore.QModelIndex, hint:PySide2.QtWidgets.QAbstractItemView.ScrollHint=...) -> None: ... + def selectedIndexes(self) -> typing.List: ... + def selectionChanged(self, selected:PySide2.QtCore.QItemSelection, deselected:PySide2.QtCore.QItemSelection) -> None: ... + def setBatchSize(self, batchSize:int) -> None: ... + def setFlow(self, flow:PySide2.QtWidgets.QListView.Flow) -> None: ... + def setGridSize(self, size:PySide2.QtCore.QSize) -> None: ... + def setItemAlignment(self, alignment:PySide2.QtCore.Qt.Alignment) -> None: ... + def setLayoutMode(self, mode:PySide2.QtWidgets.QListView.LayoutMode) -> None: ... + def setModelColumn(self, column:int) -> None: ... + def setMovement(self, movement:PySide2.QtWidgets.QListView.Movement) -> None: ... + def setPositionForIndex(self, position:PySide2.QtCore.QPoint, index:PySide2.QtCore.QModelIndex) -> None: ... + def setResizeMode(self, mode:PySide2.QtWidgets.QListView.ResizeMode) -> None: ... + def setRootIndex(self, index:PySide2.QtCore.QModelIndex) -> None: ... + def setRowHidden(self, row:int, hide:bool) -> None: ... + def setSelection(self, rect:PySide2.QtCore.QRect, command:PySide2.QtCore.QItemSelectionModel.SelectionFlags) -> None: ... + def setSelectionRectVisible(self, show:bool) -> None: ... + def setSpacing(self, space:int) -> None: ... + def setUniformItemSizes(self, enable:bool) -> None: ... + def setViewMode(self, mode:PySide2.QtWidgets.QListView.ViewMode) -> None: ... + def setWordWrap(self, on:bool) -> None: ... + def setWrapping(self, enable:bool) -> None: ... + def spacing(self) -> int: ... + def startDrag(self, supportedActions:PySide2.QtCore.Qt.DropActions) -> None: ... + def timerEvent(self, e:PySide2.QtCore.QTimerEvent) -> None: ... + def uniformItemSizes(self) -> bool: ... + def updateGeometries(self) -> None: ... + def verticalOffset(self) -> int: ... + def viewMode(self) -> PySide2.QtWidgets.QListView.ViewMode: ... + def viewOptions(self) -> PySide2.QtWidgets.QStyleOptionViewItem: ... + def viewportSizeHint(self) -> PySide2.QtCore.QSize: ... + def visualRect(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QRect: ... + def visualRegionForSelection(self, selection:PySide2.QtCore.QItemSelection) -> PySide2.QtGui.QRegion: ... + def wheelEvent(self, e:PySide2.QtGui.QWheelEvent) -> None: ... + def wordWrap(self) -> bool: ... + + +class QListWidget(PySide2.QtWidgets.QListView): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + @typing.overload + def addItem(self, item:PySide2.QtWidgets.QListWidgetItem) -> None: ... + @typing.overload + def addItem(self, label:str) -> None: ... + def addItems(self, labels:typing.Sequence) -> None: ... + def clear(self) -> None: ... + @typing.overload + def closePersistentEditor(self, index:PySide2.QtCore.QModelIndex) -> None: ... + @typing.overload + def closePersistentEditor(self, item:PySide2.QtWidgets.QListWidgetItem) -> None: ... + def count(self) -> int: ... + def currentItem(self) -> PySide2.QtWidgets.QListWidgetItem: ... + def currentRow(self) -> int: ... + def dropEvent(self, event:PySide2.QtGui.QDropEvent) -> None: ... + def dropMimeData(self, index:int, data:PySide2.QtCore.QMimeData, action:PySide2.QtCore.Qt.DropAction) -> bool: ... + def editItem(self, item:PySide2.QtWidgets.QListWidgetItem) -> None: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def findItems(self, text:str, flags:PySide2.QtCore.Qt.MatchFlags) -> typing.List: ... + def indexFromItem(self, item:PySide2.QtWidgets.QListWidgetItem) -> PySide2.QtCore.QModelIndex: ... + @typing.overload + def insertItem(self, row:int, item:PySide2.QtWidgets.QListWidgetItem) -> None: ... + @typing.overload + def insertItem(self, row:int, label:str) -> None: ... + def insertItems(self, row:int, labels:typing.Sequence) -> None: ... + def isItemHidden(self, item:PySide2.QtWidgets.QListWidgetItem) -> bool: ... + def isItemSelected(self, item:PySide2.QtWidgets.QListWidgetItem) -> bool: ... + @typing.overload + def isPersistentEditorOpen(self, index:PySide2.QtCore.QModelIndex) -> bool: ... + @typing.overload + def isPersistentEditorOpen(self, item:PySide2.QtWidgets.QListWidgetItem) -> bool: ... + def isSortingEnabled(self) -> bool: ... + def item(self, row:int) -> PySide2.QtWidgets.QListWidgetItem: ... + @typing.overload + def itemAt(self, p:PySide2.QtCore.QPoint) -> PySide2.QtWidgets.QListWidgetItem: ... + @typing.overload + def itemAt(self, x:int, y:int) -> PySide2.QtWidgets.QListWidgetItem: ... + def itemFromIndex(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtWidgets.QListWidgetItem: ... + def itemWidget(self, item:PySide2.QtWidgets.QListWidgetItem) -> PySide2.QtWidgets.QWidget: ... + def items(self, data:PySide2.QtCore.QMimeData) -> typing.List: ... + def mimeData(self, items:typing.Sequence) -> PySide2.QtCore.QMimeData: ... + def mimeTypes(self) -> typing.List: ... + @typing.overload + def openPersistentEditor(self, index:PySide2.QtCore.QModelIndex) -> None: ... + @typing.overload + def openPersistentEditor(self, item:PySide2.QtWidgets.QListWidgetItem) -> None: ... + def removeItemWidget(self, item:PySide2.QtWidgets.QListWidgetItem) -> None: ... + def row(self, item:PySide2.QtWidgets.QListWidgetItem) -> int: ... + def scrollToItem(self, item:PySide2.QtWidgets.QListWidgetItem, hint:PySide2.QtWidgets.QAbstractItemView.ScrollHint=...) -> None: ... + def selectedItems(self) -> typing.List: ... + @typing.overload + def setCurrentItem(self, item:PySide2.QtWidgets.QListWidgetItem) -> None: ... + @typing.overload + def setCurrentItem(self, item:PySide2.QtWidgets.QListWidgetItem, command:PySide2.QtCore.QItemSelectionModel.SelectionFlags) -> None: ... + @typing.overload + def setCurrentRow(self, row:int) -> None: ... + @typing.overload + def setCurrentRow(self, row:int, command:PySide2.QtCore.QItemSelectionModel.SelectionFlags) -> None: ... + def setItemHidden(self, item:PySide2.QtWidgets.QListWidgetItem, hide:bool) -> None: ... + def setItemSelected(self, item:PySide2.QtWidgets.QListWidgetItem, select:bool) -> None: ... + def setItemWidget(self, item:PySide2.QtWidgets.QListWidgetItem, widget:PySide2.QtWidgets.QWidget) -> None: ... + def setModel(self, model:PySide2.QtCore.QAbstractItemModel) -> None: ... + def setSelectionModel(self, selectionModel:PySide2.QtCore.QItemSelectionModel) -> None: ... + def setSortingEnabled(self, enable:bool) -> None: ... + def sortItems(self, order:PySide2.QtCore.Qt.SortOrder=...) -> None: ... + def supportedDropActions(self) -> PySide2.QtCore.Qt.DropActions: ... + def takeItem(self, row:int) -> PySide2.QtWidgets.QListWidgetItem: ... + def visualItemRect(self, item:PySide2.QtWidgets.QListWidgetItem) -> PySide2.QtCore.QRect: ... + + +class QListWidgetItem(Shiboken.Object): + Type : QListWidgetItem = ... # 0x0 + UserType : QListWidgetItem = ... # 0x3e8 + + class ItemType(object): + Type : QListWidgetItem.ItemType = ... # 0x0 + UserType : QListWidgetItem.ItemType = ... # 0x3e8 + + @typing.overload + def __init__(self, icon:PySide2.QtGui.QIcon, text:str, listview:typing.Optional[PySide2.QtWidgets.QListWidget]=..., type:int=...) -> None: ... + @typing.overload + def __init__(self, listview:typing.Optional[PySide2.QtWidgets.QListWidget]=..., type:int=...) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtWidgets.QListWidgetItem) -> None: ... + @typing.overload + def __init__(self, text:str, listview:typing.Optional[PySide2.QtWidgets.QListWidget]=..., type:int=...) -> None: ... + + def __lshift__(self, out:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __rshift__(self, in_:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def background(self) -> PySide2.QtGui.QBrush: ... + def backgroundColor(self) -> PySide2.QtGui.QColor: ... + def checkState(self) -> PySide2.QtCore.Qt.CheckState: ... + def clone(self) -> PySide2.QtWidgets.QListWidgetItem: ... + def data(self, role:int) -> typing.Any: ... + def flags(self) -> PySide2.QtCore.Qt.ItemFlags: ... + def font(self) -> PySide2.QtGui.QFont: ... + def foreground(self) -> PySide2.QtGui.QBrush: ... + def icon(self) -> PySide2.QtGui.QIcon: ... + def isHidden(self) -> bool: ... + def isSelected(self) -> bool: ... + def listWidget(self) -> PySide2.QtWidgets.QListWidget: ... + def read(self, in_:PySide2.QtCore.QDataStream) -> None: ... + def setBackground(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setBackgroundColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setCheckState(self, state:PySide2.QtCore.Qt.CheckState) -> None: ... + def setData(self, role:int, value:typing.Any) -> None: ... + def setFlags(self, flags:PySide2.QtCore.Qt.ItemFlags) -> None: ... + def setFont(self, font:PySide2.QtGui.QFont) -> None: ... + def setForeground(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setHidden(self, hide:bool) -> None: ... + def setIcon(self, icon:PySide2.QtGui.QIcon) -> None: ... + def setSelected(self, select:bool) -> None: ... + def setSizeHint(self, size:PySide2.QtCore.QSize) -> None: ... + def setStatusTip(self, statusTip:str) -> None: ... + def setText(self, text:str) -> None: ... + def setTextAlignment(self, alignment:int) -> None: ... + def setTextColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setToolTip(self, toolTip:str) -> None: ... + def setWhatsThis(self, whatsThis:str) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def statusTip(self) -> str: ... + def text(self) -> str: ... + def textAlignment(self) -> int: ... + def textColor(self) -> PySide2.QtGui.QColor: ... + def toolTip(self) -> str: ... + def type(self) -> int: ... + def whatsThis(self) -> str: ... + def write(self, out:PySide2.QtCore.QDataStream) -> None: ... + + +class QMainWindow(PySide2.QtWidgets.QWidget): + AnimatedDocks : QMainWindow = ... # 0x1 + AllowNestedDocks : QMainWindow = ... # 0x2 + AllowTabbedDocks : QMainWindow = ... # 0x4 + ForceTabbedDocks : QMainWindow = ... # 0x8 + VerticalTabs : QMainWindow = ... # 0x10 + GroupedDragging : QMainWindow = ... # 0x20 + + class DockOption(object): + AnimatedDocks : QMainWindow.DockOption = ... # 0x1 + AllowNestedDocks : QMainWindow.DockOption = ... # 0x2 + AllowTabbedDocks : QMainWindow.DockOption = ... # 0x4 + ForceTabbedDocks : QMainWindow.DockOption = ... # 0x8 + VerticalTabs : QMainWindow.DockOption = ... # 0x10 + GroupedDragging : QMainWindow.DockOption = ... # 0x20 + + class DockOptions(object): ... + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., flags:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + + @typing.overload + def addDockWidget(self, area:PySide2.QtCore.Qt.DockWidgetArea, dockwidget:PySide2.QtWidgets.QDockWidget) -> None: ... + @typing.overload + def addDockWidget(self, area:PySide2.QtCore.Qt.DockWidgetArea, dockwidget:PySide2.QtWidgets.QDockWidget, orientation:PySide2.QtCore.Qt.Orientation) -> None: ... + @typing.overload + def addToolBar(self, area:PySide2.QtCore.Qt.ToolBarArea, toolbar:PySide2.QtWidgets.QToolBar) -> None: ... + @typing.overload + def addToolBar(self, title:str) -> PySide2.QtWidgets.QToolBar: ... + @typing.overload + def addToolBar(self, toolbar:PySide2.QtWidgets.QToolBar) -> None: ... + def addToolBarBreak(self, area:PySide2.QtCore.Qt.ToolBarArea=...) -> None: ... + def centralWidget(self) -> PySide2.QtWidgets.QWidget: ... + def contextMenuEvent(self, event:PySide2.QtGui.QContextMenuEvent) -> None: ... + def corner(self, corner:PySide2.QtCore.Qt.Corner) -> PySide2.QtCore.Qt.DockWidgetArea: ... + def createPopupMenu(self) -> PySide2.QtWidgets.QMenu: ... + def dockOptions(self) -> PySide2.QtWidgets.QMainWindow.DockOptions: ... + def dockWidgetArea(self, dockwidget:PySide2.QtWidgets.QDockWidget) -> PySide2.QtCore.Qt.DockWidgetArea: ... + def documentMode(self) -> bool: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def iconSize(self) -> PySide2.QtCore.QSize: ... + def insertToolBar(self, before:PySide2.QtWidgets.QToolBar, toolbar:PySide2.QtWidgets.QToolBar) -> None: ... + def insertToolBarBreak(self, before:PySide2.QtWidgets.QToolBar) -> None: ... + def isAnimated(self) -> bool: ... + def isDockNestingEnabled(self) -> bool: ... + def isSeparator(self, pos:PySide2.QtCore.QPoint) -> bool: ... + def menuBar(self) -> PySide2.QtWidgets.QMenuBar: ... + def menuWidget(self) -> PySide2.QtWidgets.QWidget: ... + def removeDockWidget(self, dockwidget:PySide2.QtWidgets.QDockWidget) -> None: ... + def removeToolBar(self, toolbar:PySide2.QtWidgets.QToolBar) -> None: ... + def removeToolBarBreak(self, before:PySide2.QtWidgets.QToolBar) -> None: ... + def resizeDocks(self, docks:typing.Sequence, sizes:typing.Sequence, orientation:PySide2.QtCore.Qt.Orientation) -> None: ... + def restoreDockWidget(self, dockwidget:PySide2.QtWidgets.QDockWidget) -> bool: ... + def restoreState(self, state:PySide2.QtCore.QByteArray, version:int=...) -> bool: ... + def saveState(self, version:int=...) -> PySide2.QtCore.QByteArray: ... + def setAnimated(self, enabled:bool) -> None: ... + def setCentralWidget(self, widget:PySide2.QtWidgets.QWidget) -> None: ... + def setCorner(self, corner:PySide2.QtCore.Qt.Corner, area:PySide2.QtCore.Qt.DockWidgetArea) -> None: ... + def setDockNestingEnabled(self, enabled:bool) -> None: ... + def setDockOptions(self, options:PySide2.QtWidgets.QMainWindow.DockOptions) -> None: ... + def setDocumentMode(self, enabled:bool) -> None: ... + def setIconSize(self, iconSize:PySide2.QtCore.QSize) -> None: ... + def setMenuBar(self, menubar:PySide2.QtWidgets.QMenuBar) -> None: ... + def setMenuWidget(self, menubar:PySide2.QtWidgets.QWidget) -> None: ... + def setStatusBar(self, statusbar:PySide2.QtWidgets.QStatusBar) -> None: ... + def setTabPosition(self, areas:PySide2.QtCore.Qt.DockWidgetAreas, tabPosition:PySide2.QtWidgets.QTabWidget.TabPosition) -> None: ... + def setTabShape(self, tabShape:PySide2.QtWidgets.QTabWidget.TabShape) -> None: ... + def setToolButtonStyle(self, toolButtonStyle:PySide2.QtCore.Qt.ToolButtonStyle) -> None: ... + def setUnifiedTitleAndToolBarOnMac(self, set:bool) -> None: ... + def splitDockWidget(self, after:PySide2.QtWidgets.QDockWidget, dockwidget:PySide2.QtWidgets.QDockWidget, orientation:PySide2.QtCore.Qt.Orientation) -> None: ... + def statusBar(self) -> PySide2.QtWidgets.QStatusBar: ... + def tabPosition(self, area:PySide2.QtCore.Qt.DockWidgetArea) -> PySide2.QtWidgets.QTabWidget.TabPosition: ... + def tabShape(self) -> PySide2.QtWidgets.QTabWidget.TabShape: ... + def tabifiedDockWidgets(self, dockwidget:PySide2.QtWidgets.QDockWidget) -> typing.List: ... + def tabifyDockWidget(self, first:PySide2.QtWidgets.QDockWidget, second:PySide2.QtWidgets.QDockWidget) -> None: ... + def takeCentralWidget(self) -> PySide2.QtWidgets.QWidget: ... + def toolBarArea(self, toolbar:PySide2.QtWidgets.QToolBar) -> PySide2.QtCore.Qt.ToolBarArea: ... + def toolBarBreak(self, toolbar:PySide2.QtWidgets.QToolBar) -> bool: ... + def toolButtonStyle(self) -> PySide2.QtCore.Qt.ToolButtonStyle: ... + def unifiedTitleAndToolBarOnMac(self) -> bool: ... + + +class QMdiArea(PySide2.QtWidgets.QAbstractScrollArea): + CreationOrder : QMdiArea = ... # 0x0 + SubWindowView : QMdiArea = ... # 0x0 + DontMaximizeSubWindowOnActivation: QMdiArea = ... # 0x1 + StackingOrder : QMdiArea = ... # 0x1 + TabbedView : QMdiArea = ... # 0x1 + ActivationHistoryOrder : QMdiArea = ... # 0x2 + + class AreaOption(object): + DontMaximizeSubWindowOnActivation: QMdiArea.AreaOption = ... # 0x1 + + class AreaOptions(object): ... + + class ViewMode(object): + SubWindowView : QMdiArea.ViewMode = ... # 0x0 + TabbedView : QMdiArea.ViewMode = ... # 0x1 + + class WindowOrder(object): + CreationOrder : QMdiArea.WindowOrder = ... # 0x0 + StackingOrder : QMdiArea.WindowOrder = ... # 0x1 + ActivationHistoryOrder : QMdiArea.WindowOrder = ... # 0x2 + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def activateNextSubWindow(self) -> None: ... + def activatePreviousSubWindow(self) -> None: ... + def activationOrder(self) -> PySide2.QtWidgets.QMdiArea.WindowOrder: ... + def activeSubWindow(self) -> PySide2.QtWidgets.QMdiSubWindow: ... + def addSubWindow(self, widget:PySide2.QtWidgets.QWidget, flags:PySide2.QtCore.Qt.WindowFlags=...) -> PySide2.QtWidgets.QMdiSubWindow: ... + def background(self) -> PySide2.QtGui.QBrush: ... + def cascadeSubWindows(self) -> None: ... + def childEvent(self, childEvent:PySide2.QtCore.QChildEvent) -> None: ... + def closeActiveSubWindow(self) -> None: ... + def closeAllSubWindows(self) -> None: ... + def currentSubWindow(self) -> PySide2.QtWidgets.QMdiSubWindow: ... + def documentMode(self) -> bool: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def eventFilter(self, object:PySide2.QtCore.QObject, event:PySide2.QtCore.QEvent) -> bool: ... + def minimumSizeHint(self) -> PySide2.QtCore.QSize: ... + def paintEvent(self, paintEvent:PySide2.QtGui.QPaintEvent) -> None: ... + def removeSubWindow(self, widget:PySide2.QtWidgets.QWidget) -> None: ... + def resizeEvent(self, resizeEvent:PySide2.QtGui.QResizeEvent) -> None: ... + def scrollContentsBy(self, dx:int, dy:int) -> None: ... + def setActivationOrder(self, order:PySide2.QtWidgets.QMdiArea.WindowOrder) -> None: ... + def setActiveSubWindow(self, window:PySide2.QtWidgets.QMdiSubWindow) -> None: ... + def setBackground(self, background:PySide2.QtGui.QBrush) -> None: ... + def setDocumentMode(self, enabled:bool) -> None: ... + def setOption(self, option:PySide2.QtWidgets.QMdiArea.AreaOption, on:bool=...) -> None: ... + def setTabPosition(self, position:PySide2.QtWidgets.QTabWidget.TabPosition) -> None: ... + def setTabShape(self, shape:PySide2.QtWidgets.QTabWidget.TabShape) -> None: ... + def setTabsClosable(self, closable:bool) -> None: ... + def setTabsMovable(self, movable:bool) -> None: ... + def setViewMode(self, mode:PySide2.QtWidgets.QMdiArea.ViewMode) -> None: ... + def setupViewport(self, viewport:PySide2.QtWidgets.QWidget) -> None: ... + def showEvent(self, showEvent:PySide2.QtGui.QShowEvent) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def subWindowList(self, order:PySide2.QtWidgets.QMdiArea.WindowOrder=...) -> typing.List: ... + def tabPosition(self) -> PySide2.QtWidgets.QTabWidget.TabPosition: ... + def tabShape(self) -> PySide2.QtWidgets.QTabWidget.TabShape: ... + def tabsClosable(self) -> bool: ... + def tabsMovable(self) -> bool: ... + def testOption(self, opton:PySide2.QtWidgets.QMdiArea.AreaOption) -> bool: ... + def tileSubWindows(self) -> None: ... + def timerEvent(self, timerEvent:PySide2.QtCore.QTimerEvent) -> None: ... + def viewMode(self) -> PySide2.QtWidgets.QMdiArea.ViewMode: ... + def viewportEvent(self, event:PySide2.QtCore.QEvent) -> bool: ... + + +class QMdiSubWindow(PySide2.QtWidgets.QWidget): + AllowOutsideAreaHorizontally: QMdiSubWindow = ... # 0x1 + AllowOutsideAreaVertically: QMdiSubWindow = ... # 0x2 + RubberBandResize : QMdiSubWindow = ... # 0x4 + RubberBandMove : QMdiSubWindow = ... # 0x8 + + class SubWindowOption(object): + AllowOutsideAreaHorizontally: QMdiSubWindow.SubWindowOption = ... # 0x1 + AllowOutsideAreaVertically: QMdiSubWindow.SubWindowOption = ... # 0x2 + RubberBandResize : QMdiSubWindow.SubWindowOption = ... # 0x4 + RubberBandMove : QMdiSubWindow.SubWindowOption = ... # 0x8 + + class SubWindowOptions(object): ... + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., flags:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + + def changeEvent(self, changeEvent:PySide2.QtCore.QEvent) -> None: ... + def childEvent(self, childEvent:PySide2.QtCore.QChildEvent) -> None: ... + def closeEvent(self, closeEvent:PySide2.QtGui.QCloseEvent) -> None: ... + def contextMenuEvent(self, contextMenuEvent:PySide2.QtGui.QContextMenuEvent) -> None: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def eventFilter(self, object:PySide2.QtCore.QObject, event:PySide2.QtCore.QEvent) -> bool: ... + def focusInEvent(self, focusInEvent:PySide2.QtGui.QFocusEvent) -> None: ... + def focusOutEvent(self, focusOutEvent:PySide2.QtGui.QFocusEvent) -> None: ... + def hideEvent(self, hideEvent:PySide2.QtGui.QHideEvent) -> None: ... + def isShaded(self) -> bool: ... + def keyPressEvent(self, keyEvent:PySide2.QtGui.QKeyEvent) -> None: ... + def keyboardPageStep(self) -> int: ... + def keyboardSingleStep(self) -> int: ... + def leaveEvent(self, leaveEvent:PySide2.QtCore.QEvent) -> None: ... + def maximizedButtonsWidget(self) -> PySide2.QtWidgets.QWidget: ... + def maximizedSystemMenuIconWidget(self) -> PySide2.QtWidgets.QWidget: ... + def mdiArea(self) -> PySide2.QtWidgets.QMdiArea: ... + def minimumSizeHint(self) -> PySide2.QtCore.QSize: ... + def mouseDoubleClickEvent(self, mouseEvent:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseMoveEvent(self, mouseEvent:PySide2.QtGui.QMouseEvent) -> None: ... + def mousePressEvent(self, mouseEvent:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, mouseEvent:PySide2.QtGui.QMouseEvent) -> None: ... + def moveEvent(self, moveEvent:PySide2.QtGui.QMoveEvent) -> None: ... + def paintEvent(self, paintEvent:PySide2.QtGui.QPaintEvent) -> None: ... + def resizeEvent(self, resizeEvent:PySide2.QtGui.QResizeEvent) -> None: ... + def setKeyboardPageStep(self, step:int) -> None: ... + def setKeyboardSingleStep(self, step:int) -> None: ... + def setOption(self, option:PySide2.QtWidgets.QMdiSubWindow.SubWindowOption, on:bool=...) -> None: ... + def setSystemMenu(self, systemMenu:PySide2.QtWidgets.QMenu) -> None: ... + def setWidget(self, widget:PySide2.QtWidgets.QWidget) -> None: ... + def showEvent(self, showEvent:PySide2.QtGui.QShowEvent) -> None: ... + def showShaded(self) -> None: ... + def showSystemMenu(self) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def systemMenu(self) -> PySide2.QtWidgets.QMenu: ... + def testOption(self, arg__1:PySide2.QtWidgets.QMdiSubWindow.SubWindowOption) -> bool: ... + def timerEvent(self, timerEvent:PySide2.QtCore.QTimerEvent) -> None: ... + def widget(self) -> PySide2.QtWidgets.QWidget: ... + + +class QMenu(PySide2.QtWidgets.QWidget): + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, title:str, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def actionAt(self, arg__1:PySide2.QtCore.QPoint) -> PySide2.QtWidgets.QAction: ... + def actionEvent(self, arg__1:PySide2.QtGui.QActionEvent) -> None: ... + def actionGeometry(self, arg__1:PySide2.QtWidgets.QAction) -> PySide2.QtCore.QRect: ... + def activeAction(self) -> PySide2.QtWidgets.QAction: ... + @typing.overload + def addAction(self, arg__1:PySide2.QtGui.QIcon, arg__2:str, arg__3:object, arg__4:typing.Optional[PySide2.QtGui.QKeySequence]=...) -> None: ... + @typing.overload + def addAction(self, arg__1:PySide2.QtWidgets.QAction) -> None: ... + @typing.overload + def addAction(self, arg__1:str, arg__2:object, arg__3:typing.Optional[PySide2.QtGui.QKeySequence]=...) -> None: ... + @typing.overload + def addAction(self, icon:PySide2.QtGui.QIcon, text:str) -> PySide2.QtWidgets.QAction: ... + @typing.overload + def addAction(self, icon:PySide2.QtGui.QIcon, text:str, receiver:PySide2.QtCore.QObject, member:bytes, shortcut:typing.Optional[PySide2.QtGui.QKeySequence]=...) -> PySide2.QtWidgets.QAction: ... + @typing.overload + def addAction(self, text:str) -> PySide2.QtWidgets.QAction: ... + @typing.overload + def addAction(self, text:str, receiver:PySide2.QtCore.QObject, member:bytes, shortcut:typing.Optional[PySide2.QtGui.QKeySequence]=...) -> PySide2.QtWidgets.QAction: ... + @typing.overload + def addMenu(self, icon:PySide2.QtGui.QIcon, title:str) -> PySide2.QtWidgets.QMenu: ... + @typing.overload + def addMenu(self, menu:PySide2.QtWidgets.QMenu) -> PySide2.QtWidgets.QAction: ... + @typing.overload + def addMenu(self, title:str) -> PySide2.QtWidgets.QMenu: ... + @typing.overload + def addSection(self, icon:PySide2.QtGui.QIcon, text:str) -> PySide2.QtWidgets.QAction: ... + @typing.overload + def addSection(self, text:str) -> PySide2.QtWidgets.QAction: ... + def addSeparator(self) -> PySide2.QtWidgets.QAction: ... + def changeEvent(self, arg__1:PySide2.QtCore.QEvent) -> None: ... + def clear(self) -> None: ... + def columnCount(self) -> int: ... + def defaultAction(self) -> PySide2.QtWidgets.QAction: ... + def enterEvent(self, arg__1:PySide2.QtCore.QEvent) -> None: ... + def event(self, arg__1:PySide2.QtCore.QEvent) -> bool: ... + @typing.overload + @staticmethod + def exec_(actions:typing.Sequence, pos:PySide2.QtCore.QPoint, at:typing.Optional[PySide2.QtWidgets.QAction]=..., parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> PySide2.QtWidgets.QAction: ... + @typing.overload + def exec_(self) -> PySide2.QtWidgets.QAction: ... + @typing.overload + def exec_(self, pos:PySide2.QtCore.QPoint, at:typing.Optional[PySide2.QtWidgets.QAction]=...) -> PySide2.QtWidgets.QAction: ... + def focusNextPrevChild(self, next:bool) -> bool: ... + def hideEvent(self, arg__1:PySide2.QtGui.QHideEvent) -> None: ... + def hideTearOffMenu(self) -> None: ... + def icon(self) -> PySide2.QtGui.QIcon: ... + def initStyleOption(self, option:PySide2.QtWidgets.QStyleOptionMenuItem, action:PySide2.QtWidgets.QAction) -> None: ... + def insertMenu(self, before:PySide2.QtWidgets.QAction, menu:PySide2.QtWidgets.QMenu) -> PySide2.QtWidgets.QAction: ... + @typing.overload + def insertSection(self, before:PySide2.QtWidgets.QAction, icon:PySide2.QtGui.QIcon, text:str) -> PySide2.QtWidgets.QAction: ... + @typing.overload + def insertSection(self, before:PySide2.QtWidgets.QAction, text:str) -> PySide2.QtWidgets.QAction: ... + def insertSeparator(self, before:PySide2.QtWidgets.QAction) -> PySide2.QtWidgets.QAction: ... + def isEmpty(self) -> bool: ... + def isTearOffEnabled(self) -> bool: ... + def isTearOffMenuVisible(self) -> bool: ... + def keyPressEvent(self, arg__1:PySide2.QtGui.QKeyEvent) -> None: ... + def leaveEvent(self, arg__1:PySide2.QtCore.QEvent) -> None: ... + def menuAction(self) -> PySide2.QtWidgets.QAction: ... + def mouseMoveEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def mousePressEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def paintEvent(self, arg__1:PySide2.QtGui.QPaintEvent) -> None: ... + def popup(self, pos:PySide2.QtCore.QPoint, at:typing.Optional[PySide2.QtWidgets.QAction]=...) -> None: ... + def separatorsCollapsible(self) -> bool: ... + def setActiveAction(self, act:PySide2.QtWidgets.QAction) -> None: ... + def setDefaultAction(self, arg__1:PySide2.QtWidgets.QAction) -> None: ... + def setIcon(self, icon:PySide2.QtGui.QIcon) -> None: ... + def setSeparatorsCollapsible(self, collapse:bool) -> None: ... + def setTearOffEnabled(self, arg__1:bool) -> None: ... + def setTitle(self, title:str) -> None: ... + def setToolTipsVisible(self, visible:bool) -> None: ... + @typing.overload + def showTearOffMenu(self) -> None: ... + @typing.overload + def showTearOffMenu(self, pos:PySide2.QtCore.QPoint) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def timerEvent(self, arg__1:PySide2.QtCore.QTimerEvent) -> None: ... + def title(self) -> str: ... + def toolTipsVisible(self) -> bool: ... + def wheelEvent(self, arg__1:PySide2.QtGui.QWheelEvent) -> None: ... + + +class QMenuBar(PySide2.QtWidgets.QWidget): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def actionAt(self, arg__1:PySide2.QtCore.QPoint) -> PySide2.QtWidgets.QAction: ... + def actionEvent(self, arg__1:PySide2.QtGui.QActionEvent) -> None: ... + def actionGeometry(self, arg__1:PySide2.QtWidgets.QAction) -> PySide2.QtCore.QRect: ... + def activeAction(self) -> PySide2.QtWidgets.QAction: ... + @typing.overload + def addAction(self, arg__1:PySide2.QtWidgets.QAction) -> None: ... + @typing.overload + def addAction(self, arg__1:str, arg__2:object) -> None: ... + @typing.overload + def addAction(self, text:str) -> PySide2.QtWidgets.QAction: ... + @typing.overload + def addAction(self, text:str, receiver:PySide2.QtCore.QObject, member:bytes) -> PySide2.QtWidgets.QAction: ... + @typing.overload + def addMenu(self, icon:PySide2.QtGui.QIcon, title:str) -> PySide2.QtWidgets.QMenu: ... + @typing.overload + def addMenu(self, menu:PySide2.QtWidgets.QMenu) -> PySide2.QtWidgets.QAction: ... + @typing.overload + def addMenu(self, title:str) -> PySide2.QtWidgets.QMenu: ... + def addSeparator(self) -> PySide2.QtWidgets.QAction: ... + def changeEvent(self, arg__1:PySide2.QtCore.QEvent) -> None: ... + def clear(self) -> None: ... + def cornerWidget(self, corner:PySide2.QtCore.Qt.Corner=...) -> PySide2.QtWidgets.QWidget: ... + def event(self, arg__1:PySide2.QtCore.QEvent) -> bool: ... + def eventFilter(self, arg__1:PySide2.QtCore.QObject, arg__2:PySide2.QtCore.QEvent) -> bool: ... + def focusInEvent(self, arg__1:PySide2.QtGui.QFocusEvent) -> None: ... + def focusOutEvent(self, arg__1:PySide2.QtGui.QFocusEvent) -> None: ... + def heightForWidth(self, arg__1:int) -> int: ... + def initStyleOption(self, option:PySide2.QtWidgets.QStyleOptionMenuItem, action:PySide2.QtWidgets.QAction) -> None: ... + def insertMenu(self, before:PySide2.QtWidgets.QAction, menu:PySide2.QtWidgets.QMenu) -> PySide2.QtWidgets.QAction: ... + def insertSeparator(self, before:PySide2.QtWidgets.QAction) -> PySide2.QtWidgets.QAction: ... + def isDefaultUp(self) -> bool: ... + def isNativeMenuBar(self) -> bool: ... + def keyPressEvent(self, arg__1:PySide2.QtGui.QKeyEvent) -> None: ... + def leaveEvent(self, arg__1:PySide2.QtCore.QEvent) -> None: ... + def minimumSizeHint(self) -> PySide2.QtCore.QSize: ... + def mouseMoveEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def mousePressEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def paintEvent(self, arg__1:PySide2.QtGui.QPaintEvent) -> None: ... + def resizeEvent(self, arg__1:PySide2.QtGui.QResizeEvent) -> None: ... + def setActiveAction(self, action:PySide2.QtWidgets.QAction) -> None: ... + def setCornerWidget(self, w:PySide2.QtWidgets.QWidget, corner:PySide2.QtCore.Qt.Corner=...) -> None: ... + def setDefaultUp(self, arg__1:bool) -> None: ... + def setNativeMenuBar(self, nativeMenuBar:bool) -> None: ... + def setVisible(self, visible:bool) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def timerEvent(self, arg__1:PySide2.QtCore.QTimerEvent) -> None: ... + + +class QMessageBox(PySide2.QtWidgets.QDialog): + ButtonMask : QMessageBox = ... # -0x301 + InvalidRole : QMessageBox = ... # -0x1 + AcceptRole : QMessageBox = ... # 0x0 + NoButton : QMessageBox = ... # 0x0 + NoIcon : QMessageBox = ... # 0x0 + Information : QMessageBox = ... # 0x1 + RejectRole : QMessageBox = ... # 0x1 + DestructiveRole : QMessageBox = ... # 0x2 + Warning : QMessageBox = ... # 0x2 + ActionRole : QMessageBox = ... # 0x3 + Critical : QMessageBox = ... # 0x3 + HelpRole : QMessageBox = ... # 0x4 + Question : QMessageBox = ... # 0x4 + YesRole : QMessageBox = ... # 0x5 + NoRole : QMessageBox = ... # 0x6 + ResetRole : QMessageBox = ... # 0x7 + ApplyRole : QMessageBox = ... # 0x8 + NRoles : QMessageBox = ... # 0x9 + Default : QMessageBox = ... # 0x100 + Escape : QMessageBox = ... # 0x200 + FlagMask : QMessageBox = ... # 0x300 + FirstButton : QMessageBox = ... # 0x400 + Ok : QMessageBox = ... # 0x400 + Save : QMessageBox = ... # 0x800 + SaveAll : QMessageBox = ... # 0x1000 + Open : QMessageBox = ... # 0x2000 + Yes : QMessageBox = ... # 0x4000 + YesAll : QMessageBox = ... # 0x8000 + YesToAll : QMessageBox = ... # 0x8000 + No : QMessageBox = ... # 0x10000 + NoAll : QMessageBox = ... # 0x20000 + NoToAll : QMessageBox = ... # 0x20000 + Abort : QMessageBox = ... # 0x40000 + Retry : QMessageBox = ... # 0x80000 + Ignore : QMessageBox = ... # 0x100000 + Close : QMessageBox = ... # 0x200000 + Cancel : QMessageBox = ... # 0x400000 + Discard : QMessageBox = ... # 0x800000 + Help : QMessageBox = ... # 0x1000000 + Apply : QMessageBox = ... # 0x2000000 + Reset : QMessageBox = ... # 0x4000000 + LastButton : QMessageBox = ... # 0x8000000 + RestoreDefaults : QMessageBox = ... # 0x8000000 + + class ButtonRole(object): + InvalidRole : QMessageBox.ButtonRole = ... # -0x1 + AcceptRole : QMessageBox.ButtonRole = ... # 0x0 + RejectRole : QMessageBox.ButtonRole = ... # 0x1 + DestructiveRole : QMessageBox.ButtonRole = ... # 0x2 + ActionRole : QMessageBox.ButtonRole = ... # 0x3 + HelpRole : QMessageBox.ButtonRole = ... # 0x4 + YesRole : QMessageBox.ButtonRole = ... # 0x5 + NoRole : QMessageBox.ButtonRole = ... # 0x6 + ResetRole : QMessageBox.ButtonRole = ... # 0x7 + ApplyRole : QMessageBox.ButtonRole = ... # 0x8 + NRoles : QMessageBox.ButtonRole = ... # 0x9 + + class Icon(object): + NoIcon : QMessageBox.Icon = ... # 0x0 + Information : QMessageBox.Icon = ... # 0x1 + Warning : QMessageBox.Icon = ... # 0x2 + Critical : QMessageBox.Icon = ... # 0x3 + Question : QMessageBox.Icon = ... # 0x4 + + class StandardButton(object): + ButtonMask : QMessageBox.StandardButton = ... # -0x301 + NoButton : QMessageBox.StandardButton = ... # 0x0 + Default : QMessageBox.StandardButton = ... # 0x100 + Escape : QMessageBox.StandardButton = ... # 0x200 + FlagMask : QMessageBox.StandardButton = ... # 0x300 + FirstButton : QMessageBox.StandardButton = ... # 0x400 + Ok : QMessageBox.StandardButton = ... # 0x400 + Save : QMessageBox.StandardButton = ... # 0x800 + SaveAll : QMessageBox.StandardButton = ... # 0x1000 + Open : QMessageBox.StandardButton = ... # 0x2000 + Yes : QMessageBox.StandardButton = ... # 0x4000 + YesAll : QMessageBox.StandardButton = ... # 0x8000 + YesToAll : QMessageBox.StandardButton = ... # 0x8000 + No : QMessageBox.StandardButton = ... # 0x10000 + NoAll : QMessageBox.StandardButton = ... # 0x20000 + NoToAll : QMessageBox.StandardButton = ... # 0x20000 + Abort : QMessageBox.StandardButton = ... # 0x40000 + Retry : QMessageBox.StandardButton = ... # 0x80000 + Ignore : QMessageBox.StandardButton = ... # 0x100000 + Close : QMessageBox.StandardButton = ... # 0x200000 + Cancel : QMessageBox.StandardButton = ... # 0x400000 + Discard : QMessageBox.StandardButton = ... # 0x800000 + Help : QMessageBox.StandardButton = ... # 0x1000000 + Apply : QMessageBox.StandardButton = ... # 0x2000000 + Reset : QMessageBox.StandardButton = ... # 0x4000000 + LastButton : QMessageBox.StandardButton = ... # 0x8000000 + RestoreDefaults : QMessageBox.StandardButton = ... # 0x8000000 + + class StandardButtons(object): ... + + @typing.overload + def __init__(self, icon:PySide2.QtWidgets.QMessageBox.Icon, title:str, text:str, buttons:PySide2.QtWidgets.QMessageBox.StandardButtons=..., parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., flags:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + @staticmethod + def about(parent:PySide2.QtWidgets.QWidget, title:str, text:str) -> None: ... + @staticmethod + def aboutQt(parent:PySide2.QtWidgets.QWidget, title:str=...) -> None: ... + @typing.overload + def addButton(self, button:PySide2.QtWidgets.QAbstractButton, role:PySide2.QtWidgets.QMessageBox.ButtonRole) -> None: ... + @typing.overload + def addButton(self, button:PySide2.QtWidgets.QMessageBox.StandardButton) -> PySide2.QtWidgets.QPushButton: ... + @typing.overload + def addButton(self, text:str, role:PySide2.QtWidgets.QMessageBox.ButtonRole) -> PySide2.QtWidgets.QPushButton: ... + def button(self, which:PySide2.QtWidgets.QMessageBox.StandardButton) -> PySide2.QtWidgets.QAbstractButton: ... + def buttonRole(self, button:PySide2.QtWidgets.QAbstractButton) -> PySide2.QtWidgets.QMessageBox.ButtonRole: ... + def buttonText(self, button:int) -> str: ... + def buttons(self) -> typing.List: ... + def changeEvent(self, event:PySide2.QtCore.QEvent) -> None: ... + def checkBox(self) -> PySide2.QtWidgets.QCheckBox: ... + def clickedButton(self) -> PySide2.QtWidgets.QAbstractButton: ... + def closeEvent(self, event:PySide2.QtGui.QCloseEvent) -> None: ... + @typing.overload + @staticmethod + def critical(parent:PySide2.QtWidgets.QWidget, title:str, text:str, button0:PySide2.QtWidgets.QMessageBox.StandardButton, button1:PySide2.QtWidgets.QMessageBox.StandardButton) -> int: ... + @typing.overload + @staticmethod + def critical(parent:PySide2.QtWidgets.QWidget, title:str, text:str, buttons:PySide2.QtWidgets.QMessageBox.StandardButtons=..., defaultButton:PySide2.QtWidgets.QMessageBox.StandardButton=...) -> PySide2.QtWidgets.QMessageBox.StandardButton: ... + def defaultButton(self) -> PySide2.QtWidgets.QPushButton: ... + def detailedText(self) -> str: ... + def escapeButton(self) -> PySide2.QtWidgets.QAbstractButton: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def icon(self) -> PySide2.QtWidgets.QMessageBox.Icon: ... + def iconPixmap(self) -> PySide2.QtGui.QPixmap: ... + @typing.overload + @staticmethod + def information(parent:PySide2.QtWidgets.QWidget, title:str, text:str, button0:PySide2.QtWidgets.QMessageBox.StandardButton, button1:PySide2.QtWidgets.QMessageBox.StandardButton=...) -> PySide2.QtWidgets.QMessageBox.StandardButton: ... + @typing.overload + @staticmethod + def information(parent:PySide2.QtWidgets.QWidget, title:str, text:str, buttons:PySide2.QtWidgets.QMessageBox.StandardButtons=..., defaultButton:PySide2.QtWidgets.QMessageBox.StandardButton=...) -> PySide2.QtWidgets.QMessageBox.StandardButton: ... + def informativeText(self) -> str: ... + def keyPressEvent(self, event:PySide2.QtGui.QKeyEvent) -> None: ... + @typing.overload + def open(self) -> None: ... + @typing.overload + def open(self, receiver:PySide2.QtCore.QObject, member:bytes) -> None: ... + @typing.overload + @staticmethod + def question(parent:PySide2.QtWidgets.QWidget, title:str, text:str, button0:PySide2.QtWidgets.QMessageBox.StandardButton, button1:PySide2.QtWidgets.QMessageBox.StandardButton) -> int: ... + @typing.overload + @staticmethod + def question(parent:PySide2.QtWidgets.QWidget, title:str, text:str, buttons:PySide2.QtWidgets.QMessageBox.StandardButtons=..., defaultButton:PySide2.QtWidgets.QMessageBox.StandardButton=...) -> PySide2.QtWidgets.QMessageBox.StandardButton: ... + def removeButton(self, button:PySide2.QtWidgets.QAbstractButton) -> None: ... + def resizeEvent(self, event:PySide2.QtGui.QResizeEvent) -> None: ... + def setButtonText(self, button:int, text:str) -> None: ... + def setCheckBox(self, cb:PySide2.QtWidgets.QCheckBox) -> None: ... + @typing.overload + def setDefaultButton(self, button:PySide2.QtWidgets.QMessageBox.StandardButton) -> None: ... + @typing.overload + def setDefaultButton(self, button:PySide2.QtWidgets.QPushButton) -> None: ... + def setDetailedText(self, text:str) -> None: ... + @typing.overload + def setEscapeButton(self, button:PySide2.QtWidgets.QAbstractButton) -> None: ... + @typing.overload + def setEscapeButton(self, button:PySide2.QtWidgets.QMessageBox.StandardButton) -> None: ... + def setIcon(self, arg__1:PySide2.QtWidgets.QMessageBox.Icon) -> None: ... + def setIconPixmap(self, pixmap:PySide2.QtGui.QPixmap) -> None: ... + def setInformativeText(self, text:str) -> None: ... + def setStandardButtons(self, buttons:PySide2.QtWidgets.QMessageBox.StandardButtons) -> None: ... + def setText(self, text:str) -> None: ... + def setTextFormat(self, format:PySide2.QtCore.Qt.TextFormat) -> None: ... + def setTextInteractionFlags(self, flags:PySide2.QtCore.Qt.TextInteractionFlags) -> None: ... + def setWindowModality(self, windowModality:PySide2.QtCore.Qt.WindowModality) -> None: ... + def setWindowTitle(self, title:str) -> None: ... + def showEvent(self, event:PySide2.QtGui.QShowEvent) -> None: ... + def standardButton(self, button:PySide2.QtWidgets.QAbstractButton) -> PySide2.QtWidgets.QMessageBox.StandardButton: ... + def standardButtons(self) -> PySide2.QtWidgets.QMessageBox.StandardButtons: ... + @staticmethod + def standardIcon(icon:PySide2.QtWidgets.QMessageBox.Icon) -> PySide2.QtGui.QPixmap: ... + def text(self) -> str: ... + def textFormat(self) -> PySide2.QtCore.Qt.TextFormat: ... + def textInteractionFlags(self) -> PySide2.QtCore.Qt.TextInteractionFlags: ... + @typing.overload + @staticmethod + def warning(parent:PySide2.QtWidgets.QWidget, title:str, text:str, button0:PySide2.QtWidgets.QMessageBox.StandardButton, button1:PySide2.QtWidgets.QMessageBox.StandardButton) -> int: ... + @typing.overload + @staticmethod + def warning(parent:PySide2.QtWidgets.QWidget, title:str, text:str, buttons:PySide2.QtWidgets.QMessageBox.StandardButtons=..., defaultButton:PySide2.QtWidgets.QMessageBox.StandardButton=...) -> PySide2.QtWidgets.QMessageBox.StandardButton: ... + + +class QMouseEventTransition(PySide2.QtCore.QEventTransition): + + @typing.overload + def __init__(self, object:PySide2.QtCore.QObject, type:PySide2.QtCore.QEvent.Type, button:PySide2.QtCore.Qt.MouseButton, sourceState:typing.Optional[PySide2.QtCore.QState]=...) -> None: ... + @typing.overload + def __init__(self, sourceState:typing.Optional[PySide2.QtCore.QState]=...) -> None: ... + + def button(self) -> PySide2.QtCore.Qt.MouseButton: ... + def eventTest(self, event:PySide2.QtCore.QEvent) -> bool: ... + def hitTestPath(self) -> PySide2.QtGui.QPainterPath: ... + def modifierMask(self) -> PySide2.QtCore.Qt.KeyboardModifiers: ... + def onTransition(self, event:PySide2.QtCore.QEvent) -> None: ... + def setButton(self, button:PySide2.QtCore.Qt.MouseButton) -> None: ... + def setHitTestPath(self, path:PySide2.QtGui.QPainterPath) -> None: ... + def setModifierMask(self, modifiers:PySide2.QtCore.Qt.KeyboardModifiers) -> None: ... + + +class QOpenGLWidget(PySide2.QtWidgets.QWidget): + NoPartialUpdate : QOpenGLWidget = ... # 0x0 + PartialUpdate : QOpenGLWidget = ... # 0x1 + + class UpdateBehavior(object): + NoPartialUpdate : QOpenGLWidget.UpdateBehavior = ... # 0x0 + PartialUpdate : QOpenGLWidget.UpdateBehavior = ... # 0x1 + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., f:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + + def context(self) -> PySide2.QtGui.QOpenGLContext: ... + def defaultFramebufferObject(self) -> int: ... + def doneCurrent(self) -> None: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def format(self) -> PySide2.QtGui.QSurfaceFormat: ... + def grabFramebuffer(self) -> PySide2.QtGui.QImage: ... + def initializeGL(self) -> None: ... + def isValid(self) -> bool: ... + def makeCurrent(self) -> None: ... + def metric(self, metric:PySide2.QtGui.QPaintDevice.PaintDeviceMetric) -> int: ... + def paintEngine(self) -> PySide2.QtGui.QPaintEngine: ... + def paintEvent(self, e:PySide2.QtGui.QPaintEvent) -> None: ... + def paintGL(self) -> None: ... + def redirected(self, p:PySide2.QtCore.QPoint) -> PySide2.QtGui.QPaintDevice: ... + def resizeEvent(self, e:PySide2.QtGui.QResizeEvent) -> None: ... + def resizeGL(self, w:int, h:int) -> None: ... + def setFormat(self, format:PySide2.QtGui.QSurfaceFormat) -> None: ... + def setTextureFormat(self, texFormat:int) -> None: ... + def setUpdateBehavior(self, updateBehavior:PySide2.QtWidgets.QOpenGLWidget.UpdateBehavior) -> None: ... + def textureFormat(self) -> int: ... + def updateBehavior(self) -> PySide2.QtWidgets.QOpenGLWidget.UpdateBehavior: ... + + +class QPanGesture(PySide2.QtWidgets.QGesture): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def acceleration(self) -> float: ... + def delta(self) -> PySide2.QtCore.QPointF: ... + def lastOffset(self) -> PySide2.QtCore.QPointF: ... + def offset(self) -> PySide2.QtCore.QPointF: ... + def setAcceleration(self, value:float) -> None: ... + def setLastOffset(self, value:PySide2.QtCore.QPointF) -> None: ... + def setOffset(self, value:PySide2.QtCore.QPointF) -> None: ... + + +class QPinchGesture(PySide2.QtWidgets.QGesture): + ScaleFactorChanged : QPinchGesture = ... # 0x1 + RotationAngleChanged : QPinchGesture = ... # 0x2 + CenterPointChanged : QPinchGesture = ... # 0x4 + + class ChangeFlag(object): + ScaleFactorChanged : QPinchGesture.ChangeFlag = ... # 0x1 + RotationAngleChanged : QPinchGesture.ChangeFlag = ... # 0x2 + CenterPointChanged : QPinchGesture.ChangeFlag = ... # 0x4 + + class ChangeFlags(object): ... + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def centerPoint(self) -> PySide2.QtCore.QPointF: ... + def changeFlags(self) -> PySide2.QtWidgets.QPinchGesture.ChangeFlags: ... + def lastCenterPoint(self) -> PySide2.QtCore.QPointF: ... + def lastRotationAngle(self) -> float: ... + def lastScaleFactor(self) -> float: ... + def rotationAngle(self) -> float: ... + def scaleFactor(self) -> float: ... + def setCenterPoint(self, value:PySide2.QtCore.QPointF) -> None: ... + def setChangeFlags(self, value:PySide2.QtWidgets.QPinchGesture.ChangeFlags) -> None: ... + def setLastCenterPoint(self, value:PySide2.QtCore.QPointF) -> None: ... + def setLastRotationAngle(self, value:float) -> None: ... + def setLastScaleFactor(self, value:float) -> None: ... + def setRotationAngle(self, value:float) -> None: ... + def setScaleFactor(self, value:float) -> None: ... + def setStartCenterPoint(self, value:PySide2.QtCore.QPointF) -> None: ... + def setTotalChangeFlags(self, value:PySide2.QtWidgets.QPinchGesture.ChangeFlags) -> None: ... + def setTotalRotationAngle(self, value:float) -> None: ... + def setTotalScaleFactor(self, value:float) -> None: ... + def startCenterPoint(self) -> PySide2.QtCore.QPointF: ... + def totalChangeFlags(self) -> PySide2.QtWidgets.QPinchGesture.ChangeFlags: ... + def totalRotationAngle(self) -> float: ... + def totalScaleFactor(self) -> float: ... + + +class QPlainTextDocumentLayout(PySide2.QtGui.QAbstractTextDocumentLayout): + + def __init__(self, document:PySide2.QtGui.QTextDocument) -> None: ... + + def blockBoundingRect(self, block:PySide2.QtGui.QTextBlock) -> PySide2.QtCore.QRectF: ... + def cursorWidth(self) -> int: ... + def documentChanged(self, from_:int, arg__2:int, charsAdded:int) -> None: ... + def documentSize(self) -> PySide2.QtCore.QSizeF: ... + def draw(self, arg__1:PySide2.QtGui.QPainter, arg__2:PySide2.QtGui.QAbstractTextDocumentLayout.PaintContext) -> None: ... + def ensureBlockLayout(self, block:PySide2.QtGui.QTextBlock) -> None: ... + def frameBoundingRect(self, arg__1:PySide2.QtGui.QTextFrame) -> PySide2.QtCore.QRectF: ... + def hitTest(self, arg__1:PySide2.QtCore.QPointF, arg__2:PySide2.QtCore.Qt.HitTestAccuracy) -> int: ... + def pageCount(self) -> int: ... + def requestUpdate(self) -> None: ... + def setCursorWidth(self, width:int) -> None: ... + + +class QPlainTextEdit(PySide2.QtWidgets.QAbstractScrollArea): + NoWrap : QPlainTextEdit = ... # 0x0 + WidgetWidth : QPlainTextEdit = ... # 0x1 + + class LineWrapMode(object): + NoWrap : QPlainTextEdit.LineWrapMode = ... # 0x0 + WidgetWidth : QPlainTextEdit.LineWrapMode = ... # 0x1 + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, text:str, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def anchorAt(self, pos:PySide2.QtCore.QPoint) -> str: ... + def appendHtml(self, html:str) -> None: ... + def appendPlainText(self, text:str) -> None: ... + def backgroundVisible(self) -> bool: ... + def blockBoundingGeometry(self, block:PySide2.QtGui.QTextBlock) -> PySide2.QtCore.QRectF: ... + def blockBoundingRect(self, block:PySide2.QtGui.QTextBlock) -> PySide2.QtCore.QRectF: ... + def blockCount(self) -> int: ... + def canInsertFromMimeData(self, source:PySide2.QtCore.QMimeData) -> bool: ... + def canPaste(self) -> bool: ... + def centerCursor(self) -> None: ... + def centerOnScroll(self) -> bool: ... + def changeEvent(self, e:PySide2.QtCore.QEvent) -> None: ... + def clear(self) -> None: ... + def contentOffset(self) -> PySide2.QtCore.QPointF: ... + def contextMenuEvent(self, e:PySide2.QtGui.QContextMenuEvent) -> None: ... + def copy(self) -> None: ... + def createMimeDataFromSelection(self) -> PySide2.QtCore.QMimeData: ... + @typing.overload + def createStandardContextMenu(self) -> PySide2.QtWidgets.QMenu: ... + @typing.overload + def createStandardContextMenu(self, position:PySide2.QtCore.QPoint) -> PySide2.QtWidgets.QMenu: ... + def currentCharFormat(self) -> PySide2.QtGui.QTextCharFormat: ... + def cursorForPosition(self, pos:PySide2.QtCore.QPoint) -> PySide2.QtGui.QTextCursor: ... + @typing.overload + def cursorRect(self) -> PySide2.QtCore.QRect: ... + @typing.overload + def cursorRect(self, cursor:PySide2.QtGui.QTextCursor) -> PySide2.QtCore.QRect: ... + def cursorWidth(self) -> int: ... + def cut(self) -> None: ... + def doSetTextCursor(self, cursor:PySide2.QtGui.QTextCursor) -> None: ... + def document(self) -> PySide2.QtGui.QTextDocument: ... + def documentTitle(self) -> str: ... + def dragEnterEvent(self, e:PySide2.QtGui.QDragEnterEvent) -> None: ... + def dragLeaveEvent(self, e:PySide2.QtGui.QDragLeaveEvent) -> None: ... + def dragMoveEvent(self, e:PySide2.QtGui.QDragMoveEvent) -> None: ... + def dropEvent(self, e:PySide2.QtGui.QDropEvent) -> None: ... + def ensureCursorVisible(self) -> None: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def extraSelections(self) -> typing.List: ... + @typing.overload + def find(self, exp:PySide2.QtCore.QRegExp, options:PySide2.QtGui.QTextDocument.FindFlags=...) -> bool: ... + @typing.overload + def find(self, exp:PySide2.QtCore.QRegularExpression, options:PySide2.QtGui.QTextDocument.FindFlags=...) -> bool: ... + @typing.overload + def find(self, exp:str, options:PySide2.QtGui.QTextDocument.FindFlags=...) -> bool: ... + def firstVisibleBlock(self) -> PySide2.QtGui.QTextBlock: ... + def focusInEvent(self, e:PySide2.QtGui.QFocusEvent) -> None: ... + def focusNextPrevChild(self, next:bool) -> bool: ... + def focusOutEvent(self, e:PySide2.QtGui.QFocusEvent) -> None: ... + def getPaintContext(self) -> PySide2.QtGui.QAbstractTextDocumentLayout.PaintContext: ... + def inputMethodEvent(self, arg__1:PySide2.QtGui.QInputMethodEvent) -> None: ... + @typing.overload + def inputMethodQuery(self, property:PySide2.QtCore.Qt.InputMethodQuery) -> typing.Any: ... + @typing.overload + def inputMethodQuery(self, query:PySide2.QtCore.Qt.InputMethodQuery, argument:typing.Any) -> typing.Any: ... + def insertFromMimeData(self, source:PySide2.QtCore.QMimeData) -> None: ... + def insertPlainText(self, text:str) -> None: ... + def isReadOnly(self) -> bool: ... + def isUndoRedoEnabled(self) -> bool: ... + def keyPressEvent(self, e:PySide2.QtGui.QKeyEvent) -> None: ... + def keyReleaseEvent(self, e:PySide2.QtGui.QKeyEvent) -> None: ... + def lineWrapMode(self) -> PySide2.QtWidgets.QPlainTextEdit.LineWrapMode: ... + def loadResource(self, type:int, name:PySide2.QtCore.QUrl) -> typing.Any: ... + def maximumBlockCount(self) -> int: ... + def mergeCurrentCharFormat(self, modifier:PySide2.QtGui.QTextCharFormat) -> None: ... + def mouseDoubleClickEvent(self, e:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseMoveEvent(self, e:PySide2.QtGui.QMouseEvent) -> None: ... + def mousePressEvent(self, e:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, e:PySide2.QtGui.QMouseEvent) -> None: ... + def moveCursor(self, operation:PySide2.QtGui.QTextCursor.MoveOperation, mode:PySide2.QtGui.QTextCursor.MoveMode=...) -> None: ... + def overwriteMode(self) -> bool: ... + def paintEvent(self, e:PySide2.QtGui.QPaintEvent) -> None: ... + def paste(self) -> None: ... + def placeholderText(self) -> str: ... + def print_(self, printer:PySide2.QtGui.QPagedPaintDevice) -> None: ... + def redo(self) -> None: ... + def resizeEvent(self, e:PySide2.QtGui.QResizeEvent) -> None: ... + def scrollContentsBy(self, dx:int, dy:int) -> None: ... + def selectAll(self) -> None: ... + def setBackgroundVisible(self, visible:bool) -> None: ... + def setCenterOnScroll(self, enabled:bool) -> None: ... + def setCurrentCharFormat(self, format:PySide2.QtGui.QTextCharFormat) -> None: ... + def setCursorWidth(self, width:int) -> None: ... + def setDocument(self, document:PySide2.QtGui.QTextDocument) -> None: ... + def setDocumentTitle(self, title:str) -> None: ... + def setExtraSelections(self, selections:typing.Sequence) -> None: ... + def setLineWrapMode(self, mode:PySide2.QtWidgets.QPlainTextEdit.LineWrapMode) -> None: ... + def setMaximumBlockCount(self, maximum:int) -> None: ... + def setOverwriteMode(self, overwrite:bool) -> None: ... + def setPlaceholderText(self, placeholderText:str) -> None: ... + def setPlainText(self, text:str) -> None: ... + def setReadOnly(self, ro:bool) -> None: ... + def setTabChangesFocus(self, b:bool) -> None: ... + def setTabStopDistance(self, distance:float) -> None: ... + def setTabStopWidth(self, width:int) -> None: ... + def setTextCursor(self, cursor:PySide2.QtGui.QTextCursor) -> None: ... + def setTextInteractionFlags(self, flags:PySide2.QtCore.Qt.TextInteractionFlags) -> None: ... + def setUndoRedoEnabled(self, enable:bool) -> None: ... + def setWordWrapMode(self, policy:PySide2.QtGui.QTextOption.WrapMode) -> None: ... + def showEvent(self, arg__1:PySide2.QtGui.QShowEvent) -> None: ... + def tabChangesFocus(self) -> bool: ... + def tabStopDistance(self) -> float: ... + def tabStopWidth(self) -> int: ... + def textCursor(self) -> PySide2.QtGui.QTextCursor: ... + def textInteractionFlags(self) -> PySide2.QtCore.Qt.TextInteractionFlags: ... + def timerEvent(self, e:PySide2.QtCore.QTimerEvent) -> None: ... + def toPlainText(self) -> str: ... + def undo(self) -> None: ... + def wheelEvent(self, e:PySide2.QtGui.QWheelEvent) -> None: ... + def wordWrapMode(self) -> PySide2.QtGui.QTextOption.WrapMode: ... + def zoomIn(self, range:int=...) -> None: ... + def zoomInF(self, range:float) -> None: ... + def zoomOut(self, range:int=...) -> None: ... + + +class QProgressBar(PySide2.QtWidgets.QWidget): + TopToBottom : QProgressBar = ... # 0x0 + BottomToTop : QProgressBar = ... # 0x1 + + class Direction(object): + TopToBottom : QProgressBar.Direction = ... # 0x0 + BottomToTop : QProgressBar.Direction = ... # 0x1 + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def alignment(self) -> PySide2.QtCore.Qt.Alignment: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def format(self) -> str: ... + def initStyleOption(self, option:PySide2.QtWidgets.QStyleOptionProgressBar) -> None: ... + def invertedAppearance(self) -> bool: ... + def isTextVisible(self) -> bool: ... + def maximum(self) -> int: ... + def minimum(self) -> int: ... + def minimumSizeHint(self) -> PySide2.QtCore.QSize: ... + def orientation(self) -> PySide2.QtCore.Qt.Orientation: ... + def paintEvent(self, arg__1:PySide2.QtGui.QPaintEvent) -> None: ... + def reset(self) -> None: ... + def resetFormat(self) -> None: ... + def setAlignment(self, alignment:PySide2.QtCore.Qt.Alignment) -> None: ... + def setFormat(self, format:str) -> None: ... + def setInvertedAppearance(self, invert:bool) -> None: ... + def setMaximum(self, maximum:int) -> None: ... + def setMinimum(self, minimum:int) -> None: ... + def setOrientation(self, arg__1:PySide2.QtCore.Qt.Orientation) -> None: ... + def setRange(self, minimum:int, maximum:int) -> None: ... + def setTextDirection(self, textDirection:PySide2.QtWidgets.QProgressBar.Direction) -> None: ... + def setTextVisible(self, visible:bool) -> None: ... + def setValue(self, value:int) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def text(self) -> str: ... + def textDirection(self) -> PySide2.QtWidgets.QProgressBar.Direction: ... + def value(self) -> int: ... + + +class QProgressDialog(PySide2.QtWidgets.QDialog): + + @typing.overload + def __init__(self, labelText:str, cancelButtonText:str, minimum:int, maximum:int, parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., flags:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., flags:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + + def autoClose(self) -> bool: ... + def autoReset(self) -> bool: ... + def cancel(self) -> None: ... + def changeEvent(self, event:PySide2.QtCore.QEvent) -> None: ... + def closeEvent(self, event:PySide2.QtGui.QCloseEvent) -> None: ... + def forceShow(self) -> None: ... + def labelText(self) -> str: ... + def maximum(self) -> int: ... + def minimum(self) -> int: ... + def minimumDuration(self) -> int: ... + @typing.overload + def open(self) -> None: ... + @typing.overload + def open(self, receiver:PySide2.QtCore.QObject, member:bytes) -> None: ... + def reset(self) -> None: ... + def resizeEvent(self, event:PySide2.QtGui.QResizeEvent) -> None: ... + def setAutoClose(self, close:bool) -> None: ... + def setAutoReset(self, reset:bool) -> None: ... + def setBar(self, bar:PySide2.QtWidgets.QProgressBar) -> None: ... + def setCancelButton(self, button:PySide2.QtWidgets.QPushButton) -> None: ... + def setCancelButtonText(self, text:str) -> None: ... + def setLabel(self, label:PySide2.QtWidgets.QLabel) -> None: ... + def setLabelText(self, text:str) -> None: ... + def setMaximum(self, maximum:int) -> None: ... + def setMinimum(self, minimum:int) -> None: ... + def setMinimumDuration(self, ms:int) -> None: ... + def setRange(self, minimum:int, maximum:int) -> None: ... + def setValue(self, progress:int) -> None: ... + def showEvent(self, event:PySide2.QtGui.QShowEvent) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def value(self) -> int: ... + def wasCanceled(self) -> bool: ... + + +class QProxyStyle(PySide2.QtWidgets.QCommonStyle): + + @typing.overload + def __init__(self, key:str) -> None: ... + @typing.overload + def __init__(self, style:typing.Optional[PySide2.QtWidgets.QStyle]=...) -> None: ... + + def baseStyle(self) -> PySide2.QtWidgets.QStyle: ... + def drawComplexControl(self, control:PySide2.QtWidgets.QStyle.ComplexControl, option:PySide2.QtWidgets.QStyleOptionComplex, painter:PySide2.QtGui.QPainter, widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + def drawControl(self, element:PySide2.QtWidgets.QStyle.ControlElement, option:PySide2.QtWidgets.QStyleOption, painter:PySide2.QtGui.QPainter, widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + def drawItemPixmap(self, painter:PySide2.QtGui.QPainter, rect:PySide2.QtCore.QRect, alignment:int, pixmap:PySide2.QtGui.QPixmap) -> None: ... + def drawItemText(self, painter:PySide2.QtGui.QPainter, rect:PySide2.QtCore.QRect, flags:int, pal:PySide2.QtGui.QPalette, enabled:bool, text:str, textRole:PySide2.QtGui.QPalette.ColorRole=...) -> None: ... + def drawPrimitive(self, element:PySide2.QtWidgets.QStyle.PrimitiveElement, option:PySide2.QtWidgets.QStyleOption, painter:PySide2.QtGui.QPainter, widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def generatedIconPixmap(self, iconMode:PySide2.QtGui.QIcon.Mode, pixmap:PySide2.QtGui.QPixmap, opt:PySide2.QtWidgets.QStyleOption) -> PySide2.QtGui.QPixmap: ... + def hitTestComplexControl(self, control:PySide2.QtWidgets.QStyle.ComplexControl, option:PySide2.QtWidgets.QStyleOptionComplex, pos:PySide2.QtCore.QPoint, widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> PySide2.QtWidgets.QStyle.SubControl: ... + def itemPixmapRect(self, r:PySide2.QtCore.QRect, flags:int, pixmap:PySide2.QtGui.QPixmap) -> PySide2.QtCore.QRect: ... + def itemTextRect(self, fm:PySide2.QtGui.QFontMetrics, r:PySide2.QtCore.QRect, flags:int, enabled:bool, text:str) -> PySide2.QtCore.QRect: ... + def layoutSpacing(self, control1:PySide2.QtWidgets.QSizePolicy.ControlType, control2:PySide2.QtWidgets.QSizePolicy.ControlType, orientation:PySide2.QtCore.Qt.Orientation, option:typing.Optional[PySide2.QtWidgets.QStyleOption]=..., widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> int: ... + def pixelMetric(self, metric:PySide2.QtWidgets.QStyle.PixelMetric, option:typing.Optional[PySide2.QtWidgets.QStyleOption]=..., widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> int: ... + @typing.overload + def polish(self, app:PySide2.QtWidgets.QApplication) -> None: ... + @typing.overload + def polish(self, pal:PySide2.QtGui.QPalette) -> None: ... + @typing.overload + def polish(self, widget:PySide2.QtWidgets.QWidget) -> None: ... + def setBaseStyle(self, style:PySide2.QtWidgets.QStyle) -> None: ... + def sizeFromContents(self, type:PySide2.QtWidgets.QStyle.ContentsType, option:PySide2.QtWidgets.QStyleOption, size:PySide2.QtCore.QSize, widget:PySide2.QtWidgets.QWidget) -> PySide2.QtCore.QSize: ... + def standardIcon(self, standardIcon:PySide2.QtWidgets.QStyle.StandardPixmap, option:typing.Optional[PySide2.QtWidgets.QStyleOption]=..., widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> PySide2.QtGui.QIcon: ... + def standardPalette(self) -> PySide2.QtGui.QPalette: ... + def standardPixmap(self, standardPixmap:PySide2.QtWidgets.QStyle.StandardPixmap, opt:PySide2.QtWidgets.QStyleOption, widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> PySide2.QtGui.QPixmap: ... + def styleHint(self, hint:PySide2.QtWidgets.QStyle.StyleHint, option:typing.Optional[PySide2.QtWidgets.QStyleOption]=..., widget:typing.Optional[PySide2.QtWidgets.QWidget]=..., returnData:typing.Optional[PySide2.QtWidgets.QStyleHintReturn]=...) -> int: ... + def subControlRect(self, cc:PySide2.QtWidgets.QStyle.ComplexControl, opt:PySide2.QtWidgets.QStyleOptionComplex, sc:PySide2.QtWidgets.QStyle.SubControl, widget:PySide2.QtWidgets.QWidget) -> PySide2.QtCore.QRect: ... + def subElementRect(self, element:PySide2.QtWidgets.QStyle.SubElement, option:PySide2.QtWidgets.QStyleOption, widget:PySide2.QtWidgets.QWidget) -> PySide2.QtCore.QRect: ... + @typing.overload + def unpolish(self, app:PySide2.QtWidgets.QApplication) -> None: ... + @typing.overload + def unpolish(self, application:PySide2.QtWidgets.QApplication) -> None: ... + @typing.overload + def unpolish(self, widget:PySide2.QtWidgets.QWidget) -> None: ... + + +class QPushButton(PySide2.QtWidgets.QAbstractButton): + + @typing.overload + def __init__(self, icon:PySide2.QtGui.QIcon, text:str, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, text:str, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def autoDefault(self) -> bool: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def focusInEvent(self, arg__1:PySide2.QtGui.QFocusEvent) -> None: ... + def focusOutEvent(self, arg__1:PySide2.QtGui.QFocusEvent) -> None: ... + def hitButton(self, pos:PySide2.QtCore.QPoint) -> bool: ... + def initStyleOption(self, option:PySide2.QtWidgets.QStyleOptionButton) -> None: ... + def isDefault(self) -> bool: ... + def isFlat(self) -> bool: ... + def keyPressEvent(self, arg__1:PySide2.QtGui.QKeyEvent) -> None: ... + def menu(self) -> PySide2.QtWidgets.QMenu: ... + def minimumSizeHint(self) -> PySide2.QtCore.QSize: ... + def paintEvent(self, arg__1:PySide2.QtGui.QPaintEvent) -> None: ... + def setAutoDefault(self, arg__1:bool) -> None: ... + def setDefault(self, arg__1:bool) -> None: ... + def setFlat(self, arg__1:bool) -> None: ... + def setMenu(self, menu:PySide2.QtWidgets.QMenu) -> None: ... + def showMenu(self) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + + +class QRadioButton(PySide2.QtWidgets.QAbstractButton): + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, text:str, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def hitButton(self, arg__1:PySide2.QtCore.QPoint) -> bool: ... + def initStyleOption(self, button:PySide2.QtWidgets.QStyleOptionButton) -> None: ... + def minimumSizeHint(self) -> PySide2.QtCore.QSize: ... + def mouseMoveEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def paintEvent(self, arg__1:PySide2.QtGui.QPaintEvent) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + + +class QRubberBand(PySide2.QtWidgets.QWidget): + Line : QRubberBand = ... # 0x0 + Rectangle : QRubberBand = ... # 0x1 + + class Shape(object): + Line : QRubberBand.Shape = ... # 0x0 + Rectangle : QRubberBand.Shape = ... # 0x1 + + def __init__(self, arg__1:PySide2.QtWidgets.QRubberBand.Shape, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def changeEvent(self, arg__1:PySide2.QtCore.QEvent) -> None: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def initStyleOption(self, option:PySide2.QtWidgets.QStyleOptionRubberBand) -> None: ... + @typing.overload + def move(self, p:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + def move(self, x:int, y:int) -> None: ... + def moveEvent(self, arg__1:PySide2.QtGui.QMoveEvent) -> None: ... + def paintEvent(self, arg__1:PySide2.QtGui.QPaintEvent) -> None: ... + @typing.overload + def resize(self, s:PySide2.QtCore.QSize) -> None: ... + @typing.overload + def resize(self, w:int, h:int) -> None: ... + def resizeEvent(self, arg__1:PySide2.QtGui.QResizeEvent) -> None: ... + @typing.overload + def setGeometry(self, r:PySide2.QtCore.QRect) -> None: ... + @typing.overload + def setGeometry(self, x:int, y:int, w:int, h:int) -> None: ... + def shape(self) -> PySide2.QtWidgets.QRubberBand.Shape: ... + def showEvent(self, arg__1:PySide2.QtGui.QShowEvent) -> None: ... + + +class QScrollArea(PySide2.QtWidgets.QAbstractScrollArea): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def alignment(self) -> PySide2.QtCore.Qt.Alignment: ... + def ensureVisible(self, x:int, y:int, xmargin:int=..., ymargin:int=...) -> None: ... + def ensureWidgetVisible(self, childWidget:PySide2.QtWidgets.QWidget, xmargin:int=..., ymargin:int=...) -> None: ... + def event(self, arg__1:PySide2.QtCore.QEvent) -> bool: ... + def eventFilter(self, arg__1:PySide2.QtCore.QObject, arg__2:PySide2.QtCore.QEvent) -> bool: ... + def focusNextPrevChild(self, next:bool) -> bool: ... + def resizeEvent(self, arg__1:PySide2.QtGui.QResizeEvent) -> None: ... + def scrollContentsBy(self, dx:int, dy:int) -> None: ... + def setAlignment(self, arg__1:PySide2.QtCore.Qt.Alignment) -> None: ... + def setWidget(self, widget:PySide2.QtWidgets.QWidget) -> None: ... + def setWidgetResizable(self, resizable:bool) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def takeWidget(self) -> PySide2.QtWidgets.QWidget: ... + def viewportSizeHint(self) -> PySide2.QtCore.QSize: ... + def widget(self) -> PySide2.QtWidgets.QWidget: ... + def widgetResizable(self) -> bool: ... + + +class QScrollBar(PySide2.QtWidgets.QAbstractSlider): + + @typing.overload + def __init__(self, arg__1:PySide2.QtCore.Qt.Orientation, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def contextMenuEvent(self, arg__1:PySide2.QtGui.QContextMenuEvent) -> None: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def hideEvent(self, arg__1:PySide2.QtGui.QHideEvent) -> None: ... + def initStyleOption(self, option:PySide2.QtWidgets.QStyleOptionSlider) -> None: ... + def mouseMoveEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def mousePressEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def paintEvent(self, arg__1:PySide2.QtGui.QPaintEvent) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def sliderChange(self, change:PySide2.QtWidgets.QAbstractSlider.SliderChange) -> None: ... + def wheelEvent(self, arg__1:PySide2.QtGui.QWheelEvent) -> None: ... + + +class QScroller(PySide2.QtCore.QObject): + Inactive : QScroller = ... # 0x0 + TouchGesture : QScroller = ... # 0x0 + InputPress : QScroller = ... # 0x1 + LeftMouseButtonGesture : QScroller = ... # 0x1 + Pressed : QScroller = ... # 0x1 + Dragging : QScroller = ... # 0x2 + InputMove : QScroller = ... # 0x2 + RightMouseButtonGesture : QScroller = ... # 0x2 + InputRelease : QScroller = ... # 0x3 + MiddleMouseButtonGesture : QScroller = ... # 0x3 + Scrolling : QScroller = ... # 0x3 + + class Input(object): + InputPress : QScroller.Input = ... # 0x1 + InputMove : QScroller.Input = ... # 0x2 + InputRelease : QScroller.Input = ... # 0x3 + + class ScrollerGestureType(object): + TouchGesture : QScroller.ScrollerGestureType = ... # 0x0 + LeftMouseButtonGesture : QScroller.ScrollerGestureType = ... # 0x1 + RightMouseButtonGesture : QScroller.ScrollerGestureType = ... # 0x2 + MiddleMouseButtonGesture : QScroller.ScrollerGestureType = ... # 0x3 + + class State(object): + Inactive : QScroller.State = ... # 0x0 + Pressed : QScroller.State = ... # 0x1 + Dragging : QScroller.State = ... # 0x2 + Scrolling : QScroller.State = ... # 0x3 + @staticmethod + def activeScrollers() -> typing.List: ... + @typing.overload + def ensureVisible(self, rect:PySide2.QtCore.QRectF, xmargin:float, ymargin:float) -> None: ... + @typing.overload + def ensureVisible(self, rect:PySide2.QtCore.QRectF, xmargin:float, ymargin:float, scrollTime:int) -> None: ... + def finalPosition(self) -> PySide2.QtCore.QPointF: ... + @staticmethod + def grabGesture(target:PySide2.QtCore.QObject, gestureType:PySide2.QtWidgets.QScroller.ScrollerGestureType=...) -> PySide2.QtCore.Qt.GestureType: ... + @staticmethod + def grabbedGesture(target:PySide2.QtCore.QObject) -> PySide2.QtCore.Qt.GestureType: ... + def handleInput(self, input:PySide2.QtWidgets.QScroller.Input, position:PySide2.QtCore.QPointF, timestamp:int=...) -> bool: ... + @staticmethod + def hasScroller(target:PySide2.QtCore.QObject) -> bool: ... + def pixelPerMeter(self) -> PySide2.QtCore.QPointF: ... + def resendPrepareEvent(self) -> None: ... + @typing.overload + def scrollTo(self, pos:PySide2.QtCore.QPointF) -> None: ... + @typing.overload + def scrollTo(self, pos:PySide2.QtCore.QPointF, scrollTime:int) -> None: ... + @staticmethod + def scroller(target:PySide2.QtCore.QObject) -> PySide2.QtWidgets.QScroller: ... + def scrollerProperties(self) -> PySide2.QtWidgets.QScrollerProperties: ... + def setScrollerProperties(self, prop:PySide2.QtWidgets.QScrollerProperties) -> None: ... + @typing.overload + def setSnapPositionsX(self, first:float, interval:float) -> None: ... + @typing.overload + def setSnapPositionsX(self, positions:typing.Sequence) -> None: ... + @typing.overload + def setSnapPositionsY(self, first:float, interval:float) -> None: ... + @typing.overload + def setSnapPositionsY(self, positions:typing.Sequence) -> None: ... + def state(self) -> PySide2.QtWidgets.QScroller.State: ... + def stop(self) -> None: ... + def target(self) -> PySide2.QtCore.QObject: ... + @staticmethod + def ungrabGesture(target:PySide2.QtCore.QObject) -> None: ... + def velocity(self) -> PySide2.QtCore.QPointF: ... + + +class QScrollerProperties(Shiboken.Object): + MousePressEventDelay : QScrollerProperties = ... # 0x0 + OvershootWhenScrollable : QScrollerProperties = ... # 0x0 + Standard : QScrollerProperties = ... # 0x0 + DragStartDistance : QScrollerProperties = ... # 0x1 + Fps60 : QScrollerProperties = ... # 0x1 + OvershootAlwaysOff : QScrollerProperties = ... # 0x1 + DragVelocitySmoothingFactor: QScrollerProperties = ... # 0x2 + Fps30 : QScrollerProperties = ... # 0x2 + OvershootAlwaysOn : QScrollerProperties = ... # 0x2 + AxisLockThreshold : QScrollerProperties = ... # 0x3 + Fps20 : QScrollerProperties = ... # 0x3 + ScrollingCurve : QScrollerProperties = ... # 0x4 + DecelerationFactor : QScrollerProperties = ... # 0x5 + MinimumVelocity : QScrollerProperties = ... # 0x6 + MaximumVelocity : QScrollerProperties = ... # 0x7 + MaximumClickThroughVelocity: QScrollerProperties = ... # 0x8 + AcceleratingFlickMaximumTime: QScrollerProperties = ... # 0x9 + AcceleratingFlickSpeedupFactor: QScrollerProperties = ... # 0xa + SnapPositionRatio : QScrollerProperties = ... # 0xb + SnapTime : QScrollerProperties = ... # 0xc + OvershootDragResistanceFactor: QScrollerProperties = ... # 0xd + OvershootDragDistanceFactor: QScrollerProperties = ... # 0xe + OvershootScrollDistanceFactor: QScrollerProperties = ... # 0xf + OvershootScrollTime : QScrollerProperties = ... # 0x10 + HorizontalOvershootPolicy: QScrollerProperties = ... # 0x11 + VerticalOvershootPolicy : QScrollerProperties = ... # 0x12 + FrameRate : QScrollerProperties = ... # 0x13 + ScrollMetricCount : QScrollerProperties = ... # 0x14 + + class FrameRates(object): + Standard : QScrollerProperties.FrameRates = ... # 0x0 + Fps60 : QScrollerProperties.FrameRates = ... # 0x1 + Fps30 : QScrollerProperties.FrameRates = ... # 0x2 + Fps20 : QScrollerProperties.FrameRates = ... # 0x3 + + class OvershootPolicy(object): + OvershootWhenScrollable : QScrollerProperties.OvershootPolicy = ... # 0x0 + OvershootAlwaysOff : QScrollerProperties.OvershootPolicy = ... # 0x1 + OvershootAlwaysOn : QScrollerProperties.OvershootPolicy = ... # 0x2 + + class ScrollMetric(object): + MousePressEventDelay : QScrollerProperties.ScrollMetric = ... # 0x0 + DragStartDistance : QScrollerProperties.ScrollMetric = ... # 0x1 + DragVelocitySmoothingFactor: QScrollerProperties.ScrollMetric = ... # 0x2 + AxisLockThreshold : QScrollerProperties.ScrollMetric = ... # 0x3 + ScrollingCurve : QScrollerProperties.ScrollMetric = ... # 0x4 + DecelerationFactor : QScrollerProperties.ScrollMetric = ... # 0x5 + MinimumVelocity : QScrollerProperties.ScrollMetric = ... # 0x6 + MaximumVelocity : QScrollerProperties.ScrollMetric = ... # 0x7 + MaximumClickThroughVelocity: QScrollerProperties.ScrollMetric = ... # 0x8 + AcceleratingFlickMaximumTime: QScrollerProperties.ScrollMetric = ... # 0x9 + AcceleratingFlickSpeedupFactor: QScrollerProperties.ScrollMetric = ... # 0xa + SnapPositionRatio : QScrollerProperties.ScrollMetric = ... # 0xb + SnapTime : QScrollerProperties.ScrollMetric = ... # 0xc + OvershootDragResistanceFactor: QScrollerProperties.ScrollMetric = ... # 0xd + OvershootDragDistanceFactor: QScrollerProperties.ScrollMetric = ... # 0xe + OvershootScrollDistanceFactor: QScrollerProperties.ScrollMetric = ... # 0xf + OvershootScrollTime : QScrollerProperties.ScrollMetric = ... # 0x10 + HorizontalOvershootPolicy: QScrollerProperties.ScrollMetric = ... # 0x11 + VerticalOvershootPolicy : QScrollerProperties.ScrollMetric = ... # 0x12 + FrameRate : QScrollerProperties.ScrollMetric = ... # 0x13 + ScrollMetricCount : QScrollerProperties.ScrollMetric = ... # 0x14 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, sp:PySide2.QtWidgets.QScrollerProperties) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def scrollMetric(self, metric:PySide2.QtWidgets.QScrollerProperties.ScrollMetric) -> typing.Any: ... + @staticmethod + def setDefaultScrollerProperties(sp:PySide2.QtWidgets.QScrollerProperties) -> None: ... + def setScrollMetric(self, metric:PySide2.QtWidgets.QScrollerProperties.ScrollMetric, value:typing.Any) -> None: ... + @staticmethod + def unsetDefaultScrollerProperties() -> None: ... + + +class QShortcut(PySide2.QtCore.QObject): + + @typing.overload + def __init__(self, arg__1:PySide2.QtGui.QKeySequence, arg__2:PySide2.QtWidgets.QWidget, arg__3:typing.Callable, arg__4:PySide2.QtCore.Qt.ShortcutContext=...) -> None: ... + @typing.overload + def __init__(self, key:PySide2.QtGui.QKeySequence, parent:PySide2.QtWidgets.QWidget, member:typing.Optional[bytes]=..., ambiguousMember:typing.Optional[bytes]=..., shortcutContext:PySide2.QtCore.Qt.ShortcutContext=...) -> None: ... + @typing.overload + def __init__(self, parent:PySide2.QtWidgets.QWidget) -> None: ... + + def autoRepeat(self) -> bool: ... + def context(self) -> PySide2.QtCore.Qt.ShortcutContext: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def id(self) -> int: ... + def isEnabled(self) -> bool: ... + def key(self) -> PySide2.QtGui.QKeySequence: ... + def parentWidget(self) -> PySide2.QtWidgets.QWidget: ... + def setAutoRepeat(self, on:bool) -> None: ... + def setContext(self, context:PySide2.QtCore.Qt.ShortcutContext) -> None: ... + def setEnabled(self, enable:bool) -> None: ... + def setKey(self, key:PySide2.QtGui.QKeySequence) -> None: ... + def setWhatsThis(self, text:str) -> None: ... + def whatsThis(self) -> str: ... + + +class QSizeGrip(PySide2.QtWidgets.QWidget): + + def __init__(self, parent:PySide2.QtWidgets.QWidget) -> None: ... + + def event(self, arg__1:PySide2.QtCore.QEvent) -> bool: ... + def eventFilter(self, arg__1:PySide2.QtCore.QObject, arg__2:PySide2.QtCore.QEvent) -> bool: ... + def hideEvent(self, hideEvent:PySide2.QtGui.QHideEvent) -> None: ... + def mouseMoveEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def mousePressEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, mouseEvent:PySide2.QtGui.QMouseEvent) -> None: ... + def moveEvent(self, moveEvent:PySide2.QtGui.QMoveEvent) -> None: ... + def paintEvent(self, arg__1:PySide2.QtGui.QPaintEvent) -> None: ... + def setVisible(self, arg__1:bool) -> None: ... + def showEvent(self, showEvent:PySide2.QtGui.QShowEvent) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + + +class QSizePolicy(Shiboken.Object): + Fixed : QSizePolicy = ... # 0x0 + DefaultType : QSizePolicy = ... # 0x1 + GrowFlag : QSizePolicy = ... # 0x1 + Minimum : QSizePolicy = ... # 0x1 + ButtonBox : QSizePolicy = ... # 0x2 + ExpandFlag : QSizePolicy = ... # 0x2 + MinimumExpanding : QSizePolicy = ... # 0x3 + CheckBox : QSizePolicy = ... # 0x4 + Maximum : QSizePolicy = ... # 0x4 + ShrinkFlag : QSizePolicy = ... # 0x4 + Preferred : QSizePolicy = ... # 0x5 + Expanding : QSizePolicy = ... # 0x7 + ComboBox : QSizePolicy = ... # 0x8 + IgnoreFlag : QSizePolicy = ... # 0x8 + Ignored : QSizePolicy = ... # 0xd + Frame : QSizePolicy = ... # 0x10 + GroupBox : QSizePolicy = ... # 0x20 + Label : QSizePolicy = ... # 0x40 + Line : QSizePolicy = ... # 0x80 + LineEdit : QSizePolicy = ... # 0x100 + PushButton : QSizePolicy = ... # 0x200 + RadioButton : QSizePolicy = ... # 0x400 + Slider : QSizePolicy = ... # 0x800 + SpinBox : QSizePolicy = ... # 0x1000 + TabWidget : QSizePolicy = ... # 0x2000 + ToolButton : QSizePolicy = ... # 0x4000 + + class ControlType(object): + DefaultType : QSizePolicy.ControlType = ... # 0x1 + ButtonBox : QSizePolicy.ControlType = ... # 0x2 + CheckBox : QSizePolicy.ControlType = ... # 0x4 + ComboBox : QSizePolicy.ControlType = ... # 0x8 + Frame : QSizePolicy.ControlType = ... # 0x10 + GroupBox : QSizePolicy.ControlType = ... # 0x20 + Label : QSizePolicy.ControlType = ... # 0x40 + Line : QSizePolicy.ControlType = ... # 0x80 + LineEdit : QSizePolicy.ControlType = ... # 0x100 + PushButton : QSizePolicy.ControlType = ... # 0x200 + RadioButton : QSizePolicy.ControlType = ... # 0x400 + Slider : QSizePolicy.ControlType = ... # 0x800 + SpinBox : QSizePolicy.ControlType = ... # 0x1000 + TabWidget : QSizePolicy.ControlType = ... # 0x2000 + ToolButton : QSizePolicy.ControlType = ... # 0x4000 + + class ControlTypes(object): ... + + class Policy(object): + Fixed : QSizePolicy.Policy = ... # 0x0 + Minimum : QSizePolicy.Policy = ... # 0x1 + MinimumExpanding : QSizePolicy.Policy = ... # 0x3 + Maximum : QSizePolicy.Policy = ... # 0x4 + Preferred : QSizePolicy.Policy = ... # 0x5 + Expanding : QSizePolicy.Policy = ... # 0x7 + Ignored : QSizePolicy.Policy = ... # 0xd + + class PolicyFlag(object): + GrowFlag : QSizePolicy.PolicyFlag = ... # 0x1 + ExpandFlag : QSizePolicy.PolicyFlag = ... # 0x2 + ShrinkFlag : QSizePolicy.PolicyFlag = ... # 0x4 + IgnoreFlag : QSizePolicy.PolicyFlag = ... # 0x8 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, horizontal:PySide2.QtWidgets.QSizePolicy.Policy, vertical:PySide2.QtWidgets.QSizePolicy.Policy, type:PySide2.QtWidgets.QSizePolicy.ControlType=...) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __lshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __rshift__(self, arg__1:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def controlType(self) -> PySide2.QtWidgets.QSizePolicy.ControlType: ... + def expandingDirections(self) -> PySide2.QtCore.Qt.Orientations: ... + def hasHeightForWidth(self) -> bool: ... + def hasWidthForHeight(self) -> bool: ... + def horizontalPolicy(self) -> PySide2.QtWidgets.QSizePolicy.Policy: ... + def horizontalStretch(self) -> int: ... + def retainSizeWhenHidden(self) -> bool: ... + def setControlType(self, type:PySide2.QtWidgets.QSizePolicy.ControlType) -> None: ... + def setHeightForWidth(self, b:bool) -> None: ... + def setHorizontalPolicy(self, d:PySide2.QtWidgets.QSizePolicy.Policy) -> None: ... + def setHorizontalStretch(self, stretchFactor:int) -> None: ... + def setRetainSizeWhenHidden(self, retainSize:bool) -> None: ... + def setVerticalPolicy(self, d:PySide2.QtWidgets.QSizePolicy.Policy) -> None: ... + def setVerticalStretch(self, stretchFactor:int) -> None: ... + def setWidthForHeight(self, b:bool) -> None: ... + def transpose(self) -> None: ... + def transposed(self) -> PySide2.QtWidgets.QSizePolicy: ... + def verticalPolicy(self) -> PySide2.QtWidgets.QSizePolicy.Policy: ... + def verticalStretch(self) -> int: ... + + +class QSlider(PySide2.QtWidgets.QAbstractSlider): + NoTicks : QSlider = ... # 0x0 + TicksAbove : QSlider = ... # 0x1 + TicksLeft : QSlider = ... # 0x1 + TicksBelow : QSlider = ... # 0x2 + TicksRight : QSlider = ... # 0x2 + TicksBothSides : QSlider = ... # 0x3 + + class TickPosition(object): + NoTicks : QSlider.TickPosition = ... # 0x0 + TicksAbove : QSlider.TickPosition = ... # 0x1 + TicksLeft : QSlider.TickPosition = ... # 0x1 + TicksBelow : QSlider.TickPosition = ... # 0x2 + TicksRight : QSlider.TickPosition = ... # 0x2 + TicksBothSides : QSlider.TickPosition = ... # 0x3 + + @typing.overload + def __init__(self, orientation:PySide2.QtCore.Qt.Orientation, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def initStyleOption(self, option:PySide2.QtWidgets.QStyleOptionSlider) -> None: ... + def minimumSizeHint(self) -> PySide2.QtCore.QSize: ... + def mouseMoveEvent(self, ev:PySide2.QtGui.QMouseEvent) -> None: ... + def mousePressEvent(self, ev:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, ev:PySide2.QtGui.QMouseEvent) -> None: ... + def paintEvent(self, ev:PySide2.QtGui.QPaintEvent) -> None: ... + def setTickInterval(self, ti:int) -> None: ... + def setTickPosition(self, position:PySide2.QtWidgets.QSlider.TickPosition) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def tickInterval(self) -> int: ... + def tickPosition(self) -> PySide2.QtWidgets.QSlider.TickPosition: ... + + +class QSpacerItem(PySide2.QtWidgets.QLayoutItem): + + def __init__(self, w:int, h:int, hData:PySide2.QtWidgets.QSizePolicy.Policy=..., vData:PySide2.QtWidgets.QSizePolicy.Policy=...) -> None: ... + + def changeSize(self, w:int, h:int, hData:PySide2.QtWidgets.QSizePolicy.Policy=..., vData:PySide2.QtWidgets.QSizePolicy.Policy=...) -> None: ... + def expandingDirections(self) -> PySide2.QtCore.Qt.Orientations: ... + def geometry(self) -> PySide2.QtCore.QRect: ... + def isEmpty(self) -> bool: ... + def maximumSize(self) -> PySide2.QtCore.QSize: ... + def minimumSize(self) -> PySide2.QtCore.QSize: ... + def setGeometry(self, arg__1:PySide2.QtCore.QRect) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def sizePolicy(self) -> PySide2.QtWidgets.QSizePolicy: ... + def spacerItem(self) -> PySide2.QtWidgets.QSpacerItem: ... + + +class QSpinBox(PySide2.QtWidgets.QAbstractSpinBox): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def cleanText(self) -> str: ... + def displayIntegerBase(self) -> int: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def fixup(self, str:str) -> None: ... + def maximum(self) -> int: ... + def minimum(self) -> int: ... + def prefix(self) -> str: ... + def setDisplayIntegerBase(self, base:int) -> None: ... + def setMaximum(self, max:int) -> None: ... + def setMinimum(self, min:int) -> None: ... + def setPrefix(self, prefix:str) -> None: ... + def setRange(self, min:int, max:int) -> None: ... + def setSingleStep(self, val:int) -> None: ... + def setStepType(self, stepType:PySide2.QtWidgets.QAbstractSpinBox.StepType) -> None: ... + def setSuffix(self, suffix:str) -> None: ... + def setValue(self, val:int) -> None: ... + def singleStep(self) -> int: ... + def stepType(self) -> PySide2.QtWidgets.QAbstractSpinBox.StepType: ... + def suffix(self) -> str: ... + def textFromValue(self, val:int) -> str: ... + def validate(self, input:str, pos:int) -> PySide2.QtGui.QValidator.State: ... + def value(self) -> int: ... + def valueFromText(self, text:str) -> int: ... + + +class QSplashScreen(PySide2.QtWidgets.QWidget): + + @typing.overload + def __init__(self, parent:PySide2.QtWidgets.QWidget, pixmap:PySide2.QtGui.QPixmap=..., f:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + @typing.overload + def __init__(self, pixmap:PySide2.QtGui.QPixmap=..., f:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + @typing.overload + def __init__(self, screen:PySide2.QtGui.QScreen, pixmap:PySide2.QtGui.QPixmap=..., f:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + + def clearMessage(self) -> None: ... + def drawContents(self, painter:PySide2.QtGui.QPainter) -> None: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def finish(self, w:PySide2.QtWidgets.QWidget) -> None: ... + def message(self) -> str: ... + def mousePressEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def pixmap(self) -> PySide2.QtGui.QPixmap: ... + def setPixmap(self, pixmap:PySide2.QtGui.QPixmap) -> None: ... + def showMessage(self, message:str, alignment:int=..., color:PySide2.QtGui.QColor=...) -> None: ... + + +class QSplitter(PySide2.QtWidgets.QFrame): + + @typing.overload + def __init__(self, arg__1:PySide2.QtCore.Qt.Orientation, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def __lshift__(self, arg__1:PySide2.QtCore.QTextStream) -> PySide2.QtCore.QTextStream: ... + def __rshift__(self, arg__1:PySide2.QtCore.QTextStream) -> PySide2.QtCore.QTextStream: ... + def addWidget(self, widget:PySide2.QtWidgets.QWidget) -> None: ... + def changeEvent(self, arg__1:PySide2.QtCore.QEvent) -> None: ... + def childEvent(self, arg__1:PySide2.QtCore.QChildEvent) -> None: ... + def childrenCollapsible(self) -> bool: ... + def closestLegalPosition(self, arg__1:int, arg__2:int) -> int: ... + def count(self) -> int: ... + def createHandle(self) -> PySide2.QtWidgets.QSplitterHandle: ... + def event(self, arg__1:PySide2.QtCore.QEvent) -> bool: ... + def getRange(self, index:int) -> typing.Tuple: ... + def handle(self, index:int) -> PySide2.QtWidgets.QSplitterHandle: ... + def handleWidth(self) -> int: ... + def indexOf(self, w:PySide2.QtWidgets.QWidget) -> int: ... + def insertWidget(self, index:int, widget:PySide2.QtWidgets.QWidget) -> None: ... + def isCollapsible(self, index:int) -> bool: ... + def minimumSizeHint(self) -> PySide2.QtCore.QSize: ... + def moveSplitter(self, pos:int, index:int) -> None: ... + def opaqueResize(self) -> bool: ... + def orientation(self) -> PySide2.QtCore.Qt.Orientation: ... + def refresh(self) -> None: ... + def replaceWidget(self, index:int, widget:PySide2.QtWidgets.QWidget) -> PySide2.QtWidgets.QWidget: ... + def resizeEvent(self, arg__1:PySide2.QtGui.QResizeEvent) -> None: ... + def restoreState(self, state:PySide2.QtCore.QByteArray) -> bool: ... + def saveState(self) -> PySide2.QtCore.QByteArray: ... + def setChildrenCollapsible(self, arg__1:bool) -> None: ... + def setCollapsible(self, index:int, arg__2:bool) -> None: ... + def setHandleWidth(self, arg__1:int) -> None: ... + def setOpaqueResize(self, opaque:bool=...) -> None: ... + def setOrientation(self, arg__1:PySide2.QtCore.Qt.Orientation) -> None: ... + def setRubberBand(self, position:int) -> None: ... + def setSizes(self, list:typing.Sequence) -> None: ... + def setStretchFactor(self, index:int, stretch:int) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def sizes(self) -> typing.List: ... + def widget(self, index:int) -> PySide2.QtWidgets.QWidget: ... + + +class QSplitterHandle(PySide2.QtWidgets.QWidget): + + def __init__(self, o:PySide2.QtCore.Qt.Orientation, parent:PySide2.QtWidgets.QSplitter) -> None: ... + + def closestLegalPosition(self, p:int) -> int: ... + def event(self, arg__1:PySide2.QtCore.QEvent) -> bool: ... + def mouseMoveEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def mousePressEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def moveSplitter(self, p:int) -> None: ... + def opaqueResize(self) -> bool: ... + def orientation(self) -> PySide2.QtCore.Qt.Orientation: ... + def paintEvent(self, arg__1:PySide2.QtGui.QPaintEvent) -> None: ... + def resizeEvent(self, arg__1:PySide2.QtGui.QResizeEvent) -> None: ... + def setOrientation(self, o:PySide2.QtCore.Qt.Orientation) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def splitter(self) -> PySide2.QtWidgets.QSplitter: ... + + +class QStackedLayout(PySide2.QtWidgets.QLayout): + StackOne : QStackedLayout = ... # 0x0 + StackAll : QStackedLayout = ... # 0x1 + + class StackingMode(object): + StackOne : QStackedLayout.StackingMode = ... # 0x0 + StackAll : QStackedLayout.StackingMode = ... # 0x1 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, parent:PySide2.QtWidgets.QWidget) -> None: ... + @typing.overload + def __init__(self, parentLayout:PySide2.QtWidgets.QLayout) -> None: ... + + def addItem(self, item:PySide2.QtWidgets.QLayoutItem) -> None: ... + def addWidget(self, w:PySide2.QtWidgets.QWidget) -> int: ... + def count(self) -> int: ... + def currentIndex(self) -> int: ... + def currentWidget(self) -> PySide2.QtWidgets.QWidget: ... + def hasHeightForWidth(self) -> bool: ... + def heightForWidth(self, width:int) -> int: ... + def insertWidget(self, index:int, w:PySide2.QtWidgets.QWidget) -> int: ... + def itemAt(self, arg__1:int) -> PySide2.QtWidgets.QLayoutItem: ... + def minimumSize(self) -> PySide2.QtCore.QSize: ... + def setCurrentIndex(self, index:int) -> None: ... + def setCurrentWidget(self, w:PySide2.QtWidgets.QWidget) -> None: ... + def setGeometry(self, rect:PySide2.QtCore.QRect) -> None: ... + def setStackingMode(self, stackingMode:PySide2.QtWidgets.QStackedLayout.StackingMode) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def stackingMode(self) -> PySide2.QtWidgets.QStackedLayout.StackingMode: ... + def takeAt(self, arg__1:int) -> PySide2.QtWidgets.QLayoutItem: ... + @typing.overload + def widget(self) -> PySide2.QtWidgets.QWidget: ... + @typing.overload + def widget(self, arg__1:int) -> PySide2.QtWidgets.QWidget: ... + + +class QStackedWidget(PySide2.QtWidgets.QFrame): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def addWidget(self, w:PySide2.QtWidgets.QWidget) -> int: ... + def count(self) -> int: ... + def currentIndex(self) -> int: ... + def currentWidget(self) -> PySide2.QtWidgets.QWidget: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def indexOf(self, arg__1:PySide2.QtWidgets.QWidget) -> int: ... + def insertWidget(self, index:int, w:PySide2.QtWidgets.QWidget) -> int: ... + def removeWidget(self, w:PySide2.QtWidgets.QWidget) -> None: ... + def setCurrentIndex(self, index:int) -> None: ... + def setCurrentWidget(self, w:PySide2.QtWidgets.QWidget) -> None: ... + def widget(self, arg__1:int) -> PySide2.QtWidgets.QWidget: ... + + +class QStatusBar(PySide2.QtWidgets.QWidget): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def addPermanentWidget(self, widget:PySide2.QtWidgets.QWidget, stretch:int=...) -> None: ... + def addWidget(self, widget:PySide2.QtWidgets.QWidget, stretch:int=...) -> None: ... + def clearMessage(self) -> None: ... + def currentMessage(self) -> str: ... + def event(self, arg__1:PySide2.QtCore.QEvent) -> bool: ... + def hideOrShow(self) -> None: ... + def insertPermanentWidget(self, index:int, widget:PySide2.QtWidgets.QWidget, stretch:int=...) -> int: ... + def insertWidget(self, index:int, widget:PySide2.QtWidgets.QWidget, stretch:int=...) -> int: ... + def isSizeGripEnabled(self) -> bool: ... + def paintEvent(self, arg__1:PySide2.QtGui.QPaintEvent) -> None: ... + def reformat(self) -> None: ... + def removeWidget(self, widget:PySide2.QtWidgets.QWidget) -> None: ... + def resizeEvent(self, arg__1:PySide2.QtGui.QResizeEvent) -> None: ... + def setSizeGripEnabled(self, arg__1:bool) -> None: ... + def showEvent(self, arg__1:PySide2.QtGui.QShowEvent) -> None: ... + def showMessage(self, text:str, timeout:int=...) -> None: ... + + +class QStyle(PySide2.QtCore.QObject): + CC_CustomBase : QStyle = ... # -0x10000000 + CE_CustomBase : QStyle = ... # -0x10000000 + CT_CustomBase : QStyle = ... # -0x10000000 + PM_CustomBase : QStyle = ... # -0x10000000 + SC_CustomBase : QStyle = ... # -0x10000000 + SE_CustomBase : QStyle = ... # -0x10000000 + SH_CustomBase : QStyle = ... # -0x10000000 + SP_CustomBase : QStyle = ... # -0x10000000 + SC_All : QStyle = ... # -0x1 + CC_SpinBox : QStyle = ... # 0x0 + CE_PushButton : QStyle = ... # 0x0 + CT_PushButton : QStyle = ... # 0x0 + PE_Frame : QStyle = ... # 0x0 + PM_ButtonMargin : QStyle = ... # 0x0 + RSIP_OnMouseClickAndAlreadyFocused: QStyle = ... # 0x0 + SC_None : QStyle = ... # 0x0 + SE_PushButtonContents : QStyle = ... # 0x0 + SH_EtchDisabledText : QStyle = ... # 0x0 + SP_TitleBarMenuButton : QStyle = ... # 0x0 + State_None : QStyle = ... # 0x0 + CC_ComboBox : QStyle = ... # 0x1 + CE_PushButtonBevel : QStyle = ... # 0x1 + CT_CheckBox : QStyle = ... # 0x1 + PE_FrameDefaultButton : QStyle = ... # 0x1 + PM_ButtonDefaultIndicator: QStyle = ... # 0x1 + RSIP_OnMouseClick : QStyle = ... # 0x1 + SC_ComboBoxFrame : QStyle = ... # 0x1 + SC_DialGroove : QStyle = ... # 0x1 + SC_GroupBoxCheckBox : QStyle = ... # 0x1 + SC_MdiMinButton : QStyle = ... # 0x1 + SC_ScrollBarAddLine : QStyle = ... # 0x1 + SC_SliderGroove : QStyle = ... # 0x1 + SC_SpinBoxUp : QStyle = ... # 0x1 + SC_TitleBarSysMenu : QStyle = ... # 0x1 + SC_ToolButton : QStyle = ... # 0x1 + SE_PushButtonFocusRect : QStyle = ... # 0x1 + SH_DitherDisabledText : QStyle = ... # 0x1 + SP_TitleBarMinButton : QStyle = ... # 0x1 + State_Enabled : QStyle = ... # 0x1 + CC_ScrollBar : QStyle = ... # 0x2 + CE_PushButtonLabel : QStyle = ... # 0x2 + CT_RadioButton : QStyle = ... # 0x2 + PE_FrameDockWidget : QStyle = ... # 0x2 + PM_MenuButtonIndicator : QStyle = ... # 0x2 + SC_ComboBoxEditField : QStyle = ... # 0x2 + SC_DialHandle : QStyle = ... # 0x2 + SC_GroupBoxLabel : QStyle = ... # 0x2 + SC_MdiNormalButton : QStyle = ... # 0x2 + SC_ScrollBarSubLine : QStyle = ... # 0x2 + SC_SliderHandle : QStyle = ... # 0x2 + SC_SpinBoxDown : QStyle = ... # 0x2 + SC_TitleBarMinButton : QStyle = ... # 0x2 + SC_ToolButtonMenu : QStyle = ... # 0x2 + SE_CheckBoxIndicator : QStyle = ... # 0x2 + SH_ScrollBar_MiddleClickAbsolutePosition: QStyle = ... # 0x2 + SP_TitleBarMaxButton : QStyle = ... # 0x2 + State_Raised : QStyle = ... # 0x2 + CC_Slider : QStyle = ... # 0x3 + CE_CheckBox : QStyle = ... # 0x3 + CT_ToolButton : QStyle = ... # 0x3 + PE_FrameFocusRect : QStyle = ... # 0x3 + PM_ButtonShiftHorizontal : QStyle = ... # 0x3 + SE_CheckBoxContents : QStyle = ... # 0x3 + SH_ScrollBar_ScrollWhenPointerLeavesControl: QStyle = ... # 0x3 + SP_TitleBarCloseButton : QStyle = ... # 0x3 + CC_ToolButton : QStyle = ... # 0x4 + CE_CheckBoxLabel : QStyle = ... # 0x4 + CT_ComboBox : QStyle = ... # 0x4 + PE_FrameGroupBox : QStyle = ... # 0x4 + PM_ButtonShiftVertical : QStyle = ... # 0x4 + SC_ComboBoxArrow : QStyle = ... # 0x4 + SC_DialTickmarks : QStyle = ... # 0x4 + SC_GroupBoxContents : QStyle = ... # 0x4 + SC_MdiCloseButton : QStyle = ... # 0x4 + SC_ScrollBarAddPage : QStyle = ... # 0x4 + SC_SliderTickmarks : QStyle = ... # 0x4 + SC_SpinBoxFrame : QStyle = ... # 0x4 + SC_TitleBarMaxButton : QStyle = ... # 0x4 + SE_CheckBoxFocusRect : QStyle = ... # 0x4 + SH_TabBar_SelectMouseType: QStyle = ... # 0x4 + SP_TitleBarNormalButton : QStyle = ... # 0x4 + State_Sunken : QStyle = ... # 0x4 + CC_TitleBar : QStyle = ... # 0x5 + CE_RadioButton : QStyle = ... # 0x5 + CT_Splitter : QStyle = ... # 0x5 + PE_FrameLineEdit : QStyle = ... # 0x5 + PM_DefaultFrameWidth : QStyle = ... # 0x5 + SE_CheckBoxClickRect : QStyle = ... # 0x5 + SH_TabBar_Alignment : QStyle = ... # 0x5 + SP_TitleBarShadeButton : QStyle = ... # 0x5 + CC_Dial : QStyle = ... # 0x6 + CE_RadioButtonLabel : QStyle = ... # 0x6 + CT_ProgressBar : QStyle = ... # 0x6 + PE_FrameMenu : QStyle = ... # 0x6 + PM_SpinBoxFrameWidth : QStyle = ... # 0x6 + SE_RadioButtonIndicator : QStyle = ... # 0x6 + SH_Header_ArrowAlignment : QStyle = ... # 0x6 + SP_TitleBarUnshadeButton : QStyle = ... # 0x6 + CC_GroupBox : QStyle = ... # 0x7 + CE_TabBarTab : QStyle = ... # 0x7 + CT_MenuItem : QStyle = ... # 0x7 + PE_FrameStatusBar : QStyle = ... # 0x7 + PE_FrameStatusBarItem : QStyle = ... # 0x7 + PM_ComboBoxFrameWidth : QStyle = ... # 0x7 + SE_RadioButtonContents : QStyle = ... # 0x7 + SH_Slider_SnapToValue : QStyle = ... # 0x7 + SP_TitleBarContextHelpButton: QStyle = ... # 0x7 + CC_MdiControls : QStyle = ... # 0x8 + CE_TabBarTabShape : QStyle = ... # 0x8 + CT_MenuBarItem : QStyle = ... # 0x8 + PE_FrameTabWidget : QStyle = ... # 0x8 + PM_MaximumDragDistance : QStyle = ... # 0x8 + SC_ComboBoxListBoxPopup : QStyle = ... # 0x8 + SC_GroupBoxFrame : QStyle = ... # 0x8 + SC_ScrollBarSubPage : QStyle = ... # 0x8 + SC_SpinBoxEditField : QStyle = ... # 0x8 + SC_TitleBarCloseButton : QStyle = ... # 0x8 + SE_RadioButtonFocusRect : QStyle = ... # 0x8 + SH_Slider_SloppyKeyEvents: QStyle = ... # 0x8 + SP_DockWidgetCloseButton : QStyle = ... # 0x8 + State_Off : QStyle = ... # 0x8 + CE_TabBarTabLabel : QStyle = ... # 0x9 + CT_MenuBar : QStyle = ... # 0x9 + PE_FrameWindow : QStyle = ... # 0x9 + PM_ScrollBarExtent : QStyle = ... # 0x9 + SE_RadioButtonClickRect : QStyle = ... # 0x9 + SH_ProgressDialog_CenterCancelButton: QStyle = ... # 0x9 + SP_MessageBoxInformation : QStyle = ... # 0x9 + CE_ProgressBar : QStyle = ... # 0xa + CT_Menu : QStyle = ... # 0xa + PE_FrameButtonBevel : QStyle = ... # 0xa + PM_ScrollBarSliderMin : QStyle = ... # 0xa + SE_ComboBoxFocusRect : QStyle = ... # 0xa + SH_ProgressDialog_TextLabelAlignment: QStyle = ... # 0xa + SP_MessageBoxWarning : QStyle = ... # 0xa + CE_ProgressBarGroove : QStyle = ... # 0xb + CT_TabBarTab : QStyle = ... # 0xb + PE_FrameButtonTool : QStyle = ... # 0xb + PM_SliderThickness : QStyle = ... # 0xb + SE_SliderFocusRect : QStyle = ... # 0xb + SH_PrintDialog_RightAlignButtons: QStyle = ... # 0xb + SP_MessageBoxCritical : QStyle = ... # 0xb + CE_ProgressBarContents : QStyle = ... # 0xc + CT_Slider : QStyle = ... # 0xc + PE_FrameTabBarBase : QStyle = ... # 0xc + PM_SliderControlThickness: QStyle = ... # 0xc + SE_ProgressBarGroove : QStyle = ... # 0xc + SH_MainWindow_SpaceBelowMenuBar: QStyle = ... # 0xc + SP_MessageBoxQuestion : QStyle = ... # 0xc + CE_ProgressBarLabel : QStyle = ... # 0xd + CT_ScrollBar : QStyle = ... # 0xd + PE_PanelButtonCommand : QStyle = ... # 0xd + PM_SliderLength : QStyle = ... # 0xd + SE_ProgressBarContents : QStyle = ... # 0xd + SH_FontDialog_SelectAssociatedText: QStyle = ... # 0xd + SP_DesktopIcon : QStyle = ... # 0xd + CE_MenuItem : QStyle = ... # 0xe + CT_LineEdit : QStyle = ... # 0xe + PE_PanelButtonBevel : QStyle = ... # 0xe + PM_SliderTickmarkOffset : QStyle = ... # 0xe + SE_ProgressBarLabel : QStyle = ... # 0xe + SH_Menu_AllowActiveAndDisabled: QStyle = ... # 0xe + SP_TrashIcon : QStyle = ... # 0xe + CE_MenuScroller : QStyle = ... # 0xf + CT_SpinBox : QStyle = ... # 0xf + PE_PanelButtonTool : QStyle = ... # 0xf + PM_SliderSpaceAvailable : QStyle = ... # 0xf + SE_ToolBoxTabContents : QStyle = ... # 0xf + SH_Menu_SpaceActivatesItem: QStyle = ... # 0xf + SP_ComputerIcon : QStyle = ... # 0xf + CE_MenuVMargin : QStyle = ... # 0x10 + CT_SizeGrip : QStyle = ... # 0x10 + PE_PanelMenuBar : QStyle = ... # 0x10 + PM_DockWidgetSeparatorExtent: QStyle = ... # 0x10 + SC_ScrollBarFirst : QStyle = ... # 0x10 + SC_TitleBarNormalButton : QStyle = ... # 0x10 + SE_HeaderLabel : QStyle = ... # 0x10 + SH_Menu_SubMenuPopupDelay: QStyle = ... # 0x10 + SP_DriveFDIcon : QStyle = ... # 0x10 + State_NoChange : QStyle = ... # 0x10 + CE_MenuHMargin : QStyle = ... # 0x11 + CT_TabWidget : QStyle = ... # 0x11 + PE_PanelToolBar : QStyle = ... # 0x11 + PM_DockWidgetHandleExtent: QStyle = ... # 0x11 + SE_HeaderArrow : QStyle = ... # 0x11 + SH_ScrollView_FrameOnlyAroundContents: QStyle = ... # 0x11 + SP_DriveHDIcon : QStyle = ... # 0x11 + CE_MenuTearoff : QStyle = ... # 0x12 + CT_DialogButtons : QStyle = ... # 0x12 + PE_PanelLineEdit : QStyle = ... # 0x12 + PM_DockWidgetFrameWidth : QStyle = ... # 0x12 + SE_TabWidgetTabBar : QStyle = ... # 0x12 + SH_MenuBar_AltKeyNavigation: QStyle = ... # 0x12 + SP_DriveCDIcon : QStyle = ... # 0x12 + CE_MenuEmptyArea : QStyle = ... # 0x13 + CT_HeaderSection : QStyle = ... # 0x13 + PE_IndicatorArrowDown : QStyle = ... # 0x13 + PM_TabBarTabOverlap : QStyle = ... # 0x13 + SE_TabWidgetTabPane : QStyle = ... # 0x13 + SH_ComboBox_ListMouseTracking: QStyle = ... # 0x13 + SP_DriveDVDIcon : QStyle = ... # 0x13 + CE_MenuBarItem : QStyle = ... # 0x14 + CT_GroupBox : QStyle = ... # 0x14 + PE_IndicatorArrowLeft : QStyle = ... # 0x14 + PM_TabBarTabHSpace : QStyle = ... # 0x14 + SE_TabWidgetTabContents : QStyle = ... # 0x14 + SH_Menu_MouseTracking : QStyle = ... # 0x14 + SP_DriveNetIcon : QStyle = ... # 0x14 + CE_MenuBarEmptyArea : QStyle = ... # 0x15 + CT_MdiControls : QStyle = ... # 0x15 + PE_IndicatorArrowRight : QStyle = ... # 0x15 + PM_TabBarTabVSpace : QStyle = ... # 0x15 + SE_TabWidgetLeftCorner : QStyle = ... # 0x15 + SH_MenuBar_MouseTracking : QStyle = ... # 0x15 + SP_DirOpenIcon : QStyle = ... # 0x15 + CE_ToolButtonLabel : QStyle = ... # 0x16 + CT_ItemViewItem : QStyle = ... # 0x16 + PE_IndicatorArrowUp : QStyle = ... # 0x16 + PM_TabBarBaseHeight : QStyle = ... # 0x16 + SE_TabWidgetRightCorner : QStyle = ... # 0x16 + SH_ItemView_ChangeHighlightOnFocus: QStyle = ... # 0x16 + SP_DirClosedIcon : QStyle = ... # 0x16 + CE_Header : QStyle = ... # 0x17 + PE_IndicatorBranch : QStyle = ... # 0x17 + PM_TabBarBaseOverlap : QStyle = ... # 0x17 + SE_ItemViewItemCheckIndicator: QStyle = ... # 0x17 + SE_ViewItemCheckIndicator: QStyle = ... # 0x17 + SH_Widget_ShareActivation: QStyle = ... # 0x17 + SP_DirLinkIcon : QStyle = ... # 0x17 + CE_HeaderSection : QStyle = ... # 0x18 + PE_IndicatorButtonDropDown: QStyle = ... # 0x18 + PM_ProgressBarChunkWidth : QStyle = ... # 0x18 + SE_TabBarTearIndicator : QStyle = ... # 0x18 + SE_TabBarTearIndicatorLeft: QStyle = ... # 0x18 + SH_Workspace_FillSpaceOnMaximize: QStyle = ... # 0x18 + SP_DirLinkOpenIcon : QStyle = ... # 0x18 + CE_HeaderLabel : QStyle = ... # 0x19 + PE_IndicatorItemViewItemCheck: QStyle = ... # 0x19 + PE_IndicatorViewItemCheck: QStyle = ... # 0x19 + PM_SplitterWidth : QStyle = ... # 0x19 + SE_TreeViewDisclosureItem: QStyle = ... # 0x19 + SH_ComboBox_Popup : QStyle = ... # 0x19 + SP_FileIcon : QStyle = ... # 0x19 + CE_ToolBoxTab : QStyle = ... # 0x1a + PE_IndicatorCheckBox : QStyle = ... # 0x1a + PM_TitleBarHeight : QStyle = ... # 0x1a + SE_LineEditContents : QStyle = ... # 0x1a + SH_TitleBar_NoBorder : QStyle = ... # 0x1a + SP_FileLinkIcon : QStyle = ... # 0x1a + CE_SizeGrip : QStyle = ... # 0x1b + PE_IndicatorDockWidgetResizeHandle: QStyle = ... # 0x1b + PM_MenuScrollerHeight : QStyle = ... # 0x1b + SE_FrameContents : QStyle = ... # 0x1b + SH_ScrollBar_StopMouseOverSlider: QStyle = ... # 0x1b + SH_Slider_StopMouseOverSlider: QStyle = ... # 0x1b + SP_ToolBarHorizontalExtensionButton: QStyle = ... # 0x1b + CE_Splitter : QStyle = ... # 0x1c + PE_IndicatorHeaderArrow : QStyle = ... # 0x1c + PM_MenuHMargin : QStyle = ... # 0x1c + SE_DockWidgetCloseButton : QStyle = ... # 0x1c + SH_BlinkCursorWhenTextSelected: QStyle = ... # 0x1c + SP_ToolBarVerticalExtensionButton: QStyle = ... # 0x1c + CE_RubberBand : QStyle = ... # 0x1d + PE_IndicatorMenuCheckMark: QStyle = ... # 0x1d + PM_MenuVMargin : QStyle = ... # 0x1d + SE_DockWidgetFloatButton : QStyle = ... # 0x1d + SH_RichText_FullWidthSelection: QStyle = ... # 0x1d + SP_FileDialogStart : QStyle = ... # 0x1d + CE_DockWidgetTitle : QStyle = ... # 0x1e + PE_IndicatorProgressChunk: QStyle = ... # 0x1e + PM_MenuPanelWidth : QStyle = ... # 0x1e + SE_DockWidgetTitleBarText: QStyle = ... # 0x1e + SH_Menu_Scrollable : QStyle = ... # 0x1e + SP_FileDialogEnd : QStyle = ... # 0x1e + CE_ScrollBarAddLine : QStyle = ... # 0x1f + PE_IndicatorRadioButton : QStyle = ... # 0x1f + PM_MenuTearoffHeight : QStyle = ... # 0x1f + SE_DockWidgetIcon : QStyle = ... # 0x1f + SH_GroupBox_TextLabelVerticalAlignment: QStyle = ... # 0x1f + SP_FileDialogToParent : QStyle = ... # 0x1f + CE_ScrollBarSubLine : QStyle = ... # 0x20 + PE_IndicatorSpinDown : QStyle = ... # 0x20 + PM_MenuDesktopFrameWidth : QStyle = ... # 0x20 + SC_ScrollBarLast : QStyle = ... # 0x20 + SC_TitleBarShadeButton : QStyle = ... # 0x20 + SE_CheckBoxLayoutItem : QStyle = ... # 0x20 + SH_GroupBox_TextLabelColor: QStyle = ... # 0x20 + SP_FileDialogNewFolder : QStyle = ... # 0x20 + State_On : QStyle = ... # 0x20 + CE_ScrollBarAddPage : QStyle = ... # 0x21 + PE_IndicatorSpinMinus : QStyle = ... # 0x21 + PM_MenuBarPanelWidth : QStyle = ... # 0x21 + SE_ComboBoxLayoutItem : QStyle = ... # 0x21 + SH_Menu_SloppySubMenus : QStyle = ... # 0x21 + SP_FileDialogDetailedView: QStyle = ... # 0x21 + CE_ScrollBarSubPage : QStyle = ... # 0x22 + PE_IndicatorSpinPlus : QStyle = ... # 0x22 + PM_MenuBarItemSpacing : QStyle = ... # 0x22 + SE_DateTimeEditLayoutItem: QStyle = ... # 0x22 + SH_Table_GridLineColor : QStyle = ... # 0x22 + SP_FileDialogInfoView : QStyle = ... # 0x22 + CE_ScrollBarSlider : QStyle = ... # 0x23 + PE_IndicatorSpinUp : QStyle = ... # 0x23 + PM_MenuBarVMargin : QStyle = ... # 0x23 + SE_DialogButtonBoxLayoutItem: QStyle = ... # 0x23 + SH_LineEdit_PasswordCharacter: QStyle = ... # 0x23 + SP_FileDialogContentsView: QStyle = ... # 0x23 + CE_ScrollBarFirst : QStyle = ... # 0x24 + PE_IndicatorToolBarHandle: QStyle = ... # 0x24 + PM_MenuBarHMargin : QStyle = ... # 0x24 + SE_LabelLayoutItem : QStyle = ... # 0x24 + SH_DialogButtons_DefaultButton: QStyle = ... # 0x24 + SP_FileDialogListView : QStyle = ... # 0x24 + CE_ScrollBarLast : QStyle = ... # 0x25 + PE_IndicatorToolBarSeparator: QStyle = ... # 0x25 + PM_IndicatorWidth : QStyle = ... # 0x25 + SE_ProgressBarLayoutItem : QStyle = ... # 0x25 + SH_ToolBox_SelectedPageTitleBold: QStyle = ... # 0x25 + SP_FileDialogBack : QStyle = ... # 0x25 + CE_FocusFrame : QStyle = ... # 0x26 + PE_PanelTipLabel : QStyle = ... # 0x26 + PM_IndicatorHeight : QStyle = ... # 0x26 + SE_PushButtonLayoutItem : QStyle = ... # 0x26 + SH_TabBar_PreferNoArrows : QStyle = ... # 0x26 + SP_DirIcon : QStyle = ... # 0x26 + CE_ComboBoxLabel : QStyle = ... # 0x27 + PE_IndicatorTabTear : QStyle = ... # 0x27 + PE_IndicatorTabTearLeft : QStyle = ... # 0x27 + PM_ExclusiveIndicatorWidth: QStyle = ... # 0x27 + SE_RadioButtonLayoutItem : QStyle = ... # 0x27 + SH_ScrollBar_LeftClickAbsolutePosition: QStyle = ... # 0x27 + SP_DialogOkButton : QStyle = ... # 0x27 + CE_ToolBar : QStyle = ... # 0x28 + PE_PanelScrollAreaCorner : QStyle = ... # 0x28 + PM_ExclusiveIndicatorHeight: QStyle = ... # 0x28 + SE_SliderLayoutItem : QStyle = ... # 0x28 + SH_ListViewExpand_SelectMouseType: QStyle = ... # 0x28 + SP_DialogCancelButton : QStyle = ... # 0x28 + CE_ToolBoxTabShape : QStyle = ... # 0x29 + PE_Widget : QStyle = ... # 0x29 + PM_DialogButtonsSeparator: QStyle = ... # 0x29 + SE_SpinBoxLayoutItem : QStyle = ... # 0x29 + SH_UnderlineShortcut : QStyle = ... # 0x29 + SP_DialogHelpButton : QStyle = ... # 0x29 + CE_ToolBoxTabLabel : QStyle = ... # 0x2a + PE_IndicatorColumnViewArrow: QStyle = ... # 0x2a + PM_DialogButtonsButtonWidth: QStyle = ... # 0x2a + SE_ToolButtonLayoutItem : QStyle = ... # 0x2a + SH_SpinBox_AnimateButton : QStyle = ... # 0x2a + SP_DialogOpenButton : QStyle = ... # 0x2a + CE_HeaderEmptyArea : QStyle = ... # 0x2b + PE_IndicatorItemViewItemDrop: QStyle = ... # 0x2b + PM_DialogButtonsButtonHeight: QStyle = ... # 0x2b + SE_FrameLayoutItem : QStyle = ... # 0x2b + SH_SpinBox_KeyPressAutoRepeatRate: QStyle = ... # 0x2b + SP_DialogSaveButton : QStyle = ... # 0x2b + CE_ColumnViewGrip : QStyle = ... # 0x2c + PE_PanelItemViewItem : QStyle = ... # 0x2c + PM_MDIFrameWidth : QStyle = ... # 0x2c + PM_MdiSubWindowFrameWidth: QStyle = ... # 0x2c + SE_GroupBoxLayoutItem : QStyle = ... # 0x2c + SH_SpinBox_ClickAutoRepeatRate: QStyle = ... # 0x2c + SP_DialogCloseButton : QStyle = ... # 0x2c + CE_ItemViewItem : QStyle = ... # 0x2d + PE_PanelItemViewRow : QStyle = ... # 0x2d + PM_MDIMinimizedWidth : QStyle = ... # 0x2d + PM_MdiSubWindowMinimizedWidth: QStyle = ... # 0x2d + SE_TabWidgetLayoutItem : QStyle = ... # 0x2d + SH_Menu_FillScreenWithScroll: QStyle = ... # 0x2d + SP_DialogApplyButton : QStyle = ... # 0x2d + CE_ShapedFrame : QStyle = ... # 0x2e + PE_PanelStatusBar : QStyle = ... # 0x2e + PM_HeaderMargin : QStyle = ... # 0x2e + SE_ItemViewItemDecoration: QStyle = ... # 0x2e + SH_ToolTipLabel_Opacity : QStyle = ... # 0x2e + SP_DialogResetButton : QStyle = ... # 0x2e + PE_IndicatorTabClose : QStyle = ... # 0x2f + PM_HeaderMarkSize : QStyle = ... # 0x2f + SE_ItemViewItemText : QStyle = ... # 0x2f + SH_DrawMenuBarSeparator : QStyle = ... # 0x2f + SP_DialogDiscardButton : QStyle = ... # 0x2f + PE_PanelMenu : QStyle = ... # 0x30 + PM_HeaderGripMargin : QStyle = ... # 0x30 + SE_ItemViewItemFocusRect : QStyle = ... # 0x30 + SH_TitleBar_ModifyNotification: QStyle = ... # 0x30 + SP_DialogYesButton : QStyle = ... # 0x30 + PE_IndicatorTabTearRight : QStyle = ... # 0x31 + PM_TabBarTabShiftHorizontal: QStyle = ... # 0x31 + SE_TabBarTabLeftButton : QStyle = ... # 0x31 + SH_Button_FocusPolicy : QStyle = ... # 0x31 + SP_DialogNoButton : QStyle = ... # 0x31 + PM_TabBarTabShiftVertical: QStyle = ... # 0x32 + SE_TabBarTabRightButton : QStyle = ... # 0x32 + SH_MessageBox_UseBorderForButtonSpacing: QStyle = ... # 0x32 + SP_ArrowUp : QStyle = ... # 0x32 + PM_TabBarScrollButtonWidth: QStyle = ... # 0x33 + SE_TabBarTabText : QStyle = ... # 0x33 + SH_TitleBar_AutoRaise : QStyle = ... # 0x33 + SP_ArrowDown : QStyle = ... # 0x33 + PM_ToolBarFrameWidth : QStyle = ... # 0x34 + SE_ShapedFrameContents : QStyle = ... # 0x34 + SH_ToolButton_PopupDelay : QStyle = ... # 0x34 + SP_ArrowLeft : QStyle = ... # 0x34 + PM_ToolBarHandleExtent : QStyle = ... # 0x35 + SE_ToolBarHandle : QStyle = ... # 0x35 + SH_FocusFrame_Mask : QStyle = ... # 0x35 + SP_ArrowRight : QStyle = ... # 0x35 + PM_ToolBarItemSpacing : QStyle = ... # 0x36 + SE_TabBarScrollLeftButton: QStyle = ... # 0x36 + SH_RubberBand_Mask : QStyle = ... # 0x36 + SP_ArrowBack : QStyle = ... # 0x36 + PM_ToolBarItemMargin : QStyle = ... # 0x37 + SE_TabBarScrollRightButton: QStyle = ... # 0x37 + SH_WindowFrame_Mask : QStyle = ... # 0x37 + SP_ArrowForward : QStyle = ... # 0x37 + PM_ToolBarSeparatorExtent: QStyle = ... # 0x38 + SE_TabBarTearIndicatorRight: QStyle = ... # 0x38 + SH_SpinControls_DisableOnBounds: QStyle = ... # 0x38 + SP_DirHomeIcon : QStyle = ... # 0x38 + PM_ToolBarExtensionExtent: QStyle = ... # 0x39 + SE_PushButtonBevel : QStyle = ... # 0x39 + SH_Dial_BackgroundRole : QStyle = ... # 0x39 + SP_CommandLink : QStyle = ... # 0x39 + PM_SpinBoxSliderHeight : QStyle = ... # 0x3a + SH_ComboBox_LayoutDirection: QStyle = ... # 0x3a + SP_VistaShield : QStyle = ... # 0x3a + PM_DefaultTopLevelMargin : QStyle = ... # 0x3b + SH_ItemView_EllipsisLocation: QStyle = ... # 0x3b + SP_BrowserReload : QStyle = ... # 0x3b + PM_DefaultChildMargin : QStyle = ... # 0x3c + SH_ItemView_ShowDecorationSelected: QStyle = ... # 0x3c + SP_BrowserStop : QStyle = ... # 0x3c + PM_DefaultLayoutSpacing : QStyle = ... # 0x3d + SH_ItemView_ActivateItemOnSingleClick: QStyle = ... # 0x3d + SP_MediaPlay : QStyle = ... # 0x3d + PM_ToolBarIconSize : QStyle = ... # 0x3e + SH_ScrollBar_ContextMenu : QStyle = ... # 0x3e + SP_MediaStop : QStyle = ... # 0x3e + PM_ListViewIconSize : QStyle = ... # 0x3f + SH_ScrollBar_RollBetweenButtons: QStyle = ... # 0x3f + SP_MediaPause : QStyle = ... # 0x3f + PM_IconViewIconSize : QStyle = ... # 0x40 + SC_ScrollBarSlider : QStyle = ... # 0x40 + SC_TitleBarUnshadeButton : QStyle = ... # 0x40 + SH_Slider_AbsoluteSetButtons: QStyle = ... # 0x40 + SP_MediaSkipForward : QStyle = ... # 0x40 + State_DownArrow : QStyle = ... # 0x40 + PM_SmallIconSize : QStyle = ... # 0x41 + SH_Slider_PageSetButtons : QStyle = ... # 0x41 + SP_MediaSkipBackward : QStyle = ... # 0x41 + PM_LargeIconSize : QStyle = ... # 0x42 + SH_Menu_KeyboardSearch : QStyle = ... # 0x42 + SP_MediaSeekForward : QStyle = ... # 0x42 + PM_FocusFrameVMargin : QStyle = ... # 0x43 + SH_TabBar_ElideMode : QStyle = ... # 0x43 + SP_MediaSeekBackward : QStyle = ... # 0x43 + PM_FocusFrameHMargin : QStyle = ... # 0x44 + SH_DialogButtonLayout : QStyle = ... # 0x44 + SP_MediaVolume : QStyle = ... # 0x44 + PM_ToolTipLabelFrameWidth: QStyle = ... # 0x45 + SH_ComboBox_PopupFrameStyle: QStyle = ... # 0x45 + SP_MediaVolumeMuted : QStyle = ... # 0x45 + PM_CheckBoxLabelSpacing : QStyle = ... # 0x46 + SH_MessageBox_TextInteractionFlags: QStyle = ... # 0x46 + SP_LineEditClearButton : QStyle = ... # 0x46 + PM_TabBarIconSize : QStyle = ... # 0x47 + SH_DialogButtonBox_ButtonsHaveIcons: QStyle = ... # 0x47 + SP_DialogYesToAllButton : QStyle = ... # 0x47 + PM_SizeGripSize : QStyle = ... # 0x48 + SH_SpellCheckUnderlineStyle: QStyle = ... # 0x48 + SP_DialogNoToAllButton : QStyle = ... # 0x48 + PM_DockWidgetTitleMargin : QStyle = ... # 0x49 + SH_MessageBox_CenterButtons: QStyle = ... # 0x49 + SP_DialogSaveAllButton : QStyle = ... # 0x49 + PM_MessageBoxIconSize : QStyle = ... # 0x4a + SH_Menu_SelectionWrap : QStyle = ... # 0x4a + SP_DialogAbortButton : QStyle = ... # 0x4a + PM_ButtonIconSize : QStyle = ... # 0x4b + SH_ItemView_MovementWithoutUpdatingSelection: QStyle = ... # 0x4b + SP_DialogRetryButton : QStyle = ... # 0x4b + PM_DockWidgetTitleBarButtonMargin: QStyle = ... # 0x4c + SH_ToolTip_Mask : QStyle = ... # 0x4c + SP_DialogIgnoreButton : QStyle = ... # 0x4c + PM_RadioButtonLabelSpacing: QStyle = ... # 0x4d + SH_FocusFrame_AboveWidget: QStyle = ... # 0x4d + SP_RestoreDefaultsButton : QStyle = ... # 0x4d + PM_LayoutLeftMargin : QStyle = ... # 0x4e + SH_TextControl_FocusIndicatorTextCharFormat: QStyle = ... # 0x4e + PM_LayoutTopMargin : QStyle = ... # 0x4f + SH_WizardStyle : QStyle = ... # 0x4f + PM_LayoutRightMargin : QStyle = ... # 0x50 + SH_ItemView_ArrowKeysNavigateIntoChildren: QStyle = ... # 0x50 + PM_LayoutBottomMargin : QStyle = ... # 0x51 + SH_Menu_Mask : QStyle = ... # 0x51 + PM_LayoutHorizontalSpacing: QStyle = ... # 0x52 + SH_Menu_FlashTriggeredItem: QStyle = ... # 0x52 + PM_LayoutVerticalSpacing : QStyle = ... # 0x53 + SH_Menu_FadeOutOnHide : QStyle = ... # 0x53 + PM_TabBar_ScrollButtonOverlap: QStyle = ... # 0x54 + SH_SpinBox_ClickAutoRepeatThreshold: QStyle = ... # 0x54 + PM_TextCursorWidth : QStyle = ... # 0x55 + SH_ItemView_PaintAlternatingRowColorsForEmptyArea: QStyle = ... # 0x55 + PM_TabCloseIndicatorWidth: QStyle = ... # 0x56 + SH_FormLayoutWrapPolicy : QStyle = ... # 0x56 + PM_TabCloseIndicatorHeight: QStyle = ... # 0x57 + SH_TabWidget_DefaultTabPosition: QStyle = ... # 0x57 + PM_ScrollView_ScrollBarSpacing: QStyle = ... # 0x58 + SH_ToolBar_Movable : QStyle = ... # 0x58 + PM_ScrollView_ScrollBarOverlap: QStyle = ... # 0x59 + SH_FormLayoutFieldGrowthPolicy: QStyle = ... # 0x59 + PM_SubMenuOverlap : QStyle = ... # 0x5a + SH_FormLayoutFormAlignment: QStyle = ... # 0x5a + PM_TreeViewIndentation : QStyle = ... # 0x5b + SH_FormLayoutLabelAlignment: QStyle = ... # 0x5b + PM_HeaderDefaultSectionSizeHorizontal: QStyle = ... # 0x5c + SH_ItemView_DrawDelegateFrame: QStyle = ... # 0x5c + PM_HeaderDefaultSectionSizeVertical: QStyle = ... # 0x5d + SH_TabBar_CloseButtonPosition: QStyle = ... # 0x5d + PM_TitleBarButtonIconSize: QStyle = ... # 0x5e + SH_DockWidget_ButtonsHaveFrame: QStyle = ... # 0x5e + PM_TitleBarButtonSize : QStyle = ... # 0x5f + SH_ToolButtonStyle : QStyle = ... # 0x5f + SH_RequestSoftwareInputPanel: QStyle = ... # 0x60 + SH_ScrollBar_Transient : QStyle = ... # 0x61 + SH_Menu_SupportsSections : QStyle = ... # 0x62 + SH_ToolTip_WakeUpDelay : QStyle = ... # 0x63 + SH_ToolTip_FallAsleepDelay: QStyle = ... # 0x64 + SH_Widget_Animate : QStyle = ... # 0x65 + SH_Splitter_OpaqueResize : QStyle = ... # 0x66 + SH_ComboBox_UseNativePopup: QStyle = ... # 0x67 + SH_LineEdit_PasswordMaskDelay: QStyle = ... # 0x68 + SH_TabBar_ChangeCurrentDelay: QStyle = ... # 0x69 + SH_Menu_SubMenuUniDirection: QStyle = ... # 0x6a + SH_Menu_SubMenuUniDirectionFailCount: QStyle = ... # 0x6b + SH_Menu_SubMenuSloppySelectOtherActions: QStyle = ... # 0x6c + SH_Menu_SubMenuSloppyCloseTimeout: QStyle = ... # 0x6d + SH_Menu_SubMenuResetWhenReenteringParent: QStyle = ... # 0x6e + SH_Menu_SubMenuDontStartSloppyOnLeave: QStyle = ... # 0x6f + SH_ItemView_ScrollMode : QStyle = ... # 0x70 + SH_TitleBar_ShowToolTipsOnButtons: QStyle = ... # 0x71 + SH_Widget_Animation_Duration: QStyle = ... # 0x72 + SH_ComboBox_AllowWheelScrolling: QStyle = ... # 0x73 + SH_SpinBox_ButtonsInsideFrame: QStyle = ... # 0x74 + SH_SpinBox_StepModifier : QStyle = ... # 0x75 + SC_ScrollBarGroove : QStyle = ... # 0x80 + SC_TitleBarContextHelpButton: QStyle = ... # 0x80 + State_Horizontal : QStyle = ... # 0x80 + SC_TitleBarLabel : QStyle = ... # 0x100 + State_HasFocus : QStyle = ... # 0x100 + State_Top : QStyle = ... # 0x200 + State_Bottom : QStyle = ... # 0x400 + State_FocusAtBorder : QStyle = ... # 0x800 + State_AutoRaise : QStyle = ... # 0x1000 + State_MouseOver : QStyle = ... # 0x2000 + State_UpArrow : QStyle = ... # 0x4000 + State_Selected : QStyle = ... # 0x8000 + State_Active : QStyle = ... # 0x10000 + State_Window : QStyle = ... # 0x20000 + State_Open : QStyle = ... # 0x40000 + State_Children : QStyle = ... # 0x80000 + State_Item : QStyle = ... # 0x100000 + State_Sibling : QStyle = ... # 0x200000 + State_Editing : QStyle = ... # 0x400000 + State_KeyboardFocusChange: QStyle = ... # 0x800000 + State_ReadOnly : QStyle = ... # 0x2000000 + State_Small : QStyle = ... # 0x4000000 + State_Mini : QStyle = ... # 0x8000000 + PE_CustomBase : QStyle = ... # 0xf000000 + + class ComplexControl(object): + CC_CustomBase : QStyle.ComplexControl = ... # -0x10000000 + CC_SpinBox : QStyle.ComplexControl = ... # 0x0 + CC_ComboBox : QStyle.ComplexControl = ... # 0x1 + CC_ScrollBar : QStyle.ComplexControl = ... # 0x2 + CC_Slider : QStyle.ComplexControl = ... # 0x3 + CC_ToolButton : QStyle.ComplexControl = ... # 0x4 + CC_TitleBar : QStyle.ComplexControl = ... # 0x5 + CC_Dial : QStyle.ComplexControl = ... # 0x6 + CC_GroupBox : QStyle.ComplexControl = ... # 0x7 + CC_MdiControls : QStyle.ComplexControl = ... # 0x8 + + class ContentsType(object): + CT_CustomBase : QStyle.ContentsType = ... # -0x10000000 + CT_PushButton : QStyle.ContentsType = ... # 0x0 + CT_CheckBox : QStyle.ContentsType = ... # 0x1 + CT_RadioButton : QStyle.ContentsType = ... # 0x2 + CT_ToolButton : QStyle.ContentsType = ... # 0x3 + CT_ComboBox : QStyle.ContentsType = ... # 0x4 + CT_Splitter : QStyle.ContentsType = ... # 0x5 + CT_ProgressBar : QStyle.ContentsType = ... # 0x6 + CT_MenuItem : QStyle.ContentsType = ... # 0x7 + CT_MenuBarItem : QStyle.ContentsType = ... # 0x8 + CT_MenuBar : QStyle.ContentsType = ... # 0x9 + CT_Menu : QStyle.ContentsType = ... # 0xa + CT_TabBarTab : QStyle.ContentsType = ... # 0xb + CT_Slider : QStyle.ContentsType = ... # 0xc + CT_ScrollBar : QStyle.ContentsType = ... # 0xd + CT_LineEdit : QStyle.ContentsType = ... # 0xe + CT_SpinBox : QStyle.ContentsType = ... # 0xf + CT_SizeGrip : QStyle.ContentsType = ... # 0x10 + CT_TabWidget : QStyle.ContentsType = ... # 0x11 + CT_DialogButtons : QStyle.ContentsType = ... # 0x12 + CT_HeaderSection : QStyle.ContentsType = ... # 0x13 + CT_GroupBox : QStyle.ContentsType = ... # 0x14 + CT_MdiControls : QStyle.ContentsType = ... # 0x15 + CT_ItemViewItem : QStyle.ContentsType = ... # 0x16 + + class ControlElement(object): + CE_CustomBase : QStyle.ControlElement = ... # -0x10000000 + CE_PushButton : QStyle.ControlElement = ... # 0x0 + CE_PushButtonBevel : QStyle.ControlElement = ... # 0x1 + CE_PushButtonLabel : QStyle.ControlElement = ... # 0x2 + CE_CheckBox : QStyle.ControlElement = ... # 0x3 + CE_CheckBoxLabel : QStyle.ControlElement = ... # 0x4 + CE_RadioButton : QStyle.ControlElement = ... # 0x5 + CE_RadioButtonLabel : QStyle.ControlElement = ... # 0x6 + CE_TabBarTab : QStyle.ControlElement = ... # 0x7 + CE_TabBarTabShape : QStyle.ControlElement = ... # 0x8 + CE_TabBarTabLabel : QStyle.ControlElement = ... # 0x9 + CE_ProgressBar : QStyle.ControlElement = ... # 0xa + CE_ProgressBarGroove : QStyle.ControlElement = ... # 0xb + CE_ProgressBarContents : QStyle.ControlElement = ... # 0xc + CE_ProgressBarLabel : QStyle.ControlElement = ... # 0xd + CE_MenuItem : QStyle.ControlElement = ... # 0xe + CE_MenuScroller : QStyle.ControlElement = ... # 0xf + CE_MenuVMargin : QStyle.ControlElement = ... # 0x10 + CE_MenuHMargin : QStyle.ControlElement = ... # 0x11 + CE_MenuTearoff : QStyle.ControlElement = ... # 0x12 + CE_MenuEmptyArea : QStyle.ControlElement = ... # 0x13 + CE_MenuBarItem : QStyle.ControlElement = ... # 0x14 + CE_MenuBarEmptyArea : QStyle.ControlElement = ... # 0x15 + CE_ToolButtonLabel : QStyle.ControlElement = ... # 0x16 + CE_Header : QStyle.ControlElement = ... # 0x17 + CE_HeaderSection : QStyle.ControlElement = ... # 0x18 + CE_HeaderLabel : QStyle.ControlElement = ... # 0x19 + CE_ToolBoxTab : QStyle.ControlElement = ... # 0x1a + CE_SizeGrip : QStyle.ControlElement = ... # 0x1b + CE_Splitter : QStyle.ControlElement = ... # 0x1c + CE_RubberBand : QStyle.ControlElement = ... # 0x1d + CE_DockWidgetTitle : QStyle.ControlElement = ... # 0x1e + CE_ScrollBarAddLine : QStyle.ControlElement = ... # 0x1f + CE_ScrollBarSubLine : QStyle.ControlElement = ... # 0x20 + CE_ScrollBarAddPage : QStyle.ControlElement = ... # 0x21 + CE_ScrollBarSubPage : QStyle.ControlElement = ... # 0x22 + CE_ScrollBarSlider : QStyle.ControlElement = ... # 0x23 + CE_ScrollBarFirst : QStyle.ControlElement = ... # 0x24 + CE_ScrollBarLast : QStyle.ControlElement = ... # 0x25 + CE_FocusFrame : QStyle.ControlElement = ... # 0x26 + CE_ComboBoxLabel : QStyle.ControlElement = ... # 0x27 + CE_ToolBar : QStyle.ControlElement = ... # 0x28 + CE_ToolBoxTabShape : QStyle.ControlElement = ... # 0x29 + CE_ToolBoxTabLabel : QStyle.ControlElement = ... # 0x2a + CE_HeaderEmptyArea : QStyle.ControlElement = ... # 0x2b + CE_ColumnViewGrip : QStyle.ControlElement = ... # 0x2c + CE_ItemViewItem : QStyle.ControlElement = ... # 0x2d + CE_ShapedFrame : QStyle.ControlElement = ... # 0x2e + + class PixelMetric(object): + PM_CustomBase : QStyle.PixelMetric = ... # -0x10000000 + PM_ButtonMargin : QStyle.PixelMetric = ... # 0x0 + PM_ButtonDefaultIndicator: QStyle.PixelMetric = ... # 0x1 + PM_MenuButtonIndicator : QStyle.PixelMetric = ... # 0x2 + PM_ButtonShiftHorizontal : QStyle.PixelMetric = ... # 0x3 + PM_ButtonShiftVertical : QStyle.PixelMetric = ... # 0x4 + PM_DefaultFrameWidth : QStyle.PixelMetric = ... # 0x5 + PM_SpinBoxFrameWidth : QStyle.PixelMetric = ... # 0x6 + PM_ComboBoxFrameWidth : QStyle.PixelMetric = ... # 0x7 + PM_MaximumDragDistance : QStyle.PixelMetric = ... # 0x8 + PM_ScrollBarExtent : QStyle.PixelMetric = ... # 0x9 + PM_ScrollBarSliderMin : QStyle.PixelMetric = ... # 0xa + PM_SliderThickness : QStyle.PixelMetric = ... # 0xb + PM_SliderControlThickness: QStyle.PixelMetric = ... # 0xc + PM_SliderLength : QStyle.PixelMetric = ... # 0xd + PM_SliderTickmarkOffset : QStyle.PixelMetric = ... # 0xe + PM_SliderSpaceAvailable : QStyle.PixelMetric = ... # 0xf + PM_DockWidgetSeparatorExtent: QStyle.PixelMetric = ... # 0x10 + PM_DockWidgetHandleExtent: QStyle.PixelMetric = ... # 0x11 + PM_DockWidgetFrameWidth : QStyle.PixelMetric = ... # 0x12 + PM_TabBarTabOverlap : QStyle.PixelMetric = ... # 0x13 + PM_TabBarTabHSpace : QStyle.PixelMetric = ... # 0x14 + PM_TabBarTabVSpace : QStyle.PixelMetric = ... # 0x15 + PM_TabBarBaseHeight : QStyle.PixelMetric = ... # 0x16 + PM_TabBarBaseOverlap : QStyle.PixelMetric = ... # 0x17 + PM_ProgressBarChunkWidth : QStyle.PixelMetric = ... # 0x18 + PM_SplitterWidth : QStyle.PixelMetric = ... # 0x19 + PM_TitleBarHeight : QStyle.PixelMetric = ... # 0x1a + PM_MenuScrollerHeight : QStyle.PixelMetric = ... # 0x1b + PM_MenuHMargin : QStyle.PixelMetric = ... # 0x1c + PM_MenuVMargin : QStyle.PixelMetric = ... # 0x1d + PM_MenuPanelWidth : QStyle.PixelMetric = ... # 0x1e + PM_MenuTearoffHeight : QStyle.PixelMetric = ... # 0x1f + PM_MenuDesktopFrameWidth : QStyle.PixelMetric = ... # 0x20 + PM_MenuBarPanelWidth : QStyle.PixelMetric = ... # 0x21 + PM_MenuBarItemSpacing : QStyle.PixelMetric = ... # 0x22 + PM_MenuBarVMargin : QStyle.PixelMetric = ... # 0x23 + PM_MenuBarHMargin : QStyle.PixelMetric = ... # 0x24 + PM_IndicatorWidth : QStyle.PixelMetric = ... # 0x25 + PM_IndicatorHeight : QStyle.PixelMetric = ... # 0x26 + PM_ExclusiveIndicatorWidth: QStyle.PixelMetric = ... # 0x27 + PM_ExclusiveIndicatorHeight: QStyle.PixelMetric = ... # 0x28 + PM_DialogButtonsSeparator: QStyle.PixelMetric = ... # 0x29 + PM_DialogButtonsButtonWidth: QStyle.PixelMetric = ... # 0x2a + PM_DialogButtonsButtonHeight: QStyle.PixelMetric = ... # 0x2b + PM_MDIFrameWidth : QStyle.PixelMetric = ... # 0x2c + PM_MdiSubWindowFrameWidth: QStyle.PixelMetric = ... # 0x2c + PM_MDIMinimizedWidth : QStyle.PixelMetric = ... # 0x2d + PM_MdiSubWindowMinimizedWidth: QStyle.PixelMetric = ... # 0x2d + PM_HeaderMargin : QStyle.PixelMetric = ... # 0x2e + PM_HeaderMarkSize : QStyle.PixelMetric = ... # 0x2f + PM_HeaderGripMargin : QStyle.PixelMetric = ... # 0x30 + PM_TabBarTabShiftHorizontal: QStyle.PixelMetric = ... # 0x31 + PM_TabBarTabShiftVertical: QStyle.PixelMetric = ... # 0x32 + PM_TabBarScrollButtonWidth: QStyle.PixelMetric = ... # 0x33 + PM_ToolBarFrameWidth : QStyle.PixelMetric = ... # 0x34 + PM_ToolBarHandleExtent : QStyle.PixelMetric = ... # 0x35 + PM_ToolBarItemSpacing : QStyle.PixelMetric = ... # 0x36 + PM_ToolBarItemMargin : QStyle.PixelMetric = ... # 0x37 + PM_ToolBarSeparatorExtent: QStyle.PixelMetric = ... # 0x38 + PM_ToolBarExtensionExtent: QStyle.PixelMetric = ... # 0x39 + PM_SpinBoxSliderHeight : QStyle.PixelMetric = ... # 0x3a + PM_DefaultTopLevelMargin : QStyle.PixelMetric = ... # 0x3b + PM_DefaultChildMargin : QStyle.PixelMetric = ... # 0x3c + PM_DefaultLayoutSpacing : QStyle.PixelMetric = ... # 0x3d + PM_ToolBarIconSize : QStyle.PixelMetric = ... # 0x3e + PM_ListViewIconSize : QStyle.PixelMetric = ... # 0x3f + PM_IconViewIconSize : QStyle.PixelMetric = ... # 0x40 + PM_SmallIconSize : QStyle.PixelMetric = ... # 0x41 + PM_LargeIconSize : QStyle.PixelMetric = ... # 0x42 + PM_FocusFrameVMargin : QStyle.PixelMetric = ... # 0x43 + PM_FocusFrameHMargin : QStyle.PixelMetric = ... # 0x44 + PM_ToolTipLabelFrameWidth: QStyle.PixelMetric = ... # 0x45 + PM_CheckBoxLabelSpacing : QStyle.PixelMetric = ... # 0x46 + PM_TabBarIconSize : QStyle.PixelMetric = ... # 0x47 + PM_SizeGripSize : QStyle.PixelMetric = ... # 0x48 + PM_DockWidgetTitleMargin : QStyle.PixelMetric = ... # 0x49 + PM_MessageBoxIconSize : QStyle.PixelMetric = ... # 0x4a + PM_ButtonIconSize : QStyle.PixelMetric = ... # 0x4b + PM_DockWidgetTitleBarButtonMargin: QStyle.PixelMetric = ... # 0x4c + PM_RadioButtonLabelSpacing: QStyle.PixelMetric = ... # 0x4d + PM_LayoutLeftMargin : QStyle.PixelMetric = ... # 0x4e + PM_LayoutTopMargin : QStyle.PixelMetric = ... # 0x4f + PM_LayoutRightMargin : QStyle.PixelMetric = ... # 0x50 + PM_LayoutBottomMargin : QStyle.PixelMetric = ... # 0x51 + PM_LayoutHorizontalSpacing: QStyle.PixelMetric = ... # 0x52 + PM_LayoutVerticalSpacing : QStyle.PixelMetric = ... # 0x53 + PM_TabBar_ScrollButtonOverlap: QStyle.PixelMetric = ... # 0x54 + PM_TextCursorWidth : QStyle.PixelMetric = ... # 0x55 + PM_TabCloseIndicatorWidth: QStyle.PixelMetric = ... # 0x56 + PM_TabCloseIndicatorHeight: QStyle.PixelMetric = ... # 0x57 + PM_ScrollView_ScrollBarSpacing: QStyle.PixelMetric = ... # 0x58 + PM_ScrollView_ScrollBarOverlap: QStyle.PixelMetric = ... # 0x59 + PM_SubMenuOverlap : QStyle.PixelMetric = ... # 0x5a + PM_TreeViewIndentation : QStyle.PixelMetric = ... # 0x5b + PM_HeaderDefaultSectionSizeHorizontal: QStyle.PixelMetric = ... # 0x5c + PM_HeaderDefaultSectionSizeVertical: QStyle.PixelMetric = ... # 0x5d + PM_TitleBarButtonIconSize: QStyle.PixelMetric = ... # 0x5e + PM_TitleBarButtonSize : QStyle.PixelMetric = ... # 0x5f + + class PrimitiveElement(object): + PE_Frame : QStyle.PrimitiveElement = ... # 0x0 + PE_FrameDefaultButton : QStyle.PrimitiveElement = ... # 0x1 + PE_FrameDockWidget : QStyle.PrimitiveElement = ... # 0x2 + PE_FrameFocusRect : QStyle.PrimitiveElement = ... # 0x3 + PE_FrameGroupBox : QStyle.PrimitiveElement = ... # 0x4 + PE_FrameLineEdit : QStyle.PrimitiveElement = ... # 0x5 + PE_FrameMenu : QStyle.PrimitiveElement = ... # 0x6 + PE_FrameStatusBar : QStyle.PrimitiveElement = ... # 0x7 + PE_FrameStatusBarItem : QStyle.PrimitiveElement = ... # 0x7 + PE_FrameTabWidget : QStyle.PrimitiveElement = ... # 0x8 + PE_FrameWindow : QStyle.PrimitiveElement = ... # 0x9 + PE_FrameButtonBevel : QStyle.PrimitiveElement = ... # 0xa + PE_FrameButtonTool : QStyle.PrimitiveElement = ... # 0xb + PE_FrameTabBarBase : QStyle.PrimitiveElement = ... # 0xc + PE_PanelButtonCommand : QStyle.PrimitiveElement = ... # 0xd + PE_PanelButtonBevel : QStyle.PrimitiveElement = ... # 0xe + PE_PanelButtonTool : QStyle.PrimitiveElement = ... # 0xf + PE_PanelMenuBar : QStyle.PrimitiveElement = ... # 0x10 + PE_PanelToolBar : QStyle.PrimitiveElement = ... # 0x11 + PE_PanelLineEdit : QStyle.PrimitiveElement = ... # 0x12 + PE_IndicatorArrowDown : QStyle.PrimitiveElement = ... # 0x13 + PE_IndicatorArrowLeft : QStyle.PrimitiveElement = ... # 0x14 + PE_IndicatorArrowRight : QStyle.PrimitiveElement = ... # 0x15 + PE_IndicatorArrowUp : QStyle.PrimitiveElement = ... # 0x16 + PE_IndicatorBranch : QStyle.PrimitiveElement = ... # 0x17 + PE_IndicatorButtonDropDown: QStyle.PrimitiveElement = ... # 0x18 + PE_IndicatorItemViewItemCheck: QStyle.PrimitiveElement = ... # 0x19 + PE_IndicatorViewItemCheck: QStyle.PrimitiveElement = ... # 0x19 + PE_IndicatorCheckBox : QStyle.PrimitiveElement = ... # 0x1a + PE_IndicatorDockWidgetResizeHandle: QStyle.PrimitiveElement = ... # 0x1b + PE_IndicatorHeaderArrow : QStyle.PrimitiveElement = ... # 0x1c + PE_IndicatorMenuCheckMark: QStyle.PrimitiveElement = ... # 0x1d + PE_IndicatorProgressChunk: QStyle.PrimitiveElement = ... # 0x1e + PE_IndicatorRadioButton : QStyle.PrimitiveElement = ... # 0x1f + PE_IndicatorSpinDown : QStyle.PrimitiveElement = ... # 0x20 + PE_IndicatorSpinMinus : QStyle.PrimitiveElement = ... # 0x21 + PE_IndicatorSpinPlus : QStyle.PrimitiveElement = ... # 0x22 + PE_IndicatorSpinUp : QStyle.PrimitiveElement = ... # 0x23 + PE_IndicatorToolBarHandle: QStyle.PrimitiveElement = ... # 0x24 + PE_IndicatorToolBarSeparator: QStyle.PrimitiveElement = ... # 0x25 + PE_PanelTipLabel : QStyle.PrimitiveElement = ... # 0x26 + PE_IndicatorTabTear : QStyle.PrimitiveElement = ... # 0x27 + PE_IndicatorTabTearLeft : QStyle.PrimitiveElement = ... # 0x27 + PE_PanelScrollAreaCorner : QStyle.PrimitiveElement = ... # 0x28 + PE_Widget : QStyle.PrimitiveElement = ... # 0x29 + PE_IndicatorColumnViewArrow: QStyle.PrimitiveElement = ... # 0x2a + PE_IndicatorItemViewItemDrop: QStyle.PrimitiveElement = ... # 0x2b + PE_PanelItemViewItem : QStyle.PrimitiveElement = ... # 0x2c + PE_PanelItemViewRow : QStyle.PrimitiveElement = ... # 0x2d + PE_PanelStatusBar : QStyle.PrimitiveElement = ... # 0x2e + PE_IndicatorTabClose : QStyle.PrimitiveElement = ... # 0x2f + PE_PanelMenu : QStyle.PrimitiveElement = ... # 0x30 + PE_IndicatorTabTearRight : QStyle.PrimitiveElement = ... # 0x31 + PE_CustomBase : QStyle.PrimitiveElement = ... # 0xf000000 + + class RequestSoftwareInputPanel(object): + RSIP_OnMouseClickAndAlreadyFocused: QStyle.RequestSoftwareInputPanel = ... # 0x0 + RSIP_OnMouseClick : QStyle.RequestSoftwareInputPanel = ... # 0x1 + + class StandardPixmap(object): + SP_CustomBase : QStyle.StandardPixmap = ... # -0x10000000 + SP_TitleBarMenuButton : QStyle.StandardPixmap = ... # 0x0 + SP_TitleBarMinButton : QStyle.StandardPixmap = ... # 0x1 + SP_TitleBarMaxButton : QStyle.StandardPixmap = ... # 0x2 + SP_TitleBarCloseButton : QStyle.StandardPixmap = ... # 0x3 + SP_TitleBarNormalButton : QStyle.StandardPixmap = ... # 0x4 + SP_TitleBarShadeButton : QStyle.StandardPixmap = ... # 0x5 + SP_TitleBarUnshadeButton : QStyle.StandardPixmap = ... # 0x6 + SP_TitleBarContextHelpButton: QStyle.StandardPixmap = ... # 0x7 + SP_DockWidgetCloseButton : QStyle.StandardPixmap = ... # 0x8 + SP_MessageBoxInformation : QStyle.StandardPixmap = ... # 0x9 + SP_MessageBoxWarning : QStyle.StandardPixmap = ... # 0xa + SP_MessageBoxCritical : QStyle.StandardPixmap = ... # 0xb + SP_MessageBoxQuestion : QStyle.StandardPixmap = ... # 0xc + SP_DesktopIcon : QStyle.StandardPixmap = ... # 0xd + SP_TrashIcon : QStyle.StandardPixmap = ... # 0xe + SP_ComputerIcon : QStyle.StandardPixmap = ... # 0xf + SP_DriveFDIcon : QStyle.StandardPixmap = ... # 0x10 + SP_DriveHDIcon : QStyle.StandardPixmap = ... # 0x11 + SP_DriveCDIcon : QStyle.StandardPixmap = ... # 0x12 + SP_DriveDVDIcon : QStyle.StandardPixmap = ... # 0x13 + SP_DriveNetIcon : QStyle.StandardPixmap = ... # 0x14 + SP_DirOpenIcon : QStyle.StandardPixmap = ... # 0x15 + SP_DirClosedIcon : QStyle.StandardPixmap = ... # 0x16 + SP_DirLinkIcon : QStyle.StandardPixmap = ... # 0x17 + SP_DirLinkOpenIcon : QStyle.StandardPixmap = ... # 0x18 + SP_FileIcon : QStyle.StandardPixmap = ... # 0x19 + SP_FileLinkIcon : QStyle.StandardPixmap = ... # 0x1a + SP_ToolBarHorizontalExtensionButton: QStyle.StandardPixmap = ... # 0x1b + SP_ToolBarVerticalExtensionButton: QStyle.StandardPixmap = ... # 0x1c + SP_FileDialogStart : QStyle.StandardPixmap = ... # 0x1d + SP_FileDialogEnd : QStyle.StandardPixmap = ... # 0x1e + SP_FileDialogToParent : QStyle.StandardPixmap = ... # 0x1f + SP_FileDialogNewFolder : QStyle.StandardPixmap = ... # 0x20 + SP_FileDialogDetailedView: QStyle.StandardPixmap = ... # 0x21 + SP_FileDialogInfoView : QStyle.StandardPixmap = ... # 0x22 + SP_FileDialogContentsView: QStyle.StandardPixmap = ... # 0x23 + SP_FileDialogListView : QStyle.StandardPixmap = ... # 0x24 + SP_FileDialogBack : QStyle.StandardPixmap = ... # 0x25 + SP_DirIcon : QStyle.StandardPixmap = ... # 0x26 + SP_DialogOkButton : QStyle.StandardPixmap = ... # 0x27 + SP_DialogCancelButton : QStyle.StandardPixmap = ... # 0x28 + SP_DialogHelpButton : QStyle.StandardPixmap = ... # 0x29 + SP_DialogOpenButton : QStyle.StandardPixmap = ... # 0x2a + SP_DialogSaveButton : QStyle.StandardPixmap = ... # 0x2b + SP_DialogCloseButton : QStyle.StandardPixmap = ... # 0x2c + SP_DialogApplyButton : QStyle.StandardPixmap = ... # 0x2d + SP_DialogResetButton : QStyle.StandardPixmap = ... # 0x2e + SP_DialogDiscardButton : QStyle.StandardPixmap = ... # 0x2f + SP_DialogYesButton : QStyle.StandardPixmap = ... # 0x30 + SP_DialogNoButton : QStyle.StandardPixmap = ... # 0x31 + SP_ArrowUp : QStyle.StandardPixmap = ... # 0x32 + SP_ArrowDown : QStyle.StandardPixmap = ... # 0x33 + SP_ArrowLeft : QStyle.StandardPixmap = ... # 0x34 + SP_ArrowRight : QStyle.StandardPixmap = ... # 0x35 + SP_ArrowBack : QStyle.StandardPixmap = ... # 0x36 + SP_ArrowForward : QStyle.StandardPixmap = ... # 0x37 + SP_DirHomeIcon : QStyle.StandardPixmap = ... # 0x38 + SP_CommandLink : QStyle.StandardPixmap = ... # 0x39 + SP_VistaShield : QStyle.StandardPixmap = ... # 0x3a + SP_BrowserReload : QStyle.StandardPixmap = ... # 0x3b + SP_BrowserStop : QStyle.StandardPixmap = ... # 0x3c + SP_MediaPlay : QStyle.StandardPixmap = ... # 0x3d + SP_MediaStop : QStyle.StandardPixmap = ... # 0x3e + SP_MediaPause : QStyle.StandardPixmap = ... # 0x3f + SP_MediaSkipForward : QStyle.StandardPixmap = ... # 0x40 + SP_MediaSkipBackward : QStyle.StandardPixmap = ... # 0x41 + SP_MediaSeekForward : QStyle.StandardPixmap = ... # 0x42 + SP_MediaSeekBackward : QStyle.StandardPixmap = ... # 0x43 + SP_MediaVolume : QStyle.StandardPixmap = ... # 0x44 + SP_MediaVolumeMuted : QStyle.StandardPixmap = ... # 0x45 + SP_LineEditClearButton : QStyle.StandardPixmap = ... # 0x46 + SP_DialogYesToAllButton : QStyle.StandardPixmap = ... # 0x47 + SP_DialogNoToAllButton : QStyle.StandardPixmap = ... # 0x48 + SP_DialogSaveAllButton : QStyle.StandardPixmap = ... # 0x49 + SP_DialogAbortButton : QStyle.StandardPixmap = ... # 0x4a + SP_DialogRetryButton : QStyle.StandardPixmap = ... # 0x4b + SP_DialogIgnoreButton : QStyle.StandardPixmap = ... # 0x4c + SP_RestoreDefaultsButton : QStyle.StandardPixmap = ... # 0x4d + + class State(object): ... + + class StateFlag(object): + State_None : QStyle.StateFlag = ... # 0x0 + State_Enabled : QStyle.StateFlag = ... # 0x1 + State_Raised : QStyle.StateFlag = ... # 0x2 + State_Sunken : QStyle.StateFlag = ... # 0x4 + State_Off : QStyle.StateFlag = ... # 0x8 + State_NoChange : QStyle.StateFlag = ... # 0x10 + State_On : QStyle.StateFlag = ... # 0x20 + State_DownArrow : QStyle.StateFlag = ... # 0x40 + State_Horizontal : QStyle.StateFlag = ... # 0x80 + State_HasFocus : QStyle.StateFlag = ... # 0x100 + State_Top : QStyle.StateFlag = ... # 0x200 + State_Bottom : QStyle.StateFlag = ... # 0x400 + State_FocusAtBorder : QStyle.StateFlag = ... # 0x800 + State_AutoRaise : QStyle.StateFlag = ... # 0x1000 + State_MouseOver : QStyle.StateFlag = ... # 0x2000 + State_UpArrow : QStyle.StateFlag = ... # 0x4000 + State_Selected : QStyle.StateFlag = ... # 0x8000 + State_Active : QStyle.StateFlag = ... # 0x10000 + State_Window : QStyle.StateFlag = ... # 0x20000 + State_Open : QStyle.StateFlag = ... # 0x40000 + State_Children : QStyle.StateFlag = ... # 0x80000 + State_Item : QStyle.StateFlag = ... # 0x100000 + State_Sibling : QStyle.StateFlag = ... # 0x200000 + State_Editing : QStyle.StateFlag = ... # 0x400000 + State_KeyboardFocusChange: QStyle.StateFlag = ... # 0x800000 + State_ReadOnly : QStyle.StateFlag = ... # 0x2000000 + State_Small : QStyle.StateFlag = ... # 0x4000000 + State_Mini : QStyle.StateFlag = ... # 0x8000000 + + class StyleHint(object): + SH_CustomBase : QStyle.StyleHint = ... # -0x10000000 + SH_EtchDisabledText : QStyle.StyleHint = ... # 0x0 + SH_DitherDisabledText : QStyle.StyleHint = ... # 0x1 + SH_ScrollBar_MiddleClickAbsolutePosition: QStyle.StyleHint = ... # 0x2 + SH_ScrollBar_ScrollWhenPointerLeavesControl: QStyle.StyleHint = ... # 0x3 + SH_TabBar_SelectMouseType: QStyle.StyleHint = ... # 0x4 + SH_TabBar_Alignment : QStyle.StyleHint = ... # 0x5 + SH_Header_ArrowAlignment : QStyle.StyleHint = ... # 0x6 + SH_Slider_SnapToValue : QStyle.StyleHint = ... # 0x7 + SH_Slider_SloppyKeyEvents: QStyle.StyleHint = ... # 0x8 + SH_ProgressDialog_CenterCancelButton: QStyle.StyleHint = ... # 0x9 + SH_ProgressDialog_TextLabelAlignment: QStyle.StyleHint = ... # 0xa + SH_PrintDialog_RightAlignButtons: QStyle.StyleHint = ... # 0xb + SH_MainWindow_SpaceBelowMenuBar: QStyle.StyleHint = ... # 0xc + SH_FontDialog_SelectAssociatedText: QStyle.StyleHint = ... # 0xd + SH_Menu_AllowActiveAndDisabled: QStyle.StyleHint = ... # 0xe + SH_Menu_SpaceActivatesItem: QStyle.StyleHint = ... # 0xf + SH_Menu_SubMenuPopupDelay: QStyle.StyleHint = ... # 0x10 + SH_ScrollView_FrameOnlyAroundContents: QStyle.StyleHint = ... # 0x11 + SH_MenuBar_AltKeyNavigation: QStyle.StyleHint = ... # 0x12 + SH_ComboBox_ListMouseTracking: QStyle.StyleHint = ... # 0x13 + SH_Menu_MouseTracking : QStyle.StyleHint = ... # 0x14 + SH_MenuBar_MouseTracking : QStyle.StyleHint = ... # 0x15 + SH_ItemView_ChangeHighlightOnFocus: QStyle.StyleHint = ... # 0x16 + SH_Widget_ShareActivation: QStyle.StyleHint = ... # 0x17 + SH_Workspace_FillSpaceOnMaximize: QStyle.StyleHint = ... # 0x18 + SH_ComboBox_Popup : QStyle.StyleHint = ... # 0x19 + SH_TitleBar_NoBorder : QStyle.StyleHint = ... # 0x1a + SH_ScrollBar_StopMouseOverSlider: QStyle.StyleHint = ... # 0x1b + SH_Slider_StopMouseOverSlider: QStyle.StyleHint = ... # 0x1b + SH_BlinkCursorWhenTextSelected: QStyle.StyleHint = ... # 0x1c + SH_RichText_FullWidthSelection: QStyle.StyleHint = ... # 0x1d + SH_Menu_Scrollable : QStyle.StyleHint = ... # 0x1e + SH_GroupBox_TextLabelVerticalAlignment: QStyle.StyleHint = ... # 0x1f + SH_GroupBox_TextLabelColor: QStyle.StyleHint = ... # 0x20 + SH_Menu_SloppySubMenus : QStyle.StyleHint = ... # 0x21 + SH_Table_GridLineColor : QStyle.StyleHint = ... # 0x22 + SH_LineEdit_PasswordCharacter: QStyle.StyleHint = ... # 0x23 + SH_DialogButtons_DefaultButton: QStyle.StyleHint = ... # 0x24 + SH_ToolBox_SelectedPageTitleBold: QStyle.StyleHint = ... # 0x25 + SH_TabBar_PreferNoArrows : QStyle.StyleHint = ... # 0x26 + SH_ScrollBar_LeftClickAbsolutePosition: QStyle.StyleHint = ... # 0x27 + SH_ListViewExpand_SelectMouseType: QStyle.StyleHint = ... # 0x28 + SH_UnderlineShortcut : QStyle.StyleHint = ... # 0x29 + SH_SpinBox_AnimateButton : QStyle.StyleHint = ... # 0x2a + SH_SpinBox_KeyPressAutoRepeatRate: QStyle.StyleHint = ... # 0x2b + SH_SpinBox_ClickAutoRepeatRate: QStyle.StyleHint = ... # 0x2c + SH_Menu_FillScreenWithScroll: QStyle.StyleHint = ... # 0x2d + SH_ToolTipLabel_Opacity : QStyle.StyleHint = ... # 0x2e + SH_DrawMenuBarSeparator : QStyle.StyleHint = ... # 0x2f + SH_TitleBar_ModifyNotification: QStyle.StyleHint = ... # 0x30 + SH_Button_FocusPolicy : QStyle.StyleHint = ... # 0x31 + SH_MessageBox_UseBorderForButtonSpacing: QStyle.StyleHint = ... # 0x32 + SH_TitleBar_AutoRaise : QStyle.StyleHint = ... # 0x33 + SH_ToolButton_PopupDelay : QStyle.StyleHint = ... # 0x34 + SH_FocusFrame_Mask : QStyle.StyleHint = ... # 0x35 + SH_RubberBand_Mask : QStyle.StyleHint = ... # 0x36 + SH_WindowFrame_Mask : QStyle.StyleHint = ... # 0x37 + SH_SpinControls_DisableOnBounds: QStyle.StyleHint = ... # 0x38 + SH_Dial_BackgroundRole : QStyle.StyleHint = ... # 0x39 + SH_ComboBox_LayoutDirection: QStyle.StyleHint = ... # 0x3a + SH_ItemView_EllipsisLocation: QStyle.StyleHint = ... # 0x3b + SH_ItemView_ShowDecorationSelected: QStyle.StyleHint = ... # 0x3c + SH_ItemView_ActivateItemOnSingleClick: QStyle.StyleHint = ... # 0x3d + SH_ScrollBar_ContextMenu : QStyle.StyleHint = ... # 0x3e + SH_ScrollBar_RollBetweenButtons: QStyle.StyleHint = ... # 0x3f + SH_Slider_AbsoluteSetButtons: QStyle.StyleHint = ... # 0x40 + SH_Slider_PageSetButtons : QStyle.StyleHint = ... # 0x41 + SH_Menu_KeyboardSearch : QStyle.StyleHint = ... # 0x42 + SH_TabBar_ElideMode : QStyle.StyleHint = ... # 0x43 + SH_DialogButtonLayout : QStyle.StyleHint = ... # 0x44 + SH_ComboBox_PopupFrameStyle: QStyle.StyleHint = ... # 0x45 + SH_MessageBox_TextInteractionFlags: QStyle.StyleHint = ... # 0x46 + SH_DialogButtonBox_ButtonsHaveIcons: QStyle.StyleHint = ... # 0x47 + SH_SpellCheckUnderlineStyle: QStyle.StyleHint = ... # 0x48 + SH_MessageBox_CenterButtons: QStyle.StyleHint = ... # 0x49 + SH_Menu_SelectionWrap : QStyle.StyleHint = ... # 0x4a + SH_ItemView_MovementWithoutUpdatingSelection: QStyle.StyleHint = ... # 0x4b + SH_ToolTip_Mask : QStyle.StyleHint = ... # 0x4c + SH_FocusFrame_AboveWidget: QStyle.StyleHint = ... # 0x4d + SH_TextControl_FocusIndicatorTextCharFormat: QStyle.StyleHint = ... # 0x4e + SH_WizardStyle : QStyle.StyleHint = ... # 0x4f + SH_ItemView_ArrowKeysNavigateIntoChildren: QStyle.StyleHint = ... # 0x50 + SH_Menu_Mask : QStyle.StyleHint = ... # 0x51 + SH_Menu_FlashTriggeredItem: QStyle.StyleHint = ... # 0x52 + SH_Menu_FadeOutOnHide : QStyle.StyleHint = ... # 0x53 + SH_SpinBox_ClickAutoRepeatThreshold: QStyle.StyleHint = ... # 0x54 + SH_ItemView_PaintAlternatingRowColorsForEmptyArea: QStyle.StyleHint = ... # 0x55 + SH_FormLayoutWrapPolicy : QStyle.StyleHint = ... # 0x56 + SH_TabWidget_DefaultTabPosition: QStyle.StyleHint = ... # 0x57 + SH_ToolBar_Movable : QStyle.StyleHint = ... # 0x58 + SH_FormLayoutFieldGrowthPolicy: QStyle.StyleHint = ... # 0x59 + SH_FormLayoutFormAlignment: QStyle.StyleHint = ... # 0x5a + SH_FormLayoutLabelAlignment: QStyle.StyleHint = ... # 0x5b + SH_ItemView_DrawDelegateFrame: QStyle.StyleHint = ... # 0x5c + SH_TabBar_CloseButtonPosition: QStyle.StyleHint = ... # 0x5d + SH_DockWidget_ButtonsHaveFrame: QStyle.StyleHint = ... # 0x5e + SH_ToolButtonStyle : QStyle.StyleHint = ... # 0x5f + SH_RequestSoftwareInputPanel: QStyle.StyleHint = ... # 0x60 + SH_ScrollBar_Transient : QStyle.StyleHint = ... # 0x61 + SH_Menu_SupportsSections : QStyle.StyleHint = ... # 0x62 + SH_ToolTip_WakeUpDelay : QStyle.StyleHint = ... # 0x63 + SH_ToolTip_FallAsleepDelay: QStyle.StyleHint = ... # 0x64 + SH_Widget_Animate : QStyle.StyleHint = ... # 0x65 + SH_Splitter_OpaqueResize : QStyle.StyleHint = ... # 0x66 + SH_ComboBox_UseNativePopup: QStyle.StyleHint = ... # 0x67 + SH_LineEdit_PasswordMaskDelay: QStyle.StyleHint = ... # 0x68 + SH_TabBar_ChangeCurrentDelay: QStyle.StyleHint = ... # 0x69 + SH_Menu_SubMenuUniDirection: QStyle.StyleHint = ... # 0x6a + SH_Menu_SubMenuUniDirectionFailCount: QStyle.StyleHint = ... # 0x6b + SH_Menu_SubMenuSloppySelectOtherActions: QStyle.StyleHint = ... # 0x6c + SH_Menu_SubMenuSloppyCloseTimeout: QStyle.StyleHint = ... # 0x6d + SH_Menu_SubMenuResetWhenReenteringParent: QStyle.StyleHint = ... # 0x6e + SH_Menu_SubMenuDontStartSloppyOnLeave: QStyle.StyleHint = ... # 0x6f + SH_ItemView_ScrollMode : QStyle.StyleHint = ... # 0x70 + SH_TitleBar_ShowToolTipsOnButtons: QStyle.StyleHint = ... # 0x71 + SH_Widget_Animation_Duration: QStyle.StyleHint = ... # 0x72 + SH_ComboBox_AllowWheelScrolling: QStyle.StyleHint = ... # 0x73 + SH_SpinBox_ButtonsInsideFrame: QStyle.StyleHint = ... # 0x74 + SH_SpinBox_StepModifier : QStyle.StyleHint = ... # 0x75 + + class SubControl(object): + SC_CustomBase : QStyle.SubControl = ... # -0x10000000 + SC_All : QStyle.SubControl = ... # -0x1 + SC_None : QStyle.SubControl = ... # 0x0 + SC_ComboBoxFrame : QStyle.SubControl = ... # 0x1 + SC_DialGroove : QStyle.SubControl = ... # 0x1 + SC_GroupBoxCheckBox : QStyle.SubControl = ... # 0x1 + SC_MdiMinButton : QStyle.SubControl = ... # 0x1 + SC_ScrollBarAddLine : QStyle.SubControl = ... # 0x1 + SC_SliderGroove : QStyle.SubControl = ... # 0x1 + SC_SpinBoxUp : QStyle.SubControl = ... # 0x1 + SC_TitleBarSysMenu : QStyle.SubControl = ... # 0x1 + SC_ToolButton : QStyle.SubControl = ... # 0x1 + SC_ComboBoxEditField : QStyle.SubControl = ... # 0x2 + SC_DialHandle : QStyle.SubControl = ... # 0x2 + SC_GroupBoxLabel : QStyle.SubControl = ... # 0x2 + SC_MdiNormalButton : QStyle.SubControl = ... # 0x2 + SC_ScrollBarSubLine : QStyle.SubControl = ... # 0x2 + SC_SliderHandle : QStyle.SubControl = ... # 0x2 + SC_SpinBoxDown : QStyle.SubControl = ... # 0x2 + SC_TitleBarMinButton : QStyle.SubControl = ... # 0x2 + SC_ToolButtonMenu : QStyle.SubControl = ... # 0x2 + SC_ComboBoxArrow : QStyle.SubControl = ... # 0x4 + SC_DialTickmarks : QStyle.SubControl = ... # 0x4 + SC_GroupBoxContents : QStyle.SubControl = ... # 0x4 + SC_MdiCloseButton : QStyle.SubControl = ... # 0x4 + SC_ScrollBarAddPage : QStyle.SubControl = ... # 0x4 + SC_SliderTickmarks : QStyle.SubControl = ... # 0x4 + SC_SpinBoxFrame : QStyle.SubControl = ... # 0x4 + SC_TitleBarMaxButton : QStyle.SubControl = ... # 0x4 + SC_ComboBoxListBoxPopup : QStyle.SubControl = ... # 0x8 + SC_GroupBoxFrame : QStyle.SubControl = ... # 0x8 + SC_ScrollBarSubPage : QStyle.SubControl = ... # 0x8 + SC_SpinBoxEditField : QStyle.SubControl = ... # 0x8 + SC_TitleBarCloseButton : QStyle.SubControl = ... # 0x8 + SC_ScrollBarFirst : QStyle.SubControl = ... # 0x10 + SC_TitleBarNormalButton : QStyle.SubControl = ... # 0x10 + SC_ScrollBarLast : QStyle.SubControl = ... # 0x20 + SC_TitleBarShadeButton : QStyle.SubControl = ... # 0x20 + SC_ScrollBarSlider : QStyle.SubControl = ... # 0x40 + SC_TitleBarUnshadeButton : QStyle.SubControl = ... # 0x40 + SC_ScrollBarGroove : QStyle.SubControl = ... # 0x80 + SC_TitleBarContextHelpButton: QStyle.SubControl = ... # 0x80 + SC_TitleBarLabel : QStyle.SubControl = ... # 0x100 + + class SubControls(object): ... + + class SubElement(object): + SE_CustomBase : QStyle.SubElement = ... # -0x10000000 + SE_PushButtonContents : QStyle.SubElement = ... # 0x0 + SE_PushButtonFocusRect : QStyle.SubElement = ... # 0x1 + SE_CheckBoxIndicator : QStyle.SubElement = ... # 0x2 + SE_CheckBoxContents : QStyle.SubElement = ... # 0x3 + SE_CheckBoxFocusRect : QStyle.SubElement = ... # 0x4 + SE_CheckBoxClickRect : QStyle.SubElement = ... # 0x5 + SE_RadioButtonIndicator : QStyle.SubElement = ... # 0x6 + SE_RadioButtonContents : QStyle.SubElement = ... # 0x7 + SE_RadioButtonFocusRect : QStyle.SubElement = ... # 0x8 + SE_RadioButtonClickRect : QStyle.SubElement = ... # 0x9 + SE_ComboBoxFocusRect : QStyle.SubElement = ... # 0xa + SE_SliderFocusRect : QStyle.SubElement = ... # 0xb + SE_ProgressBarGroove : QStyle.SubElement = ... # 0xc + SE_ProgressBarContents : QStyle.SubElement = ... # 0xd + SE_ProgressBarLabel : QStyle.SubElement = ... # 0xe + SE_ToolBoxTabContents : QStyle.SubElement = ... # 0xf + SE_HeaderLabel : QStyle.SubElement = ... # 0x10 + SE_HeaderArrow : QStyle.SubElement = ... # 0x11 + SE_TabWidgetTabBar : QStyle.SubElement = ... # 0x12 + SE_TabWidgetTabPane : QStyle.SubElement = ... # 0x13 + SE_TabWidgetTabContents : QStyle.SubElement = ... # 0x14 + SE_TabWidgetLeftCorner : QStyle.SubElement = ... # 0x15 + SE_TabWidgetRightCorner : QStyle.SubElement = ... # 0x16 + SE_ItemViewItemCheckIndicator: QStyle.SubElement = ... # 0x17 + SE_ViewItemCheckIndicator: QStyle.SubElement = ... # 0x17 + SE_TabBarTearIndicator : QStyle.SubElement = ... # 0x18 + SE_TabBarTearIndicatorLeft: QStyle.SubElement = ... # 0x18 + SE_TreeViewDisclosureItem: QStyle.SubElement = ... # 0x19 + SE_LineEditContents : QStyle.SubElement = ... # 0x1a + SE_FrameContents : QStyle.SubElement = ... # 0x1b + SE_DockWidgetCloseButton : QStyle.SubElement = ... # 0x1c + SE_DockWidgetFloatButton : QStyle.SubElement = ... # 0x1d + SE_DockWidgetTitleBarText: QStyle.SubElement = ... # 0x1e + SE_DockWidgetIcon : QStyle.SubElement = ... # 0x1f + SE_CheckBoxLayoutItem : QStyle.SubElement = ... # 0x20 + SE_ComboBoxLayoutItem : QStyle.SubElement = ... # 0x21 + SE_DateTimeEditLayoutItem: QStyle.SubElement = ... # 0x22 + SE_DialogButtonBoxLayoutItem: QStyle.SubElement = ... # 0x23 + SE_LabelLayoutItem : QStyle.SubElement = ... # 0x24 + SE_ProgressBarLayoutItem : QStyle.SubElement = ... # 0x25 + SE_PushButtonLayoutItem : QStyle.SubElement = ... # 0x26 + SE_RadioButtonLayoutItem : QStyle.SubElement = ... # 0x27 + SE_SliderLayoutItem : QStyle.SubElement = ... # 0x28 + SE_SpinBoxLayoutItem : QStyle.SubElement = ... # 0x29 + SE_ToolButtonLayoutItem : QStyle.SubElement = ... # 0x2a + SE_FrameLayoutItem : QStyle.SubElement = ... # 0x2b + SE_GroupBoxLayoutItem : QStyle.SubElement = ... # 0x2c + SE_TabWidgetLayoutItem : QStyle.SubElement = ... # 0x2d + SE_ItemViewItemDecoration: QStyle.SubElement = ... # 0x2e + SE_ItemViewItemText : QStyle.SubElement = ... # 0x2f + SE_ItemViewItemFocusRect : QStyle.SubElement = ... # 0x30 + SE_TabBarTabLeftButton : QStyle.SubElement = ... # 0x31 + SE_TabBarTabRightButton : QStyle.SubElement = ... # 0x32 + SE_TabBarTabText : QStyle.SubElement = ... # 0x33 + SE_ShapedFrameContents : QStyle.SubElement = ... # 0x34 + SE_ToolBarHandle : QStyle.SubElement = ... # 0x35 + SE_TabBarScrollLeftButton: QStyle.SubElement = ... # 0x36 + SE_TabBarScrollRightButton: QStyle.SubElement = ... # 0x37 + SE_TabBarTearIndicatorRight: QStyle.SubElement = ... # 0x38 + SE_PushButtonBevel : QStyle.SubElement = ... # 0x39 + + def __init__(self) -> None: ... + + @staticmethod + def alignedRect(direction:PySide2.QtCore.Qt.LayoutDirection, alignment:PySide2.QtCore.Qt.Alignment, size:PySide2.QtCore.QSize, rectangle:PySide2.QtCore.QRect) -> PySide2.QtCore.QRect: ... + def combinedLayoutSpacing(self, controls1:PySide2.QtWidgets.QSizePolicy.ControlTypes, controls2:PySide2.QtWidgets.QSizePolicy.ControlTypes, orientation:PySide2.QtCore.Qt.Orientation, option:typing.Optional[PySide2.QtWidgets.QStyleOption]=..., widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> int: ... + def drawComplexControl(self, cc:PySide2.QtWidgets.QStyle.ComplexControl, opt:PySide2.QtWidgets.QStyleOptionComplex, p:PySide2.QtGui.QPainter, widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + def drawControl(self, element:PySide2.QtWidgets.QStyle.ControlElement, opt:PySide2.QtWidgets.QStyleOption, p:PySide2.QtGui.QPainter, widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + def drawItemPixmap(self, painter:PySide2.QtGui.QPainter, rect:PySide2.QtCore.QRect, alignment:int, pixmap:PySide2.QtGui.QPixmap) -> None: ... + def drawItemText(self, painter:PySide2.QtGui.QPainter, rect:PySide2.QtCore.QRect, flags:int, pal:PySide2.QtGui.QPalette, enabled:bool, text:str, textRole:PySide2.QtGui.QPalette.ColorRole=...) -> None: ... + def drawPrimitive(self, pe:PySide2.QtWidgets.QStyle.PrimitiveElement, opt:PySide2.QtWidgets.QStyleOption, p:PySide2.QtGui.QPainter, widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + def generatedIconPixmap(self, iconMode:PySide2.QtGui.QIcon.Mode, pixmap:PySide2.QtGui.QPixmap, opt:PySide2.QtWidgets.QStyleOption) -> PySide2.QtGui.QPixmap: ... + def hitTestComplexControl(self, cc:PySide2.QtWidgets.QStyle.ComplexControl, opt:PySide2.QtWidgets.QStyleOptionComplex, pt:PySide2.QtCore.QPoint, widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> PySide2.QtWidgets.QStyle.SubControl: ... + def itemPixmapRect(self, r:PySide2.QtCore.QRect, flags:int, pixmap:PySide2.QtGui.QPixmap) -> PySide2.QtCore.QRect: ... + def itemTextRect(self, fm:PySide2.QtGui.QFontMetrics, r:PySide2.QtCore.QRect, flags:int, enabled:bool, text:str) -> PySide2.QtCore.QRect: ... + def layoutSpacing(self, control1:PySide2.QtWidgets.QSizePolicy.ControlType, control2:PySide2.QtWidgets.QSizePolicy.ControlType, orientation:PySide2.QtCore.Qt.Orientation, option:typing.Optional[PySide2.QtWidgets.QStyleOption]=..., widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> int: ... + def pixelMetric(self, metric:PySide2.QtWidgets.QStyle.PixelMetric, option:typing.Optional[PySide2.QtWidgets.QStyleOption]=..., widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> int: ... + @typing.overload + def polish(self, application:PySide2.QtWidgets.QApplication) -> None: ... + @typing.overload + def polish(self, palette:PySide2.QtGui.QPalette) -> None: ... + @typing.overload + def polish(self, widget:PySide2.QtWidgets.QWidget) -> None: ... + def proxy(self) -> PySide2.QtWidgets.QStyle: ... + def sizeFromContents(self, ct:PySide2.QtWidgets.QStyle.ContentsType, opt:PySide2.QtWidgets.QStyleOption, contentsSize:PySide2.QtCore.QSize, w:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> PySide2.QtCore.QSize: ... + @staticmethod + def sliderPositionFromValue(min:int, max:int, val:int, space:int, upsideDown:bool=...) -> int: ... + @staticmethod + def sliderValueFromPosition(min:int, max:int, pos:int, space:int, upsideDown:bool=...) -> int: ... + def standardIcon(self, standardIcon:PySide2.QtWidgets.QStyle.StandardPixmap, option:typing.Optional[PySide2.QtWidgets.QStyleOption]=..., widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> PySide2.QtGui.QIcon: ... + def standardPalette(self) -> PySide2.QtGui.QPalette: ... + def standardPixmap(self, standardPixmap:PySide2.QtWidgets.QStyle.StandardPixmap, opt:typing.Optional[PySide2.QtWidgets.QStyleOption]=..., widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> PySide2.QtGui.QPixmap: ... + def styleHint(self, stylehint:PySide2.QtWidgets.QStyle.StyleHint, opt:typing.Optional[PySide2.QtWidgets.QStyleOption]=..., widget:typing.Optional[PySide2.QtWidgets.QWidget]=..., returnData:typing.Optional[PySide2.QtWidgets.QStyleHintReturn]=...) -> int: ... + def subControlRect(self, cc:PySide2.QtWidgets.QStyle.ComplexControl, opt:PySide2.QtWidgets.QStyleOptionComplex, sc:PySide2.QtWidgets.QStyle.SubControl, widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> PySide2.QtCore.QRect: ... + def subElementRect(self, subElement:PySide2.QtWidgets.QStyle.SubElement, option:PySide2.QtWidgets.QStyleOption, widget:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> PySide2.QtCore.QRect: ... + @typing.overload + def unpolish(self, application:PySide2.QtWidgets.QApplication) -> None: ... + @typing.overload + def unpolish(self, widget:PySide2.QtWidgets.QWidget) -> None: ... + @staticmethod + def visualAlignment(direction:PySide2.QtCore.Qt.LayoutDirection, alignment:PySide2.QtCore.Qt.Alignment) -> PySide2.QtCore.Qt.Alignment: ... + @staticmethod + def visualPos(direction:PySide2.QtCore.Qt.LayoutDirection, boundingRect:PySide2.QtCore.QRect, logicalPos:PySide2.QtCore.QPoint) -> PySide2.QtCore.QPoint: ... + @staticmethod + def visualRect(direction:PySide2.QtCore.Qt.LayoutDirection, boundingRect:PySide2.QtCore.QRect, logicalRect:PySide2.QtCore.QRect) -> PySide2.QtCore.QRect: ... + + +class QStyleFactory(Shiboken.Object): + + def __init__(self) -> None: ... + + @staticmethod + def create(arg__1:str) -> PySide2.QtWidgets.QStyle: ... + @staticmethod + def keys() -> typing.List: ... + + +class QStyleHintReturn(Shiboken.Object): + Version : QStyleHintReturn = ... # 0x1 + SH_Default : QStyleHintReturn = ... # 0xf000 + Type : QStyleHintReturn = ... # 0xf000 + SH_Mask : QStyleHintReturn = ... # 0xf001 + SH_Variant : QStyleHintReturn = ... # 0xf002 + + class HintReturnType(object): + SH_Default : QStyleHintReturn.HintReturnType = ... # 0xf000 + SH_Mask : QStyleHintReturn.HintReturnType = ... # 0xf001 + SH_Variant : QStyleHintReturn.HintReturnType = ... # 0xf002 + + class StyleOptionType(object): + Type : QStyleHintReturn.StyleOptionType = ... # 0xf000 + + class StyleOptionVersion(object): + Version : QStyleHintReturn.StyleOptionVersion = ... # 0x1 + + def __init__(self, version:int=..., type:int=...) -> None: ... + + +class QStyleHintReturnMask(PySide2.QtWidgets.QStyleHintReturn): + Version : QStyleHintReturnMask = ... # 0x1 + Type : QStyleHintReturnMask = ... # 0xf001 + + class StyleOptionType(object): + Type : QStyleHintReturnMask.StyleOptionType = ... # 0xf001 + + class StyleOptionVersion(object): + Version : QStyleHintReturnMask.StyleOptionVersion = ... # 0x1 + + def __init__(self) -> None: ... + + +class QStyleHintReturnVariant(PySide2.QtWidgets.QStyleHintReturn): + Version : QStyleHintReturnVariant = ... # 0x1 + Type : QStyleHintReturnVariant = ... # 0xf002 + + class StyleOptionType(object): + Type : QStyleHintReturnVariant.StyleOptionType = ... # 0xf002 + + class StyleOptionVersion(object): + Version : QStyleHintReturnVariant.StyleOptionVersion = ... # 0x1 + + def __init__(self) -> None: ... + + +class QStyleOption(Shiboken.Object): + SO_Default : QStyleOption = ... # 0x0 + Type : QStyleOption = ... # 0x0 + SO_FocusRect : QStyleOption = ... # 0x1 + Version : QStyleOption = ... # 0x1 + SO_Button : QStyleOption = ... # 0x2 + SO_Tab : QStyleOption = ... # 0x3 + SO_MenuItem : QStyleOption = ... # 0x4 + SO_Frame : QStyleOption = ... # 0x5 + SO_ProgressBar : QStyleOption = ... # 0x6 + SO_ToolBox : QStyleOption = ... # 0x7 + SO_Header : QStyleOption = ... # 0x8 + SO_DockWidget : QStyleOption = ... # 0x9 + SO_ViewItem : QStyleOption = ... # 0xa + SO_TabWidgetFrame : QStyleOption = ... # 0xb + SO_TabBarBase : QStyleOption = ... # 0xc + SO_RubberBand : QStyleOption = ... # 0xd + SO_ToolBar : QStyleOption = ... # 0xe + SO_GraphicsItem : QStyleOption = ... # 0xf + SO_CustomBase : QStyleOption = ... # 0xf00 + SO_Complex : QStyleOption = ... # 0xf0000 + SO_Slider : QStyleOption = ... # 0xf0001 + SO_SpinBox : QStyleOption = ... # 0xf0002 + SO_ToolButton : QStyleOption = ... # 0xf0003 + SO_ComboBox : QStyleOption = ... # 0xf0004 + SO_TitleBar : QStyleOption = ... # 0xf0005 + SO_GroupBox : QStyleOption = ... # 0xf0006 + SO_SizeGrip : QStyleOption = ... # 0xf0007 + SO_ComplexCustomBase : QStyleOption = ... # 0xf000000 + + class OptionType(object): + SO_Default : QStyleOption.OptionType = ... # 0x0 + SO_FocusRect : QStyleOption.OptionType = ... # 0x1 + SO_Button : QStyleOption.OptionType = ... # 0x2 + SO_Tab : QStyleOption.OptionType = ... # 0x3 + SO_MenuItem : QStyleOption.OptionType = ... # 0x4 + SO_Frame : QStyleOption.OptionType = ... # 0x5 + SO_ProgressBar : QStyleOption.OptionType = ... # 0x6 + SO_ToolBox : QStyleOption.OptionType = ... # 0x7 + SO_Header : QStyleOption.OptionType = ... # 0x8 + SO_DockWidget : QStyleOption.OptionType = ... # 0x9 + SO_ViewItem : QStyleOption.OptionType = ... # 0xa + SO_TabWidgetFrame : QStyleOption.OptionType = ... # 0xb + SO_TabBarBase : QStyleOption.OptionType = ... # 0xc + SO_RubberBand : QStyleOption.OptionType = ... # 0xd + SO_ToolBar : QStyleOption.OptionType = ... # 0xe + SO_GraphicsItem : QStyleOption.OptionType = ... # 0xf + SO_CustomBase : QStyleOption.OptionType = ... # 0xf00 + SO_Complex : QStyleOption.OptionType = ... # 0xf0000 + SO_Slider : QStyleOption.OptionType = ... # 0xf0001 + SO_SpinBox : QStyleOption.OptionType = ... # 0xf0002 + SO_ToolButton : QStyleOption.OptionType = ... # 0xf0003 + SO_ComboBox : QStyleOption.OptionType = ... # 0xf0004 + SO_TitleBar : QStyleOption.OptionType = ... # 0xf0005 + SO_GroupBox : QStyleOption.OptionType = ... # 0xf0006 + SO_SizeGrip : QStyleOption.OptionType = ... # 0xf0007 + SO_ComplexCustomBase : QStyleOption.OptionType = ... # 0xf000000 + + class StyleOptionType(object): + Type : QStyleOption.StyleOptionType = ... # 0x0 + + class StyleOptionVersion(object): + Version : QStyleOption.StyleOptionVersion = ... # 0x1 + + @typing.overload + def __init__(self, other:PySide2.QtWidgets.QStyleOption) -> None: ... + @typing.overload + def __init__(self, version:int=..., type:int=...) -> None: ... + + def init(self, w:PySide2.QtWidgets.QWidget) -> None: ... + def initFrom(self, w:PySide2.QtWidgets.QWidget) -> None: ... + + +class QStyleOptionButton(PySide2.QtWidgets.QStyleOption): + None_ : QStyleOptionButton = ... # 0x0 + Flat : QStyleOptionButton = ... # 0x1 + Version : QStyleOptionButton = ... # 0x1 + HasMenu : QStyleOptionButton = ... # 0x2 + Type : QStyleOptionButton = ... # 0x2 + DefaultButton : QStyleOptionButton = ... # 0x4 + AutoDefaultButton : QStyleOptionButton = ... # 0x8 + CommandLinkButton : QStyleOptionButton = ... # 0x10 + + class ButtonFeature(object): + None_ : QStyleOptionButton.ButtonFeature = ... # 0x0 + Flat : QStyleOptionButton.ButtonFeature = ... # 0x1 + HasMenu : QStyleOptionButton.ButtonFeature = ... # 0x2 + DefaultButton : QStyleOptionButton.ButtonFeature = ... # 0x4 + AutoDefaultButton : QStyleOptionButton.ButtonFeature = ... # 0x8 + CommandLinkButton : QStyleOptionButton.ButtonFeature = ... # 0x10 + + class ButtonFeatures(object): ... + + class StyleOptionType(object): + Type : QStyleOptionButton.StyleOptionType = ... # 0x2 + + class StyleOptionVersion(object): + Version : QStyleOptionButton.StyleOptionVersion = ... # 0x1 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtWidgets.QStyleOptionButton) -> None: ... + @typing.overload + def __init__(self, version:int) -> None: ... + + +class QStyleOptionComboBox(PySide2.QtWidgets.QStyleOptionComplex): + Version : QStyleOptionComboBox = ... # 0x1 + Type : QStyleOptionComboBox = ... # 0xf0004 + + class StyleOptionType(object): + Type : QStyleOptionComboBox.StyleOptionType = ... # 0xf0004 + + class StyleOptionVersion(object): + Version : QStyleOptionComboBox.StyleOptionVersion = ... # 0x1 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtWidgets.QStyleOptionComboBox) -> None: ... + @typing.overload + def __init__(self, version:int) -> None: ... + + +class QStyleOptionComplex(PySide2.QtWidgets.QStyleOption): + Version : QStyleOptionComplex = ... # 0x1 + Type : QStyleOptionComplex = ... # 0xf0000 + + class StyleOptionType(object): + Type : QStyleOptionComplex.StyleOptionType = ... # 0xf0000 + + class StyleOptionVersion(object): + Version : QStyleOptionComplex.StyleOptionVersion = ... # 0x1 + + @typing.overload + def __init__(self, other:PySide2.QtWidgets.QStyleOptionComplex) -> None: ... + @typing.overload + def __init__(self, version:int=..., type:int=...) -> None: ... + + +class QStyleOptionDockWidget(PySide2.QtWidgets.QStyleOption): + Version : QStyleOptionDockWidget = ... # 0x2 + Type : QStyleOptionDockWidget = ... # 0x9 + + class StyleOptionType(object): + Type : QStyleOptionDockWidget.StyleOptionType = ... # 0x9 + + class StyleOptionVersion(object): + Version : QStyleOptionDockWidget.StyleOptionVersion = ... # 0x2 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtWidgets.QStyleOptionDockWidget) -> None: ... + @typing.overload + def __init__(self, version:int) -> None: ... + + +class QStyleOptionFocusRect(PySide2.QtWidgets.QStyleOption): + Type : QStyleOptionFocusRect = ... # 0x1 + Version : QStyleOptionFocusRect = ... # 0x1 + + class StyleOptionType(object): + Type : QStyleOptionFocusRect.StyleOptionType = ... # 0x1 + + class StyleOptionVersion(object): + Version : QStyleOptionFocusRect.StyleOptionVersion = ... # 0x1 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtWidgets.QStyleOptionFocusRect) -> None: ... + @typing.overload + def __init__(self, version:int) -> None: ... + + +class QStyleOptionFrame(PySide2.QtWidgets.QStyleOption): + None_ : QStyleOptionFrame = ... # 0x0 + Flat : QStyleOptionFrame = ... # 0x1 + Rounded : QStyleOptionFrame = ... # 0x2 + Version : QStyleOptionFrame = ... # 0x3 + Type : QStyleOptionFrame = ... # 0x5 + + class FrameFeature(object): + None_ : QStyleOptionFrame.FrameFeature = ... # 0x0 + Flat : QStyleOptionFrame.FrameFeature = ... # 0x1 + Rounded : QStyleOptionFrame.FrameFeature = ... # 0x2 + + class FrameFeatures(object): ... + + class StyleOptionType(object): + Type : QStyleOptionFrame.StyleOptionType = ... # 0x5 + + class StyleOptionVersion(object): + Version : QStyleOptionFrame.StyleOptionVersion = ... # 0x3 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtWidgets.QStyleOptionFrame) -> None: ... + @typing.overload + def __init__(self, version:int) -> None: ... + + +class QStyleOptionGraphicsItem(PySide2.QtWidgets.QStyleOption): + Version : QStyleOptionGraphicsItem = ... # 0x1 + Type : QStyleOptionGraphicsItem = ... # 0xf + + class StyleOptionType(object): + Type : QStyleOptionGraphicsItem.StyleOptionType = ... # 0xf + + class StyleOptionVersion(object): + Version : QStyleOptionGraphicsItem.StyleOptionVersion = ... # 0x1 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtWidgets.QStyleOptionGraphicsItem) -> None: ... + @typing.overload + def __init__(self, version:int) -> None: ... + + @staticmethod + def levelOfDetailFromTransform(worldTransform:PySide2.QtGui.QTransform) -> float: ... + + +class QStyleOptionGroupBox(PySide2.QtWidgets.QStyleOptionComplex): + Version : QStyleOptionGroupBox = ... # 0x1 + Type : QStyleOptionGroupBox = ... # 0xf0006 + + class StyleOptionType(object): + Type : QStyleOptionGroupBox.StyleOptionType = ... # 0xf0006 + + class StyleOptionVersion(object): + Version : QStyleOptionGroupBox.StyleOptionVersion = ... # 0x1 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtWidgets.QStyleOptionGroupBox) -> None: ... + @typing.overload + def __init__(self, version:int) -> None: ... + + +class QStyleOptionHeader(PySide2.QtWidgets.QStyleOption): + Beginning : QStyleOptionHeader = ... # 0x0 + None_ : QStyleOptionHeader = ... # 0x0 + NotAdjacent : QStyleOptionHeader = ... # 0x0 + Middle : QStyleOptionHeader = ... # 0x1 + NextIsSelected : QStyleOptionHeader = ... # 0x1 + SortUp : QStyleOptionHeader = ... # 0x1 + Version : QStyleOptionHeader = ... # 0x1 + End : QStyleOptionHeader = ... # 0x2 + PreviousIsSelected : QStyleOptionHeader = ... # 0x2 + SortDown : QStyleOptionHeader = ... # 0x2 + NextAndPreviousAreSelected: QStyleOptionHeader = ... # 0x3 + OnlyOneSection : QStyleOptionHeader = ... # 0x3 + Type : QStyleOptionHeader = ... # 0x8 + + class SectionPosition(object): + Beginning : QStyleOptionHeader.SectionPosition = ... # 0x0 + Middle : QStyleOptionHeader.SectionPosition = ... # 0x1 + End : QStyleOptionHeader.SectionPosition = ... # 0x2 + OnlyOneSection : QStyleOptionHeader.SectionPosition = ... # 0x3 + + class SelectedPosition(object): + NotAdjacent : QStyleOptionHeader.SelectedPosition = ... # 0x0 + NextIsSelected : QStyleOptionHeader.SelectedPosition = ... # 0x1 + PreviousIsSelected : QStyleOptionHeader.SelectedPosition = ... # 0x2 + NextAndPreviousAreSelected: QStyleOptionHeader.SelectedPosition = ... # 0x3 + + class SortIndicator(object): + None_ : QStyleOptionHeader.SortIndicator = ... # 0x0 + SortUp : QStyleOptionHeader.SortIndicator = ... # 0x1 + SortDown : QStyleOptionHeader.SortIndicator = ... # 0x2 + + class StyleOptionType(object): + Type : QStyleOptionHeader.StyleOptionType = ... # 0x8 + + class StyleOptionVersion(object): + Version : QStyleOptionHeader.StyleOptionVersion = ... # 0x1 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtWidgets.QStyleOptionHeader) -> None: ... + @typing.overload + def __init__(self, version:int) -> None: ... + + +class QStyleOptionMenuItem(PySide2.QtWidgets.QStyleOption): + Normal : QStyleOptionMenuItem = ... # 0x0 + NotCheckable : QStyleOptionMenuItem = ... # 0x0 + DefaultItem : QStyleOptionMenuItem = ... # 0x1 + Exclusive : QStyleOptionMenuItem = ... # 0x1 + Version : QStyleOptionMenuItem = ... # 0x1 + NonExclusive : QStyleOptionMenuItem = ... # 0x2 + Separator : QStyleOptionMenuItem = ... # 0x2 + SubMenu : QStyleOptionMenuItem = ... # 0x3 + Scroller : QStyleOptionMenuItem = ... # 0x4 + Type : QStyleOptionMenuItem = ... # 0x4 + TearOff : QStyleOptionMenuItem = ... # 0x5 + Margin : QStyleOptionMenuItem = ... # 0x6 + EmptyArea : QStyleOptionMenuItem = ... # 0x7 + + class CheckType(object): + NotCheckable : QStyleOptionMenuItem.CheckType = ... # 0x0 + Exclusive : QStyleOptionMenuItem.CheckType = ... # 0x1 + NonExclusive : QStyleOptionMenuItem.CheckType = ... # 0x2 + + class MenuItemType(object): + Normal : QStyleOptionMenuItem.MenuItemType = ... # 0x0 + DefaultItem : QStyleOptionMenuItem.MenuItemType = ... # 0x1 + Separator : QStyleOptionMenuItem.MenuItemType = ... # 0x2 + SubMenu : QStyleOptionMenuItem.MenuItemType = ... # 0x3 + Scroller : QStyleOptionMenuItem.MenuItemType = ... # 0x4 + TearOff : QStyleOptionMenuItem.MenuItemType = ... # 0x5 + Margin : QStyleOptionMenuItem.MenuItemType = ... # 0x6 + EmptyArea : QStyleOptionMenuItem.MenuItemType = ... # 0x7 + + class StyleOptionType(object): + Type : QStyleOptionMenuItem.StyleOptionType = ... # 0x4 + + class StyleOptionVersion(object): + Version : QStyleOptionMenuItem.StyleOptionVersion = ... # 0x1 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtWidgets.QStyleOptionMenuItem) -> None: ... + @typing.overload + def __init__(self, version:int) -> None: ... + + +class QStyleOptionProgressBar(PySide2.QtWidgets.QStyleOption): + Version : QStyleOptionProgressBar = ... # 0x2 + Type : QStyleOptionProgressBar = ... # 0x6 + + class StyleOptionType(object): + Type : QStyleOptionProgressBar.StyleOptionType = ... # 0x6 + + class StyleOptionVersion(object): + Version : QStyleOptionProgressBar.StyleOptionVersion = ... # 0x2 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtWidgets.QStyleOptionProgressBar) -> None: ... + @typing.overload + def __init__(self, version:int) -> None: ... + + +class QStyleOptionRubberBand(PySide2.QtWidgets.QStyleOption): + Version : QStyleOptionRubberBand = ... # 0x1 + Type : QStyleOptionRubberBand = ... # 0xd + + class StyleOptionType(object): + Type : QStyleOptionRubberBand.StyleOptionType = ... # 0xd + + class StyleOptionVersion(object): + Version : QStyleOptionRubberBand.StyleOptionVersion = ... # 0x1 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtWidgets.QStyleOptionRubberBand) -> None: ... + @typing.overload + def __init__(self, version:int) -> None: ... + + +class QStyleOptionSizeGrip(PySide2.QtWidgets.QStyleOptionComplex): + Version : QStyleOptionSizeGrip = ... # 0x1 + Type : QStyleOptionSizeGrip = ... # 0xf0007 + + class StyleOptionType(object): + Type : QStyleOptionSizeGrip.StyleOptionType = ... # 0xf0007 + + class StyleOptionVersion(object): + Version : QStyleOptionSizeGrip.StyleOptionVersion = ... # 0x1 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtWidgets.QStyleOptionSizeGrip) -> None: ... + @typing.overload + def __init__(self, version:int) -> None: ... + + +class QStyleOptionSlider(PySide2.QtWidgets.QStyleOptionComplex): + Version : QStyleOptionSlider = ... # 0x1 + Type : QStyleOptionSlider = ... # 0xf0001 + + class StyleOptionType(object): + Type : QStyleOptionSlider.StyleOptionType = ... # 0xf0001 + + class StyleOptionVersion(object): + Version : QStyleOptionSlider.StyleOptionVersion = ... # 0x1 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtWidgets.QStyleOptionSlider) -> None: ... + @typing.overload + def __init__(self, version:int) -> None: ... + + +class QStyleOptionSpinBox(PySide2.QtWidgets.QStyleOptionComplex): + Version : QStyleOptionSpinBox = ... # 0x1 + Type : QStyleOptionSpinBox = ... # 0xf0002 + + class StyleOptionType(object): + Type : QStyleOptionSpinBox.StyleOptionType = ... # 0xf0002 + + class StyleOptionVersion(object): + Version : QStyleOptionSpinBox.StyleOptionVersion = ... # 0x1 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtWidgets.QStyleOptionSpinBox) -> None: ... + @typing.overload + def __init__(self, version:int) -> None: ... + + +class QStyleOptionTab(PySide2.QtWidgets.QStyleOption): + Beginning : QStyleOptionTab = ... # 0x0 + NoCornerWidgets : QStyleOptionTab = ... # 0x0 + None_ : QStyleOptionTab = ... # 0x0 + NotAdjacent : QStyleOptionTab = ... # 0x0 + HasFrame : QStyleOptionTab = ... # 0x1 + LeftCornerWidget : QStyleOptionTab = ... # 0x1 + Middle : QStyleOptionTab = ... # 0x1 + NextIsSelected : QStyleOptionTab = ... # 0x1 + End : QStyleOptionTab = ... # 0x2 + PreviousIsSelected : QStyleOptionTab = ... # 0x2 + RightCornerWidget : QStyleOptionTab = ... # 0x2 + OnlyOneTab : QStyleOptionTab = ... # 0x3 + Type : QStyleOptionTab = ... # 0x3 + Version : QStyleOptionTab = ... # 0x3 + + class CornerWidget(object): + NoCornerWidgets : QStyleOptionTab.CornerWidget = ... # 0x0 + LeftCornerWidget : QStyleOptionTab.CornerWidget = ... # 0x1 + RightCornerWidget : QStyleOptionTab.CornerWidget = ... # 0x2 + + class CornerWidgets(object): ... + + class SelectedPosition(object): + NotAdjacent : QStyleOptionTab.SelectedPosition = ... # 0x0 + NextIsSelected : QStyleOptionTab.SelectedPosition = ... # 0x1 + PreviousIsSelected : QStyleOptionTab.SelectedPosition = ... # 0x2 + + class StyleOptionType(object): + Type : QStyleOptionTab.StyleOptionType = ... # 0x3 + + class StyleOptionVersion(object): + Version : QStyleOptionTab.StyleOptionVersion = ... # 0x3 + + class TabFeature(object): + None_ : QStyleOptionTab.TabFeature = ... # 0x0 + HasFrame : QStyleOptionTab.TabFeature = ... # 0x1 + + class TabFeatures(object): ... + + class TabPosition(object): + Beginning : QStyleOptionTab.TabPosition = ... # 0x0 + Middle : QStyleOptionTab.TabPosition = ... # 0x1 + End : QStyleOptionTab.TabPosition = ... # 0x2 + OnlyOneTab : QStyleOptionTab.TabPosition = ... # 0x3 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtWidgets.QStyleOptionTab) -> None: ... + @typing.overload + def __init__(self, version:int) -> None: ... + + +class QStyleOptionTabBarBase(PySide2.QtWidgets.QStyleOption): + Version : QStyleOptionTabBarBase = ... # 0x2 + Type : QStyleOptionTabBarBase = ... # 0xc + + class StyleOptionType(object): + Type : QStyleOptionTabBarBase.StyleOptionType = ... # 0xc + + class StyleOptionVersion(object): + Version : QStyleOptionTabBarBase.StyleOptionVersion = ... # 0x2 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtWidgets.QStyleOptionTabBarBase) -> None: ... + @typing.overload + def __init__(self, version:int) -> None: ... + + +class QStyleOptionTabWidgetFrame(PySide2.QtWidgets.QStyleOption): + Version : QStyleOptionTabWidgetFrame = ... # 0x2 + Type : QStyleOptionTabWidgetFrame = ... # 0xb + + class StyleOptionType(object): + Type : QStyleOptionTabWidgetFrame.StyleOptionType = ... # 0xb + + class StyleOptionVersion(object): + Version : QStyleOptionTabWidgetFrame.StyleOptionVersion = ... # 0x2 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtWidgets.QStyleOptionTabWidgetFrame) -> None: ... + @typing.overload + def __init__(self, version:int) -> None: ... + + +class QStyleOptionTitleBar(PySide2.QtWidgets.QStyleOptionComplex): + Version : QStyleOptionTitleBar = ... # 0x1 + Type : QStyleOptionTitleBar = ... # 0xf0005 + + class StyleOptionType(object): + Type : QStyleOptionTitleBar.StyleOptionType = ... # 0xf0005 + + class StyleOptionVersion(object): + Version : QStyleOptionTitleBar.StyleOptionVersion = ... # 0x1 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtWidgets.QStyleOptionTitleBar) -> None: ... + @typing.overload + def __init__(self, version:int) -> None: ... + + +class QStyleOptionToolBar(PySide2.QtWidgets.QStyleOption): + Beginning : QStyleOptionToolBar = ... # 0x0 + None_ : QStyleOptionToolBar = ... # 0x0 + Middle : QStyleOptionToolBar = ... # 0x1 + Movable : QStyleOptionToolBar = ... # 0x1 + Version : QStyleOptionToolBar = ... # 0x1 + End : QStyleOptionToolBar = ... # 0x2 + OnlyOne : QStyleOptionToolBar = ... # 0x3 + Type : QStyleOptionToolBar = ... # 0xe + + class StyleOptionType(object): + Type : QStyleOptionToolBar.StyleOptionType = ... # 0xe + + class StyleOptionVersion(object): + Version : QStyleOptionToolBar.StyleOptionVersion = ... # 0x1 + + class ToolBarFeature(object): + None_ : QStyleOptionToolBar.ToolBarFeature = ... # 0x0 + Movable : QStyleOptionToolBar.ToolBarFeature = ... # 0x1 + + class ToolBarFeatures(object): ... + + class ToolBarPosition(object): + Beginning : QStyleOptionToolBar.ToolBarPosition = ... # 0x0 + Middle : QStyleOptionToolBar.ToolBarPosition = ... # 0x1 + End : QStyleOptionToolBar.ToolBarPosition = ... # 0x2 + OnlyOne : QStyleOptionToolBar.ToolBarPosition = ... # 0x3 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtWidgets.QStyleOptionToolBar) -> None: ... + @typing.overload + def __init__(self, version:int) -> None: ... + + +class QStyleOptionToolBox(PySide2.QtWidgets.QStyleOption): + Beginning : QStyleOptionToolBox = ... # 0x0 + NotAdjacent : QStyleOptionToolBox = ... # 0x0 + Middle : QStyleOptionToolBox = ... # 0x1 + NextIsSelected : QStyleOptionToolBox = ... # 0x1 + End : QStyleOptionToolBox = ... # 0x2 + PreviousIsSelected : QStyleOptionToolBox = ... # 0x2 + Version : QStyleOptionToolBox = ... # 0x2 + OnlyOneTab : QStyleOptionToolBox = ... # 0x3 + Type : QStyleOptionToolBox = ... # 0x7 + + class SelectedPosition(object): + NotAdjacent : QStyleOptionToolBox.SelectedPosition = ... # 0x0 + NextIsSelected : QStyleOptionToolBox.SelectedPosition = ... # 0x1 + PreviousIsSelected : QStyleOptionToolBox.SelectedPosition = ... # 0x2 + + class StyleOptionType(object): + Type : QStyleOptionToolBox.StyleOptionType = ... # 0x7 + + class StyleOptionVersion(object): + Version : QStyleOptionToolBox.StyleOptionVersion = ... # 0x2 + + class TabPosition(object): + Beginning : QStyleOptionToolBox.TabPosition = ... # 0x0 + Middle : QStyleOptionToolBox.TabPosition = ... # 0x1 + End : QStyleOptionToolBox.TabPosition = ... # 0x2 + OnlyOneTab : QStyleOptionToolBox.TabPosition = ... # 0x3 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtWidgets.QStyleOptionToolBox) -> None: ... + @typing.overload + def __init__(self, version:int) -> None: ... + + +class QStyleOptionToolButton(PySide2.QtWidgets.QStyleOptionComplex): + None_ : QStyleOptionToolButton = ... # 0x0 + Arrow : QStyleOptionToolButton = ... # 0x1 + Version : QStyleOptionToolButton = ... # 0x1 + Menu : QStyleOptionToolButton = ... # 0x4 + MenuButtonPopup : QStyleOptionToolButton = ... # 0x4 + PopupDelay : QStyleOptionToolButton = ... # 0x8 + HasMenu : QStyleOptionToolButton = ... # 0x10 + Type : QStyleOptionToolButton = ... # 0xf0003 + + class StyleOptionType(object): + Type : QStyleOptionToolButton.StyleOptionType = ... # 0xf0003 + + class StyleOptionVersion(object): + Version : QStyleOptionToolButton.StyleOptionVersion = ... # 0x1 + + class ToolButtonFeature(object): + None_ : QStyleOptionToolButton.ToolButtonFeature = ... # 0x0 + Arrow : QStyleOptionToolButton.ToolButtonFeature = ... # 0x1 + Menu : QStyleOptionToolButton.ToolButtonFeature = ... # 0x4 + MenuButtonPopup : QStyleOptionToolButton.ToolButtonFeature = ... # 0x4 + PopupDelay : QStyleOptionToolButton.ToolButtonFeature = ... # 0x8 + HasMenu : QStyleOptionToolButton.ToolButtonFeature = ... # 0x10 + + class ToolButtonFeatures(object): ... + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtWidgets.QStyleOptionToolButton) -> None: ... + @typing.overload + def __init__(self, version:int) -> None: ... + + +class QStyleOptionViewItem(PySide2.QtWidgets.QStyleOption): + Invalid : QStyleOptionViewItem = ... # 0x0 + Left : QStyleOptionViewItem = ... # 0x0 + None_ : QStyleOptionViewItem = ... # 0x0 + Beginning : QStyleOptionViewItem = ... # 0x1 + Right : QStyleOptionViewItem = ... # 0x1 + WrapText : QStyleOptionViewItem = ... # 0x1 + Alternate : QStyleOptionViewItem = ... # 0x2 + Middle : QStyleOptionViewItem = ... # 0x2 + Top : QStyleOptionViewItem = ... # 0x2 + Bottom : QStyleOptionViewItem = ... # 0x3 + End : QStyleOptionViewItem = ... # 0x3 + HasCheckIndicator : QStyleOptionViewItem = ... # 0x4 + OnlyOne : QStyleOptionViewItem = ... # 0x4 + Version : QStyleOptionViewItem = ... # 0x4 + HasDisplay : QStyleOptionViewItem = ... # 0x8 + Type : QStyleOptionViewItem = ... # 0xa + HasDecoration : QStyleOptionViewItem = ... # 0x10 + + class Position(object): + Left : QStyleOptionViewItem.Position = ... # 0x0 + Right : QStyleOptionViewItem.Position = ... # 0x1 + Top : QStyleOptionViewItem.Position = ... # 0x2 + Bottom : QStyleOptionViewItem.Position = ... # 0x3 + + class StyleOptionType(object): + Type : QStyleOptionViewItem.StyleOptionType = ... # 0xa + + class StyleOptionVersion(object): + Version : QStyleOptionViewItem.StyleOptionVersion = ... # 0x4 + + class ViewItemFeature(object): + None_ : QStyleOptionViewItem.ViewItemFeature = ... # 0x0 + WrapText : QStyleOptionViewItem.ViewItemFeature = ... # 0x1 + Alternate : QStyleOptionViewItem.ViewItemFeature = ... # 0x2 + HasCheckIndicator : QStyleOptionViewItem.ViewItemFeature = ... # 0x4 + HasDisplay : QStyleOptionViewItem.ViewItemFeature = ... # 0x8 + HasDecoration : QStyleOptionViewItem.ViewItemFeature = ... # 0x10 + + class ViewItemFeatures(object): ... + + class ViewItemPosition(object): + Invalid : QStyleOptionViewItem.ViewItemPosition = ... # 0x0 + Beginning : QStyleOptionViewItem.ViewItemPosition = ... # 0x1 + Middle : QStyleOptionViewItem.ViewItemPosition = ... # 0x2 + End : QStyleOptionViewItem.ViewItemPosition = ... # 0x3 + OnlyOne : QStyleOptionViewItem.ViewItemPosition = ... # 0x4 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtWidgets.QStyleOptionViewItem) -> None: ... + @typing.overload + def __init__(self, version:int) -> None: ... + + @staticmethod + def __copy__() -> None: ... + + +class QStylePainter(PySide2.QtGui.QPainter): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, pd:PySide2.QtGui.QPaintDevice, w:PySide2.QtWidgets.QWidget) -> None: ... + @typing.overload + def __init__(self, w:PySide2.QtWidgets.QWidget) -> None: ... + + @typing.overload + def begin(self, arg__1:PySide2.QtGui.QPaintDevice) -> bool: ... + @typing.overload + def begin(self, pd:PySide2.QtGui.QPaintDevice, w:PySide2.QtWidgets.QWidget) -> bool: ... + @typing.overload + def begin(self, w:PySide2.QtWidgets.QWidget) -> bool: ... + def drawComplexControl(self, cc:PySide2.QtWidgets.QStyle.ComplexControl, opt:PySide2.QtWidgets.QStyleOptionComplex) -> None: ... + def drawControl(self, ce:PySide2.QtWidgets.QStyle.ControlElement, opt:PySide2.QtWidgets.QStyleOption) -> None: ... + def drawItemPixmap(self, r:PySide2.QtCore.QRect, flags:int, pixmap:PySide2.QtGui.QPixmap) -> None: ... + def drawItemText(self, r:PySide2.QtCore.QRect, flags:int, pal:PySide2.QtGui.QPalette, enabled:bool, text:str, textRole:PySide2.QtGui.QPalette.ColorRole=...) -> None: ... + def drawPrimitive(self, pe:PySide2.QtWidgets.QStyle.PrimitiveElement, opt:PySide2.QtWidgets.QStyleOption) -> None: ... + def style(self) -> PySide2.QtWidgets.QStyle: ... + + +class QStyledItemDelegate(PySide2.QtWidgets.QAbstractItemDelegate): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def createEditor(self, parent:PySide2.QtWidgets.QWidget, option:PySide2.QtWidgets.QStyleOptionViewItem, index:PySide2.QtCore.QModelIndex) -> PySide2.QtWidgets.QWidget: ... + def displayText(self, value:typing.Any, locale:PySide2.QtCore.QLocale) -> str: ... + def editorEvent(self, event:PySide2.QtCore.QEvent, model:PySide2.QtCore.QAbstractItemModel, option:PySide2.QtWidgets.QStyleOptionViewItem, index:PySide2.QtCore.QModelIndex) -> bool: ... + def eventFilter(self, object:PySide2.QtCore.QObject, event:PySide2.QtCore.QEvent) -> bool: ... + def initStyleOption(self, option:PySide2.QtWidgets.QStyleOptionViewItem, index:PySide2.QtCore.QModelIndex) -> None: ... + def itemEditorFactory(self) -> PySide2.QtWidgets.QItemEditorFactory: ... + def paint(self, painter:PySide2.QtGui.QPainter, option:PySide2.QtWidgets.QStyleOptionViewItem, index:PySide2.QtCore.QModelIndex) -> None: ... + def setEditorData(self, editor:PySide2.QtWidgets.QWidget, index:PySide2.QtCore.QModelIndex) -> None: ... + def setItemEditorFactory(self, factory:PySide2.QtWidgets.QItemEditorFactory) -> None: ... + def setModelData(self, editor:PySide2.QtWidgets.QWidget, model:PySide2.QtCore.QAbstractItemModel, index:PySide2.QtCore.QModelIndex) -> None: ... + def sizeHint(self, option:PySide2.QtWidgets.QStyleOptionViewItem, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QSize: ... + def updateEditorGeometry(self, editor:PySide2.QtWidgets.QWidget, option:PySide2.QtWidgets.QStyleOptionViewItem, index:PySide2.QtCore.QModelIndex) -> None: ... + + +class QSwipeGesture(PySide2.QtWidgets.QGesture): + NoDirection : QSwipeGesture = ... # 0x0 + Left : QSwipeGesture = ... # 0x1 + Right : QSwipeGesture = ... # 0x2 + Up : QSwipeGesture = ... # 0x3 + Down : QSwipeGesture = ... # 0x4 + + class SwipeDirection(object): + NoDirection : QSwipeGesture.SwipeDirection = ... # 0x0 + Left : QSwipeGesture.SwipeDirection = ... # 0x1 + Right : QSwipeGesture.SwipeDirection = ... # 0x2 + Up : QSwipeGesture.SwipeDirection = ... # 0x3 + Down : QSwipeGesture.SwipeDirection = ... # 0x4 + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def horizontalDirection(self) -> PySide2.QtWidgets.QSwipeGesture.SwipeDirection: ... + def setSwipeAngle(self, value:float) -> None: ... + def swipeAngle(self) -> float: ... + def verticalDirection(self) -> PySide2.QtWidgets.QSwipeGesture.SwipeDirection: ... + + +class QSystemTrayIcon(PySide2.QtCore.QObject): + NoIcon : QSystemTrayIcon = ... # 0x0 + Unknown : QSystemTrayIcon = ... # 0x0 + Context : QSystemTrayIcon = ... # 0x1 + Information : QSystemTrayIcon = ... # 0x1 + DoubleClick : QSystemTrayIcon = ... # 0x2 + Warning : QSystemTrayIcon = ... # 0x2 + Critical : QSystemTrayIcon = ... # 0x3 + Trigger : QSystemTrayIcon = ... # 0x3 + MiddleClick : QSystemTrayIcon = ... # 0x4 + + class ActivationReason(object): + Unknown : QSystemTrayIcon.ActivationReason = ... # 0x0 + Context : QSystemTrayIcon.ActivationReason = ... # 0x1 + DoubleClick : QSystemTrayIcon.ActivationReason = ... # 0x2 + Trigger : QSystemTrayIcon.ActivationReason = ... # 0x3 + MiddleClick : QSystemTrayIcon.ActivationReason = ... # 0x4 + + class MessageIcon(object): + NoIcon : QSystemTrayIcon.MessageIcon = ... # 0x0 + Information : QSystemTrayIcon.MessageIcon = ... # 0x1 + Warning : QSystemTrayIcon.MessageIcon = ... # 0x2 + Critical : QSystemTrayIcon.MessageIcon = ... # 0x3 + + @typing.overload + def __init__(self, icon:PySide2.QtGui.QIcon, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def contextMenu(self) -> PySide2.QtWidgets.QMenu: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def geometry(self) -> PySide2.QtCore.QRect: ... + def hide(self) -> None: ... + def icon(self) -> PySide2.QtGui.QIcon: ... + @staticmethod + def isSystemTrayAvailable() -> bool: ... + def isVisible(self) -> bool: ... + def setContextMenu(self, menu:PySide2.QtWidgets.QMenu) -> None: ... + def setIcon(self, icon:PySide2.QtGui.QIcon) -> None: ... + def setToolTip(self, tip:str) -> None: ... + def setVisible(self, visible:bool) -> None: ... + def show(self) -> None: ... + @typing.overload + def showMessage(self, title:str, msg:str, icon:PySide2.QtGui.QIcon, msecs:int=...) -> None: ... + @typing.overload + def showMessage(self, title:str, msg:str, icon:PySide2.QtWidgets.QSystemTrayIcon.MessageIcon=..., msecs:int=...) -> None: ... + @staticmethod + def supportsMessages() -> bool: ... + def toolTip(self) -> str: ... + + +class QTabBar(PySide2.QtWidgets.QWidget): + LeftSide : QTabBar = ... # 0x0 + RoundedNorth : QTabBar = ... # 0x0 + SelectLeftTab : QTabBar = ... # 0x0 + RightSide : QTabBar = ... # 0x1 + RoundedSouth : QTabBar = ... # 0x1 + SelectRightTab : QTabBar = ... # 0x1 + RoundedWest : QTabBar = ... # 0x2 + SelectPreviousTab : QTabBar = ... # 0x2 + RoundedEast : QTabBar = ... # 0x3 + TriangularNorth : QTabBar = ... # 0x4 + TriangularSouth : QTabBar = ... # 0x5 + TriangularWest : QTabBar = ... # 0x6 + TriangularEast : QTabBar = ... # 0x7 + + class ButtonPosition(object): + LeftSide : QTabBar.ButtonPosition = ... # 0x0 + RightSide : QTabBar.ButtonPosition = ... # 0x1 + + class SelectionBehavior(object): + SelectLeftTab : QTabBar.SelectionBehavior = ... # 0x0 + SelectRightTab : QTabBar.SelectionBehavior = ... # 0x1 + SelectPreviousTab : QTabBar.SelectionBehavior = ... # 0x2 + + class Shape(object): + RoundedNorth : QTabBar.Shape = ... # 0x0 + RoundedSouth : QTabBar.Shape = ... # 0x1 + RoundedWest : QTabBar.Shape = ... # 0x2 + RoundedEast : QTabBar.Shape = ... # 0x3 + TriangularNorth : QTabBar.Shape = ... # 0x4 + TriangularSouth : QTabBar.Shape = ... # 0x5 + TriangularWest : QTabBar.Shape = ... # 0x6 + TriangularEast : QTabBar.Shape = ... # 0x7 + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def accessibleTabName(self, index:int) -> str: ... + @typing.overload + def addTab(self, icon:PySide2.QtGui.QIcon, text:str) -> int: ... + @typing.overload + def addTab(self, text:str) -> int: ... + def autoHide(self) -> bool: ... + def changeCurrentOnDrag(self) -> bool: ... + def changeEvent(self, arg__1:PySide2.QtCore.QEvent) -> None: ... + def count(self) -> int: ... + def currentIndex(self) -> int: ... + def documentMode(self) -> bool: ... + def drawBase(self) -> bool: ... + def elideMode(self) -> PySide2.QtCore.Qt.TextElideMode: ... + def event(self, arg__1:PySide2.QtCore.QEvent) -> bool: ... + def expanding(self) -> bool: ... + def hideEvent(self, arg__1:PySide2.QtGui.QHideEvent) -> None: ... + def iconSize(self) -> PySide2.QtCore.QSize: ... + def initStyleOption(self, option:PySide2.QtWidgets.QStyleOptionTab, tabIndex:int) -> None: ... + @typing.overload + def insertTab(self, index:int, icon:PySide2.QtGui.QIcon, text:str) -> int: ... + @typing.overload + def insertTab(self, index:int, text:str) -> int: ... + def isMovable(self) -> bool: ... + def isTabEnabled(self, index:int) -> bool: ... + def isTabVisible(self, index:int) -> bool: ... + def keyPressEvent(self, arg__1:PySide2.QtGui.QKeyEvent) -> None: ... + def minimumSizeHint(self) -> PySide2.QtCore.QSize: ... + def minimumTabSizeHint(self, index:int) -> PySide2.QtCore.QSize: ... + def mouseMoveEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def mousePressEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def moveTab(self, from_:int, to:int) -> None: ... + def paintEvent(self, arg__1:PySide2.QtGui.QPaintEvent) -> None: ... + def removeTab(self, index:int) -> None: ... + def resizeEvent(self, arg__1:PySide2.QtGui.QResizeEvent) -> None: ... + def selectionBehaviorOnRemove(self) -> PySide2.QtWidgets.QTabBar.SelectionBehavior: ... + def setAccessibleTabName(self, index:int, name:str) -> None: ... + def setAutoHide(self, hide:bool) -> None: ... + def setChangeCurrentOnDrag(self, change:bool) -> None: ... + def setCurrentIndex(self, index:int) -> None: ... + def setDocumentMode(self, set:bool) -> None: ... + def setDrawBase(self, drawTheBase:bool) -> None: ... + def setElideMode(self, mode:PySide2.QtCore.Qt.TextElideMode) -> None: ... + def setExpanding(self, enabled:bool) -> None: ... + def setIconSize(self, size:PySide2.QtCore.QSize) -> None: ... + def setMovable(self, movable:bool) -> None: ... + def setSelectionBehaviorOnRemove(self, behavior:PySide2.QtWidgets.QTabBar.SelectionBehavior) -> None: ... + def setShape(self, shape:PySide2.QtWidgets.QTabBar.Shape) -> None: ... + def setTabButton(self, index:int, position:PySide2.QtWidgets.QTabBar.ButtonPosition, widget:PySide2.QtWidgets.QWidget) -> None: ... + def setTabData(self, index:int, data:typing.Any) -> None: ... + def setTabEnabled(self, index:int, enabled:bool) -> None: ... + def setTabIcon(self, index:int, icon:PySide2.QtGui.QIcon) -> None: ... + def setTabText(self, index:int, text:str) -> None: ... + def setTabTextColor(self, index:int, color:PySide2.QtGui.QColor) -> None: ... + def setTabToolTip(self, index:int, tip:str) -> None: ... + def setTabVisible(self, index:int, visible:bool) -> None: ... + def setTabWhatsThis(self, index:int, text:str) -> None: ... + def setTabsClosable(self, closable:bool) -> None: ... + def setUsesScrollButtons(self, useButtons:bool) -> None: ... + def shape(self) -> PySide2.QtWidgets.QTabBar.Shape: ... + def showEvent(self, arg__1:PySide2.QtGui.QShowEvent) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def tabAt(self, pos:PySide2.QtCore.QPoint) -> int: ... + def tabButton(self, index:int, position:PySide2.QtWidgets.QTabBar.ButtonPosition) -> PySide2.QtWidgets.QWidget: ... + def tabData(self, index:int) -> typing.Any: ... + def tabIcon(self, index:int) -> PySide2.QtGui.QIcon: ... + def tabInserted(self, index:int) -> None: ... + def tabLayoutChange(self) -> None: ... + def tabRect(self, index:int) -> PySide2.QtCore.QRect: ... + def tabRemoved(self, index:int) -> None: ... + def tabSizeHint(self, index:int) -> PySide2.QtCore.QSize: ... + def tabText(self, index:int) -> str: ... + def tabTextColor(self, index:int) -> PySide2.QtGui.QColor: ... + def tabToolTip(self, index:int) -> str: ... + def tabWhatsThis(self, index:int) -> str: ... + def tabsClosable(self) -> bool: ... + def timerEvent(self, event:PySide2.QtCore.QTimerEvent) -> None: ... + def usesScrollButtons(self) -> bool: ... + def wheelEvent(self, event:PySide2.QtGui.QWheelEvent) -> None: ... + + +class QTabWidget(PySide2.QtWidgets.QWidget): + North : QTabWidget = ... # 0x0 + Rounded : QTabWidget = ... # 0x0 + South : QTabWidget = ... # 0x1 + Triangular : QTabWidget = ... # 0x1 + West : QTabWidget = ... # 0x2 + East : QTabWidget = ... # 0x3 + + class TabPosition(object): + North : QTabWidget.TabPosition = ... # 0x0 + South : QTabWidget.TabPosition = ... # 0x1 + West : QTabWidget.TabPosition = ... # 0x2 + East : QTabWidget.TabPosition = ... # 0x3 + + class TabShape(object): + Rounded : QTabWidget.TabShape = ... # 0x0 + Triangular : QTabWidget.TabShape = ... # 0x1 + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + @typing.overload + def addTab(self, widget:PySide2.QtWidgets.QWidget, arg__2:str) -> int: ... + @typing.overload + def addTab(self, widget:PySide2.QtWidgets.QWidget, icon:PySide2.QtGui.QIcon, label:str) -> int: ... + def changeEvent(self, arg__1:PySide2.QtCore.QEvent) -> None: ... + def clear(self) -> None: ... + def cornerWidget(self, corner:PySide2.QtCore.Qt.Corner=...) -> PySide2.QtWidgets.QWidget: ... + def count(self) -> int: ... + def currentIndex(self) -> int: ... + def currentWidget(self) -> PySide2.QtWidgets.QWidget: ... + def documentMode(self) -> bool: ... + def elideMode(self) -> PySide2.QtCore.Qt.TextElideMode: ... + def event(self, arg__1:PySide2.QtCore.QEvent) -> bool: ... + def hasHeightForWidth(self) -> bool: ... + def heightForWidth(self, width:int) -> int: ... + def iconSize(self) -> PySide2.QtCore.QSize: ... + def indexOf(self, widget:PySide2.QtWidgets.QWidget) -> int: ... + def initStyleOption(self, option:PySide2.QtWidgets.QStyleOptionTabWidgetFrame) -> None: ... + @typing.overload + def insertTab(self, index:int, widget:PySide2.QtWidgets.QWidget, arg__3:str) -> int: ... + @typing.overload + def insertTab(self, index:int, widget:PySide2.QtWidgets.QWidget, icon:PySide2.QtGui.QIcon, label:str) -> int: ... + def isMovable(self) -> bool: ... + def isTabEnabled(self, index:int) -> bool: ... + def isTabVisible(self, index:int) -> bool: ... + def keyPressEvent(self, arg__1:PySide2.QtGui.QKeyEvent) -> None: ... + def minimumSizeHint(self) -> PySide2.QtCore.QSize: ... + def paintEvent(self, arg__1:PySide2.QtGui.QPaintEvent) -> None: ... + def removeTab(self, index:int) -> None: ... + def resizeEvent(self, arg__1:PySide2.QtGui.QResizeEvent) -> None: ... + def setCornerWidget(self, w:PySide2.QtWidgets.QWidget, corner:PySide2.QtCore.Qt.Corner=...) -> None: ... + def setCurrentIndex(self, index:int) -> None: ... + def setCurrentWidget(self, widget:PySide2.QtWidgets.QWidget) -> None: ... + def setDocumentMode(self, set:bool) -> None: ... + def setElideMode(self, mode:PySide2.QtCore.Qt.TextElideMode) -> None: ... + def setIconSize(self, size:PySide2.QtCore.QSize) -> None: ... + def setMovable(self, movable:bool) -> None: ... + def setTabBar(self, arg__1:PySide2.QtWidgets.QTabBar) -> None: ... + def setTabBarAutoHide(self, enabled:bool) -> None: ... + def setTabEnabled(self, index:int, enabled:bool) -> None: ... + def setTabIcon(self, index:int, icon:PySide2.QtGui.QIcon) -> None: ... + def setTabPosition(self, position:PySide2.QtWidgets.QTabWidget.TabPosition) -> None: ... + def setTabShape(self, s:PySide2.QtWidgets.QTabWidget.TabShape) -> None: ... + def setTabText(self, index:int, text:str) -> None: ... + def setTabToolTip(self, index:int, tip:str) -> None: ... + def setTabVisible(self, index:int, visible:bool) -> None: ... + def setTabWhatsThis(self, index:int, text:str) -> None: ... + def setTabsClosable(self, closeable:bool) -> None: ... + def setUsesScrollButtons(self, useButtons:bool) -> None: ... + def showEvent(self, arg__1:PySide2.QtGui.QShowEvent) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def tabBar(self) -> PySide2.QtWidgets.QTabBar: ... + def tabBarAutoHide(self) -> bool: ... + def tabIcon(self, index:int) -> PySide2.QtGui.QIcon: ... + def tabInserted(self, index:int) -> None: ... + def tabPosition(self) -> PySide2.QtWidgets.QTabWidget.TabPosition: ... + def tabRemoved(self, index:int) -> None: ... + def tabShape(self) -> PySide2.QtWidgets.QTabWidget.TabShape: ... + def tabText(self, index:int) -> str: ... + def tabToolTip(self, index:int) -> str: ... + def tabWhatsThis(self, index:int) -> str: ... + def tabsClosable(self) -> bool: ... + def usesScrollButtons(self) -> bool: ... + def widget(self, index:int) -> PySide2.QtWidgets.QWidget: ... + + +class QTableView(PySide2.QtWidgets.QAbstractItemView): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def clearSpans(self) -> None: ... + def columnAt(self, x:int) -> int: ... + def columnCountChanged(self, oldCount:int, newCount:int) -> None: ... + def columnMoved(self, column:int, oldIndex:int, newIndex:int) -> None: ... + def columnResized(self, column:int, oldWidth:int, newWidth:int) -> None: ... + def columnSpan(self, row:int, column:int) -> int: ... + def columnViewportPosition(self, column:int) -> int: ... + def columnWidth(self, column:int) -> int: ... + def currentChanged(self, current:PySide2.QtCore.QModelIndex, previous:PySide2.QtCore.QModelIndex) -> None: ... + def doItemsLayout(self) -> None: ... + def gridStyle(self) -> PySide2.QtCore.Qt.PenStyle: ... + def hideColumn(self, column:int) -> None: ... + def hideRow(self, row:int) -> None: ... + def horizontalHeader(self) -> PySide2.QtWidgets.QHeaderView: ... + def horizontalOffset(self) -> int: ... + def horizontalScrollbarAction(self, action:int) -> None: ... + def indexAt(self, p:PySide2.QtCore.QPoint) -> PySide2.QtCore.QModelIndex: ... + def isColumnHidden(self, column:int) -> bool: ... + def isCornerButtonEnabled(self) -> bool: ... + def isIndexHidden(self, index:PySide2.QtCore.QModelIndex) -> bool: ... + def isRowHidden(self, row:int) -> bool: ... + def isSortingEnabled(self) -> bool: ... + def moveCursor(self, cursorAction:PySide2.QtWidgets.QAbstractItemView.CursorAction, modifiers:PySide2.QtCore.Qt.KeyboardModifiers) -> PySide2.QtCore.QModelIndex: ... + def paintEvent(self, e:PySide2.QtGui.QPaintEvent) -> None: ... + def resizeColumnToContents(self, column:int) -> None: ... + def resizeColumnsToContents(self) -> None: ... + def resizeRowToContents(self, row:int) -> None: ... + def resizeRowsToContents(self) -> None: ... + def rowAt(self, y:int) -> int: ... + def rowCountChanged(self, oldCount:int, newCount:int) -> None: ... + def rowHeight(self, row:int) -> int: ... + def rowMoved(self, row:int, oldIndex:int, newIndex:int) -> None: ... + def rowResized(self, row:int, oldHeight:int, newHeight:int) -> None: ... + def rowSpan(self, row:int, column:int) -> int: ... + def rowViewportPosition(self, row:int) -> int: ... + def scrollContentsBy(self, dx:int, dy:int) -> None: ... + def scrollTo(self, index:PySide2.QtCore.QModelIndex, hint:PySide2.QtWidgets.QAbstractItemView.ScrollHint=...) -> None: ... + def selectColumn(self, column:int) -> None: ... + def selectRow(self, row:int) -> None: ... + def selectedIndexes(self) -> typing.List: ... + def selectionChanged(self, selected:PySide2.QtCore.QItemSelection, deselected:PySide2.QtCore.QItemSelection) -> None: ... + def setColumnHidden(self, column:int, hide:bool) -> None: ... + def setColumnWidth(self, column:int, width:int) -> None: ... + def setCornerButtonEnabled(self, enable:bool) -> None: ... + def setGridStyle(self, style:PySide2.QtCore.Qt.PenStyle) -> None: ... + def setHorizontalHeader(self, header:PySide2.QtWidgets.QHeaderView) -> None: ... + def setModel(self, model:PySide2.QtCore.QAbstractItemModel) -> None: ... + def setRootIndex(self, index:PySide2.QtCore.QModelIndex) -> None: ... + def setRowHeight(self, row:int, height:int) -> None: ... + def setRowHidden(self, row:int, hide:bool) -> None: ... + def setSelection(self, rect:PySide2.QtCore.QRect, command:PySide2.QtCore.QItemSelectionModel.SelectionFlags) -> None: ... + def setSelectionModel(self, selectionModel:PySide2.QtCore.QItemSelectionModel) -> None: ... + def setShowGrid(self, show:bool) -> None: ... + def setSortingEnabled(self, enable:bool) -> None: ... + def setSpan(self, row:int, column:int, rowSpan:int, columnSpan:int) -> None: ... + def setVerticalHeader(self, header:PySide2.QtWidgets.QHeaderView) -> None: ... + def setWordWrap(self, on:bool) -> None: ... + def showColumn(self, column:int) -> None: ... + def showGrid(self) -> bool: ... + def showRow(self, row:int) -> None: ... + def sizeHintForColumn(self, column:int) -> int: ... + def sizeHintForRow(self, row:int) -> int: ... + @typing.overload + def sortByColumn(self, column:int) -> None: ... + @typing.overload + def sortByColumn(self, column:int, order:PySide2.QtCore.Qt.SortOrder) -> None: ... + def timerEvent(self, event:PySide2.QtCore.QTimerEvent) -> None: ... + def updateGeometries(self) -> None: ... + def verticalHeader(self) -> PySide2.QtWidgets.QHeaderView: ... + def verticalOffset(self) -> int: ... + def verticalScrollbarAction(self, action:int) -> None: ... + def viewOptions(self) -> PySide2.QtWidgets.QStyleOptionViewItem: ... + def viewportSizeHint(self) -> PySide2.QtCore.QSize: ... + def visualRect(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QRect: ... + def visualRegionForSelection(self, selection:PySide2.QtCore.QItemSelection) -> PySide2.QtGui.QRegion: ... + def wordWrap(self) -> bool: ... + + +class QTableWidget(PySide2.QtWidgets.QTableView): + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, rows:int, columns:int, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def cellWidget(self, row:int, column:int) -> PySide2.QtWidgets.QWidget: ... + def clear(self) -> None: ... + def clearContents(self) -> None: ... + @typing.overload + def closePersistentEditor(self, index:PySide2.QtCore.QModelIndex) -> None: ... + @typing.overload + def closePersistentEditor(self, item:PySide2.QtWidgets.QTableWidgetItem) -> None: ... + def column(self, item:PySide2.QtWidgets.QTableWidgetItem) -> int: ... + def columnCount(self) -> int: ... + def currentColumn(self) -> int: ... + def currentItem(self) -> PySide2.QtWidgets.QTableWidgetItem: ... + def currentRow(self) -> int: ... + def dropEvent(self, event:PySide2.QtGui.QDropEvent) -> None: ... + def dropMimeData(self, row:int, column:int, data:PySide2.QtCore.QMimeData, action:PySide2.QtCore.Qt.DropAction) -> bool: ... + def editItem(self, item:PySide2.QtWidgets.QTableWidgetItem) -> None: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def findItems(self, text:str, flags:PySide2.QtCore.Qt.MatchFlags) -> typing.List: ... + def horizontalHeaderItem(self, column:int) -> PySide2.QtWidgets.QTableWidgetItem: ... + def indexFromItem(self, item:PySide2.QtWidgets.QTableWidgetItem) -> PySide2.QtCore.QModelIndex: ... + def insertColumn(self, column:int) -> None: ... + def insertRow(self, row:int) -> None: ... + def isItemSelected(self, item:PySide2.QtWidgets.QTableWidgetItem) -> bool: ... + @typing.overload + def isPersistentEditorOpen(self, index:PySide2.QtCore.QModelIndex) -> bool: ... + @typing.overload + def isPersistentEditorOpen(self, item:PySide2.QtWidgets.QTableWidgetItem) -> bool: ... + def isSortingEnabled(self) -> bool: ... + def item(self, row:int, column:int) -> PySide2.QtWidgets.QTableWidgetItem: ... + @typing.overload + def itemAt(self, p:PySide2.QtCore.QPoint) -> PySide2.QtWidgets.QTableWidgetItem: ... + @typing.overload + def itemAt(self, x:int, y:int) -> PySide2.QtWidgets.QTableWidgetItem: ... + def itemFromIndex(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtWidgets.QTableWidgetItem: ... + def itemPrototype(self) -> PySide2.QtWidgets.QTableWidgetItem: ... + def items(self, data:PySide2.QtCore.QMimeData) -> typing.List: ... + def mimeData(self, items:typing.Sequence) -> PySide2.QtCore.QMimeData: ... + def mimeTypes(self) -> typing.List: ... + @typing.overload + def openPersistentEditor(self, index:PySide2.QtCore.QModelIndex) -> None: ... + @typing.overload + def openPersistentEditor(self, item:PySide2.QtWidgets.QTableWidgetItem) -> None: ... + def removeCellWidget(self, row:int, column:int) -> None: ... + def removeColumn(self, column:int) -> None: ... + def removeRow(self, row:int) -> None: ... + def row(self, item:PySide2.QtWidgets.QTableWidgetItem) -> int: ... + def rowCount(self) -> int: ... + def scrollToItem(self, item:PySide2.QtWidgets.QTableWidgetItem, hint:PySide2.QtWidgets.QAbstractItemView.ScrollHint=...) -> None: ... + def selectedItems(self) -> typing.List: ... + def selectedRanges(self) -> typing.List: ... + def setCellWidget(self, row:int, column:int, widget:PySide2.QtWidgets.QWidget) -> None: ... + def setColumnCount(self, columns:int) -> None: ... + @typing.overload + def setCurrentCell(self, row:int, column:int) -> None: ... + @typing.overload + def setCurrentCell(self, row:int, column:int, command:PySide2.QtCore.QItemSelectionModel.SelectionFlags) -> None: ... + @typing.overload + def setCurrentItem(self, item:PySide2.QtWidgets.QTableWidgetItem) -> None: ... + @typing.overload + def setCurrentItem(self, item:PySide2.QtWidgets.QTableWidgetItem, command:PySide2.QtCore.QItemSelectionModel.SelectionFlags) -> None: ... + def setHorizontalHeaderItem(self, column:int, item:PySide2.QtWidgets.QTableWidgetItem) -> None: ... + def setHorizontalHeaderLabels(self, labels:typing.Sequence) -> None: ... + def setItem(self, row:int, column:int, item:PySide2.QtWidgets.QTableWidgetItem) -> None: ... + def setItemPrototype(self, item:PySide2.QtWidgets.QTableWidgetItem) -> None: ... + def setItemSelected(self, item:PySide2.QtWidgets.QTableWidgetItem, select:bool) -> None: ... + def setModel(self, model:PySide2.QtCore.QAbstractItemModel) -> None: ... + def setRangeSelected(self, range:PySide2.QtWidgets.QTableWidgetSelectionRange, select:bool) -> None: ... + def setRowCount(self, rows:int) -> None: ... + def setSortingEnabled(self, enable:bool) -> None: ... + def setVerticalHeaderItem(self, row:int, item:PySide2.QtWidgets.QTableWidgetItem) -> None: ... + def setVerticalHeaderLabels(self, labels:typing.Sequence) -> None: ... + def sortItems(self, column:int, order:PySide2.QtCore.Qt.SortOrder=...) -> None: ... + def supportedDropActions(self) -> PySide2.QtCore.Qt.DropActions: ... + def takeHorizontalHeaderItem(self, column:int) -> PySide2.QtWidgets.QTableWidgetItem: ... + def takeItem(self, row:int, column:int) -> PySide2.QtWidgets.QTableWidgetItem: ... + def takeVerticalHeaderItem(self, row:int) -> PySide2.QtWidgets.QTableWidgetItem: ... + def verticalHeaderItem(self, row:int) -> PySide2.QtWidgets.QTableWidgetItem: ... + def visualColumn(self, logicalColumn:int) -> int: ... + def visualItemRect(self, item:PySide2.QtWidgets.QTableWidgetItem) -> PySide2.QtCore.QRect: ... + def visualRow(self, logicalRow:int) -> int: ... + + +class QTableWidgetItem(Shiboken.Object): + Type : QTableWidgetItem = ... # 0x0 + UserType : QTableWidgetItem = ... # 0x3e8 + + class ItemType(object): + Type : QTableWidgetItem.ItemType = ... # 0x0 + UserType : QTableWidgetItem.ItemType = ... # 0x3e8 + + @typing.overload + def __init__(self, icon:PySide2.QtGui.QIcon, text:str, type:int=...) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtWidgets.QTableWidgetItem) -> None: ... + @typing.overload + def __init__(self, text:str, type:int=...) -> None: ... + @typing.overload + def __init__(self, type:int=...) -> None: ... + + def __lshift__(self, out:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __rshift__(self, in_:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def background(self) -> PySide2.QtGui.QBrush: ... + def backgroundColor(self) -> PySide2.QtGui.QColor: ... + def checkState(self) -> PySide2.QtCore.Qt.CheckState: ... + def clone(self) -> PySide2.QtWidgets.QTableWidgetItem: ... + def column(self) -> int: ... + def data(self, role:int) -> typing.Any: ... + def flags(self) -> PySide2.QtCore.Qt.ItemFlags: ... + def font(self) -> PySide2.QtGui.QFont: ... + def foreground(self) -> PySide2.QtGui.QBrush: ... + def icon(self) -> PySide2.QtGui.QIcon: ... + def isSelected(self) -> bool: ... + def read(self, in_:PySide2.QtCore.QDataStream) -> None: ... + def row(self) -> int: ... + def setBackground(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setBackgroundColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setCheckState(self, state:PySide2.QtCore.Qt.CheckState) -> None: ... + def setData(self, role:int, value:typing.Any) -> None: ... + def setFlags(self, flags:PySide2.QtCore.Qt.ItemFlags) -> None: ... + def setFont(self, font:PySide2.QtGui.QFont) -> None: ... + def setForeground(self, brush:PySide2.QtGui.QBrush) -> None: ... + def setIcon(self, icon:PySide2.QtGui.QIcon) -> None: ... + def setSelected(self, select:bool) -> None: ... + def setSizeHint(self, size:PySide2.QtCore.QSize) -> None: ... + def setStatusTip(self, statusTip:str) -> None: ... + def setText(self, text:str) -> None: ... + def setTextAlignment(self, alignment:int) -> None: ... + def setTextColor(self, color:PySide2.QtGui.QColor) -> None: ... + def setToolTip(self, toolTip:str) -> None: ... + def setWhatsThis(self, whatsThis:str) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def statusTip(self) -> str: ... + def tableWidget(self) -> PySide2.QtWidgets.QTableWidget: ... + def text(self) -> str: ... + def textAlignment(self) -> int: ... + def textColor(self) -> PySide2.QtGui.QColor: ... + def toolTip(self) -> str: ... + def type(self) -> int: ... + def whatsThis(self) -> str: ... + def write(self, out:PySide2.QtCore.QDataStream) -> None: ... + + +class QTableWidgetSelectionRange(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtWidgets.QTableWidgetSelectionRange) -> None: ... + @typing.overload + def __init__(self, top:int, left:int, bottom:int, right:int) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def bottomRow(self) -> int: ... + def columnCount(self) -> int: ... + def leftColumn(self) -> int: ... + def rightColumn(self) -> int: ... + def rowCount(self) -> int: ... + def topRow(self) -> int: ... + + +class QTapAndHoldGesture(PySide2.QtWidgets.QGesture): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def position(self) -> PySide2.QtCore.QPointF: ... + def setPosition(self, pos:PySide2.QtCore.QPointF) -> None: ... + @staticmethod + def setTimeout(msecs:int) -> None: ... + @staticmethod + def timeout() -> int: ... + + +class QTapGesture(PySide2.QtWidgets.QGesture): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def position(self) -> PySide2.QtCore.QPointF: ... + def setPosition(self, pos:PySide2.QtCore.QPointF) -> None: ... + + +class QTextBrowser(PySide2.QtWidgets.QTextEdit): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def backward(self) -> None: ... + def backwardHistoryCount(self) -> int: ... + def clearHistory(self) -> None: ... + def doSetSource(self, name:PySide2.QtCore.QUrl, type:PySide2.QtGui.QTextDocument.ResourceType=...) -> None: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def focusNextPrevChild(self, next:bool) -> bool: ... + def focusOutEvent(self, ev:PySide2.QtGui.QFocusEvent) -> None: ... + def forward(self) -> None: ... + def forwardHistoryCount(self) -> int: ... + def historyTitle(self, arg__1:int) -> str: ... + def historyUrl(self, arg__1:int) -> PySide2.QtCore.QUrl: ... + def home(self) -> None: ... + def isBackwardAvailable(self) -> bool: ... + def isForwardAvailable(self) -> bool: ... + def keyPressEvent(self, ev:PySide2.QtGui.QKeyEvent) -> None: ... + def loadResource(self, type:int, name:PySide2.QtCore.QUrl) -> typing.Any: ... + def mouseMoveEvent(self, ev:PySide2.QtGui.QMouseEvent) -> None: ... + def mousePressEvent(self, ev:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, ev:PySide2.QtGui.QMouseEvent) -> None: ... + def openExternalLinks(self) -> bool: ... + def openLinks(self) -> bool: ... + def paintEvent(self, e:PySide2.QtGui.QPaintEvent) -> None: ... + def reload(self) -> None: ... + def searchPaths(self) -> typing.List: ... + def setOpenExternalLinks(self, open:bool) -> None: ... + def setOpenLinks(self, open:bool) -> None: ... + def setSearchPaths(self, paths:typing.Sequence) -> None: ... + @typing.overload + def setSource(self, name:PySide2.QtCore.QUrl) -> None: ... + @typing.overload + def setSource(self, name:PySide2.QtCore.QUrl, type:PySide2.QtGui.QTextDocument.ResourceType) -> None: ... + def source(self) -> PySide2.QtCore.QUrl: ... + def sourceType(self) -> PySide2.QtGui.QTextDocument.ResourceType: ... + + +class QTextEdit(PySide2.QtWidgets.QAbstractScrollArea): + AutoAll : QTextEdit = ... # -0x1 + AutoNone : QTextEdit = ... # 0x0 + NoWrap : QTextEdit = ... # 0x0 + AutoBulletList : QTextEdit = ... # 0x1 + WidgetWidth : QTextEdit = ... # 0x1 + FixedPixelWidth : QTextEdit = ... # 0x2 + FixedColumnWidth : QTextEdit = ... # 0x3 + + class AutoFormatting(object): ... + + class AutoFormattingFlag(object): + AutoAll : QTextEdit.AutoFormattingFlag = ... # -0x1 + AutoNone : QTextEdit.AutoFormattingFlag = ... # 0x0 + AutoBulletList : QTextEdit.AutoFormattingFlag = ... # 0x1 + + class ExtraSelection(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, ExtraSelection:PySide2.QtWidgets.QTextEdit.ExtraSelection) -> None: ... + + @staticmethod + def __copy__() -> None: ... + + class LineWrapMode(object): + NoWrap : QTextEdit.LineWrapMode = ... # 0x0 + WidgetWidth : QTextEdit.LineWrapMode = ... # 0x1 + FixedPixelWidth : QTextEdit.LineWrapMode = ... # 0x2 + FixedColumnWidth : QTextEdit.LineWrapMode = ... # 0x3 + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, text:str, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def acceptRichText(self) -> bool: ... + def alignment(self) -> PySide2.QtCore.Qt.Alignment: ... + def anchorAt(self, pos:PySide2.QtCore.QPoint) -> str: ... + def append(self, text:str) -> None: ... + def autoFormatting(self) -> PySide2.QtWidgets.QTextEdit.AutoFormatting: ... + def canInsertFromMimeData(self, source:PySide2.QtCore.QMimeData) -> bool: ... + def canPaste(self) -> bool: ... + def changeEvent(self, e:PySide2.QtCore.QEvent) -> None: ... + def clear(self) -> None: ... + def contextMenuEvent(self, e:PySide2.QtGui.QContextMenuEvent) -> None: ... + def copy(self) -> None: ... + def createMimeDataFromSelection(self) -> PySide2.QtCore.QMimeData: ... + @typing.overload + def createStandardContextMenu(self) -> PySide2.QtWidgets.QMenu: ... + @typing.overload + def createStandardContextMenu(self, position:PySide2.QtCore.QPoint) -> PySide2.QtWidgets.QMenu: ... + def currentCharFormat(self) -> PySide2.QtGui.QTextCharFormat: ... + def currentFont(self) -> PySide2.QtGui.QFont: ... + def cursorForPosition(self, pos:PySide2.QtCore.QPoint) -> PySide2.QtGui.QTextCursor: ... + @typing.overload + def cursorRect(self) -> PySide2.QtCore.QRect: ... + @typing.overload + def cursorRect(self, cursor:PySide2.QtGui.QTextCursor) -> PySide2.QtCore.QRect: ... + def cursorWidth(self) -> int: ... + def cut(self) -> None: ... + def doSetTextCursor(self, cursor:PySide2.QtGui.QTextCursor) -> None: ... + def document(self) -> PySide2.QtGui.QTextDocument: ... + def documentTitle(self) -> str: ... + def dragEnterEvent(self, e:PySide2.QtGui.QDragEnterEvent) -> None: ... + def dragLeaveEvent(self, e:PySide2.QtGui.QDragLeaveEvent) -> None: ... + def dragMoveEvent(self, e:PySide2.QtGui.QDragMoveEvent) -> None: ... + def dropEvent(self, e:PySide2.QtGui.QDropEvent) -> None: ... + def ensureCursorVisible(self) -> None: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def extraSelections(self) -> typing.List: ... + @typing.overload + def find(self, exp:PySide2.QtCore.QRegExp, options:PySide2.QtGui.QTextDocument.FindFlags=...) -> bool: ... + @typing.overload + def find(self, exp:PySide2.QtCore.QRegularExpression, options:PySide2.QtGui.QTextDocument.FindFlags=...) -> bool: ... + @typing.overload + def find(self, exp:str, options:PySide2.QtGui.QTextDocument.FindFlags=...) -> bool: ... + def focusInEvent(self, e:PySide2.QtGui.QFocusEvent) -> None: ... + def focusNextPrevChild(self, next:bool) -> bool: ... + def focusOutEvent(self, e:PySide2.QtGui.QFocusEvent) -> None: ... + def fontFamily(self) -> str: ... + def fontItalic(self) -> bool: ... + def fontPointSize(self) -> float: ... + def fontUnderline(self) -> bool: ... + def fontWeight(self) -> int: ... + def inputMethodEvent(self, arg__1:PySide2.QtGui.QInputMethodEvent) -> None: ... + @typing.overload + def inputMethodQuery(self, property:PySide2.QtCore.Qt.InputMethodQuery) -> typing.Any: ... + @typing.overload + def inputMethodQuery(self, query:PySide2.QtCore.Qt.InputMethodQuery, argument:typing.Any) -> typing.Any: ... + def insertFromMimeData(self, source:PySide2.QtCore.QMimeData) -> None: ... + def insertHtml(self, text:str) -> None: ... + def insertPlainText(self, text:str) -> None: ... + def isReadOnly(self) -> bool: ... + def isUndoRedoEnabled(self) -> bool: ... + def keyPressEvent(self, e:PySide2.QtGui.QKeyEvent) -> None: ... + def keyReleaseEvent(self, e:PySide2.QtGui.QKeyEvent) -> None: ... + def lineWrapColumnOrWidth(self) -> int: ... + def lineWrapMode(self) -> PySide2.QtWidgets.QTextEdit.LineWrapMode: ... + def loadResource(self, type:int, name:PySide2.QtCore.QUrl) -> typing.Any: ... + def mergeCurrentCharFormat(self, modifier:PySide2.QtGui.QTextCharFormat) -> None: ... + def mouseDoubleClickEvent(self, e:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseMoveEvent(self, e:PySide2.QtGui.QMouseEvent) -> None: ... + def mousePressEvent(self, e:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, e:PySide2.QtGui.QMouseEvent) -> None: ... + def moveCursor(self, operation:PySide2.QtGui.QTextCursor.MoveOperation, mode:PySide2.QtGui.QTextCursor.MoveMode=...) -> None: ... + def overwriteMode(self) -> bool: ... + def paintEvent(self, e:PySide2.QtGui.QPaintEvent) -> None: ... + def paste(self) -> None: ... + def placeholderText(self) -> str: ... + def print_(self, printer:PySide2.QtGui.QPagedPaintDevice) -> None: ... + def redo(self) -> None: ... + def resizeEvent(self, e:PySide2.QtGui.QResizeEvent) -> None: ... + def scrollContentsBy(self, dx:int, dy:int) -> None: ... + def scrollToAnchor(self, name:str) -> None: ... + def selectAll(self) -> None: ... + def setAcceptRichText(self, accept:bool) -> None: ... + def setAlignment(self, a:PySide2.QtCore.Qt.Alignment) -> None: ... + def setAutoFormatting(self, features:PySide2.QtWidgets.QTextEdit.AutoFormatting) -> None: ... + def setCurrentCharFormat(self, format:PySide2.QtGui.QTextCharFormat) -> None: ... + def setCurrentFont(self, f:PySide2.QtGui.QFont) -> None: ... + def setCursorWidth(self, width:int) -> None: ... + def setDocument(self, document:PySide2.QtGui.QTextDocument) -> None: ... + def setDocumentTitle(self, title:str) -> None: ... + def setExtraSelections(self, selections:typing.Sequence) -> None: ... + def setFontFamily(self, fontFamily:str) -> None: ... + def setFontItalic(self, b:bool) -> None: ... + def setFontPointSize(self, s:float) -> None: ... + def setFontUnderline(self, b:bool) -> None: ... + def setFontWeight(self, w:int) -> None: ... + def setHtml(self, text:str) -> None: ... + def setLineWrapColumnOrWidth(self, w:int) -> None: ... + def setLineWrapMode(self, mode:PySide2.QtWidgets.QTextEdit.LineWrapMode) -> None: ... + def setMarkdown(self, markdown:str) -> None: ... + def setOverwriteMode(self, overwrite:bool) -> None: ... + def setPlaceholderText(self, placeholderText:str) -> None: ... + def setPlainText(self, text:str) -> None: ... + def setReadOnly(self, ro:bool) -> None: ... + def setTabChangesFocus(self, b:bool) -> None: ... + def setTabStopDistance(self, distance:float) -> None: ... + def setTabStopWidth(self, width:int) -> None: ... + def setText(self, text:str) -> None: ... + def setTextBackgroundColor(self, c:PySide2.QtGui.QColor) -> None: ... + def setTextColor(self, c:PySide2.QtGui.QColor) -> None: ... + def setTextCursor(self, cursor:PySide2.QtGui.QTextCursor) -> None: ... + def setTextInteractionFlags(self, flags:PySide2.QtCore.Qt.TextInteractionFlags) -> None: ... + def setUndoRedoEnabled(self, enable:bool) -> None: ... + def setWordWrapMode(self, policy:PySide2.QtGui.QTextOption.WrapMode) -> None: ... + def showEvent(self, arg__1:PySide2.QtGui.QShowEvent) -> None: ... + def tabChangesFocus(self) -> bool: ... + def tabStopDistance(self) -> float: ... + def tabStopWidth(self) -> int: ... + def textBackgroundColor(self) -> PySide2.QtGui.QColor: ... + def textColor(self) -> PySide2.QtGui.QColor: ... + def textCursor(self) -> PySide2.QtGui.QTextCursor: ... + def textInteractionFlags(self) -> PySide2.QtCore.Qt.TextInteractionFlags: ... + def timerEvent(self, e:PySide2.QtCore.QTimerEvent) -> None: ... + def toHtml(self) -> str: ... + def toMarkdown(self, features:PySide2.QtGui.QTextDocument.MarkdownFeatures=...) -> str: ... + def toPlainText(self) -> str: ... + def undo(self) -> None: ... + def wheelEvent(self, e:PySide2.QtGui.QWheelEvent) -> None: ... + def wordWrapMode(self) -> PySide2.QtGui.QTextOption.WrapMode: ... + def zoomIn(self, range:int=...) -> None: ... + def zoomInF(self, range:float) -> None: ... + def zoomOut(self, range:int=...) -> None: ... + + +class QTileRules(Shiboken.Object): + + @typing.overload + def __init__(self, QTileRules:PySide2.QtWidgets.QTileRules) -> None: ... + @typing.overload + def __init__(self, horizontalRule:PySide2.QtCore.Qt.TileRule, verticalRule:PySide2.QtCore.Qt.TileRule) -> None: ... + @typing.overload + def __init__(self, rule:PySide2.QtCore.Qt.TileRule=...) -> None: ... + + @staticmethod + def __copy__() -> None: ... + + +class QTimeEdit(PySide2.QtWidgets.QDateTimeEdit): + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, time:PySide2.QtCore.QTime, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + +class QToolBar(PySide2.QtWidgets.QWidget): + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, title:str, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + @typing.overload + def actionAt(self, p:PySide2.QtCore.QPoint) -> PySide2.QtWidgets.QAction: ... + @typing.overload + def actionAt(self, x:int, y:int) -> PySide2.QtWidgets.QAction: ... + def actionEvent(self, event:PySide2.QtGui.QActionEvent) -> None: ... + def actionGeometry(self, action:PySide2.QtWidgets.QAction) -> PySide2.QtCore.QRect: ... + @typing.overload + def addAction(self, arg__1:PySide2.QtWidgets.QAction) -> None: ... + @typing.overload + def addAction(self, icon:PySide2.QtGui.QIcon, text:str) -> PySide2.QtWidgets.QAction: ... + @typing.overload + def addAction(self, icon:PySide2.QtGui.QIcon, text:str, receiver:PySide2.QtCore.QObject, member:bytes) -> PySide2.QtWidgets.QAction: ... + @typing.overload + def addAction(self, text:str) -> PySide2.QtWidgets.QAction: ... + @typing.overload + def addAction(self, text:str, receiver:PySide2.QtCore.QObject, member:bytes) -> PySide2.QtWidgets.QAction: ... + def addSeparator(self) -> PySide2.QtWidgets.QAction: ... + def addWidget(self, widget:PySide2.QtWidgets.QWidget) -> PySide2.QtWidgets.QAction: ... + def allowedAreas(self) -> PySide2.QtCore.Qt.ToolBarAreas: ... + def changeEvent(self, event:PySide2.QtCore.QEvent) -> None: ... + def clear(self) -> None: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def iconSize(self) -> PySide2.QtCore.QSize: ... + def initStyleOption(self, option:PySide2.QtWidgets.QStyleOptionToolBar) -> None: ... + def insertSeparator(self, before:PySide2.QtWidgets.QAction) -> PySide2.QtWidgets.QAction: ... + def insertWidget(self, before:PySide2.QtWidgets.QAction, widget:PySide2.QtWidgets.QWidget) -> PySide2.QtWidgets.QAction: ... + def isAreaAllowed(self, area:PySide2.QtCore.Qt.ToolBarArea) -> bool: ... + def isFloatable(self) -> bool: ... + def isFloating(self) -> bool: ... + def isMovable(self) -> bool: ... + def orientation(self) -> PySide2.QtCore.Qt.Orientation: ... + def paintEvent(self, event:PySide2.QtGui.QPaintEvent) -> None: ... + def setAllowedAreas(self, areas:PySide2.QtCore.Qt.ToolBarAreas) -> None: ... + def setFloatable(self, floatable:bool) -> None: ... + def setIconSize(self, iconSize:PySide2.QtCore.QSize) -> None: ... + def setMovable(self, movable:bool) -> None: ... + def setOrientation(self, orientation:PySide2.QtCore.Qt.Orientation) -> None: ... + def setToolButtonStyle(self, toolButtonStyle:PySide2.QtCore.Qt.ToolButtonStyle) -> None: ... + def toggleViewAction(self) -> PySide2.QtWidgets.QAction: ... + def toolButtonStyle(self) -> PySide2.QtCore.Qt.ToolButtonStyle: ... + def widgetForAction(self, action:PySide2.QtWidgets.QAction) -> PySide2.QtWidgets.QWidget: ... + + +class QToolBox(PySide2.QtWidgets.QFrame): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., f:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + + @typing.overload + def addItem(self, widget:PySide2.QtWidgets.QWidget, icon:PySide2.QtGui.QIcon, text:str) -> int: ... + @typing.overload + def addItem(self, widget:PySide2.QtWidgets.QWidget, text:str) -> int: ... + def changeEvent(self, arg__1:PySide2.QtCore.QEvent) -> None: ... + def count(self) -> int: ... + def currentIndex(self) -> int: ... + def currentWidget(self) -> PySide2.QtWidgets.QWidget: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def indexOf(self, widget:PySide2.QtWidgets.QWidget) -> int: ... + @typing.overload + def insertItem(self, index:int, widget:PySide2.QtWidgets.QWidget, icon:PySide2.QtGui.QIcon, text:str) -> int: ... + @typing.overload + def insertItem(self, index:int, widget:PySide2.QtWidgets.QWidget, text:str) -> int: ... + def isItemEnabled(self, index:int) -> bool: ... + def itemIcon(self, index:int) -> PySide2.QtGui.QIcon: ... + def itemInserted(self, index:int) -> None: ... + def itemRemoved(self, index:int) -> None: ... + def itemText(self, index:int) -> str: ... + def itemToolTip(self, index:int) -> str: ... + def removeItem(self, index:int) -> None: ... + def setCurrentIndex(self, index:int) -> None: ... + def setCurrentWidget(self, widget:PySide2.QtWidgets.QWidget) -> None: ... + def setItemEnabled(self, index:int, enabled:bool) -> None: ... + def setItemIcon(self, index:int, icon:PySide2.QtGui.QIcon) -> None: ... + def setItemText(self, index:int, text:str) -> None: ... + def setItemToolTip(self, index:int, toolTip:str) -> None: ... + def showEvent(self, e:PySide2.QtGui.QShowEvent) -> None: ... + def widget(self, index:int) -> PySide2.QtWidgets.QWidget: ... + + +class QToolButton(PySide2.QtWidgets.QAbstractButton): + DelayedPopup : QToolButton = ... # 0x0 + MenuButtonPopup : QToolButton = ... # 0x1 + InstantPopup : QToolButton = ... # 0x2 + + class ToolButtonPopupMode(object): + DelayedPopup : QToolButton.ToolButtonPopupMode = ... # 0x0 + MenuButtonPopup : QToolButton.ToolButtonPopupMode = ... # 0x1 + InstantPopup : QToolButton.ToolButtonPopupMode = ... # 0x2 + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def actionEvent(self, arg__1:PySide2.QtGui.QActionEvent) -> None: ... + def arrowType(self) -> PySide2.QtCore.Qt.ArrowType: ... + def autoRaise(self) -> bool: ... + def changeEvent(self, arg__1:PySide2.QtCore.QEvent) -> None: ... + def defaultAction(self) -> PySide2.QtWidgets.QAction: ... + def enterEvent(self, arg__1:PySide2.QtCore.QEvent) -> None: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def hitButton(self, pos:PySide2.QtCore.QPoint) -> bool: ... + def initStyleOption(self, option:PySide2.QtWidgets.QStyleOptionToolButton) -> None: ... + def leaveEvent(self, arg__1:PySide2.QtCore.QEvent) -> None: ... + def menu(self) -> PySide2.QtWidgets.QMenu: ... + def minimumSizeHint(self) -> PySide2.QtCore.QSize: ... + def mousePressEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, arg__1:PySide2.QtGui.QMouseEvent) -> None: ... + def nextCheckState(self) -> None: ... + def paintEvent(self, arg__1:PySide2.QtGui.QPaintEvent) -> None: ... + def popupMode(self) -> PySide2.QtWidgets.QToolButton.ToolButtonPopupMode: ... + def setArrowType(self, type:PySide2.QtCore.Qt.ArrowType) -> None: ... + def setAutoRaise(self, enable:bool) -> None: ... + def setDefaultAction(self, arg__1:PySide2.QtWidgets.QAction) -> None: ... + def setMenu(self, menu:PySide2.QtWidgets.QMenu) -> None: ... + def setPopupMode(self, mode:PySide2.QtWidgets.QToolButton.ToolButtonPopupMode) -> None: ... + def setToolButtonStyle(self, style:PySide2.QtCore.Qt.ToolButtonStyle) -> None: ... + def showMenu(self) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def timerEvent(self, arg__1:PySide2.QtCore.QTimerEvent) -> None: ... + def toolButtonStyle(self) -> PySide2.QtCore.Qt.ToolButtonStyle: ... + + +class QToolTip(Shiboken.Object): + @staticmethod + def font() -> PySide2.QtGui.QFont: ... + @staticmethod + def hideText() -> None: ... + @staticmethod + def isVisible() -> bool: ... + @staticmethod + def palette() -> PySide2.QtGui.QPalette: ... + @staticmethod + def setFont(arg__1:PySide2.QtGui.QFont) -> None: ... + @staticmethod + def setPalette(arg__1:PySide2.QtGui.QPalette) -> None: ... + @typing.overload + @staticmethod + def showText(pos:PySide2.QtCore.QPoint, text:str, w:PySide2.QtWidgets.QWidget, rect:PySide2.QtCore.QRect) -> None: ... + @typing.overload + @staticmethod + def showText(pos:PySide2.QtCore.QPoint, text:str, w:PySide2.QtWidgets.QWidget, rect:PySide2.QtCore.QRect, msecShowTime:int) -> None: ... + @typing.overload + @staticmethod + def showText(pos:PySide2.QtCore.QPoint, text:str, w:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @staticmethod + def text() -> str: ... + + +class QTreeView(PySide2.QtWidgets.QAbstractItemView): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def allColumnsShowFocus(self) -> bool: ... + def autoExpandDelay(self) -> int: ... + def collapse(self, index:PySide2.QtCore.QModelIndex) -> None: ... + def collapseAll(self) -> None: ... + def columnAt(self, x:int) -> int: ... + def columnCountChanged(self, oldCount:int, newCount:int) -> None: ... + def columnMoved(self) -> None: ... + def columnResized(self, column:int, oldSize:int, newSize:int) -> None: ... + def columnViewportPosition(self, column:int) -> int: ... + def columnWidth(self, column:int) -> int: ... + def currentChanged(self, current:PySide2.QtCore.QModelIndex, previous:PySide2.QtCore.QModelIndex) -> None: ... + def dataChanged(self, topLeft:PySide2.QtCore.QModelIndex, bottomRight:PySide2.QtCore.QModelIndex, roles:typing.List=...) -> None: ... + def doItemsLayout(self) -> None: ... + def dragMoveEvent(self, event:PySide2.QtGui.QDragMoveEvent) -> None: ... + def drawBranches(self, painter:PySide2.QtGui.QPainter, rect:PySide2.QtCore.QRect, index:PySide2.QtCore.QModelIndex) -> None: ... + def drawRow(self, painter:PySide2.QtGui.QPainter, options:PySide2.QtWidgets.QStyleOptionViewItem, index:PySide2.QtCore.QModelIndex) -> None: ... + def drawTree(self, painter:PySide2.QtGui.QPainter, region:PySide2.QtGui.QRegion) -> None: ... + def expand(self, index:PySide2.QtCore.QModelIndex) -> None: ... + def expandAll(self) -> None: ... + def expandRecursively(self, index:PySide2.QtCore.QModelIndex, depth:int=...) -> None: ... + def expandToDepth(self, depth:int) -> None: ... + def expandsOnDoubleClick(self) -> bool: ... + def header(self) -> PySide2.QtWidgets.QHeaderView: ... + def hideColumn(self, column:int) -> None: ... + def horizontalOffset(self) -> int: ... + def horizontalScrollbarAction(self, action:int) -> None: ... + def indentation(self) -> int: ... + def indexAbove(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def indexAt(self, p:PySide2.QtCore.QPoint) -> PySide2.QtCore.QModelIndex: ... + def indexBelow(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QModelIndex: ... + def indexRowSizeHint(self, index:PySide2.QtCore.QModelIndex) -> int: ... + def isAnimated(self) -> bool: ... + def isColumnHidden(self, column:int) -> bool: ... + def isExpanded(self, index:PySide2.QtCore.QModelIndex) -> bool: ... + def isFirstColumnSpanned(self, row:int, parent:PySide2.QtCore.QModelIndex) -> bool: ... + def isHeaderHidden(self) -> bool: ... + def isIndexHidden(self, index:PySide2.QtCore.QModelIndex) -> bool: ... + def isRowHidden(self, row:int, parent:PySide2.QtCore.QModelIndex) -> bool: ... + def isSortingEnabled(self) -> bool: ... + def itemsExpandable(self) -> bool: ... + def keyPressEvent(self, event:PySide2.QtGui.QKeyEvent) -> None: ... + def keyboardSearch(self, search:str) -> None: ... + def mouseDoubleClickEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseMoveEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def mousePressEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def moveCursor(self, cursorAction:PySide2.QtWidgets.QAbstractItemView.CursorAction, modifiers:PySide2.QtCore.Qt.KeyboardModifiers) -> PySide2.QtCore.QModelIndex: ... + def paintEvent(self, event:PySide2.QtGui.QPaintEvent) -> None: ... + def reexpand(self) -> None: ... + def reset(self) -> None: ... + def resetIndentation(self) -> None: ... + def resizeColumnToContents(self, column:int) -> None: ... + def rootIsDecorated(self) -> bool: ... + def rowHeight(self, index:PySide2.QtCore.QModelIndex) -> int: ... + def rowsAboutToBeRemoved(self, parent:PySide2.QtCore.QModelIndex, start:int, end:int) -> None: ... + def rowsInserted(self, parent:PySide2.QtCore.QModelIndex, start:int, end:int) -> None: ... + def rowsRemoved(self, parent:PySide2.QtCore.QModelIndex, first:int, last:int) -> None: ... + def scrollContentsBy(self, dx:int, dy:int) -> None: ... + def scrollTo(self, index:PySide2.QtCore.QModelIndex, hint:PySide2.QtWidgets.QAbstractItemView.ScrollHint=...) -> None: ... + def selectAll(self) -> None: ... + def selectedIndexes(self) -> typing.List: ... + def selectionChanged(self, selected:PySide2.QtCore.QItemSelection, deselected:PySide2.QtCore.QItemSelection) -> None: ... + def setAllColumnsShowFocus(self, enable:bool) -> None: ... + def setAnimated(self, enable:bool) -> None: ... + def setAutoExpandDelay(self, delay:int) -> None: ... + def setColumnHidden(self, column:int, hide:bool) -> None: ... + def setColumnWidth(self, column:int, width:int) -> None: ... + def setExpanded(self, index:PySide2.QtCore.QModelIndex, expand:bool) -> None: ... + def setExpandsOnDoubleClick(self, enable:bool) -> None: ... + def setFirstColumnSpanned(self, row:int, parent:PySide2.QtCore.QModelIndex, span:bool) -> None: ... + def setHeader(self, header:PySide2.QtWidgets.QHeaderView) -> None: ... + def setHeaderHidden(self, hide:bool) -> None: ... + def setIndentation(self, i:int) -> None: ... + def setItemsExpandable(self, enable:bool) -> None: ... + def setModel(self, model:PySide2.QtCore.QAbstractItemModel) -> None: ... + def setRootIndex(self, index:PySide2.QtCore.QModelIndex) -> None: ... + def setRootIsDecorated(self, show:bool) -> None: ... + def setRowHidden(self, row:int, parent:PySide2.QtCore.QModelIndex, hide:bool) -> None: ... + def setSelection(self, rect:PySide2.QtCore.QRect, command:PySide2.QtCore.QItemSelectionModel.SelectionFlags) -> None: ... + def setSelectionModel(self, selectionModel:PySide2.QtCore.QItemSelectionModel) -> None: ... + def setSortingEnabled(self, enable:bool) -> None: ... + def setTreePosition(self, logicalIndex:int) -> None: ... + def setUniformRowHeights(self, uniform:bool) -> None: ... + def setWordWrap(self, on:bool) -> None: ... + def showColumn(self, column:int) -> None: ... + def sizeHintForColumn(self, column:int) -> int: ... + @typing.overload + def sortByColumn(self, column:int) -> None: ... + @typing.overload + def sortByColumn(self, column:int, order:PySide2.QtCore.Qt.SortOrder) -> None: ... + def timerEvent(self, event:PySide2.QtCore.QTimerEvent) -> None: ... + def treePosition(self) -> int: ... + def uniformRowHeights(self) -> bool: ... + def updateGeometries(self) -> None: ... + def verticalOffset(self) -> int: ... + def verticalScrollbarValueChanged(self, value:int) -> None: ... + def viewportEvent(self, event:PySide2.QtCore.QEvent) -> bool: ... + def viewportSizeHint(self) -> PySide2.QtCore.QSize: ... + def visualRect(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtCore.QRect: ... + def visualRegionForSelection(self, selection:PySide2.QtCore.QItemSelection) -> PySide2.QtGui.QRegion: ... + def wordWrap(self) -> bool: ... + + +class QTreeWidget(PySide2.QtWidgets.QTreeView): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def addTopLevelItem(self, item:PySide2.QtWidgets.QTreeWidgetItem) -> None: ... + def addTopLevelItems(self, items:typing.Sequence) -> None: ... + def clear(self) -> None: ... + @typing.overload + def closePersistentEditor(self, index:PySide2.QtCore.QModelIndex) -> None: ... + @typing.overload + def closePersistentEditor(self, item:PySide2.QtWidgets.QTreeWidgetItem, column:int=...) -> None: ... + def collapseItem(self, item:PySide2.QtWidgets.QTreeWidgetItem) -> None: ... + def columnCount(self) -> int: ... + def currentColumn(self) -> int: ... + def currentItem(self) -> PySide2.QtWidgets.QTreeWidgetItem: ... + def dropEvent(self, event:PySide2.QtGui.QDropEvent) -> None: ... + def dropMimeData(self, parent:PySide2.QtWidgets.QTreeWidgetItem, index:int, data:PySide2.QtCore.QMimeData, action:PySide2.QtCore.Qt.DropAction) -> bool: ... + def editItem(self, item:PySide2.QtWidgets.QTreeWidgetItem, column:int=...) -> None: ... + def event(self, e:PySide2.QtCore.QEvent) -> bool: ... + def expandItem(self, item:PySide2.QtWidgets.QTreeWidgetItem) -> None: ... + def findItems(self, text:str, flags:PySide2.QtCore.Qt.MatchFlags, column:int=...) -> typing.List: ... + def headerItem(self) -> PySide2.QtWidgets.QTreeWidgetItem: ... + def indexFromItem(self, item:PySide2.QtWidgets.QTreeWidgetItem, column:int=...) -> PySide2.QtCore.QModelIndex: ... + def indexOfTopLevelItem(self, item:PySide2.QtWidgets.QTreeWidgetItem) -> int: ... + def insertTopLevelItem(self, index:int, item:PySide2.QtWidgets.QTreeWidgetItem) -> None: ... + def insertTopLevelItems(self, index:int, items:typing.Sequence) -> None: ... + def invisibleRootItem(self) -> PySide2.QtWidgets.QTreeWidgetItem: ... + def isFirstItemColumnSpanned(self, item:PySide2.QtWidgets.QTreeWidgetItem) -> bool: ... + def isItemExpanded(self, item:PySide2.QtWidgets.QTreeWidgetItem) -> bool: ... + def isItemHidden(self, item:PySide2.QtWidgets.QTreeWidgetItem) -> bool: ... + def isItemSelected(self, item:PySide2.QtWidgets.QTreeWidgetItem) -> bool: ... + @typing.overload + def isPersistentEditorOpen(self, index:PySide2.QtCore.QModelIndex) -> bool: ... + @typing.overload + def isPersistentEditorOpen(self, item:PySide2.QtWidgets.QTreeWidgetItem, column:int=...) -> bool: ... + def itemAbove(self, item:PySide2.QtWidgets.QTreeWidgetItem) -> PySide2.QtWidgets.QTreeWidgetItem: ... + @typing.overload + def itemAt(self, p:PySide2.QtCore.QPoint) -> PySide2.QtWidgets.QTreeWidgetItem: ... + @typing.overload + def itemAt(self, x:int, y:int) -> PySide2.QtWidgets.QTreeWidgetItem: ... + def itemBelow(self, item:PySide2.QtWidgets.QTreeWidgetItem) -> PySide2.QtWidgets.QTreeWidgetItem: ... + def itemFromIndex(self, index:PySide2.QtCore.QModelIndex) -> PySide2.QtWidgets.QTreeWidgetItem: ... + def itemWidget(self, item:PySide2.QtWidgets.QTreeWidgetItem, column:int) -> PySide2.QtWidgets.QWidget: ... + def items(self, data:PySide2.QtCore.QMimeData) -> typing.List: ... + def mimeData(self, items:typing.Sequence) -> PySide2.QtCore.QMimeData: ... + def mimeTypes(self) -> typing.List: ... + @typing.overload + def openPersistentEditor(self, index:PySide2.QtCore.QModelIndex) -> None: ... + @typing.overload + def openPersistentEditor(self, item:PySide2.QtWidgets.QTreeWidgetItem, column:int=...) -> None: ... + def removeItemWidget(self, item:PySide2.QtWidgets.QTreeWidgetItem, column:int) -> None: ... + def scrollToItem(self, item:PySide2.QtWidgets.QTreeWidgetItem, hint:PySide2.QtWidgets.QAbstractItemView.ScrollHint=...) -> None: ... + def selectedItems(self) -> typing.List: ... + def setColumnCount(self, columns:int) -> None: ... + @typing.overload + def setCurrentItem(self, item:PySide2.QtWidgets.QTreeWidgetItem) -> None: ... + @typing.overload + def setCurrentItem(self, item:PySide2.QtWidgets.QTreeWidgetItem, column:int) -> None: ... + @typing.overload + def setCurrentItem(self, item:PySide2.QtWidgets.QTreeWidgetItem, column:int, command:PySide2.QtCore.QItemSelectionModel.SelectionFlags) -> None: ... + def setFirstItemColumnSpanned(self, item:PySide2.QtWidgets.QTreeWidgetItem, span:bool) -> None: ... + def setHeaderItem(self, item:PySide2.QtWidgets.QTreeWidgetItem) -> None: ... + def setHeaderLabel(self, label:str) -> None: ... + def setHeaderLabels(self, labels:typing.Sequence) -> None: ... + def setItemExpanded(self, item:PySide2.QtWidgets.QTreeWidgetItem, expand:bool) -> None: ... + def setItemHidden(self, item:PySide2.QtWidgets.QTreeWidgetItem, hide:bool) -> None: ... + def setItemSelected(self, item:PySide2.QtWidgets.QTreeWidgetItem, select:bool) -> None: ... + def setItemWidget(self, item:PySide2.QtWidgets.QTreeWidgetItem, column:int, widget:PySide2.QtWidgets.QWidget) -> None: ... + def setModel(self, model:PySide2.QtCore.QAbstractItemModel) -> None: ... + def setSelectionModel(self, selectionModel:PySide2.QtCore.QItemSelectionModel) -> None: ... + def sortColumn(self) -> int: ... + def sortItems(self, column:int, order:PySide2.QtCore.Qt.SortOrder) -> None: ... + def supportedDropActions(self) -> PySide2.QtCore.Qt.DropActions: ... + def takeTopLevelItem(self, index:int) -> PySide2.QtWidgets.QTreeWidgetItem: ... + def topLevelItem(self, index:int) -> PySide2.QtWidgets.QTreeWidgetItem: ... + def topLevelItemCount(self) -> int: ... + def visualItemRect(self, item:PySide2.QtWidgets.QTreeWidgetItem) -> PySide2.QtCore.QRect: ... + + +class QTreeWidgetItem(Shiboken.Object): + ShowIndicator : QTreeWidgetItem = ... # 0x0 + Type : QTreeWidgetItem = ... # 0x0 + DontShowIndicator : QTreeWidgetItem = ... # 0x1 + DontShowIndicatorWhenChildless: QTreeWidgetItem = ... # 0x2 + UserType : QTreeWidgetItem = ... # 0x3e8 + + class ChildIndicatorPolicy(object): + ShowIndicator : QTreeWidgetItem.ChildIndicatorPolicy = ... # 0x0 + DontShowIndicator : QTreeWidgetItem.ChildIndicatorPolicy = ... # 0x1 + DontShowIndicatorWhenChildless: QTreeWidgetItem.ChildIndicatorPolicy = ... # 0x2 + + class ItemType(object): + Type : QTreeWidgetItem.ItemType = ... # 0x0 + UserType : QTreeWidgetItem.ItemType = ... # 0x3e8 + + @typing.overload + def __init__(self, other:PySide2.QtWidgets.QTreeWidgetItem) -> None: ... + @typing.overload + def __init__(self, parent:PySide2.QtWidgets.QTreeWidgetItem, after:PySide2.QtWidgets.QTreeWidgetItem, type:int=...) -> None: ... + @typing.overload + def __init__(self, parent:PySide2.QtWidgets.QTreeWidgetItem, strings:typing.Sequence, type:int=...) -> None: ... + @typing.overload + def __init__(self, parent:PySide2.QtWidgets.QTreeWidgetItem, type:int=...) -> None: ... + @typing.overload + def __init__(self, strings:typing.Sequence, type:int=...) -> None: ... + @typing.overload + def __init__(self, treeview:PySide2.QtWidgets.QTreeWidget, after:PySide2.QtWidgets.QTreeWidgetItem, type:int=...) -> None: ... + @typing.overload + def __init__(self, treeview:PySide2.QtWidgets.QTreeWidget, strings:typing.Sequence, type:int=...) -> None: ... + @typing.overload + def __init__(self, treeview:PySide2.QtWidgets.QTreeWidget, type:int=...) -> None: ... + @typing.overload + def __init__(self, type:int=...) -> None: ... + + def __lshift__(self, out:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def __rshift__(self, in_:PySide2.QtCore.QDataStream) -> PySide2.QtCore.QDataStream: ... + def addChild(self, child:PySide2.QtWidgets.QTreeWidgetItem) -> None: ... + def addChildren(self, children:typing.Sequence) -> None: ... + def background(self, column:int) -> PySide2.QtGui.QBrush: ... + def backgroundColor(self, column:int) -> PySide2.QtGui.QColor: ... + def checkState(self, column:int) -> PySide2.QtCore.Qt.CheckState: ... + def child(self, index:int) -> PySide2.QtWidgets.QTreeWidgetItem: ... + def childCount(self) -> int: ... + def childIndicatorPolicy(self) -> PySide2.QtWidgets.QTreeWidgetItem.ChildIndicatorPolicy: ... + def clone(self) -> PySide2.QtWidgets.QTreeWidgetItem: ... + def columnCount(self) -> int: ... + def data(self, column:int, role:int) -> typing.Any: ... + def emitDataChanged(self) -> None: ... + def flags(self) -> PySide2.QtCore.Qt.ItemFlags: ... + def font(self, column:int) -> PySide2.QtGui.QFont: ... + def foreground(self, column:int) -> PySide2.QtGui.QBrush: ... + def icon(self, column:int) -> PySide2.QtGui.QIcon: ... + def indexOfChild(self, child:PySide2.QtWidgets.QTreeWidgetItem) -> int: ... + def insertChild(self, index:int, child:PySide2.QtWidgets.QTreeWidgetItem) -> None: ... + def insertChildren(self, index:int, children:typing.Sequence) -> None: ... + def isDisabled(self) -> bool: ... + def isExpanded(self) -> bool: ... + def isFirstColumnSpanned(self) -> bool: ... + def isHidden(self) -> bool: ... + def isSelected(self) -> bool: ... + def parent(self) -> PySide2.QtWidgets.QTreeWidgetItem: ... + def read(self, in_:PySide2.QtCore.QDataStream) -> None: ... + def removeChild(self, child:PySide2.QtWidgets.QTreeWidgetItem) -> None: ... + def setBackground(self, column:int, brush:PySide2.QtGui.QBrush) -> None: ... + def setBackgroundColor(self, column:int, color:PySide2.QtGui.QColor) -> None: ... + def setCheckState(self, column:int, state:PySide2.QtCore.Qt.CheckState) -> None: ... + def setChildIndicatorPolicy(self, policy:PySide2.QtWidgets.QTreeWidgetItem.ChildIndicatorPolicy) -> None: ... + def setData(self, column:int, role:int, value:typing.Any) -> None: ... + def setDisabled(self, disabled:bool) -> None: ... + def setExpanded(self, expand:bool) -> None: ... + def setFirstColumnSpanned(self, span:bool) -> None: ... + def setFlags(self, flags:PySide2.QtCore.Qt.ItemFlags) -> None: ... + def setFont(self, column:int, font:PySide2.QtGui.QFont) -> None: ... + def setForeground(self, column:int, brush:PySide2.QtGui.QBrush) -> None: ... + def setHidden(self, hide:bool) -> None: ... + def setIcon(self, column:int, icon:PySide2.QtGui.QIcon) -> None: ... + def setSelected(self, select:bool) -> None: ... + def setSizeHint(self, column:int, size:PySide2.QtCore.QSize) -> None: ... + def setStatusTip(self, column:int, statusTip:str) -> None: ... + def setText(self, column:int, text:str) -> None: ... + def setTextAlignment(self, column:int, alignment:int) -> None: ... + def setTextColor(self, column:int, color:PySide2.QtGui.QColor) -> None: ... + def setToolTip(self, column:int, toolTip:str) -> None: ... + def setWhatsThis(self, column:int, whatsThis:str) -> None: ... + def sizeHint(self, column:int) -> PySide2.QtCore.QSize: ... + def sortChildren(self, column:int, order:PySide2.QtCore.Qt.SortOrder) -> None: ... + def statusTip(self, column:int) -> str: ... + def takeChild(self, index:int) -> PySide2.QtWidgets.QTreeWidgetItem: ... + def takeChildren(self) -> typing.List: ... + def text(self, column:int) -> str: ... + def textAlignment(self, column:int) -> int: ... + def textColor(self, column:int) -> PySide2.QtGui.QColor: ... + def toolTip(self, column:int) -> str: ... + def treeWidget(self) -> PySide2.QtWidgets.QTreeWidget: ... + def type(self) -> int: ... + def whatsThis(self, column:int) -> str: ... + def write(self, out:PySide2.QtCore.QDataStream) -> None: ... + + +class QTreeWidgetItemIterator(Shiboken.Object): + All : QTreeWidgetItemIterator = ... # 0x0 + Hidden : QTreeWidgetItemIterator = ... # 0x1 + NotHidden : QTreeWidgetItemIterator = ... # 0x2 + Selected : QTreeWidgetItemIterator = ... # 0x4 + Unselected : QTreeWidgetItemIterator = ... # 0x8 + Selectable : QTreeWidgetItemIterator = ... # 0x10 + NotSelectable : QTreeWidgetItemIterator = ... # 0x20 + DragEnabled : QTreeWidgetItemIterator = ... # 0x40 + DragDisabled : QTreeWidgetItemIterator = ... # 0x80 + DropEnabled : QTreeWidgetItemIterator = ... # 0x100 + DropDisabled : QTreeWidgetItemIterator = ... # 0x200 + HasChildren : QTreeWidgetItemIterator = ... # 0x400 + NoChildren : QTreeWidgetItemIterator = ... # 0x800 + Checked : QTreeWidgetItemIterator = ... # 0x1000 + NotChecked : QTreeWidgetItemIterator = ... # 0x2000 + Enabled : QTreeWidgetItemIterator = ... # 0x4000 + Disabled : QTreeWidgetItemIterator = ... # 0x8000 + Editable : QTreeWidgetItemIterator = ... # 0x10000 + NotEditable : QTreeWidgetItemIterator = ... # 0x20000 + UserFlag : QTreeWidgetItemIterator = ... # 0x1000000 + + class IteratorFlag(object): + All : QTreeWidgetItemIterator.IteratorFlag = ... # 0x0 + Hidden : QTreeWidgetItemIterator.IteratorFlag = ... # 0x1 + NotHidden : QTreeWidgetItemIterator.IteratorFlag = ... # 0x2 + Selected : QTreeWidgetItemIterator.IteratorFlag = ... # 0x4 + Unselected : QTreeWidgetItemIterator.IteratorFlag = ... # 0x8 + Selectable : QTreeWidgetItemIterator.IteratorFlag = ... # 0x10 + NotSelectable : QTreeWidgetItemIterator.IteratorFlag = ... # 0x20 + DragEnabled : QTreeWidgetItemIterator.IteratorFlag = ... # 0x40 + DragDisabled : QTreeWidgetItemIterator.IteratorFlag = ... # 0x80 + DropEnabled : QTreeWidgetItemIterator.IteratorFlag = ... # 0x100 + DropDisabled : QTreeWidgetItemIterator.IteratorFlag = ... # 0x200 + HasChildren : QTreeWidgetItemIterator.IteratorFlag = ... # 0x400 + NoChildren : QTreeWidgetItemIterator.IteratorFlag = ... # 0x800 + Checked : QTreeWidgetItemIterator.IteratorFlag = ... # 0x1000 + NotChecked : QTreeWidgetItemIterator.IteratorFlag = ... # 0x2000 + Enabled : QTreeWidgetItemIterator.IteratorFlag = ... # 0x4000 + Disabled : QTreeWidgetItemIterator.IteratorFlag = ... # 0x8000 + Editable : QTreeWidgetItemIterator.IteratorFlag = ... # 0x10000 + NotEditable : QTreeWidgetItemIterator.IteratorFlag = ... # 0x20000 + UserFlag : QTreeWidgetItemIterator.IteratorFlag = ... # 0x1000000 + + class IteratorFlags(object): ... + + @typing.overload + def __init__(self, it:PySide2.QtWidgets.QTreeWidgetItemIterator) -> None: ... + @typing.overload + def __init__(self, item:PySide2.QtWidgets.QTreeWidgetItem, flags:PySide2.QtWidgets.QTreeWidgetItemIterator.IteratorFlags=...) -> None: ... + @typing.overload + def __init__(self, widget:PySide2.QtWidgets.QTreeWidget, flags:PySide2.QtWidgets.QTreeWidgetItemIterator.IteratorFlags=...) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __iadd__(self, n:int) -> PySide2.QtWidgets.QTreeWidgetItemIterator: ... + def __isub__(self, n:int) -> PySide2.QtWidgets.QTreeWidgetItemIterator: ... + def __iter__(self) -> object: ... + def __next__(self) -> object: ... + def value(self) -> PySide2.QtWidgets.QTreeWidgetItem: ... + + +class QUndoCommand(Shiboken.Object): + + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QUndoCommand]=...) -> None: ... + @typing.overload + def __init__(self, text:str, parent:typing.Optional[PySide2.QtWidgets.QUndoCommand]=...) -> None: ... + + def actionText(self) -> str: ... + def child(self, index:int) -> PySide2.QtWidgets.QUndoCommand: ... + def childCount(self) -> int: ... + def id(self) -> int: ... + def isObsolete(self) -> bool: ... + def mergeWith(self, other:PySide2.QtWidgets.QUndoCommand) -> bool: ... + def redo(self) -> None: ... + def setObsolete(self, obsolete:bool) -> None: ... + def setText(self, text:str) -> None: ... + def text(self) -> str: ... + def undo(self) -> None: ... + + +class QUndoGroup(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def activeStack(self) -> PySide2.QtWidgets.QUndoStack: ... + def addStack(self, stack:PySide2.QtWidgets.QUndoStack) -> None: ... + def canRedo(self) -> bool: ... + def canUndo(self) -> bool: ... + def createRedoAction(self, parent:PySide2.QtCore.QObject, prefix:str=...) -> PySide2.QtWidgets.QAction: ... + def createUndoAction(self, parent:PySide2.QtCore.QObject, prefix:str=...) -> PySide2.QtWidgets.QAction: ... + def isClean(self) -> bool: ... + def redo(self) -> None: ... + def redoText(self) -> str: ... + def removeStack(self, stack:PySide2.QtWidgets.QUndoStack) -> None: ... + def setActiveStack(self, stack:PySide2.QtWidgets.QUndoStack) -> None: ... + def stacks(self) -> typing.List: ... + def undo(self) -> None: ... + def undoText(self) -> str: ... + + +class QUndoStack(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def beginMacro(self, text:str) -> None: ... + def canRedo(self) -> bool: ... + def canUndo(self) -> bool: ... + def cleanIndex(self) -> int: ... + def clear(self) -> None: ... + def command(self, index:int) -> PySide2.QtWidgets.QUndoCommand: ... + def count(self) -> int: ... + def createRedoAction(self, parent:PySide2.QtCore.QObject, prefix:str=...) -> PySide2.QtWidgets.QAction: ... + def createUndoAction(self, parent:PySide2.QtCore.QObject, prefix:str=...) -> PySide2.QtWidgets.QAction: ... + def endMacro(self) -> None: ... + def index(self) -> int: ... + def isActive(self) -> bool: ... + def isClean(self) -> bool: ... + def push(self, cmd:PySide2.QtWidgets.QUndoCommand) -> None: ... + def redo(self) -> None: ... + def redoText(self) -> str: ... + def resetClean(self) -> None: ... + def setActive(self, active:bool=...) -> None: ... + def setClean(self) -> None: ... + def setIndex(self, idx:int) -> None: ... + def setUndoLimit(self, limit:int) -> None: ... + def text(self, idx:int) -> str: ... + def undo(self) -> None: ... + def undoLimit(self) -> int: ... + def undoText(self) -> str: ... + + +class QUndoView(PySide2.QtWidgets.QListView): + + @typing.overload + def __init__(self, group:PySide2.QtWidgets.QUndoGroup, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + @typing.overload + def __init__(self, stack:PySide2.QtWidgets.QUndoStack, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def cleanIcon(self) -> PySide2.QtGui.QIcon: ... + def emptyLabel(self) -> str: ... + def group(self) -> PySide2.QtWidgets.QUndoGroup: ... + def setCleanIcon(self, icon:PySide2.QtGui.QIcon) -> None: ... + def setEmptyLabel(self, label:str) -> None: ... + def setGroup(self, group:PySide2.QtWidgets.QUndoGroup) -> None: ... + def setStack(self, stack:PySide2.QtWidgets.QUndoStack) -> None: ... + def stack(self) -> PySide2.QtWidgets.QUndoStack: ... + + +class QVBoxLayout(PySide2.QtWidgets.QBoxLayout): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, parent:PySide2.QtWidgets.QWidget) -> None: ... + + +class QWhatsThis(Shiboken.Object): + @staticmethod + def createAction(parent:typing.Optional[PySide2.QtCore.QObject]=...) -> PySide2.QtWidgets.QAction: ... + @staticmethod + def enterWhatsThisMode() -> None: ... + @staticmethod + def hideText() -> None: ... + @staticmethod + def inWhatsThisMode() -> bool: ... + @staticmethod + def leaveWhatsThisMode() -> None: ... + @staticmethod + def showText(pos:PySide2.QtCore.QPoint, text:str, w:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + +class QWidget(PySide2.QtCore.QObject, PySide2.QtGui.QPaintDevice): + DrawWindowBackground : QWidget = ... # 0x1 + DrawChildren : QWidget = ... # 0x2 + IgnoreMask : QWidget = ... # 0x4 + + class RenderFlag(object): + DrawWindowBackground : QWidget.RenderFlag = ... # 0x1 + DrawChildren : QWidget.RenderFlag = ... # 0x2 + IgnoreMask : QWidget.RenderFlag = ... # 0x4 + + class RenderFlags(object): ... + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., f:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + + def acceptDrops(self) -> bool: ... + def accessibleDescription(self) -> str: ... + def accessibleName(self) -> str: ... + def actionEvent(self, event:PySide2.QtGui.QActionEvent) -> None: ... + def actions(self) -> typing.List: ... + def activateWindow(self) -> None: ... + def addAction(self, action:PySide2.QtWidgets.QAction) -> None: ... + def addActions(self, actions:typing.Sequence) -> None: ... + def adjustSize(self) -> None: ... + def autoFillBackground(self) -> bool: ... + def backgroundRole(self) -> PySide2.QtGui.QPalette.ColorRole: ... + def backingStore(self) -> PySide2.QtGui.QBackingStore: ... + def baseSize(self) -> PySide2.QtCore.QSize: ... + def changeEvent(self, event:PySide2.QtCore.QEvent) -> None: ... + @typing.overload + def childAt(self, p:PySide2.QtCore.QPoint) -> PySide2.QtWidgets.QWidget: ... + @typing.overload + def childAt(self, x:int, y:int) -> PySide2.QtWidgets.QWidget: ... + def childrenRect(self) -> PySide2.QtCore.QRect: ... + def childrenRegion(self) -> PySide2.QtGui.QRegion: ... + def clearFocus(self) -> None: ... + def clearMask(self) -> None: ... + def close(self) -> bool: ... + def closeEvent(self, event:PySide2.QtGui.QCloseEvent) -> None: ... + def contentsMargins(self) -> PySide2.QtCore.QMargins: ... + def contentsRect(self) -> PySide2.QtCore.QRect: ... + def contextMenuEvent(self, event:PySide2.QtGui.QContextMenuEvent) -> None: ... + def contextMenuPolicy(self) -> PySide2.QtCore.Qt.ContextMenuPolicy: ... + def create(self, arg__1:int=..., initializeWindow:bool=..., destroyOldWindow:bool=...) -> None: ... + def createWinId(self) -> None: ... + @staticmethod + def createWindowContainer(window:PySide2.QtGui.QWindow, parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., flags:PySide2.QtCore.Qt.WindowFlags=...) -> PySide2.QtWidgets.QWidget: ... + def cursor(self) -> PySide2.QtGui.QCursor: ... + def destroy(self, destroyWindow:bool=..., destroySubWindows:bool=...) -> None: ... + def devType(self) -> int: ... + def dragEnterEvent(self, event:PySide2.QtGui.QDragEnterEvent) -> None: ... + def dragLeaveEvent(self, event:PySide2.QtGui.QDragLeaveEvent) -> None: ... + def dragMoveEvent(self, event:PySide2.QtGui.QDragMoveEvent) -> None: ... + def dropEvent(self, event:PySide2.QtGui.QDropEvent) -> None: ... + def effectiveWinId(self) -> int: ... + def ensurePolished(self) -> None: ... + def enterEvent(self, event:PySide2.QtCore.QEvent) -> None: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + @staticmethod + def find(arg__1:int) -> PySide2.QtWidgets.QWidget: ... + def focusInEvent(self, event:PySide2.QtGui.QFocusEvent) -> None: ... + def focusNextChild(self) -> bool: ... + def focusNextPrevChild(self, next:bool) -> bool: ... + def focusOutEvent(self, event:PySide2.QtGui.QFocusEvent) -> None: ... + def focusPolicy(self) -> PySide2.QtCore.Qt.FocusPolicy: ... + def focusPreviousChild(self) -> bool: ... + def focusProxy(self) -> PySide2.QtWidgets.QWidget: ... + def focusWidget(self) -> PySide2.QtWidgets.QWidget: ... + def font(self) -> PySide2.QtGui.QFont: ... + def fontInfo(self) -> PySide2.QtGui.QFontInfo: ... + def fontMetrics(self) -> PySide2.QtGui.QFontMetrics: ... + def foregroundRole(self) -> PySide2.QtGui.QPalette.ColorRole: ... + def frameGeometry(self) -> PySide2.QtCore.QRect: ... + def frameSize(self) -> PySide2.QtCore.QSize: ... + def geometry(self) -> PySide2.QtCore.QRect: ... + def getContentsMargins(self) -> typing.Tuple: ... + def grab(self, rectangle:PySide2.QtCore.QRect=...) -> PySide2.QtGui.QPixmap: ... + def grabGesture(self, type:PySide2.QtCore.Qt.GestureType, flags:PySide2.QtCore.Qt.GestureFlags=...) -> None: ... + def grabKeyboard(self) -> None: ... + @typing.overload + def grabMouse(self) -> None: ... + @typing.overload + def grabMouse(self, arg__1:PySide2.QtGui.QCursor) -> None: ... + def grabShortcut(self, key:PySide2.QtGui.QKeySequence, context:PySide2.QtCore.Qt.ShortcutContext=...) -> int: ... + def graphicsEffect(self) -> PySide2.QtWidgets.QGraphicsEffect: ... + def graphicsProxyWidget(self) -> PySide2.QtWidgets.QGraphicsProxyWidget: ... + def hasFocus(self) -> bool: ... + def hasHeightForWidth(self) -> bool: ... + def hasMouseTracking(self) -> bool: ... + def hasTabletTracking(self) -> bool: ... + def height(self) -> int: ... + def heightForWidth(self, arg__1:int) -> int: ... + def hide(self) -> None: ... + def hideEvent(self, event:PySide2.QtGui.QHideEvent) -> None: ... + def initPainter(self, painter:PySide2.QtGui.QPainter) -> None: ... + def inputMethodEvent(self, event:PySide2.QtGui.QInputMethodEvent) -> None: ... + def inputMethodHints(self) -> PySide2.QtCore.Qt.InputMethodHints: ... + def inputMethodQuery(self, arg__1:PySide2.QtCore.Qt.InputMethodQuery) -> typing.Any: ... + def insertAction(self, before:PySide2.QtWidgets.QAction, action:PySide2.QtWidgets.QAction) -> None: ... + def insertActions(self, before:PySide2.QtWidgets.QAction, actions:typing.Sequence) -> None: ... + def internalWinId(self) -> int: ... + def isActiveWindow(self) -> bool: ... + def isAncestorOf(self, child:PySide2.QtWidgets.QWidget) -> bool: ... + def isEnabled(self) -> bool: ... + def isEnabledTo(self, arg__1:PySide2.QtWidgets.QWidget) -> bool: ... + def isEnabledToTLW(self) -> bool: ... + def isFullScreen(self) -> bool: ... + def isHidden(self) -> bool: ... + def isLeftToRight(self) -> bool: ... + def isMaximized(self) -> bool: ... + def isMinimized(self) -> bool: ... + def isModal(self) -> bool: ... + def isRightToLeft(self) -> bool: ... + def isTopLevel(self) -> bool: ... + def isVisible(self) -> bool: ... + def isVisibleTo(self, arg__1:PySide2.QtWidgets.QWidget) -> bool: ... + def isWindow(self) -> bool: ... + def isWindowModified(self) -> bool: ... + def keyPressEvent(self, event:PySide2.QtGui.QKeyEvent) -> None: ... + def keyReleaseEvent(self, event:PySide2.QtGui.QKeyEvent) -> None: ... + @staticmethod + def keyboardGrabber() -> PySide2.QtWidgets.QWidget: ... + def layout(self) -> PySide2.QtWidgets.QLayout: ... + def layoutDirection(self) -> PySide2.QtCore.Qt.LayoutDirection: ... + def leaveEvent(self, event:PySide2.QtCore.QEvent) -> None: ... + def locale(self) -> PySide2.QtCore.QLocale: ... + def lower(self) -> None: ... + def mapFrom(self, arg__1:PySide2.QtWidgets.QWidget, arg__2:PySide2.QtCore.QPoint) -> PySide2.QtCore.QPoint: ... + def mapFromGlobal(self, arg__1:PySide2.QtCore.QPoint) -> PySide2.QtCore.QPoint: ... + def mapFromParent(self, arg__1:PySide2.QtCore.QPoint) -> PySide2.QtCore.QPoint: ... + def mapTo(self, arg__1:PySide2.QtWidgets.QWidget, arg__2:PySide2.QtCore.QPoint) -> PySide2.QtCore.QPoint: ... + def mapToGlobal(self, arg__1:PySide2.QtCore.QPoint) -> PySide2.QtCore.QPoint: ... + def mapToParent(self, arg__1:PySide2.QtCore.QPoint) -> PySide2.QtCore.QPoint: ... + def mask(self) -> PySide2.QtGui.QRegion: ... + def maximumHeight(self) -> int: ... + def maximumSize(self) -> PySide2.QtCore.QSize: ... + def maximumWidth(self) -> int: ... + def metric(self, arg__1:PySide2.QtGui.QPaintDevice.PaintDeviceMetric) -> int: ... + def minimumHeight(self) -> int: ... + def minimumSize(self) -> PySide2.QtCore.QSize: ... + def minimumSizeHint(self) -> PySide2.QtCore.QSize: ... + def minimumWidth(self) -> int: ... + def mouseDoubleClickEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + @staticmethod + def mouseGrabber() -> PySide2.QtWidgets.QWidget: ... + def mouseMoveEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def mousePressEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + def mouseReleaseEvent(self, event:PySide2.QtGui.QMouseEvent) -> None: ... + @typing.overload + def move(self, arg__1:PySide2.QtCore.QPoint) -> None: ... + @typing.overload + def move(self, x:int, y:int) -> None: ... + def moveEvent(self, event:PySide2.QtGui.QMoveEvent) -> None: ... + def nativeEvent(self, eventType:PySide2.QtCore.QByteArray, message:int) -> typing.Tuple: ... + def nativeParentWidget(self) -> PySide2.QtWidgets.QWidget: ... + def nextInFocusChain(self) -> PySide2.QtWidgets.QWidget: ... + def normalGeometry(self) -> PySide2.QtCore.QRect: ... + def overrideWindowFlags(self, type:PySide2.QtCore.Qt.WindowFlags) -> None: ... + def overrideWindowState(self, state:PySide2.QtCore.Qt.WindowStates) -> None: ... + def paintEngine(self) -> PySide2.QtGui.QPaintEngine: ... + def paintEvent(self, event:PySide2.QtGui.QPaintEvent) -> None: ... + def palette(self) -> PySide2.QtGui.QPalette: ... + def parentWidget(self) -> PySide2.QtWidgets.QWidget: ... + def pos(self) -> PySide2.QtCore.QPoint: ... + def previousInFocusChain(self) -> PySide2.QtWidgets.QWidget: ... + def raise_(self) -> None: ... + def rect(self) -> PySide2.QtCore.QRect: ... + def redirected(self, offset:PySide2.QtCore.QPoint) -> PySide2.QtGui.QPaintDevice: ... + def releaseKeyboard(self) -> None: ... + def releaseMouse(self) -> None: ... + def releaseShortcut(self, id:int) -> None: ... + def removeAction(self, action:PySide2.QtWidgets.QAction) -> None: ... + @typing.overload + def render(self, painter:PySide2.QtGui.QPainter, targetOffset:PySide2.QtCore.QPoint, sourceRegion:PySide2.QtGui.QRegion=..., renderFlags:PySide2.QtWidgets.QWidget.RenderFlags=...) -> None: ... + @typing.overload + def render(self, target:PySide2.QtGui.QPaintDevice, targetOffset:PySide2.QtCore.QPoint=..., sourceRegion:PySide2.QtGui.QRegion=..., renderFlags:PySide2.QtWidgets.QWidget.RenderFlags=...) -> None: ... + @typing.overload + def repaint(self) -> None: ... + @typing.overload + def repaint(self, arg__1:PySide2.QtCore.QRect) -> None: ... + @typing.overload + def repaint(self, arg__1:PySide2.QtGui.QRegion) -> None: ... + @typing.overload + def repaint(self, x:int, y:int, w:int, h:int) -> None: ... + @typing.overload + def resize(self, arg__1:PySide2.QtCore.QSize) -> None: ... + @typing.overload + def resize(self, w:int, h:int) -> None: ... + def resizeEvent(self, event:PySide2.QtGui.QResizeEvent) -> None: ... + def restoreGeometry(self, geometry:PySide2.QtCore.QByteArray) -> bool: ... + def saveGeometry(self) -> PySide2.QtCore.QByteArray: ... + def screen(self) -> PySide2.QtGui.QScreen: ... + @typing.overload + def scroll(self, dx:int, dy:int) -> None: ... + @typing.overload + def scroll(self, dx:int, dy:int, arg__3:PySide2.QtCore.QRect) -> None: ... + def setAcceptDrops(self, on:bool) -> None: ... + def setAccessibleDescription(self, description:str) -> None: ... + def setAccessibleName(self, name:str) -> None: ... + def setAttribute(self, arg__1:PySide2.QtCore.Qt.WidgetAttribute, on:bool=...) -> None: ... + def setAutoFillBackground(self, enabled:bool) -> None: ... + def setBackgroundRole(self, arg__1:PySide2.QtGui.QPalette.ColorRole) -> None: ... + @typing.overload + def setBaseSize(self, arg__1:PySide2.QtCore.QSize) -> None: ... + @typing.overload + def setBaseSize(self, basew:int, baseh:int) -> None: ... + @typing.overload + def setContentsMargins(self, left:int, top:int, right:int, bottom:int) -> None: ... + @typing.overload + def setContentsMargins(self, margins:PySide2.QtCore.QMargins) -> None: ... + def setContextMenuPolicy(self, policy:PySide2.QtCore.Qt.ContextMenuPolicy) -> None: ... + def setCursor(self, arg__1:PySide2.QtGui.QCursor) -> None: ... + def setDisabled(self, arg__1:bool) -> None: ... + def setEnabled(self, arg__1:bool) -> None: ... + def setFixedHeight(self, h:int) -> None: ... + @typing.overload + def setFixedSize(self, arg__1:PySide2.QtCore.QSize) -> None: ... + @typing.overload + def setFixedSize(self, w:int, h:int) -> None: ... + def setFixedWidth(self, w:int) -> None: ... + @typing.overload + def setFocus(self) -> None: ... + @typing.overload + def setFocus(self, reason:PySide2.QtCore.Qt.FocusReason) -> None: ... + def setFocusPolicy(self, policy:PySide2.QtCore.Qt.FocusPolicy) -> None: ... + def setFocusProxy(self, arg__1:PySide2.QtWidgets.QWidget) -> None: ... + def setFont(self, arg__1:PySide2.QtGui.QFont) -> None: ... + def setForegroundRole(self, arg__1:PySide2.QtGui.QPalette.ColorRole) -> None: ... + @typing.overload + def setGeometry(self, arg__1:PySide2.QtCore.QRect) -> None: ... + @typing.overload + def setGeometry(self, x:int, y:int, w:int, h:int) -> None: ... + def setGraphicsEffect(self, effect:PySide2.QtWidgets.QGraphicsEffect) -> None: ... + def setHidden(self, hidden:bool) -> None: ... + def setInputMethodHints(self, hints:PySide2.QtCore.Qt.InputMethodHints) -> None: ... + def setLayout(self, arg__1:PySide2.QtWidgets.QLayout) -> None: ... + def setLayoutDirection(self, direction:PySide2.QtCore.Qt.LayoutDirection) -> None: ... + def setLocale(self, locale:PySide2.QtCore.QLocale) -> None: ... + @typing.overload + def setMask(self, arg__1:PySide2.QtGui.QBitmap) -> None: ... + @typing.overload + def setMask(self, arg__1:PySide2.QtGui.QRegion) -> None: ... + def setMaximumHeight(self, maxh:int) -> None: ... + @typing.overload + def setMaximumSize(self, arg__1:PySide2.QtCore.QSize) -> None: ... + @typing.overload + def setMaximumSize(self, maxw:int, maxh:int) -> None: ... + def setMaximumWidth(self, maxw:int) -> None: ... + def setMinimumHeight(self, minh:int) -> None: ... + @typing.overload + def setMinimumSize(self, arg__1:PySide2.QtCore.QSize) -> None: ... + @typing.overload + def setMinimumSize(self, minw:int, minh:int) -> None: ... + def setMinimumWidth(self, minw:int) -> None: ... + def setMouseTracking(self, enable:bool) -> None: ... + def setPalette(self, arg__1:PySide2.QtGui.QPalette) -> None: ... + @typing.overload + def setParent(self, parent:PySide2.QtCore.QObject) -> None: ... + @typing.overload + def setParent(self, parent:PySide2.QtWidgets.QWidget) -> None: ... + @typing.overload + def setParent(self, parent:PySide2.QtWidgets.QWidget, f:PySide2.QtCore.Qt.WindowFlags) -> None: ... + def setShortcutAutoRepeat(self, id:int, enable:bool=...) -> None: ... + def setShortcutEnabled(self, id:int, enable:bool=...) -> None: ... + @typing.overload + def setSizeIncrement(self, arg__1:PySide2.QtCore.QSize) -> None: ... + @typing.overload + def setSizeIncrement(self, w:int, h:int) -> None: ... + @typing.overload + def setSizePolicy(self, arg__1:PySide2.QtWidgets.QSizePolicy) -> None: ... + @typing.overload + def setSizePolicy(self, horizontal:PySide2.QtWidgets.QSizePolicy.Policy, vertical:PySide2.QtWidgets.QSizePolicy.Policy) -> None: ... + def setStatusTip(self, arg__1:str) -> None: ... + def setStyle(self, arg__1:PySide2.QtWidgets.QStyle) -> None: ... + def setStyleSheet(self, styleSheet:str) -> None: ... + @staticmethod + def setTabOrder(arg__1:PySide2.QtWidgets.QWidget, arg__2:PySide2.QtWidgets.QWidget) -> None: ... + def setTabletTracking(self, enable:bool) -> None: ... + def setToolTip(self, arg__1:str) -> None: ... + def setToolTipDuration(self, msec:int) -> None: ... + def setUpdatesEnabled(self, enable:bool) -> None: ... + def setVisible(self, visible:bool) -> None: ... + def setWhatsThis(self, arg__1:str) -> None: ... + def setWindowFilePath(self, filePath:str) -> None: ... + def setWindowFlag(self, arg__1:PySide2.QtCore.Qt.WindowType, on:bool=...) -> None: ... + def setWindowFlags(self, type:PySide2.QtCore.Qt.WindowFlags) -> None: ... + def setWindowIcon(self, icon:PySide2.QtGui.QIcon) -> None: ... + def setWindowIconText(self, arg__1:str) -> None: ... + def setWindowModality(self, windowModality:PySide2.QtCore.Qt.WindowModality) -> None: ... + def setWindowModified(self, arg__1:bool) -> None: ... + def setWindowOpacity(self, level:float) -> None: ... + def setWindowRole(self, arg__1:str) -> None: ... + def setWindowState(self, state:PySide2.QtCore.Qt.WindowStates) -> None: ... + def setWindowTitle(self, arg__1:str) -> None: ... + def sharedPainter(self) -> PySide2.QtGui.QPainter: ... + def show(self) -> None: ... + def showEvent(self, event:PySide2.QtGui.QShowEvent) -> None: ... + def showFullScreen(self) -> None: ... + def showMaximized(self) -> None: ... + def showMinimized(self) -> None: ... + def showNormal(self) -> None: ... + def size(self) -> PySide2.QtCore.QSize: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def sizeIncrement(self) -> PySide2.QtCore.QSize: ... + def sizePolicy(self) -> PySide2.QtWidgets.QSizePolicy: ... + def stackUnder(self, arg__1:PySide2.QtWidgets.QWidget) -> None: ... + def statusTip(self) -> str: ... + def style(self) -> PySide2.QtWidgets.QStyle: ... + def styleSheet(self) -> str: ... + def tabletEvent(self, event:PySide2.QtGui.QTabletEvent) -> None: ... + def testAttribute(self, arg__1:PySide2.QtCore.Qt.WidgetAttribute) -> bool: ... + def toolTip(self) -> str: ... + def toolTipDuration(self) -> int: ... + def topLevelWidget(self) -> PySide2.QtWidgets.QWidget: ... + def underMouse(self) -> bool: ... + def ungrabGesture(self, type:PySide2.QtCore.Qt.GestureType) -> None: ... + def unsetCursor(self) -> None: ... + def unsetLayoutDirection(self) -> None: ... + def unsetLocale(self) -> None: ... + @typing.overload + def update(self) -> None: ... + @typing.overload + def update(self, arg__1:PySide2.QtCore.QRect) -> None: ... + @typing.overload + def update(self, arg__1:PySide2.QtGui.QRegion) -> None: ... + @typing.overload + def update(self, x:int, y:int, w:int, h:int) -> None: ... + def updateGeometry(self) -> None: ... + def updateMicroFocus(self) -> None: ... + def updatesEnabled(self) -> bool: ... + def visibleRegion(self) -> PySide2.QtGui.QRegion: ... + def whatsThis(self) -> str: ... + def wheelEvent(self, event:PySide2.QtGui.QWheelEvent) -> None: ... + def width(self) -> int: ... + def winId(self) -> int: ... + def window(self) -> PySide2.QtWidgets.QWidget: ... + def windowFilePath(self) -> str: ... + def windowFlags(self) -> PySide2.QtCore.Qt.WindowFlags: ... + def windowHandle(self) -> PySide2.QtGui.QWindow: ... + def windowIcon(self) -> PySide2.QtGui.QIcon: ... + def windowIconText(self) -> str: ... + def windowModality(self) -> PySide2.QtCore.Qt.WindowModality: ... + def windowOpacity(self) -> float: ... + def windowRole(self) -> str: ... + def windowState(self) -> PySide2.QtCore.Qt.WindowStates: ... + def windowTitle(self) -> str: ... + def windowType(self) -> PySide2.QtCore.Qt.WindowType: ... + def x(self) -> int: ... + def y(self) -> int: ... + + +class QWidgetAction(PySide2.QtWidgets.QAction): + + def __init__(self, parent:PySide2.QtCore.QObject) -> None: ... + + def createWidget(self, parent:PySide2.QtWidgets.QWidget) -> PySide2.QtWidgets.QWidget: ... + def createdWidgets(self) -> typing.List: ... + def defaultWidget(self) -> PySide2.QtWidgets.QWidget: ... + def deleteWidget(self, widget:PySide2.QtWidgets.QWidget) -> None: ... + def event(self, arg__1:PySide2.QtCore.QEvent) -> bool: ... + def eventFilter(self, arg__1:PySide2.QtCore.QObject, arg__2:PySide2.QtCore.QEvent) -> bool: ... + def releaseWidget(self, widget:PySide2.QtWidgets.QWidget) -> None: ... + def requestWidget(self, parent:PySide2.QtWidgets.QWidget) -> PySide2.QtWidgets.QWidget: ... + def setDefaultWidget(self, w:PySide2.QtWidgets.QWidget) -> None: ... + + +class QWidgetItem(PySide2.QtWidgets.QLayoutItem): + + def __init__(self, w:PySide2.QtWidgets.QWidget) -> None: ... + + def controlTypes(self) -> PySide2.QtWidgets.QSizePolicy.ControlTypes: ... + def expandingDirections(self) -> PySide2.QtCore.Qt.Orientations: ... + def geometry(self) -> PySide2.QtCore.QRect: ... + def hasHeightForWidth(self) -> bool: ... + def heightForWidth(self, arg__1:int) -> int: ... + def isEmpty(self) -> bool: ... + def maximumSize(self) -> PySide2.QtCore.QSize: ... + def minimumSize(self) -> PySide2.QtCore.QSize: ... + def setGeometry(self, arg__1:PySide2.QtCore.QRect) -> None: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def widget(self) -> PySide2.QtWidgets.QWidget: ... + + +class QWizard(PySide2.QtWidgets.QDialog): + NoButton : QWizard = ... # -0x1 + BackButton : QWizard = ... # 0x0 + ClassicStyle : QWizard = ... # 0x0 + WatermarkPixmap : QWizard = ... # 0x0 + IndependentPages : QWizard = ... # 0x1 + LogoPixmap : QWizard = ... # 0x1 + ModernStyle : QWizard = ... # 0x1 + NextButton : QWizard = ... # 0x1 + BannerPixmap : QWizard = ... # 0x2 + CommitButton : QWizard = ... # 0x2 + IgnoreSubTitles : QWizard = ... # 0x2 + MacStyle : QWizard = ... # 0x2 + AeroStyle : QWizard = ... # 0x3 + BackgroundPixmap : QWizard = ... # 0x3 + FinishButton : QWizard = ... # 0x3 + CancelButton : QWizard = ... # 0x4 + ExtendedWatermarkPixmap : QWizard = ... # 0x4 + NPixmaps : QWizard = ... # 0x4 + NStyles : QWizard = ... # 0x4 + HelpButton : QWizard = ... # 0x5 + CustomButton1 : QWizard = ... # 0x6 + NStandardButtons : QWizard = ... # 0x6 + CustomButton2 : QWizard = ... # 0x7 + CustomButton3 : QWizard = ... # 0x8 + NoDefaultButton : QWizard = ... # 0x8 + NButtons : QWizard = ... # 0x9 + Stretch : QWizard = ... # 0x9 + NoBackButtonOnStartPage : QWizard = ... # 0x10 + NoBackButtonOnLastPage : QWizard = ... # 0x20 + DisabledBackButtonOnLastPage: QWizard = ... # 0x40 + HaveNextButtonOnLastPage : QWizard = ... # 0x80 + HaveFinishButtonOnEarlyPages: QWizard = ... # 0x100 + NoCancelButton : QWizard = ... # 0x200 + CancelButtonOnLeft : QWizard = ... # 0x400 + HaveHelpButton : QWizard = ... # 0x800 + HelpButtonOnRight : QWizard = ... # 0x1000 + HaveCustomButton1 : QWizard = ... # 0x2000 + HaveCustomButton2 : QWizard = ... # 0x4000 + HaveCustomButton3 : QWizard = ... # 0x8000 + NoCancelButtonOnLastPage : QWizard = ... # 0x10000 + + class WizardButton(object): + NoButton : QWizard.WizardButton = ... # -0x1 + BackButton : QWizard.WizardButton = ... # 0x0 + NextButton : QWizard.WizardButton = ... # 0x1 + CommitButton : QWizard.WizardButton = ... # 0x2 + FinishButton : QWizard.WizardButton = ... # 0x3 + CancelButton : QWizard.WizardButton = ... # 0x4 + HelpButton : QWizard.WizardButton = ... # 0x5 + CustomButton1 : QWizard.WizardButton = ... # 0x6 + NStandardButtons : QWizard.WizardButton = ... # 0x6 + CustomButton2 : QWizard.WizardButton = ... # 0x7 + CustomButton3 : QWizard.WizardButton = ... # 0x8 + NButtons : QWizard.WizardButton = ... # 0x9 + Stretch : QWizard.WizardButton = ... # 0x9 + + class WizardOption(object): + IndependentPages : QWizard.WizardOption = ... # 0x1 + IgnoreSubTitles : QWizard.WizardOption = ... # 0x2 + ExtendedWatermarkPixmap : QWizard.WizardOption = ... # 0x4 + NoDefaultButton : QWizard.WizardOption = ... # 0x8 + NoBackButtonOnStartPage : QWizard.WizardOption = ... # 0x10 + NoBackButtonOnLastPage : QWizard.WizardOption = ... # 0x20 + DisabledBackButtonOnLastPage: QWizard.WizardOption = ... # 0x40 + HaveNextButtonOnLastPage : QWizard.WizardOption = ... # 0x80 + HaveFinishButtonOnEarlyPages: QWizard.WizardOption = ... # 0x100 + NoCancelButton : QWizard.WizardOption = ... # 0x200 + CancelButtonOnLeft : QWizard.WizardOption = ... # 0x400 + HaveHelpButton : QWizard.WizardOption = ... # 0x800 + HelpButtonOnRight : QWizard.WizardOption = ... # 0x1000 + HaveCustomButton1 : QWizard.WizardOption = ... # 0x2000 + HaveCustomButton2 : QWizard.WizardOption = ... # 0x4000 + HaveCustomButton3 : QWizard.WizardOption = ... # 0x8000 + NoCancelButtonOnLastPage : QWizard.WizardOption = ... # 0x10000 + + class WizardOptions(object): ... + + class WizardPixmap(object): + WatermarkPixmap : QWizard.WizardPixmap = ... # 0x0 + LogoPixmap : QWizard.WizardPixmap = ... # 0x1 + BannerPixmap : QWizard.WizardPixmap = ... # 0x2 + BackgroundPixmap : QWizard.WizardPixmap = ... # 0x3 + NPixmaps : QWizard.WizardPixmap = ... # 0x4 + + class WizardStyle(object): + ClassicStyle : QWizard.WizardStyle = ... # 0x0 + ModernStyle : QWizard.WizardStyle = ... # 0x1 + MacStyle : QWizard.WizardStyle = ... # 0x2 + AeroStyle : QWizard.WizardStyle = ... # 0x3 + NStyles : QWizard.WizardStyle = ... # 0x4 + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=..., flags:PySide2.QtCore.Qt.WindowFlags=...) -> None: ... + + def addPage(self, page:PySide2.QtWidgets.QWizardPage) -> int: ... + def back(self) -> None: ... + def button(self, which:PySide2.QtWidgets.QWizard.WizardButton) -> PySide2.QtWidgets.QAbstractButton: ... + def buttonText(self, which:PySide2.QtWidgets.QWizard.WizardButton) -> str: ... + def cleanupPage(self, id:int) -> None: ... + def currentId(self) -> int: ... + def currentPage(self) -> PySide2.QtWidgets.QWizardPage: ... + def done(self, result:int) -> None: ... + def event(self, event:PySide2.QtCore.QEvent) -> bool: ... + def field(self, name:str) -> typing.Any: ... + def hasVisitedPage(self, id:int) -> bool: ... + def initializePage(self, id:int) -> None: ... + def nativeEvent(self, eventType:PySide2.QtCore.QByteArray, message:int) -> typing.Tuple: ... + def next(self) -> None: ... + def nextId(self) -> int: ... + def options(self) -> PySide2.QtWidgets.QWizard.WizardOptions: ... + def page(self, id:int) -> PySide2.QtWidgets.QWizardPage: ... + def pageIds(self) -> typing.List: ... + def paintEvent(self, event:PySide2.QtGui.QPaintEvent) -> None: ... + def pixmap(self, which:PySide2.QtWidgets.QWizard.WizardPixmap) -> PySide2.QtGui.QPixmap: ... + def removePage(self, id:int) -> None: ... + def resizeEvent(self, event:PySide2.QtGui.QResizeEvent) -> None: ... + def restart(self) -> None: ... + def setButton(self, which:PySide2.QtWidgets.QWizard.WizardButton, button:PySide2.QtWidgets.QAbstractButton) -> None: ... + def setButtonLayout(self, layout:typing.Sequence) -> None: ... + def setButtonText(self, which:PySide2.QtWidgets.QWizard.WizardButton, text:str) -> None: ... + def setDefaultProperty(self, className:bytes, property:bytes, changedSignal:bytes) -> None: ... + def setField(self, name:str, value:typing.Any) -> None: ... + def setOption(self, option:PySide2.QtWidgets.QWizard.WizardOption, on:bool=...) -> None: ... + def setOptions(self, options:PySide2.QtWidgets.QWizard.WizardOptions) -> None: ... + def setPage(self, id:int, page:PySide2.QtWidgets.QWizardPage) -> None: ... + def setPixmap(self, which:PySide2.QtWidgets.QWizard.WizardPixmap, pixmap:PySide2.QtGui.QPixmap) -> None: ... + def setSideWidget(self, widget:PySide2.QtWidgets.QWidget) -> None: ... + def setStartId(self, id:int) -> None: ... + def setSubTitleFormat(self, format:PySide2.QtCore.Qt.TextFormat) -> None: ... + def setTitleFormat(self, format:PySide2.QtCore.Qt.TextFormat) -> None: ... + def setVisible(self, visible:bool) -> None: ... + def setWizardStyle(self, style:PySide2.QtWidgets.QWizard.WizardStyle) -> None: ... + def sideWidget(self) -> PySide2.QtWidgets.QWidget: ... + def sizeHint(self) -> PySide2.QtCore.QSize: ... + def startId(self) -> int: ... + def subTitleFormat(self) -> PySide2.QtCore.Qt.TextFormat: ... + def testOption(self, option:PySide2.QtWidgets.QWizard.WizardOption) -> bool: ... + def titleFormat(self) -> PySide2.QtCore.Qt.TextFormat: ... + def validateCurrentPage(self) -> bool: ... + def visitedIds(self) -> typing.List: ... + def visitedPages(self) -> typing.List: ... + def wizardStyle(self) -> PySide2.QtWidgets.QWizard.WizardStyle: ... + + +class QWizardPage(PySide2.QtWidgets.QWidget): + + def __init__(self, parent:typing.Optional[PySide2.QtWidgets.QWidget]=...) -> None: ... + + def buttonText(self, which:PySide2.QtWidgets.QWizard.WizardButton) -> str: ... + def cleanupPage(self) -> None: ... + def field(self, name:str) -> typing.Any: ... + def initializePage(self) -> None: ... + def isCommitPage(self) -> bool: ... + def isComplete(self) -> bool: ... + def isFinalPage(self) -> bool: ... + def nextId(self) -> int: ... + def pixmap(self, which:PySide2.QtWidgets.QWizard.WizardPixmap) -> PySide2.QtGui.QPixmap: ... + def registerField(self, name:str, widget:PySide2.QtWidgets.QWidget, property:typing.Optional[bytes]=..., changedSignal:typing.Optional[bytes]=...) -> None: ... + def setButtonText(self, which:PySide2.QtWidgets.QWizard.WizardButton, text:str) -> None: ... + def setCommitPage(self, commitPage:bool) -> None: ... + def setField(self, name:str, value:typing.Any) -> None: ... + def setFinalPage(self, finalPage:bool) -> None: ... + def setPixmap(self, which:PySide2.QtWidgets.QWizard.WizardPixmap, pixmap:PySide2.QtGui.QPixmap) -> None: ... + def setSubTitle(self, subTitle:str) -> None: ... + def setTitle(self, title:str) -> None: ... + def subTitle(self) -> str: ... + def title(self) -> str: ... + def validatePage(self) -> bool: ... + def wizard(self) -> PySide2.QtWidgets.QWizard: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtWinExtras.pyd b/venv/Lib/site-packages/PySide2/QtWinExtras.pyd new file mode 100644 index 0000000..3628a85 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtWinExtras.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtWinExtras.pyi b/venv/Lib/site-packages/PySide2/QtWinExtras.pyi new file mode 100644 index 0000000..a0a707b --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtWinExtras.pyi @@ -0,0 +1,379 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtWinExtras, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtWinExtras +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtGui +import PySide2.QtWidgets +import PySide2.QtWinExtras + + +class QWinColorizationChangeEvent(PySide2.QtWinExtras.QWinEvent): + + def __init__(self, color:int, opaque:bool) -> None: ... + + def color(self) -> int: ... + def opaqueBlend(self) -> bool: ... + + +class QWinCompositionChangeEvent(PySide2.QtWinExtras.QWinEvent): + + def __init__(self, enabled:bool) -> None: ... + + def isCompositionEnabled(self) -> bool: ... + + +class QWinEvent(PySide2.QtCore.QEvent): + + def __init__(self, type:int) -> None: ... + + +class QWinJumpList(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + @typing.overload + def addCategory(self, category:PySide2.QtWinExtras.QWinJumpListCategory) -> None: ... + @typing.overload + def addCategory(self, title:str, items:typing.Sequence=...) -> PySide2.QtWinExtras.QWinJumpListCategory: ... + def categories(self) -> typing.List: ... + def clear(self) -> None: ... + def frequent(self) -> PySide2.QtWinExtras.QWinJumpListCategory: ... + def identifier(self) -> str: ... + def recent(self) -> PySide2.QtWinExtras.QWinJumpListCategory: ... + def setIdentifier(self, identifier:str) -> None: ... + def tasks(self) -> PySide2.QtWinExtras.QWinJumpListCategory: ... + + +class QWinJumpListCategory(Shiboken.Object): + Custom : QWinJumpListCategory = ... # 0x0 + Recent : QWinJumpListCategory = ... # 0x1 + Frequent : QWinJumpListCategory = ... # 0x2 + Tasks : QWinJumpListCategory = ... # 0x3 + + class Type(object): + Custom : QWinJumpListCategory.Type = ... # 0x0 + Recent : QWinJumpListCategory.Type = ... # 0x1 + Frequent : QWinJumpListCategory.Type = ... # 0x2 + Tasks : QWinJumpListCategory.Type = ... # 0x3 + + def __init__(self, title:str=...) -> None: ... + + def addDestination(self, filePath:str) -> PySide2.QtWinExtras.QWinJumpListItem: ... + def addItem(self, item:PySide2.QtWinExtras.QWinJumpListItem) -> None: ... + @typing.overload + def addLink(self, icon:PySide2.QtGui.QIcon, title:str, executablePath:str, arguments:typing.Sequence=...) -> PySide2.QtWinExtras.QWinJumpListItem: ... + @typing.overload + def addLink(self, title:str, executablePath:str, arguments:typing.Sequence=...) -> PySide2.QtWinExtras.QWinJumpListItem: ... + def addSeparator(self) -> PySide2.QtWinExtras.QWinJumpListItem: ... + def clear(self) -> None: ... + def count(self) -> int: ... + def isEmpty(self) -> bool: ... + def isVisible(self) -> bool: ... + def items(self) -> typing.List: ... + def setTitle(self, title:str) -> None: ... + def setVisible(self, visible:bool) -> None: ... + def title(self) -> str: ... + def type(self) -> PySide2.QtWinExtras.QWinJumpListCategory.Type: ... + + +class QWinJumpListItem(Shiboken.Object): + Destination : QWinJumpListItem = ... # 0x0 + Link : QWinJumpListItem = ... # 0x1 + Separator : QWinJumpListItem = ... # 0x2 + + class Type(object): + Destination : QWinJumpListItem.Type = ... # 0x0 + Link : QWinJumpListItem.Type = ... # 0x1 + Separator : QWinJumpListItem.Type = ... # 0x2 + + def __init__(self, type:PySide2.QtWinExtras.QWinJumpListItem.Type) -> None: ... + + def arguments(self) -> typing.List: ... + def description(self) -> str: ... + def filePath(self) -> str: ... + def icon(self) -> PySide2.QtGui.QIcon: ... + def setArguments(self, arguments:typing.Sequence) -> None: ... + def setDescription(self, description:str) -> None: ... + def setFilePath(self, filePath:str) -> None: ... + def setIcon(self, icon:PySide2.QtGui.QIcon) -> None: ... + def setTitle(self, title:str) -> None: ... + def setType(self, type:PySide2.QtWinExtras.QWinJumpListItem.Type) -> None: ... + def setWorkingDirectory(self, workingDirectory:str) -> None: ... + def title(self) -> str: ... + def type(self) -> PySide2.QtWinExtras.QWinJumpListItem.Type: ... + def workingDirectory(self) -> str: ... + + +class QWinTaskbarButton(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def clearOverlayIcon(self) -> None: ... + def eventFilter(self, arg__1:PySide2.QtCore.QObject, arg__2:PySide2.QtCore.QEvent) -> bool: ... + def overlayAccessibleDescription(self) -> str: ... + def overlayIcon(self) -> PySide2.QtGui.QIcon: ... + def progress(self) -> PySide2.QtWinExtras.QWinTaskbarProgress: ... + def setOverlayAccessibleDescription(self, description:str) -> None: ... + def setOverlayIcon(self, icon:PySide2.QtGui.QIcon) -> None: ... + def setWindow(self, window:PySide2.QtGui.QWindow) -> None: ... + def window(self) -> PySide2.QtGui.QWindow: ... + + +class QWinTaskbarProgress(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def hide(self) -> None: ... + def isPaused(self) -> bool: ... + def isStopped(self) -> bool: ... + def isVisible(self) -> bool: ... + def maximum(self) -> int: ... + def minimum(self) -> int: ... + def pause(self) -> None: ... + def reset(self) -> None: ... + def resume(self) -> None: ... + def setMaximum(self, maximum:int) -> None: ... + def setMinimum(self, minimum:int) -> None: ... + def setPaused(self, paused:bool) -> None: ... + def setRange(self, minimum:int, maximum:int) -> None: ... + def setValue(self, value:int) -> None: ... + def setVisible(self, visible:bool) -> None: ... + def show(self) -> None: ... + def stop(self) -> None: ... + def value(self) -> int: ... + + +class QWinThumbnailToolBar(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def addButton(self, button:PySide2.QtWinExtras.QWinThumbnailToolButton) -> None: ... + def buttons(self) -> typing.List: ... + def clear(self) -> None: ... + def count(self) -> int: ... + def iconicLivePreviewPixmap(self) -> PySide2.QtGui.QPixmap: ... + def iconicPixmapNotificationsEnabled(self) -> bool: ... + def iconicThumbnailPixmap(self) -> PySide2.QtGui.QPixmap: ... + def removeButton(self, button:PySide2.QtWinExtras.QWinThumbnailToolButton) -> None: ... + def setButtons(self, buttons:typing.Sequence) -> None: ... + def setIconicLivePreviewPixmap(self, arg__1:PySide2.QtGui.QPixmap) -> None: ... + def setIconicPixmapNotificationsEnabled(self, enabled:bool) -> None: ... + def setIconicThumbnailPixmap(self, arg__1:PySide2.QtGui.QPixmap) -> None: ... + def setWindow(self, window:PySide2.QtGui.QWindow) -> None: ... + def window(self) -> PySide2.QtGui.QWindow: ... + + +class QWinThumbnailToolButton(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def click(self) -> None: ... + def dismissOnClick(self) -> bool: ... + def icon(self) -> PySide2.QtGui.QIcon: ... + def isEnabled(self) -> bool: ... + def isFlat(self) -> bool: ... + def isInteractive(self) -> bool: ... + def isVisible(self) -> bool: ... + def setDismissOnClick(self, dismiss:bool) -> None: ... + def setEnabled(self, enabled:bool) -> None: ... + def setFlat(self, flat:bool) -> None: ... + def setIcon(self, icon:PySide2.QtGui.QIcon) -> None: ... + def setInteractive(self, interactive:bool) -> None: ... + def setToolTip(self, toolTip:str) -> None: ... + def setVisible(self, visible:bool) -> None: ... + def toolTip(self) -> str: ... + + +class QtWin(Shiboken.Object): + FlipDefault : QtWin = ... # 0x0 + HBitmapNoAlpha : QtWin = ... # 0x0 + FlipExcludeBelow : QtWin = ... # 0x1 + HBitmapPremultipliedAlpha: QtWin = ... # 0x1 + FlipExcludeAbove : QtWin = ... # 0x2 + HBitmapAlpha : QtWin = ... # 0x2 + + class HBitmapFormat(object): + HBitmapNoAlpha : QtWin.HBitmapFormat = ... # 0x0 + HBitmapPremultipliedAlpha: QtWin.HBitmapFormat = ... # 0x1 + HBitmapAlpha : QtWin.HBitmapFormat = ... # 0x2 + + class WindowFlip3DPolicy(object): + FlipDefault : QtWin.WindowFlip3DPolicy = ... # 0x0 + FlipExcludeBelow : QtWin.WindowFlip3DPolicy = ... # 0x1 + FlipExcludeAbove : QtWin.WindowFlip3DPolicy = ... # 0x2 + @staticmethod + def colorizationColor() -> typing.Tuple: ... + @typing.overload + @staticmethod + def disableBlurBehindWindow(window:PySide2.QtGui.QWindow) -> None: ... + @typing.overload + @staticmethod + def disableBlurBehindWindow(window:PySide2.QtWidgets.QWidget) -> None: ... + @typing.overload + @staticmethod + def enableBlurBehindWindow(window:PySide2.QtGui.QWindow) -> None: ... + @typing.overload + @staticmethod + def enableBlurBehindWindow(window:PySide2.QtGui.QWindow, region:PySide2.QtGui.QRegion) -> None: ... + @typing.overload + @staticmethod + def enableBlurBehindWindow(window:PySide2.QtWidgets.QWidget) -> None: ... + @typing.overload + @staticmethod + def enableBlurBehindWindow(window:PySide2.QtWidgets.QWidget, region:PySide2.QtGui.QRegion) -> None: ... + @staticmethod + def errorStringFromHresult(hresult:int) -> str: ... + @typing.overload + @staticmethod + def extendFrameIntoClientArea(window:PySide2.QtGui.QWindow, left:int, top:int, right:int, bottom:int) -> None: ... + @typing.overload + @staticmethod + def extendFrameIntoClientArea(window:PySide2.QtGui.QWindow, margins:PySide2.QtCore.QMargins) -> None: ... + @typing.overload + @staticmethod + def extendFrameIntoClientArea(window:PySide2.QtWidgets.QWidget, left:int, top:int, right:int, bottom:int) -> None: ... + @typing.overload + @staticmethod + def extendFrameIntoClientArea(window:PySide2.QtWidgets.QWidget, margins:PySide2.QtCore.QMargins) -> None: ... + @staticmethod + def isCompositionEnabled() -> bool: ... + @staticmethod + def isCompositionOpaque() -> bool: ... + @typing.overload + @staticmethod + def isWindowExcludedFromPeek(window:PySide2.QtGui.QWindow) -> bool: ... + @typing.overload + @staticmethod + def isWindowExcludedFromPeek(window:PySide2.QtWidgets.QWidget) -> bool: ... + @typing.overload + @staticmethod + def isWindowPeekDisallowed(window:PySide2.QtGui.QWindow) -> bool: ... + @typing.overload + @staticmethod + def isWindowPeekDisallowed(window:PySide2.QtWidgets.QWidget) -> bool: ... + @typing.overload + @staticmethod + def markFullscreenWindow(arg__1:PySide2.QtGui.QWindow, fullscreen:bool=...) -> None: ... + @typing.overload + @staticmethod + def markFullscreenWindow(window:PySide2.QtWidgets.QWidget, fullscreen:bool=...) -> None: ... + @staticmethod + def realColorizationColor() -> PySide2.QtGui.QColor: ... + @typing.overload + @staticmethod + def resetExtendedFrame(window:PySide2.QtGui.QWindow) -> None: ... + @typing.overload + @staticmethod + def resetExtendedFrame(window:PySide2.QtWidgets.QWidget) -> None: ... + @staticmethod + def setCompositionEnabled(enabled:bool) -> None: ... + @staticmethod + def setCurrentProcessExplicitAppUserModelID(id:str) -> None: ... + @typing.overload + @staticmethod + def setWindowDisallowPeek(window:PySide2.QtGui.QWindow, disallow:bool) -> None: ... + @typing.overload + @staticmethod + def setWindowDisallowPeek(window:PySide2.QtWidgets.QWidget, disallow:bool) -> None: ... + @typing.overload + @staticmethod + def setWindowExcludedFromPeek(window:PySide2.QtGui.QWindow, exclude:bool) -> None: ... + @typing.overload + @staticmethod + def setWindowExcludedFromPeek(window:PySide2.QtWidgets.QWidget, exclude:bool) -> None: ... + @typing.overload + @staticmethod + def setWindowFlip3DPolicy(window:PySide2.QtGui.QWindow, policy:PySide2.QtWinExtras.QtWin.WindowFlip3DPolicy) -> None: ... + @typing.overload + @staticmethod + def setWindowFlip3DPolicy(window:PySide2.QtWidgets.QWidget, policy:PySide2.QtWinExtras.QtWin.WindowFlip3DPolicy) -> None: ... + @staticmethod + def stringFromHresult(hresult:int) -> str: ... + @typing.overload + @staticmethod + def taskbarActivateTab(arg__1:PySide2.QtGui.QWindow) -> None: ... + @typing.overload + @staticmethod + def taskbarActivateTab(window:PySide2.QtWidgets.QWidget) -> None: ... + @typing.overload + @staticmethod + def taskbarActivateTabAlt(arg__1:PySide2.QtGui.QWindow) -> None: ... + @typing.overload + @staticmethod + def taskbarActivateTabAlt(window:PySide2.QtWidgets.QWidget) -> None: ... + @typing.overload + @staticmethod + def taskbarAddTab(arg__1:PySide2.QtGui.QWindow) -> None: ... + @typing.overload + @staticmethod + def taskbarAddTab(window:PySide2.QtWidgets.QWidget) -> None: ... + @typing.overload + @staticmethod + def taskbarDeleteTab(arg__1:PySide2.QtGui.QWindow) -> None: ... + @typing.overload + @staticmethod + def taskbarDeleteTab(window:PySide2.QtWidgets.QWidget) -> None: ... + @typing.overload + @staticmethod + def windowFlip3DPolicy(arg__1:PySide2.QtGui.QWindow) -> PySide2.QtWinExtras.QtWin.WindowFlip3DPolicy: ... + @typing.overload + @staticmethod + def windowFlip3DPolicy(window:PySide2.QtWidgets.QWidget) -> PySide2.QtWinExtras.QtWin.WindowFlip3DPolicy: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtXml.pyd b/venv/Lib/site-packages/PySide2/QtXml.pyd new file mode 100644 index 0000000..1fb95cd Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtXml.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtXml.pyi b/venv/Lib/site-packages/PySide2/QtXml.pyi new file mode 100644 index 0000000..3aa24d0 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtXml.pyi @@ -0,0 +1,750 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtXml, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtXml +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtXml + + +class QDomAttr(PySide2.QtXml.QDomNode): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, x:PySide2.QtXml.QDomAttr) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def name(self) -> str: ... + def nodeType(self) -> PySide2.QtXml.QDomNode.NodeType: ... + def ownerElement(self) -> PySide2.QtXml.QDomElement: ... + def setValue(self, arg__1:str) -> None: ... + def specified(self) -> bool: ... + def value(self) -> str: ... + + +class QDomCDATASection(PySide2.QtXml.QDomText): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, x:PySide2.QtXml.QDomCDATASection) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def nodeType(self) -> PySide2.QtXml.QDomNode.NodeType: ... + + +class QDomCharacterData(PySide2.QtXml.QDomNode): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, x:PySide2.QtXml.QDomCharacterData) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def appendData(self, arg:str) -> None: ... + def data(self) -> str: ... + def deleteData(self, offset:int, count:int) -> None: ... + def insertData(self, offset:int, arg:str) -> None: ... + def length(self) -> int: ... + def nodeType(self) -> PySide2.QtXml.QDomNode.NodeType: ... + def replaceData(self, offset:int, count:int, arg:str) -> None: ... + def setData(self, arg__1:str) -> None: ... + def substringData(self, offset:int, count:int) -> str: ... + + +class QDomComment(PySide2.QtXml.QDomCharacterData): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, x:PySide2.QtXml.QDomComment) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def nodeType(self) -> PySide2.QtXml.QDomNode.NodeType: ... + + +class QDomDocument(PySide2.QtXml.QDomNode): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, doctype:PySide2.QtXml.QDomDocumentType) -> None: ... + @typing.overload + def __init__(self, name:str) -> None: ... + @typing.overload + def __init__(self, x:PySide2.QtXml.QDomDocument) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def createAttribute(self, name:str) -> PySide2.QtXml.QDomAttr: ... + def createAttributeNS(self, nsURI:str, qName:str) -> PySide2.QtXml.QDomAttr: ... + def createCDATASection(self, data:str) -> PySide2.QtXml.QDomCDATASection: ... + def createComment(self, data:str) -> PySide2.QtXml.QDomComment: ... + def createDocumentFragment(self) -> PySide2.QtXml.QDomDocumentFragment: ... + def createElement(self, tagName:str) -> PySide2.QtXml.QDomElement: ... + def createElementNS(self, nsURI:str, qName:str) -> PySide2.QtXml.QDomElement: ... + def createEntityReference(self, name:str) -> PySide2.QtXml.QDomEntityReference: ... + def createProcessingInstruction(self, target:str, data:str) -> PySide2.QtXml.QDomProcessingInstruction: ... + def createTextNode(self, data:str) -> PySide2.QtXml.QDomText: ... + def doctype(self) -> PySide2.QtXml.QDomDocumentType: ... + def documentElement(self) -> PySide2.QtXml.QDomElement: ... + def elementById(self, elementId:str) -> PySide2.QtXml.QDomElement: ... + def elementsByTagName(self, tagname:str) -> PySide2.QtXml.QDomNodeList: ... + def elementsByTagNameNS(self, nsURI:str, localName:str) -> PySide2.QtXml.QDomNodeList: ... + def implementation(self) -> PySide2.QtXml.QDomImplementation: ... + def importNode(self, importedNode:PySide2.QtXml.QDomNode, deep:bool) -> PySide2.QtXml.QDomNode: ... + def nodeType(self) -> PySide2.QtXml.QDomNode.NodeType: ... + @typing.overload + def setContent(self, dev:PySide2.QtCore.QIODevice) -> typing.Tuple: ... + @typing.overload + def setContent(self, dev:PySide2.QtCore.QIODevice, namespaceProcessing:bool) -> typing.Tuple: ... + @typing.overload + def setContent(self, reader:PySide2.QtCore.QXmlStreamReader, namespaceProcessing:bool) -> typing.Tuple: ... + @typing.overload + def setContent(self, source:PySide2.QtXml.QXmlInputSource, namespaceProcessing:bool) -> typing.Tuple: ... + @typing.overload + def setContent(self, source:PySide2.QtXml.QXmlInputSource, reader:PySide2.QtXml.QXmlReader) -> typing.Tuple: ... + @typing.overload + def setContent(self, text:PySide2.QtCore.QByteArray) -> typing.Tuple: ... + @typing.overload + def setContent(self, text:PySide2.QtCore.QByteArray, namespaceProcessing:bool) -> typing.Tuple: ... + @typing.overload + def setContent(self, text:str) -> typing.Tuple: ... + @typing.overload + def setContent(self, text:str, namespaceProcessing:bool) -> typing.Tuple: ... + def toByteArray(self, arg__1:int=...) -> PySide2.QtCore.QByteArray: ... + def toString(self, arg__1:int=...) -> str: ... + + +class QDomDocumentFragment(PySide2.QtXml.QDomNode): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, x:PySide2.QtXml.QDomDocumentFragment) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def nodeType(self) -> PySide2.QtXml.QDomNode.NodeType: ... + + +class QDomDocumentType(PySide2.QtXml.QDomNode): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, x:PySide2.QtXml.QDomDocumentType) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def entities(self) -> PySide2.QtXml.QDomNamedNodeMap: ... + def internalSubset(self) -> str: ... + def name(self) -> str: ... + def nodeType(self) -> PySide2.QtXml.QDomNode.NodeType: ... + def notations(self) -> PySide2.QtXml.QDomNamedNodeMap: ... + def publicId(self) -> str: ... + def systemId(self) -> str: ... + + +class QDomElement(PySide2.QtXml.QDomNode): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, x:PySide2.QtXml.QDomElement) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def attribute(self, name:str, defValue:str=...) -> str: ... + def attributeNS(self, nsURI:str, localName:str, defValue:str=...) -> str: ... + def attributeNode(self, name:str) -> PySide2.QtXml.QDomAttr: ... + def attributeNodeNS(self, nsURI:str, localName:str) -> PySide2.QtXml.QDomAttr: ... + def attributes(self) -> PySide2.QtXml.QDomNamedNodeMap: ... + def elementsByTagName(self, tagname:str) -> PySide2.QtXml.QDomNodeList: ... + def elementsByTagNameNS(self, nsURI:str, localName:str) -> PySide2.QtXml.QDomNodeList: ... + def hasAttribute(self, name:str) -> bool: ... + def hasAttributeNS(self, nsURI:str, localName:str) -> bool: ... + def nodeType(self) -> PySide2.QtXml.QDomNode.NodeType: ... + def removeAttribute(self, name:str) -> None: ... + def removeAttributeNS(self, nsURI:str, localName:str) -> None: ... + def removeAttributeNode(self, oldAttr:PySide2.QtXml.QDomAttr) -> PySide2.QtXml.QDomAttr: ... + @typing.overload + def setAttribute(self, name:str, value:str) -> None: ... + @typing.overload + def setAttribute(self, name:str, value:float) -> None: ... + @typing.overload + def setAttribute(self, name:str, value:int) -> None: ... + @typing.overload + def setAttributeNS(self, nsURI:str, qName:str, value:str) -> None: ... + @typing.overload + def setAttributeNS(self, nsURI:str, qName:str, value:float) -> None: ... + @typing.overload + def setAttributeNS(self, nsURI:str, qName:str, value:int) -> None: ... + @typing.overload + def setAttributeNS(self, nsURI:str, qName:str, value:int) -> None: ... + @typing.overload + def setAttributeNS(self, nsURI:str, qName:str, value:int) -> None: ... + @typing.overload + def setAttributeNS(self, nsURI:str, qName:str, value:int) -> None: ... + def setAttributeNode(self, newAttr:PySide2.QtXml.QDomAttr) -> PySide2.QtXml.QDomAttr: ... + def setAttributeNodeNS(self, newAttr:PySide2.QtXml.QDomAttr) -> PySide2.QtXml.QDomAttr: ... + def setTagName(self, name:str) -> None: ... + def tagName(self) -> str: ... + def text(self) -> str: ... + + +class QDomEntity(PySide2.QtXml.QDomNode): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, x:PySide2.QtXml.QDomEntity) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def nodeType(self) -> PySide2.QtXml.QDomNode.NodeType: ... + def notationName(self) -> str: ... + def publicId(self) -> str: ... + def systemId(self) -> str: ... + + +class QDomEntityReference(PySide2.QtXml.QDomNode): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, x:PySide2.QtXml.QDomEntityReference) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def nodeType(self) -> PySide2.QtXml.QDomNode.NodeType: ... + + +class QDomImplementation(Shiboken.Object): + AcceptInvalidChars : QDomImplementation = ... # 0x0 + DropInvalidChars : QDomImplementation = ... # 0x1 + ReturnNullNode : QDomImplementation = ... # 0x2 + + class InvalidDataPolicy(object): + AcceptInvalidChars : QDomImplementation.InvalidDataPolicy = ... # 0x0 + DropInvalidChars : QDomImplementation.InvalidDataPolicy = ... # 0x1 + ReturnNullNode : QDomImplementation.InvalidDataPolicy = ... # 0x2 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtXml.QDomImplementation) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def createDocument(self, nsURI:str, qName:str, doctype:PySide2.QtXml.QDomDocumentType) -> PySide2.QtXml.QDomDocument: ... + def createDocumentType(self, qName:str, publicId:str, systemId:str) -> PySide2.QtXml.QDomDocumentType: ... + def hasFeature(self, feature:str, version:str) -> bool: ... + @staticmethod + def invalidDataPolicy() -> PySide2.QtXml.QDomImplementation.InvalidDataPolicy: ... + def isNull(self) -> bool: ... + @staticmethod + def setInvalidDataPolicy(policy:PySide2.QtXml.QDomImplementation.InvalidDataPolicy) -> None: ... + + +class QDomNamedNodeMap(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtXml.QDomNamedNodeMap) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def contains(self, name:str) -> bool: ... + def count(self) -> int: ... + def isEmpty(self) -> bool: ... + def item(self, index:int) -> PySide2.QtXml.QDomNode: ... + def length(self) -> int: ... + def namedItem(self, name:str) -> PySide2.QtXml.QDomNode: ... + def namedItemNS(self, nsURI:str, localName:str) -> PySide2.QtXml.QDomNode: ... + def removeNamedItem(self, name:str) -> PySide2.QtXml.QDomNode: ... + def removeNamedItemNS(self, nsURI:str, localName:str) -> PySide2.QtXml.QDomNode: ... + def setNamedItem(self, newNode:PySide2.QtXml.QDomNode) -> PySide2.QtXml.QDomNode: ... + def setNamedItemNS(self, newNode:PySide2.QtXml.QDomNode) -> PySide2.QtXml.QDomNode: ... + def size(self) -> int: ... + + +class QDomNode(Shiboken.Object): + ElementNode : QDomNode = ... # 0x1 + EncodingFromDocument : QDomNode = ... # 0x1 + AttributeNode : QDomNode = ... # 0x2 + EncodingFromTextStream : QDomNode = ... # 0x2 + TextNode : QDomNode = ... # 0x3 + CDATASectionNode : QDomNode = ... # 0x4 + EntityReferenceNode : QDomNode = ... # 0x5 + EntityNode : QDomNode = ... # 0x6 + ProcessingInstructionNode: QDomNode = ... # 0x7 + CommentNode : QDomNode = ... # 0x8 + DocumentNode : QDomNode = ... # 0x9 + DocumentTypeNode : QDomNode = ... # 0xa + DocumentFragmentNode : QDomNode = ... # 0xb + NotationNode : QDomNode = ... # 0xc + BaseNode : QDomNode = ... # 0x15 + CharacterDataNode : QDomNode = ... # 0x16 + + class EncodingPolicy(object): + EncodingFromDocument : QDomNode.EncodingPolicy = ... # 0x1 + EncodingFromTextStream : QDomNode.EncodingPolicy = ... # 0x2 + + class NodeType(object): + ElementNode : QDomNode.NodeType = ... # 0x1 + AttributeNode : QDomNode.NodeType = ... # 0x2 + TextNode : QDomNode.NodeType = ... # 0x3 + CDATASectionNode : QDomNode.NodeType = ... # 0x4 + EntityReferenceNode : QDomNode.NodeType = ... # 0x5 + EntityNode : QDomNode.NodeType = ... # 0x6 + ProcessingInstructionNode: QDomNode.NodeType = ... # 0x7 + CommentNode : QDomNode.NodeType = ... # 0x8 + DocumentNode : QDomNode.NodeType = ... # 0x9 + DocumentTypeNode : QDomNode.NodeType = ... # 0xa + DocumentFragmentNode : QDomNode.NodeType = ... # 0xb + NotationNode : QDomNode.NodeType = ... # 0xc + BaseNode : QDomNode.NodeType = ... # 0x15 + CharacterDataNode : QDomNode.NodeType = ... # 0x16 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtXml.QDomNode) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def __lshift__(self, arg__1:PySide2.QtCore.QTextStream) -> PySide2.QtCore.QTextStream: ... + def appendChild(self, newChild:PySide2.QtXml.QDomNode) -> PySide2.QtXml.QDomNode: ... + def attributes(self) -> PySide2.QtXml.QDomNamedNodeMap: ... + def childNodes(self) -> PySide2.QtXml.QDomNodeList: ... + def clear(self) -> None: ... + def cloneNode(self, deep:bool=...) -> PySide2.QtXml.QDomNode: ... + def columnNumber(self) -> int: ... + def firstChild(self) -> PySide2.QtXml.QDomNode: ... + def firstChildElement(self, tagName:str=...) -> PySide2.QtXml.QDomElement: ... + def hasAttributes(self) -> bool: ... + def hasChildNodes(self) -> bool: ... + def insertAfter(self, newChild:PySide2.QtXml.QDomNode, refChild:PySide2.QtXml.QDomNode) -> PySide2.QtXml.QDomNode: ... + def insertBefore(self, newChild:PySide2.QtXml.QDomNode, refChild:PySide2.QtXml.QDomNode) -> PySide2.QtXml.QDomNode: ... + def isAttr(self) -> bool: ... + def isCDATASection(self) -> bool: ... + def isCharacterData(self) -> bool: ... + def isComment(self) -> bool: ... + def isDocument(self) -> bool: ... + def isDocumentFragment(self) -> bool: ... + def isDocumentType(self) -> bool: ... + def isElement(self) -> bool: ... + def isEntity(self) -> bool: ... + def isEntityReference(self) -> bool: ... + def isNotation(self) -> bool: ... + def isNull(self) -> bool: ... + def isProcessingInstruction(self) -> bool: ... + def isSupported(self, feature:str, version:str) -> bool: ... + def isText(self) -> bool: ... + def lastChild(self) -> PySide2.QtXml.QDomNode: ... + def lastChildElement(self, tagName:str=...) -> PySide2.QtXml.QDomElement: ... + def lineNumber(self) -> int: ... + def localName(self) -> str: ... + def namedItem(self, name:str) -> PySide2.QtXml.QDomNode: ... + def namespaceURI(self) -> str: ... + def nextSibling(self) -> PySide2.QtXml.QDomNode: ... + def nextSiblingElement(self, taName:str=...) -> PySide2.QtXml.QDomElement: ... + def nodeName(self) -> str: ... + def nodeType(self) -> PySide2.QtXml.QDomNode.NodeType: ... + def nodeValue(self) -> str: ... + def normalize(self) -> None: ... + def ownerDocument(self) -> PySide2.QtXml.QDomDocument: ... + def parentNode(self) -> PySide2.QtXml.QDomNode: ... + def prefix(self) -> str: ... + def previousSibling(self) -> PySide2.QtXml.QDomNode: ... + def previousSiblingElement(self, tagName:str=...) -> PySide2.QtXml.QDomElement: ... + def removeChild(self, oldChild:PySide2.QtXml.QDomNode) -> PySide2.QtXml.QDomNode: ... + def replaceChild(self, newChild:PySide2.QtXml.QDomNode, oldChild:PySide2.QtXml.QDomNode) -> PySide2.QtXml.QDomNode: ... + def save(self, arg__1:PySide2.QtCore.QTextStream, arg__2:int, arg__3:PySide2.QtXml.QDomNode.EncodingPolicy=...) -> None: ... + def setNodeValue(self, arg__1:str) -> None: ... + def setPrefix(self, pre:str) -> None: ... + def toAttr(self) -> PySide2.QtXml.QDomAttr: ... + def toCDATASection(self) -> PySide2.QtXml.QDomCDATASection: ... + def toCharacterData(self) -> PySide2.QtXml.QDomCharacterData: ... + def toComment(self) -> PySide2.QtXml.QDomComment: ... + def toDocument(self) -> PySide2.QtXml.QDomDocument: ... + def toDocumentFragment(self) -> PySide2.QtXml.QDomDocumentFragment: ... + def toDocumentType(self) -> PySide2.QtXml.QDomDocumentType: ... + def toElement(self) -> PySide2.QtXml.QDomElement: ... + def toEntity(self) -> PySide2.QtXml.QDomEntity: ... + def toEntityReference(self) -> PySide2.QtXml.QDomEntityReference: ... + def toNotation(self) -> PySide2.QtXml.QDomNotation: ... + def toProcessingInstruction(self) -> PySide2.QtXml.QDomProcessingInstruction: ... + def toText(self) -> PySide2.QtXml.QDomText: ... + + +class QDomNodeList(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtXml.QDomNodeList) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def at(self, index:int) -> PySide2.QtXml.QDomNode: ... + def count(self) -> int: ... + def isEmpty(self) -> bool: ... + def item(self, index:int) -> PySide2.QtXml.QDomNode: ... + def length(self) -> int: ... + def size(self) -> int: ... + + +class QDomNotation(PySide2.QtXml.QDomNode): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, x:PySide2.QtXml.QDomNotation) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def nodeType(self) -> PySide2.QtXml.QDomNode.NodeType: ... + def publicId(self) -> str: ... + def systemId(self) -> str: ... + + +class QDomProcessingInstruction(PySide2.QtXml.QDomNode): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, x:PySide2.QtXml.QDomProcessingInstruction) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def data(self) -> str: ... + def nodeType(self) -> PySide2.QtXml.QDomNode.NodeType: ... + def setData(self, d:str) -> None: ... + def target(self) -> str: ... + + +class QDomText(PySide2.QtXml.QDomCharacterData): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, x:PySide2.QtXml.QDomText) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def nodeType(self) -> PySide2.QtXml.QDomNode.NodeType: ... + def splitText(self, offset:int) -> PySide2.QtXml.QDomText: ... + + +class QXmlAttributes(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, arg__1:PySide2.QtXml.QXmlAttributes) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def append(self, qName:str, uri:str, localPart:str, value:str) -> None: ... + def clear(self) -> None: ... + def count(self) -> int: ... + @typing.overload + def index(self, qName:str) -> int: ... + @typing.overload + def index(self, uri:str, localPart:str) -> int: ... + def length(self) -> int: ... + def localName(self, index:int) -> str: ... + def qName(self, index:int) -> str: ... + def swap(self, other:PySide2.QtXml.QXmlAttributes) -> None: ... + @typing.overload + def type(self, index:int) -> str: ... + @typing.overload + def type(self, qName:str) -> str: ... + @typing.overload + def type(self, uri:str, localName:str) -> str: ... + def uri(self, index:int) -> str: ... + @typing.overload + def value(self, index:int) -> str: ... + @typing.overload + def value(self, qName:str) -> str: ... + @typing.overload + def value(self, uri:str, localName:str) -> str: ... + + +class QXmlContentHandler(Shiboken.Object): + + def __init__(self) -> None: ... + + def characters(self, ch:str) -> bool: ... + def endDocument(self) -> bool: ... + def endElement(self, namespaceURI:str, localName:str, qName:str) -> bool: ... + def endPrefixMapping(self, prefix:str) -> bool: ... + def errorString(self) -> str: ... + def ignorableWhitespace(self, ch:str) -> bool: ... + def processingInstruction(self, target:str, data:str) -> bool: ... + def setDocumentLocator(self, locator:PySide2.QtXml.QXmlLocator) -> None: ... + def skippedEntity(self, name:str) -> bool: ... + def startDocument(self) -> bool: ... + def startElement(self, namespaceURI:str, localName:str, qName:str, atts:PySide2.QtXml.QXmlAttributes) -> bool: ... + def startPrefixMapping(self, prefix:str, uri:str) -> bool: ... + + +class QXmlDTDHandler(Shiboken.Object): + + def __init__(self) -> None: ... + + def errorString(self) -> str: ... + def notationDecl(self, name:str, publicId:str, systemId:str) -> bool: ... + def unparsedEntityDecl(self, name:str, publicId:str, systemId:str, notationName:str) -> bool: ... + + +class QXmlDeclHandler(Shiboken.Object): + + def __init__(self) -> None: ... + + def attributeDecl(self, eName:str, aName:str, type:str, valueDefault:str, value:str) -> bool: ... + def errorString(self) -> str: ... + def externalEntityDecl(self, name:str, publicId:str, systemId:str) -> bool: ... + def internalEntityDecl(self, name:str, value:str) -> bool: ... + + +class QXmlDefaultHandler(PySide2.QtXml.QXmlContentHandler, PySide2.QtXml.QXmlErrorHandler, PySide2.QtXml.QXmlDTDHandler, PySide2.QtXml.QXmlEntityResolver, PySide2.QtXml.QXmlLexicalHandler, PySide2.QtXml.QXmlDeclHandler): + + def __init__(self) -> None: ... + + def attributeDecl(self, eName:str, aName:str, type:str, valueDefault:str, value:str) -> bool: ... + def characters(self, ch:str) -> bool: ... + def comment(self, ch:str) -> bool: ... + def endCDATA(self) -> bool: ... + def endDTD(self) -> bool: ... + def endDocument(self) -> bool: ... + def endElement(self, namespaceURI:str, localName:str, qName:str) -> bool: ... + def endEntity(self, name:str) -> bool: ... + def endPrefixMapping(self, prefix:str) -> bool: ... + def error(self, exception:PySide2.QtXml.QXmlParseException) -> bool: ... + def errorString(self) -> str: ... + def externalEntityDecl(self, name:str, publicId:str, systemId:str) -> bool: ... + def fatalError(self, exception:PySide2.QtXml.QXmlParseException) -> bool: ... + def ignorableWhitespace(self, ch:str) -> bool: ... + def internalEntityDecl(self, name:str, value:str) -> bool: ... + def notationDecl(self, name:str, publicId:str, systemId:str) -> bool: ... + def processingInstruction(self, target:str, data:str) -> bool: ... + def resolveEntity(self, publicId:str, systemId:str, ret:PySide2.QtXml.QXmlInputSource) -> bool: ... + def setDocumentLocator(self, locator:PySide2.QtXml.QXmlLocator) -> None: ... + def skippedEntity(self, name:str) -> bool: ... + def startCDATA(self) -> bool: ... + def startDTD(self, name:str, publicId:str, systemId:str) -> bool: ... + def startDocument(self) -> bool: ... + def startElement(self, namespaceURI:str, localName:str, qName:str, atts:PySide2.QtXml.QXmlAttributes) -> bool: ... + def startEntity(self, name:str) -> bool: ... + def startPrefixMapping(self, prefix:str, uri:str) -> bool: ... + def unparsedEntityDecl(self, name:str, publicId:str, systemId:str, notationName:str) -> bool: ... + def warning(self, exception:PySide2.QtXml.QXmlParseException) -> bool: ... + + +class QXmlEntityResolver(Shiboken.Object): + + def __init__(self) -> None: ... + + def errorString(self) -> str: ... + def resolveEntity(self, publicId:str, systemId:str, ret:PySide2.QtXml.QXmlInputSource) -> bool: ... + + +class QXmlErrorHandler(Shiboken.Object): + + def __init__(self) -> None: ... + + def error(self, exception:PySide2.QtXml.QXmlParseException) -> bool: ... + def errorString(self) -> str: ... + def fatalError(self, exception:PySide2.QtXml.QXmlParseException) -> bool: ... + def warning(self, exception:PySide2.QtXml.QXmlParseException) -> bool: ... + + +class QXmlInputSource(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, dev:PySide2.QtCore.QIODevice) -> None: ... + + def data(self) -> str: ... + def fetchData(self) -> None: ... + def fromRawData(self, data:PySide2.QtCore.QByteArray, beginning:bool=...) -> str: ... + def next(self) -> str: ... + def reset(self) -> None: ... + @typing.overload + def setData(self, dat:PySide2.QtCore.QByteArray) -> None: ... + @typing.overload + def setData(self, dat:str) -> None: ... + + +class QXmlLexicalHandler(Shiboken.Object): + + def __init__(self) -> None: ... + + def comment(self, ch:str) -> bool: ... + def endCDATA(self) -> bool: ... + def endDTD(self) -> bool: ... + def endEntity(self, name:str) -> bool: ... + def errorString(self) -> str: ... + def startCDATA(self) -> bool: ... + def startDTD(self, name:str, publicId:str, systemId:str) -> bool: ... + def startEntity(self, name:str) -> bool: ... + + +class QXmlLocator(Shiboken.Object): + + def __init__(self) -> None: ... + + def columnNumber(self) -> int: ... + def lineNumber(self) -> int: ... + + +class QXmlNamespaceSupport(Shiboken.Object): + + def __init__(self) -> None: ... + + def popContext(self) -> None: ... + def prefix(self, arg__1:str) -> str: ... + @typing.overload + def prefixes(self) -> typing.List: ... + @typing.overload + def prefixes(self, arg__1:str) -> typing.List: ... + def processName(self, arg__1:str, arg__2:bool, arg__3:str, arg__4:str) -> None: ... + def pushContext(self) -> None: ... + def reset(self) -> None: ... + def setPrefix(self, arg__1:str, arg__2:str) -> None: ... + def splitName(self, arg__1:str, arg__2:str, arg__3:str) -> None: ... + def uri(self, arg__1:str) -> str: ... + + +class QXmlParseException(Shiboken.Object): + + @typing.overload + def __init__(self, name:str=..., c:int=..., l:int=..., p:str=..., s:str=...) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtXml.QXmlParseException) -> None: ... + + def columnNumber(self) -> int: ... + def lineNumber(self) -> int: ... + def message(self) -> str: ... + def publicId(self) -> str: ... + def systemId(self) -> str: ... + + +class QXmlReader(Shiboken.Object): + + def __init__(self) -> None: ... + + def DTDHandler(self) -> PySide2.QtXml.QXmlDTDHandler: ... + def contentHandler(self) -> PySide2.QtXml.QXmlContentHandler: ... + def declHandler(self) -> PySide2.QtXml.QXmlDeclHandler: ... + def entityResolver(self) -> PySide2.QtXml.QXmlEntityResolver: ... + def errorHandler(self) -> PySide2.QtXml.QXmlErrorHandler: ... + def feature(self, name:str) -> typing.Tuple: ... + def hasFeature(self, name:str) -> bool: ... + def hasProperty(self, name:str) -> bool: ... + def lexicalHandler(self) -> PySide2.QtXml.QXmlLexicalHandler: ... + def parse(self, input:PySide2.QtXml.QXmlInputSource) -> bool: ... + def property(self, name:str) -> typing.Tuple: ... + def setContentHandler(self, handler:PySide2.QtXml.QXmlContentHandler) -> None: ... + def setDTDHandler(self, handler:PySide2.QtXml.QXmlDTDHandler) -> None: ... + def setDeclHandler(self, handler:PySide2.QtXml.QXmlDeclHandler) -> None: ... + def setEntityResolver(self, handler:PySide2.QtXml.QXmlEntityResolver) -> None: ... + def setErrorHandler(self, handler:PySide2.QtXml.QXmlErrorHandler) -> None: ... + def setFeature(self, name:str, value:bool) -> None: ... + def setLexicalHandler(self, handler:PySide2.QtXml.QXmlLexicalHandler) -> None: ... + def setProperty(self, name:str, value:int) -> None: ... + + +class QXmlSimpleReader(PySide2.QtXml.QXmlReader): + + def __init__(self) -> None: ... + + def DTDHandler(self) -> PySide2.QtXml.QXmlDTDHandler: ... + def contentHandler(self) -> PySide2.QtXml.QXmlContentHandler: ... + def declHandler(self) -> PySide2.QtXml.QXmlDeclHandler: ... + def entityResolver(self) -> PySide2.QtXml.QXmlEntityResolver: ... + def errorHandler(self) -> PySide2.QtXml.QXmlErrorHandler: ... + def feature(self, name:str) -> typing.Tuple: ... + def hasFeature(self, name:str) -> bool: ... + def hasProperty(self, name:str) -> bool: ... + def lexicalHandler(self) -> PySide2.QtXml.QXmlLexicalHandler: ... + @typing.overload + def parse(self, input:PySide2.QtXml.QXmlInputSource) -> bool: ... + @typing.overload + def parse(self, input:PySide2.QtXml.QXmlInputSource, incremental:bool) -> bool: ... + def parseContinue(self) -> bool: ... + def property(self, name:str) -> typing.Tuple: ... + def setContentHandler(self, handler:PySide2.QtXml.QXmlContentHandler) -> None: ... + def setDTDHandler(self, handler:PySide2.QtXml.QXmlDTDHandler) -> None: ... + def setDeclHandler(self, handler:PySide2.QtXml.QXmlDeclHandler) -> None: ... + def setEntityResolver(self, handler:PySide2.QtXml.QXmlEntityResolver) -> None: ... + def setErrorHandler(self, handler:PySide2.QtXml.QXmlErrorHandler) -> None: ... + def setFeature(self, name:str, value:bool) -> None: ... + def setLexicalHandler(self, handler:PySide2.QtXml.QXmlLexicalHandler) -> None: ... + def setProperty(self, name:str, value:int) -> None: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/QtXmlPatterns.pyd b/venv/Lib/site-packages/PySide2/QtXmlPatterns.pyd new file mode 100644 index 0000000..6a9c243 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/QtXmlPatterns.pyd differ diff --git a/venv/Lib/site-packages/PySide2/QtXmlPatterns.pyi b/venv/Lib/site-packages/PySide2/QtXmlPatterns.pyi new file mode 100644 index 0000000..d532f3b --- /dev/null +++ b/venv/Lib/site-packages/PySide2/QtXmlPatterns.pyi @@ -0,0 +1,419 @@ +# This Python file uses the following encoding: utf-8 +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +This file contains the exact signatures for all functions in module +PySide2.QtXmlPatterns, except for defaults which are replaced by "...". +""" + +# Module PySide2.QtXmlPatterns +import PySide2 +try: + import typing +except ImportError: + from PySide2.support.signature import typing +from PySide2.support.signature.mapping import ( + Virtual, Missing, Invalid, Default, Instance) + +class Object(object): pass + +import shiboken2 as Shiboken +Shiboken.Object = Object + +import PySide2.QtCore +import PySide2.QtXmlPatterns + + +class QAbstractMessageHandler(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def handleMessage(self, type:PySide2.QtCore.QtMsgType, description:str, identifier:PySide2.QtCore.QUrl, sourceLocation:PySide2.QtXmlPatterns.QSourceLocation) -> None: ... + def message(self, type:PySide2.QtCore.QtMsgType, description:str, identifier:PySide2.QtCore.QUrl=..., sourceLocation:PySide2.QtXmlPatterns.QSourceLocation=...) -> None: ... + + +class QAbstractUriResolver(PySide2.QtCore.QObject): + + def __init__(self, parent:typing.Optional[PySide2.QtCore.QObject]=...) -> None: ... + + def resolve(self, relative:PySide2.QtCore.QUrl, baseURI:PySide2.QtCore.QUrl) -> PySide2.QtCore.QUrl: ... + + +class QAbstractXmlNodeModel(Shiboken.Object): + Parent : QAbstractXmlNodeModel = ... # 0x0 + FirstChild : QAbstractXmlNodeModel = ... # 0x1 + InheritNamespaces : QAbstractXmlNodeModel = ... # 0x1 + PreserveNamespaces : QAbstractXmlNodeModel = ... # 0x2 + PreviousSibling : QAbstractXmlNodeModel = ... # 0x2 + NextSibling : QAbstractXmlNodeModel = ... # 0x3 + + class NodeCopySetting(object): + InheritNamespaces : QAbstractXmlNodeModel.NodeCopySetting = ... # 0x1 + PreserveNamespaces : QAbstractXmlNodeModel.NodeCopySetting = ... # 0x2 + + class SimpleAxis(object): + Parent : QAbstractXmlNodeModel.SimpleAxis = ... # 0x0 + FirstChild : QAbstractXmlNodeModel.SimpleAxis = ... # 0x1 + PreviousSibling : QAbstractXmlNodeModel.SimpleAxis = ... # 0x2 + NextSibling : QAbstractXmlNodeModel.SimpleAxis = ... # 0x3 + + def __init__(self) -> None: ... + + def attributes(self, element:PySide2.QtXmlPatterns.QXmlNodeModelIndex) -> typing.List: ... + def baseUri(self, ni:PySide2.QtXmlPatterns.QXmlNodeModelIndex) -> PySide2.QtCore.QUrl: ... + def compareOrder(self, ni1:PySide2.QtXmlPatterns.QXmlNodeModelIndex, ni2:PySide2.QtXmlPatterns.QXmlNodeModelIndex) -> PySide2.QtXmlPatterns.QXmlNodeModelIndex.DocumentOrder: ... + @typing.overload + def createIndex(self, data:int) -> PySide2.QtXmlPatterns.QXmlNodeModelIndex: ... + @typing.overload + def createIndex(self, data:int, additionalData:int) -> PySide2.QtXmlPatterns.QXmlNodeModelIndex: ... + @typing.overload + def createIndex(self, pointer:int, additionalData:int=...) -> PySide2.QtXmlPatterns.QXmlNodeModelIndex: ... + def documentUri(self, ni:PySide2.QtXmlPatterns.QXmlNodeModelIndex) -> PySide2.QtCore.QUrl: ... + def elementById(self, NCName:PySide2.QtXmlPatterns.QXmlName) -> PySide2.QtXmlPatterns.QXmlNodeModelIndex: ... + def isDeepEqual(self, ni1:PySide2.QtXmlPatterns.QXmlNodeModelIndex, ni2:PySide2.QtXmlPatterns.QXmlNodeModelIndex) -> bool: ... + def kind(self, ni:PySide2.QtXmlPatterns.QXmlNodeModelIndex) -> PySide2.QtXmlPatterns.QXmlNodeModelIndex.NodeKind: ... + def name(self, ni:PySide2.QtXmlPatterns.QXmlNodeModelIndex) -> PySide2.QtXmlPatterns.QXmlName: ... + def namespaceBindings(self, n:PySide2.QtXmlPatterns.QXmlNodeModelIndex) -> typing.List: ... + def namespaceForPrefix(self, ni:PySide2.QtXmlPatterns.QXmlNodeModelIndex, prefix:Missing("PySide2.QtXmlPatterns.QXmlName.PrefixCode")) -> Missing("PySide2.QtXmlPatterns.QXmlName.NamespaceCode"): ... + def nextFromSimpleAxis(self, axis:PySide2.QtXmlPatterns.QAbstractXmlNodeModel.SimpleAxis, origin:PySide2.QtXmlPatterns.QXmlNodeModelIndex) -> PySide2.QtXmlPatterns.QXmlNodeModelIndex: ... + def nodesByIdref(self, NCName:PySide2.QtXmlPatterns.QXmlName) -> typing.List: ... + def root(self, n:PySide2.QtXmlPatterns.QXmlNodeModelIndex) -> PySide2.QtXmlPatterns.QXmlNodeModelIndex: ... + def sendNamespaces(self, n:PySide2.QtXmlPatterns.QXmlNodeModelIndex, receiver:PySide2.QtXmlPatterns.QAbstractXmlReceiver) -> None: ... + def sourceLocation(self, index:PySide2.QtXmlPatterns.QXmlNodeModelIndex) -> PySide2.QtXmlPatterns.QSourceLocation: ... + def stringValue(self, n:PySide2.QtXmlPatterns.QXmlNodeModelIndex) -> str: ... + def typedValue(self, n:PySide2.QtXmlPatterns.QXmlNodeModelIndex) -> typing.Any: ... + + +class QAbstractXmlReceiver(Shiboken.Object): + + def __init__(self) -> None: ... + + def atomicValue(self, value:typing.Any) -> None: ... + def attribute(self, name:PySide2.QtXmlPatterns.QXmlName, value:str) -> None: ... + def characters(self, value:str) -> None: ... + def comment(self, value:str) -> None: ... + def endDocument(self) -> None: ... + def endElement(self) -> None: ... + def endOfSequence(self) -> None: ... + def namespaceBinding(self, name:PySide2.QtXmlPatterns.QXmlName) -> None: ... + def processingInstruction(self, target:PySide2.QtXmlPatterns.QXmlName, value:str) -> None: ... + def startDocument(self) -> None: ... + def startElement(self, name:PySide2.QtXmlPatterns.QXmlName) -> None: ... + def startOfSequence(self) -> None: ... + def whitespaceOnly(self, value:str) -> None: ... + + +class QSourceLocation(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtXmlPatterns.QSourceLocation) -> None: ... + @typing.overload + def __init__(self, uri:PySide2.QtCore.QUrl, line:int=..., column:int=...) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def column(self) -> int: ... + def isNull(self) -> bool: ... + def line(self) -> int: ... + def setColumn(self, newColumn:int) -> None: ... + def setLine(self, newLine:int) -> None: ... + def setUri(self, newUri:PySide2.QtCore.QUrl) -> None: ... + def uri(self) -> PySide2.QtCore.QUrl: ... + + +class QXmlFormatter(PySide2.QtXmlPatterns.QXmlSerializer): + + def __init__(self, query:PySide2.QtXmlPatterns.QXmlQuery, outputDevice:PySide2.QtCore.QIODevice) -> None: ... + + def atomicValue(self, value:typing.Any) -> None: ... + def attribute(self, name:PySide2.QtXmlPatterns.QXmlName, value:str) -> None: ... + def characters(self, value:str) -> None: ... + def comment(self, value:str) -> None: ... + def endDocument(self) -> None: ... + def endElement(self) -> None: ... + def endOfSequence(self) -> None: ... + def indentationDepth(self) -> int: ... + def processingInstruction(self, name:PySide2.QtXmlPatterns.QXmlName, value:str) -> None: ... + def setIndentationDepth(self, depth:int) -> None: ... + def startDocument(self) -> None: ... + def startElement(self, name:PySide2.QtXmlPatterns.QXmlName) -> None: ... + def startOfSequence(self) -> None: ... + + +class QXmlItem(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, atomicValue:typing.Any) -> None: ... + @typing.overload + def __init__(self, node:PySide2.QtXmlPatterns.QXmlNodeModelIndex) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtXmlPatterns.QXmlItem) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def isAtomicValue(self) -> bool: ... + def isNode(self) -> bool: ... + def isNull(self) -> bool: ... + def toAtomicValue(self) -> typing.Any: ... + def toNodeModelIndex(self) -> PySide2.QtXmlPatterns.QXmlNodeModelIndex: ... + + +class QXmlName(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, namePool:PySide2.QtXmlPatterns.QXmlNamePool, localName:str, namespaceURI:str=..., prefix:str=...) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtXmlPatterns.QXmlName) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @staticmethod + def fromClarkName(clarkName:str, namePool:PySide2.QtXmlPatterns.QXmlNamePool) -> PySide2.QtXmlPatterns.QXmlName: ... + @staticmethod + def isNCName(candidate:str) -> bool: ... + def isNull(self) -> bool: ... + def localName(self, query:PySide2.QtXmlPatterns.QXmlNamePool) -> str: ... + def namespaceUri(self, query:PySide2.QtXmlPatterns.QXmlNamePool) -> str: ... + def prefix(self, query:PySide2.QtXmlPatterns.QXmlNamePool) -> str: ... + def toClarkName(self, query:PySide2.QtXmlPatterns.QXmlNamePool) -> str: ... + + +class QXmlNamePool(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtXmlPatterns.QXmlNamePool) -> None: ... + + @staticmethod + def __copy__() -> None: ... + + +class QXmlNodeModelIndex(Shiboken.Object): + Precedes : QXmlNodeModelIndex = ... # -0x1 + Is : QXmlNodeModelIndex = ... # 0x0 + Attribute : QXmlNodeModelIndex = ... # 0x1 + Follows : QXmlNodeModelIndex = ... # 0x1 + Comment : QXmlNodeModelIndex = ... # 0x2 + Document : QXmlNodeModelIndex = ... # 0x4 + Element : QXmlNodeModelIndex = ... # 0x8 + Namespace : QXmlNodeModelIndex = ... # 0x10 + ProcessingInstruction : QXmlNodeModelIndex = ... # 0x20 + Text : QXmlNodeModelIndex = ... # 0x40 + + class DocumentOrder(object): + Precedes : QXmlNodeModelIndex.DocumentOrder = ... # -0x1 + Is : QXmlNodeModelIndex.DocumentOrder = ... # 0x0 + Follows : QXmlNodeModelIndex.DocumentOrder = ... # 0x1 + + class NodeKind(object): + Attribute : QXmlNodeModelIndex.NodeKind = ... # 0x1 + Comment : QXmlNodeModelIndex.NodeKind = ... # 0x2 + Document : QXmlNodeModelIndex.NodeKind = ... # 0x4 + Element : QXmlNodeModelIndex.NodeKind = ... # 0x8 + Namespace : QXmlNodeModelIndex.NodeKind = ... # 0x10 + ProcessingInstruction : QXmlNodeModelIndex.NodeKind = ... # 0x20 + Text : QXmlNodeModelIndex.NodeKind = ... # 0x40 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtXmlPatterns.QXmlNodeModelIndex) -> None: ... + + @staticmethod + def __copy__() -> None: ... + def additionalData(self) -> int: ... + def data(self) -> int: ... + def internalPointer(self) -> int: ... + def isNull(self) -> bool: ... + def model(self) -> PySide2.QtXmlPatterns.QAbstractXmlNodeModel: ... + + +class QXmlQuery(Shiboken.Object): + XQuery10 : QXmlQuery = ... # 0x1 + XSLT20 : QXmlQuery = ... # 0x2 + XmlSchema11IdentityConstraintSelector: QXmlQuery = ... # 0x400 + XmlSchema11IdentityConstraintField: QXmlQuery = ... # 0x800 + XPath20 : QXmlQuery = ... # 0x1000 + + class QueryLanguage(object): + XQuery10 : QXmlQuery.QueryLanguage = ... # 0x1 + XSLT20 : QXmlQuery.QueryLanguage = ... # 0x2 + XmlSchema11IdentityConstraintSelector: QXmlQuery.QueryLanguage = ... # 0x400 + XmlSchema11IdentityConstraintField: QXmlQuery.QueryLanguage = ... # 0x800 + XPath20 : QXmlQuery.QueryLanguage = ... # 0x1000 + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, np:PySide2.QtXmlPatterns.QXmlNamePool) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtXmlPatterns.QXmlQuery) -> None: ... + @typing.overload + def __init__(self, queryLanguage:PySide2.QtXmlPatterns.QXmlQuery.QueryLanguage, np:PySide2.QtXmlPatterns.QXmlNamePool=...) -> None: ... + + @staticmethod + def __copy__() -> None: ... + @typing.overload + def bindVariable(self, localName:str, arg__2:PySide2.QtCore.QIODevice) -> None: ... + @typing.overload + def bindVariable(self, localName:str, query:PySide2.QtXmlPatterns.QXmlQuery) -> None: ... + @typing.overload + def bindVariable(self, localName:str, value:PySide2.QtXmlPatterns.QXmlItem) -> None: ... + @typing.overload + def bindVariable(self, name:PySide2.QtXmlPatterns.QXmlName, arg__2:PySide2.QtCore.QIODevice) -> None: ... + @typing.overload + def bindVariable(self, name:PySide2.QtXmlPatterns.QXmlName, query:PySide2.QtXmlPatterns.QXmlQuery) -> None: ... + @typing.overload + def bindVariable(self, name:PySide2.QtXmlPatterns.QXmlName, value:PySide2.QtXmlPatterns.QXmlItem) -> None: ... + @typing.overload + def evaluateTo(self, callback:PySide2.QtXmlPatterns.QAbstractXmlReceiver) -> bool: ... + @typing.overload + def evaluateTo(self, result:PySide2.QtXmlPatterns.QXmlResultItems) -> None: ... + @typing.overload + def evaluateTo(self, target:PySide2.QtCore.QIODevice) -> bool: ... + def initialTemplateName(self) -> PySide2.QtXmlPatterns.QXmlName: ... + def isValid(self) -> bool: ... + def messageHandler(self) -> PySide2.QtXmlPatterns.QAbstractMessageHandler: ... + def namePool(self) -> PySide2.QtXmlPatterns.QXmlNamePool: ... + def queryLanguage(self) -> PySide2.QtXmlPatterns.QXmlQuery.QueryLanguage: ... + @typing.overload + def setFocus(self, document:PySide2.QtCore.QIODevice) -> bool: ... + @typing.overload + def setFocus(self, documentURI:PySide2.QtCore.QUrl) -> bool: ... + @typing.overload + def setFocus(self, focus:str) -> bool: ... + @typing.overload + def setFocus(self, item:PySide2.QtXmlPatterns.QXmlItem) -> None: ... + @typing.overload + def setInitialTemplateName(self, name:PySide2.QtXmlPatterns.QXmlName) -> None: ... + @typing.overload + def setInitialTemplateName(self, name:str) -> None: ... + def setMessageHandler(self, messageHandler:PySide2.QtXmlPatterns.QAbstractMessageHandler) -> None: ... + @typing.overload + def setQuery(self, queryURI:PySide2.QtCore.QUrl, baseURI:PySide2.QtCore.QUrl=...) -> None: ... + @typing.overload + def setQuery(self, sourceCode:PySide2.QtCore.QIODevice, documentURI:PySide2.QtCore.QUrl=...) -> None: ... + @typing.overload + def setQuery(self, sourceCode:str, documentURI:PySide2.QtCore.QUrl=...) -> None: ... + def setUriResolver(self, resolver:PySide2.QtXmlPatterns.QAbstractUriResolver) -> None: ... + def uriResolver(self) -> PySide2.QtXmlPatterns.QAbstractUriResolver: ... + + +class QXmlResultItems(Shiboken.Object): + + def __init__(self) -> None: ... + + def current(self) -> PySide2.QtXmlPatterns.QXmlItem: ... + def hasError(self) -> bool: ... + def next(self) -> PySide2.QtXmlPatterns.QXmlItem: ... + + +class QXmlSchema(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, other:PySide2.QtXmlPatterns.QXmlSchema) -> None: ... + + def documentUri(self) -> PySide2.QtCore.QUrl: ... + def isValid(self) -> bool: ... + @typing.overload + def load(self, data:PySide2.QtCore.QByteArray, documentUri:PySide2.QtCore.QUrl=...) -> bool: ... + @typing.overload + def load(self, source:PySide2.QtCore.QIODevice, documentUri:PySide2.QtCore.QUrl=...) -> bool: ... + @typing.overload + def load(self, source:PySide2.QtCore.QUrl) -> bool: ... + def messageHandler(self) -> PySide2.QtXmlPatterns.QAbstractMessageHandler: ... + def namePool(self) -> PySide2.QtXmlPatterns.QXmlNamePool: ... + def setMessageHandler(self, handler:PySide2.QtXmlPatterns.QAbstractMessageHandler) -> None: ... + def setUriResolver(self, resolver:PySide2.QtXmlPatterns.QAbstractUriResolver) -> None: ... + def uriResolver(self) -> PySide2.QtXmlPatterns.QAbstractUriResolver: ... + + +class QXmlSchemaValidator(Shiboken.Object): + + @typing.overload + def __init__(self) -> None: ... + @typing.overload + def __init__(self, schema:PySide2.QtXmlPatterns.QXmlSchema) -> None: ... + + def messageHandler(self) -> PySide2.QtXmlPatterns.QAbstractMessageHandler: ... + def namePool(self) -> PySide2.QtXmlPatterns.QXmlNamePool: ... + def schema(self) -> PySide2.QtXmlPatterns.QXmlSchema: ... + def setMessageHandler(self, handler:PySide2.QtXmlPatterns.QAbstractMessageHandler) -> None: ... + def setSchema(self, schema:PySide2.QtXmlPatterns.QXmlSchema) -> None: ... + def setUriResolver(self, resolver:PySide2.QtXmlPatterns.QAbstractUriResolver) -> None: ... + def uriResolver(self) -> PySide2.QtXmlPatterns.QAbstractUriResolver: ... + @typing.overload + def validate(self, data:PySide2.QtCore.QByteArray, documentUri:PySide2.QtCore.QUrl=...) -> bool: ... + @typing.overload + def validate(self, source:PySide2.QtCore.QIODevice, documentUri:PySide2.QtCore.QUrl=...) -> bool: ... + @typing.overload + def validate(self, source:PySide2.QtCore.QUrl) -> bool: ... + + +class QXmlSerializer(PySide2.QtXmlPatterns.QAbstractXmlReceiver): + + def __init__(self, query:PySide2.QtXmlPatterns.QXmlQuery, outputDevice:PySide2.QtCore.QIODevice) -> None: ... + + def atomicValue(self, value:typing.Any) -> None: ... + def attribute(self, name:PySide2.QtXmlPatterns.QXmlName, value:str) -> None: ... + def characters(self, value:str) -> None: ... + def codec(self) -> PySide2.QtCore.QTextCodec: ... + def comment(self, value:str) -> None: ... + def endDocument(self) -> None: ... + def endElement(self) -> None: ... + def endOfSequence(self) -> None: ... + def namespaceBinding(self, nb:PySide2.QtXmlPatterns.QXmlName) -> None: ... + def outputDevice(self) -> PySide2.QtCore.QIODevice: ... + def processingInstruction(self, name:PySide2.QtXmlPatterns.QXmlName, value:str) -> None: ... + def setCodec(self, codec:PySide2.QtCore.QTextCodec) -> None: ... + def startDocument(self) -> None: ... + def startElement(self, name:PySide2.QtXmlPatterns.QXmlName) -> None: ... + def startOfSequence(self) -> None: ... + +# eof diff --git a/venv/Lib/site-packages/PySide2/__init__.py b/venv/Lib/site-packages/PySide2/__init__.py new file mode 100644 index 0000000..8e40c84 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/__init__.py @@ -0,0 +1,107 @@ +from __future__ import print_function +import os +import sys +from textwrap import dedent + +__all__ = list("Qt" + body for body in + "Core;Gui;Widgets;PrintSupport;Sql;Network;Test;Concurrent;WinExtras;Xml;XmlPatterns;Help;Multimedia;MultimediaWidgets;OpenGL;OpenGLFunctions;Positioning;Location;Qml;Quick;QuickControls2;QuickWidgets;RemoteObjects;Scxml;Script;ScriptTools;Sensors;SerialPort;TextToSpeech;Charts;Svg;DataVisualization;UiTools;AxContainer;WebChannel;WebEngineCore;WebEngine;WebEngineWidgets;WebSockets;3DCore;3DRender;3DInput;3DLogic;3DAnimation;3DExtras" + .split(";")) +__version__ = "5.15.2.1" +__version_info__ = (5, 15, 2.1, "", "") + + +def _additional_dll_directories(package_dir): + # Find shiboken2 relative to the package directory. + root = os.path.dirname(package_dir) + # Check for a flat .zip as deployed by cx_free(PYSIDE-1257) + if root.endswith('.zip'): + return [] + shiboken2 = os.path.join(root, 'shiboken2') + if os.path.isdir(shiboken2): # Standard case, only shiboken2 is needed + return [shiboken2] + # The below code is for the build process when generate_pyi.py + # is executed in the build directory. We need libpyside and Qt in addition. + shiboken2 = os.path.join(os.path.dirname(root), 'shiboken2', 'libshiboken') + if not os.path.isdir(shiboken2): + raise ImportError(shiboken2 + ' does not exist') + result = [shiboken2, os.path.join(root, 'libpyside')] + for path in os.environ.get('PATH').split(';'): + if path: + if os.path.exists(os.path.join(path, 'qmake.exe')): + result.append(path) + break + return result + + +def _setupQtDirectories(): + # On Windows we need to explicitly import the shiboken2 module so + # that the libshiboken.dll dependency is loaded by the time a + # Qt module is imported. Otherwise due to PATH not containing + # the shiboken2 module path, the Qt module import would fail + # due to the missing libshiboken dll. + # In addition, as of Python 3.8, the shiboken package directory + # must be added to the DLL search paths so that shiboken2.dll + # is found. + # We need to do the same on Linux and macOS, because we do not + # embed rpaths into the PySide2 libraries that would point to + # the libshiboken library location. Importing the module + # loads the libraries into the process memory beforehand, and + # thus takes care of it for us. + + pyside_package_dir = os.path.abspath(os.path.dirname(__file__)) + + if sys.platform == 'win32' and sys.version_info[0] == 3 and sys.version_info[1] >= 8: + for dir in _additional_dll_directories(pyside_package_dir): + os.add_dll_directory(dir) + + try: + import shiboken2 + except Exception: + paths = ', '.join(sys.path) + print('PySide2/__init__.py: Unable to import shiboken2 from {}'.format(paths), + file=sys.stderr) + raise + + # Trigger signature initialization. + try: + # PYSIDE-829: Avoid non-existent attributes in compiled code (Nuitka). + # We now use an explicit function instead of touching a signature. + _init_pyside_extension() + except AttributeError: + print(dedent('''\ + {stars} + PySide2/__init__.py: The `signature` module was not initialized. + This libshiboken module was loaded from + + "{shiboken2.__file__}". + + Please make sure that this is the real shiboken2 binary and not just a folder. + {stars} + ''').format(stars=79*"*", **locals()), file=sys.stderr) + raise + + if sys.platform == 'win32': + # PATH has to contain the package directory, otherwise plugins + # won't be able to find their required Qt libraries (e.g. the + # svg image plugin won't find Qt5Svg.dll). + os.environ['PATH'] = pyside_package_dir + os.pathsep + os.environ['PATH'] + + # On Windows, add the PySide2\openssl folder (created by setup.py's + # --openssl option) to the PATH so that the SSL DLLs can be found + # when Qt tries to dynamically load them. Tell Qt to load them and + # then reset the PATH. + openssl_dir = os.path.join(pyside_package_dir, 'openssl') + if os.path.exists(openssl_dir): + path = os.environ['PATH'] + try: + os.environ['PATH'] = openssl_dir + os.pathsep + path + try: + from . import QtNetwork + except ImportError: + pass + else: + QtNetwork.QSslSocket.supportsSsl() + finally: + os.environ['PATH'] = path + +_setupQtDirectories() diff --git a/venv/Lib/site-packages/PySide2/__pycache__/__init__.cpython-310.pyc b/venv/Lib/site-packages/PySide2/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..d95c188 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/__pycache__/__init__.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/__pycache__/_config.cpython-310.pyc b/venv/Lib/site-packages/PySide2/__pycache__/_config.cpython-310.pyc new file mode 100644 index 0000000..dc2fc54 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/__pycache__/_config.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/__pycache__/_git_pyside_version.cpython-310.pyc b/venv/Lib/site-packages/PySide2/__pycache__/_git_pyside_version.cpython-310.pyc new file mode 100644 index 0000000..f69caf3 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/__pycache__/_git_pyside_version.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/_config.py b/venv/Lib/site-packages/PySide2/_config.py new file mode 100644 index 0000000..d4ffb49 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/_config.py @@ -0,0 +1,16 @@ +built_modules = list(name for name in + "Core;Gui;Widgets;PrintSupport;Sql;Network;Test;Concurrent;WinExtras;Xml;XmlPatterns;Help;Multimedia;MultimediaWidgets;OpenGL;OpenGLFunctions;Positioning;Location;Qml;Quick;QuickControls2;QuickWidgets;RemoteObjects;Scxml;Script;ScriptTools;Sensors;SerialPort;TextToSpeech;Charts;Svg;DataVisualization;UiTools;AxContainer;WebChannel;WebEngineCore;WebEngine;WebEngineWidgets;WebSockets;3DCore;3DRender;3DInput;3DLogic;3DAnimation;3DExtras" + .split(";")) + +shiboken_library_soversion = str(5.15) +pyside_library_soversion = str(5.15) + +version = "5.15.2.1" +version_info = (5, 15, 2.1, "", "") + +__build_date__ = '2022-01-07T13:16:52+00:00' + + + + +__setup_py_package_version__ = '5.15.2.1' diff --git a/venv/Lib/site-packages/PySide2/_git_pyside_version.py b/venv/Lib/site-packages/PySide2/_git_pyside_version.py new file mode 100644 index 0000000..2ccf3be --- /dev/null +++ b/venv/Lib/site-packages/PySide2/_git_pyside_version.py @@ -0,0 +1,55 @@ +############################################################################# +## +## Copyright (C) 2019 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of Qt for Python. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +major_version = "5" +minor_version = "15" +patch_version = "2.1" + +# For example: "a", "b", "rc" +# (which means "alpha", "beta", "release candidate"). +# An empty string means the generated package will be an official release. +release_version_type = "" + +# For example: "1", "2" (which means "beta1", "beta2", if type is "b"). +pre_release_version = "" + +if __name__ == '__main__': + # Used by CMake. + print('{0};{1};{2};{3};{4}'.format(major_version, minor_version, patch_version, + release_version_type, pre_release_version)) diff --git a/venv/Lib/site-packages/PySide2/concrt140.dll b/venv/Lib/site-packages/PySide2/concrt140.dll new file mode 100644 index 0000000..bca13b0 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/concrt140.dll differ diff --git a/venv/Lib/site-packages/PySide2/d3dcompiler_47.dll b/venv/Lib/site-packages/PySide2/d3dcompiler_47.dll new file mode 100644 index 0000000..8d40370 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/d3dcompiler_47.dll differ diff --git a/venv/Lib/site-packages/PySide2/designer.exe b/venv/Lib/site-packages/PySide2/designer.exe new file mode 100644 index 0000000..fb2d000 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/designer.exe differ diff --git a/venv/Lib/site-packages/PySide2/examples/3d/3d.pyproject b/venv/Lib/site-packages/PySide2/examples/3d/3d.pyproject new file mode 100644 index 0000000..4c85ba5 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/3d/3d.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["simple3d.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/3d/__pycache__/simple3d.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/3d/__pycache__/simple3d.cpython-310.pyc new file mode 100644 index 0000000..963fab2 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/3d/__pycache__/simple3d.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/3d/simple3d.py b/venv/Lib/site-packages/PySide2/examples/3d/simple3d.py new file mode 100644 index 0000000..cea662a --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/3d/simple3d.py @@ -0,0 +1,162 @@ + +############################################################################# +## +## Copyright (C) 2018 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the qt3d/simple-cpp example from Qt v5.x""" + +import sys +from PySide2.QtCore import(Property, QObject, QPropertyAnimation, Signal) +from PySide2.QtGui import (QGuiApplication, QMatrix4x4, QQuaternion, QVector3D) +from PySide2.Qt3DCore import (Qt3DCore) +from PySide2.Qt3DExtras import (Qt3DExtras) + +class OrbitTransformController(QObject): + def __init__(self, parent): + super(OrbitTransformController, self).__init__(parent) + self._target = None + self._matrix = QMatrix4x4() + self._radius = 1 + self._angle = 0 + + def setTarget(self, t): + self._target = t + + def getTarget(self): + return self._target + + def setRadius(self, radius): + if self._radius != radius: + self._radius = radius + self.updateMatrix() + self.radiusChanged.emit() + + def getRadius(self): + return self._radius + + def setAngle(self, angle): + if self._angle != angle: + self._angle = angle + self.updateMatrix() + self.angleChanged.emit() + + def getAngle(self): + return self._angle + + def updateMatrix(self): + self._matrix.setToIdentity() + self._matrix.rotate(self._angle, QVector3D(0, 1, 0)) + self._matrix.translate(self._radius, 0, 0) + if self._target is not None: + self._target.setMatrix(self._matrix) + + angleChanged = Signal() + radiusChanged = Signal() + angle = Property(float, getAngle, setAngle, notify=angleChanged) + radius = Property(float, getRadius, setRadius, notify=radiusChanged) + +class Window(Qt3DExtras.Qt3DWindow): + def __init__(self): + super(Window, self).__init__() + + # Camera + self.camera().lens().setPerspectiveProjection(45, 16 / 9, 0.1, 1000) + self.camera().setPosition(QVector3D(0, 0, 40)) + self.camera().setViewCenter(QVector3D(0, 0, 0)) + + # For camera controls + self.createScene() + self.camController = Qt3DExtras.QOrbitCameraController(self.rootEntity) + self.camController.setLinearSpeed(50) + self.camController.setLookSpeed(180) + self.camController.setCamera(self.camera()) + + self.setRootEntity(self.rootEntity) + + def createScene(self): + # Root entity + self.rootEntity = Qt3DCore.QEntity() + + # Material + self.material = Qt3DExtras.QPhongMaterial(self.rootEntity) + + # Torus + self.torusEntity = Qt3DCore.QEntity(self.rootEntity) + self.torusMesh = Qt3DExtras.QTorusMesh() + self.torusMesh.setRadius(5) + self.torusMesh.setMinorRadius(1) + self.torusMesh.setRings(100) + self.torusMesh.setSlices(20) + + self.torusTransform = Qt3DCore.QTransform() + self.torusTransform.setScale3D(QVector3D(1.5, 1, 0.5)) + self.torusTransform.setRotation(QQuaternion.fromAxisAndAngle(QVector3D(1, 0, 0), 45)) + + self.torusEntity.addComponent(self.torusMesh) + self.torusEntity.addComponent(self.torusTransform) + self.torusEntity.addComponent(self.material) + + # Sphere + self.sphereEntity = Qt3DCore.QEntity(self.rootEntity) + self.sphereMesh = Qt3DExtras.QSphereMesh() + self.sphereMesh.setRadius(3) + + self.sphereTransform = Qt3DCore.QTransform() + self.controller = OrbitTransformController(self.sphereTransform) + self.controller.setTarget(self.sphereTransform) + self.controller.setRadius(20) + + self.sphereRotateTransformAnimation = QPropertyAnimation(self.sphereTransform) + self.sphereRotateTransformAnimation.setTargetObject(self.controller) + self.sphereRotateTransformAnimation.setPropertyName(b"angle") + self.sphereRotateTransformAnimation.setStartValue(0) + self.sphereRotateTransformAnimation.setEndValue(360) + self.sphereRotateTransformAnimation.setDuration(10000) + self.sphereRotateTransformAnimation.setLoopCount(-1) + self.sphereRotateTransformAnimation.start() + + self.sphereEntity.addComponent(self.sphereMesh) + self.sphereEntity.addComponent(self.sphereTransform) + self.sphereEntity.addComponent(self.material) + +if __name__ == '__main__': + app = QGuiApplication(sys.argv) + view = Window() + view.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/axcontainer/__pycache__/axviewer.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/axcontainer/__pycache__/axviewer.cpython-310.pyc new file mode 100644 index 0000000..89082cd Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/axcontainer/__pycache__/axviewer.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/axcontainer/axcontainer.pyproject b/venv/Lib/site-packages/PySide2/examples/axcontainer/axcontainer.pyproject new file mode 100644 index 0000000..b054d6f --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/axcontainer/axcontainer.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["axviewer.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/axcontainer/axviewer.py b/venv/Lib/site-packages/PySide2/examples/axcontainer/axviewer.py new file mode 100644 index 0000000..e9083d8 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/axcontainer/axviewer.py @@ -0,0 +1,82 @@ + +############################################################################# +## +## Copyright (C) 2017 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 Active Qt Viewer example""" + +import sys +from PySide2.QtAxContainer import QAxSelect, QAxWidget +from PySide2.QtWidgets import (QAction, QApplication, QDialog, + QMainWindow, QMessageBox, QToolBar) + +class MainWindow(QMainWindow): + + def __init__(self): + super(MainWindow, self).__init__() + + toolBar = QToolBar() + self.addToolBar(toolBar) + fileMenu = self.menuBar().addMenu("&File") + loadAction = QAction("Load...", self, shortcut="Ctrl+L", triggered=self.load) + fileMenu.addAction(loadAction) + toolBar.addAction(loadAction) + exitAction = QAction("E&xit", self, shortcut="Ctrl+Q", triggered=self.close) + fileMenu.addAction(exitAction) + + aboutMenu = self.menuBar().addMenu("&About") + aboutQtAct = QAction("About &Qt", self, triggered=qApp.aboutQt) + aboutMenu.addAction(aboutQtAct) + self.axWidget = QAxWidget() + self.setCentralWidget(self.axWidget) + + def load(self): + axSelect = QAxSelect(self) + if axSelect.exec_() == QDialog.Accepted: + clsid = axSelect.clsid() + if not self.axWidget.setControl(clsid): + QMessageBox.warning(self, "AxViewer", "Unable to load " + clsid + ".") + +if __name__ == '__main__': + app = QApplication(sys.argv) + mainWin = MainWindow() + availableGeometry = app.desktop().availableGeometry(mainWin) + mainWin.resize(availableGeometry.width() / 3, availableGeometry.height() / 2) + mainWin.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/audio.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/audio.cpython-310.pyc new file mode 100644 index 0000000..28c54bc Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/audio.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/callout.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/callout.cpython-310.pyc new file mode 100644 index 0000000..41b399d Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/callout.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/donutbreakdown.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/donutbreakdown.cpython-310.pyc new file mode 100644 index 0000000..cc5e097 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/donutbreakdown.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/legend.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/legend.cpython-310.pyc new file mode 100644 index 0000000..6694177 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/legend.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/lineandbar.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/lineandbar.cpython-310.pyc new file mode 100644 index 0000000..30a8e77 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/lineandbar.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/linechart.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/linechart.cpython-310.pyc new file mode 100644 index 0000000..bc8d31b Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/linechart.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/logvalueaxis.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/logvalueaxis.cpython-310.pyc new file mode 100644 index 0000000..d578b31 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/logvalueaxis.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/memoryusage.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/memoryusage.cpython-310.pyc new file mode 100644 index 0000000..6746945 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/memoryusage.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/modeldata.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/modeldata.cpython-310.pyc new file mode 100644 index 0000000..1ebeda8 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/modeldata.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/nesteddonuts.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/nesteddonuts.cpython-310.pyc new file mode 100644 index 0000000..a6e2e6b Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/nesteddonuts.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/percentbarchart.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/percentbarchart.cpython-310.pyc new file mode 100644 index 0000000..3807086 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/percentbarchart.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/piechart.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/piechart.cpython-310.pyc new file mode 100644 index 0000000..25c93d0 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/piechart.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/temperaturerecords.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/temperaturerecords.cpython-310.pyc new file mode 100644 index 0000000..54b5052 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/charts/__pycache__/temperaturerecords.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/charts/audio.py b/venv/Lib/site-packages/PySide2/examples/charts/audio.py new file mode 100644 index 0000000..f899ac4 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/charts/audio.py @@ -0,0 +1,126 @@ + +############################################################################# +## +## Copyright (C) 2018 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the charts/audio example from Qt v5.x""" + +import sys +from PySide2.QtCharts import QtCharts +from PySide2.QtCore import QPointF +from PySide2.QtMultimedia import (QAudioDeviceInfo, QAudioFormat, + QAudioInput) +from PySide2.QtWidgets import QApplication, QMainWindow, QMessageBox + +sampleCount = 2000 +resolution = 4 + +class MainWindow(QMainWindow): + def __init__(self, device): + super(MainWindow, self).__init__() + + self.series = QtCharts.QLineSeries() + self.chart = QtCharts.QChart() + self.chart.addSeries(self.series) + self.axisX = QtCharts.QValueAxis() + self.axisX.setRange(0, sampleCount) + self.axisX.setLabelFormat("%g") + self.axisX.setTitleText("Samples") + self.axisY = QtCharts.QValueAxis() + self.axisY.setRange(-1, 1) + self.axisY.setTitleText("Audio level") + self.chart.setAxisX(self.axisX, self.series) + self.chart.setAxisY(self.axisY, self.series) + self.chart.legend().hide() + self.chart.setTitle("Data from the microphone ({})".format(device.deviceName())) + + formatAudio = QAudioFormat() + formatAudio.setSampleRate(8000) + formatAudio.setChannelCount(1) + formatAudio.setSampleSize(8) + formatAudio.setCodec("audio/pcm") + formatAudio.setByteOrder(QAudioFormat.LittleEndian) + formatAudio.setSampleType(QAudioFormat.UnSignedInt) + + self.audioInput = QAudioInput(device, formatAudio, self) + self.ioDevice = self.audioInput.start() + self.ioDevice.readyRead.connect(self._readyRead) + + self.chartView = QtCharts.QChartView(self.chart) + self.setCentralWidget(self.chartView) + + self.buffer = [QPointF(x, 0) for x in range(sampleCount)] + self.series.append(self.buffer) + + def closeEvent(self, event): + if self.audioInput is not None: + self.audioInput.stop() + event.accept() + + def _readyRead(self): + data = self.ioDevice.readAll() + availableSamples = data.size() // resolution + start = 0 + if (availableSamples < sampleCount): + start = sampleCount - availableSamples + for s in range(start): + self.buffer[s].setY(self.buffer[s + availableSamples].y()) + + dataIndex = 0 + for s in range(start, sampleCount): + value = (ord(data[dataIndex]) - 128) / 128 + self.buffer[s].setY(value) + dataIndex = dataIndex + resolution + self.series.replace(self.buffer) + +if __name__ == '__main__': + app = QApplication(sys.argv) + + inputDevice = QAudioDeviceInfo.defaultInputDevice() + if (inputDevice.isNull()): + QMessageBox.warning(None, "audio", "There is no audio input device available.") + sys.exit(-1) + + mainWin = MainWindow(inputDevice) + mainWin.setWindowTitle("audio") + availableGeometry = app.desktop().availableGeometry(mainWin) + size = availableGeometry.height() * 3 / 4 + mainWin.resize(size, size) + mainWin.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/charts/callout.py b/venv/Lib/site-packages/PySide2/examples/charts/callout.py new file mode 100644 index 0000000..54e8eaf --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/charts/callout.py @@ -0,0 +1,257 @@ + +############################################################################# +## +## Copyright (C) 2018 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the Callout example from Qt v5.x""" + +import sys +from PySide2.QtWidgets import (QApplication, QGraphicsScene, + QGraphicsView, QGraphicsSimpleTextItem, QGraphicsItem) +from PySide2.QtCore import Qt, QPointF, QRectF, QRect +from PySide2.QtCharts import QtCharts +from PySide2.QtGui import QPainter, QFont, QFontMetrics, QPainterPath, QColor + + +class Callout(QGraphicsItem): + + def __init__(self, chart): + QGraphicsItem.__init__(self, chart) + self._chart = chart + self._text = "" + self._textRect = QRectF() + self._anchor = QPointF() + self._font = QFont() + self._rect = QRectF() + + def boundingRect(self): + anchor = self.mapFromParent(self._chart.mapToPosition(self._anchor)) + rect = QRectF() + rect.setLeft(min(self._rect.left(), anchor.x())) + rect.setRight(max(self._rect.right(), anchor.x())) + rect.setTop(min(self._rect.top(), anchor.y())) + rect.setBottom(max(self._rect.bottom(), anchor.y())) + + return rect + + def paint(self, painter, option, widget): + path = QPainterPath() + path.addRoundedRect(self._rect, 5, 5) + anchor = self.mapFromParent(self._chart.mapToPosition(self._anchor)) + if not self._rect.contains(anchor) and not self._anchor.isNull(): + point1 = QPointF() + point2 = QPointF() + + # establish the position of the anchor point in relation to _rect + above = anchor.y() <= self._rect.top() + aboveCenter = (anchor.y() > self._rect.top() and + anchor.y() <= self._rect.center().y()) + belowCenter = (anchor.y() > self._rect.center().y() and + anchor.y() <= self._rect.bottom()) + below = anchor.y() > self._rect.bottom() + + onLeft = anchor.x() <= self._rect.left() + leftOfCenter = (anchor.x() > self._rect.left() and + anchor.x() <= self._rect.center().x()) + rightOfCenter = (anchor.x() > self._rect.center().x() and + anchor.x() <= self._rect.right()) + onRight = anchor.x() > self._rect.right() + + # get the nearest _rect corner. + x = (onRight + rightOfCenter) * self._rect.width() + y = (below + belowCenter) * self._rect.height() + cornerCase = ((above and onLeft) or (above and onRight) or + (below and onLeft) or (below and onRight)) + vertical = abs(anchor.x() - x) > abs(anchor.y() - y) + + x1 = (x + leftOfCenter * 10 - rightOfCenter * 20 + cornerCase * + int(not vertical) * (onLeft * 10 - onRight * 20)) + y1 = (y + aboveCenter * 10 - belowCenter * 20 + cornerCase * + vertical * (above * 10 - below * 20)) + point1.setX(x1) + point1.setY(y1) + + x2 = (x + leftOfCenter * 20 - rightOfCenter * 10 + cornerCase * + int(not vertical) * (onLeft * 20 - onRight * 10)) + y2 = (y + aboveCenter * 20 - belowCenter * 10 + cornerCase * + vertical * (above * 20 - below * 10)) + point2.setX(x2) + point2.setY(y2) + + path.moveTo(point1) + path.lineTo(anchor) + path.lineTo(point2) + path = path.simplified() + + painter.setBrush(QColor(255, 255, 255)) + painter.drawPath(path) + painter.drawText(self._textRect, self._text) + + def mousePressEvent(self, event): + event.setAccepted(True) + + def mouseMoveEvent(self, event): + if event.buttons() & Qt.LeftButton: + self.setPos(mapToParent( + event.pos() - event.buttonDownPos(Qt.LeftButton))) + event.setAccepted(True) + else: + event.setAccepted(False) + + def setText(self, text): + self._text = text + metrics = QFontMetrics(self._font) + self._textRect = QRectF(metrics.boundingRect( + QRect(0.0, 0.0, 150.0, 150.0),Qt.AlignLeft, self._text)) + self._textRect.translate(5, 5) + self.prepareGeometryChange() + self._rect = self._textRect.adjusted(-5, -5, 5, 5) + + def setAnchor(self, point): + self._anchor = QPointF(point) + + def updateGeometry(self): + self.prepareGeometryChange() + self.setPos(self._chart.mapToPosition( + self._anchor) + QPointF(10, -50)) + + +class View(QGraphicsView): + def __init__(self, parent = None): + super(View, self).__init__(parent) + self.setScene(QGraphicsScene(self)) + + self.setDragMode(QGraphicsView.NoDrag) + self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) + self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) + + # Chart + self._chart = QtCharts.QChart() + self._chart.setMinimumSize(640, 480) + self._chart.setTitle("Hover the line to show callout. Click the line " + "to make it stay") + self._chart.legend().hide() + self.series = QtCharts.QLineSeries() + self.series.append(1, 3) + self.series.append(4, 5) + self.series.append(5, 4.5) + self.series.append(7, 1) + self.series.append(11, 2) + self._chart.addSeries(self.series) + + self.series2 = QtCharts.QSplineSeries() + self.series2.append(1.6, 1.4) + self.series2.append(2.4, 3.5) + self.series2.append(3.7, 2.5) + self.series2.append(7, 4) + self.series2.append(10, 2) + self._chart.addSeries(self.series2) + + self._chart.createDefaultAxes() + self._chart.setAcceptHoverEvents(True) + + self.setRenderHint(QPainter.Antialiasing) + self.scene().addItem(self._chart) + + self._coordX = QGraphicsSimpleTextItem(self._chart) + self._coordX.setPos( + self._chart.size().width()/2 - 50, self._chart.size().height()) + self._coordX.setText("X: ") + self._coordY = QGraphicsSimpleTextItem(self._chart) + self._coordY.setPos( + self._chart.size().width()/2 + 50, self._chart.size().height()) + self._coordY.setText("Y: ") + + self._callouts = [] + self._tooltip = Callout(self._chart) + + self.series.clicked.connect(self.keepCallout) + self.series.hovered.connect(self.tooltip) + + self.series2.clicked.connect(self.keepCallout) + self.series2.hovered.connect(self.tooltip) + + self.setMouseTracking(True) + + def resizeEvent(self, event): + if self.scene(): + self.scene().setSceneRect(QRectF(QPointF(0, 0), event.size())) + self._chart.resize(event.size()) + self._coordX.setPos( + self._chart.size().width()/2 - 50, + self._chart.size().height() - 20) + self._coordY.setPos( + self._chart.size().width()/2 + 50, + self._chart.size().height() - 20) + for callout in self._callouts: + callout.updateGeometry() + QGraphicsView.resizeEvent(self, event) + + + def mouseMoveEvent(self, event): + self._coordX.setText("X: {0:.2f}" + .format(self._chart.mapToValue(event.pos()).x())) + self._coordY.setText("Y: {0:.2f}" + .format(self._chart.mapToValue(event.pos()).y())) + QGraphicsView.mouseMoveEvent(self, event) + + def keepCallout(self): + self._callouts.append(self._tooltip) + self._tooltip = Callout(self._chart) + + def tooltip(self, point, state): + if self._tooltip == 0: + self._tooltip = Callout(self._chart) + + if state: + self._tooltip.setText("X: {0:.2f} \nY: {1:.2f} " + .format(point.x(),point.y())) + self._tooltip.setAnchor(point) + self._tooltip.setZValue(11) + self._tooltip.updateGeometry() + self._tooltip.show() + else: + self._tooltip.hide() + + +if __name__ == "__main__": + app = QApplication(sys.argv) + v = View() + v.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/charts/charts.pyproject b/venv/Lib/site-packages/PySide2/examples/charts/charts.pyproject new file mode 100644 index 0000000..15a48a3 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/charts/charts.pyproject @@ -0,0 +1,5 @@ +{ + "files": ["percentbarchart.py", "donutbreakdown.py", "legend.py", "nesteddonuts.py", + "modeldata.py", "lineandbar.py", "memoryusage.py", "callout.py", "audio.py", + "linechart.py", "logvalueaxis.py", "piechart.py", "temperaturerecords.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/charts/chartthemes/README.md b/venv/Lib/site-packages/PySide2/examples/charts/chartthemes/README.md new file mode 100644 index 0000000..e11fa93 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/charts/chartthemes/README.md @@ -0,0 +1,9 @@ +# Chart themes + +To generated the file `ui_themewidget.py`, the following +command need to be executed: + +`pyside2-uic themewidget.ui > ui_themewidget.py` + +Also, if you modify the UI file, then you would need +to run the previous command again. diff --git a/venv/Lib/site-packages/PySide2/examples/charts/chartthemes/__pycache__/main.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/charts/chartthemes/__pycache__/main.cpython-310.pyc new file mode 100644 index 0000000..d5f16de Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/charts/chartthemes/__pycache__/main.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/charts/chartthemes/__pycache__/ui_themewidget.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/charts/chartthemes/__pycache__/ui_themewidget.cpython-310.pyc new file mode 100644 index 0000000..9dbedf4 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/charts/chartthemes/__pycache__/ui_themewidget.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/charts/chartthemes/chartthemes.pyproject b/venv/Lib/site-packages/PySide2/examples/charts/chartthemes/chartthemes.pyproject new file mode 100644 index 0000000..4a0b387 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/charts/chartthemes/chartthemes.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["main.py", "README.md", "themewidget.ui"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/charts/chartthemes/main.py b/venv/Lib/site-packages/PySide2/examples/charts/chartthemes/main.py new file mode 100644 index 0000000..e18e92c --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/charts/chartthemes/main.py @@ -0,0 +1,396 @@ +############################################################################# +## +## Copyright (C) 2018 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the Chart Themes example from Qt v5.x""" + +import sys +from PySide2.QtCore import QPointF, Qt +from PySide2.QtGui import QColor, QPainter, QPalette +from PySide2.QtWidgets import (QApplication, QMainWindow, QSizePolicy, + QWidget) +from PySide2.QtCharts import QtCharts + +from ui_themewidget import Ui_ThemeWidgetForm as ui + +from random import random, uniform + +class ThemeWidget(QWidget): + def __init__(self, parent): + QWidget.__init__(self, parent) + self.charts = [] + + self.ui = ui() + self.list_count = 3 + self.value_max = 10 + self.value_count = 7 + self.data_table = self.generate_random_data(self.list_count, + self.value_max, self.value_count) + + self.ui.setupUi(self) + self.populate_themebox() + self.populate_animationbox() + self.populate_legendbox() + + # Area Chart + chart_view = QtCharts.QChartView(self.create_areachart()) + self.ui.gridLayout.addWidget(chart_view, 1, 0) + self.charts.append(chart_view) + + # Pie Chart + chart_view = QtCharts.QChartView(self.createPieChart()) + chart_view.setSizePolicy(QSizePolicy.Ignored, + QSizePolicy.Ignored) + self.ui.gridLayout.addWidget(chart_view, 1, 1) + self.charts.append(chart_view) + + # Line Chart + chart_view = QtCharts.QChartView(self.createLineChart()) + self.ui.gridLayout.addWidget(chart_view, 1, 2) + self.charts.append(chart_view) + + # Bar Chart + chart_view = QtCharts.QChartView(self.createBarChart()) + self.ui.gridLayout.addWidget(chart_view, 2, 0) + self.charts.append(chart_view) + + # Spline Chart + chart_view = QtCharts.QChartView(self.createSplineChart()) + self.ui.gridLayout.addWidget(chart_view, 2, 1) + self.charts.append(chart_view) + + # Scatter Chart + chart_view = QtCharts.QChartView(self.create_scatterchart()) + self.ui.gridLayout.addWidget(chart_view, 2, 2) + self.charts.append(chart_view) + + # Set defaults + self.ui.antialiasCheckBox.setChecked(True) + + # Set the colors from the light theme as default ones + pal = qApp.palette() + pal.setColor(QPalette.Window, QColor(0xf0f0f0)) + pal.setColor(QPalette.WindowText, QColor(0x404044)) + qApp.setPalette(pal) + + self.updateUI() + + + def generate_random_data(self, list_count, value_max, value_count): + data_table = [] + for i in range(list_count): + data_list = [] + y_value = 0 + for j in range(value_count): + constant = value_max / float(value_count) + y_value += uniform(0, constant) + x_value = (j + random()) * constant + value = QPointF(x_value, y_value) + label = "Slice {}: {}".format(i, j) + data_list.append((value, label)) + data_table.append(data_list) + + return data_table + + def populate_themebox(self): + theme = self.ui.themeComboBox + + theme.addItem("Light", QtCharts.QChart.ChartThemeLight) + theme.addItem("Blue Cerulean", QtCharts.QChart.ChartThemeBlueCerulean) + theme.addItem("Dark", QtCharts.QChart.ChartThemeDark) + theme.addItem("Brown Sand", QtCharts.QChart.ChartThemeBrownSand) + theme.addItem("Blue NCS", QtCharts.QChart.ChartThemeBlueNcs) + theme.addItem("High Contrast", QtCharts.QChart.ChartThemeHighContrast) + theme.addItem("Blue Icy", QtCharts.QChart.ChartThemeBlueIcy) + theme.addItem("Qt", QtCharts.QChart.ChartThemeQt) + + def populate_animationbox(self): + animated = self.ui.animatedComboBox + + animated.addItem("No Animations", QtCharts.QChart.NoAnimation) + animated.addItem("GridAxis Animations", QtCharts.QChart.GridAxisAnimations) + animated.addItem("Series Animations", QtCharts.QChart.SeriesAnimations) + animated.addItem("All Animations", QtCharts.QChart.AllAnimations) + + def populate_legendbox(self): + legend = self.ui.legendComboBox + + legend.addItem("No Legend ", 0) + legend.addItem("Legend Top", Qt.AlignTop) + legend.addItem("Legend Bottom", Qt.AlignBottom) + legend.addItem("Legend Left", Qt.AlignLeft) + legend.addItem("Legend Right", Qt.AlignRight) + + def create_areachart(self): + chart = QtCharts.QChart() + chart.setTitle("Area Chart") + + # The lower series initialized to zero values + lower_series = None + name = "Series " + for i in range(len(self.data_table)): + upper_series = QtCharts.QLineSeries(chart) + for j in range(len(self.data_table[i])): + data = self.data_table[i][j] + if lower_series: + points = lower_series.pointsVector() + y_value = points[i].y() + data[0].y() + upper_series.append(QPointF(j, y_value)) + else: + upper_series.append(QPointF(j, data[0].y())) + area = QtCharts.QAreaSeries(upper_series, lower_series) + area.setName("{}{}".format(name, i)) + chart.addSeries(area) + lower_series = upper_series + + chart.createDefaultAxes() + chart.axisX().setRange(0, self.value_count - 1) + chart.axisY().setRange(0, self.value_max) + # Add space to label to add space between labels and axis + chart.axisY().setLabelFormat("%.1f ") + + return chart + + def createBarChart(self): + chart = QtCharts.QChart() + chart.setTitle("Bar chart") + + series = QtCharts.QStackedBarSeries(chart) + for i in range(len(self.data_table)): + barset = QtCharts.QBarSet("Bar set {}".format(i)) + for data in self.data_table[i]: + barset.append(data[0].y()) + series.append(barset) + + chart.addSeries(series) + + chart.createDefaultAxes() + chart.axisY().setRange(0, self.value_max * 2) + # Add space to label to add space between labels and axis + chart.axisY().setLabelFormat("%.1f ") + + return chart + + def createLineChart(self): + chart = QtCharts.QChart() + chart.setTitle("Line chart") + + name = "Series " + for i, lst in enumerate(self.data_table): + series = QtCharts.QLineSeries(chart) + for data in lst: + series.append(data[0]) + series.setName("{}{}".format(name, i)) + chart.addSeries(series) + + chart.createDefaultAxes() + chart.axisX().setRange(0, self.value_max) + chart.axisY().setRange(0, self.value_count) + # Add space to label to add space between labels and axis + chart.axisY().setLabelFormat("%.1f ") + + return chart + + def createPieChart(self): + chart = QtCharts.QChart() + chart.setTitle("Pie chart") + + series = QtCharts.QPieSeries(chart) + for data in self.data_table[0]: + slc = series.append(data[1], data[0].y()) + if data == self.data_table[0][0]: + # Show the first slice exploded with label + slc.setLabelVisible() + slc.setExploded() + slc.setExplodeDistanceFactor(0.5) + + series.setPieSize(0.4) + chart.addSeries(series) + + return chart + + def createSplineChart(self): + chart = QtCharts.QChart() + chart.setTitle("Spline chart") + name = "Series " + for i, lst in enumerate(self.data_table): + series = QtCharts.QSplineSeries(chart) + for data in lst: + series.append(data[0]) + series.setName("{}{}".format(name, i)) + chart.addSeries(series) + + chart.createDefaultAxes() + chart.axisX().setRange(0, self.value_max) + chart.axisY().setRange(0, self.value_count) + # Add space to label to add space between labels and axis + chart.axisY().setLabelFormat("%.1f ") + + return chart + + def create_scatterchart(self): + chart = QtCharts.QChart() + chart.setTitle("Scatter chart") + name = "Series " + for i, lst in enumerate(self.data_table): + series = QtCharts.QScatterSeries(chart) + for data in lst: + series.append(data[0]) + series.setName("{}{}".format(name, i)) + chart.addSeries(series) + + chart.createDefaultAxes() + chart.axisX().setRange(0, self.value_max) + chart.axisY().setRange(0, self.value_count) + # Add space to label to add space between labels and axis + chart.axisY().setLabelFormat("%.1f ") + + return chart + + def updateUI(self): + def set_colors(window_color, text_color): + pal = self.window().palette() + pal.setColor(QPalette.Window, window_color) + pal.setColor(QPalette.WindowText, text_color) + self.window().setPalette(pal) + + idx = self.ui.themeComboBox.currentIndex() + theme = self.ui.themeComboBox.itemData(idx) + + if len(self.charts): + chart_theme = self.charts[0].chart().theme() + if chart_theme != theme: + for chart_view in self.charts: + if theme == 0: + theme_name = QtCharts.QChart.ChartThemeLight + elif theme == 1: + theme_name = QtCharts.QChart.ChartThemeBlueCerulean + elif theme == 2: + theme_name = QtCharts.QChart.ChartThemeDark + elif theme == 3: + theme_name = QtCharts.QChart.ChartThemeBrownSand + elif theme == 4: + theme_name = QtCharts.QChart.ChartThemeBlueNcs + elif theme == 5: + theme_name = QtCharts.QChart.ChartThemeHighContrast + elif theme == 6: + theme_name = QtCharts.QChart.ChartThemeBlueIcy + elif theme == 7: + theme_name = QtCharts.QChart.ChartThemeQt + else: + theme_name = QtCharts.QChart.ChartThemeLight + + chart_view.chart().setTheme(theme_name) + + # Set palette colors based on selected theme + if theme == QtCharts.QChart.ChartThemeLight: + set_colors(QColor(0xf0f0f0), QColor(0x404044)) + elif theme == QtCharts.QChart.ChartThemeDark: + set_colors(QColor(0x121218), QColor(0xd6d6d6)) + elif theme == QtCharts.QChart.ChartThemeBlueCerulean: + set_colors(QColor(0x40434a), QColor(0xd6d6d6)) + elif theme == QtCharts.QChart.ChartThemeBrownSand: + set_colors(QColor(0x9e8965), QColor(0x404044)) + elif theme == QtCharts.QChart.ChartThemeBlueNcs: + set_colors(QColor(0x018bba), QColor(0x404044)) + elif theme == QtCharts.QChart.ChartThemeHighContrast: + set_colors(QColor(0xffab03), QColor(0x181818)) + elif theme == QtCharts.QChart.ChartThemeBlueIcy: + set_colors(QColor(0xcee7f0), QColor(0x404044)) + else: + set_colors(QColor(0xf0f0f0), QColor(0x404044)) + + + # Update antialiasing + checked = self.ui.antialiasCheckBox.isChecked() + for chart in self.charts: + chart.setRenderHint(QPainter.Antialiasing, checked) + + # Update animation options + idx = self.ui.animatedComboBox.currentIndex() + options = self.ui.animatedComboBox.itemData(idx) + + if len(self.charts): + chart = self.charts[0].chart() + animation_options = chart.animationOptions() + if animation_options != options: + for chart_view in self.charts: + options_name = QtCharts.QChart.NoAnimation + if options == 0: + options_name = QtCharts.QChart.NoAnimation + elif options == 1: + options_name = QtCharts.QChart.GridAxisAnimations + elif options == 2: + options_name = QtCharts.QChart.SeriesAnimations + elif options == 3: + options_name = QtCharts.QChart.AllAnimations + chart_view.chart().setAnimationOptions(options_name) + + # Update legend alignment + idx = self.ui.legendComboBox.currentIndex() + alignment = self.ui.legendComboBox.itemData(idx) + + if not alignment: + for chart_view in self.charts: + chart_view.chart().legend().hide() + else: + for chart_view in self.charts: + alignment_name = Qt.AlignTop + if alignment == 32: + alignment_name = Qt.AlignTop + elif alignment == 64: + alignment_name = Qt.AlignBottom + elif alignment == 1: + alignment_name = Qt.AlignLeft + elif alignment == 2: + alignment_name = Qt.AlignRight + chart_view.chart().legend().setAlignment(alignment_name) + chart_view.chart().legend().show() + + +if __name__ == "__main__": + app = QApplication(sys.argv) + window = QMainWindow() + widget = ThemeWidget(None) + window.setCentralWidget(widget) + available_geometry = app.desktop().availableGeometry(window) + size = available_geometry.height() * 0.75 + window.setFixedSize(size, size * 0.8) + window.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/charts/chartthemes/themewidget.ui b/venv/Lib/site-packages/PySide2/examples/charts/chartthemes/themewidget.ui new file mode 100644 index 0000000..9ea2bb7 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/charts/chartthemes/themewidget.ui @@ -0,0 +1,103 @@ + + + ThemeWidgetForm + + + + 0 + 0 + 900 + 600 + + + + + + + + + Theme: + + + + + + + + + + Animation: + + + + + + + + + + Legend: + + + + + + + + + + Anti-aliasing + + + false + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + themeComboBox + currentIndexChanged(int) + ThemeWidgetForm + updateUI() + + + antialiasCheckBox + toggled(bool) + ThemeWidgetForm + updateUI() + + + legendComboBox + currentIndexChanged(int) + ThemeWidgetForm + updateUI() + + + animatedComboBox + currentIndexChanged(int) + ThemeWidgetForm + updateUI() + + + + updateUI() + + diff --git a/venv/Lib/site-packages/PySide2/examples/charts/chartthemes/ui_themewidget.py b/venv/Lib/site-packages/PySide2/examples/charts/chartthemes/ui_themewidget.py new file mode 100644 index 0000000..bf67039 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/charts/chartthemes/ui_themewidget.py @@ -0,0 +1,84 @@ +# -*- coding: utf-8 -*- + +################################################################################ +## Form generated from reading UI file 'themewidget.ui' +## +## Created by: Qt User Interface Compiler version 5.14.0 +## +## WARNING! All changes made in this file will be lost when recompiling UI file! +################################################################################ + +from PySide2.QtCore import (QCoreApplication, QMetaObject, QObject, QPoint, + QRect, QSize, QUrl, Qt) +from PySide2.QtGui import (QColor, QFont, QIcon, QPixmap) +from PySide2.QtWidgets import * + +class Ui_ThemeWidgetForm(object): + def setupUi(self, ThemeWidgetForm): + if ThemeWidgetForm.objectName(): + ThemeWidgetForm.setObjectName(u"ThemeWidgetForm") + ThemeWidgetForm.resize(900, 600) + self.gridLayout = QGridLayout(ThemeWidgetForm) + self.gridLayout.setObjectName(u"gridLayout") + self.horizontalLayout = QHBoxLayout() + self.horizontalLayout.setObjectName(u"horizontalLayout") + self.themeLabel = QLabel(ThemeWidgetForm) + self.themeLabel.setObjectName(u"themeLabel") + + self.horizontalLayout.addWidget(self.themeLabel) + + self.themeComboBox = QComboBox(ThemeWidgetForm) + self.themeComboBox.setObjectName(u"themeComboBox") + + self.horizontalLayout.addWidget(self.themeComboBox) + + self.animatedLabel = QLabel(ThemeWidgetForm) + self.animatedLabel.setObjectName(u"animatedLabel") + + self.horizontalLayout.addWidget(self.animatedLabel) + + self.animatedComboBox = QComboBox(ThemeWidgetForm) + self.animatedComboBox.setObjectName(u"animatedComboBox") + + self.horizontalLayout.addWidget(self.animatedComboBox) + + self.legendLabel = QLabel(ThemeWidgetForm) + self.legendLabel.setObjectName(u"legendLabel") + + self.horizontalLayout.addWidget(self.legendLabel) + + self.legendComboBox = QComboBox(ThemeWidgetForm) + self.legendComboBox.setObjectName(u"legendComboBox") + + self.horizontalLayout.addWidget(self.legendComboBox) + + self.antialiasCheckBox = QCheckBox(ThemeWidgetForm) + self.antialiasCheckBox.setObjectName(u"antialiasCheckBox") + self.antialiasCheckBox.setChecked(False) + + self.horizontalLayout.addWidget(self.antialiasCheckBox) + + self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) + + self.horizontalLayout.addItem(self.horizontalSpacer) + + + self.gridLayout.addLayout(self.horizontalLayout, 0, 0, 1, 3) + + + self.retranslateUi(ThemeWidgetForm) + self.themeComboBox.currentIndexChanged.connect(ThemeWidgetForm.updateUI) + self.antialiasCheckBox.toggled.connect(ThemeWidgetForm.updateUI) + self.legendComboBox.currentIndexChanged.connect(ThemeWidgetForm.updateUI) + self.animatedComboBox.currentIndexChanged.connect(ThemeWidgetForm.updateUI) + + QMetaObject.connectSlotsByName(ThemeWidgetForm) + # setupUi + + def retranslateUi(self, ThemeWidgetForm): + self.themeLabel.setText(QCoreApplication.translate("ThemeWidgetForm", u"Theme:", None)) + self.animatedLabel.setText(QCoreApplication.translate("ThemeWidgetForm", u"Animation:", None)) + self.legendLabel.setText(QCoreApplication.translate("ThemeWidgetForm", u"Legend:", None)) + self.antialiasCheckBox.setText(QCoreApplication.translate("ThemeWidgetForm", u"Anti-aliasing", None)) + # retranslateUi + diff --git a/venv/Lib/site-packages/PySide2/examples/charts/donutbreakdown.py b/venv/Lib/site-packages/PySide2/examples/charts/donutbreakdown.py new file mode 100644 index 0000000..712bea5 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/charts/donutbreakdown.py @@ -0,0 +1,181 @@ +############################################################################# +## +## Copyright (C) 2018 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the Donut Chart Breakdown example from Qt v5.x""" + + +import sys +from PySide2.QtCore import Qt +from PySide2.QtGui import QColor, QFont, QPainter +from PySide2.QtWidgets import QApplication, QMainWindow +from PySide2.QtCharts import QtCharts + +class MainSlice(QtCharts.QPieSlice): + def __init__(self, breakdown_series, parent=None): + super(MainSlice, self).__init__(parent) + + self.breakdown_series = breakdown_series + self.name = None + + self.percentageChanged.connect(self.update_label) + + def get_breakdown_series(self): + return self.breakdown_series + + def setName(self, name): + self.name = name + + def name(self): + return self.name + + def update_label(self): + self.setLabel("{} {:.2f}%".format(self.name, + self.percentage() * 100)) + + +class DonutBreakdownChart(QtCharts.QChart): + def __init__(self, parent=None): + super(DonutBreakdownChart, self).__init__(QtCharts.QChart.ChartTypeCartesian, parent, Qt.WindowFlags()) + self.main_series = QtCharts.QPieSeries() + self.main_series.setPieSize(0.7) + self.addSeries(self.main_series) + + def add_breakdown_series(self, breakdown_series, color): + font = QFont("Arial", 8) + + # add breakdown series as a slice to center pie + main_slice = MainSlice(breakdown_series) + main_slice.setName(breakdown_series.name()) + main_slice.setValue(breakdown_series.sum()) + self.main_series.append(main_slice) + + # customize the slice + main_slice.setBrush(color) + main_slice.setLabelVisible() + main_slice.setLabelColor(Qt.white) + main_slice.setLabelPosition(QtCharts.QPieSlice.LabelInsideHorizontal) + main_slice.setLabelFont(font) + + # position and customize the breakdown series + breakdown_series.setPieSize(0.8) + breakdown_series.setHoleSize(0.7) + breakdown_series.setLabelsVisible() + + for pie_slice in breakdown_series.slices(): + color = QColor(color).lighter(115) + pie_slice.setBrush(color) + pie_slice.setLabelFont(font) + + # add the series to the chart + self.addSeries(breakdown_series) + + # recalculate breakdown donut segments + self.recalculate_angles() + + # update customize legend markers + self.update_legend_markers() + + def recalculate_angles(self): + angle = 0 + slices = self.main_series.slices() + for pie_slice in slices: + breakdown_series = pie_slice.get_breakdown_series() + breakdown_series.setPieStartAngle(angle) + angle += pie_slice.percentage() * 360.0 # full pie is 360.0 + breakdown_series.setPieEndAngle(angle) + + def update_legend_markers(self): + # go through all markers + for series in self.series(): + markers = self.legend().markers(series) + for marker in markers: + if series == self.main_series: + # hide markers from main series + marker.setVisible(False) + else: + # modify markers from breakdown series + marker.setLabel("{} {:.2f}%".format( + marker.slice().label(), + marker.slice().percentage() * 100, 0)) + marker.setFont(QFont("Arial", 8)) + +if __name__ == "__main__": + app = QApplication(sys.argv) + # Graph is based on data of: + # 'Total consumption of energy increased by 10 per cent in 2010' + # Statistics Finland, 13 December 2011 + # http://www.stat.fi/til/ekul/2010/ekul_2010_2011-12-13_tie_001_en.html + series1 = QtCharts.QPieSeries() + series1.setName("Fossil fuels") + series1.append("Oil", 353295) + series1.append("Coal", 188500) + series1.append("Natural gas", 148680) + series1.append("Peat", 94545) + + series2 = QtCharts.QPieSeries() + series2.setName("Renewables") + series2.append("Wood fuels", 319663) + series2.append("Hydro power", 45875) + series2.append("Wind power", 1060) + + series3 = QtCharts.QPieSeries() + series3.setName("Others") + series3.append("Nuclear energy", 238789) + series3.append("Import energy", 37802) + series3.append("Other", 32441) + + donut_breakdown = DonutBreakdownChart() + donut_breakdown.setAnimationOptions(QtCharts.QChart.AllAnimations) + donut_breakdown.setTitle("Total consumption of energy in Finland 2010") + donut_breakdown.legend().setAlignment(Qt.AlignRight) + donut_breakdown.add_breakdown_series(series1, Qt.red) + donut_breakdown.add_breakdown_series(series2, Qt.darkGreen) + donut_breakdown.add_breakdown_series(series3, Qt.darkBlue) + + window = QMainWindow() + chart_view = QtCharts.QChartView(donut_breakdown) + chart_view.setRenderHint(QPainter.Antialiasing) + window.setCentralWidget(chart_view) + available_geometry = app.desktop().availableGeometry(window) + size = available_geometry.height() * 0.75 + window.resize(size, size * 0.8) + window.show() + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/charts/legend.py b/venv/Lib/site-packages/PySide2/examples/charts/legend.py new file mode 100644 index 0000000..47099e7 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/charts/legend.py @@ -0,0 +1,252 @@ +############################################################################# +## +## Copyright (C) 2018 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the Legend example from Qt v5.x""" + +import sys +from PySide2.QtCore import Qt, QRectF +from PySide2.QtGui import QBrush, QColor, QPainter, QPen +from PySide2.QtWidgets import (QApplication, QDoubleSpinBox, + QFormLayout, QGridLayout, QGroupBox, QPushButton, QWidget) +from PySide2.QtCharts import QtCharts + +class MainWidget(QWidget): + def __init__(self, parent=None): + super(MainWidget, self).__init__(parent) + self.chart = QtCharts.QChart() + self.series = QtCharts.QBarSeries() + + self.main_layout = QGridLayout() + self.button_layout = QGridLayout() + self.font_layout = QFormLayout() + + self.font_size = QDoubleSpinBox() + + self.legend_posx = QDoubleSpinBox() + self.legend_posy = QDoubleSpinBox() + self.legend_width = QDoubleSpinBox() + self.legend_height = QDoubleSpinBox() + + self.detach_legend_button = QPushButton("Toggle attached") + self.detach_legend_button.clicked.connect(self.toggle_attached) + self.button_layout.addWidget(self.detach_legend_button, 0, 0) + + self.add_set_button = QPushButton("add barset") + self.add_set_button.clicked.connect(self.add_barset) + self.button_layout.addWidget(self.add_set_button, 2, 0) + + self.remove_barset_button = QPushButton("remove barset") + self.remove_barset_button.clicked.connect(self.remove_barset) + self.button_layout.addWidget(self.remove_barset_button, 3, 0) + + self.align_button = QPushButton("Align (Bottom)") + self.align_button.clicked.connect(self.set_legend_alignment) + self.button_layout.addWidget(self.align_button, 4, 0) + + self.bold_button = QPushButton("Toggle bold") + self.bold_button.clicked.connect(self.toggle_bold) + self.button_layout.addWidget(self.bold_button, 8, 0) + + self.italic_button = QPushButton("Toggle italic") + self.italic_button.clicked.connect(self.toggle_italic) + self.button_layout.addWidget(self.italic_button, 9, 0) + + self.legend_posx.valueChanged.connect(self.update_legend_layout) + self.legend_posy.valueChanged.connect(self.update_legend_layout) + self.legend_width.valueChanged.connect(self.update_legend_layout) + self.legend_height.valueChanged.connect(self.update_legend_layout) + + legend_layout = QFormLayout() + legend_layout.addRow("HPos", self.legend_posx) + legend_layout.addRow("VPos", self.legend_posy) + legend_layout.addRow("Width", self.legend_width) + legend_layout.addRow("Height", self.legend_height) + + self.legend_settings = QGroupBox("Detached legend") + self.legend_settings.setLayout(legend_layout) + self.button_layout.addWidget(self.legend_settings) + self.legend_settings.setVisible(False) + + # Create chart view with the chart + self.chart_view = QtCharts.QChartView(self.chart, self) + + # Create spinbox to modify font size + self.font_size.setValue(self.chart.legend().font().pointSizeF()) + self.font_size.valueChanged.connect(self.font_size_changed) + + self.font_layout.addRow("Legend font size", self.font_size) + + # Create layout for grid and detached legend + self.main_layout.addLayout(self.button_layout, 0, 0) + self.main_layout.addLayout(self.font_layout, 1, 0) + self.main_layout.addWidget(self.chart_view, 0, 1, 3, 1) + self.setLayout(self.main_layout) + + self.create_series() + + def create_series(self): + self.add_barset() + self.add_barset() + self.add_barset() + self.add_barset() + + self.chart.addSeries(self.series) + self.chart.setTitle("Legend detach example") + self.chart.createDefaultAxes() + + self.chart.legend().setVisible(True) + self.chart.legend().setAlignment(Qt.AlignBottom) + + self.chart_view.setRenderHint(QPainter.Antialiasing) + + def show_legend_spinbox(self): + self.legend_settings.setVisible(True) + chart_viewrect = self.chart_view.rect() + + self.legend_posx.setMinimum(0) + self.legend_posx.setMaximum(chart_viewrect.width()) + self.legend_posx.setValue(150) + + self.legend_posy.setMinimum(0) + self.legend_posy.setMaximum(chart_viewrect.height()) + self.legend_posy.setValue(150) + + self.legend_width.setMinimum(0) + self.legend_width.setMaximum(chart_viewrect.width()) + self.legend_width.setValue(150) + + self.legend_height.setMinimum(0) + self.legend_height.setMaximum(chart_viewrect.height()) + self.legend_height.setValue(75) + + def hideLegendSpinbox(self): + self.legend_settings.setVisible(False) + + def toggle_attached(self): + legend = self.chart.legend() + if legend.isAttachedToChart(): + legend.detachFromChart() + legend.setBackgroundVisible(True) + legend.setBrush(QBrush(QColor(128, 128, 128, 128))) + legend.setPen(QPen(QColor(192, 192, 192, 192))) + + self.show_legend_spinbox() + self.update_legend_layout() + else: + legend.attachToChart() + legend.setBackgroundVisible(False) + self.hideLegendSpinbox() + self.update() + + def add_barset(self): + series_count = self.series.count() + bar_set = QtCharts.QBarSet("set {}".format(series_count)) + delta = series_count * 0.1 + bar_set.append([1 + delta, 2 + delta, 3 + delta, 4 + delta]) + self.series.append(bar_set) + + def remove_barset(self): + sets = self.series.barSets() + len_sets = len(sets) + if len_sets > 0: + self.series.remove(sets[len_sets - 1]) + + def set_legend_alignment(self): + button = self.sender() + legend = self.chart.legend() + alignment = legend.alignment() + + if alignment == Qt.AlignTop: + legend.setAlignment(Qt.AlignLeft) + if button: + button.setText("Align (Left)") + elif alignment == Qt.AlignLeft: + legend.setAlignment(Qt.AlignBottom) + if button: + button.setText("Align (Bottom)") + elif alignment == Qt.AlignBottom: + legend.setAlignment(Qt.AlignRight) + if button: + button.setText("Align (Right)") + else: + if button: + button.setText("Align (Top)") + legend.setAlignment(Qt.AlignTop) + + def toggle_bold(self): + legend = self.chart.legend() + font = legend.font() + font.setBold(not font.bold()) + legend.setFont(font) + + def toggle_italic(self): + legend = self.chart.legend() + font = legend.font() + font.setItalic(not font.italic()) + legend.setFont(font) + + def font_size_changed(self): + legend = self.chart.legend() + font = legend.font() + font_size = self.font_size.value() + if font_size < 1: + font_size = 1 + font.setPointSizeF(font_size) + legend.setFont(font) + + def update_legend_layout(self): + legend = self.chart.legend() + + rect = QRectF(self.legend_posx.value(), + self.legend_posy.value(), + self.legend_width.value(), + self.legend_height.value()) + legend.setGeometry(rect) + + legend.update() + +if __name__ == "__main__": + app = QApplication(sys.argv) + w = MainWidget() + available_geometry = app.desktop().availableGeometry(w) + size = available_geometry.height() * 0.75 + w.setFixedSize(size, size) + w.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/charts/lineandbar.py b/venv/Lib/site-packages/PySide2/examples/charts/lineandbar.py new file mode 100644 index 0000000..0a29aa7 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/charts/lineandbar.py @@ -0,0 +1,116 @@ + +############################################################################# +## +## Copyright (C) 2018 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the line/bar example from Qt v5.x""" + +import sys +from PySide2.QtCore import QPoint, Qt +from PySide2.QtGui import QPainter +from PySide2.QtWidgets import QMainWindow, QApplication +from PySide2.QtCharts import QtCharts + + +class TestChart(QMainWindow): + def __init__(self): + QMainWindow.__init__(self) + + self.set0 = QtCharts.QBarSet("Jane") + self.set1 = QtCharts.QBarSet("John") + self.set2 = QtCharts.QBarSet("Axel") + self.set3 = QtCharts.QBarSet("Mary") + self.set4 = QtCharts.QBarSet("Sam") + + self.set0.append([1, 2, 3, 4, 5, 6]) + self.set1.append([5, 0, 0, 4, 0, 7]) + self.set2.append([3, 5, 8, 13, 8, 5]) + self.set3.append([5, 6, 7, 3, 4, 5]) + self.set4.append([9, 7, 5, 3, 1, 2]) + + self.barSeries = QtCharts.QBarSeries() + self.barSeries.append(self.set0) + self.barSeries.append(self.set1) + self.barSeries.append(self.set2) + self.barSeries.append(self.set3) + self.barSeries.append(self.set4) + + self.lineSeries = QtCharts.QLineSeries() + self.lineSeries.setName("trend") + self.lineSeries.append(QPoint(0, 4)) + self.lineSeries.append(QPoint(1, 15)) + self.lineSeries.append(QPoint(2, 20)) + self.lineSeries.append(QPoint(3, 4)) + self.lineSeries.append(QPoint(4, 12)) + self.lineSeries.append(QPoint(5, 17)) + + self.chart = QtCharts.QChart() + self.chart.addSeries(self.barSeries) + self.chart.addSeries(self.lineSeries) + self.chart.setTitle("Line and barchart example") + + self.categories = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"] + self.axisX = QtCharts.QBarCategoryAxis() + self.axisX.append(self.categories) + self.chart.setAxisX(self.axisX, self.lineSeries) + self.chart.setAxisX(self.axisX, self.barSeries) + self.axisX.setRange("Jan", "Jun") + + self.axisY = QtCharts.QValueAxis() + self.chart.setAxisY(self.axisY, self.lineSeries) + self.chart.setAxisY(self.axisY, self.barSeries) + self.axisY.setRange(0, 20) + + self.chart.legend().setVisible(True) + self.chart.legend().setAlignment(Qt.AlignBottom) + + self.chartView = QtCharts.QChartView(self.chart) + self.chartView.setRenderHint(QPainter.Antialiasing) + + self.setCentralWidget(self.chartView) + + +if __name__ == "__main__": + app = QApplication(sys.argv) + + window = TestChart() + window.show() + window.resize(440, 300) + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/charts/linechart.py b/venv/Lib/site-packages/PySide2/examples/charts/linechart.py new file mode 100644 index 0000000..98d17b3 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/charts/linechart.py @@ -0,0 +1,84 @@ +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the linechart example from Qt v5.x""" + +import sys +from PySide2.QtCore import QPointF +from PySide2.QtGui import QPainter +from PySide2.QtWidgets import QMainWindow, QApplication +from PySide2.QtCharts import QtCharts + + +class TestChart(QMainWindow): + def __init__(self): + QMainWindow.__init__(self) + + self.series = QtCharts.QLineSeries() + self.series.append(0, 6) + self.series.append(2, 4) + self.series.append(3, 8) + self.series.append(7, 4) + self.series.append(10, 5) + self.series.append(QPointF(11, 1)) + self.series.append(QPointF(13, 3)) + self.series.append(QPointF(17, 6)) + self.series.append(QPointF(18, 3)) + self.series.append(QPointF(20, 2)) + + self.chart = QtCharts.QChart() + self.chart.legend().hide() + self.chart.addSeries(self.series) + self.chart.createDefaultAxes() + self.chart.setTitle("Simple line chart example") + + self.chartView = QtCharts.QChartView(self.chart) + self.chartView.setRenderHint(QPainter.Antialiasing) + + self.setCentralWidget(self.chartView) + + +if __name__ == "__main__": + app = QApplication(sys.argv) + + window = TestChart() + window.show() + window.resize(440, 300) + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/charts/logvalueaxis.py b/venv/Lib/site-packages/PySide2/examples/charts/logvalueaxis.py new file mode 100644 index 0000000..7fb5604 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/charts/logvalueaxis.py @@ -0,0 +1,94 @@ +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the Logarithmic Axis Example from Qt v5.x""" + + + +import sys +from PySide2.QtCore import Qt, QPointF +from PySide2.QtGui import QPainter +from PySide2.QtWidgets import QMainWindow, QApplication +from PySide2.QtCharts import QtCharts + + +class TestChart(QMainWindow): + def __init__(self): + QMainWindow.__init__(self) + + self.series = QtCharts.QLineSeries() + self.series.append([ + QPointF(1.0, 1.0), QPointF(2.0, 73.0), QPointF(3.0, 268.0), + QPointF(4.0, 17.0), QPointF(5.0, 4325.0), QPointF(6.0, 723.0)]) + + self.chart = QtCharts.QChart() + self.chart.addSeries(self.series) + self.chart.legend().hide() + self.chart.setTitle("Logarithmic axis example") + + self.axisX = QtCharts.QValueAxis() + self.axisX.setTitleText("Data point") + self.axisX.setLabelFormat("%i") + self.axisX.setTickCount(self.series.count()) + self.chart.addAxis(self.axisX, Qt.AlignBottom) + self.series.attachAxis(self.axisX) + + self.axisY = QtCharts.QLogValueAxis() + self.axisY.setTitleText("Values") + self.axisY.setLabelFormat("%g") + self.axisY.setBase(8.0) + self.axisY.setMinorTickCount(-1) + self.chart.addAxis(self.axisY, Qt.AlignLeft) + self.series.attachAxis(self.axisY) + + self.chartView = QtCharts.QChartView(self.chart) + self.chartView.setRenderHint(QPainter.Antialiasing) + + self.setCentralWidget(self.chartView) + + +if __name__ == "__main__": + app = QApplication(sys.argv) + + window = TestChart() + window.show() + window.resize(800, 600) + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/charts/memoryusage.py b/venv/Lib/site-packages/PySide2/examples/charts/memoryusage.py new file mode 100644 index 0000000..4954b9c --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/charts/memoryusage.py @@ -0,0 +1,125 @@ + +############################################################################# +## +## Copyright (C) 2017 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 Charts example: Simple memory usage viewer""" + +import os +import sys +from PySide2.QtCore import QProcess +from PySide2.QtWidgets import QApplication, QMainWindow +from PySide2.QtCharts import QtCharts + +def runProcess(command, arguments): + process = QProcess() + process.start(command, arguments) + process.waitForFinished() + std_output = process.readAllStandardOutput().data().decode('utf-8') + return std_output.split('\n') + +def getMemoryUsage(): + result = [] + if sys.platform == 'win32': + # Windows: Obtain memory usage in KB from 'tasklist' + for line in runProcess('tasklist', [])[3:]: + if len(line) >= 74: + command = line[0:23].strip() + if command.endswith('.exe'): + command = command[0:len(command) - 4] + memoryUsage = float(line[64:74].strip().replace(',', '').replace('.', '')) + legend = '' + if memoryUsage > 10240: + legend = '{} {}M'.format(command, round(memoryUsage / 1024)) + else: + legend = '{} {}K'.format(command, round(memoryUsage)) + result.append([legend, memoryUsage]) + else: + # Unix: Obtain memory usage percentage from 'ps' + psOptions = ['-e', 'v'] + memoryColumn = 8 + commandColumn = 9 + if sys.platform == 'darwin': + psOptions = ['-e', '-v'] + memoryColumn = 11 + commandColumn = 12 + for line in runProcess('ps', psOptions): + tokens = line.split(None) + if len(tokens) > commandColumn and "PID" not in tokens: # Percentage and command + command = tokens[commandColumn] + if not command.startswith('['): + command = os.path.basename(command) + memoryUsage = round(float(tokens[memoryColumn].replace(',', '.'))) + legend = '{} {}%'.format(command, memoryUsage) + result.append([legend, memoryUsage]) + + result.sort(key = lambda x: x[1], reverse=True) + return result + +class MainWindow(QMainWindow): + + def __init__(self): + super(MainWindow, self).__init__() + + self.setWindowTitle('Memory Usage') + + memoryUsage = getMemoryUsage() + if len(memoryUsage) > 5: + memoryUsage = memoryUsage[0:4] + + self.series = QtCharts.QPieSeries() + for item in memoryUsage: + self.series.append(item[0], item[1]) + + slice = self.series.slices()[0] + slice.setExploded() + slice.setLabelVisible() + self.chart = QtCharts.QChart() + self.chart.addSeries(self.series) + self.chartView = QtCharts.QChartView(self.chart) + self.setCentralWidget(self.chartView) + +if __name__ == '__main__': + app = QApplication(sys.argv) + mainWin = MainWindow() + availableGeometry = app.desktop().availableGeometry(mainWin) + size = availableGeometry.height() * 3 / 4 + mainWin.resize(size, size) + mainWin.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/charts/modeldata.py b/venv/Lib/site-packages/PySide2/examples/charts/modeldata.py new file mode 100644 index 0000000..aa53e74 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/charts/modeldata.py @@ -0,0 +1,182 @@ + +############################################################################# +## +## Copyright (C) 2018 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the Model Data example from Qt v5.x""" + +import sys +from random import randrange + +from PySide2.QtCore import QAbstractTableModel, QModelIndex, QRect, Qt +from PySide2.QtGui import QColor, QPainter +from PySide2.QtWidgets import (QApplication, QGridLayout, QHeaderView, + QTableView, QWidget) +from PySide2.QtCharts import QtCharts + +class CustomTableModel(QAbstractTableModel): + def __init__(self): + QAbstractTableModel.__init__(self) + self.input_data = [] + self.mapping = {} + self.column_count = 4 + self.row_count = 15 + + for i in range(self.row_count): + data_vec = [0]*self.column_count + for k in range(len(data_vec)): + if k % 2 == 0: + data_vec[k] = i * 50 + randrange(30) + else: + data_vec[k] = randrange(100) + self.input_data.append(data_vec) + + def rowCount(self, parent=QModelIndex()): + return len(self.input_data) + + def columnCount(self, parent=QModelIndex()): + return self.column_count + + def headerData(self, section, orientation, role): + if role != Qt.DisplayRole: + return None + + if orientation == Qt.Horizontal: + if section % 2 == 0: + return "x" + else: + return "y" + else: + return "{}".format(section + 1) + + def data(self, index, role=Qt.DisplayRole): + if role == Qt.DisplayRole: + return self.input_data[index.row()][index.column()] + elif role == Qt.EditRole: + return self.input_data[index.row()][index.column()] + elif role == Qt.BackgroundRole: + for color, rect in self.mapping.items(): + if rect.contains(index.column(), index.row()): + return QColor(color) + # cell not mapped return white color + return QColor(Qt.white) + return None + + def setData(self, index, value, role=Qt.EditRole): + if index.isValid() and role == Qt.EditRole: + self.input_data[index.row()][index.column()] = float(value) + self.dataChanged.emit(index, index) + return True + return False + + def flags(self, index): + return Qt.ItemIsEnabled | Qt.ItemIsEditable | Qt.ItemIsSelectable + + def add_mapping(self, color, area): + self.mapping[color] = area + + def clear_mapping(self): + self.mapping = {} + + + +class TableWidget(QWidget): + def __init__(self): + QWidget.__init__(self) + + self.model = CustomTableModel() + + self.table_view = QTableView() + self.table_view.setModel(self.model) + self.table_view.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) + self.table_view.verticalHeader().setSectionResizeMode(QHeaderView.Stretch) + + self.chart = QtCharts.QChart() + self.chart.setAnimationOptions(QtCharts.QChart.AllAnimations) + + self.series = QtCharts.QLineSeries() + self.series.setName("Line 1") + self.mapper = QtCharts.QVXYModelMapper(self) + self.mapper.setXColumn(0) + self.mapper.setYColumn(1) + self.mapper.setSeries(self.series) + self.mapper.setModel(self.model) + self.chart.addSeries(self.series) + + # for storing color hex from the series + seriesColorHex = "#000000" + + # get the color of the series and use it for showing the mapped area + seriesColorHex = "{}".format(self.series.pen().color().name()) + self.model.add_mapping(seriesColorHex, QRect(0, 0, 2, self.model.rowCount())) + + # series 2 + self.series = QtCharts.QLineSeries() + self.series.setName("Line 2") + + self.mapper = QtCharts.QVXYModelMapper(self) + self.mapper.setXColumn(2) + self.mapper.setYColumn(3) + self.mapper.setSeries(self.series) + self.mapper.setModel(self.model) + self.chart.addSeries(self.series) + + # get the color of the series and use it for showing the mapped area + seriesColorHex = "{}".format(self.series.pen().color().name()) + self.model.add_mapping(seriesColorHex, QRect(2, 0, 2, self.model.rowCount())) + + self.chart.createDefaultAxes() + self.chart_view = QtCharts.QChartView(self.chart) + self.chart_view.setRenderHint(QPainter.Antialiasing) + self.chart_view.setMinimumSize(640, 480) + + # create main layout + self.main_layout = QGridLayout() + self.main_layout.addWidget(self.table_view, 1, 0) + self.main_layout.addWidget(self.chart_view, 1, 1) + self.main_layout.setColumnStretch(1, 1) + self.main_layout.setColumnStretch(0, 0) + self.setLayout(self.main_layout) + + +if __name__ == "__main__": + app = QApplication(sys.argv) + w = TableWidget() + w.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/charts/nesteddonuts.py b/venv/Lib/site-packages/PySide2/examples/charts/nesteddonuts.py new file mode 100644 index 0000000..77bbabf --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/charts/nesteddonuts.py @@ -0,0 +1,136 @@ + +############################################################################# +## +## Copyright (C) 2018 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the Nested Donuts example from Qt v5.x""" + +import sys + +from PySide2.QtCore import Qt, QTimer +from PySide2.QtGui import QPainter +from PySide2.QtWidgets import QApplication, QGridLayout, QWidget +from PySide2.QtCharts import QtCharts + +from random import randrange +from functools import partial + +class Widget(QWidget): + def __init__(self): + QWidget.__init__(self) + self.setMinimumSize(800, 600) + self.donuts = [] + self.chart_view = QtCharts.QChartView() + self.chart_view.setRenderHint(QPainter.Antialiasing) + self.chart = self.chart_view.chart() + self.chart.legend().setVisible(False) + self.chart.setTitle("Nested donuts demo") + self.chart.setAnimationOptions(QtCharts.QChart.AllAnimations) + + self.min_size = 0.1 + self.max_size = 0.9 + self.donut_count = 5 + + self.setup_donuts() + + # create main layout + self.main_layout = QGridLayout(self) + self.main_layout.addWidget(self.chart_view, 1, 1) + self.setLayout(self.main_layout) + + self.update_timer = QTimer(self) + self.update_timer.timeout.connect(self.update_rotation) + self.update_timer.start(1250) + + def setup_donuts(self): + for i in range(self.donut_count): + donut = QtCharts.QPieSeries() + slccount = randrange(3, 6) + for j in range(slccount): + value = randrange(100, 200) + + slc = QtCharts.QPieSlice(str(value), value) + slc.setLabelVisible(True) + slc.setLabelColor(Qt.white) + slc.setLabelPosition(QtCharts.QPieSlice.LabelInsideTangential) + + # Connection using an extra parameter for the slot + slc.hovered[bool].connect(partial(self.explode_slice, slc=slc)) + + donut.append(slc) + size = (self.max_size - self.min_size)/self.donut_count + donut.setHoleSize(self.min_size + i * size) + donut.setPieSize(self.min_size + (i + 1) * size) + + self.donuts.append(donut) + self.chart_view.chart().addSeries(donut) + + + + def update_rotation(self): + for donut in self.donuts: + phase_shift = randrange(-50, 100) + donut.setPieStartAngle(donut.pieStartAngle() + phase_shift) + donut.setPieEndAngle(donut.pieEndAngle() + phase_shift) + + def explode_slice(self, exploded, slc): + if exploded: + self.update_timer.stop() + slice_startangle = slc.startAngle() + slice_endangle = slc.startAngle() + slc.angleSpan() + + donut = slc.series() + idx = self.donuts.index(donut) + for i in range(idx + 1, len(self.donuts)): + self.donuts[i].setPieStartAngle(slice_endangle) + self.donuts[i].setPieEndAngle(360 + slice_startangle) + else: + for donut in self.donuts: + donut.setPieStartAngle(0) + donut.setPieEndAngle(360) + + self.update_timer.start() + + slc.setExploded(exploded) + +if __name__ == "__main__": + app = QApplication(sys.argv) + w = Widget() + w.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/charts/percentbarchart.py b/venv/Lib/site-packages/PySide2/examples/charts/percentbarchart.py new file mode 100644 index 0000000..256070e --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/charts/percentbarchart.py @@ -0,0 +1,98 @@ + +############################################################################# +## +## Copyright (C) 2018 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the Percent Bar Chart example from Qt v5.x""" + +import sys +from PySide2.QtCore import Qt +from PySide2.QtGui import QPainter +from PySide2.QtWidgets import (QMainWindow, QApplication) +from PySide2.QtCharts import QtCharts + +class MainWindow(QMainWindow): + def __init__(self): + QMainWindow.__init__(self) + + set0 = QtCharts.QBarSet("Jane") + set1 = QtCharts.QBarSet("John") + set2 = QtCharts.QBarSet("Axel") + set3 = QtCharts.QBarSet("Mary") + set4 = QtCharts.QBarSet("Samantha") + + set0.append([1, 2, 3, 4, 5, 6]) + set1.append([5, 0, 0, 4, 0, 7]) + set2.append([3, 5, 8, 13, 8, 5]) + set3.append([5, 6, 7, 3, 4, 5]) + set4.append([9, 7, 5, 3, 1, 2]) + + series = QtCharts.QPercentBarSeries() + series.append(set0) + series.append(set1) + series.append(set2) + series.append(set3) + series.append(set4) + + chart = QtCharts.QChart() + chart.addSeries(series) + chart.setTitle("Simple percentbarchart example") + chart.setAnimationOptions(QtCharts.QChart.SeriesAnimations) + + categories = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"] + axis = QtCharts.QBarCategoryAxis() + axis.append(categories) + chart.createDefaultAxes() + chart.setAxisX(axis, series) + + chart.legend().setVisible(True) + chart.legend().setAlignment(Qt.AlignBottom) + + chart_view = QtCharts.QChartView(chart) + chart_view.setRenderHint(QPainter.Antialiasing) + + self.setCentralWidget(chart_view) + + +if __name__ == "__main__": + app = QApplication(sys.argv) + w = MainWindow() + w.resize(420, 300) + w.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/charts/piechart.py b/venv/Lib/site-packages/PySide2/examples/charts/piechart.py new file mode 100644 index 0000000..820da8b --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/charts/piechart.py @@ -0,0 +1,87 @@ +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the Pie Chart Example from Qt v5.x""" + +import sys +from PySide2.QtCore import Qt +from PySide2.QtGui import QPainter, QPen +from PySide2.QtWidgets import QMainWindow, QApplication +from PySide2.QtCharts import QtCharts + + +class TestChart(QMainWindow): + + def __init__(self): + QMainWindow.__init__(self) + + self.series = QtCharts.QPieSeries() + + self.series.append('Jane', 1) + self.series.append('Joe', 2) + self.series.append('Andy', 3) + self.series.append('Barbara', 4) + self.series.append('Axel', 5) + + self.slice = self.series.slices()[1] + self.slice.setExploded() + self.slice.setLabelVisible() + self.slice.setPen(QPen(Qt.darkGreen, 2)) + self.slice.setBrush(Qt.green) + + self.chart = QtCharts.QChart() + self.chart.addSeries(self.series) + self.chart.setTitle('Simple piechart example') + self.chart.legend().hide() + + self.chartView = QtCharts.QChartView(self.chart) + self.chartView.setRenderHint(QPainter.Antialiasing) + + self.setCentralWidget(self.chartView) + + +if __name__ == "__main__": + app = QApplication(sys.argv) + + window = TestChart() + window.show() + window.resize(440, 300) + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/charts/qmlpolarchart/View1.qml b/venv/Lib/site-packages/PySide2/examples/charts/qmlpolarchart/View1.qml new file mode 100644 index 0000000..ad17fec --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/charts/qmlpolarchart/View1.qml @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Charts module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtCharts 2.0 + +Item { + anchors.fill: parent + //![1] + PolarChartView { + title: "Two Series, Common Axes" + anchors.fill: parent + legend.visible: false + antialiasing: true + + ValueAxis { + id: axisAngular + min: 0 + max: 20 + tickCount: 9 + } + + ValueAxis { + id: axisRadial + min: -0.5 + max: 1.5 + } + + SplineSeries { + id: series1 + axisAngular: axisAngular + axisRadial: axisRadial + pointsVisible: true + } + + ScatterSeries { + id: series2 + axisAngular: axisAngular + axisRadial: axisRadial + markerSize: 10 + } + } + + // Add data dynamically to the series + Component.onCompleted: { + for (var i = 0; i <= 20; i++) { + series1.append(i, Math.random()); + series2.append(i, Math.random()); + } + } + //![1] +} diff --git a/venv/Lib/site-packages/PySide2/examples/charts/qmlpolarchart/View2.qml b/venv/Lib/site-packages/PySide2/examples/charts/qmlpolarchart/View2.qml new file mode 100644 index 0000000..7f241c3 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/charts/qmlpolarchart/View2.qml @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Charts module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtCharts 2.0 + +Item { + anchors.fill: parent + + //![1] + PolarChartView { + title: "Historical Area Series" + anchors.fill: parent + legend.visible: false + antialiasing: true + + DateTimeAxis { + id: axis1 + format: "yyyy MMM" + tickCount: 13 + } + ValueAxis { + id: axis2 + } + LineSeries { + id: lowerLine + axisAngular: axis1 + axisRadial: axis2 + + // Please note that month in JavaScript months are zero based, so 2 means March + XYPoint { x: toMsecsSinceEpoch(new Date(1950, 0, 1)); y: 15 } + XYPoint { x: toMsecsSinceEpoch(new Date(1962, 4, 1)); y: 35 } + XYPoint { x: toMsecsSinceEpoch(new Date(1970, 0, 1)); y: 50 } + XYPoint { x: toMsecsSinceEpoch(new Date(1978, 2, 1)); y: 75 } + XYPoint { x: toMsecsSinceEpoch(new Date(1987, 11, 1)); y: 102 } + XYPoint { x: toMsecsSinceEpoch(new Date(1992, 1, 1)); y: 132 } + XYPoint { x: toMsecsSinceEpoch(new Date(1998, 7, 1)); y: 100 } + XYPoint { x: toMsecsSinceEpoch(new Date(2002, 4, 1)); y: 120 } + XYPoint { x: toMsecsSinceEpoch(new Date(2012, 8, 1)); y: 140 } + XYPoint { x: toMsecsSinceEpoch(new Date(2013, 5, 1)); y: 150 } + } + LineSeries { + id: upperLine + axisAngular: axis1 + axisRadial: axis2 + + // Please note that month in JavaScript months are zero based, so 2 means March + XYPoint { x: toMsecsSinceEpoch(new Date(1950, 0, 1)); y: 30 } + XYPoint { x: toMsecsSinceEpoch(new Date(1962, 4, 1)); y: 55 } + XYPoint { x: toMsecsSinceEpoch(new Date(1970, 0, 1)); y: 80 } + XYPoint { x: toMsecsSinceEpoch(new Date(1978, 2, 1)); y: 105 } + XYPoint { x: toMsecsSinceEpoch(new Date(1987, 11, 1)); y: 125 } + XYPoint { x: toMsecsSinceEpoch(new Date(1992, 1, 1)); y: 160 } + XYPoint { x: toMsecsSinceEpoch(new Date(1998, 7, 1)); y: 140 } + XYPoint { x: toMsecsSinceEpoch(new Date(2002, 4, 1)); y: 140 } + XYPoint { x: toMsecsSinceEpoch(new Date(2012, 8, 1)); y: 170 } + XYPoint { x: toMsecsSinceEpoch(new Date(2013, 5, 1)); y: 200 } + } + AreaSeries { + axisAngular: axis1 + axisRadial: axis2 + lowerSeries: lowerLine + upperSeries: upperLine + } + } + // DateTimeAxis is based on QDateTimes so we must convert our JavaScript dates to + // milliseconds since epoch to make them match the DateTimeAxis values + function toMsecsSinceEpoch(date) { + var msecs = date.getTime(); + return msecs; + } + //![1] +} diff --git a/venv/Lib/site-packages/PySide2/examples/charts/qmlpolarchart/View3.qml b/venv/Lib/site-packages/PySide2/examples/charts/qmlpolarchart/View3.qml new file mode 100644 index 0000000..5695a89 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/charts/qmlpolarchart/View3.qml @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Charts module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtCharts 2.0 + +Item { + anchors.fill: parent + + //![1] + PolarChartView { + title: "Numerical Data for Dummies" + anchors.fill: parent + legend.visible: false + antialiasing: true + + LineSeries { + axisRadial: CategoryAxis { + min: 0 + max: 30 + CategoryRange { + label: "critical" + endValue: 2 + } + CategoryRange { + label: "low" + endValue: 7 + } + CategoryRange { + label: "normal" + endValue: 12 + } + CategoryRange { + label: "high" + endValue: 18 + } + CategoryRange { + label: "extremely high" + endValue: 30 + } + } + + axisAngular: ValueAxis { + tickCount: 13 + } + + XYPoint { x: 0; y: 4.3 } + XYPoint { x: 1; y: 4.1 } + XYPoint { x: 2; y: 4.7 } + XYPoint { x: 3; y: 3.9 } + XYPoint { x: 4; y: 5.2 } + XYPoint { x: 5; y: 5.3 } + XYPoint { x: 6; y: 6.1 } + XYPoint { x: 7; y: 7.7 } + XYPoint { x: 8; y: 12.9 } + XYPoint { x: 9; y: 19.2 } + } + } + //![1] +} diff --git a/venv/Lib/site-packages/PySide2/examples/charts/qmlpolarchart/__pycache__/qmlpolarchart.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/charts/qmlpolarchart/__pycache__/qmlpolarchart.cpython-310.pyc new file mode 100644 index 0000000..4f75a46 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/charts/qmlpolarchart/__pycache__/qmlpolarchart.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/charts/qmlpolarchart/main.qml b/venv/Lib/site-packages/PySide2/examples/charts/qmlpolarchart/main.qml new file mode 100644 index 0000000..ed7a810 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/charts/qmlpolarchart/main.qml @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Charts module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + width: 800 + height: 600 + property bool sourceLoaded: false + + ListView { + id: root + focus: true + anchors.fill: parent + snapMode: ListView.SnapOneItem + highlightRangeMode: ListView.StrictlyEnforceRange + highlightMoveDuration: 250 + orientation: ListView.Horizontal + boundsBehavior: Flickable.StopAtBounds + + onCurrentIndexChanged: { + if (infoText.opacity > 0.0) { + if (sourceLoaded) + infoText.opacity = 0.0; + else if (currentIndex != 0) + currentIndex = 0; + } + } + + model: ListModel { + ListElement {component: "View1.qml"} + ListElement {component: "View2.qml"} + ListElement {component: "View3.qml"} + } + + delegate: Loader { + width: root.width + height: root.height + + source: component + asynchronous: true + + onLoaded: sourceLoaded = true + } + } + + Rectangle { + id: infoText + anchors.centerIn: parent + width: parent.width + height: 40 + color: "black" + Text { + color: "white" + anchors.centerIn: parent + text: "You can navigate between views using swipe or arrow keys" + } + + Behavior on opacity { + NumberAnimation { duration: 400 } + } + } +} diff --git a/venv/Lib/site-packages/PySide2/examples/charts/qmlpolarchart/qmlpolarchart.py b/venv/Lib/site-packages/PySide2/examples/charts/qmlpolarchart/qmlpolarchart.py new file mode 100644 index 0000000..4398169 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/charts/qmlpolarchart/qmlpolarchart.py @@ -0,0 +1,63 @@ +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the QML Polar Chart Example from Qt v5.x""" + +import sys +import os +from PySide2.QtQuick import QQuickView +from PySide2.QtCore import Qt, QUrl +from PySide2.QtWidgets import QApplication, QMainWindow + + +if __name__ == '__main__': + app = QApplication(sys.argv) + viewer = QQuickView() + + viewer.engine().addImportPath(os.path.dirname(__file__)) + viewer.engine().quit.connect(viewer.close) + + viewer.setTitle = "QML Polar Chart" + qmlFile = os.path.join(os.path.dirname(__file__), 'main.qml') + viewer.setSource(QUrl.fromLocalFile(os.path.abspath(qmlFile))) + viewer.setResizeMode(QQuickView.SizeRootObjectToView) + viewer.show() + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/charts/qmlpolarchart/qmlpolarchart.pyproject b/venv/Lib/site-packages/PySide2/examples/charts/qmlpolarchart/qmlpolarchart.pyproject new file mode 100644 index 0000000..6c18b1f --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/charts/qmlpolarchart/qmlpolarchart.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["View1.qml", "View1.qml", "View2.qml", "View3.qml", "main.qml", "qmlpolarchart.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/charts/temperaturerecords.py b/venv/Lib/site-packages/PySide2/examples/charts/temperaturerecords.py new file mode 100644 index 0000000..dfd4dd6 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/charts/temperaturerecords.py @@ -0,0 +1,95 @@ +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the Temperature Records example from Qt v5.x""" + +import sys +from PySide2.QtCore import Qt +from PySide2.QtGui import QPainter +from PySide2.QtWidgets import QMainWindow, QApplication +from PySide2.QtCharts import QtCharts + + +class MainWindow(QMainWindow): + def __init__(self): + QMainWindow.__init__(self) + low = QtCharts.QBarSet("Min") + high = QtCharts.QBarSet("Max") + low.append([-52, -50, -45.3, -37.0, -25.6, -8.0, + -6.0, -11.8, -19.7, -32.8, -43.0, -48.0]) + high.append([11.9, 12.8, 18.5, 26.5, 32.0, 34.8, + 38.2, 34.8, 29.8, 20.4, 15.1, 11.8]) + + series = QtCharts.QStackedBarSeries() + series.append(low) + series.append(high) + + chart = QtCharts.QChart() + chart.addSeries(series) + chart.setTitle("Temperature records in celcius") + chart.setAnimationOptions(QtCharts.QChart.SeriesAnimations) + + categories = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", + "Aug", "Sep", "Oct", "Nov", "Dec"] + axisX = QtCharts.QBarCategoryAxis() + axisX.append(categories) + axisX.setTitleText("Month") + chart.addAxis(axisX, Qt.AlignBottom) + axisY = QtCharts.QValueAxis() + axisY.setRange(-52, 52) + axisY.setTitleText("Temperature [°C]") + chart.addAxis(axisY, Qt.AlignLeft) + series.attachAxis(axisX) + series.attachAxis(axisY) + + chart.legend().setVisible(True) + chart.legend().setAlignment(Qt.AlignBottom) + + chart_view = QtCharts.QChartView(chart) + chart_view.setRenderHint(QPainter.Antialiasing) + + self.setCentralWidget(chart_view) + +if __name__ == "__main__": + app = QApplication(sys.argv) + w = MainWindow() + w.resize(600, 300) + w.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/corelib/threads/__pycache__/mandelbrot.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/corelib/threads/__pycache__/mandelbrot.cpython-310.pyc new file mode 100644 index 0000000..df51619 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/corelib/threads/__pycache__/mandelbrot.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/corelib/threads/mandelbrot.py b/venv/Lib/site-packages/PySide2/examples/corelib/threads/mandelbrot.py new file mode 100644 index 0000000..f0d13db --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/corelib/threads/mandelbrot.py @@ -0,0 +1,348 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the corelib/threads/mandelbrot example from Qt v5.x, originating from PyQt""" + +from PySide2.QtCore import (Signal, QMutex, QMutexLocker, QPoint, QSize, Qt, + QThread, QWaitCondition) +from PySide2.QtGui import QColor, QImage, QPainter, QPixmap, qRgb +from PySide2.QtWidgets import QApplication, QWidget + + +DefaultCenterX = -0.647011 +DefaultCenterY = -0.0395159 +DefaultScale = 0.00403897 + +ZoomInFactor = 0.8 +ZoomOutFactor = 1 / ZoomInFactor +ScrollStep = 20 + + +class RenderThread(QThread): + ColormapSize = 512 + + renderedImage = Signal(QImage, float) + + def __init__(self, parent=None): + super(RenderThread, self).__init__(parent) + + self.mutex = QMutex() + self.condition = QWaitCondition() + self.centerX = 0.0 + self.centerY = 0.0 + self.scaleFactor = 0.0 + self.resultSize = QSize() + self.colormap = [] + + self.restart = False + self.abort = False + + for i in range(RenderThread.ColormapSize): + self.colormap.append(self.rgbFromWaveLength(380.0 + (i * 400.0 / RenderThread.ColormapSize))) + + def stop(self): + self.mutex.lock() + self.abort = True + self.condition.wakeOne() + self.mutex.unlock() + + self.wait(2000) + + def render(self, centerX, centerY, scaleFactor, resultSize): + locker = QMutexLocker(self.mutex) + + self.centerX = centerX + self.centerY = centerY + self.scaleFactor = scaleFactor + self.resultSize = resultSize + + if not self.isRunning(): + self.start(QThread.LowPriority) + else: + self.restart = True + self.condition.wakeOne() + + def run(self): + while True: + self.mutex.lock() + resultSize = self.resultSize + scaleFactor = self.scaleFactor + centerX = self.centerX + centerY = self.centerY + self.mutex.unlock() + + halfWidth = resultSize.width() // 2 + halfHeight = resultSize.height() // 2 + image = QImage(resultSize, QImage.Format_RGB32) + + NumPasses = 8 + curpass = 0 + + while curpass < NumPasses: + MaxIterations = (1 << (2 * curpass + 6)) + 32 + Limit = 4 + allBlack = True + + for y in range(-halfHeight, halfHeight): + if self.restart: + break + if self.abort: + return + + ay = 1j * (centerY + (y * scaleFactor)) + + for x in range(-halfWidth, halfWidth): + c0 = centerX + (x * scaleFactor) + ay + c = c0 + numIterations = 0 + + while numIterations < MaxIterations: + numIterations += 1 + c = c*c + c0 + if abs(c) >= Limit: + break + numIterations += 1 + c = c*c + c0 + if abs(c) >= Limit: + break + numIterations += 1 + c = c*c + c0 + if abs(c) >= Limit: + break + numIterations += 1 + c = c*c + c0 + if abs(c) >= Limit: + break + + if numIterations < MaxIterations: + image.setPixel(x + halfWidth, y + halfHeight, + self.colormap[numIterations % RenderThread.ColormapSize]) + allBlack = False + else: + image.setPixel(x + halfWidth, y + halfHeight, qRgb(0, 0, 0)) + + if allBlack and curpass == 0: + curpass = 4 + else: + if not self.restart: + self.renderedImage.emit(image, scaleFactor) + curpass += 1 + + self.mutex.lock() + if not self.restart: + self.condition.wait(self.mutex) + self.restart = False + self.mutex.unlock() + + def rgbFromWaveLength(self, wave): + r = 0.0 + g = 0.0 + b = 0.0 + + if wave >= 380.0 and wave <= 440.0: + r = -1.0 * (wave - 440.0) / (440.0 - 380.0) + b = 1.0 + elif wave >= 440.0 and wave <= 490.0: + g = (wave - 440.0) / (490.0 - 440.0) + b = 1.0 + elif wave >= 490.0 and wave <= 510.0: + g = 1.0 + b = -1.0 * (wave - 510.0) / (510.0 - 490.0) + elif wave >= 510.0 and wave <= 580.0: + r = (wave - 510.0) / (580.0 - 510.0) + g = 1.0 + elif wave >= 580.0 and wave <= 645.0: + r = 1.0 + g = -1.0 * (wave - 645.0) / (645.0 - 580.0) + elif wave >= 645.0 and wave <= 780.0: + r = 1.0 + + s = 1.0 + if wave > 700.0: + s = 0.3 + 0.7 * (780.0 - wave) / (780.0 - 700.0) + elif wave < 420.0: + s = 0.3 + 0.7 * (wave - 380.0) / (420.0 - 380.0) + + r = pow(r * s, 0.8) + g = pow(g * s, 0.8) + b = pow(b * s, 0.8) + + return qRgb(r*255, g*255, b*255) + + +class MandelbrotWidget(QWidget): + def __init__(self, parent=None): + super(MandelbrotWidget, self).__init__(parent) + + self.thread = RenderThread() + self.pixmap = QPixmap() + self.pixmapOffset = QPoint() + self.lastDragPos = QPoint() + + self.centerX = DefaultCenterX + self.centerY = DefaultCenterY + self.pixmapScale = DefaultScale + self.curScale = DefaultScale + + self.thread.renderedImage.connect(self.updatePixmap) + + self.setWindowTitle("Mandelbrot") + self.setCursor(Qt.CrossCursor) + self.resize(550, 400) + + def paintEvent(self, event): + painter = QPainter(self) + painter.fillRect(self.rect(), Qt.black) + + if self.pixmap.isNull(): + painter.setPen(Qt.white) + painter.drawText(self.rect(), Qt.AlignCenter, + "Rendering initial image, please wait...") + return + + if self.curScale == self.pixmapScale: + painter.drawPixmap(self.pixmapOffset, self.pixmap) + else: + scaleFactor = self.pixmapScale / self.curScale + newWidth = int(self.pixmap.width() * scaleFactor) + newHeight = int(self.pixmap.height() * scaleFactor) + newX = self.pixmapOffset.x() + (self.pixmap.width() - newWidth) / 2 + newY = self.pixmapOffset.y() + (self.pixmap.height() - newHeight) / 2 + + painter.save() + painter.translate(newX, newY) + painter.scale(scaleFactor, scaleFactor) + exposed, _ = painter.matrix().inverted() + exposed = exposed.mapRect(self.rect()).adjusted(-1, -1, 1, 1) + painter.drawPixmap(exposed, self.pixmap, exposed) + painter.restore() + + text = "Use mouse wheel or the '+' and '-' keys to zoom. Press and " \ + "hold left mouse button to scroll." + metrics = painter.fontMetrics() + textWidth = metrics.width(text) + + painter.setPen(Qt.NoPen) + painter.setBrush(QColor(0, 0, 0, 127)) + painter.drawRect((self.width() - textWidth) / 2 - 5, 0, textWidth + 10, + metrics.lineSpacing() + 5) + painter.setPen(Qt.white) + painter.drawText((self.width() - textWidth) / 2, + metrics.leading() + metrics.ascent(), text) + + def resizeEvent(self, event): + self.thread.render(self.centerX, self.centerY, self.curScale, self.size()) + + def keyPressEvent(self, event): + if event.key() == Qt.Key_Plus: + self.zoom(ZoomInFactor) + elif event.key() == Qt.Key_Minus: + self.zoom(ZoomOutFactor) + elif event.key() == Qt.Key_Left: + self.scroll(-ScrollStep, 0) + elif event.key() == Qt.Key_Right: + self.scroll(+ScrollStep, 0) + elif event.key() == Qt.Key_Down: + self.scroll(0, -ScrollStep) + elif event.key() == Qt.Key_Up: + self.scroll(0, +ScrollStep) + else: + super(MandelbrotWidget, self).keyPressEvent(event) + + def wheelEvent(self, event): + numDegrees = event.angleDelta().y() / 8 + numSteps = numDegrees / 15.0 + self.zoom(pow(ZoomInFactor, numSteps)) + + def mousePressEvent(self, event): + if event.buttons() == Qt.LeftButton: + self.lastDragPos = QPoint(event.pos()) + + def mouseMoveEvent(self, event): + if event.buttons() & Qt.LeftButton: + self.pixmapOffset += event.pos() - self.lastDragPos + self.lastDragPos = QPoint(event.pos()) + self.update() + + def mouseReleaseEvent(self, event): + if event.button() == Qt.LeftButton: + self.pixmapOffset += event.pos() - self.lastDragPos + self.lastDragPos = QPoint() + + deltaX = (self.width() - self.pixmap.width()) / 2 - self.pixmapOffset.x() + deltaY = (self.height() - self.pixmap.height()) / 2 - self.pixmapOffset.y() + self.scroll(deltaX, deltaY) + + def updatePixmap(self, image, scaleFactor): + if not self.lastDragPos.isNull(): + return + + self.pixmap = QPixmap.fromImage(image) + self.pixmapOffset = QPoint() + self.lastDragPosition = QPoint() + self.pixmapScale = scaleFactor + self.update() + + def zoom(self, zoomFactor): + self.curScale *= zoomFactor + self.update() + self.thread.render(self.centerX, self.centerY, self.curScale, + self.size()) + + def scroll(self, deltaX, deltaY): + self.centerX += deltaX * self.curScale + self.centerY += deltaY * self.curScale + self.update() + self.thread.render(self.centerX, self.centerY, self.curScale, + self.size()) + + +if __name__ == '__main__': + + import sys + + app = QApplication(sys.argv) + widget = MandelbrotWidget() + widget.show() + r = app.exec_() + widget.thread.stop() + sys.exit(r) diff --git a/venv/Lib/site-packages/PySide2/examples/corelib/threads/threads.pyproject b/venv/Lib/site-packages/PySide2/examples/corelib/threads/threads.pyproject new file mode 100644 index 0000000..254aabe --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/corelib/threads/threads.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["mandelbrot.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/corelib/tools/__pycache__/regexp.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/corelib/tools/__pycache__/regexp.cpython-310.pyc new file mode 100644 index 0000000..e99828e Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/corelib/tools/__pycache__/regexp.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/corelib/tools/codecs/__pycache__/codecs.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/corelib/tools/codecs/__pycache__/codecs.cpython-310.pyc new file mode 100644 index 0000000..763daea Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/corelib/tools/codecs/__pycache__/codecs.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/corelib/tools/codecs/codecs.py b/venv/Lib/site-packages/PySide2/examples/corelib/tools/codecs/codecs.py new file mode 100644 index 0000000..63e74a6 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/corelib/tools/codecs/codecs.py @@ -0,0 +1,253 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the widgets/tools/codecs example from Qt v5.x""" + +from PySide2 import QtCore, QtWidgets + + +def codec_name(codec): + try: + # Python v3. + name = str(codec.name(), encoding='ascii') + except TypeError: + # Python v2. + name = str(codec.name()) + + return name + + +class MainWindow(QtWidgets.QMainWindow): + def __init__(self): + super(MainWindow, self).__init__() + + self.textEdit = QtWidgets.QTextEdit() + self.textEdit.setLineWrapMode(QtWidgets.QTextEdit.NoWrap) + self.setCentralWidget(self.textEdit) + + self.codecs = [] + self.findCodecs() + + self.previewForm = PreviewForm(self) + self.previewForm.setCodecList(self.codecs) + + self.saveAsActs = [] + self.createActions() + self.createMenus() + + self.setWindowTitle("Codecs") + self.resize(500, 400) + + def open(self): + fileName, _ = QtWidgets.QFileDialog.getOpenFileName(self) + if fileName: + inFile = QtCore.QFile(fileName) + if not inFile.open(QtCore.QFile.ReadOnly): + QtWidgets.QMessageBox.warning(self, "Codecs", + "Cannot read file %s:\n%s" % (fileName, inFile.errorString())) + return + + data = inFile.readAll() + + self.previewForm.setEncodedData(data) + if self.previewForm.exec_(): + self.textEdit.setPlainText(self.previewForm.decodedString()) + + def save(self): + fileName = QtWidgets.QFileDialog.getSaveFileName(self) + if fileName: + outFile = QtCore.QFile(fileName) + if not outFile.open(QtCore.QFile.WriteOnly|QtCore.QFile.Text): + QtWidgets.QMessageBox.warning(self, "Codecs", + "Cannot write file %s:\n%s" % (fileName, outFile.errorString())) + return + + action = self.sender() + codecName = action.data() + + out = QtCore.QTextStream(outFile) + out.setCodec(codecName) + out << self.textEdit.toPlainText() + + def about(self): + QtWidgets.QMessageBox.about(self, "About Codecs", + "The Codecs example demonstrates how to read and " + "write files using various encodings.") + + def aboutToShowSaveAsMenu(self): + currentText = self.textEdit.toPlainText() + + for action in self.saveAsActs: + codecName = str(action.data()) + codec = QtCore.QTextCodec.codecForName(codecName) + action.setVisible(codec and codec.canEncode(currentText)) + + def findCodecs(self): + codecMap = [] + iso8859RegExp = QtCore.QRegularExpression('^ISO[- ]8859-([0-9]+).*$') + assert iso8859RegExp.isValid() + + for mib in QtCore.QTextCodec.availableMibs(): + codec = QtCore.QTextCodec.codecForMib(mib) + sortKey = codec_name(codec).upper() + rank = 0 + + if sortKey.startswith('UTF-8'): + rank = 1 + elif sortKey.startswith('UTF-16'): + rank = 2 + else: + match = iso8859RegExp.match(sortKey) + if match.hasMatch(): + if len(match.captured(1)) == 1: + rank = 3 + else: + rank = 4 + else: + rank = 5 + + codecMap.append((str(rank) + sortKey, codec)) + + codecMap.sort() + self.codecs = [item[-1] for item in codecMap] + + def createActions(self): + self.openAct = QtWidgets.QAction("&Open...", self, shortcut="Ctrl+O", + triggered=self.open) + + for codec in self.codecs: + name = codec_name(codec) + + action = QtWidgets.QAction(name + '...', self, triggered=self.save) + action.setData(name) + self.saveAsActs.append(action) + + self.exitAct = QtWidgets.QAction("E&xit", self, shortcut="Ctrl+Q", + triggered=self.close) + + self.aboutAct = QtWidgets.QAction("&About", self, triggered=self.about) + + self.aboutQtAct = QtWidgets.QAction("About &Qt", self, + triggered=qApp.aboutQt) + + def createMenus(self): + self.saveAsMenu = QtWidgets.QMenu("&Save As", self) + for action in self.saveAsActs: + self.saveAsMenu.addAction(action) + + self.saveAsMenu.aboutToShow.connect(self.aboutToShowSaveAsMenu) + + self.fileMenu = QtWidgets.QMenu("&File", self) + self.fileMenu.addAction(self.openAct) + self.fileMenu.addMenu(self.saveAsMenu) + self.fileMenu.addSeparator() + self.fileMenu.addAction(self.exitAct) + + self.helpMenu = QtWidgets.QMenu("&Help", self) + self.helpMenu.addAction(self.aboutAct) + self.helpMenu.addAction(self.aboutQtAct) + + self.menuBar().addMenu(self.fileMenu) + self.menuBar().addSeparator() + self.menuBar().addMenu(self.helpMenu) + + +class PreviewForm(QtWidgets.QDialog): + def __init__(self, parent): + super(PreviewForm, self).__init__(parent) + + self.encodingComboBox = QtWidgets.QComboBox() + encodingLabel = QtWidgets.QLabel("&Encoding:") + encodingLabel.setBuddy(self.encodingComboBox) + + self.textEdit = QtWidgets.QTextEdit() + self.textEdit.setLineWrapMode(QtWidgets.QTextEdit.NoWrap) + self.textEdit.setReadOnly(True) + + buttonBox = QtWidgets.QDialogButtonBox(QtWidgets.QDialogButtonBox.Ok | QtWidgets.QDialogButtonBox.Cancel) + + self.encodingComboBox.activated.connect(self.updateTextEdit) + buttonBox.accepted.connect(self.accept) + buttonBox.rejected.connect(self.reject) + + mainLayout = QtWidgets.QGridLayout() + mainLayout.addWidget(encodingLabel, 0, 0) + mainLayout.addWidget(self.encodingComboBox, 0, 1) + mainLayout.addWidget(self.textEdit, 1, 0, 1, 2) + mainLayout.addWidget(buttonBox, 2, 0, 1, 2) + self.setLayout(mainLayout) + + self.setWindowTitle("Choose Encoding") + self.resize(400, 300) + + def setCodecList(self, codecs): + self.encodingComboBox.clear() + for codec in codecs: + self.encodingComboBox.addItem(codec_name(codec), codec.mibEnum()) + + def setEncodedData(self, data): + self.encodedData = data + self.updateTextEdit() + + def decodedString(self): + return self.decodedStr + + def updateTextEdit(self): + mib = self.encodingComboBox.itemData(self.encodingComboBox.currentIndex()) + codec = QtCore.QTextCodec.codecForMib(mib) + + data = QtCore.QTextStream(self.encodedData) + data.setAutoDetectUnicode(False) + data.setCodec(codec) + + self.decodedStr = data.readAll() + self.textEdit.setPlainText(self.decodedStr) + + +if __name__ == '__main__': + + import sys + + app = QtWidgets.QApplication(sys.argv) + mainWin = MainWindow() + mainWin.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/corelib/tools/codecs/codecs.pyproject b/venv/Lib/site-packages/PySide2/examples/corelib/tools/codecs/codecs.pyproject new file mode 100644 index 0000000..72237d6 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/corelib/tools/codecs/codecs.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["codecs.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/corelib/tools/regexp.py b/venv/Lib/site-packages/PySide2/examples/corelib/tools/regexp.py new file mode 100644 index 0000000..3a95332 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/corelib/tools/regexp.py @@ -0,0 +1,194 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the widgets/tools/regexp example from Qt v5.x""" + +from PySide2 import QtCore, QtGui, QtWidgets + + +class RegExpDialog(QtWidgets.QDialog): + MaxCaptures = 6 + + def __init__(self, parent=None): + super(RegExpDialog, self).__init__(parent) + + self.patternComboBox = QtWidgets.QComboBox() + self.patternComboBox.setEditable(True) + self.patternComboBox.setSizePolicy(QtWidgets.QSizePolicy.Expanding, + QtWidgets.QSizePolicy.Preferred) + + patternLabel = QtWidgets.QLabel("&Pattern:") + patternLabel.setBuddy(self.patternComboBox) + + self.escapedPatternLineEdit = QtWidgets.QLineEdit() + self.escapedPatternLineEdit.setReadOnly(True) + palette = self.escapedPatternLineEdit.palette() + palette.setBrush(QtGui.QPalette.Base, + palette.brush(QtGui.QPalette.Disabled, QtGui.QPalette.Base)) + self.escapedPatternLineEdit.setPalette(palette) + + escapedPatternLabel = QtWidgets.QLabel("&Escaped Pattern:") + escapedPatternLabel.setBuddy(self.escapedPatternLineEdit) + + self.syntaxComboBox = QtWidgets.QComboBox() + self.syntaxComboBox.addItem("Regular expression v1", + QtCore.QRegExp.RegExp) + self.syntaxComboBox.addItem("Regular expression v2", + QtCore.QRegExp.RegExp2) + self.syntaxComboBox.addItem("Wildcard", QtCore.QRegExp.Wildcard) + self.syntaxComboBox.addItem("Fixed string", + QtCore.QRegExp.FixedString) + + syntaxLabel = QtWidgets.QLabel("&Pattern Syntax:") + syntaxLabel.setBuddy(self.syntaxComboBox) + + self.textComboBox = QtWidgets.QComboBox() + self.textComboBox.setEditable(True) + self.textComboBox.setSizePolicy(QtWidgets.QSizePolicy.Expanding, + QtWidgets.QSizePolicy.Preferred) + + textLabel = QtWidgets.QLabel("&Text:") + textLabel.setBuddy(self.textComboBox) + + self.caseSensitiveCheckBox = QtWidgets.QCheckBox("Case &Sensitive") + self.caseSensitiveCheckBox.setChecked(True) + self.minimalCheckBox = QtWidgets.QCheckBox("&Minimal") + + indexLabel = QtWidgets.QLabel("Index of Match:") + self.indexEdit = QtWidgets.QLineEdit() + self.indexEdit.setReadOnly(True) + + matchedLengthLabel = QtWidgets.QLabel("Matched Length:") + self.matchedLengthEdit = QtWidgets.QLineEdit() + self.matchedLengthEdit.setReadOnly(True) + + self.captureLabels = [] + self.captureEdits = [] + for i in range(self.MaxCaptures): + self.captureLabels.append(QtWidgets.QLabel("Capture %d:" % i)) + self.captureEdits.append(QtWidgets.QLineEdit()) + self.captureEdits[i].setReadOnly(True) + self.captureLabels[0].setText("Match:") + + checkBoxLayout = QtWidgets.QHBoxLayout() + checkBoxLayout.addWidget(self.caseSensitiveCheckBox) + checkBoxLayout.addWidget(self.minimalCheckBox) + checkBoxLayout.addStretch(1) + + mainLayout = QtWidgets.QGridLayout() + mainLayout.addWidget(patternLabel, 0, 0) + mainLayout.addWidget(self.patternComboBox, 0, 1) + mainLayout.addWidget(escapedPatternLabel, 1, 0) + mainLayout.addWidget(self.escapedPatternLineEdit, 1, 1) + mainLayout.addWidget(syntaxLabel, 2, 0) + mainLayout.addWidget(self.syntaxComboBox, 2, 1) + mainLayout.addLayout(checkBoxLayout, 3, 0, 1, 2) + mainLayout.addWidget(textLabel, 4, 0) + mainLayout.addWidget(self.textComboBox, 4, 1) + mainLayout.addWidget(indexLabel, 5, 0) + mainLayout.addWidget(self.indexEdit, 5, 1) + mainLayout.addWidget(matchedLengthLabel, 6, 0) + mainLayout.addWidget(self.matchedLengthEdit, 6, 1) + + for i in range(self.MaxCaptures): + mainLayout.addWidget(self.captureLabels[i], 7 + i, 0) + mainLayout.addWidget(self.captureEdits[i], 7 + i, 1) + self.setLayout(mainLayout) + + self.patternComboBox.editTextChanged.connect(self.refresh) + self.textComboBox.editTextChanged.connect(self.refresh) + self.caseSensitiveCheckBox.toggled.connect(self.refresh) + self.minimalCheckBox.toggled.connect(self.refresh) + self.syntaxComboBox.currentIndexChanged.connect(self.refresh) + + self.patternComboBox.addItem("[A-Za-z_]+([A-Za-z_0-9]*)") + self.textComboBox.addItem("(10 + delta4)* 32") + + self.setWindowTitle("RegExp") + self.setFixedHeight(self.sizeHint().height()) + self.refresh() + + def refresh(self): + self.setUpdatesEnabled(False) + + pattern = self.patternComboBox.currentText() + text = self.textComboBox.currentText() + + escaped = str(pattern) + escaped.replace('\\', '\\\\') + escaped.replace('"', '\\"') + self.escapedPatternLineEdit.setText('"' + escaped + '"') + + rx = QtCore.QRegExp(pattern) + cs = QtCore.Qt.CaseInsensitive + if self.caseSensitiveCheckBox.isChecked(): + cs = QtCore.Qt.CaseSensitive + rx.setCaseSensitivity(cs) + rx.setMinimal(self.minimalCheckBox.isChecked()) + syntax = self.syntaxComboBox.itemData(self.syntaxComboBox.currentIndex()) + rx.setPatternSyntax(QtCore.QRegExp.PatternSyntax(syntax)) + + palette = self.patternComboBox.palette() + if rx.isValid(): + palette.setColor(QtGui.QPalette.Text, + self.textComboBox.palette().color(QtGui.QPalette.Text)) + else: + palette.setColor(QtGui.QPalette.Text, QtCore.Qt.red) + self.patternComboBox.setPalette(palette) + + self.indexEdit.setText(str(rx.indexIn(text))) + self.matchedLengthEdit.setText(str(rx.matchedLength())) + + for i in range(self.MaxCaptures): + self.captureLabels[i].setEnabled(i <= rx.captureCount()) + self.captureEdits[i].setEnabled(i <= rx.captureCount()) + self.captureEdits[i].setText(rx.cap(i)) + + self.setUpdatesEnabled(True) + +if __name__ == '__main__': + + import sys + + app = QtWidgets.QApplication(sys.argv) + dialog = RegExpDialog() + sys.exit(dialog.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/corelib/tools/settingseditor/__pycache__/settingseditor.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/corelib/tools/settingseditor/__pycache__/settingseditor.cpython-310.pyc new file mode 100644 index 0000000..7a5a825 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/corelib/tools/settingseditor/__pycache__/settingseditor.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/corelib/tools/settingseditor/settingseditor.py b/venv/Lib/site-packages/PySide2/examples/corelib/tools/settingseditor/settingseditor.py new file mode 100644 index 0000000..a3e50a7 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/corelib/tools/settingseditor/settingseditor.py @@ -0,0 +1,770 @@ +# -*- coding: utf-8 -*- + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the widgets/tools/settingseditor example from Qt v5.x""" + +import sys + +from PySide2.QtCore import (QByteArray, QDate, QDateTime, QDir, QEvent, QPoint, + QRect, QRegularExpression, QSettings, QSize, QTime, QTimer, Qt) +from PySide2.QtGui import (QColor, QIcon, QIntValidator, QDoubleValidator, + QRegularExpressionValidator, QValidator) +from PySide2.QtWidgets import (QAbstractItemView, QAction, QApplication, + QCheckBox, QComboBox, QFileDialog, QDialog, QDialogButtonBox, QGridLayout, + QGroupBox, QHeaderView, QInputDialog, QItemDelegate, QLabel, QLineEdit, + QMainWindow, QMessageBox, QStyle, QSpinBox, QStyleOptionViewItem, + QTableWidget, QTableWidgetItem, QTreeWidget, QTreeWidgetItem, QVBoxLayout) + + +class TypeChecker: + def __init__(self, parent=None): + self.bool_exp = QRegularExpression('^(true)|(false)$') + assert self.bool_exp.isValid() + self.bool_exp.setPatternOptions(QRegularExpression.CaseInsensitiveOption) + + self.byteArray_exp = QRegularExpression(r'^[\x00-\xff]*$') + assert self.byteArray_exp.isValid() + + self.char_exp = QRegularExpression('^.$') + assert self.char_exp.isValid() + + pattern = r'^[+-]?\d+$' + self.int_exp = QRegularExpression(pattern) + assert self.int_exp.isValid() + + pattern = r'^\(([0-9]*),([0-9]*),([0-9]*),([0-9]*)\)$' + self.color_exp = QRegularExpression(pattern) + assert self.color_exp.isValid() + + pattern = r'^\((-?[0-9]*),(-?[0-9]*)\)$' + self.point_exp = QRegularExpression(pattern) + assert self.point_exp.isValid() + + pattern = r'^\((-?[0-9]*),(-?[0-9]*),(-?[0-9]*),(-?[0-9]*)\)$' + self.rect_exp = QRegularExpression(pattern) + assert self.rect_exp.isValid() + + self.size_exp = QRegularExpression(self.point_exp) + + date_pattern = '([0-9]{,4})-([0-9]{,2})-([0-9]{,2})' + self.date_exp = QRegularExpression('^{}$'.format(date_pattern)) + assert self.date_exp.isValid() + + time_pattern = '([0-9]{,2}):([0-9]{,2}):([0-9]{,2})' + self.time_exp = QRegularExpression('^{}$'.format(time_pattern)) + assert self.time_exp.isValid() + + pattern = '^{}T{}$'.format(date_pattern, time_pattern) + self.dateTime_exp = QRegularExpression(pattern) + assert self.dateTime_exp.isValid() + + def type_from_text(self, text): + if self.bool_exp.match(text).hasMatch(): + return bool + if self.int_exp.match(text).hasMatch(): + return int + return None + + def create_validator(self, value, parent): + if isinstance(value, bool): + return QRegularExpressionValidator(self.bool_exp, parent) + if isinstance(value, float): + return QDoubleValidator(parent) + if isinstance(value, int): + return QIntValidator(parent) + if isinstance(value, QByteArray): + return QRegularExpressionValidator(self.byteArray_exp, parent) + if isinstance(value, QColor): + return QRegularExpressionValidator(self.color_exp, parent) + if isinstance(value, QDate): + return QRegularExpressionValidator(self.date_exp, parent) + if isinstance(value, QDateTime): + return QRegularExpressionValidator(self.dateTime_exp, parent) + if isinstance(value, QTime): + return QRegularExpressionValidator(self.time_exp, parent) + if isinstance(value, QPoint): + return QRegularExpressionValidator(self.point_exp, parent) + if isinstance(value, QRect): + return QRegularExpressionValidator(self.rect_exp, parent) + if isinstance(value, QSize): + return QRegularExpressionValidator(self.size_exp, parent) + return None + + def from_string(self, text, original_value): + if isinstance(original_value, QColor): + match = self.color_exp.match(text) + return QColor(min(int(match.captured(1)), 255), + min(int(match.captured(2)), 255), + min(int(match.captured(3)), 255), + min(int(match.captured(4)), 255)) + if isinstance(original_value, QDate): + value = QDate.fromString(text, Qt.ISODate) + return value if value.isValid() else None + if isinstance(original_value, QDateTime): + value = QDateTime.fromString(text, Qt.ISODate) + return value if value.isValid() else None + if isinstance(original_value, QTime): + value = QTime.fromString(text, Qt.ISODate) + return value if value.isValid() else None + if isinstance(original_value, QPoint): + match = self.point_exp.match(text) + return QPoint(int(match.captured(1)), + int(match.captured(2))) + if isinstance(original_value, QRect): + match = self.rect_exp.match(text) + return QRect(int(match.captured(1)), + int(match.captured(2)), + int(match.captured(3)), + int(match.captured(4))) + if isinstance(original_value, QSize): + match = self.size_exp.match(text) + return QSize(int(match.captured(1)), + int(match.captured(2))) + if isinstance(original_value, list): + return text.split(',') + return type(original_value)(text) + + +class MainWindow(QMainWindow): + def __init__(self, parent=None): + super(MainWindow, self).__init__(parent) + + self.settings_tree = SettingsTree() + self.setCentralWidget(self.settings_tree) + + self.location_dialog = None + + self.create_actions() + self.create_menus() + + self.auto_refresh_action.setChecked(True) + self.fallbacks_action.setChecked(True) + + self.setWindowTitle("Settings Editor") + self.resize(500, 600) + + def open_settings(self): + if self.location_dialog is None: + self.location_dialog = LocationDialog(self) + + if self.location_dialog.exec_(): + settings = QSettings(self.location_dialog.format(), + self.location_dialog.scope(), + self.location_dialog.organization(), + self.location_dialog.application()) + self.set_settings_object(settings) + self.fallbacks_action.setEnabled(True) + + def open_inifile(self): + file_name, _ = QFileDialog.getOpenFileName(self, "Open INI File", + '', "INI Files (*.ini *.conf)") + + if file_name: + self.load_ini_file(file_name) + + def load_ini_file(self, file_name): + settings = QSettings(file_name, QSettings.IniFormat) + if settings.status() != QSettings.NoError: + return + self.set_settings_object(settings) + self.fallbacks_action.setEnabled(False) + + def open_property_list(self): + file_name, _ = QFileDialog.getOpenFileName(self, + "Open Property List", '', "Property List Files (*.plist)") + + if file_name: + settings = QSettings(file_name, QSettings.NativeFormat) + self.set_settings_object(settings) + self.fallbacks_action.setEnabled(False) + + def open_registry_path(self): + path, ok = QInputDialog.getText(self, "Open Registry Path", + "Enter the path in the Windows registry:", + QLineEdit.Normal, 'HKEY_CURRENT_USER\\') + + if ok and path != '': + settings = QSettings(path, QSettings.NativeFormat) + self.set_settings_object(settings) + self.fallbacks_action.setEnabled(False) + + def about(self): + QMessageBox.about(self, "About Settings Editor", + "The Settings Editor example shows how to access " + "application settings using Qt.") + + def create_actions(self): + self.open_settings_action = QAction("&Open Application Settings...", + self, shortcut="Ctrl+O", triggered=self.open_settings) + + self.open_ini_file_action = QAction("Open I&NI File...", self, + shortcut="Ctrl+N", triggered=self.open_inifile) + + self.open_property_list_action = QAction("Open macOS &Property List...", + self, shortcut="Ctrl+P", triggered=self.open_property_list) + if sys.platform != 'darwin': + self.open_property_list_action.setEnabled(False) + + self.open_registry_path_action = QAction( + "Open Windows &Registry Path...", self, shortcut="Ctrl+G", + triggered=self.open_registry_path) + if sys.platform != 'win32': + self.open_registry_path_action.setEnabled(False) + + self.refresh_action = QAction("&Refresh", self, shortcut="Ctrl+R", + enabled=False, triggered=self.settings_tree.refresh) + + self.exit_action = QAction("E&xit", self, shortcut="Ctrl+Q", + triggered=self.close) + + self.auto_refresh_action = QAction("&Auto-Refresh", self, + shortcut="Ctrl+A", checkable=True, enabled=False) + self.auto_refresh_action.triggered[bool].connect(self.settings_tree.set_auto_refresh) + self.auto_refresh_action.triggered[bool].connect(self.refresh_action.setDisabled) + + self.fallbacks_action = QAction("&Fallbacks", self, + shortcut="Ctrl+F", checkable=True, enabled=False) + self.fallbacks_action.triggered[bool].connect(self.settings_tree.set_fallbacks_enabled) + + self.about_action = QAction("&About", self, triggered=self.about) + + self.about_Qt_action = QAction("About &Qt", self, + triggered=qApp.aboutQt) + + def create_menus(self): + self.file_menu = self.menuBar().addMenu("&File") + self.file_menu.addAction(self.open_settings_action) + self.file_menu.addAction(self.open_ini_file_action) + self.file_menu.addAction(self.open_property_list_action) + self.file_menu.addAction(self.open_registry_path_action) + self.file_menu.addSeparator() + self.file_menu.addAction(self.refresh_action) + self.file_menu.addSeparator() + self.file_menu.addAction(self.exit_action) + + self.options_menu = self.menuBar().addMenu("&Options") + self.options_menu.addAction(self.auto_refresh_action) + self.options_menu.addAction(self.fallbacks_action) + + self.menuBar().addSeparator() + + self.help_menu = self.menuBar().addMenu("&Help") + self.help_menu.addAction(self.about_action) + self.help_menu.addAction(self.about_Qt_action) + + def set_settings_object(self, settings): + settings.setFallbacksEnabled(self.fallbacks_action.isChecked()) + self.settings_tree.set_settings_object(settings) + + self.refresh_action.setEnabled(True) + self.auto_refresh_action.setEnabled(True) + + nice_name = QDir.fromNativeSeparators(settings.fileName()) + nice_name = nice_name.split('/')[-1] + + if not settings.isWritable(): + nice_name += " (read only)" + + self.setWindowTitle("{} - Settings Editor".format(nice_name)) + + +class LocationDialog(QDialog): + def __init__(self, parent=None): + super(LocationDialog, self).__init__(parent) + + self.format_combo = QComboBox() + self.format_combo.addItem("Native") + self.format_combo.addItem("INI") + + self.scope_cCombo = QComboBox() + self.scope_cCombo.addItem("User") + self.scope_cCombo.addItem("System") + + self.organization_combo = QComboBox() + self.organization_combo.addItem("Trolltech") + self.organization_combo.setEditable(True) + + self.application_combo = QComboBox() + self.application_combo.addItem("Any") + self.application_combo.addItem("Application Example") + self.application_combo.addItem("Assistant") + self.application_combo.addItem("Designer") + self.application_combo.addItem("Linguist") + self.application_combo.setEditable(True) + self.application_combo.setCurrentIndex(3) + + format_label = QLabel("&Format:") + format_label.setBuddy(self.format_combo) + + scope_label = QLabel("&Scope:") + scope_label.setBuddy(self.scope_cCombo) + + organization_label = QLabel("&Organization:") + organization_label.setBuddy(self.organization_combo) + + application_label = QLabel("&Application:") + application_label.setBuddy(self.application_combo) + + self.locations_groupbox = QGroupBox("Setting Locations") + + self.locations_table = QTableWidget() + self.locations_table.setSelectionMode(QAbstractItemView.SingleSelection) + self.locations_table.setSelectionBehavior(QAbstractItemView.SelectRows) + self.locations_table.setEditTriggers(QAbstractItemView.NoEditTriggers) + self.locations_table.setColumnCount(2) + self.locations_table.setHorizontalHeaderLabels(("Location", "Access")) + self.locations_table.horizontalHeader().setSectionResizeMode(0, QHeaderView.Stretch) + self.locations_table.horizontalHeader().resizeSection(1, 180) + + self.button_box = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + + self.format_combo.activated.connect(self.update_locations) + self.scope_cCombo.activated.connect(self.update_locations) + self.organization_combo.lineEdit().editingFinished.connect(self.update_locations) + self.application_combo.lineEdit().editingFinished.connect(self.update_locations) + self.button_box.accepted.connect(self.accept) + self.button_box.rejected.connect(self.reject) + + locations_layout = QVBoxLayout(self.locations_groupbox) + locations_layout.addWidget(self.locations_table) + + mainLayout = QGridLayout(self) + mainLayout.addWidget(format_label, 0, 0) + mainLayout.addWidget(self.format_combo, 0, 1) + mainLayout.addWidget(scope_label, 1, 0) + mainLayout.addWidget(self.scope_cCombo, 1, 1) + mainLayout.addWidget(organization_label, 2, 0) + mainLayout.addWidget(self.organization_combo, 2, 1) + mainLayout.addWidget(application_label, 3, 0) + mainLayout.addWidget(self.application_combo, 3, 1) + mainLayout.addWidget(self.locations_groupbox, 4, 0, 1, 2) + mainLayout.addWidget(self.button_box, 5, 0, 1, 2) + + self.update_locations() + + self.setWindowTitle("Open Application Settings") + self.resize(650, 400) + + def format(self): + if self.format_combo.currentIndex() == 0: + return QSettings.NativeFormat + else: + return QSettings.IniFormat + + def scope(self): + if self.scope_cCombo.currentIndex() == 0: + return QSettings.UserScope + else: + return QSettings.SystemScope + + def organization(self): + return self.organization_combo.currentText() + + def application(self): + if self.application_combo.currentText() == "Any": + return '' + + return self.application_combo.currentText() + + def update_locations(self): + self.locations_table.setUpdatesEnabled(False) + self.locations_table.setRowCount(0) + + for i in range(2): + if i == 0: + if self.scope() == QSettings.SystemScope: + continue + + actualScope = QSettings.UserScope + else: + actualScope = QSettings.SystemScope + + for j in range(2): + if j == 0: + if not self.application(): + continue + + actualApplication = self.application() + else: + actualApplication = '' + + settings = QSettings(self.format(), actualScope, + self.organization(), actualApplication) + + row = self.locations_table.rowCount() + self.locations_table.setRowCount(row + 1) + + item0 = QTableWidgetItem() + item0.setText(settings.fileName()) + + item1 = QTableWidgetItem() + disable = not (settings.childKeys() or settings.childGroups()) + + if row == 0: + if settings.isWritable(): + item1.setText("Read-write") + disable = False + else: + item1.setText("Read-only") + self.button_box.button(QDialogButtonBox.Ok).setDisabled(disable) + else: + item1.setText("Read-only fallback") + + if disable: + item0.setFlags(item0.flags() & ~Qt.ItemIsEnabled) + item1.setFlags(item1.flags() & ~Qt.ItemIsEnabled) + + self.locations_table.setItem(row, 0, item0) + self.locations_table.setItem(row, 1, item1) + + self.locations_table.setUpdatesEnabled(True) + + +class SettingsTree(QTreeWidget): + def __init__(self, parent=None): + super(SettingsTree, self).__init__(parent) + + self._type_checker = TypeChecker() + self.setItemDelegate(VariantDelegate(self._type_checker, self)) + + self.setHeaderLabels(("Setting", "Type", "Value")) + self.header().setSectionResizeMode(0, QHeaderView.Stretch) + self.header().setSectionResizeMode(2, QHeaderView.Stretch) + + self.settings = None + self.refresh_timer = QTimer() + self.refresh_timer.setInterval(2000) + self.auto_refresh = False + + self.group_icon = QIcon() + style = self.style() + self.group_icon.addPixmap(style.standardPixmap(QStyle.SP_DirClosedIcon), + QIcon.Normal, QIcon.Off) + self.group_icon.addPixmap(style.standardPixmap(QStyle.SP_DirOpenIcon), + QIcon.Normal, QIcon.On) + self.key_icon = QIcon() + self.key_icon.addPixmap(style.standardPixmap(QStyle.SP_FileIcon)) + + self.refresh_timer.timeout.connect(self.maybe_refresh) + + def set_settings_object(self, settings): + self.settings = settings + self.clear() + + if self.settings is not None: + self.settings.setParent(self) + self.refresh() + if self.auto_refresh: + self.refresh_timer.start() + else: + self.refresh_timer.stop() + + def sizeHint(self): + return QSize(800, 600) + + def set_auto_refresh(self, autoRefresh): + self.auto_refresh = autoRefresh + + if self.settings is not None: + if self.auto_refresh: + self.maybe_refresh() + self.refresh_timer.start() + else: + self.refresh_timer.stop() + + def set_fallbacks_enabled(self, enabled): + if self.settings is not None: + self.settings.setFallbacksEnabled(enabled) + self.refresh() + + def maybe_refresh(self): + if self.state() != QAbstractItemView.EditingState: + self.refresh() + + def refresh(self): + if self.settings is None: + return + + # The signal might not be connected. + try: + self.itemChanged.disconnect(self.update_setting) + except: + pass + + self.settings.sync() + self.update_child_items(None) + + self.itemChanged.connect(self.update_setting) + + def event(self, event): + if event.type() == QEvent.WindowActivate: + if self.isActiveWindow() and self.auto_refresh: + self.maybe_refresh() + + return super(SettingsTree, self).event(event) + + def update_setting(self, item): + key = item.text(0) + ancestor = item.parent() + + while ancestor: + key = ancestor.text(0) + '/' + key + ancestor = ancestor.parent() + + d = item.data(2, Qt.UserRole) + self.settings.setValue(key, item.data(2, Qt.UserRole)) + + if self.auto_refresh: + self.refresh() + + def update_child_items(self, parent): + divider_index = 0 + + for group in self.settings.childGroups(): + child_index = self.find_child(parent, group, divider_index) + if child_index != -1: + child = self.child_at(parent, child_index) + child.setText(1, '') + child.setText(2, '') + child.setData(2, Qt.UserRole, None) + self.move_item_forward(parent, child_index, divider_index) + else: + child = self.create_item(group, parent, divider_index) + + child.setIcon(0, self.group_icon) + divider_index += 1 + + self.settings.beginGroup(group) + self.update_child_items(child) + self.settings.endGroup() + + for key in self.settings.childKeys(): + child_index = self.find_child(parent, key, 0) + if child_index == -1 or child_index >= divider_index: + if child_index != -1: + child = self.child_at(parent, child_index) + for i in range(child.childCount()): + self.delete_item(child, i) + self.move_item_forward(parent, child_index, divider_index) + else: + child = self.create_item(key, parent, divider_index) + child.setIcon(0, self.key_icon) + divider_index += 1 + else: + child = self.child_at(parent, child_index) + + value = self.settings.value(key) + if value is None: + child.setText(1, 'Invalid') + else: + # Try to convert to type unless a QByteArray is received + if isinstance(value, str): + value_type = self._type_checker.type_from_text(value) + if value_type: + value = self.settings.value(key, type=value_type) + child.setText(1, value.__class__.__name__) + child.setText(2, VariantDelegate.displayText(value)) + child.setData(2, Qt.UserRole, value) + + while divider_index < self.child_count(parent): + self.delete_item(parent, divider_index) + + def create_item(self, text, parent, index): + after = None + + if index != 0: + after = self.child_at(parent, index - 1) + + if parent is not None: + item = QTreeWidgetItem(parent, after) + else: + item = QTreeWidgetItem(self, after) + + item.setText(0, text) + item.setFlags(item.flags() | Qt.ItemIsEditable) + return item + + def delete_item(self, parent, index): + if parent is not None: + item = parent.takeChild(index) + else: + item = self.takeTopLevelItem(index) + del item + + def child_at(self, parent, index): + if parent is not None: + return parent.child(index) + else: + return self.topLevelItem(index) + + def child_count(self, parent): + if parent is not None: + return parent.childCount() + else: + return self.topLevelItemCount() + + def find_child(self, parent, text, startIndex): + for i in range(self.child_count(parent)): + if self.child_at(parent, i).text(0) == text: + return i + return -1 + + def move_item_forward(self, parent, oldIndex, newIndex): + for int in range(oldIndex - newIndex): + self.delete_item(parent, newIndex) + + +class VariantDelegate(QItemDelegate): + def __init__(self, type_checker, parent=None): + super(VariantDelegate, self).__init__(parent) + self._type_checker = type_checker + + def paint(self, painter, option, index): + if index.column() == 2: + value = index.model().data(index, Qt.UserRole) + if not self.is_supported_type(value): + my_option = QStyleOptionViewItem(option) + my_option.state &= ~QStyle.State_Enabled + super(VariantDelegate, self).paint(painter, my_option, index) + return + + super(VariantDelegate, self).paint(painter, option, index) + + def createEditor(self, parent, option, index): + if index.column() != 2: + return None + + original_value = index.model().data(index, Qt.UserRole) + if not self.is_supported_type(original_value): + return None + + editor = None + if isinstance(original_value, bool): + editor = QCheckBox(parent) + if isinstance(original_value, int): + editor = QSpinBox(parent) + editor.setRange(-32767, 32767) + else: + editor = QLineEdit(parent) + editor.setFrame(False) + validator = self._type_checker.create_validator(original_value, editor) + if validator: + editor.setValidator(validator) + return editor + + def setEditorData(self, editor, index): + if not editor: + return + value = index.model().data(index, Qt.UserRole) + if isinstance(editor, QCheckBox): + editor.setCheckState(Qt.Checked if value else Qt.Unchecked) + elif isinstance(editor, QSpinBox): + editor.setValue(value) + else: + editor.setText(self.displayText(value)) + + def value_from_lineedit(self, lineedit, model, index): + if not lineedit.isModified(): + return None + text = lineedit.text() + validator = lineedit.validator() + if validator is not None: + state, text, _ = validator.validate(text, 0) + if state != QValidator.Acceptable: + return None + original_value = index.model().data(index, Qt.UserRole) + return self._type_checker.from_string(text, original_value) + + def setModelData(self, editor, model, index): + value = None + if isinstance(editor, QCheckBox): + value = editor.checkState() == Qt.Checked + elif isinstance(editor, QSpinBox): + value = editor.value() + else: + value = self.value_from_lineedit(editor, model, index) + if not value is None: + model.setData(index, value, Qt.UserRole) + model.setData(index, self.displayText(value), Qt.DisplayRole) + + @staticmethod + def is_supported_type(value): + return isinstance(value, (bool, float, int, QByteArray, str, QColor, + QDate, QDateTime, QTime, QPoint, QRect, + QSize, list)) + + @staticmethod + def displayText(value): + if isinstance(value, str): + return value + if isinstance(value, bool): + return '✓' if value else '☐' + if isinstance(value, (int, float, QByteArray)): + return str(value) + if isinstance(value, QColor): + return '({},{},{},{})'.format(value.red(), value.green(), + value.blue(), value.alpha()) + if isinstance(value, (QDate, QDateTime, QTime)): + return value.toString(Qt.ISODate) + if isinstance(value, QPoint): + return '({},{})'.format(value.x(), value.y()) + if isinstance(value, QRect): + return '({},{},{},{})'.format(value.x(), value.y(), value.width(), + value.height()) + if isinstance(value, QSize): + return '({},{})'.format(value.width(), value.height()) + if isinstance(value, list): + return ','.join(value) + if value is None: + return '' + + return '<{}>'.format(value) + + +if __name__ == '__main__': + app = QApplication(sys.argv) + main_win = MainWindow() + if len(sys.argv) > 1: + main_win.load_ini_file(sys.argv[1]) + main_win.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/corelib/tools/settingseditor/settingseditor.pyproject b/venv/Lib/site-packages/PySide2/examples/corelib/tools/settingseditor/settingseditor.pyproject new file mode 100644 index 0000000..9eb637a --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/corelib/tools/settingseditor/settingseditor.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["settingseditor.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/corelib/tools/tools.pyproject b/venv/Lib/site-packages/PySide2/examples/corelib/tools/tools.pyproject new file mode 100644 index 0000000..63f9c61 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/corelib/tools/tools.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["regexp.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/datavisualization/__pycache__/bars3d.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/datavisualization/__pycache__/bars3d.cpython-310.pyc new file mode 100644 index 0000000..ef3cb94 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/datavisualization/__pycache__/bars3d.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/datavisualization/bars3d.py b/venv/Lib/site-packages/PySide2/examples/datavisualization/bars3d.py new file mode 100644 index 0000000..d0a69a8 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/datavisualization/bars3d.py @@ -0,0 +1,113 @@ + +############################################################################# +## +## Copyright (C) 2017 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 QtDataVisualization example""" + +import sys +from PySide2.QtCore import Qt +from PySide2.QtGui import QGuiApplication +from PySide2.QtWidgets import QApplication, QSizePolicy, QMainWindow, QWidget +from PySide2.QtDataVisualization import QtDataVisualization + +def dataToBarDataRow(data): + return list(QtDataVisualization.QBarDataItem(d) for d in data) + +def dataToBarDataArray(data): + return list(dataToBarDataRow(row) for row in data) + +class MainWindow(QMainWindow): + + def __init__(self): + super(MainWindow, self).__init__() + + self.setWindowTitle('Qt DataVisualization 3D Bars') + + self.bars = QtDataVisualization.Q3DBars() + + self.columnAxis = QtDataVisualization.QCategory3DAxis() + self.columnAxis.setTitle('Columns') + self.columnAxis.setTitleVisible(True) + self.columnAxis.setLabels(['Column1', 'Column2']) + self.columnAxis.setLabelAutoRotation(30) + + self.rowAxis = QtDataVisualization.QCategory3DAxis() + self.rowAxis.setTitle('Rows') + self.rowAxis.setTitleVisible(True) + self.rowAxis.setLabels(['Row1', 'Row2']) + self.rowAxis.setLabelAutoRotation(30) + + self.valueAxis = QtDataVisualization.QValue3DAxis() + self.valueAxis.setTitle('Values') + self.valueAxis.setTitleVisible(True) + self.valueAxis.setRange(0, 5) + + self.bars.setRowAxis(self.rowAxis) + self.bars.setColumnAxis(self.columnAxis) + self.bars.setValueAxis(self.valueAxis) + + self.series = QtDataVisualization.QBar3DSeries() + self.arrayData = [[1, 2], [3, 4]] + self.series.dataProxy().addRows(dataToBarDataArray(self.arrayData)) + + self.bars.setPrimarySeries(self.series) + + self.container = QWidget.createWindowContainer(self.bars) + + if not self.bars.hasContext(): + print("Couldn't initialize the OpenGL context.") + sys.exit(-1) + + camera = self.bars.scene().activeCamera() + camera.setYRotation(22.5) + + geometry = QGuiApplication.primaryScreen().geometry() + size = geometry.height() * 3 / 4 + self.container.setMinimumSize(size, size) + + self.container.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) + self.container.setFocusPolicy(Qt.StrongFocus) + self.setCentralWidget(self.container) + +if __name__ == '__main__': + app = QApplication(sys.argv) + mainWin = MainWindow() + mainWin.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/datavisualization/datavisualization.pyproject b/venv/Lib/site-packages/PySide2/examples/datavisualization/datavisualization.pyproject new file mode 100644 index 0000000..415133f --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/datavisualization/datavisualization.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["bars3d.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/__pycache__/scrolling.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/declarative/__pycache__/scrolling.cpython-310.pyc new file mode 100644 index 0000000..7f629c7 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/declarative/__pycache__/scrolling.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/__pycache__/usingmodel.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/declarative/__pycache__/usingmodel.cpython-310.pyc new file mode 100644 index 0000000..aa65ba7 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/declarative/__pycache__/usingmodel.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/declarative.pyproject b/venv/Lib/site-packages/PySide2/examples/declarative/declarative.pyproject new file mode 100644 index 0000000..e64c1d9 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/declarative.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["view.qml", "scrolling.py", "usingmodel.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter1-basics/__pycache__/basics.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter1-basics/__pycache__/basics.cpython-310.pyc new file mode 100644 index 0000000..bce716b Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter1-basics/__pycache__/basics.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter1-basics/app.qml b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter1-basics/app.qml new file mode 100644 index 0000000..190d024 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter1-basics/app.qml @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt for Python examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +//![0] +import Charts 1.0 +import QtQuick 2.0 + +Item { + width: 300; height: 200 + + PieChart { + id: aPieChart + anchors.centerIn: parent + width: 100; height: 100 + name: "A simple pie chart" + color: "red" + } + + Text { + anchors { + bottom: parent.bottom; + horizontalCenter: parent.horizontalCenter; + bottomMargin: 20 + } + text: aPieChart.name + } +} +//![0] diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter1-basics/basics.py b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter1-basics/basics.py new file mode 100644 index 0000000..95ee363 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter1-basics/basics.py @@ -0,0 +1,99 @@ + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from __future__ import print_function + +"""PySide2 port of the qml/tutorials/extending-qml/chapter1-basics example from Qt v5.x""" + +import sys, os +sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', '..', 'utils')) +from utils import text_type + +from PySide2.QtCore import Property, Signal, QUrl +from PySide2.QtGui import QGuiApplication, QPen, QPainter, QColor +from PySide2.QtQml import qmlRegisterType +from PySide2.QtQuick import QQuickPaintedItem, QQuickView + +class PieChart (QQuickPaintedItem): + def __init__(self, parent = None): + QQuickPaintedItem.__init__(self, parent) + self._name = u'' + + def paint(self, painter): + pen = QPen(self.color, 2) + painter.setPen(pen) + painter.setRenderHints(QPainter.Antialiasing, True) + painter.drawPie(self.boundingRect().adjusted(1,1,-1,-1), 90 * 16, 290 * 16) + + def getColor(self): + return self._color + + def setColor(self, value): + self._color = value + + def getName(self): + return self._name + + def setName(self, value): + self._name = value + + nameChanged = Signal() + + color = Property(QColor, getColor, setColor) + name = Property(text_type, getName, setName, notify=nameChanged) + +if __name__ == '__main__': + app = QGuiApplication(sys.argv) + + qmlRegisterType(PieChart, 'Charts', 1, 0, 'PieChart') + + view = QQuickView() + view.setResizeMode(QQuickView.SizeRootObjectToView) + qmlFile = os.path.join(os.path.dirname(__file__), 'app.qml') + view.setSource(QUrl.fromLocalFile(os.path.abspath(qmlFile))) + if view.status() == QQuickView.Error: + sys.exit(-1) + view.show() + res = app.exec_() + # Deleting the view before it goes out of scope is required to make sure all child QML instances + # are destroyed in the correct order. + del view + sys.exit(res) diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter1-basics/chapter1-basics.pyproject b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter1-basics/chapter1-basics.pyproject new file mode 100644 index 0000000..869556b --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter1-basics/chapter1-basics.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["basics.py", "app.qml"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter2-methods/__pycache__/methods.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter2-methods/__pycache__/methods.cpython-310.pyc new file mode 100644 index 0000000..4de19d4 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter2-methods/__pycache__/methods.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter2-methods/app.qml b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter2-methods/app.qml new file mode 100644 index 0000000..3a44798 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter2-methods/app.qml @@ -0,0 +1,70 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt for Python examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +//![0] +import Charts 1.0 +import QtQuick 2.0 + +Item { + width: 300; height: 200 + + PieChart { + id: aPieChart + anchors.centerIn: parent + width: 100; height: 100 + color: "red" + + onChartCleared: console.log("The chart has been cleared") + } + + MouseArea { + anchors.fill: parent + onClicked: aPieChart.clearChart() + } + + Text { + anchors { + bottom: parent.bottom; + horizontalCenter: parent.horizontalCenter; + bottomMargin: 20 + } + text: "Click anywhere to clear the chart" + } +} +//![0] diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter2-methods/chapter2-methods.pyproject b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter2-methods/chapter2-methods.pyproject new file mode 100644 index 0000000..cdf33be --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter2-methods/chapter2-methods.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["methods.py", "app.qml"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter2-methods/methods.py b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter2-methods/methods.py new file mode 100644 index 0000000..1d02628 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter2-methods/methods.py @@ -0,0 +1,104 @@ + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from __future__ import print_function + +"""PySide2 port of the qml/tutorials/extending-qml/chapter2-methods example from Qt v5.x""" + +import sys, os +sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', '..', 'utils')) +from utils import text_type + +from PySide2.QtCore import Property, Signal, Slot, QUrl, Qt +from PySide2.QtGui import QGuiApplication, QPen, QPainter, QColor +from PySide2.QtQml import qmlRegisterType +from PySide2.QtQuick import QQuickPaintedItem, QQuickView + +class PieChart (QQuickPaintedItem): + def __init__(self, parent = None): + QQuickPaintedItem.__init__(self, parent) + self._name = u'' + + def paint(self, painter): + pen = QPen(self.color, 2) + painter.setPen(pen) + painter.setRenderHints(QPainter.Antialiasing, True) + painter.drawPie(self.boundingRect().adjusted(1,1,-1,-1), 90 * 16, 290 * 16) + + def getColor(self): + return self._color + + def setColor(self, value): + self._color = value + + def getName(self): + return self._name + + def setName(self, value): + self._name = value + + color = Property(QColor, getColor, setColor) + name = Property(text_type, getName, setName) + chartCleared = Signal() + + @Slot() # This should be something like @Invokable + def clearChart(self): + self.setColor(Qt.transparent) + self.update() + self.chartCleared.emit() + +if __name__ == '__main__': + app = QGuiApplication(sys.argv) + + qmlRegisterType(PieChart, 'Charts', 1, 0, 'PieChart') + + view = QQuickView() + view.setResizeMode(QQuickView.SizeRootObjectToView) + qmlFile = os.path.join(os.path.dirname(__file__), 'app.qml') + view.setSource(QUrl.fromLocalFile(os.path.abspath(qmlFile))) + if view.status() == QQuickView.Error: + sys.exit(-1) + view.show() + res = app.exec_() + # Deleting the view before it goes out of scope is required to make sure all child QML instances + # are destroyed in the correct order. + del view + sys.exit(res) diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter3-bindings/__pycache__/bindings.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter3-bindings/__pycache__/bindings.cpython-310.pyc new file mode 100644 index 0000000..52ad16b Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter3-bindings/__pycache__/bindings.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter3-bindings/app.qml b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter3-bindings/app.qml new file mode 100644 index 0000000..277b897 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter3-bindings/app.qml @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt for Python examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +//![0] +import Charts 1.0 +import QtQuick 2.0 + +Item { + width: 300; height: 200 + + Row { + anchors.centerIn: parent + spacing: 20 + + PieChart { + id: chartA + width: 100; height: 100 + color: "red" + } + + PieChart { + id: chartB + width: 100; height: 100 + color: chartA.color + } + } + + MouseArea { + anchors.fill: parent + onClicked: { chartA.color = "blue" } + } + + Text { + anchors { + bottom: parent.bottom; + horizontalCenter: parent.horizontalCenter; + bottomMargin: 20 + } + text: "Click anywhere to change the chart color" + } +} +//![0] diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter3-bindings/bindings.py b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter3-bindings/bindings.py new file mode 100644 index 0000000..f20fc0b --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter3-bindings/bindings.py @@ -0,0 +1,109 @@ + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from __future__ import print_function + +"""PySide2 port of the qml/tutorials/extending-qml/chapter3-bindings example from Qt v5.x""" + +import sys, os +sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', '..', 'utils')) +from utils import text_type + +from PySide2.QtCore import Property, Signal, Slot, QUrl, Qt +from PySide2.QtGui import QGuiApplication, QPen, QPainter, QColor +from PySide2.QtQml import qmlRegisterType +from PySide2.QtQuick import QQuickPaintedItem, QQuickView + +class PieChart (QQuickPaintedItem): + def __init__(self, parent = None): + QQuickPaintedItem.__init__(self, parent) + self._name = u'' + self._color = QColor() + + def paint(self, painter): + pen = QPen(self._color, 2) + painter.setPen(pen) + painter.setRenderHints(QPainter.Antialiasing, True) + painter.drawPie(self.boundingRect().adjusted(1,1,-1,-1), 90 * 16, 290 * 16) + + def getColor(self): + return self._color + + def setColor(self, value): + if value != self._color: + self._color = value + self.update() + self.colorChanged.emit() + + def getName(self): + return self._name + + def setName(self, value): + self._name = value + + colorChanged = Signal() + color = Property(QColor, getColor, setColor, notify=colorChanged) + name = Property(text_type, getName, setName) + chartCleared = Signal() + + @Slot() # This should be something like @Invokable + def clearChart(self): + self.setColor(Qt.transparent) + self.update() + self.chartCleared.emit() + +if __name__ == '__main__': + app = QGuiApplication(sys.argv) + + qmlRegisterType(PieChart, 'Charts', 1, 0, 'PieChart') + + view = QQuickView() + view.setResizeMode(QQuickView.SizeRootObjectToView) + qmlFile = os.path.join(os.path.dirname(__file__), 'app.qml') + view.setSource(QUrl.fromLocalFile(os.path.abspath(qmlFile))) + if view.status() == QQuickView.Error: + sys.exit(-1) + view.show() + res = app.exec_() + # Deleting the view before it goes out of scope is required to make sure all child QML instances + # are destroyed in the correct order. + del view + sys.exit(res) diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter3-bindings/chapter3-bindings.pyproject b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter3-bindings/chapter3-bindings.pyproject new file mode 100644 index 0000000..6e21f86 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter3-bindings/chapter3-bindings.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["app.qml", "bindings.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter4-customPropertyTypes/__pycache__/customPropertyTypes.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter4-customPropertyTypes/__pycache__/customPropertyTypes.cpython-310.pyc new file mode 100644 index 0000000..2835919 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter4-customPropertyTypes/__pycache__/customPropertyTypes.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter4-customPropertyTypes/app.qml b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter4-customPropertyTypes/app.qml new file mode 100644 index 0000000..29ad37d --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter4-customPropertyTypes/app.qml @@ -0,0 +1,60 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt for Python examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +//![0] +import Charts 1.0 +import QtQuick 2.0 + +Item { + width: 300; height: 200 + + PieChart { + id: chart + anchors.centerIn: parent + width: 100; height: 100 + + pieSlice: PieSlice { + anchors.fill: parent + color: "red" + } + } + + Component.onCompleted: console.log("The pie is colored " + chart.pieSlice.color) +} +//![0] diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pyproject b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pyproject new file mode 100644 index 0000000..af1cfef --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["app.qml", "customPropertyTypes.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter4-customPropertyTypes/customPropertyTypes.py b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter4-customPropertyTypes/customPropertyTypes.py new file mode 100644 index 0000000..66e4dea --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter4-customPropertyTypes/customPropertyTypes.py @@ -0,0 +1,115 @@ + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from __future__ import print_function + +"""PySide2 port of the qml/tutorials/extending-qml/chapter4-customPropertyTypes example from Qt v5.x""" + +import sys, os +sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', '..', 'utils')) +from utils import text_type + +from PySide2.QtCore import Property, QUrl +from PySide2.QtGui import QGuiApplication, QPen, QPainter, QColor +from PySide2.QtQml import qmlRegisterType +from PySide2.QtQuick import QQuickPaintedItem, QQuickView, QQuickItem + +class PieSlice (QQuickPaintedItem): + + def __init__(self, parent = None): + QQuickPaintedItem.__init__(self, parent) + self._color = QColor() + + def getColor(self): + return self._color + + def setColor(self, value): + self._color = value + + color = Property(QColor, getColor, setColor) + + def paint(self, painter): + pen = QPen(self._color, 2) + painter.setPen(pen) + painter.setRenderHints(QPainter.Antialiasing, True) + painter.drawPie(self.boundingRect().adjusted(1,1,-1,-1), 90 * 16, 290 * 16) + +class PieChart (QQuickItem): + def __init__(self, parent = None): + QQuickItem.__init__(self, parent) + self._name = None + self._pieSlice = None + + def getName(self): + return self._name + + def setName(self, value): + self._name = value + + name = Property(text_type, getName, setName) + + def getPieSlice(self): + return self._pieSlice + + def setPieSlice(self, value): + self._pieSlice = value + self._pieSlice.setParentItem(self) + + pieSlice = Property(PieSlice, getPieSlice, setPieSlice) + +if __name__ == '__main__': + app = QGuiApplication(sys.argv) + + qmlRegisterType(PieChart, 'Charts', 1, 0, 'PieChart') + qmlRegisterType(PieSlice, "Charts", 1, 0, "PieSlice") + + view = QQuickView() + view.setResizeMode(QQuickView.SizeRootObjectToView) + qmlFile = os.path.join(os.path.dirname(__file__), 'app.qml') + view.setSource(QUrl.fromLocalFile(os.path.abspath(qmlFile))) + if view.status() == QQuickView.Error: + sys.exit(-1) + view.show() + res = app.exec_() + # Deleting the view before it goes out of scope is required to make sure all child QML instances + # are destroyed in the correct order. + del view + sys.exit(res) diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter5-listproperties/__pycache__/listproperties.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter5-listproperties/__pycache__/listproperties.cpython-310.pyc new file mode 100644 index 0000000..8bc3347 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter5-listproperties/__pycache__/listproperties.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter5-listproperties/app.qml b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter5-listproperties/app.qml new file mode 100644 index 0000000..9ff6e3b --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter5-listproperties/app.qml @@ -0,0 +1,70 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt for Python examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +//![0] +import Charts 1.0 +import QtQuick 2.0 + +Item { + width: 300; height: 200 + + PieChart { + anchors.centerIn: parent + width: 100; height: 100 + + slices: [ + PieSlice { + anchors.fill: parent + color: "red" + fromAngle: 0; angleSpan: 110 + }, + PieSlice { + anchors.fill: parent + color: "black" + fromAngle: 110; angleSpan: 50 + }, + PieSlice { + anchors.fill: parent + color: "blue" + fromAngle: 160; angleSpan: 100 + } + ] + } +} +//![0] diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter5-listproperties/chapter5-listproperties.pyproject b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter5-listproperties/chapter5-listproperties.pyproject new file mode 100644 index 0000000..a3f89d5 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter5-listproperties/chapter5-listproperties.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["app.qml", "listproperties.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter5-listproperties/listproperties.py b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter5-listproperties/listproperties.py new file mode 100644 index 0000000..659f8d5 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/extending/chapter5-listproperties/listproperties.py @@ -0,0 +1,127 @@ + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from __future__ import print_function + +"""PySide2 port of the qml/tutorials/extending-qml/chapter5-listproperties example from Qt v5.x""" + +import sys, os +sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', '..', 'utils')) +from utils import text_type + +from PySide2.QtCore import Property, QUrl +from PySide2.QtGui import QGuiApplication, QPen, QPainter, QColor +from PySide2.QtQml import qmlRegisterType, ListProperty +from PySide2.QtQuick import QQuickPaintedItem, QQuickView, QQuickItem + +class PieSlice (QQuickPaintedItem): + def __init__(self, parent = None): + QQuickPaintedItem.__init__(self, parent) + self._color = QColor() + self._fromAngle = 0 + self._angleSpan = 0 + + def getColor(self): + return self._color + + def setColor(self, value): + self._color = value + + def getFromAngle(self): + return self._angle + + def setFromAngle(self, value): + self._fromAngle = value + + def getAngleSpan(self): + return self._angleSpan + + def setAngleSpan(self, value): + self._angleSpan = value + + color = Property(QColor, getColor, setColor) + fromAngle = Property(int, getFromAngle, setFromAngle) + angleSpan = Property(int, getAngleSpan, setAngleSpan) + + def paint(self, painter): + pen = QPen(self._color, 2) + painter.setPen(pen) + painter.setRenderHints(QPainter.Antialiasing, True) + painter.drawPie(self.boundingRect().adjusted(1,1,-1,-1), self._fromAngle * 16, self._angleSpan * 16) + +class PieChart (QQuickItem): + def __init__(self, parent = None): + QQuickItem.__init__(self, parent) + self._name = u'' + self._slices = [] + + def getName(self): + return self._name + + def setName(self, value): + self._name = value + + name = Property(text_type, getName, setName) + + def appendSlice(self, _slice): + _slice.setParentItem(self) + self._slices.append(_slice) + + slices = ListProperty(PieSlice, appendSlice) + +if __name__ == '__main__': + app = QGuiApplication(sys.argv) + + qmlRegisterType(PieChart, 'Charts', 1, 0, 'PieChart') + qmlRegisterType(PieSlice, "Charts", 1, 0, "PieSlice") + + view = QQuickView() + view.setResizeMode(QQuickView.SizeRootObjectToView) + qmlFile = os.path.join(os.path.dirname(__file__), 'app.qml') + view.setSource(QUrl.fromLocalFile(os.path.abspath(qmlFile))) + if view.status() == QQuickView.Error: + sys.exit(-1) + view.show() + res = app.exec_() + # Deleting the view before it goes out of scope is required to make sure all child QML instances + # are destroyed in the correct order. + del view + sys.exit(res) diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/scrolling.py b/venv/Lib/site-packages/PySide2/examples/declarative/scrolling.py new file mode 100644 index 0000000..b4a0ee2 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/scrolling.py @@ -0,0 +1,71 @@ + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from __future__ import print_function + +import os +import sys +from PySide2.QtCore import QUrl +from PySide2.QtGui import QGuiApplication +from PySide2.QtQuick import QQuickView + +# This example uses a QML file to show a scrolling list containing +# all the items listed in dataList. + +if __name__ == '__main__': + dataList = ["Item 1", "Item 2", "Item 3", "Item 4"] + + app = QGuiApplication(sys.argv) + view = QQuickView() + + ctxt = view.rootContext() + ctxt.setContextProperty("myModel", dataList) + + qmlFile = os.path.join(os.path.dirname(__file__), 'view.qml') + view.setSource(QUrl.fromLocalFile(os.path.abspath(qmlFile))) + if view.status() == QQuickView.Error: + sys.exit(-1) + view.show() + + app.exec_() + # Deleting the view before it goes out of scope is required to make sure all child QML instances + # are destroyed in the correct order. + del view diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/signals/pytoqml1/__pycache__/main.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/declarative/signals/pytoqml1/__pycache__/main.cpython-310.pyc new file mode 100644 index 0000000..0c150f7 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/declarative/signals/pytoqml1/__pycache__/main.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/signals/pytoqml1/main.py b/venv/Lib/site-packages/PySide2/examples/declarative/signals/pytoqml1/main.py new file mode 100644 index 0000000..218d885 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/signals/pytoqml1/main.py @@ -0,0 +1,70 @@ + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from __future__ import print_function + +import os +import sys +from PySide2.QtCore import QTimer, QUrl +from PySide2.QtGui import QGuiApplication +from PySide2.QtQuick import QQuickView + +if __name__ == '__main__': + app = QGuiApplication(sys.argv) + + timer = QTimer() + timer.start(2000) + + view = QQuickView() + qmlFile = os.path.join(os.path.dirname(__file__), 'view.qml') + view.setSource(QUrl.fromLocalFile(os.path.abspath(qmlFile))) + if view.status() == QQuickView.Error: + sys.exit(-1) + root = view.rootObject() + + timer.timeout.connect(root.updateRotater) + + view.show() + res = app.exec_() + # Deleting the view before it goes out of scope is required to make sure all child QML instances + # are destroyed in the correct order. + del view + sys.exit(res) diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/signals/pytoqml1/pytoqml1.pyproject b/venv/Lib/site-packages/PySide2/examples/declarative/signals/pytoqml1/pytoqml1.pyproject new file mode 100644 index 0000000..e6f087c --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/signals/pytoqml1/pytoqml1.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["main.py", "view.qml"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/signals/pytoqml1/view.qml b/venv/Lib/site-packages/PySide2/examples/declarative/signals/pytoqml1/view.qml new file mode 100644 index 0000000..a35b486 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/signals/pytoqml1/view.qml @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt for Python examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Rectangle { + id: page + + function updateRotater() { + rotater.angle = rotater.angle + 45 + } + + width: 500; height: 200 + color: "lightgray" + + Rectangle { + id: rotater + property real angle : 0 + x: 240 + width: 100; height: 10 + color: "black" + y: 95 + + transform: Rotation { + origin.x: 10; origin.y: 5 + angle: rotater.angle + Behavior on angle { + SpringAnimation { + spring: 1.4 + damping: .05 + } + } + } + } + +} diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy1/__pycache__/main.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy1/__pycache__/main.cpython-310.pyc new file mode 100644 index 0000000..5fbb283 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy1/__pycache__/main.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy1/main.py b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy1/main.py new file mode 100644 index 0000000..1342dba --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy1/main.py @@ -0,0 +1,87 @@ + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from __future__ import print_function + +import os +import sys +from PySide2.QtCore import QObject, QUrl, Slot +from PySide2.QtGui import QGuiApplication +from PySide2.QtQuick import QQuickView + +class Console(QObject): + """Output stuff on the console.""" + + @Slot(str) + @Slot('double') + def output(self, s): + print(s) + + @Slot(str) + def outputStr(self, s): + print(s) + + @Slot('double') + def outputFloat(self, x): + print(x) + + +if __name__ == '__main__': + app = QGuiApplication(sys.argv) + view = QQuickView() + + # Instantiate the Python object. + con = Console() + + # Expose the object to QML. + context = view.rootContext() + context.setContextProperty("con", con) + + qmlFile = os.path.join(os.path.dirname(__file__), 'view.qml') + view.setSource(QUrl.fromLocalFile(os.path.abspath(qmlFile))) + if view.status() == QQuickView.Error: + sys.exit(-1) + view.show() + res = app.exec_() + # Deleting the view before it goes out of scope is required to make sure all child QML instances + # are destroyed in the correct order. + del view + sys.exit(res) diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy1/qmltopy1.pyproject b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy1/qmltopy1.pyproject new file mode 100644 index 0000000..e6f087c --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy1/qmltopy1.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["main.py", "view.qml"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy1/view.qml b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy1/view.qml new file mode 100644 index 0000000..32a66ef --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy1/view.qml @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt for Python examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +import QtQuick 2.0 + +Rectangle { + id: page + + width: 500; height: 200 + color: "lightgray" + + Text { + id: helloText + text: "Hello world!" + anchors.horizontalCenter: page.horizontalCenter + y: 30 + font.pointSize: 24; font.bold: true + } + + Rectangle { + id: button + width: 150; height: 40 + color: "darkgray" + anchors.horizontalCenter: page.horizontalCenter + y: 120 + MouseArea { + id: buttonMouseArea + objectName: "buttonMouseArea" + anchors.fill: parent + onClicked: { + // once the "con" context has been declared, + // slots can be called like functions + con.outputFloat(123) + con.outputStr("foobar") + con.output(helloText.x) + con.output(helloText.text) + } + } + Text { + id: buttonText + text: "Press me!" + anchors.horizontalCenter: button.horizontalCenter + anchors.verticalCenter: button.verticalCenter + font.pointSize: 16 + } + } +} diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy2/__pycache__/main.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy2/__pycache__/main.cpython-310.pyc new file mode 100644 index 0000000..c40c7aa Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy2/__pycache__/main.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy2/main.py b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy2/main.py new file mode 100644 index 0000000..9b0aca8 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy2/main.py @@ -0,0 +1,79 @@ + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from __future__ import print_function + +import os +import sys +from PySide2.QtCore import QObject, QUrl, Slot +from PySide2.QtGui import QGuiApplication +from PySide2.QtQuick import QQuickView + +class RotateValue(QObject): + def __init__(self): + super(RotateValue,self).__init__() + self.r = 0 + + # If a slot returns a value, the return value type must be explicitly + # defined in the decorator. + @Slot(result=int) + def val(self): + self.r = self.r + 10 + return self.r + +if __name__ == '__main__': + app = QGuiApplication(sys.argv) + view = QQuickView() + + rotatevalue = RotateValue() + context = view.rootContext() + context.setContextProperty("rotatevalue", rotatevalue) + + qmlFile = os.path.join(os.path.dirname(__file__), 'view.qml') + view.setSource(QUrl.fromLocalFile(os.path.abspath(qmlFile))) + if view.status() == QQuickView.Error: + sys.exit(-1) + view.show() + res = app.exec_() + # Deleting the view before it goes out of scope is required to make sure all child QML instances + # are destroyed in the correct order. + del view + sys.exit(res) diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy2/qmltopy2.pyproject b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy2/qmltopy2.pyproject new file mode 100644 index 0000000..e6f087c --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy2/qmltopy2.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["main.py", "view.qml"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy2/view.qml b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy2/view.qml new file mode 100644 index 0000000..6fe6087 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy2/view.qml @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt for Python examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Rectangle { + id: page + + width: 500; height: 200 + color: "lightgray" + + Text { + id: helloText + text: "Hello world!" + anchors.horizontalCenter: page.horizontalCenter + y: 30 + font.pointSize: 24; font.bold: true + } + + + Rectangle { + id: button + width: 150; height: 40 + color: "darkgray" + anchors.horizontalCenter: page.horizontalCenter + y: 120 + MouseArea { + id: buttonMouseArea + objectName: "buttonMouseArea" + anchors.fill: parent + onClicked: { + helloText.rotation = rotatevalue.val() + } + } + Text { + id: buttonText + text: "Press me!" + anchors.horizontalCenter: button.horizontalCenter + anchors.verticalCenter: button.verticalCenter + font.pointSize: 16 + } + } +} diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy3/__pycache__/main.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy3/__pycache__/main.cpython-310.pyc new file mode 100644 index 0000000..47608ea Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy3/__pycache__/main.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy3/main.py b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy3/main.py new file mode 100644 index 0000000..485dd62 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy3/main.py @@ -0,0 +1,70 @@ + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from __future__ import print_function + +import os +import sys +from PySide2.QtCore import QUrl +from PySide2.QtGui import QGuiApplication +from PySide2.QtQuick import QQuickView + +def sayThis(s): + print(s) + +if __name__ == '__main__': + app = QGuiApplication(sys.argv) + view = QQuickView() + qmlFile = os.path.join(os.path.dirname(__file__), 'view.qml') + view.setSource(QUrl.fromLocalFile(os.path.abspath(qmlFile))) + if view.status() == QQuickView.Error: + sys.exit(-1) + + root = view.rootObject() + root.textRotationChanged.connect(sayThis) + root.buttonClicked.connect(lambda: sayThis("clicked button (QML top-level signal)")) + + view.show() + res = app.exec_() + # Deleting the view before it goes out of scope is required to make sure all child QML instances + # are destroyed in the correct order. + del view + sys.exit(res) diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy3/qmltopy3.pyproject b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy3/qmltopy3.pyproject new file mode 100644 index 0000000..e6f087c --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy3/qmltopy3.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["main.py", "view.qml"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy3/view.qml b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy3/view.qml new file mode 100644 index 0000000..9657cd4 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy3/view.qml @@ -0,0 +1,103 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt for Python examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Rectangle { + id: page + + signal buttonClicked + signal textRotationChanged(double rot) + + width: 500; height: 200 + color: "lightgray" + + Text { + id: helloText + text: "Hello world!" + y: 30 + x: page.width/2-width/2 + font.pointSize: 24; font.bold: true + onRotationChanged: textRotationChanged(rotation) + + states: State { + name: "down"; when: buttonMouseArea.pressed === true + PropertyChanges { + target: helloText; + rotation: 180; + y: 100; + } + } + + transitions: Transition { + from: ""; to: "down"; reversible: true + ParallelAnimation { + NumberAnimation { + properties: "y,rotation" + duration: 500 + easing.type: Easing.InOutQuad + } + } + } + } + + Rectangle { + id: button + width: 150; height: 40 + color: "darkgray" + anchors.horizontalCenter: page.horizontalCenter + y: 120 + MouseArea { + id: buttonMouseArea + objectName: "buttonMouseArea" + anchors.fill: parent + onClicked: { + buttonClicked() + } + } + Text { + id: buttonText + text: "Press me!" + anchors.horizontalCenter: button.horizontalCenter + anchors.verticalCenter: button.verticalCenter + font.pointSize: 16 + } + } +} diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy4/__pycache__/main.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy4/__pycache__/main.cpython-310.pyc new file mode 100644 index 0000000..4e38621 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy4/__pycache__/main.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy4/main.py b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy4/main.py new file mode 100644 index 0000000..d165e61 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy4/main.py @@ -0,0 +1,70 @@ + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from __future__ import print_function + +import os +import sys +from PySide2.QtCore import QObject, QUrl +from PySide2.QtGui import QGuiApplication +from PySide2.QtQuick import QQuickView + +def sayThis(s): + print(s) + +if __name__ == '__main__': + app = QGuiApplication(sys.argv) + view = QQuickView() + qmlFile = os.path.join(os.path.dirname(__file__), 'view.qml') + view.setSource(QUrl.fromLocalFile(os.path.abspath(qmlFile))) + if view.status() == QQuickView.Error: + sys.exit(-1) + + root = view.rootObject() + button = root.findChild(QObject, "buttonMouseArea") + button.clicked.connect(lambda: sayThis("clicked button (signal directly connected)")) + + view.show() + res = app.exec_() + # Deleting the view before it goes out of scope is required to make sure all child QML instances + # are destroyed in the correct order. + del view + sys.exit(res) diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy4/qmltopy4.pyproject b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy4/qmltopy4.pyproject new file mode 100644 index 0000000..e6f087c --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy4/qmltopy4.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["main.py", "view.qml"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy4/view.qml b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy4/view.qml new file mode 100644 index 0000000..0d1349f --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/signals/qmltopy4/view.qml @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt for Python examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Rectangle { + id: page + + width: 500; height: 200 + color: "lightgray" + + Rectangle { + id: button + width: 150; height: 40 + color: "darkgray" + anchors.horizontalCenter: page.horizontalCenter + anchors.verticalCenter: page.verticalCenter + MouseArea { + id: buttonMouseArea + objectName: "buttonMouseArea" + anchors.fill: parent + } + Text { + id: buttonText + text: "Press me!" + anchors.horizontalCenter: button.horizontalCenter + anchors.verticalCenter: button.verticalCenter + font.pointSize: 16 + } + } +} diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/textproperties/__pycache__/main.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/declarative/textproperties/__pycache__/main.cpython-310.pyc new file mode 100644 index 0000000..766ceb6 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/declarative/textproperties/__pycache__/main.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/textproperties/main.py b/venv/Lib/site-packages/PySide2/examples/declarative/textproperties/main.py new file mode 100644 index 0000000..2f9b987 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/textproperties/main.py @@ -0,0 +1,113 @@ +############################################################################# +## +## Copyright (C) 2018 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +import sys +from os.path import abspath, dirname, join + +from PySide2.QtCore import QObject, Slot +from PySide2.QtGui import QGuiApplication +from PySide2.QtQml import QQmlApplicationEngine +from PySide2.QtQuickControls2 import QQuickStyle + + +class Bridge(QObject): + + @Slot(str, result=str) + def getColor(self, s): + if s.lower() == "red": + return "#ef9a9a" + elif s.lower() == "green": + return "#a5d6a7" + elif s.lower() == "blue": + return "#90caf9" + else: + return "white" + + @Slot(float, result=int) + def getSize(self, s): + size = int(s * 34) + if size <= 0: + return 1 + else: + return size + + @Slot(str, result=bool) + def getItalic(self, s): + if s.lower() == "italic": + return True + else: + return False + + @Slot(str, result=bool) + def getBold(self, s): + if s.lower() == "bold": + return True + else: + return False + + @Slot(str, result=bool) + def getUnderline(self, s): + if s.lower() == "underline": + return True + else: + return False + + +if __name__ == '__main__': + app = QGuiApplication(sys.argv) + QQuickStyle.setStyle("Material") + engine = QQmlApplicationEngine() + + # Instance of the Python object + bridge = Bridge() + + # Expose the Python object to QML + context = engine.rootContext() + context.setContextProperty("con", bridge) + + # Get the path of the current directory, and then add the name + # of the QML file, to load it. + qmlFile = join(dirname(__file__), 'view.qml') + engine.load(abspath(qmlFile)) + + if not engine.rootObjects(): + sys.exit(-1) + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/textproperties/textproperties.pyproject b/venv/Lib/site-packages/PySide2/examples/declarative/textproperties/textproperties.pyproject new file mode 100644 index 0000000..e6f087c --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/textproperties/textproperties.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["main.py", "view.qml"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/textproperties/view.qml b/venv/Lib/site-packages/PySide2/examples/declarative/textproperties/view.qml new file mode 100644 index 0000000..98289a1 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/textproperties/view.qml @@ -0,0 +1,191 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt for Python examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +import QtQuick 2.0 +import QtQuick.Layouts 1.11 +import QtQuick.Controls 2.1 +import QtQuick.Window 2.1 +import QtQuick.Controls.Material 2.1 + +ApplicationWindow { + id: page + width: 800 + height: 400 + visible: true + Material.theme: Material.Dark + Material.accent: Material.Red + + GridLayout { + id: grid + columns: 2 + rows: 3 + + ColumnLayout { + spacing: 2 + Layout.columnSpan: 1 + Layout.preferredWidth: 400 + + Text { + id: leftlabel + Layout.alignment: Qt.AlignHCenter + color: "white" + font.pointSize: 16 + text: "Qt for Python" + Layout.preferredHeight: 100 + Material.accent: Material.Green + } + + RadioButton { + id: italic + Layout.alignment: Qt.AlignLeft + text: "Italic" + onToggled: { + leftlabel.font.italic = con.getItalic(italic.text) + leftlabel.font.bold = con.getBold(italic.text) + leftlabel.font.underline = con.getUnderline(italic.text) + + } + } + RadioButton { + id: bold + Layout.alignment: Qt.AlignLeft + text: "Bold" + onToggled: { + leftlabel.font.italic = con.getItalic(bold.text) + leftlabel.font.bold = con.getBold(bold.text) + leftlabel.font.underline = con.getUnderline(bold.text) + } + } + RadioButton { + id: underline + Layout.alignment: Qt.AlignLeft + text: "Underline" + onToggled: { + leftlabel.font.italic = con.getItalic(underline.text) + leftlabel.font.bold = con.getBold(underline.text) + leftlabel.font.underline = con.getUnderline(underline.text) + } + } + RadioButton { + id: noneradio + Layout.alignment: Qt.AlignLeft + text: "None" + checked: true + onToggled: { + leftlabel.font.italic = con.getItalic(noneradio.text) + leftlabel.font.bold = con.getBold(noneradio.text) + leftlabel.font.underline = con.getUnderline(noneradio.text) + } + } + } + + ColumnLayout { + id: rightcolumn + spacing: 2 + Layout.columnSpan: 1 + Layout.preferredWidth: 400 + Layout.preferredHeight: 400 + Layout.fillWidth: true + + RowLayout { + Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter + + + Button { + id: red + text: "Red" + highlighted: true + Material.accent: Material.Red + onClicked: { + leftlabel.color = con.getColor(red.text) + } + } + Button { + id: green + text: "Green" + highlighted: true + Material.accent: Material.Green + onClicked: { + leftlabel.color = con.getColor(green.text) + } + } + Button { + id: blue + text: "Blue" + highlighted: true + Material.accent: Material.Blue + onClicked: { + leftlabel.color = con.getColor(blue.text) + } + } + Button { + id: nonebutton + text: "None" + highlighted: true + Material.accent: Material.BlueGrey + onClicked: { + leftlabel.color = con.getColor(nonebutton.text) + } + } + } + RowLayout { + Layout.fillWidth: true + Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter + Text { + id: rightlabel + color: "white" + Layout.alignment: Qt.AlignLeft + text: "Font size" + Material.accent: Material.White + } + Slider { + width: rightcolumn.width*0.6 + Layout.alignment: Qt.AlignRight + id: slider + value: 0.5 + onValueChanged: { + leftlabel.font.pointSize = con.getSize(value) + } + } + } + } + } +} diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/usingmodel.py b/venv/Lib/site-packages/PySide2/examples/declarative/usingmodel.py new file mode 100644 index 0000000..9b67bd0 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/usingmodel.py @@ -0,0 +1,100 @@ + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from __future__ import print_function + +import os +import sys +from PySide2.QtCore import QAbstractListModel, Qt, QUrl, QByteArray +from PySide2.QtGui import QGuiApplication +from PySide2.QtQuick import QQuickView + +class PersonModel (QAbstractListModel): + MyRole = Qt.UserRole + 1 + + def __init__(self, parent = None): + QAbstractListModel.__init__(self, parent) + self._data = [] + + def roleNames(self): + roles = { + PersonModel.MyRole : QByteArray(b'modelData'), + Qt.DisplayRole : QByteArray(b'display') + } + return roles + + def rowCount(self, index): + return len(self._data) + + def data(self, index, role): + d = self._data[index.row()] + + if role == Qt.DisplayRole: + return d['name'] + elif role == Qt.DecorationRole: + return Qt.black + elif role == PersonModel.MyRole: + return d['myrole'] + return None + + def populate(self): + self._data.append({'name':'Qt', 'myrole':'role1'}) + self._data.append({'name':'PySide', 'myrole':'role2'}) + +if __name__ == '__main__': + app = QGuiApplication(sys.argv) + view = QQuickView() + view.setResizeMode(QQuickView.SizeRootObjectToView) + + myModel = PersonModel() + myModel.populate() + + view.rootContext().setContextProperty("myModel", myModel) + qmlFile = os.path.join(os.path.dirname(__file__), 'view.qml') + view.setSource(QUrl.fromLocalFile(os.path.abspath(qmlFile))) + if view.status() == QQuickView.Error: + sys.exit(-1) + view.show() + + app.exec_() + # Deleting the view before it goes out of scope is required to make sure all child QML instances + # are destroyed in the correct order. + del view diff --git a/venv/Lib/site-packages/PySide2/examples/declarative/view.qml b/venv/Lib/site-packages/PySide2/examples/declarative/view.qml new file mode 100644 index 0000000..8eb4f7f --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/declarative/view.qml @@ -0,0 +1,65 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt for Python examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +ListView { + width: 100 + height: 100 + anchors.fill: parent + model: myModel + delegate: Component { + Rectangle { + height: 25 + width: 100 + Text { + function displayText() { + var result = "" + if (typeof display !== "undefined") + result = display + ": " + result += modelData + return result + } + + text: displayText() + } + } + } +} diff --git a/venv/Lib/site-packages/PySide2/examples/examples.pyproject b/venv/Lib/site-packages/PySide2/examples/examples.pyproject new file mode 100644 index 0000000..330884f --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/examples.pyproject @@ -0,0 +1,106 @@ +{ + "files": ["charts/memoryusage.py", + "corelib/threads/mandelbrot.py", + "corelib/tools/codecs/codecs.py", + "corelib/tools/regexp.py", + "corelib/tools/settingseditor/settingseditor.py", + "declarative/extending/chapter1-basics/basics.py", + "declarative/extending/chapter2-methods/methods.py", + "declarative/extending/chapter3-bindings/bindings.py", + "declarative/extending/chapter4-customPropertyTypes/customPropertyTypes.py", + "declarative/extending/chapter5-listproperties/listproperties.py", + "declarative/scrolling.py", + "declarative/signals/pytoqml1/main.py", + "declarative/signals/qmltopy1/main.py", + "declarative/signals/qmltopy2/main.py", + "declarative/signals/qmltopy3/main.py", + "declarative/signals/qmltopy4/main.py", + "declarative/usingmodel.py", + "installer_test/hello.py", + "macextras/macpasteboardmime.py", + "multimedia/audiooutput.py", + "multimedia/camera.py", + "multimedia/player.py", + "network/blockingfortuneclient.py", + "network/fortuneclient.py", + "network/fortuneserver.py", + "network/threadedfortuneserver.py", + "opengl/2dpainting.py", + "opengl/grabber.py", + "opengl/hellogl.py", + "opengl/overpainting.py", + "opengl/samplebuffers.py", + "opengl/textures/textures.py", + "script/helloscript.py", + "texttospeech/texttospeech.py", + "tutorial/t1.py", + "tutorial/t10.py", + "tutorial/t11.py", + "tutorial/t12.py", + "tutorial/t13.py", + "tutorial/t14.py", + "tutorial/t2.py", + "tutorial/t3.py", + "tutorial/t4.py", + "tutorial/t5.py", + "tutorial/t6.py", + "tutorial/t7.py", + "tutorial/t8.py", + "tutorial/t9.py", + "webenginewidgets/simplebrowser.py", + "widgets/animation/animatedtiles/animatedtiles.py", + "widgets/animation/appchooser/appchooser.py", + "widgets/animation/easing/easing.py", + "widgets/animation/states/states.py", + "widgets/dialogs/classwizard/classwizard.py", + "widgets/dialogs/extension.py", + "widgets/dialogs/findfiles.py", + "widgets/dialogs/standarddialogs.py", + "widgets/dialogs/trivialwizard.py", + "widgets/draganddrop/draggabletext/draggabletext.py", + "widgets/effects/lighting.py", + "widgets/graphicsview/anchorlayout.py", + "widgets/graphicsview/collidingmice/collidingmice.py", + "widgets/graphicsview/diagramscene/diagramscene.py", + "widgets/graphicsview/dragdroprobot/dragdroprobot.py", + "widgets/graphicsview/elasticnodes.py", + "widgets/itemviews/addressbook/adddialogwidget.py", + "widgets/itemviews/addressbook/addressbook.py", + "widgets/itemviews/addressbook/addresswidget.py", + "widgets/itemviews/addressbook/newaddresstab.py", + "widgets/itemviews/addressbook/tablemodel.py", + "widgets/itemviews/basicsortfiltermodel.py", + "widgets/itemviews/fetchmore.py", + "widgets/itemviews/stardelegate/stardelegate.py", + "widgets/itemviews/stardelegate/stareditor.py", + "widgets/itemviews/stardelegate/starrating.py", + "widgets/layouts/basiclayouts.py", + "widgets/layouts/dynamiclayouts.py", + "widgets/layouts/flowlayout.py", + "widgets/mainwindows/application/application.py", + "widgets/mainwindows/dockwidgets/dockwidgets.py", + "widgets/mainwindows/mdi/mdi.py", + "widgets/painting/basicdrawing/basicdrawing.py", + "widgets/painting/concentriccircles.py", + "widgets/richtext/orderform.py", + "widgets/richtext/syntaxhighlighter.py", + "widgets/richtext/syntaxhighlighter/syntaxhighlighter.py", + "widgets/richtext/textobject/textobject.py", + "widgets/state-machine/eventtrans.py", + "widgets/state-machine/factstates.py", + "widgets/state-machine/pingpong.py", + "widgets/state-machine/rogue.py", + "widgets/state-machine/trafficlight.py", + "widgets/state-machine/twowaybutton.py", + "widgets/tutorials/addressbook/part1.py", + "widgets/tutorials/addressbook/part2.py", + "widgets/tutorials/addressbook/part3.py", + "widgets/tutorials/addressbook/part4.py", + "widgets/tutorials/addressbook/part5.py", + "widgets/tutorials/addressbook/part6.py", + "widgets/tutorials/addressbook/part7.py", + "widgets/widgets/hellogl_openglwidget_legacy.py", + "widgets/widgets/tetrix.py", + "xml/dombookmarks/dombookmarks.py", + "xmlpatterns/schema/schema.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/external/matplotlib/__pycache__/widget_3dplot.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/external/matplotlib/__pycache__/widget_3dplot.cpython-310.pyc new file mode 100644 index 0000000..42ef5a2 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/external/matplotlib/__pycache__/widget_3dplot.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/external/matplotlib/requirements.txt b/venv/Lib/site-packages/PySide2/examples/external/matplotlib/requirements.txt new file mode 100644 index 0000000..6ccafc3 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/external/matplotlib/requirements.txt @@ -0,0 +1 @@ +matplotlib diff --git a/venv/Lib/site-packages/PySide2/examples/external/matplotlib/widget_3dplot.py b/venv/Lib/site-packages/PySide2/examples/external/matplotlib/widget_3dplot.py new file mode 100644 index 0000000..b964056 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/external/matplotlib/widget_3dplot.py @@ -0,0 +1,242 @@ +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +import sys + +import numpy as np +from matplotlib.backends.backend_qt5agg import FigureCanvas +from matplotlib.figure import Figure +from mpl_toolkits.mplot3d import axes3d +from PySide2.QtCore import Qt, Slot +from PySide2.QtGui import QKeySequence +from PySide2.QtWidgets import (QAction, QApplication, QComboBox, QHBoxLayout, + QHeaderView, QLabel, QMainWindow, QSlider, + QTableWidget, QTableWidgetItem, QVBoxLayout, + QWidget) + + +"""This example implements the interaction between Qt Widgets and a 3D +matplotlib plot""" + + +class ApplicationWindow(QMainWindow): + def __init__(self, parent=None): + QMainWindow.__init__(self, parent) + + self.column_names = ["Column A", "Column B", "Column C"] + + # Central widget + self._main = QWidget() + self.setCentralWidget(self._main) + + # Main menu bar + self.menu = self.menuBar() + self.menu_file = self.menu.addMenu("File") + exit = QAction("Exit", self, triggered=qApp.quit) + self.menu_file.addAction(exit) + + self.menu_about = self.menu.addMenu("&About") + about = QAction("About Qt", self, shortcut=QKeySequence(QKeySequence.HelpContents), + triggered=qApp.aboutQt) + self.menu_about.addAction(about) + + # Figure (Left) + self.fig = Figure(figsize=(5, 3)) + self.canvas = FigureCanvas(self.fig) + + # Sliders (Left) + self.slider_azim = QSlider(minimum=0, maximum=360, orientation=Qt.Horizontal) + self.slider_elev = QSlider(minimum=0, maximum=360, orientation=Qt.Horizontal) + + self.slider_azim_layout = QHBoxLayout() + self.slider_azim_layout.addWidget(QLabel("{}".format(self.slider_azim.minimum()))) + self.slider_azim_layout.addWidget(self.slider_azim) + self.slider_azim_layout.addWidget(QLabel("{}".format(self.slider_azim.maximum()))) + + self.slider_elev_layout = QHBoxLayout() + self.slider_elev_layout.addWidget(QLabel("{}".format(self.slider_elev.minimum()))) + self.slider_elev_layout.addWidget(self.slider_elev) + self.slider_elev_layout.addWidget(QLabel("{}".format(self.slider_elev.maximum()))) + + # Table (Right) + self.table = QTableWidget() + header = self.table.horizontalHeader() + header.setSectionResizeMode(QHeaderView.Stretch) + + # ComboBox (Right) + self.combo = QComboBox() + self.combo.addItems(["Wired", "Surface", "Triangular Surface", "Sphere"]) + + # Right layout + rlayout = QVBoxLayout() + rlayout.setContentsMargins(1, 1, 1, 1) + rlayout.addWidget(QLabel("Plot type:")) + rlayout.addWidget(self.combo) + rlayout.addWidget(self.table) + + # Left layout + llayout = QVBoxLayout() + rlayout.setContentsMargins(1, 1, 1, 1) + llayout.addWidget(self.canvas, 88) + llayout.addWidget(QLabel("Azimuth:"), 1) + llayout.addLayout(self.slider_azim_layout, 5) + llayout.addWidget(QLabel("Elevation:"), 1) + llayout.addLayout(self.slider_elev_layout, 5) + + # Main layout + layout = QHBoxLayout(self._main) + layout.addLayout(llayout, 70) + layout.addLayout(rlayout, 30) + + # Signal and Slots connections + self.combo.currentTextChanged.connect(self.combo_option) + self.slider_azim.valueChanged.connect(self.rotate_azim) + self.slider_elev.valueChanged.connect(self.rotate_elev) + + # Initial setup + self.plot_wire() + self._ax.view_init(30, 30) + self.slider_azim.setValue(30) + self.slider_elev.setValue(30) + self.fig.canvas.mpl_connect("button_release_event", self.on_click) + + # Matplotlib slot method + def on_click(self, event): + azim, elev = self._ax.azim, self._ax.elev + self.slider_azim.setValue(azim + 180) + self.slider_elev.setValue(elev + 180) + + # Utils methods + + def set_table_data(self, X, Y, Z): + for i in range(len(X)): + self.table.setItem(i, 0, QTableWidgetItem("{:.2f}".format(X[i]))) + self.table.setItem(i, 1, QTableWidgetItem("{:.2f}".format(Y[i]))) + self.table.setItem(i, 2, QTableWidgetItem("{:.2f}".format(Z[i]))) + + def set_canvas_table_configuration(self, row_count, data): + self.fig.set_canvas(self.canvas) + self._ax = self.canvas.figure.add_subplot(projection="3d") + + self._ax.set_xlabel(self.column_names[0]) + self._ax.set_ylabel(self.column_names[1]) + self._ax.set_zlabel(self.column_names[2]) + + self.table.setRowCount(row_count) + self.table.setColumnCount(3) + self.table.setHorizontalHeaderLabels(self.column_names) + self.set_table_data(data[0], data[1], data[2]) + + # Plot methods + + def plot_wire(self): + # Data + self.X, self.Y, self.Z = axes3d.get_test_data(0.03) + + self.set_canvas_table_configuration(len(self.X[0]), (self.X[0], self.Y[0], self.Z[0])) + self._ax.plot_wireframe(self.X, self.Y, self.Z, rstride=10, cstride=10, cmap="viridis") + self.canvas.draw() + + def plot_surface(self): + # Data + self.X, self.Y = np.meshgrid(np.linspace(-6, 6, 30), np.linspace(-6, 6, 30)) + self.Z = np.sin(np.sqrt(self.X ** 2 + self.Y ** 2)) + + self.set_canvas_table_configuration(len(self.X[0]), (self.X[0], self.Y[0], self.Z[0])) + self._ax.plot_surface(self.X, self.Y, self.Z, + rstride=1, cstride=1, cmap="viridis", edgecolor="none") + self.canvas.draw() + + def plot_triangular_surface(self): + # Data + radii = np.linspace(0.125, 1.0, 8) + angles = np.linspace(0, 2 * np.pi, 36, endpoint=False)[..., np.newaxis] + self.X = np.append(0, (radii * np.cos(angles)).flatten()) + self.Y = np.append(0, (radii * np.sin(angles)).flatten()) + self.Z = np.sin(-self.X * self.Y) + + self.set_canvas_table_configuration(len(self.X), (self.X, self.Y, self.Z)) + self._ax.plot_trisurf(self.X, self.Y, self.Z, linewidth=0.2, antialiased=True) + self.canvas.draw() + + def plot_sphere(self): + # Data + u = np.linspace(0, 2 * np.pi, 100) + v = np.linspace(0, np.pi, 100) + self.X = 10 * np.outer(np.cos(u), np.sin(v)) + self.Y = 10 * np.outer(np.sin(u), np.sin(v)) + self.Z = 9 * np.outer(np.ones(np.size(u)), np.cos(v)) + + self.set_canvas_table_configuration(len(self.X), (self.X[0], self.Y[0], self.Z[0])) + self._ax.plot_surface(self.X, self.Y, self.Z) + self.canvas.draw() + + # Slots + + @Slot() + def combo_option(self, text): + if text == "Wired": + self.plot_wire() + elif text == "Surface": + self.plot_surface() + elif text == "Triangular Surface": + self.plot_triangular_surface() + elif text == "Sphere": + self.plot_sphere() + + @Slot() + def rotate_azim(self, value): + self._ax.view_init(self._ax.elev, value) + self.fig.set_canvas(self.canvas) + self.canvas.draw() + + @Slot() + def rotate_elev(self, value): + self._ax.view_init(value, self._ax.azim) + self.fig.set_canvas(self.canvas) + self.canvas.draw() + + +if __name__ == "__main__": + app = QApplication(sys.argv) + w = ApplicationWindow() + w.setFixedSize(1280, 720) + w.show() + app.exec_() diff --git a/venv/Lib/site-packages/PySide2/examples/external/opencv/__pycache__/webcam_pattern_detection.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/external/opencv/__pycache__/webcam_pattern_detection.cpython-310.pyc new file mode 100644 index 0000000..dbb93b1 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/external/opencv/__pycache__/webcam_pattern_detection.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/external/opencv/requirements.txt b/venv/Lib/site-packages/PySide2/examples/external/opencv/requirements.txt new file mode 100644 index 0000000..0dd006b --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/external/opencv/requirements.txt @@ -0,0 +1 @@ +opencv-python diff --git a/venv/Lib/site-packages/PySide2/examples/external/opencv/webcam_pattern_detection.py b/venv/Lib/site-packages/PySide2/examples/external/opencv/webcam_pattern_detection.py new file mode 100644 index 0000000..5532616 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/external/opencv/webcam_pattern_detection.py @@ -0,0 +1,207 @@ +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +import os +import sys +import time + +import cv2 +from PySide2.QtCore import Qt, QThread, Signal, Slot +from PySide2.QtGui import QImage, QKeySequence, QPixmap +from PySide2.QtWidgets import (QAction, QApplication, QComboBox, QGroupBox, + QHBoxLayout, QLabel, QMainWindow, QPushButton, + QSizePolicy, QVBoxLayout, QWidget) + + +"""This example uses the video from a webcam to apply pattern +detection from the OpenCV module. e.g.: face, eyes, body, etc.""" + + +class Thread(QThread): + updateFrame = Signal(QImage) + + def __init__(self, parent=None): + QThread.__init__(self, parent) + self.trained_file = None + self.status = True + self.cap = True + + def set_file(self, fname): + # The data comes with the 'opencv-python' module + self.trained_file = os.path.join(cv2.data.haarcascades, fname) + + def run(self): + self.cap = cv2.VideoCapture(0) + while self.status: + cascade = cv2.CascadeClassifier(self.trained_file) + ret, frame = self.cap.read() + if not ret: + continue + + # Reading frame in gray scale to process the pattern + gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) + + detections = cascade.detectMultiScale(gray_frame, scaleFactor=1.1, + minNeighbors=5, minSize=(30, 30)) + + # Drawing green rectangle around the pattern + for (x, y, w, h) in detections: + pos_ori = (x, y) + pos_end = (x + w, y + h) + color = (0, 255, 0) + cv2.rectangle(frame, pos_ori, pos_end, color, 2) + + # Reading the image in RGB to display it + color_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) + + # Creating and scaling QImage + h, w, ch = color_frame.shape + img = QImage(color_frame.data, w, h, ch * w, QImage.Format_RGB888) + scaled_img = img.scaled(640, 480, Qt.KeepAspectRatio) + + # Emit signal + self.updateFrame.emit(scaled_img) + sys.exit(-1) + + +class Window(QMainWindow): + def __init__(self): + QMainWindow.__init__(self) + # Title and dimensions + self.setWindowTitle("Patterns detection") + self.setGeometry(0, 0, 800, 500) + + # Main menu bar + self.menu = self.menuBar() + self.menu_file = self.menu.addMenu("File") + exit = QAction("Exit", self, triggered=qApp.quit) + self.menu_file.addAction(exit) + + self.menu_about = self.menu.addMenu("&About") + about = QAction("About Qt", self, shortcut=QKeySequence(QKeySequence.HelpContents), + triggered=qApp.aboutQt) + self.menu_about.addAction(about) + + # Create a label for the display camera + self.label = QLabel(self) + self.label.setFixedSize(640, 480) + + # Thread in charge of updating the image + self.th = Thread(self) + self.th.finished.connect(self.close) + self.th.updateFrame.connect(self.setImage) + + # Model group + self.group_model = QGroupBox("Trained model") + self.group_model.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) + model_layout = QHBoxLayout() + + self.combobox = QComboBox() + for xml_file in os.listdir(cv2.data.haarcascades): + if xml_file.endswith(".xml"): + self.combobox.addItem(xml_file) + + model_layout.addWidget(QLabel("File:"), 10) + model_layout.addWidget(self.combobox, 90) + self.group_model.setLayout(model_layout) + + # Buttons layout + buttons_layout = QHBoxLayout() + self.button1 = QPushButton("Start") + self.button2 = QPushButton("Stop/Close") + self.button1.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) + self.button2.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) + buttons_layout.addWidget(self.button2) + buttons_layout.addWidget(self.button1) + + right_layout = QHBoxLayout() + right_layout.addWidget(self.group_model, 1) + right_layout.addLayout(buttons_layout, 1) + + # Main layout + layout = QVBoxLayout() + layout.addWidget(self.label) + layout.addLayout(right_layout) + + # Central widget + widget = QWidget(self) + widget.setLayout(layout) + self.setCentralWidget(widget) + + # Connections + self.button1.clicked.connect(self.start) + self.button2.clicked.connect(self.kill_thread) + self.button2.setEnabled(False) + self.combobox.currentTextChanged.connect(self.set_model) + + @Slot() + def set_model(self, text): + self.th.set_file(text) + + @Slot() + def kill_thread(self): + print("Finishing...") + self.button2.setEnabled(False) + self.button1.setEnabled(True) + self.th.cap.release() + cv2.destroyAllWindows() + self.status = False + self.th.terminate() + # Give time for the thread to finish + time.sleep(1) + + @Slot() + def start(self): + print("Starting...") + self.button2.setEnabled(True) + self.button1.setEnabled(False) + self.th.set_file(self.combobox.currentText()) + self.th.start() + + @Slot(QImage) + def setImage(self, image): + self.label.setPixmap(QPixmap.fromImage(image)) + + +if __name__ == "__main__": + app = QApplication() + w = Window() + w.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/external/scikit/__pycache__/staining_colors_separation.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/external/scikit/__pycache__/staining_colors_separation.cpython-310.pyc new file mode 100644 index 0000000..41b8587 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/external/scikit/__pycache__/staining_colors_separation.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/external/scikit/requirements.txt b/venv/Lib/site-packages/PySide2/examples/external/scikit/requirements.txt new file mode 100644 index 0000000..391ca2f --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/external/scikit/requirements.txt @@ -0,0 +1 @@ +scikit-image diff --git a/venv/Lib/site-packages/PySide2/examples/external/scikit/staining_colors_separation.py b/venv/Lib/site-packages/PySide2/examples/external/scikit/staining_colors_separation.py new file mode 100644 index 0000000..051b2bc --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/external/scikit/staining_colors_separation.py @@ -0,0 +1,184 @@ +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +import sys + +import numpy as np +from matplotlib.backends.backend_qt5agg import FigureCanvas +from matplotlib.colors import LinearSegmentedColormap +from matplotlib.figure import Figure +from PySide2.QtCore import Qt, Slot +from PySide2.QtGui import QKeySequence +from PySide2.QtWidgets import (QAction, QApplication, QHBoxLayout, QLabel, + QMainWindow, QPushButton, QSizePolicy, + QVBoxLayout, QWidget) +from skimage import data +from skimage.color import rgb2hed +from skimage.exposure import rescale_intensity + + +class ApplicationWindow(QMainWindow): + """ + Example based on the example by 'scikit-image' gallery: + "Immunohistochemical staining colors separation" + https://scikit-image.org/docs/stable/auto_examples/color_exposure/plot_ihc_color_separation.html + """ + + def __init__(self, parent=None): + QMainWindow.__init__(self, parent) + self._main = QWidget() + self.setCentralWidget(self._main) + + # Main menu bar + self.menu = self.menuBar() + self.menu_file = self.menu.addMenu("File") + exit = QAction("Exit", self, triggered=qApp.quit) + self.menu_file.addAction(exit) + + self.menu_about = self.menu.addMenu("&About") + about = QAction("About Qt", self, shortcut=QKeySequence(QKeySequence.HelpContents), + triggered=qApp.aboutQt) + self.menu_about.addAction(about) + + # Create an artificial color close to the original one + self.ihc_rgb = data.immunohistochemistry() + self.ihc_hed = rgb2hed(self.ihc_rgb) + + main_layout = QVBoxLayout(self._main) + plot_layout = QHBoxLayout() + button_layout = QHBoxLayout() + label_layout = QHBoxLayout() + + self.canvas1 = FigureCanvas(Figure(figsize=(5, 5))) + self.canvas2 = FigureCanvas(Figure(figsize=(5, 5))) + + self._ax1 = self.canvas1.figure.subplots() + self._ax2 = self.canvas2.figure.subplots() + + self._ax1.imshow(self.ihc_rgb) + + plot_layout.addWidget(self.canvas1) + plot_layout.addWidget(self.canvas2) + + self.button1 = QPushButton("Hematoxylin") + self.button2 = QPushButton("Eosin") + self.button3 = QPushButton("DAB") + self.button4 = QPushButton("Fluorescence") + + self.button1.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) + self.button2.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) + self.button3.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) + self.button4.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) + + self.button1.clicked.connect(self.plot_hematoxylin) + self.button2.clicked.connect(self.plot_eosin) + self.button3.clicked.connect(self.plot_dab) + self.button4.clicked.connect(self.plot_final) + + self.label1 = QLabel("Original", alignment=Qt.AlignCenter) + self.label2 = QLabel("", alignment=Qt.AlignCenter) + + font = self.label1.font() + font.setPointSize(16) + self.label1.setFont(font) + self.label2.setFont(font) + + label_layout.addWidget(self.label1) + label_layout.addWidget(self.label2) + + button_layout.addWidget(self.button1) + button_layout.addWidget(self.button2) + button_layout.addWidget(self.button3) + button_layout.addWidget(self.button4) + + main_layout.addLayout(label_layout, 2) + main_layout.addLayout(plot_layout, 88) + main_layout.addLayout(button_layout, 10) + + # Default image + self.plot_hematoxylin() + + def set_buttons_state(self, states): + self.button1.setEnabled(states[0]) + self.button2.setEnabled(states[1]) + self.button3.setEnabled(states[2]) + self.button4.setEnabled(states[3]) + + @Slot() + def plot_hematoxylin(self): + cmap_hema = LinearSegmentedColormap.from_list("mycmap", ["white", "navy"]) + self._ax2.imshow(self.ihc_hed[:, :, 0], cmap=cmap_hema) + self.canvas2.draw() + self.label2.setText("Hematoxylin") + self.set_buttons_state((False, True, True, True)) + + @Slot() + def plot_eosin(self): + cmap_eosin = LinearSegmentedColormap.from_list("mycmap", ["darkviolet", "white"]) + self._ax2.imshow(self.ihc_hed[:, :, 1], cmap=cmap_eosin) + self.canvas2.draw() + self.label2.setText("Eosin") + self.set_buttons_state((True, False, True, True)) + + @Slot() + def plot_dab(self): + cmap_dab = LinearSegmentedColormap.from_list("mycmap", ["white", "saddlebrown"]) + self._ax2.imshow(self.ihc_hed[:, :, 2], cmap=cmap_dab) + self.canvas2.draw() + self.label2.setText("DAB") + self.set_buttons_state((True, True, False, True)) + + @Slot() + def plot_final(self): + h = rescale_intensity(self.ihc_hed[:, :, 0], out_range=(0, 1)) + d = rescale_intensity(self.ihc_hed[:, :, 2], out_range=(0, 1)) + zdh = np.dstack((np.zeros_like(h), d, h)) + self._ax2.imshow(zdh) + self.canvas2.draw() + self.label2.setText("Stain separated image") + self.set_buttons_state((True, True, True, False)) + + +if __name__ == "__main__": + + app = QApplication(sys.argv) + w = ApplicationWindow() + w.show() + app.exec_() diff --git a/venv/Lib/site-packages/PySide2/examples/installer_test/__pycache__/hello.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/installer_test/__pycache__/hello.cpython-310.pyc new file mode 100644 index 0000000..2fecd7e Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/installer_test/__pycache__/hello.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/installer_test/hello.py b/venv/Lib/site-packages/PySide2/examples/installer_test/hello.py new file mode 100644 index 0000000..3aa7a15 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/installer_test/hello.py @@ -0,0 +1,104 @@ +# This Python file uses the following encoding: utf-8 +# It has been edited by fix-complaints.py . + +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +hello.py +-------- + +This simple script shows a label with changing "Hello World" messages. +It can be used directly as a script, but we use it also to automatically +test PyInstaller. See testing/wheel_tester.py . + +When used with PyInstaller, it automatically stops its execution after +2 seconds. +""" +from __future__ import print_function + +import sys +import random +import platform +import time + +from PySide2.QtWidgets import (QApplication, QLabel, QPushButton, + QVBoxLayout, QWidget) +from PySide2.QtCore import Slot, Qt, QTimer + +class MyWidget(QWidget): + def __init__(self): + QWidget.__init__(self) + + self.hello = ["Hallo Welt", "你好,世界", "Hei maailma", + "Hola Mundo", "Привет мир"] + + self.button = QPushButton("Click me!") + self.text = QLabel("Hello World embedded={}".format(sys.pyside_uses_embedding)) + self.text.setAlignment(Qt.AlignCenter) + + self.layout = QVBoxLayout() + self.layout.addWidget(self.text) + self.layout.addWidget(self.button) + self.setLayout(self.layout) + + # Connecting the signal + self.button.clicked.connect(self.magic) + + @Slot() + def magic(self): + self.text.setText(random.choice(self.hello)) + +if __name__ == "__main__": + print("Start of hello.py ", time.ctime()) + print(" sys.version = {}".format(sys.version.splitlines()[0])) + print(" platform.platform() = {}".format(platform.platform())) + + app = QApplication() + + widget = MyWidget() + widget.resize(800, 600) + widget.show() + if sys.pyside_uses_embedding: + milliseconds = 2 * 1000 # run 2 second + QTimer.singleShot(milliseconds, app.quit) + retcode = app.exec_() + print("End of hello.py ", time.ctime()) + sys.exit(retcode) diff --git a/venv/Lib/site-packages/PySide2/examples/installer_test/hello_app.spec b/venv/Lib/site-packages/PySide2/examples/installer_test/hello_app.spec new file mode 100644 index 0000000..05ff1b8 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/installer_test/hello_app.spec @@ -0,0 +1,93 @@ +# This Python file uses the following encoding: utf-8 +# It has been edited by fix-complaints.py . + +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +""" +hello_app.spec + +This is almost the spec file generated by running PyInstaller. +Just the paths were adjusted and made relative. +As an effect, all the analysis is avoided, and the log file of +wheel_tester.py went down from 775 lines to 278 lines. :-) +""" + +block_cipher = None + + +a = Analysis(['hello.py'], + pathex=['pyinstaller'], + binaries=[], + datas=[], + hiddenimports=[], + hookspath=[], + runtime_hooks=[], + # 2019-04-28 + # This hack circumvents a side effect of Python 2.7.16 which leads to a failure + # in 'hook-_tkinter.py'. The error is reported. Until it is fixed, we circumvent + # the problem by this exclude. + # This effect is triggered by installing 'numpy'. It is somewhat special since + # the problem does not show up in Python 3.7 . tkinter would have the same + # problem on Python 3.7, but numpy would not trigger it for some reason. + excludes=['FixTk', 'tcl', 'tk', '_tkinter', 'tkinter', 'Tkinter'], + win_no_prefer_redirects=False, + win_private_assemblies=False, + cipher=block_cipher, + noarchive=False) +pyz = PYZ(a.pure, a.zipped_data, + cipher=block_cipher) +exe = EXE(pyz, + a.scripts, + [], + exclude_binaries=True, + name='hello_app', + debug=False, + bootloader_ignore_signals=False, + strip=False, + upx=True, + console=True ) +coll = COLLECT(exe, + a.binaries, + a.zipfiles, + a.datas, + strip=False, + upx=True, + name='hello_app') diff --git a/venv/Lib/site-packages/PySide2/examples/macextras/__pycache__/macpasteboardmime.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/macextras/__pycache__/macpasteboardmime.cpython-310.pyc new file mode 100644 index 0000000..6f94a87 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/macextras/__pycache__/macpasteboardmime.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/macextras/macextras.pyproject b/venv/Lib/site-packages/PySide2/examples/macextras/macextras.pyproject new file mode 100644 index 0000000..d559b7c --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/macextras/macextras.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["macpasteboardmime.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/macextras/macpasteboardmime.py b/venv/Lib/site-packages/PySide2/examples/macextras/macpasteboardmime.py new file mode 100644 index 0000000..c851339 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/macextras/macpasteboardmime.py @@ -0,0 +1,125 @@ + +############################################################################ +## +## Copyright (C) 2017 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################ + +import sys +from PySide2 import QtCore, QtWidgets + +try: + from PySide2 import QtMacExtras +except ImportError: + app = QtWidgets.QApplication(sys.argv) + messageBox = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Critical, "QtMacExtras macpasteboardmime", + "This exampe only runs on macOS and QtMacExtras must be installed to run this example.", + QtWidgets.QMessageBox.Close) + messageBox.exec_() + sys.exit(1) + +class VCardMime(QtMacExtras.QMacPasteboardMime): + def __init__(self, t = QtMacExtras.QMacPasteboardMime.MIME_ALL): + super(VCardMime, self).__init__(t) + + def convertorName(self): + return "VCardMime" + + def canConvert(self, mime, flav): + if self.mimeFor(flav) == mime: + return True + else: + return False + + def mimeFor(self, flav): + if flav == "public.vcard": + return "application/x-mycompany-VCard" + else: + return "" + + def flavorFor(self, mime): + if mime == "application/x-mycompany-VCard": + return "public.vcard" + else: + return "" + + def convertToMime(self, mime, data, flav): + all = QtCore.QByteArray() + for i in data: + all += i + return all + + def convertFromMime(mime, data, flav): + # Todo: implement! + return [] + +class TestWidget(QtWidgets.QWidget): + def __init__(self, parent=None): + super(TestWidget, self).__init__(parent) + self.vcardMime = VCardMime() + self.setAcceptDrops(True) + + self.label1 = QtWidgets.QLabel() + self.label2 = QtWidgets.QLabel() + + layout = QtWidgets.QVBoxLayout() + layout.addWidget(self.label1) + layout.addWidget(self.label2) + self.setLayout(layout) + + self.label1.setText("Please drag a \"VCard\" from Contacts application, normally a name in the list, and drop here.") + + def dragEnterEvent(self, e): + e.accept() + + def dropEvent(self, e): + e.accept() + self.contentsDropEvent(e) + + def contentsDropEvent(self, e): + if e.mimeData().hasFormat("application/x-mycompany-VCard"): + s = e.mimeData().data( "application/x-mycompany-VCard" ) + # s now contains text of vcard + self.label2.setText(str(s)) + e.acceptProposedAction() + +if __name__ == '__main__': + app = QtWidgets.QApplication(sys.argv) + QtMacExtras.qRegisterDraggedTypes(["public.vcard"]) + wid1 = TestWidget() + wid1.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/multimedia/__pycache__/audiooutput.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/multimedia/__pycache__/audiooutput.cpython-310.pyc new file mode 100644 index 0000000..9fca0c8 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/multimedia/__pycache__/audiooutput.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/multimedia/__pycache__/camera.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/multimedia/__pycache__/camera.cpython-310.pyc new file mode 100644 index 0000000..ac80da1 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/multimedia/__pycache__/camera.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/multimedia/__pycache__/player.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/multimedia/__pycache__/player.cpython-310.pyc new file mode 100644 index 0000000..66e2374 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/multimedia/__pycache__/player.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/multimedia/audiooutput.py b/venv/Lib/site-packages/PySide2/examples/multimedia/audiooutput.py new file mode 100644 index 0000000..c6c7b9f --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/multimedia/audiooutput.py @@ -0,0 +1,300 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the multimedia/audiooutput example from Qt v5.x, originating from PyQt""" + +from math import pi, sin +from struct import pack + +from PySide2.QtCore import QByteArray, QIODevice, Qt, QTimer, qWarning +from PySide2.QtMultimedia import (QAudio, QAudioDeviceInfo, QAudioFormat, + QAudioOutput) +from PySide2.QtWidgets import (QApplication, QComboBox, QHBoxLayout, QLabel, + QMainWindow, QPushButton, QSlider, QVBoxLayout, QWidget) + + +class Generator(QIODevice): + + def __init__(self, format, durationUs, sampleRate, parent): + super(Generator, self).__init__(parent) + + self.m_pos = 0 + self.m_buffer = QByteArray() + + self.generateData(format, durationUs, sampleRate) + + def start(self): + self.open(QIODevice.ReadOnly) + + def stop(self): + self.m_pos = 0 + self.close() + + def generateData(self, format, durationUs, sampleRate): + pack_format = '' + + if format.sampleSize() == 8: + if format.sampleType() == QAudioFormat.UnSignedInt: + scaler = lambda x: ((1.0 + x) / 2 * 255) + pack_format = 'B' + elif format.sampleType() == QAudioFormat.SignedInt: + scaler = lambda x: x * 127 + pack_format = 'b' + elif format.sampleSize() == 16: + if format.sampleType() == QAudioFormat.UnSignedInt: + scaler = lambda x: (1.0 + x) / 2 * 65535 + pack_format = 'H' + elif format.sampleType() == QAudioFormat.SignedInt: + scaler = lambda x: x * 32767 + pack_format = 'h' + + assert(pack_format != '') + + channelBytes = format.sampleSize() // 8 + sampleBytes = format.channelCount() * channelBytes + + length = (format.sampleRate() * format.channelCount() * (format.sampleSize() // 8)) * durationUs // 100000 + + self.m_buffer.clear() + sampleIndex = 0 + factor = 2 * pi * sampleRate / format.sampleRate() + + while length != 0: + x = sin((sampleIndex % format.sampleRate()) * factor) + packed = pack(pack_format, int(scaler(x))) + + for _ in range(format.channelCount()): + self.m_buffer.append(packed) + length -= channelBytes + + sampleIndex += 1 + + def readData(self, maxlen): + data = QByteArray() + total = 0 + + while maxlen > total: + chunk = min(self.m_buffer.size() - self.m_pos, maxlen - total) + data.append(self.m_buffer.mid(self.m_pos, chunk)) + self.m_pos = (self.m_pos + chunk) % self.m_buffer.size() + total += chunk + + return data.data() + + def writeData(self, data): + return 0 + + def bytesAvailable(self): + return self.m_buffer.size() + super(Generator, self).bytesAvailable() + + +class AudioTest(QMainWindow): + + PUSH_MODE_LABEL = "Enable push mode" + PULL_MODE_LABEL = "Enable pull mode" + SUSPEND_LABEL = "Suspend playback" + RESUME_LABEL = "Resume playback" + + DurationSeconds = 1 + ToneSampleRateHz = 600 + DataSampleRateHz = 44100 + + def __init__(self): + super(AudioTest, self).__init__() + + self.m_device = QAudioDeviceInfo.defaultOutputDevice() + self.m_output = None + + self.initializeWindow() + self.initializeAudio() + + def initializeWindow(self): + layout = QVBoxLayout() + + self.m_deviceBox = QComboBox() + self.m_deviceBox.activated[int].connect(self.deviceChanged) + for deviceInfo in QAudioDeviceInfo.availableDevices(QAudio.AudioOutput): + self.m_deviceBox.addItem(deviceInfo.deviceName(), deviceInfo) + + layout.addWidget(self.m_deviceBox) + + self.m_modeButton = QPushButton() + self.m_modeButton.clicked.connect(self.toggleMode) + self.m_modeButton.setText(self.PUSH_MODE_LABEL) + + layout.addWidget(self.m_modeButton) + + self.m_suspendResumeButton = QPushButton( + clicked=self.toggleSuspendResume) + self.m_suspendResumeButton.setText(self.SUSPEND_LABEL) + + layout.addWidget(self.m_suspendResumeButton) + + volumeBox = QHBoxLayout() + volumeLabel = QLabel("Volume:") + self.m_volumeSlider = QSlider(Qt.Horizontal, minimum=0, maximum=100, + singleStep=10) + self.m_volumeSlider.valueChanged.connect(self.volumeChanged) + + volumeBox.addWidget(volumeLabel) + volumeBox.addWidget(self.m_volumeSlider) + + layout.addLayout(volumeBox) + + window = QWidget() + window.setLayout(layout) + + self.setCentralWidget(window) + + def initializeAudio(self): + self.m_pullTimer = QTimer(self) + self.m_pullTimer.timeout.connect(self.pullTimerExpired) + self.m_pullMode = True + + self.m_format = QAudioFormat() + self.m_format.setSampleRate(self.DataSampleRateHz) + self.m_format.setChannelCount(1) + self.m_format.setSampleSize(16) + self.m_format.setCodec('audio/pcm') + self.m_format.setByteOrder(QAudioFormat.LittleEndian) + self.m_format.setSampleType(QAudioFormat.SignedInt) + + info = QAudioDeviceInfo(QAudioDeviceInfo.defaultOutputDevice()) + if not info.isFormatSupported(self.m_format): + qWarning("Default format not supported - trying to use nearest") + self.m_format = info.nearestFormat(self.m_format) + + self.m_generator = Generator(self.m_format, + self.DurationSeconds * 1000000, self.ToneSampleRateHz, self) + + self.createAudioOutput() + + def createAudioOutput(self): + self.m_audioOutput = QAudioOutput(self.m_device, self.m_format) + self.m_audioOutput.notify.connect(self.notified) + self.m_audioOutput.stateChanged.connect(self.handleStateChanged) + + self.m_generator.start() + self.m_audioOutput.start(self.m_generator) + self.m_volumeSlider.setValue(self.m_audioOutput.volume() * 100) + + def deviceChanged(self, index): + self.m_pullTimer.stop() + self.m_generator.stop() + self.m_audioOutput.stop() + self.m_device = self.m_deviceBox.itemData(index) + + self.createAudioOutput() + + def volumeChanged(self, value): + if self.m_audioOutput is not None: + self.m_audioOutput.setVolume(value / 100.0) + + def notified(self): + qWarning("bytesFree = %d, elapsedUSecs = %d, processedUSecs = %d" % ( + self.m_audioOutput.bytesFree(), + self.m_audioOutput.elapsedUSecs(), + self.m_audioOutput.processedUSecs())) + + def pullTimerExpired(self): + if self.m_audioOutput is not None and self.m_audioOutput.state() != QAudio.StoppedState: + chunks = self.m_audioOutput.bytesFree() // self.m_audioOutput.periodSize() + for _ in range(chunks): + data = self.m_generator.read(self.m_audioOutput.periodSize()) + if data is None or len(data) != self.m_audioOutput.periodSize(): + break + + self.m_output.write(data) + + def toggleMode(self): + self.m_pullTimer.stop() + self.m_audioOutput.stop() + + if self.m_pullMode: + self.m_modeButton.setText(self.PULL_MODE_LABEL) + self.m_output = self.m_audioOutput.start() + self.m_pullMode = False + self.m_pullTimer.start(20) + else: + self.m_modeButton.setText(self.PUSH_MODE_LABEL) + self.m_pullMode = True + self.m_audioOutput.start(self.m_generator) + + self.m_suspendResumeButton.setText(self.SUSPEND_LABEL) + + def toggleSuspendResume(self): + if self.m_audioOutput.state() == QAudio.SuspendedState: + qWarning("status: Suspended, resume()") + self.m_audioOutput.resume() + self.m_suspendResumeButton.setText(self.SUSPEND_LABEL) + elif self.m_audioOutput.state() == QAudio.ActiveState: + qWarning("status: Active, suspend()") + self.m_audioOutput.suspend() + self.m_suspendResumeButton.setText(self.RESUME_LABEL) + elif self.m_audioOutput.state() == QAudio.StoppedState: + qWarning("status: Stopped, resume()") + self.m_audioOutput.resume() + self.m_suspendResumeButton.setText(self.SUSPEND_LABEL) + elif self.m_audioOutput.state() == QAudio.IdleState: + qWarning("status: IdleState") + + stateMap = { + QAudio.ActiveState: "ActiveState", + QAudio.SuspendedState: "SuspendedState", + QAudio.StoppedState: "StoppedState", + QAudio.IdleState: "IdleState"} + + def handleStateChanged(self, state): + qWarning("state = " + self.stateMap.get(state, "Unknown")) + + +if __name__ == '__main__': + + import sys + + app = QApplication(sys.argv) + app.setApplicationName("Audio Output Test") + + audio = AudioTest() + audio.show() + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/multimedia/camera.py b/venv/Lib/site-packages/PySide2/examples/multimedia/camera.py new file mode 100644 index 0000000..d58b526 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/multimedia/camera.py @@ -0,0 +1,169 @@ + +############################################################################# +## +## Copyright (C) 2017 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 Multimedia Camera Example""" + +import os, sys +from PySide2.QtCore import QDate, QDir, QStandardPaths, Qt, QUrl +from PySide2.QtGui import QGuiApplication, QDesktopServices, QIcon +from PySide2.QtGui import QImage, QPixmap +from PySide2.QtWidgets import (QAction, QApplication, QHBoxLayout, QLabel, + QMainWindow, QPushButton, QTabWidget, QToolBar, QVBoxLayout, QWidget) +from PySide2.QtMultimedia import QCamera, QCameraImageCapture, QCameraInfo +from PySide2.QtMultimediaWidgets import QCameraViewfinder + +class ImageView(QWidget): + def __init__(self, previewImage, fileName): + super(ImageView, self).__init__() + + self.fileName = fileName + + mainLayout = QVBoxLayout(self) + self.imageLabel = QLabel() + self.imageLabel.setPixmap(QPixmap.fromImage(previewImage)) + mainLayout.addWidget(self.imageLabel) + + topLayout = QHBoxLayout() + self.fileNameLabel = QLabel(QDir.toNativeSeparators(fileName)) + self.fileNameLabel.setTextInteractionFlags(Qt.TextBrowserInteraction) + + topLayout.addWidget(self.fileNameLabel) + topLayout.addStretch() + copyButton = QPushButton("Copy") + copyButton.setToolTip("Copy file name to clipboard") + topLayout.addWidget(copyButton) + copyButton.clicked.connect(self.copy) + launchButton = QPushButton("Launch") + launchButton.setToolTip("Launch image viewer") + topLayout.addWidget(launchButton) + launchButton.clicked.connect(self.launch) + mainLayout.addLayout(topLayout) + + def copy(self): + QGuiApplication.clipboard().setText(self.fileNameLabel.text()) + + def launch(self): + QDesktopServices.openUrl(QUrl.fromLocalFile(self.fileName)) + +class MainWindow(QMainWindow): + def __init__(self): + super(MainWindow, self).__init__() + + self.cameraInfo = QCameraInfo.defaultCamera() + self.camera = QCamera(self.cameraInfo) + self.camera.setCaptureMode(QCamera.CaptureStillImage) + self.imageCapture = QCameraImageCapture(self.camera) + self.imageCapture.imageCaptured.connect(self.imageCaptured) + self.imageCapture.imageSaved.connect(self.imageSaved) + self.currentPreview = QImage() + + toolBar = QToolBar() + self.addToolBar(toolBar) + + fileMenu = self.menuBar().addMenu("&File") + shutterIcon = QIcon(os.path.join(os.path.dirname(__file__), + "shutter.svg")) + self.takePictureAction = QAction(shutterIcon, "&Take Picture", self, + shortcut="Ctrl+T", + triggered=self.takePicture) + self.takePictureAction.setToolTip("Take Picture") + fileMenu.addAction(self.takePictureAction) + toolBar.addAction(self.takePictureAction) + + exitAction = QAction(QIcon.fromTheme("application-exit"), "E&xit", + self, shortcut="Ctrl+Q", triggered=self.close) + fileMenu.addAction(exitAction) + + aboutMenu = self.menuBar().addMenu("&About") + aboutQtAction = QAction("About &Qt", self, triggered=qApp.aboutQt) + aboutMenu.addAction(aboutQtAction) + + self.tabWidget = QTabWidget() + self.setCentralWidget(self.tabWidget) + + self.cameraViewfinder = QCameraViewfinder() + self.camera.setViewfinder(self.cameraViewfinder) + self.tabWidget.addTab(self.cameraViewfinder, "Viewfinder") + + if self.camera.status() != QCamera.UnavailableStatus: + name = self.cameraInfo.description() + self.setWindowTitle("PySide2 Camera Example (" + name + ")") + self.statusBar().showMessage("Starting: '" + name + "'", 5000) + self.camera.start() + else: + self.setWindowTitle("PySide2 Camera Example") + self.takePictureAction.setEnabled(False) + self.statusBar().showMessage("Camera unavailable", 5000) + + def nextImageFileName(self): + picturesLocation = QStandardPaths.writableLocation(QStandardPaths.PicturesLocation) + dateString = QDate.currentDate().toString("yyyyMMdd") + pattern = picturesLocation + "/pyside2_camera_" + dateString + "_{:03d}.jpg" + n = 1 + while True: + result = pattern.format(n) + if not os.path.exists(result): + return result + n = n + 1 + return None + + def takePicture(self): + self.currentPreview = QImage() + self.camera.searchAndLock() + self.imageCapture.capture(self.nextImageFileName()) + self.camera.unlock() + + def imageCaptured(self, id, previewImage): + self.currentPreview = previewImage + + def imageSaved(self, id, fileName): + index = self.tabWidget.count() + imageView = ImageView(self.currentPreview, fileName) + self.tabWidget.addTab(imageView, "Capture #{}".format(index)) + self.tabWidget.setCurrentIndex(index) + +if __name__ == '__main__': + app = QApplication(sys.argv) + mainWin = MainWindow() + availableGeometry = app.desktop().availableGeometry(mainWin) + mainWin.resize(availableGeometry.width() / 3, availableGeometry.height() / 2) + mainWin.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/multimedia/multimedia.pyproject b/venv/Lib/site-packages/PySide2/examples/multimedia/multimedia.pyproject new file mode 100644 index 0000000..a0b8b44 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/multimedia/multimedia.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["player.py", "audiooutput.py", "camera.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/multimedia/player.py b/venv/Lib/site-packages/PySide2/examples/multimedia/player.py new file mode 100644 index 0000000..cb70e50 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/multimedia/player.py @@ -0,0 +1,157 @@ + +############################################################################# +## +## Copyright (C) 2017 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 Multimedia player example""" + +import sys +from PySide2.QtCore import QStandardPaths, Qt +from PySide2.QtGui import QIcon, QKeySequence +from PySide2.QtWidgets import (QAction, QApplication, QDialog, QFileDialog, + QMainWindow, QSlider, QStyle, QToolBar) +from PySide2.QtMultimedia import QMediaPlayer, QMediaPlaylist +from PySide2.QtMultimediaWidgets import QVideoWidget + +class MainWindow(QMainWindow): + + def __init__(self): + super(MainWindow, self).__init__() + + self.playlist = QMediaPlaylist() + self.player = QMediaPlayer() + + toolBar = QToolBar() + self.addToolBar(toolBar) + + fileMenu = self.menuBar().addMenu("&File") + openAction = QAction(QIcon.fromTheme("document-open"), + "&Open...", self, shortcut=QKeySequence.Open, + triggered=self.open) + fileMenu.addAction(openAction) + exitAction = QAction(QIcon.fromTheme("application-exit"), "E&xit", + self, shortcut="Ctrl+Q", triggered=self.close) + fileMenu.addAction(exitAction) + + playMenu = self.menuBar().addMenu("&Play") + playIcon = self.style().standardIcon(QStyle.SP_MediaPlay) + self.playAction = toolBar.addAction(playIcon, "Play") + self.playAction.triggered.connect(self.player.play) + playMenu.addAction(self.playAction) + + previousIcon = self.style().standardIcon(QStyle.SP_MediaSkipBackward) + self.previousAction = toolBar.addAction(previousIcon, "Previous") + self.previousAction.triggered.connect(self.previousClicked) + playMenu.addAction(self.previousAction) + + pauseIcon = self.style().standardIcon(QStyle.SP_MediaPause) + self.pauseAction = toolBar.addAction(pauseIcon, "Pause") + self.pauseAction.triggered.connect(self.player.pause) + playMenu.addAction(self.pauseAction) + + nextIcon = self.style().standardIcon(QStyle.SP_MediaSkipForward) + self.nextAction = toolBar.addAction(nextIcon, "Next") + self.nextAction.triggered.connect(self.playlist.next) + playMenu.addAction(self.nextAction) + + stopIcon = self.style().standardIcon(QStyle.SP_MediaStop) + self.stopAction = toolBar.addAction(stopIcon, "Stop") + self.stopAction.triggered.connect(self.player.stop) + playMenu.addAction(self.stopAction) + + self.volumeSlider = QSlider() + self.volumeSlider.setOrientation(Qt.Horizontal) + self.volumeSlider.setMinimum(0) + self.volumeSlider.setMaximum(100) + self.volumeSlider.setFixedWidth(app.desktop().availableGeometry(self).width() / 10) + self.volumeSlider.setValue(self.player.volume()) + self.volumeSlider.setTickInterval(10) + self.volumeSlider.setTickPosition(QSlider.TicksBelow) + self.volumeSlider.setToolTip("Volume") + self.volumeSlider.valueChanged.connect(self.player.setVolume) + toolBar.addWidget(self.volumeSlider) + + aboutMenu = self.menuBar().addMenu("&About") + aboutQtAct = QAction("About &Qt", self, triggered=qApp.aboutQt) + aboutMenu.addAction(aboutQtAct) + + self.videoWidget = QVideoWidget() + self.setCentralWidget(self.videoWidget) + self.player.setPlaylist(self.playlist) + self.player.stateChanged.connect(self.updateButtons) + self.player.setVideoOutput(self.videoWidget) + + self.updateButtons(self.player.state()) + + def open(self): + fileDialog = QFileDialog(self) + supportedMimeTypes = QMediaPlayer.supportedMimeTypes() + if not supportedMimeTypes: + supportedMimeTypes.append("video/x-msvideo") # AVI + fileDialog.setMimeTypeFilters(supportedMimeTypes) + moviesLocation = QStandardPaths.writableLocation(QStandardPaths.MoviesLocation) + fileDialog.setDirectory(moviesLocation) + if fileDialog.exec_() == QDialog.Accepted: + self.playlist.addMedia(fileDialog.selectedUrls()[0]) + self.player.play() + + def previousClicked(self): + # Go to previous track if we are within the first 5 seconds of playback + # Otherwise, seek to the beginning. + if self.player.position() <= 5000: + self.playlist.previous() + else: + player.setPosition(0) + + def updateButtons(self, state): + mediaCount = self.playlist.mediaCount() + self.playAction.setEnabled(mediaCount > 0 + and state != QMediaPlayer.PlayingState) + self.pauseAction.setEnabled(state == QMediaPlayer.PlayingState) + self.stopAction.setEnabled(state != QMediaPlayer.StoppedState) + self.previousAction.setEnabled(self.player.position() > 0) + self.nextAction.setEnabled(mediaCount > 1) + +if __name__ == '__main__': + app = QApplication(sys.argv) + mainWin = MainWindow() + availableGeometry = app.desktop().availableGeometry(mainWin) + mainWin.resize(availableGeometry.width() / 3, availableGeometry.height() / 2) + mainWin.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/multimedia/shutter.svg b/venv/Lib/site-packages/PySide2/examples/multimedia/shutter.svg new file mode 100644 index 0000000..1849336 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/multimedia/shutter.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + diff --git a/venv/Lib/site-packages/PySide2/examples/network/__pycache__/blockingfortuneclient.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/network/__pycache__/blockingfortuneclient.cpython-310.pyc new file mode 100644 index 0000000..f4491d8 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/network/__pycache__/blockingfortuneclient.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/network/__pycache__/fortuneclient.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/network/__pycache__/fortuneclient.cpython-310.pyc new file mode 100644 index 0000000..f4f7907 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/network/__pycache__/fortuneclient.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/network/__pycache__/fortuneserver.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/network/__pycache__/fortuneserver.cpython-310.pyc new file mode 100644 index 0000000..4769c0a Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/network/__pycache__/fortuneserver.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/network/__pycache__/threadedfortuneserver.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/network/__pycache__/threadedfortuneserver.cpython-310.pyc new file mode 100644 index 0000000..07558ef Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/network/__pycache__/threadedfortuneserver.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/network/blockingfortuneclient.py b/venv/Lib/site-packages/PySide2/examples/network/blockingfortuneclient.py new file mode 100644 index 0000000..028c05c --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/network/blockingfortuneclient.py @@ -0,0 +1,224 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the network/blockingfortunclient example from Qt v5.x, originating from PyQt""" + +from PySide2.QtCore import (Signal, QDataStream, QMutex, QMutexLocker, + QThread, QWaitCondition) +from PySide2.QtGui import QIntValidator +from PySide2.QtWidgets import (QApplication, QDialogButtonBox, QGridLayout, + QLabel, QLineEdit, QMessageBox, QPushButton, QWidget) +from PySide2.QtNetwork import (QAbstractSocket, QHostAddress, QNetworkInterface, + QTcpSocket) + + +class FortuneThread(QThread): + newFortune = Signal(str) + + error = Signal(int, str) + + def __init__(self, parent=None): + super(FortuneThread, self).__init__(parent) + + self.quit = False + self.hostName = '' + self.cond = QWaitCondition() + self.mutex = QMutex() + self.port = 0 + + def __del__(self): + self.mutex.lock() + self.quit = True + self.cond.wakeOne() + self.mutex.unlock() + self.wait() + + def requestNewFortune(self, hostname, port): + locker = QMutexLocker(self.mutex) + self.hostName = hostname + self.port = port + if not self.isRunning(): + self.start() + else: + self.cond.wakeOne() + + def run(self): + self.mutex.lock() + serverName = self.hostName + serverPort = self.port + self.mutex.unlock() + + while not self.quit: + Timeout = 5 * 1000 + + socket = QTcpSocket() + socket.connectToHost(serverName, serverPort) + + if not socket.waitForConnected(Timeout): + self.error.emit(socket.error(), socket.errorString()) + return + + while socket.bytesAvailable() < 2: + if not socket.waitForReadyRead(Timeout): + self.error.emit(socket.error(), socket.errorString()) + return + + instr = QDataStream(socket) + instr.setVersion(QDataStream.Qt_4_0) + blockSize = instr.readUInt16() + + while socket.bytesAvailable() < blockSize: + if not socket.waitForReadyRead(Timeout): + self.error.emit(socket.error(), socket.errorString()) + return + + self.mutex.lock() + fortune = instr.readQString() + self.newFortune.emit(fortune) + + self.cond.wait(self.mutex) + serverName = self.hostName + serverPort = self.port + self.mutex.unlock() + + +class BlockingClient(QWidget): + def __init__(self, parent=None): + super(BlockingClient, self).__init__(parent) + + self.thread = FortuneThread() + self.currentFortune = '' + + hostLabel = QLabel("&Server name:") + portLabel = QLabel("S&erver port:") + + for ipAddress in QNetworkInterface.allAddresses(): + if ipAddress != QHostAddress.LocalHost and ipAddress.toIPv4Address() != 0: + break + else: + ipAddress = QHostAddress(QHostAddress.LocalHost) + + ipAddress = ipAddress.toString() + + self.hostLineEdit = QLineEdit(ipAddress) + self.portLineEdit = QLineEdit() + self.portLineEdit.setValidator(QIntValidator(1, 65535, self)) + + hostLabel.setBuddy(self.hostLineEdit) + portLabel.setBuddy(self.portLineEdit) + + self.statusLabel = QLabel( + "This example requires that you run the Fortune Server example as well.") + self.statusLabel.setWordWrap(True) + + self.getFortuneButton = QPushButton("Get Fortune") + self.getFortuneButton.setDefault(True) + self.getFortuneButton.setEnabled(False) + + quitButton = QPushButton("Quit") + + buttonBox = QDialogButtonBox() + buttonBox.addButton(self.getFortuneButton, QDialogButtonBox.ActionRole) + buttonBox.addButton(quitButton, QDialogButtonBox.RejectRole) + + self.getFortuneButton.clicked.connect(self.requestNewFortune) + quitButton.clicked.connect(self.close) + self.hostLineEdit.textChanged.connect(self.enableGetFortuneButton) + self.portLineEdit.textChanged.connect(self.enableGetFortuneButton) + self.thread.newFortune.connect(self.showFortune) + self.thread.error.connect(self.displayError) + + mainLayout = QGridLayout() + mainLayout.addWidget(hostLabel, 0, 0) + mainLayout.addWidget(self.hostLineEdit, 0, 1) + mainLayout.addWidget(portLabel, 1, 0) + mainLayout.addWidget(self.portLineEdit, 1, 1) + mainLayout.addWidget(self.statusLabel, 2, 0, 1, 2) + mainLayout.addWidget(buttonBox, 3, 0, 1, 2) + self.setLayout(mainLayout) + + self.setWindowTitle("Blocking Fortune Client") + self.portLineEdit.setFocus() + + def requestNewFortune(self): + self.getFortuneButton.setEnabled(False) + self.thread.requestNewFortune(self.hostLineEdit.text(), + int(self.portLineEdit.text())) + + def showFortune(self, nextFortune): + if nextFortune == self.currentFortune: + self.requestNewFortune() + return + + self.currentFortune = nextFortune + self.statusLabel.setText(self.currentFortune) + self.getFortuneButton.setEnabled(True) + + def displayError(self, socketError, message): + if socketError == QAbstractSocket.HostNotFoundError: + QMessageBox.information(self, "Blocking Fortune Client", + "The host was not found. Please check the host and port " + "settings.") + elif socketError == QAbstractSocket.ConnectionRefusedError: + QMessageBox.information(self, "Blocking Fortune Client", + "The connection was refused by the peer. Make sure the " + "fortune server is running, and check that the host name " + "and port settings are correct.") + else: + QMessageBox.information(self, "Blocking Fortune Client", + "The following error occurred: %s." % message) + + self.getFortuneButton.setEnabled(True) + + def enableGetFortuneButton(self): + self.getFortuneButton.setEnabled(self.hostLineEdit.text() != '' and + self.portLineEdit.text() != '') + + +if __name__ == '__main__': + + import sys + + app = QApplication(sys.argv) + client = BlockingClient() + client.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/network/fortuneclient.py b/venv/Lib/site-packages/PySide2/examples/network/fortuneclient.py new file mode 100644 index 0000000..c774973 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/network/fortuneclient.py @@ -0,0 +1,167 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the network/fortuneclient example from Qt v5.x""" + +from PySide2 import QtCore, QtGui, QtWidgets, QtNetwork + + +class Client(QtWidgets.QDialog): + def __init__(self, parent=None): + super(Client, self).__init__(parent) + + self.blockSize = 0 + self.currentFortune = '' + + hostLabel = QtWidgets.QLabel("&Server name:") + portLabel = QtWidgets.QLabel("S&erver port:") + + self.hostLineEdit = QtWidgets.QLineEdit('Localhost') + self.portLineEdit = QtWidgets.QLineEdit() + self.portLineEdit.setValidator(QtGui.QIntValidator(1, 65535, self)) + + hostLabel.setBuddy(self.hostLineEdit) + portLabel.setBuddy(self.portLineEdit) + + self.statusLabel = QtWidgets.QLabel("This examples requires that you run " + "the Fortune Server example as well.") + + self.getFortuneButton = QtWidgets.QPushButton("Get Fortune") + self.getFortuneButton.setDefault(True) + self.getFortuneButton.setEnabled(False) + + quitButton = QtWidgets.QPushButton("Quit") + + buttonBox = QtWidgets.QDialogButtonBox() + buttonBox.addButton(self.getFortuneButton, + QtWidgets.QDialogButtonBox.ActionRole) + buttonBox.addButton(quitButton, QtWidgets.QDialogButtonBox.RejectRole) + + self.tcpSocket = QtNetwork.QTcpSocket(self) + + self.hostLineEdit.textChanged.connect(self.enableGetFortuneButton) + self.portLineEdit.textChanged.connect(self.enableGetFortuneButton) + self.getFortuneButton.clicked.connect(self.requestNewFortune) + quitButton.clicked.connect(self.close) + self.tcpSocket.readyRead.connect(self.readFortune) + self.tcpSocket.error.connect(self.displayError) + + mainLayout = QtWidgets.QGridLayout() + mainLayout.addWidget(hostLabel, 0, 0) + mainLayout.addWidget(self.hostLineEdit, 0, 1) + mainLayout.addWidget(portLabel, 1, 0) + mainLayout.addWidget(self.portLineEdit, 1, 1) + mainLayout.addWidget(self.statusLabel, 2, 0, 1, 2) + mainLayout.addWidget(buttonBox, 3, 0, 1, 2) + self.setLayout(mainLayout) + + self.setWindowTitle("Fortune Client") + self.portLineEdit.setFocus() + + def requestNewFortune(self): + self.getFortuneButton.setEnabled(False) + self.blockSize = 0 + self.tcpSocket.abort() + self.tcpSocket.connectToHost(self.hostLineEdit.text(), + int(self.portLineEdit.text())) + + def readFortune(self): + instr = QtCore.QDataStream(self.tcpSocket) + instr.setVersion(QtCore.QDataStream.Qt_4_0) + + if self.blockSize == 0: + if self.tcpSocket.bytesAvailable() < 2: + return + + self.blockSize = instr.readUInt16() + + if self.tcpSocket.bytesAvailable() < self.blockSize: + return + + nextFortune = instr.readString() + + try: + # Python v3. + nextFortune = str(nextFortune, encoding='ascii') + except TypeError: + # Python v2. + pass + + if nextFortune == self.currentFortune: + QtCore.QTimer.singleShot(0, self.requestNewFortune) + return + + self.currentFortune = nextFortune + self.statusLabel.setText(self.currentFortune) + self.getFortuneButton.setEnabled(True) + + def displayError(self, socketError): + if socketError == QtNetwork.QAbstractSocket.RemoteHostClosedError: + pass + elif socketError == QtNetwork.QAbstractSocket.HostNotFoundError: + QtWidgets.QMessageBox.information(self, "Fortune Client", + "The host was not found. Please check the host name and " + "port settings.") + elif socketError == QtNetwork.QAbstractSocket.ConnectionRefusedError: + QtWidgets.QMessageBox.information(self, "Fortune Client", + "The connection was refused by the peer. Make sure the " + "fortune server is running, and check that the host name " + "and port settings are correct.") + else: + QtWidgets.QMessageBox.information(self, "Fortune Client", + "The following error occurred: %s." % self.tcpSocket.errorString()) + + self.getFortuneButton.setEnabled(True) + + def enableGetFortuneButton(self): + self.getFortuneButton.setEnabled(bool(self.hostLineEdit.text() and + self.portLineEdit.text())) + + +if __name__ == '__main__': + + import sys + + app = QtWidgets.QApplication(sys.argv) + client = Client() + client.show() + sys.exit(client.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/network/fortuneserver.py b/venv/Lib/site-packages/PySide2/examples/network/fortuneserver.py new file mode 100644 index 0000000..790e9df --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/network/fortuneserver.py @@ -0,0 +1,117 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the network/fortuneserver example from Qt v5.x""" + +import random + +from PySide2 import QtCore, QtWidgets, QtNetwork + + +class Server(QtWidgets.QDialog): + def __init__(self, parent=None): + super(Server, self).__init__(parent) + + statusLabel = QtWidgets.QLabel() + quitButton = QtWidgets.QPushButton("Quit") + quitButton.setAutoDefault(False) + + self.tcpServer = QtNetwork.QTcpServer(self) + if not self.tcpServer.listen(): + QtWidgets.QMessageBox.critical(self, "Fortune Server", + "Unable to start the server: %s." % self.tcpServer.errorString()) + self.close() + return + + statusLabel.setText("The server is running on port %d.\nRun the " + "Fortune Client example now." % self.tcpServer.serverPort()) + + self.fortunes = ( + "You've been leading a dog's life. Stay off the furniture.", + "You've got to think about tomorrow.", + "You will be surprised by a loud noise.", + "You will feel hungry again in another hour.", + "You might have mail.", + "You cannot kill time without injuring eternity.", + "Computers are not intelligent. They only think they are.") + + quitButton.clicked.connect(self.close) + self.tcpServer.newConnection.connect(self.sendFortune) + + buttonLayout = QtWidgets.QHBoxLayout() + buttonLayout.addStretch(1) + buttonLayout.addWidget(quitButton) + buttonLayout.addStretch(1) + + mainLayout = QtWidgets.QVBoxLayout() + mainLayout.addWidget(statusLabel) + mainLayout.addLayout(buttonLayout) + self.setLayout(mainLayout) + + self.setWindowTitle("Fortune Server") + + def sendFortune(self): + block = QtCore.QByteArray() + out = QtCore.QDataStream(block, QtCore.QIODevice.WriteOnly) + out.setVersion(QtCore.QDataStream.Qt_4_0) + out.writeUInt16(0) + fortune = self.fortunes[random.randint(0, len(self.fortunes) - 1)] + + out.writeString(fortune) + out.device().seek(0) + out.writeUInt16(block.size() - 2) + + clientConnection = self.tcpServer.nextPendingConnection() + clientConnection.disconnected.connect(clientConnection.deleteLater) + + clientConnection.write(block) + clientConnection.disconnectFromHost() + + +if __name__ == '__main__': + + import sys + + app = QtWidgets.QApplication(sys.argv) + server = Server() + random.seed(None) + sys.exit(server.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/network/network.pyproject b/venv/Lib/site-packages/PySide2/examples/network/network.pyproject new file mode 100644 index 0000000..44b9ec4 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/network/network.pyproject @@ -0,0 +1,4 @@ +{ + "files": ["blockingfortuneclient.py", "fortuneserver.py", + "threadedfortuneserver.py", "fortuneclient.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/network/threadedfortuneserver.py b/venv/Lib/site-packages/PySide2/examples/network/threadedfortuneserver.py new file mode 100644 index 0000000..c16c77a --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/network/threadedfortuneserver.py @@ -0,0 +1,152 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the network/threadedfortuneserver example from Qt v5.x, originating from PyQt""" + +import random + +from PySide2.QtCore import (Signal, QByteArray, QDataStream, QIODevice, + QThread, Qt) +from PySide2.QtWidgets import (QApplication, QDialog, QHBoxLayout, QLabel, + QMessageBox, QPushButton, QVBoxLayout) +from PySide2.QtNetwork import (QHostAddress, QNetworkInterface, QTcpServer, + QTcpSocket) + + +class FortuneThread(QThread): + error = Signal(QTcpSocket.SocketError) + + def __init__(self, socketDescriptor, fortune, parent): + super(FortuneThread, self).__init__(parent) + + self.socketDescriptor = socketDescriptor + self.text = fortune + + def run(self): + tcpSocket = QTcpSocket() + if not tcpSocket.setSocketDescriptor(self.socketDescriptor): + self.error.emit(tcpSocket.error()) + return + + block = QByteArray() + outstr = QDataStream(block, QIODevice.WriteOnly) + outstr.setVersion(QDataStream.Qt_4_0) + outstr.writeUInt16(0) + outstr.writeQString(self.text) + outstr.device().seek(0) + outstr.writeUInt16(block.size() - 2) + + tcpSocket.write(block) + tcpSocket.disconnectFromHost() + tcpSocket.waitForDisconnected() + + +class FortuneServer(QTcpServer): + fortunes = ( + "You've been leading a dog's life. Stay off the furniture.", + "You've got to think about tomorrow.", + "You will be surprised by a loud noise.", + "You will feel hungry again in another hour.", + "You might have mail.", + "You cannot kill time without injuring eternity.", + "Computers are not intelligent. They only think they are.") + + def incomingConnection(self, socketDescriptor): + fortune = self.fortunes[random.randint(0, len(self.fortunes) - 1)] + + thread = FortuneThread(socketDescriptor, fortune, self) + thread.finished.connect(thread.deleteLater) + thread.start() + + +class Dialog(QDialog): + def __init__(self, parent=None): + super(Dialog, self).__init__(parent) + + self.server = FortuneServer() + + statusLabel = QLabel() + statusLabel.setTextInteractionFlags(Qt.TextBrowserInteraction) + statusLabel.setWordWrap(True) + quitButton = QPushButton("Quit") + quitButton.setAutoDefault(False) + + if not self.server.listen(): + QMessageBox.critical(self, "Threaded Fortune Server", + "Unable to start the server: %s." % self.server.errorString()) + self.close() + return + + for ipAddress in QNetworkInterface.allAddresses(): + if ipAddress != QHostAddress.LocalHost and ipAddress.toIPv4Address() != 0: + break + else: + ipAddress = QHostAddress(QHostAddress.LocalHost) + + ipAddress = ipAddress.toString() + + statusLabel.setText("The server is running on\n\nIP: %s\nport: %d\n\n" + "Run the Fortune Client example now." % (ipAddress, self.server.serverPort())) + + quitButton.clicked.connect(self.close) + + buttonLayout = QHBoxLayout() + buttonLayout.addStretch(1) + buttonLayout.addWidget(quitButton) + buttonLayout.addStretch(1) + + mainLayout = QVBoxLayout() + mainLayout.addWidget(statusLabel) + mainLayout.addLayout(buttonLayout) + self.setLayout(mainLayout) + + self.setWindowTitle("Threaded Fortune Server") + + +if __name__ == '__main__': + + import sys + + app = QApplication(sys.argv) + dialog = Dialog() + dialog.show() + sys.exit(dialog.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/opengl/2dpainting.py b/venv/Lib/site-packages/PySide2/examples/opengl/2dpainting.py new file mode 100644 index 0000000..5b3ba61 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/opengl/2dpainting.py @@ -0,0 +1,172 @@ + +############################################################################ +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################ + +"""PySide2 port of the opengl/legacy/2dpainting example from Qt v5.x""" + +import sys +from PySide2.QtCore import * +from PySide2.QtGui import * +from PySide2.QtWidgets import * +from PySide2.QtOpenGL import * + +try: + from OpenGL import GL +except ImportError: + app = QApplication(sys.argv) + messageBox = QMessageBox(QMessageBox.Critical, "OpenGL 2dpainting", + "PyOpenGL must be installed to run this example.", + QMessageBox.Close) + messageBox.setDetailedText("Run:\npip install PyOpenGL PyOpenGL_accelerate") + messageBox.exec_() + sys.exit(1) + + +class Helper: + def __init__(self): + gradient = QLinearGradient(QPointF(50, -20), QPointF(80, 20)) + gradient.setColorAt(0.0, Qt.white) + gradient.setColorAt(1.0, QColor(0xa6, 0xce, 0x39)) + + self.background = QBrush(QColor(64, 32, 64)) + self.circleBrush = QBrush(gradient) + self.circlePen = QPen(Qt.black) + self.circlePen.setWidth(1) + self.textPen = QPen(Qt.white) + self.textFont = QFont() + self.textFont.setPixelSize(50) + + def paint(self, painter, event, elapsed): + painter.fillRect(event.rect(), self.background) + painter.translate(100, 100) + + painter.save() + painter.setBrush(self.circleBrush) + painter.setPen(self.circlePen) + painter.rotate(elapsed * 0.030) + + r = elapsed/1000.0 + n = 30 + for i in range(n): + painter.rotate(30) + radius = 0 + 120.0*((i+r)/n) + circleRadius = 1 + ((i+r)/n)*20 + painter.drawEllipse(QRectF(radius, -circleRadius, + circleRadius*2, circleRadius*2)) + + painter.restore() + + painter.setPen(self.textPen) + painter.setFont(self.textFont) + painter.drawText(QRect(-50, -50, 100, 100), Qt.AlignCenter, "Qt") + + +class Widget(QWidget): + def __init__(self, helper, parent = None): + QWidget.__init__(self, parent) + + self.helper = helper + self.elapsed = 0 + self.setFixedSize(200, 200) + + def animate(self): + self.elapsed = (self.elapsed + self.sender().interval()) % 1000 + self.repaint() + + def paintEvent(self, event): + painter = QPainter() + painter.begin(self) + painter.setRenderHint(QPainter.Antialiasing) + self.helper.paint(painter, event, self.elapsed) + painter.end() + + +class GLWidget(QGLWidget): + def __init__(self, helper, parent = None): + QGLWidget.__init__(self, QGLFormat(QGL.SampleBuffers), parent) + + self.helper = helper + self.elapsed = 0 + self.setFixedSize(200, 200) + + def animate(self): + self.elapsed = (self.elapsed + self.sender().interval()) % 1000 + self.repaint() + + def paintEvent(self, event): + painter = QPainter() + painter.begin(self) + self.helper.paint(painter, event, self.elapsed) + painter.end() + + +class Window(QWidget): + def __init__(self, parent = None): + QWidget.__init__(self, parent) + + helper = Helper() + native = Widget(helper, self) + openGL = GLWidget(helper, self) + nativeLabel = QLabel(self.tr("Native")) + nativeLabel.setAlignment(Qt.AlignHCenter) + openGLLabel = QLabel(self.tr("OpenGL")) + openGLLabel.setAlignment(Qt.AlignHCenter) + + layout = QGridLayout() + layout.addWidget(native, 0, 0) + layout.addWidget(openGL, 0, 1) + layout.addWidget(nativeLabel, 1, 0) + layout.addWidget(openGLLabel, 1, 1) + self.setLayout(layout) + + timer = QTimer(self) + self.connect(timer, SIGNAL("timeout()"), native.animate) + self.connect(timer, SIGNAL("timeout()"), openGL.animate) + timer.start(50) + + self.setWindowTitle(self.tr("2D Painting on Native and OpenGL Widgets")) + + +if __name__ == '__main__': + app = QApplication(sys.argv) + window = Window() + window.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/opengl/__pycache__/2dpainting.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/opengl/__pycache__/2dpainting.cpython-310.pyc new file mode 100644 index 0000000..f77e27c Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/opengl/__pycache__/2dpainting.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/opengl/__pycache__/contextinfo.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/opengl/__pycache__/contextinfo.cpython-310.pyc new file mode 100644 index 0000000..b0d1f2c Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/opengl/__pycache__/contextinfo.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/opengl/__pycache__/grabber.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/opengl/__pycache__/grabber.cpython-310.pyc new file mode 100644 index 0000000..64ac6d2 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/opengl/__pycache__/grabber.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/opengl/__pycache__/hellogl.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/opengl/__pycache__/hellogl.cpython-310.pyc new file mode 100644 index 0000000..57073fb Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/opengl/__pycache__/hellogl.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/opengl/__pycache__/hellogl2.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/opengl/__pycache__/hellogl2.cpython-310.pyc new file mode 100644 index 0000000..cb20de1 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/opengl/__pycache__/hellogl2.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/opengl/__pycache__/overpainting.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/opengl/__pycache__/overpainting.cpython-310.pyc new file mode 100644 index 0000000..a4034b3 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/opengl/__pycache__/overpainting.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/opengl/__pycache__/samplebuffers.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/opengl/__pycache__/samplebuffers.cpython-310.pyc new file mode 100644 index 0000000..7ddde39 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/opengl/__pycache__/samplebuffers.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/opengl/contextinfo.py b/venv/Lib/site-packages/PySide2/examples/opengl/contextinfo.py new file mode 100644 index 0000000..a963b89 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/opengl/contextinfo.py @@ -0,0 +1,283 @@ + +############################################################################# +## +## Copyright (C) 2017 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the opengl/contextinfo example from Qt v5.x""" + +from argparse import ArgumentParser, RawTextHelpFormatter +import numpy +import sys +from textwrap import dedent + + +from PySide2.QtCore import QCoreApplication, QLibraryInfo, QSize, QTimer, Qt +from PySide2.QtGui import (QMatrix4x4, QOpenGLBuffer, QOpenGLContext, QOpenGLShader, + QOpenGLShaderProgram, QOpenGLVertexArrayObject, QSurfaceFormat, QWindow) +from PySide2.QtWidgets import (QApplication, QHBoxLayout, QMessageBox, QPlainTextEdit, + QWidget) +from PySide2.support import VoidPtr +try: + from OpenGL import GL +except ImportError: + app = QApplication(sys.argv) + messageBox = QMessageBox(QMessageBox.Critical, "ContextInfo", + "PyOpenGL must be installed to run this example.", + QMessageBox.Close) + messageBox.setDetailedText("Run:\npip install PyOpenGL PyOpenGL_accelerate") + messageBox.exec_() + sys.exit(1) + +vertexShaderSource110 = dedent(""" + // version 110 + attribute highp vec4 posAttr; + attribute lowp vec4 colAttr; + varying lowp vec4 col; + uniform highp mat4 matrix; + void main() { + col = colAttr; + gl_Position = matrix * posAttr; + } + """) + +fragmentShaderSource110 = dedent(""" + // version 110 + varying lowp vec4 col; + void main() { + gl_FragColor = col; + } + """) + +vertexShaderSource = dedent(""" + // version 150 + in vec4 posAttr; + in vec4 colAttr; + out vec4 col; + uniform mat4 matrix; + void main() { + col = colAttr; + gl_Position = matrix * posAttr; + } + """) + +fragmentShaderSource = dedent(""" + // version 150 + in vec4 col; + out vec4 fragColor; + void main() { + fragColor = col; + } + """) + +vertices = numpy.array([0, 0.707, -0.5, -0.5, 0.5, -0.5], dtype = numpy.float32) +colors = numpy.array([1, 0, 0, 0, 1, 0, 0, 0, 1], dtype = numpy.float32) + + +def print_surface_format(surface_format): + profile_name = 'core' if surface_format.profile() == QSurfaceFormat.CoreProfile else 'compatibility' + return "{} version {}.{}".format(profile_name, + surface_format.majorVersion(), surface_format.minorVersion()) + +class RenderWindow(QWindow): + def __init__(self, format): + super(RenderWindow, self).__init__() + self.setSurfaceType(QWindow.OpenGLSurface) + self.setFormat(format) + self.context = QOpenGLContext(self) + self.context.setFormat(self.requestedFormat()) + if not self.context.create(): + raise Exception("Unable to create GL context") + self.program = None + self.timer = None + self.angle = 0 + + def initGl(self): + self.program = QOpenGLShaderProgram(self) + self.vao = QOpenGLVertexArrayObject() + self.vbo = QOpenGLBuffer() + + format = self.context.format() + useNewStyleShader = format.profile() == QSurfaceFormat.CoreProfile + # Try to handle 3.0 & 3.1 that do not have the core/compatibility profile + # concept 3.2+ has. This may still fail since version 150 (3.2) is + # specified in the sources but it's worth a try. + if (format.renderableType() == QSurfaceFormat.OpenGL and format.majorVersion() == 3 + and format.minorVersion() <= 1): + useNewStyleShader = not format.testOption(QSurfaceFormat.DeprecatedFunctions) + + vertexShader = vertexShaderSource if useNewStyleShader else vertexShaderSource110 + fragmentShader = fragmentShaderSource if useNewStyleShader else fragmentShaderSource110 + if not self.program.addShaderFromSourceCode(QOpenGLShader.Vertex, vertexShader): + raise Exception("Vertex shader could not be added: {} ({})".format(self.program.log(), vertexShader)) + if not self.program.addShaderFromSourceCode(QOpenGLShader.Fragment, fragmentShader): + raise Exception("Fragment shader could not be added: {} ({})".format(self.program.log(), fragmentShader)) + if not self.program.link(): + raise Exception("Could not link shaders: {}".format(self.program.log())) + + self.posAttr = self.program.attributeLocation("posAttr") + self.colAttr = self.program.attributeLocation("colAttr") + self.matrixUniform = self.program.uniformLocation("matrix") + + self.vbo.create() + self.vbo.bind() + self.verticesData = vertices.tobytes() + self.colorsData = colors.tobytes() + verticesSize = 4 * vertices.size + colorsSize = 4 * colors.size + self.vbo.allocate(VoidPtr(self.verticesData), verticesSize + colorsSize) + self.vbo.write(verticesSize, VoidPtr(self.colorsData), colorsSize) + self.vbo.release() + + vaoBinder = QOpenGLVertexArrayObject.Binder(self.vao) + if self.vao.isCreated(): # have VAO support, use it + self.setupVertexAttribs() + + def setupVertexAttribs(self): + self.vbo.bind() + self.program.setAttributeBuffer(self.posAttr, GL.GL_FLOAT, 0, 2) + self.program.setAttributeBuffer(self.colAttr, GL.GL_FLOAT, 4 * vertices.size, 3) + self.program.enableAttributeArray(self.posAttr) + self.program.enableAttributeArray(self.colAttr) + self.vbo.release() + + def exposeEvent(self, event): + if self.isExposed(): + self.render() + if self.timer is None: + self.timer = QTimer(self) + self.timer.timeout.connect(self.slotTimer) + if not self.timer.isActive(): + self.timer.start(10) + else: + if self.timer and self.timer.isActive(): + self.timer.stop() + + def render(self): + if not self.context.makeCurrent(self): + raise Exception("makeCurrent() failed") + functions = self.context.functions() + if self.program is None: + functions.glEnable(GL.GL_DEPTH_TEST) + functions.glClearColor(0, 0, 0, 1) + self.initGl() + + retinaScale = self.devicePixelRatio() + functions.glViewport(0, 0, self.width() * retinaScale, + self.height() * retinaScale) + functions.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT) + + self.program.bind() + matrix = QMatrix4x4() + matrix.perspective(60, 4 / 3, 0.1, 100) + matrix.translate(0, 0, -2) + matrix.rotate(self.angle, 0, 1, 0) + self.program.setUniformValue(self.matrixUniform, matrix) + + if self.vao.isCreated(): + self.vao.bind() + else: # no VAO support, set the vertex attribute arrays now + self.setupVertexAttribs() + + functions.glDrawArrays(GL.GL_TRIANGLES, 0, 3) + + self.vao.release() + self.program.release() + + # swapInterval is 1 by default which means that swapBuffers() will (hopefully) block + # and wait for vsync. + self.context.swapBuffers(self) + self.context.doneCurrent() + + def slotTimer(self): + self.render() + self.angle += 1 + + def glInfo(self): + if not self.context.makeCurrent(self): + raise Exception("makeCurrent() failed") + functions = self.context.functions() + text = """Vendor: {}\nRenderer: {}\nVersion: {}\nShading language: {} +\nContext Format: {}\n\nSurface Format: {}""".format( + functions.glGetString(GL.GL_VENDOR), functions.glGetString(GL.GL_RENDERER), + functions.glGetString(GL.GL_VERSION), + functions.glGetString(GL.GL_SHADING_LANGUAGE_VERSION), + print_surface_format(self.context.format()), + print_surface_format(self.format())) + self.context.doneCurrent() + return text + +class MainWindow(QWidget): + def __init__(self): + super(MainWindow, self).__init__() + hBoxLayout = QHBoxLayout(self) + self.plainTextEdit = QPlainTextEdit() + self.plainTextEdit.setMinimumWidth(400) + self.plainTextEdit.setReadOnly(True) + hBoxLayout.addWidget(self.plainTextEdit) + self.renderWindow = RenderWindow(QSurfaceFormat()) + container = QWidget.createWindowContainer(self.renderWindow) + container.setMinimumSize(QSize(400, 400)) + hBoxLayout.addWidget(container) + + def updateDescription(self): + text = "{}\n\nPython {}\n\n{}".format(QLibraryInfo.build(), sys.version, + self.renderWindow.glInfo()) + self.plainTextEdit.setPlainText(text) + +if __name__ == '__main__': + parser = ArgumentParser(description="contextinfo", formatter_class=RawTextHelpFormatter) + parser.add_argument('--gles', '-g', action='store_true', + help='Use OpenGL ES') + parser.add_argument('--software', '-s', action='store_true', + help='Use Software OpenGL') + parser.add_argument('--desktop', '-d', action='store_true', + help='Use Desktop OpenGL') + options = parser.parse_args() + if options.gles: + QCoreApplication.setAttribute(Qt.AA_UseOpenGLES) + elif options.software: + QCoreApplication.setAttribute(Qt.AA_UseSoftwareOpenGL) + elif options.desktop: + QCoreApplication.setAttribute(Qt.AA_UseDesktopOpenGL) + + app = QApplication(sys.argv) + mainWindow = MainWindow() + mainWindow.show() + mainWindow.updateDescription() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/opengl/grabber.py b/venv/Lib/site-packages/PySide2/examples/opengl/grabber.py new file mode 100644 index 0000000..4c8f9a0 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/opengl/grabber.py @@ -0,0 +1,437 @@ + +############################################################################ +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################ + +"""PySide2 port of the opengl/legacy/grabber example from Qt v5.x""" + +import sys +import math + +from PySide2 import QtCore, QtGui, QtWidgets, QtOpenGL + +try: + from OpenGL.GL import * +except ImportError: + app = QtWidgets.QApplication(sys.argv) + messageBox = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Critical, "OpenGL grabber", + "PyOpenGL must be installed to run this example.", + QtWidgets.QMessageBox.Close) + messageBox.setDetailedText("Run:\npip install PyOpenGL PyOpenGL_accelerate") + messageBox.exec_() + sys.exit(1) + + +class GLWidget(QtOpenGL.QGLWidget): + xRotationChanged = QtCore.Signal(int) + yRotationChanged = QtCore.Signal(int) + zRotationChanged = QtCore.Signal(int) + + def __init__(self, parent=None): + super(GLWidget, self).__init__(parent) + + self.gear1 = 0 + self.gear2 = 0 + self.gear3 = 0 + self.xRot = 0 + self.yRot = 0 + self.zRot = 0 + self.gear1Rot = 0 + + timer = QtCore.QTimer(self) + timer.timeout.connect(self.advanceGears) + timer.start(20) + + def freeResources(self): + self.makeCurrent() + glDeleteLists(self.gear1, 1) + glDeleteLists(self.gear2, 1) + glDeleteLists(self.gear3, 1) + + def setXRotation(self, angle): + self.normalizeAngle(angle) + + if angle != self.xRot: + self.xRot = angle + self.xRotationChanged.emit(angle) + self.updateGL() + + def setYRotation(self, angle): + self.normalizeAngle(angle) + + if angle != self.yRot: + self.yRot = angle + self.yRotationChanged.emit(angle) + self.updateGL() + + def setZRotation(self, angle): + self.normalizeAngle(angle) + + if angle != self.zRot: + self.zRot = angle + self.zRotationChanged.emit(angle) + self.updateGL() + + def initializeGL(self): + lightPos = (5.0, 5.0, 10.0, 1.0) + reflectance1 = (0.8, 0.1, 0.0, 1.0) + reflectance2 = (0.0, 0.8, 0.2, 1.0) + reflectance3 = (0.2, 0.2, 1.0, 1.0) + + glLightfv(GL_LIGHT0, GL_POSITION, lightPos) + glEnable(GL_LIGHTING) + glEnable(GL_LIGHT0) + glEnable(GL_DEPTH_TEST) + + self.gear1 = self.makeGear(reflectance1, 1.0, 4.0, 1.0, 0.7, 20) + self.gear2 = self.makeGear(reflectance2, 0.5, 2.0, 2.0, 0.7, 10) + self.gear3 = self.makeGear(reflectance3, 1.3, 2.0, 0.5, 0.7, 10) + + glEnable(GL_NORMALIZE) + glClearColor(0.0, 0.0, 0.0, 1.0) + + def paintGL(self): + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) + + glPushMatrix() + glRotated(self.xRot / 16.0, 1.0, 0.0, 0.0) + glRotated(self.yRot / 16.0, 0.0, 1.0, 0.0) + glRotated(self.zRot / 16.0, 0.0, 0.0, 1.0) + + self.drawGear(self.gear1, -3.0, -2.0, 0.0, self.gear1Rot / 16.0) + self.drawGear(self.gear2, +3.1, -2.0, 0.0, + -2.0 * (self.gear1Rot / 16.0) - 9.0) + + glRotated(+90.0, 1.0, 0.0, 0.0) + self.drawGear(self.gear3, -3.1, -1.8, -2.2, + +2.0 * (self.gear1Rot / 16.0) - 2.0) + + glPopMatrix() + + def resizeGL(self, width, height): + side = min(width, height) + if side < 0: + return + + glViewport(int((width - side) / 2), int((height - side) / 2), side, side) + + glMatrixMode(GL_PROJECTION) + glLoadIdentity() + glFrustum(-1.0, +1.0, -1.0, 1.0, 5.0, 60.0) + glMatrixMode(GL_MODELVIEW) + glLoadIdentity() + glTranslated(0.0, 0.0, -40.0) + + def mousePressEvent(self, event): + self.lastPos = event.pos() + + def mouseMoveEvent(self, event): + dx = event.x() - self.lastPos.x() + dy = event.y() - self.lastPos.y() + + if event.buttons() & QtCore.Qt.LeftButton: + self.setXRotation(self.xRot + 8 * dy) + self.setYRotation(self.yRot + 8 * dx) + elif event.buttons() & QtCore.Qt.RightButton: + self.setXRotation(self.xRot + 8 * dy) + self.setZRotation(self.zRot + 8 * dx) + + self.lastPos = event.pos() + + def advanceGears(self): + self.gear1Rot += 2 * 16 + self.updateGL() + + def xRotation(self): + return self.xRot + + def yRotation(self): + return self.yRot + + def zRotation(self): + return self.zRot + + def makeGear(self, reflectance, innerRadius, outerRadius, thickness, toothSize, toothCount): + list = glGenLists(1) + glNewList(list, GL_COMPILE) + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, reflectance) + + r0 = innerRadius + r1 = outerRadius - toothSize / 2.0 + r2 = outerRadius + toothSize / 2.0 + delta = (2.0 * math.pi / toothCount) / 4.0 + z = thickness / 2.0 + + glShadeModel(GL_FLAT) + + for i in range(2): + if i == 0: + sign = +1.0 + else: + sign = -1.0 + + glNormal3d(0.0, 0.0, sign) + + glBegin(GL_QUAD_STRIP) + + for j in range(toothCount+1): + angle = 2.0 * math.pi * j / toothCount + glVertex3d(r0 * math.cos(angle), r0 * math.sin(angle), sign * z) + glVertex3d(r1 * math.cos(angle), r1 * math.sin(angle), sign * z) + glVertex3d(r0 * math.cos(angle), r0 * math.sin(angle), sign * z) + glVertex3d(r1 * math.cos(angle + 3 * delta), r1 * math.sin(angle + 3 * delta), sign * z) + + glEnd() + + glBegin(GL_QUADS) + + for j in range(toothCount): + angle = 2.0 * math.pi * j / toothCount + glVertex3d(r1 * math.cos(angle), r1 * math.sin(angle), sign * z) + glVertex3d(r2 * math.cos(angle + delta), r2 * math.sin(angle + delta), sign * z) + glVertex3d(r2 * math.cos(angle + 2 * delta), r2 * math.sin(angle + 2 * delta), sign * z) + glVertex3d(r1 * math.cos(angle + 3 * delta), r1 * math.sin(angle + 3 * delta), sign * z) + + glEnd() + + glBegin(GL_QUAD_STRIP) + + for i in range(toothCount): + for j in range(2): + angle = 2.0 * math.pi * (i + (j / 2.0)) / toothCount + s1 = r1 + s2 = r2 + + if j == 1: + s1, s2 = s2, s1 + + glNormal3d(math.cos(angle), math.sin(angle), 0.0) + glVertex3d(s1 * math.cos(angle), s1 * math.sin(angle), +z) + glVertex3d(s1 * math.cos(angle), s1 * math.sin(angle), -z) + + glNormal3d(s2 * math.sin(angle + delta) - s1 * math.sin(angle), s1 * math.cos(angle) - s2 * math.cos(angle + delta), 0.0) + glVertex3d(s2 * math.cos(angle + delta), s2 * math.sin(angle + delta), +z) + glVertex3d(s2 * math.cos(angle + delta), s2 * math.sin(angle + delta), -z) + + glVertex3d(r1, 0.0, +z) + glVertex3d(r1, 0.0, -z) + glEnd() + + glShadeModel(GL_SMOOTH) + + glBegin(GL_QUAD_STRIP) + + for i in range(toothCount+1): + angle = i * 2.0 * math.pi / toothCount + glNormal3d(-math.cos(angle), -math.sin(angle), 0.0) + glVertex3d(r0 * math.cos(angle), r0 * math.sin(angle), +z) + glVertex3d(r0 * math.cos(angle), r0 * math.sin(angle), -z) + + glEnd() + + glEndList() + + return list + + def drawGear(self, gear, dx, dy, dz, angle): + glPushMatrix() + glTranslated(dx, dy, dz) + glRotated(angle, 0.0, 0.0, 1.0) + glCallList(gear) + glPopMatrix() + + def normalizeAngle(self, angle): + while (angle < 0): + angle += 360 * 16 + + while (angle > 360 * 16): + angle -= 360 * 16 + + +class MainWindow(QtWidgets.QMainWindow): + def __init__(self): + super(MainWindow, self).__init__() + + centralWidget = QtWidgets.QWidget() + self.setCentralWidget(centralWidget) + + self.glWidget = GLWidget() + self.pixmapLabel = QtWidgets.QLabel() + + self.glWidgetArea = QtWidgets.QScrollArea() + self.glWidgetArea.setWidget(self.glWidget) + self.glWidgetArea.setWidgetResizable(True) + self.glWidgetArea.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) + self.glWidgetArea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) + self.glWidgetArea.setSizePolicy(QtWidgets.QSizePolicy.Ignored, + QtWidgets.QSizePolicy.Ignored) + self.glWidgetArea.setMinimumSize(50, 50) + + self.pixmapLabelArea = QtWidgets.QScrollArea() + self.pixmapLabelArea.setWidget(self.pixmapLabel) + self.pixmapLabelArea.setSizePolicy(QtWidgets.QSizePolicy.Ignored, + QtWidgets.QSizePolicy.Ignored) + self.pixmapLabelArea.setMinimumSize(50, 50) + + xSlider = self.createSlider(self.glWidget.xRotationChanged, + self.glWidget.setXRotation) + ySlider = self.createSlider(self.glWidget.yRotationChanged, + self.glWidget.setYRotation) + zSlider = self.createSlider(self.glWidget.zRotationChanged, + self.glWidget.setZRotation) + + self.createActions() + self.createMenus() + + centralLayout = QtWidgets.QGridLayout() + centralLayout.addWidget(self.glWidgetArea, 0, 0) + centralLayout.addWidget(self.pixmapLabelArea, 0, 1) + centralLayout.addWidget(xSlider, 1, 0, 1, 2) + centralLayout.addWidget(ySlider, 2, 0, 1, 2) + centralLayout.addWidget(zSlider, 3, 0, 1, 2) + centralWidget.setLayout(centralLayout) + + xSlider.setValue(15 * 16) + ySlider.setValue(345 * 16) + zSlider.setValue(0 * 16) + + self.setWindowTitle("Grabber") + self.resize(400, 300) + + def renderIntoPixmap(self): + size = self.getSize() + + if size.isValid(): + pixmap = self.glWidget.renderPixmap(size.width(), size.height()) + self.setPixmap(pixmap) + + def grabFrameBuffer(self): + image = self.glWidget.grabFrameBuffer() + self.setPixmap(QtGui.QPixmap.fromImage(image)) + + def clearPixmap(self): + self.setPixmap(QtGui.QPixmap()) + + def about(self): + QtWidgets.QMessageBox.about(self, "About Grabber", + "The Grabber example demonstrates two approaches for " + "rendering OpenGL into a Qt pixmap.") + + def createActions(self): + self.renderIntoPixmapAct = QtWidgets.QAction("&Render into Pixmap...", + self, shortcut="Ctrl+R", triggered=self.renderIntoPixmap) + + self.grabFrameBufferAct = QtWidgets.QAction("&Grab Frame Buffer", self, + shortcut="Ctrl+G", triggered=self.grabFrameBuffer) + + self.clearPixmapAct = QtWidgets.QAction("&Clear Pixmap", self, + shortcut="Ctrl+L", triggered=self.clearPixmap) + + self.exitAct = QtWidgets.QAction("E&xit", self, shortcut="Ctrl+Q", + triggered=self.close) + + self.aboutAct = QtWidgets.QAction("&About", self, triggered=self.about) + + self.aboutQtAct = QtWidgets.QAction("About &Qt", self, + triggered=qApp.aboutQt) + + def createMenus(self): + self.fileMenu = self.menuBar().addMenu("&File") + self.fileMenu.addAction(self.renderIntoPixmapAct) + self.fileMenu.addAction(self.grabFrameBufferAct) + self.fileMenu.addAction(self.clearPixmapAct) + self.fileMenu.addSeparator() + self.fileMenu.addAction(self.exitAct) + + self.helpMenu = self.menuBar().addMenu("&Help") + self.helpMenu.addAction(self.aboutAct) + self.helpMenu.addAction(self.aboutQtAct) + + def createSlider(self, changedSignal, setterSlot): + slider = QtWidgets.QSlider(QtCore.Qt.Horizontal) + slider.setRange(0, 360 * 16) + slider.setSingleStep(16) + slider.setPageStep(15 * 16) + slider.setTickInterval(15 * 16) + slider.setTickPosition(QtWidgets.QSlider.TicksRight) + + slider.valueChanged.connect(setterSlot) + changedSignal.connect(slider.setValue) + + return slider + + def setPixmap(self, pixmap): + self.pixmapLabel.setPixmap(pixmap) + size = pixmap.size() + + if size - QtCore.QSize(1, 0) == self.pixmapLabelArea.maximumViewportSize(): + size -= QtCore.QSize(1, 0) + + self.pixmapLabel.resize(size) + + def getSize(self): + text, ok = QtWidgets.QInputDialog.getText(self, "Grabber", + "Enter pixmap size:", QtWidgets.QLineEdit.Normal, + "%d x %d" % (self.glWidget.width(), self.glWidget.height())) + + if not ok: + return QtCore.QSize() + + regExp = QtCore.QRegularExpression("([0-9]+) *x *([0-9]+)") + assert regExp.isValid() + + match = regExp.match(text) + if match.hasMatch(): + width = int(match.captured(1)) + height = int(match.captured(2)) + if width > 0 and width < 2048 and height > 0 and height < 2048: + return QtCore.QSize(width, height) + + return self.glWidget.size() + + +if __name__ == '__main__': + + app = QtWidgets.QApplication(sys.argv) + mainWin = MainWindow() + mainWin.show() + res = app.exec_() + mainWin.glWidget.freeResources() + sys.exit(res) diff --git a/venv/Lib/site-packages/PySide2/examples/opengl/hellogl.py b/venv/Lib/site-packages/PySide2/examples/opengl/hellogl.py new file mode 100644 index 0000000..f3aa73a --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/opengl/hellogl.py @@ -0,0 +1,287 @@ + +############################################################################ +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################ + +"""PySide2 port of the opengl/legacy/hellogl example from Qt v5.x""" + +import sys +import math +from PySide2 import QtCore, QtGui, QtWidgets, QtOpenGL + +try: + from OpenGL import GL +except ImportError: + app = QtWidgets.QApplication(sys.argv) + messageBox = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Critical, "OpenGL hellogl", + "PyOpenGL must be installed to run this example.", + QtWidgets.QMessageBox.Close) + messageBox.setDetailedText("Run:\npip install PyOpenGL PyOpenGL_accelerate") + messageBox.exec_() + sys.exit(1) + + +class Window(QtWidgets.QWidget): + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) + + self.glWidget = GLWidget() + + self.xSlider = self.createSlider(QtCore.SIGNAL("xRotationChanged(int)"), + self.glWidget.setXRotation) + self.ySlider = self.createSlider(QtCore.SIGNAL("yRotationChanged(int)"), + self.glWidget.setYRotation) + self.zSlider = self.createSlider(QtCore.SIGNAL("zRotationChanged(int)"), + self.glWidget.setZRotation) + + mainLayout = QtWidgets.QHBoxLayout() + mainLayout.addWidget(self.glWidget) + mainLayout.addWidget(self.xSlider) + mainLayout.addWidget(self.ySlider) + mainLayout.addWidget(self.zSlider) + self.setLayout(mainLayout) + + self.xSlider.setValue(170 * 16) + self.ySlider.setValue(160 * 16) + self.zSlider.setValue(90 * 16) + + self.setWindowTitle(self.tr("Hello GL")) + + def createSlider(self, changedSignal, setterSlot): + slider = QtWidgets.QSlider(QtCore.Qt.Vertical) + + slider.setRange(0, 360 * 16) + slider.setSingleStep(16) + slider.setPageStep(15 * 16) + slider.setTickInterval(15 * 16) + slider.setTickPosition(QtWidgets.QSlider.TicksRight) + + self.glWidget.connect(slider, QtCore.SIGNAL("valueChanged(int)"), setterSlot) + self.connect(self.glWidget, changedSignal, slider, QtCore.SLOT("setValue(int)")) + + return slider + + +class GLWidget(QtOpenGL.QGLWidget): + xRotationChanged = QtCore.Signal(int) + yRotationChanged = QtCore.Signal(int) + zRotationChanged = QtCore.Signal(int) + + def __init__(self, parent=None): + QtOpenGL.QGLWidget.__init__(self, parent) + + self.object = 0 + self.xRot = 0 + self.yRot = 0 + self.zRot = 0 + + self.lastPos = QtCore.QPoint() + + self.trolltechGreen = QtGui.QColor.fromCmykF(0.40, 0.0, 1.0, 0.0) + self.trolltechPurple = QtGui.QColor.fromCmykF(0.39, 0.39, 0.0, 0.0) + + def xRotation(self): + return self.xRot + + def yRotation(self): + return self.yRot + + def zRotation(self): + return self.zRot + + def minimumSizeHint(self): + return QtCore.QSize(50, 50) + + def sizeHint(self): + return QtCore.QSize(400, 400) + + def setXRotation(self, angle): + angle = self.normalizeAngle(angle) + if angle != self.xRot: + self.xRot = angle + self.emit(QtCore.SIGNAL("xRotationChanged(int)"), angle) + self.updateGL() + + def setYRotation(self, angle): + angle = self.normalizeAngle(angle) + if angle != self.yRot: + self.yRot = angle + self.emit(QtCore.SIGNAL("yRotationChanged(int)"), angle) + self.updateGL() + + def setZRotation(self, angle): + angle = self.normalizeAngle(angle) + if angle != self.zRot: + self.zRot = angle + self.emit(QtCore.SIGNAL("zRotationChanged(int)"), angle) + self.updateGL() + + def initializeGL(self): + self.qglClearColor(self.trolltechPurple.darker()) + self.object = self.makeObject() + GL.glShadeModel(GL.GL_FLAT) + GL.glEnable(GL.GL_DEPTH_TEST) + GL.glEnable(GL.GL_CULL_FACE) + + def paintGL(self): + GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT) + GL.glLoadIdentity() + GL.glTranslated(0.0, 0.0, -10.0) + GL.glRotated(self.xRot / 16.0, 1.0, 0.0, 0.0) + GL.glRotated(self.yRot / 16.0, 0.0, 1.0, 0.0) + GL.glRotated(self.zRot / 16.0, 0.0, 0.0, 1.0) + GL.glCallList(self.object) + + def resizeGL(self, width, height): + side = min(width, height) + GL.glViewport(int((width - side) / 2),int((height - side) / 2), side, side) + + GL.glMatrixMode(GL.GL_PROJECTION) + GL.glLoadIdentity() + GL.glOrtho(-0.5, +0.5, -0.5, +0.5, 4.0, 15.0) + GL.glMatrixMode(GL.GL_MODELVIEW) + + def mousePressEvent(self, event): + self.lastPos = QtCore.QPoint(event.pos()) + + def mouseMoveEvent(self, event): + dx = event.x() - self.lastPos.x() + dy = event.y() - self.lastPos.y() + + if event.buttons() & QtCore.Qt.LeftButton: + self.setXRotation(self.xRot + 8 * dy) + self.setYRotation(self.yRot + 8 * dx) + elif event.buttons() & QtCore.Qt.RightButton: + self.setXRotation(self.xRot + 8 * dy) + self.setZRotation(self.zRot + 8 * dx) + + self.lastPos = QtCore.QPoint(event.pos()) + + def makeObject(self): + genList = GL.glGenLists(1) + GL.glNewList(genList, GL.GL_COMPILE) + + GL.glBegin(GL.GL_QUADS) + + x1 = +0.06 + y1 = -0.14 + x2 = +0.14 + y2 = -0.06 + x3 = +0.08 + y3 = +0.00 + x4 = +0.30 + y4 = +0.22 + + self.quad(x1, y1, x2, y2, y2, x2, y1, x1) + self.quad(x3, y3, x4, y4, y4, x4, y3, x3) + + self.extrude(x1, y1, x2, y2) + self.extrude(x2, y2, y2, x2) + self.extrude(y2, x2, y1, x1) + self.extrude(y1, x1, x1, y1) + self.extrude(x3, y3, x4, y4) + self.extrude(x4, y4, y4, x4) + self.extrude(y4, x4, y3, x3) + + Pi = 3.14159265358979323846 + NumSectors = 200 + + for i in range(NumSectors): + angle1 = (i * 2 * Pi) / NumSectors + x5 = 0.30 * math.sin(angle1) + y5 = 0.30 * math.cos(angle1) + x6 = 0.20 * math.sin(angle1) + y6 = 0.20 * math.cos(angle1) + + angle2 = ((i + 1) * 2 * Pi) / NumSectors + x7 = 0.20 * math.sin(angle2) + y7 = 0.20 * math.cos(angle2) + x8 = 0.30 * math.sin(angle2) + y8 = 0.30 * math.cos(angle2) + + self.quad(x5, y5, x6, y6, x7, y7, x8, y8) + + self.extrude(x6, y6, x7, y7) + self.extrude(x8, y8, x5, y5) + + GL.glEnd() + GL.glEndList() + + return genList + + def quad(self, x1, y1, x2, y2, x3, y3, x4, y4): + self.qglColor(self.trolltechGreen) + + GL.glVertex3d(x1, y1, +0.05) + GL.glVertex3d(x2, y2, +0.05) + GL.glVertex3d(x3, y3, +0.05) + GL.glVertex3d(x4, y4, +0.05) + + GL.glVertex3d(x4, y4, -0.05) + GL.glVertex3d(x3, y3, -0.05) + GL.glVertex3d(x2, y2, -0.05) + GL.glVertex3d(x1, y1, -0.05) + + def extrude(self, x1, y1, x2, y2): + self.qglColor(self.trolltechGreen.darker(250 + int(100 * x1))) + + GL.glVertex3d(x1, y1, -0.05) + GL.glVertex3d(x2, y2, -0.05) + GL.glVertex3d(x2, y2, +0.05) + GL.glVertex3d(x1, y1, +0.05) + + def normalizeAngle(self, angle): + while angle < 0: + angle += 360 * 16 + while angle > 360 * 16: + angle -= 360 * 16 + return angle + + def freeResources(self): + self.makeCurrent() + GL.glDeleteLists(self.object, 1) + +if __name__ == '__main__': + app = QtWidgets.QApplication(sys.argv) + window = Window() + window.show() + res = app.exec_() + window.glWidget.freeResources() + sys.exit(res) diff --git a/venv/Lib/site-packages/PySide2/examples/opengl/hellogl2.py b/venv/Lib/site-packages/PySide2/examples/opengl/hellogl2.py new file mode 100644 index 0000000..ad3562f --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/opengl/hellogl2.py @@ -0,0 +1,472 @@ + +############################################################################ +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2018 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################ + +"""PySide2 port of the opengl/hellogl2 example from Qt v5.x""" + +import sys +import math +import numpy +import ctypes +from PySide2.QtCore import QCoreApplication, Signal, SIGNAL, SLOT, Qt, QSize, QPoint +from PySide2.QtGui import (QVector3D, QOpenGLFunctions, QOpenGLVertexArrayObject, QOpenGLBuffer, + QOpenGLShaderProgram, QMatrix4x4, QOpenGLShader, QOpenGLContext, QSurfaceFormat) +from PySide2.QtWidgets import (QApplication, QWidget, QMessageBox, QHBoxLayout, QSlider, + QOpenGLWidget) +from shiboken2 import VoidPtr + +try: + from OpenGL import GL +except ImportError: + app = QApplication(sys.argv) + messageBox = QMessageBox(QMessageBox.Critical, "OpenGL hellogl", + "PyOpenGL must be installed to run this example.", + QMessageBox.Close) + messageBox.setDetailedText("Run:\npip install PyOpenGL PyOpenGL_accelerate") + messageBox.exec_() + sys.exit(1) + + +class Window(QWidget): + def __init__(self, parent=None): + QWidget.__init__(self, parent) + + self.glWidget = GLWidget() + + self.xSlider = self.createSlider(SIGNAL("xRotationChanged(int)"), + self.glWidget.setXRotation) + self.ySlider = self.createSlider(SIGNAL("yRotationChanged(int)"), + self.glWidget.setYRotation) + self.zSlider = self.createSlider(SIGNAL("zRotationChanged(int)"), + self.glWidget.setZRotation) + + mainLayout = QHBoxLayout() + mainLayout.addWidget(self.glWidget) + mainLayout.addWidget(self.xSlider) + mainLayout.addWidget(self.ySlider) + mainLayout.addWidget(self.zSlider) + self.setLayout(mainLayout) + + self.xSlider.setValue(15 * 16) + self.ySlider.setValue(345 * 16) + self.zSlider.setValue(0 * 16) + + self.setWindowTitle(self.tr("Hello GL")) + + def createSlider(self, changedSignal, setterSlot): + slider = QSlider(Qt.Vertical) + + slider.setRange(0, 360 * 16) + slider.setSingleStep(16) + slider.setPageStep(15 * 16) + slider.setTickInterval(15 * 16) + slider.setTickPosition(QSlider.TicksRight) + + self.glWidget.connect(slider, SIGNAL("valueChanged(int)"), setterSlot) + self.connect(self.glWidget, changedSignal, slider, SLOT("setValue(int)")) + + return slider + + def keyPressEvent(self, event): + if event.key() == Qt.Key_Escape: + self.close() + else: + super(Window, self).keyPressEvent(event) + +class Logo(): + def __init__(self): + self.m_count = 0 + self.i = 0 + self.m_data = numpy.empty(2500 * 6, dtype = ctypes.c_float) + + x1 = +0.06 + y1 = -0.14 + x2 = +0.14 + y2 = -0.06 + x3 = +0.08 + y3 = +0.00 + x4 = +0.30 + y4 = +0.22 + + self.quad(x1, y1, x2, y2, y2, x2, y1, x1) + self.quad(x3, y3, x4, y4, y4, x4, y3, x3) + + self.extrude(x1, y1, x2, y2) + self.extrude(x2, y2, y2, x2) + self.extrude(y2, x2, y1, x1) + self.extrude(y1, x1, x1, y1) + self.extrude(x3, y3, x4, y4) + self.extrude(x4, y4, y4, x4) + self.extrude(y4, x4, y3, x3) + + Pi = 3.14159265358979323846 + NumSectors = 100 + + for i in range(NumSectors): + angle = (i * 2 * Pi) / NumSectors + x5 = 0.30 * math.sin(angle) + y5 = 0.30 * math.cos(angle) + x6 = 0.20 * math.sin(angle) + y6 = 0.20 * math.cos(angle) + + angle = ((i + 1) * 2 * Pi) / NumSectors + x7 = 0.20 * math.sin(angle) + y7 = 0.20 * math.cos(angle) + x8 = 0.30 * math.sin(angle) + y8 = 0.30 * math.cos(angle) + + self.quad(x5, y5, x6, y6, x7, y7, x8, y8) + + self.extrude(x6, y6, x7, y7) + self.extrude(x8, y8, x5, y5) + + def constData(self): + return self.m_data.tobytes() + + def count(self): + return self.m_count + + def vertexCount(self): + return self.m_count / 6 + + def quad(self, x1, y1, x2, y2, x3, y3, x4, y4): + n = QVector3D.normal(QVector3D(x4 - x1, y4 - y1, 0), QVector3D(x2 - x1, y2 - y1, 0)) + + self.add(QVector3D(x1, y1, -0.05), n) + self.add(QVector3D(x4, y4, -0.05), n) + self.add(QVector3D(x2, y2, -0.05), n) + + self.add(QVector3D(x3, y3, -0.05), n) + self.add(QVector3D(x2, y2, -0.05), n) + self.add(QVector3D(x4, y4, -0.05), n) + + n = QVector3D.normal(QVector3D(x1 - x4, y1 - y4, 0), QVector3D(x2 - x4, y2 - y4, 0)) + + self.add(QVector3D(x4, y4, 0.05), n) + self.add(QVector3D(x1, y1, 0.05), n) + self.add(QVector3D(x2, y2, 0.05), n) + + self.add(QVector3D(x2, y2, 0.05), n) + self.add(QVector3D(x3, y3, 0.05), n) + self.add(QVector3D(x4, y4, 0.05), n) + + def extrude(self, x1, y1, x2, y2): + n = QVector3D.normal(QVector3D(0, 0, -0.1), QVector3D(x2 - x1, y2 - y1, 0)) + + self.add(QVector3D(x1, y1, 0.05), n) + self.add(QVector3D(x1, y1, -0.05), n) + self.add(QVector3D(x2, y2, 0.05), n) + + self.add(QVector3D(x2, y2, -0.05), n) + self.add(QVector3D(x2, y2, 0.05), n) + self.add(QVector3D(x1, y1, -0.05), n) + + def add(self, v, n): + self.m_data[self.i] = v.x() + self.i += 1 + self.m_data[self.i] = v.y() + self.i += 1 + self.m_data[self.i] = v.z() + self.i += 1 + self.m_data[self.i] = n.x() + self.i += 1 + self.m_data[self.i] = n.y() + self.i += 1 + self.m_data[self.i] = n.z() + self.i += 1 + self.m_count += 6 + +class GLWidget(QOpenGLWidget, QOpenGLFunctions): + xRotationChanged = Signal(int) + yRotationChanged = Signal(int) + zRotationChanged = Signal(int) + + def __init__(self, parent=None): + QOpenGLWidget.__init__(self, parent) + QOpenGLFunctions.__init__(self) + + self.core = "--coreprofile" in QCoreApplication.arguments() + self.xRot = 0 + self.yRot = 0 + self.zRot = 0 + self.lastPos = 0 + self.logo = Logo() + self.vao = QOpenGLVertexArrayObject() + self.logoVbo = QOpenGLBuffer() + self.program = QOpenGLShaderProgram() + self.projMatrixLoc = 0 + self.mvMatrixLoc = 0 + self.normalMatrixLoc = 0 + self.lightPosLoc = 0 + self.proj = QMatrix4x4() + self.camera = QMatrix4x4() + self.world = QMatrix4x4() + self.transparent = "--transparent" in QCoreApplication.arguments() + if self.transparent: + fmt = self.format() + fmt.setAlphaBufferSize(8) + self.setFormat(fmt) + + def xRotation(self): + return self.xRot + + def yRotation(self): + return self.yRot + + def zRotation(self): + return self.zRot + + def minimumSizeHint(self): + return QSize(50, 50) + + def sizeHint(self): + return QSize(400, 400) + + def normalizeAngle(self, angle): + while angle < 0: + angle += 360 * 16 + while angle > 360 * 16: + angle -= 360 * 16 + return angle + + def setXRotation(self, angle): + angle = self.normalizeAngle(angle) + if angle != self.xRot: + self.xRot = angle + self.emit(SIGNAL("xRotationChanged(int)"), angle) + self.update() + + def setYRotation(self, angle): + angle = self.normalizeAngle(angle) + if angle != self.yRot: + self.yRot = angle + self.emit(SIGNAL("yRotationChanged(int)"), angle) + self.update() + + def setZRotation(self, angle): + angle = self.normalizeAngle(angle) + if angle != self.zRot: + self.zRot = angle + self.emit(SIGNAL("zRotationChanged(int)"), angle) + self.update() + + def cleanup(self): + self.makeCurrent() + self.logoVbo.destroy() + del self.program + self.program = None + self.doneCurrent() + + def vertexShaderSourceCore(self): + return """#version 150 + in vec4 vertex; + in vec3 normal; + out vec3 vert; + out vec3 vertNormal; + uniform mat4 projMatrix; + uniform mat4 mvMatrix; + uniform mat3 normalMatrix; + void main() { + vert = vertex.xyz; + vertNormal = normalMatrix * normal; + gl_Position = projMatrix * mvMatrix * vertex; + }""" + + def fragmentShaderSourceCore(self): + return """#version 150 + in highp vec3 vert; + in highp vec3 vertNormal; + out highp vec4 fragColor; + uniform highp vec3 lightPos; + void main() { + highp vec3 L = normalize(lightPos - vert); + highp float NL = max(dot(normalize(vertNormal), L), 0.0); + highp vec3 color = vec3(0.39, 1.0, 0.0); + highp vec3 col = clamp(color * 0.2 + color * 0.8 * NL, 0.0, 1.0); + fragColor = vec4(col, 1.0); + }""" + + + def vertexShaderSource(self): + return """attribute vec4 vertex; + attribute vec3 normal; + varying vec3 vert; + varying vec3 vertNormal; + uniform mat4 projMatrix; + uniform mat4 mvMatrix; + uniform mat3 normalMatrix; + void main() { + vert = vertex.xyz; + vertNormal = normalMatrix * normal; + gl_Position = projMatrix * mvMatrix * vertex; + }""" + + def fragmentShaderSource(self): + return """varying highp vec3 vert; + varying highp vec3 vertNormal; + uniform highp vec3 lightPos; + void main() { + highp vec3 L = normalize(lightPos - vert); + highp float NL = max(dot(normalize(vertNormal), L), 0.0); + highp vec3 color = vec3(0.39, 1.0, 0.0); + highp vec3 col = clamp(color * 0.2 + color * 0.8 * NL, 0.0, 1.0); + gl_FragColor = vec4(col, 1.0); + }""" + + def initializeGL(self): + self.context().aboutToBeDestroyed.connect(self.cleanup) + self.initializeOpenGLFunctions() + self.glClearColor(0, 0, 0, 1) + + self.program = QOpenGLShaderProgram() + + if self.core: + self.vertexShader = self.vertexShaderSourceCore() + self.fragmentShader = self.fragmentShaderSourceCore() + else: + self.vertexShader = self.vertexShaderSource() + self.fragmentShader = self.fragmentShaderSource() + + self.program.addShaderFromSourceCode(QOpenGLShader.Vertex, self.vertexShader) + self.program.addShaderFromSourceCode(QOpenGLShader.Fragment, self.fragmentShader) + self.program.bindAttributeLocation("vertex", 0) + self.program.bindAttributeLocation("normal", 1) + self.program.link() + + self.program.bind() + self.projMatrixLoc = self.program.uniformLocation("projMatrix") + self.mvMatrixLoc = self.program.uniformLocation("mvMatrix") + self.normalMatrixLoc = self.program.uniformLocation("normalMatrix") + self.lightPosLoc = self.program.uniformLocation("lightPos") + + self.vao.create() + vaoBinder = QOpenGLVertexArrayObject.Binder(self.vao) + + self.logoVbo.create() + self.logoVbo.bind() + float_size = ctypes.sizeof(ctypes.c_float) + self.logoVbo.allocate(self.logo.constData(), self.logo.count() * float_size) + + self.setupVertexAttribs() + + self.camera.setToIdentity() + self.camera.translate(0, 0, -1) + + self.program.setUniformValue(self.lightPosLoc, QVector3D(0, 0, 70)) + self.program.release() + vaoBinder = None + + def setupVertexAttribs(self): + self.logoVbo.bind() + f = QOpenGLContext.currentContext().functions() + f.glEnableVertexAttribArray(0) + f.glEnableVertexAttribArray(1) + float_size = ctypes.sizeof(ctypes.c_float) + + null = VoidPtr(0) + pointer = VoidPtr(3 * float_size) + f.glVertexAttribPointer(0, 3, int(GL.GL_FLOAT), int(GL.GL_FALSE), 6 * float_size, null) + f.glVertexAttribPointer(1, 3, int(GL.GL_FLOAT), int(GL.GL_FALSE), 6 * float_size, pointer) + self.logoVbo.release() + + def paintGL(self): + self.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT) + self.glEnable(GL.GL_DEPTH_TEST) + self.glEnable(GL.GL_CULL_FACE) + + self.world.setToIdentity() + self.world.rotate(180 - (self.xRot / 16), 1, 0, 0) + self.world.rotate(self.yRot / 16, 0, 1, 0) + self.world.rotate(self.zRot / 16, 0, 0, 1) + + vaoBinder = QOpenGLVertexArrayObject.Binder(self.vao) + self.program.bind() + self.program.setUniformValue(self.projMatrixLoc, self.proj) + self.program.setUniformValue(self.mvMatrixLoc, self.camera * self.world) + normalMatrix = self.world.normalMatrix() + self.program.setUniformValue(self.normalMatrixLoc, normalMatrix) + + self.glDrawArrays(GL.GL_TRIANGLES, 0, self.logo.vertexCount()) + self.program.release() + vaoBinder = None + + def resizeGL(self, width, height): + self.proj.setToIdentity() + self.proj.perspective(45, width / height, 0.01, 100) + + def mousePressEvent(self, event): + self.lastPos = QPoint(event.pos()) + + def mouseMoveEvent(self, event): + dx = event.x() - self.lastPos.x() + dy = event.y() - self.lastPos.y() + + if event.buttons() & Qt.LeftButton: + self.setXRotation(self.xRot + 8 * dy) + self.setYRotation(self.yRot + 8 * dx) + elif event.buttons() & Qt.RightButton: + self.setXRotation(self.xRot + 8 * dy) + self.setZRotation(self.zRot + 8 * dx) + + self.lastPos = QPoint(event.pos()) + +if __name__ == '__main__': + app = QApplication(sys.argv) + + fmt = QSurfaceFormat() + fmt.setDepthBufferSize(24) + if "--multisample" in QCoreApplication.arguments(): + fmt.setSamples(4) + if "--coreprofile" in QCoreApplication.arguments(): + fmt.setVersion(3, 2) + fmt.setProfile(QSurfaceFormat.CoreProfile) + QSurfaceFormat.setDefaultFormat(fmt) + + mainWindow = Window() + if "--transparent" in QCoreApplication.arguments(): + mainWindow.setAttribute(Qt.WA_TranslucentBackground) + mainWindow.setAttribute(Qt.WA_NoSystemBackground, False) + + mainWindow.resize(mainWindow.sizeHint()) + mainWindow.show() + + res = app.exec_() + sys.exit(res) diff --git a/venv/Lib/site-packages/PySide2/examples/opengl/opengl.pyproject b/venv/Lib/site-packages/PySide2/examples/opengl/opengl.pyproject new file mode 100644 index 0000000..12f435d --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/opengl/opengl.pyproject @@ -0,0 +1,5 @@ +{ + "files": ["grabber.py", "samplebuffers.py", "hellogl.py", + "hellogl2.py", "contextinfo.py", "2dpainting.py", + "overpainting.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/opengl/overpainting.py b/venv/Lib/site-packages/PySide2/examples/opengl/overpainting.py new file mode 100644 index 0000000..786337f --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/opengl/overpainting.py @@ -0,0 +1,385 @@ + +############################################################################ +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################ + +"""PySide2 port of the opengl/legacy/overpainting example from Qt v5.x""" + +import sys +import math, random +from PySide2.QtCore import * +from PySide2.QtGui import * +from PySide2.QtWidgets import * +from PySide2.QtOpenGL import * + +try: + from OpenGL.GL import * +except ImportError: + app = QApplication(sys.argv) + messageBox = QMessageBox(QMessageBox.Critical, "OpenGL overpainting", + "PyOpenGL must be installed to run this example.", + QMessageBox.Close) + messageBox.setDetailedText("Run:\npip install PyOpenGL PyOpenGL_accelerate") + messageBox.exec_() + sys.exit(1) + + +class Bubble: + def __init__(self, position, radius, velocity): + self.position = position + self.vel = velocity + self.radius = radius + self.innerColor = self.randomColor() + self.outerColor = self.randomColor() + self.updateBrush() + + def updateBrush(self): + gradient = QRadialGradient(QPointF(self.radius, self.radius), self.radius, + QPointF(self.radius*0.5, self.radius*0.5)) + + gradient.setColorAt(0, QColor(255, 255, 255, 255)) + gradient.setColorAt(0.25, self.innerColor) + gradient.setColorAt(1, self.outerColor) + self.brush = QBrush(gradient) + + def drawBubble(self, painter): + painter.save() + painter.translate(self.position.x() - self.radius, + self.position.y() - self.radius) + painter.setBrush(self.brush) + painter.drawEllipse(0, 0, int(2*self.radius), int(2*self.radius)) + painter.restore() + + def randomColor(self): + red = random.randrange(205, 256) + green = random.randrange(205, 256) + blue = random.randrange(205, 256) + alpha = random.randrange(91, 192) + + return QColor(red, green, blue, alpha) + + def move(self, bbox): + self.position += self.vel + leftOverflow = self.position.x() - self.radius - bbox.left() + rightOverflow = self.position.x() + self.radius - bbox.right() + topOverflow = self.position.y() - self.radius - bbox.top() + bottomOverflow = self.position.y() + self.radius - bbox.bottom() + + if leftOverflow < 0.0: + self.position.setX(self.position.x() - 2 * leftOverflow) + self.vel.setX(-self.vel.x()) + elif rightOverflow > 0.0: + self.position.setX(self.position.x() - 2 * rightOverflow) + self.vel.setX(-self.vel.x()) + + if topOverflow < 0.0: + self.position.setY(self.position.y() - 2 * topOverflow) + self.vel.setY(-self.vel.y()) + elif bottomOverflow > 0.0: + self.position.setY(self.position.y() - 2 * bottomOverflow) + self.vel.setY(-self.vel.y()) + + def rect(self): + return QRectF(self.position.x() - self.radius, + self.position.y() - self.radius, + 2 * self.radius, 2 * self.radius) + + +class GLWidget(QGLWidget): + def __init__(self, parent = None): + QGLWidget.__init__(self, QGLFormat(QGL.SampleBuffers), parent) + + midnight = QTime(0, 0, 0) + random.seed(midnight.secsTo(QTime.currentTime())) + + self.object = 0 + self.xRot = 0 + self.yRot = 0 + self.zRot = 0 + self.image = QImage() + self.bubbles = [] + self.lastPos = QPoint() + + self.trolltechGreen = QColor.fromCmykF(0.40, 0.0, 1.0, 0.0) + self.trolltechPurple = QColor.fromCmykF(0.39, 0.39, 0.0, 0.0) + + self.animationTimer = QTimer() + self.animationTimer.setSingleShot(False) + self.connect(self.animationTimer, SIGNAL("timeout()"), self.animate) + self.animationTimer.start(25) + + self.setAttribute(Qt.WA_NoSystemBackground) + self.setMinimumSize(200, 200) + self.setWindowTitle(self.tr("Overpainting a Scene")) + + def freeResources(self): + self.makeCurrent() + glDeleteLists(self.object, 1) + + def setXRotation(self, angle): + angle = self.normalizeAngle(angle) + if angle != self.xRot: + self.xRot = angle + self.emit(SIGNAL("xRotationChanged(int)"), angle) + + def setYRotation(self, angle): + angle = self.normalizeAngle(angle) + if angle != self.yRot: + self.yRot = angle + self.emit(SIGNAL("yRotationChanged(int)"), angle) + + def setZRotation(self, angle): + angle = self.normalizeAngle(angle) + if angle != self.zRot: + self.zRot = angle + self.emit(SIGNAL("zRotationChanged(int)"), angle) + + def initializeGL(self): + self.object = self.makeObject() + + def mousePressEvent(self, event): + self.lastPos = QPoint(event.pos()) + + def mouseMoveEvent(self, event): + dx = event.x() - self.lastPos.x() + dy = event.y() - self.lastPos.y() + + if event.buttons() & Qt.LeftButton: + self.setXRotation(self.xRot + 8 * dy) + self.setYRotation(self.yRot + 8 * dx) + elif event.buttons() & Qt.RightButton: + self.setXRotation(self.xRot + 8 * dy) + self.setZRotation(self.zRot + 8 * dx) + + self.lastPos = QPoint(event.pos()) + + def paintEvent(self, event): + painter = QPainter() + painter.begin(self) + painter.setRenderHint(QPainter.Antialiasing) + + glPushAttrib(GL_ALL_ATTRIB_BITS) + glMatrixMode(GL_PROJECTION) + glPushMatrix() + glMatrixMode(GL_MODELVIEW) + glPushMatrix() + + self.qglClearColor(self.trolltechPurple.darker()) + glShadeModel(GL_SMOOTH) + glEnable(GL_DEPTH_TEST) + glEnable(GL_CULL_FACE) + glEnable(GL_LIGHTING) + glEnable(GL_LIGHT0) + lightPosition = ( 0.5, 5.0, 7.0, 1.0 ) + glLightfv(GL_LIGHT0, GL_POSITION, lightPosition) + + self.resizeGL(self.width(), self.height()) + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) + glLoadIdentity() + glTranslated(0.0, 0.0, -10.0) + glRotated(self.xRot / 16.0, 1.0, 0.0, 0.0) + glRotated(self.yRot / 16.0, 0.0, 1.0, 0.0) + glRotated(self.zRot / 16.0, 0.0, 0.0, 1.0) + glCallList(self.object) + + glPopAttrib() + glMatrixMode(GL_MODELVIEW) + glPopMatrix() + glMatrixMode(GL_PROJECTION) + glPopMatrix() + + glDisable(GL_CULL_FACE) ### not required if begin() also does it + + for bubble in self.bubbles: + if bubble.rect().intersects(QRectF(event.rect())): + bubble.drawBubble(painter) + + painter.drawImage((self.width() - self.image.width())/2, 0, self.image) + painter.end() + + def resizeGL(self, width, height): + side = min(width, height) + glViewport(int((width - side) / 2), int((height - side) / 2), side, side) + + glMatrixMode(GL_PROJECTION) + glLoadIdentity() + glOrtho(-0.5, +0.5, +0.5, -0.5, 4.0, 15.0) + glMatrixMode(GL_MODELVIEW) + + self.formatInstructions(width, height) + + def showEvent(self, event): + self.createBubbles(20 - len(self.bubbles)) + + def sizeHint(self): + return QSize(400, 400) + + def makeObject(self): + list = glGenLists(1) + glNewList(list, GL_COMPILE) + + glEnable(GL_NORMALIZE) + glBegin(GL_QUADS) + + logoDiffuseColor = (self.trolltechGreen.red()/255.0, + self.trolltechGreen.green()/255.0, + self.trolltechGreen.blue()/255.0, 1.0) + glMaterialfv(GL_FRONT, GL_DIFFUSE, logoDiffuseColor) + + x1 = +0.06 + y1 = -0.14 + x2 = +0.14 + y2 = -0.06 + x3 = +0.08 + y3 = +0.00 + x4 = +0.30 + y4 = +0.22 + + self.quad(x1, y1, x2, y2, y2, x2, y1, x1) + self.quad(x3, y3, x4, y4, y4, x4, y3, x3) + + self.extrude(x1, y1, x2, y2) + self.extrude(x2, y2, y2, x2) + self.extrude(y2, x2, y1, x1) + self.extrude(y1, x1, x1, y1) + self.extrude(x3, y3, x4, y4) + self.extrude(x4, y4, y4, x4) + self.extrude(y4, x4, y3, x3) + + NumSectors = 200 + + for i in range(NumSectors): + angle1 = (i * 2 * math.pi) / NumSectors + x5 = 0.30 * math.sin(angle1) + y5 = 0.30 * math.cos(angle1) + x6 = 0.20 * math.sin(angle1) + y6 = 0.20 * math.cos(angle1) + + angle2 = ((i + 1) * 2 * math.pi) / NumSectors + x7 = 0.20 * math.sin(angle2) + y7 = 0.20 * math.cos(angle2) + x8 = 0.30 * math.sin(angle2) + y8 = 0.30 * math.cos(angle2) + + self.quad(x5, y5, x6, y6, x7, y7, x8, y8) + + self.extrude(x6, y6, x7, y7) + self.extrude(x8, y8, x5, y5) + + glEnd() + + glEndList() + return list + + def quad(self, x1, y1, x2, y2, x3, y3, x4, y4): + glNormal3d(0.0, 0.0, -1.0) + glVertex3d(x1, y1, -0.05) + glVertex3d(x2, y2, -0.05) + glVertex3d(x3, y3, -0.05) + glVertex3d(x4, y4, -0.05) + + glNormal3d(0.0, 0.0, 1.0) + glVertex3d(x4, y4, +0.05) + glVertex3d(x3, y3, +0.05) + glVertex3d(x2, y2, +0.05) + glVertex3d(x1, y1, +0.05) + + def extrude(self, x1, y1, x2, y2): + self.qglColor(self.trolltechGreen.darker(250 + int(100 * x1))) + + glNormal3d((x1 + x2)/2.0, (y1 + y2)/2.0, 0.0) + glVertex3d(x1, y1, +0.05) + glVertex3d(x2, y2, +0.05) + glVertex3d(x2, y2, -0.05) + glVertex3d(x1, y1, -0.05) + + def normalizeAngle(self, angle): + while angle < 0: + angle += 360 * 16 + while angle > 360 * 16: + angle -= 360 * 16 + return angle + + def createBubbles(self, number): + for i in range(number): + position = QPointF(self.width()*(0.1 + 0.8*random.random()), + self.height()*(0.1 + 0.8*random.random())) + radius = min(self.width(), self.height())*(0.0125 + 0.0875*random.random()) + velocity = QPointF(self.width()*0.0125*(-0.5 + random.random()), + self.height()*0.0125*(-0.5 + random.random())) + + self.bubbles.append(Bubble(position, radius, velocity)) + + def animate(self): + for bubble in self.bubbles: + self.update(bubble.rect().toRect()) + bubble.move(self.rect()) + self.update(bubble.rect().toRect()) + + def formatInstructions(self, width, height): + text = self.tr("Click and drag with the left mouse button " + "to rotate the Qt logo.") + metrics = QFontMetrics(self.font()) + border = max(4, metrics.leading()) + + rect = metrics.boundingRect(0, 0, width - 2*border, int(height*0.125), + Qt.AlignCenter | Qt.TextWordWrap, text) + self.image = QImage(width, rect.height() + 2*border, + QImage.Format_ARGB32_Premultiplied) + self.image.fill(qRgba(0, 0, 0, 127)) + + painter = QPainter() + painter.begin(self.image) + painter.setRenderHint(QPainter.TextAntialiasing) + painter.setPen(Qt.white) + painter.drawText((width - rect.width())/2, border, + rect.width(), rect.height(), + Qt.AlignCenter | Qt.TextWordWrap, text) + painter.end() + + +if __name__ == '__main__': + app = QApplication(sys.argv) + window = GLWidget() + window.show() + res = app.exec_() + window.freeResources() + sys.exit(res) diff --git a/venv/Lib/site-packages/PySide2/examples/opengl/samplebuffers.py b/venv/Lib/site-packages/PySide2/examples/opengl/samplebuffers.py new file mode 100644 index 0000000..ad5b794 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/opengl/samplebuffers.py @@ -0,0 +1,192 @@ + +############################################################################ +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################ + +"""PySide2 port of the opengl/legacy/samplebuffers example from Qt v5.x""" + +import sys +import math +from PySide2 import QtCore, QtGui, QtWidgets, QtOpenGL + +try: + from OpenGL import GL +except ImportError: + app = QtWidgets.QApplication(sys.argv) + messageBox = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Critical, "OpenGL samplebuffers", + "PyOpenGL must be installed to run this example.", + QtWidgets.QMessageBox.Close) + messageBox.setDetailedText("Run:\npip install PyOpenGL PyOpenGL_accelerate") + messageBox.exec_() + sys.exit(1) + + +class GLWidget(QtOpenGL.QGLWidget): + GL_MULTISAMPLE = 0x809D + rot = 0.0 + + def __init__(self, parent=None): + QtOpenGL.QGLWidget.__init__(self, QtOpenGL.QGLFormat(QtOpenGL.QGL.SampleBuffers), parent) + + self.list_ = [] + + self.startTimer(40) + self.setWindowTitle(self.tr("Sample Buffers")) + + def initializeGL(self): + GL.glMatrixMode(GL.GL_PROJECTION) + GL.glLoadIdentity() + GL.glOrtho( -.5, .5, .5, -.5, -1000, 1000) + GL.glMatrixMode(GL.GL_MODELVIEW) + GL.glLoadIdentity() + GL.glClearColor(1.0, 1.0, 1.0, 1.0) + + self.makeObject() + + def resizeGL(self, w, h): + GL.glViewport(0, 0, w, h) + + def paintGL(self): + GL.glClear(GL.GL_COLOR_BUFFER_BIT) + + GL.glMatrixMode(GL.GL_MODELVIEW) + GL.glPushMatrix() + GL.glEnable(GLWidget.GL_MULTISAMPLE) + GL.glTranslatef( -0.25, -0.10, 0.0) + GL.glScalef(0.75, 1.15, 0.0) + GL.glRotatef(GLWidget.rot, 0.0, 0.0, 1.0) + GL.glCallList(self.list_) + GL.glPopMatrix() + + GL.glPushMatrix() + GL.glDisable(GLWidget.GL_MULTISAMPLE) + GL.glTranslatef(0.25, -0.10, 0.0) + GL.glScalef(0.75, 1.15, 0.0) + GL.glRotatef(GLWidget.rot, 0.0, 0.0, 1.0) + GL.glCallList(self.list_) + GL.glPopMatrix() + + GLWidget.rot += 0.2 + + self.qglColor(QtCore.Qt.black) + self.renderText(-0.35, 0.4, 0.0, "Multisampling enabled") + self.renderText(0.15, 0.4, 0.0, "Multisampling disabled") + + def timerEvent(self, event): + self.update() + + def makeObject(self): + trolltechGreen = QtGui.QColor.fromCmykF(0.40, 0.0, 1.0, 0.0) + Pi = 3.14159265358979323846 + NumSectors = 15 + x1 = +0.06 + y1 = -0.14 + x2 = +0.14 + y2 = -0.06 + x3 = +0.08 + y3 = +0.00 + x4 = +0.30 + y4 = +0.22 + + self.list_ = GL.glGenLists(1) + GL.glNewList(self.list_, GL.GL_COMPILE) + + for i in range(NumSectors): + angle1 = float((i * 2 * Pi) / NumSectors) + x5 = 0.30 * math.sin(angle1) + y5 = 0.30 * math.cos(angle1) + x6 = 0.20 * math.sin(angle1) + y6 = 0.20 * math.cos(angle1) + + angle2 = float(((i + 1) * 2 * Pi) / NumSectors) + x7 = 0.20 * math.sin(angle2) + y7 = 0.20 * math.cos(angle2) + x8 = 0.30 * math.sin(angle2) + y8 = 0.30 * math.cos(angle2) + + self.qglColor(trolltechGreen) + self.quad(GL.GL_QUADS, x5, y5, x6, y6, x7, y7, x8, y8) + self.qglColor(QtCore.Qt.black) + self.quad(GL.GL_LINE_LOOP, x5, y5, x6, y6, x7, y7, x8, y8) + + self.qglColor(trolltechGreen) + self.quad(GL.GL_QUADS, x1, y1, x2, y2, y2, x2, y1, x1) + self.quad(GL.GL_QUADS, x3, y3, x4, y4, y4, x4, y3, x3) + + self.qglColor(QtCore.Qt.black) + self.quad(GL.GL_LINE_LOOP, x1, y1, x2, y2, y2, x2, y1, x1) + self.quad(GL.GL_LINE_LOOP, x3, y3, x4, y4, y4, x4, y3, x3) + + GL.glEndList() + + def quad(self, primitive, x1, y1, x2, y2, x3, y3, x4, y4): + GL.glBegin(primitive) + + GL.glVertex2d(x1, y1) + GL.glVertex2d(x2, y2) + GL.glVertex2d(x3, y3) + GL.glVertex2d(x4, y4) + + GL.glEnd() + + def freeResources(self): + self.makeCurrent() + GL.glDeleteLists(self.list_, 1) + + +if __name__ == '__main__': + app = QtWidgets.QApplication(sys.argv) + + if not QtOpenGL.QGLFormat.hasOpenGL(): + QMessageBox.information(0, "OpenGL pbuffers", + "This system does not support OpenGL.", + QMessageBox.Ok) + sys.exit(1) + + f = QtOpenGL.QGLFormat.defaultFormat() + f.setSampleBuffers(True) + QtOpenGL.QGLFormat.setDefaultFormat(f) + + widget = GLWidget() + widget.resize(640, 480) + widget.show() + res = app.exec_() + widget.freeResources() + sys.exit(res) diff --git a/venv/Lib/site-packages/PySide2/examples/opengl/textures/__pycache__/textures.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/opengl/textures/__pycache__/textures.cpython-310.pyc new file mode 100644 index 0000000..1cdee00 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/opengl/textures/__pycache__/textures.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/opengl/textures/__pycache__/textures_rc.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/opengl/textures/__pycache__/textures_rc.cpython-310.pyc new file mode 100644 index 0000000..b141b04 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/opengl/textures/__pycache__/textures_rc.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/opengl/textures/images/side1.png b/venv/Lib/site-packages/PySide2/examples/opengl/textures/images/side1.png new file mode 100644 index 0000000..68fd433 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/opengl/textures/images/side1.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/opengl/textures/images/side2.png b/venv/Lib/site-packages/PySide2/examples/opengl/textures/images/side2.png new file mode 100644 index 0000000..b12d30d Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/opengl/textures/images/side2.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/opengl/textures/images/side3.png b/venv/Lib/site-packages/PySide2/examples/opengl/textures/images/side3.png new file mode 100644 index 0000000..f582ae5 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/opengl/textures/images/side3.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/opengl/textures/images/side4.png b/venv/Lib/site-packages/PySide2/examples/opengl/textures/images/side4.png new file mode 100644 index 0000000..19829d2 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/opengl/textures/images/side4.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/opengl/textures/images/side5.png b/venv/Lib/site-packages/PySide2/examples/opengl/textures/images/side5.png new file mode 100644 index 0000000..3843b12 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/opengl/textures/images/side5.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/opengl/textures/images/side6.png b/venv/Lib/site-packages/PySide2/examples/opengl/textures/images/side6.png new file mode 100644 index 0000000..798a9bb Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/opengl/textures/images/side6.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/opengl/textures/textures.py b/venv/Lib/site-packages/PySide2/examples/opengl/textures/textures.py new file mode 100644 index 0000000..9730cf0 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/opengl/textures/textures.py @@ -0,0 +1,231 @@ + +############################################################################ +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################ + +"""PySide2 port of the opengl/textures example from Qt v5.x""" + +import sys +from PySide2 import QtCore, QtGui, QtWidgets, QtOpenGL + +try: + from OpenGL.GL import * +except ImportError: + app = QtWidgets.QApplication(sys.argv) + messageBox = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Critical, "OpenGL textures", + "PyOpenGL must be installed to run this example.", + QtWidgets.QMessageBox.Close) + messageBox.setDetailedText("Run:\npip install PyOpenGL PyOpenGL_accelerate") + messageBox.exec_() + sys.exit(1) + +import textures_rc + + +class GLWidget(QtOpenGL.QGLWidget): + sharedObject = 0 + refCount = 0 + + coords = ( + ( ( +1, -1, -1 ), ( -1, -1, -1 ), ( -1, +1, -1 ), ( +1, +1, -1 ) ), + ( ( +1, +1, -1 ), ( -1, +1, -1 ), ( -1, +1, +1 ), ( +1, +1, +1 ) ), + ( ( +1, -1, +1 ), ( +1, -1, -1 ), ( +1, +1, -1 ), ( +1, +1, +1 ) ), + ( ( -1, -1, -1 ), ( -1, -1, +1 ), ( -1, +1, +1 ), ( -1, +1, -1 ) ), + ( ( +1, -1, +1 ), ( -1, -1, +1 ), ( -1, -1, -1 ), ( +1, -1, -1 ) ), + ( ( -1, -1, +1 ), ( +1, -1, +1 ), ( +1, +1, +1 ), ( -1, +1, +1 ) ) + ) + + clicked = QtCore.Signal() + + def __init__(self, parent, shareWidget): + QtOpenGL.QGLWidget.__init__(self, parent, shareWidget) + + self.clearColor = QtCore.Qt.black + self.xRot = 0 + self.yRot = 0 + self.zRot = 0 + self.clearColor = QtGui.QColor() + self.lastPos = QtCore.QPoint() + + def freeGLResources(self): + GLWidget.refCount -= 1 + if GLWidget.refCount == 0: + self.makeCurrent() + glDeleteLists(self.__class__.sharedObject, 1) + + def minimumSizeHint(self): + return QtCore.QSize(50, 50) + + def sizeHint(self): + return QtCore.QSize(200, 200) + + def rotateBy(self, xAngle, yAngle, zAngle): + self.xRot = (self.xRot + xAngle) % 5760 + self.yRot = (self.yRot + yAngle) % 5760 + self.zRot = (self.zRot + zAngle) % 5760 + self.updateGL() + + def setClearColor(self, color): + self.clearColor = color + self.updateGL() + + def initializeGL(self): + if not GLWidget.sharedObject: + self.textures = [] + for i in range(6): + self.textures.append(self.bindTexture(QtGui.QPixmap(":/images/side%d.png" % (i + 1)))) + GLWidget.sharedObject = self.makeObject() + GLWidget.refCount += 1 + + glEnable(GL_DEPTH_TEST) + glEnable(GL_CULL_FACE) + glEnable(GL_TEXTURE_2D) + + def paintGL(self): + self.qglClearColor(self.clearColor) + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) + glLoadIdentity() + glTranslated(0.0, 0.0, -10.0) + glRotated(self.xRot / 16.0, 1.0, 0.0, 0.0) + glRotated(self.yRot / 16.0, 0.0, 1.0, 0.0) + glRotated(self.zRot / 16.0, 0.0, 0.0, 1.0) + glCallList(GLWidget.sharedObject) + + def resizeGL(self, width, height): + side = min(width, height) + glViewport(int((width - side) / 2), int((height - side) / 2), side, side) + + glMatrixMode(GL_PROJECTION) + glLoadIdentity() + glOrtho(-0.5, +0.5, +0.5, -0.5, 4.0, 15.0) + glMatrixMode(GL_MODELVIEW) + + def mousePressEvent(self, event): + self.lastPos = QtCore.QPoint(event.pos()) + + def mouseMoveEvent(self, event): + dx = event.x() - self.lastPos.x() + dy = event.y() - self.lastPos.y() + + if event.buttons() & QtCore.Qt.LeftButton: + self.rotateBy(8 * dy, 8 * dx, 0) + elif event.buttons() & QtCore.Qt.RightButton: + self.rotateBy(8 * dy, 0, 8 * dx) + + self.lastPos = QtCore.QPoint(event.pos()) + + def mouseReleaseEvent(self, event): + self.clicked.emit() + + def makeObject(self): + dlist = glGenLists(1) + glNewList(dlist, GL_COMPILE) + + for i in range(6): + glBindTexture(GL_TEXTURE_2D, self.textures[i]) + + glBegin(GL_QUADS) + for j in range(4): + tx = {False: 0, True: 1}[j == 0 or j == 3] + ty = {False: 0, True: 1}[j == 0 or j == 1] + glTexCoord2d(tx, ty) + glVertex3d(0.2 * GLWidget.coords[i][j][0], + 0.2 * GLWidget.coords[i][j][1], + 0.2 * GLWidget.coords[i][j][2]) + + glEnd() + + glEndList() + return dlist + + +class Window(QtWidgets.QWidget): + NumRows = 2 + NumColumns = 3 + + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) + + mainLayout = QtWidgets.QGridLayout() + self.glWidgets = [] + + for i in range(Window.NumRows): + self.glWidgets.append([]) + for j in range(Window.NumColumns): + self.glWidgets[i].append(None) + + for i in range(Window.NumRows): + for j in range(Window.NumColumns): + clearColor = QtGui.QColor() + clearColor.setHsv(((i * Window.NumColumns) + j) * 255 + / (Window.NumRows * Window.NumColumns - 1), + 255, 63) + + self.glWidgets[i][j] = GLWidget(self, self.glWidgets[0][0]) + self.glWidgets[i][j].setClearColor(clearColor) + self.glWidgets[i][j].rotateBy(+42 * 16, +42 * 16, -21 * 16) + mainLayout.addWidget(self.glWidgets[i][j], i, j) + + self.glWidgets[i][j].clicked.connect(self.setCurrentGlWidget) + qApp.lastWindowClosed.connect(self.glWidgets[i][j].freeGLResources) + + self.setLayout(mainLayout) + + self.currentGlWidget = self.glWidgets[0][0] + + timer = QtCore.QTimer(self) + timer.timeout.connect(self.rotateOneStep) + timer.start(20) + + self.setWindowTitle(self.tr("Textures")) + + def setCurrentGlWidget(self): + self.currentGlWidget = self.sender() + + def rotateOneStep(self): + if self.currentGlWidget: + self.currentGlWidget.rotateBy(+2 * 16, +2 * 16, -1 * 16) + + +if __name__ == "__main__": + app = QtWidgets.QApplication(sys.argv) + window = Window() + window.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/opengl/textures/textures.pyproject b/venv/Lib/site-packages/PySide2/examples/opengl/textures/textures.pyproject new file mode 100644 index 0000000..0541619 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/opengl/textures/textures.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["textures.qrc", "textures_rc.py", "textures.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/opengl/textures/textures.qrc b/venv/Lib/site-packages/PySide2/examples/opengl/textures/textures.qrc new file mode 100644 index 0000000..efa9e9c --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/opengl/textures/textures.qrc @@ -0,0 +1,10 @@ + + + images/side1.png + images/side2.png + images/side3.png + images/side4.png + images/side5.png + images/side6.png + + diff --git a/venv/Lib/site-packages/PySide2/examples/opengl/textures/textures_rc.py b/venv/Lib/site-packages/PySide2/examples/opengl/textures/textures_rc.py new file mode 100644 index 0000000..792f1cd --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/opengl/textures/textures_rc.py @@ -0,0 +1,762 @@ +# Resource object code (Python 3) +# Created by: object code +# Created by: The Resource Compiler for Qt version 5.15.2 +# WARNING! All changes made in this file will be lost! + +from PySide2 import QtCore + +qt_resource_data = b"\ +\x00\x00\x04\x14\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x01\x00\x00\x00\x01\x00\x08\x03\x00\x00\x00k\xacXT\ +\x00\x00\x00\x9fPLTE\xf8|\x00\xf8\x80\x00\xf8\x80\ +\x08\xf8\x84\x08\xf8\x84\x10\xf8\x88\x10\xf8\x88\x18\xf8\x8c\x18\ +\xf8\x8c \xf8\x90 \xf8\x94(\xf8\x940\xf8\x980\xf8\ +\x988\xf8\x9c8\xf8\xa0@\xf8\xa4H\xf8\xa4P\xf8\xa8\ +P\xf8\xa8X\xf8\xacX\xf8\xb0`\xf8\xb0h\xf8\xb4h\ +\xf8\xb4p\xf8\xb8p\xf8\xb8x\xf8\xbcx\xf8\xc0\x80\xf8\ +\xc4\x88\xf8\xc8\x90\xf8\xc8\x98\xf8\xcc\x98\xf8\xd0\xa0\xf8\xd4\ +\xa8\xf8\xd4\xb0\xf8\xd8\xb0\xf8\xd8\xb8\xf8\xdc\xb8\xf8\xe0\xc0\ +\xf8\xe0\xc8\xf8\xe4\xc8\xf8\xe4\xd0\xf8\xe8\xd0\xf8\xec\xd8\xf8\ +\xec\xe0\xf8\xf0\xe0\xf8\xf0\xe8\xf8\xf4\xe8\xf8\xf4\xf0\xf8\xf8\ +\xf0\xf8\xf8\xf8\xf8\xfc\xf85u\xa4p\x00\x00\x00\x09p\ +HYs\x00\x00\x00H\x00\x00\x00H\x00F\xc9k>\ +\x00\x00\x03\x1bIDATx\xda\xed\xddas\xd2@\ +\x10\x80\xe1\x8b\x10#\x1a\x01#il\x0b\xb1\x80\x0db\ +\x10b\xe8\xff\xffm\xb6\xd5\xd1\x92\x12r)8r\xbb\ +\xef~\xce\xb0\xec3\xc9]\xb8\xd9\x1d\xcc\x9d\xf20\x00\ +\x00\x00\x00\x00\x00\xdc\x19\x85\x01\x00\x00\x00\xec\x02\xa8Z\ +\xfa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x80\xff\x18E\xae\x1a \x1by\ +\x91^\x80\xf5\xb8w\xff5\xdeh\x05\x98\x0d\xbd\xa7\xbd\ +;\xca\x00\xf2K\xbf\xd2\xbc\xa4\x09\xa0H\xc3\xe7\xdd[\ +z\x00n#o_\xfb\x9a\x12\x80\xfc*\xa8\xe9\xdf\xd3\ +\x00P\xb9\xf5\xb5\x01\xcc\xab\xb7\xbe*\x80\xaf\x89\xdf\xd0\ +\xc2*\x19`\xf5\xf8\xc2\xa3\x15\xa0H\xdf[51\xcb\ +\x04(\xa7C\xcf\xb2\x8b[ \xc0v\x1eu\xec\xdb\xd8\ +\xc5\x01dq\xb7U\x1f\xbf,\x80\xec\xc2o;\xc8 \ +\x08`\x91\xbc~\xc1$\x87\x14\x80\xace\xf5\xb2\x00\xb2\ +\xd8\x7f\xf1,\x8f\xf3\x00\xe5l\xd4=f\x98\xc9m\x80\ +\xcd\xcd\xf0\xd5\x91\xd3\x5c\x0e\x03\xe4\xe3\xbew\xfc8\x9b\ +\xa3\x00\xe5\x97\x8b\xe04\xf3|.\x02,'\x03\xefd\ +\x03\x8d\xae\x01\xe4i\xe4\x9b\xd3\x84\x83\x00\xab\x0f\xa7*\ +\xdeQ\x80\xcc\xae2/J\x02\x99\x00\x0b\x9b\xf2;\x97\ +\xeb\xfb\xd3\x00_$\xc0\xb2\xb9*\x7f\x5c<^\x9a\x88\ +\x04\xf8\xdeTS/-\x7f_:\x15\x09P\x1e\xae\xe8\ +\xdd\xb4\xd5\xcd\xe2\xe26x\xe8\xc9\x1e\xdc\xeel\x182\ +\x01\xfa\xf5\x0b\xff\xb2r&*\x13 \xae)?^\xb5\ +|Z\x5c\x05Hk\xf7\xbd\xbd\xa9\xe5\x01\xecY\xda\x82\ +\xc9\x8f\xda\xd4\x02\x7f\x0bT\xcf\xbb{7\xdb\x03\xa9\x05\ +\x02\x0cwJ\x08g\x87S\x0b\x04\xf8\xfct\xdf\xcb\x9a\ +R\x0b\x04X\xffY\xf8G\xdf\x9aSK<\x0f\xf8\xf5\ +&\xd0IV6\xa9%\x02\x00\x00\ +\x06\xc0IDATx\xda\xed\xdd\xdbb\x9b8\x10\x06\ +`K\x85B!f\xa1&\x1c\x8a\x03\x81\x9a@!\xf0\ +\xfe\x8f\xb7\x17\xbbm\xe2\xc6\x18\x8c\xf5\x13\x81\x86\xcb6\ +\x17\xf83\x16\xd2hf\xb4\xeb\x15\xbfv\x04@\x00\x04\ +@\x00\x04\xd0\xef\x14\xbc\x08\x80\x00\x08\xe0\x1c@\xa9\xa1\ +\x8f\x00\x08\x80\x00\x08\x80\x00\x08\x80\x00\x08\x80\x00\x08\x80\ +\x00\x08\x80\x00\x08\x80\x00\x08\x80\x00\x08\x80\x00\x08\x80\x00\ +\x08\x80\x00\x08\x80\x00\x08\x80\x00\x08\x80\x00\x08\x80\x00\x08\ +\x80\x00\x08\xe0\xae\xabC\xde|\xd7I\x0f\xf0\xccv\x5c\ +7\xac\x07\xc7;\x04a\x9c\x1d\x7f\xc4Q\x18\ +\xf8\x07\xcfu\xf6\xb6e\x1a\xba\xc6\xd9n\xc7\x7fI\x0e\ +P\xf2\xc1\xcc,\xc65\xdd0M\xcb\xde;\x8e\xeby\ +\x07\xff1\xf8\xf0\xf9\xc6/Gr\x80\x00\x9d\xe0fH\ +\x0e\x10\xa1\x01|\xc9\x01\x124@&9@\x8a\x06h\ +%\x07(\xc0\x9f\xdf\x94\xfd5X\x82\x01<\xd9\x01j\ +0\xc0\x0f\xd9\x01Z0@!\xfdL\x10\x0c\xf0Kz\ +\x00\x0e\xfd\xfcL\xfe\xc5\x90\x0e\x05\xd0\xe4\x070e\x7f\ +\x0b\xa2\x01l(\x80%?\xc0\x1e\x0a`\xcb\x0f\xe0\xaa\ +\x0epP\x1d\xe0Qu\x80Pu\x80X\xf5\xb7\x006\ +\x22\xf2M~\x80T\xf5\x89P&yH\x14\x0e\x90\xab\ +\xbe\x16\xc0\xc6\xc4V\xb0\x1a\x04\xc7\xc4\xe4\xdf\x1a{Q\ +\xfd-PA\x7f\x01\x95\xfc\x00\xf5\x87\xfd\xc0\xff6\x04\ +\xff\xec\x08\xfaA\x18Fq\x9c\x1c\x8fi\x96\xe5Eq\ +*\xcb\xb2<\xfd,\xf2<\xcb\xd2\xa7c\x92\xc4Q\x14\ +\x86\x81\xef\x1f\xbe{\xae\xeb\xec\xf7\xb6m\x99\xa6\xf1U\ +\xd74\x1e\xf5\xf2\x034g\x00a/\xdf\xb5(@\xa4\ +\x1e\xc0y\x5c\xadl\ +\xb2\x8b\xa7?\x05\xac\x95\x1d\xe0\xad\xb12\x9f\xbe~k\ +\xa7\xaf\xa0r\xd9\x01\x82y\x11\xfd'\xbe\xdc\x82\x00<\ +\x0f\xf0\xd9\xacp~5q$\xb0d\x07\xe8\xfb\xca\x99\ +\x15\xc9n\xa6-#Y'=@\xdf\x9ffEo:\ +k\xa1\xc9 \x1e`\xe6\xd5\x1a\xcb\xcc\x04\xa4\x05\xe8\xeb\ +)K\xe9h\xc3\x00\x93\xfa\x90y[\x06\x98\x12S\xb7\ +7\x0d\xd0\x8d\xbf\x0c\xcdM\x03L\xd8Z5\xb6\x0d0\ +\x1eT\xd66\x0e0:\x0e\xf2\x8d\x03\x8c\x86\xd5\xd9\xd6\ +\x01b\xd5\x9f\x80\xb1\xa8\xaa\xbeu\x80\xb1\xf6\xf4\xe6\xe6\ +\x01b\x95'B}?\xda\x94\xd4\xd9<\xc0\xc8)%\ +\xde\xf6\x01\xf6\xe0\xbcI\xe9\x01|e\xe3\x01\xff_\xd7\ +3\x0d\xab\xed\x03\xe4\xe0\xd6\xd2\xd2\x03T\xd8i\x80\xfc\ +\x00\xbf\xc0\xfb\xc3\xd2\x03\x5c=\xaf-Q\x00\xe0j\x92\ +I\xad\x00@\x8f\x1d\x02\xd6\xfd\x04\x84*\x004\xe0<\ +1\xe9\x01jd@p\x0d\x00W\xea\xce|\x99\x01*\ +WPaK\x8a\x9c\x07\xc3\x00Z\x9f\x89*p\x8b\xd6\ +\x98(\x19\x7f\xd9\xedv\x5c\xcc#0|^]&+\ +\xc0\xb3!2\xa1\xdd\xc4\xc5CA\x00\x7f\xaad\x98\x88\ +\xc6\x07\x1d\x03W\xcd\x88\x07x{f\xff\x11p\x7f\x83\ +\xb5\xb7Z'+@*\xb4\x97x0\x04 \xea\xb0\x06\ +\xf1\x00\x8d\xd0\xc2\x9e\xaf\xc0e\x00j\x104\x04\xe6\xf1\ +\x95\xc0\x14I\x18\xc0\xbb0&\xbbw\xb6\xeeC\xe7\x00\ + \x80\xf7{\xda\xfa}\x93\x81v`W\x80U2\x03\ +\xb4\xe2\x8a\x5ccx\xe1(d&h\x8a\xba\xd7VC\ +\xff\x000\x00g?\x5cv\xc7p5\xf0\x0e\xd4d/\ +\x9f?\xef\x9b\xc1g\xff^k\x86\x5c\x04\x00\x01\xda\xf3\ +\x1b\xd7\xe7N\x89-`\x18\x00\xbb\x1a\xfc\xeb\xceg\x0a\ +\x04\xf8\x01\x00\x05\xf0\xf7\xad\xebs~\x05)\xbe{\x04\ +\x0c\xe0\xc3~\x9ev\xfb\x84\xa8\xb8<\x00\xe8\xa2O\xa9\ +\x80\x00\xbc~\xb8y~\xeb>\xf6\xcf\xcbS .\xbc\ +\xbf\x22&$va\xf8\xf2ozt\xb3\xcb\xdf?\x17\ +\x7fV\x15\x06\xe0\xd2\xf8e\xdeP\xdd\x11\x0d|~\xc0\ +IM\x18\x80\x8b\x9b\xfa,\x98\xf8\x104\x03\xb9q\x1a\ +\xe2\xa0&PTx`\x04\x9b\x14\xc5\x18\xaa\x9c\xd4!\ +\xbdEA\xfb\x02Ci\xdeF2\xf6\x14\xa4C\xe9\xc1\ +\x06\xa6\xb7*\x08\xe0qx?+\xb8\xf2 \xb7\x91\xbe\ +T\x1790\xc0\xd5\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x01\x00\x00\x00\x01\x00\x08\x03\x00\x00\x00k\xacXT\ +\x00\x00\x00\xa5PLTE\x00|\xf8\x00\x80\xf8\x08\x80\ +\xf8\x08\x84\xf8\x10\x84\xf8\x10\x88\xf8\x18\x88\xf8\x18\x8c\xf8\ + \x90\xf8(\x90\xf8(\x94\xf80\x94\xf80\x98\xf88\ +\x98\xf88\x9c\xf8@\x9c\xf8@\xa0\xf8H\xa4\xf8P\xa4\ +\xf8P\xa8\xf8X\xa8\xf8X\xac\xf8`\xb0\xf8h\xb0\xf8\ +h\xb4\xf8p\xb4\xf8p\xb8\xf8x\xbc\xf8\x80\xbc\xf8\x80\ +\xc0\xf8\x88\xc4\xf8\x90\xc4\xf8\x90\xc8\xf8\x98\xcc\xf8\xa0\xcc\ +\xf8\xa0\xd0\xf8\xa8\xd4\xf8\xb0\xd8\xf8\xb8\xd8\xf8\xb8\xdc\xf8\ +\xc0\xdc\xf8\xc0\xe0\xf8\xc8\xe0\xf8\xc8\xe4\xf8\xd0\xe4\xf8\xd0\ +\xe8\xf8\xd8\xe8\xf8\xd8\xec\xf8\xe0\xec\xf8\xe0\xf0\xf8\xe8\xf4\ +\xf8\xf0\xf4\xf8\xf0\xf8\xf8\xf8\xf8\xf8\xf8\xfc\xf8\xce\x99\xaa\ +w\x00\x00\x00\x09pHYs\x00\x00\x00H\x00\x00\x00\ +H\x00F\xc9k>\x00\x00\x04?IDATx\xda\ +\xed\xdd\xe1v\xd2@\x10\x05\xe0\x0d4\x05\x91b(\x82\ +\x14$\x16S\xc4\x88\x18\x13\xd3y\xffG\xf3\x8f\x9e\xee\ + %\x9b\x9e\xb6\xb6s\xef>@\x0f\xfbA\x93\xbd3\ +\x13p\x02\xbe\x1c\x01\x08@\x00\x02\x10@\x1c\xe0\x22\x00\ +\x01\x08\xa0\x01\xa0.}\x04 \x00\x01\x08@\x00\x02\x10\ +\x80\x00\x04 \x00\x01\x08@\x00\x02\x10\x80\x00\x04 \x00\ +\x01\x08@\x00\x02\x10\x80\x00\x04 \x00\x01\x08@\x00\x02\ +\x10\xe0\x05\xac\x9f\xd9|8\x02\x05\xa8\xf3t\xd2s\xce\ +\xb9\x1e @\x91\xcd\x87\xd1\xdf!\x96.\x16@\x9d\xa7\ +\x93\xf3cc<\x08\x00\xea\x8d\x07\x03\xa8\xf3\xf42>\ +9\xc8e\x18\xa0<\xfe\xc6\xc3\x00T\xbd\xa0Q>\xbb\ +\x00S\x87\x0dp\xe3\xb0\x01\xaa\x18\x1c`\xe2\xb0\x012\ +\x87\x0dP\xc6\xe0\x00c\x87\x0d\x909l\x80\xf2\x0c\x1c\ +`\xec\xb0\x012\x87\x0d\x10t\x07\xb0\x0cp\xe9\xb0\x01\ +2\x87\x0dP\xc5\xe0\x00~\x06\x88\x00\x01T\x08^\xe0\ +\x01\xa8*P\xbf\xc6\x03\x98\xf9\x1b\xdc\x0a\x1c\xc0\xd6\xdf\ +\xdfL\xe0\x00\xea\xbe\xb7\xbd\xb8\xc2\x03\xb8\xf2\xb7\x97\x09\ +\x1c\xc07\xff\xb6\x97\x08\x1e\xc0\xc0?\x02\x14x\x00+\ +\x7fsK\x81\x03(:\xea\x08\x80\x07\x90\xf8{\xdb\x08\ +\x1c\xc0\xda\xdf\xdaX\xe0\x00T\x08\xec\x14x\x00\xaa\x13\ +\xba\x128\x00u\x06\xfes\x05D\x02Pg`\xf7E\ +\xe0\x00\x96\xfe\xbe&\x02\x07\xf0\xc3?\x03wK<\x00\ +u\x04H\x05\x0e@\xd5\x81\x07\x02\x07\xa0\xeb\xc09\x1e\ +\xc0\xfc\xa0\x0c\x84\x06\xb0\x8b\x0e\xca@h\x00C\x7fO\ +k\x81\x03P!h(p\x00\xea\x0a\x18\xed\xf0\x00>\ +\xf8;\x9a\x0b\x1c\xc0\xa9+ \x04\xc0\xf0\xb0\x10\x0e\x06\ +\xf0\xd9\xdf\xcf\x85\xc0\x01\xd4\xe7\xf7\x9e\x011\x00T\xfb\ +;\x118\x80B\x0d@\xec\xf0\x00\xc6\xf7\x94AP\x00\ +6\xee\x9fV\x18\x16\xc0\x9b\xfbS \x04\xc0\xb5\xbf\x97\ +N\x09\x07\xa0\xcb \x0b\x81\x03P\xb7\xc0\xb3\x0a\x0e@\ +\xdf\x02S\x81\x03P\xcfD\xf5j8\x80\xdc\x9d\xa8\x03\ +!\x00\xa8\x14\xd8\x178\x00=\x11~\x03\x07p\xdb?\ +U\x08\x04\x00\xf8\xe4\xf4D,\x1a\xc0\xaf\xb8)\x06\x1b\ +\x07P\xcd\xf0\xa31\xd86@\xd9i\x8c\xc1\xb6\x01f\ +\xcd1\xd84\x80>\x04\xcf\x04\x0e\xe0}@\x0c\xb6\x0c\ +\xf0\xdd\x05\xc4`\xcb\x00\xe3\x90\x18l\x18@\xa7\xa0T\ +\xe0\x00FA1\xd8.\xc06,\x06\xdb\x05\x18\x85\xc5\ +`\xb3\x00\xdb\xc0\x18l\x16`\x18\x18\x83\xad\x02lB\ +c\xb0U\x80ah\x0c6\x0a\xb0\x09\x8e\xc1F\x01.\ +\x82c\xb0M\x00}\x0b\xd8\xe3\x01\xbc\xf3_\xfc\xa5\xc0\ +\x01\xe4\xad\xaf\x00\xc6\x00\x92\xb6\xb7\x00c\x00;\xf5\xda\ +\xbf\xe2\x01LZ\x1e\x02\xad\x01\xec\xa3v)\xc0\x1c\xc0\ +\xac]\x0c4\x07P\xaa\x0f\xc05\x1e\x80\x1a\x88\xe9\xd6\ +p\x00U\xb7E)\xd8\x22\xc0*\xbc\x19d\x12\xe0\xf6\ +\xbcu\x0c\xb2\x05\xa0\x1e\x0b86\x16o\x1d\xc0\xff~\ +\x1c7\x128\x80\xb6\xa5Ps\x00\xe3\x07\x1d\x82\xec\x00\ +\xec\xdb5C\xec\x01\xa8SpO\xe0\x00\xf4!h\x8d\ +\x07\x90>\xfc\x03`\x03\xa0\xe9\xb7b\x1ey\x15/\x0d\ +\xe0\xe6y\xf7\x1f\xd2oz^\x80\x04\x1c`\xef\xc0\x01\ +\xe6\xe0\x00u\x17\x1c\xe0\xda\x81\x03\x0c\xc0\x01r\x07\x0e\ +0\x05\x07\xa8\x22p\x80\xbdC\xff\x17@\xff\x04\xc8[\ +^\x04\xc1\x01Rt\x80-:@\x89\x0e 1:@\ +\x82\x0ep\x85\x0e\xf0\x08\xaf\xc4\xe0\xb3\xc3\x04 \x00\x01\ +\x08@\x00\x02\x10\x80\x00\x04 \x00\x01\x08@\x00\x02\x9c\ +X\x0d\xbf;\x5c\x9b\x07h()V\xe6\x01vO?\ +\x10\xf6\xb2\x016\xa7\x01r\xf3\x00\x0d}\x95\xcc<@\ +Cgmi\x1e\xa0a\xc84\xb1\x0e\xd04^\xd0\xb5\ +\x0e\xf0\xb1\xa9\x07\x90\x1b\x07h\x1c\xb3\x9e\xd9\x06X7\ +v\x81\xba\x95e\x80*`\xce~i\x19 d\xba$\ +*\xec\x02\xac\x82Z\xa1\x83\xda*\xc0\x22\xb0\x19\x9c\xd4\ +&\x01\xf6\xa3\xe0v\xf8`g\x0e\xa0\xdeL\xda\xcc\x17\ +F\xd3\xfc\x15\x03\xac\x96\x07k1\xbdh?]\x19'\ +\xf3\xbb\xbfP\xbc*\x80'\x18%\xdd\x12\x80\x00\x04 \ +\x00\x01\x08@\x00\x02\x18(\x8a\xfe\xafE\x00\x02\x10\x80\ +\x00\x04 \x00\x01\x08@\x00\x02\x10\x80\x00\x04 \x00\x01\ +\x08@\x00\x02\x10\x80\x00\x04 \x00\x01\x08@\x00\x02\x10\ +\x80\x00\x04 \x00*\x00\xda\x22\x00\x01\x08p\x07\x80\xbb\ +\x08@\x00\x02\x10\x00z\xfd\x06\x0eL\xb1gp\xf4v\ +\x0b\x00\x00\x00\x00IEND\xaeB`\x82\ +\x00\x00\x09\x13\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x01\x00\x00\x00\x01\x00\x08\x03\x00\x00\x00k\xacXT\ +\x00\x00\x00\xedPLTEx\x00\xf8\x80\x00\xf8\x80\x04\ +\xf8\x80\x08\xf8\x80\x0c\xf8\x88\x10\xf8\x88\x14\xf8\x88\x18\xf8\ +\x88\x1c\xf8\x88 \xf8\x90 \xf8\x90$\xf8\x90(\xf8\x90\ +,\xf8\x900\xf8\x980\xf8\x984\xf8\x988\xf8\x98<\ +\xf8\x98@\xf8\xa0@\xf8\xa0D\xf8\xa0H\xf8\xa0L\xf8\ +\xa0P\xf8\xa8P\xf8\xa8T\xf8\xa8X\xf8\xa8\x5c\xf8\xa8\ +`\xf8\xb0`\xf8\xb0d\xf8\xb0h\xf8\xb0l\xf8\xb0p\ +\xf8\xb8p\xf8\xb8t\xf8\xb8x\xf8\xb8|\xf8\xb8\x80\xf8\ +\xc0\x80\xf8\xc0\x84\xf8\xc0\x88\xf8\xc0\x8c\xf8\xc0\x90\xf8\xc8\ +\x90\xf8\xc8\x94\xf8\xc8\x98\xf8\xc8\x9c\xf8\xc8\xa0\xf8\xd0\xa0\ +\xf8\xd0\xa4\xf8\xd0\xa8\xf8\xd0\xac\xf8\xd0\xb0\xf8\xd8\xb0\xf8\ +\xd8\xb4\xf8\xd8\xb8\xf8\xd8\xbc\xf8\xd8\xc0\xf8\xe0\xc0\xf8\xe0\ +\xc4\xf8\xe0\xc8\xf8\xe0\xcc\xf8\xe0\xd0\xf8\xe8\xd0\xf8\xe8\xd4\ +\xf8\xe8\xd8\xf8\xe8\xdc\xf8\xe8\xe0\xf8\xf0\xe0\xf8\xf0\xe4\xf8\ +\xf0\xe8\xf8\xf0\xec\xf8\xf0\xf0\xf8\xf8\xf0\xf8\xf8\xf4\xf8\xf8\ +\xf8\xf8\xf8\xfc\xf8\x09\xd19\xc7\x00\x00\x00\x09pHY\ +s\x00\x00\x00H\x00\x00\x00H\x00F\xc9k>\x00\x00\ +\x07\xccIDATx\xda\xed\xddiC\xdaL\x10\x00\ +\xe0\x1cP\x90\xa3(-R\x81\xaax\x03\xe5\xa8\x82\x22\ +E\xa8\x81\x0a\x91d\xfe\xff\xcf\xe9\x87\xbe\xafr\xe4\xce\ +&f6\xb3\xdf#\xd9G\xc81;3+@\xcc\x87\ +@\x00\x04@\x00\x04@\x00 \xc4p\x10\x00\x01\x10\xc0\ +&@\xac.}\x04@\x00\x04@\x00\x04@\x00\x04@\ +\x00\x04@\x00\x04@\x00\x04@\x00\x04@\x00\x04@\x00\ +\x04@\x00\x04@\x00\x04@\x00\x04@\x00\x04@\x00\x04\ +@\x00\x04@\x00\x04@\x00\x04@\x00\x04@\x00\xac\x87\ +\xae\x0cZg\x95/\xf9tR\x96\x04)\xf1)\x9d-\ +V\xce[}E\x8f\x03\x80\xd2=\xfe,\x99\xa4,J\ +\x85Zg\xc63\xc0\xea\xae\x96\xb2M\xdcLUo_\ +\xb9\x04\xd0\xee\x0e%\x87\xc9\xab\xd2\xb7\xbe\xc6\x1b\xc0\xe4\ +Xv\x95\xc0\x9b8\x9fs\x04\xa0\xff,\xb8\xcfa\x16\ ++\x13N\x00^\x1b\x9f<\xe6qW\xe7\x1c\x00\xa8W\ +\x09\xef\x99\xec\xd2\xf9\x0a9\xc0\xab\x9f\xe9\x0b\x82 d\ +\xc6\x98\x01\xb4V\xd2w9\x83x\xa6\xa1\x05\xb8K3\ +\xa9\xe88X\xe2\x04P\xf7Y\xd5\xb4\xa4\x9fQ\x02<\ +\xb0\xab\xea\x91\xc7\x18\x01\xae\x18\xd65%\x9e\x10\x02\x1c\ +\xb2\xac\xecJL\xf1\x01$Y\x02\x08\xa9%6\x809\ +\xe3\xea\xbe\xa2\x8e\x0c\xe0\x8eu}\xe3\x052\x80s\xd6\ +\x00\xe2\x04\x17\xc0\x01\xf3\x12\xd7}T\x00\xba\xcc\x1c@\ +\xe8`\x02\xf8\x1d@\x95sJG\x04\xd0\x0d\xa2\xce\xfb\ +\x16\x11\xc0I\x10\x00yD\x00\xf9@J\xfd'h\x00\ +4\xd1\xf4n\x96\xab\x5cw\x87OSE\x99\x8e\x07\x9d\ +\xcb\xf2\x9e\x1b\x80K4\x00c\x93\x17\xdb\xb3\xe1N\x8c\ +k\xd9?q\x1c3\xcc\xa1\x01h\x19\x86yGf\xf7\ +\xcca\xd9\xa1\xc0\x1c\x0b@\xd5 \xc4k\xb9\xe8\xa5T\ +\x1c\x01\x0c\xb0\x00dv\xbe\xbc\xb61\x8dQ\xd6\x01\xc0\ +\x15\x12\x80\xe5\xf6\x89\x9f8\x88l\xaej\xf6\x00e$\ +\x00\xc3\xad_\x7f\xcf\xd9a\x0d[\x80\xcfH\x00n6\ +\x977\x86N\x8fk\xdb.\x13 \x01\xd8\x08\x87\x89\xf7\ +\xce\x0f\xbc\xb0\x01H\x22\x01\xd8\xb8\xb1\xf7\xdc\x1c\xf9\xc5\ +&(\x80\x03\xe0\xcf\xc6\xf5\xcf]$\xcdz)M\xc6\ +\x01\xd0_\x7f\x81\xd1\xfc\x5c>\x90\xfe\x04\xd6~\xc9\xa2\ +\xdbx\xf6\xca2\x9a\x9c\xc6\x01P\xf4\x13\xca\xb4\x0c&\ +\x16q\x00\xbc\x87\xc3\x92\xee\xf3\x9d\x9e-S&P\x00\ +\xacM\xe1\x07\x8b\xc7\xe8\xb5q\x83\x02\xa0\xe7/\x8ag\ +\x15L\x1a\xa2\x008};\xdf\x06\xebp\xe2\x12\x05\xc0\ +[J\x98\xacz9\xfc\x97\xf9\xfc\x0b(\x02\x22\xda[\ +>\xe4wO\xc7\xbf\x84\xf76\x1c\x0c\xc0\xd3\xdb\xf9z\ +\xcbkP\xcd\x01~\xa3\x00h\xfb|u\xd3C\x5c\x1c\ +\x0b\x04\xa0\xeas=W3\x05\xe8\xe1\x00\xc8\xfa\x8c\xe2\ +/M\x9f\x83\x91,\x8d\xfd\xec\xfd\x1b?=\x1e?\xe3\ +bq\x94]<\xed=\xae\xaa\xc7\x04\xc0,.\xf6\x0b\ +b\x02pl<\xff\x13\x88\x0b\x80\xf1\xcbPN\x8b\x0b\ +\x80qz\x99\x1cL\xbal\x14\x01\x9a\x86\xc1\xd0\x07\x88\ +\x0d@\xce\x08\xe0\x07\xc4\x06`d4\xff\x06\xc4\x07\xa0\ +\x18B\x1c(\xca\x00\x06I\xf6b\x07\xe2\x03\xf0\xba[\ +d\x22\x0f F\x00\xbb+\xe4{S\x88\x11\xc0nf\ +MI\x85\x18\x01\x0c\xb6s\xcb\xa4V\xc0\x9f\x18-\x80\ +\xbb\xed\xf9\xe7~C\x9c\x00\x1a[\xf3\x97\xae\x83o\xa8\ +\x10!\x80\xe5v\xa6\x5cQ\x09\xe1S\xa3\x03\xd0\xdbZ\ +\x14N\xdf\x85\xf2\xb1Q\x01\x18l\xa5\x16\xcbW\xdc5\ +P\xb0\xfa\xf2\xb7\xb6\xde\x7f\xa4\xfa2\xac\xcf\xfex\x00\ +\xa5U\x92vj\xe6\x07S\x95S\x00u\xf9\xdfX\xcc\ +\x95\xa7A\xab^4\xcd\x08J\xee\xd7\x1a\xc3\x05o\x00\ +\xaa\xe8\xb6l\xba\xda}\xe1\x09`\xe0\xa5H\xa2\xd0\x5c\ +p\x03\xe0\xb1\x8eF\xac\ +\x89\x92w\x81\x1aF\x80\x7f\xa9O\x99\xf2E\xe7a2\ +W5\x00\x00m9\x1b\xf5\xae\xca)\xf7\x02S\x84\x00\ +\xfae\xf1\xfa\xd1\xb8\x80fq[q\xf9\x94\x5c\xe1*\ +*\x0c\x00\xa0\xdf\x1f\xbayL\x10\xe7\xbc\x01\x00\xc0\xfc\ +\xd8\x05\xc1%\x87\x00\x00\xb3#\xe7-\x85\xb8\x04\x00\x18\ +8\xee&2\xe6\x13\x00\x96\xa5p{\xcbE/IJ\ +\xaf;\x03\xf8\xcc+\x80I\xa6\xe8\xeeP\xb9\x05\xb0\xa9\ +\x1f\xff\x7f\x8c\xf8\x05X+\xbc\xb4\x18-\x8e\x01t'\ +\xcd\x18O9\x06\x80\x85\x83'\xe3\x12\xcf\x00N\x96P\ +\xf2\x5c\x038\x08\xa0\xa6\xf8\x06\x18\xd9GE\xf8\x06\xb0\ +\xff\x0aH\x9c\x03\xd8\xe6R\x88\x9c\x03\xe8v\xad\xc9\x93\ +\x9c\x03\xd8F\xd13\xbc\x03<\xda\xa5\x0e\xf1\x0e\xb0\xb2\ +\x89\x0f}\xe5\x1d\xc0\xee>p\xc4=@=\xc6\xef\x02\ +\x00`\xdb\x5c\xb1\xc3=\xc0\xd0\x1a\xe0\x89{\x00\xc5\xfa\ +9H\xe3\x1e`\x11F\x8f\xe9(\x03\xbc\x0a!\xb4\x95\ +\x8b2\x80n\x09\xd0\xe6\x1f@\xb3\x04x\x89,\x80\xfa\ +\xc0\xa8\xd6}i5\x7fV=\xa5\x18\x03\xa8\xf7\xe7\x05\ +\x91U\xd3?\xcb\x9d\x9a\x1aQ\x04\xb8\xcc\x8b,\xff=\ +\x13+\x80Y\x14\x01\xde[\x1f0I\xe7\xec\x87\xb1\xd1\ +\x02S\x80\xb3\xb7\xf3;`qn\x8d\xe0\xef\x01\x8c\x01\ +\xd6v\x17c\xd1\xf3\xe5\xbbE4H\x8b$\x80\xc26\ +h\x9f\x0d\xa3\xb1$\xdb\xbb\xc0\xda\xeeZ\xfe\xb7D\xb2\ +\xb8\x0bJQ\xcd\x13\x5c[\xd2K\xfb\xfe\x92Z\x84\x85\ +\x19v\x15c\x0bp\xca\xf2[j\xbe\xdf\x864\x8f*\ +\xc0zC`\xf9\x8f\xcf\x07\xe1D(\xade\xd9\x02L\ +\x18\xe6t\x9b\xff\x02\xd2Zd\x016\xf7\xd7\xf2\xd7\x01\ +\xe1K8[\x0d1~\x17\xd8\xb8s%\xfd4\x01\x98\ +\x06\x9c\x17\x10\x10\xc0\xe6nQ\x87\xc0\xea/\xad/\x0a\ +\xcf\xa2\x0cp\xbdy\xb2M\xcf\x7f\xc8\xbc\xc2\xae\x0fQ\ +\x06\xd8\xbar\x89\x9e3\xb9\x0a\xc1\xae\x06\x04\x060c\ +T\xe1e\x9a*X\xd0\xa2\x0d\xa0oW\x81\xecy\x8a\ +\x5cM\xcc\x8aI\x12\xacw\xdbc\x1e\x12\xdb\xd9h3\ +\xeb\xe1\xb1]5\xdbcCb\xbd\xbf\x04{\x80\xddm\ +\x06\xb3\xae\x9f\x085\xb3,A1\x80\xdeJ\xac\x01\x0c\ +\x82\x18)\x97\xfdp\xf5r\x88\xad\xc5\x99\x03\x18=\xc0\ +&\xee\xdd\xfc\x85U)\xe88h\xa0\x00\xc6\xc5\x81u\ +\xe7\xd7\xee\xc5~\xc0\x05\x02\x01\x03\x80\xf1\xf5;\xeb\xb4\ +/\xfa\xd0\xb4b\xa4\x098\x00\xcc\xf6[\xae:\xb9\x16\ +\xae\xceLC\x00A\xf5\x96c\x0eP5\x9dB\xdd\xf6\ +\x91\xe0\xd6\xb4\x8221\x02,\x00\x16\xb1l\xa9j\x95\ +\xd3\xa0\xf7r\xe6\x11\x80g@\x03`\x9d\xe0\x99\xbd1\ +y6\x9e^X\xd4\xcf\x1e\x06\xd8\x5c\x8f9\x80m\x8d\ +x\xe6\xe4v\xeb\x85v\xd1\xaf[\xed8,\xfd\x00@\ +\x04\x00Nj\xc2\xe5B\xe5\xac\xd1\xe9v\xdb\x8d\xcb\xea\ +\x81M\xa5`6\xd0\xbe\xca\x01\x00\xe4\x05\xa6\xe3x\x05\ +\xc8\x00\xaa,\xa7\x9f\x1f\x03`\x03h\xb0\x9b~\xa2\x8d\ +\xb1\xaf\xf0\x03\xb3\xf9\xd7\xc2\xe8\xac\xca\x1e`\xceh\xfa\ +GS\x00\x94\x00\xeb+\xa4\x9e\x87X}\x06\xc0\x0a\xe0\ +\xbfa\x96X\x9b\x01\xe0\x05\xf0\xdb/)\xdb\x5c\x00`\ +\x06\x80\xc7o\xde\x9b\x86\xc9\xdf\xc7\x10\xea\x08&Qr\ +q\x93\xf34\xfbro\x05\xc0\x03\x00\x00L/2.\ +[\xa4\xd5\x1f5\x08\x7f\x04\x99*\xab\xb4J\xce\xee\x08\ +b\xae\xd6V\xe0cF\xc0\xb9\xc2\xfa\xb4]\xcd[)\ +\xc8\xd9Js\xb4\x82\x8f\x1b\xa1$K\xcf\x87\xdd\xab\xe3\ +\xc3b>\x9dL\xc8\x92 %R\x99\xfc\xfe\xd7\xf2i\ +\xb3?Y\xc0G\x8f(g\x8b\x13\x00\x01\x10\x00\x01\x10\ +\x00\x01\x10\x00\x01\x10\x00\x01\x10\x00\x01\x10\x00\x01\x10\x00\ +\x01\x10\x00\x01\x10\x00\x01\x10\x00\x01\x10\x00\x01\x10\x00\x01\ +\x10\x00\x01\x10\x00\x01\x10@\x80\x00q\x1b\x04@\x00\x04\ +\xf0\x0e\x10\xdfA\x00\x04@\x00\x04\x10\xeb\xf1\x17\xe9\x89\ +Gh\xda\x1b|\x00\x00\x00\x00\x00IEND\xaeB\ +`\x82\ +\x00\x00\x06\xe8\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x01\x00\x00\x00\x01\x00\x08\x03\x00\x00\x00k\xacXT\ +\x00\x00\x00\x8aPLTE\x00\xfcx\x00\xfc\x80\x08\xfc\ +\x80\x10\xfc\x80\x10\xfc\x88\x18\xfc\x88 \xfc\x88 \xfc\x90\ +(\xfc\x900\xfc\x900\xfc\x988\xfc\x98@\xfc\x98@\ +\xfc\xa0H\xfc\xa0P\xfc\xa0P\xfc\xa8X\xfc\xa8`\xfc\ +\xa8`\xfc\xb0h\xfc\xb0p\xfc\xb0p\xfc\xb8x\xfc\xb8\ +\x80\xfc\xb8\x80\xfc\xc0\x88\xfc\xc0\x90\xfc\xc0\x90\xfc\xc8\x98\ +\xfc\xc8\xa0\xfc\xd0\xa8\xfc\xd0\xb0\xfc\xd0\xb0\xfc\xd8\xb8\xfc\ +\xd8\xc0\xfc\xe0\xc8\xfc\xe0\xd0\xfc\xe0\xd0\xfc\xe8\xd8\xfc\xe8\ +\xe0\xfc\xe8\xe0\xfc\xf0\xe8\xfc\xf0\xf0\xfc\xf0\xf0\xfc\xf8\xf8\ +\xfc\xf8`;^\x10\x00\x00\x00\x09pHYs\x00\x00\ +\x00H\x00\x00\x00H\x00F\xc9k>\x00\x00\x06\x04I\ +DATx\xda\xed\xddaw\xa28\x14\x06`Ba\ +`\xa4\xba\xd0vtuQ*2Pb\xf8\xff\x7fo\ +;\x9d=g\xdb\x01\x14\x85$7\xe4\xcdw\xcf\xe9}\ +*\xe1\xe6\xe6&:\x8d\xe5\xc3\x01\x00\x00\x00\x00\x00\x00\ +4\x8e\x85\x03\x00\x00\x00\xc0W\x00\xab\xa6>\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00&\x1eU\x9e\xae\x93(\xf4]\x971\xd7\xf3\x830\ +J\xd6iV\x08\x1b\x00\xc4q\xf3\xe8\xf6u,\x06\xf1\ +\xf6\xc8\xe7\x0cP\xed\x1e\xd9\xd5\xbe\xcdp\x9d\x8bY\x02\ +\xf0\x7f\x16C{W\xd9\xea \xe6\x06P$\xec\xa6\xfe\ +]7\xc9\xe7\x04p\x8c\xee\xe8a\x0eR1\x13\x80\xe3\ +\xe2\xce6no\xcbg\x00PD#:\xd9\xdd\x9d\xe9\ +\x00u2\xb2\x99?8\x1a\x0d\x90\xba\xe3\xcf3,k\ +c\x01\xca\xc5$':\x1e2C\x016l\xaaC-\ +O\xc2@\x80\x89\xfe\xfd\xff\xcd\x04\x95q\x00S<\xfd\ +\x9f\xdf\x88\x85Y\x00<\x9e\xfah\x97{4\x0a\xe0\xdb\ +\xf4\x87\xdb\xd8\xc1 \x00.\xe3x\x1f\xcb\xcd\x01(\xa4\ +\x1cptO\xc6\x00\x1c\xe5\x1c\xf1\xf4*S\x00RI\ +\x87\x5c\xbf\x0bC\x006\xb2\x8e\xf9\xbe\x18\x02\x90\xc8\x02\ +p23\x00\x1e\xa5\x01x\xdc\x08\x80@\xdeY\xf7\x17\ +#\x00\x98<\x00V\x1a\x00\xc0\x1d\x89ci\x00\xc0\x80\ +<\x88\xb9w\x7fK\x0a\xfa\x00\x97\xf2 o\xb5\xcd\x8a\ +\x8f\x99L\xf0\x22\xdb\xae\xbc\x9b\x01\x12\xfa\x00\xbdy\xd0\ +b\xdb~\x82\xcbMx\xe3,\xc0\xc9\x03t\xe7A\xee\ +\xba/\x93=\xc57=\x0f\x7f\x93\x07\xe8\xca\x83\xbc\xdd\ +\xa54\xb6\x5c\xdeR\x1e\x22\x0f\xd0\xde\x09`?\xceW\ +>\x93\xdd0\x19T\xd4\x01ZyP8`\xe6\xae\x87\ +\x7f\x09v\xd4\x01\xfe|\xa2\xe3a\x8b\xb8\xe7\xa1\x00\x8f\ +\xc4\x01\xfe\xcc\x83\xd6C?\xb8\x1e\xfa\x1e \x0eP\xdc\ +\x19\xff\xf0U\xe4O\xda\x00\xaf_\xfe\xd8\xbf\xc6M\x9f\ +\x9d\xe3@\x1b\xe0K\x1e\xe4\xdf\x94\xb6\xd4\xc3v\x13\xd6\ +\xb4\x01\xbe<\xca\xfb\xdb>{\x18\x04\xb0\xa2\x0d\xf0\xf9\ +I\xf6\xc7\xe7\x10])5m\x80hL\xfd\xe24\x04\ + \xa4\x0d\xf09\x0f\xba}3cH>\xe4\xd3\x06\xf8\ +\x94\x07\xb1\xdb\xeb\xd8C\xf6\x14\x5c\xd2\x00|d\xf9\xc6\ +W\x99\x09\xc9\x00(Ff\xed/\xa6\x7f\x03^G\xa6\ +l\xf9\x80\xe28i\x80t\xec\x1f\xca\x14V\x04d\x00\ +\xac\xc7\x96\xef\xae\xa7\x02\x11i\x80dl\xce~}Q\ +\x98\x90\x06\xf8\xf4\x0f\xbc\xaf\xc3oo\xf8Z \x18\x9b\ +\xb0\xe5\x86\xaf\x06\xd9\xd8\x7fT\xa9poD\x02\x00\x1f\ +\x93\x07\xff^\x13\x9b]\x11*\xc6\xe4\xc1\x1fC\xa8{\ +\x09\xc8\x00\xc8\xc6oc^\x03\xd8\x90\x06H\xc7W\xaf\ +\xaf\x01\x1ci\x03\x04\xee\xc8\xa9\xea|m% H\x03\ +|Lc?\xf3C\xba\xbd\xfb\xd3\xca\x0abD\x8f\xce\ +VW\x00\xf6s\x078\x19\xbf=>rd\x97\x01\xe2\ +f\xee\x00;e\xef\x00\xa2\x00/\x8a\x0a\xa2d\x01.\ +\xd7\x03\xb6\xf3\x07\xb8\xd8*\xe1\xf2\xd9\x03\xd43\xe8\x14\ +\x95\xf7\x12`o\xf3\x07\xb88\x07>7\xf3\x07\xb8t\ +\xde\x90U\xf3\x07\xe0l\x06\x07&\xc6\x8c\xbd\xbaW\x00\ +M\x80XM\x7f\x1cY\x00\xe1\xaah\x0b \x0cp\xa9\ +G\xe6d\x03\xc0JQ\x9f\xe0\x00\x00\x00\x09\ +pHYs\x00\x00\x00H\x00\x00\x00H\x00F\xc9k\ +>\x00\x00\x08DIDATx\xda\xed\xddk[\xda\ +H\x14\x00\xe0@R\x01\x05T\xac\xc8J\x11a-V\ +\xa4\x5c\xaa`\x15\xb9\x88`\x00I\xce\xff\xff7\xfb\xa1\ +\xbb\xed\xb6\x0fs\x83\x990\xc9\x9c\xf9\xacy\x987\x99\ +\xfb\x99\x19\x0b\x0cO\x16\x02 \x00\x02 \x00\x02\x80e\ +`B\x00\x04@\x80\xdf\x01\x8c\xaa\xfa\x10\x00\x01\x10\x00\ +\x01\x10\x00\x01\x10\x00\x01\x10\x00\x01\x10\x00\x01\x10\x00\x01\ +\x10\x00\x01\x10\x00\x01\x10\x00\x01\x10\x00\x01\x10\x00\x01\x10\ +\x00\x01\x10\x00\x01\x10\x00\x01\x10\x00\x01\x10`\xf7i\xe5\ +N\x86O\x0f\xdd\xce\xa3a\x00\xf3\xe7\xbb\x9b\xf2\xd9Q\ +2\xfe3\x96\xa7\xb84\x04\xc0\x1f\xb7/s\x1f\xd6D\ +3%\x9f\xa2\x0f\xe0\xf5\xafO\xe2\xe4\x80\xae\xaa\x17i\ +\x80y\xbb`3B\xda2\xe3\xc8\x02\xbcw\xf21\x8e\ +\xa0\xbex=\x9a\x00\xe3\xb2\xcd\x1b\xd7\x98\x9bE\x0f\xa0\ +w,\x12\xd9\xe9\xb8\xd1\x02\xf0;i\xb1\xd0\xd6F\xb4\ +\xbe\x80{\xc1\xec[\xb5H\xd5\x01\xfd\xachhs%\ +J\x95\xe0\xec\x9c#\xc7v6_\xba\xaa7Z\xedN\ +\xbbY\xff|\x1d\xa1f\xd0\xaf3j\xfeX\xa6\xf4\xb5\ +?\x8f\xec`hD\xff\xfa\xd3\x95\xdeR\xfd\x8f\xd8\x1d\ +\x80_\xa3u{\xb27\xaf\x11\x1f\x0e\x8f)\xaf\xdf\xa9\ +\xbcD~>\xa0A\x1e\xf0\xa4\xdb\x1e@\xc4\x01\x16g\ +\xc4\xec\x1f\xf5\x0c\x98\x11\x1a$I\xd9?\xe8\x9a0%\ +\xd6\x22}\xfeN\xc37`N\xd0\xbb \xbd\xfes\x17\ + \xfa\x00\xee\x11!\xfb{]\x00\x03\x00^H\xc5\xff\ +t\x0e&\x00\xf4\x1dB\xfe\xaf\x01L\x00\xb8'T\x7f\ +N\x0f\x8c\x00h\x10^\x7fr\x02F\x00\xd4I]\xbf\ +\x19\x18\x01pK\xc8\xff\xe1\x02\x8c\x00 \xe5?\xb3\xd3\ +\xfc\x07\x07@*\xff\xe99\x18\x01\xf0\x8d\x90\xff\xc4\x0c\ +\x8c\x00x\x22\xb4\x7f\xf6\x08\x8c\x00x!\xf5\x7f\xba`\ +\x04\x80K\xea\xffV\xc1\x08\x00\xef\x90\x90\xffc\xdf\x0c\ +\x802i\xf8?\x03#\x00\xda\xa4\xf1\x7f\x1b\x8c\x00\x18\ +\x93\xe6\x7f\xf2`\x04\xc02EZ\xf0\x9a\x99\x01P\x22\ +\x15\x80:\x18\x01\xf0\x9d\x94\xff}\xdf\x08\x80e\x82\x04\ +p\x0fF\x00\x14\x89\xeb\x1f`\x04\x00\xb1\x00X\x0fF\ +\x00x\x07\xc4\xc5_0\x02\xe0\x86\xf8\x01t\x8c\x00p\ +\x89\xf1\x1f\x09\xcf\x08\x80b0q^\xda\x02\x8c\xc8\x11\ +\x10S#\x00\xc81\x0090\x01`H\xfe\x00\x9aF\ +\x00\xe4\xc9\x00\xae\x09\x00\x94\x0f\xe0\x18L\x00(\x90\x01\ +\xaeM\x00\x98R\x82\x00\x07&\x00T)Q\x80\xbe\x01\ +\x00+\x87\x0c\x90\x07\x03\x00\x9aVH\xaa\x00U\x00\x19\ +\x0a\xc0\xa3\x01\x00cZ\x14\xf8\xc2\x00\x80+J\xfe\x93\ +\x10}\x00?i\x85\xa5\x0eT\x03\xf0D+\x01W\x06\ +\x00\x94h\x00-\x03\x00\xf6h\x00\xfd\xe8\x03\x0c\xa9[\ +\x81(+b\xb3n\xbd|\x9aM:v\xccN\xa42\ +'\x17\xf5\xee$\x94\x005\xeaF0BG\xf8\xadu\ +\xbe\xee\xc3q\x0a\x8dq\xe8\x00\xa8\x9b\xc1\xd6\xb6\x82\xab\ +V\x8e\xb6}\xac\xee\x86\x0a\xc0\xa5\x96\x805\x93\x01n\ +\xd5al\x9d\x8c\xe5\x07!\x02\xe8P\xf3R\xf8\xf3\xcf\ +\x17\xd58\xcf\x86\xd9\xfc04\x00ejF.\xff\xf8\ +\xeb\x96cq\xa6\xe2\x22$\x00i\x81\xad\xdfS\x91s\ +\x03\xf6\xeeB\x01\xb0\x10\xd8\xfb\xdf\xb6-\xa1t\xbe\x0a\ +\x01@\x8f\x9e\x87\xff\xad\x0az%\xe1[\xc1\xb2o\xfa\ +\x03\x5c\xd1\xb3\xf0ko\xc8\xfch\x83{\xd1\x12C\xed\ +\x01>\xd2s\xf0\xf3(\xa4\xd7\xd4F7\xc39C\xdd\ +\x01\xf6\xe8\x19\x18\xfd\xd7_v\xac\xcd\x923\xd6\x1b`\ +\xce\xf8\xfd\xff\xee\x8a\x7f\xb6\xadM\xd3\xde\xab\xd6\x00O\ +\x8c\x9f\xffc,\xd4\xdf<\xff\x96\x95Y\xe9\x0c\xd0`\ +\xfc\xfa9\x00\xc0p\x9b\xfc[VQg\x00V\xd3\xb6\ +\x04\x80\xc9\x87-\xef\xc8lj\x0cp\xc2\xf8\xed+\xca\ +\xf6\x01\xee$1\xccV:\x00\xabq\xf3\xe0=km\ +\x9d\xce\xb4\x05\xf0Y\x07\xc2\xf9\xfe\xa9\x8c\x8bb{\xba\ +\x02\xccX\xbf\xdc\xafH\xb9)7\xe5k\x0a\xf0\xcc\xfa\ +\xe5mIw\x05\xb75\x05\xb8c\x9e\x87(\x09\xe0\xc0\ +\xd7\x13\xe0V\xb4>?\xbd\xbe\x1f\xb9K\xdf\x9bO\xba\ +\xb5\x93\x98\xc0\x7f~\xd3\x13\xa0&\x92\xfb\xf8\xf9\xc3\xef\ +\xefq\xd1\xcap\xff\xf3\xa1\x9e\x00\x97\xfc\xd9\x8f\x95\xd7\ +\xb5\xe6=n\x82\x17-\x01\x8a\xfc=\xfa\x11\xa1!\xad\ +qV\x13U-\x01\xb8\x1b\xf9\x229^z\x98\xe0\x9b\ +\x1b\xf1u\x048\xb4$\xbc\xbe\x19_1x\xd4\x11\xe0\ +\x80/\xff%\xc6\xc4*\x97\xc0\x95\x8e\x00|\xf3\x5c9\ +\xd6\xd7;\xdf\xe7\xa9Et\x04\xe0*\xbe6;\x5c~\ +\xccS\x13\xba\x1a\x02\xec\xc9:\x17\x98\xa7\xcb\xdc\xd1\x10\ +\xc0\x966\x90)\x04s\xc0\xael\x80\xb8\xb4\x17\xf7\xc6\ +\xb6\xcci\x08 \xb1\xfd\xae\xb3g\xc8\xc3\xf9\x05|\xe6\ +|\x94\xc7\xaeP\xa7\xfa\x01p,wp\xc7\xfd\xb0G\ +\x96\x0f\xfa\x01\xb0\xdf\xda>\xf7\xb3VL\xcdV\x18;\ +B\x02U7s\xf6\xac\xa6\x1f\x00\xfb\xa8|\x81\xe9\xcc\ +\xf1\x96=\xea]\x00d\xa5v\xdfXO;\xd5\x0f\x80\ +\x19\xf2\x22\x14,\xfeE\xfdh@6\xc0Gf\xb4\x97\ +\xc8\xd3Xe\xe0 \x843B\x15\x99ujR?\x80\ +\xaa\x8c\x81\xd0\xaf\xf4\x89\xfe\xb0\x0f\xfa\x010\xfb\xafb\ +\xe7\xc7\xb5\x18\xd3\xca\xfa\x01|c\x01<\x83\xc4J \ +\xa6\x1f\x00+@\xc4\x12\x8bo\xf1\xe9c\x0b[?\x80\ +\x17\x16\x80\xe0\x11\xa2\xf4\xc9\xc1\x84~\x00\x0b\x16\x80\xe0\ +\xbd)\xe7ak\x06\x99\xc3A\xc1\xe3Sja\xeb\x08\ +1\xbb\x82\x82\xab\x19-\xd1\xcd\x07;\x07`\x05I\x09\ +>\x8e\x1ey\xfcQC\x80\xba\xdc\x220\xa0>\xec\x93\ +\x86\x00=v\x94\x98H\x9a\x86m>\x80\xf1\x8b\x85\xb7\ +N\xcfU\xc7\xc9H\x07`t]DWs\x96|\xa1\ +\xe7\x1a\x01\xb0\x9a\x01\xc1\xad\x90\x1eG\xe0\xb1f\x00\x8c\ +\xf1`\x7f\x83\x1fH\x1c\x0a\xf8:\x02te\x8e\x06\xc1\ +W\xbd<,\x1f\xc0\x95:\x93\xbd\xa2=\xab\xac%\x00\ +c\x16\xa7&\xb1\x12l\xeb\x09\xf0If\xac\xff\x5cb\ +\x85\x1a\x14\x00\xbd\xfb.x\x9c\xecD\xedl\x80\x12\x80\ +\x99\xcci\xbc\xbe\xda\x91\x80\x9a\xed\xf3\x19\x893\x22\xb4\ +6\xe5VW\x00\xfa\x18\xfe\xbb\xd0\xb3\x9aj\x17\xc7w\ +q\x84\x86\xd8IZ\x94n\x95\x9c\xb3\x89U\x00\xd0\xd7\ +\xc8\xc5v\xbb(?\x96P\x09\x00\xf5\x04\x01\xb1\xd3\xf4\ +(\xab\xcdc}\x01\xe8s\xe3\x22\xa7a\xac\xc8;\x08\ +\xd2\xa0/\x00\xec\xcb\xaa\x04\x06\xca\xf7\x0e\xaa\x01\xb8\x91\ +\xd5\x15\x22\xefCuV:\x03\xb81I\x8bC\x05\xc5\ +\xbb\x05\x94\x1d\xa8x&\xa7\x0c\xf8\xb6\xdaN\x80:\x80\ +\x9e\x9c8\xb1'\xf5[G\x15\x01\xd0\xbb\xc3\xdcqR\ +\xc4\x1dH\xb1\x89\xee\x00\xf72b|=\xe2:\xdb\x05\ +\xe8\x0e@\x8f\x97\x1bn\xa9h\xbb\xfa\x03\xdcI\xf8\x04\ +\xb2\x0a\x17D\x94\x03\xf8\xe9\xad\xa7F\x1f\x89\x1b\x0e\xde\ +C\x00@o\x08\xb8\xb2p\xa4p=$\x00\x00\xf8k\ +\xcb \xd7\x96\xea>\x90j\x00\xd7\xd9\xaa\x10\xb8\xa4\x83\ +F\xd2^H\x00\xa8\xb39\xcc\xfbf}\xd2\x19\x93\xf1\ +\x11\x84\x05\x00r\xd4\x00\xa7\xd9f} \xc9w4)\ +\x05\x98Q7\xd1\xa5h\xbd\xb9\xab\x00Z@\xf5\x00\xe4\ +\x86\xec\xc7\x88\x96\xb8PJ>h\xa4\x08\xa1\x02`l\ +\xfb\x89\xd5\xd6O\x8f\xcd\x89\x87\x11\xe5\xbc\x90\x01\xb0v\ +\xbdd\xd74\xe9~\x93\xd8|\x9c\x84\xe1D\xc9?\x12\ ++~>\xd7\xfb\xfd\xa5\xbe7\xc8\x8b\xabg\x0a\xeeh\ +S\x0e\xe03w\x108\xa5\xce\xf8GQX\x0e\xbe\xe6\ +)\x116E\x15\xb7\xb3(\x07\x00\xbf\xcc\xb3\x9f\xdaI\ +\xa5\x93\x8c \xd3\x8a\x92\xdbi\xd4\x030\xa6Hy\x93\ +\xad\xe8\x96\xd6 \x00\xa0ko\x9d\xff\xcc+\x84\x18\x00\ +^3[\xe6\xbf\xac\xec\x8a\xca`\x00\xc0\xfb\x1c\xdb\xe6\ +\xf5+\xbc\x94! \x00\x80\xe1\xe1\xc6\xa5\xffV\xe5\xdd\ +\x5c\x81\x01\x00\xb4\x13\x9bd?~\xa1\xf6v\xc2\x00\x01\ +`u+L`\xff\xad\xfar\xc6 \x01\x00\xbc\xb6\xd0\ +q\x9a\xc9/K\x80H\x01\x00\xc0\xe0\x92\xf3HY\xa7\ +\x1c\xc8}4\x81\x03\x00\xf8\xdf+\xccS\x06R\xa5^\ +@\xb7\x12\xee\x00\x00\x00`\xda\xb9\xcc\x12z\xfd\xb1\xcc\ +\xe5\xdd\x1b\x04\x96v\x04\x00\x00\xe0\xbfvo\xab\x85\x5c\ +&\xe9\xd8\xb1\x98\x93<\xc8\xe6\xce\xaa\xcd\xc7i\xc0\xf7\ +Q\xee\x10@\x8f\x84\x00\x08\x80\x00\x08\x80\x00\x08\x80\x00\ +\x08\x80\x00\x08\x80\x00\x08\x80\x00\x08\x80\x00\x08\x80\x00\x08\ +\x80\x00\x08\x80\x00\x08\x80\x00\x08\x80\x00\x08\x80\x00\x08\x80\ +\x00\x08`*\x80i\x09\x01\x10\x00\x01~\x01\x98\x9b\x10\ +\x00\x01\x10\x00\x01\x8cN\xff\x00\xf3k\xd4\xa5uQ\x85\ +3\x00\x00\x00\x00IEND\xaeB`\x82\ +" + +qt_resource_name = b"\ +\x00\x06\ +\x07\x03}\xc3\ +\x00i\ +\x00m\x00a\x00g\x00e\x00s\ +\x00\x09\ +\x0a\x84\xa4\xa7\ +\x00s\ +\x00i\x00d\x00e\x001\x00.\x00p\x00n\x00g\ +\x00\x09\ +\x0a\x88\xa4\xa7\ +\x00s\ +\x00i\x00d\x00e\x005\x00.\x00p\x00n\x00g\ +\x00\x09\ +\x0a\x87\xa4\xa7\ +\x00s\ +\x00i\x00d\x00e\x004\x00.\x00p\x00n\x00g\ +\x00\x09\ +\x0a\x86\xa4\xa7\ +\x00s\ +\x00i\x00d\x00e\x003\x00.\x00p\x00n\x00g\ +\x00\x09\ +\x0a\x85\xa4\xa7\ +\x00s\ +\x00i\x00d\x00e\x002\x00.\x00p\x00n\x00g\ +\x00\x09\ +\x0a\x89\xa4\xa7\ +\x00s\ +\x00i\x00d\x00e\x006\x00.\x00p\x00n\x00g\ +" + +qt_resource_struct = b"\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x02\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00r\x00\x00\x00\x00\x00\x01\x00\x00\x1a\x1c\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00Z\x00\x00\x00\x00\x00\x01\x00\x00\x11\x05\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00B\x00\x00\x00\x00\x00\x01\x00\x00\x0b\xc3\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00*\x00\x00\x00\x00\x00\x01\x00\x00\x04\x18\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00\x8a\x00\x00\x00\x00\x00\x01\x00\x00!\x08\ +\x00\x00\x01~*kP\x18\ +" + +def qInitResources(): + QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +def qCleanupResources(): + QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +qInitResources() diff --git a/venv/Lib/site-packages/PySide2/examples/quick/customitems/painteditem/__pycache__/painteditem.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/quick/customitems/painteditem/__pycache__/painteditem.cpython-310.pyc new file mode 100644 index 0000000..aef6a90 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/quick/customitems/painteditem/__pycache__/painteditem.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/quick/customitems/painteditem/main.qml b/venv/Lib/site-packages/PySide2/examples/quick/customitems/painteditem/main.qml new file mode 100644 index 0000000..d3404ca --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/quick/customitems/painteditem/main.qml @@ -0,0 +1,114 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt for Python examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 +import TextBalloonPlugin 1.0 + +Item { + height: 480 + width: 320 + + //! [0] + ListModel { + id: balloonModel + ListElement { + balloonWidth: 200 + } + ListElement { + balloonWidth: 120 + } + } + + ListView { + anchors.bottom: controls.top + anchors.bottomMargin: 2 + anchors.top: parent.top + id: balloonView + delegate: TextBalloon { + anchors.right: index % 2 == 0 ? undefined : parent.right + height: 60 + rightAligned: index % 2 == 0 ? false : true + width: balloonWidth + } + model: balloonModel + spacing: 5 + width: parent.width + } + //! [0] + + //! [1] + Rectangle { + id: controls + + anchors.bottom: parent.bottom + anchors.left: parent.left + anchors.margins: 1 + anchors.right: parent.right + border.width: 2 + color: "white" + height: parent.height * 0.15 + + Text { + anchors.centerIn: parent + text: "Add another balloon" + } + + MouseArea { + anchors.fill: parent + hoverEnabled: true + onClicked: { + balloonModel.append({ + "balloonWidth": Math.floor( + Math.random( + ) * 200 + 100) + }) + balloonView.positionViewAtIndex(balloonView.count - 1, + ListView.End) + } + onEntered: { + parent.color = "#8ac953" + } + onExited: { + parent.color = "white" + } + } + } + //! [1] +} diff --git a/venv/Lib/site-packages/PySide2/examples/quick/customitems/painteditem/painteditem.py b/venv/Lib/site-packages/PySide2/examples/quick/customitems/painteditem/painteditem.py new file mode 100644 index 0000000..e89bf0b --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/quick/customitems/painteditem/painteditem.py @@ -0,0 +1,106 @@ +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +import sys + +from PySide2.QtGui import QPainter, QBrush, QColor +from PySide2.QtWidgets import QApplication +from PySide2.QtQml import qmlRegisterType +from PySide2.QtCore import QUrl, Property, Signal, Qt, QPointF +from PySide2.QtQuick import QQuickPaintedItem, QQuickView + + +class TextBalloon(QQuickPaintedItem): + + rightAlignedChanged = Signal() + + def __init__(self, parent=None): + self._rightAligned = False + super().__init__(parent) + + @Property(bool, notify=rightAlignedChanged) + def rightAligned(self): + return self._rightAligned + + @rightAligned.setter + def rightAlignedSet(self, value): + self._rightAligned = value + self.rightAlignedChanged.emit() + + def paint(self, painter: QPainter): + + brush = QBrush(QColor("#007430")) + + painter.setBrush(brush) + painter.setPen(Qt.NoPen) + painter.setRenderHint(QPainter.Antialiasing) + + itemSize = self.size() + + painter.drawRoundedRect(0, 0, itemSize.width(), itemSize.height() - 10, 10, 10) + + if self.rightAligned: + points = [ + QPointF(itemSize.width() - 10.0, itemSize.height() - 10.0), + QPointF(itemSize.width() - 20.0, itemSize.height()), + QPointF(itemSize.width() - 30.0, itemSize.height() - 10.0), + ] + else: + points = [ + QPointF(10.0, itemSize.height() - 10.0), + QPointF(20.0, itemSize.height()), + QPointF(30.0, itemSize.height() - 10.0), + ] + painter.drawConvexPolygon(points) + + +if __name__ == "__main__": + + app = QApplication(sys.argv) + view = QQuickView() + view.setResizeMode(QQuickView.SizeRootObjectToView) + qmlRegisterType(TextBalloon, "TextBalloonPlugin", 1, 0, "TextBalloon") + view.setSource(QUrl.fromLocalFile("main.qml")) + + if view.status() == QQuickView.Error: + sys.exit(-1) + view.show() + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/quick/customitems/painteditem/painteditem.pyproject b/venv/Lib/site-packages/PySide2/examples/quick/customitems/painteditem/painteditem.pyproject new file mode 100644 index 0000000..0c70ebe --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/quick/customitems/painteditem/painteditem.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["main.qml", "painteditem.pyproject"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/remoteobjects/modelview/__pycache__/modelviewclient.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/remoteobjects/modelview/__pycache__/modelviewclient.cpython-310.pyc new file mode 100644 index 0000000..aa4336c Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/remoteobjects/modelview/__pycache__/modelviewclient.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/remoteobjects/modelview/__pycache__/modelviewserver.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/remoteobjects/modelview/__pycache__/modelviewserver.cpython-310.pyc new file mode 100644 index 0000000..fd4dd37 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/remoteobjects/modelview/__pycache__/modelviewserver.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/remoteobjects/modelview/modelview.pyproject b/venv/Lib/site-packages/PySide2/examples/remoteobjects/modelview/modelview.pyproject new file mode 100644 index 0000000..0b3a1b5 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/remoteobjects/modelview/modelview.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["modelviewserver.py", "modelviewclient.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/remoteobjects/modelview/modelviewclient.py b/venv/Lib/site-packages/PySide2/examples/remoteobjects/modelview/modelviewclient.py new file mode 100644 index 0000000..378a051 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/remoteobjects/modelview/modelviewclient.py @@ -0,0 +1,61 @@ +############################################################################# +## +## Copyright (C) 2017 Ford Motor Company +## Copyright (C) 2019 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the remoteobjects/modelviewclient example from Qt v5.x""" + +import sys + +from PySide2.QtCore import QUrl +from PySide2.QtWidgets import (QApplication, QTreeView) +from PySide2.QtRemoteObjects import QRemoteObjectNode + +if __name__ == '__main__': + app = QApplication(sys.argv) + node = QRemoteObjectNode(QUrl("local:registry")) + node.setHeartbeatInterval(1000) + view = QTreeView() + view.setWindowTitle("RemoteView") + view.resize(640,480) + model = node.acquireModel("RemoteModel") + view.setModel(model) + view.show() + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/remoteobjects/modelview/modelviewserver.py b/venv/Lib/site-packages/PySide2/examples/remoteobjects/modelview/modelviewserver.py new file mode 100644 index 0000000..5c0bba5 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/remoteobjects/modelview/modelviewserver.py @@ -0,0 +1,139 @@ +############################################################################# +## +## Copyright (C) 2017 Ford Motor Company +## Copyright (C) 2019 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the remoteobjects/modelviewserver example from Qt v5.x""" + +import sys + +from PySide2.QtCore import (Qt, QByteArray, QModelIndex, QObject, QTimer, QUrl) +from PySide2.QtGui import (QColor, QStandardItemModel, QStandardItem) +from PySide2.QtWidgets import (QApplication, QTreeView) +from PySide2.QtRemoteObjects import QRemoteObjectHost, QRemoteObjectRegistryHost + +class TimerHandler(QObject): + def __init__(self, model): + super(TimerHandler, self).__init__() + self._model = model + + def change_data(self): + for i in range(10, 50): + self._model.setData(self._model.index(i, 1), + QColor(Qt.blue), Qt.BackgroundRole) + + def insert_data(self): + self._model.insertRows(2, 9) + for i in range(2, 11): + self._model.setData(self._model.index(i, 1), + QColor(Qt.green), Qt.BackgroundRole) + self._model.setData(self._model.index(i, 1), + "InsertedRow", Qt.DisplayRole) + + def remove_data(self): + self._model.removeRows(2, 4) + + def change_flags(self): + item = self._model.item(0, 0) + item.setEnabled(False) + item = item.child(0, 0) + item.setFlags(item.flags() & Qt.ItemIsSelectable) + + def move_data(self): + self._model.moveRows(QModelIndex(), 2, 4, QModelIndex(), 10) + + +def add_child(num_children, nesting_level): + result = [] + if nesting_level == 0: + return result + for i in range(num_children): + child = QStandardItem("Child num {}, nesting Level {}".format(i + 1, + nesting_level)) + if i == 0: + child.appendRow(add_child(num_children, nesting_level -1)) + result.append(child) + return result + +if __name__ == '__main__': + app = QApplication(sys.argv) + model_size = 100000 + list = [] + source_model = QStandardItemModel() + horizontal_header_list = ["First Column with spacing", + "Second Column with spacing"] + source_model.setHorizontalHeaderLabels(horizontal_header_list) + for i in range(model_size): + first_item = QStandardItem("FancyTextNumber {}".format(i)) + if i == 0: + first_item.appendRow(add_child(2, 2)) + second_item = QStandardItem("FancyRow2TextNumber {}".format(i)) + if i % 2 == 0: + first_item.setBackground(Qt.red) + row = [first_item, second_item] + source_model.invisibleRootItem().appendRow(row) + list.append("FancyTextNumber {}".format(i)) + + # Needed by QMLModelViewClient + role_names = { + Qt.DisplayRole : QByteArray(b'_text'), + Qt.BackgroundRole : QByteArray(b'_color') + } + source_model.setItemRoleNames(role_names) + + roles = [Qt.DisplayRole, Qt.BackgroundRole] + + print("Creating registry host") + node = QRemoteObjectRegistryHost(QUrl("local:registry")) + + node2 = QRemoteObjectHost(QUrl("local:replica"), QUrl("local:registry")) + node2.enableRemoting(source_model, "RemoteModel", roles) + + view = QTreeView() + view.setWindowTitle("SourceView") + view.setModel(source_model) + view.show() + handler = TimerHandler(source_model) + QTimer.singleShot(5000, handler.change_data) + QTimer.singleShot(10000, handler.insert_data) + QTimer.singleShot(11000, handler.change_flags) + QTimer.singleShot(12000, handler.remove_data) + QTimer.singleShot(13000, handler.move_data) + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/samplebinding/CMakeLists.txt b/venv/Lib/site-packages/PySide2/examples/samplebinding/CMakeLists.txt new file mode 100644 index 0000000..cb61358 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/samplebinding/CMakeLists.txt @@ -0,0 +1,231 @@ +cmake_minimum_required(VERSION 3.1) +cmake_policy(VERSION 3.1) + +# Enable policy to not use RPATH settings for install_name on macOS. +if(POLICY CMP0068) + cmake_policy(SET CMP0068 NEW) +endif() + +# Consider changing the project name to something relevant for you. +project(SampleBinding) + +# ================================ General configuration ====================================== + +# Set CPP standard to C++11 minimum. +set(CMAKE_CXX_STANDARD 11) + +# The sample library for which we will create bindings. You can change the name to something +# relevant for your project. +set(sample_library "libuniverse") + +# The name of the generated bindings module (as imported in Python). You can change the name +# to something relevant for your project. +set(bindings_library "Universe") + +# The header file with all the types and functions for which bindings will be generated. +# Usually it simply includes other headers of the library you are creating bindings for. +set(wrapped_header ${CMAKE_SOURCE_DIR}/bindings.h) + +# The typesystem xml file which defines the relationships between the C++ types / functions +# and the corresponding Python equivalents. +set(typesystem_file ${CMAKE_SOURCE_DIR}/bindings.xml) + +# Specify which C++ files will be generated by shiboken. This includes the module wrapper +# and a '.cpp' file per C++ type. These are needed for generating the module shared +# library. +set(generated_sources + ${CMAKE_CURRENT_BINARY_DIR}/${bindings_library}/universe_module_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/${bindings_library}/icecream_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/${bindings_library}/truck_wrapper.cpp) + + +# ================================== Shiboken detection ====================================== +# Use provided python interpreter if given. +if(NOT python_interpreter) + find_program(python_interpreter "python") +endif() +message(STATUS "Using python interpreter: ${python_interpreter}") + +# Macro to get various pyside / python include / link flags and paths. +# Uses the not entirely supported utils/pyside2_config.py file. +macro(pyside2_config option output_var) + if(${ARGC} GREATER 2) + set(is_list ${ARGV2}) + else() + set(is_list "") + endif() + + execute_process( + COMMAND ${python_interpreter} "${CMAKE_SOURCE_DIR}/../utils/pyside2_config.py" + ${option} + OUTPUT_VARIABLE ${output_var} + OUTPUT_STRIP_TRAILING_WHITESPACE) + + if ("${${output_var}}" STREQUAL "") + message(FATAL_ERROR "Error: Calling pyside2_config.py ${option} returned no output.") + endif() + if(is_list) + string (REPLACE " " ";" ${output_var} "${${output_var}}") + endif() +endmacro() + +# Query for the shiboken generator path, Python path, include paths and linker flags. +pyside2_config(--shiboken2-module-path shiboken2_module_path) +pyside2_config(--shiboken2-generator-path shiboken2_generator_path) +pyside2_config(--python-include-path python_include_dir) +pyside2_config(--shiboken2-generator-include-path shiboken_include_dir 1) +pyside2_config(--shiboken2-module-shared-libraries-cmake shiboken_shared_libraries 0) +pyside2_config(--python-link-flags-cmake python_linking_data 0) + +set(shiboken_path "${shiboken2_generator_path}/shiboken2${CMAKE_EXECUTABLE_SUFFIX}") +if(NOT EXISTS ${shiboken_path}) + message(FATAL_ERROR "Shiboken executable not found at path: ${shiboken_path}") +endif() + + +# ==================================== RPATH configuration ==================================== + + +# ============================================================================================= +# !!! (The section below is deployment related, so in a real world application you will want to +# take care of this properly with some custom script or tool). +# ============================================================================================= +# Enable rpaths so that the built shared libraries find their dependencies. +set(CMAKE_SKIP_BUILD_RPATH FALSE) +set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) +set(CMAKE_INSTALL_RPATH ${shiboken2_module_path} ${CMAKE_CURRENT_SOURCE_DIR}) +set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) +# ============================================================================================= +# !!! End of dubious section. +# ============================================================================================= + + +# =============================== CMake target - sample_library =============================== + + +# Define the sample shared library for which we will create bindings. +set(${sample_library}_sources icecream.cpp truck.cpp) +add_library(${sample_library} SHARED ${${sample_library}_sources}) +set_property(TARGET ${sample_library} PROPERTY PREFIX "") + +# Needed mostly on Windows to export symbols, and create a .lib file, otherwise the binding +# library can't link to the sample library. +target_compile_definitions(${sample_library} PRIVATE BINDINGS_BUILD) + + +# ====================== Shiboken target for generating binding C++ files ==================== + + +# Set up the options to pass to shiboken. +set(shiboken_options --generator-set=shiboken --enable-parent-ctor-heuristic + --enable-return-value-heuristic --use-isnull-as-nb_nonzero + --avoid-protected-hack + -I${CMAKE_SOURCE_DIR} + -T${CMAKE_SOURCE_DIR} + --output-directory=${CMAKE_CURRENT_BINARY_DIR} + ) + +set(generated_sources_dependencies ${wrapped_header} ${typesystem_file}) + +# Add custom target to run shiboken to generate the binding cpp files. +add_custom_command(OUTPUT ${generated_sources} + COMMAND ${shiboken_path} + ${shiboken_options} ${wrapped_header} ${typesystem_file} + DEPENDS ${generated_sources_dependencies} + IMPLICIT_DEPENDS CXX ${wrapped_header} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Running generator for ${typesystem_file}.") + + +# =============================== CMake target - bindings_library ============================= + + +# Set the cpp files which will be used for the bindings library. +set(${bindings_library}_sources ${generated_sources}) + +# Define and build the bindings library. +add_library(${bindings_library} MODULE ${${bindings_library}_sources}) + +# Apply relevant include and link flags. +target_include_directories(${bindings_library} PRIVATE ${python_include_dir}) +target_include_directories(${bindings_library} PRIVATE ${shiboken_include_dir}) +target_include_directories(${bindings_library} PRIVATE ${CMAKE_SOURCE_DIR}) + +target_link_libraries(${bindings_library} PRIVATE ${shiboken_shared_libraries}) +target_link_libraries(${bindings_library} PRIVATE ${sample_library}) + +# Adjust the name of generated module. +set_property(TARGET ${bindings_library} PROPERTY PREFIX "") +set_property(TARGET ${bindings_library} PROPERTY OUTPUT_NAME + "${bindings_library}${PYTHON_EXTENSION_SUFFIX}") +if(WIN32) + set_property(TARGET ${bindings_library} PROPERTY SUFFIX ".pyd") +endif() + +# Make sure the linker doesn't complain about not finding Python symbols on macOS. +if(APPLE) + set_target_properties(${bindings_library} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup") +endif(APPLE) + +# Find and link to the python import library only on Windows. +# On Linux and macOS, the undefined symbols will get resolved by the dynamic linker +# (the symbols will be picked up in the Python executable). +if (WIN32) + list(GET python_linking_data 0 python_libdir) + list(GET python_linking_data 1 python_lib) + find_library(python_link_flags ${python_lib} PATHS ${python_libdir} HINTS ${python_libdir}) + target_link_libraries(${bindings_library} PRIVATE ${python_link_flags}) +endif() + + +# ================================= Dubious deployment section ================================ + +set(windows_shiboken_shared_libraries) + +if(WIN32) + # ========================================================================================= + # !!! (The section below is deployment related, so in a real world application you will + # want to take care of this properly (this is simply to eliminate errors that users usually + # encounter. + # ========================================================================================= + # Circumvent some "#pragma comment(lib)"s in "include/pyconfig.h" which might force to link + # against a wrong python shared library. + + set(python_versions_list 3 32 33 34 35 36 37 38) + set(python_additional_link_flags "") + foreach(ver ${python_versions_list}) + set(python_additional_link_flags + "${python_additional_link_flags} /NODEFAULTLIB:\"python${ver}_d.lib\"") + set(python_additional_link_flags + "${python_additional_link_flags} /NODEFAULTLIB:\"python${ver}.lib\"") + endforeach() + + set_target_properties(${bindings_library} + PROPERTIES LINK_FLAGS "${python_additional_link_flags}") + + # Compile a list of shiboken shared libraries to be installed, so that + # the user doesn't have to set the PATH manually to point to the PySide2 package. + foreach(library_path ${shiboken_shared_libraries}) + string(REGEX REPLACE ".lib$" ".dll" library_path ${library_path}) + file(TO_CMAKE_PATH ${library_path} library_path) + list(APPEND windows_shiboken_shared_libraries "${library_path}") + endforeach() + # ========================================================================================= + # !!! End of dubious section. + # ========================================================================================= +endif() + +# ============================================================================================= +# !!! (The section below is deployment related, so in a real world application you will want to +# take care of this properly with some custom script or tool). +# ============================================================================================= +# Install the library and the bindings module into the source folder near the main.py file, so +# that the Python interpeter successfully imports the used module. +install(TARGETS ${bindings_library} ${sample_library} + LIBRARY DESTINATION ${CMAKE_CURRENT_SOURCE_DIR} + RUNTIME DESTINATION ${CMAKE_CURRENT_SOURCE_DIR} + ) +install(FILES ${windows_shiboken_shared_libraries} DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}) +# ============================================================================================= +# !!! End of dubious section. +# ============================================================================================= diff --git a/venv/Lib/site-packages/PySide2/examples/samplebinding/README.md b/venv/Lib/site-packages/PySide2/examples/samplebinding/README.md new file mode 100644 index 0000000..e84d1ef --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/samplebinding/README.md @@ -0,0 +1,236 @@ +# Sample bindings example + +This example showcases how to generate Python bindings for a +non-Qt C++ library. + +The example defines a CMake project that builds two libraries: +* `libuniverse` - a sample library with two C++ classes. +* `Universe` - the generated Python extension module that contains + bindings to the library above. + +The project file is structured in such a way that a user can copy-paste +in into their own project, and be able to build it with a minimal amount +of modifications. + +## Description + +The libuniverse library declares two classes: `Icecream` and `Truck`. + +`Icecream` objects have a flavor, and an accessor for returning the +flavor. + +`Truck` instances store a vector of `Icecream` objects, and have various +methods for adding new flavors, printing available flavors, delivering +icecream, etc. + +From a C++ perspective, `Icecream` instances are treated as +**object types** (pointer semantics) because the class declares virtual +methods. + +In contrast `Truck` does not define virtual methods and is treated as +a **value type** (copy semantics). + +Because `Truck` is a value type and it stores a vector of `Icecream` +pointers, the rule of three has to be taken into account (implement the +copy constructor, assignment operator, destructor). + +And due to `Icecream` objects being copyable, the type has to define an +implementation of the *clone()* method, to avoid type slicing issues. + +Both of these types and their methods will be exposed to Python by +generating CPython code. The code is generated by **shiboken** and +placed in separate ".cpp" files named after each C++ type. The code is +then compiled and linked into a shared library. The shared library is a +CPython extension module, which is loaded by the Python interpreter. + +Beacuse the C++ language has different semantics to Python, shiboken +needs help in figuring out how to generate the bindings code. This is +done by specifying a special XML file called a typesystem file. + +In the typesystem file you specify things like: + * which C++ primitive types should have bindings (int, bool, float) + * which C++ classes should have bindings (Icecream) and what kind of + semantics (value / object) + * Ownership rules (who deletes the C++ objects, C++ or Python) + * Code injection (for various special cases that shiboken doesn't know + about) + * Package name (name of package as imported from Python) + +In this example we declare `bool` and `std::string` as primitive types, +`Icecream` as an object type, `Truck` as a value type, +and the `clone()` and `addIcecreamFlavor(Icecream*)` need additional +info about who owns the parameter objects when passing them across +language boundaries (in this case C++ will delete the objects). + +The `Truck` has getters and setters for the string `arrivalMessage`. +In the type system file, we declare this to be a property in Python: + +``` + +``` + +It can then be used in a more pythonic way: + +``` +special_truck.arrivalMessage = "A new SPECIAL icecream truck has arrived!\n" +``` + +After shiboken generates the C++ code and CMake makes an extension +module from the code, the types can be accessed in Python simply by +importing them using the original C++ names. + +``` +from Universe import Icecream, Truck +``` + +Constructing C++ wrapped objects is the same as in Python +``` +icecream = Icecream("vanilla") +truck = Truck() +``` + + +And actual C++ constructors are mapped to the Python `__init__` method. +``` +class VanillaChocolateIcecream(Icecream): + def __init__(self, flavor=""): + super(VanillaChocolateIcecream, self).__init__(flavor) +``` + + +C++ methods can be accessed as regular Python methods using the C++ +names +``` +truck.addIcecreamFlavor(icecream) +``` + + +Inheritance works as with regular Python classes, and virtual C++ +methods can be overridden simply by definining a method with the same +name as in the C++ class. +``` +class VanillaChocolateIcecream(Icecream): + # ... + def getFlavor(self): + return "vanilla sprinked with chocolate" + +``` + + +The `main.py` script demonstrates usages of these types. + +The CMake project file contains many comments explaining all the build +rules for those interested in the build process. + +## Building the project + +This example can only be built using **CMake**. +The following requirements need to be met: + +* A PySide2 package is installed into the current active Python + environment (system or virtualenv) +* A new enough version of CMake (**3.1+**). + +For Windows you will also need: +* a Visual Studio environment to be active in your terminal +* Correct visual studio architecture chosen (32 vs 64 bit) +* Make sure that your Python intepreter and bindings project build + configuration is the same (all Release, which is more likely, + or all Debug). + +The build uses the `pyside2_config.py` file to configure the project +using the current PySide2/Shiboken2 installation. + +### Using CMake + +You can build and run this example by executing the following commands +(slightly adapted to your file system layout) in a terminal: + +On macOS/Linux: +```bash +cd ~/pyside-setup/examples/samplebinding +mkdir build +cd build +cmake -H.. -B. -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release +make +make install +python ../main.py +``` + +On Windows: +```bash +cd C:\pyside-setup\examples\samplebinding +mkdir build +cd build +cmake -H.. -B. -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release +# or if you have jom available +# cmake -H.. -B. -G "NMake Makefiles JOM" -DCMAKE_BUILD_TYPE=Release +nmake # or jom +nmake install # or jom install +python ..\main.py +``` + +#### Windows troubleshooting + +It is possible that **CMake** can pick up the wrong compiler +for a different architecture, but it can be addressed explicitly +using the -G option: + +```bash +cmake -H.. -B. -G "Visual Studio 14 Win64" +``` + +If the `-G "Visual Studio 14 Win64"` option is used, a `sln` file +will be generated, and can be used with `MSBuild` +instead of `nmake/jom`. +The easiest way to both build and install in this case, is to use +the cmake executable: + +```bash +cmake --build . --target install --config Release +``` + +Note that using the "NMake Makefiles JOM" generator is preferred to +the MSBuild one, because the MSBuild one generates configs for both +Debug and Release, and this might lead to building errors if you +accidentally build the wrong config at least once. + +## Virtualenv Support + +If the python application is started from a terminal with an activated +python virtual environment, that environment's packages will be used for +the python module import process. +In this case, make sure that the bindings were built while the +`virtualenv` was active, so that the build system picks up the correct +python shared library and PySide2 / shiboken package. + +## Linux Shared Libraries Notes + +For this example's purpose, we link against the absolute path of the +dependent shared library `libshiboken` because the +installation of the library is done via a wheel, and there is +no clean solution to include symbolic links in a wheel package +(so that passing -lshiboken to the linker would work). + +## Windows Notes + +The build config of the bindings (Debug or Release) should match +the PySide2 build config, otherwise the application will not properly +work. + +In practice this means the only supported configurations are: + +1. release config build of the bindings + + PySide2 `setup.py` without `--debug` flag + `python.exe` for the + PySide2 build process + `python36.dll` for the linked in shared + library. +2. debug config build of the application + + PySide2 `setup.py` **with** `--debug` flag + `python_d.exe` for the + PySide2 build process + `python36_d.dll` for the linked in shared + library. + +This is necessary because all the shared libraries in question have to +link to the same C++ runtime library (`msvcrt.dll` or `msvcrtd.dll`). +To make the example as self-contained as possible, the shared libraries +in use (`pyside2.dll`, `shiboken2.dll`) are hard-linked into the build +folder of the application. diff --git a/venv/Lib/site-packages/PySide2/examples/samplebinding/__pycache__/main.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/samplebinding/__pycache__/main.cpython-310.pyc new file mode 100644 index 0000000..42fc7c2 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/samplebinding/__pycache__/main.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/samplebinding/bindings.h b/venv/Lib/site-packages/PySide2/examples/samplebinding/bindings.h new file mode 100644 index 0000000..ba42dc6 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/samplebinding/bindings.h @@ -0,0 +1,57 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt for Python examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef BINDINGS_H +#define BINDINGS_H + +#include "icecream.h" +#include "truck.h" + +#endif // BINDINGS_H diff --git a/venv/Lib/site-packages/PySide2/examples/samplebinding/bindings.xml b/venv/Lib/site-packages/PySide2/examples/samplebinding/bindings.xml new file mode 100644 index 0000000..9be9f1a --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/samplebinding/bindings.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/venv/Lib/site-packages/PySide2/examples/samplebinding/icecream.cpp b/venv/Lib/site-packages/PySide2/examples/samplebinding/icecream.cpp new file mode 100644 index 0000000..8d40302 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/samplebinding/icecream.cpp @@ -0,0 +1,65 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt for Python examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "icecream.h" + +Icecream::Icecream(const std::string &flavor) : m_flavor(flavor) {} + +Icecream::~Icecream() {} + +const std::string Icecream::getFlavor() +{ + return m_flavor; +} + +Icecream *Icecream::clone() +{ + return new Icecream(*this); +} diff --git a/venv/Lib/site-packages/PySide2/examples/samplebinding/icecream.h b/venv/Lib/site-packages/PySide2/examples/samplebinding/icecream.h new file mode 100644 index 0000000..1997fdc --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/samplebinding/icecream.h @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt for Python examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef ICECREAM_H +#define ICECREAM_H + +#include + +#include "macros.h" + +class BINDINGS_API Icecream +{ +public: + Icecream(const std::string &flavor); + virtual Icecream *clone(); + virtual ~Icecream(); + virtual const std::string getFlavor(); + +private: + std::string m_flavor; +}; + + +#endif // ICECREAM_H diff --git a/venv/Lib/site-packages/PySide2/examples/samplebinding/macros.h b/venv/Lib/site-packages/PySide2/examples/samplebinding/macros.h new file mode 100644 index 0000000..71b27c3 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/samplebinding/macros.h @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt for Python examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef MACROS_H +#define MACROS_H + +#if defined _WIN32 || defined __CYGWIN__ + // Export symbols when creating .dll and .lib, and import them when using .lib. + #if BINDINGS_BUILD + #define BINDINGS_API __declspec(dllexport) + #else + #define BINDINGS_API __declspec(dllimport) + #endif + // Disable warnings about exporting STL types being a bad idea. Don't use this in production + // code. + #pragma warning( disable : 4251 ) +#else + #define BINDINGS_API +#endif + +#endif // MACROS_H diff --git a/venv/Lib/site-packages/PySide2/examples/samplebinding/main.py b/venv/Lib/site-packages/PySide2/examples/samplebinding/main.py new file mode 100644 index 0000000..dc727c5 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/samplebinding/main.py @@ -0,0 +1,101 @@ + +############################################################################ +## +## Copyright (C) 2018 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################ + +from __future__ import print_function + +"""An example showcasing how to use bindings for a custom non-Qt C++ library""" + +from Universe import Icecream, Truck + +class VanillaChocolateIcecream(Icecream): + def __init__(self, flavor=""): + super(VanillaChocolateIcecream, self).__init__(flavor) + + def clone(self): + return VanillaChocolateIcecream(self.getFlavor()) + + def getFlavor(self): + return "vanilla sprinked with chocolate" + +class VanillaChocolateCherryIcecream(VanillaChocolateIcecream): + def __init__(self, flavor=""): + super(VanillaChocolateIcecream, self).__init__(flavor) + + def clone(self): + return VanillaChocolateCherryIcecream(self.getFlavor()) + + def getFlavor(self): + base_flavor = super(VanillaChocolateCherryIcecream, self).getFlavor() + return base_flavor + " and a cherry" + +if __name__ == '__main__': + leave_on_destruction = True + truck = Truck(leave_on_destruction) + + flavors = ["vanilla", "chocolate", "strawberry"] + for f in flavors: + icecream = Icecream(f) + truck.addIcecreamFlavor(icecream) + + truck.addIcecreamFlavor(VanillaChocolateIcecream()) + truck.addIcecreamFlavor(VanillaChocolateCherryIcecream()) + + truck.arrive() + truck.printAvailableFlavors() + result = truck.deliver() + + if result: + print("All the kids got some icecream!") + else: + print("Aww, someone didn't get the flavor they wanted...") + + if not result: + special_truck = Truck(truck) + del truck + + print("") + special_truck.arrivalMessage = "A new SPECIAL icecream truck has arrived!\n" + special_truck.arrive() + special_truck.addIcecreamFlavor(Icecream("SPECIAL *magical* icecream")) + special_truck.printAvailableFlavors() + special_truck.deliver() + print("Now everyone got the flavor they wanted!") + special_truck.leave() diff --git a/venv/Lib/site-packages/PySide2/examples/samplebinding/truck.cpp b/venv/Lib/site-packages/PySide2/examples/samplebinding/truck.cpp new file mode 100644 index 0000000..056abfc --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/samplebinding/truck.cpp @@ -0,0 +1,143 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt for Python examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include + +#include "truck.h" + +Truck::Truck(bool leaveOnDestruction) : m_leaveOnDestruction(leaveOnDestruction) {} + +Truck::Truck(const Truck &other) +{ + for (size_t i = 0; i < other.m_flavors.size(); ++i) { + addIcecreamFlavor(other.m_flavors[i]->clone()); + } +} + +Truck &Truck::operator=(const Truck &other) +{ + if (this != &other) { + clearFlavors(); + for (size_t i = 0; i < other.m_flavors.size(); ++i) { + addIcecreamFlavor(other.m_flavors[i]->clone()); + } + } + return *this; +} + +Truck::~Truck() +{ + if (m_leaveOnDestruction) + leave(); + clearFlavors(); +} + +void Truck::addIcecreamFlavor(Icecream *icecream) +{ + m_flavors.push_back(icecream); +} + +void Truck::printAvailableFlavors() const +{ + std::cout << "It sells the following flavors: \n"; + for (size_t i = 0; i < m_flavors.size(); ++ i) { + std::cout << " * " << m_flavors[i]->getFlavor() << '\n'; + } + std::cout << '\n'; +} + +void Truck::arrive() const +{ + std::cout << m_arrivalMessage; +} + +void Truck::leave() const +{ + std::cout << "The truck left the neighborhood.\n"; +} + +void Truck::setLeaveOnDestruction(bool value) +{ + m_leaveOnDestruction = value; +} + +void Truck::setArrivalMessage(const std::string &message) +{ + m_arrivalMessage = message; +} + +std::string Truck::getArrivalMessage() const +{ + return m_arrivalMessage; +} + +bool Truck::deliver() const +{ + std::random_device rd; + std::mt19937 mt(rd()); + std::uniform_int_distribution dist(1, 2); + + std::cout << "The truck started delivering icecream to all the kids in the neighborhood.\n"; + bool result = false; + + if (dist(mt) == 2) + result = true; + + return result; +} + +void Truck::clearFlavors() +{ + for (size_t i = 0; i < m_flavors.size(); ++i) { + delete m_flavors[i]; + } + m_flavors.clear(); +} diff --git a/venv/Lib/site-packages/PySide2/examples/samplebinding/truck.h b/venv/Lib/site-packages/PySide2/examples/samplebinding/truck.h new file mode 100644 index 0000000..3f213f9 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/samplebinding/truck.h @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt for Python examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef TRUCK_H +#define TRUCK_H + +#include + +#include "icecream.h" +#include "macros.h" + +class BINDINGS_API Truck { +public: + Truck(bool leaveOnDestruction = false); + Truck(const Truck &other); + Truck& operator=(const Truck &other); + ~Truck(); + + void addIcecreamFlavor(Icecream *icecream); + void printAvailableFlavors() const; + + bool deliver() const; + void arrive() const; + void leave() const; + + void setLeaveOnDestruction(bool value); + + void setArrivalMessage(const std::string &message); + std::string getArrivalMessage() const; + +private: + void clearFlavors(); + + bool m_leaveOnDestruction = false; + std::string m_arrivalMessage = "A new icecream truck has arrived!\n"; + std::vector m_flavors; +}; + +#endif // TRUCK_H diff --git a/venv/Lib/site-packages/PySide2/examples/script/README.md b/venv/Lib/site-packages/PySide2/examples/script/README.md new file mode 100644 index 0000000..6133f43 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/script/README.md @@ -0,0 +1,9 @@ +# About QtScript + +The QtScript module is deprecated since Qt 5.5, +and hence is not being distributed through our wheels. + +However, it is possible to access the module +when using a local build of PySide2 which was built +against a Qt installation containing the Qt Script module +(ALL_OPTIONAL_MODULES in `sources/pyside2/CMakeLists.txt`). diff --git a/venv/Lib/site-packages/PySide2/examples/script/__pycache__/helloscript.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/script/__pycache__/helloscript.cpython-310.pyc new file mode 100644 index 0000000..6fa2e76 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/script/__pycache__/helloscript.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/script/helloscript.py b/venv/Lib/site-packages/PySide2/examples/script/helloscript.py new file mode 100644 index 0000000..2f0379a --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/script/helloscript.py @@ -0,0 +1,60 @@ + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the script/helloscript example from Qt v5.x""" + +import sys +from PySide2 import QtWidgets, QtScript + + +app = QtWidgets.QApplication(sys.argv) + +engine = QtScript.QScriptEngine() + +button = QtWidgets.QPushButton() +scriptButton = engine.newQObject(button) +engine.globalObject().setProperty("button", scriptButton) + +engine.evaluate("button.text = 'Hello World from PySide2!'") +engine.evaluate("button.styleSheet = 'font-style: italic'") +engine.evaluate("button.show()") + +sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/script/script.pyproject b/venv/Lib/site-packages/PySide2/examples/script/script.pyproject new file mode 100644 index 0000000..5beba8c --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/script/script.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["README.md", "helloscript.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/scriptableapplication/CMakeLists.txt b/venv/Lib/site-packages/PySide2/examples/scriptableapplication/CMakeLists.txt new file mode 100644 index 0000000..9992064 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/scriptableapplication/CMakeLists.txt @@ -0,0 +1,213 @@ +cmake_minimum_required(VERSION 3.1) +cmake_policy(VERSION 3.1) + +# Enable policy to run automoc on generated files. +if(POLICY CMP0071) + cmake_policy(SET CMP0071 NEW) +endif() + +project(scriptableapplication) + +# Set CPP standard to C++11 minimum. +set(CMAKE_CXX_STANDARD 11) + +# Find required Qt packages. +find_package(Qt5 5.12 REQUIRED COMPONENTS Core Gui Widgets) + +# Use provided python interpreter if given. +if(NOT python_interpreter) + find_program(python_interpreter "python") +endif() +message(STATUS "Using python interpreter: ${python_interpreter}") + +# Macro to get various pyside / python include / link flags. +macro(pyside2_config option output_var) + if(${ARGC} GREATER 2) + set(is_list ${ARGV2}) + else() + set(is_list "") + endif() + + execute_process( + COMMAND ${python_interpreter} "${CMAKE_SOURCE_DIR}/../utils/pyside2_config.py" + ${option} + OUTPUT_VARIABLE ${output_var} + OUTPUT_STRIP_TRAILING_WHITESPACE) + + if ("${${output_var}}" STREQUAL "") + message(FATAL_ERROR "Error: Calling pyside2_config.py ${option} returned no output.") + endif() + if(is_list) + string (REPLACE " " ";" ${output_var} "${${output_var}}") + endif() +endmacro() + +# Query for the shiboken2-generator path, PySide2 path, Python path, include paths and linker flags. +pyside2_config(--shiboken2-module-path SHIBOKEN2_MODULE_PATH) +pyside2_config(--shiboken2-generator-path SHIBOKEN2_GENERATOR_PATH) +pyside2_config(--pyside2-path PYSIDE2_PATH) + +pyside2_config(--python-include-path PYTHON_INCLUDE_DIR) +pyside2_config(--shiboken2-generator-include-path SHIBOKEN2_GENERATOR_INCLUDE_DIR 1) +pyside2_config(--pyside2-include-path PYSIDE2_INCLUDE_DIR 1) + +pyside2_config(--python-link-flags-cmake PYTHON_LINKING_DATA 0) +pyside2_config(--shiboken2-module-shared-libraries-cmake SHIBOKEN2_MODULE_SHARED_LIBRARIES 0) +pyside2_config(--pyside2-shared-libraries-cmake PYSIDE2_SHARED_LIBRARIES 0) + +set(SHIBOKEN_PATH "${SHIBOKEN2_GENERATOR_PATH}/shiboken2${CMAKE_EXECUTABLE_SUFFIX}") + +if(NOT EXISTS ${SHIBOKEN_PATH}) + message(FATAL_ERROR "Shiboken executable not found at path: ${SHIBOKEN_PATH}") +endif() + + +# Get all relevant Qt include dirs, to pass them on to shiboken. +get_property(QT_CORE_INCLUDE_DIRS TARGET Qt5::Core PROPERTY INTERFACE_INCLUDE_DIRECTORIES) +get_property(QT_GUI_INCLUDE_DIRS TARGET Qt5::Gui PROPERTY INTERFACE_INCLUDE_DIRECTORIES) +get_property(QT_WIDGETS_INCLUDE_DIRS TARGET Qt5::Widgets PROPERTY INTERFACE_INCLUDE_DIRECTORIES) +set(QT_INCLUDE_DIRS ${QT_CORE_INCLUDE_DIRS} ${QT_GUI_INCLUDE_DIRS} ${QT_WIDGETS_INCLUDE_DIRS}) +set(INCLUDES "") +foreach(INCLUDE_DIR ${QT_INCLUDE_DIRS}) + list(APPEND INCLUDES "-I${INCLUDE_DIR}") +endforeach() + +# On macOS, check if Qt is a framework build. This affects how include paths should be handled. +get_target_property(QtCore_is_framework Qt5::Core FRAMEWORK) +if (QtCore_is_framework) + get_target_property(qt_core_library_location Qt5::Core LOCATION) + get_filename_component(qt_core_library_location_dir "${qt_core_library_location}" DIRECTORY) + get_filename_component(lib_dir "${qt_core_library_location_dir}/../" ABSOLUTE) + list(APPEND INCLUDES "--framework-include-paths=${lib_dir}") +endif() + +# Set up the options to pass to shiboken. +set(WRAPPED_HEADER ${CMAKE_SOURCE_DIR}/wrappedclasses.h) +set(TYPESYSTEM_FILE ${CMAKE_SOURCE_DIR}/scriptableapplication.xml) + +set(SHIBOKEN_OPTIONS --generator-set=shiboken --enable-parent-ctor-heuristic + --enable-pyside-extensions --enable-return-value-heuristic --use-isnull-as-nb_nonzero + --avoid-protected-hack + ${INCLUDES} + -I${CMAKE_SOURCE_DIR} + -T${CMAKE_SOURCE_DIR} + -T${PYSIDE2_PATH}/typesystems + --output-directory=${CMAKE_CURRENT_BINARY_DIR} + ) + +# Specify which sources will be generated by shiboken, and their dependencies. +set(GENERATED_SOURCES + ${CMAKE_CURRENT_BINARY_DIR}/AppLib/applib_module_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/AppLib/mainwindow_wrapper.cpp) + +set(GENERATED_SOURCES_DEPENDENCIES + ${WRAPPED_HEADER} + ${TYPESYSTEM_FILE} + ) + +# Add custom target to run shiboken. +add_custom_command(OUTPUT ${GENERATED_SOURCES} + COMMAND ${SHIBOKEN_PATH} + ${SHIBOKEN_OPTIONS} ${WRAPPED_HEADER} ${TYPESYSTEM_FILE} + DEPENDS ${GENERATED_SOURCES_DEPENDENCIES} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Running generator for ${TYPESYSTEM_FILE}.") + +# Set the CPP files. +set(SOURCES + mainwindow.cpp + pythonutils.cpp + ${GENERATED_SOURCES} + ) + +# We need to include the headers for the module bindings that we use. +set(PYSIDE2_ADDITIONAL_INCLUDES "") +foreach(INCLUDE_DIR ${PYSIDE2_INCLUDE_DIR}) + list(APPEND PYSIDE2_ADDITIONAL_INCLUDES "${INCLUDE_DIR}/QtCore") + list(APPEND PYSIDE2_ADDITIONAL_INCLUDES "${INCLUDE_DIR}/QtGui") + list(APPEND PYSIDE2_ADDITIONAL_INCLUDES "${INCLUDE_DIR}/QtWidgets") +endforeach() + +# ============================================================================================= +# !!! (The section below is deployment related, so in a real world application you will want to +# take care of this properly with some custom script or tool). +# ============================================================================================= +# Enable rpaths so that the example can be executed from the build dir. +set(CMAKE_SKIP_BUILD_RPATH FALSE) +set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) +set(CMAKE_INSTALL_RPATH ${PYSIDE2_PATH} ${SHIBOKEN2_MODULE_PATH}) +set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) +# ============================================================================================= +# !!! End of dubious section. +# ============================================================================================= + +# Declare executable so we can enable automoc. +add_executable(${PROJECT_NAME} main.cpp) + +# Enable automoc. +set_property(TARGET ${PROJECT_NAME} PROPERTY AUTOMOC 1) + +# Add the rest of the sources. +target_sources(${PROJECT_NAME} PUBLIC ${SOURCES}) + +# Apply relevant include and link flags. +target_include_directories(${PROJECT_NAME} PRIVATE ${PYTHON_INCLUDE_DIR}) +target_include_directories(${PROJECT_NAME} PRIVATE ${SHIBOKEN2_GENERATOR_INCLUDE_DIR}) +target_include_directories(${PROJECT_NAME} PRIVATE ${PYSIDE2_INCLUDE_DIR}) +target_include_directories(${PROJECT_NAME} PRIVATE ${PYSIDE2_ADDITIONAL_INCLUDES}) +target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}) + +target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Widgets) +target_link_libraries(${PROJECT_NAME} PRIVATE ${SHIBOKEN2_MODULE_SHARED_LIBRARIES}) +target_link_libraries(${PROJECT_NAME} PRIVATE ${PYSIDE2_SHARED_LIBRARIES}) + +# Find and link to the python library. +list(GET PYTHON_LINKING_DATA 0 PYTHON_LIBDIR) +list(GET PYTHON_LINKING_DATA 1 PYTHON_LIB) +find_library(PYTHON_LINK_FLAGS ${PYTHON_LIB} PATHS ${PYTHON_LIBDIR} HINTS ${PYTHON_LIBDIR}) +target_link_libraries(${PROJECT_NAME} PRIVATE ${PYTHON_LINK_FLAGS}) + +# Same as CONFIG += no_keywords to avoid syntax errors in object.h due to the usage of the word Slot +target_compile_definitions(${PROJECT_NAME} PRIVATE QT_NO_KEYWORDS) + +if(WIN32) + # ============================================================================================= + # !!! (The section below is deployment related, so in a real world application you will want to + # take care of this properly (this is simply to eliminate errors that users usually encounter. + # ============================================================================================= + # Circumvent some "#pragma comment(lib)"s in "include/pyconfig.h" which might force to link + # against a wrong python shared library. + + set(PYTHON_VERSIONS_LIST 3 32 33 34 35 36 37 38) + set(PYTHON_ADDITIONAL_LINK_FLAGS "") + foreach(VER ${PYTHON_VERSIONS_LIST}) + set(PYTHON_ADDITIONAL_LINK_FLAGS + "${PYTHON_ADDITIONAL_LINK_FLAGS} /NODEFAULTLIB:\"python${VER}_d.lib\"") + set(PYTHON_ADDITIONAL_LINK_FLAGS + "${PYTHON_ADDITIONAL_LINK_FLAGS} /NODEFAULTLIB:\"python${VER}.lib\"") + endforeach() + + set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS "${PYTHON_ADDITIONAL_LINK_FLAGS}") + + # Add custom target to hard link PySide2 shared libraries (just like in qmake example), so you + # don't have to set PATH manually to point to the PySide2 package. + set(shared_libraries ${SHIBOKEN2_MODULE_SHARED_LIBRARIES} ${PYSIDE2_SHARED_LIBRARIES}) + foreach(LIBRARY_PATH ${shared_libraries}) + string(REGEX REPLACE ".lib$" ".dll" LIBRARY_PATH ${LIBRARY_PATH}) + get_filename_component(BASE_NAME ${LIBRARY_PATH} NAME) + file(TO_NATIVE_PATH ${LIBRARY_PATH} SOURCE_PATH) + file(TO_NATIVE_PATH "${CMAKE_CURRENT_BINARY_DIR}/${BASE_NAME}" DEST_PATH) + add_custom_command(OUTPUT "${BASE_NAME}" + COMMAND mklink /H "${DEST_PATH}" "${SOURCE_PATH}" + DEPENDS ${LIBRARY_PATH} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Creating hardlink to PySide2 shared library ${BASE_NAME}") + + # Fake target that depends on the previous one, but has special ALL keyword, which means + # it will always be executed. + add_custom_target("fake_${BASE_NAME}" ALL DEPENDS ${BASE_NAME}) + endforeach() + # ============================================================================================= + # !!! End of dubious section. + # ============================================================================================= +endif() diff --git a/venv/Lib/site-packages/PySide2/examples/scriptableapplication/README.md b/venv/Lib/site-packages/PySide2/examples/scriptableapplication/README.md new file mode 100644 index 0000000..d359581 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/scriptableapplication/README.md @@ -0,0 +1,170 @@ +# Scriptable Application + +This example demonstrates how to make a Qt C++ application scriptable. + +It has a class **MainWindow** (`mainwindow.{cpp,h}`) +that inherits from *QMainWindow*, for which bindings are generated +using Shiboken. + +The header `wrappedclasses.h` is passed to Shiboken which generates +class wrappers and headers in a sub directory called **AppLib/** +which are linked to the application. + +The files `pythonutils.{cpp,h}` contain some code which binds the +instance of **MainWindow** to a variable called **'mainWindow'** in +the global Python namespace (`__main___`). +It is then possible to run Python script snippets like: + +```python +mainWindow.testFunction1() +``` +which trigger the underlying C++ function. + +## Building the project + +This example can be built using *CMake* or *QMake*, +but there are common requirements that you need to take into +consideration: + +* Make sure that a --standalone PySide2 package (bundled with Qt libraries) + is installed into the current active Python environment + (system or virtualenv) +* qmake has to be in your PATH: + * so that CMake find_package(Qt5) works (used for include headers), + * used for building the application with qmake instead of CMake +* use the same Qt version for building the example application, as was used + for building PySide2, this is to ensure binary compatibility between the + newly generated bindings libraries, the PySide2 libraries and the + Qt libraries. + +For Windows you will also need: +* a Visual Studio environment to be active in your terminal +* Correct visual studio architecture chosen (32 vs 64 bit) +* Make sure that your Qt + Python + PySide2 package + app build configuration + is the same (all Release, which is more likely, or all Debug). +* Make sure that your Qt + Python + PySide2 package + app are built with the + same version of MSVC, to avoid mixing of C++ runtime libraries. + In principle this means that if you use the python.org provided Python + interpreters, you need to use MSVC2015 for Python 3 projects, and MSVC2008 + for Python 2 projects. Which also means that you can't use official Qt + packages, because none of the supported ones are built with MSVC2008. + +Both build options will use the `pyside2_config.py` file to configure the project +using the current PySide2/Shiboken2 installation (for qmake via pyside2.pri, +and for CMake via the project CMakeLists.txt). + + +### Using CMake + +To build this example with CMake you will need a recent version of CMake (3.1+). + +You can build this example by executing the following commands +(slightly adapted to your file system layout) in a terminal: + +On macOS/Linux: +```bash +cd ~/pyside-setup/examples/scriptableapplication +mkdir build +cd build +cmake -H.. -B. -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release +make +./scriptableapplication +``` + +On Windows: +```bash +cd C:\pyside-setup\examples\scriptableapplication +mkdir build +cd build +cmake -H.. -B. -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release +# or if you have jom available +# cmake -H.. -B. -G "NMake Makefiles JOM" -DCMAKE_BUILD_TYPE=Release +nmake # or jom +scriptableapplication.exe +``` + +### Using QMake + +The file `scriptableapplication.pro` is the project file associated +to the example when using qmake. + +You can build this example by executing: +```bash +mkdir build +cd build +qmake .. +make # or nmake / jom for Windows +``` + +#### Windows troubleshooting + +Using **qmake** should work out of the box, there was a known issue +with directories and white spaces that is solved by using the +"~1" character, so the path will change from: +c:\Program Files\Python34\libs +to +c:\Progra~1\Python34\libs +this will avoid the issues when the Makefiles are generated. + +It is possible when using **cmake** to pick up the wrong compiler +for a different architecture, but it can be addressed explicitly +using the -G option: + +```bash +cmake -H.. -B. -G "Visual Studio 14 Win64" -DCMAKE_BUILD_TYPE=Release +``` + +If the `-G "Visual Studio 14 Win64"` option is used, a `sln` file +will be generated, and can be used with `MSBuild` +instead of `nmake/jom`. + +```bash +MSBuild scriptableapplication.sln "/p:Configuration=Release" +``` + +Note that using the "NMake Makefiles JOM" generator is preferred to +the MSBuild one, because in the latter case the executable is placed +into a directory other than the one that contains the dependency +dlls (shiboken, pyside). This leads to execution problems if the +application is started within the Release subdirectory and not the +one containing the dependencies. + +## Virtualenv Support + +If the application is started from a terminal with an activated python +virtual environment, that environment's packages will be used for the +python module import process. +In this case, make sure that the application was built while the +`virtualenv` was active, so that the build system picks up the correct +python shared library and PySide2 package. + +## Linux Shared Libraries Notes + +For this example's purpose, we link against the absolute paths of the +shared libraries (`libshiboken` and `libpyside`) because the +installation of the modules is being done via wheels, and there is +no clean solution to include symbolic links in the package +(so that regular -lshiboken works). + +## Windows Notes + +The build config of the application (Debug or Release) should match +the PySide2 build config, otherwise the application will not properly +work. + +In practice this means the only supported configurations are: + +1. release config build of the application + + PySide2 `setup.py` without `--debug` flag + `python.exe` for the + PySide2 build process + `python36.dll` for the linked in shared + library + release build of Qt. +2. debug config build of the application + + PySide2 `setup.py` **with** `--debug` flag + `python_d.exe` for the + PySide2 build process + `python36_d.dll` for the linked in shared + library + debug build of Qt. + +This is necessary because all the shared libraries in question have to +link to the same C++ runtime library (`msvcrt.dll` or `msvcrtd.dll`). +To make the example as self-contained as possible, the shared libraries +in use (`pyside2.dll`, `shiboken2.dll`) are hard-linked into the build +folder of the application. diff --git a/venv/Lib/site-packages/PySide2/examples/scriptableapplication/main.cpp b/venv/Lib/site-packages/PySide2/examples/scriptableapplication/main.cpp new file mode 100644 index 0000000..3314179 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/scriptableapplication/main.cpp @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt for Python examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "mainwindow.h" + +#include +#include + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + MainWindow mainWindow; + const QRect availableGeometry = mainWindow.screen()->availableGeometry(); + mainWindow.resize(availableGeometry.width() / 2, availableGeometry.height() / 2); + mainWindow.show(); + return a.exec(); +} diff --git a/venv/Lib/site-packages/PySide2/examples/scriptableapplication/mainwindow.cpp b/venv/Lib/site-packages/PySide2/examples/scriptableapplication/mainwindow.cpp new file mode 100644 index 0000000..53aea3c --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/scriptableapplication/mainwindow.cpp @@ -0,0 +1,142 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt for Python examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "mainwindow.h" +#include "pythonutils.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include + +static const char defaultScript[] = R"( +print("Hello, world") +mainWindow.testFunction1() +)"; + +MainWindow::MainWindow() + : m_scriptEdit(new QPlainTextEdit(QString::fromLatin1(defaultScript).trimmed(), this)) +{ + setWindowTitle(tr("Scriptable Application")); + + QMenu *fileMenu = menuBar()->addMenu(tr("&File")); + const QIcon runIcon = QIcon::fromTheme(QStringLiteral("system-run")); + QAction *runAction = fileMenu->addAction(runIcon, tr("&Run..."), this, &MainWindow::slotRunScript); + runAction->setShortcut(Qt::CTRL | Qt::Key_R); + QAction *diagnosticAction = fileMenu->addAction(tr("&Print Diagnostics"), this, &MainWindow::slotPrintDiagnostics); + diagnosticAction->setShortcut(Qt::CTRL | Qt::Key_D); + fileMenu->addAction(tr("&Invoke testFunction1()"), this, &MainWindow::testFunction1); + const QIcon quitIcon = QIcon::fromTheme(QStringLiteral("application-exit")); + QAction *quitAction = fileMenu->addAction(quitIcon, tr("&Quit"), qApp, &QCoreApplication::quit); + quitAction->setShortcut(Qt::CTRL | Qt::Key_Q); + + QMenu *editMenu = menuBar()->addMenu(tr("&Edit")); + const QIcon clearIcon = QIcon::fromTheme(QStringLiteral("edit-clear")); + QAction *clearAction = editMenu->addAction(clearIcon, tr("&Clear"), m_scriptEdit, &QPlainTextEdit::clear); + + QMenu *helpMenu = menuBar()->addMenu(tr("&Help")); + const QIcon aboutIcon = QIcon::fromTheme(QStringLiteral("help-about")); + QAction *aboutAction = helpMenu->addAction(aboutIcon, tr("&About Qt"), qApp, &QApplication::aboutQt); + + QToolBar *toolBar = new QToolBar; + addToolBar(toolBar); + toolBar->addAction(quitAction); + toolBar->addSeparator(); + toolBar->addAction(clearAction); + toolBar->addSeparator(); + toolBar->addAction(runAction); + toolBar->addSeparator(); + toolBar->addAction(aboutAction); + + m_scriptEdit->setFont(QFontDatabase::systemFont(QFontDatabase::FixedFont)); + setCentralWidget(m_scriptEdit); + + if (!PythonUtils::bindAppObject("__main__", "mainWindow", PythonUtils::MainWindowType, this)) + statusBar()->showMessage(tr("Error loading the application module")); +} + +void MainWindow::slotRunScript() +{ + const QStringList script = m_scriptEdit->toPlainText().trimmed().split(QLatin1Char('\n'), Qt::SkipEmptyParts); + if (!script.isEmpty()) + runScript(script); +} + +void MainWindow::slotPrintDiagnostics() +{ + const QStringList script = QStringList() + << "import sys" << "print('Path=', sys.path)" << "print('Executable=', sys.executable)"; + runScript(script); +} + +void MainWindow::runScript(const QStringList &script) +{ + if (!::PythonUtils::runScript(script)) + statusBar()->showMessage(tr("Error running script")); +} + +void MainWindow::testFunction1() +{ + static int n = 1; + QString message; + QTextStream(&message) << __FUNCTION__ << " called #" << n++; + qDebug().noquote() << message; + statusBar()->showMessage(message); +} diff --git a/venv/Lib/site-packages/PySide2/examples/scriptableapplication/mainwindow.h b/venv/Lib/site-packages/PySide2/examples/scriptableapplication/mainwindow.h new file mode 100644 index 0000000..ce61383 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/scriptableapplication/mainwindow.h @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt for Python examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include + +class QPlainTextEdit; + +class MainWindow : public QMainWindow +{ + Q_OBJECT +public: + MainWindow(); + + void testFunction1(); + +private Q_SLOTS: + void slotRunScript(); + void slotPrintDiagnostics(); + +private: + void runScript(const QStringList &); + + QPlainTextEdit *m_scriptEdit; +}; + +#endif // MAINWINDOW_H diff --git a/venv/Lib/site-packages/PySide2/examples/scriptableapplication/pyside2.pri b/venv/Lib/site-packages/PySide2/examples/scriptableapplication/pyside2.pri new file mode 100644 index 0000000..2da3bc8 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/scriptableapplication/pyside2.pri @@ -0,0 +1,52 @@ +PYSIDE_CONFIG = $$PWD/../utils/pyside2_config.py + +# Use provided python interpreter if given. +isEmpty(python_interpreter) { + python_interpreter = python +} +message(Using python interpreter: $$python_interpreter) + +SHIBOKEN2_GENERATOR = $$system($$python_interpreter $$PYSIDE_CONFIG --shiboken2-generator-path) +isEmpty(SHIBOKEN2_GENERATOR): error(Unable to locate the shiboken2-generator package location) + +SHIBOKEN2_MODULE = $$system($$python_interpreter $$PYSIDE_CONFIG --shiboken2-module-path) +isEmpty(SHIBOKEN2_MODULE): error(Unable to locate the shiboken2 package location) + +PYSIDE2 = $$system($$python_interpreter $$PYSIDE_CONFIG --pyside2-path) +isEmpty(PYSIDE2): error(Unable to locate the PySide2 package location) + +PYTHON_INCLUDE = $$system($$python_interpreter $$PYSIDE_CONFIG --python-include-path) +isEmpty(PYTHON_INCLUDE): error(Unable to locate the Python include headers directory) + +PYTHON_LFLAGS = $$system($$python_interpreter $$PYSIDE_CONFIG --python-link-flags-qmake) +isEmpty(PYTHON_LFLAGS): error(Unable to locate the Python library for linking) + +SHIBOKEN2_INCLUDE = $$system($$python_interpreter $$PYSIDE_CONFIG --shiboken2-generator-include-path) +isEmpty(SHIBOKEN2_INCLUDE): error(Unable to locate the shiboken include headers directory) + +PYSIDE2_INCLUDE = $$system($$python_interpreter $$PYSIDE_CONFIG --pyside2-include-path) +isEmpty(PYSIDE2_INCLUDE): error(Unable to locate the PySide2 include headers directory) + +SHIBOKEN2_LFLAGS = $$system($$python_interpreter $$PYSIDE_CONFIG --shiboken2-module-qmake-lflags) +isEmpty(SHIBOKEN2_LFLAGS): error(Unable to locate the shiboken libraries for linking) + +PYSIDE2_LFLAGS = $$system($$python_interpreter $$PYSIDE_CONFIG --pyside2-qmake-lflags) +isEmpty(PYSIDE2_LFLAGS): error(Unable to locate the PySide2 libraries for linking) + +SHIBOKEN2_SHARED_LIBRARIES = $$system($$python_interpreter $$PYSIDE_CONFIG --shiboken2-module-shared-libraries-qmake) +isEmpty(SHIBOKEN2_SHARED_LIBRARIES): error(Unable to locate the used shiboken2 module shared libraries) + +PYSIDE2_SHARED_LIBRARIES = $$system($$python_interpreter $$PYSIDE_CONFIG --pyside2-shared-libraries-qmake) +isEmpty(PYSIDE2_SHARED_LIBRARIES): error(Unable to locate the used PySide2 shared libraries) + +INCLUDEPATH += "$$PYTHON_INCLUDE" $$PYSIDE2_INCLUDE $$SHIBOKEN2_INCLUDE +LIBS += $$PYTHON_LFLAGS $$PYSIDE2_LFLAGS $$SHIBOKEN2_LFLAGS +!build_pass:message(INCLUDEPATH is $$INCLUDEPATH) +!build_pass:message(LIBS are $$LIBS) + +!build_pass:message(Using $$PYSIDE2) + +!win32 { + !build_pass:message(RPATH will include $$PYSIDE2 and $$SHIBOKEN2_MODULE) + QMAKE_RPATHDIR += $$PYSIDE2 $$SHIBOKEN2_MODULE +} diff --git a/venv/Lib/site-packages/PySide2/examples/scriptableapplication/pythonutils.cpp b/venv/Lib/site-packages/PySide2/examples/scriptableapplication/pythonutils.cpp new file mode 100644 index 0000000..c5e18f2 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/scriptableapplication/pythonutils.cpp @@ -0,0 +1,192 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt for Python examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "pythonutils.h" + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +/* from AppLib bindings */ + +#if PY_MAJOR_VERSION >= 3 + extern "C" PyObject *PyInit_AppLib(); +#else + extern "C" void initAppLib(); +#endif + +// This variable stores all Python types exported by this module. +extern PyTypeObject **SbkAppLibTypes; + +// This variable stores all type converters exported by this module. +extern SbkConverter **SbkAppLibTypeConverters; + +namespace PythonUtils { + +static State state = PythonUninitialized; + +static void cleanup() +{ + if (state > PythonUninitialized) { + Py_Finalize(); + state = PythonUninitialized; + } +} + +static const char virtualEnvVar[] = "VIRTUAL_ENV"; + +// If there is an active python virtual environment, use that environment's +// packages location. +static void initVirtualEnvironment() +{ + QByteArray virtualEnvPath = qgetenv(virtualEnvVar); + // As of Python 3.8, Python is no longer able to run stand-alone in a + // virtualenv due to missing libraries. Add the path to the modules instead. + if (QOperatingSystemVersion::currentType() == QOperatingSystemVersion::Windows + && (PY_MAJOR_VERSION > 3 || (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 8))) { + qputenv("PYTHONPATH", virtualEnvPath + "\\Lib\\site-packages"); + } else { + qputenv("PYTHONHOME", virtualEnvPath); + } +} + +State init() +{ + if (state > PythonUninitialized) + return state; + + if (qEnvironmentVariableIsSet(virtualEnvVar)) + initVirtualEnvironment(); + + Py_Initialize(); + qAddPostRoutine(cleanup); + state = PythonInitialized; +#if PY_MAJOR_VERSION >= 3 + const bool pythonInitialized = PyInit_AppLib() != nullptr; +#else + const bool pythonInitialized = true; + initAppLib(); +#endif + const bool pyErrorOccurred = PyErr_Occurred() != nullptr; + if (pythonInitialized && !pyErrorOccurred) { + state = AppModuleLoaded; + } else { + if (pyErrorOccurred) + PyErr_Print(); + qWarning("Failed to initialize the module."); + } + return state; +} + +bool bindAppObject(const QString &moduleName, const QString &name, + int index, QObject *o) +{ + if (init() != AppModuleLoaded) + return false; + PyTypeObject *typeObject = SbkAppLibTypes[index]; + + PyObject *po = Shiboken::Conversions::pointerToPython(reinterpret_cast(typeObject), o); + if (!po) { + qWarning() << __FUNCTION__ << "Failed to create wrapper for" << o; + return false; + } + Py_INCREF(po); + + PyObject *module = PyImport_AddModule(moduleName.toLocal8Bit().constData()); + if (!module) { + Py_DECREF(po); + if (PyErr_Occurred()) + PyErr_Print(); + qWarning() << __FUNCTION__ << "Failed to locate module" << moduleName; + return false; + } + + if (PyModule_AddObject(module, name.toLocal8Bit().constData(), po) < 0) { + if (PyErr_Occurred()) + PyErr_Print(); + qWarning() << __FUNCTION__ << "Failed add object" << name << "to" << moduleName; + return false; + } + + return true; +} + +bool runScript(const QStringList &script) +{ + if (init() == PythonUninitialized) + return false; + + // Concatenating all the lines + QString content; + QTextStream ss(&content); + for (const QString &line: script) + ss << line << "\n"; + + // Executing the whole script as one line + bool result = true; + const QByteArray line = content.toUtf8(); + if (PyRun_SimpleString(line.constData()) == -1) { + if (PyErr_Occurred()) + PyErr_Print(); + result = false; + } + + return result; +} + +} // namespace PythonUtils diff --git a/venv/Lib/site-packages/PySide2/examples/scriptableapplication/pythonutils.h b/venv/Lib/site-packages/PySide2/examples/scriptableapplication/pythonutils.h new file mode 100644 index 0000000..21aef19 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/scriptableapplication/pythonutils.h @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt for Python examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef PYTHONUTILS_H +#define PYTHONUTILS_H + +class QObject; +class QString; +class QStringList; + +namespace PythonUtils { + +enum AppLibTypes +{ + MainWindowType = 0 // SBK_MAINWINDOW_IDX +}; + +enum State +{ + PythonUninitialized, + PythonInitialized, + AppModuleLoaded +}; + +State init(); + +bool bindAppObject(const QString &moduleName, const QString &name, + int index, QObject *o); + +bool runScript(const QStringList &script); + +} // namespace PythonUtils + +#endif // PYTHONUTILS_H diff --git a/venv/Lib/site-packages/PySide2/examples/scriptableapplication/scriptableapplication.pro b/venv/Lib/site-packages/PySide2/examples/scriptableapplication/scriptableapplication.pro new file mode 100644 index 0000000..8ebab94 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/scriptableapplication/scriptableapplication.pro @@ -0,0 +1,85 @@ +TEMPLATE = app +CONFIG += no_keywords # avoid clash with slots in Python.h +CONFIG += console force_debug_info +QT += widgets + +include(pyside2.pri) + +WRAPPED_HEADER = wrappedclasses.h +WRAPPER_DIR = $$OUT_PWD/AppLib +TYPESYSTEM_FILE = scriptableapplication.xml + +QT_INCLUDEPATHS = -I"$$[QT_INSTALL_HEADERS]" -I"$$[QT_INSTALL_HEADERS]/QtCore" \ + -I"$$[QT_INSTALL_HEADERS]/QtGui" -I"$$[QT_INSTALL_HEADERS]/QtWidgets" + +# On macOS, check if Qt is a framework build. This affects how include paths should be handled. +qtConfig(framework): QT_INCLUDEPATHS += --framework-include-paths=$$[QT_INSTALL_LIBS] + +SHIBOKEN_OPTIONS = --generator-set=shiboken --enable-parent-ctor-heuristic \ + --enable-pyside-extensions --enable-return-value-heuristic --use-isnull-as-nb_nonzero \ + $$QT_INCLUDEPATHS -I$$PWD -T$$PWD -T$$PYSIDE2/typesystems --output-directory=$$OUT_PWD + +# MSVC does not honor #define protected public... +win32:SHIBOKEN_OPTIONS += --avoid-protected-hack + +# Prepare the shiboken tool +QT_TOOL.shiboken.binary = $$system_path($$SHIBOKEN2_GENERATOR/shiboken2) +qtPrepareTool(SHIBOKEN, shiboken) + +# Shiboken run that adds the module wrapper to GENERATED_SOURCES +shiboken.output = $$WRAPPER_DIR/applib_module_wrapper.cpp +shiboken.commands = $$SHIBOKEN $$SHIBOKEN_OPTIONS $$PWD/wrappedclasses.h ${QMAKE_FILE_IN} +shiboken.input = TYPESYSTEM_FILE +shiboken.dependency_type = TYPE_C +shiboken.variable_out = GENERATED_SOURCES + +# A dummy command that pretends to produce the class wrappers from the headers +# depending on the module wrapper +WRAPPED_CLASSES = mainwindow.h +module_wrapper_dummy_command.output = $$WRAPPER_DIR/${QMAKE_FILE_BASE}_wrapper.cpp +module_wrapper_dummy_command.commands = echo ${QMAKE_FILE_IN} +module_wrapper_dummy_command.depends = $$WRAPPER_DIR/applib_module_wrapper.cpp +module_wrapper_dummy_command.input = WRAPPED_CLASSES +module_wrapper_dummy_command.dependency_type = TYPE_C +module_wrapper_dummy_command.variable_out = GENERATED_SOURCES + +# Get the path component to the active config build folder +defineReplace(getOutDir) { + out_dir = $$OUT_PWD + CONFIG(release, debug|release): out_dir = $$out_dir/release + else:out_dir = $$out_dir/debug + return($$out_dir) +} + +# Create hardlinks to the PySide2 shared libraries, so the example can be executed without manually +# setting the PATH. +win32 { + out_dir = $$getOutDir() + # no_link tell not to link to the output files, target_predeps forces the command to actually + # execute, explicit_dependencies is a magic value that tells qmake not to run the commands + # if the output files already exist. + hard_link_libraries.CONFIG = no_link target_predeps explicit_dependencies + hard_link_libraries.output = $$out_dir/${QMAKE_FILE_BASE}${QMAKE_FILE_EXT} + hard_link_libraries.commands = mklink /H $$shell_path($$out_dir/${QMAKE_FILE_BASE}${QMAKE_FILE_EXT}) $$shell_path(${QMAKE_FILE_IN}) + hard_link_libraries.input = PYSIDE2_SHARED_LIBRARIES SHIBOKEN2_SHARED_LIBRARIES +} + +QMAKE_EXTRA_COMPILERS += shiboken module_wrapper_dummy_command +win32:QMAKE_EXTRA_COMPILERS += hard_link_libraries + +INCLUDEPATH += $$WRAPPER_DIR + +for(i, PYSIDE2_INCLUDE) { + INCLUDEPATH += $$i/QtWidgets $$i/QtGui $$i/QtCore +} + +SOURCES += \ + main.cpp \ + mainwindow.cpp \ + pythonutils.cpp + +HEADERS += \ + mainwindow.h \ + pythonutils.h + +OTHER_FILES += $$TYPESYSTEM_FILE $$WRAPPED_HEADER pyside2_config.py README.md diff --git a/venv/Lib/site-packages/PySide2/examples/scriptableapplication/scriptableapplication.xml b/venv/Lib/site-packages/PySide2/examples/scriptableapplication/scriptableapplication.xml new file mode 100644 index 0000000..7ef2e9f --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/scriptableapplication/scriptableapplication.xml @@ -0,0 +1,56 @@ + + + + + + diff --git a/venv/Lib/site-packages/PySide2/examples/scriptableapplication/wrappedclasses.h b/venv/Lib/site-packages/PySide2/examples/scriptableapplication/wrappedclasses.h new file mode 100644 index 0000000..d766142 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/scriptableapplication/wrappedclasses.h @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt for Python examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef WRAPPEDCLASSES_H +#define WRAPPEDCLASSES_H + +#include + +#endif // WRAPPEDCLASSES_H diff --git a/venv/Lib/site-packages/PySide2/examples/sql/books/__pycache__/bookdelegate.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/sql/books/__pycache__/bookdelegate.cpython-310.pyc new file mode 100644 index 0000000..dc03f95 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/sql/books/__pycache__/bookdelegate.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/sql/books/__pycache__/bookwindow.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/sql/books/__pycache__/bookwindow.cpython-310.pyc new file mode 100644 index 0000000..e3bd1c7 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/sql/books/__pycache__/bookwindow.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/sql/books/__pycache__/createdb.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/sql/books/__pycache__/createdb.cpython-310.pyc new file mode 100644 index 0000000..ee95416 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/sql/books/__pycache__/createdb.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/sql/books/__pycache__/main.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/sql/books/__pycache__/main.cpython-310.pyc new file mode 100644 index 0000000..df3c752 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/sql/books/__pycache__/main.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/sql/books/__pycache__/rc_books.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/sql/books/__pycache__/rc_books.cpython-310.pyc new file mode 100644 index 0000000..0411078 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/sql/books/__pycache__/rc_books.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/sql/books/__pycache__/ui_bookwindow.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/sql/books/__pycache__/ui_bookwindow.cpython-310.pyc new file mode 100644 index 0000000..564c602 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/sql/books/__pycache__/ui_bookwindow.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/sql/books/bookdelegate.py b/venv/Lib/site-packages/PySide2/examples/sql/books/bookdelegate.py new file mode 100644 index 0000000..f7e219a --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/sql/books/bookdelegate.py @@ -0,0 +1,133 @@ +############################################################################# +## +## Copyright (C) 2019 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +import copy +from PySide2.QtSql import QSqlRelationalDelegate +from PySide2.QtWidgets import QSpinBox, QStyle +from PySide2.QtGui import QPixmap, QPalette +from PySide2.QtCore import QEvent, QSize, Qt + + +class BookDelegate(QSqlRelationalDelegate): + """Books delegate to rate the books""" + + def __init__(self, parent=None): + QSqlRelationalDelegate.__init__(self, parent) + self.star = QPixmap(":/images/star.png") + + def paint(self, painter, option, index): + """ Paint the items in the table. + + If the item referred to by is a StarRating, we + handle the painting ourselves. For the other items, we + let the base class handle the painting as usual. + + In a polished application, we'd use a better check than + the column number to find out if we needed to paint the + stars, but it works for the purposes of this example. + """ + if index.column() != 5: + # Since we draw the grid ourselves: + opt = copy.copy(option) + opt.rect = option.rect.adjusted(0, 0, -1, -1) + QSqlRelationalDelegate.paint(self, painter, opt, index) + else: + model = index.model() + if option.state & QStyle.State_Enabled: + if option.state & QStyle.State_Active: + color_group = QPalette.Normal + else: + color_group = QPalette.Inactive + else: + color_group = QPalette.Disabled + + if option.state & QStyle.State_Selected: + painter.fillRect(option.rect, + option.palette.color(color_group, QPalette.Highlight)) + rating = model.data(index, Qt.DisplayRole) + width = self.star.width() + height = self.star.height() + x = option.rect.x() + y = option.rect.y() + (option.rect.height() / 2) - (height / 2) + for i in range(rating): + painter.drawPixmap(x, y, self.star) + x += width + + # Since we draw the grid ourselves: + self.drawFocus(painter, option, option.rect.adjusted(0, 0, -1, -1)) + + pen = painter.pen() + painter.setPen(option.palette.color(QPalette.Mid)) + painter.drawLine(option.rect.bottomLeft(), option.rect.bottomRight()) + painter.drawLine(option.rect.topRight(), option.rect.bottomRight()) + painter.setPen(pen) + + def sizeHint(self, option, index): + """ Returns the size needed to display the item in a QSize object. """ + if index.column() == 5: + size_hint = QSize(5 * self.star.width(), self.star.height()) + QSize(1, 1) + return size_hint + # Since we draw the grid ourselves: + return QSqlRelationalDelegate.sizeHint(self, option, index) + QSize(1, 1) + + def editorEvent(self, event, model, option, index): + if index.column() != 5: + return False + + if event.type() == QEvent.MouseButtonPress: + mouse_pos = event.pos() + new_stars = int(0.7 + (mouse_pos.x() - option.rect.x()) / self.star.width()) + stars = max(0, min(new_stars, 5)) + model.setData(index, stars) + # So that the selection can change + return False + + return True + + def createEditor(self, parent, option, index): + if index.column() != 4: + return QSqlRelationalDelegate.createEditor(self, parent, option, index) + + # For editing the year, return a spinbox with a range from -1000 to 2100. + spinbox = QSpinBox(parent) + spinbox.setFrame(False) + spinbox.setMaximum(2100) + spinbox.setMinimum(-1000) + return spinbox diff --git a/venv/Lib/site-packages/PySide2/examples/sql/books/books.pyproject b/venv/Lib/site-packages/PySide2/examples/sql/books/books.pyproject new file mode 100644 index 0000000..44a1ef2 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/sql/books/books.pyproject @@ -0,0 +1,5 @@ +{ + "files": ["main.py", "bookdelegate.py", "bookwindow.py", + "createdb.py", "books.qrc", "bookwindow.ui", + "images/star.png"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/sql/books/books.qrc b/venv/Lib/site-packages/PySide2/examples/sql/books/books.qrc new file mode 100644 index 0000000..d6ad213 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/sql/books/books.qrc @@ -0,0 +1,5 @@ + + + images/star.png + + diff --git a/venv/Lib/site-packages/PySide2/examples/sql/books/bookwindow.py b/venv/Lib/site-packages/PySide2/examples/sql/books/bookwindow.py new file mode 100644 index 0000000..31d2a05 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/sql/books/bookwindow.py @@ -0,0 +1,137 @@ +############################################################################# +## +## Copyright (C) 2019 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from __future__ import print_function, absolute_import + +from PySide2.QtWidgets import (QAbstractItemView, QDataWidgetMapper, + QHeaderView, QMainWindow, QMessageBox) +from PySide2.QtGui import QKeySequence +from PySide2.QtSql import QSqlRelation, QSqlRelationalTableModel, QSqlTableModel +from PySide2.QtCore import Qt, Slot +import createdb +from ui_bookwindow import Ui_BookWindow +from bookdelegate import BookDelegate + + +class BookWindow(QMainWindow, Ui_BookWindow): + """A window to show the books available""" + + def __init__(self): + QMainWindow.__init__(self) + self.setupUi(self) + + #Initialize db + createdb.init_db() + + model = QSqlRelationalTableModel(self.bookTable) + model.setEditStrategy(QSqlTableModel.OnManualSubmit) + model.setTable("books") + + # Remember the indexes of the columns: + author_idx = model.fieldIndex("author") + genre_idx = model.fieldIndex("genre") + + # Set the relations to the other database tables: + model.setRelation(author_idx, QSqlRelation("authors", "id", "name")) + model.setRelation(genre_idx, QSqlRelation("genres", "id", "name")) + + # Set the localized header captions: + model.setHeaderData(author_idx, Qt.Horizontal, self.tr("Author Name")) + model.setHeaderData(genre_idx, Qt.Horizontal, self.tr("Genre")) + model.setHeaderData(model.fieldIndex("title"), Qt.Horizontal, self.tr("Title")) + model.setHeaderData(model.fieldIndex("year"), Qt.Horizontal, self.tr("Year")) + model.setHeaderData(model.fieldIndex("rating"), Qt.Horizontal, self.tr("Rating")) + + if not model.select(): + print(model.lastError()) + + # Set the model and hide the ID column: + self.bookTable.setModel(model) + self.bookTable.setItemDelegate(BookDelegate(self.bookTable)) + self.bookTable.setColumnHidden(model.fieldIndex("id"), True) + self.bookTable.setSelectionMode(QAbstractItemView.SingleSelection) + + # Initialize the Author combo box: + self.authorEdit.setModel(model.relationModel(author_idx)) + self.authorEdit.setModelColumn(model.relationModel(author_idx).fieldIndex("name")) + + self.genreEdit.setModel(model.relationModel(genre_idx)) + self.genreEdit.setModelColumn(model.relationModel(genre_idx).fieldIndex("name")) + + # Lock and prohibit resizing of the width of the rating column: + self.bookTable.horizontalHeader().setSectionResizeMode(model.fieldIndex("rating"), + QHeaderView.ResizeToContents) + + mapper = QDataWidgetMapper(self) + mapper.setModel(model) + mapper.setItemDelegate(BookDelegate(self)) + mapper.addMapping(self.titleEdit, model.fieldIndex("title")) + mapper.addMapping(self.yearEdit, model.fieldIndex("year")) + mapper.addMapping(self.authorEdit, author_idx) + mapper.addMapping(self.genreEdit, genre_idx) + mapper.addMapping(self.ratingEdit, model.fieldIndex("rating")) + + selection_model = self.bookTable.selectionModel() + selection_model.currentRowChanged.connect(mapper.setCurrentModelIndex) + + self.bookTable.setCurrentIndex(model.index(0, 0)) + self.create_menubar() + + def showError(err): + QMessageBox.critical(self, "Unable to initialize Database", + "Error initializing database: " + err.text()) + + def create_menubar(self): + file_menu = self.menuBar().addMenu(self.tr("&File")) + quit_action = file_menu.addAction(self.tr("&Quit")) + quit_action.triggered.connect(qApp.quit) + + help_menu = self.menuBar().addMenu(self.tr("&Help")) + about_action = help_menu.addAction(self.tr("&About")) + about_action.setShortcut(QKeySequence.HelpContents) + about_action.triggered.connect(self.about) + aboutQt_action = help_menu.addAction("&About Qt") + aboutQt_action.triggered.connect(qApp.aboutQt) + + @Slot() + def about(self): + QMessageBox.about(self, self.tr("About Books"), + self.tr("

The Books example shows how to use Qt SQL classes " + "with a model/view framework.")) diff --git a/venv/Lib/site-packages/PySide2/examples/sql/books/bookwindow.ui b/venv/Lib/site-packages/PySide2/examples/sql/books/bookwindow.ui new file mode 100644 index 0000000..ce8f9f9 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/sql/books/bookwindow.ui @@ -0,0 +1,164 @@ + + + BookWindow + + + + 0 + 0 + 601 + 420 + + + + Books + + + + + 6 + + + 9 + + + 9 + + + 9 + + + 9 + + + + + + + + + 6 + + + 9 + + + 9 + + + 9 + + + 9 + + + + + QAbstractItemView::SelectRows + + + + + + + Details + + + + + + <b>Title:</b> + + + + + + + true + + + + + + + <b>Author: </b> + + + + + + + true + + + + + + + <b>Genre:</b> + + + + + + + true + + + + + + + <b>Year:</b> + + + + + + + true + + + + + + -1000 + + + 2100 + + + + + + + <b>Rating:</b> + + + + + + + 5 + + + + + + + + + + + + + + bookTable + titleEdit + authorEdit + genreEdit + yearEdit + + + + diff --git a/venv/Lib/site-packages/PySide2/examples/sql/books/createdb.py b/venv/Lib/site-packages/PySide2/examples/sql/books/createdb.py new file mode 100644 index 0000000..f8739b4 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/sql/books/createdb.py @@ -0,0 +1,130 @@ +############################################################################# +## +## Copyright (C) 2019 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2.QtSql import QSqlDatabase, QSqlQuery +from datetime import date + +def add_book(q, title, year, authorId, genreId, rating): + q.addBindValue(title) + q.addBindValue(year) + q.addBindValue(authorId) + q.addBindValue(genreId) + q.addBindValue(rating) + q.exec_() + + +def add_genre(q, name): + q.addBindValue(name) + q.exec_() + return q.lastInsertId() + + +def add_author(q, name, birthdate): + q.addBindValue(name) + q.addBindValue(str(birthdate)) + q.exec_() + return q.lastInsertId() + +BOOKS_SQL = """ + create table books(id integer primary key, title varchar, author integer, + genre integer, year integer, rating integer) + """ +AUTHORS_SQL = """ + create table authors(id integer primary key, name varchar, birthdate text) + """ +GENRES_SQL = """ + create table genres(id integer primary key, name varchar) + """ +INSERT_AUTHOR_SQL = """ + insert into authors(name, birthdate) values(?, ?) + """ +INSERT_GENRE_SQL = """ + insert into genres(name) values(?) + """ +INSERT_BOOK_SQL = """ + insert into books(title, year, author, genre, rating) + values(?, ?, ?, ?, ?) + """ + +def init_db(): + """ + init_db() + Initializes the database. + If tables "books" and "authors" are already in the database, do nothing. + Return value: None or raises ValueError + The error value is the QtSql error instance. + """ + def check(func, *args): + if not func(*args): + raise ValueError(func.__self__.lastError()) + db = QSqlDatabase.addDatabase("QSQLITE") + db.setDatabaseName(":memory:") + + check(db.open) + + q = QSqlQuery() + check(q.exec_, BOOKS_SQL) + check(q.exec_, AUTHORS_SQL) + check(q.exec_, GENRES_SQL) + check(q.prepare, INSERT_AUTHOR_SQL) + + asimovId = add_author(q, "Isaac Asimov", date(1920, 2, 1)) + greeneId = add_author(q, "Graham Greene", date(1904, 10, 2)) + pratchettId = add_author(q, "Terry Pratchett", date(1948, 4, 28)) + + check(q.prepare,INSERT_GENRE_SQL) + sfiction = add_genre(q, "Science Fiction") + fiction = add_genre(q, "Fiction") + fantasy = add_genre(q, "Fantasy") + + check(q.prepare,INSERT_BOOK_SQL) + add_book(q, "Foundation", 1951, asimovId, sfiction, 3) + add_book(q, "Foundation and Empire", 1952, asimovId, sfiction, 4) + add_book(q, "Second Foundation", 1953, asimovId, sfiction, 3) + add_book(q, "Foundation's Edge", 1982, asimovId, sfiction, 3) + add_book(q, "Foundation and Earth", 1986, asimovId, sfiction, 4) + add_book(q, "Prelude to Foundation", 1988, asimovId, sfiction, 3) + add_book(q, "Forward the Foundation", 1993, asimovId, sfiction, 3) + add_book(q, "The Power and the Glory", 1940, greeneId, fiction, 4) + add_book(q, "The Third Man", 1950, greeneId, fiction, 5) + add_book(q, "Our Man in Havana", 1958, greeneId, fiction, 4) + add_book(q, "Guards! Guards!", 1989, pratchettId, fantasy, 3) + add_book(q, "Night Watch", 2002, pratchettId, fantasy, 3) + add_book(q, "Going Postal", 2004, pratchettId, fantasy, 3) diff --git a/venv/Lib/site-packages/PySide2/examples/sql/books/images/star.png b/venv/Lib/site-packages/PySide2/examples/sql/books/images/star.png new file mode 100644 index 0000000..87f4464 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/sql/books/images/star.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/sql/books/main.py b/venv/Lib/site-packages/PySide2/examples/sql/books/main.py new file mode 100644 index 0000000..50d2c0d --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/sql/books/main.py @@ -0,0 +1,53 @@ +############################################################################# +## +## Copyright (C) 2019 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +import sys +from PySide2.QtWidgets import QApplication +from bookwindow import BookWindow +import rc_books + +if __name__ == "__main__": + app = QApplication([]) + + window = BookWindow() + window.resize(800, 600) + window.show() + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/sql/books/rc_books.py b/venv/Lib/site-packages/PySide2/examples/sql/books/rc_books.py new file mode 100644 index 0000000..6f2cbbe --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/sql/books/rc_books.py @@ -0,0 +1,88 @@ +# Resource object code (Python 3) +# Created by: object code +# Created by: The Resource Compiler for Qt version 5.14.0 +# WARNING! All changes made in this file will be lost! + +from PySide2 import QtCore + +qt_resource_data = b"\ +\x00\x00\x03\x0e\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xffa\ +\x00\x00\x00\x09pHYs\x00\x00\x0b\x11\x00\x00\x0b\x11\ +\x01\x7fd_\x91\x00\x00\x00\x07tIME\x07\xd4\x09\ +\x03\x12\x11\x08\x18~\xe5:\x00\x00\x00\x06bKGD\ +\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\x02\x9bID\ +AT8\xcbc\x98:c\x1e#:\xe6\xe5d\xcf\x17\ +\x12\x12\x16\xc4&\x87\x8e\x19\xb0\x09v\xc6\x18\xb7x\xea\ +\x8b\xcd\x9c=o\x09i\x06,X4\x8f\xf1\xd2\xa5\x99\ +L\xb9\xa1\x16\xc5\xc7\xbb\xed\xff\x0a\xf2\xb2;M\x9f\xb5\ +\x908\x03\x16,\x9a\xcb\xf8\xe0\xde\x04\x96\xc7\x0f\xdby\ +\xe7MO\xc8\xfbv\xbf\xe5\xff\xb4\x0a\x9b\x9by\x851\ +\xdc\xd3g-\x82k\x983\x7f)\xe3l F1`\ +\xca\xf4y\x8c\xd7\xaeMg\x02i~\xf2\xa8Y\xe1\xd2\ +\xa5\xfa\xdc_\x9f7\xfd\xffx\xbf\xea\x7fE\x96m\x97\ +\x81\x81>'33\x8b\xa5\x9e8gi\xb8\x9e\xc0f\ +&&\xa6D\x14\x03&N\x9d\xc7x\xef\xdeD\x96'\ +\x0f[E\x9f>j\xd6\xbdu\xb3\x22\xef\xd7\xb7=\xff\ +\xbe\x7f\xe8\xfb\x7f~S\xcc\xef\x05\xc5\xea\x9fNOQ\ +\xfb\x7f\xbaM\xed\xbf\x87\x1a\xefn5-\x1dV\x14\x03\ +f\xcf[\xce\xa8\xa4\xa9![W\xed\x9b}\xefJ\xcb\ +\xcew\xaf&\x7f\xfa\xfee\xc9\xff\xef\x1f\xfa\xff\xbf\xbf\ +\x95\xf2\xff\xc9^\x83\xffW\x17\xaa\xfdot\x12{\xc4\ +\xc7\xc7/\x8e\x12\x06Y\xb9\x85\xcc\xb2\x82\x1c\xf3\xa7D\ +\xab\xfe\xfa\xbe%\xe2\xff\x8fgm\xff\x7f|\x9a\x08\xd6\ +\xfc\xf5Y\xcd\xff\xd7\xe7\xfc\xfe\xdf\xde\xa0\xf5\x7fE\x94\ +\xecO\x16\x16V\xebi3\xe7\xa3\x06\xe2\xe4is\x18\ +\xe7/Z\xc1\xc8\xce\xc1i\x10\xe5\xa8\xd2\xbe\xa6\xcd\xe7\ +\xf6\xc3m\x99\xff~^(\xf8\xff\xe1j\xe0\xff\x17G\ +L\xff\xdf\xdf\xae\xf6\xbf\xc2]\xf4\xba\x9a\x9a\x06\x1bF\ +,\x00\x01#2\xe6\xe6\xe6`Q\xd6\x941_\xde\xe4\ +q\xfb\xc3y\xd3\xff\x1b\x8aT\xff\xbf?`\xff\xff\xdc\ +l\xe5\xff\xea\xc2\x1c9\xd3g-\xc0i\x00\x13\x10\x8b\ +\x03\xb1?\x10\xe7\xf5\x16\xd8\xde\xf8p\xc6\xe4\xbf\x9d<\ +\xf7t\x7fC\xe9\x95\xb7\x96\xd9\xff\x9b\x9c,\xfdN@\ +@H\x14\x9b\x01LP,\x06\xc4\x19@|\x22;\xca\ +\xf0\xe7\xe9\xf9\x06\xff\x81\xec\x03@\xbc^\x82\x9f\xf3\xf6\ +\x9e\x1a\xf3_az\x823P\xd2\x01T#3\x10\x0b\ +\x00\xb1\x1e\x10\x17\x03\xf1\xd1\xa8@\xdd\x9f\xad\x09J \ +\x03\xfe\x00\xf17 >\x0f\xb4kf\xb9\xa7\xea\x0d}\ +i>#d\x03\xb4\x808\x08\x88k\x81x\x09\xd4\xc6\ +\x1b\x11a\x06\xdf\xec\x94\xb8\xdf\x03\xd9;\x81x\x1a\x10\ +\xf7\x82\xd4\xb0\xb2\xb1G\xf9\xda\x99:L\x9d9\x9f\x09\ +f\x80\x0e\x10;\x02\xb1\x13\x10[\x00\xb1\x01\x10\x07\x06\ +{h\x9c\x02\xd2k\xa0\x86\x8b\x001\x17\x10\xf3\x80\xb0\ +\x88\x88(\xcb,hFC\xf6\x02\x08\xb3\x001+\x10\ +K122\xe4\x01i7 \x96\x01b6\xa88\x0b\ +T=cW\xef$\xb0\x01\x00\xceo{\xf5UL\xf0\ +\xac\x00\x00\x00\x00IEND\xaeB`\x82\ +" + +qt_resource_name = b"\ +\x00\x06\ +\x07\x03}\xc3\ +\x00i\ +\x00m\x00a\x00g\x00e\x00s\ +\x00\x08\ +\x0a\x85X\x07\ +\x00s\ +\x00t\x00a\x00r\x00.\x00p\x00n\x00g\ +" + +qt_resource_struct = b"\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x01j\x965\xd3\xea\ +" + +def qInitResources(): + QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +def qCleanupResources(): + QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +qInitResources() diff --git a/venv/Lib/site-packages/PySide2/examples/sql/books/ui_bookwindow.py b/venv/Lib/site-packages/PySide2/examples/sql/books/ui_bookwindow.py new file mode 100644 index 0000000..dc53274 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/sql/books/ui_bookwindow.py @@ -0,0 +1,129 @@ +# -*- coding: utf-8 -*- + +################################################################################ +## Form generated from reading UI file 'bookwindow.ui' +## +## Created by: Qt User Interface Compiler version 5.14.0 +## +## WARNING! All changes made in this file will be lost when recompiling UI file! +################################################################################ + +from PySide2.QtCore import (QCoreApplication, QMetaObject, QObject, QPoint, + QRect, QSize, QUrl, Qt) +from PySide2.QtGui import (QBrush, QColor, QConicalGradient, QFont, + QFontDatabase, QIcon, QLinearGradient, QPalette, QPainter, QPixmap, + QRadialGradient) +from PySide2.QtWidgets import * + +class Ui_BookWindow(object): + def setupUi(self, BookWindow): + if BookWindow.objectName(): + BookWindow.setObjectName(u"BookWindow") + BookWindow.resize(601, 420) + self.centralWidget = QWidget(BookWindow) + self.centralWidget.setObjectName(u"centralWidget") + self.vboxLayout = QVBoxLayout(self.centralWidget) + self.vboxLayout.setSpacing(6) + self.vboxLayout.setObjectName(u"vboxLayout") + self.vboxLayout.setContentsMargins(9, 9, 9, 9) + self.groupBox = QGroupBox(self.centralWidget) + self.groupBox.setObjectName(u"groupBox") + self.vboxLayout1 = QVBoxLayout(self.groupBox) + self.vboxLayout1.setSpacing(6) + self.vboxLayout1.setObjectName(u"vboxLayout1") + self.vboxLayout1.setContentsMargins(9, 9, 9, 9) + self.bookTable = QTableView(self.groupBox) + self.bookTable.setObjectName(u"bookTable") + self.bookTable.setSelectionBehavior(QAbstractItemView.SelectRows) + + self.vboxLayout1.addWidget(self.bookTable) + + self.groupBox_2 = QGroupBox(self.groupBox) + self.groupBox_2.setObjectName(u"groupBox_2") + self.formLayout = QFormLayout(self.groupBox_2) + self.formLayout.setObjectName(u"formLayout") + self.label_5 = QLabel(self.groupBox_2) + self.label_5.setObjectName(u"label_5") + + self.formLayout.setWidget(0, QFormLayout.LabelRole, self.label_5) + + self.titleEdit = QLineEdit(self.groupBox_2) + self.titleEdit.setObjectName(u"titleEdit") + self.titleEdit.setEnabled(True) + + self.formLayout.setWidget(0, QFormLayout.FieldRole, self.titleEdit) + + self.label_2 = QLabel(self.groupBox_2) + self.label_2.setObjectName(u"label_2") + + self.formLayout.setWidget(1, QFormLayout.LabelRole, self.label_2) + + self.authorEdit = QComboBox(self.groupBox_2) + self.authorEdit.setObjectName(u"authorEdit") + self.authorEdit.setEnabled(True) + + self.formLayout.setWidget(1, QFormLayout.FieldRole, self.authorEdit) + + self.label_3 = QLabel(self.groupBox_2) + self.label_3.setObjectName(u"label_3") + + self.formLayout.setWidget(2, QFormLayout.LabelRole, self.label_3) + + self.genreEdit = QComboBox(self.groupBox_2) + self.genreEdit.setObjectName(u"genreEdit") + self.genreEdit.setEnabled(True) + + self.formLayout.setWidget(2, QFormLayout.FieldRole, self.genreEdit) + + self.label_4 = QLabel(self.groupBox_2) + self.label_4.setObjectName(u"label_4") + + self.formLayout.setWidget(3, QFormLayout.LabelRole, self.label_4) + + self.yearEdit = QSpinBox(self.groupBox_2) + self.yearEdit.setObjectName(u"yearEdit") + self.yearEdit.setEnabled(True) + self.yearEdit.setMinimum(-1000) + self.yearEdit.setMaximum(2100) + + self.formLayout.setWidget(3, QFormLayout.FieldRole, self.yearEdit) + + self.label = QLabel(self.groupBox_2) + self.label.setObjectName(u"label") + + self.formLayout.setWidget(4, QFormLayout.LabelRole, self.label) + + self.ratingEdit = QSpinBox(self.groupBox_2) + self.ratingEdit.setObjectName(u"ratingEdit") + self.ratingEdit.setMaximum(5) + + self.formLayout.setWidget(4, QFormLayout.FieldRole, self.ratingEdit) + + + self.vboxLayout1.addWidget(self.groupBox_2) + + + self.vboxLayout.addWidget(self.groupBox) + + BookWindow.setCentralWidget(self.centralWidget) + QWidget.setTabOrder(self.bookTable, self.titleEdit) + QWidget.setTabOrder(self.titleEdit, self.authorEdit) + QWidget.setTabOrder(self.authorEdit, self.genreEdit) + QWidget.setTabOrder(self.genreEdit, self.yearEdit) + + self.retranslateUi(BookWindow) + + QMetaObject.connectSlotsByName(BookWindow) + # setupUi + + def retranslateUi(self, BookWindow): + BookWindow.setWindowTitle(QCoreApplication.translate("BookWindow", u"Books", None)) + self.groupBox.setTitle("") + self.groupBox_2.setTitle(QCoreApplication.translate("BookWindow", u"Details", None)) + self.label_5.setText(QCoreApplication.translate("BookWindow", u"Title:", None)) + self.label_2.setText(QCoreApplication.translate("BookWindow", u"Author: ", None)) + self.label_3.setText(QCoreApplication.translate("BookWindow", u"Genre:", None)) + self.label_4.setText(QCoreApplication.translate("BookWindow", u"Year:", None)) + self.yearEdit.setPrefix("") + self.label.setText(QCoreApplication.translate("BookWindow", u"Rating:", None)) + # retranslateUi diff --git a/venv/Lib/site-packages/PySide2/examples/texttospeech/__pycache__/texttospeech.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/texttospeech/__pycache__/texttospeech.cpython-310.pyc new file mode 100644 index 0000000..0c78efe Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/texttospeech/__pycache__/texttospeech.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/texttospeech/texttospeech.py b/venv/Lib/site-packages/PySide2/examples/texttospeech/texttospeech.py new file mode 100644 index 0000000..f9c32ed --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/texttospeech/texttospeech.py @@ -0,0 +1,107 @@ + +############################################################################# +## +## Copyright (C) 2017 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 QTextToSpeech example""" + +import sys +from PySide2.QtCore import Qt +from PySide2.QtWidgets import (QApplication, QComboBox, QFormLayout, + QHBoxLayout, QLineEdit, QMainWindow, QPushButton, QSlider, QWidget) + +from PySide2.QtTextToSpeech import QTextToSpeech + +class MainWindow(QMainWindow): + def __init__(self): + super(MainWindow, self).__init__() + + centralWidget = QWidget() + self.setCentralWidget(centralWidget) + layout = QFormLayout(centralWidget) + + textLayout = QHBoxLayout() + self.text = QLineEdit('Hello, PySide2') + self.text.setClearButtonEnabled(True) + textLayout.addWidget(self.text) + self.sayButton = QPushButton('Say') + textLayout.addWidget(self.sayButton) + self.text.returnPressed.connect(self.sayButton.animateClick) + self.sayButton.clicked.connect(self.say) + layout.addRow('Text:', textLayout) + + self.voiceCombo = QComboBox() + layout.addRow('Voice:', self.voiceCombo) + + self.volumeSlider = QSlider(Qt.Horizontal) + self.volumeSlider.setMinimum(0) + self.volumeSlider.setMaximum(100) + self.volumeSlider.setValue(100) + layout.addRow('Volume:', self.volumeSlider) + + self.engine = None + engineNames = QTextToSpeech.availableEngines() + if len(engineNames) > 0: + engineName = engineNames[0] + self.engine = QTextToSpeech(engineName) + self.engine.stateChanged.connect(self.stateChanged) + self.setWindowTitle('QTextToSpeech Example ({})'.format(engineName)) + self.voices = [] + for voice in self.engine.availableVoices(): + self.voices.append(voice) + self.voiceCombo.addItem(voice.name()) + else: + self.setWindowTitle('QTextToSpeech Example (no engines available)') + self.sayButton.setEnabled(False) + + def say(self): + self.sayButton.setEnabled(False) + self.engine.setVoice(self.voices[self.voiceCombo.currentIndex()]) + self.engine.setVolume(float(self.volumeSlider.value()) / 100) + self.engine.say(self.text.text()) + + def stateChanged(self, state): + if (state == QTextToSpeech.State.Ready): + self.sayButton.setEnabled(True) + +if __name__ == '__main__': + app = QApplication(sys.argv) + mainWin = MainWindow() + mainWin.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/texttospeech/texttospeech.pyproject b/venv/Lib/site-packages/PySide2/examples/texttospeech/texttospeech.pyproject new file mode 100644 index 0000000..69fc13f --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/texttospeech/texttospeech.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["texttospeech.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t1.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t1.cpython-310.pyc new file mode 100644 index 0000000..3884222 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t1.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t10.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t10.cpython-310.pyc new file mode 100644 index 0000000..dc92f1c Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t10.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t11.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t11.cpython-310.pyc new file mode 100644 index 0000000..03c4b43 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t11.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t12.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t12.cpython-310.pyc new file mode 100644 index 0000000..1c46c21 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t12.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t13.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t13.cpython-310.pyc new file mode 100644 index 0000000..03dbcac Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t13.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t14.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t14.cpython-310.pyc new file mode 100644 index 0000000..ad131e3 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t14.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t2.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t2.cpython-310.pyc new file mode 100644 index 0000000..2f5c6cd Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t2.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t3.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t3.cpython-310.pyc new file mode 100644 index 0000000..8987a1d Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t3.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t4.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t4.cpython-310.pyc new file mode 100644 index 0000000..95f2386 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t4.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t5.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t5.cpython-310.pyc new file mode 100644 index 0000000..038911a Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t5.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t6.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t6.cpython-310.pyc new file mode 100644 index 0000000..193dec3 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t6.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t7.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t7.cpython-310.pyc new file mode 100644 index 0000000..fa3f9c9 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t7.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t8.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t8.cpython-310.pyc new file mode 100644 index 0000000..79eb44c Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t8.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t9.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t9.cpython-310.pyc new file mode 100644 index 0000000..87acb7a Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/tutorial/__pycache__/t9.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/tutorial/t1.py b/venv/Lib/site-packages/PySide2/examples/tutorial/t1.py new file mode 100644 index 0000000..635fbbd --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/tutorial/t1.py @@ -0,0 +1,56 @@ + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +# PySide2 tutorial 1 + + +import sys +from PySide2 import QtWidgets + + +app = QtWidgets.QApplication(sys.argv) + +hello = QtWidgets.QPushButton("Hello world!") +hello.resize(100, 30) + +hello.show() + +sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/tutorial/t10.py b/venv/Lib/site-packages/PySide2/examples/tutorial/t10.py new file mode 100644 index 0000000..12847a0 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/tutorial/t10.py @@ -0,0 +1,191 @@ + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +# PySide2 tutorial 10 + + +import sys +from PySide2 import QtCore, QtGui, QtWidgets + + +class LCDRange(QtWidgets.QWidget): + valueChanged = QtCore.Signal(int) + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) + + lcd = QtWidgets.QLCDNumber(2) + self.slider = QtWidgets.QSlider(QtCore.Qt.Horizontal) + self.slider.setRange(0, 99) + self.slider.setValue(0) + + self.connect(self.slider, QtCore.SIGNAL("valueChanged(int)"), + lcd, QtCore.SLOT("display(int)")) + self.connect(self.slider, QtCore.SIGNAL("valueChanged(int)"), + self, QtCore.SIGNAL("valueChanged(int)")) + + layout = QtWidgets.QVBoxLayout() + layout.addWidget(lcd) + layout.addWidget(self.slider) + self.setLayout(layout) + + self.setFocusProxy(self.slider) + + def value(self): + return self.slider.value() + + @QtCore.Slot(int) + def setValue(self, value): + self.slider.setValue(value) + + def setRange(self, minValue, maxValue): + if minValue < 0 or maxValue > 99 or minValue > maxValue: + QtCore.qWarning("LCDRange::setRange(%d, %d)\n" + "\tRange must be 0..99\n" + "\tand minValue must not be greater than maxValue" % (minValue, maxValue)) + return + + self.slider.setRange(minValue, maxValue) + + +class CannonField(QtWidgets.QWidget): + angleChanged = QtCore.Signal(int) + forceChanged = QtCore.Signal(int) + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) + + self.currentAngle = 45 + self.currentForce = 0 + self.setPalette(QtGui.QPalette(QtGui.QColor(250, 250, 200))) + self.setAutoFillBackground(True) + + def angle(self): + return self.currentAngle + + @QtCore.Slot(int) + def setAngle(self, angle): + if angle < 5: + angle = 5 + if angle > 70: + angle = 70 + if self.currentAngle == angle: + return + self.currentAngle = angle + self.update() + self.emit(QtCore.SIGNAL("angleChanged(int)"), self.currentAngle) + + def force(self): + return self.currentForce + + @QtCore.Slot(int) + def setForce(self, force): + if force < 0: + force = 0 + if self.currentForce == force: + return + self.currentForce = force + self.emit(QtCore.SIGNAL("forceChanged(int)"), self.currentForce) + + def paintEvent(self, event): + painter = QtGui.QPainter(self) + + painter.setPen(QtCore.Qt.NoPen) + painter.setBrush(QtCore.Qt.blue) + + painter.translate(0, self.height()) + painter.drawPie(QtCore.QRect(-35, -35, 70, 70), 0, 90 * 16) + painter.rotate(-self.currentAngle) + painter.drawRect(QtCore.QRect(33, -4, 15, 8)) + + def cannonRect(self): + result = QtCore.QRect(0, 0, 50, 50) + result.moveBottomLeft(self.rect().bottomLect()) + return result + + +class MyWidget(QtWidgets.QWidget): + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) + + quit = QtWidgets.QPushButton("&Quit") + quit.setFont(QtGui.QFont("Times", 18, QtGui.QFont.Bold)) + + self.connect(quit, QtCore.SIGNAL("clicked()"), + qApp, QtCore.SLOT("quit()")) + + angle = LCDRange() + angle.setRange(5, 70) + + force = LCDRange() + force.setRange(10, 50) + + cannonField = CannonField() + + self.connect(angle, QtCore.SIGNAL("valueChanged(int)"), + cannonField.setAngle) + self.connect(cannonField, QtCore.SIGNAL("angleChanged(int)"), + angle.setValue) + + self.connect(force, QtCore.SIGNAL("valueChanged(int)"), + cannonField.setForce) + self.connect(cannonField, QtCore.SIGNAL("forceChanged(int)"), + force.setValue) + + leftLayout = QtWidgets.QVBoxLayout() + leftLayout.addWidget(angle) + leftLayout.addWidget(force) + + gridLayout = QtWidgets.QGridLayout() + gridLayout.addWidget(quit, 0, 0) + gridLayout.addLayout(leftLayout, 1, 0) + gridLayout.addWidget(cannonField, 1, 1, 2, 1) + gridLayout.setColumnStretch(1, 10) + self.setLayout(gridLayout) + + angle.setValue(60) + force.setValue(25) + angle.setFocus() + + +app = QtWidgets.QApplication(sys.argv) +widget = MyWidget() +widget.setGeometry(100, 100, 500, 355) +widget.show() +sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/tutorial/t11.py b/venv/Lib/site-packages/PySide2/examples/tutorial/t11.py new file mode 100644 index 0000000..cc39120 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/tutorial/t11.py @@ -0,0 +1,263 @@ + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +# PySide2 tutorial 11 + + +import sys +import math +from PySide2 import QtCore, QtGui, QtWidgets + + +class LCDRange(QtWidgets.QWidget): + valueChanged = QtCore.Signal(int) + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) + + lcd = QtWidgets.QLCDNumber(2) + self.slider = QtWidgets.QSlider(QtCore.Qt.Horizontal) + self.slider.setRange(0, 99) + self.slider.setValue(0) + + self.connect(self.slider, QtCore.SIGNAL("valueChanged(int)"), + lcd, QtCore.SLOT("display(int)")) + self.connect(self.slider, QtCore.SIGNAL("valueChanged(int)"), + self, QtCore.SIGNAL("valueChanged(int)")) + + layout = QtWidgets.QVBoxLayout() + layout.addWidget(lcd) + layout.addWidget(self.slider) + self.setLayout(layout) + + self.setFocusProxy(self.slider) + + def value(self): + return self.slider.value() + + @QtCore.Slot(int) + def setValue(self, value): + self.slider.setValue(value) + + def setRange(self, minValue, maxValue): + if minValue < 0 or maxValue > 99 or minValue > maxValue: + QtCore.qWarning("LCDRange::setRange(%d, %d)\n" + "\tRange must be 0..99\n" + "\tand minValue must not be greater than maxValue" % (minValue, maxValue)) + return + + self.slider.setRange(minValue, maxValue) + + +class CannonField(QtWidgets.QWidget): + angleChanged = QtCore.Signal(int) + forceChanged = QtCore.Signal(int) + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) + + self.currentAngle = 45 + self.currentForce = 0 + self.timerCount = 0 + self.autoShootTimer = QtCore.QTimer(self) + self.connect(self.autoShootTimer, QtCore.SIGNAL("timeout()"), + self.moveShot) + self.shootAngle = 0 + self.shootForce = 0 + self.setPalette(QtGui.QPalette(QtGui.QColor(250, 250, 200))) + self.setAutoFillBackground(True) + + def angle(self): + return self.currentAngle + + @QtCore.Slot(int) + def setAngle(self, angle): + if angle < 5: + angle = 5 + if angle > 70: + angle = 70 + if self.currentAngle == angle: + return + self.currentAngle = angle + self.update() + self.emit(QtCore.SIGNAL("angleChanged(int)"), self.currentAngle) + + def force(self): + return self.currentForce + + @QtCore.Slot(int) + def setForce(self, force): + if force < 0: + force = 0 + if self.currentForce == force: + return + self.currentForce = force + self.emit(QtCore.SIGNAL("forceChanged(int)"), self.currentForce) + + @QtCore.Slot() + def shoot(self): + if self.autoShootTimer.isActive(): + return + self.timerCount = 0 + self.shootAngle = self.currentAngle + self.shootForce = self.currentForce + self.autoShootTimer.start(5) + + @QtCore.Slot() + def moveShot(self): + region = QtGui.QRegion(self.shotRect()) + self.timerCount += 1 + + shotR = self.shotRect() + + if shotR.x() > self.width() or shotR.y() > self.height(): + self.autoShootTimer.stop() + else: + region = region.united(QtGui.QRegion(shotR)) + + self.update(region) + + def paintEvent(self, event): + painter = QtGui.QPainter(self) + + self.paintCannon(painter) + if self.autoShootTimer.isActive(): + self.paintShot(painter) + + def paintShot(self, painter): + painter.setPen(QtCore.Qt.NoPen) + painter.setBrush(QtCore.Qt.black) + painter.drawRect(self.shotRect()) + + barrelRect = QtCore.QRect(33, -4, 15, 8) + + def paintCannon(self, painter): + painter.setPen(QtCore.Qt.NoPen) + painter.setBrush(QtCore.Qt.blue) + + painter.save() + painter.translate(0, self.height()) + painter.drawPie(QtCore.QRect(-35, -35, 70, 70), 0, 90 * 16) + painter.rotate(-self.currentAngle) + painter.drawRect(CannonField.barrelRect) + painter.restore() + + def cannonRect(self): + result = QtCore.QRect(0, 0, 50, 50) + result.moveBottomLeft(self.rect().bottomLect()) + return result + + def shotRect(self): + gravity = 4.0 + + time = self.timerCount / 40.0 + velocity = self.shootForce + radians = self.shootAngle * 3.14159265 / 180 + + velx = velocity * math.cos(radians) + vely = velocity * math.sin(radians) + x0 = (CannonField.barrelRect.right() + 5) * math.cos(radians) + y0 = (CannonField.barrelRect.right() + 5) * math.sin(radians) + x = x0 + velx * time + y = y0 + vely * time - 0.5 * gravity * time * time + + result = QtCore.QRect(0, 0, 6, 6) + result.moveCenter(QtCore.QPoint(round(x), self.height() - 1 - round(y))) + return result + + +class MyWidget(QtWidgets.QWidget): + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) + + quit = QtWidgets.QPushButton("&Quit") + quit.setFont(QtGui.QFont("Times", 18, QtGui.QFont.Bold)) + + self.connect(quit, QtCore.SIGNAL("clicked()"), + qApp, QtCore.SLOT("quit()")) + + angle = LCDRange() + angle.setRange(5, 70) + + force = LCDRange() + force.setRange(10, 50) + + cannonField = CannonField() + + self.connect(angle, QtCore.SIGNAL("valueChanged(int)"), + cannonField.setAngle) + self.connect(cannonField, QtCore.SIGNAL("angleChanged(int)"), + angle.setValue) + + self.connect(force, QtCore.SIGNAL("valueChanged(int)"), + cannonField.setForce) + self.connect(cannonField, QtCore.SIGNAL("forceChanged(int)"), + force.setValue) + + shoot = QtWidgets.QPushButton("&Shoot") + shoot.setFont(QtGui.QFont("Times", 18, QtGui.QFont.Bold)) + + self.connect(shoot, QtCore.SIGNAL("clicked()"), cannonField.shoot) + + topLayout = QtWidgets.QHBoxLayout() + topLayout.addWidget(shoot) + topLayout.addStretch(1) + + leftLayout = QtWidgets.QVBoxLayout() + leftLayout.addWidget(angle) + leftLayout.addWidget(force) + + gridLayout = QtWidgets.QGridLayout() + gridLayout.addWidget(quit, 0, 0) + gridLayout.addLayout(topLayout, 0, 1) + gridLayout.addLayout(leftLayout, 1, 0) + gridLayout.addWidget(cannonField, 1, 1, 2, 1) + gridLayout.setColumnStretch(1, 10) + self.setLayout(gridLayout) + + angle.setValue(60) + force.setValue(25) + angle.setFocus() + + +app = QtWidgets.QApplication(sys.argv) +widget = MyWidget() +widget.setGeometry(100, 100, 500, 355) +widget.show() +sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/tutorial/t12.py b/venv/Lib/site-packages/PySide2/examples/tutorial/t12.py new file mode 100644 index 0000000..4094529 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/tutorial/t12.py @@ -0,0 +1,312 @@ + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +# PySide2 tutorial 12 + + +import sys +import math +import random +from PySide2 import QtCore, QtGui, QtWidgets + + +class LCDRange(QtWidgets.QWidget): + valueChanged = QtCore.Signal(int) + def __init__(self, text=None, parent=None): + if isinstance(text, QtWidgets.QWidget): + parent = text + text = None + + QtWidgets.QWidget.__init__(self, parent) + + self.init() + + if text: + self.setText(text) + + def init(self): + lcd = QtWidgets.QLCDNumber(2) + self.slider = QtWidgets.QSlider(QtCore.Qt.Horizontal) + self.slider.setRange(0, 99) + self.slider.setValue(0) + self.label = QtWidgets.QLabel() + self.label.setAlignment(QtCore.Qt.AlignHCenter | QtCore.Qt.AlignTop) + + self.connect(self.slider, QtCore.SIGNAL("valueChanged(int)"), + lcd, QtCore.SLOT("display(int)")) + self.connect(self.slider, QtCore.SIGNAL("valueChanged(int)"), + self, QtCore.SIGNAL("valueChanged(int)")) + + layout = QtWidgets.QVBoxLayout() + layout.addWidget(lcd) + layout.addWidget(self.slider) + layout.addWidget(self.label) + self.setLayout(layout) + + self.setFocusProxy(self.slider) + + def value(self): + return self.slider.value() + + @QtCore.Slot(int) + def setValue(self, value): + self.slider.setValue(value) + + def text(self): + return self.label.text() + + def setRange(self, minValue, maxValue): + if minValue < 0 or maxValue > 99 or minValue > maxValue: + QtCore.qWarning("LCDRange::setRange(%d, %d)\n" + "\tRange must be 0..99\n" + "\tand minValue must not be greater than maxValue" % (minValue, maxValue)) + return + + self.slider.setRange(minValue, maxValue) + + def setText(self, text): + self.label.setText(text) + + +class CannonField(QtWidgets.QWidget): + angleChanged = QtCore.Signal(int) + forceChanged = QtCore.Signal(int) + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) + + self.currentAngle = 45 + self.currentForce = 0 + self.timerCount = 0 + self.autoShootTimer = QtCore.QTimer(self) + self.connect(self.autoShootTimer, QtCore.SIGNAL("timeout()"), + self.moveShot) + self.shootAngle = 0 + self.shootForce = 0 + self.target = QtCore.QPoint(0, 0) + self.setPalette(QtGui.QPalette(QtGui.QColor(250, 250, 200))) + self.setAutoFillBackground(True) + self.newTarget() + + def angle(self): + return self.currentAngle + + @QtCore.Slot(int) + def setAngle(self, angle): + if angle < 5: + angle = 5 + if angle > 70: + angle = 70 + if self.currentAngle == angle: + return + self.currentAngle = angle + self.update() + self.emit(QtCore.SIGNAL("angleChanged(int)"), self.currentAngle) + + def force(self): + return self.currentForce + + @QtCore.Slot(int) + def setForce(self, force): + if force < 0: + force = 0 + if self.currentForce == force: + return + self.currentForce = force + self.emit(QtCore.SIGNAL("forceChanged(int)"), self.currentForce) + + @QtCore.Slot() + def shoot(self): + if self.autoShootTimer.isActive(): + return + self.timerCount = 0 + self.shootAngle = self.currentAngle + self.shootForce = self.currentForce + self.autoShootTimer.start(5) + + firstTime = True + + def newTarget(self): + if CannonField.firstTime: + CannonField.firstTime = False + midnight = QtCore.QTime(0, 0, 0) + random.seed(midnight.secsTo(QtCore.QTime.currentTime())) + + self.target = QtCore.QPoint(200 + random.randint(0, 190 - 1), 10 + random.randint(0, 255 - 1)) + self.update() + + @QtCore.Slot() + def moveShot(self): + region = QtGui.QRegion(self.shotRect()) + self.timerCount += 1 + + shotR = self.shotRect() + + if shotR.intersects(self.targetRect()): + self.autoShootTimer.stop() + self.emit(QtCore.SIGNAL("hit()")) + elif shotR.x() > self.width() or shotR.y() > self.height(): + self.autoShootTimer.stop() + self.emit(QtCore.SIGNAL("missed()")) + else: + region = region.united(QtGui.QRegion(shotR)) + + self.update(region) + + def paintEvent(self, event): + painter = QtGui.QPainter(self) + + self.paintCannon(painter) + if self.autoShootTimer.isActive(): + self.paintShot(painter) + + self.paintTarget(painter) + + def paintShot(self, painter): + painter.setPen(QtCore.Qt.NoPen) + painter.setBrush(QtCore.Qt.black) + painter.drawRect(self.shotRect()) + + def paintTarget(self, painter): + painter.setPen(QtCore.Qt.black) + painter.setBrush(QtCore.Qt.red) + painter.drawRect(self.targetRect()) + + barrelRect = QtCore.QRect(33, -4, 15, 8) + + def paintCannon(self, painter): + painter.setPen(QtCore.Qt.NoPen) + painter.setBrush(QtCore.Qt.blue) + + painter.save() + painter.translate(0, self.height()) + painter.drawPie(QtCore.QRect(-35, -35, 70, 70), 0, 90 * 16) + painter.rotate(-self.currentAngle) + painter.drawRect(CannonField.barrelRect) + painter.restore() + + def cannonRect(self): + result = QtCore.QRect(0, 0, 50, 50) + result.moveBottomLeft(self.rect().bottomLect()) + return result + + def shotRect(self): + gravity = 4.0 + + time = self.timerCount / 40.0 + velocity = self.shootForce + radians = self.shootAngle * 3.14159265 / 180 + + velx = velocity * math.cos(radians) + vely = velocity * math.sin(radians) + x0 = (CannonField.barrelRect.right() + 5) * math.cos(radians) + y0 = (CannonField.barrelRect.right() + 5) * math.sin(radians) + x = x0 + velx * time + y = y0 + vely * time - 0.5 * gravity * time * time + + result = QtCore.QRect(0, 0, 6, 6) + result.moveCenter(QtCore.QPoint(round(x), self.height() - 1 - round(y))) + return result + + def targetRect(self): + result = QtCore.QRect(0, 0, 20, 10) + result.moveCenter(QtCore.QPoint(self.target.x(), self.height() - 1 - self.target.y())) + return result + + +class MyWidget(QtWidgets.QWidget): + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) + + quit = QtWidgets.QPushButton("&Quit") + quit.setFont(QtGui.QFont("Times", 18, QtGui.QFont.Bold)) + + self.connect(quit, QtCore.SIGNAL("clicked()"), + qApp, QtCore.SLOT("quit()")) + + angle = LCDRange("ANGLE") + angle.setRange(5, 70) + + force = LCDRange("FORCE") + force.setRange(10, 50) + + cannonField = CannonField() + + self.connect(angle, QtCore.SIGNAL("valueChanged(int)"), + cannonField.setAngle) + self.connect(cannonField, QtCore.SIGNAL("angleChanged(int)"), + angle.setValue) + + self.connect(force, QtCore.SIGNAL("valueChanged(int)"), + cannonField.setForce) + self.connect(cannonField, QtCore.SIGNAL("forceChanged(int)"), + force.setValue) + + shoot = QtWidgets.QPushButton("&Shoot") + shoot.setFont(QtGui.QFont("Times", 18, QtGui.QFont.Bold)) + + self.connect(shoot, QtCore.SIGNAL("clicked()"), cannonField.shoot) + + topLayout = QtWidgets.QHBoxLayout() + topLayout.addWidget(shoot) + topLayout.addStretch(1) + + leftLayout = QtWidgets.QVBoxLayout() + leftLayout.addWidget(angle) + leftLayout.addWidget(force) + + gridLayout = QtWidgets.QGridLayout() + gridLayout.addWidget(quit, 0, 0) + gridLayout.addLayout(topLayout, 0, 1) + gridLayout.addLayout(leftLayout, 1, 0) + gridLayout.addWidget(cannonField, 1, 1, 2, 1) + gridLayout.setColumnStretch(1, 10) + self.setLayout(gridLayout) + + angle.setValue(60) + force.setValue(25) + angle.setFocus() + + +app = QtWidgets.QApplication(sys.argv) +widget = MyWidget() +widget.setGeometry(100, 100, 500, 355) +widget.show() +sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/tutorial/t13.py b/venv/Lib/site-packages/PySide2/examples/tutorial/t13.py new file mode 100644 index 0000000..5198bb4 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/tutorial/t13.py @@ -0,0 +1,395 @@ + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +# PySide2 tutorial 13 + + +import sys +import math +import random +from PySide2 import QtCore, QtGui, QtWidgets + + +class LCDRange(QtWidgets.QWidget): + valueChanged = QtCore.Signal(int) + def __init__(self, text=None, parent=None): + if isinstance(text, QtWidgets.QWidget): + parent = text + text = None + + QtWidgets.QWidget.__init__(self, parent) + + self.init() + + if text: + self.setText(text) + + def init(self): + lcd = QtWidgets.QLCDNumber(2) + self.slider = QtWidgets.QSlider(QtCore.Qt.Horizontal) + self.slider.setRange(0, 99) + self.slider.setValue(0) + self.label = QtWidgets.QLabel() + self.label.setAlignment(QtCore.Qt.AlignHCenter | QtCore.Qt.AlignTop) + self.label.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) + + self.connect(self.slider, QtCore.SIGNAL("valueChanged(int)"), + lcd, QtCore.SLOT("display(int)")) + self.connect(self.slider, QtCore.SIGNAL("valueChanged(int)"), + self, QtCore.SIGNAL("valueChanged(int)")) + + layout = QtWidgets.QVBoxLayout() + layout.addWidget(lcd) + layout.addWidget(self.slider) + layout.addWidget(self.label) + self.setLayout(layout) + + self.setFocusProxy(self.slider) + + def value(self): + return self.slider.value() + + @QtCore.Slot(int) + def setValue(self, value): + self.slider.setValue(value) + + def text(self): + return self.label.text() + + def setRange(self, minValue, maxValue): + if minValue < 0 or maxValue > 99 or minValue > maxValue: + QtCore.qWarning("LCDRange::setRange(%d, %d)\n" + "\tRange must be 0..99\n" + "\tand minValue must not be greater than maxValue" % (minValue, maxValue)) + return + + self.slider.setRange(minValue, maxValue) + + def setText(self, text): + self.label.setText(text) + + +class CannonField(QtWidgets.QWidget): + angleChanged = QtCore.Signal(int) + forceChanged = QtCore.Signal(int) + hit = QtCore.Signal() + missed = QtCore.Signal() + canShoot = QtCore.Signal(bool) + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) + + self.currentAngle = 45 + self.currentForce = 0 + self.timerCount = 0 + self.autoShootTimer = QtCore.QTimer(self) + self.connect(self.autoShootTimer, QtCore.SIGNAL("timeout()"), + self.moveShot) + self.shootAngle = 0 + self.shootForce = 0 + self.target = QtCore.QPoint(0, 0) + self.gameEnded = False + self.setPalette(QtGui.QPalette(QtGui.QColor(250, 250, 200))) + self.setAutoFillBackground(True) + self.newTarget() + + def angle(self): + return self.currentAngle + + @QtCore.Slot(int) + def setAngle(self, angle): + if angle < 5: + angle = 5 + if angle > 70: + angle = 70 + if self.currentAngle == angle: + return + self.currentAngle = angle + self.update() + self.emit(QtCore.SIGNAL("angleChanged(int)"), self.currentAngle) + + def force(self): + return self.currentForce + + @QtCore.Slot(int) + def setForce(self, force): + if force < 0: + force = 0 + if self.currentForce == force: + return + self.currentForce = force + self.emit(QtCore.SIGNAL("forceChanged(int)"), self.currentForce) + + @QtCore.Slot() + def shoot(self): + if self.isShooting(): + return + self.timerCount = 0 + self.shootAngle = self.currentAngle + self.shootForce = self.currentForce + self.autoShootTimer.start(5) + self.emit(QtCore.SIGNAL("canShoot(bool)"), False) + + firstTime = True + + def newTarget(self): + if CannonField.firstTime: + CannonField.firstTime = False + midnight = QtCore.QTime(0, 0, 0) + random.seed(midnight.secsTo(QtCore.QTime.currentTime())) + + self.target = QtCore.QPoint(200 + random.randint(0, 190 - 1), 10 + random.randint(0, 255 - 1)) + self.update() + + def setGameOver(self): + if self.gameEnded: + return + if self.isShooting(): + self.autoShootTimer.stop() + self.gameEnded = True + self.update() + + def restartGame(self): + if self.isShooting(): + self.autoShootTimer.stop() + self.gameEnded = False + self.update() + self.emit(QtCore.SIGNAL("canShoot(bool)"), True) + + @QtCore.Slot() + def moveShot(self): + region = QtGui.QRegion(self.shotRect()) + self.timerCount += 1 + + shotR = self.shotRect() + + if shotR.intersects(self.targetRect()): + self.autoShootTimer.stop() + self.emit(QtCore.SIGNAL("hit()")) + self.emit(QtCore.SIGNAL("canShoot(bool)"), True) + elif shotR.x() > self.width() or shotR.y() > self.height(): + self.autoShootTimer.stop() + self.emit(QtCore.SIGNAL("missed()")) + self.emit(QtCore.SIGNAL("canShoot(bool)"), True) + else: + region = region.united(QtGui.QRegion(shotR)) + + self.update(region) + + def paintEvent(self, event): + painter = QtGui.QPainter(self) + + if self.gameEnded: + painter.setPen(QtCore.Qt.black) + painter.setFont(QtGui.QFont("Courier", 48, QtGui.QFont.Bold)) + painter.drawText(self.rect(), QtCore.Qt.AlignCenter, "Game Over") + + self.paintCannon(painter) + if self.isShooting(): + self.paintShot(painter) + if not self.gameEnded: + self.paintTarget(painter) + + def paintShot(self, painter): + painter.setPen(QtCore.Qt.NoPen) + painter.setBrush(QtCore.Qt.black) + painter.drawRect(self.shotRect()) + + def paintTarget(self, painter): + painter.setPen(QtCore.Qt.black) + painter.setBrush(QtCore.Qt.red) + painter.drawRect(self.targetRect()) + + barrelRect = QtCore.QRect(33, -4, 15, 8) + + def paintCannon(self, painter): + painter.setPen(QtCore.Qt.NoPen) + painter.setBrush(QtCore.Qt.blue) + + painter.save() + painter.translate(0, self.height()) + painter.drawPie(QtCore.QRect(-35, -35, 70, 70), 0, 90 * 16) + painter.rotate(-self.currentAngle) + painter.drawRect(CannonField.barrelRect) + painter.restore() + + def cannonRect(self): + result = QtCore.QRect(0, 0, 50, 50) + result.moveBottomLeft(self.rect().bottomLect()) + return result + + def shotRect(self): + gravity = 4.0 + + time = self.timerCount / 40.0 + velocity = self.shootForce + radians = self.shootAngle * 3.14159265 / 180 + + velx = velocity * math.cos(radians) + vely = velocity * math.sin(radians) + x0 = (CannonField.barrelRect.right() + 5) * math.cos(radians) + y0 = (CannonField.barrelRect.right() + 5) * math.sin(radians) + x = x0 + velx * time + y = y0 + vely * time - 0.5 * gravity * time * time + + result = QtCore.QRect(0, 0, 6, 6) + result.moveCenter(QtCore.QPoint(round(x), self.height() - 1 - round(y))) + return result + + def targetRect(self): + result = QtCore.QRect(0, 0, 20, 10) + result.moveCenter(QtCore.QPoint(self.target.x(), self.height() - 1 - self.target.y())) + return result + + def gameOver(self): + return self.gameEnded + + def isShooting(self): + return self.autoShootTimer.isActive() + + +class GameBoard(QtWidgets.QWidget): + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) + + quit = QtWidgets.QPushButton("&Quit") + quit.setFont(QtGui.QFont("Times", 18, QtGui.QFont.Bold)) + + self.connect(quit, QtCore.SIGNAL("clicked()"), + qApp, QtCore.SLOT("quit()")) + + angle = LCDRange("ANGLE") + angle.setRange(5, 70) + + force = LCDRange("FORCE") + force.setRange(10, 50) + + self.cannonField = CannonField() + + self.connect(angle, QtCore.SIGNAL("valueChanged(int)"), + self.cannonField.setAngle) + self.connect(self.cannonField, QtCore.SIGNAL("angleChanged(int)"), + angle.setValue) + + self.connect(force, QtCore.SIGNAL("valueChanged(int)"), + self.cannonField.setForce) + self.connect(self.cannonField, QtCore.SIGNAL("forceChanged(int)"), + force.setValue) + + self.connect(self.cannonField, QtCore.SIGNAL("hit()"), self.hit) + self.connect(self.cannonField, QtCore.SIGNAL("missed()"), self.missed) + + shoot = QtWidgets.QPushButton("&Shoot") + shoot.setFont(QtGui.QFont("Times", 18, QtGui.QFont.Bold)) + + self.connect(shoot, QtCore.SIGNAL("clicked()"), self.fire) + self.connect(self.cannonField, QtCore.SIGNAL("canShoot(bool)"), + shoot, QtCore.SLOT("setEnabled(bool)")) + + restart = QtWidgets.QPushButton("&New Game") + restart.setFont(QtGui.QFont("Times", 18, QtGui.QFont.Bold)) + + self.connect(restart, QtCore.SIGNAL("clicked()"), self.newGame) + + self.hits = QtWidgets.QLCDNumber(2) + self.shotsLeft = QtWidgets.QLCDNumber(2) + hitsLabel = QtWidgets.QLabel("HITS") + shotsLeftLabel = QtWidgets.QLabel("SHOTS LEFT") + + topLayout = QtWidgets.QHBoxLayout() + topLayout.addWidget(shoot) + topLayout.addWidget(self.hits) + topLayout.addWidget(hitsLabel) + topLayout.addWidget(self.shotsLeft) + topLayout.addWidget(shotsLeftLabel) + topLayout.addStretch(1) + topLayout.addWidget(restart) + + leftLayout = QtWidgets.QVBoxLayout() + leftLayout.addWidget(angle) + leftLayout.addWidget(force) + + gridLayout = QtWidgets.QGridLayout() + gridLayout.addWidget(quit, 0, 0) + gridLayout.addLayout(topLayout, 0, 1) + gridLayout.addLayout(leftLayout, 1, 0) + gridLayout.addWidget(self.cannonField, 1, 1, 2, 1) + gridLayout.setColumnStretch(1, 10) + self.setLayout(gridLayout) + + angle.setValue(60) + force.setValue(25) + angle.setFocus() + + self.newGame() + + @QtCore.Slot() + def fire(self): + if self.cannonField.gameOver() or self.cannonField.isShooting(): + return + self.shotsLeft.display(self.shotsLeft.intValue() - 1) + self.cannonField.shoot() + + @QtCore.Slot() + def hit(self): + self.hits.display(self.hits.intValue() + 1) + if self.shotsLeft.intValue() == 0: + self.cannonField.setGameOver() + else: + self.cannonField.newTarget() + + @QtCore.Slot() + def missed(self): + if self.shotsLeft.intValue() == 0: + self.cannonField.setGameOver() + + @QtCore.Slot() + def newGame(self): + self.shotsLeft.display(15) + self.hits.display(0) + self.cannonField.restartGame() + self.cannonField.newTarget() + + +app = QtWidgets.QApplication(sys.argv) +board = GameBoard() +board.setGeometry(100, 100, 500, 355) +board.show() +sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/tutorial/t14.py b/venv/Lib/site-packages/PySide2/examples/tutorial/t14.py new file mode 100644 index 0000000..2d5e1a1 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/tutorial/t14.py @@ -0,0 +1,450 @@ + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +# PySide2 tutorial 14 + + +import sys +import math +import random +from PySide2 import QtCore, QtGui, QtWidgets + + +class LCDRange(QtWidgets.QWidget): + valueChanged = QtCore.Signal(int) + def __init__(self, text=None, parent=None): + if isinstance(text, QtWidgets.QWidget): + parent = text + text = None + + QtWidgets.QWidget.__init__(self, parent) + + self.init() + + if text: + self.setText(text) + + def init(self): + lcd = QtWidgets.QLCDNumber(2) + self.slider = QtWidgets.QSlider(QtCore.Qt.Horizontal) + self.slider.setRange(0, 99) + self.slider.setValue(0) + self.label = QtWidgets.QLabel() + self.label.setAlignment(QtCore.Qt.AlignHCenter | QtCore.Qt.AlignTop) + self.label.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) + + self.connect(self.slider, QtCore.SIGNAL("valueChanged(int)"), + lcd, QtCore.SLOT("display(int)")) + self.connect(self.slider, QtCore.SIGNAL("valueChanged(int)"), + self, QtCore.SIGNAL("valueChanged(int)")) + + layout = QtWidgets.QVBoxLayout() + layout.addWidget(lcd) + layout.addWidget(self.slider) + layout.addWidget(self.label) + self.setLayout(layout) + + self.setFocusProxy(self.slider) + + def value(self): + return self.slider.value() + + @QtCore.Slot(int) + def setValue(self, value): + self.slider.setValue(value) + + def text(self): + return self.label.text() + + def setRange(self, minValue, maxValue): + if minValue < 0 or maxValue > 99 or minValue > maxValue: + QtCore.qWarning("LCDRange::setRange(%d, %d)\n" + "\tRange must be 0..99\n" + "\tand minValue must not be greater than maxValue" % (minValue, maxValue)) + return + + self.slider.setRange(minValue, maxValue) + + def setText(self, text): + self.label.setText(text) + + +class CannonField(QtWidgets.QWidget): + angleChanged = QtCore.Signal(int) + forceChanged = QtCore.Signal(int) + hit = QtCore.Signal() + missed = QtCore.Signal() + canShoot = QtCore.Signal(bool) + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) + + self.currentAngle = 45 + self.currentForce = 0 + self.timerCount = 0 + self.autoShootTimer = QtCore.QTimer(self) + self.connect(self.autoShootTimer, QtCore.SIGNAL("timeout()"), + self.moveShot) + self.shootAngle = 0 + self.shootForce = 0 + self.target = QtCore.QPoint(0, 0) + self.gameEnded = False + self.barrelPressed = False + self.setPalette(QtGui.QPalette(QtGui.QColor(250, 250, 200))) + self.setAutoFillBackground(True) + self.newTarget() + + def angle(self): + return self.currentAngle + + @QtCore.Slot(int) + def setAngle(self, angle): + if angle < 5: + angle = 5 + if angle > 70: + angle = 70 + if self.currentAngle == angle: + return + self.currentAngle = angle + self.update() + self.emit(QtCore.SIGNAL("angleChanged(int)"), self.currentAngle) + + def force(self): + return self.currentForce + + @QtCore.Slot(int) + def setForce(self, force): + if force < 0: + force = 0 + if self.currentForce == force: + return + self.currentForce = force + self.emit(QtCore.SIGNAL("forceChanged(int)"), self.currentForce) + + @QtCore.Slot() + def shoot(self): + if self.isShooting(): + return + self.timerCount = 0 + self.shootAngle = self.currentAngle + self.shootForce = self.currentForce + self.autoShootTimer.start(5) + self.emit(QtCore.SIGNAL("canShoot(bool)"), False) + + firstTime = True + + def newTarget(self): + if CannonField.firstTime: + CannonField.firstTime = False + midnight = QtCore.QTime(0, 0, 0) + random.seed(midnight.secsTo(QtCore.QTime.currentTime())) + + self.target = QtCore.QPoint(200 + random.randint(0, 190 - 1), 10 + random.randint(0, 255 - 1)) + self.update() + + def setGameOver(self): + if self.gameEnded: + return + if self.isShooting(): + self.autoShootTimer.stop() + self.gameEnded = True + self.update() + + def restartGame(self): + if self.isShooting(): + self.autoShootTimer.stop() + self.gameEnded = False + self.update() + self.emit(QtCore.SIGNAL("canShoot(bool)"), True) + + @QtCore.Slot() + def moveShot(self): + region = QtGui.QRegion(self.shotRect()) + self.timerCount += 1 + + shotR = self.shotRect() + + if shotR.intersects(self.targetRect()): + self.autoShootTimer.stop() + self.emit(QtCore.SIGNAL("hit()")) + self.emit(QtCore.SIGNAL("canShoot(bool)"), True) + elif shotR.x() > self.width() or shotR.y() > self.height() or shotR.intersects(self.barrierRect()): + self.autoShootTimer.stop() + self.emit(QtCore.SIGNAL("missed()")) + self.emit(QtCore.SIGNAL("canShoot(bool)"), True) + else: + region = region.united(QtGui.QRegion(shotR)) + + self.update(region) + + def mousePressEvent(self, event): + if event.button() != QtCore.Qt.LeftButton: + return + if self.barrelHit(event.pos()): + self.barrelPressed = True + + def mouseMoveEvent(self, event): + if not self.barrelPressed: + return + pos = event.pos() + if pos.x() <= 0: + pos.setX(1) + if pos.y() >= self.height(): + pos.setY(self.height() - 1) + rad = math.atan((float(self.rect().bottom()) - pos.y()) / pos.x()) + self.setAngle(round(rad * 180 / 3.14159265)) + + def mouseReleaseEvent(self, event): + if event.button() == QtCore.Qt.LeftButton: + self.barrelPressed = False + + def paintEvent(self, event): + painter = QtGui.QPainter(self) + + if self.gameEnded: + painter.setPen(QtCore.Qt.black) + painter.setFont(QtGui.QFont("Courier", 48, QtGui.QFont.Bold)) + painter.drawText(self.rect(), QtCore.Qt.AlignCenter, "Game Over") + + self.paintCannon(painter) + self.paintBarrier(painter) + if self.isShooting(): + self.paintShot(painter) + if not self.gameEnded: + self.paintTarget(painter) + + def paintShot(self, painter): + painter.setPen(QtCore.Qt.NoPen) + painter.setBrush(QtCore.Qt.black) + painter.drawRect(self.shotRect()) + + def paintTarget(self, painter): + painter.setPen(QtCore.Qt.black) + painter.setBrush(QtCore.Qt.red) + painter.drawRect(self.targetRect()) + + def paintBarrier(self, painter): + painter.setPen(QtCore.Qt.black) + painter.setBrush(QtCore.Qt.yellow) + painter.drawRect(self.barrierRect()) + + barrelRect = QtCore.QRect(33, -4, 15, 8) + + def paintCannon(self, painter): + painter.setPen(QtCore.Qt.NoPen) + painter.setBrush(QtCore.Qt.blue) + + painter.save() + painter.translate(0, self.height()) + painter.drawPie(QtCore.QRect(-35, -35, 70, 70), 0, 90 * 16) + painter.rotate(-self.currentAngle) + painter.drawRect(CannonField.barrelRect) + painter.restore() + + def cannonRect(self): + result = QtCore.QRect(0, 0, 50, 50) + result.moveBottomLeft(self.rect().bottomLect()) + return result + + def shotRect(self): + gravity = 4.0 + + time = self.timerCount / 40.0 + velocity = self.shootForce + radians = self.shootAngle * 3.14159265 / 180 + + velx = velocity * math.cos(radians) + vely = velocity * math.sin(radians) + x0 = (CannonField.barrelRect.right() + 5) * math.cos(radians) + y0 = (CannonField.barrelRect.right() + 5) * math.sin(radians) + x = x0 + velx * time + y = y0 + vely * time - 0.5 * gravity * time * time + + result = QtCore.QRect(0, 0, 6, 6) + result.moveCenter(QtCore.QPoint(round(x), self.height() - 1 - round(y))) + return result + + def targetRect(self): + result = QtCore.QRect(0, 0, 20, 10) + result.moveCenter(QtCore.QPoint(self.target.x(), self.height() - 1 - self.target.y())) + return result + + def barrierRect(self): + return QtCore.QRect(145, self.height() - 100, 15, 99) + + def barrelHit(self, pos): + matrix = QtGui.QTransform() + matrix.translate(0, self.height()) + matrix.rotate(-self.currentAngle) + matrix, invertible = matrix.inverted() + return self.barrelRect.contains(matrix.map(pos)) + + def gameOver(self): + return self.gameEnded + + def isShooting(self): + return self.autoShootTimer.isActive() + + def sizeHint(self): + return QtCore.QSize(400, 300) + + +class GameBoard(QtWidgets.QWidget): + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) + + quit = QtWidgets.QPushButton("&Quit") + quit.setFont(QtGui.QFont("Times", 18, QtGui.QFont.Bold)) + + self.connect(quit, QtCore.SIGNAL("clicked()"), + qApp, QtCore.SLOT("quit()")) + + angle = LCDRange("ANGLE") + angle.setRange(5, 70) + + force = LCDRange("FORCE") + force.setRange(10, 50) + + cannonBox = QtWidgets.QFrame() + cannonBox.setFrameStyle(QtWidgets.QFrame.WinPanel | QtWidgets.QFrame.Sunken) + + self.cannonField = CannonField() + + self.connect(angle, QtCore.SIGNAL("valueChanged(int)"), + self.cannonField.setAngle) + self.connect(self.cannonField, QtCore.SIGNAL("angleChanged(int)"), + angle.setValue) + + self.connect(force, QtCore.SIGNAL("valueChanged(int)"), + self.cannonField.setForce) + self.connect(self.cannonField, QtCore.SIGNAL("forceChanged(int)"), + force.setValue) + + self.connect(self.cannonField, QtCore.SIGNAL("hit()"), self.hit) + self.connect(self.cannonField, QtCore.SIGNAL("missed()"), self.missed) + + shoot = QtWidgets.QPushButton("&Shoot") + shoot.setFont(QtGui.QFont("Times", 18, QtGui.QFont.Bold)) + + self.connect(shoot, QtCore.SIGNAL("clicked()"), self.fire) + self.connect(self.cannonField, QtCore.SIGNAL("canShoot(bool)"), + shoot, QtCore.SLOT("setEnabled(bool)")) + + restart = QtWidgets.QPushButton("&New Game") + restart.setFont(QtGui.QFont("Times", 18, QtGui.QFont.Bold)) + + self.connect(restart, QtCore.SIGNAL("clicked()"), self.newGame) + + self.hits = QtWidgets.QLCDNumber(2) + self.shotsLeft = QtWidgets.QLCDNumber(2) + hitsLabel = QtWidgets.QLabel("HITS") + shotsLeftLabel = QtWidgets.QLabel("SHOTS LEFT") + + QtWidgets.QShortcut(QtGui.QKeySequence(QtCore.Qt.Key_Enter), + self, self.fire) + QtWidgets.QShortcut(QtGui.QKeySequence(QtCore.Qt.Key_Return), + self, self.fire) + QtWidgets.QShortcut(QtGui.QKeySequence(QtCore.Qt.CTRL + QtCore.Qt.Key_Q), + self, QtCore.SLOT("close()")) + + topLayout = QtWidgets.QHBoxLayout() + topLayout.addWidget(shoot) + topLayout.addWidget(self.hits) + topLayout.addWidget(hitsLabel) + topLayout.addWidget(self.shotsLeft) + topLayout.addWidget(shotsLeftLabel) + topLayout.addStretch(1) + topLayout.addWidget(restart) + + leftLayout = QtWidgets.QVBoxLayout() + leftLayout.addWidget(angle) + leftLayout.addWidget(force) + + cannonLayout = QtWidgets.QVBoxLayout() + cannonLayout.addWidget(self.cannonField) + cannonBox.setLayout(cannonLayout) + + gridLayout = QtWidgets.QGridLayout() + gridLayout.addWidget(quit, 0, 0) + gridLayout.addLayout(topLayout, 0, 1) + gridLayout.addLayout(leftLayout, 1, 0) + gridLayout.addWidget(cannonBox, 1, 1, 2, 1) + gridLayout.setColumnStretch(1, 10) + self.setLayout(gridLayout) + + angle.setValue(60) + force.setValue(25) + angle.setFocus() + + self.newGame() + + @QtCore.Slot() + def fire(self): + if self.cannonField.gameOver() or self.cannonField.isShooting(): + return + self.shotsLeft.display(self.shotsLeft.intValue() - 1) + self.cannonField.shoot() + + @QtCore.Slot() + def hit(self): + self.hits.display(self.hits.intValue() + 1) + if self.shotsLeft.intValue() == 0: + self.cannonField.setGameOver() + else: + self.cannonField.newTarget() + + @QtCore.Slot() + def missed(self): + if self.shotsLeft.intValue() == 0: + self.cannonField.setGameOver() + + @QtCore.Slot() + def newGame(self): + self.shotsLeft.display(15) + self.hits.display(0) + self.cannonField.restartGame() + self.cannonField.newTarget() + + +app = QtWidgets.QApplication(sys.argv) +board = GameBoard() +board.setGeometry(100, 100, 500, 355) +board.show() +sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/tutorial/t2.py b/venv/Lib/site-packages/PySide2/examples/tutorial/t2.py new file mode 100644 index 0000000..946a273 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/tutorial/t2.py @@ -0,0 +1,59 @@ + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +# PySide2 tutorial 2 + + +import sys +from PySide2 import QtCore, QtGui, QtWidgets + + +app = QtWidgets.QApplication(sys.argv) + +quit = QtWidgets.QPushButton("Quit") +quit.resize(75, 30) +quit.setFont(QtGui.QFont("Times", 18, QtGui.QFont.Bold)) + +QtCore.QObject.connect(quit, QtCore.SIGNAL("clicked()"), + app, QtCore.SLOT("quit()")) + +quit.show() +sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/tutorial/t3.py b/venv/Lib/site-packages/PySide2/examples/tutorial/t3.py new file mode 100644 index 0000000..65796ac --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/tutorial/t3.py @@ -0,0 +1,61 @@ + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +# PySide2 tutorial 3 + + +import sys +from PySide2 import QtCore, QtGui, QtWidgets + + +app = QtWidgets.QApplication(sys.argv) + +window = QtWidgets.QWidget() +window.resize(200, 120) + +quit = QtWidgets.QPushButton("Quit", window) +quit.setFont(QtGui.QFont("Times", 18, QtGui.QFont.Bold)) +quit.setGeometry(10, 40, 180, 40) +QtCore.QObject.connect(quit, QtCore.SIGNAL("clicked()"), + app, QtCore.SLOT("quit()")) + +window.show() +sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/tutorial/t4.py b/venv/Lib/site-packages/PySide2/examples/tutorial/t4.py new file mode 100644 index 0000000..c88943c --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/tutorial/t4.py @@ -0,0 +1,66 @@ + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +# PySide2 tutorial 4 + + +import sys +from PySide2 import QtCore, QtGui, QtWidgets + + +class MyWidget(QtWidgets.QWidget): + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) + + self.setFixedSize(200, 120) + + self.quit = QtWidgets.QPushButton("Quit", self) + self.quit.setGeometry(62, 40, 75, 30) + self.quit.setFont(QtGui.QFont("Times", 18, QtGui.QFont.Bold)) + + self.connect(self.quit, QtCore.SIGNAL("clicked()"), + qApp, QtCore.SLOT("quit()")) + + +app = QtWidgets.QApplication(sys.argv) +widget = MyWidget() +widget.show() +sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/tutorial/t5.py b/venv/Lib/site-packages/PySide2/examples/tutorial/t5.py new file mode 100644 index 0000000..4077c0e --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/tutorial/t5.py @@ -0,0 +1,77 @@ + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +# PySide2 tutorial 5 + + +import sys +from PySide2 import QtCore, QtGui, QtWidgets + + +class MyWidget(QtWidgets.QWidget): + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) + + quit = QtWidgets.QPushButton("Quit") + quit.setFont(QtGui.QFont("Times", 18, QtGui.QFont.Bold)) + + lcd = QtWidgets.QLCDNumber(2) + + slider = QtWidgets.QSlider(QtCore.Qt.Horizontal) + slider.setRange(0, 99) + slider.setValue(0) + + self.connect(quit, QtCore.SIGNAL("clicked()"), + qApp, QtCore.SLOT("quit()")) + self.connect(slider, QtCore.SIGNAL("valueChanged(int)"), + lcd, QtCore.SLOT("display(int)")) + + layout = QtWidgets.QVBoxLayout() + layout.addWidget(quit) + layout.addWidget(lcd) + layout.addWidget(slider) + self.setLayout(layout) + + +app = QtWidgets.QApplication(sys.argv) +widget = MyWidget() +widget.show() +sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/tutorial/t6.py b/venv/Lib/site-packages/PySide2/examples/tutorial/t6.py new file mode 100644 index 0000000..21c4ff3 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/tutorial/t6.py @@ -0,0 +1,90 @@ + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +# PySide2 tutorial 6 + + +import sys +from PySide2 import QtCore, QtGui, QtWidgets + + +class LCDRange(QtWidgets.QWidget): + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) + + lcd = QtWidgets.QLCDNumber(2) + slider = QtWidgets.QSlider(QtCore.Qt.Horizontal) + slider.setRange(0, 99) + slider.setValue(0) + self.connect(slider, QtCore.SIGNAL("valueChanged(int)"), + lcd, QtCore.SLOT("display(int)")) + + layout = QtWidgets.QVBoxLayout() + layout.addWidget(lcd) + layout.addWidget(slider) + self.setLayout(layout) + + +class MyWidget(QtWidgets.QWidget): + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) + + quit = QtWidgets.QPushButton("Quit") + quit.setFont(QtGui.QFont("Times", 18, QtGui.QFont.Bold)) + self.connect(quit, QtCore.SIGNAL("clicked()"), + qApp, QtCore.SLOT("quit()")) + + grid = QtWidgets.QGridLayout() + layout = QtWidgets.QVBoxLayout() + layout.addWidget(quit) + layout.addLayout(grid) + self.setLayout(layout) + for row in range(3): + for column in range(3): + grid.addWidget(LCDRange(), row, column) + + + + +app = QtWidgets.QApplication(sys.argv) +widget = MyWidget() +widget.show() +sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/tutorial/t7.py b/venv/Lib/site-packages/PySide2/examples/tutorial/t7.py new file mode 100644 index 0000000..0e01a75 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/tutorial/t7.py @@ -0,0 +1,113 @@ + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +# PySide2 tutorial 7 + + +import sys +from PySide2 import QtCore, QtGui, QtWidgets + + +class LCDRange(QtWidgets.QWidget): + valueChanged = QtCore.Signal(int) + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) + + lcd = QtWidgets.QLCDNumber(2) + + self.slider = QtWidgets.QSlider(QtCore.Qt.Horizontal) + self.slider.setRange(0, 99) + self.slider.setValue(0) + + self.connect(self.slider, QtCore.SIGNAL("valueChanged(int)"), + lcd, QtCore.SLOT("display(int)")) + self.connect(self.slider, QtCore.SIGNAL("valueChanged(int)"), + self, QtCore.SIGNAL("valueChanged(int)")) + + layout = QtWidgets.QVBoxLayout() + layout.addWidget(lcd) + layout.addWidget(self.slider) + self.setLayout(layout) + + def value(self): + return self.slider.value() + + @QtCore.Slot(int) + def setValue(self, value): + self.slider.setValue(value) + + +class MyWidget(QtWidgets.QWidget): + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) + + quit = QtWidgets.QPushButton("Quit") + quit.setFont(QtGui.QFont("Times", 18, QtGui.QFont.Bold)) + + self.connect(quit, QtCore.SIGNAL("clicked()"), + qApp, QtCore.SLOT("quit()")) + + grid = QtWidgets.QGridLayout() + previousRange = None + + + layout = QtWidgets.QVBoxLayout() + layout.addWidget(quit) + layout.addLayout(grid) + self.setLayout(layout) + + for row in range(3): + for column in range(3): + lcdRange = LCDRange() + grid.addWidget(lcdRange, row, column) + + if previousRange: + self.connect(lcdRange, QtCore.SIGNAL("valueChanged(int)"), + previousRange.setValue) + + previousRange = lcdRange + + + +app = QtWidgets.QApplication(sys.argv) +widget = MyWidget() +widget.show() +sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/tutorial/t8.py b/venv/Lib/site-packages/PySide2/examples/tutorial/t8.py new file mode 100644 index 0000000..e672689 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/tutorial/t8.py @@ -0,0 +1,152 @@ + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +# PySide2 tutorial 8 + + +import sys +from PySide2 import QtCore, QtGui, QtWidgets + + +class LCDRange(QtWidgets.QWidget): + valueChanged = QtCore.Signal(int) + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) + + lcd = QtWidgets.QLCDNumber(2) + self.slider = QtWidgets.QSlider(QtCore.Qt.Horizontal) + self.slider.setRange(0, 99) + self.slider.setValue(0) + + self.connect(self.slider, QtCore.SIGNAL("valueChanged(int)"), + lcd, QtCore.SLOT("display(int)")) + self.connect(self.slider, QtCore.SIGNAL("valueChanged(int)"), + self, QtCore.SIGNAL("valueChanged(int)")) + + layout = QtWidgets.QVBoxLayout() + layout.addWidget(lcd) + layout.addWidget(self.slider) + self.setLayout(layout) + + self.setFocusProxy(self.slider) + + def value(self): + return self.slider.value() + + @QtCore.Slot(int) + def setValue(self, value): + self.slider.setValue(value) + + def setRange(self, minValue, maxValue): + if minValue < 0 or maxValue > 99 or minValue > maxValue: + QtCore.qWarning("LCDRange.setRange(%d, %d)\n" + "\tRange must be 0..99\n" + "\tand minValue must not be greater than maxValue" % (minValue, maxValue)) + return + + self.slider.setRange(minValue, maxValue) + + +class CannonField(QtWidgets.QWidget): + angleChanged = QtCore.Signal(int) + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) + + self.currentAngle = 45 + self.setPalette(QtGui.QPalette(QtGui.QColor(250, 250, 200))) + self.setAutoFillBackground(True) + + def angle(self): + return self.currentAngle + + @QtCore.Slot(int) + def setAngle(self, angle): + if angle < 5: + angle = 5 + if angle > 70: + angle = 70 + if self.currentAngle == angle: + return + self.currentAngle = angle + self.update() + self.emit(QtCore.SIGNAL("angleChanged(int)"), self.currentAngle) + + def paintEvent(self, event): + painter = QtGui.QPainter(self) + painter.drawText(200, 200, "Angle = %d" % self.currentAngle) + + +class MyWidget(QtWidgets.QWidget): + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) + + quit = QtWidgets.QPushButton("Quit") + quit.setFont(QtGui.QFont("Times", 18, QtGui.QFont.Bold)) + + self.connect(quit, QtCore.SIGNAL("clicked()"), + qApp, QtCore.SLOT("quit()")) + + angle = LCDRange() + angle.setRange(5, 70) + + cannonField = CannonField() + + self.connect(angle, QtCore.SIGNAL("valueChanged(int)"), + cannonField.setAngle) + self.connect(cannonField, QtCore.SIGNAL("angleChanged(int)"), + angle.setValue) + + gridLayout = QtWidgets.QGridLayout() + gridLayout.addWidget(quit, 0, 0) + gridLayout.addWidget(angle, 1, 0) + gridLayout.addWidget(cannonField, 1, 1, 2, 1) + gridLayout.setColumnStretch(1, 10) + self.setLayout(gridLayout) + + angle.setValue(60) + angle.setFocus() + + +app = QtWidgets.QApplication(sys.argv) +widget = MyWidget() +widget.setGeometry(100, 100, 500, 355) +widget.show() +sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/tutorial/t9.py b/venv/Lib/site-packages/PySide2/examples/tutorial/t9.py new file mode 100644 index 0000000..ab37f8e --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/tutorial/t9.py @@ -0,0 +1,159 @@ + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +# PySide2 tutorial 9 + + +import sys +from PySide2 import QtCore, QtGui, QtWidgets + + +class LCDRange(QtWidgets.QWidget): + valueChanged = QtCore.Signal(int) + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) + + lcd = QtWidgets.QLCDNumber(2) + self.slider = QtWidgets.QSlider(QtCore.Qt.Horizontal) + self.slider.setRange(0, 99) + self.slider.setValue(0) + + self.connect(self.slider, QtCore.SIGNAL("valueChanged(int)"), + lcd, QtCore.SLOT("display(int)")) + self.connect(self.slider, QtCore.SIGNAL("valueChanged(int)"), + self, QtCore.SIGNAL("valueChanged(int)")) + + layout = QtWidgets.QVBoxLayout() + layout.addWidget(lcd) + layout.addWidget(self.slider) + self.setLayout(layout) + + self.setFocusProxy(self.slider) + + def value(self): + return self.slider.value() + + @QtCore.Slot(int) + def setValue(self, value): + self.slider.setValue(value) + + def setRange(self, minValue, maxValue): + if minValue < 0 or maxValue > 99 or minValue > maxValue: + QtCore.qWarning("LCDRange::setRange(%d, %d)\n" + "\tRange must be 0..99\n" + "\tand minValue must not be greater than maxValue" % (minValue, maxValue)) + return + + self.slider.setRange(minValue, maxValue) + + +class CannonField(QtWidgets.QWidget): + angleChanged = QtCore.Signal(int) + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) + + self.currentAngle = 45 + self.setPalette(QtGui.QPalette(QtGui.QColor(250, 250, 200))) + self.setAutoFillBackground(True) + + def angle(self): + return self.currentAngle + + @QtCore.Slot(int) + def setAngle(self, angle): + if angle < 5: + angle = 5 + if angle > 70: + angle = 70 + if self.currentAngle == angle: + return + self.currentAngle = angle + self.update() + self.emit(QtCore.SIGNAL("angleChanged(int)"), self.currentAngle) + + def paintEvent(self, event): + painter = QtGui.QPainter(self) + + painter.setPen(QtCore.Qt.NoPen) + painter.setBrush(QtCore.Qt.blue) + + painter.translate(0, self.rect().height()) + painter.drawPie(QtCore.QRect(-35, -35, 70, 70), 0, 90 * 16) + painter.rotate(-self.currentAngle) + painter.drawRect(QtCore.QRect(33, -4, 15, 8)) + + +class MyWidget(QtWidgets.QWidget): + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) + + quit = QtWidgets.QPushButton("Quit") + quit.setFont(QtGui.QFont("Times", 18, QtGui.QFont.Bold)) + + self.connect(quit, QtCore.SIGNAL("clicked()"), + qApp, QtCore.SLOT("quit()")) + + angle = LCDRange() + angle.setRange(5, 70) + + cannonField = CannonField() + + self.connect(angle, QtCore.SIGNAL("valueChanged(int)"), + cannonField.setAngle) + self.connect(cannonField, QtCore.SIGNAL("angleChanged(int)"), + angle.setValue) + + gridLayout = QtWidgets.QGridLayout() + gridLayout.addWidget(quit, 0, 0) + gridLayout.addWidget(angle, 1, 0) + gridLayout.addWidget(cannonField, 1, 1, 2, 1) + gridLayout.setColumnStretch(1, 10) + self.setLayout(gridLayout) + + angle.setValue(60) + angle.setFocus() + + +app = QtWidgets.QApplication(sys.argv) +widget = MyWidget() +widget.setGeometry(100, 100, 500, 355) +widget.show() +sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/tutorial/tutorial.pyproject b/venv/Lib/site-packages/PySide2/examples/tutorial/tutorial.pyproject new file mode 100644 index 0000000..09478e1 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/tutorial/tutorial.pyproject @@ -0,0 +1,5 @@ +{ + "files": ["t6.py", "t9.py", "t8.py", "t13.py", "t10.py", "t7.py", + "t3.py", "t4.py", "t1.py", "t12.py", "t2.py", "t5.py", + "t11.py", "t14.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/uiloader/__pycache__/uiloader.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/uiloader/__pycache__/uiloader.cpython-310.pyc new file mode 100644 index 0000000..2fc2b80 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/uiloader/__pycache__/uiloader.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/uiloader/uiloader.py b/venv/Lib/site-packages/PySide2/examples/uiloader/uiloader.py new file mode 100644 index 0000000..1e6e72d --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/uiloader/uiloader.py @@ -0,0 +1,71 @@ +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""QUiLoader example, showing how to dynamically load a Qt Designer form + from a UI file.""" + +from argparse import ArgumentParser, RawTextHelpFormatter +import sys + +from PySide2.QtCore import Qt, QFile, QIODevice +from PySide2.QtWidgets import QApplication, QWidget +from PySide2.QtUiTools import QUiLoader + + +if __name__ == '__main__': + arg_parser = ArgumentParser(description="QUiLoader example", + formatter_class=RawTextHelpFormatter) + arg_parser.add_argument('file', type=str, help='UI file') + args = arg_parser.parse_args() + ui_file_name = args.file + + app = QApplication(sys.argv) + ui_file = QFile(ui_file_name) + if not ui_file.open(QIODevice.ReadOnly): + print("Cannot open {}: {}".format(ui_file_name, ui_file.errorString())) + sys.exit(-1) + loader = QUiLoader() + widget = loader.load(ui_file, None) + ui_file.close() + if not widget: + print(loader.errorString()) + sys.exit(-1) + widget.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/utils/__pycache__/pyside2_config.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/utils/__pycache__/pyside2_config.cpython-310.pyc new file mode 100644 index 0000000..25fcf0b Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/utils/__pycache__/pyside2_config.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/utils/__pycache__/utils.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/utils/__pycache__/utils.cpython-310.pyc new file mode 100644 index 0000000..c2481ec Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/utils/__pycache__/utils.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/utils/pyside2_config.py b/venv/Lib/site-packages/PySide2/examples/utils/pyside2_config.py new file mode 100644 index 0000000..9734101 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/utils/pyside2_config.py @@ -0,0 +1,372 @@ +############################################################################# +## +## Copyright (C) 2019 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +import os, glob, re, sys +from distutils import sysconfig + +generic_error = (' Did you forget to activate your virtualenv? Or perhaps' + ' you forgot to build / install PySide2 into your currently active Python' + ' environment?') +pyside2_error = 'Unable to locate PySide2.' + generic_error +shiboken2_module_error = 'Unable to locate shiboken2-module.' + generic_error +shiboken2_generator_error = 'Unable to locate shiboken2-generator.' + generic_error +pyside2_libs_error = 'Unable to locate the PySide2 shared libraries.' + generic_error +python_link_error = 'Unable to locate the Python library for linking.' +python_include_error = 'Unable to locate the Python include headers directory.' + +options = [] + +# option, function, error, description +options.append(("--shiboken2-module-path", + lambda: find_shiboken2_module(), + shiboken2_module_error, + "Print shiboken2 module location")) +options.append(("--shiboken2-generator-path", + lambda: find_shiboken2_generator(), + shiboken2_generator_error, + "Print shiboken2 generator location")) +options.append(("--pyside2-path", lambda: find_pyside2(), pyside2_error, + "Print PySide2 location")) + +options.append(("--python-include-path", + lambda: get_python_include_path(), + python_include_error, + "Print Python include path")) +options.append(("--shiboken2-generator-include-path", + lambda: get_package_include_path(Package.shiboken2_generator), + pyside2_error, + "Print shiboken2 generator include paths")) +options.append(("--pyside2-include-path", + lambda: get_package_include_path(Package.pyside2), + pyside2_error, + "Print PySide2 include paths")) + +options.append(("--python-link-flags-qmake", lambda: python_link_flags_qmake(), python_link_error, + "Print python link flags for qmake")) +options.append(("--python-link-flags-cmake", lambda: python_link_flags_cmake(), python_link_error, + "Print python link flags for cmake")) + +options.append(("--shiboken2-module-qmake-lflags", + lambda: get_package_qmake_lflags(Package.shiboken2_module), pyside2_error, + "Print shiboken2 shared library link flags for qmake")) +options.append(("--pyside2-qmake-lflags", + lambda: get_package_qmake_lflags(Package.pyside2), pyside2_error, + "Print PySide2 shared library link flags for qmake")) + +options.append(("--shiboken2-module-shared-libraries-qmake", + lambda: get_shared_libraries_qmake(Package.shiboken2_module), pyside2_libs_error, + "Print paths of shiboken2 shared libraries (.so's, .dylib's, .dll's) for qmake")) +options.append(("--shiboken2-module-shared-libraries-cmake", + lambda: get_shared_libraries_cmake(Package.shiboken2_module), pyside2_libs_error, + "Print paths of shiboken2 shared libraries (.so's, .dylib's, .dll's) for cmake")) + +options.append(("--pyside2-shared-libraries-qmake", + lambda: get_shared_libraries_qmake(Package.pyside2), pyside2_libs_error, + "Print paths of PySide2 shared libraries (.so's, .dylib's, .dll's) for qmake")) +options.append(("--pyside2-shared-libraries-cmake", + lambda: get_shared_libraries_cmake(Package.pyside2), pyside2_libs_error, + "Print paths of PySide2 shared libraries (.so's, .dylib's, .dll's) for cmake")) + +options_usage = '' +for i, (flag, _, _, description) in enumerate(options): + options_usage += ' {:<45} {}'.format(flag, description) + if i < len(options) - 1: + options_usage += '\n' + +usage = """ +Utility to determine include/link options of shiboken2/PySide2 and Python for qmake/CMake projects +that would like to embed or build custom shiboken2/PySide2 bindings. + +Usage: pyside2_config.py [option] +Options: +{} + -a Print all options and their values + --help/-h Print this help +""".format(options_usage) + +option = sys.argv[1] if len(sys.argv) == 2 else '-a' +if option == '-h' or option == '--help': + print(usage) + sys.exit(0) + + +class Package(object): + shiboken2_module = 1 + shiboken2_generator = 2 + pyside2 = 3 + + +def clean_path(path): + return path if sys.platform != 'win32' else path.replace('\\', '/') + + +def shared_library_suffix(): + if sys.platform == 'win32': + return 'lib' + elif sys.platform == 'darwin': + return 'dylib' + # Linux + else: + return 'so.*' + + +def import_suffixes(): + if (sys.version_info >= (3, 4)): + import importlib.machinery + return importlib.machinery.EXTENSION_SUFFIXES + else: + import imp + result = [] + for t in imp.get_suffixes(): + result.append(t[0]) + return result + + +def is_debug(): + debug_suffix = '_d.pyd' if sys.platform == 'win32' else '_d.so' + return any([s.endswith(debug_suffix) for s in import_suffixes()]) + + +def shared_library_glob_pattern(): + glob = '*.' + shared_library_suffix() + return glob if sys.platform == 'win32' else 'lib' + glob + + +def filter_shared_libraries(libs_list): + def predicate(lib_name): + basename = os.path.basename(lib_name) + if 'shiboken' in basename or 'pyside2' in basename: + return True + return False + result = [lib for lib in libs_list if predicate(lib)] + return result + + +# Return qmake link option for a library file name +def link_option(lib): + # On Linux: + # Since we cannot include symlinks with wheel packages + # we are using an absolute path for the libpyside and libshiboken + # libraries when compiling the project + baseName = os.path.basename(lib) + link = ' -l' + if sys.platform in ['linux', 'linux2']: # Linux: 'libfoo.so' -> '/absolute/path/libfoo.so' + link = lib + elif sys.platform in ['darwin']: # Darwin: 'libfoo.so' -> '-lfoo' + link += os.path.splitext(baseName[3:])[0] + else: # Windows: 'libfoo.dll' -> 'libfoo.dll' + link += os.path.splitext(baseName)[0] + return link + + +# Locate PySide2 via sys.path package path. +def find_pyside2(): + return find_package_path("PySide2") + + +def find_shiboken2_module(): + return find_package_path("shiboken2") + + +def find_shiboken2_generator(): + return find_package_path("shiboken2_generator") + + +def find_package(which_package): + if which_package == Package.shiboken2_module: + return find_shiboken2_module() + if which_package == Package.shiboken2_generator: + return find_shiboken2_generator() + if which_package == Package.pyside2: + return find_pyside2() + return None + + +def find_package_path(dir_name): + for p in sys.path: + if 'site-' in p: + package = os.path.join(p, dir_name) + if os.path.exists(package): + return clean_path(os.path.realpath(package)) + return None + + +# Return version as "3.5" +def python_version(): + return str(sys.version_info[0]) + '.' + str(sys.version_info[1]) + + +def get_python_include_path(): + return sysconfig.get_python_inc() + + +def python_link_flags_qmake(): + flags = python_link_data() + if sys.platform == 'win32': + libdir = flags['libdir'] + # This will add the "~1" shortcut for directories that + # contain white spaces + # e.g.: "Program Files" to "Progra~1" + for d in libdir.split("\\"): + if " " in d: + libdir = libdir.replace(d, d.split(" ")[0][:-1]+"~1") + return '-L{} -l{}'.format(libdir, flags['lib']) + elif sys.platform == 'darwin': + return '-L{} -l{}'.format(flags['libdir'], flags['lib']) + + else: + # Linux and anything else + return '-L{} -l{}'.format(flags['libdir'], flags['lib']) + + +def python_link_flags_cmake(): + flags = python_link_data() + libdir = flags['libdir'] + lib = re.sub(r'.dll$', '.lib', flags['lib']) + return '{};{}'.format(libdir, lib) + + +def python_link_data(): + # @TODO Fix to work with static builds of Python + libdir = sysconfig.get_config_var('LIBDIR') + if libdir is None: + libdir = os.path.abspath(os.path.join( + sysconfig.get_config_var('LIBDEST'), "..", "libs")) + version = python_version() + version_no_dots = version.replace('.', '') + + flags = {} + flags['libdir'] = libdir + if sys.platform == 'win32': + suffix = '_d' if is_debug() else '' + flags['lib'] = 'python{}{}'.format(version_no_dots, suffix) + + elif sys.platform == 'darwin': + flags['lib'] = 'python{}'.format(version) + + # Linux and anything else + else: + if sys.version_info[0] < 3: + suffix = '_d' if is_debug() else '' + flags['lib'] = 'python{}{}'.format(version, suffix) + else: + flags['lib'] = 'python{}{}'.format(version, sys.abiflags) + + return flags + + +def get_package_include_path(which_package): + package_path = find_package(which_package) + if package_path is None: + return None + + includes = "{0}/include".format(package_path) + + return includes + + +def get_package_qmake_lflags(which_package): + package_path = find_package(which_package) + if package_path is None: + return None + + link = "-L{}".format(package_path) + glob_result = glob.glob(os.path.join(package_path, shared_library_glob_pattern())) + for lib in filter_shared_libraries(glob_result): + link += ' ' + link += link_option(lib) + return link + + +def get_shared_libraries_data(which_package): + package_path = find_package(which_package) + if package_path is None: + return None + + glob_result = glob.glob(os.path.join(package_path, shared_library_glob_pattern())) + filtered_libs = filter_shared_libraries(glob_result) + libs = [] + if sys.platform == 'win32': + for lib in filtered_libs: + libs.append(os.path.realpath(lib)) + else: + for lib in filtered_libs: + libs.append(lib) + return libs + + +def get_shared_libraries_qmake(which_package): + libs = get_shared_libraries_data(which_package) + if libs is None: + return None + + if sys.platform == 'win32': + if not libs: + return '' + dlls = '' + for lib in libs: + dll = os.path.splitext(lib)[0] + '.dll' + dlls += dll + ' ' + + return dlls + else: + libs_string = '' + for lib in libs: + libs_string += lib + ' ' + return libs_string + + +def get_shared_libraries_cmake(which_package): + libs = get_shared_libraries_data(which_package) + result = ';'.join(libs) + return result + + +print_all = option == "-a" +for argument, handler, error, _ in options: + if option == argument or print_all: + handler_result = handler() + if handler_result is None: + sys.exit(error) + + line = handler_result + if print_all: + line = "{:<40}: ".format(argument) + line + print(line) diff --git a/venv/Lib/site-packages/PySide2/examples/utils/utils.py b/venv/Lib/site-packages/PySide2/examples/utils/utils.py new file mode 100644 index 0000000..96421e4 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/utils/utils.py @@ -0,0 +1,48 @@ + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +import sys +isPY3 = sys.version_info[0] == 3 + +if isPY3: + text_type = str +else: + text_type = unicode diff --git a/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/__pycache__/core.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/__pycache__/core.cpython-310.pyc new file mode 100644 index 0000000..f356126 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/__pycache__/core.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/__pycache__/dialog.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/__pycache__/dialog.cpython-310.pyc new file mode 100644 index 0000000..cbbd163 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/__pycache__/dialog.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/__pycache__/main.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/__pycache__/main.cpython-310.pyc new file mode 100644 index 0000000..051218e Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/__pycache__/main.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/__pycache__/ui_dialog.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/__pycache__/ui_dialog.cpython-310.pyc new file mode 100644 index 0000000..220b00e Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/__pycache__/ui_dialog.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/__pycache__/websocketclientwrapper.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/__pycache__/websocketclientwrapper.cpython-310.pyc new file mode 100644 index 0000000..57cc888 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/__pycache__/websocketclientwrapper.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/__pycache__/websockettransport.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/__pycache__/websockettransport.cpython-310.pyc new file mode 100644 index 0000000..3905d3c Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/__pycache__/websockettransport.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/core.py b/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/core.py new file mode 100644 index 0000000..9fb0564 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/core.py @@ -0,0 +1,62 @@ +############################################################################# +## +## Copyright (C) 2017 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Milian Wolff +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + + +from PySide2.QtCore import QObject, Signal, Slot + + +class Core(QObject): + """An instance of this class gets published over the WebChannel and is then + accessible to HTML clients.""" + sendText = Signal(str) + + def __init__(self, dialog, parent=None): + super(Core, self).__init__(parent) + self._dialog = dialog + self._dialog.sendText.connect(self._emit_send_text) + + @Slot(str) + def _emit_send_text(self, text): + self.sendText.emit(text) + + @Slot(str) + def receiveText(self, text): + self._dialog.displayMessage("Received message: {}".format(text)) diff --git a/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/dialog.py b/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/dialog.py new file mode 100644 index 0000000..45951de --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/dialog.py @@ -0,0 +1,68 @@ +############################################################################# +## +## Copyright (C) 2017 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Milian Wolff +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + + +from PySide2.QtCore import Signal, Slot +from PySide2.QtWidgets import QDialog +from ui_dialog import Ui_Dialog + + +class Dialog(QDialog): + sendText = Signal(str) + + def __init__(self, parent=None): + super(Dialog, self).__init__(parent) + self._ui = Ui_Dialog() + self._ui.setupUi(self) + self._ui.send.clicked.connect(self.clicked) + + @Slot(str) + def displayMessage(self, message): + self._ui.output.appendPlainText(message) + + @Slot() + def clicked(self): + text = self._ui.input.text() + if not text: + return + self.sendText.emit(text) + self.displayMessage("Sent message: {}".format(text)) + self._ui.input.clear() diff --git a/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/dialog.ui b/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/dialog.ui new file mode 100644 index 0000000..056a3f5 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/dialog.ui @@ -0,0 +1,48 @@ + + + Dialog + + + + 0 + 0 + 400 + 300 + + + + Dialog + + + + + + Message Contents + + + + + + + Send + + + + + + + true + + + Initializing WebChannel... + + + false + + + + + + + + diff --git a/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/index.html b/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/index.html new file mode 100644 index 0000000..7c042cd --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/index.html @@ -0,0 +1,79 @@ + + + + + + + + + +
+ + + diff --git a/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/main.py b/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/main.py new file mode 100644 index 0000000..d311914 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/main.py @@ -0,0 +1,99 @@ +############################################################################# +## +## Copyright (C) 2016 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Milian Wolff +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + + +import os +import sys + +from PySide2.QtWidgets import QApplication +from PySide2.QtGui import QDesktopServices +from PySide2.QtNetwork import QHostAddress, QSslSocket +from PySide2.QtCore import (QFile, QFileInfo, QUrl) +from PySide2.QtWebChannel import QWebChannel +from PySide2.QtWebSockets import QWebSocketServer + +from dialog import Dialog +from core import Core +from websocketclientwrapper import WebSocketClientWrapper + + +if __name__ == '__main__': + app = QApplication(sys.argv) + if not QSslSocket.supportsSsl(): + print('The example requires SSL support.') + sys.exit(-1) + cur_dir = os.path.dirname(os.path.abspath(__file__)) + jsFileInfo = QFileInfo(cur_dir + "/qwebchannel.js") + if not jsFileInfo.exists(): + QFile.copy(":/qtwebchannel/qwebchannel.js", + jsFileInfo.absoluteFilePath()) + + # setup the QWebSocketServer + server = QWebSocketServer("QWebChannel Standalone Example Server", + QWebSocketServer.NonSecureMode) + if not server.listen(QHostAddress.LocalHost, 12345): + print("Failed to open web socket server.") + sys.exit(-1) + + # wrap WebSocket clients in QWebChannelAbstractTransport objects + clientWrapper = WebSocketClientWrapper(server) + + # setup the channel + channel = QWebChannel() + clientWrapper.clientConnected.connect(channel.connectTo) + + # setup the UI + dialog = Dialog() + + # setup the core and publish it to the QWebChannel + core = Core(dialog) + channel.registerObject("core", core) + + # open a browser window with the client HTML page + url = QUrl.fromLocalFile(cur_dir + "/index.html") + QDesktopServices.openUrl(url) + + message = "Initialization complete, opening browser at {}.".format( + url.toDisplayString()) + dialog.displayMessage(message) + dialog.show() + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/standalone.pyproject b/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/standalone.pyproject new file mode 100644 index 0000000..b4fcdfa --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/standalone.pyproject @@ -0,0 +1,4 @@ +{ + "files": ["main.py", "core.py", "dialog.py", "websocketclientwrapper.py", + "websockettransport.py", "dialog.ui", "index.html"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/ui_dialog.py b/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/ui_dialog.py new file mode 100644 index 0000000..873edba --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/ui_dialog.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- + +################################################################################ +## Form generated from reading UI file 'dialog.ui' +## +## Created by: Qt User Interface Compiler version 5.14.1 +## +## WARNING! All changes made in this file will be lost when recompiling UI file! +################################################################################ + +from PySide2.QtCore import (QCoreApplication, QMetaObject, QObject, QPoint, + QRect, QSize, QUrl, Qt) +from PySide2.QtGui import (QBrush, QColor, QConicalGradient, QCursor, QFont, + QFontDatabase, QIcon, QLinearGradient, QPalette, QPainter, QPixmap, + QRadialGradient) +from PySide2.QtWidgets import * + + +class Ui_Dialog(object): + def setupUi(self, Dialog): + if not Dialog.objectName(): + Dialog.setObjectName(u"Dialog") + Dialog.resize(400, 300) + self.gridLayout = QGridLayout(Dialog) + self.gridLayout.setObjectName(u"gridLayout") + self.input = QLineEdit(Dialog) + self.input.setObjectName(u"input") + + self.gridLayout.addWidget(self.input, 1, 0, 1, 1) + + self.send = QPushButton(Dialog) + self.send.setObjectName(u"send") + + self.gridLayout.addWidget(self.send, 1, 1, 1, 1) + + self.output = QPlainTextEdit(Dialog) + self.output.setObjectName(u"output") + self.output.setReadOnly(True) + self.output.setPlainText(u"Initializing WebChannel...") + self.output.setBackgroundVisible(False) + + self.gridLayout.addWidget(self.output, 0, 0, 1, 2) + + + self.retranslateUi(Dialog) + + QMetaObject.connectSlotsByName(Dialog) + # setupUi + + def retranslateUi(self, Dialog): + Dialog.setWindowTitle(QCoreApplication.translate("Dialog", u"Dialog", None)) + self.input.setPlaceholderText(QCoreApplication.translate("Dialog", u"Message Contents", None)) + self.send.setText(QCoreApplication.translate("Dialog", u"Send", None)) + # retranslateUi + diff --git a/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/websocketclientwrapper.py b/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/websocketclientwrapper.py new file mode 100644 index 0000000..24505b0 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/websocketclientwrapper.py @@ -0,0 +1,72 @@ +############################################################################# +## +## Copyright (C) 2017 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Milian Wolff +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2.QtCore import QObject, Signal, Slot + +from websockettransport import WebSocketTransport + + +class WebSocketClientWrapper(QObject): + """Wraps connected QWebSockets clients in WebSocketTransport objects. + + This code is all that is required to connect incoming WebSockets to + the WebChannel. Any kind of remote JavaScript client that supports + WebSockets can thus receive messages and access the published objects. + """ + clientConnected = Signal(WebSocketTransport) + + def __init__(self, server, parent=None): + """Construct the client wrapper with the given parent. All clients + connecting to the QWebSocketServer will be automatically wrapped + in WebSocketTransport objects.""" + super(WebSocketClientWrapper, self).__init__(parent) + self._server = server + self._server.newConnection.connect(self.handleNewConnection) + self._transports = [] + + @Slot() + def handleNewConnection(self): + """Wrap an incoming WebSocket connection in a WebSocketTransport + object.""" + socket = self._server.nextPendingConnection() + transport = WebSocketTransport(socket) + self._transports.append(transport) + self.clientConnected.emit(transport) diff --git a/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/websockettransport.py b/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/websockettransport.py new file mode 100644 index 0000000..4e42e76 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/webchannel/standalone/websockettransport.py @@ -0,0 +1,88 @@ +############################################################################# +## +## Copyright (C) 2017 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Milian Wolff +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2.QtWebChannel import QWebChannelAbstractTransport +from PySide2.QtCore import QByteArray, QJsonDocument, Slot + + +class WebSocketTransport(QWebChannelAbstractTransport): + """QWebChannelAbstractSocket implementation using a QWebSocket internally. + + The transport delegates all messages received over the QWebSocket over + its textMessageReceived signal. Analogously, all calls to + sendTextMessage will be sent over the QWebSocket to the remote client. + """ + + def __init__(self, socket): + """Construct the transport object and wrap the given socket. + The socket is also set as the parent of the transport object.""" + super(WebSocketTransport, self).__init__(socket) + self._socket = socket + self._socket.textMessageReceived.connect(self.textMessageReceived) + self._socket.disconnected.connect(self._disconnected) + + def __del__(self): + """Destroys the WebSocketTransport.""" + self._socket.deleteLater() + + def _disconnected(self): + self.deleteLater() + + def sendMessage(self, message): + """Serialize the JSON message and send it as a text message via the + WebSocket to the client.""" + doc = QJsonDocument(message) + json_message = str(doc.toJson(QJsonDocument.Compact), "utf-8") + self._socket.sendTextMessage(json_message) + + @Slot(str) + def textMessageReceived(self, message_data_in): + """Deserialize the stringified JSON messageData and emit + messageReceived.""" + message_data = QByteArray(bytes(message_data_in, encoding='utf8')) + message = QJsonDocument.fromJson(message_data) + if message.isNull(): + print("Failed to parse text message as JSON object:", message_data) + return + if not message.isObject(): + print("Received JSON message that is not an object: ", message_data) + return + self.messageReceived.emit(message.object(), self) diff --git a/venv/Lib/site-packages/PySide2/examples/webenginequick/__pycache__/quicknanobrowser.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/webenginequick/__pycache__/quicknanobrowser.cpython-310.pyc new file mode 100644 index 0000000..7ce512c Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/webenginequick/__pycache__/quicknanobrowser.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/webenginequick/browser.qml b/venv/Lib/site-packages/PySide2/examples/webenginequick/browser.qml new file mode 100644 index 0000000..7814538 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/webenginequick/browser.qml @@ -0,0 +1,53 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt for Python examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Window 2.0 +import QtWebEngine 1.0 + +Window { + width: 1024 + height: 768 + visible: true + WebEngineView { + anchors.fill: parent + url: "https://www.qt.io" + } +} diff --git a/venv/Lib/site-packages/PySide2/examples/webenginequick/quicknanobrowser.py b/venv/Lib/site-packages/PySide2/examples/webenginequick/quicknanobrowser.py new file mode 100644 index 0000000..24e58ea --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/webenginequick/quicknanobrowser.py @@ -0,0 +1,59 @@ +############################################################################# +## +## Copyright (C) 2017 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 WebEngine QtQuick 2 Example""" + +import os +from PySide2.QtCore import QUrl +from PySide2.QtQml import QQmlApplicationEngine +from PySide2.QtWidgets import QApplication +from PySide2.QtWebEngine import QtWebEngine + +def main(): + app = QApplication([]) + QtWebEngine.initialize() + engine = QQmlApplicationEngine() + qml_file_path = os.path.join(os.path.dirname(__file__), 'browser.qml') + qml_url = QUrl.fromLocalFile(os.path.abspath(qml_file_path)) + engine.load(qml_url) + app.exec_() + +if __name__ == '__main__': + main() diff --git a/venv/Lib/site-packages/PySide2/examples/webenginequick/webenginequick.pyproject b/venv/Lib/site-packages/PySide2/examples/webenginequick/webenginequick.pyproject new file mode 100644 index 0000000..dd90392 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/webenginequick/webenginequick.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["quicknanobrowser.py", "browser.qml"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/webenginewidgets/__pycache__/simplebrowser.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/__pycache__/simplebrowser.cpython-310.pyc new file mode 100644 index 0000000..c8b9eee Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/__pycache__/simplebrowser.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/webenginewidgets/simplebrowser.py b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/simplebrowser.py new file mode 100644 index 0000000..365e69a --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/simplebrowser.py @@ -0,0 +1,101 @@ + +############################################################################# +## +## Copyright (C) 2017 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 WebEngineWidgets Example""" + +import sys +from PySide2.QtCore import QUrl +from PySide2.QtGui import QIcon +from PySide2.QtWidgets import (QApplication, QLineEdit, + QMainWindow, QPushButton, QToolBar) +from PySide2.QtWebEngineWidgets import QWebEnginePage, QWebEngineView + +class MainWindow(QMainWindow): + + def __init__(self): + super(MainWindow, self).__init__() + + self.setWindowTitle('PySide2 WebEngineWidgets Example') + + self.toolBar = QToolBar() + self.addToolBar(self.toolBar) + self.backButton = QPushButton() + self.backButton.setIcon(QIcon(':/qt-project.org/styles/commonstyle/images/left-32.png')) + self.backButton.clicked.connect(self.back) + self.toolBar.addWidget(self.backButton) + self.forwardButton = QPushButton() + self.forwardButton.setIcon(QIcon(':/qt-project.org/styles/commonstyle/images/right-32.png')) + self.forwardButton.clicked.connect(self.forward) + self.toolBar.addWidget(self.forwardButton) + + self.addressLineEdit = QLineEdit() + self.addressLineEdit.returnPressed.connect(self.load) + self.toolBar.addWidget(self.addressLineEdit) + + self.webEngineView = QWebEngineView() + self.setCentralWidget(self.webEngineView) + initialUrl = 'http://qt.io' + self.addressLineEdit.setText(initialUrl) + self.webEngineView.load(QUrl(initialUrl)) + self.webEngineView.page().titleChanged.connect(self.setWindowTitle) + self.webEngineView.page().urlChanged.connect(self.urlChanged) + + def load(self): + url = QUrl.fromUserInput(self.addressLineEdit.text()) + if url.isValid(): + self.webEngineView.load(url) + + def back(self): + self.webEngineView.page().triggerAction(QWebEnginePage.Back) + + def forward(self): + self.webEngineView.page().triggerAction(QWebEnginePage.Forward) + + def urlChanged(self, url): + self.addressLineEdit.setText(url.toString()) + +if __name__ == '__main__': + app = QApplication(sys.argv) + mainWin = MainWindow() + availableGeometry = app.desktop().availableGeometry(mainWin) + mainWin.resize(availableGeometry.width() * 2 / 3, availableGeometry.height() * 2 / 3) + mainWin.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/__pycache__/bookmarkwidget.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/__pycache__/bookmarkwidget.cpython-310.pyc new file mode 100644 index 0000000..13e416c Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/__pycache__/bookmarkwidget.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/__pycache__/browsertabwidget.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/__pycache__/browsertabwidget.cpython-310.pyc new file mode 100644 index 0000000..23c8a08 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/__pycache__/browsertabwidget.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/__pycache__/downloadwidget.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/__pycache__/downloadwidget.cpython-310.pyc new file mode 100644 index 0000000..9f1e6c3 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/__pycache__/downloadwidget.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/__pycache__/findtoolbar.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/__pycache__/findtoolbar.cpython-310.pyc new file mode 100644 index 0000000..ef51b09 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/__pycache__/findtoolbar.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/__pycache__/historywindow.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/__pycache__/historywindow.cpython-310.pyc new file mode 100644 index 0000000..b98a920 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/__pycache__/historywindow.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/__pycache__/main.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/__pycache__/main.cpython-310.pyc new file mode 100644 index 0000000..db6fd64 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/__pycache__/main.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/__pycache__/webengineview.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/__pycache__/webengineview.cpython-310.pyc new file mode 100644 index 0000000..6df5fdb Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/__pycache__/webengineview.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/bookmarkwidget.py b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/bookmarkwidget.py new file mode 100644 index 0000000..612c682 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/bookmarkwidget.py @@ -0,0 +1,277 @@ +############################################################################# +## +## Copyright (C) 2018 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +import json +import os +import warnings + +from PySide2 import QtCore +from PySide2.QtCore import QDir, QFileInfo, QStandardPaths, Qt, QUrl +from PySide2.QtGui import QIcon, QStandardItem, QStandardItemModel +from PySide2.QtWidgets import QMenu, QMessageBox, QTreeView + +_url_role = Qt.UserRole + 1 + +# Default bookmarks as an array of arrays which is the form +# used to read from/write to a .json bookmarks file +_default_bookmarks = [ + ['Tool Bar'], + ['http://qt.io', 'Qt', ':/qt-project.org/qmessagebox/images/qtlogo-64.png'], + ['https://download.qt.io/snapshots/ci/pyside/', 'Downloads'], + ['https://doc.qt.io/qtforpython/', 'Documentation'], + ['https://bugreports.qt.io/projects/PYSIDE/', 'Bug Reports'], + ['https://www.python.org/', 'Python', None], + ['https://wiki.qt.io/PySide2', 'Qt for Python', None], + ['Other Bookmarks'] +] + + +def _config_dir(): + return '{}/QtForPythonBrowser'.format( + QStandardPaths.writableLocation(QStandardPaths.ConfigLocation)) + + +_bookmark_file = 'bookmarks.json' + + +def _create_folder_item(title): + result = QStandardItem(title) + result.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable) + return result + + +def _create_item(url, title, icon): + result = QStandardItem(title) + result.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable) + result.setData(url, _url_role) + if icon is not None: + result.setIcon(icon) + return result + + +# Create the model from an array of arrays +def _create_model(parent, serialized_bookmarks): + result = QStandardItemModel(0, 1, parent) + last_folder_item = None + for entry in serialized_bookmarks: + if len(entry) == 1: + last_folder_item = _create_folder_item(entry[0]) + result.appendRow(last_folder_item) + else: + url = QUrl.fromUserInput(entry[0]) + title = entry[1] + icon = QIcon(entry[2]) if len(entry) > 2 and entry[2] else None + last_folder_item.appendRow(_create_item(url, title, icon)) + return result + + +# Serialize model into an array of arrays, writing out the icons +# into .png files under directory in the process +def _serialize_model(model, directory): + result = [] + folder_count = model.rowCount() + for f in range(0, folder_count): + folder_item = model.item(f) + result.append([folder_item.text()]) + item_count = folder_item.rowCount() + for i in range(0, item_count): + item = folder_item.child(i) + entry = [item.data(_url_role).toString(), item.text()] + icon = item.icon() + if not icon.isNull(): + icon_sizes = icon.availableSizes() + largest_size = icon_sizes[len(icon_sizes) - 1] + icon_file_name = '{}/icon{:02}_{:02}_{}.png'.format(directory, + f, i, + largest_size.width()) + icon.pixmap(largest_size).save(icon_file_name, 'PNG') + entry.append(icon_file_name) + result.append(entry) + return result + + +# Bookmarks as a tree view to be used in a dock widget with +# functionality to persist and populate tool bars and menus. +class BookmarkWidget(QTreeView): + """Provides a tree view to manage the bookmarks.""" + + open_bookmark = QtCore.Signal(QUrl) + open_bookmark_in_new_tab = QtCore.Signal(QUrl) + changed = QtCore.Signal() + + def __init__(self): + super(BookmarkWidget, self).__init__() + self.setRootIsDecorated(False) + self.setUniformRowHeights(True) + self.setHeaderHidden(True) + self._model = _create_model(self, self._read_bookmarks()) + self.setModel(self._model) + self.expandAll() + self.activated.connect(self._activated) + self._model.rowsInserted.connect(self._changed) + self._model.rowsRemoved.connect(self._changed) + self._model.dataChanged.connect(self._changed) + self._modified = False + + def _changed(self): + self._modified = True + self.changed.emit() + + def _activated(self, index): + item = self._model.itemFromIndex(index) + self.open_bookmark.emit(item.data(_url_role)) + + def _action_activated(self, index): + action = self.sender() + self.open_bookmark.emit(action.data()) + + def _tool_bar_item(self): + return self._model.item(0, 0) + + def _other_item(self): + return self._model.item(1, 0) + + def add_bookmark(self, url, title, icon): + self._other_item().appendRow(_create_item(url, title, icon)) + + def add_tool_bar_bookmark(self, url, title, icon): + self._tool_bar_item().appendRow(_create_item(url, title, icon)) + + # Synchronize the bookmarks under parent_item to a target_object + # like QMenu/QToolBar, which has a list of actions. Update + # the existing actions, append new ones if needed or hide + # superfluous ones + def _populate_actions(self, parent_item, target_object, first_action): + existing_actions = target_object.actions() + existing_action_count = len(existing_actions) + a = first_action + row_count = parent_item.rowCount() + for r in range(0, row_count): + item = parent_item.child(r) + title = item.text() + icon = item.icon() + url = item.data(_url_role) + if a < existing_action_count: + action = existing_actions[a] + if (title != action.toolTip()): + action.setText(BookmarkWidget.short_title(title)) + action.setIcon(icon) + action.setToolTip(title) + action.setData(url) + action.setVisible(True) + else: + short_title = BookmarkWidget.short_title(title) + action = target_object.addAction(icon, short_title) + action.setToolTip(title) + action.setData(url) + action.triggered.connect(self._action_activated) + a = a + 1 + while a < existing_action_count: + existing_actions[a].setVisible(False) + a = a + 1 + + def populate_tool_bar(self, tool_bar): + self._populate_actions(self._tool_bar_item(), tool_bar, 0) + + def populate_other(self, menu, first_action): + self._populate_actions(self._other_item(), menu, first_action) + + def _current_item(self): + index = self.currentIndex() + if index.isValid(): + item = self._model.itemFromIndex(index) + if item.parent(): # exclude top level items + return item + return None + + def context_menu_event(self, event): + context_menu = QMenu() + open_in_new_tab_action = context_menu.addAction("Open in New Tab") + remove_action = context_menu.addAction("Remove...") + current_item = self._current_item() + open_in_new_tab_action.setEnabled(current_item is not None) + remove_action.setEnabled(current_item is not None) + chosen_action = context_menu.exec_(event.globalPos()) + if chosen_action == open_in_new_tab_action: + self.open_bookmarkInNewTab.emit(current_item.data(_url_role)) + elif chosen_action == remove_action: + self._remove_item(current_item) + + def _remove_item(self, item): + message = "Would you like to remove \"{}\"?".format(item.text()) + button = QMessageBox.question(self, "Remove", message, + QMessageBox.Yes | QMessageBox.No) + if button == QMessageBox.Yes: + item.parent().removeRow(item.row()) + + def write_bookmarks(self): + if not self._modified: + return + dir_path = _config_dir() + native_dir_path = QDir.toNativeSeparators(dir_path) + dir = QFileInfo(dir_path) + if not dir.isDir(): + print('Creating {}...'.format(native_dir_path)) + if not QDir(dir.absolutePath()).mkpath(dir.fileName()): + warnings.warn('Cannot create {}.'.format(native_dir_path), + RuntimeWarning) + return + serialized_model = _serialize_model(self._model, dir_path) + bookmark_file_name = os.path.join(native_dir_path, _bookmark_file) + print('Writing {}...'.format(bookmark_file_name)) + with open(bookmark_file_name, 'w') as bookmark_file: + json.dump(serialized_model, bookmark_file, indent=4) + + def _read_bookmarks(self): + bookmark_file_name = os.path.join(QDir.toNativeSeparators(_config_dir()), + _bookmark_file) + if os.path.exists(bookmark_file_name): + print('Reading {}...'.format(bookmark_file_name)) + return json.load(open(bookmark_file_name)) + return _default_bookmarks + + # Return a short title for a bookmark action, + # "Qt | Cross Platform.." -> "Qt" + @staticmethod + def short_title(t): + i = t.find(' | ') + if i == -1: + i = t.find(' - ') + return t[0:i] if i != -1 else t diff --git a/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/browsertabwidget.py b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/browsertabwidget.py new file mode 100644 index 0000000..093eed6 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/browsertabwidget.py @@ -0,0 +1,244 @@ +############################################################################# +## +## Copyright (C) 2018 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from functools import partial + +from bookmarkwidget import BookmarkWidget +from webengineview import WebEngineView +from historywindow import HistoryWindow +from PySide2 import QtCore +from PySide2.QtCore import Qt, QUrl +from PySide2.QtWidgets import QMenu, QTabBar, QTabWidget +from PySide2.QtWebEngineWidgets import QWebEngineDownloadItem, QWebEnginePage + + +class BrowserTabWidget(QTabWidget): + """Enables having several tabs with QWebEngineView.""" + + url_changed = QtCore.Signal(QUrl) + enabled_changed = QtCore.Signal(QWebEnginePage.WebAction, bool) + download_requested = QtCore.Signal(QWebEngineDownloadItem) + + def __init__(self, window_factory_function): + super(BrowserTabWidget, self).__init__() + self.setTabsClosable(True) + self._window_factory_function = window_factory_function + self._webengineviews = [] + self._history_windows = {} # map WebengineView to HistoryWindow + self.currentChanged.connect(self._current_changed) + self.tabCloseRequested.connect(self.handle_tab_close_request) + self._actions_enabled = {} + for web_action in WebEngineView.web_actions(): + self._actions_enabled[web_action] = False + + tab_bar = self.tabBar() + tab_bar.setSelectionBehaviorOnRemove(QTabBar.SelectPreviousTab) + tab_bar.setContextMenuPolicy(Qt.CustomContextMenu) + tab_bar.customContextMenuRequested.connect(self._handle_tab_context_menu) + + def add_browser_tab(self): + factory_func = partial(BrowserTabWidget.add_browser_tab, self) + web_engine_view = WebEngineView(factory_func, + self._window_factory_function) + index = self.count() + self._webengineviews.append(web_engine_view) + title = 'Tab {}'.format(index + 1) + self.addTab(web_engine_view, title) + page = web_engine_view.page() + page.titleChanged.connect(self._title_changed) + page.iconChanged.connect(self._icon_changed) + page.profile().downloadRequested.connect(self._download_requested) + web_engine_view.urlChanged.connect(self._url_changed) + web_engine_view.enabled_changed.connect(self._enabled_changed) + self.setCurrentIndex(index) + return web_engine_view + + def load(self, url): + index = self.currentIndex() + if index >= 0 and url.isValid(): + self._webengineviews[index].setUrl(url) + + def find(self, needle, flags): + index = self.currentIndex() + if index >= 0: + self._webengineviews[index].page().findText(needle, flags) + + def url(self): + index = self.currentIndex() + return self._webengineviews[index].url() if index >= 0 else QUrl() + + def _url_changed(self, url): + index = self.currentIndex() + if index >= 0 and self._webengineviews[index] == self.sender(): + self.url_changed.emit(url) + + def _title_changed(self, title): + index = self._index_of_page(self.sender()) + if (index >= 0): + self.setTabText(index, BookmarkWidget.short_title(title)) + + def _icon_changed(self, icon): + index = self._index_of_page(self.sender()) + if (index >= 0): + self.setTabIcon(index, icon) + + def _enabled_changed(self, web_action, enabled): + index = self.currentIndex() + if index >= 0 and self._webengineviews[index] == self.sender(): + self._check_emit_enabled_changed(web_action, enabled) + + def _check_emit_enabled_changed(self, web_action, enabled): + if enabled != self._actions_enabled[web_action]: + self._actions_enabled[web_action] = enabled + self.enabled_changed.emit(web_action, enabled) + + def _current_changed(self, index): + self._update_actions(index) + self.url_changed.emit(self.url()) + + def _update_actions(self, index): + if index >= 0 and index < len(self._webengineviews): + view = self._webengineviews[index] + for web_action in WebEngineView.web_actions(): + enabled = view.is_web_action_enabled(web_action) + self._check_emit_enabled_changed(web_action, enabled) + + def back(self): + self._trigger_action(QWebEnginePage.Back) + + def forward(self): + self._trigger_action(QWebEnginePage.Forward) + + def reload(self): + self._trigger_action(QWebEnginePage.Reload) + + def undo(self): + self._trigger_action(QWebEnginePage.Undo) + + def redo(self): + self._trigger_action(QWebEnginePage.Redo) + + def cut(self): + self._trigger_action(QWebEnginePage.Cut) + + def copy(self): + self._trigger_action(QWebEnginePage.Copy) + + def paste(self): + self._trigger_action(QWebEnginePage.Paste) + + def select_all(self): + self._trigger_action(QWebEnginePage.SelectAll) + + def show_history(self): + index = self.currentIndex() + if index >= 0: + webengineview = self._webengineviews[index] + history_window = self._history_windows.get(webengineview) + if not history_window: + history = webengineview.page().history() + history_window = HistoryWindow(history, self) + history_window.open_url.connect(self.load) + history_window.setWindowFlags(history_window.windowFlags() + | Qt.Window) + history_window.setWindowTitle('History') + self._history_windows[webengineview] = history_window + else: + history_window.refresh() + history_window.show() + history_window.raise_() + + def zoom_factor(self): + return self._webengineviews[0].zoomFactor() if self._webengineviews else 1.0 + + def set_zoom_factor(self, z): + for w in self._webengineviews: + w.setZoomFactor(z) + + def _handle_tab_context_menu(self, point): + index = self.tabBar().tabAt(point) + if index < 0: + return + tab_count = len(self._webengineviews) + context_menu = QMenu() + duplicate_tab_action = context_menu.addAction("Duplicate Tab") + close_other_tabs_action = context_menu.addAction("Close Other Tabs") + close_other_tabs_action.setEnabled(tab_count > 1) + close_tabs_to_the_right_action = context_menu.addAction("Close Tabs to the Right") + close_tabs_to_the_right_action.setEnabled(index < tab_count - 1) + close_tab_action = context_menu.addAction("&Close Tab") + chosen_action = context_menu.exec_(self.tabBar().mapToGlobal(point)) + if chosen_action == duplicate_tab_action: + current_url = self.url() + self.add_browser_tab().load(current_url) + elif chosen_action == close_other_tabs_action: + for t in range(tab_count - 1, -1, -1): + if t != index: + self.handle_tab_close_request(t) + elif chosen_action == close_tabs_to_the_right_action: + for t in range(tab_count - 1, index, -1): + self.handle_tab_close_request(t) + elif chosen_action == close_tab_action: + self.handle_tab_close_request(index) + + def handle_tab_close_request(self, index): + if (index >= 0 and self.count() > 1): + webengineview = self._webengineviews[index] + if self._history_windows.get(webengineview): + del self._history_windows[webengineview] + self._webengineviews.remove(webengineview) + self.removeTab(index) + + def close_current_tab(self): + self.handle_tab_close_request(self.currentIndex()) + + def _trigger_action(self, action): + index = self.currentIndex() + if index >= 0: + self._webengineviews[index].page().triggerAction(action) + + def _index_of_page(self, web_page): + for p in range(0, len(self._webengineviews)): + if (self._webengineviews[p].page() == web_page): + return p + return -1 + + def _download_requested(self, item): + self.download_requested.emit(item) diff --git a/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/downloadwidget.py b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/downloadwidget.py new file mode 100644 index 0000000..73b8d11 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/downloadwidget.py @@ -0,0 +1,146 @@ +############################################################################# +## +## Copyright (C) 2018 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +import sys +from PySide2 import QtCore +from PySide2.QtCore import QDir, QFileInfo, QStandardPaths, Qt, QUrl +from PySide2.QtGui import QDesktopServices +from PySide2.QtWidgets import QMenu, QProgressBar, QStyleFactory +from PySide2.QtWebEngineWidgets import QWebEngineDownloadItem + + +# A QProgressBar with context menu for displaying downloads in a QStatusBar. +class DownloadWidget(QProgressBar): + """Lets you track progress of a QWebEngineDownloadItem.""" + finished = QtCore.Signal() + remove_requested = QtCore.Signal() + + def __init__(self, download_item): + super(DownloadWidget, self).__init__() + self._download_item = download_item + download_item.finished.connect(self._finished) + download_item.downloadProgress.connect(self._download_progress) + download_item.stateChanged.connect(self._update_tool_tip()) + path = download_item.path() + self.setMaximumWidth(300) + # Shorten 'PySide2-5.11.0a1-5.11.0-cp36-cp36m-linux_x86_64.whl'... + description = QFileInfo(path).fileName() + description_length = len(description) + if description_length > 30: + description = '{}...{}'.format(description[0:10], + description[description_length - 10:]) + self.setFormat('{} %p%'.format(description)) + self.setOrientation(Qt.Horizontal) + self.setMinimum(0) + self.setValue(0) + self.setMaximum(100) + self._update_tool_tip() + # Force progress bar text to be shown on macoS by using 'fusion' style + if sys.platform == 'darwin': + self.setStyle(QStyleFactory.create('fusion')) + + @staticmethod + def open_file(file): + QDesktopServices.openUrl(QUrl.fromLocalFile(file)) + + @staticmethod + def open_download_directory(): + path = QStandardPaths.writableLocation(QStandardPaths.DownloadLocation) + DownloadWidget.open_file(path) + + def state(self): + return self._download_item.state() + + def _update_tool_tip(self): + path = self._download_item.path() + tool_tip = "{}\n{}".format(self._download_item.url().toString(), + QDir.toNativeSeparators(path)) + total_bytes = self._download_item.totalBytes() + if total_bytes > 0: + tool_tip += "\n{}K".format(total_bytes / 1024) + state = self.state() + if state == QWebEngineDownloadItem.DownloadRequested: + tool_tip += "\n(requested)" + elif state == QWebEngineDownloadItem.DownloadInProgress: + tool_tip += "\n(downloading)" + elif state == QWebEngineDownloadItem.DownloadCompleted: + tool_tip += "\n(completed)" + elif state == QWebEngineDownloadItem.DownloadCancelled: + tool_tip += "\n(cancelled)" + else: + tool_tip += "\n(interrupted)" + self.setToolTip(tool_tip) + + def _download_progress(self, bytes_received, bytes_total): + self.setValue(int(100 * bytes_received / bytes_total)) + + def _finished(self): + self._update_tool_tip() + self.finished.emit() + + def _launch(self): + DownloadWidget.open_file(self._download_item.path()) + + def mouseDoubleClickEvent(self, event): + if self.state() == QWebEngineDownloadItem.DownloadCompleted: + self._launch() + + def contextMenuEvent(self, event): + state = self.state() + context_menu = QMenu() + launch_action = context_menu.addAction("Launch") + launch_action.setEnabled(state == QWebEngineDownloadItem.DownloadCompleted) + show_in_folder_action = context_menu.addAction("Show in Folder") + show_in_folder_action.setEnabled(state == QWebEngineDownloadItem.DownloadCompleted) + cancel_action = context_menu.addAction("Cancel") + cancel_action.setEnabled(state == QWebEngineDownloadItem.DownloadInProgress) + remove_action = context_menu.addAction("Remove") + remove_action.setEnabled(state != QWebEngineDownloadItem.DownloadInProgress) + + chosen_action = context_menu.exec_(event.globalPos()) + if chosen_action == launch_action: + self._launch() + elif chosen_action == show_in_folder_action: + path = QFileInfo(self._download_item.path()).absolutePath() + DownloadWidget.open_file(path) + elif chosen_action == cancel_action: + self._download_item.cancel() + elif chosen_action == remove_action: + self.remove_requested.emit() diff --git a/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/findtoolbar.py b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/findtoolbar.py new file mode 100644 index 0000000..3557c2e --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/findtoolbar.py @@ -0,0 +1,99 @@ +############################################################################# +## +## Copyright (C) 2018 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2 import QtCore +from PySide2.QtCore import Qt +from PySide2.QtGui import QIcon, QKeySequence +from PySide2.QtWidgets import QCheckBox, QLineEdit, QToolBar, QToolButton +from PySide2.QtWebEngineWidgets import QWebEnginePage + + +# A Find tool bar (bottom area) +class FindToolBar(QToolBar): + + find = QtCore.Signal(str, QWebEnginePage.FindFlags) + + def __init__(self): + super(FindToolBar, self).__init__() + self._line_edit = QLineEdit() + self._line_edit.setClearButtonEnabled(True) + self._line_edit.setPlaceholderText("Find...") + self._line_edit.setMaximumWidth(300) + self._line_edit.returnPressed.connect(self._find_next) + self.addWidget(self._line_edit) + + self._previous_button = QToolButton() + style_icons = ':/qt-project.org/styles/commonstyle/images/' + self._previous_button.setIcon(QIcon(style_icons + 'up-32.png')) + self._previous_button.clicked.connect(self._find_previous) + self.addWidget(self._previous_button) + + self._next_button = QToolButton() + self._next_button.setIcon(QIcon(style_icons + 'down-32.png')) + self._next_button.clicked.connect(self._find_next) + self.addWidget(self._next_button) + + self._case_sensitive_checkbox = QCheckBox('Case Sensitive') + self.addWidget(self._case_sensitive_checkbox) + + self._hideButton = QToolButton() + self._hideButton.setShortcut(QKeySequence(Qt.Key_Escape)) + self._hideButton.setIcon(QIcon(style_icons + 'closedock-16.png')) + self._hideButton.clicked.connect(self.hide) + self.addWidget(self._hideButton) + + def focus_find(self): + self._line_edit.setFocus() + + def _emit_find(self, backward): + needle = self._line_edit.text().strip() + if needle: + flags = QWebEnginePage.FindFlags() + if self._case_sensitive_checkbox.isChecked(): + flags |= QWebEnginePage.FindCaseSensitively + if backward: + flags |= QWebEnginePage.FindBackward + self.find.emit(needle, flags) + + def _find_next(self): + self._emit_find(False) + + def _find_previous(self): + self._emit_find(True) diff --git a/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/historywindow.py b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/historywindow.py new file mode 100644 index 0000000..6ce7797 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/historywindow.py @@ -0,0 +1,103 @@ +############################################################################# +## +## Copyright (C) 2019 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2.QtWidgets import QApplication, QTreeView + +from PySide2.QtCore import Signal, QAbstractTableModel, QModelIndex, Qt, QUrl + + +class HistoryModel(QAbstractTableModel): + + def __init__(self, history, parent=None): + super(HistoryModel, self).__init__(parent) + self._history = history + + def headerData(self, section, orientation, role=Qt.DisplayRole): + if orientation == Qt.Horizontal and role == Qt.DisplayRole: + return 'Title' if section == 0 else 'Url' + return None + + def rowCount(self, index=QModelIndex()): + return self._history.count() + + def columnCount(self, index=QModelIndex()): + return 2 + + def item_at(self, model_index): + return self._history.itemAt(model_index.row()) + + def data(self, index, role=Qt.DisplayRole): + item = self.item_at(index) + column = index.column() + if role == Qt.DisplayRole: + return item.title() if column == 0 else item.url().toString() + return None + + def refresh(self): + self.beginResetModel() + self.endResetModel() + + +class HistoryWindow(QTreeView): + + open_url = Signal(QUrl) + + def __init__(self, history, parent): + super(HistoryWindow, self).__init__(parent) + + self._model = HistoryModel(history, self) + self.setModel(self._model) + self.activated.connect(self._activated) + + screen = QApplication.desktop().screenGeometry(parent) + self.resize(screen.width() / 3, screen.height() / 3) + self._adjustSize() + + def refresh(self): + self._model.refresh() + self._adjustSize() + + def _adjustSize(self): + if (self._model.rowCount() > 0): + self.resizeColumnToContents(0) + + def _activated(self, index): + item = self._model.item_at(index) + self.open_url.emit(item.url()) diff --git a/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/main.py b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/main.py new file mode 100644 index 0000000..438dd5c --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/main.py @@ -0,0 +1,395 @@ + +############################################################################# +## +## Copyright (C) 2018 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 WebEngineWidgets Example""" + +import sys +from bookmarkwidget import BookmarkWidget +from browsertabwidget import BrowserTabWidget +from downloadwidget import DownloadWidget +from findtoolbar import FindToolBar +from webengineview import WebEngineView +from PySide2 import QtCore +from PySide2.QtCore import Qt, QUrl +from PySide2.QtGui import QKeySequence, QIcon +from PySide2.QtWidgets import (QAction, QApplication, QDockWidget, QLabel, + QLineEdit, QMainWindow, QToolBar) +from PySide2.QtWebEngineWidgets import QWebEngineDownloadItem, QWebEnginePage + +main_windows = [] + + +def create_main_window(): + """Creates a MainWindow using 75% of the available screen resolution.""" + main_win = MainWindow() + main_windows.append(main_win) + available_geometry = app.desktop().availableGeometry(main_win) + main_win.resize(available_geometry.width() * 2 / 3, + available_geometry.height() * 2 / 3) + main_win.show() + return main_win + + +def create_main_window_with_browser(): + """Creates a MainWindow with a BrowserTabWidget.""" + main_win = create_main_window() + return main_win.add_browser_tab() + + +class MainWindow(QMainWindow): + """Provides the parent window that includes the BookmarkWidget, + BrowserTabWidget, and a DownloadWidget, to offer the complete + web browsing experience.""" + + def __init__(self): + super(MainWindow, self).__init__() + + self.setWindowTitle('PySide2 tabbed browser Example') + + self._tab_widget = BrowserTabWidget(create_main_window_with_browser) + self._tab_widget.enabled_changed.connect(self._enabled_changed) + self._tab_widget.download_requested.connect(self._download_requested) + self.setCentralWidget(self._tab_widget) + self.connect(self._tab_widget, QtCore.SIGNAL("url_changed(QUrl)"), + self.url_changed) + + self._bookmark_dock = QDockWidget() + self._bookmark_dock.setWindowTitle('Bookmarks') + self._bookmark_widget = BookmarkWidget() + self._bookmark_widget.open_bookmark.connect(self.load_url) + self._bookmark_widget.open_bookmark_in_new_tab.connect(self.load_url_in_new_tab) + self._bookmark_dock.setWidget(self._bookmark_widget) + self.addDockWidget(Qt.LeftDockWidgetArea, self._bookmark_dock) + + self._find_tool_bar = None + + self._actions = {} + self._create_menu() + + self._tool_bar = QToolBar() + self.addToolBar(self._tool_bar) + for action in self._actions.values(): + if not action.icon().isNull(): + self._tool_bar.addAction(action) + + self._addres_line_edit = QLineEdit() + self._addres_line_edit.setClearButtonEnabled(True) + self._addres_line_edit.returnPressed.connect(self.load) + self._tool_bar.addWidget(self._addres_line_edit) + self._zoom_label = QLabel() + self.statusBar().addPermanentWidget(self._zoom_label) + self._update_zoom_label() + + self._bookmarksToolBar = QToolBar() + self.addToolBar(Qt.TopToolBarArea, self._bookmarksToolBar) + self.insertToolBarBreak(self._bookmarksToolBar) + self._bookmark_widget.changed.connect(self._update_bookmarks) + self._update_bookmarks() + + def _update_bookmarks(self): + self._bookmark_widget.populate_tool_bar(self._bookmarksToolBar) + self._bookmark_widget.populate_other(self._bookmark_menu, 3) + + def _create_menu(self): + file_menu = self.menuBar().addMenu("&File") + exit_action = QAction(QIcon.fromTheme("application-exit"), "E&xit", + self, shortcut="Ctrl+Q", triggered=qApp.quit) + file_menu.addAction(exit_action) + + navigation_menu = self.menuBar().addMenu("&Navigation") + + style_icons = ':/qt-project.org/styles/commonstyle/images/' + back_action = QAction(QIcon.fromTheme("go-previous", + QIcon(style_icons + 'left-32.png')), + "Back", self, + shortcut=QKeySequence(QKeySequence.Back), + triggered=self._tab_widget.back) + self._actions[QWebEnginePage.Back] = back_action + back_action.setEnabled(False) + navigation_menu.addAction(back_action) + forward_action = QAction(QIcon.fromTheme("go-next", + QIcon(style_icons + 'right-32.png')), + "Forward", self, + shortcut=QKeySequence(QKeySequence.Forward), + triggered=self._tab_widget.forward) + forward_action.setEnabled(False) + self._actions[QWebEnginePage.Forward] = forward_action + + navigation_menu.addAction(forward_action) + reload_action = QAction(QIcon(style_icons + 'refresh-32.png'), + "Reload", self, + shortcut=QKeySequence(QKeySequence.Refresh), + triggered=self._tab_widget.reload) + self._actions[QWebEnginePage.Reload] = reload_action + reload_action.setEnabled(False) + navigation_menu.addAction(reload_action) + + navigation_menu.addSeparator() + + new_tab_action = QAction("New Tab", self, + shortcut='Ctrl+T', + triggered=self.add_browser_tab) + navigation_menu.addAction(new_tab_action) + + close_tab_action = QAction("Close Current Tab", self, + shortcut="Ctrl+W", + triggered=self._close_current_tab) + navigation_menu.addAction(close_tab_action) + + navigation_menu.addSeparator() + + history_action = QAction("History...", self, + triggered=self._tab_widget.show_history) + navigation_menu.addAction(history_action) + + edit_menu = self.menuBar().addMenu("&Edit") + + find_action = QAction("Find", self, + shortcut=QKeySequence(QKeySequence.Find), + triggered=self._show_find) + edit_menu.addAction(find_action) + + edit_menu.addSeparator() + undo_action = QAction("Undo", self, + shortcut=QKeySequence(QKeySequence.Undo), + triggered=self._tab_widget.undo) + self._actions[QWebEnginePage.Undo] = undo_action + undo_action.setEnabled(False) + edit_menu.addAction(undo_action) + + redo_action = QAction("Redo", self, + shortcut=QKeySequence(QKeySequence.Redo), + triggered=self._tab_widget.redo) + self._actions[QWebEnginePage.Redo] = redo_action + redo_action.setEnabled(False) + edit_menu.addAction(redo_action) + + edit_menu.addSeparator() + + cut_action = QAction("Cut", self, + shortcut=QKeySequence(QKeySequence.Cut), + triggered=self._tab_widget.cut) + self._actions[QWebEnginePage.Cut] = cut_action + cut_action.setEnabled(False) + edit_menu.addAction(cut_action) + + copy_action = QAction("Copy", self, + shortcut=QKeySequence(QKeySequence.Copy), + triggered=self._tab_widget.copy) + self._actions[QWebEnginePage.Copy] = copy_action + copy_action.setEnabled(False) + edit_menu.addAction(copy_action) + + paste_action = QAction("Paste", self, + shortcut=QKeySequence(QKeySequence.Paste), + triggered=self._tab_widget.paste) + self._actions[QWebEnginePage.Paste] = paste_action + paste_action.setEnabled(False) + edit_menu.addAction(paste_action) + + edit_menu.addSeparator() + + select_all_action = QAction("Select All", self, + shortcut=QKeySequence(QKeySequence.SelectAll), + triggered=self._tab_widget.select_all) + self._actions[QWebEnginePage.SelectAll] = select_all_action + select_all_action.setEnabled(False) + edit_menu.addAction(select_all_action) + + self._bookmark_menu = self.menuBar().addMenu("&Bookmarks") + add_bookmark_action = QAction("&Add Bookmark", self, + triggered=self._add_bookmark) + self._bookmark_menu.addAction(add_bookmark_action) + add_tool_bar_bookmark_action = QAction("&Add Bookmark to Tool Bar", self, + triggered=self._add_tool_bar_bookmark) + self._bookmark_menu.addAction(add_tool_bar_bookmark_action) + self._bookmark_menu.addSeparator() + + tools_menu = self.menuBar().addMenu("&Tools") + download_action = QAction("Open Downloads", self, + triggered=DownloadWidget.open_download_directory) + tools_menu.addAction(download_action) + + window_menu = self.menuBar().addMenu("&Window") + + window_menu.addAction(self._bookmark_dock.toggleViewAction()) + + window_menu.addSeparator() + + zoom_in_action = QAction(QIcon.fromTheme("zoom-in"), + "Zoom In", self, + shortcut=QKeySequence(QKeySequence.ZoomIn), + triggered=self._zoom_in) + window_menu.addAction(zoom_in_action) + zoom_out_action = QAction(QIcon.fromTheme("zoom-out"), + "Zoom Out", self, + shortcut=QKeySequence(QKeySequence.ZoomOut), + triggered=self._zoom_out) + window_menu.addAction(zoom_out_action) + + reset_zoom_action = QAction(QIcon.fromTheme("zoom-original"), + "Reset Zoom", self, + shortcut="Ctrl+0", + triggered=self._reset_zoom) + window_menu.addAction(reset_zoom_action) + + about_menu = self.menuBar().addMenu("&About") + about_action = QAction("About Qt", self, + shortcut=QKeySequence(QKeySequence.HelpContents), + triggered=qApp.aboutQt) + about_menu.addAction(about_action) + + def add_browser_tab(self): + return self._tab_widget.add_browser_tab() + + def _close_current_tab(self): + if self._tab_widget.count() > 1: + self._tab_widget.close_current_tab() + else: + self.close() + + def close_event(self, event): + main_windows.remove(self) + event.accept() + + def load(self): + url_string = self._addres_line_edit.text().strip() + if url_string: + self.load_url_string(url_string) + + def load_url_string(self, url_s): + url = QUrl.fromUserInput(url_s) + if (url.isValid()): + self.load_url(url) + + def load_url(self, url): + self._tab_widget.load(url) + + def load_url_in_new_tab(self, url): + self.add_browser_tab().load(url) + + def url_changed(self, url): + self._addres_line_edit.setText(url.toString()) + + def _enabled_changed(self, web_action, enabled): + action = self._actions[web_action] + if action: + action.setEnabled(enabled) + + def _add_bookmark(self): + index = self._tab_widget.currentIndex() + if index >= 0: + url = self._tab_widget.url() + title = self._tab_widget.tabText(index) + icon = self._tab_widget.tabIcon(index) + self._bookmark_widget.add_bookmark(url, title, icon) + + def _add_tool_bar_bookmark(self): + index = self._tab_widget.currentIndex() + if index >= 0: + url = self._tab_widget.url() + title = self._tab_widget.tabText(index) + icon = self._tab_widget.tabIcon(index) + self._bookmark_widget.add_tool_bar_bookmark(url, title, icon) + + def _zoom_in(self): + new_zoom = self._tab_widget.zoom_factor() * 1.5 + if (new_zoom <= WebEngineView.maximum_zoom_factor()): + self._tab_widget.set_zoom_factor(new_zoom) + self._update_zoom_label() + + def _zoom_out(self): + new_zoom = self._tab_widget.zoom_factor() / 1.5 + if (new_zoom >= WebEngineView.minimum_zoom_factor()): + self._tab_widget.set_zoom_factor(new_zoom) + self._update_zoom_label() + + def _reset_zoom(self): + self._tab_widget.set_zoom_factor(1) + self._update_zoom_label() + + def _update_zoom_label(self): + percent = int(self._tab_widget.zoom_factor() * 100) + self._zoom_label.setText("{}%".format(percent)) + + def _download_requested(self, item): + # Remove old downloads before opening a new one + for old_download in self.statusBar().children(): + if (type(old_download).__name__ == 'DownloadWidget' and + old_download.state() != QWebEngineDownloadItem.DownloadInProgress): + self.statusBar().removeWidget(old_download) + del old_download + + item.accept() + download_widget = DownloadWidget(item) + download_widget.remove_requested.connect(self._remove_download_requested, + Qt.QueuedConnection) + self.statusBar().addWidget(download_widget) + + def _remove_download_requested(self): + download_widget = self.sender() + self.statusBar().removeWidget(download_widget) + del download_widget + + def _show_find(self): + if self._find_tool_bar is None: + self._find_tool_bar = FindToolBar() + self._find_tool_bar.find.connect(self._tab_widget.find) + self.addToolBar(Qt.BottomToolBarArea, self._find_tool_bar) + else: + self._find_tool_bar.show() + self._find_tool_bar.focus_find() + + def write_bookmarks(self): + self._bookmark_widget.write_bookmarks() + + +if __name__ == '__main__': + app = QApplication(sys.argv) + main_win = create_main_window() + initial_urls = sys.argv[1:] + if not initial_urls: + initial_urls.append('http://qt.io') + for url in initial_urls: + main_win.load_url_in_new_tab(QUrl.fromUserInput(url)) + exit_code = app.exec_() + main_win.write_bookmarks() + sys.exit(exit_code) diff --git a/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/tabbedbrowser.pyproject b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/tabbedbrowser.pyproject new file mode 100644 index 0000000..1d26848 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/tabbedbrowser.pyproject @@ -0,0 +1,5 @@ +{ + "files": ["main.py", "bookmarkwidget.py", "browsertabwidget.py", + "downloadwidget.py", "findtoolbar.py", "historywindow.py", + "webengineview.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/webengineview.py b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/webengineview.py new file mode 100644 index 0000000..81b156f --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/tabbedbrowser/webengineview.py @@ -0,0 +1,91 @@ +############################################################################# +## +## Copyright (C) 2018 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2.QtWebEngineWidgets import QWebEnginePage, QWebEngineView + +from PySide2 import QtCore + +_web_actions = [QWebEnginePage.Back, QWebEnginePage.Forward, + QWebEnginePage.Reload, + QWebEnginePage.Undo, QWebEnginePage.Redo, + QWebEnginePage.Cut, QWebEnginePage.Copy, + QWebEnginePage.Paste, QWebEnginePage.SelectAll] + + +class WebEngineView(QWebEngineView): + + enabled_changed = QtCore.Signal(QWebEnginePage.WebAction, bool) + + @staticmethod + def web_actions(): + return _web_actions + + @staticmethod + def minimum_zoom_factor(): + return 0.25 + + @staticmethod + def maximum_zoom_factor(): + return 5 + + def __init__(self, tab_factory_func, window_factory_func): + super(WebEngineView, self).__init__() + self._tab_factory_func = tab_factory_func + self._window_factory_func = window_factory_func + page = self.page() + self._actions = {} + for web_action in WebEngineView.web_actions(): + action = page.action(web_action) + action.changed.connect(self._enabled_changed) + self._actions[action] = web_action + + def is_web_action_enabled(self, web_action): + return self.page().action(web_action).isEnabled() + + def createWindow(self, window_type): + if (window_type == QWebEnginePage.WebBrowserTab or + window_type == QWebEnginePage.WebBrowserBackgroundTab): + return self._tab_factory_func() + return self._window_factory_func() + + def _enabled_changed(self): + action = self.sender() + web_action = self._actions[action] + self.enabled_changed.emit(web_action, action.isEnabled()) diff --git a/venv/Lib/site-packages/PySide2/examples/webenginewidgets/webenginewidgets.pyproject b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/webenginewidgets.pyproject new file mode 100644 index 0000000..6bc12af --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/webenginewidgets/webenginewidgets.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["simplebrowser.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/widgetbinding/CMakeLists.txt b/venv/Lib/site-packages/PySide2/examples/widgetbinding/CMakeLists.txt new file mode 100644 index 0000000..a557f90 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgetbinding/CMakeLists.txt @@ -0,0 +1,275 @@ +cmake_minimum_required(VERSION 3.1) +cmake_policy(VERSION 3.1) + +# Enable policy to not use RPATH settings for install_name on macOS. +if(POLICY CMP0068) + cmake_policy(SET CMP0068 NEW) +endif() + +# Enable policy to run automoc on generated files. +if(POLICY CMP0071) + cmake_policy(SET CMP0071 NEW) +endif() + +# Consider changing the project name to something relevant for you. +project(wiggly LANGUAGES CXX) +set(CMAKE_INCLUDE_CURRENT_DIR ON) +set(CMAKE_AUTOMOC ON) +find_package(Qt5 5.12 REQUIRED COMPONENTS Core Gui Widgets) + +# ================================ General configuration ====================================== + +# Set CPP standard to C++11 minimum. +set(CMAKE_CXX_STANDARD 11) + +# The wiggly library for which we will create bindings. You can change the name to something +# relevant for your project. +set(wiggly_library "libwiggly") + +# The name of the generated bindings module (as imported in Python). You can change the name +# to something relevant for your project. +set(bindings_library "wiggly") + +# The header file with all the types and functions for which bindings will be generated. +# Usually it simply includes other headers of the library you are creating bindings for. +set(wrapped_header ${CMAKE_SOURCE_DIR}/bindings.h) + +# The typesystem xml file which defines the relationships between the C++ types / functions +# and the corresponding Python equivalents. +set(typesystem_file ${CMAKE_SOURCE_DIR}/bindings.xml) + +# Specify which C++ files will be generated by shiboken. This includes the module wrapper +# and a '.cpp' file per C++ type. These are needed for generating the module shared +# library. +set(generated_sources + ${CMAKE_CURRENT_BINARY_DIR}/${bindings_library}/wiggly_module_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/${bindings_library}/wigglywidget_wrapper.cpp) + + +# ================================== Shiboken detection ====================================== +# Use provided python interpreter if given. +if(NOT python_interpreter) + find_program(python_interpreter "python") +endif() +message(STATUS "Using python interpreter: ${python_interpreter}") + +# Macro to get various pyside / python include / link flags and paths. +# Uses the not entirely supported utils/pyside2_config.py file. +macro(pyside2_config option output_var) + if(${ARGC} GREATER 2) + set(is_list ${ARGV2}) + else() + set(is_list "") + endif() + + execute_process( + COMMAND ${python_interpreter} "${CMAKE_SOURCE_DIR}/../utils/pyside2_config.py" + ${option} + OUTPUT_VARIABLE ${output_var} + OUTPUT_STRIP_TRAILING_WHITESPACE) + + if ("${${output_var}}" STREQUAL "") + message(FATAL_ERROR "Error: Calling pyside2_config.py ${option} returned no output.") + endif() + if(is_list) + string (REPLACE " " ";" ${output_var} "${${output_var}}") + endif() +endmacro() + +# Query for the shiboken generator path, Python path, include paths and linker flags. +pyside2_config(--shiboken2-module-path shiboken2_module_path) +pyside2_config(--shiboken2-generator-path shiboken2_generator_path) +pyside2_config(--pyside2-path pyside2_path) +pyside2_config(--pyside2-include-path pyside2_include_dir 1) +pyside2_config(--python-include-path python_include_dir) +pyside2_config(--shiboken2-generator-include-path shiboken_include_dir 1) +pyside2_config(--shiboken2-module-shared-libraries-cmake shiboken_shared_libraries 0) +pyside2_config(--python-link-flags-cmake python_linking_data 0) +pyside2_config(--pyside2-shared-libraries-cmake pyside2_shared_libraries 0) + +set(shiboken_path "${shiboken2_generator_path}/shiboken2${CMAKE_EXECUTABLE_SUFFIX}") +if(NOT EXISTS ${shiboken_path}) + message(FATAL_ERROR "Shiboken executable not found at path: ${shiboken_path}") +endif() + + +# ==================================== RPATH configuration ==================================== + + +# ============================================================================================= +# !!! (The section below is deployment related, so in a real world application you will want to +# take care of this properly with some custom script or tool). +# ============================================================================================= +# Enable rpaths so that the built shared libraries find their dependencies. +set(CMAKE_SKIP_BUILD_RPATH FALSE) +set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) +set(CMAKE_INSTALL_RPATH ${shiboken2_module_path} ${CMAKE_CURRENT_SOURCE_DIR}) +set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) +# ============================================================================================= +# !!! End of dubious section. +# ============================================================================================= + + +# =============================== CMake target - wiggly_library =============================== + + +# Get all relevant Qt include dirs, to pass them on to shiboken. +get_property(QT_CORE_INCLUDE_DIRS TARGET Qt5::Core PROPERTY INTERFACE_INCLUDE_DIRECTORIES) +get_property(QT_GUI_INCLUDE_DIRS TARGET Qt5::Gui PROPERTY INTERFACE_INCLUDE_DIRECTORIES) +get_property(QT_WIDGETS_INCLUDE_DIRS TARGET Qt5::Widgets PROPERTY INTERFACE_INCLUDE_DIRECTORIES) +set(QT_INCLUDE_DIRS ${QT_CORE_INCLUDE_DIRS} ${QT_GUI_INCLUDE_DIRS} ${QT_WIDGETS_INCLUDE_DIRS}) +set(INCLUDES "") +foreach(INCLUDE_DIR ${QT_INCLUDE_DIRS}) + list(APPEND INCLUDES "-I${INCLUDE_DIR}") +endforeach() + +# On macOS, check if Qt is a framework build. This affects how include paths should be handled. +get_target_property(QtCore_is_framework Qt5::Core FRAMEWORK) +if (QtCore_is_framework) + get_target_property(qt_core_library_location Qt5::Core LOCATION) + get_filename_component(qt_core_library_location_dir "${qt_core_library_location}" DIRECTORY) + get_filename_component(lib_dir "${qt_core_library_location_dir}/../" ABSOLUTE) + list(APPEND INCLUDES "--framework-include-paths=${lib_dir}") +endif() + +# We need to include the headers for the module bindings that we use. +set(pyside2_additional_includes "") +foreach(INCLUDE_DIR ${pyside2_include_dir}) + list(APPEND pyside2_additional_includes "${INCLUDE_DIR}/QtCore") + list(APPEND pyside2_additional_includes "${INCLUDE_DIR}/QtGui") + list(APPEND pyside2_additional_includes "${INCLUDE_DIR}/QtWidgets") +endforeach() + + +# Define the wiggly shared library for which we will create bindings. +set(${wiggly_library}_sources wigglywidget.cpp) +add_library(${wiggly_library} SHARED ${${wiggly_library}_sources}) +set_property(TARGET ${wiggly_library} PROPERTY PREFIX "") + +# Needed mostly on Windows to export symbols, and create a .lib file, otherwise the binding +# library can't link to the wiggly library. +target_compile_definitions(${wiggly_library} PRIVATE BINDINGS_BUILD) + + +# ====================== Shiboken target for generating binding C++ files ==================== + + +# Set up the options to pass to shiboken. +set(shiboken_options --generator-set=shiboken --enable-parent-ctor-heuristic + --enable-pyside-extensions --enable-return-value-heuristic --use-isnull-as-nb_nonzero + --avoid-protected-hack + ${INCLUDES} + -I${CMAKE_SOURCE_DIR} + -T${CMAKE_SOURCE_DIR} + -T${pyside2_path}/typesystems + --output-directory=${CMAKE_CURRENT_BINARY_DIR} + ) + +set(generated_sources_dependencies ${wrapped_header} ${typesystem_file}) + +# Add custom target to run shiboken to generate the binding cpp files. +add_custom_command(OUTPUT ${generated_sources} + COMMAND ${shiboken_path} + ${shiboken_options} ${wrapped_header} ${typesystem_file} + DEPENDS ${generated_sources_dependencies} + #IMPLICIT_DEPENDS CXX ${wrapped_header} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Running generator for ${typesystem_file}.") + + +# =============================== CMake target - bindings_library ============================= + + +# Set the cpp files which will be used for the bindings library. +set(${bindings_library}_sources ${generated_sources}) + +# Define and build the bindings library. +add_library(${bindings_library} SHARED ${${bindings_library}_sources}) + + +# Apply relevant include and link flags. +target_include_directories(${bindings_library} PRIVATE ${pyside2_additional_includes}) +target_include_directories(${bindings_library} PRIVATE ${pyside2_include_dir}) +target_include_directories(${bindings_library} PRIVATE ${python_include_dir}) +target_include_directories(${bindings_library} PRIVATE ${shiboken_include_dir}) + +target_link_libraries(${wiggly_library} PRIVATE Qt5::Widgets) +target_link_libraries(${bindings_library} PRIVATE Qt5::Widgets) +target_link_libraries(${bindings_library} PRIVATE ${wiggly_library}) +target_link_libraries(${bindings_library} PRIVATE ${pyside2_shared_libraries}) +target_link_libraries(${bindings_library} PRIVATE ${shiboken_shared_libraries}) + +# Adjust the name of generated module. +set_property(TARGET ${bindings_library} PROPERTY PREFIX "") +set_property(TARGET ${bindings_library} PROPERTY OUTPUT_NAME + "${bindings_library}${PYTHON_EXTENSION_SUFFIX}") +if(WIN32) + set_property(TARGET ${bindings_library} PROPERTY SUFFIX ".pyd") +endif() + +# Make sure the linker doesn't complain about not finding Python symbols on macOS. +if(APPLE) + set_target_properties(${bindings_library} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup") +endif(APPLE) + +# Find and link to the python import library only on Windows. +# On Linux and macOS, the undefined symbols will get resolved by the dynamic linker +# (the symbols will be picked up in the Python executable). +if (WIN32) + list(GET python_linking_data 0 python_libdir) + list(GET python_linking_data 1 python_lib) + find_library(python_link_flags ${python_lib} PATHS ${python_libdir} HINTS ${python_libdir}) + target_link_libraries(${bindings_library} PRIVATE ${python_link_flags}) +endif() + +# ================================= Dubious deployment section ================================ + +set(windows_shiboken_shared_libraries) + +if(WIN32) + # ========================================================================================= + # !!! (The section below is deployment related, so in a real world application you will + # want to take care of this properly (this is simply to eliminate errors that users usually + # encounter. + # ========================================================================================= + # Circumvent some "#pragma comment(lib)"s in "include/pyconfig.h" which might force to link + # against a wrong python shared library. + + set(python_versions_list 3 32 33 34 35 36 37 38) + set(python_additional_link_flags "") + foreach(ver ${python_versions_list}) + set(python_additional_link_flags + "${python_additional_link_flags} /NODEFAULTLIB:\"python${ver}_d.lib\"") + set(python_additional_link_flags + "${python_additional_link_flags} /NODEFAULTLIB:\"python${ver}.lib\"") + endforeach() + + set_target_properties(${bindings_library} + PROPERTIES LINK_FLAGS "${python_additional_link_flags}") + + # Compile a list of shiboken shared libraries to be installed, so that + # the user doesn't have to set the PATH manually to point to the PySide2 package. + foreach(library_path ${shiboken_shared_libraries}) + string(REGEX REPLACE ".lib$" ".dll" library_path ${library_path}) + file(TO_CMAKE_PATH ${library_path} library_path) + list(APPEND windows_shiboken_shared_libraries "${library_path}") + endforeach() + # ========================================================================================= + # !!! End of dubious section. + # ========================================================================================= +endif() + +# ============================================================================================= +# !!! (The section below is deployment related, so in a real world application you will want to +# take care of this properly with some custom script or tool). +# ============================================================================================= +# Install the library and the bindings module into the source folder near the main.py file, so +# that the Python interpeter successfully imports the used module. +install(TARGETS ${bindings_library} ${wiggly_library} + LIBRARY DESTINATION ${CMAKE_CURRENT_SOURCE_DIR} + RUNTIME DESTINATION ${CMAKE_CURRENT_SOURCE_DIR} + ) +install(FILES ${windows_shiboken_shared_libraries} DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}) +# ============================================================================================= +# !!! End of dubious section. +# ============================================================================================= diff --git a/venv/Lib/site-packages/PySide2/examples/widgetbinding/README.md b/venv/Lib/site-packages/PySide2/examples/widgetbinding/README.md new file mode 100644 index 0000000..f58a496 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgetbinding/README.md @@ -0,0 +1,74 @@ +# WigglyWidget + +The original Qt/C++ example can be found here: +https://doc.qt.io/qt-5/qtwidgets-widgets-wiggly-example.html + +This example shows how to interact with a custom widget from two +different ways: + + * A full Python translation from a C++ example, + * A Python binding generated from the C++ file. + + +The original example contained three different files: + * `main.cpp/h`, which was translated to `main.py`, + * `dialog.cpp/h`, which was translated to `dialog.py`, + * `wigglywidget.cpp/h`, which was translated to `wigglywidget.py`, + but also remains as is, to enable the binding generation through + Shiboken. + +In the `dialog.py` file you will find two imports that will be related +to each of the two approaches described before:: + + + # Python translated file + from wigglywidget import WigglyWidget + + # Binding module create with Shiboken + from wiggly import WigglyWidget + + +## Steps to build the bindings + +The most important files are: + * `bindings.xml`, to specify the class that we want to expose from C++ + to Python, + * `bindings.h` to include the header of the classes we want to expose + * `CMakeList.txt`, with all the instructions to build the shared libraries + (DLL, or dylib) + * `pyside2_config.py` which is located in the utils directory, one level + up, to get the path for Shiboken and PySide. + +Now create a `build/` directory, and from inside run `cmake ..` to use +the provided `CMakeLists.txt`. +To build, just run `make`, and `make install` to copy the generated files +to the main example directory to be able to run the final example: +`python main.py`. +You should be able to see two identical custom widgets, one being the +Python translation, and the other one being the C++ one. + +### Windows + +For windows it's recommended to use either `nmake`, `jom` or `ninja`, +when running cmake. + +```bash +cmake -H.. -B. -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release # for nmake +cmake -H.. -B. -G "NMake Makefiles JOM" -DCMAKE_BUILD_TYPE=Release # for jom +cmake -H.. -B. -G Ninja -DCMAKE_BUILD_TYPE=Release # for ninja +``` + +### Linux, macOS + +Generally using `make` will be enough, but as in the Windows case, you can use +ninja to build the project. + +```bash +cmake -H.. -B. -G Ninja -DCMAKE_BUILD_TYPE=Release +``` + +## Final words + +Since this example originated by mixing the concepts of the `scriptableapplication` +and `samplebinding` examples, you can complement this README with the ones in +those directories. diff --git a/venv/Lib/site-packages/PySide2/examples/widgetbinding/__pycache__/dialog.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgetbinding/__pycache__/dialog.cpython-310.pyc new file mode 100644 index 0000000..00ecec1 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgetbinding/__pycache__/dialog.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgetbinding/__pycache__/main.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgetbinding/__pycache__/main.cpython-310.pyc new file mode 100644 index 0000000..d7b6ec6 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgetbinding/__pycache__/main.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgetbinding/__pycache__/wigglywidget.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgetbinding/__pycache__/wigglywidget.cpython-310.pyc new file mode 100644 index 0000000..adbba03 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgetbinding/__pycache__/wigglywidget.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgetbinding/bindings.h b/venv/Lib/site-packages/PySide2/examples/widgetbinding/bindings.h new file mode 100644 index 0000000..d592226 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgetbinding/bindings.h @@ -0,0 +1,54 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt for Python examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef BINDINGS_H +#define BINDINGS_H +#include "wigglywidget.h" +#endif // BINDINGS_H diff --git a/venv/Lib/site-packages/PySide2/examples/widgetbinding/bindings.xml b/venv/Lib/site-packages/PySide2/examples/widgetbinding/bindings.xml new file mode 100644 index 0000000..07f1c89 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgetbinding/bindings.xml @@ -0,0 +1,56 @@ + + + + + + diff --git a/venv/Lib/site-packages/PySide2/examples/widgetbinding/dialog.py b/venv/Lib/site-packages/PySide2/examples/widgetbinding/dialog.py new file mode 100644 index 0000000..e521559 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgetbinding/dialog.py @@ -0,0 +1,77 @@ +############################################################################ +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## BSD License Usage +## Alternatively, you may use this file under the terms of the BSD license +## as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################ + +from PySide2.QtWidgets import QDialog, QLineEdit, QVBoxLayout + +# Python binding from the C++ widget +from wiggly import WigglyWidget as WigglyWidgetCPP + +# Python-only widget +from wigglywidget import WigglyWidget as WigglyWidgetPY + + +class Dialog(QDialog): + def __init__(self, parent=None): + super(Dialog, self).__init__(parent) + wiggly_widget_py = WigglyWidgetPY(self) + wiggly_widget_cpp = WigglyWidgetCPP(self) + lineEdit = QLineEdit(self) + + layout = QVBoxLayout(self) + layout.addWidget(wiggly_widget_py) + layout.addWidget(wiggly_widget_cpp) + layout.addWidget(lineEdit) + + lineEdit.textChanged.connect(wiggly_widget_py.setText) + lineEdit.textChanged.connect(wiggly_widget_cpp.setText) + lineEdit.setText("Hello world!") + + self.setWindowTitle("Wiggly") + self.resize(360, 145) diff --git a/venv/Lib/site-packages/PySide2/examples/widgetbinding/macros.h b/venv/Lib/site-packages/PySide2/examples/widgetbinding/macros.h new file mode 100644 index 0000000..224fada --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgetbinding/macros.h @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt for Python examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef MACROS_H +#define MACROS_H + +#include + +// Export symbols when creating .dll and .lib, and import them when using .lib. +#if BINDINGS_BUILD +# define BINDINGS_API Q_DECL_EXPORT +#else +# define BINDINGS_API Q_DECL_IMPORT +#endif + +#endif // MACROS_H diff --git a/venv/Lib/site-packages/PySide2/examples/widgetbinding/main.py b/venv/Lib/site-packages/PySide2/examples/widgetbinding/main.py new file mode 100644 index 0000000..556eb26 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgetbinding/main.py @@ -0,0 +1,61 @@ +############################################################################ +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## BSD License Usage +## Alternatively, you may use this file under the terms of the BSD license +## as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################ + +import sys + +from PySide2.QtWidgets import QApplication + +from dialog import Dialog + +if __name__ == "__main__": + app = QApplication() + w = Dialog() + w.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgetbinding/wigglywidget.cpp b/venv/Lib/site-packages/PySide2/examples/widgetbinding/wigglywidget.cpp new file mode 100644 index 0000000..ab549ef --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgetbinding/wigglywidget.cpp @@ -0,0 +1,111 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "wigglywidget.h" + +#include +#include +#include + +//! [0] +WigglyWidget::WigglyWidget(QWidget *parent) + : QWidget(parent), step(0) +{ + setBackgroundRole(QPalette::Midlight); + setAutoFillBackground(true); + + QFont newFont = font(); + newFont.setPointSize(newFont.pointSize() + 20); + setFont(newFont); + + timer.start(60, this); +} +//! [0] + +//! [1] +void WigglyWidget::paintEvent(QPaintEvent * /* event */) +//! [1] //! [2] +{ + static constexpr int sineTable[16] = { + 0, 38, 71, 92, 100, 92, 71, 38, 0, -38, -71, -92, -100, -92, -71, -38 + }; + + QFontMetrics metrics(font()); + int x = (width() - metrics.horizontalAdvance(text)) / 2; + int y = (height() + metrics.ascent() - metrics.descent()) / 2; + QColor color; +//! [2] + +//! [3] + QPainter painter(this); +//! [3] //! [4] + for (int i = 0; i < text.size(); ++i) { + int index = (step + i) % 16; + color.setHsv((15 - index) * 16, 255, 191); + painter.setPen(color); + painter.drawText(x, y - ((sineTable[index] * metrics.height()) / 400), + QString(text[i])); + x += metrics.horizontalAdvance(text[i]); + } +} +//! [4] + +//! [5] +void WigglyWidget::timerEvent(QTimerEvent *event) +//! [5] //! [6] +{ + if (event->timerId() == timer.timerId()) { + ++step; + update(); + } else { + QWidget::timerEvent(event); + } +//! [6] +} diff --git a/venv/Lib/site-packages/PySide2/examples/widgetbinding/wigglywidget.h b/venv/Lib/site-packages/PySide2/examples/widgetbinding/wigglywidget.h new file mode 100644 index 0000000..d08db05 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgetbinding/wigglywidget.h @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef WIGGLYWIDGET_H +#define WIGGLYWIDGET_H + +#include "macros.h" + +#include +#include + +//! [0] +class BINDINGS_API WigglyWidget : public QWidget +{ + Q_OBJECT + +public: + WigglyWidget(QWidget *parent = nullptr); + +public slots: + void setText(const QString &newText) { text = newText; } + +protected: + void paintEvent(QPaintEvent *event) override; + void timerEvent(QTimerEvent *event) override; + +private: + QBasicTimer timer; + QString text; + int step; +}; +//! [0] + +#endif diff --git a/venv/Lib/site-packages/PySide2/examples/widgetbinding/wigglywidget.py b/venv/Lib/site-packages/PySide2/examples/widgetbinding/wigglywidget.py new file mode 100644 index 0000000..50a0610 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgetbinding/wigglywidget.py @@ -0,0 +1,97 @@ +############################################################################ +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## BSD License Usage +## Alternatively, you may use this file under the terms of the BSD license +## as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################ + +from PySide2.QtCore import QBasicTimer +from PySide2.QtGui import QColor, QFontMetrics, QPainter, QPalette +from PySide2.QtWidgets import QWidget + + +class WigglyWidget(QWidget): + def __init__(self, parent=None): + super(WigglyWidget, self).__init__(parent) + self.step = 0 + self.text = "" + self.setBackgroundRole(QPalette.Midlight) + self.setAutoFillBackground(True) + + newFont = self.font() + newFont.setPointSize(newFont.pointSize() + 20) + self.setFont(newFont) + + self.timer = QBasicTimer() + self.timer.start(60, self) + + def paintEvent(self, event): + sineTable = [0, 38, 71, 92, 100, 92, 71, 38, 0, -38, -71, -92, -100, + -92, -71, -38] + + metrics = QFontMetrics(self.font()) + x = (self.width() - metrics.horizontalAdvance(self.text)) / 2 + y = (self.height() + metrics.ascent() - metrics.descent()) / 2 + color = QColor() + + painter = QPainter(self) + for i in range(len(self.text)): + index = (self.step + i) % 16 + color.setHsv((15 - index) * 16, 255, 191) + painter.setPen(color) + painter.drawText(x, y - ((sineTable[index] * metrics.height()) / 400), + str(self.text[i])) + x += metrics.horizontalAdvance(self.text[i]) + + def timerEvent(self, event): + if event.timerId() == self.timer.timerId(): + self.step += 1 + self.update() + else: + QWidget.timerEvent(event) + + def setText(self, text): + self.text = text diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/__pycache__/animatedtiles.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/__pycache__/animatedtiles.cpython-310.pyc new file mode 100644 index 0000000..52d305d Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/__pycache__/animatedtiles.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/__pycache__/animatedtiles_rc.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/__pycache__/animatedtiles_rc.cpython-310.pyc new file mode 100644 index 0000000..1ac7856 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/__pycache__/animatedtiles_rc.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/animatedtiles.py b/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/animatedtiles.py new file mode 100644 index 0000000..b156351 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/animatedtiles.py @@ -0,0 +1,259 @@ + +############################################################################# +## +## Copyright (C) 2010 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2 import QtCore, QtGui, QtWidgets + +import animatedtiles_rc + + +# Deriving from more than one wrapped class is not supported, so we use +# composition and delegate the property. +class Pixmap(QtCore.QObject): + def __init__(self, pix): + super(Pixmap, self).__init__() + + self.pixmap_item = QtWidgets.QGraphicsPixmapItem(pix) + self.pixmap_item.setCacheMode(QtWidgets.QGraphicsItem.DeviceCoordinateCache) + + def set_pos(self, pos): + self.pixmap_item.setPos(pos) + + def get_pos(self): + return self.pixmap_item.pos() + + pos = QtCore.Property(QtCore.QPointF, get_pos, set_pos) + + +class Button(QtWidgets.QGraphicsWidget): + pressed = QtCore.Signal() + + def __init__(self, pixmap, parent=None): + super(Button, self).__init__(parent) + + self._pix = pixmap + + self.setAcceptHoverEvents(True) + self.setCacheMode(QtWidgets.QGraphicsItem.DeviceCoordinateCache) + + def boundingRect(self): + return QtCore.QRectF(-65, -65, 130, 130) + + def shape(self): + path = QtGui.QPainterPath() + path.addEllipse(self.boundingRect()) + + return path + + def paint(self, painter, option, widget): + down = option.state & QtWidgets.QStyle.State_Sunken + r = self.boundingRect() + + grad = QtGui.QLinearGradient(r.topLeft(), r.bottomRight()) + if option.state & QtWidgets.QStyle.State_MouseOver: + color_0 = QtCore.Qt.white + else: + color_0 = QtCore.Qt.lightGray + + color_1 = QtCore.Qt.darkGray + + if down: + color_0, color_1 = color_1, color_0 + + grad.setColorAt(0, color_0) + grad.setColorAt(1, color_1) + + painter.setPen(QtCore.Qt.darkGray) + painter.setBrush(grad) + painter.drawEllipse(r) + + color_0 = QtCore.Qt.darkGray + color_1 = QtCore.Qt.lightGray + + if down: + color_0, color_1 = color_1, color_0 + + grad.setColorAt(0, color_0) + grad.setColorAt(1, color_1) + + painter.setPen(QtCore.Qt.NoPen) + painter.setBrush(grad) + + if down: + painter.translate(2, 2) + + painter.drawEllipse(r.adjusted(5, 5, -5, -5)) + painter.drawPixmap(-self._pix.width() / 2, -self._pix.height() / 2, + self._pix) + + def mousePressEvent(self, ev): + self.pressed.emit() + self.update() + + def mouseReleaseEvent(self, ev): + self.update() + + +class View(QtWidgets.QGraphicsView): + def resizeEvent(self, event): + super(View, self).resizeEvent(event) + self.fitInView(self.sceneRect(), QtCore.Qt.KeepAspectRatio) + + +if __name__ == '__main__': + + import sys + import math + + app = QtWidgets.QApplication(sys.argv) + + kineticPix = QtGui.QPixmap(':/images/kinetic.png') + bgPix = QtGui.QPixmap(':/images/Time-For-Lunch-2.jpg') + + scene = QtWidgets.QGraphicsScene(-350, -350, 700, 700) + + items = [] + for i in range(64): + item = Pixmap(kineticPix) + item.pixmap_item.setOffset(-kineticPix.width() / 2, + -kineticPix.height() / 2) + item.pixmap_item.setZValue(i) + items.append(item) + scene.addItem(item.pixmap_item) + + # Buttons. + buttonParent = QtWidgets.QGraphicsRectItem() + ellipseButton = Button(QtGui.QPixmap(':/images/ellipse.png'), buttonParent) + figure8Button = Button(QtGui.QPixmap(':/images/figure8.png'), buttonParent) + randomButton = Button(QtGui.QPixmap(':/images/random.png'), buttonParent) + tiledButton = Button(QtGui.QPixmap(':/images/tile.png'), buttonParent) + centeredButton = Button(QtGui.QPixmap(':/images/centered.png'), buttonParent) + + ellipseButton.setPos(-100, -100) + figure8Button.setPos(100, -100) + randomButton.setPos(0, 0) + tiledButton.setPos(-100, 100) + centeredButton.setPos(100, 100) + + scene.addItem(buttonParent) + buttonParent.setTransform(QtGui.QTransform().scale(0.75, 0.75)) + buttonParent.setPos(200, 200) + buttonParent.setZValue(65) + + # States. + rootState = QtCore.QState() + ellipseState = QtCore.QState(rootState) + figure8State = QtCore.QState(rootState) + randomState = QtCore.QState(rootState) + tiledState = QtCore.QState(rootState) + centeredState = QtCore.QState(rootState) + + # Values. + for i, item in enumerate(items): + # Ellipse. + ellipseState.assignProperty(item, 'pos', + QtCore.QPointF(math.cos((i / 63.0) * 6.28) * 250, + math.sin((i / 63.0) * 6.28) * 250)) + + # Figure 8. + figure8State.assignProperty(item, 'pos', + QtCore.QPointF(math.sin((i / 63.0) * 6.28) * 250, + math.sin(((i * 2)/63.0) * 6.28) * 250)) + + # Random. + randomState.assignProperty(item, 'pos', + QtCore.QPointF(-250 + QtCore.qrand() % 500, + -250 + QtCore.qrand() % 500)) + + # Tiled. + tiledState.assignProperty(item, 'pos', + QtCore.QPointF(((i % 8) - 4) * kineticPix.width() + kineticPix.width() / 2, + ((i // 8) - 4) * kineticPix.height() + kineticPix.height() / 2)) + + # Centered. + centeredState.assignProperty(item, 'pos', QtCore.QPointF()) + + # Ui. + view = View(scene) + view.setWindowTitle("Animated Tiles") + view.setViewportUpdateMode(QtWidgets.QGraphicsView.BoundingRectViewportUpdate) + view.setBackgroundBrush(QtGui.QBrush(bgPix)) + view.setCacheMode(QtWidgets.QGraphicsView.CacheBackground) + view.setRenderHints( + QtGui.QPainter.Antialiasing | QtGui.QPainter.SmoothPixmapTransform) + view.show() + + states = QtCore.QStateMachine() + states.addState(rootState) + states.setInitialState(rootState) + rootState.setInitialState(centeredState) + + group = QtCore.QParallelAnimationGroup() + for i, item in enumerate(items): + anim = QtCore.QPropertyAnimation(item, b'pos') + anim.setDuration(750 + i * 25) + anim.setEasingCurve(QtCore.QEasingCurve.InOutBack) + group.addAnimation(anim) + + trans = rootState.addTransition(ellipseButton.pressed, ellipseState) + trans.addAnimation(group) + + trans = rootState.addTransition(figure8Button.pressed, figure8State) + trans.addAnimation(group) + + trans = rootState.addTransition(randomButton.pressed, randomState) + trans.addAnimation(group) + + trans = rootState.addTransition(tiledButton.pressed, tiledState) + trans.addAnimation(group) + + trans = rootState.addTransition(centeredButton.pressed, centeredState) + trans.addAnimation(group) + + timer = QtCore.QTimer() + timer.start(125) + timer.setSingleShot(True) + trans = rootState.addTransition(timer.timeout, ellipseState) + trans.addAnimation(group) + + states.start() + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/animatedtiles.pyproject b/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/animatedtiles.pyproject new file mode 100644 index 0000000..08ee556 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/animatedtiles.pyproject @@ -0,0 +1,4 @@ +{ + "files": ["animatedtiles.qrc", "animatedtiles.py", + "animatedtiles_rc.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/animatedtiles.qrc b/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/animatedtiles.qrc new file mode 100644 index 0000000..c43a979 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/animatedtiles.qrc @@ -0,0 +1,11 @@ + + + images/Time-For-Lunch-2.jpg + images/centered.png + images/ellipse.png + images/figure8.png + images/kinetic.png + images/random.png + images/tile.png + + diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/animatedtiles_rc.py b/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/animatedtiles_rc.py new file mode 100644 index 0000000..b4f39a6 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/animatedtiles_rc.py @@ -0,0 +1,6108 @@ +# Resource object code (Python 3) +# Created by: object code +# Created by: The Resource Compiler for Qt version 5.15.2 +# WARNING! All changes made in this file will be lost! + +from PySide2 import QtCore + +qt_resource_data = b"\ +\x00\x006\xe2\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00d\x00\x00\x00d\x08\x06\x00\x00\x00p\xe2\x95T\ +\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ +\x00\x00\x09pHYs\x00\x00\x0e\xc4\x00\x00\x0e\xc4\x01\ +\x95+\x0e\x1b\x00\x00\x00\x07tIME\x07\xd9\x03\x03\ +\x0e\x1c$|\x1a\xa6\xff\x00\x00 \x00IDATx\ +\xda\xed\x9dw\x98\x9de\x9d\xf7?\xf7SN\x9f\x993\ +3\x99Lf\x122\xa9\xa4\x03\x91\x90\x10j\xe8H\xd9\ +\x05\xa5\x88\xc8\xba\xeb\xcb\xb2\xae\x04QW_W]]\ +v]EQVPqYu\xa5Y\xc0\x12:\x16\x88\ +\x94\x00\x09)\xa4M\xea\xb4L\xa6\xcf\x9c9\xbd=\xf5\ +~\xff8\xf3<\x99A\x944}\xdf\xeb\xbd\xb8\xaf+\ +W2\xc9\xc9y\xca\xf7\xfe\xb5\xef\xaf\xdc\xf0\xeezw\ +\xbd\xbb\xde]\xef\xaew\xd7\xbb\xeb\xdd\xf5\xeezw\xfd\ +\x7f\xbf\xc4\xb1\xfc\xe7\xba\xba\xba\xab\x0c\xc3\x08N\x992\ +\xe5s+W\xae;\xf4\xe8$\xdc\xa2\x8a\xeb\ +\xbaH)1\x0c\x03!\x04RJ,\xcb\xc2u]a\ +\x18\x06\x9a\xa6\x01\xb8\x7f\x11\x95U.\x97\x1b\x1a\x1a\x1a\ +\x08\x85B\xe4\xf3y\x0c\xc3\xf0o\xceq\x1c\x1c\xc7\xf1\ +o4\x10\x08T\xc0\x11\x82^{\x84\xf3bM\xb8F\ +\x90%KNa\xe7\xe4W\x89\x08\x89\xa2\xe8\xa4_\xae\ +\xa2\xb0'\x8c\x94\x12\xd7u\xff\xec D\xa3\xd1\xb3\xae\ +\xb9\xe6\x9au\xa5R\xa9\xf2B])C\xf5B\xb8)\ +\x9d\x19\xbbNat\x97\xacH\xf0[\xe4\xb4m\xef.\ +f\xcc\x98\xe1\x032^B\xca\xe5\xb2\xbf1\xa5\x94\x94\ +\xcb\xe5\x8fWUU]WUU\xf5@\x7f\x7f\xff\xa6\ +?\xab\x0d\xb1m\x1b\xc30|i\xf0n\xc4q\x1c\x7f\ +\xb7\x09!PU\x15\xcb\xb2\x90\xaeK}:\xc4\xc1\xa7\ +\x15N\x08.&W?\x05;1\x17\xac0I:)\ +\x0c\x988y\xc7\x07\xe4\xec\xb3\xcf\xfe\x1f)e \x99\ +L\x86{{{\xff6\x9b\xcd\xe6\x8f' R\xca\xb0\ +\xaa\xaa\x15\x89\x96\x92]\x93w\x8a\xf3\xaf\xac\xc3\x956\ +vVCd\xc3\xd8Y\x0d'\xabQ\xde\x1fA:\xc2\ +\x97\xa6r\xb9\x8c\xa2TT\x97\x07\x88'!\x8e\xe3T\ +\x9eWJ\xb9j\xd5\xaa\xab\x9b\x9b\x9by\xf0\xc1\x07\xd7\ +\x03\x7f\x1e@\xa6M\x9b\xb6\xb0T*\xcd\xb7m\x1b)\ +%\x8e\xe3LPY\x8e\xe3\x00\xf8*K\xd34\xff3\ +\x0b\x1bf\x13MU\x91$Aw\x7f7\xf1\xf7\x14\xd0\ +\xcc\x00\xd1D\x9cH\xbd\x86\xac\x11HC\x01W\x80\xe0\ +#\x00\xe1p\x98\xdd\xbbw\x7f\x148&@\x9a\x9a\x9a\ +\x18\x18\x18\x18\x0f\x884M\x13\xd341]\x9bX\xb5\ +\x0e\xb6\xc2\xf2\xc9\xef\xa7\xaa%\xc4K\x9d\xbfb\xfa\xbc\ +&\x86\x8c.\xf2\x1d*N\xa9\x02\x80\xf7\x9c\xe3\xed\x86\ +\xf7gO2\xc6\xde\x87\xc8f\xb3D\xa3Q\x14E\x91\ +\x7f6\x95U[[\xbbf\xd9\xb2e\xf3\xd2\xe9\xb4o\ +/\x1c\xa7\xb2\xb3=/+\x18\x0c2f\xf0\x09\x06\x83\ +\xb8\xae\x8beY\xbe\xb1WQ\xd8\x17\xee\xe0\xc2\x05\xd5\ +@\xf1-\x0a]\x92^WC\xb9-\x02\x80eY\xc7\ +E\x22\x06\x06\x06hjj\x9a\x04,\x01\x1c\xc30N\ +N$\x12d\xb3Yl\x5c\xec\x11\x9b\x9d\xcf\x17\xb8\xf2\ +}\xf3y\xfa\xd55\xcck\xbe\x82\xf7\xd4\xaf\xe4\xbf\xb6\ +\x7f\x8al*\x87.\xc3\xbe\x9b\xeb\x01\x02P(\x14p\ +\x1c\x07\xd7u)\x95J\x9e\xed\xc0\xf3\x1c=M\xf1g\ +\x03DJ\xa9\x14\x0a\x05\x1f\x08\xdb\xb6\xc9\xe5r\xd8\xb6\ +M>\x9f\xf7uk\xa9TBQ\x14\xc2\xe10\xb6m\ +c\xdb\xf6\xa1\x87\x91\x02\xc2\x15\xf1\xff\xc8\xc2\xbb\x91\x8a\ +K\xda\xedd\xe3\xd6.\x92U\xeb\x18\x1d\xfb\x9c\xb7#\ +\x8f\xd7*\x95J7\x9f\x7f\xfe\xf9w\xaa\xaa\x8a@\x90\ +03L?\xbd\x1aw8\x8c3\xda\x82H\xc3\x8f\xbe\ +\xf3S\x14U\xf0\x1a[xUn&\xa0\xcd'\x9fl\ +'\x1aU\x91Rz\xb6\xc1\x07\xa4X,\xfa\xef\x22\x9b\ +\xcd\x12\x8b\xc5|0\xc6IKc,\x16\x9b\x95\xcf\xe7\ +;\xff\x1c\x80\xf8/\xd8\xb2,l\xdb\xf6_\x9e\xa6i\ +>\x10\xaa\xaa\xfa\xdeK\xb1X\xf4\x8d\xbd'!X\x92\ +\xd1^\x83\xa9\xef\x99\xcbu?Z\xca\xcf>\xb2\x81\xa6\ +\x93\xd2\xac\xed\xc9\xb2'\xfb*\xf9\x9c\xe9\xab>\xa0\xce\ +\xbb\xfe\xf4\xe9\xd3\x93\x07\x0f\x1et\x8f\xd2nD\xbd\x0d\ +StM\xb4s\xfa\xa9\x9d\x1f\xc1\x92\x83H\x1bD6\ +\x86\x9dQqR:\xf9-\xd5\xa0H\x1ci\xfb\xb6\xc2\ +\x93\x90T*\x85\xaa\xaa8\x8e\xe3\xc5\x1f\x08!\xd04\ +\x0dEQ\xc8\xe5r\x04\x83A\x22\x91\x08\xa6i\xca\x93\ +O>\xf9\x9b\xaa\xaa\xde\xf1\xca+\xafT\xfd9\x00\x91\ +\x1e\x10\xdeNQ\x14\x05\xdb\xb6\x994i\x127\xddt\ +\x13\xdf\xf9\xcew\xa8\xad\xade\xfa\xf4\xe9tuu\x91\ +\xcdf}c\xed8\x0e\x96\x10\xa8\xdb\x5c\x8a\xf9\xa9\xdc\ +\xf4\xab\x0fP\x1b8\x95\x9b\xd6\xdd\x88\xae\xa9\xa8v\x08\ +Mk$^\xe3\xc7(\xf2\xca+\xaf\xdc\xe7\xfd\xff\xf5\ +\xeb\xd7\xcf\x07\xf6\x1d\xad\x94x*\xc4tM\xe2\xe1\x00\ +\x85\x8c\xcbM'\xdf\x81\xab\x16Y\xb3\xf7^&74\ +2\x9c\xefe\xf4\xd50J@NP\xc9\xde\x86TU\ +\xd5\x07$\x16\x8b!\x84\xf07\xa1\xa2(\xfe5\x02\x81\ +\x00\x96e\x09!\x04\xe1p\xb8p\xb8\xf7\xa8\x1c\xce\x87\ +\xa6L\x992i\xca\x94)/\xb9\xae;\xcd\xb3\x05\xd9\ +l%\x08\xbd\xea\xaa\xabhll\xe4W\xbf\xfa\x15\xcd\ +\xcd\xcd\x00\xac]\xbb\x96\xdbo\xbf\x9dP(\x84\xa6i\ +\xbeq7\x0c\x83r\xa9\x84\xd0\x04\xa1X\x90\xda\xdaZ\ +\xba\xd5!\x16|\xbc\xcc\xac\x8f\x16i\xb9u\x94\xc9\xd7\ +$\x89\x9fn\x10i\x16\x04\x83\x01\x11\x0c\x06\x09\x06\x83\ +\xd4\xd7\xd7\xe38\xce1\xe90\xc30\xbc\x00\x0eE(\ +\x9c\x14~?\xa1j\x9b\xe7\xdfx\x9dE\xda\xf5\xac>\ +\xe3njB\xf5\x94\xcb\xe5\xca\xbd\x96\xcb\x98\xa6I6\ +\x9b\xf57V \x10\xf0\xa5\xe1\xb2\xcb.#\x12\x89P\ +__\xcf\xdc\xb9s}`4M\xf3\xb5\x87\xe7}\x1d\ +W@\x92\xc9d\xed\x05\x17\x5cpn(\x14\x8aX\x96\ +\xe5_\xb8\x5c.\xf3\xe1\x0f\x7f\x18\xc30\xb8\xff\xfe\xfb\ +Y\xbe|\xb9\xaf;\xbd\x1b_\xb0`\x01\xb7\xddv\xdb\ +\x04\xe3\xee\xc5-\xa6a\xe2\x04L4M%\x9bt\xb8\ +j\xe1\xc7\xa8\x9b\x1a#\xb28K\xed\x15\xc3\xe8\x0bR\ +\x18\xa51o\xc84\x8f\xd8@644\x5c\x1e\x8dF\ +o\x8a\xc5b7J)\x97\x0c\x0d\x0d188Hb\ +h\x84\x817\xb3\xf4\xed\x18\xe0\xb95k\xd9\xf1\xfa\x0e\ +\xf6m\xda\xc3\xfd\x0f|\x97\x9d/v\x91/d}\xe0\ +<\x0f\xca\xf3\xa2\xce>\xfbl\xaa\xab\xab\x91R\x92H\ +$|\xa3\x9eH$\x18\x93\x06_ue\xb3Y_]\ +\x1fW\xa3\xee\xf9\xdf\xde\xc5\x15E\xe1\xfc\xf3\xcf\xa7\xb5\ +\xb5\x95\xc7\x1f\x7f\x9c\xba\xba:\x9ez\xea)\x9ey\xe6\ +\x19B\xa1\x10W]u\x15\xa7\x9f~:\xa9T\x8a\xfb\ +\xef\xbf\x9f\xbe\xbe>\x0c\xc3 \x99L\xfa\xd1\xb8i\x9a\ + Aj\x92r\xc9\xe1\xae\xf7>\xc5\xa3\xad\xdf\xe0\xa6\ +\xf9_e\xed\x8e\x17P\x1b\xfax\xcd\xdeV\xb1#J\ +eg\x1e\xe9\x9a\xf3\x99\ +\xcfP]]\xed\xe7>\xc6{\x22\xde\x9f\x93\xc9$\x81\ +@\xc0\x07\xe4\x87?\xfc!\x86a\xf0\xf1\x8f\x7f\xdc\xe7\ +\xbbTT\x96,YRQ\x89\xd2!9\xf7\x00s\x16\ +Fpr*\xd6p\x08{(\x885\x18DH\x05\xa1\ +\xbb\xfe5\x86\x86\x86\x0e\xdb\x90\xdb\x96\x8d\xab:\x08E\ +p\xdd\x82O\xb3\xbe\xf7I\x9c\x91i\x5c7\xf7K\x9c\ +\x7f\xea\x99\xdc\xfe\xe8\xe5\xbek\xab\xaa\xaa\x1f\x03yl\ +\xc3\x96-[*\xe4\xe3\x98s2i\xd2$\xa4\x94\x08\ +!(\x95J\xfe\xc6TU\x95P(D\xb1X$\x12\ +\x89\xf8\xa1\x80eY\xfe\xf7\x1f3 \xb5\xb5\xb5\xb7,\ +]\xba\xf4.\x8f.9\xe1\x84\x13H\xa5R\x04\x02\x01\ +\xd2\xe9\xb4\xaf\x82\xa4\x94(\x8a\xe2\xb3\x9f\xde\xee\x1a\xa3\ +\x16\x5ce,\x9a\x9a6m\x1a\x8e\xe3P(\x14\x10\x08\ +liQ,\x16)\x97\xcb\xf4YIZ\xa6;\xc8H\ +\x89\xc6I\xd3IM\xedC\x0a\x07\xd35QJa\x86\ +\x1e\x99\x5cIt\x1d\x01EbY\x16\xb6e!\x15\x89\ +\xa2\x09\x1a\xaa\x9b9X\xfa=\xc9$d\xdd~\xeaN\ +0\x08\x07#^\xcc3A\xe5x*\xb6\xa7\xa7\x87P\ +(\x84\xeb\xba\xac^\xbd\x9a\xad[\xb7\xd2\xd9\xd9\xe9{\ +R\xaaZa\x80kjj\xc8f\xb3\xa8\xaaJ,\x16\ +\xf3\xd5\x9e\x17\xbb\x1d\x8eS\xf2\x8e\x80\x98\xa69\xb5\xa9\ +\xa9\xa9\xa6\xa7\xa7\x07\xd34\xb9\xe7\x9e{\xd8\xb3g\x0f\ +7\xdex#?\xf8\xc1\x0fH$\x12\xd4\xd6\xd6\x12\x0c\ +\x06y\xe9\xa5\x97X\xb8p!\xbbv\xed\xa2\xa7\xa7\x87\ +\xb9s\xe7\xb2m\xdb6\xf6\xef\xdf\x7f\xfb\x82\x05\x0b\xbe\ +\xf3\xec\xb3\xcfr\xd1E\x17Q.\x97}\x95%t\xc5\ +\xf7\xbe\x5c\xc7EU\x04\xa1\xec|>q\xd1\x9dh2\ +\xca\x17\x9e\xf8\x08\x1f>\xfbF~\xb6\xfdn,\xcb\xac\ +\xe4R\xfe\xc8\x83\x0d\x0c\x0c0k\xd6\xac;\xa3\xd1\xe8\ +T\x00\xe9\xca)\xc9\xd1\x14\xd2uA\xb7\xe9\xfc\xa5\xc2\ +w_\xf8\x16i\xf7 F6\x88M\x89\xeeu\x9dt\ +\x0d\xe60\xcd\xb0\x0fH8\x1cf\xc6\x8c\x19\x0c\x0e\x0e\ +b\x9af\xaaT*\xf58\x8e\xb3DQ\x14q\xd7]\ +wI\xd7u\x85\xb7\x01=\x1b\x0b\xf8\x86\x1c \x95J\ +\x11\x8b\xc5\xfcMz\xb84\x8av8\x06\xdd4M\x0a\ +\x85\x02\xaa\xaa\xf2\xa3\x1f\xfd\x88o\x7f\xfb\xdb\xfc\xf4\xa7\ +?e\xfd\xfa\xf5\xa8\xaa\x8a\xae\xebh\x9aF*\x95b\ +\xef\xde\xbd\xe4\xf3y\xca\xe52\x89D\xc2S_!U\ +U\xd9\xb0a\x03\xaf\xbf\xfe\xba\xef\xab\x8f\xbd4\xdf\xdf\ +\xb7\xb1qqY\xd6p\x19\x8fl\xfb*\xb3\xb4\xf3\xb9\ +\xf6\xa4\xd5\xb4\xd4LA\xa0T\xd4\x9c\x22\xde\xc9\xb3\xfa\ +\xfb\xe9\xd3\xa7\xd7\x0b!(8eX8L}<\x8c\ +\xd3\x1f\xc1\xea\x0b\x93\x19M\x22\x88\x11\xaa\x98e\x8aC\ +\x92Fq\x22\x1df\x87\xcf8TWW\x13\x8f\xc7I\ +\xa5R\x98\xa6\xf9\xec\x9e={n\x8a\xc7\xe3\xd7Z\x96\ +5\xcb\xb2\xac\xaf]p\xc1\x05\xacX\xb1\x82G\x1f}\ +\xd4\xb7\xab^\x10\xe9QJ\x8a\xa20<\ +\xce\xc7\x7f}6_>\xe7ij\xecy\xa85)\xbe\ +\xb5\xe9\xab\x18\x86\x09\xa2\xc2Yy*T\xd3418\ +8\xd8988\xb8M\x08\xe1\x06\x02\x81\xb5o\xdd\xa0\ +\xabW\xaf\xc6\xb6mB\xa1\xd0\x045t\xf0\xe0\xc1\x09\ +?\x1f8p\xc0\xb7!\x85B\xe1\x0f>\x7fT\x80(\ +\x8a2\xc7\xb2,TU\xa5T*Q,\x16\x99;w\ +.o\xbe\xf9&K\x96,axx\x98\xda\xdaZ\xb2\ +\xd9,\xe5r\x99H$\xc29\xe7\x9c\xc33\xcf<\xf3\ +G/\xaei\x1a_\xfa\xd2\x97|C\xe8\xc5\x0b\x05\xa5\ +L\xa9TB\xa4\x05B\x08v\xe8\xfbx\xef\x195\xd8\ +\xd6x\xcfJ\xe2\x18\x0a\x99\x17\xea0\x87\x03\x80\xfc\x03\ +\xb0}\x9aE\x07\xc7\x86\x80\xae\xa3)\x01\x10\x90\xc8\x0f\ +\xf2F\xff\x03HW\x8e\xa9\xc0\x8a\x94744\xf86\ +@Q\x94_g2\x99\xd5o\x17\x8ey\xae\xbc\xb7\xeb\ +\x0f3\xed\xed\x7f\xff\xb1\x022\xbd\xb6\xb6\xf6F\xc30\ +\xa4\xa6i\xe2\xee\xbb\xef\xa6\xb1\xb1\x91\xbd{\xf7\xe2\xba\ +.\x83\x83\x83\x18\x86A8\x1c\xa6P( \xa5dt\ +t\x94]\xbbv\xfdI\xee\xa9X,\xe6\xa5\x94\xde\xb5\ +\x83\xe1pXw\x1c\x07\xddRq\xdcC*G\x09\x09\ +,\xc7fE\xf4\x16\x16\xcf\x5c\xc0\x96\xe4\xe3\xe4\x92\x1a\ +\xbb\xdd\xe7p\xb4\x18\x96\x09\x129\xc1\xa6\xb8\xae+}\ +\x03\x1a\x12\xc4'\x85(\x18e\x02!\x95\x9a\xaaZL\ +\xa5\x88\x16\xd2@\xa9\x00\x22\x91\xbe\xfamnnfh\ +h\x88\xb7+M\x02\x08\x04\x02\xed\x1d\x1d\x1d\x8d\xf3\xe7\ +\xcf\x1f\x9a2e\x0a7\xdcp\x03\x8f=\xf6\x98o{\ +\xbc\x80\xd7\xdb`\x1e\xc3\xa1\xeb\xba\xcf\x8a\x1f+ \x11\ +!\x04\xb9\x5cN\xd4\xd7\xd73<<\xcc\xe0\xc0\x10 \ +\x10\x02\x1f\xf1r\xb9\xec\x07T\xde6\x8e\xc5b\xa2T\ +*\xbdm\xf4,\x84\xf0+\xe9f\xce\x9c\xf9\xa0\xaa\xaa\ +\x1f\xbe\xfc\xf2\xcb\xfd\x00\xec\x90+)I\x0d\x0a\xfe\xee\ +\xe6\x9b\xb9\xe9gK\xf9\x97\xb3\x1f\xa3\x18/0\xd3l\ +\xe6'\xbfy\x02\xc3\x90\x9e\x0d\x08]t\xd1E#\x80\ +\x14\x8e\xa8\xb3,\x89\xa2\xc0\x22;\xc2\xf0\xc3\x0a\xd7?\ +t-R\x09q\xfd\x7f]\x83e[\x04\xb5\x08\xdb[\ +{\xa9\x8a\xc4}J\xdd#?\xff\x18\x18\xe3\xf2\x222\ +\x16\x8b\xf1\xe2\x8b/\xb2q\xe3FZZZ\xd8\xbau\ ++\xe1p\x98\xf5\xeb\xd7\xfb61\x12\x89\xd0\xd2\xd2\xc2\ +\xae]\xbb\x18\x1d\x1d\xf5\x93t\xc7\xac\xb2\xa4\x94\xe8\xba\ +\xce\xbe}\xfb\x90\xae\xa4f\xb1N$\xac\x92\xeb\xb7)\ +\x0e9H\xf7m\xd5\x9c(\x97\xcb\x9d\x8a\xa2|\xf3\xed\ +\x9c\x84\xb7\xb0\x00\xfa\x07>\xf0\x01\xe6\xcc\x99\xc3\x07?\ +\xf8An\xbd\xf5V?\xcf \x10T\x05\xe3\xd8\xb2D\ +\xbc\xaa\x8a\xe6\xda\xa9<\xbf\xe3\xd7<\xd1w\x1f\xb6\xd5\ +\x88i\xb9P\xd9\xe1\xa2\xa6\xa6f\x92@\xd05m\x0f\ +\xa7]\x14\xc6\x18\xac\xd4U\xd9\x83\x01\x9c\xac\x06\x96\x8e\ +[RPu\x0dMS)\xe5Ml#\xe5%\xddd\ +4\x1a\x15###\x84B\xa1w\xe4\xf8\x1c\xc7\xe1\x95\ +W^!\x1e\x8f\xe3\xba.\xfd\xfd\xfd~\xa2\xcaK\xc8\ +y\xeco]]\x1d\x03\x03\x03h\x9a\xe6\x05\x91\xb1\xe3\ +\x02\xc8\xec\xd9\xb3+\x14@\xb2\x22\x9aQ)\x89\xd4\xcb\ +\x09\xa5;\x9e\x975\xb6\xe3z\x06\x06\x06\xfe\xebp\xe9\ +\x8d\xb9s\xe7\xfaQ\xed!u'\xb0]\x13Eh\x80\ +\xa0d\x15\xd1T\x8d\xa0\x16\xc5q\x5cL\xd3\xf2\x839\ +\xcb\xb2(8ej\xa7)H[%Z\x1fF\x99b\ +a\xccO\xf8\x9b`\xe0\xa1IH[\xf1=A\x8f[\ +SUUtuu=\xe0\xed\x11]\xd7\x7f\xfd\xa7\xee\ +\xd7u]>\xf9\xc9O\xfa\xdf3~\xed\xdbw(\x7f\ +\xd6\xdf\xdf\xef{\xa1\xf1x\x1c\xc7q\xa8\xaa\xaa\xfar\ +:\x9d~\xe1\x98\x00Y\xb1b\x05\x97]v\x19g\x9f\ +}6\xdf\xfb\xde\xf7hmm\xe5\xe4\x93O\xe6\xf5\xd7\ +_g\xee\xdc\xb9d2\x19Z[[\x09\x87\xc3\xcc\x9c\ +9\x937\xdex\xe3\xb0)\xf2@ \xc0\x0b/\xbc\xc0\ +\xde\xbd{\xe9\xed\xed\xf5\x19T!\x04\x85\xd6\x1cCF\ +#\xff\xeb\xa5[\x18\xcc\xea|\xea\xb1O`\x186y\ +'\x8e]\x14D\x22\x87\xa4\xae\xa2\x1e%\xca\xeb\x939\ +\xf8\x86\xe0\xc1\x07~\xc4\xfe\x9e.~\xbb\xf7\xa7\xfc\xed\ +\xaa\x8fr\xf7\xba[1M\x0bi\x1f\x02B\xd7u\x9f\ +J\x1f\x19\x19\xf9\xc8\xe1\xdes>\x9f'\x12\x89\x1c\x02\ +\xc3\x01\xcbt\xc7\xee\x05\x84*P\xd41m0\xf6\x91\ +\xd1\xd1Q_=\x1e\x8b\x84\xb8\xde.\x88\xc7\xe3\x84\xc3\ +a\x9ft\x0b\x04\x02,]\xba\x94\xee\xeen\xaa\xab\xab\ +}\xa3\xa5\xeb\xfa;^\xf4-*+\xa0(\x0a\x07\x0f\ +\x1e\xf4\x8a\x06d\xb9\x5c\x16\x00\xe5b\x91i+f\x92\ +\xcb\xe5\x88iu\xa4g\x1c\xa0iF\x80\xaa\xb4\x8e\x93\ +\x1d\xfb\x95\xd6ps\x1ab\xecI\xc2\xe10\xe9T\x9a\ +\xf5=\xcf\xb2\xe9\xcd..>\xf9\x06\x1ac\xd3\x11(\ +\x95X\xc7\xaaH\xd4\xbcy\xf3\xfcl\xe6\xe1\x12\x95\x00\ +555#\x1d\x1d\x1dM\xa7\x9cr\xca@*\x95B\ +Hpg\x0b\x96_YC~\xc0\xa18l\x93\x1bp\ +(\x0e\xd9\x18\x19\x17\xcf$y\xef\xf0O\xd9\xa8w\x04\ +$\x1a\x8d.\x07\xd8\xb6m\x1b\x89D\x82\xe1\xe1a\x8a\ +\xc5J\xe9\xce\xee\xdd\xbb\xfd\xc0\xd0\x03\xcdu]^~\ +\xf9\xe5#J&%\x93\xc9/\x0e\x0d\x0d}w\xcc\x8d\ +\x9c\xbe`\xc1\x82\x87\x0fy#\x95\x0a\x96r\xb9L\xca\ +\xcd1u\xae\x89\xa8\xb2i\x9c\xd6D\xd9\xcdQr\x12\ +(\x0a\xd8y\x95\xe1\x9fN\xf6\x1f\x5cJ\x89W\xb2\x9e\ +)\x8d\x925\x12\x08EL\x00$\x93\xc9p\xf5\xd5W\ +\xf3\xf4\xd3O\xfb1\xc8\xe1\xacL&\x83\xae\xebR\xd3\ +4\x9a\x9a\x9a*6\xa2\x7f\x80\x8e\x07\x15,\xc7E(\ +:\xae\xab\xa2\x11@\x09\xbb~N\xc4S\xe5\xc7\x04\x88\ +\xae\xeb\x7f\xe3e\xf8\xfa\xfa\xfa\xfc\xa4\xcc\xf8\xdf\x8fu\ +\x15\x0a\x85\xbd\xc0\xde\xb1\x1f\xe7{\x8c\x80\x10\x02\xa5P\ +y\x89\xa6ab+\x0e\xaa\xaa\xd0\xa2\xae\xe2\xefV\xde\ +JM\xa0\x9e\x0f|\xef|n\xbb\xeaV~\xb1\xfe\xfb\ +\x13\xe8s\xdb\xb1Y0\xe94\x92ST\x06r\xdd\x04\ +\xd5\xd3QP0\xcd2\xaeU\x89\x832\x99\x0cO?\ +\xfd\xb4\xef\x96\x1e\xe9R\x14\x85\x07\x1ex\x80\xe1\xe1a\ +\x84\x10<\xfe\xf8\xe3\xc4\xe3q:;;innf\ +\xcb\x96-\xcc\x9a5\x0b\xc7q\xd8\xb7o\x1f\xcd\xcd\xcd\ +ttt\x1c\x1b\x97%\xa5Tc\xb1\x18{\xf6\xecA\ +\x08A\xf4|\x9d\x15\x17\xd5 \x01#'I\xee5\x18\ +m\xb7\xc8t\x98\x98\x85C\xf9\x90\x9a\x9a\x9a\x11\xe0}\ +G[\xa6\xfa\xd3\x9f\xfe\x94B\xa1\xc0\xe7?\xffy\xbf\ +0\xc1RM\x84\x90\x9c<\xe5l~\xd7\xfe\x00\xa9\xce\ +\x06\xaeX\xf8\xb7\xcc\xa8Y\x84\xedT\xaa`<\x09\xe9\ +\xee\xee\xe6k\xff\xfb\xbb\x95\xc4V)\xc5\xc6\x9f\xec\xe2\ +\xc0 dSy\x8f\x02\x92\x8a\xa2\x08\xaf\x8e\xea\x9dv\ +\xed\xdb\xd9U\x8f]\x9e?\x7f>]]]\x8c\x8c\x8c\ +x\xcf\xce\xc9'\x9f\xcc\xe6\xcd\x9b\x19\x19\x19a\xd1\xa2\ +E\xa4R)FGG\xd14\xed\xd8$\xc4\x8b\xaa=\ +\xef\xc9\xd9\xa9\xf1fG\x96|\xbf\x83U\x94(\x9e\xf1\ +RUTU\xfa\xb9\x91@ \xe0\x0e\x0c\x0c\x1cU\xd3\ +\xca\xbcy\xf3hnnftt\x94\xe6\xe6\xe6J\x85\ +\xbde\xe2\xe0\x00\x02M\x09`K\x0b\xdb\xb1\x18H\x0f\ +\xd3\x95\x0e\xa3\x09\xdd\x8f_4M\x03\xcd\xa1\xa4\xa6p\ +\xb2\x1a\x8a\xd4\xc9\xe6\xb2\xc4\xf48\xb9\x5c\x07\x8a\xa2\xa0\ +\xeb\xba(\x14\x0a;7m\xda\xf4OB\x08UQ\x94\ +#.\x91TU\x95\xaf|\xe5+\xcc\x9f?\x9f\xcd\x9b\ +7\xa3\xeb:\x1d\x1d\x1d\xb8\xae\xcb\xab\xaf\xbe\x8a\xa6i\ +$\x93I\xda\xdb\xdb\xc7\x9b\x00\xa4\x945\xc7\x22!H\ +)\xf9\xd1\x8f~\xc4\xacY\xb3\xb8\xf7\xde{+e\x93\ +sJ~\x92\xaaX,\x22\xa5d\xd2\xa4Ituu\ +\x91\xc9d\x8e\xb8:dB\x85y[\x1b/\xbd\xf4\x12\ +---\x1c8p\x80x<^I\xc3b\xa3k!\ +R\xc6 \xd3\xa7\xcc\xa3~Z\x1d\x9bz\xba\xa9\x8dL\ +\x1e\x8b\xba\x0f\xb9\xc0z\x5cR\xf7\xfe\x01F\x9e\xae\xc3\ +\xe8\xad\xd0+\x8e\xe3\xf8\xe5;c\xbf'\x8b\xc5\xe2\xf3\ +Gs\x8fc\x84\xab\xab\xeb\xba\xb2s\xe7\xceJ\x0b\x85\ +\x00UU\x90\x12b\x91\x18\x96kU\x1c,\x81\x1f\xab\ +\x8d\xd5x-8&\x09\x997o\x1e\xb3g\xcf\xe6\x84\ +\x13N`\xd9\xb2el\xdd\xba\x95e\xcb\x96\xf1\xe4\x93\ +Or\xf1\xc5\x17\xb3{\xf7n6l\xd8\xc0\x99g\x9e\ +Iss3\xcf>\xfb\xec\x9f\xa4\xc7\xdfiE\x22\x11\ +\xbe\xf5\xado!\x84`hh\xa8R\x01h\x98\xd8\xaa\ +\xcb\x86\xff\x1ed\x93\xf9U\xe65.\xc1\x95.;\xfa\ +6\xd1\xfah\x1b\x1d#\xbd\x14\x86\x0e\xbd,MSY\ +\xf7\xb5a\x8c\xd1Q\x9c\x92d\xc6\x8c\x19\xe8\xba\xce\xd1\ +\xaa\xa8\xb7\xf1\x0c\x87v\xee\xdcy\xf1\xacY\xb3^(\ +\x95J\xb8*L\xbd!\xca\xc9\xcbc\xd8\x8eCSx\ +\x1e\xc3F;\x8e\xe1r\xf0\xd5\x12\xfb\x9e\xc8\xa3\xa8\x15\ +\xa7'\xe2\xf9\xeaG\x0bHgg'\xbf\xfc\xe5/9\ +\xe5\x94Sx\xe5\x95W\xc8\xe5r\xf4\xf4\xf4`\x18\x06\ +O>\xf9\xa4_\x99\xf1\x9b\xdf\xfc\x86@ \xe0\xa7>\ +\x8fr\x8d\x0e\x0d\x0d}C\xd7uk\xec\xc1?\x98J\ +\xa5f\xe4\xf3y,S2+<\x83\x193\xa6W\xa4\ +T\x1a,\xbb~\x16U\x912\x0d\xc3'c\x0d\x06q\ +F+i'\xa1HP$L\x83\x5c.\xc7\xc8\xc8\x08\ +\xd1h\x94x<\xcei\xa7\x9d\xc6\xcb/\xbf|\x5c\x1c\ +\x12?\xcd+\xa1\xd4j\xb3c\x7f\x8e|\xaf\x83ml\ +\xc4.J\xecr\xa5?Q\x0fh\xbe#p\xac\xd4I\ +4\x1a\x8d\xf2\xf4\xd3O\xf3\xc4\xe3O\x1c\xf2F\x84\xc7\ +I)~O\x8bP*\x89\xac\xea\xeaji\xdb\xf6\xd1\ +\xea\xac\x91\xde\xde\xde\xff\xed\xfdP__\xbf\x5cQ\x94\ +\x19\xaa\xa2\x80\x03\xae\xe3\x92\xcf\xe7\x11\xc0f\xab\x8dK\ +Z\xa2\xb8J\x8e\xe0\xd4\x22\x8a,\xa1j\x0avZ\xa7\ +\xbc/F~[\xd4g\x01\xbc\xea\xc1|>_\xc9\xe5\ +\x8b\xe3\xd31gY\x16\xb7\xdcr\x0b\x00/\xae}\x11\ +QV\xd0\xb4\x02B\x17\x18\xba\x81\xac\x96~l\x94H\ +$\x0e+k\xa8\xbd\x83A\xaf\xf7\x92\xf9\xae\x0a\x93\xe6\ +\x05\xd0u\x81\xb4u\xe6N^HGj\x07(PN\ +9\xa4\xbb|\x1d.l\xdb\xee\xe0\xf8,%\x10\x080\ +}\xe1\xc2JF\xcf\x1a\xa3\xd6\xbd\x88X\x11\xac\xac\xbe\ +\x85\xf7\x9d~-;\x86_\xe6\x85-/\xa15\x0f\xd3\ +\xd67\xe0\x13\x85^\xc2\xca\x8b\x05\xd6\xaf_\xef\xf1U\ +\xc7\xbc\xce>\xfbl.\xb8\xe0\x02\xe6\xcc\x99C\xa1P\ +\xa0\xb7\xb7\x97\x8b/\xbe\x98\xc7\x1f\x7f\x9c\xf3\xce;\x8f\ +b\xb1\xc8\xab\xaf\xbe\xca\xfc\xf9\xf3\x89\xc5b<\xf5\xd4\ +S~\x09\xeeQ\x01\xa2(\x8a\xa8\xaf\xaf\xa7\x90/`\ +E$K?RGu\x8d\x86t%\xc9\xb6~\xea\xf6\ +U1\xbc\xdd\xc0\x1au\x88\xc5\x82\xbe'144\xf4\ +\xe6\xf1x`\xd7u\xb9\xfd\xf6\xdb\xa9\xae\xae\xe6\x8a+\ +\xae\xe0\xa2\x8b.\xaa\xe4 $\x10\x82L\xba\xc4eg\ +\x5c\xcf-\xbf<\x93\x9f\xff\xcd.N\x08-%\xe1\xec\ +g\xf7\xfa;0\x0c\xcd\x0fZ\xcb\xe52\xd1h\x94`\ +0xX\xae\xe7\xe1\xaem\xdb\xb61u\xeaT\x06\x06\ +\x06PU\x95\xda\xdaZv\xec\xd8\x81\x10\x82\x8e\x8e\x0e\ +\xbf\x16x\xe7\xce\x9d\xac\x5c\xb9\xf2\xd8\xe9w\x8f{)\ +\x95K\xe8\x8e\xce\x9bw\xa7\x91\x16X\xc5C9t\xa1\ +L\xd4\x8dGB\x9b\x1c\xce2M\x93\xfa\xfaz\xbf\xe2\ +\xdc\xb2\xacJ'o\x08\x0c\xc3%\x14\x0c\xe0R\xa9?\ +\xeb\x1e:\xc8\xc6\xfcc(\xa8\x13\x92G\x1e\xf7\xd4\xd6\ +\xd66\xb7X,\x8e\x00\xb2\xa1\xa1\xc18\x1e6\xe4\xea\ +\xab\xafF\xd3\xb4?HV\xb5\xb7\xb7\xfb\xc4\xa2\x94\x92\ +_\xfc\xe2\x17\x95\xf7u\xac\xf4\xfb%\x97\x5c\xc2\x87>\ +\xf4!\x5c\xd7\xe5\xc9'\x9f\xa4\xab\xab\x8bh4\xca\xc1\ +\x83\x07\x89\xc5bTUUq\xe0\xc0\x01r\xb9\x1c\x8d\ +\x8d\x8d\xf4\xf4\xf4\x1c\xb7\x1d(\x84\xe0\x87?\xfc!\xcb\ +\x96-\xe3?\xfe\xe3?\x0e\x05\x7f\x08\xa4\x0b\xf1x\x88\ +d&MM\xa0\xbe\xe2VJ\x9b\x80\x88 ]\x89e\ +\xd9~\xad\x98W\xd6\xa9\xebz\xceu\xdd\x0cpD\xfc\ +\xd5\x1f\x91^s|\xbe\xc7\x09@u\x5c\xc5q]&\ +\x87gPr\xd3\x14\xac,BH\x8c\xac\x8b[\x92~\ +\xf6\xf0\xa8\x01\x19k\xc0\xa4\xb5\xb5\x95\x1bn\xb8\x81m\ +\xdb\xb6Q*\x95\xa8\xab\xabc\xd9\xb2el\xdc\xb8\x91\ +`0H8\x1c&\x93\xc9\x1c\xf7\xb6f)\xa5[U\ +U%w\xec\xd8Q)Y\xf0JP%H!\x89E\ +\xc2<\xbe\xfb~\xbeu\xe5o\xf8\xcd\xfe\x87x\xa9\xe3\ +e\xce:\xe9t^s7b\x18\xa6\xcf\xe8zT\x8c\ +m\xdb\xb3\xea\xeb\xeb\x03\xa3\xa3\xa3=\xc7zo\xb6m\ +\xb7\x09!*\xc5\x82\x08F\x96H\xfe\xee\xf6f$.\ +Q3BP\x0frp\xb8\x80U\x90\xbc~W\x0a\xe9\ +T4\xce1\xb9\xbdB\x08\xbe\xf9\xcdor\xfb\xed\xb7\ +\xf3\xc9O~\x92\xb6\xb66\x5c\xd7\x9d\xd0_8\xd6\x9f\ +\x8d\x94\x92\x9e\x9e\x9e\xe3\x0aH*\x95\xba\xe8\xf9\xe7\x9f\ +\xa7\xa5\xa5\xa5}\xce\x9c9\xb3\xb3\xd9l\xa5nX(\ +\x14j$%3\xca~\xf9\x1c\xdfyVg\xd5\xe9\xa7\ +\x90Pv\xf0\xcc\xbe]\x0c\xb5\xe5H\xa5*\x01k(\ +\x14\xa2\xa5\xa5\x85R\xa9\xc4\xb5\xd7^\xfbz[[\xdb\ +\x86u\xeb\xd6\xad<\x1e\x0e\x87\xef\xfa\x0a\x85\xba\x83\x92\ +}O\x15\x18\xdan\x90\xef\xdb8A5\xa9B\x03\x8d\ +\xb7\xcd\x9f\x1c\xb1\x0d\x89\xc7\xe3\xdcw\xdf}~\xc2\xc8\ ++4\x00\xd05\x1d];\xe4\x0a{\xe5\xa3\xfb\xf7\xef\ +\x9fq<\xed\x88W-\xef\xbd\x00\x81@5\x5c\xb40\ +\xe4{\xe1\xf5\xce\x9f\xf3\xe4O~LyDb\x95\x5c\ +\xcai\xd7\x8f\x85TU%\x9dN\x13\x0a\x85\x18\x19\x19\ +9\xa2^\x8d\xc3!\x18/\xbc\xf0Bn\xbc\xf1F\xbe\ +\xf5\xado\xa1\xf6\xa9\x10\xcc\xd18\x1b\xbf\x7f\xbf\x5c.\ +SUUE*\x95\xc2\xeb\x8b?j@b\xb1\x98\xdc\ +\xb4iS\xa5\x92#\x06\x0b\xcf\x8f\xa1\x07\x04J\xa9\x9e\ +\x0b\x16_\xca\xef:\x1fA\x0b\xa8\x8c\xee3\x19\xd8\x5c\ +\xf6\x12NR\xd7\xf5)\xc7\x13\x10\xd7u\x1d/i\xa5\ +\xaa*\x8b\x17/\xa6\xb3\xbd\x83\xd7\xfe\xa9\x5c\xd9\x1b\x0a\ +\xa0T(\x12\xe1\xba\x84B\xd2\xa7*\xbc\x11\x18c=\ +\x7f\xc7\xb5\x91\xb4X,\xf2\xe9O\x7f\x9aT*\xc5'\ +?\xf9I\x1ez\xe8!N_y:\xdd\xdd\xdd\xcc\x9b\ +7\x8f\xdf\xfe\xf6\xb7\xac\x5c\xb9\x12]\xd7\xc9f\xb3\xec\ +\xd8\xb1\xc3\xaf\x9a?*@BcOf\xdb6\xb2\xda\ +e\xc695h\x08\xac\xb2\xc1\xeb#?C\xb5\xc3$\ +Z\x0d\x92\xfb+\xc1\xcf\x98\xdb+\x86\x87\x87\x8f\xc9\xaa\ +\xc7\xe3\xf1\x96\xb9s\xe7\x1e\x08\x04\x02\x15OOQq\ +\x84M\xa9T\xe2\xdb\xdf\xfe6MMM$\x12\x09~\ +\xf7\xbb\xdf\xf9\x05\x04\x00###L\x9d:\x95d2\ +\xc9\xc8\xc8\x08\xaa\xaa\x92L&\x09\x85B\x94\xcbe\x02\ +\x81\xc0q\x05$\x14\x0a\xb1c\xc7\x0ef\xcf\x9e\xcd\x0b\ +/\xbc\xe0\xf7\xd0\x8c\x8e\x8e\xfa\x95\x90\x83\x83\x83\xc4\xe3\ +q\xbfx\xf0\x9dX\x8cw\xb4!\x9e\x1b[\x9d\x83\x0d\ +wd\xdf2\xaa\xa8\xa2F\x82\x11}\x82\x18\x1f\x87\x9d\ +\x17\x98={6\xb6m\xa3\x0a\x95Vu?g\xdd\x10\ +d\xfd\x7f8\xbe+Eb(I\xae\ +\xdfa\xc37\x93>\xcb\x1c\x8dF\x87\x8f\x1a\x90`0\ +\xc8\xbd\xf7\xde\xcb\xe7>\xf79>\xf6\xb1\x8f\xd1\xdf\xdf\ +\xef\x8b\xbd7\xdb$\x95JaY\x16\xa5R\xc9\xcf\x85\ +\xc8\xb1\xc8\xf0\xad\x0d4G\x0a\x88a\x188(\xa8\xaa\ +Bo\xa7\xc1\xdd\xf7~\x95o<\xfb/|\xe1\xfc/\ +\x13\x8f\xc4\xf9\x9f\xad_\xa4\xfd79\x8c\x11\xc5\xaf\xec\ +8\xe1\x84\x13hlld\xfb\xf6\xed\xd45Uq\xc2\ +\xccF\x96OZ\x86\xea\xea\x15\x07@0G\x22\x1f\xf3\ +\xd2\xd0?\xfc\xe1\x0f\xff\x06\xe8:\x8a{\x94\xe3U\xb4\ +\x18\x81\xe1]e\x12{-\xbe\xfa\xdd{I\xee\xb3p\ +M\x89\xa2\x0b\x14M\xf15\x8e\x10B9&\x1b\x92H\ +$\xb8\xfd\xf6\xdb\x0f\xeb&\xbd\x1eC!\xc4\xa2\xa6C\ +\x9e\x9f\xf6\x00\x00\x16VIDAT\xa6\xa6S\x06\x06\ +\x06\xb6\x1dC\xe0U\x01]*\xa8B\x05\x14\x96.;\ +\x85\x86\xb6*\x96\xaf8\x8d)\xb5M\xac)\xa9Tm\ +\x8c\xa0\xe4\x85\xaf\xd3g\xcc\x98\xe1y\x88L:\xdd\xa5\ +\xf9\xec4\xd2M\xe3\x00\xc6@\x00\xa3-B\xb93\x82\ +\x10\x15\xdeMU\xd5\xa3v@TUe\xe1\xc2\x85\x9c\ +t\xd2Il\xd8\xb0\x81\x815\x15\xa3\x1ep\x1c&7\ +\xba~\xac\xe6mbo\xb0\xdbQ\x032<<\xdc\xe5\ +\xba\xee\x5c\xaf\x80\xa0\xe9\xac0\x91\x88\x82\xb4u\xdew\ +\xd2-<\xb3\xef\x87\xd8\x18\xd8\x86\xe4\xc0\xef\x8b~\x0a\ +\xb5\xaa\xaa*R,\x16\xe3G\xf2pS\xa6Ly_\ +\xb1X\xbc\x10p\xa5\x94\xf1\xce\xce\xce\x8a\xee\x97\x82\xb2\ +a2\xd0S\xe2\xab\x89o\xb2\xa7m\x98;\xb6\xfd+\ +\xb1P5\x1b\x0e\x1e\xc4\xee\x8b\xa2XA\x7f\x07\xb6\xb6\ +\xb6\xfami\x81b3w^\xf4#6\xf6\xfe\x96\x1f\ +\xbc\xf8\x9f\xcc\x9cQ\xc7P9Ovw\xa5\xb6W\xd7\ +\xf5c\xa2\xe2\x83\xc1 \xdf\xfc\xe67\x89\xc5b45\ +5\xb1c\xc7\x0e\xce=\xf7\x5c\xd6\xacY\xc3\xca\x95+\ +ikkC\x08\xc1\xacY\xb3\xc8d2\xbc\xf2\xca+\ +\xc7\xc6\xf6Z\x96\xd5\x16\x0c\x06/\xf6\xf2\xd5\xd3/\x09\ +\x13\x8fk\xe4\xfam~3p\x1f\xb6\x22(\x0c8\xa4\ +\xbb\x0f\x19M]\xd7}7\xf4\x08I\xc4[\xaf\xbb\xee\ +\xba\xf3\xa5\x94\xb8H2U\xa34M\x0f\xe0f\xbc\xfa\ ++\x9dt\x22\xc7\xa9\x0d\xe7`\x16m\x92\xc5$\xa77\ +]\xc9\xb3[\x9f!\x18t|\x09U\x14\x05\xe9J\xa4\ +%\xb8v\xf9\x87\xf8\xef\x0d\xff\xca\xf2\xd8\x87X\xd9p\ +#+\x17,\xe0;\xad_\x99\xd0\xfb~\xb4\x80H)\ +\x9d\xf1\x05\xe5\x9e\x93\xe3\xb9\xd9^\xc7Yww7\x81\ +@\x80\xda\xdaZ\x7f\x9c\xd3\xb1\x90\x8b\x0a@uu5\ +\xb6m\xb3\xe3kE\xac\x9cDh \x14\x10\xaaW\x81\ +\xa1\xa2i\x87\x22\xe3\xa3\x1c\xab\xa4'\x93I\x5c\xd7%\ +c\x17\x99sE\x06[\xad\xa8})ltM\x85\xa4\ +\x82q J\xfe\x8d\xb1\xe10c\xde\xd4\xf8\x12\xa0H\ +8L2\x98\xe3\xcc\x8fE8\xff\xfc\x0b\xf8\xd1\xce\xe7\ +\x18J\x8d\xb0\xb7\x7f'\xc5\x9a\xed\xa8Tjl\x85z\ +t\xe3\x93\x00\x1a\x1b\x1bO\x94R\xae\x08\x85B\x5cs\ +\xcd5\xc4b1\x7f\x13n\xdd\xba\x15EQ\xd8\xb3g\ +\x8f_\xf4100\xe0\x17\x18\x1e+ \x9c|\xf2\xc9\ +|\xe9K_\xc2\xb6m\x1e~\xf8a\x0e\x1c80a\ +\x8eG<\x1egpp\xd0\x8fF\xbd\xc14G\x9b\x81\ +s]\x17\xcb\xb1Q\x84B\xba'\xcc#\x7f\xff;\xfa\ +\x0b\xfb\xb9\xe3\xb7\x7f\xc7\xec\xc6yt\x96\xdb0\xca!\ +\x14\xfd\xd0D7\xdf\xf5\xf4\x8a\xf6\x14\x85@@\xc7\xb2\ +\x0c4%\x88\xaah\x04\xb4 !\xadB\x85\x1b\xa6\x81\ +\xa2\x8a\xa3\x9e\xc7U*\x95Z\x9a\x9b\x9b\xc3\x85B\x81\ +\xaa\xaa*\x9f2\x1a\xbf\xfeX\xb1\xa0\x170\x1e5 \ ++V\xac`\xf7\xee\xdd\xfc\xf5_\xff5g\x9cq\x06\ +B\x08\x22\x91J\x1b\xb1\x97\x0e-\x16\x8b\x0c\x0f\x0f\xd3\ +\xdc\xdc\xcc\xe0\xe0\xa0o\x97\x8f\xf4A\xbd\xb9\x8d\x16\x15\ +U\xb0z\xd5\xbf\xf2\xf3=_'y\xa0\x9a\x05\xdaU\ +\xdcr\xc6\xdf\xf3\x99\x9e\xf7W\x5c\x5c\xa7\xa2r\x82\xc1\ +\xa0?\xdb\xd1u]\x0c\xd3\xc4*\x18d\xd7,\xe6\x8b\ +\xbf\xfa\x22\x8e\xb4\xd9\xcb\xe3\x94\x0d\x8b\xcc\xcb\x02\xe4\x0c\ +f\xcf\x96 *\xb9\x8a\xcb/\xbf\xfc\x7f\x84\x10\xdf\x07\ +\xd8\xbcys\xc7\xde\xbd{\x97\x1c\xae'\x98N\xa7+\ +\x1d\xc4\x01\xb8\xe4\xdf\x1aPT\x01\xa84\xd7\x9f@\x7f\ +\xea\x00\xa3\xfbL\x0e\xbcX$\xd5^\x91\xe0\xaa\xaa*\ +\xf2\xf9\xfc\xfd\xc7\x14\x18\xfe\xfc\xe7?\xe7\x03\x1f\xf8\x00\ +w\xdf}7\xeb\xd7\xaf\xf7\xfd\xfd|>\xef\xd3%\xa9\ +TjB\xaaTJIcc\xe3\x97\x14E\xb9\xa5\xaf\ +\xaf\xef\xc0\x91J\x88\x83\x83\x22U\xa6\xd4Ma\xff@\ +\x91\xa2\x05\x1d\xc3\xfbyr\xef}\xd8\xb6\x85eUt\ +\xa9i\x9a\x04\x83AN=\xf5T\xf6\xee\xddK\x22\x91\ + \x9dNc\xba&V\xd9\xc60*S\x91v\xd7n\ +\xe6\x9ckc8\xb9\xca\x1cE7\x13\xc4\xc9j8\x19\ +\x0dk \x18@\xfa3\x15\x83G`C\xd0\xf5J=\ +\x98\xee*\x0cl6)\x0e;\x14\x86\x1c^\x1dHP\ +N\xb9\x95\xba5M\xf8\xb5\x08c6\xcb>&\x1b\xe2\ +\xba.\x0f<\xf0\xc0\xa1\x1b\xf1\x02M\x01\x99t\x06\xcf\ +\xad\x16\xa2\xc2\xdbxc\xfd\xe6\xcc\x99sQ&\x93\xa9\ +\x07\xfe( \xf3\xe6\xcd{\x8f\xae\xebBQ\x14gx\ +x8V.U&{Z\x8aM\xbe?\xc0\xae]\xbb\ +H\xe4\x0a\xa4\x07l\xb2\x89,\xa3\x07\x8b\xe4\x07-L\ +K\xa2\xc8\x0a\x80\x86a\xd0\xdc\xdc\xcc\x8e\x1d;P\x94\ +J\xeb\xb4#\x0fM\x1e2\x5c\x8bp-(\x8e\xc6\xb4\ +\xfa\x05\xc4gT\xb1sp\x03u\x91\xc9d\xe5\x10\x03\ +\x0f6\xe0\x14\x0e\xa9\xbc#I/WUU\xb1z\xf5\ +j\xf6\xec\xd9\xc3\x81}\x07\x08\x18eT\xc7!V\xef\ +b\xd7\xd8\xfe\x98\x0e/n\xf3\xbc\xbfc\x89C\xfe\xfb\ +\xe0\xc1\x83\x17\xdb\xb6=S\x08A1&9\xf5\xf2j\ +\xf4\x80\xa00R\xc5\xfb\xcf\xb8\x9eg\xf6\xfd\x00M\xd5\ +\x19\xdan0\xb8\xb5\x84P\x84?\xed\xe7\x1d\x1e\xb0\xe1\ +\xb4\xd3N\xdb\xac\xaa\xaa\x10B \x91P[\x82l\x10\ +\xe1\xa8\xb0\x11\x9e\xd8\xf8\xd4!\xde\x88\x1av\x1c\x18d\ +\xf4`\x0cG\xe6\xb0M\xe9\x1bs\xaf\x16\xcc\x9b\xec\xe6\ +\x9a\xae\xdfjmI\x07EU\xe8\xdeo\xf3\x95[\xbf\ +\xc2\x0f\xd6~\x97KZn\xe1\x8a%\x1f\xe4S\xcf_\ +\x80eZ\xd8\xa6sD\x80xi\xd9o\x7f\xfb\xdb$\ +\x12\x09n\xbe\xf9f\x9e{\xee9\xbfr\xb1\xbd\xbd\x9d\ +e\xcb\x96\x11\x0e\x87\xd9\xb6m\x1b\xdb\xb6mc\xe9\xd2\ +\xa5l\xd8\xb0\xe1\x1d\xbf\xfbO\x02\x92\xcb\xe5\xb667\ +7\x0f\x1b\x861S\x08\x81\xa1;\xb4\x9cW\x8d\x9d\x92\ +\xa4;\x0c\x1e\xfd\xed\x03\x14\x07\x04V\xd1\xa2\x9c\x92\x84\ +\xc2!\xdf\xf5}\xa7\xf60@/\x97\xcb\xc2\xb6m\x10\ +\xb05\xb2\x8b\xf7\x9e_\x87+]\x1c\xc3E\xb1\x83H\ +K\xc1\xc9\xab\xe4^\xab\xc1)\xaa>\xb1\x98L&\xfd\ +\xe0\xd1\xa3G\x5c\xd7\xa5\xb3\xb3S\xbe\xf1\xc6\x1b\xe2\xd1\ +G\x1fe\xdb\xb6m\x15\xc7C:\xa8\x9a\xc2\x09\xd5K\ +8\x98\xdf\xcdH\xf9 \xff\xeb\xc4\xdb\x09j!B\xa1\ + \x96cc\x99\xbe\x1azGDjjj>q\xde\ +y\xe7}\xa3\xb5\xb5\x95G\x1ey\x84/\x7f\xf9\xcb\xf4\ +\xf5\xf5\xb1w\xef^r\xb9\x9cO\xd3\xac]\xbb\x96\x99\ +3g\xd2\xd3\xd3\x83\xe38\x8c\x8e\x8e\x1e\x9f\xc1\x01\x95\ +\x0d!8\xe9\xa4\x93\xe8\xee\xeaf\xe3\xe7\xcaH{\xcc\ +!\x16\x1a\x08\x15\xe98\x84B\xba\xffr\xbc\x12\xfcw\ +\xba\x01\xbf<\x07I\xa0\xae\xd2\xd9t\xd6\xa4\x0f\xd32\ +\xb9\x85\xa7;\xbe\xc7\xcc\xaaS\xd8\x9a\xfa\x0d\xf6\xc60\ +\xb6u\xa8\x8ad|\x1bD\xa1P\xb8c\xff\xfe\xfd\xff\ +>i\xd2\xa4\x81\x91\x91\x91\xc6\xb5k\xd7\xb2h\xd1\x22\ +6n\xdcX\xe9\xc8R]\x92\xbf/\xd3;u\x90{\ +6?@2\x97\xe0\x0b\xbf\xfb\x12\xaa\xa2\xd2\x9d\x05+\ +\x7fH2&O\x9e|\xc2\xb4i\xd3^\x05T\xc7q\ +\xd8\xb9s\xe7u\xc9d\xb2\xe7-lD\xad\xa2(\x9a\ +\x94\x92M\x9b6q\xd1E\x17\xf9\xe4\xe6[\xd7\xfe\xfd\ +\xfb}\x82s\xeb\xd6\xad\xc4\xe3\xf1c\x07\xc4\xb2,n\ +\xbd\xf5V\xce;\xef<\x0c\xc3\xe0\xb1\xc7\x1e\xf3\x07A\ +z\x9e\xd6\x9c9s\xd8\xbbw\xafO\x0d\x0c\x0c\x0cx\ +7\xb9p\xda\xb4i\xc9\xde\xde\xde\xb7\xe3\x8a\x1c\x8f\xaf\ +\x92\x02\x14E\xd0\xbd\xcf\xe6\xdb\x7fu\x13\xff\xf0\xe3+\ +\xf8\xe2\xc5\xdf'\x1en`t{'\x83\xd6\x08\x86\xe1\ +\xf8\x80{\xc4\xe1\xb8*I\xa9\xaa*\xb7\xdez+\x9f\ +\xff\xfc\xe7\xb9\xff\xfe\xfb\xfd\x09<\xb6p\xd1\x8a\x1a\xb1\ +\x13\xaa(e,\x0a\x96`d\xd9V\xe2\xb1\x10\x93F\ +\xc2\xd8\xf5A\xdc\xb2\x8a4\x14\xa4\xa9\x84\x91\xe2L/\ +\xf7\xfd\xe6\x9bo\x86\xdeN]\x8dO[+\xaaJ\xb8\ +J#\x10\x14\x87:\xa6\x04\xd8%\x17\xbb\xa4\xf86W\ +Q\x14J\xa5\x92e\x9af\xe2\x98\x00q\x1c\x87\xd9\xb3\ +g\x93L&9\xe5\x94S\x08\x85B\x9cr\xca)D\ +\xa3Q\xa2\xd1(?\xf9\xc9O\xa8\xa9\xa9\xe1\xcc3\xcf\ +$\x9dN\xb3n\xdd:\x02\x81\x00\xb6m\xf3\x9e\xf7\xbc\ +\xe7\xe1\xf6\xf6\xf6\x1f\xf7\xf6\xf6\xde4F66\x01\xab\ +\x01\xd3u\xdd\xea\xde\xde\xdeJ\x012`Z&\xf9l\ +\x8c;\xef\xfc\x1a=\xedY\x1e\x1fz\x86L!\xc3+\ +}oR\xe8\x0a\x13\xd3k=\xb6\x94\xaa\xaa*r\xb9\ +\xdc\x84\xd1\x17B\x08\xda\xda\xda\xb8\xe9\xa6\x9b\xc8\xe5r\ +TUUUf\x09\x0b\x17\xdc\xb19\xed\xc0\x906\xc2\ +\xc2\x85\x01l\xcb\x84\xa6\x89#\x93\xb2\x9b\xc7*\x1e\x85\ +\xf4\x0b#\xfe\x18\xf1\xd9\xd0\xd00\xd6\x82\x00\xb5\xe7\x04\ +Y|Z\x8c\xa1\xedeF\xf7Y\x8c\xee6q\xed\xb7\ +u\x04\x0e\x0c\x0e\x0e\xdewL\x80D\x22\x11\xee\xbc\xf3\ +N\xce<\xf3L\xee\xb9\xe7\x1e\x8a\xc5\xe2\x84\xec\x97i\ +\x9a\xac]\xbb\x16\xdb\xaed\xf4\x82\xc1\xa0\xff\xef\xde\xf0\ +.o\x8d\x8c\x8c\xac\xba\xf2\xca+?\xefQ\xf4\x19\xb3\ +(kg;B&\xc3\xb8\xc9\x00\xd8\x92=ov2\ +YY\xc0\xa6\x8d\x95\xe9\xdc\xd3\xb4\xe5t\xba\x1d~\x8e\ +:\x12\x89\x10\x0c\x06\xfd\x91G\xe3\xa8\x97{\x86\x87\x87\ +\xab\x84\x10n\xb9\x5c^.\x84\xb8\xb8\x5c.\xe3(.\ +\xa1Px\xac\xe2Q\x80*1M\x87\x0f\xcc\xbc\x93\xee\ +\xec.N\x9a\xb5\x98\xffz\xee>\xec\xbav\x1c'\x82\ +eZ\xa0\xc8\xb7\x8d\xe2\x03\x81\xc0l)e\x9d7H\ +a\xd1\xa2E\x04\x02\x01\xfa^\xebe\xe7\xcb\x12I\x00\ +)ub\x91\x90\xafR\xbd_^a\xc81\xab,\xdb\ +\xb6\x83\x8a\xa2\xf0\xdak\xafU\xf4\xa1d\xc2d\x05!\ +\xc0\xb6\x1c\x84R1\xe6^.\xa2P(L\x18,\xec\ +=\x933nPrva\xa7\x98yF\x14\xcb5q\ +\x1c\x17%\x17\xab\xc4\x07\xde\xec\xdc1\xf7\xd2\x9b\x17,\ +\xa5\xf4\xe9\xfe\xfa\xfaz\x12\x89C\xd2\x9fL&\xbf\xe6\ +\x19\xfb\xc9\x93'\x7fL\xd3\xb4\x8b\xa5\x94\x08\x1b\xb0]\ +\xffP\x00\xcb4H\xec\x93T5W\xf3\xfc\x9b?\xc6\ +:\xf01\x16(g\x12SV\xf0X\xefO\xc9\x8d\x06\ +@Ho\xf0\xd8)\x81@\xa0^UUQ*\x95v\ +_r\xc9%\xed===X\x96%kkk\xc5?\ +\xff\xf3?\xb3x\xf1b\xee\xbd\xf7^\xf6\xed\xdb\xc7\xe2\ +\xc5\x8by\xf3\xcd7iii\xa1\xbf\xbf\x9ft:\xcd\ +\x94)S\x90R\xb2}\xfbv\xd2\xe9\xf4\xb1\x03r\xe0\ +\xc0\x81\xbf\xcb\xe5r\x9b\xd41~\x22\x1fr9\xff\x96\ +:\xcaY\x07\xbb$)\xa5\x5c\xd2]\x16\x99\x036\xee\ +8\xa0&M\x9a\xe4\xd1+U\xb1XlF>\x9f?\ +\x00\xb8\xe3wJ8\xa2a\x14%\x97\xcf\xfc'&\xd7\ +\xd5\xf2\xf3=\xdf V\xd7H\xa2\xf9\x00\xc9\xf5!_\ +\xf7:\x8eC:\x9dFJI8\x1c\xc6\xb2,\x06\x06\ +\x06\xbc\x06\x98\xb7\xf3\x1cTM\xd3X\xbdz5\xf9|\ +\x9e\x1f\xff\xf8\xc7~\x02\xad\xae\x5cEh\xeb\x1c\xee\xda\ +|\x17\xaa2\x87\xdf\x06\x9e \xa4\xebHCe\x8a\xb3\ +\x98\xa6\x13\xbd\x9d&\xb9\xfa\xea\xab\x7f\xeeU\x8e\xacY\ +\xb3f\xaaW\x13l\xdb\xb67\x8f\xd7\x1f6\xe3\xba.\ +\x93'Of\xfa\xf4\xe9\x94\xcbef\xcc\x98\xc1\xbau\ +\xeb\xfcd\xde\xce\x9d;\x8f\x8f\x97eY\xd6\xd6@ \ + =5\x13\x01v\xfe\xc0|Kn]'\xa4\xeb\xa0\ +\x1f\x8ab5M\xc3\xb2,\x1a\x1b\x1b\xffz\xc9\x92%\ +\x97\xbd\xf8\xe2\x8b_\xb5,\xeb\xe4\xbe\xbe\xbeCc\x9d\ +\xde(\xa0\xb5W\xb3\xeb\xc46\xbe\xb1\xf9\x19fN\x99\ +\x89\x1e\x9fB\xdb\xe0N\xf2C\xae_\x1c\xf0\x16\xd1/\ +wtt<4\x96\xf134M{\xe5\xedr)\xef\ +{\xdf\xfb\xa8\xaf\xaf\xe7\xb6\xdbn\xe3\xd1G\x1f\xf5S\ +\xba\xaet)\x9b\x15\xb5\xbb!\xdd\xca{o\x0dO\x18\ +3e\x0d\x070{\xc2\x98\x07\xc389\x8d\xf1\xb3T\ +\xbc*z/\xc6\xb9\xed\xb6\xdb\x08\x06\x83\x94J%\xa4\ +\x94|\xff\xfb\xdf\x9f\xd0\x7f\x22\xa5d\xf7\xee\xdd\xb4\xb6\ +\xb6\x1e6\x89yX\xed\xa7\xae\xeb\xf2\xd1\x8f~\x94s\ +\xce9\x87\x8e\x8e\x0ev\xee\xdcIgg\xa7?\xdb\xc3\ +4MN?\xfdt\xf6\xef\xdf\xcf\x9e={\x98={\ +6\x1d\x1d\x1d~&\xb1\x5c.\xeb\xe7\x9e{\xee\xbf*\ +BaX\x1b\x96\xd3O\x12\xc2\x1c\x0cc\x0f\x07qS\ +:;6\xee\xa5E=\x11g\xc4\xa5wx\x90&m\ +)\xeb\x13\xaf\xfb\xbd\xe0^q\xc0\x18\x91\x98O$\x12\ +\x1f\xfd\x93\x0f\xa5i\xbc\xf2\xca+\xacY\xb3\x86\x91\x91\ +\x11\x8a\xc5\xa2?O\xd7+\x0b\x02(\x0a\x93hm\x0c\ +\x92\xd3\xb8\xfd\x92/\xf1\x8b\xd6\xffd$2\x82=7\ +Kb\xb3E\xea\xe5*T\xad\xd2\xb2}\xd6Yg\xad\ +\xf3\x00)\x95J\x84\xc3\x95\xf3N\x8a\xb9J9\xa9P\ +\x15\x94?^\xd6,\x01\x91J\xa5\xa2\xc7\x05\x10)%\ +\xd7\x5cs\x0d[\xb6la\xd5\xaaU$\x12\x09\x16-\ +Z\xc4\xf6\xed\xdbihh\xa0\xb3\xb3\x93\x9a\x9a\x1a\x16\ +.\x5cH \x10\xa0\xbd\xbd\xdd\x1f\x00\xe9\xbd\x80\xfe\xfe\ +~\x1c)\xa9\xbe>/\xc2\x8bc\x84\x97fA\x91H\ +S\xc1Nk\xb8Y\x9d\xd4\xf3\xb58\x96\x8b\xe6\x1e\xaa\ +.\xf1\x06\xa7\xd5\xd5\xd5M\x985\xffN\x91t\xb1X\ +\xe4\x9cs\xce\xf1\xc1\xf4\xf4w]]\x9d\xff\xbdM=\ +*{\xbf\x5c\x87\xedf\xf8\x9b\xff\xfc\x18\x02\x9d@@\ +E\x1aQ\x14]\x22t\x13\xd5U\xbc\xd1\xb8\xb3\x0c\xc3\ +\xc0\xb6m\xaa\xab\xab+\xc9'\x04\xb5K\x82\xe8\x08\xf2\ +\x03\x0eF\xc6\x9d0\x9c\xc8\x93\x0aM\xd3D6\x9b}\ +\xc3\xb6\xed\xf7\x1e\x17@t]\xe7\xfa\xeb\xaf\xe7\xae\xbb\ +\xee\xe2\xeb_\xff:\xdd\xdd\xdd\x13N\xd2)\x16\x8bt\ +uu\x91\xcb\xe5\xfc)\x9d\xaa\xaa\x92\xcdf\xa9\xad\xad\ +\xc5u]\x7f\xc8\xc0\xc0\x036o(\xde\xb0Ie\x1c\ +eaR\xb4\xdahii\x99\x90\xb7\xf7&\xea|\xf4\ +\xa3\x1f\xe5\xfe\xfb\xef?\xac2#\xc30r\xb6mw\ +{u]B\x88\xe9\xaa\xaa\x0aO\xda\xfd\x89\xa8\x01\x8d\ +\x9aI1,\xcbb\xb4lS}\xe9\x10\xb5\x93td\ +I\xc3\x1c\x0aR\xec\x08@\x22\xeaWNz\xf1G(\ +\x14\xe2\x13\x9f\xf8\x04\xc9d\x92\xed\xdb\xb7W\x1a\x95j\ +-d\xfc\x90\xf3\xe1\xfd\xee\x15]\x94J\xa5r\x22\x91\ +H\x1d\x17@\xbc\xb9\x8a_\xf8\xc2\x17\xfe\xe8g\xf2\xf9\ +\xbcO\xcdK)\x19;\xb1\xccg\x81\x87\x86\x86*\x85\ +\xda\x93\xe3\xa8\xaaJ[[\x9b?\xcbw\xf1\xe2\xc5c\ +\xd4G\xd9\xcfq\xd8\xb6\xed\xe7\x0e\xaa\xaa\xaa\xfc\xf9\x86\ +\x87\x03H:\x9d~p\xd3\xa6M\x0fz?O\x9f>\ +\xddRUU;\xf1\xc4\x13\xe9\xee\xee\xf6\x81\xf6^\x98\ +a\x18${Fh^\x7f\x12\xd9R\x89u\xeb\xd6\xa1\ +i\x1a\xcb\x97/\xa7\xa1\xa1\x816\xa5}\xc2\x09:\x17\ +^x!\x93'O\xe63\x9f\xf9\x0c\x8f<\xf2\x08/\ +\xbf\xfc2\x97]v\x19\xbf\xff\xfd\xef\x995k\x16\xc3\ +\xc3\xc3l\xd8\xb0\x81X,\xc6\xa9\xa7\x9e\xcas\xcf=\ +w\xd8\xa4\xe5a\x01\x92J\xa5\xfe*\x9b\xcd~\xa3\xa6\ +\xa6fQ>\x9f\xf7\xcb\xfb\xc7\x1b\xaa\xb7\x1a-\xaf\xc8\ +\xce\x03\xc5\xcbuTUU\x11\x08\x04hjjb\xe6\ +\xcc\x99\x0c\x0c\x0cL8\xbfj\xfc1B\xe3\x8b\x93\xbd\ +\xe1hG\x93\xfc\x92R\xb2n\xdd:\x86\x86\x86X\xbd\ +z\xb5\x1fKyR\xe8yJ\xb6m\x93N\xa79\xeb\ +\xac\xb3\x88\xc5b$\x93I2\x99\xcc\xf8S\xd80M\ +\x93\xbd{\xf7r\xdbm\xb7122\xc2\x8e\x1d;p\ +]\x97\xed\xdb\xb7\xe3\xba.\xfb\xf6\xed\xf3\x9f\xbdP(\ +088xD,\xf2a\x01\x92L&\x7f]WW\ +\xf7\xcf\xcb\x97/g\xf5\xea\xd5tww\xb3y\xf3f\ +\xba\xba\xba\x08\x04\x02~\xe2~\xea\xd4\xa9\xf4\xf5\xf5\x91\ +N\xa7\x994i\x92\xcf~\xfa%=\xe3b\x10\xcb\xb2\ +\xc8\xe7\xf3>M>\xfe@\xb1\xf1\xb3s\xc7^\x5cj\ +``\xe0\xe1\xb1\xff7r4eE\x86a\xf8R\x9b\ +\xcdf\xfd\xef\x1f?t\xdfSK\xa6i\xfa\x07\xd5x\ +\xff\xe6\xfd\xbd\xe38\x8c\x8c\x8c\xb0j\xd5*_\x9dC\ +\xa5\x9b\xca\x1f\xeb1n\x83\xbe\xf1\xc6\x1bG\xd4Bw\ +$\xe7\x87\x88\x8f\x7f\xfc\xe3\x0c\x0e\x0er\xed\xb5\xd7b\ +\xdb6\xb3g\xcf\xa6\xaf\xaf\x0f\xdb\xb6\xa9\xab\xabC\x88\ +J2\xa6\xbd\xbd\x9db\xb1H0\x18\xf4\x87${\xb6\ +\xc0\x03\xc4/\xf3\x19\x03a\xbc$\xa9\xaaJ \x10\xa0\ +\xa5\xa5\xc5\x9b;5\xd2\xd9\xd9\xf9\x89\xf11\xce\xf8\xa0\ +\xf0pT\xee\xc5\x17_\xccE\x17]\xc4\xf0\xf0\xb0\xaf\ +\xb2B\xa1\x90\x9f\x8a\xf6\xd4\xd7x\x06`\xfc\xe1g\xde\ +\xdc\xc9\xb1\x0d:\x81L\x1c_r\xfbv\xd7\x96Rv\ +I)\xfb\x8e7 |\xfa\xd3\x9f\xe6\xa1\x87\x1e\xe2g\ +?\xfb\x19/\xbe\xf8\xe2\x84\xf38\x0c\xc3 \x1a\x8d\xfa\ +e\xf7\xde\x91\x0e\x9ek\xec\xa9\xaf\xf1\xa7\xd5\x8c?\xe9\ +\xcd{!\xc5b\xd1\xaf2\x9c:u*\xe9t\xfa\x0f\ +(\x87#\x01\xc3SYMMM\xec\xde\xbd\xdbW\xb7\ +\x9eZ\x1c\x7f\x14\x85\xf7gOZ\xc7\xd7T\x99\xa6\x89\ +\xae\xeb\xdcq\xc7\x1d\x5cp\xc1\x05\xfc\xfb\xbf\xff\xbb\x97\ +_\xf7YkO\xda\xab\xaa\xaa\xfcA=RJv\xed\ +\xda5\xeb\xb8K\x88\xe7>~\xf0\x83\x1f\x9c\xd0S8\ +\xdevx\x93\x9d=\xfdYUU\xe5\x9f\xc4\xe3\xedJ\ +\x8f#\xf2\xa4\xc5\xf3F<\x8a\xc4\xa3\xab\xa5\x94\x13\x06\ +\x80\x1d\xcbJ\xa7\xd3\xb36o\xde\x8ceY\xf9\xe9\xd3\ +\xa7w\xacZ\xb5\xaa\xf6S\x9f\xfa\x147\xdf|3\xf9\ +|\xde\xef\xb5\xf7\xdcZo\x1c\xdfx\x9a?\x93\xc90\ +{\xf6l\xce=\xf7\x5c\xa2\xd1(\xe7\x9cs\x0e\x1b6\ +l\xe0\x92K.a\xcd\x9a5\x5cy\xe5\x95<\xf9\xe4\ +\x93,\x5c\xb8\x90\xda\xdaZTU\xe5\xb9\xe7\x9e\x9b0\ +\xed\xfax\x03\xf2\x8b\xee\xee\xee\xed\x8a\xa2\xac~\xef{\ +\xdf\x8b\xa2(\xb4\xb7\xb7c\x18\x86?\xef\xdc\xd3\xb75\ +558\x8e\xe3\x0f\x94\x14B\x90J\xa5\xfc\x01\xf5\xe3\ +U\x96W\xd1\xe7}n\xacZ]:\x8e#l\xdb\xa6\ +\xa6\xa6\x86L&\xa3\x1e# ~N\xa3X,\xbaw\ +\xddu\x17\xeb\xd7\xaf\xa7\xba\xba\x9a\x91\x91\x11\x7f\xf7\x8f\ +\xb7g\x1e\xd52>\xd1\x96\xcb\xe5\xd8\xbd{7\x0d\x0d\ +\x0dx\xe7\xffzn\xef\xd6\xad[\xb1m\x9b\x9e\x9e\x1e\ +\x7f\x10\x8d7\x92\xe9\x88\xec\xdd\xe1|\xc8;\xab\x0f\xd0\ +\x96,Ybm\xdd\xba\x95\x9d;w\xd2\xd3\xd3\xc3\x96\ +-[X\xb1b\x05?\xf8\xc1\x0f\xb8\xf0\xc2\x0b\xe9\xec\ +\xec$\x18\x0c2\x7f\xfe|:;;y\xf5\xd5W\xc9\ +f\xb3\x0c\x0f\x0f\x13\x8b\xc5\xfcrS\xef\x04\x01)\xa5\ +\xdf\x9f\x18\x8dF\xfd\x03Q\x06\x07\x07\x13\xe5r\xf9\xe5\ +1\xbb\xb4gdd\xe4\x8b\x1c\x87u\xe2\x89'&n\ +\xbc\xf1\xc6\xfaK/\xbd\x94\xcf~\xf6\xb3\x0c\x0c\x0cP\ +*\x95\xfc9\xed\x85B\x81)S\xa6\xf8\x07\x9cy\xe3\ +oUUe\xe6\xcc\x99d2\x19\xff\xb4\x87\xb7s\x1e\ +\xde\x9a\xe6\xb5m\x9b7\xdf|S\x1cW\x09\x19\xa7\xc3\ +\x15\xcb\xb2x\xf8\xe1\x87\xb9\xec\xb2\xcbx\xf4\xd1GI\ +&\x93\xbc\xf0\xc2\x0bH)\x19\x1c\x1cd\xdf\xbe}\x95\ +\xb3\xa5\xba\xbb'd\x10\xbd\xc1/\xe9t\x9a`0\xe8\ +\x0fO\x8eF\xa3\xbe\xd4\x18\x86\xc1\xec\xd9\xb3\xc9d2\ +(\x8a\xb2+\x93\xc9\x5c\xc3q^\xba\xae\xf3\xe4\x93O\ +\xf2\xd4SO\x91\xcf\xe7\x99\ +\xbf\x059\x1c\x0e\xfb\xd3\x0dB\xa1\x90\x7f\x1cP&\x93\ +!\x97\xcbM\xe0\xb9\x82\xc1 \x17^x!/\xbf\xfc\ +2\xde\xbcu!\x04\xed\xed\xed\xaf\x0f\x0c\x0c\x9cy<\ +\xc1\x18\xb3G\xfe\xcfs\xe7\xce\xdd{\xed\xb5\xd7\xce\xbb\ +\xf9\xe6\x9b\xb9\xfc\xf2\xcbY\xb6l\x19---<\xf9\ +\xe4\x93\xbej\xfd\x87\x7f\xf8\x07\x1ey\xe4\x11\x0c\xc3\xe0\ +\x86\x1bn`\xd3\xa6M\x8c\x8e\x8e\xfa\xae\xb0\xd7\x93\xa2\ +\xeb\xba\x7f\x0cG0\x18D\xd7u\xba\xbb\xbb\x97\x1d<\ +xp\xcb\x91\xdc\xe3\x91\xf6\x9f\xd9]]]\x97\xb7\xb6\ +\xb6^\x17\x0a\x858\xf3\xcc3\xf9\xc2\x17\xbe@4\x1a\ +\xa5\xb9\xb9\x99\xa9S\xa7RUU\xc5\x8c\x193\xa8\xa9\ +\xa9\xa1\xae\xae\x8eH$\x82\xeb\xba~\xa0\xb5r\xe5J\ +\x02\x81\x00\x0d\x0d\x0d\xc4\xe3q\x82\xc1 \xd1h\x94\xb1\ +\x81\xcdon\xdf\xbe\xfd\x9f\xb6o\xdf\xfe\x19\xe0+\xc7\ +[:\xc6\x831&\xa1\xca\x0b/\xbc\xc0%\x97\x5c\x82\ +\x10\x82{\xee\xb9\xc7?\x9fp\xc3\x86\x0d\x18\x86\xc1\x15\ +W\x5cA\x22\x91@\xd7u~\xf9\xcb_\xd2\xdd\xddM\ +\xa1P\xa0X,N89\xc7s\xedC\xa1\x90\xf4\xcb\ +\x91\x5c\xf7\x88\xdd\xc3\xa3:-Z\xd3\xb4\x80\x10\x82\x07\ +\x1f|\x90\x87\x1ez\xe8\x0f\xfe\xfd\xe0\xc1\x83\x7f\xd49\ +x\xab\x1b\xeb8\x0e\xbf\xfd\xedo\xbdIo\xbbr\xb9\ +\xdc\x7f\x02\xefX\xb6\x7f\xf8 \x0f>\xf8 w\xdf}\xb7\xef\ +\xba{A\xafw\xc2\x90\x97\xbe\x1eSo\xa2\xad\xad\xed\ +\x5c\xc7q\xf6\xd4\xd5\xd5%\x8e\xf4\x9e\x8e\xca\xc1\x0f\x85\ +B\xb1\xba\xba\xba\xcf\x85B!\x17\xb8*\x1c\x0e/>\ +\x1c\xbd\xefMz\xf0\xa6<{\x996\xcf\xdfO\xa7\xd3\ +kzzz\xde\xcf_~E\x16/^\x5c\xf0\xfaE\ +t]g\xe9\xd2\xa5\xec\xdb\xb7\xcfw\xc9\x0f\xc7}\xf5\ +\xf8\xb1\xed\xdb\xb7\xcf-\x14\x0a\xedGs#\xc7<8\ +\xaa\xb9\xb9\xf9\xe7MMM\xd7\x1e\xce\x5cs\x0f\x14\x8f\ +\xce\xae\xa9\xa9\xa1P(\x14[[[\xa3\xe3\xbe\x8f\xfe\ +\xfe\xfe\xbf4 \xc1\x96\x96\x96m\xf1x\x5c\xe4\xf3\xf9\ +Hcc\xe3\x09RJ\x0a\x85\xc2a\x8f\x90-\x14\x0a\ +\x98\xa6y\x9f\xeb\xbaV\xb9\x5c\xfe\x8f\xa1\xa1\xa1\xd1\xff\ ++\x80\x00\x81\xb1\xef\x09\x86B\xa1\xa5\x87\x1b\xd7xQ\ +{8\x1cNd2\x99]\xfc?\xb2\x82\xc1`m8\ +\x1c\xfeG\xd7u\x9d#`\x08d \x10H\x9e|\xf2\ +\xc9\xff\xf3\xc2\x0b/H\xde]\xef\xaew\xd7\xbb\xeb\xdd\ +\xf5\xeezw\xbd\xbb\xde]\xff\x8f\xad\xff\x03!\xf6p\ +\xa0\xc1\x03\x97\x85\x00\x00\x00\x00IEND\xaeB`\ +\x82\ +\x00\x00:y\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00d\x00\x00\x00d\x08\x06\x00\x00\x00p\xe2\x95T\ +\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ +\x00\x00\x09pHYs\x00\x00\x0e\xc4\x00\x00\x0e\xc4\x01\ +\x95+\x0e\x1b\x00\x00\x00\x07tIME\x07\xd9\x03\x03\ +\x0e\x1c\x1e\xba\x16\x7fM\x00\x00 \x00IDATx\ +\xda\xed\xbdy\x9c\x5cU\x99\xff\xff>w\xa9[\xd5\xd5\ +\xdd\xd5\xdd\xe9-Iw\xd2!\x1b\x09Y\x00Y\x02\x81\ +\x08\x88@@\x10F\x5cf\x1c\xc1\x19\x01\xf9\x02\x83\xdf\ +A\xe7\x0b\xe38\x83\xc8W\x04t\x5cXd@Q\x91\ +M\x04\xd9\x05!\x04\x08\x09\xd9C:\x0bM\xd6N\xa7\ +\xf7\xa5\xba\xf6\xed\xae\xe7\xf7\xc7\xed\xbaI\x005`\xc0\ +\xef\xcc\x8f\xf3z\xd5\xab\xb7\xeaS\xf7\x9e\xe7\x9cg\xf9\ +<\x9f\xe7\xb9\xf0\xd1\xf8h|4>\x1a\x1f\x8d\x8f\xc6\ +G\xe3\xa3\xf1\xd1\xf8h\xfc\x8f\x1f\xe2\x7f\xf2\xcd\x9dt\ +\xd2I;\xa7L\x992QJ\x89\x00\xa4\xad %\xa0\ +HP$B\xbcs\x05J\xa5Rx\xc9\x92%_L\ +\xa7\xd3\x0f\xff5\xaeY\xfb &\xad\xaf\xaf_\x94\xcf\ +\xe7'\x1d\xf4\xae\x10\x02\xcf\xf3\xa8\xa9\xa9ynpp\ +0q\xa8\xaeCU\xd5\xeaB\xa1\x10\x01\xd8c\x0f2\ +\xf3s\x05*\xa3:NJ\xc3K\x87\xf0r\xfe\xf7n\ +J\xc3M\x86\x00\xf0<\x0f)\xa5\xf6\xd7\xdaD\x1f\xc8\ +\x07\xd7\xd5\xd5\xdd\xf5\xd9\xcf~v6\x80'=\xdc\x0a\ +\x8b\xb0\xa1 \xad\xb1\x97\xad\x80\x1c\xdb\x9dc;\xd40\ +\x0c\x1e\x7f\xfc\xf1c\x81C&\x10)\xa5\xb4,\x0b\x01\ +\x8c\xb8)>\x16\xa9$$\xab8\xf6\x88\x05l\x1f]\ +O\x22\x93\xa4\xae*Bn\xd8f\xf8wu\x07l\x90\ +\xffQ\x02\xb1m\xdb\x18\x1a\x1a\x02`g\xbe\x9f\x85W\ +\x81\xed\xed\xbfP`\x0f\x86(\xee\x8cb\xee\x8e\x80\x90\ +TUU\x81/\xa6C6\x5c\xd7\xc5\xb2,\x90 t\ +\xf0\x84\xc3E3\xbe\xcfs=\xb7q\xeb\x99\xbf\xe7G\ +O\xfe\x90\x89\xad\x1eK\x06\x9e\xf1\xdf7&\x8c\xbf\xa6\ +@\x94\x0fh^\xcf4ML\xd3\xc4v]t]!\ +7P\xc5\xb7?\xfe[\xce\x9eq1\x8a\x13a\xdc\xe4\ +\x0aB\x93\xf3\x98%\x0b\xcb\xb20M\xf3\xa0\x17\xa2\xa5\ +\xa5\xe5\xe0.\xc2\xf3\xa4eY\xd8\xb6\x8d\x87$\x951\ +9\xfa\xf0#\xe9H\xaf@\x11\x0a\x9f8\xfa\x93TU\ +\xc5PB\x12\xc7q0M\x13\xc7q\xfe\xaavO{\ +\x1f\xea\xe8\xc2c\x8e9\xe6_\x1c\xc7\xf1$\x12U\xaa\ +\xb8\xb6\xf4E\xabH4]u;;;[M\xd3\xf4\ +w\xa9\xe7b\x96\x14\xfe\xed\xcc;\xf8\xe9\xfak8\xab\ +\xf9\x1bLQ\xe2\x9c4\xeb(\xee\xde~\xab/\x08U\ +\x12\x0a\x85\x90\xf2\xe0\x0eHoo/mmm\xab\x1a\ +\x1b\x1b)\x1bl<\x05\x89$\x95N\xd6M9l\xca\ +\x0cEQ@\x08\xa4+\x11\x86\xcb\xdc\xfc\x14r\xbf\x84\ +\xd3~\xf6q*B\xd39\xf9\x8e\x93\xd1U\x0d\x81F\ +(T\xc3\xce\x9d[hmmEJ\x89\xeb\xbaSC\ +\xa1\xd0\x82\xf7\xb2.\x15\x15\x15TWW\xaf\xe9\xee\xee\ +\x96\x1f\xaa@,\xcb\x9a{\xd8a\x87\x1d\x97H\xf8\xaa\ +\xbe\xaf\xae\x8b\xd9\x0bu\xac\x81\x08\xceH\x18\x91\x8b\xd0\ +\xdd\xa3b\xdb\xb6\xbfK\x85\x87kKf\xb5\xcd@\xd9\ +\x03E;K\xb6\x98\xe3\xa5\xdd\x0f\xe0y\xbeJ\x11\xaa\ +\x0c\xde\x7f\x90#\x5c__\xbf`\xda\xb4ix\x9eG\ +Q\x9ah\x87\xa7\xa8\x0c\x87\xe8\x5c\xe11\xae\xba\x1e\xcb\ +2\xd1\x84\xca\xf6\xf1[9\xe1\xecJ\x5c\xd7\xc3\x1e\xd1\ +q\x07\xa3X\xc3P\x93\x19\x87\x9dR(\x16J\xa8\xaa\ +@\xd34r\xb9\x1c\xae\xeb\xca\x93N:\xe9\xfa\xda\xda\ +\xda\xeb\x01\x1c\xe9\xa2Wy\xe0(`\x8f\xd9\xbf\xc0\xf6\ +\xc9@\xcd\xed\xde\xbd\x9b\xb5k\xd7F\x80\xd2\x87nC\ +J\xa5\x12\xa6i\x92sKD\x8e-\xa2V+D\xaa\ +s03\x87f\x08\xc4Z'\xd0\xc9\x9e\xe6\xa1\xaa*\ +\xa9\x5c\x1aEQQ\x15\x1d\xdb3\xa9\xd2+\xf1$X\ +\xa6\x89\xd0\x08\xde\x7f\xb0\x8e\x99\xe7y\x94J%\xf0$\ +\x9dz7\x0b\x8f\xd6\x81\x22F<\x83\xbd\xc7\xc2\xb2-\ +\x81\x93\x9b\ +\xbe\xcc7Oz\x88\x90jP2Kd2\x19\x86\x86\ +\x86\x18\x1a\x1abS\xecu\xe4\xc2\x1d8\xa6\x87i\x9a\ +X\xa6\x85\xa2K\x1c\xc7en\xf4\x5c\xbev\xe2\x8f\x89\ +DB\xd4\xb4TR}R\x12\xcf\xf07f\xf9>\xff\ +jF\xbd\xbc\x83,\xcbB\x08\x98\xa0\x1e\xc5\x8a\x9e'\ +\xf9\xed\xf2\xdf\xf0\xa5#\xbf\x89\xeb:\xa4\xd3iR\xa9\ +\x14\xf9B\x1e\xc7\xb3I\xd6.c\xeb\xee\xdd\xf4\xe46\ +Cm??Z{9\xe9d\x8eT:M:\x9d&\ +\x93\xc9 \x84\xf8\xb3\xc7d\xfc\xf8\xf1A\xbc\xe0\x0b\xd2\ +\x02!\xd1\xc3\x1a\x9f\x9cs>\xab\x07\x9fAz\xbe\x0a\ +\xb4l\x1b=\xac#\xac\x18\xbd\xc5\x1d\xb4\xf7\xaf\xe0\xb0\ +\xfay4\xd54\xa1\x0a\x1d\xd7uq\x1c'\xd8\x14\x91\ +*\x81\xaa\x8a\xe0\xf7\xb6m#tA\x85\xde\xc0\x95\x9f\ +\xf8&?|\xf6\x07\x5cz\xec\xad\x5c\xb3\xe8\x1e\xda\x1a\ +g\xe0\xb8\x0e\x8e\xe3\xbf<\xcfCQ\x94\x0f\xdf\xa8\x97\ +O\x88m\xdb8\xd8\x08\xa1\x10\xd6#\xb8\x9e\x8d+]\ +\x92\xc5a\x14E\x0b\xbc\x15\xd7q\x91\x8a\x87kI\x9e\ +\xeb\xba\x85\xd2V\x97\xe2\x80 \xdf\xa51\xb4\xb1\x88\x11\ +\xd1A\x82e\xdaTF\xabn\x9e;g\xee\xe8\x1f\xc3\ +\x0fR\xa9\xd4\xeb===w\x97\x05288\xe8{\ +f\xa3.\xabo\xcap\xfe\x0f\xcfc0\x91C\x9a\x05\ +$\x1e\x02\x81|\xdae\xad\xda\xc1\xe5\x8f\x5c\xc3h6\ +\xc1\xe5w_\xc1\x9a7^\xc3t\x8b\xbe]\xd9\xefd\ +j\x86\xc2\xf6\x9f\xbbT\xc7r`\xfafB_Q\xc5\ +\xeaW\x93\xcc\xbdv\x1e\xd5\x91\x18_\xfa\xd1Wq\xa5\ +\x8b\xa1F\xd0#\x1aB\xf8\x1bTU\xd5C\xe2.k\ +\xef\xf7\x84X\x96\x85-\x1c4Ec0\xbf\x973b\ +\x0b\xe8\x89\x99$\x0a~\xfc\xa1i\xfe\xd4u\x05\x95\xa5\ +\xd7\x8dbgd\x10\x04\xda\xb6\xcd\xa2E\x8bh\x98m\ +\xa2\x0a\x85Nm/G,\xd2\xb1\xfb*\xce\xb6\x07\x22\ +\xc8t\xe8]A\x9d-[\xb6\x00\xdc]VY\x93'\ +O&\x12\x89 \x84\xa0\xcf\x19\xa1\xee\xfc!&\xca*\ +\x9c\xfe\x0a\xac\xde\x0a\xdcx\x08\xe4\xbe\x89j\xaa\xc6\xb1\ +w\xef^\x22TQ\x1bn\xc4s\x07q\x1c'\xf0\xee\ +\xd4\x9cG}c=\xe3\xea\xc6\xa1(\x0a;\x0b\xfd\xcc\ +\xfc\x5c\x91XL\xc7M\xc7\xb0z#8\x835X\xfd\ +a\x14E\x04\xaa\x13\xa0\xbb\xbb\xfb\xaf+\x90R\xa9\x84\ +\xadI\xa4\x0cc\xd7l'1\xecp\xd2\xc7\x8e\xe4W\ +\x9bn\xa0/\xd9\xc7Yg\x9d\xc5\xa5\x97^\xca\xf2\xe5\ +\xcbiooghh\x08\xd7uq]\x97\x81\x81\x01\ +\xcaqJ\xca)\x10=9K\xa89\x8a\xd7\x90D;\ +J\x10\x12\x158%\x0fUh\x0c=\xd0\xe8cO\xfb\ +\xdd|\xf9\xfbr\xec\xa0\x08\x85-\xd6\x1e\xe6\xd56S\ +\xb2\x0a\xd4\xcc\x0bQ\x98\xdd\x0bH\x84\x13\x22\xbd\xaa\x9a\ +\xe2\x8e0\x00!\x11\xe6\xbaW\xcf#[\xca`\xd9V\ +\xa0r\x00*\x84\x82;6\xa7\x10\x82\xbe\xd2('7\ +\xd6Q,\xba\x1c9\xe38\xb6\xd6\xac@\xceu\x11\xa8\ +\xe46E\xc9\xac\xa9\x02!Q\x14\x05\xcf\xf3>x\x81\ +\x8c\x1f?\x9e\x81\x81\x81\x03\x8d\x8e\xa28\xc9d\x92T\ +*\x85\xady\x94\xac\x18\x8e\x90\xdc\xf5\xc6\xd7\xf9\xc6\x19\ +7#\xc3&\x96[\xe0\xfa\xeb\xafg\xd9\xb2e|\xfe\ +\xf3\x9fG\xd7u\x22\x91\x08;v\xec\xa0\xb2\xb2\x92\xf6\ +\xf6v_\xa0\xb6\x8d\xed\xda\x18\x9aJjH\xe5\x07\x17\ +>\xcd`z\x80\xfb6]\xcf\xe2y\x7f\xc3\xf3]\xf7\ +\x8e\xb9\xc5\xbcC e\xe1Z\x96\x85\x22\x04\x8a\xa2`\ +\xd96_=\xfcgdD\x17\x9a\xe1\x91\x1cuX\x91\ +\xf89I|{ \xa5\xc4\x93\x1e\xdd\xdb\x06H\xec\xb4\ +\xc9\xc6K8\xd5\xfb<\xc2\xa8P\x025&\x84\x00\x01\ +%\xd3\xe4\x82\xe6\xef1\xaa\xb7s\xcd\x82{xe\xf3\ +\xcbd\x22\x1d\xb4\xb3\x0b\xdb\xb6\x90H4M\xc3\xb6m\ +TU}\xcf\xce\xc9{\x12\xc8\xc0\xc0\x00mmm\xff\ +\xbb\xba\xba\xfah?\x00\x13\x8c&F\xe7\xab\xaa\x8a\xa2\ +(\xe8R\xc1\xc9Hr\x03.v\x9f\xe0\xeb\xff\xf2\xcf\ +\xa4wIJ\xa3\x82\xaf|\xe5+|\xfb\xdb\xdf\xe6W\ +\xbf\xfa\x15\xdb\xb7oGJI\x22\x91 \x16\x8b\xd1\xd9\ +\xd9I}}\xbd\x1f\x19K\x1b\x01\x1c\x1e^\xcc\x9a\xc1\ +\xa7\xd9\xd35\xca9\xe3\xff\x0f\x0b\x0f;\x965C\xcf\ +\xb2\xd3,\xbd\xab@\xca'\xc4q\x1c\x14\x04J\xa5\xa0\ +sg\x96#\xcf\x9b\xcde\xbf\xbd\x9c\xfb\xfev\x1d\xc3\ +u#x\x03#<\xe4\xfc\x0e\xd3\x1c\xfb\x7f\xcdc\xe5\ +wS\xa8\xba@\x11\x0a\xc5b\x91b\xb1\x08@\x95\x1b\ +\xc2uU\xff\xd4)\x0aBHF\x86J\x9c\xfd\xe9O\ +r\xe5\xd37p\xe6\xd4\x8b\x99\xde0\x8f\x94n\xb0\xc1\ +\xdd\x8ei\xfa\x0e\x85\x94\xfe\xebC1\xea\xe3\xc6\x8d\xfb\ +\xc2\xb4i\xd3\x8e\x07p\xa5\xc7\xfa=o\xa0\x0a\x95\x89\ +\x13'b\xdb6\xe9g-R\xd2CJ\x81\x94a4\ +@\xd3-\xfa\xfa\xfa\xb8\xf4\xd2K\xdfu\xce\x5c.G\ +,\x16\xf3]g\xe1 \x84B\xa5Q\x83\xe5\x16q=\ +\x97\xba\x86\x10]\xa9\xadd\xac\x04\x96\xa5\xa1h\xe2\x1d\ +\x02Q\x14%8%\x02\x81\xa2\xa8\xb8.h\xaa\x8a\x10\ +\xfe\xc28\x8e\xc3\xea\x9e\xdf\xe3\xb9.\x96\xe5\x05\xae\xf2\ +\x9c\xf9\xb3\xe9\xe8\xe8 \x16\x8b\x05\xaa\x13\xc0\xf1\x94}\ +\xa7NQ\xc0\xd8\x87~\x0aEA\x08A\xb6\x94e\xc3\ +\xc8\x92`.\xc4\xbe\xe0\xf0`\x91\x86\xbfH \x9e\xe7\ +\x09\xd34\x91R\xf2\x96\xd9K\xed\x14\x97\xe3\x9a\x8e\xe7\ +\x9cs\xce\xe6\xe4\x93O\xe6\xa7?\xfd)[\xb7ne\ +\xfe\xfc\xf9\xac\x5c\xb9\x92\x993g\xb2f\xcd\x1a\xe2\xf1\ +8\xe1p\x98|>\x1f\xec\x9c\x8cRb\xfc\x1c\x85\xfa\ +\xc4T\x8a\xd9\x9c\xef\x18(\x0e\x8a\xa22\x9c\xeba~\ +t.\x03\xc2d\xb4\xd0\xcf\x84\xc8D\x84\x14X\xa6\x85\ +p\xdfyB\xf6\x07\x0f\x05\x02\x0145E\xc8e\x1c\ +\xa4\xeb\xab&\x17\x9b\xb0R\x85\xebf0M\xb7\x0c\x8b\ +\x80\x84I\x93&\xa1i\x1a\xae\xeb\x06\xf3*\x1b$9\ +'\x03X\xbe\xca\x0aC}}\x84\xcd;w -\x1d\ +EQH\x17\xe3\x1cV}4;\xdc\x17\xb0,_e\ +\x95m\xc7\x87\x22\x10)\xe5>\xfd\xeb\xf9\xae\xa4\x10\x82\ +\x9a\x9a\x1a\x22\x91H\xe0\x7f\x87B!\x8e:\xea(\xf6\ +\xee\xdd\xcb\xd1G\x1f\xcd\xbau\xeb0\x0c\x83\x9a\x9a\x1a\ +\xd2\xe94B\x08R\x86\xc7\xb4OE\x08\xaf\x9e\xc6\x96\ +\xd5\xeb|\xf0Q\xf7PD\x98Ac9\x13\xf5\x8bh\ +\x9a?\x9d{\xd6\xff\x1b\xe7\x86\xfe\x91\xaap-%\xab\ +\x0f\xe5]\x04\x22\x84\x1f/\x94J%\x941,c\xc2\ +\xc4j~\xf2\xca\xb7\xb8\xeb\xc2e\xdc\xf4\xda\xc5H3\ +BcM3\xb6\xd3E\xa9d\xf9\xaa\xc5\x15\x8c?]\ +b\x0eU\xe1fu\x9c\xa4\x06\xb6\x82P\xfd\x135\xe2\ +$\x82\x13\xe2T\xbaTU\x86\xb9s\xdd\xff\xe6\xa7\x9f\ +[\xca\x7fm\xb8\x86\x1d\x99\x0eZ\xf4Vl\xd7\x22\x9f\ +/\x80\xf0\x05\xa2(\xca\x87vB(\x9f\x10Ox(\ +B\xa1\xbd\xbd\x9d\xd1\xd18\xc3\xc3\xc3\x14\x0a\x05\x00:\ +::\x02]\xea\xban\xb0kJ\xa5\x12\x86a\xf8I\ +(\xdd\xa3\xc20\xd84\xf4:\x89D\x8eb\xb1\x88\x19\ +\x92\x14\xad\x18F4\xc2\xb5\xbf\xbb\x98\xbb\xbf\xf2[2\ +\xde \x8fu\xfc\x88R\xcactd\x14\xcdP\xcaj\ +\xca\xdb_ \xc5b\x91T*\x85@P0%%\xcb\ +\xa4\xcb{\x85_/\xbf\x87\x86\xda\x09\xac\x8b/\xc5K\ +\x08\xba7&\xc9\xa7}\xf7V\xc3\xa0uA\x05\xfd\xf1\ +\xbd\xfeB\x86$\x89Wc\x14;\xa2A\x90X,\x16\ +\xfd\xf9\xab<,\xd7\x82\xaa8_\xfb\xed\xe79r\xc6\ +\x0cR\xb9a\x92\xf18;\x96$\xc9\xe7\xfd9\x85\x10\ +\x18\x86\xf1\xe1\xa0\xbd\xe5\x88\x18@\xea\x12\x90\xd4\x8f\x1b\ +G<\x1eGQ\x14*++\xffd\x10\xd9\xdf\xdfO\ +2\x99DQ\x14r\xc2\xa1dW\x10\xad\xcf\x93VU\ +TUEC\x82\x10\x08EPiH.\xfa\xe6\xa7\x19\ +\xed\xb0I\xed. \x14\x81Q\xa1\x07\xf3\x19\x86q\xf1\ +\x84\x09\x13\xf6\xf4\xf7\xf7\xdf*\x84@\x1d\x9bC\x11\x0a\ +F\xc1E\xba\x92d\x07<\xbc\xfd\x1e\x867[\x98i\ +\x171\x16/h\x9a\xe6g\x03=\x97\xd3&\xfc#b\ +\xa2CzX\xf0J\xf26Fl_\xf5\xb9\xae\x8b\xa2\ +(h\x9a\x86\xa2(D\xd3.\xe9^\x87\xfe\x0d&\x89\ +\x1d\x9bx~\xef\xfa\xfd\x5c[\x81\xae\xebH)\x83\xa0\ +\xf0P\x9c\x10\xf5\xcf\xbd\xa1\xa1\xa1\xe1RUU'\xba\ +\xaeKV\xb5\x98\xff\xe9(g\x1c\xfd\x0f\x94fl\xe2\ +\xb2\xcf\x5c\x87\xd1\xa20\xfe8A2\xba\x87\xee5\x19\ +\xf2\x85<\x85B\x81\x81\x81\x01+\x9b\xcdZ\xb6m\xab\ +\x8e\xe3\x08)%\xc5\x88\xc7\xec\x8fW\x92\xed\xb5)\xec\ +\xd1\x88D\x22\x18B\xa3\xd8\x01]/\x9a\x0c\xac\xb4\xc9\ +tJ\x9c\xac\x8f\xbe\xaa\xaaZN\xc5\x22\x84`\xe2\xc4\ +\x89$\x12\x89d8\x1cV3\x99\xcc\xceX,v|\ +\xb1XT\x9a\x9b\x9b\x09%%{_\xb2\x19\xdd\xecR\ +\xe8\x07\x5c\x05MS\xc7\xbc%\x7f>!\x04\x9a0\xc8\ +\x1f\xdd\xce\xff:\xf6{D\x8d*\x06\x0a\xbb\xd9\xbd\xb9\ +\x97\x5c\x9f\x87\xe38\x14\x0a\x05\xc6\x8f\x1f\xcfUW]\ +E\xbao\x84\xe4F\x0dg(D\xc8\xad R\x11\xa1\ +\xa2\xa2\x02EQ\x08\x87\xc3\x01\xa0h\x18\x06\xf1x\xfc\ +QUU\x1f+\x14\x0a\xde\x07.\x10`\xa2\xe7y\xe4\ +\x0d\x879\xa7V\x93t\x07\xb9\xee\x9c;\x18\x12o\xb1\ +1\xf5\x02\x0b\xe7\x9c\xca\x9e\xc4V\x06\xd6\xfa\xd8\x96\xa2\ +(L\x9f2S\x9du\xf8l=\x91J\x88R\xa9D\ +\xa9T\xa2\xca2\xc8t\xb9\xf4\xaf\xcb3g\xd6[d\xea\xe2j\xce\x9eq1\xd9B\x8e\xe7:\xef\ +\x22\xb1\xdd\x09\x04R,\x16y\xf9\xe5\x97\x91Rr\xd2\ +\xc9'\x91/\xe4\x995{\x16UUU\xcc\x9b7\x0f\ +\x80s\xce9\x87\xe9\xd3\xa7\x07s\x16\x8bE\xb6m\xdb\ +6\xe7/\x15\xc6A\x81\x8b\x8e\xe30::\xca\xe8\xe8\ +(\xe9L\x86\xa2U\xa4\x10\xd9\xc5\xf7\x9f\xfa.\x9a\xae\ +\x90U\xbay\xea\xad\xbb\xe9\xebH\x92L&H$\x12\ +\xa4S\x19\xd4\xd3v#>\xbe\x1d\x19)q\xc2\x09'\ +\xb0~\xfdz>v\xcc\xd1\xc4\xec\xf1Th\xd5L\x99\ +2\x85d2Iss3\xe3\xc7\x8f\xa7\xb6\xb6\x96\xa9\ +S\xa72}\xfat\x14Ea\xf2\xe4\xc9h\x9aF8\ +\x1c\xa6\xb1\xb11\xd8\x8d\xea\xcc8B\x11TTT\xe0\ +y\x1e\x8d\x8d\x8d\xc4\xe3q&M\x9a\x84\xeb\xbaL\x98\ +0\x81\x86\x86\x06f\xce\x9c\x19\xc04uuu\x9c~\ +\xfa\xe9\x14\x0a\x05TE\xa1R\xaf\xc5vM,\xcf\xa4\ +\xdah\x08\xbc\xb5\xb2\xda\xea\xea\xea\xc2u]\x86\x87\x87\ +\xf1<\x8f\xda\xdaZ\xf2\xf9<\x9a\xa6\x91L&\xe9\xeb\ +\xeb\xc3q\x1c\x9a\x9b\x9b)\x95J\xc1I\xfePh@\ +3g\xce\x5cc\x9a\xe6q\x8a\xa2\x90\xaat\xf8\xd47\ +\x1b1\x0cAj\xb7\xc3\xf0\x16\x93\xf8[\x16\xf9a\xf7\ +\x00lGU5\xce\xb9\xe2T\xf4y{x\xf1;{\ +\xf8\xc9\x0d?#\x9dNs\xef\xbd\xf7RSSCg\ +g'\xae\xebr\xec\xb1\xc7\x92L&\xe9\xef\xef\x0f\x9c\ +\x01\xcf\xf3\xde\xf1*\xbb\xa6\x95\x95\x95\x0cezPL\ +\x83\x193f2<\x14\xa3^\x1e\xcd\ +\xcd\xcd\x18\x89$\x1bo.\xe2\x94\xe4\x18kD\x22\xd1\ +0\x0c5\xb88\xcf\xf3P\x04|\xe6\xd8\xbf'\xde\xb4\ +\x89WBw\xf2\xfd\xef\x7f\x9fo~\xf3\x9bd2\x19\ +\x22\x91\x08\xb6mSUUE{{\xbb\x7f\xf3\x08<\ +W\xe2I\x17!\x14\xdf\xb0*\x1a\x9e\x94(B\x09\x22\ +u\xcb\xb2h\xaanedd\xc4\x8f\x01\xa4\xc4\xb1\x1d\ +\x96\xbd\xf2\x1a\xaet\xd0\x14\x1dO\xfaq\x8d\x82\x8a\x16\ +\xd2\x82m'<\x81\xebJ\x9c\xa2\xc7\xcf\x97\xdfIc\ +\xb4\x85\xcd\x85\xe5\x14m\x95=o\xc4)&\xfd 3\ +\x1c6\xd0\x09St\xf2DB\x11,\xdb\xf6m\x11:\ +\x8a.\x0f\xd8\xc2A|\x95\xc9|x9u\xdb\xb6\xb9\ +\xfa\xea\xabY\xb4h\x11\x8e\xe3\xf0\xe8\xa3\x8f\x92\xc9d\ +\x82\xa0\xafP(0}\xfat\xde|\xf3M\x12\x89\x04\ +\xf5\xf5\xf5l\xdd\xba\x15M\xd5X\xd3\xf3\x1c!\xcd \ +\x97\xcb\xf1\xf5\xaf\x7f\x9dB\xa1@MM\x0d\xd1h\x94\ +\xad[\xb7\xd2\xd8\xd8\xe8\xab\x0b\xc5e\xce\xe7\x22\x1c;\ +\xeeB\xccp\x1f\xa9\xbe0\xeb{^\xe5\xf4cNf\ +\xdd\x8eW\xd9\xf3\x8c\x83\xa2ACC\x03\xc5b1\xf0\ +\xfc\x5c\xc7\xa1\xdb\xebg\xde\x19\x95\x5cq\xc2\xcd\xfcb\ +\xe3\xb78\xa5\xf12V\xedz\x95|\xc56\xb6<\x90\ +!\x9f- \x10\xe4\xc6y,8;\x86\x18\xf6x\xfc\ +\xf9\x9f\x92\xeev1G \xdb\xe7`\xe7\xf7yJ\x9e\ +\xa5p\xfa\x1d-\xfc\xe8\xec\xdf\xf3\x99\xff\xfc$\xff\xf2\ +\xe9\x7fG\x91!6$\x7f\xc7\x0b\xff\xf5\x06\xa5>=\ +\x10\xcaK/\xbd\xd4\x0c\x0c\x1fJ\xb6\xccA\xb9\xbd\x93\ +'O\xa6X,2s\xe6L\x14Ea\xda\xb4iT\ +VVRUU\xc5SO=\x15\x18\xe2L&\xc3\xc6\ +\x8d\x1b\x09\x85B\x08\x04\xba\x88Pt\xf2\xec\xdd5\xe2\ +\xbb\x91\xd1h\x80\x13\x95\xed\x83m\xdbH\xcdc\xe2\x91\ +\xd5\xbc5\xf8*?\xb8\xe0\x01L%\xc5\x7f<\xbb\x86\ +\xc5'\x9fM\x9f\xdaN\xef\xf3i\xd4\x90O\xa6+\xc3\ +\xe5\x96e\x11\x0eG0\xea\x1cZ\xe6\xd7p\xc6\x19g\ +\xb0T\xf9!\xc7\xb7\x9e\xc8P\xa4\x8b\xe1\xe8^\xba\xaa\ +<\x0c=LCC\x03\xc3\x83Ct=\x06B\x11\xc4\ +U\x90c\xe6Sx\x1aFX\x04*S\x95\x1a\x8a]\ +\x85\xc4%K/M5\xcd<\xbf\xfaUv*\x1b\xf1\ +\xc6\xd4\x1e\xc2\xf7\xfc\xaa\xaa\xaa\xc8f\xb3\x87\x94\xba\xf4\ +g\x05\x12\x89D\xb8\xe9\xa6\x9b8\xf7\xdcs\xf9\xde\xf7\ +\xbeG\xa9T\x0atrY?\xf7\xf6\xf6\x1e`\x03\x14\ +\xa1\xb0\xec\xad\xa5\xcc=\xfeD\xd6\xb6u\xe3\x0c\x86\x89\ +F\xa3\xa4\xd3\xe9\x03\xd2\xb5\x89D\xc2\x0f\xc6B\x12\xcb\ +\x0dS\xd1X\xe2{\x7f\xb8\x86\x1b?\xf3\x13\x8cJ\x87\ +_n\xfc\x0f\xe2\x03&\xa9t\x12E\x13\xd8\xb6\x1d\xc4\ +\x13e\xbe\x95\x94\xe0x&\xb9b\x0e+k\xa0\x1a\x16\ +\xaa\xaaS\x1fj\xa3dn\xe0\xb6\x1f\xdfA}}=\ +\xabV\xadb\xe3\xc6\x8d\x84\xc3azzzhll\ +\xa4\xab\xab\x8b\xd9\xb3gcY\x16\x1b6l\xa0\xa2\xa2\ +\x82\xbe\xae\x01\x14\x0dTU\xc7q\x05\xaet\x89\xe8a\ +\xa4\xe7\xe1\xd8\x0e\xa6\xe5\x93\x1b\xca\xc1\xee\x87N\x03r\ +]W\xaf\xac\xacd\xe9\xd2\xa5\xc1\x05\x94\x8d^90\ +\x13\x12\xf6O);\xb6\xc7\xda\xc4#t\xf7EH\x0d\ +eI\xa7\x0bTUUQWW\x17\x08\xa4\x1cPy\ +\x9e\x87\x82D\x0b\x0b\x8a\x09\x97\xc1\x9d[9\xeb\xcb'\ +\x91\xeb\xf5\xb0\xf3\x12+\xe3\xa2\x85\xf6\xc5#\xe5\xcdP\ +*\x95\x90\x9e\xc4q<\x22Q\x95k\x9f\xfd,7\x9e\ +\xf90\xbf\xd8r\x1d\x83\xfaN\x1a\xf4\x06\xa4\x84q\xe3\ +\xc6\x91\xcdfimme\xdd\xbau\xcc\x9f?\x1f\xcf\ +\xf3\x98={6CCC\xe4\xf3y\xda\xda\xda\x985\ +k\x16\x0f<\xf0\x00BQp4?\xfa\xff\xdb\xa3\xff\ +\x89\xbc\xecG\xa2r\xc6\x94\x7f`\xabs'\xd6\x98@\ +\x0eU\x86\xf0={YUUU\x0b<\xcf\xaby\x9b\ +gQ\xdb\xda\xda\xfaP.\x97CHp\xa7\x08\x8e;\ +\xb7\x9a\xfc\x90K~\xd8\xa50\xe4\x11\xa9\xd2)\xa5=\ +\x92\xbbl<\xe92y\xf2dt]'\x97\xcba\xdb\ +6\xc3\xc3\xc3\x84B!\xe6\xcd\x9bG_o\x1f\x96m\ +\xe3\x99r\x8c\x08\xed;\x0c\xae\xeb\x1e\xa0:\xa3\xd1(\ +\xa5R\x89|>\xef_\xbc\x04s\x9a\xe0o\xbe\xd1\x84\ +\xebBK\xf8(\xc67\xd7\xb2z\xd7K\xe4\xfa]\xba\ +\x1e\x0c\xd12\xb1\x95c\x8f=\x96\x17^x!\x88\xa6\ +-\xcb\xc20|\xdbV\xcee\xf8\xfc\x00\x81]\xf08\ +\xed\xceJ\xf2C\x06?\xff\xfcRnZ\xf1e\xba\xd2\ +o\x22\xf1\xd8\xfc\xd3\x12\xc9N\x07\x90\xd4\xd6\xd6\xb2s\ +\xe7\xce\xe6d29\xf4\xa1\x0a\xe4\xdd\x86\xae\xebM\xf3\ +\xe7\xcf\x1fL\xa5R\xd4\xd4\xd4\x90\xcbfq,?_\ +\x82\x02\x8a\xcf\xb29\x00\xdbjiia``\x00\xcf\ +\xf3\x13@\xa6ir\xdf}\xf7\xd1\xd2\xd2\x82\xa2(<\ +\xf9\xe4\x93\xec\xde\xbd\x1b\xd7u\x03ol\xc2\x84\x09t\ +vv\x92L&\xd14\x8dt:M\x22\x91\xc04\xcd\ +@uy\x8d\x82\x93\xff\xb1\x96\xf8\x0e\x9bT\xa7\xcd\xe8\ +6\x0b3\xe5\xa1h\x82\xc6\xf1\xf5A*\xf9\xcfy\xaf\ +\xe5\xb5\xc8\xa5\x0a\x1c\xf5\x8d\x10NIR\xa1\xd6\xa1\xaa\ +\x1eY3I\xba\xc7a\xfb\x139<\xc77\x19\xd5\xd5\ +\xd5\xe4\xf3\xf93\xc3\xe1\xf0h*\x952{zz\xb6\ +\xfeU\xb9\xbdB\x08\x1e}\xf4Q\xa4\x94\xac\x5c\xb9\x92\ +\xdd\xbbw\xd3\xdb\xdb\xebg\x01\xc7^\xaa\xaab\x18\x06\ +\x9d\x9d\x9dD\x22\x11t]?\x80\xa11}\xfat^\ +\x7f\xfdu>\xfb\xd9\xcf\xd2\xda\xdaJ$\x12\xa1\xbf\xbf\ +\x9f\x193f\xd0\xde\xde\x8ea\x18444\x90\xcdf\ +I\xa5R\xe8\xba\xee\xa3\xbb\x8a\x82a\x18|\xf1\x8b_\ +\xe4\xe5\x97_\xa6\xe7\xa1\xb19]\x97q1\x0f\xb7\xd2\ +\xb7e\xfb{d\xb1X\x8c\xed\xdb\xb7\x9fR*\x95\xf6\ +\xbc\xedV\x8e>\xfc\xf0\xc3\x9f\xc8\xe5r\x14\x0a\x05\x16\ +-Z\x84\xb2\xbc\x92\x10P\xf0l\xb4:\x0b-5\x91\ +\x06\x04\x0d'\xbec\x19^PU\x95\x8e\x8e\x8e\x1d=\ +==3\xffj'D\xd3\xb4\xa6\xa3\x8f>z\xf0\x96\ +[n\xa1\xa9\xa9\x09\xc30\xb8\xe1\x86\x1bhhh@\ +UU\x16,X\xc0]w\xddEUU\x15MMM\ +\x84\xc3a^x\xe1\x85 \xc3\xd7\xd0\xd0\xc0\xde\xbd{\ +\x99>}:G\x1ey$\x83\x83\x83$\x93\xc9 \xe1\ +4V\x12\x80\xae\xeb\x14\x8bE\x1c\xc7!\x12\x89\x04d\ +\x02EQx\xf3\xcd7\xd9\xbcy3\x00\x1b6l@\ +\xd34V\xae\x5c\xc9\xe4\xc9\x93\xc9f\xb3L\x992\x85\ +b\xb1\xc8\xfa\xf5\xeb\x91R244\xc4[o\xbd5\ +}tttW\xf9>\x1a\x1b\x1b\xaf-\x14\x0a\xc7\xd4\ +\xd6\xd6^X\xbe\xf6l6\x1bD\xde\x83\xc5a*#\ +>\xac.\xed1\xe6\xbe#\x984i\x12U\xd5U>\ +\x89[\x08\x1c\xc7\xb1\x84\x10]c\xea\x5c\xdb\xb4i\xd3\ +}\xf1x\xfc;\x1f\xea\x09Q\x14\x85G\x1f}\x94\xe3\ +\x8f?\x9eg\x9f}\x96\x5c.\x17\xa8\x93\xce\xce\xce \ +g\x1e\x8f\xc7\xf1<\x8fH$B&\x93\xe1\x86\x1bn\ +`\xca\x94)\x5c|\xf1\xc5\x98\xa6\xc9\xca\x95+\x03\x1b\ +Q\x86G\xca\xc6\xb2\x9c\xdb\xd6u\x1d\xdb\xb6\x09\x87\xc3\ +A\x00\xbaq\xe3F\x9a\x9a\x9a\xd8\xb1c\x07\xa3\xa3\xa3\ +\x81\x0b]YY\xc9\xc6\x8d\x1b\x19\x1a\x1a\xa2\xa1\xa1\x01\ +]\xd7\xe9\xed\xedEUU\xa4\x94\xe2m\xc1\xee%\x0b\ +\x17.\x9cf\xdb\xb6D\x22\x8a\xd5i\xaab\x1a^*\ +\x84\x9b\xd6\x11R\x01\x05\x84\x90\x01\xc8d\x95,z\xd8\ +L\xf3\x94Z\xdc\x8c\x8e\x9b\xd2\xf0\xb2ZHh\xcc\x00\ +\x08\x87\xc3l\xd8\xb0\xa1\xf1\xc3\x88\xd4\xeb\x92\xc9\xa4>\ +V\x5c\xd3\xe0\xba.k\xd6\xaca\xf5\xea\xd5\xef\xf06\ +\xca\xbc\xdf\xb2j\xdb?\xc5YUUE\xa9T\xe2\x17\ +\xbf\xf8\x05\xf7\xde{/\xb6mSSSCcc#\ +/\xbc\xf0\x02\xad\xad\xad\xe4\xf3y\xb2\xd9,\x9e\xe7\x91\ +N\xa7\xc9f\xb3\xc4b1R\xc9\x14U\x95\xd5\x14K\ +\x05.\xbb\xec2b\xb1\x98\x8fO\x8d\xedh!\x04o\ +\xbd\xf5V\x90\xde\xdd\x1f\xde\x187n\xdc\xbb\xb2\xe3\x13\ +\x89\x04\xb6m\x8b\xbd\xf6\x10\xb3?i\x22\xa3\x0a\x1e\x0e\ +\xaa\xa6\xe0\xa5t\xac\x01\x03\xbb/L\xa9\xd3?\xa1\xd2\ +\x85\xdaya\xea\x16\x94(\xbaq\x14\x05\x9c\x9c\xca\xf0\ +C\x8d\xef\xb8\xe7\x0fT \x8a\xa2\xac\xb9\xf0\xc2\x0b\xa7\ +\xbd\x17\xcad(\x14\xe2\xc5\x17_|\xc24\xcd'\x01\ +\xea\xeb\xebo\xbd\xe9\xa6\x9b\x9a\xce:\xeb,V\xadZ\ +\x15\xa8\xa7r\x1c\xa3(\x0a\xbd\xbd\xbd\x07\xe0P\xd1h\ +\x94\xfa\xfaz\xc65\xd7\xc3\xbc!\xaa#!^\xb9m\ +7\xb1X,`\x9d\x1f\xcc\xd8?\x95\xfcv:\xaam\ +\xdbX\xd2FAA\xcfM\xe4\xe6\xf3\xee\xe1\x85\xdd\xbf\ +\xe6\xf9\xd1\xc7\x99<\xbf\x9e\xbe\xd8 \xd9\xedZpj\ +?1\xe1\x5c\xae8\xf5j\xbe\xf0\xd3\xd3\xf8\xa7\xf3\xaf\ +\xe4\xd1U\xf7\x049\xa3\xbf\x94\xe8p\xd0\x02\xf1<\xaf\ +\xaaL\xb1\x1cu3L\xbc M\xa4B\x01K\xc1\xb3\ +\x15\xdc\x94\x865`\xe0\x0c\x19\xb8\x19\x1d!\xfc\xaa\xa8\ +P(\xd4>00\xf0\xeb1(\xff?\xea\xeb\xeb\x1b\ +W\xae\x5c)\xf6\x8fct]\xff\x93\xe0]>\x97g\ +C~\x07g\xcc\xaa@\xd5-\x16\xdeX\x81\xa6\x14\xd0\ +U\x1d\xd7\x968q\x83\xd4\xd2\xda\xe0\x7f^{\xed\xb5\ +\xaf\xe6\xf3\xf9G\xde\xb6\xa1\xdc\xa6\xa6\xa6\xfc\xdb\xe77\ +M\x13\xc7v\xf0T?\x99\xf5\x99\xe9\xd7\xf0_\xab\xff\ +\x9d/\xcc\xfaWf-\xfc\x04z\xb4\xc4\xcd\xbb\xaf\xde\ +G\x06\xf7\x04\xaft?\x88\xf6l\x8cO\xcd\xfe2m\ +\xb1#p\x5c\xc7'~\x8f\x09\xe4C9!ep\xcf\ +\xb1\x1d\xb2J\x9e\xcajA6gr\xce\x11\x7f\xcf\xa8\ +\xd9\xcd\x9bC\xab\xa9\x9a\xe6Q\x18\xcd0\xf4p=B\ +\x0bj>\x82\xab\x8b\xc7\xe3\x09\xdb\xb6\xa7\x9a\xa6\x19@\ +1\xe5,[RI\xd18Q\xc7M\xebxY\x1di\ +\xa9d\x0b)\x8c\xb0\xc1\xb8\xbaq@\x06E\x15\xcc3\ +\xbe\xc0\xe2\xc5gc\x91\xe3{O\xfd;\xf3gOf\ +\xab\xb35\x98g,\xbf]\xf4^\x7f\x19\xcd\xb1:\x1a\x12G\xb1n\ +h;\x9f=\xf9B\x1e\x1f\xf4\xc9m\x8a\xa4\x1c\x91\xef\ +\x8f\xf5d\xc3\xe10\xae\xeb\xa2i\x1a\x13'N\xc4u\ +]\xd2N\x81Y\x17\xb9\x18a\x05\x17\x1b\xa18xy\ +\x85\xedw\xd7`\x88\x0a?J\xf0 \x95*r\xfe\xf1\ +\x17q\xdb\xda\xcb\xf8\xfc\xf4\xff\xe0\xdf\x17\xdf\x81\xad\x8f\ +\xd2\xbe\xf5\xaa`\xc1\xfeH\x04\xad\xb4\xb4\xb4\x8c\x94\x13\ +U\x00\x9e\xea\xa2i*\x9e)\x10R\xd0 \x1a\xc8=\ +\x067{\xd7\xa3+\x06?\xf5nCA\xc5\x99\xbb\x9b\ +I\xb3\x9a\xf6\x95\xbc\xa1\xd0\x1ai\xe5\xb0\xe6\xc3X\xdf\ +\xbb\x97\x1a\xa3\x11\x89\xc4\xb2\xec\x03(\xb4\x1f\x8a@\xca\ +\xc7\xdb\x15\x0e\x0aa\x16\xcd]\xc4\xca\xa1\x87\x19\xe9\xaa\ +\xc0p\xea\xb1\xbd\x12H\xe1\x03\x88\x1e\xe5\x9c\xf3\xa9\xe3\ +\xc7\x8f\x1f\x1c\x18\x18\xb8\xa7|\xc1\xe5\x8b.\xd3\xf8m\ +\xd7&\xa4k$\x06]~p\xc1\xe3tf\xd6\xf1\xe0\ +\xc6\xffDz\xc2'\x19H\xc0\x00\xab$\x89F*\xf0\ +\x84C\xb6\x90g\xdd\xce\x0dT\xb4\xf4\xa3)\xa1}\x05\ +B\xefN\xe94***\x88D\x22H\xcf\xa3G\x0e\ +3\xff\x22k\x1f\xe1n4\x843\x10\xa1\xd4m\x10N\ +T\x8f\x91\x8a\xc2\x84\x8d0\xf3\xa7\x9f\xc4&\xf7\x09,\ +k\xdf\xbe:\xa5\xedR&O\x8f\xf0\xfc\xf0*Vt\ +\xd9P\xe6h\x8d\xdd\xdf_rB\x0e\xda\x02\x95\x0d\xa0\ +eYx\xae\x07c\xa5\xcc\x08Q\xa6\x92Qrrc\ +\xef3\x83r\x85\xc3\x0f?\xfc\x14\xc30\xbeZ\x9e#\ +\x16\x8bq\xd7]w1~\xfc\xf8}u&\xb6\x83\x10\ +\x82\xaf\x1c\xf3m\xd6\x0c=\xce\xcem\x19f\xa9\x9f\xa5\ +\xd2\xa8\x0e\xe6AB\xac\xc6`$5J\xb5^\xcf\xf8\ +\xbaF\x5c\xcf\xc6vl\x84T\x02\xc2\xdb\x1f\xa3rJ\ +)\xc7j>l\xf2\x22\x0f\x12\x0a)\x95\x0bf\xff/\ +\xaa\x9bC\x18\xb3\xd3\x8c;7Nx~\x22\x98\xcbq\ +\x5c\x96t\xdd\x87c{$\x93I\x92\xc9$\xa5\x82\xc9\ +\xa3\x9b\xee\xc2\x949B\x95\x92\xce\xe2Z\x86w\xe7\x82\ +\xbf\x8fQ\x9e\x9c\x0f\xd5\x86\xb8\xae\x8b\x82\xc2\x8b\xed\x7f\ +\xe0\xe4\x8f\x9dLJ\xea\xbc\xd6\xf54G6~\x8d\x97\ +\xc5sXV\x1eE\xfa\xe8\xec\x98W\xe6\x95w\xefu\ +\xd7]G<\x1e\xa7\xa5\xa5\x85B\xa1\xe0\x9f\x10a\xa3\ +H\x95\xc3\x9a\xa6\xf2\xda\xe0JF\x0b%v\x0du \ +\xf0\x17Z \x90H*+\x22<\xb2\xe5\x87|y\xc1\ +w\xe8\xcc\xad\xe6\xcd\xfc\xf3\x9c\x119\x1b[\xeec\x1f\ +\xfe1\xb7\xb3\x1c\xb1KW\xe2\x85|\xa4\xe0\xc63\x1f\ +\xe6\xa9\xad?\xe7\xba\x85\x0f\xb0d\xe3\x12\xcc\xea\x9d,\ +Y\xff*\xa6\xe9s\x03\x8c\x90M\xffj\x8b=#\xa9\ +\xa0 \xc7qm\x92\x9b,n\xf8\xfa\xad(\xd2 \xdf\ +\xefa\xe7u&\x8e\xaf\x06!Q5\x85\x9a\x9a\x9a\xcf\ +\xcf\x9d;\xf7\xf8\xfd?\x7fpp\x90\xee\xee\xee\x8f\xe7\ +r9\xeb\x90\x09\xa4P(\xe0\xd86f\xc4\xc3\xc3e\ +\xb3\xf50\x87\xf5M\xa5\xaeQ\xa1m\x96\xca\x7f\xae\xba\ +\x04\xcb\x09\x91\xcb\xe5Qt\x7fa\xca\xc1\x5c\xd9\x03Y\ +\xb9r%\x9f\xf9\xccg\x02@\xcf\xf3\x81\xafL\xea\xeb\xe8\xe8P\x0e\xe9\x09\xc9\xe7\xf3\ +~N\xa0Bb\xbb\x16\x9a\xaa\xf2x\xe7w9\xa2t\ +\x0c\x96ma\xa5\x15\xb6\xfd>I\xc9\xb6\x10\xce\x81\xf6\ +\xa2<\x96/_\xce\xf3\xcf?\xcf\xe0\xe0 ---\ +~\xb5\x92\xea\xa7n\xef[v\x0f\xffr\xc1\xb5\x94\x1a\ +\xc4\xe7O\xfe<\x8d\x93\xa0\xc7\ +I\xe18\x0e\x93&M\xc2H$X{c\x1e\xb74\ +\x06\xce\x0a\x90h\x84\xc2\xfb\xf2\xf9\x7f\x8a\x81^\x16\x88\ +t%\xd2\xf3\x91\xe9T!\xce\xec\xdaS\x982q\x02\ +/\xae\xf78\xbe\xf9S\xbc\xe1\xfe80\xe0\xe1p\x98\ +hE\x94\xa6\xba\x094\xd6J\xde\xdc\xbe\x85\xb6\xb6\xb6\ +}\xf9\x1c\x1fW\xc1sB|\xef\x93O\xf2\xd2\x96\x17\ +p\xaa\xf7\x92\xd8\x1ba\x93\xfd\x80_\x16gyA\xeb\ +\x90\x83!\xd3\xbd'\x81\xb4\xb5\xb5q\xe1\x85\x17\xb2~\ +\xfdz\x06z\x06\xf1\xac\x0cn\xc8A\xea\x12+b\x05\ +\x09'\xcf\xf3\xc8\xe5r\xc1\xcf\x803\x06\xa9\x9c[\x86\ +Ub\xb1\xd8\x8b\xae\xeb~\xd2\xcf:z(\x86\xbfk\ +\xdbG~G\xc7\xfd\xaf0\xd8S\xc0*H\xee\xbc\xf3\ +N&O\x9e\xcc\xf0\xf00K\x96,\xc14M\x5c\xd7\ +\xa5P(\x90\xc9d\x980a\x02{\xf6\xecadd\ +\x84\xe6\xe6f\xba\xbb\xbb\xffh*:\x9f\xcf#]\x0f\ +\xcb\xf6\x09\x15\xdf}\xf5b\xae?\xf5\x11\x1e\xdat\x0b\ +;\xb4e\xf4wV\xe2\xd8.\xb9\x5c\xa1\x9cf\xa0\xc7\ +\x1b\xa1\xf9\xb2Q\x22\xba\x8e\xbcg\x14\xe14\x04 \xa8\ +\x8a\x82\x22\x04!k\x1c\xb1h\x8c\x1f\xbdt\x1d\xf7^\ +\xfc\x07\xeaO\xaa#\xd7\xbe\x85\x1ek\x17\x96\xa9|p\ +\x02\xf9\xf5\xaf\x7f\xcd\xab\xaf\xbe\xca-\xb7\xdc\xc2\xb2e\ +\xcb\xd8\xb8q#B\x08\xba\xbb\xbb\x994i\x12\x93'\ +Of\xf5\xea\xd5tttp\xec\xb1\xc7\xb2q\xe3F\ +\x8a\xc5\x22\xaa\xaa.8\xf1\xc4\x13e@\x92\xf6<4\ +]\x05GH\x84\xdf\x94\xa7\xfd[\x1e\x12P\x14\x1d\xa1\ +\xda\xa8z-\x8e\x19\x0f\xa2\xf8\xa9S\xa7\xf2\xc8#_\ +\x1c\x22(\x00\x00\x19\xedIDAT\x8fPWWG\ +ss3\x8d\x8d\x8d\xdc\x7f\xff\xfd\x14\x0a\x05\xc2\xe10\ +\xb1X\xac\x5c8\x8a\xe7ym\xb5\xb5\xb5\x1f\xdb\x8f\xa8\ +\x11v]7\xb0!\xb6\x09\x8e\xb4Q+m~\xb0\xfa\ ++\xb4\xd5\xcc\xa0\x94\xb6\xc9\x0f'\xe8|-E\xb1\xe8\ +\xab\x97H8\x8c]mQS\x15\xc6\xce\x87i\xac\x99\ +\x88=`\xe3I\x1f\x8dv\xa5@\x11\x02\xe9)8\x9e\ +\x0d\x02\x14\xdde\xf7\xc0.\xba\xd3\xdbpl\xb0m\x11\ +l\x88r\xa5\xd5!\x13\xc8\x13O<\xc1i\xa7\x9d\xc6\ +\x9e={\x18\x1a\x1a\xc2\xb6}\xa3\xabi\x1a[\xb7n\ +\xc5\xb2,\x92\xc9d@\xb0\x03\x02\xe2\xf2\xc4\x89\x13}\ +o\xa3\x94\xa2n\xf10\x13&\x86q\xb2\xaa\xb0\xfb\x22\ +8\x03a\xac\xbe\x08e\x07\xba\xcc\xc1*l\xc9s\xe3\ +\x8d7r\xc6\x19g\xf0\xfa\xeb\xaf\xe3y\x1e\xbbv\xed\ +\xc2\xb6mt]g\xc2\x84\x09\x14\x0a\x05t]\x0f\xc0\ +\xc3\xe6\xe6ff\xce\x9c\xf9\x1d\xe0;\xfb\x93\xfd\xb6l\ +\xd9\x82\xa6iHE\xa2\xc7a\xef\xcbEF\xb6\x9a\xa4\ +\xbaF\x11l; #Q\xb6{\xaa\xea\x17u\x96\x8a\ +.\xb7\x9c\xf9;\xfe\xfe\xa9\xf3(9.\x12\x9fl!\ +<@\x0a\xf4\x88CH5h\x8cN\x22Y\x1cB\x11\ +Q\xf0\x14l\xc7\x0a\xd4_\x99\x94}Hm\xc8=\xf7\ +\xdc\xc3C\x0f=D.\x97{\x87~\x06\xd8\xb9sg\ +\xf0\xbb5k\xd6P]]\x1d\xfc\xbd\x8c\xf5\x8c\x94R\ +\x1c9\xa5\x82b\xc9f\xf6\xe4\xe3\xd8S\xb3\x09gv\ +\x16\xcf\x93\x98{*\x18}1\x86Pe\x90\xcc\x8aF\ +\xa3A>_\x08\xe1\x97\xd2\xd96\x93'O\xc6\xb6m\ +\x14\x04;\xd4=\x1cs\xa1\x86\x90\x0a\xd2\x12x%\x15\ +'\x1e\xc2\xea7p\x86\x0d\x9c\xb1\xce7\xc7\x1cs\x0c\ +\x97^z)\xf7\xfd\xea>\xe4(Hu\x90\xba)^\ +`\x13L\xd3$\x1a\x8d2\x86\x00\xa3i*\x02\xbf\xe6\ +\xb1\xae\xaa\x96\x82\x95\xc3q\xfcf9\xa5R\x09E\x0a\ +B\x02l-\xc1\x8f\xff\xf0\x7f\xf9\xe5\xa5Op\xd3\xeb\ +\x17ax1\xaa#1L\xb3\x97R\xc9\x0b\xec\xe9\xc1\ +\x00\x8f\xef\x05\x5c\xdce\x9a\xa6aYV\xcd>\x86\xe2\ +\x810\xc5\xdbK\xce\xb2\xd9\xec\x01\xb9\x0d\xff\xf7\x1e\x9e\ +'9.t9-\x0d\x1agL\xba\x84_\xbc\xfe\x9f\ +\xcc\x98\xda\xcc\xaa=\xab\xb0-\x1b\xa1\xf95)u\x8d\ +1B^\xa5\xaf\xd3\x14I\xae\x90e\xfc\xf8\xf1D\xa3\ +Q\xb2\xd9l\xd0m!WY@\xd3\xab\x89)\x93X\ +8\xf7\x14^\xda\xfd0\xce8\x171/A\xfc\xd5(\ +\xf9-~\xb1\xcd\x1dw\xdc\xc1\x8a\x15+\xf8\xc1\x7f\xfe\ +\x80_\xfd\xeaW\xcc\x91G\xd0\xdd\xdd\xcd\xacY\xb3x\ +\xe1\x85\x17\x984i\x12\x96e\xa1i\x1a\xa1P\x88T\ +25Vk(\xf6\xabIq\xb0l\xcb/\x83p\xa1\ +\xb2\x14\xc2\xf6t:\xcc'Y\xdds\x18U\x15U\x0c\ +\xe6w\x93\x1ft\x89\xf7%\xb1\x0b\xfbR\xbe\x07C9\ +=h\x81\x8c\x8c\x8c\x9cT,\x16\x7fr\xce9\xe7\x5c\ +}\xdbm\xb7\x91\xcdfy\xf8\xe1\x87\xd9\xb5k\x17\x8a\ +\xa2\x90L&\x89D\x22(\x8a\xc2\xe8\xe8h\x90\xf5K\ +\xa5R\x94J\xa5\x00Zp\xa5G\xa9\xe8q\xf1y\x7f\ +\xcfM+\xfe\x1e\xadf\x02S\xab\x8eavC++\ +\xe5*L\xcbD\xb8>0\xd9tA\x96\xaa\x89\x05\xec\ +\x11\x03w0\x02\x1d\x02g\xd8\x0b\xa8H\xb6m\xe3J\ +\xdf\x08I\x04\xdf<\xe5^~\xf4\xf2\xbf\xf2\xefg<\ +\xc4\xea\x8do\xb2\xc9\xf95Cv\x1f\xb6\xed/\xe6\xd3\ +O?\xcd\x82\x05\x0bhoog\xe7\xce\x9d\xc1\x02%\ +\x12\x09J\xa5\x12\x89D\x22H;\x17\x0a\x05\xca\x0dl\ +\x5ci2\x9a\x1e\xa5\xda\xa8#\xed$\x02\xc6\x0d\x02\x94\ +\xbc\xa00\xe2\x91\x1bv\xb9\xf5\xd9\x1bI\xecpIu\ +: \xfd\xba\xf7\xb2\x0c\x0e\xb6\xa0\xe7=\xa9,!\x84\ +\xbep\xe1B\xd6\xad[\xc79\xe7\x9c\xc3\xe1\x87\x1fN\ +>\x9f\xc7\xf3\x155\x1d\xf7\x88\x86+\ +X\xd6\xf9\x04\xd7j7\xd3PW\x83\xd5o\xe18.\ +\xa6\xe9C3w\xdey'w\xdcq\xc7\x1f\xbd\xbf\xd1\ +\xd1\xd1\x03~\x8eU\x8f\xe5\x5c\xa2:\xff\xe7\xf7\x9f\xa5\ +64\x89\xed\xc5^\xa2\xd1(\x86a\xd0\xd4\xd4Dj\ +s\x8a-\x9b\xdd1\xb7\xdb\xefhT\x15\xf3\x0e\xa0\xd6\ +\x96\x0b\x98\x0e\xb9@\xa4\x94\xfc\xf6\xb7\xbf\xa5\x9c`\xea\ +\xe8\xe8\x08 \x8b\xb2\x8d\x10BP(\x14p]7\x10\ +VY?\x03\xb8a\x8fHX\xe7\xe5\x0d\xcb\x09QM\ +m\xb4\x9e\x81L\x17gU\x7f\x9c\xadr\x07\xa6UB\ +\xf1| \xb3:},\xe7\x1f\xfdE^Z\xbd\x8eq\ +\xd2\xe3\xf4\xd9\xa7\xf0}\xebv\xc2\xaa\xb1\x8f\x947V\ +a\xa8(\x82\x03m\xa6\xc0\xf6\x8ac'\xc9%\x95J\ +\xf9\xe9\x80\xb1`PJ\xe9\x7f\xaf\xf9|\xa2\xb0\x16\xa5\ +`gQ\x84\x8ak\xfa\x0b\x97N\xa5pZ\x1cL\xa7\ +\x84\x16\xf5\xd88\xb4\x02\xd7\x11466r\xf7\xddw\ +\xe3y\x1e\xabW\xaff\xd5\xaaU\xb4\xb6\xb6\xb2f\xcd\ +\x1a\x8e<\xf2H6m\xf27W]]\x1d\xf9|\x9e\ +\xde\xde\xde\x83\xe6\xff\xbeW\xacX\xd54\x8dg\x9ey\ +F\x0a!\x84\x22\x94\x80=\xe8J\x9f\xaf\xa4)!?\ +?\xae\x86p\x1c\x87\x8a\x8a\x0a\xa4\x94A\xe9\xb1\xa5\xd8\ +h\xba\xe0\xc1\xed\xff\xce-g?\xce\xda\xe1'\x085\ +\xf7\xd3\x93\xdf\x82\xedY\x14\xf2\x05\x14\xdd\x8f\x01\x8e\x9b\ +\xbe\x80\xee\xd4v\xde\xec_\xc7\xc2\x19\xa7\x11V\x8c\xb1\ +\xb23\x11\xb4\xf8P\xa4@\x22\xa8\xad\x0f\x91\xceg8\ +\xf7\x88\x7f Q\x1c \x97+1\xb5\xf6(\xda\x9d?\ +\xe0\xba\xd2\xf7\xf2\x5cA\xa9&\xc1\xb4\xd8\x5cJ\xa5\x12\ +\x03n\x8a\x19_4\x99V\xb1\x90\x8b\xcf\xf8\x125j\ ++7=~\x0d\xcf^\xbf\x0e\x0f_\xe0\x91\xa2\xce\xc0\ +\x1b&\x99^\x87\xd4\x9e\x02\xbaZ]\xce\xed0w\xee\ +\x5c\xaa\xaa\xaa\xc8\xe5rttt\xa0\xeb:\xb1X\x0c\ +)%\xc9d\x12\xd34ikkc\xdb\xb6m\x1f\x8c\ +\xcaR\x14\xe5\xd17\xdexc\xda\xacY\xb3N+\x14\ +\x0aX\xd2E\x9f\x9e\xa7\xae\xaa\x96\xb3\xe7~\x8e\x92i\ +\xb1t\xfb\x13\x9c9\xfb\x1c\x96\xee\xfe-\xe9\xf5a\x0a\ +\x85\x02B\x88`\x87\xe4\x85\x87\xedZ\x84\xaa<\xfe\xed\ +\xf7\x17\xb1x\xfe\xd9d\xf3)\xd6\xc7W\xb2\xf3\xe5,\ +\xd9\x82\x19\xec\xf4\x92i\xe2X*\xae\xe3\x91+\xa5\xf0\ +\x1c\x1f\xcd\x95xh\x9a\xe6\xcf-\xfd\xb8\x06\xe1q\xcd\ +\xd3\xe7\xf3\xc3\xf3\x9e\xe2\xc6\xd7/$S\x8a\xa3\xe9\x1a\ +V\xc9\x22\x97\xdb\x97+\x99\x14\x9dF>\x9f\xf7S\xb7\ +\xd8\xd8\xa6\xcb\xac\xc6E<\xd9\xfe3\x0eS?\xc11\ +\x0d\x8byF\xae\xa6\xbe\xa1\x9e\xe3\x8f?\x9e\xad[\xb6\ +\x12\xff\x83\x83\xe5\x98\xb8\x99\x0c\xd1j\x9dd2\xc9\xd7\ +\xbe\xf65Z[[\xe9\xec\xec\xdcW.'%;v\ +\xec\x08\x16?\x95J\x05,\x99?\x06\xe9\xfcE\x02\xc9\ +d2/UUU\x9d\xdc\xda\xdazZ2\x99\xa4\x88\ +E\xf5\xc9:\xc74\x9e\xc9\xdcc\x9aY\xb7\xb1\x93\xef\ +\x7f\xe6n\x8e\x9by\x0cC\xcf,cGO\x08\xe1\xaa\ +\xa4R\xa9\xc0\x80FJ.\xd9!\x87\xc1\x8d\x16\xa3\xdb\ +\xf6\xb0\xfa\x96\xbb\x83^UM\xa2\x99\xa6\xb9\xfb>\xef\ +\xf7\x0f?\x05c\xcdZ\xfbx\x09\x80\x09\x13\xc7S,\ +\x16\xc9f\xb3\xe4\xf3y\x84\x148\xa6\xf0\x85\x5cmq\ +\xe3k\x7fG$\x5cAA\xd5Hv\xdat\xaeL!\ +\x9d\x80\xe0\xc7\xb8\xeaq\xf4\xf7\xf7\xfb\xecy\xd5\x19\xab\ +\xf8\xf2\xf12\xd7\xf3H\x17\x13\xa8\xaa\xc6\xaaU\xabx\ +\xf1\xc5\x17\xf9\xd2\x97\xbe\xc4\xb2e\xcb\xa8\xa8\xa8\xe0\xfe\ +\xfb\xef\xa7\xad\xad\x8d\xae\xae\xae\xc0=\xae\xa9\xa99\xa8\ +\xb5\x8b\xc7\xe3\x1f\x0c\x0dHU\xd5i\xe5\xf6L\xb6\xf0\ +o\xa8R\x8fa\xbaEL\xa7\xc4P\xa6\x97\xbel,\ +\x80\xebq\xf6\xf9\xde\xd7^{-K\x96,\xa1\xe7\xbe\ +\x04\xaek\x13\x05\xf4J+(\x1c\xddY\xe8\xe7\x88\xcf\ +8T\x845\xa4\xa9b't\xdc\x11\x03\xab?\x8c\x97\ +\xd5\x10\x9a\x0c\x82\xc6l6\xeb\xefL\xd7#\xdc-\xd8\ +\xf6\xbb\x1c\xe9\xbd\x0eN!\x81]\x908E\x89\x94\xa0\ +\xa8jP\xb8g\x84\x22l\xeaZE\xb5l\xf6\xf3\x1d\ +\x86\x87\xae\x18\xec\x18\xdd\xc8\xf1G\x9f\xc0x\xedp6\ +\xed^\x13p\xbd\xda\xda\xda\xe8\xee\xee\xf6\x05?\x86\xd8\ +\x0e\x0c\x0cp\xc3\x0d70::\xca\x93O>\x19T\ +(\xe7r\xb9\xe0$\x94I\xe5\xb5\xb5\xb5\xe5b\xa4\xd1\ +\xe1\xe1\xe1\x85\x8d\x8d\x8dfoo\xef\xa1\x15\x88\x94\xf2\ +\xb0\x80\x9d\xa8\xb8\xa8Bc\xb48@St.5\x15\ +i\xb2V\x1a]\x0d\xa3\xa0`[&\xd2\x118\x8e\xc3\ +3\xcf<\xc3\xe8\xe8('\x9f|2\xbf\xff\xfd\xef\x03\ +,j\xd9\xb2e\x81\xc1\xef-\xc5Y4~\x1c\x85\xac\ +\xc7q\xd3?\xce\xa6\xc1e83rT\xa9\x92\xec\xe6\ +\x0a2\xafW\xfb\x86X\xf1\x8bz\x16/^\xcc\xec\xd9\ +\xb3yi\xc9Kx\x19\x09\x8cB\x05X\x9a\x85\x88\xf9\ +\x0b\xa8\xeb:\x99L\x06\xc7q\xd0t\x85d\xb7\x83^\ +_\xf4\x93U8x\x9e\xc1@\xe8U\xc2\xc5\xd3\xc9\xd7\ +\xf6\xb0\xdbz\x19]5\xb8\xe8\xa2\x8b\x98={v\xd0\ +\xe5\xc7\xf3<\x86\x86\x86\x98:u*\xdf\xf8\xc67\x10\ +B\x10\x0a\x85\xde5\x07S.2\xcdd2\xd4\xd4\xd4\ +P(\x14\x9c\xd1\xd1\xd1\xed\x1f\x14QN\x09\x1a\x98\xa9\ +~n\xb5P\xb9\x8d\xb6\xca\xeb8b\xf1\x09\x5c\xf3\xe4\ +\x05\xb4Ml\x06\x01\x96e\xe2\x8da9o\xbe\xf9&\ +\x8d\x8d\x8dd2\x99r\xd3d\x86\x87\x87\x0f\xf0\xc0\x84\ +\x10\x94l\x93\x0bZne\xc4\xdb\xc0?/\xb8\x9b\x97\ +\xda\x97\x90\x8el\xa5\xdd\xde\x15\xf4\x16)\x0b\xe4\xf2\xcb\ +/'\x97\xcbq\xdai\xa7q\xfb\xed\xb7s\xc2\x89\x0b\ +\xe8\xee\xee\xe6\xc8#\x8f\xe4\xd1G\x1fe\xf2\xe4\xc9~\ +{\xc1T\x8aT*\xc5\xe0\xe0 \x95\x95Q2\x99\x0c\ +\xa6iR\xf0\xfc2\x08O\x95\xfc\xf4\x8d\x7f\xe2\xaaS\ +\xbf\x8d\xed\x940M\x18\xd7TK___\xa0j5\ +M\xc30\x0czzz\x10\x9a@\xd5\xfcf\x0193\ +C\xa5Q\xedWiEM\xec0\xe6\xa2\x10\x82D\x22\xe1\xe7\x054I\xc9\x8aa\ +\xabp\xe5o\xcf\xe6\xd1\xaflD\x8bX\xdc\xb7\xe9\xdb\ +x.\xc4\x87\x92APt\xeb\xad\xb7\xbe#\xdf\xbd?\ +\x1b\xdd\x87F`x\xa0\xc4\xd9\xe7\x9e\xc6\x95\xcf\x5c\xcf\ +\xe2\x19\x173\xa9v\x06\x03\xa4\x91\xde\xce\xa0\xb7H\xb9\ +\x8e\xbc\xbb\xbb\x9b\x13O<\x91\xdf\xfc\xe67\x01\x15\xb5\ +\xdcL@J\x19\xb4\xf7\xd0u\xdd\x8f\xac\xc7>\xafl\ +\x84+\x8a\x1e\xa5\xb8G\xcf\xae\x12\xf1\xad\x16\xff\xf0\xdd\ +\xaf\xfb\xf9{\x05FFF\x0ep\xf7\xcb\xc5\xa4\x0a\x82\ +\xf8\x94\x0c\xc7\x9eY\xc5\xaf\xfev%g\xde9\x85g\ +\xaeX\xc1\xe6\xce\x0e\x9e\xea\xbd\x91\xad\x8f\x8f2\xba\xc9\ +7\xde\x86a\xb0}\xfbv\x1a\x1b\x1b?8\x81\x94\x17\ +XQ\x144O\xa2\xea\x02\xd7\xf1`Tr\xca\xa5\x87\ +\x93\xeb\xf2\xb0\xf2\x123\xe3\x05\x1c\xa5b\xb1(\xcb\xb5\ +\xeao\x17\xae\x10b\xdf\x0e2|\x17z\xff\xbf\xdb\x8e\ +\xcd\xae\xec\xc61\xd6\xbc\x15\xb0\x91\x15E\xe1[\xdf\xfa\ +\x16\xd1h4 \xc1\x95\xe7\xdf\xbcys\x80\x18\xec\xff\ +\x99\xe5\xfa\x12\xc30\xb8\xfa\xea\xabY\xbe|9\x83/\ +\x0e\xe2z\x1e!\xc7\xa6\xa9Q\xeek\xed7\xa6\xa6\xca\ +\xbd|\xcb\xc1\xad\x22\x05R\x08j\xeat\xe2\x99\x11\xae\ +8\xe9F\xfa\xb3\xbb\x18I\xa48~\xe2\xd9\xbca\xff\ +\x9c2\x85\xablS\xde\x0b\xe9\xe1}\x09D\x08\xc1\xb4\ +i\xd3H\xa5R\x0c\xdck\xd2c\x9a\x08E\xe2\xe7m\ +\xfd\xc0$\xa4J\xa4\x22\xcb\xa4i100\xb0ld\ +d\xe4\x94\xb7\xcf5g\xce\x9c\xb8i\x9a\xe3\x84\x10`\ +@MM\x98=}}x\x8e\x82\xa6\xe8d\xcd$M\ +\x916v\xbaqL\xd3\x0e\xba\xef\xd8\xb6M4\x1a\x0d\ +\xd2\xb6\xfb{re\xb8\xfb\x80\x93\xe8\x82e\xfa\xc4\xed\ +\xab\xae\xba\x0a!\x04\x0f>\xf8 \xdf\xfe\xf6\xb7\xe9\xea\ +\xeab\xe6\xcc\x99\x8c\x8c\x8c`\xdb6MMM\xbc\xf2\ +\xca+\x84B!\xc6\x8f\x1f\xcf\xbau\xeb\xb0m\xdb\xc7\ +\xe6<\xb0,p\xa5\xcd\xb5/\x9e\xc7\xff=\xf5)\xee\ +\xdd\xfc\xcf\xf4\xa4\xdeBK\xa8\x94\x0a&\x99\x8cy\xc0\ +&x/l\xc6\xf7c\xd49\xf2\xc8#\xb9\xec\xb2\xcb\ +8\xe2\x88#\xb8\xf9\xe6\x9b\xe9\xec\xec\xa4\xa6\xa6\x86\x91\ +\x91\x11t\xddo.988\x88\xae\xebh\x9a\xc6\xe0\ +\xe0 \xe9t\xda\xfbc\x89\xa3R\xa9\xe4\xef\xc8*\xc9\ +\xb8q\x95\xfch\xd9\xbfp\xd7\xdf-\xe3\x97o\x5c\xcf\ +\x9b\xa9-\x1c1i\x0e\xae7\xc6\x0e\x1c\xb3!S\xa7\ +N\x0b\xe2\x15UUY\xb1b\x05\xcd\xcd\xcd\xef\xea\xeb\ +\xab!\x08\xcdM\xd2\xb7\xb2H!\xe9\xb0k\xd7.\xae\ +\xbc\xf2J\xf6\xee\xddK\xb1X\xa4\xb1\xb1\x91\xca\xcaJ\ +t]g\xd9\xb2e\xd4\xd5\xd5\xd1\xda\xdaJOOO\ +PN],\x16\x83\xb8\xc7I\x0b\x92\xfd~1\xe9\xbf\ +>y>\x15F\x98l\xce%\xddc\xd2\xb9\x22\x8b\xaa\ +\xa8\x07l\x9a\xb1\xcd\x11\x06\x984i\x92\xdd\xdd\xdd\xed\ +\x1e\xb2r\x84\xda\xda\xda5MMM\xc7\x1d,\xa7\xb6\ +<\x5c\xd7\xa5\xbf\xbf\x7f\xc6\xc8\xc8\xc8\xce\xfd\x7f?}\ +\xfa\xf4x\xa9T\x1a\xa7(\x0a\xc3\x13\x5c\xfe\xf1[\x13\ +\xb1,\x97\x9a\xc2\xb1\x1c5g\x0aKw\xff\x06M\xd3\ +X\xf5\x83\x04\xa9._\x17TVT\xb1\xe8\x96*\x86\ +\xeeoD:\xbeZX\xbbv-\xd1h\x94p8\x1c\ +0\xef\xcbi]\xc7\xb51\xa2!\xdc\x92\x0c\x9a\x0b\xec\ +\xcfR\xf9S\x19\xd2\xe6\xe6\xe6\xfd\xaazd\x90\xb3\xf9\ +c\x9b\xb5\xa7\xa7\x87m\xdb\xb6!\x84\xa0\xb2\xb22(\ +\x8e-o\xbe\xb5k\xd7~)\x99L>pHO\x88\ +a\x18\xcc\x981\x03\x80~3\xc1\xe4\xb3\xf3D\xc2\x1a\ +\xc24\xb0\x87B8\xc3a\x9c\xe1\x03\x1bYF\x22\x11\ +\xee\xbd\xf7\xde\xf4\xbbMY&\x97\x85sP\xcax\x0c\ +m\xb1\xe8\xd8\xf3\x0a\xcf\xdf\xb9\x04\xcf\x14\xd8y\x0f\xd7\ +\xf4\x8d\xf1\xbe\xbc\xb9\xc0v\x1c\xa4\xed\xeb\xfa9s\xe6\ +\xd0\xda\xdaJ,\x16c\xdb\xb6m\x8c\x8e\x8e\xd2\xd4\xd4\ +\xc4\xd0\xd0\x10\xfd\xfd\xfdx\xa6\xaf\xbaL\xd3\x0c\xe8G\ +\x0a\x02\xc7\x94\xd8\xb2\x84B\x08\xcb-\xa1\xab\x1aH\x05\ +M\xd5(\x95\x8a\x0c\x0d\x0d!\x10\xac,m\xe5\x9c\xcb\ +b(R\xe0\x9a\x80\xa5\xfb\xd76`P\xda]\x81\x97\ +\xf5\xaf\xadP(P[[\x1bT\x1bG\x8c\x8a \xce\ +\x8aF\xa3\x7f\xd6\xe3z_\x02)\xe7\xb4\x15\x04\xa3Z\ +\x9c\xf9-a2\xd94\xedwXL\xac\x99\x82\xebe\ +\x11\x8a\xc0r\x1dt] M\x0dD\x82\xb3\xce\x5c<\ +T\xb6\x01e\xa3\xd7\xd5\xd5E(\x14\xe2\xf4\xd3Og\ +\xfd\xdau\xb4\xdf\xec \x85\x0eBG\x93n\xd9\xd1\xc6\ +\x88*\x81\x8b\x5cf\xa2X\xa6\xefV\xab\xaa\xca\xc0\xc0\ +\x00\xae\xebRYYI&\x93\x09X\x1e\x8e\xe3\x10\x0e\ +\x879\xef\xbc\xf3H\xa7\xd3,_\xbe<\xc8\x08\x0eG\ +\x8b\x9c~U\x15\xc7\x1aW\xd10\xc5dQ\xeb\x17\xb8\ +\x7f\xc5O\xf9\xf8\x91\x0b\xb9\xf3\xb9o\xd3\xff\x98\x87\xa5\ +\xfa\x0d\xd2\x0aX\x18\xbaB#Gr\xfaQ\xe7\xf0\xe4\ +\xb6\xbbP\x9dJr-\xbd\x8c\xe4%\xa5\xd1H\xe01\ +\x1es\xcc1l\xdf\xbe\x9d|\xa6\x8017IiW\ +\x04\xa1\xec\xf3\x0e\x0f\xa9@\xaa\xab\xab\x03\x86\xa0\x82\x00\ +Mb;.\x7f3\xf1&\x12\x8dw\x05\xbb \xe5f\ +\x19wA\x9cq\x0d:N\x1e\xec\xa1\x0a\xdc\x11\x03{\ +\xd0@\x16U\xdc\xbc\x8a\xa6i\x94J%~\xf3\x9b\xdf\ +\x00p\xc6\x19g\xb0|\xf9r\x1c\xc7!\x1e\x8fSS\ +SCOO\x0f\x8b\x16-bdd\x845k\xd6\x10\ +\x8dF\xd9\xbb\xa7\x1b\x81\xc0\xb2l<\x9b :\x0e\x87\ +\xc3\xa4R\xa9\xe0Z\xfb\xfa\xfa\x08\x87\xc3X\x96E\x22\ +\x91`\xca\x94)\x81k,\x84\xc0\x0d\xbb\xa8\x8a\xc6&\ +\xef~.\x09\xdd\xceS\xbb\x7f\xc4No);\xdfx\ +\x0eO*~\x1a\xda\x94~OGC08\x94\xe3;\ +\x17\xdc\xca\xff~\xf6\x0c\xee\xfe\xfc\x12\xf6\xf4\xf7\xf0t\ +\xef\xad\x0c\xda]\x81\x0a\xf4<\x8fx<>\x86\xe1)\ +x\x8e\x87k\x9a\x08\x95\x03\x02\xc9\xbf\x98J\x1a\x90d\ +\x0d#\xd8\x09%\xd3\xf4\xdb|\xdb\x06\xe7\x9d\xb8\x98\xbc\ +\x99\x09\xe8\xa1#N\x9a\x8aP\x083\xab\xb0p\xca\xf9\ +\xd4N\xd1\x88\x1e\x95\xa1\xf6\xec\x11*O\x89\x07\xdd\xb1\ +\xcb^\xd0\xc8\xc8\x08\xe1p\x18EQ\x983g\x0e\x86\ +a0i\xd2$l\xdb\x0e:D\x9cx\xe2\x89\xa4\xd3\ +\xe91WR9\xa0M\xb9\xeb\xbaA\xcb\xf0r\xb3\x9c\ +x<\x1e\xd4=vtt\xf0\xec\xb3\xcf\xa2\xaaj\xd0\ +\x81\xa2P,b;\x16(6w\xb4_\xc6p\xb6\x0f\ +\x89$?\xe2\xb2\xfe\xde8\xae\xb7\xaf\xeb\xb5\xa2(\x8c\ +\x0c\x98\xc4jB(\xaaKD\xaf\xa4\xa6\xb2\x86x\xae\ +/H\x96\x95\x89\x7f]]]~sNUA\xba\xde\ +\x014\xd7?\xe7\x02\xbf/\xb7\xb7\xac:\x04~\xa0U\ +\xf6*\xf6\xb5\xff\xb6q\x15\x17E\x15|z\xd27\xc9\ +\xc8]\x5c\xbf\xe81\x1e]\xfd \xcd\x93t\x9eXq\ +_p\x93\xd1h\x94+\xaf\xbc\x92\xc9\x93'\xd3\xdf\xdf\ +\x8f\xeb\xba,]\xba\x14\xcf\xf3hoo\xc7q\x9c@\ +\x1d\x95\x03\xcb\x90f\x04\xf1\x8bk\xf9I\xa0P(D\ +]]\x1dB\x08jkk\xdfv\xc1c$\x03E\x04\ +\xa5\xd0\x9e\xe7Q\x9dQ\xe9ZR \xd7\xedbe=\ +\xd6\x14V\xe2\x14\xc1\xb3%\x8a*p\x0dw_[C\ +\x14t]\xc1\x19\xe35\x83\xff\xf4 \x04\xb8\xae\x87i\ +\xfa\xfc3\xd7q\xa8m\xae'\x99\x8f\x13\x8a\x99\x84*\ +U\xd2\xb6\xdf7\xf2`J\x15\xdeW\xa4^^x\x81\ +\xdf0\xc0\xf1lJ\xa6\x89\xa6\xe8\xfb\x0a`\x0c\x0fO\ +\x0aZ\xabg\xf0\x9b=\xbf\xa0-t\x22\xf5\x91\x16\x0c\ +%\x83\xf4\x08\x04R*\x95d(\x14\x12\x9d\x9d\x9d\xfb\ +G\xefR\x08!\x5c\xd7E\xda`{\xde\x98C\xa8\x82\ +\x02\x96cc:\x92\xd1\x91\x04r\x8ce_\xceL\xe6\ +\xf3\xf9u\x1d\x1d\x1d\x0f\xd6\xd7\xd7\xffX\xd34\xbf\x0f\ +|\x9d\xc7\xe1\x0b+\xc0\xae\xa22WEuu5\x97\ +\x5cr\x09\xcb\x97/gxp\x18\xc5\xc9\xe1\x86\x5c<\ +\xcd\xc3\x8d\xba\x01\xe4Q\xdex\xcaXC\x9c\xa9\xd3k\ +\xd8\xd1\xb5\x97\xd3\x0f\xfb;\xde\x1c^M2Qdv\ +\xc3\x09\xbc\xe5\xfc\x01\xcb\xf2\xb3\x86\x85|\x81\x07\x7f\xf9\ +0?y\xea\xfb\xfc\xcd'N\xe5g\x8f\xfd\xc4\xcf\x82\ +\xaa|0'DJ\xa9J)e\xa9T\x12\x02\x81\xe7\ +\xb9TD\x15\xfe\xf9\xe1\x8b\x91\x9e\xc0\xb6}B\xb6\xa7\ +\xb9\x08\x11\x02$\xaa\xe2\x1b\xb3\x91T\x9c\x5ce\x7f\xa0\ +n\x00\x1a\x1b\x1b\xc5\x1bo\xbc\xf1\x95b\xb1\xf8\x10\xe0\ +E\xa3\xd1\xeb\xa7M\x9b\xf6\xcdd2\x89\xa3H\xa6\x7f\ +\xa5\x92\xd6\x960vAb\x17=R\x9d6\x99n\x87\ +%\xffl\x07^\xfb\xd8\xb3\xa6D,\x16C\xd3\xb4]\ +\xf9|\xfe\xce\x96\x96\x96\x1f\x97yXn\xb5\xa0\xed\xd4\ +(ZX\xf2\xd2\xfa~~\xf6\xfd_\xb1w\xef^n\ +\xbf\xfdvn\xb8\xe1\x06t]\xa7\xbe\xbe\x9eb\xb1\xc8\ +\xee\xdd\xbbY\xb4h\x11\xeb\xd6\xadc\xfd\xfa\xf5\xe4r\ +9\xc4\x98G\xa7\xeb*\xdfy\xf5\x0b\xdc~\xc1\x0b|\ +\x7f\xcd\x97\xc8Z\x09\x14]\x90\xcf\x9ad\xb3>\xea\xeb\ +X.#r3N\xddV\x96\xedN!]I\xb1T\ +D(>\x13\xf2\x90\x0bd\xd7\xae]\x9fjii\x19\ +H\xa7\xd3~\x13\xfdq\x02\xd3\x89\xe2\xd5\xeea\xb4\x90\ +%\x22k|\x81D \xa4\x84\xe8Jw0\xbf\xfe4\ +\x8e\x9e>\x8f\xd7w\xbc\xc2\x11\xb1\xa3Y\xea=\x8fe\ +9A\x8e\x22\x12\x89\xd8\xc5b\xb14\xf6\xb3\x13\x0e\x87\ +1\x0c\x03\x03\xe8\xff\x95C\xbf\x92{\x17Z\xab\xbe?\ +\xc5Ud\xb3\xd9m\xbbv\xed\xbaA\xd7\xf57\x01\xb5\ +LD\x90B\xe2\xb9>'\xca5!j\x84y\xfa\xe9\ +\xa7\xb9\xf6\xdaky\xe9\xa5\x97(\x95JD\xa3Q\xfa\ +\xfb\xfb\x89\xc5b\x0c\x0f\x0f\xd3\xd9\xd9I8\xec'\xd7\ +J\xa5\x12\x8aP\xb0]\x0f\xc7\xb3\xa9\xab7\xb8\xfe\xb5\ +O\xfb\xea\xafO2\xb4\xb9\xc8\x9eey\x14m\x8c\x9d\ +\xe8)$\xf2C\xa0\xba\x0c\x15\xf6\xb2wm\x9a\x5c\xae\ +\x04\x82C\xefe\x8d1\xef\x06\x03\xd6\x05\x10\xb2\xa0\x98\ +\xf6\x18y\xd3\xc4\xca{\xb8^\x0e\xc7q(\x19.\xb6\ +[\xc1\x92\xa1\x9fpN\xe3\xb7xx\xeb-\xec\x16/\ +\x92\xd8\xbe\x02O\xbad\xb3\xd9 >y;\x95\xa8\xad\ +\xad\x8d\x1bo\xbc\x91\x89\x13'\xf2\xcb_\xfe\x92\xae\xae\ +.\xc6\x8f\x1f\xcf\xb6m\xdb\xa8\xaf\xf7\xbb3tuu\ +a\x18\x06\x91H\x84\xae\xae.\x84\x10\x83\x89D\xe27\ +\xe5\xb0\xa7\x5c`4a\xc2\x04\xd2\xc3i^\xbf>\xe7\ +\xc7\x22\x8a\xca\xcb/\xbf\xcc\x86\x0d\x1b\x82\x16\x1d\xe5\xe8\ +\xbe\xfc\xb5\x9c\xb3(cv\xae\xebR\xdb\xa9\xb1\xe6\xc7\ +)\xac\x8c\x87S\x928y\x89\xf4|\xb7\xa8\xdc\x8bE\ +Q\x14\x8c\x90\xc1u_\xf8!n\xc1\x8f\x9f$\xa0\xee\ +\xc7u>\xa4\xd0\xc9\xfe\xf8\x90\xae\xeb,^\xbc\x98u\ +k\xd6\xb1\xe9f\x0b\x94\x10n\xd1\xc4t\x0b8\xb6C\ +\xa9R\xe2H\x0bCSyv\xe8&N\x98r\x1a\xf9\ +d\x89\x91\xb7z\xd9\xf3r\x81b\xf1\xdd\x9f\x8a\xe6\xba\ +.3f\xcc \x1e\x8f\xf3\xc9O~\x92\x193f\x90\ +J\xa58\xee\xb8\xe3hkk\xa3\xbf\xbf\x9fP(\x14\ +\xa4F\xcbMd\xde\x8e:\x94i?\xe5\xf4\xf1\xaaU\ +\xabH\xa5R\xbc\xfa\xea\xab\x18\x86A\xb1X\x0c\xc0\xbf\ +r\x92i,n\x19P\x14\xa5\xccH\x98\xfe\xb9\xcf}\ +N9\xf5\xd4Sy\xf8\xe1\x87\xc9f\xb3\xe4\xd4\x5c`\ +C\xcb\x0d0]\xd7'Q\x94\x89\xe5\xd5J\x03N\xd8\ +\xc1R,\x22\x91\x08\x85B!\xe8lqH\xb9\xbd\xfb\ +\x0bf\xcd\x9a5l\xd8\xb0\x81O}\xeaSl\xde\xbc\ +\x99\x81\x81\x01\x96.]J>\x9f\xc7u\x5c\xa2I\x85\ +\xa1\x0d\x16\x85>\x87\xe4\xce\x04\xcfu\xdf\x87\xa2\x0b\x14\ +\x15\x14m\x7f\xba\xa6\xfa\x0eDv\xd5\xaaU,X\xb0\ +\x80\xdbn\xbb\x8d\xa5K\x97\x22\xa5\xe4\x91G\x1e!\x9f\ +\xcf\x13\x0e\x87\x83\xee\x0e\xa5R\x89\xe5\xcb\x97\xbf+\xd5\ +\xbf\x0c\xb5K)9\xec\xb0\xc3X\xb2d\x09\xba\xaes\ +\xe2\x89'\xb2p\xe1B\xee\xbd\xf7^*++\xa9\xaf\ +\xaf'\x9f\xcf\xb3g\x8f\xdfqc\xeb\xd6\xadW'\x12\ +\x89\xc7\x00f\xcc\x98Q\xb8\xe4\x92K\x22\xa3\xa3\xa3\x5c\ +~\xf9\xe5\xdc{\xef\xbd\x9c\x7f\xfe\xf9\xb4\xb7\xb73g\ +\xce\x1c\x9e{\xee9f\xce\x9cICC\x03\xc9d\x92\ +U\xabV\xd1\xdb\xdb\x1b\xb8\xe7\x1f\xfb\xd8\xc7X\xbbv\ +-\xbbw\xef\xe6\xb0\xc3\x0ec\xd7\xae]\x1f\x8c@\xca\ +^H.\x97\xa3\xa1\xa1\x01!\x04\xb3f\xcd\xe2\xd5W\ +_\xa5\xb1\xb1\x91\xeb\xaf\xbf\x9e\x07\x1f|\x90\xc4\x8e\x04\ +\x8ai\x12\x8e94\xce\xf6K\xaa\xcb\xcc\xf1r\xd3\xe2\ +w\xab\x1d\x0f\x87\xc3\xdc|\xf3\xcd\xef\xfa\xd9e\x1ak\ +\xb9\x9b6\x10`Eo\xbf\xc6+\xae\xb8\x823\xcf<\ +\x93\xe5\xcb\x97\x07\xdea\xb9\xe1\x81\x94\x92\xd1\xd1Q\xf6\ +\xec\xd9\x13\x08tl\x9e\xa0\xc2\xa8\xb2\xb2R\xbc\xfe\xfa\ +\xeb\x9c{\xee\xb9\xdcp\xc3\x0dX\x96\xc5\xe6\xcd\x9b\xe9\ +\xea\xea\xa2\xae\xae\x8e\x5c.\xc7\xde\xbd{\xe9\xec\xec\xc4\ +\xb2,\x0a\x85\x02RJ\x8e8\xe2\x08\x1e{\xec1t\ +]'\x1a\x8dRQQA\x22\x918(\xd4\xf7}U\ +'\xb6\xb5\xb5\xc9\xa6\xa6&&O\x9e\xcc\xc0\xc0@\xe0\ +1\xc5\xe3q\x1e|\xf0A\xdex\xe3\x0d\xbe\xfa\xd5\xaf\ +r\xfb\xed\xb7388H$\x12\xa1\xbe\xbe\x9e\x95+\ +W\xd2\xdc\xdc\xcc\xae]\xbb\x18\x1d\x1d\xa5\xae\xae\x8e\x81\ +\x81\x01v\xef\xde}Q\x22\x91\xb8\x7flQfVU\ +U\xcd\x14B\xbc\x97Nm\x9e\xeb\xba]\x83\x83\x83o\ +\x96m\xc8\xe1\x87\x1f^hnn>\xa0\xcb\xf6\x1f+\ +w\xdb_\x0do\xd8\xb0\xe1\xcb\xc9d\xf2>\x80\x13N\ +8\xa1X(\x14\xc2e\x0cm\x7f\xd2\xf4\xfe_\xdfN\ +\xa5\x0d\x85BA\xccT\xee\xefUn:\xbde\xcb\x96\ +/%\x12\x89\x07\x0e\xb9\xca\xcad2ttt\x04y\ +\xeb2\xd7\xf7\xe9\xa7\x9f\xe6\xea\xab\xaf\xe6\xb5\xd7^c\ +\xc7\x8e\x1d\x81](C\x0a\xa1P(\xc8\xe2\xbd\xdbC\ +\x1c\xb3\xd9\xec\xf6l6\xbb\xfd\xfd\x5cW}}}\x99\ +\xdda\x0e\x0d\x0d-\xee\xe9\xe9y\xafS\xd8555\ +\x9b\xcb\x0c\xfe\xe1\xe1\xe1\xe7\xa3\xd1\xa8Z,\x16\x8fU\ +\x14e<\x80\xabB\xdd\x14\x8d\xe1\xad\x05\xa4+)\xd9\ +%\xc2Z\x05 \xc7\xf0\xbb\x12MMM\x07\x08o\xff\ +\xb6\xebB\x08\xfd\x90\x9f\x90\xfa\xfa\xfa\xdd\xabV\xad:\ +\xac\xbd\xbd\x9d\xa3\x8f>\x9a'\x9f|\xb2\x8c\xe6\x069\ +\xecp8\xfc\x0e\xaf\xe2\xddv\xaaa\x18l\xdb\xb6-\ +8!\xff/\x8e\xf1\xe3\xc7?\x1a\x0a\x85.\x04\xc8U\ +x\x9c\xf1\xcdF\x22\x06\xe4\x87\xab\xf8\xfay\xff\xc6\xed\ ++\xaf\x81\x92\xce\xc0\x86\x22o=\x96\xf5\x1f\xb0\xe97\ +F{\xa8\xbf\xbf\xff\x8b\xfb\xa9\xc1\xd2!\xf5\xb2\xf6\xc3\ +\xb3\xe4M7\xdd\xc4-\xb7\xdc\xc2K/\xbdDoo\ +\xaf\xff(\x87t\x1a]\xd7\x83'\xcd\x1cLr?\x9b\ +\xcd\xfe\xc9\xd6\x1a\xff\x8f\x0c%p\xf3m\x81\xe7IJ\ +IArG\x9c\xcb\xbe|\x15\x99.+\xd8\xdbF$\ +\x14\xe4\xed\x85(?h\xe3\xe0\x1f6\xf9\xbes\xea\xed\ +\xed\xed,^\xbc8h>,\xa5\xa4\xba\xba\xfa\x8f\x16\ +\x5c\xc6b1v\xee\xdcyl\x7f\x7f\xffz\xfe\x9b\x8e\ +SN9\x85\xae\xae.\xf6\xdc\x99\xc3s%R\x1a\x08\ +\xa9S]\x1d\xf1\x0bx\xc6lF9<\xb0m\xfb=\ +\xb7\xbc~_\x021M\xf3e\xd7u\xb7\x95\xbd\x93\x83\ +\xe9\x10\x94J\xa5l\xcf\xf3F\xff;\x0aBJi^\ +r\xc9%\x9cr\xca)\xb4\xb4\xb4p\xc7\x1dw\x90J\ +\xa5hhh\xa0\xb7\xb7\x97\x9a\x9a\x1a\xda\xda\xdaX\xb1\ +bE\x90\xa2\xd8\xb0a\x03\xb6m\xaf\xfb\xc0\x05R]\ +]\xcd\xf0\xf0\xf0e\xc3\xc3\xc3\xfc\xffh\xc82\x0e\x15\ +\x0e\xfb}\x80\xcb}\xbd\xa6L\x99\xc2\xe6\xcd\x9b\x990\ +a\x02S\xa7N\xa5\xa7\xa7\x87\xee\xee\xee2\xb9\xc1\xfe\ +\xc0\x05r(\xdbj\xffw\x19\x9a\xa6q\xff\xfd\xf7\xf3\ +\xc2\x0b/\x90\xcdf\x83\xb8\xa5\x1cxJ)\xe9\xee\xee\ +\x0e\xbe\xf7<\xef}7\xe8\xd7\xf8h\xfc\xd9\xe18N\ +\xc80\x0c\xd2\xe9\xf4\x01\x1e\xe2\x9f\x8ai\xc6\x82\xe7\xf7\ +\xec\xad\x88\x8f\x96\xfb\xcf\x8fH$\xd2T*\x95\xaa\xde\ +\xe3\xba\xbauuu\x83\xa3\xa3\xa3\x85\x8fV\xf0\xa3\xf1\ +\xd1\xf8h|4>\x1a\x1f\x8d\x8f\xc6G\xe3\xa3\xf1\xd1\ +8`\xfc\x7f\xa7\x8cK\xc9\xd0\xc3l\x1c\x00\x00\x00\x00\ +IEND\xaeB`\x82\ +\x00\x00\x1ax\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00d\x00\x00\x00i\x08\x06\x00\x00\x00\xcc|\x86\x8a\ +\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ +\x00\x00\x09pHYs\x00\x00\x88&\x00\x00\x88&\x01\ +\xac\x91\x9d\x06\x00\x00\x00\x07tIME\x07\xd9\x03\x03\ +\x0e\x04:\x04\x0e\x03\xc5\x00\x00\x19\xf8IDATx\ +\xda\xed\x9d{tT\xf5\xbd\xe8?\xbf\xbdg\xcfd\x92\ +\x0cy\x12\xc2#\x01J(\x8fJ\x90\xa2\x16k\xc3\xa9\ +\xa0\x02\xf5\xd4.\xbd\xda.[\xee\xa5\x85z\xb4u\xf5\ +\xae\x16\xef\x83\xf6\xf6\x9cs[\xd0z{\xafK\xaf\xbd\ +\xb4\x97\xd5z=*\xb7\xd6\x1e=\xe7\xd4Z\xa1*x\ +\x05\x0fJ\x00Q\x08\xa4\x09\xaf\xc8#\x04\xf2\x9a$3\ +\x99\xcc\xec\xc7\xef\xfe1\xccf\x1e{\x87\x09L\x12p\ +\xe5;k\xafd\xf6\xfe\xfd~\xfb\xf7\xfb\xbe\xbf\xdf\xdf\ +c\x04@eee\x9d\x10b\x07c0\xea\xa0\x00\xaa\ +eY\xda\x18*\xae\x0e\xf0\x00\x85\xa6i\x16\xaa\xaa\x0a\ +\x80\x94\x12\xcb\xb2\xc603B \x84@Q\x94\x14\x82\ +\x94\x1b\x86Q\xe6\xf5z\x01\xc8\xcf\xcfg\xe5\xca\x95c\ +\x98\x1a!\xd8\xbf\x7f?{\xf7\xeeM!\xc8D\xc30\ +*\xd3\x0b\x9a\xa6\x89\xae\xebc\x18\x1bF\xc9\xf0\xf9|\ +\x08!2T\xd6\xf8\x0b\x97\x0dRJ\xfa\xfb\xfbik\ +k\x1b\xc3\xdc0A^^\x1eS\xa6LAJ\x99A\ +\x90\x80eY\x81\xf4\x0a\xc3eK\x84\x10((\x08@\ + \x88\x19&1\xcb@\xf5\x9b\xf1;1\x0f\xaa\xa5\x82\ +\x00\xa1H\x10 \x91\x9f8\x82\xa4\x13\x22\x99 ^!\ +\x84\xe6T0]\x9cr\x01A\xa3\x8f\x93\xfa9\xba\x8d\ +\x10\x032\xc6gn\xc8gvm\x01Iv\x8d\xfe\x1e\ +\x89l\xcf'v\xce\x87\xd5\xee\xc73\x90\x17'\x90\xdd\ +\xb1O6A\x14\xcb\xb2\xd4d\x22X\x96\x95S\x09\x11\ +@\x8f\x19\xa6a\xe0\x04\x1df\x0fB*L\x9d\x9e\xc7\ +\x8a\xa5e\xe4\xe5)\x98&H\x09\xe2\x824\x14\x94\x0a\ +(\xebG\xcc\x09\x83\x02\xb1\x01\x89\xec\xd30z5d\ +\x9f\x86\x19\xf2`\x854\xac\xb0\x07+\xa4\xa2\xe8\x9a-\ +M\xf1K^\x13\x04I\xe09\x9d \xc2I\x12\xdc(\ +x9\x10\xb2\x22\xfck\x7f\x03RJT\xa9R1\xc9\ +\xcb\x17\xbfT\x8a\xb4\xc00$B\x08\x12]\x10q\x1d\ +\x05R \x11`H4U\x81b\x13o\xb1\x09\x0c\x10\ +\xef\xda\x85r\xc0@Hb\x9c\xcf\xc3h\xf7\xa1\xb7\xf9\ +\xf0\x84\xf3mN\x10W\xa9D\x0d&!\xae\x94\xcb\x85\ +\x84\x18\xd2dW\xff\xa1\x0b\x12 \xf0\xe5\x09n\xbb\xab\ +\x0cie\xa9\x16\xed\xe7\xc2\xf1\x96\x04\xfcE\x02\x8a\x07\ +\x10\xb3\x07@\x01=fa\xf6z\xb0z\xbd\x18\xbd*\ +\xb2\xcf\x8b\x19V\x91!\x0fFHA\x89z\x11B\xc6\ +\xc3\xe2Q\x92\xa8\xc1$\xc4\xb5B.\xa4\xe4\xa4~\x0e\ +C\x9a(\x17\xb0X3\xb7\x00E\x11\xc8\x1c1\xae\xdd\ +\x86\x14H\x13\xa4\x09\x1e\xa1\xe0)\x92P\x14\xbd0\x96\ +\xfe\x14\x89\xd2\xa3\x92\x816\x0d\xeb\x9c\x9fH\x9b\x07O\ +w\xbe\xad\xeeFJ\xa2\xb2\x96\x90db\xe4\x82 \xed\ +FO\x8a\x14TN\xf6\x0e\xab]\x16N\xff%K\x94\ +\x94x\xfd\x02\xef\x0c\x1dQ\xa3S\xa2HL\xab\x83X\ +\x8f\x02=^b=*\xf4z1\xc2\x0a\x845b!\ +\x81\x12\xd1\x10jn%\xc9\x0d\xbf\xc3N\x90\x90\x8c\xa4\ +|/,RG= \x03\xc0\x8aK\xa94@\x11\x0a\ +y\x85\x12\x0ac\xe4M\x06I\x04d\xc2\x96\x81e@\ +\xd7\x9fK\x90]y9'HV*+\x97\x0410\ +\xe3\x86\xfa\x02\xf8|\xa3K\x10W\x02\xa5\xcbV\xc2c\ +\x93\xa0\xfa@\xd1\xc0\x90r\xe4\x09\x92K\xef\x8a\xf8x\ +l\xfb\x01\xa0\x88k,\x8c\x10I\x03\x19\x01\x18TB\ +\xc6\xb2\xbe\xc3\x97\xb9\x18\x92\x0d\xc9\xb5\xa4d\xb6%\x87\ +P\xf7\x82Z\x11\xf1zq\xc4H[\xdd\x08.\xc60\ +\xc3J\x90\x1c\x8b\xc8\x90\xbc\xac\x04'\xe4\x82#\x84\x88\ +\x1b\xcdTP\xb2\xaa\xab\xa8\xd0\xd5\xaes\xead\x1f5\ +\x15s\xb8a\xc6MT\x96N`z\xe5\xa7P\x15\xe8\ +\xeco\xe3d\xf0/\xb4\x85>\xe6xw\x03\x8aP\x1d\ +\xde\x953\x0c\xe6\x5cB\x86\x1c\x87\x0c\xb7cz)\xc9\ +x\xfbO\xdd\xf4\xb4\xc3\xab?\xfb\xbf\xcc\x9f>\x1f\x8f\ +\xeaq\xec\xa7)\x0d\xce\xf4\x1e\xe5\xd7{\xff\x96\xf3\xa1\ +\x93\xa8\x8as\xb9DF\xc0\x92V\x5c\xf2\x10Y\xe7\xeb\ +\xe40\xa8@'<+\xd9x\x01Wr]\x0e\xc4\x06\ +,^}\xb1\x0d-V\xc6G\xcf\xec`a\xcdBT\ +Eu\xf5\x92<\x8a\xc6\xd4\xe29l\xb8\xeden\xfd\ +\xd4}\x18\x96\xeeX.\xd4k\xb0\xedO\xedL\xb6\xea\ +\xb8\xbfv-K>\xf5U\xe6\x8c\xff\x5c\xd6\x0c\x92+\ +\x9c\x0c\x86\x97aw{\x11\x82\xf4f\x06k\xd7\xb2\xe0\ +\xf5\x7f\xec$\xe0/\xe5\xfd_\xbe\x89\xdf\xeb\xcf*\xc5\ +\x92\x90\x80\xfbk\xff#\xc5y\x15\xfcc\xc3\xff\xc4\xab\ +\xfa\xec\xe7\xaaG\xd0rd\x80\xe6\xc3=\xdc\xff\xf7\x7f\ +C\xcd\xc4\x99\x00\xb4t\x1f\xe6\xf0\xf9\xf7\xb3\xa0\x88\x95\ +S\xad\xe1\xa4\xae\x06UY\xb9\xf3\xf3\xe3\xaen2\xa7\ +*\x8a;r\x0f\x7f\xd0G\xa4\xdf\xe4\xe7\x0f>b\x13\ +#\x1d\xa2F\x84\xf7\xff\xb2\x1bM\xf8\xb9a\xd6\x02\xbc\ +\x1eo\x0aaV|z\x15M\x1d{i\xee\xfc\xe0\x22\ +AT\xc1\xc9c\x03TV\x94P3q\xa6M@\x04\ +)s\xdaW\xaajs\xee\xf6\xe6B\xe5\x5c\xb6\x1f#\ +\x05\x87?\x0cQ^\x12\xe0\xdf\xdev\xbfc\xa9s\xa1\ +S\xfc\xb7\x9d\xab\xe9\xe9\x0b\xb3\xf5\xe5N\xaa'T\xf1\ +\xde/\xde\xca\x08\xf4\xfe\xcdg\xfe=\x8f\xbd\xb3\xca\xfe\ +\x1e\x09[\xf4\xf5\x98\xdc\xa6e \x91tw\xe8H$\xd7\xd7\x5c\xe7\xe8\xd2\ +^\xf2\x93#|$.7/Kq2~\xb9\xe4\x06\ +\x91\xf6q\xba'\x10(B\xa1\xf9`?\x15\xe5E,\ +\xb9~\x89\xa3Q\xee\x8e\x9c\xa3\xb1\xbd\x1e\x81@ZP\ +P\xa82s\xf68\xde\xfbp?\xef7\xd6g\xd4Y\ +\xb3\xf0\xa7X\xc4\xd0T\x85sma\xf4\x98\xc1\xbcO\ +\xcd\xc9p\x9f\x84\x14\x5c\xea\x93k7+\xeb\xc00\xd9\ +\x1d\xcb\xdd\x8c\xa1\xc8 Q:t\xb4\xc5\xd0c\xb0\xe2\ +\xe6\xbfr\x8d%\xde9\xf1O\xa8\xc2\x13\xaf\x7f\xa1\x89\ +\x09\x93}\x9c<\x16\xe5\x9d\x8f\xfe\x95EsnJ\x19\ +G\xb1\x7f\xf8\x0c\x9a\xe2\xa3\xc0WHG\xf4cg\x82X\ +W\x81\x0d\x19I\xd0c\xf1\xc1\x96\x14\x16;?7\x07\ +\x5c\x93L\x9aO\x10\x899?/\xce\x1b\x8f\xc7\xa3\x90\ +\xe7\xc9\xc7225t\xc4\xe8\xe3@\xc7\x9b\xa92\xe2\ +\xb4\x0ag\xd8\xd5\xf8 ^Vn\xd7ee\x17\x80\x99\ +F\xbcc\xf9\xde\x80\xab\x84\xb8\x81\xd7\xab\x10\xeew^\ +\x87\xecU\xf3.\xa6\x0c\x84s\xf7D6\x19\xe2\xd1\xcc\ +\xf6&b\x91\x5c\xac\x5c\x8c\xe3A\xa4}w \x889\ +x\xf4\xac\x9bQW\xd2\xfa|\x0a\xbaa:>\xd3T\ +\xef\xc5\xf5s\x0e\xed\x0bW\xab\x96\x8d\xea\xcd\xb5*\x1f\ +d>d\xa4g\x0c\x0dC\x0e:\xdf\x1e\x1bTe)\ +\x18\xba\x85i\x99\x19YaM\xf1]\x94\x84+\xc8G\ +\xe5\x1a\x1f\xc9\x11\xfb\x88g{\xb3Q\xc0\x8a\x10\xf6L\ +\xe0P\xb8SB\xea\xaa\xc7a\xe2\xea8>\x86?R\ +WFB4\xb3\x01U\x15\xe8\x86;\x07\xda\xb6\xc0\x81\ +\xdez\xccBU\xe3;\x91\xd2\x07iZ\xc6\x05\x0c\x08\ +W\x09\x1b-\xc8Ze\xb9\xcdf]I.+\xcd\x8a\ +:\xbb\xaf\x03\xee\x8c\xa0\xa9>\xc7z\x08\x81\x11\x13h\ +\x9a\xc7q\x90\xba\x15\x03q1\x8b\xe6J\xd5Q\xca\xf6\ +fmC\x92\xb3\xb5#%!\x08\x88\x9a\x11|j\xe6\ +<\x88m\x0b\x5c\x5cf\xaf\xe6qq\x06b\xb9A \ +\x16\xb9DG\xd6\xd9\xde\x5cJ\x87\x9bMrJo\xfb\ +\xfcqus\xae\xfb\xbc\x8b\xca\xf29\xd6\x13\x02b1\ +I\x9e\xe6u\xce\x00\xc4\x82\x17\xd3\xfe\xd2\x0d\xd9\x97\xfe\ +\x0cG\xb6wH\x81a\xee\x88\x929C\xa88\x98\xae\ +\xfc\x02\x15EQ\xe8\xea\x09R]>\xd5Qe\x09\xe9\ +\x10\xb4I\xe2\xa9\x91|g\x1b\xd3\x1b\xed\x8e\xef\xd8\x12\ +\x02\xb7\x89A%\x8b\x94\x9e\xcc\xf1\x14\xee\x90\x92\x8b9\ +\x9d\x0f\x11\xd99\x0c\xfe\xfc\xb8\xbb\xda\xda\xd96\x88\x1d\ +\xf1f\x1am#\xfe\x8e\xc2\xbc\x80\x0bA:\x93\xe2S\ +qEJ+\xd70j\xb9\xacl\xa0p\x5c\x9c \xc7\ +[[\x5c\xcbT\x17\xcf\xe2H\xc7G))\xf8p(\ +\x1e\x10V\x8f\x9f\xe2X\xa7-\xd4\x92#\xe41\xba\xb9\ +,\xb7U\x11\x97=\x9a4\x9d\x9d\x0e%\xe5\x1aH\xc9\ +\xfe\xa3\x07\x5c\x9b\x99Q2\x9f\xa6\xf6\x0fRTL\x7f\ +\xc8\x02)\x19_R\xeaX\xe7l\xdf\x09\xdb\x068\x8e\ +'\xcbM\xa5r\x98V\x9ddm\xd4s\x16\x8b\x08\x01\ +\x8ab_\x82\xf8.\xdc\xf4Oi\xb9\x06\x8a\xc2\xa1\x13\ +\xcd\xae\x1c\xf4\xb9\xaa\xe5X\xd2L\xa9\x17\xec4@Q\ +X8k\x81\xe38N\x06\x9b\xe2\x04T\x04\xc2a\xb5\ +\x8b\xa6\xe6\xa1\xc8\xe4\x16\x9d\xfb7\x12i\x93AmH\ +2\x05Gb\xa1\x9c\xd7'\x982\xcd\xc7\xc1\xa3\xcd\x1c\ +=\xdb\x9c\xd1a)%\x13\x0a\xab\xa9,\x9c\x9a\x82\xf0\ +\xf3\xad1,\xcb\xa2\xae\xf6s\x19\x03n\x09\x1e\xe6|\ +\xe8T\xdc\xadV\x04\xb1hf\x02rBA\x15\xba\x15\ +E7tN\x9f\xee\xa37\xe8\x9c\x13\x93\x96\xcc\xe9B\ +\xb9\xac%\xc4-\x1e\xb9\xa2U'\xe9\x04r\x98\x903\ +\x0dX\xb0(\x80G\xd5\xf8\xbb\xff\xf3\xb8+G\xdd2\ +\xf5.L\xcbDQ\x05\xbdA\x83\xa3\xcd\xbd,\xbdq\ +\x11\xb5\xd3k3\xea\xbc\xd6\xf8\x1b<\x8a\x06\x12\xbc>\ +\x85H4\x13\xd9\xaa\xe2\xe1?\xd7=\xcb\xd4\xe8\xdd\xac\ +\xb9\xfeg\xac\xff\xebg\x1d\xfb7\x1c\xabN\xb2\xb6!\ +\x09$\xe6&\xdb\xeb\xb0:]8\xc7\x02\xf9\x85*S\ +\xa7\x17\xb0m\xdf{\x1cm=J\xcd\xa4\x9a\x8crw\ +\xd4\xac\xa4\xab\xff,\xbf\xdd\xf9\x02;\xdf\xe8\xe3\xcbu\ +\xb7\xf3\xcc\x7f\xf8_\x19\xe5Nt\x1f\xa2\xa9s\x9f\xbd\ +\xce\xb7\xb8\xd4CO\xb7A\xd3\xe9&fM\x99\x952\ +\xcei\xa5\xb3Y\xf7\xb5\xd9\x00\x9c\xeai\x1a$\xa0\x1f\ +\xfe\x94\x922\x98w\x95+\x09\x89\x13E\x5c\xdcV\xe0\ +p\xd9\x8b\x12n(\x04\x09?\xfb\xedS\xae\xb6\xe4\xfe\ +\xf9\xff\x89\x8d_{\x9d\xc3\xcf\xedd\xf3\x0f\x7f\x8dO\ +\xf3e8\x0co\x1c}!\xe5}Sk\xf2@\xc2?\ +\xed|mP[)P\x1c\xfb\x97Xu2\xe2\xeb\xb2\ +F\xc3\xe5M\x86\xf2J\x8d\x1bn\x19\xc7+\xdb\xff\xcc\ +\xaf\xfe\xb4)\x13a\x17\xbeW\x8f\xafbRIU\xc6\ +\x80\x04\x82W\x0e\xfd\x82\x03m\xef\xa6\xdc\x9fT\xed\xe3\ +\xc6\xc5\xe3x\xea\xa5g\xf8\xf5\x96\xe7\x1cm\xd4\xbb-\ +\x7f\xe0\xf9\x0f\x1f\xcd\xc6Q\xcc\x99\xdb\x9bU\xfa=\x97\ +\xfbC\x86\xec\x0e\x9a\x92\x9a\xb9~\x06\x06\x8a\xf9/\x9b\ +\xfe;\x05\xbe\x00\xff\xee\xb6\xfb]\x83\xbad\xc4\x1a\x96\ +\xce\x96\xe6\x7f`\xdb\xf1\xdf\xc5mG\xca\x98$3f\ +\xfb\x99>\xd3\xcf\x96\x8f\x7f\xc1\x9f6n\xe4\xf3so\ +\xa4\xbc\xa8\x9c\x96\xee\xc3\x9c\xedk\xc1\xa3x\xf0(^\ +g\xd54L3\x86#\x1e\x87\x88\xcb\xb09R\xc2\xdc\ +\xeb\xf3\x99\x5c\xed\xe3\xd1\x17\x1f\xe7\xb7o\xfc\x0b\xcf\xae\ +{\x8a\x89\xa5\x93\x5c\xeb\xedo}\x9b\xd7\x9b\x9f\xe5l\ +\xa8%\x83\x18\xc9\xed\x0a\x05\xa6T\x15\x02\x92\x93\xe1\x83\ +\x9c\x0cK\x04\xf19\xf7\xc1l\x845B\xabN\x94l\ +\xf3-#\xb9?$\x81\xc0\xe22\x0f\x7f\xfd\xb52*\ +\xae;\xc3\xc2\x87?\xcf\xb2uw\xd3\xdau\xd6\xb1\xfc\ +\xef\x0e>\xc1\xb9\xf0\xc9!\xec\xa0\x12\x17\xd6a\xa9\x17\ +\xed\xdb\x10\x82\xdb+\xc5\x99[\xc4~\xc9\x19C\xd34\ +\x87\x1c\xfe\xa7\xa4\xbf\x0d#e\xbf\xbdi\x19\x08K\xb8\ +\xe7\x8bdj\xe6\xc80\xa1\xb0\x04f\xce.f\xf7\x9e\ +\x8fxc\xef6\xbeyG\xe6\x89w\x9f\xa9X\xc4\xfb\ +\xa7^\xbfD\xe6If\x9d\xaa\x92i7#\xfd\x11\xfa\ +\xfb\x8d\xdcyS\x8a\x92\xbd\xca\xb2,\x0b]\xd7\x09\x87\ +\xc3W,\xa6Q\xdd@X\xa9\xf3\x13\xf22\xdc\xc7\x92\ +\xf1`\x18\x06\xef5\xec\xe5\x9bw\xac\x8c\xa7\xde\x93\x14\ +\xe2\x8aO\x7f\x93\xe6\x8e\x0f\xe8\x8b\x061\xa4\x8e1\xc8\ +*\x95ltk\xfa\x84V\xb4\xdf\xc00rG\x10\xc3\ +0\x18\x18\x18\xc88\xb5\xcfQ\xbec\xb1\x18\xb1X,\ +g6$\xd9\xedM\xec\xeb\x1b\xea5\xb1\xca\x87\xd7\xab\ +\xf0\xcf\x17\xdc\xd6t\x8e\x1e_0\x85\xbf\xbb\xf5\xb7\xfc\ +\xd7%\xbf\xe3\xceO\xaf\xc6\xb0bC{G\xc6*}\ +q1\x1eS\xa0\xaf-w\xc4\x18r\x1cb\x9afN\ +\xf7\x87\xe4*?y\xcb\xed\xc5\xb4w\xf5\xf1\xf7/l\ +p\xd4\xf9^O\x1e%\xf9\x15\x14\xfa\x8as\xb6\x8dY\ +Q\x05g\x0fE1BfN\xe3\x10\xb7\x88]\x19.\ +cn\x1b\xaf\x1c\x05\xb7\x96%\x99T\xed\xa3\xf6\xb3%\ +\xfc\x8f\xcd\x9bxk\xff\xf6\xac\xed\xd8\x151\x82\x80\xc3\ +/\xf6\xa2xs\x8b\x97\xcb\xf2\xb2\xae&HH\xc4\xe7\ +\x97\x141wA\x80o<\xb6\x9a\x97w\xbdD{\xef\ +yB\x03\xbd\xe8f\x94\xa8\x11!\xa2\x87\xe9\x8f\xf5r\ +\xa5\x9c\x90`\xa6\x13o\xf7\x13\x0b\x9a#6N\x8f{\ +\xfeI\xe4&w\x93c\x0e\xb6,XxK\x80y\x0b\ +\x0b\xf8}\xf3c\xfc\xf9\xf4FJ\x03%\xf8}~L\ +\xcb$fF\x08\xc7z\xd1\x14\xef\x15\xbdG\xf3+\x9c\ +\xd8\xd5\xcf\x91\x7f\x09\x0dK\x0e\xcb\x0d\xbf\x1e\xaeA\x90\ +\x16h^\x85\x12o\x1e\x10%\x18k#\x18\xbb\xccD\ +\xe0\x85UIR\x82\x11\x95\x981\x0b#\x229\xb6\xbd\ +\x9f3;\x22\xa8\x9a\x18V\x89w:\xb7wx%\xe4\ +jR{\x0a\x085n\xa8\x0dC\xd2sF\xa7\xb7\xc5\ +\xa0\xe7\xb4N\xff\x19\x13\xbd_\xa2\xf7[\xc4\xfa,\xa4\ +\x89M\x8c\xe1\xc2Cb\x0d\xf55/!\xd9\xc6\x13f\ +L\xdaW4d\x11\xd6\ +\xe9?i\xc6\xc39\x9b\xe3EJ\xf4\xa8\x5ce\xba\xc0\ +\x8d\xe9=C\xa5\xe0Pa\xdcy\x15\x8f.\xe8\xad0\ +\x11Rd\xc5\xf1B\x11H$\xbd\xe7MB\x1f'8\ +\xde$\xd6g\xd9\x1co\xf4K{\xa9\x95\x10\xe0\xf1\x89\ +\x1c\xe4\x9aG\x1f\x5c\x93\x8b\xb9[u\x02\x05\xdd\xf1\xb3\ +\xdcCe\x16\xc9{*-#\xae\xdf-]\xa2\x0fH\ +zZ\x8d8\xc7\x9f\xd4\x09\xb7\x98`\xe2\xaa\xe3\x15\x95\ +k\x1e\xb2^(\xe7fp\xae\x84(\x85\xdd*\xaa.\ +h\xffK\x8cp\x9bI\xf8\x94I\xb4\xcfB\x0fI\xf4\ +\xb0\x85\x1e\x96q[\xa3\xc49^\xf5\x88O\xa2\xcb\x91\ +\xa1\xb2\xb2\xf6\xb2r\xed\xeaI\x01\xfe\x90\xca\xa1_\x87\ +>\xb1\x1c\x9f\x0b\xc3>\xb2q\x88\x00E\x13\x8c\x81{\ +\xa4\xae\x8c\xa1\xe6\x1a0\xea9\xb7!cpen\xaf\ +\xc8r\x8b\x17\x80\xaa\xaah\x9a\x86eY\xf6to.\ +7Z^m^P.\xeb\x0d)\xb9\xe8\xa6\xe3,\xcb\ +b``\x80;\xef\xbc\x93;\xef\xbc\x93\xf1\xe3\xc7\x13\ +\x08\x04\x88\xc5b\x04\x83Av\xef\xde\xcd\xee\xdd\xbb\xd1\ +4-\xc5\x8bp\xfa\x9b\xed\xb3\xa1\x96K\xf43\x19A\ +n\xe5\xae\xf4]N\x7f\x13S\xe0\xb1X\xcc\x959\xdd\ +\xee{\xb2Ix%\xc3g?\xfbY~\xf9\xcb_R\ +\x96v&I\x22v\xb9\xf5\xd6[\xe9\xed\xed\xe5\xe9\xa7\ +\x9f\xe6\xe8\xd1\xa3\x19\x03O\xb4\x9d>[\x96>\xd8\xc1\ +\xbeg[n\xb0\xff\xdd\xbe[\x96\x95r\x88\xdb`\xfd\ +u\xeb\x97\xc7\xe3\xc1\xeb\xf5\xe2\xf7\xfb\xe9\xef\xef\xb7g\ +`\xb3\x91$\xe5R\xfa-q\x19\x86\xc1\x8f~\xf4#\ +^z\xe9%\x9b\x18\xe9\xcbE\x13\x10\x08\x04X\xb7n\ +\x1d_\xff\xfa\xd7]\x17\x06\xe4\xe7\xe7SWWG\xe2\ +\x07-\xaf\xc6 -]3\xdcz\xeb\xad\x8c\x1f?>\ ++5$\xa5DQ\x14\x0a\x0a\x0a\xc8\xcb\xcbs\x9d\xcb\ +\x1f\xb2\x97\x95\xa8\xf4\xfd\xef\x7f\x9fU\xabV\xd9\x1d\xaf\ +\xaf\xafg\xf5\xea\xd5l\xdd\xba\xd5.k\x18\x06?\xff\ +\xf9\xcfY\xb3f\x0d\x07\x0e\x1c\xe0\x8e;\xee\xe0\x9e{\ +\xeeq\x1c\xec\x8a\x15+\xf8\xcew\xbe\xc3M7\xdd4\ +\xea\x84P\x14\x85i\xd3\xa6\x0dZn\xee\xdc\xb9l\xd8\ +\xb0\x81\x87\x1ezh\xc8\xf6\xc1\xe7\xf3\xe1\xf3\xf9.\xcf\ +\xcb\xbax\x02\xb4\xb0\x7f l\xce\x9c9|\xef{\xdf\ +Ky\xd1\xb9s\xe7\xf0\xf9|L\x992\xc5\xae\xf7\xf4\ +\xd3O\xd3\xd8\xd8\xc8\xda\xb5k\x997/~2\xdc=\ +\xf7\xdc\xc3\xfe\xfd\xfbiiiI\xe9\xe4\xce\x9d;\x89\ +F\xa3\x1c;\ +(\x92\x1f~\xf8an\xb9\xe5\x16,\xcb\xc2\xe3\xf1\xb0\ +g\xcf\x1e\x1e}4uU{,\x16\xe3\xc1\x07\x1f\xe4\ +\xde{\xef\xb5U\xe8\xb2e\xcb\xa8\xaf\xaf\xe7\x87?\xfc\ +\xa1].\x12\x89\xb0q\xe3Fjjj\x88F\xa3\xfc\ +\xf8\xc7?f\xff\xfe\xfd\x19\xef\xd5u\x9d\xeb\xae\xbb\x8e\ +G\x1ey\x84\xda\xdaZ,\xcbBUU6l\xd8\xc0\ +\x1f\xff\xf8G\x9bX\xaa\xaa\xda\x8e\xc3eIHB\xc7\ +'W\x94R\xd2\xda\xdaJuu5;v\xec`\xfb\ +\xf6\xed\xdcw\xdf},^\xbc8s{\xc0\x85z\xb3\ +g\xc77\xc4tww\xb3j\xd5*\xf2\xf3\xf3\xe9\xec\ +\xect\xfd\xbd\xdd\xea\xeaj\x96,Y\xc2\xf2\xe5\xcby\ +\xf0\xc1\x07Y\xbe|9g\xce\x9c\xe1\xae\xbb\xee\xc2\xe3\ +\xf1\xb8z-k\xd7\xae\xe5\xb6\xdbnc\xe3\xc6\x8d|\ +\xe5+_a\xf3\xe6\xcd\xd4\xd5\xd5\xb1dI\xea\xd1\xb3\ +^\xaf\x97M\x9b6\xb1y\xf3f\x00\xd6\xad[\xc7\xd2\ +\xa5KY\xb7n]\x86\xa4=\xfc\xf0\xc3\xd4\xd7\xd7S\ +\x5c\x5c\xcc\xd9\xb3\xcek\x8bg\xcf\x9e\xcd\xf3\xcf?O\ +QQ\x11+V\xac\xa0\xb6\xb6\x96e\xcb\x96\xd9*.\ +\x81\x87K91\x97\xf4\xb2&L\x98\x90\xf1<\x18\x0c\ +\xd2\xd7\xd7\xc7\xc0\xc0\x00\x9b7of\xd9\xb2e\xdcu\ +\xd7]\x83\xfa\xd7%%%6\xd2JKKQU\x95\ +\x8f>\xfa\xc8\xb5\x83\x93&M\xa2\xa0\xa0\x80\xf5\xeb\xd7\ +\x13\x0e\x87\xf1z\xbd\xec\xde\xbd\x1b\x80\xb2\xb2\xb2\x0c\x82\ +\x18\x86\xc1\x82\x05\x0bX\xbcx1\x7f\xf8\xc3\x1f\xd8\xb2\ +e\x0b>\x9f\xcfV1EEE\x8e\x04\xac\xae\xae\x06\ +\xe0\xe4\xc9\x93\x83\xaa\xa2\xa9S\xa7b\x9a\xa6c9)\ +%?\xf8\xc1\x0fl\xf5\xdc\xd9\xd9Iaa!]]\ +]\x9c8q\x22\x15\xe1\x8a2t/+\xb9\xe0\xb8q\ +\xe32\x9e\x1f:t(\xbe\xd1\xb2\xae\x8eh4:\xe8\ +\x82\xec\x04$t\xb9i\x9a\xd4\xd6\xc6\xf7\x03\x1e\xd7\x17vtt\xd8\x03\xbc\xee\xba\xeb\xe8\ +\xea\xea\xc24\xcd\x0c\xc4&\x10\x0f\xa4\xa8\xb4\xd2\xd2R\ +\xc6\x8d\x1bGCC\x83c6!\xc1\x0cg\xce\x9ca\ +\xd7\xae]ttt\xd0\xd0\xd0@0\x18\xc4\xe3\xf1d\ +\x10CJ\xc9\xc4\x89\xf13\x82\xf7\xec\xd9\x93\xf1<\xb9\ +?\x8b\x16-\x02`\xf7\xee\xdd\x19\x041M\x93\x193\ +f\x00p\xe2\xc4\x89Kz\x81\xc9{\x1b/+R\xaf\ +\xaf\xafOi(\x12\x89\x10\x0e\x87\xed\xc1\xdct\xd3M\ +\x04\x02\x01\xdey\xe7\x1d\x0c\xc3p\xdc\xbb\x97 bB\ +\xff\xe7\xe7\xe7\xd3\xda\xda\xea\x8a\x80\xf9\xf3\xe7\x03\xa4\xa8\ +\x91\xc9\x93'\xdb\x08\x1fl\xa0G\x8e\x1c\xe1\xb5\xd7^\ +\xe3\xbd\xf7\xde#\x1c\x0e;r}\xfa{\xf6\xec\xd9\xe3\ +j\xcb\x0c\xc3\xb0\x1d\x9b\xa6\xa6\xa6\x8crB\x08\xa2\xd1\ +\xa8\xad6]O\xbeKK\xcd\xb8\xd9[\xe5R\xe9\xf7\ +}\xfb\xf6q\xe4\xc8\x11\xfb^\xc2\xddM6\xf6\xabV\ +\xad\x22\x18\x0c\xf2\xfb\xdf\xff\xde\xb1\xad\xd3\xa7O\xd3\xd4\ +\xd4d\x1bk7\xc9K\xc0\x9c9sl\x82%\xde\x9b\ +\x08@\xdd\x08r\xfe\xfcy[\x05y\xbd^T5~\ +\xbaPyy9\x85\x85\x85\x99\x87\xd6\x98&s\xe7\xce\ +MA\xb4\xdb\x8f4/X\xb0\x80\xd6\xd6V\xc7\xd5\xfc\ +\xaa\xaa\xda\xc1\xed\x97\xbe\xf4%;o\xa5i\x1a\xaa\xaa\ +\xa6HD\xe2\xd9`F\xfd\x923\x86~\xbf\x9f\xef~\ +\xf7\xbbl\xdd\xba\x15UU9u\xea\x14\x91H\x84\x8a\ +\x8a\x0a\xbb\xc3\xb5\xb5\xb5L\x9f>\x9d\xad[\xb7\xb2d\ +\xc9\x12*++St\xf0\x13ON\x9f\ +>\xed\x1a\xf7\xbc\xf1\xc6\x1b|\xe3\x1b\xdf`\xcd\x9a5\ +\xcc\x981\x83H$\xc2\xc2\x85\x0bY\xbf~=\xbbv\ +\xed\xb2\xddt]\xd7m\x95\xe6F\x10\x15\xb8A\xd3\xb4\ +\xea\xbc\xbc\xbc\xdaDG\xa7M\x9b\xc6\xc0\xc0\x00==\ +\xf1\xdf\xb1\x0d\x87\xc3tvvRWWGii)\ +_\xf8\xc2\x17\x985k\x96\x9db\x07X\xb8p!u\ +uu\x04\x02\x01;o#\xa5\xe4\xf9\xe7\x9f\xa7\xb1\xb1\ +\xd1.WTTD__\x1f\xf5\xf5\xf5\xf4\xf6\xf6f\ +t(\x10\x08 \xa5\xa4\xbe\xbe>\x05\xf9\xa5\xa5\xa5t\ +tt\xf0\xee\xbb\xef\xda*\x22\x9dS\x0f\x1d:\xc4\xbe\ +}\xfb(++#\x10\x08\xd0\xd0\xd0\xc0c\x8f=F\ +___f\x00\xa6(466\xd2\xd7\xd7GUU\ +\x15g\xcf\x9ee\xfb\xf6\xed\x0c\x0c\x0c\xa4\x94M\xb8\xcb\ +;v\xec\xa0\xa5\xa5\xc5\xd5\xf9y\xe5\x95W\x08\x87\xc3\ +L\x980\x81h4\xca\xaf~\xf5+\xf6\xee\xddkK\ +\x89\xae\xeb)R\xaai\x1a\xa5\xa5\xa5\x04\x83A\xba\xbb\ +\xbb/\xb6\x05<\xe8\xf7\xfb\xbfP\x5c\x5c\xbc2A\xf1\ +/~\xf1\x8b\x04\x83\xc1\x14\x9f\xdb0\x0c\xee\xbe\xfbn\ +\xd6\xaf_\x9fu\xd2\xee7\xbf\xf9\x0d;v\xec\xb0;\ +%\xa5\xc40\x0cL\xd3LQ\x11\xc9il\xd34m\ +NJ\xae\xa7\xeb\xba\x1dy;\xa5\xc7\x93\xf7D&r\ +FB\x08\x9b\xdb\xdd\xd2\xed\xb1X\xcc\xb6}\x89TM\ +r\xfb\x96e\x11\x8b\xc5R\xfa\xe3\x96~\x8f\xc5b)\ +\xefM\xd8\x1b]\xd7m\x07&9\xdb]SS\xc3\xf1\ +\xe3\xc7S\xd21\x9elS\xd2\x1e\x8f\x87W_}\x95\ +\xfa\xfaz6n\xdc\xc8\xf4\xe9\xd3\x1d\x0d\xa1eY\xb4\ +\xb6\xb6\xf2\xe4\x93O\xd2\xd9\xd9\x99Q&\x91>p\xdd\ +\xb0\xa2(x\xbd\x99\x07\x95\xa5#\xd65\xd2M\xaa\x9f\ +\xcd\xc9x\x9a\xa6\xa5D\xfeN\x99\x06\x9f\xcf\x97\xd5\xae\ +\xe2d\x977y\xa2j('\xf4\x0di\xc6P\x08\xc1\ +\xd9\xb3g\xf9\xf2\x97\xbfLmm-\xb5\xb5\xb5L\x9a\ +4\x89\x8a\x8a\x0aB\xa1\x10\xed\xed\xed\x1c;v\x8cc\ +\xc7\x8e9\xba\x99\x83\xcd\xd49\xfd\xbd\xd4\x0c\xa3[\xbb\ +C\xbd\x7f\xb9\xe5.5\xbb\xe84Wt\xd9\x04qk\ +(\xc1\xe1\xcd\xcd\xcd\xb6\xe7\x94\xf33\xb6>\x01\x0b\x18\ +.\x85\x8f!M\xe1f\xbb.k\x8c\x00WN\xb8!\ +g{\xc7`x\xa5h\xc8q\xc8\x18\x8c,Q\xc6$\ +dLB\xc6`LB\xae!O\xccUB\xc6\x8d\x1b\ +\xc7\xacY\xb3\xc607L\x90\x989tTY\xe9\x01\ +\x8fS\xaeh\x0cr\x0b\x96e\x11\x8dF3\x16\x12z\ +\x00K\x88\x8b\xfbd\x0d\xc3`\xdb\xb6mc\x18\x1b\xa5\ +X\xc4\x03\xe8@,]\x9c\xc6`\x94T\x19\x10\x16B\ +\x0c\x8cyT\xa3\x0fR\xc6w\x16/\x05&j\x9aV\ +!\xa5\xf4p-\xee%\xbev\xc0\x14B\xc4\x80^E\ +Q:TU=\xa7iZP\xd3\xb4\x88\xc7\xe31\x00\ +\xf9\xff\x01\xfa\x90K\xa0\xc0O~5\x00\x00\x00\x00I\ +END\xaeB`\x82\ +\x00\x00\x03|\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00d\x00\x00\x00d\x08\x06\x00\x00\x00p\xe2\x95T\ +\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ +\x00\x00\x09pHYs\x00\x00\x0e\xc4\x00\x00\x0e\xc4\x01\ +\x95+\x0e\x1b\x00\x00\x00\x07tIME\x07\xd9\x03\x03\ +\x0e\x1c\x0e\xa7\xa1o)\x00\x00\x02\xfcIDATx\ +\xda\xed\xd6\xbfo\x1cE\x18\xc6\xf1\xef\xcc\xed\xda\xb1\x0f\ +\x9b\x93\x85\x90-\xb08\x12\x09wn\xac\x14n\x10\xe0\ +\x8b\x90K7\x14\xc8\x7f\x03\xfc\x01T'QB\x81(\ +\xdd\xd0\x906m0\x8ep*DD\x94 \x17\xc8\x0e\ +\x06d\x90\xec\xe4\x02\xde\xf3\xde\x9e\xf7\xd7\xecP\x1c9\ +\x892R\xaeX\xf1|\xa4\xedv\xa4\x9d}\xe7y\xdf\ +\x01\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\ +\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\ +\x11y1L\x9d>vqq\xf1\x13cL\xf8\x9c\xcb\ +\xa6\x80\xcfNOO\xffVA^\xb0\xf5\xf5u\xdfn\ +\xb7\xf1\xdeSQQ\xbe\xf9\x94\x97\xaeLS>\x99\xc6\ +\x9d\xcd\x8c^\xb2`\xac\x1f\xef,\x8ec\xf6\xf6\xf6V\ +\xb2,;\xaa\xc3\x1e\x83\xbaE:MS\x0cp?\xff\ +\x85\xce\xf5\x19\x1a\xe1\x05\x99\xbb\xa4\x19^\x81$\xa0<\ +\x9f\x22\xfbu\x86\xe1\xe1,\x00eYb\x8c\xf1u\xd9\ +\x9f\xadS1\xaa\xaa\x22\xcfs\xf2\xbc\xc0Sa\x8d\xe1\ +\xaay\x9f\xcf;wx\xe7\xf5\x0f\x98\xe7\x1a\x8bW[\ +\xd8W2\x8a\xa2\xa0(\x0a\x9cs\xb5:p\xb5J\x88\ +s\x8e<\xcf\xc1\x8f&\xc3`\x90\xf2\xe1{\x1f\xf3\xd1\ +\xad\x1b|\xbd\xfd\x90w_;\xe3$}\xc0\x17\xf7?\ +%\xcfs\xbc\xf7\xcf\x12\xa2\x82L\x82\xf7\x9e,\xcb0\ +\x18\x98\x82\xe1\xc01\xd7l\x92W)\x00\x87\x7f\x1e\xf2\ +cr\x0b\xe3-Y\x96\x8dS\xa5\x82L\xb8e\x19\x00\ +\x0fs\xf3S\x0c\x86C\xa6\x1b\xa3yQ\xe1)]\x81\ +\xf7\x8c\x92\xf4\xec\xe6R\xa3\x82\xd8:&$\xcbr*\ +\x1d\xa0n3\xa4\xddn\ +srr\xc2\xe6\xe6&Q\x14\xb1\xb4\xb4\xc4\xda\xda\x1a\ +\xdb\xdb\xdbx\xefi\xb5Z\xac\xac\xac\xd0\xe9t(\xcb\ +\x920\x0ck\x95\x90Z5\xd9\xd5\xd5U\xbf\xbc\xbc\xcc\ +\xd6\xd6\x16\xbb\xbb\xbb\xa3\x01o\xed\xf8\xc7GQD\x18\ +\x86x\xefI\xd3\x14\xe7\x1c\xce9\x8e\x8e\x8e\xde\x1a\x0c\ +\x06\x8f\xd4\xb2&\xa0\xdf\xef\xb3\xb3\xb33\x9e\x13\xff9\ +]\xc6P\x14\xc5hcA@\x10\x04\x14E\xa1k\xef\ +\xa4\x1c\x1f\x1f?\x04\xca\xe7Y\x13\x86\xe1L\xb3\xd9L\ +\xe38FDDDDDDDDDDDDD\ +DDDDDDDDDDDDDDDD\ +DDD\xfeO\xfe\x01\xd1\xc0Q%\xbd%\x7f`\x00\ +\x00\x00\x00IEND\xaeB`\x82\ +\x00\x00~\xd7\ +\xff\ +\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\ +\x01\x00\x00\xff\xdb\x00C\x00\x04\x02\x03\x03\x03\x02\x04\x03\ +\x03\x03\x04\x04\x04\x04\x05\x09\x06\x05\x05\x05\x05\x0b\x08\x08\ +\x06\x09\x0d\x0b\x0d\x0d\x0d\x0b\x0c\x0c\x0e\x10\x14\x11\x0e\x0f\ +\x13\x0f\x0c\x0c\x12\x18\x12\x13\x15\x16\x17\x17\x17\x0e\x11\x19\ +\x1b\x19\x16\x1a\x14\x16\x17\x16\xff\xdb\x00C\x01\x04\x04\x04\ +\x05\x05\x05\x0a\x06\x06\x0a\x16\x0f\x0c\x0f\x16\x16\x16\x16\x16\ +\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\ +\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\ +\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\xff\xfe\x00\ +\x10Time for Lunch\xff\ +\xc0\x00\x11\x08\x02\x00\x02\x00\x03\x01\x22\x00\x02\x11\x01\x03\ +\x11\x01\xff\xc4\x00\x1b\x00\x00\x02\x03\x01\x01\x01\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x02\x03\x01\x04\x05\x00\x06\x08\xff\ +\xc4\x00D\x10\x00\x02\x01\x02\x04\x04\x04\x03\x07\x02\x04\x05\ +\x04\x01\x05\x01\x01\x02\x03\x00\x11\x04\x12!1\x05AQ\ +a\x13\x222qB\x81\x91\x14#R\xa1\xb1\xc1\xd1b\ +\xe1\x063r\xf0$C\x82\x92\xf1\x15Ss\xa2%4\ +5Tc\x93\xa3\xff\xc4\x00\x19\x01\x01\x01\x01\x01\x01\x01\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x03\x04\x05\ +\xff\xc4\x00!\x11\x01\x01\x01\x00\x03\x01\x01\x01\x00\x03\x01\ +\x01\x00\x00\x00\x00\x00\x01\x11\x02!1A\x12Q\x222\ +aqB\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00?\ +\x00\xfas\xfc<\xe0\xa6#\x072g\x92\x16\xcc\xb9\xc5\ +\xcd\xbfZ\xb12\xca\xaa^\x17\xce\xa0z\x1f[\x0e\xd5\ +\x9f#\xb2\xc9\xf6\x98n\x1c\xa8\x0cGPt?:\xbd\ +\x82\xc5&)C\x0b\x09G\xa9:\xfbW\xca\x97\xe3\xd5\ +\x7f\xae\x86H\xa6\x8b5\x95\x18\x1b\x10O\xe9Dn\x0d\ +\x8d\xfe\xa6\xaaN\xf2a\x84\xb0\xe5\xf2Hn\x1a\x9b\x83\ +\x90\xcb\x85\xbbjP\xe5\xbfZtXo\x97\xa0\xa9\x0a\ +\x0d\xb5\x00\x93a\xae\xe6\x80\x9a\xe6\xf3D\xc8[-\xfd\ +'\xa1\xa8\x0dI\xd8\xb1\xa6!\x1c\xd40;\x83\xad\xe9\ +~s\x1a\x99J\x99-\xe6 \xef\xd0\xd0}\xe6k\xf4\ +\xfaT\x8d\xc3H\x22\x95\xf0\xb9\xf2\xe5o!\xd8Q\xba\ +F\xc7\xcf\x18\xbe\xf7ScY\xf8\xec\xdfk|\xdb\x93\ +z\xbb\x87\xb8\xc2G\x98\xdc\x90H=\xa9\x94\x9f\x11D\ +\x16\x8dB\xdfs\xcc\xfc\xe8\x89\x04RA\xa9V\x07K\ +\xfbS\xa0\xdc\xce\x08*\xda\x8a\xcb\xe2\x03\xc3\xc7J\x8a\ +l\x03m\xbdh\xc6\x0b8Q\xcc\xda\xb2\xb8\x8c\x82L\ +|\xae\xb7\xb1ntr\xf0\xc0\xeco{\x93\xce\x8b\x0d\ +'\x85\x88I\x00\x00\xab^\xf6\xabX<\x22\x18\x95\xe6\ +\x04\x97\xf4\xa86\xb0\xeaj1x\x03\x94\xbe\x1d\xf3\x00\ +.U\xb7\x1f\xcdg)\xd6\x932\xba\x87\x8d\xae\x8d\xa8\ +\xa5;\x00z\x9e\x95\x9d\xc3q\xde\x00\xf0\xa6\x1fvZ\ +\xc4sS\xd6\xb4\xbd:\x83p\xda\x86\x1c\xebr\xeb8\ +\x15\xb0\xf4\xefR\xa1lC*\xb0;\xdcW|\xbe\x94\ +$\xf7\x1fZ\x90\xd4B\xa3\xcb\x12\x0fk\xff\x005$\ +\xa9P\xa0\x00\x06\xc0\x0d\xa9W'\x9d\xbaiD\xa4\xfc\ +\xc5Z\x85\x1a\x90\xf76\xb5T\xe3\x99\x1b\x18\x12\ +./\xce\xd6\xfd\xa8\x93\xa5}T\xb8\x03z\xec\xca~\ +!K\xf8\x87j%\xbd\x0b\x13\xb9\x04\xec;nk\x9a\ +\x8a\xd4,9\xd4\x80G1\xbd\x060\xe6\xc0\xca\xed\x9b\ +:[\xce\xbb\x81\xad\xff\x00ja\xa8U\x0cY\x1a\xd9\ +dR\xa6\xf5\x12\x7f\xc3\xae5\x8d\xe4B\xc6E`\xca\ +-\x98X\xef\xde\xb4%[\x12\x1bMmX\x5c-\x12\ +>&`\x9dmsl\xc7MyV\xfc\x8b\x93\x10c\ +rX\x91tf\xdc\xf6\xa3\x87p_U\x9fCa\xa9\ +\xedCko\xb9\xab$\x03Ku\xa5i@Q\x90\x0a\ +ebt7R7S\xd4W\x05\xae\x22\xf5-I\xb6\ +\xedk~5\x1f\xa8\xe5C\xe2\xc4\x08P\xfe#\x1d\x95\ ++\x85\xd4\xdc\x13z% \x12B(b,X\x0dj\ +Ce/\x13\xa8\x8a@Y-\xc8\xfe\x95\x9a<\xad`\ +\xac\xec>\x1c\xa4\x0f\x995x\x12\x0d\xc6\xe2\xaaq\x04\ +d\x930'\xc3}F\xba\x03EQ\xc1\xb7\xbb\x06b\ +,H\x16\x00t\x02\xac\xf0\xd9\x15I\x85\x8e\x8e|\xbd\ +\x8dg\x83F\xadj%j\xc6\xb9\x1a\xd7\x0b\x83q\xca\ +\xab\xe1\xb1K\x22e\x93\xd6\x07\xab\xf1\x7fz1 ,\ +C\xe9m\x81\xad\xeb\x18\xa1\xc7\x11\x17\x1cLz\x19\x14\ +5\xba\x13V8,\xb7\x8d\xb0\xa7e\x05\x90\xfe\xb4\x9e\ +?(lLh-q\x18\xd7\x99\xbd\x17\x04\x04E4\ +\xa7se\x1dz\xd6?\xfak\xe2\xe3\x9a\x84\x01\x89B\ +M\x9fCBX^\xd7\xd7\xa5\x09n\x95\xa6A&&\ +1\x03\x86?|\x01Q\xa6\xe7\xad#\x86\xe1\x8c\x83\xc6\ +\x95\x88\x04\xd8-\xaeZ\x83\x8a\xa9\x13x\xc0\x8bJo\ +n\x95g\x0f/\x8d\x1a\xacJ\xd0\xaa\x8b3\xff\x00\x15\ +\x9fom|\x5cgU\xd6B\x16\xda\x05\x1a\x9f\xa5\x04\ +\x99\xe7P\xa6\xf1E\xbe\xbb\xb5\x02\x14\x8cZ!n\xad\ +\xf1\x1f\x9dq\x90\x03\xa97\xf6\xad\xeb#H\x9a1\xf7\ +\x13\x1e\xeb \xd0\xd1x\xae\x83\xfe\x22,\xa3\xf1\xa6\xd4\ +\xb5\x95v\xd4{\x8ab\xb8\xea\xba\xf2<\xeaFs\xd0\ +\xdc\x1d\x88\xe7R\x80\xad\xd0\x00\x5c\x1b\x12v_\x7f\xe2\ +\x94\x09Qh\xe6U^Kk\x95\xf64Hl\x81@\ +\xb2\x8b\x9bS\xa8\xdb\xc9\xcb\x10I\xfc,\xa3-\x03b\ +\x10>I\x94\xc4\xdd\xb5SBZ\xba@%\x89\xa3m\ +\xacH=-V\xa3\x1aED21\xba\x81}9\xd5\ +\x19\xe6\x97\x132\x85Q\xd1T\x1d\xaa\xd4f\xd8x\xd4\ +\x8f\xf9`\x10Ep\xc8\xa6\xe9\x1a!:\x5cQPb\ +\xc3(`\x1d\xf3\xb3hu\xda\xf5TH\xfe>C+\ +e$\xa9?\x95]\x8c\xfd\xea\xfb\x8a\xcc\x9c\xdaW\xff\ +\x00Q\xa2\xd3\x1d\xc3m\xf6\x93\x98\x5c\x05:u\xa5c\ +pF;\xe20\xacJ\x83|\xbc\xd6\xbb\x86\xb9\x18\xc5\ +_\xc42\x9f\xa5^\x85\xf2\xbd\xef\xd4\x1a\xcc\xee5U\ +\xa1\xe2\x90\xa2x8\xe9\x14\xc8y\xef\xcb\xe2\xa7`\xd3\ +&\x0e\xf9\x95\x83\xbd\xee\xa7Aa\xfd\xeb\x17\xfcI\xc3\ +\x8c\x0e1P\xa91\xc9|\xd67\xb1\xae\xe0\xd8\x99\xe1\ +\xe1\xb6\x8aB\xa1$\xb6R47\xd7Z\xcc\xe5e\xca\ +\xb3\xae\x9bn\xf6\xd1lhNk\xf9\xafz\xa0\x9cK\ +\x12\x18\x1f\x0e\x0f\xfb\x05\x13qLK\x10|8\x7f\xec\ +\x15\xaf\xd4\x18\xd3Cp\x0fZ+X\xd5|\x06&<\ +b\x15\x0b\xe1\xc8.r\x03pE4\xe7\xb5\x81\xd2\xb4\ +0sB\x93\x15.J\x95\xd2\xe0n(\xa2\x8d\xa2L\ +\xb1H\x1d\x7f\x03\x8b}\x0d\x04WS\xae\xa0\xfeT8\ +\xfc`\xc3\x1f\x0e4W\x92\xda\x96\xd4/j\x91\xe4\x82\ +\xac@*@\xf3)\xdc\x7fj5Fqp\x85\x87a\ +X\xd2q\x0cI\x95\x9f\xc4\xc8\xea\x97\x19t\x02\xda\xdb\ +\xfd\xf5\xa3\xc5bg2\x12\xd39\xb0\x07\xd5\xf3\xab\xf5\ +\x17\xe6\xb4q\xb8\x85\xc1\xc4Ky\xe4 \x80\xb7\xf4\xf2\ +\xd6\xb2\xf8r>'\x14\x91\x90<\xcd\xa9\xb5\x01\xbb\xef\ +}y_SZ\x9c\x1f\x0cp\xf0\x99\x9a\xf9\xdcYT\ +\xe9a\xd6\x8f\xf6\xa7\xc8\xb6\xe5s\x1c\xa2\xc3a\xedP\ +\x09\x0dplj\x06\xdb\x1f\xa5M\xbb7\xd2\xb6\xca\x8f\ +\x19\xc3\x02F*5\x16\xd9\xc0\x1e\x93\xd6\x83\x84\xe3\x15\ +A\x86fa\x1bzX\x8d\x14\xd6\x88;\x82\x0d\x98Y\ +\xae9VF;\x0c\xd8i\xb2\xda\xe8}'\xa8\xac\xde\ +\xae\xc6\xa7}5\x9dH\xb0\xb8 \xf3\x06\xe0\x8a\xebZ\ +\xb1\xf08\xa9\xb0\xc0\x04qnh\xfb\x1a\xbb\x17\x16\xc3\ +\xb8\x1e,EI:\xe5;U9A\x8bU#q\xdb\ +_\xf7\xfe\xf9P\xc5.\x1e`\x0cS)\xect4D\ +2\xee\x08'Z\xd0H6\xac\xfe8o\x8d_\xfe5\ +\xfd*\xfa\x02\xcc\x00\xdc\x9a\xcd\xe2\xb2,\xb8\xd3\x93P\ +\xa0(=mG/\x0c\xf5\x7f\x84\xa8^\x1c\x08\xbd\xdd\ +\xc9?/\xfc\xd3\xb1\x0b\x9e\x1cB\x87\xf4\xb6k[\x9f\ +J_\x0eB\x9c><\xc4\xf9\xae\xc0v\xd3\xf8\xa6\xb2\ +334L\x15\xddlA\xd8\xd6\xa7\x81\x9a\xa0X{\ +^\x8dEq\x8d\x94\x90E\x99|\xae\xbc\xd4\xd4\x81X\ +)\x14-r<\xba_\x99\xa2a\xa8S\xcfZ\x83P\ +-\x87\xbf\xd6\x81\xb5\xdf^\xc6\x98\xfb\xd4\x11ef\xcb\ +\x98\xa8\xbeQ\xce\xa3\x15x\xa6\x1c\xe2b\x13F\x01\x96\ +1f\x00\xea\xc3\x91\xab\x03\x12$h\x0b\xb1\x19r\x80\ +\xe0\xe9\xca\xd7\xe9\xd2\x83\x0d$\xf2D%\xcf\x0cw$\ +\x0f\xbb\xd6\xba|\x1e!\xf0L\xf0\xe4fk\xa9\xfa\xdf\ +J?\xec-\x19\x90\xac\x84\x11nc\xda\x82\xb3\xb8W\ +\x11\x950\x82,Jg\x11\xbeC}\xc0\xde\xb4\xe3\xc9\ +,bH[:\x1f\x91\x1e\xf4\xcb\xbe\x0b0\x04\x0a\x16\ +\x02\xd4\xc6h\xc7\xc4[\xba\xad\xc7\xd6\xa0\xa8\xb0 \x82\ +\x0e\xc7\xad@\xa2\x05\x08\xb51\x96\x84\x8bT\x90h]\ +\x16X\x8clm\xcc\x1e\x95\xcd\xa6\xa6\x87)'6\xa0\ +\xde\xf5\x15)P\xc7!F\xddM\xa8A\xe9W\xb1\x11\ +\x89\xd4\x5cY\xc6\xc7\xafj\xa2\xc0\xab\x15ab7\xac\ +Y\x8dJ\x90M>,I\xf4\xcb\xa8\xda\xe3qUo\ +]z4\xa7\x8f\xc8>\xd0\xb6\xd4xj\x01\x1b^\xd5\ +s\x87\x008T@\xf3f\xfd\xab3\x8a\xbb\xae\x1e,\ +J\x00B\xf9%\x16\xf5t\xbdh\xf0\xf9#n\x15\x1f\ +\x86I\x0a\xc7\x97Ze\xff\x00*>\x1a\xd6\xe5\xa1\xa8\ +\x0e\x08%\xae\x00\xde\x96\xcfn\xbfJ(\x88\xf2\x86\x1a\ +\xb4\x83\xf2\xb9\xfd\x85h%\xd5dp\xf3)'\xe1K\ +\xe8\xa3\xa5\x10`\x14(\x00\x01\xb0\x14\xbb\xeb]z\xba\ +C,m\xa5r0\xca)lm\xef\xca\xb8i\xa5Z\ +\x8e\x06\x89Z\x92\x0d\x12\xb5)eZ\x8c05]M\ +\x125L\x9f\x5c@$\xa6\xe0z\xf5\xff\x00\xeb\xfc\xd0\ +\x17*B\x8bgoH<\xbb\xd4\x82\x15\x02\x8fH\xff\ +\x00w\xa9\x08\x9b\x9b\xd4\x11\xde\x84=\xf6\xd6\xa0\xbd\xb7\ +#\xebR1H[\xb16\x0a\x09'\xa5c;\x8b\xeb\ +{\x9e\xd5\x7f\x1d.\x5c&PHi?!Yn\xc1\ +\x98\xef\xd0VyV\xb8\xc1\xe0d\xf0\xf1h\xcc5\x0c\ +4\xebZ9|\xe5\x17]mYN\x032\xdbB5\ +\xbdj\xc2VX\xf3\xa9\xf5\x8b6\xba\x8e\xbf\x90\xfc\xea\ +\xe2hdO\x1aB\xc5\xc0\x86\xd9\x00#\xd6:\x8a\xa7\ +/\x0c\xf00\xe5pe\xa5B\xd9\x9a\xfe\xa1\xa7J\xba\ +\xc71\xe9\xd2\xdc\xaa#,\xb2z\x8fcM\x92\x86;\ +\xa3\xa7\xad\x19}\xc5\xa8I\xb0\xbdox\xaeHV9\ +\xb9\xf9\x85\xff\x00Z\x5c\x98L\x14\xda\x98\x8cm\xf8\x90\ +\xfev\xac\xfe?\x87Y8Id\xc3\xe2\x04\xcb\xb87\ +\xb5la\xf1\x98LBf\x0f\xe0\xb70\xfb|\x8dR\ +\x9f\x86L\x83\xa7\xfe)\x9b\xc8u\x08\x83\x85F\xb1\xb0\x9d\ +\xdb3\xa9\xba\x0f\xad\x89\xf9U\xb6\x83\x0c\x14/\xd9\xe3\ +o(\xd5\xb5;Q/\x99H\xe6\xdeP}\xcd\xbf\x9a\ +\x97 \xb9#j\xdc\x923\xb4*\xb0+\x020\xd1)\ +\x1b\x10/M\xb9f$\x9b\x93K\x8f\xcc\xc4\x8e[S\ +)\x89\x1a\xe5\xa9\xb1\xae\x16\xe6k\x98\xd9I\xed\xa5)\ +\xd6\xa8:\xaeVP\xc3{\x11z\x9b-\xb6\xbfs\x5c\ +\xbb\x91\xc8T\x83h\xb6\xf0\x22?\xf4\xd4\x18\xb0\xcc|\ +\xf8HO\xfd4\xc0\xb6\xa8\x22\xf5bU\x93\x87\xe1\x1e\ +_\xba\xcd\x13[\xad\xc7\xf6\xa0d\xe28M\x98\xbcc\ +o\x89MZ7\x0d\x99E:76\x0c\xa4\x8b\xd1\x91\ +k*Lv%\x90\xa5\xd5/\xbeU\xb1\xaa\xca\x09k\ +\x0dI5\xb9,0K\xfed\x22\xfdWCA\x87\xc2\ +a\xe1\x93\xc4\x5c\xce\xc3`\xc0XQ\xf9\xa7N*\x11\ +U\x00\xb0U\x02\xdd+\x80\xa9\x00\x93s\xb9\xa3Qj\ +\xd8\x0c\xd8x\xe7\x00\xb1+\x22\x8b\x07Sb{\x1a\xa2\ +\xd1I\x1b\xb2L\xccYE\xc3m\x98u\xf7\xad 4\ +\xa9uW\xc8\x19C\x00\xd6\xb1\xe8\x7f\xf1U\xe3\xa2V\ +KXh\x05\xaa7\x15\xa3&\x16\x177\x19\x93\xdbQ\ +H\x93\x04\xc3\xd0\xe8}\xf4\xb5f\xf1\xa7T\x9cT)\ + \xdcU\x87\xc2\xce/x\xc9\x03\x98\xda\x97\xe1=\xfd\ +$w\x22\xb3\x94\xe9N\xa1sF\xa2\xc0y\xd7NG\ +\x7f\xce\xad\xe0\x98\xae\x0d,m\xe6o\xda\xaba\xe1\x97\ +\x13\x8a\x92e[F\xab\x91o\xa05qc\x11\xc2\xb1\ +\x83{^\xe7\xbd1Rx\x86\x14b\x90\x98\xc0YF\ +\xb6\x03G\xfe\xf5\x9d\x83\x90\xc3\x8b\x11\x9f\xf2\xd4^q\ +\xd7\xb5l\x00\xf9\x08\x8d\x82\xbf\x22k'\x1b\x1f\x87+\ +\x8c\x99K\xbec\xf4\x1f\xbd\xe8\xe5\xfdS\xf8\xd79\xd5\ +\x82\xa3\x10\xb6\xf2\xdbAjZ\x15q)Ke\x12y\ +l:\xd2p8\x94|\x11\x85\x9b,\x80dC\xd6\xfc\ +\xbfZ\xbb\xe1\xd9\x02F\xb9\x94m\x93Qz\xd4\xec*\ +\xc8r\xe9k\x93\xb5\x09N\xacj\xc1\x85\xefr\x8d~\ +\xcah\x1d\x0a\x9b\x10G\xb8\xa3\x11\x05\x05\xef\xb9\xeev\ +\xa8+M\x22\x81\x8e\xb4\x22\x8a\xd2\xe7\x84L\x08&\xce\ +=-\xd7\xb5<\xda\xd7\xa0a\xa5\xf9\xd4ef:\xb2\ +9V\xb8#{\xd0\x93W8\xa2f\x8cL7\x1eV\ +\xfd\xaa\x8b\x1b\x0a\xe7zn\x09TK\x14\xb0\x1d\x9d\x0f\ +\xc8\x8di_\xe1Y\xbe\xe9\xa1a\xe5g\xca;\x5cQ\ +\xc6\xc1#\x9aF\xf4\xa4d\x9e\xf5G\x81\xb6H\xd5\x94\ +\xf9\xbcqj\xcf\x96&\xe3\x1b\x1a\x82\xcc'\xc3\x007\ +rh\xa6S\xe3\xb2\x81\xf1\x1a\x01c/\x8a\x0f\x96!\ +\x95;\x9ef\xba23\xbfZ\x82u\xb0\xff\x00\xc5\x0d\ +\xeb\x97Fmw\xa9'\xda\xbb\x9dup\xde\xa4*\x90\ +j9T\xd3\x10\xd0\xd3\x03dB\xf6\xb9\x1a(\xeaN\ +\xd4\x90i\x80\xdaM\xae\x22\xd0wc\xfc\x0aRc\xfb\ +\xbb\x82\x09c\xbbnMH$\xea~@\xd0\x83z\x9a\ +\x90\x89\x07qR,\x06w\xb2\xa8\xde\x84\x15U.\xe6\ +\xca9\xd5<^ \xcc\xd6\x02\xc86\x14[\x83\x03\x89\ +\x93\xc6\x94\xb9\x03\xa0\x1d\x05!\x92\xcdu6\xa35\x04\ +\x8a\xc3e_\xcc\xb5g\x0d+\xc3,em\xacNM\ +\xc6\xf5]V\xee\x14jI\xb7\xbdLr\x07\xc4b\x82\ +j\x11\x15E\xba\x03D\xa9~<\x5c\x0f\xebVC\xdb\ +QOP\x1c^6W\x1d\x8dd\x0ab1\x06\xe0\xdb\ +\xda\xb59\x0cil\xda\xe9qaD\x06\x97\xa4a\xf1\ +\x80\x8c\xb3\xeb\xfd|\xfeud\xa8\xdcZ\xc4hF\x97\ +\xad\xb3\x5c\xb7\x07CcM\x129\xd4\xe5=\xca\x82i\ +,r\xdb\x98\xa9Wa\xa9\x1eSP\xc3s\xb1\x16&\ +\xc3\xa0\x16\x15\x22\x81[7\xa4|\xcd\x18\xbf6?A\ +Jt\x8f\x92H\x17\xf1=\xea\x09b\xd6\x1a\x8eu,\ +\xa0\xcb\x197%A5#z\x90\xb3\x05\xd0-\x16\xb7\ +\xd5\x8f\xca\x84m\x5c\x09\x02\xd7\x07\xde\x94\xe2\xa4\x9b\x96\ +\xa8(\xdb\x02*o\xad\x10\xd4\x8d\x0d\xc9\xe9Rr\xa8\ +U\xb5\x16\x8as;*)\x1b\xb1\xb5\x04\xf8\xa8 f\ +Me\x91wQ\xa0S\xd0\x9f\xda\xb3\xb1\x12\xc94\x85\ +\xdd\xd2\xe7\x90R@\xf9\xdcUn&\xceB@+f\ +\x07b\xa6\xf4\x8cw\x88\x90\x06\x8c\xb2\xeasZ\x83\x84\ +C|3\xb3\xb4\x85X\xf9G\xa7\xf4\xa7\xcb\x87q\x1b\ +\x08\xe5\xf2\x91\xaa\xb6\xa4S\xecJ\x8b\x8e!r\xcb\x15\ +\xcd\xbdk\xa7\xe5Vp\xe74!\x85\xf2\x9dErD\ +\x90\xc2-\xe6,u\xa6@\xb9p\xca\xa3\x935\xbd\xaf\ +T\xd4\xe1D\x05\xeb\x82\xd1(&\xf6\xd0mz\xd2H\ +[\x0b\xd4\x8e\xc0\x9e\xfbW\x05Q\xc8_\xa9\xd4\xd4\xee\ +ie\xda\xfe\x1f\xfe\xd5\xd7\xfb\xc4]\x8ebl{\x0f\ +\xefGk\x0d(^\xe6dQ\xba\xdc\xb5\xb9\x02*H\ +\xa8\x22\x8f'\xf5\x1f\xca\xa0\xa1\xe4~\xa2\xa4\x00\x0d\xe9\ +8\xecIE1+\x12\xe7C\xae\xd5en\x1bm}\ +\xeb9\x22\x95f\x0e\xf0;\x00nGZ\xcd\xff\x00\x86\ +\x1f\x02\xb2\xe1T5\xeeM\xcd\xeb\x88\xa3\x12\xac\xade\ +\xb8na\x86\xd5\x05:\xde\xa2V\xec@\xb0\xb6\xe6\x93\ +\x89\xc2\xfd\xa4\x12\x08\xf1SMF\x8e:\x1a\xb4\x16\xc2\ +\xc0\x0a\x122\xb6a}N\xb4bbH\x0a\xb5\x8d\xee\ +\xa7@\x16\xc0\x1bZ\xfdMD^=\xad\x11}9)\ +5\xbeX\x93r\x17\xe6\xa2\xa4;\x0fM\x97\xb8\x00~\ +\x95\x9f\xc1\xd6\x03<\xe0\x0c\xcf(\xbf\x22H\xa6a\xf1\ +\xf3\xc5\xe5s\xe2%\xad\x95\x8dk\xc8$-{\x86\x1d\ +\x1e\xc6\xdfZ\xcc\xe2\xf0*\x05\x964 1\xb3\x0e\x86\ +\xb3e\x9d\xc3.\xae\x12\xaf\x1a\xc8\x9e\x97\x17\x1d\xbbP\ +0\xa4\xf0\x96'\x0d$\x7f\x81\x81\x1e\xd4\xf76\x17\xa7\ +\xde\xd9\xa4\xbe\x8e\xbf3B\xe6\xf4\xc6\x16\xd4\xeeiF\ +\xa3\x09\xc7\xe9\x82=\xd8Vs\x5c\xe85&\xaeqw\ +\xb1HG\xc2.\xde\xe6\xa9b\xa7L\x14\x1e+\x1b\xca\ +\xeb\xf7Km\xbb\xd7>W\xb6\xa2\xaf\x1d\x9b\xc2\x85p\ +h\xd7k\xdeP\x0e\xe7\x90\xa3\xc3Db\x96\x08\x94]\ +\xa3!\x9d\xbb\x92\x0dg`\x95\xe7\xc6x\xb2\x02\xe1N\ +v\xef[\x5c1\x95\xf1\xf9\xdfQ\x18-o\xc4\xfc\xcf\ +\xcbj\xe7;\xbaj\xd3\xc8q9\xb2\x02\x88\xc6\xee\xe7\ +\x7faR\xcc,\x15E\x94\x0b\x01\xd2\x82\xe5\x9c\xb9\xe7\ +\xb5A5\xd7F\x08\xb5\x85\xcdp:w&\x80\xea@\ +<\xb55 \xd5\xab\x0c\x06\xa6\xf4\xbb\xd4\x83V\xac0\ +\x1a\x9b\xd0\x03\x5c\xc7\xc8mH66\xf3\x02>\xa6\xa3\ +\x0eO\x84bcw\x8d\x89:\xef~t1\x9c\xc4[\ +\x9dJ\x10Y\xa6\xe6\xf6\x0b\xfe\x91\xce\xa4`4Y\x95\ +\x10\xbc\x86\xca?:\x05\xb6\xb76\x00\x5c\x9e\x95K\x19\ +?\x8b-\x97\xd0\xbe\x9am\xc4|\xad\xe19\xf26\xdd\ +\x8dU\xd3\x99\x14.\x5c71\xd2\xad\xc5[\x0e2\xdc\ +0\xfa\xd1\x0bZ\xd5S\x09)\x9a\x1b1\xf3\xa0\xb6\xa7\ +qV\x86\x80\x03]\x18\xb0C\xb5M\xc2\xa9c\xb2\x8b\ +\xd4\x0aV9\x98a\xec\xa2\xe1\x8f\x98\xda\xa0l\x0d\x9e\ +\x1f\x14\xee\xe4\xdf\xb5\xb6\x14B\xa8\xe1\xa7\x96/*\xea\ +\xa7\xe1;V\x83\x03`v\xd3P)\x9d\x9a\xe0ju\ +\xa07\xb5\xaf\xad\x12\x85\x03\xaf\xb9\xa4\x08\x0b\xd3\x10\x12\ +\xac\x01\xb3[\xcao\xce\x81OsDF\x9b\x9f\xad1\ +1\xf1\x0a\xd0I\xe1\xce\xad\xab\x12\xb2\x01\xa1\xbe\xb6=\ +\x0d]\xc0`\x1d\x8a\xc9\x88\x5c\x89\xbd\xb9\xb5\x5c\x8f\xcc\ +\xb9\x5c\x93\xd6\xfa\xdb\xda\x8a\x16$4n\xc1\x9a3k\ +\xf5\x1c\xa8\x9ca\xd1F\xd7\x94 \x00(\x16\x00r\xa7\ +\x0d(\x10[[kF+q\x9a\x15H\xd5\x8b\x91`\ +5=\xab\x91m\x1a\x8bX\xda\xf6\xe9}i\x8c\xb7\x0a\ +\xa7bu\xee\x00\xbf\xebj\xe6\x1a\x9du\xa4\x16\xe3\xc8\ +z\xda\xa4\x0b\x00:W8\xf2\xdb\xae\x82\x8c\x81z\x92\ +\x02\xde\x88\x0bT\xd7T\x9c\xc4*\x96;(\xb9\xa8A\ +e\xd7\xd4uc\xd4\xd4M\xfeK\xdc\x5ce5&\xe0\ +\xdb\xa6\xf5$\xd4\x13j\x16\xbd\xea\x00&\xa4\xe3\xbdq\ +-\xc8\xfeu9M.P\xd2DR;\x00ws\xb7\ +\xb0\xebRU\xe2R\xa32\x847e\xdd\x87\xe9D\x98\ +\xd4\xca\x03\xa3\x16\xe7nt\xa90S/\xa4\x07\x03\xf0\ +\xd4p\xf4\x07\x17\xe6\xf8A65\xcfn\x95\xb5gq\ +u\x80\x01\xcb;\xd8\x9a\x0c\xe9\x98\xa4\x9fv\xdf\x85\xb9\ +\xd3\x8e\xa6\xe6\xb9\x80kfEkmq\xb5i\x00E\ +\xa6\x9f\x91\xa9)ng\xf2\xa9x\xe3e9\xa3]\xb7\ +\x02\xc4P\xc4\xd9\xe0F\xce=>k\x9aR\x0a\xeb\xea\ +4\xb9!W\x86D7b\xcaH\xbfZj\xb25\xc2\ +H\xacWp*P\x0c\xe3\xbe\x94\x16?\x0a9qL\ +\xa6\xded#^\xb5f\xe0\xc9\xa6\xc2\xa8\xc8L8\x9b\ +\x8b\x82\x8fqz\xbe\xb9Xg\x8c\xddH\xbd\xeb\x9c4\ +\x12R\x98\x84F\x91\xfd+\xaf\xbfjs\x8b\xd6o\x13\ +\x9c;xi\xe8S\xf5\xefE\xb9\x14!O\x8d\x8c\xcc\ +\xfa\xdc\x96>\xc3Z\xc1\xe2\x18\x891x\xb2\xe7[\x9b\ +(\xe89\x0a\xdb\xc3\xb0\x13\x1c\xc6\xc0\xa9\x1f\x95R\x8b\ +\x87M\x83f\xc4L\x97\x0am\x19\xe4OZ\xe3\xca[\ +\x1b\x82\xc2\xa1\xc3D\xaa\x06\xb1\x83$\x96\xeb\xc8U\xbe\ +\x10\xa0I>\x97)\x18[\xdf\xbe\xbf\x9dT\x04)\x8a\ +6\xf5Js\xb0\xe7\x94m\xf9\xd5\xae\x18$-:D\ +\xe3\xc4\xca\x0b\xb7%7\xda\x9e>\xaa\xb2\xc0\x8fP#\ +\xde\x84\xef@\x1ah\x0d\xb1\x0d\x9e6:8\xd6\xd4c\ +#\x1f,\xa8I\xd8f\xad\x00\x8b\x8b\xe9{\x9a\x91\xf4\ +\xa2de\x17*m\xd6\xa3B*(k\x01R\xa7\xad\ +D\xa6(UZ\x5c\xdem\x94oE\x04\xb1\xcfq\x1e\ +`G#\xce\xa0\x91n\xf5\xc4\x1256\xedS\xb5H\ +\xda\xb4\x10T\x88\x88]Y\xfc\x8b\xeei\xaen\xe6\xdb\ +\x00\x05@\x03\xc6N\xaa\x85\x80\xbf;\xefC#\xacQ\ +\xf8\x8d\xafA\xd6\xa4_\x10\x97\x22x*um[\xf8\ +\xaa`\x9a\xe7fw.\xc6\xe4\x9b\x93R9VkC\ +\x02\xa7\x95\x08:Q\x0d\xeb)\x04P\xb0`\xd7\xb5\xc0\ +\xa6\xd8t\xa8u\xb8\x22\xfb\xd3\x88\xef\x05\xf9!=\xc6\ +\xb5$\xac\x0c\x1aV\xb3\x0fJ\x0d\xc9\xac\xd7\x5cL\x1e\ +KH\x8c\xdb\x00w\xab\x98\x18N\x1d\xe7\ +\x95rjZ\xdf*\xeb\xf5\xe7\xbdM\xeaNQ\x94\x00\ +E\x8f^\xb5\x22\xba\xbb.\x9b\x9f\xad!1\xb9IC\ +\x8d\xc7:\xd2\x84\x89\x22\xce\x9a\x8b\xed\xccVQ66\ +:S \x91\xd1\xcbF\xc4Z\x99U\x8dKT\xa1\x00\ +\x12\xc7\xcbk\x9b\xf3\x15Iq\x92\x81b\x15\xbd\xc5A\ +\xc4\xcb#X\x90\x01\xd0\xe5\x00V\xb5\x9cX\xc2a\x85\ +\xbcV\x0drn\xa8>\x1e\x97\xa7\x15\xb1%\x9e\xc7\x9d\ +\xda\xb3VydFW\x91\x89\x89\xb2\x93\xd7\xa5@\xd7\ +[\xd1,X\xd4\x02\xfa\x06S\xff\x00P\xae`A\xda\ +\xb3\x056\x09\xe4\x8d\xb47\x1f\x84\xedO\xe9b\xfa\xd3\ +\x06\xd4\xb8\xd8:\x07]\x9b\xf2\xa6.\xd5\xa0 \x01\xde\ +\xa0i\xc4\xd4.\xc61q\xf2\xa2]\xaa \xb1\xe23\ +_p,\xbe\xd5\xa4\xb1\xa0RI\xb0\x1b\x93G\x1d\x9a\ +\xc5Ha\xd4\x1aN%Ka\xca\xdfB\xcb\x7f\xadH\ +\xc3\xc6\x8fe,\x17\x9a\xdfF\xa5\x91\xe6.\xf7C\xa6\ +\xc0\xf6\xbe\xff\x00\xef\xb5\x1eE\xb6\xda\xf5\xe7]\x1f\xa6\ +\xf6\xde\x8a\x94\x05\x8dCf\xd4\x9e\xf4Cz\x164J\ +t\xd6\xa4\x9a\xea\xeb\x8a\x1c\xc2\x94\xe9T\xb2\x15\x07^\ +U\xc0\xb1\x17h\xf5\xff\x00X\xa1,z\xd4f\xd6\x84\ +\x98\x9d\x1e\xfb\x02\x0e\xa0\x9d\xa8\xb3\x0byl\xdd\xf6\x1f\ +_\xe2\x80\xb2\x8f1\x03\xdf-\xeb\xb3\x12n\xdf.\xd5\ +!\x9b\x11\xad\xdf\xb5\xac\xbf\xef\xde\xf4.\xe6\xfe`-\ +\xd6\xf5\xd7\xbd\x0by\xc6P}\xcfJ\x92o\xad\x03\xa8\ +\xfbDrX\x5c\xddO}(\xc0\x00Xr\xa8'\xfe\ +*4\xe8\xa4\x9a\xaau\xaa@\xa3\xcbP\xc2\xc6\xa4\x5c\ +\xc8\xcd\x19U`\xb9\xb4$\xf4\xa4\xc7\x87\x857\x5c\xe7\ +\xabmV\x0d\x09\xd2\x8b\x09^\x16IC\xc4\xaa\x0d\xac\ +\xcb{\x5cQ3\x0c\xc0\x15t'k\xda\xc7\xe6*I\ +\xa8`\x0a\x95aph*|O\x04fc4c\xcd\ +o2\xdbSY*\xf3\xe1\xa5%KF\xdb\x11\xd2\xb7\ +F`\xc6'`@\x17Cm\xfbRx\x94i6\x19\ +\xdd\x96\xef\x18\xba\xd8z\x8fJ\xc7.;\xdc2\xa8\xcb\ +\x8eW\x87\xc1\xb8I\xd8\x02u\xdc\x7f5\x9d8*l\ +E\x88\xe5Y\xf8\xa9\x1d\xe5i\x09\xb3_\x97*\xbd\x04\ +\x87\x11\x82Y\x08\xf3)\xc8\xdd\xfaW\x1f\xd7\xe9\xbc\xc1\ +a 2\xbd\xce\x8a75|\xb9\x06\xc0\x0c\xbbe#\ +J\xe5\x8cC\x08\x8co\xbbw4'z\xdec,\xdf\ +\xf1\x07\x0e\xcf:\xe2\xa2\x94E\x1eP\xa7\xa8\xf6\xa6p\ +\x22\x829\xa1\x8c\x10\xa1os\xbb\x1b\xefW'\x8f\xc6\ +\xc2\xcb\x0d\xaeJ\xdd}\xc5e\xf0yD8\xd0\x1bi\ +\x01C\xafZ\xc5\x92r\xd3\xf1\xa2H\xcaT\x8b\xa9\xd0\ +\x8aP\x83\x0a?\xe4\x9f\xfb\xcd6E*\xc5H\xb5B\ +\x0b\xb0\x1dkU\x17\x88\xfb\x98\x0c\xb0\xb3&R\x01R\ +\xd7\x06\x811\x98r.\xca\xeaz\x0dA\xa1\xc5\xbb\xcf\ +)\xc3\xc2\x9a)\xd7\xa94qa\x22D\xfb\xe0]\x8f\ + l\x05\x1d\xefIY\xd9\xf1x\xbf(\xb6m\x85\xf6\ +\x14\xd9`l2\x89\x92K\xd8\xd8\xe9j`\xc3Eq\ +\xe13\xc6\xc0\xe8w\xae\xc7D\xde_\x1b\x13~\x8b`\ +\x09\xa3>\xa3\xa1\x94M\x00\x93.S{\x1a\x9b\xda\xa8\ +\xe08\xa6\x0f3aV\x1767R\xc6\xc4\x9ab\xf1\ +4\xccsa\x11\x11}D\xb1\xbd3\x94\xfe\xacZ\x9a\ +\xcb\x873\x92W\xc2 \x83\xfbULd\xad$\xd7a\ +k\x01\xa7J\xa9\x8d\xe3M\x89O\x0f\x09\x04j\x11\xae\ +\xaa\xe7\xd5\xdf^t/\xc5\x1d\x90\xc9\x16\x1a\x1c\xc3\xd6\ +\x18j\xa7\xb8\xac\xdep\xc9V*A\xe5I\xc0q\x11\ +\x89\xc4$2\xe1\xa3\x05\xcd\x8b.\x96\xf9S\xf2\x9f\x10\ +\xa2\x82M\xed\xa52\xcb\xe2\x12\xd1\xa8\xa7\xc1\x83\x00\x03\ +3[\xfaV\xadE\x1e\x1dv\x88\x1f\xf5\x1b\xd38\x8d\ +Q\x14h\x8c\xc2\xe0m\xb9\xab\x86\x08\x1e\xf6L\xa6\xc4\ +\xe8t\xdb\xa5gb\xa2\xc5b/\xe16t\x1b\x22\xe9\ +o\x956b\xd5\xec<\xb1J\xf3\x0c\xa1K\x1b\xc7\xdb\ +\xda\xa8\xc6\xcd\x98\xa9\xdc\x1a\xb3\xe2i\x1e\x1c\xc5\x95\xa2\ +m\x5c\x0eU]G\x9d\x18\x1b\xe6K\x93\xd6\x8a\xa0\xc5\ +\x10\xa8Z\x9a\x88\xb4\xb5\xedR7\xb6\x95\x0ahY\x19\ +\xd8\xb0\xd8\x9d)de\x14\x9b\x9b\xd7\x01\xc8\x0a\x88\x83\ +\xa9\xf3\x03o\xd2\x8cj47\xa5\x04\xae\xc3\xa9\xa2\x16\ +E\xcfm\x07\xa4u=\x05C\x0b.{\x85\x09\xa9'\ +\xa5p`\xe0J\xc4\xa9\x22\xc8\xbf\x84u\xf75'\x22\ +\xf8Q\xe5$f&\xec{\xd7f<\x87\xd6\xacC\x84\ +wP\xc6\xc8\xa7\x9bni\xc9\x84\x81F\xa5\x98\xfd)\ +\xca\xb5H\x13\xf8O\xca\xb9X\xb3\x10E\xb4\xab\xb2a\ +R\xc4\xc6\xc4\x11\xc8\xd5-L\x9a\x822\xe8oV%\ +\xae\x1f)V1\x9d\x9boz\xbd\x01\xba\xebX\xf9\xd8\ +?\x90lw\xad\xa5\xb1\x01\x80\xd0\x80E\xab\x5cE1\ +\x05\xcd\xaa\xb9\x97.=\xa6\xb1+\x9a\xd7\xb7*\xb5\x0f\ +\xa8w\xa1\x89\x8a\xc0\x97PW(\xfe\xf5\xb01\x22;\ +\xaa#\x06\xbf\x98\xf6\x03_\xd6\x8ck\xf3\xaa9\xbe\xcf\ +\x8b\xce\x05\xc1\x1b{\xd5\xd6`\xa0\x1e\xa0\x10)\x94%\ +Z\xea=\xa8\xaem\xbd-v\xb7M(\x81\xa4&\x88\ +\x11j\x1b\xd0\x96\xb5HLE\x094,\xff\x00*\x0c\ +\xe3k\x8f\xad\x1ap\xcb\xf7\xae,\x05)\x9a\xc3Z\x12\ +\xe4\xec>\xb4i\xc1\xca\xcdu\x03\xad\xeaskK]\ +\xfa\x93\xce\x88T\x86O\x97\xb5\xf54\xd4\x17\x00.\xdc\ +\xadB\x8aXX\x0b\xde\x80,\xda\xc5\x19\xd7b\xdf\x86\ +\x90\x99\xa7\x0a\x08\x89s\x11\xbbr\x14X$`\x8d,\ +\x9e\xb9?J\x88\xb0\x8c\x8b\xe6\x908\xbd\xec\x05\x81\xf7\ +\xa6\xc6|\xbb\x9b\x8ad\xbb\xda\x15\x03\xef\xbe\xd4gj\ +\x5c\x84\x09<\xc7K\x5cU@I\xb8\xb8\x04\xd03]\ +\x8a\xda\xdf:\xe9e\xb9\xb2}k\x88\x0a,>f\x83\ +\x11A#\x85[\xd4\xbbYI\xe9U\xee\xce\xf75\x9b\ +I\x81n\xa4\x1dX\x8b\xdf\xa1\xaax\xec@f@\x9b\ +/\xab\xdf\x9d[S\xf7\x83\xde\xb2\xb1\x0d|d\xebq\ +\x96\xf9\x94t\xbe\xf5\x9eW\xa3\x18\xdcj\x1f\x07\x18\xf6\ +[#\x1b\xafqE\xfe\x1c\x90\x0e!\xe1\xc8~\xed\x81\ +,:[\x9d^\xc5\xc2\xb8\xb8|\x22@u\xf4\x13\xfa\ +VV\x0dZ\x0e a\x95J\xb3\x02\xba\xf2\xbdp\xb3\ +9k\x7f\x1e\x8a`D\x876\xf4\xa3\xbdU\xc1\xe3\x8a\ +\x0f\x03\x11r\xb7\xd1\x8e\xebW\x19H \x8dA\xd8\x8e\ +u\xd3u\x90\x83\x95\x83\x0eU\x9d\xc5\xb0l\x926\x22\ +\x11x\x98\xdfO\x84\xd6\x8b)\x1a\x10Er\x12\xbbs\ +\xde\xfc\xe8\xb3T\xac\xfc\x169r\x88\xb17*6~\ +b\xad#\xc0\xd6)\x89\x8c\xdf]M\x88\xa8\xc4a0\ +\xb3\xfa\x94\xc4\xddPh~UVN\x16o\xf7X\x88\ +\xdb\xb3yh\xff\x00(W\xd7\xcc\x09Y\xa2\xb76\x0c\ +)\x12b\xb0HNi\xcb\x11\xc9S\x7f\x9dQ~\x1d\ +\x8bR\x09\x8b2\xdfR\xa6\xf5W\x1cx\x96\x1f\x10P\ +a~\xef\xe1\x1e\x1d\xc5\xa8\xbc\xac\xf8\xa4]\xc4qW\ +#&\x1a1\x10#V\xdd\xbe\xb5Q\xdd\x84\xb9\x14\xe7\ +\xc4\xb0\xccK\x1d\x10u4\x98\xb1,Ii\xf0\x91\x8c\ +\xbb\xe5&\xff\x00AT1\xd5\xd8\x13\x93\ +\x04\xad\xacb\xec\xcd\xd6\xdc\xa92\x9c\xc5p\xe8Ag\ + \xc9m@\x14\xeb\xac\x85\x93eq\x94v\x1c\xa9J\ +\x98\xb9\xd2F\x00*\xbe]\xd9\x86\xff\x00*Yfs\ +v7\xa5\xa0\x14\xc1XhB\xa4P\xd7|'\xda\xa4\ +3\xf8y\x9eB\x8f\x9d\x00\xd0\xd8h(\x97j`\xa2\ +\xe7PE\xcfz\xea\x95>`\x06\xa7\x90\x1b\xd2\x02\xaa\ +\xb2\xe2\x0c$\xb3\xacv9\x07\xc4\xd5\xa1\x87\xc3\xa4\x07\ +\xc5\x94\x03!\xe5\xc9j\xbc\x90}\x90}\xa8\x00%c\ +b\x06\xb9h\xf0\xb3O\x89>u@\xa3\x98\x16\xb53\ +\xaa\xaa\xcbH\xa4\xdc\xb1\xd7\x99\x15\xc4\x81\xb9\x1fZQ\ +Vg\x0aM\xc0\xfc\xaa|!\x9a\xf7\xb0\xe9K&\xd5\ +|r\x82L\x80\x00m\xafzp\x04h\x18\xfc\xeaU\ +A>}o\xa1\x1d\xaaL\xf1z\xd2\xe1m\x9b\x0c\xc2\ +\xf7(t\xf6\xac\xe90\xec\x98\x96A|\xbc\xb5\xb5\xe9\ +\xd8\x1c\xd0\xe2u\x07+\x0b\x1a\xb8\xf5Z\xadP\xc5A\ +=\x05\xc5\x14c-\xd0\xdb\xf1\x0f\xdc}\x7fZP\x0f\ +|\xadk_SE$\x81\x02;\x1b\x0c\xc5I\xecE\ +td\xae'\x1d\xd26Ro\xaa\xfc\xea\xc3\x00\xa7(\ +\xdc\x00\x09\xf9P\x0c\xb3H\x1a\xf7\x8e=\x8f&4N\ +u&\xa4\x90m\x5c\x1a\x80\x1a\xea\x92X\x96\xbd\xc9\x02\ +\xfbP\xb5\xed\xebo\xad@>Q\xdcW\x1a\x90lO\ +\xa8\xde\xd5$\x0e\x82\xba\xf5\x0chH \x03\xa5u\xea\ +*T\x5c\xda\x84%7\x15\x18\xccJ\xe1\x80E\x01\xe5\ +\x22\xf6; \xeak\x95\xd4\x11\x93\xef\x09<\x81\xb0\xf9\ +\xd6\x5c\xce\xcf3\xb3\x1b\xb31,z\x9a\xad\xc8\xa2\xcb\ +b\xf12\x8b>%\xb2\xfe\x18\xd7-\xe8\xb0\xb8\x89b\ +#\xc3b\x007\xb7Z\xab\x1dY\xc1Fe\x9dcQ\ +\xab\x1bQ\xde\x9a\xdd'\xee\xc3\x81\xba\x83j\x15M/\ +}N\xa6\x9c@\xd8l\x05\x85\x01\x16:m\xd2\xbb\xb0\ +[\xf9T\x9bl/Kh\xc1\xf5jz\xd3$\x04\xe8\ +N\x9d\x05A\xd3Z*!\xa2PAQ\xa8\xeb@\xf9\ +\xb7\x16\x14\xe6\xa5=f\x98S\x82}v\xf6\x14\x04\xd3\ +\x1c\xd2\x98\xd6iFb\x1a\xfd+7\x8a/\x83/\x8e\ +o\xb8Ry2\x9a\xd0\xaa\xdcMZT\x11x%\xd2\ +\xd7$u\xac_\x0cP\x93F mC<)\x8c\x8c\ +$\xa1\x83)\xf2\xc8\xa3Q\xefD\xe2d\x16C\x13\x90\ +,3\x8b\x11U'N\x22\xe4\xdcHG\xf4\x9f\xe2\xb9\ +\xd6\x88\xc4\x1cF\x1d\x8a\xe2b\xf1Ph$\x1b\xfdi\ +\xf8>'\x04p\x18\xb3\xba\x03\xb1a|\xbf:\x94\xc1\ +\xe2\xda/\xbe%T\xf2`I4\xb1\xc3\xb0\xef\x7f\x0a\ +D'\x98\x91\x8a[\xf5\xac\xf7<=5\xb0\xc6)0\ +\xaa\xd1\xe2RK^\xe6\xfa\xd7\x1c\x9c\xe4O\xfb\xab\xcf\ +bp\xf8\x9c\x0c\x99\xd6\xe8/\xa3+\xdc\x1f\xca\x8a>\ +-6\xd8\x80\xb3/2V\xcd\xf5\xa7\xf7>\x8cn\xbf\ +\x87k\xf8\xd1\xe9\xfdT\x99$\x85uiG\xfd:\xd5\ +($\xc3b\x85\xb0\xf2\x15{_\xc3}?:\x19\x94\ +\xa9\xb3\x0b\x11M\xe5\xd2\xc5\xa6\xc5\xc2\x86\xe8\xae\xc7\xbe\ +\x82\x82n!$\xa9\xe1\x95\xca\x84X\x8c\xc4\xfe\xb5P\ +\xd4V?T\x86L4\xa4\xfd\xd6:\xea\x0e\xceJ\xda\ +\x974\x18\xd4\x5c\xca\xe92\x0d\xf6 \x8e\xf7\xa7W+\ +\x14`T\xd8\xd1\x90\xeb5\x22\x84\xc8d\xc3\x01\x0c\x84\ +\x1c\xd1\x1fD\x9e\xdd\x0dV\xc4\xc7\x97\x12cA\xec\x08\ +\xd6\xb6q\x18\x13\x8b\x9d\x1a\x01\x95\x9fW\xe8+Qp\ +\xf8h\xe1\x10\x01\xaa\x8b\x09@\xd5M\x13\x86\xady\xdc\ +&\x0f\xc3\x0b.$X\x9dU9\x9fz\xbe\xb3\xc4\x8c\ +\xa9;dY\xd0Y\xc0\xd8\x82w\xfa\xd0c\xf0\xd2\xe1\ +\xe6\xb4\x870mC\xfe*V+\x0e\xf8\x98bX\x99\ +<\x80\xdf3X\xd1\xe7\x8b\xd6\xa6\x0b\x08\xe6p\xe5\xbc\ +\x8bf\x0c\xba\xde\xaef\x0f;*\x87v\xbf\x9b(\x00\ +/\xcc\xd6?\x0a3Y\xf4\x01\x01\x1c\x86\x99\xab\ +\x11\xa3J\x84\x17\x91\x85\xb9e \x93\xec+\xacJ\x12\ +0\xb3\xda\xdb\xdcT\x09[\x93(\xee\x00\x15\xd7\xb9\xb9\ +7\xfc\xe9\x06\xd9\xef\xe5\x855\xe4\xf2X\xd4H\xd9\x06\ +f\xc3N\x07[\x83@\xb7\xb0\x06\xa5K\x03qqJ\ +\xc0}\xa8\xb7\x97\x0d\x03\xbbuaz\xbf\xc3\x9a5\x16\ +\x95DS0\xbd\x8e\xdf\xf9\xa8\xe1\xea\xce\xc5\xdf\xd2\xbc\ +\x86\x975fx\xa3\x9cZT\xb9\xea45\xa9/\xa2\ +\xd0\xca\xab\x88!3^4\xd5\xcf\xe2=\x05\x1a\xe82\ +\x8d\x14l\x06\xc2\xb8!H\xc2 \xb2\x8d\xaf]f:\ +\x11a\xce\x96Q\x1f\xa3\xe7D\x05H\x15\xd6\xa98T\ +\xaa\xdc\xf4\x00\x5c\x9e\x82\x88!\x22\xf6\xd3\xa9\xaa\xdcG\ +\x12\x91Da\x8d\x83;\x8b1\x07\xd2)\xeaz\x99\x7f\ +\xe29\xde\x5cDo\x1b\x11\x1b\x0c\xaa:Z\x91\xc3\xb1\ +r\xe1\xa5\xf5\x96F\xf5\x03\xaf:,Y\xcf\x85\x0dc\ +\xf7l\x0f\xd7J\xaa\xbe\xabt\xae6\xf7\xad\xe3\xd9B\ +\xe2X\x04\x8b\xb7\xed\xca\xa2d\x12\xc2c&\xda\x82\x0d\ +f\x7f\x87\xb16\xc2\x80\x7f\xe5\xb1V\x17\xe4y\xd6\xa9\ +\xecn\x0e\xc6\xbd\x12\xeca+e\x01WE]\xab\x98\ +\xde\xa2\xba\x94\xea\xe1\xb8\xae\xae\xa9\x05=\x03\xda\xa1\x88\ +\x02\xa2C\x96\xe7\x91\xde\x96\x5cocn\xb4j\x135\ +\xea/C{\xed\xadp\xa1\x08\x7fs@\x5c\xca\xb9\x22\ +F*M\x99\xf9Z\x8bB\xac\xa4\x8f0\x22\x81\xa6\x8e\ +\x1c\x22\xc8\xdb\x81`\xbd\xeaI\xc7bW\x0d\x0eU>\ +r,\x8b\xd0u\xac\xe4k\xebI\x9eW\x9ac#\x9b\ +\x93MH\xe4E\x0c\xc8\xc0u\x22\xb1\xfa\xda\xd6a\xa9\ +\xbdnp|?\x81\x17\x88\xe3\xef\x1fn\xc2\xb0\xe1\xb6\ +q}\xaf\xadzS\xea\x1d,-\xf4\xae\x9c'l\xf2\ +0\x1d*\x0dJT\x91]Y)\xc5\x03\xfai\xac)\ +l9QQGz\x5c\x83\xa9\x03\xdc\x8a)\xdf\xc2\x89\ +\xa4<\xb6\xf7\xac\xa4\xbc\xd8\x91\x9c\x17\xccu\xb5c\x95\ +1y\xd7K\xddm\xfe\xa1I%N\xc77\xfa\x05\xff\ +\x00=\xa8\xcaF\x86\xe9\x1a-\xb9\xda\x85\x89;\x92h\ + !\xef\xea\x11\x8e\xdef\xfe(H\xb17y\x1b\xdc\ +\x81\xfbQ1\xa0cY\xa8\xb3\x06\x1b5\xfc\x22O;\ +\xb5B\xbcq\xe9\x1a\xe4\xf6\x1a\xd4\xb1\xa0&\x82#;\ +o\xe2=\xfd\xcd\x04\x92\x17[\x00\xbe\xf9\x05N\x9d?\ +*\x06\x00\xf2\xb7\xb5E\xca\xea\x17!\x8a6^a\x96\ +\xa9q\x0c\x0c\x0e\x9e&\x1f\x07\x11\xfcH\x14\xdcw\xab\ +z\xdb\xad@$\x1b\x8b\x82:Qd\xa9\x84\xcb\x00$\ +\x1c2\x0e\xb6\xb8\x22\xb4p\x03\x0f\x89\x83+\x02d]\ +\x02\x97\xd6\xdfJ\xb3\x89\x86\x1c@\x1e4va\xf1-\ +\x81\xaar\xf0\xdb11b\x00<\x83\x0b~u\xcf\xf3\ +eka\xcd\x86\xc3)\xb3@\xe0\x8e\xaeiX\x98p\ +\x91.b\x18_a{\xd4\x88\xf8\xbcc,r\x19\x07\ +\xf4\xb0kP\xcb>5|\x98\x8c\x1e}9-\xbfJ\ +z\xfe\x01a\xa3\xc2K\x19a\x1b\x12\xbb\xdd\xadN\x8d\ +c\x12\x00\xb0\xc6\xba\xda\xe0kUc\xe2\x10D26\ +\x19\x96\xfe\xa0\x0d\xa8\xcf\x11\xc1^\xf9'\xfa\x8a\xb6!\ +\xc4\xa03\xceE\x99\xd8\x81\xfd iR\x8a\xcc\xc0\x0d\ +I\xa0\x18\xec&c\xe4\x93+\xea\xb7al\xdd;^\ +\xaab\xf8\x94\x85Z(\xa2\x10\x83\xa1\xebF\xc8\x85\xc6\ +\xa6\x8d\x82@\x871\x8c\x9c\xcd\xcb\xda\xa9(\xa1\x07Z\ +5:W=\xde\xda\xc4\x93j\xe4b\xae\x19M\x88\xd8\ +\xd7\x1a\x8euD\xdd\xc3M\xf6\x9c\x1aLO\x9cy_\ +\xdf\xad\x1a\x9a\xce\xe0\xb8\x85\x8eF\x86V\xb4r\x0d\xfa\ +\x1eF\xb4\x8a\x95k\x1a\xed\xc6\xecf\xa5\x9f\xc3\x85\xe5\ +\xe6\xa3Oz\xce\x04\x93s\xa95w\x19\xff\x00\xed\xf2\ +\x7f\xa9k?R\xb6\x1b\xde\xaeJ,F\xaaP\xeb\x9a\ +1\xff\x00\xfd\x0f\xf1\xfa\xd11,\xd7cD\xe1\xcb\xf9\ +\xc5\x8fKZ\xd59hA\x17\xe5\xa5M\x8f;\x9a \ +\xbdh\x82\xd3\x8bB\xa2\x8a\xd4@W\x01H^\xc1\xae\ +\x5c*\xdb\xe2$\xd3\x00:\xd8km/\xd6\x87\x00s\ +a\xb2\xde\xe5\x0e\xdd\xa8\xe5\x0c\x19U\x05\xdc\xec\xbf\xb9\ +\xad\xb2\xab\x84\x5cD\xa5\x9b\xc6ePu7\xe7V\x82\ +\xb8\xf8\x8c\xab\xce\xfa0\xfeh\xa0\x87\xc2\x84%\xeeI\ +\xbb{\xd1\xaa\xda\x99\x10\x14\x06\x17S{n-b=\ +\xe8q2\xc7\x86\x8c3\x82\xcc\xde\x95\x15`\xda\xe1\xc8\ +\xdbF=\x8f\xf0j\x97\x1eShM\xb4\x00\x8f\xce\xab\ +\xd4J8\xbcD\xb3\xb9,H^J6\x15Vk\x86\ +\x03\x91\xa6\xb6\xf42\x8c\xc9\xa6\xe0\xd7+\xdbc+\x9a\ +9\x13|\xc8l+21j\xd6\xc3\xa4\x84$\x99\x18\ +\xaf3j\xcd\x992L\xeb\xd1\x88\xac\xf2\x89w\x807\ +\xdf\xc9\x17\xfe\xe2~cQ[8,F\x82)-o\ +\x84\xf4\xaf=\xc3\xa4\xf0\xb1\xd1Im\x98V\xcc\xca\x15\ +\xca\x8eF\xbap\xbd\x0a\xd2 \x8f\xe6\xa2\xb3\xe2\x9aX\ +\xfd\x0e@\xe9N\x18\xd9\x00\xf3\x227\xca\xd5\xd3\xf5\x19\ +\xc5\xaa\x83\xb5W\x18\xddu\x85~D\xd7\x1cbi\xf7\ +G\xbf\x9a\xad\x8b\x0c}\xe8\x0d)\xf1\x84\xe8\xb0\xaf\xd4\ +\x9aS\xe3\xa4\x07A\x18\xed\x96\x8d\x87\x0f\xc8;\xfdj\ +B\xad\xf6\xaa\x9fl\x97\xf1\xaf\xd0Q.2A\xba\xa3\ +\x0fj6,[\x05cF\x91\xb4T\x17\xf7\xac\x8cL\ +\xad,\xcd-\xaf}\xd0s\x1d\xbb\xd6\x9ab \x91\x1a\ +9\x03(u\xb1\xe9Y\x93\xc4b\x90\xad\xee\xa7\xd2z\ +\xd6y\x18\xb1\xc2p\xcb,\xa6V\xf3F\x9a\xfb\x9e\x95\ +\xab\x9f0*\xe02\x9f\x84\xedY<;\x10\xd0\xc8\xc0\ +e\xcb&\xe0\xecOz\xd5K2\x07_I\xfc\x8fJ\ +\xd7\x0f\x05Q\xc7A\xe0J\x0a\xff\x00\x96\xfa\xafn\xd5\ +\xb1\x80\x98O\x83G\xbe\xaa2\xb5R\xc7(l\x03\xdf\ +\xe1!\x85\x07\xf8~R'xN\xce\xb7\x1e\xe2\xb5:\ +\xa2\xf8\xd8\x8d\xb5\xb1\xa6\x83\xa5W\x06\xfa\xd3\x11\xb4\xae\ +\xac\x8d\xe9/\xbd0\x9b\xd0\xb6\xbaT\x95\xf1h\x1e\x02\ +\xa4hY\x7fZQE@B\x22\xa8\xec*\xcc\x80\x98\ +\xd8\x0d\xedq\xdf\x9d-\xc0:\x8d\x8e\xa2\xb1aU\x90\ +ij[iV\x1du\xa4\xc8\xa4Vi%\xa8\x1fJ\ +a\x14\xb7\x15\x84[\x9dhh\xce\xf5\x0c*2\x80\xef\ +C\xa5\xe8\x88\xd2\x84\xd4Phk\x89\xa8\xbd\x1a\x93B\ +\xdbWr\xa8k\x05,\xcc\xaa\xa3\x994 \x10/\xb5\ +Hi\x14Ydp;5Fh\x7f\xf7\xd0{\xd12\ +\x90;u\x07J\x93\xbcW\x1b\x90}\xd4\x1f\xda\x93$\ +xi.$\xc3G\xee\x83)\xa3a\xce\x85\xa8\xa6\x14\ +\xd8L\x13#(Y\x10\x1d\xfc\xc1\x81\xf9P\xae\x0b\x09\ +uR\xf2\xca>\x1c\xda\x11\xfd4\xebP\xca\xa4\x02\x14\ +}\xe3\x8f \xef\xd6\xb3\x90\x99\x19H\x85\xa1\x85#\xe5\ +\xe9\xb9\xa3\xce$\x19e\x8e7\x1d\x0a\x8f\xda\x97#\x03\ +&\xfa\xf3\xf7\xa9C\xad\x86\xf5\xa0\xa7\xc5p\x89\x08Y\ +\xa1-\xe1\xb97\x07\xe1=*\x90\xadN5*\xc7\x85\ +\x18`\xc0\xbb6g\x03\x90\xe5YC87\xbe\x9d\xab\ +\x9f94\xc3-\xa5Z\xc3q\x0cLJ\x130t\x02\ +\xc1\x5c\x5c\x0a\xa6\xcc.2\xde\xe3\xad\x19:_)\x17\ +\xa2t\xbdk\xc5\x8a\x87\x17\x87\x920\x9e\x1c\x85}7\ +\xd0\xfbUX\xe3fl\x80k\xfaR8ya\x89\x89\ +\x81\xd4\xb8\xd6\xb5\xf1P\x09\x99\xd6\x18\xec\xaa|\xe8>\ +=4\x1e\xdd\xab\xa4\xff\x00(<^l\xad\xe4\x91\x03\ +\x0e\xa7zT\xd8 |\xd0\xb5\xff\x00\xa4\xefV\x05\x88\ +-\x96\xc6\xe4\x10w\x16\xa9\xb7=/]q\x86k#\ +#e`A\x1b\x83Qj\xd2\x9d\x12X\xfc\xe8s[\ +F\xb6\xd5\x9f0h\xc9R<\xc3KVlj\x22\xa4\ +\x0a\x08\xcb\xde\xe7_z`d\x04)\x0e\xccu\x08\xa3\ +Z\x91\x98gh\x982\x9bf`\xbf\xef\xe5Z>\x81\ +h\xc5\xc1\xd776\xeek2\xc78g\x00e\xf4 \ +7\xd7\xa9\xabX\x09\xf4\xf0\xa4:|$\xf2\xadq\xa2\ +\xac\x80H\xe9]b\x07Z;[C][\x08\x16#\ +]T\x8b\x1aF\x22)\xe6\x84\xc2\x02\xb8\x02\xea\xd7\xb1\ +'\xa5?(\xde\xd5\x0c\x0a\xea\x9a\x1d\xedEL\x09K\ +G\x7f\xf8iI\x1c\x88\xfe+\x94\x87\x85d\x00\x8b\xe8\ +GB+_\x88a\x9aq\xe2\xc1\xfeg\xc4/\xbfq\ +TW\x0f+L\x10\xc6G\x8b\xdb\x98\xfeG\xe9\x5c\xef\ +\x1c\xadJ\xd2\xc2\x1f\x0f\x86!Q\xb4E\x88\xeb\xad`\ +q\xa8\xc0\xc5x\xaa4p\x09\xf7\xb5z\x0cS*\xe0\ +\xce]\xb2\x84QY\xfck\x0c\x17\xc2K\x82d\x8c\xe5\ +'\xad\xf4\xfe)\xe76\x08\xc4\xad\xd5\x7f\x17\x0f\x14\xa3\ +\xe2@\x0f\xb8\xacG_.p\x08\x04\x90A\xf8O1\ +Z| \x93\xc3\x98\x1f\x86M>\x95\x8e>\xe3Ua\ +E\xc8\x02\xa4\xa9\xcb}\x0d\xba\x1b\xd0H\xc50\xee\xe3\ +p,>u!\x12(\xe3\x91\x17\xd3l\xdf\xd4\x0dl\ +:\xb9\xb4\x15,2\xb1\x1d*\x18\x12E\xada\xca\xf5\ +\x00\x156\xd7Z\x19\x0a\xc7\x11v\x07(6\xd0S\x09\ +l\xd9B\xeb\xefC2\x13\x86\x931\xbf\x97kTA\ +\x19I\x14\xb4l\x0d\xb7\x16\xd4We\xe9J\xc1\xe1\xa4\ +\xc8%IB\x13\xe9\x16\xde\xacD\xfe `\xcb\x96D\ +\xf5/\xefD\xff\x00\xa8 u\x15$\x02,E\xc5\x16\ +\x95\x1fZQ\x7fgf\x04\xa0\xcc-\xa8\x1b\xd1\xe0\xb1\ +r\xe1\x9f,we\xb8\xcf\x13|^\xdd\x0d\x1c24\ +R\x07M\xc5\x5c\x9e\x1c>.!)\x05[\x9b//\ +z\xa4\xfe-Q\xe2\x1c`>Xc\x8c\x04'\xef\x05\ +\x8d\xea\xd7\x03\x8f6)gCx\xd0^\xff\x00\xb5J\ +p\x9c7\xda\x04\xcd;\x16\x03_.\xe7\xad\x5c\x8a5\ +\x89m\x0e\x97\xd4\x92=^\xe2\xb5%\xdd\xa2\xe7\xc5\x85\ +$S\x01\xb8\xa4#f!m\x95\xed\xe9\xeb\xdcu\xa3\ +\x0dc\xa9\xb5t`\xca\xeb\xd7\x02\x0dV\x9b\x14\xd1J\ +\xc8\xf1\x03m\x88;\xd5n%\x9b\xebB\xe2\xdee\x17\ +\xe6Ts\xf6\xefA\x87\xc4G0\xb0\xf2\xb7\xe1<\xe8\ +\xf3kV\xea)\x80oM\xc8;\x11H\x11\xda\xf9\x97\ +\xe7V%\xba\x13,jH\xf8\xd0~\xa2\xa1\xca\x90\x19\ +He;\x11\xce\x8b\x0cT\x91-\xb5-\x94\xf2\xb5Z\ +u\x06\x94\xc9X\xb0\xab2\x91\xc8|\x8d\x03\xe6\x03\xd2\ +j\xc3-\xa8mYJ\xb9\x81\xedB\xe5m\xbd\x14\xb1\ +\x95k[J\xe0\x05\xb6\x154C\xb0\x1dj\x01\xb8\xb8\ +\xd0Q\xca\x97:iKTe;\xdcVjI\x02\xdb\ +_\xde\x86P\x81\xa2v\x00\x05r\x09\xe9qDv\xae\ +\xd0\x82\xad\xaa\xb0\xb1\x15 \xc8[5\x9cf\x1c\xc1\xd6\ +\x80\x8f\x08\xf8\x90j\xa7\xd7\x1f\xf1D\x97\xcf\xe0\xbe\xac\ +\xa2\xea\xdf\x8cT\xae\x8c\x0e\x97\x15\x17+$\xa9\x9e2\ +H\xe6\x08\xda\x84\xadtQ\x04\xc4M\x97Eu\x0c\xa0\ +\x1e\xf5$tcB'\x15+@\xea\x88\x80\x16\xb7\x9d\ +\x85\xc51b`\xe5T4\x926\xef\xcc\xfbv\xa9\x0c\ +\x1a<\xb2\x00P\xee\x0dT\xe3\x12\xcd\x87\x850\xb8|\ +Y\x8dYs\x12E\xcd\x8d\x17\xae\xd2\xd4\x91\x88\x96\xf3\ +\xba\xc6\xbd\xcd\xefUf\xe2I\x1d\xd7\x0a\xa4\x9bz\xdf\ +\x97\xb5P\x88\xb1\xf2\xac\xcc\xe3\xf0\xcctoc\xca\xad\ +\xe18x\x95\x81\x934\x00\x9d\x15\xacK{Vv\xdf\ +\x0a\xb2\xe6\x91\xafb\xceN\xbc\xcd^\xc3p\xc9\x993\ +J\xcb\x08#L\xda\x93\xf2\xab\xf8h\xe2\xc3\x8c\x98h\ +\x80nn\xda\xb7\xf6\xaeyaV9\xe5$\x8d\xca\xae\ +k|\xe9\x9c'\xd1\xaa\x91\xf0`\xe4\x01\x8cK\x9d\x00\ +\xc8u\xaa3\x06\x8eF\x8d\xacr\x92/\xd6\xb7\xf0\xcd\ +\x1eQ\x88\x0dx\xd2\xecI\x16\xda\xb1\x1cx\xd2\xb1\x03\ +\xd6\xd7\x03\xde\x9e\x5cd\xf1Jw\x02\x84\xcb\x8d\x0c}\ +\x11\xf9\x9e\xb7 \x8c\x04\x90\xa9\xd5\xa4\xd7\xb5\xa98\x5c\ +2\xe10\x8b\x11\xf5\xb6\xb2i\xf9U\xc4\x06\xf9\x94\x8b\ +\x91b\x1bf\xe9\xeck|x\xe4\xc6mB\x92T\x16\ +>f%\x9b\xb5\xff\x00\xd8\xa9\x06\x93\x01\xcf\x96U\x1e\ +R\xa3\xf4\xb56\xb4\x04\x0dt\xa8&\x8f!\xb6a\xe9\ +n\x86\x86\xf5 \xd2\x99\xec\x0a\xb1\x07qRO\xfcK\ +\x8d\x8f\x82\xb6\xfa\xd5\xae \x83\xc38\x83\xb2\x0f8\xeb\ +X\xf1N\xff\x00k8\x86BU\xae\x0e\x9aZ\xb1z\ +j.\x8a5\xa1L\xae\x99\xa3`\xcb\xfaQ\x8e\x94\xa6\ +\x86\x0ao\x16<\xacFu\x1aw\x14\xda\xce\x81\xccr\ +\x87\x07cZL<\xdalu\x15\xb9Y\xa9\xa8\x22\xa4\ +m\x5ciE\x95*n\xbfO\xe2\xa6\xe5\xd3)sf\ +\xd8\xf4=h\x88\xa0e \xdd4=:\xd4\x95\xe3I\ +e\xc4*J\xbeUbI\xb6\xfa\xd4\x7f\x88\xd4\xb6\x06\ +9G\xc2\xf6=\xaa\xccW\x08\x01\xb8\xae\xc6(|\x04\ +\x88\xcbq\xa1\xac\xe7I\x82\xf8Id\x8f\xed\x09\x189\ +\xc7\xde\xa0\xdd\xba0\xefV\xb0\x91x\x185\x8c\x9b\xb3\ +\x9c\xe7\xf6\xa6f!\x81]-\xa5\xab\xac\x02\x15\x1b)\ +\xba\xff\x00\xa4\xff\x00\xb3X\x93\x1a\xd7\x05\x0e\x8c\x8cl\ +\x18Z\xfd*\xa3bLp\x18\x0a\xdc\xdb*\x91\xefV\ +t\xcc\x09\xda\xd5.\xb0\xbc\xaa\xcd\x18b9\xd5@\x97\ +;F\xac\xc1Ae\x04\xde\xa0\x829\xaf\xbd\xa8\x9d\xff\ +\x00.T\x05\xa9N\x1a\x0b\x0b\xf75(\x03]\x18h\ +\xc2\xc6\x82\xfa\xd7J\xe68\x19\xc6\xe3A\xda\xf5'F\ +-\x87A\xcc\x5c~t\x13\xab\xf8\xab\x88\x8c\xdd\x90y\ +\xd7\xa8\xa6@\x19\xf0\xf1\x04\x17%-\xa7Z\xb5\x86\xc2\ +(#\xc6$\x96\xd3(6\xb5\xea\xcdJnA\x01\x94\ +\xddX\x5cP\xd5\xfc:\xe1\x9e \x828\x83Gqf\ +<\xafJ\xc4\xc3\x87\x22\xf0\xc8\xa5\xbf\x00\xd6\x9cZ\xab\ +M\xc3\xcab{\xee\xa7B:\xd2\xb5\x04\x82,jw\ +4\x16\x9cF\xf1\xa9\x06\xe0\xech\xefT\xb8{\xb3F\ +P\x1fI$\x03\xd2\xad\x8a\xdc\xac\x982\xba\xe5qq\ +\xf9\x8e\xe2\x97,\xb2\xc5 I\xc9\x926\xd5_\x98\xf7\ +\xa2Zb>Srt:\x1aP\xa3\x7f(+\xe6\x1e\ +\xf5\xd8\x88\xd7\x11\x1f\xf5\x0d\x8f\xecj\xbe,\xf8\x0c\xb3\ +\xc4r\x82l@\xf4\x9an\x16_\x19Ke\xca\xcb\xbd\ +\xb9\x8a\xb7\xe5\x0aH\xae\xd2\x05OU\xf4\xab\xe2V[\ +.#\xca\xc7f\xf8[\xe7\xd6\x95,F,@\xc4G\ +r\xb7\xf3-\xefjk2\x11cb\x0e\xd7\xe7T\x98\ +\x85r\x06a\xb7QI\x90\xe4l\xcb\xa2\xc8lG,\ +\xddjV$V\xcc\x85\x93\xfd&\xd4\xbcD\x02ML\ +\xd2_\x95\xf5\x15]C\x06\xf4/B\x09\x03_P\x16\ +6\xd9\xbb\xd4\x92\x0a\xdf\xad\x04\x04\xde\x81\x85\x11\xde\x85\ +\xa8Aa\xa5%\xc6\xb4\xe64\xa65\x94L\x82\x96i\ +\xce9R\xd8kS@aBE\x19\xa1\xac\xa2\xe7B\ +\xf1fSi\x22\xd5O\xedR\xb9e\x8de]/\xbd\ +\xb9\x1a5\xd1\xae9R\x9e\x19Rc&\x1e@\x81\x86\ +\xa0\x9d\x8dE\xd3\x12\x98\xac9 \x9c\xcaA\x15\xd7c\ +{\x0f\x9d20\x14\x16\xbey\x1b\xd4\xe7\xf4\x1d\xa8X\ +\x00.6\xe9B,)\x1b\xd5O\xf1\x08o\x16'\x03\ +\xcac\x02\xfe\xd5|\xedJ\xe21x\xbc=\xf6\xcd\x17\ +\x98\x1e\xdc\xe8\xb3\xa5\xac\xfe\x0b\x1a\xcb\x8eQ \xb8\x00\ +\x9bV\xb3\xbf\x8a2\xc9\xe9\xf8m\xf0\xfbVg\x046\ +\xc7\x82\x7f\x09\xfd*\xfa\x99]\xc8\x81c\xc8\x86\xc5\x9f\ +\x99\xa3\x87\x8a\x8dVv\x19g\x99Z?\xe9\xf57c\ +MW\xd3.U\xc9\xf8m\xa5\x0a\xa9c\x94\x80\xaf\xbe\ +Pn\x1b\xb85\xda\x83b-[\x05q)F\x1f\x02\ +\xd8TV\x19\x9a\xe0\xf2*u\xa5\xff\x00\x87\xe2\x0d\x88\ +i\x98]b\x17\x00\xf3<\xa9\x9cc\xccrX\xe9\x11\ +\x00\xf2\xba\x9f\xe2\x8f\x81\x9f\xff\x00\x1d%\xbf\xf7G\xe9\ +G\xff\x00G\xe2\xf09\xef~t\xd8\x90\x0f\x88\xe9\xa9\ +\xa4GG\x88|\x98)\x9bc\x96\xc0\xf75\xb6\x04\xa5\ +@\x01T\x01\xca\xc2\x8a\x92\x9a\x0f.\x9d\xb9\x1a`a\ +`z\xd4\x85z\x91@\x0d\xe8\x85I\xd3X\xe0\xe6V\ +\x1a:e\xff\x00\x7fJ\xa2\x80\xc5\x12F\x0e\xca/\xde\ +\xaeb\xce\x5c\x04\xff\x00\x89\x92\xca;\xd5\x18$\x12\xc4\ +\xac\xcc\xaa\xca,\xe0\x9bZ\xab\xe9\x89\xca\xab\x8b\x81\x96\ +\xca^\xf9\x80\xd8\xd3N\xf4\x99\xd1\xe6d1\xb0DM\ +\x9c\xf3\xee\x05\x1f\x88C\x85\x94z\x8d\x84\x8b\xb1\xf7\xa2\ +\x13+O\x0c\xd9\xb0\xc8\xdamcY{\x1b\x1d\xc5_\ +\xe1\xcc\x0e\x19\x97\x9a\x9b\xd6\xb8\xfa)\xe4\xd7\x03Q]\ +[\x02\xae5\xc2\xba\xa4\x1a\x923D\xeb\xd5H\xa9\x22\ +\xba/X\x1dt\xa92i\x8b\xa8\xf7M\xbd\x8f\xf7\xa8\ +\x98e\x91\x97\xa1\x22\xa0\xb8F\x88\x9d\x03\x12\xa7\xe7\x5c\ +\xcb\x98\xe9`7\xae\xf4\x8bW5\xd5\x85\xc5\xb7\xa1&\ +\xf5$1\xae\xd0+3\x1b*\x8b\x9a\x93PP\xc0_\xf8\xa8\x82\x19\xe1\x95\xb2\xa1`y\ +\x06\xe7Wp\xf8L\xe8|m\x10\xfc6\xd4\xd0C\x85\ +\x18\x84\x0eUT!\xf2[O\x95[\xc3\xc8\xef\x9d%\ +[<|\xfa\x8ad\xfe\x8b]\x0cqa\x80H\x97,\ +o\xb1&\xe5[\xdf\xbd\x17\xa5\xaeF\xa0\xd4\x92,A\ +\x17\x07q\xd6\xa2\xc4(U\x90\x10?\x1a\xdfN\x97\xde\ +\xb6\x19\xb8\xf8rb,\xb7!\xc5\xc5\x0eY\xb0\xd2\xab\ +\xb2\x15#QqW\xd29<\x7f\x1aVK\x80B*\ +\xebj1{e6 \xee\x0e\xd5\x9c:\xcb\xc5\xe2\x13\ +\xc4\x0e\xf192\x0b\xf9\x0d\xea\x22x\xe5\x04\xc6Na\ +\xba\xb0\xd4S\xf8\xb8\x5c,\xb0\xcf\x1a\xddB\x90\xca\x0e\ +\xabz\xcdw\x93\x11\x8e\x0f\x87R\xadn\x7f\xa9\xac[\ +\x94\xc5\xfc\x1b\x14\xc4\xa9\x02\xe0\x9biW\xa3\xf13\x9b\ +\xdc\x0e\xf5G\x0eY]ZP\x8db\x09h\xf9|\xab\ +Q\xc7\x98\x90A[\xe8Eo\x88\xa1\x19\xba\x8f\xa5\x12\ +\xb6\xe0\x8a\x8a\xe5\xf5\x8fz\xd0\x06(,\xa5p\xcb\xa1\ +\xbd\xd8\x81\xb53\x0f\x141\xaeX\xc3+\x1d\xc95S\ +\x0d7\x87\x8dq)#5\xc15p\xd8\xe8u\xf64\ +O\xea\x10r\x0d\x8e\xff\x00\xad\x0e\x89\xa0\x07\xc3\xfa\xe4\ +\xfe\xd4\x19n\xc73\x1d\x0e\x95 \x10tf\xa5\x08\xf9\ +@ \xdd\x08\xd0\x8d\xa8X\xd0\xc8Y\x15\x98\x05*}\ +c\xf7\x15\xcel\x05\x8d\xc1\xd8\xf5\xa9!\xbdT'\x7f\ +z\xe6:{\xd0\xb16\xd3qYN4-D5\x17\ +\x1bP\xbd\x15\x16\xc7z\x07\xda\x88\xef@\xf4 \x9a\x17\ +\xa2\xa1j\x9a\x03\x0a\x13GBE\x15\x06\xd5\xc4\x03\xa5\ +I\xd0W\x0c\xdd\x85\x08 \x11\xa0\xd4T\x10I\xd6\xd6\ +\xa9bF\xeb\xf4\xa3X\x99\x975\xac\xb6\xf5\x1d\x05H\ +\xa5`\xd5\x18\x86X\xb0\x92\xbb\x91\xe6R\xaa\x0f3J\ +\xc4b \xc3|BW\xe4\x14\xe9\xf5\xaa8\xa9\xe7\xc5\ +8\x0eo\xaf\x95@\xd2\xb3ya\xc1\xf0x\xd9\xf1z\ +rF\xb9\xe9\xa5h\xc2\x99!d\xb5\x8a\xc9\xaf{\xed\ +C\x81\x80\xe1p\xc5Z\xde$\x9e\xa1\xd0S\x88b3\ +\xa2\xe6`,\xcb\xf8\x87\xf2)\xe32+C\xe5e\xc8\ +\xe2\xeb\x7f\x98\xf6\xa9\x80;\x19\x22c\x9aH\x9a\xdan\ +E(\xca\x89\xe6l\xe0wKR\x10\xc9\x89\xc7\xb1R\ +c\xcenH;\x0a\xb5b\xdf\x12* Ev\xca\xea\ +I#\xaa\xda\xc6\xff\x00-~U_\x81N#\x99\xb0\ +\xf2\x1b$\x9a{\x1eUn\x18\xa0\x89\x83\x14\xcey\xb3\ +\x9dMcq\xbcF'\x09\xc5\xa5\x82\x19YbCt\ +\x17\xe5\xca\x8e]v\xa7\xf1\xbcd\xcbp\x07\x9a\xfc\xc6\ +\xd4gX\xd5\x5c\x96V{\x9bt\x03_\xda\xab\xae5\ +%\x8e'\x926f\x960\xc0\x82/\xd3_\xa5XR\ +\xe0\x16u\xc8XeU\xe6\xa3\xbdt\x96VR\xba\x0a\ +\xeb\xdbm\xb9\x8aYk0\x1c\x88\xa9'CR\xc3\x97\ +\xda\x8a\xe1S3\x9b/z\xab,\xa20\x19\xda\xecF\ +\x8b\xfc\xd5w\x9aIH2\x1dF\x80\x0d\x80\xa3b\xc3\ +\xa6\x99\xa5\x92\xe3E\x1b\x0e\x94$\x86>uV=\xc5\ +,\x1a+\xd1\xa4E\xaeu\xa0\xc6\x100O~\xa2\xde\ +\xf4W\x19\x80\xe6j\x9f\x13\xc4#H\xb0\xa99W\x9f\ +\x22j\xb7\xa5\x17`r\xf8h\xdd\x8d\xc9\x1a\x9a\xbb\xc2\ +[\xef\x99\x09\xf5.\xddMd\xf0\xb7\xf2\x11\xda\xf4\xd8!iee\x03E\xb2\xdf\ +\xa73\xfb}*\x93b\xe7\xd1DJ\x19\xb4\x0dj\xd9\ +\xe1\xd1xX\x04Q\xab\x90K\x9d\xf5\xa7\x8ftQ\x80\ +\xaa\xa1\x14YWj\xed\x06 r/\x1f\xd6\xc6\xa4\x82\ +7\x04PI\xa6+\x0c{\x91]\x00\x8e\xd45&\xd6\ +$\x9b\x00.OJ\xa3\x89\xe2E^\xd0\x22e\x1f\x13\ +\x0b\x93E\xb2%\xda\xe1\xa9\xb5V\xe1\xf8\xdf\xb4J!\ +\x95P3zYE\xb5\xe9j\xb2\x18(.M\x82\x82\ +oT\xb2\xa5\x0e4|D\x9dA\x16KX\xf5\x02\x93\ +\x1ck\x04b4\xdc\x80Y\xb9\x9a\x949\x99\xcbZ\xc5\ +Ik\xed@\xaf\xe2C\x1c\x82\xc72\xebn\xdaV>\ +\xebFC\xa4\xab\xee+FB\xb0\xe2\x80\xd5c\x92\xe0\ +\xf4\x06\xa8`T>25apZ\xaf\xe2T\xc9\x87\ +q\xf1\x0f0\xd2\xb5<\x14l\x086<\xab\x85\xb5c\ +\xb2\x8b\x9a\xa7\x1e.a\x95\x06V;\x00V\xe6\x9b\x8a\ +\x13\xb4*\xc5\x95\x90\x1b\xba\xa0\xb5\xbd\xe9\xd0\x08\xf0\xc6\ +`f\x95\xca\x97$\x81j\xb6\x00>[\x82\xca5\xbe\ +\xf5\xceA \x8fI\x1e_j\x16\x8d\x1ee\x94\xb3\x06\ +Qo/:\xb1\x05\x1a\xc4\x8b\x12)\x9b\xebA\x89\xb7\ +\xa8is\xadDLr\xdb) s\x15!^\xc6\x84\ +\x00\xb9\xd1v\x048\x16\xd8\x1a\x92E\xed}h&W\ +b\xad\x1bZD\xd0\x03\xb3\x0e\x95T\x82hI\xa5}\ +\xad\x09*\xf0\xb0k\xec\xa6\x8f\xc4\x87\xf18\xee\xc8@\ +\x15\x9dC$\x8b\xb5\xc1R\x06\x9d\x08\xff\x00\xcd\x09R\ +v\xd6\x85\xf1\x18t\xff\x00\x98X\x8e@h~uJ\ +X\xf1\x0e\xc6a\xa6m@\x07QU\xa7\x16\xa4\xb20\ +V\x04\xb3l\xa3z\x16#6B\xa5\x09\xf4\xdc\xdc7\ +\xce\xab\x0cTXX\x8ep^V\xe5\x7f\xd6\xb98\x84\ +3D\xe9$E4&\xe0\xdc\x0a\xce\xac<\x8b\x1b\x1a\ +\x83A\x0c\xa1\x80I\x18k\xe8\x93\x93\x0a6\x04\x0b\xee\ +;kI\x06\x80\x16;(\xb9\xaa\xd8|S\xc9\x89\xc9\ +'\xa1\xcd\x80\xfc5e\xf2\xb4N\xa4\xd82\x91~\x95\ +\x99.\x1exN\x7f\x84\x1fP:Vyi\x8d\x09\x06\ +Q\xdc\x1a\xe1r.E\xa91\xe3\x22h\xc3J\xcd\x9c\ +\x0b\x1b\x0d\xe9\xb0I,\xaa\x1dc\x8e8\xfa\xb6\xa5\xa9\ +\xd0\x0c|\xc7\x0d\x84VP\x0b\xbbX_[\x0a\xc9\x96\ +Y$\xbew-}\xeek[\x89+\xbe\x04\x93\x87\x8d\ +\xb28\xb5\xa4\xeb\xde\xb2d1\x89\x04r+B\xcd\xe9\ +\xb9\xba\x9f\x9ds\xe7\xe9\x85\xac-,\x81bBI\xe5\ +[8,2ac\x1b<\xbc\xd8\x8d\xbd\xa9|\x163\ +\x16\x1eI4\xcc[(\xedO{\x8dG:x\xcc\xed\ +T\x9d\xf5:\x9a\x9fj\xe5QmE\xfb\xd7Y\xbbV\ +\xc0\x96G>]Z\xdc\x9bQU\xe7\x88A\x8f\x8d\x97\ +(\x0fk\xad\xce\x9dE>0U\xee\x0d\xef\xbf\xf3T\ +JH\xb8\xc0\xa430m\xba\xd1L_XJ\xcd\x96\ +\xf7\x0aM\xcf@+\x17\x8d\x83\x8f\xe3\xea\xb1\x82\x04\x81\ +~U\xa3\xc5x\xb6\x0e\x0c\xf0\xa5\xe4\x91\xbf\xcc\x03a\ +\xda\xaa\xe1ch\x10\xe2&\x00b'\xd4\x0b\xea\x8ak\ +<\xb2\xf4\xa2\xfe\x04\xabc\xceP2\xa4d.\x9d\x06\ +\xf5dX\xefTxA\xff\x00\x89o\xfe6\xfd*\xe0\ +5\xae>\x0a\x0035\xce\xc3n\xf4^UFv\x1e\ +U\x17\xb7SE\x90\xa9\x0au?\xadV\xe22\x02\xc2\ +% \x85\xde\xdc\xcd7\xa4D\xae\xd29f7&\xb8\ +T\x0a\x90+\x0d\x0dM\xa9\x80\xd2A\xb5Njt`\ +\xb1\x12\x98\x85\x94]\xdcYG\xefT\x1b\x09\x89\x92u\ +A\x13\x0d7#AW\xdc\xf9\xe6k\xf9\xae2\xf5\x0b\ +m(\x92F\x0b\x94\xb1\xef\xad\x16j\xd0\x88\xca E\ +M\xb7n\xb4\xf0u\xa0\x0dD\x0dn\x05\xac\x1e'\xc3\ +\x19\x1c]9[qZ\x09b\xb9\x94\xddz\xd6:\xd3\ +`\x95\xe27F#\xb5jQ\x8dE\xd3\xdb\xf4\xa2\x1b\ +\x8aF\x1f\x15\x1c\x9a?\x91\xbf#N\x22\xde\xd5\xb8\x04\ +E\xe8H\xa2]\xaamz@-}\x0e\xaat\x22\xb3\ +q1\x18\xa5+\xcb\x91\xebZ\x85t\xa0\x91\x12D\xcb\ + \xb8\xe5\xd4Vl\xd3+/\x99\xedR\x85\xafe\xd4\ +\x9a\xb8\xd88\x80\xb8w\xbd\xf4\xd2\x9d\x1cQE\xe8]\ +\x7f\x11\xde\x8f\xcd:\xa7\x88\x85\xd2\x14\x91\xf5`y\xfc\ +4\xcc,N\x22%\xdd\x95[e\x06\xd7\xa7\xcc\x03d\ +\x8d\xbe#\x98\x8e\xc2\x86G$\xf7\xab\x02\x02[D\x96\ +E\xf9\xde\x97\x1c2}\xa5d\x92\x5c\xc1u\xbf:,\ +\xda\x5c\x9a%4\xa2\xf8\xab\x95\xc0\x1b\x7f\xcckV9\ +\x17\xda\xb6\xb1\xe9\xe2\xe0\x1dF\xe9\xe7\x15\x8ck\x1c\xfd\ +18B\xcb\x8a\x8d\x94\x90C\x8dkk\x88\x9c\xb0\xcd\ +a\xb9\xcb\xf9\xd6\x18b\x08#q[x\xe1\x9f\x08\xc4\ +\x10n\xaa\xd7\xbe\xfak\xf9\xd5\xc7\xca\xaf\xac\xb2\x85\xe0\ +\x960E\xd9\x0d\xbf_\xda\x87\x0e\x99pq\x03\xcc\x16\ +\x16\xe8i\xd10RX\xe8\xa1M\xc9\xe5\xa5\x097\xca\ +\xb6\xb1\x08\x05\xbeU\x13xq\xb66\x22\xd6\xdfz\xd2\ +\xbeSs\xcbz\xc9C\x96E'\x91\xb9\xadI\x08c\ +\x9b\x93kZ\xe2*\xa3\xdb\x0d\x8fY\x009\x0bf\x1e\ +\xd5a\xb1\x10\xa4lC\x86&\xf6Q\xce\xf4\x18\xb4\xcd\ +\x11\x1b\x91\xaa\xf5\x15E-\x9dsm~tx\x9aX\ +\x5c\xdfd\x8f6\xfa\xdb\xda\x8a\xe6\xf6\x16\xbf~T3\ +\x92$\xb2\xb5\x94\xed\xd8W\x0b(\xb0\xf9\xd6\x82Xf\ +\xf5\x12}\xb4\xa9\x16\x0baC\x9a\xa4\x1b\xd4\x9c\xe7c\ +\xd0\xd0\xb07\xbdI`|\xa3s\xa5\x11\xb0\x1a\x9b{\ +\xd4\x80Y\xaf}\x01\xebm~\xb5\x05\xd8\x0f3\x5cs\ +\x07QRY:\x8e\xe7aI\x9f\x11\x85E9\xdeM\ +\xb4\xfb\xb2/\xf3\xa1*q\x18\xd5fS\x10\xb8\x93`\ +9\x1ad\xb8\x94\x8a \xcb\xe6\x90-\x89\xbf\x95,9\ +\x9a\xab\x89\xc6\x99/\x1a\xa6D\xe5f\xd4\xfc\xeb7\x1d\ +\x02*\xc7\xe13*\xc8\xd6*Z\xff\x00:\xe7yg\ +\x8dHc\xa9\x99\xcb\xa4\x89+\x1d\xf2\x9b\xd0\xba\xb4x\ +i\x8b\xa9\x19\x93(\xb8\xb5\xc9\xa3\xc9\x0c\x0f\x91 C\ +\x94\xd8\xb1\xbd\xcdA*\xba\xacD\x13\xb1r[\xe9z\ +\xcbH\xe1\xe2L<\x19'pP\x9b\x15\xdc\xa5\xf65\ +w\xc3\xc4a\xe3\xf1\x95\xac/ku\xaa1\x0f\x10\xbc\ +m\x7f:\x9b\x9b\xfc\xe9\xff\x00\xe1\xe9\xc60\x0c<\xcd\ +\xe6\x88]n}B\xa9\xfc\x15x\xd9\x91X\x8b\x07P\ +H\xe9B\x9eG\x22\xe3^\xb4\xd9\x83\x03f\x16=)\ +l\x9d\xf5\xae\x81^|(|u\x94\x05R\xa1\x9b\xb5\ +X6\xb0U\x16U\x16\x15(\xa0H\x0d\xcd\xda6\xbf\ +\xc8\x8b~\xf5\xce\xcb\x04Fil\x00\xf4\x83\xf1\x1a'\ +I[\x8c\xb8\x8f\x06 \xbf\x9aC\x98\x8e\xd5\x9b,&\ +`\x98{\xfaHwb==\x05\x14\xaf&'\x11\x99\ +\xdb\xcc\xc6\xde\xd5\xab\x81\x81S\x0e1\x0e\xbewve\ +S\xf9\x13\xf2\xae\x7f\xedO\x82\x0a#\x88&\x97>f\ +\xb5u\xafDA-s\xa94J-\xef]p\x01\x12\ +\xc6\xf7\xd3\xa5\x11\x14V\xae\xa9\x04!$\x00\x09'\xa5\ +T\xe3s[\x0c\xeb\x86e3\xc6\x9fx\xc3\x9a\xf4\x1e\ +\xd5g\x1f+A\x81,\x9a4\x8d\x92\xfd\x05\xab7\x05\ +\x1f\x8d!B3\x07\xd1\x87Q\xbf\xec\x07\xce\xb3\xca\xfc\ +0\x8f\xf0\xde\x03\xc5\xc5}\xa7\x14\xb6Fo('W\ +5\xb4\xf1E3\xf9\xb0\xebr~\x0d\x0d\x09\xc2\xb7\x88\ +\xae1\x08\x85=*\xaal\xbd\xab\xa6Lc\xbeQ*\ +\x88\xce\xec\xa2\xc2\x8e3\xf33\x15\xba\xad\x12\x18\xf8\xa0\ +\x8e'\x06\xcf`j\xe3j\xc7.\xd7\xd2\x97\x1e\x124\ +\x90\xc6\xb1\ +1\x89\xe1b^?\xc2H\xadh\xc9>\xe4\xda\xb2\xf8\ +\xc3+q\x19\x8a\x9b\x8c\xd4r\xf0\xf1\xf5^\xf5s\x07\ +\xc4\x0cqx2\xa0t\xd8\x1ej*\x8d\xcd\x1e\x1f\x0f\ +4\xe6\xd1\xa5\xc7S\xb0\xacKg\x8dU\x9c\xd0\xb3\x08\ +\xcb\xe4\xcbb\xca\xfaf'a~\x95\x0e\xcce!\xd4\ +\x8b\xebs\xce\x87\x89p\xb7\x91Q\xc4\xd1\x992ee\ +#G\xb6\xc2\xfc\xa98a\xc4p\xa9g\xc2F\xd1t\ +\x12\xde\xfe\xd7\xa7n\xf6\x16\x01\xab\xfc>l\xf1\xf8-\ +k\xaf\xa3\xbfj\xce\x8f\x11\x85\x90\xd9\xcb\xe1\xdf\xa3\xa9\ +\xb5\x19\x93\x0c\x84\x13\x8c\x86\xfc\x80{~\xb6\xadJ\x9a\ +\xc0\xd8\x827\x06\x96\xf8l36l\xac\xb77!N\ +\x87\xf8\xa4G\xc4\xb0\xf2X\x11c\xd4\x87\xf3{\x1bZ\ +\x8f\xed\x98[^\xed\xedc\x7f\xa5\xab[\x19\xcas\xaa\ +\x93\xd3KoQ\xcb\xb8\xa5.&\x16\xbd\x96@\x06\xec\ +\x086\xa1\x97\x13\x02Y\xbcL\xf7\xdc.\xf5lG\x0a\ +%\x22\x90\xb3\xc6\xe2\xe8I\x1c\xef\xb8\xa3\x92ha\x8b\ +\xc4\x95\xec\x0e\xca\x06\xa6\xadF\xb1_\x9fj\x8b\x80o\ +\xcf\xa9\xac\xe9\xb8\xab\xe6\xfb\x98\xa3U\xfe\xa1rk\x93\ +\x8a=\x8f\x89\x04o\xd2\xde_\xd2\x8f\xd49W\xa5b\ +\xaf\x98\x12;\x8aW\x15\x7f\x17\x86\xc8I\xb9\x0e\xb9o\ +\xb8\xaa\xe7\x89\x86[}\x95\x07\xfdf\x93\x8a\x9eLQ\ +\x16P\xaa\xa3\xd2\x0e\x9e\xf4^S\xe2\x92\xaa\x85,@\ +\x1b\xdcU\x9c\x16\x08\xe2\xe4\x13\xb0\x0b\x1cw\x11\xe6\x1a\ +{\xf7\xa8\xc2D\xcf2\xf8Vw\xbe\x83[\x03\xdc\xed\ +Z\xcf\x00\x8e4\x89\x1a\xe25\x03\xdc\xf35\x9e'\x07 \ +\x12)S\xf0\xb0:\x1fcZ \xda\x98\xcb\xf6\x9c\x1c\ +\xb8c\xa9\xcaZ=y\x8f\xf7\xf9QxO\x8bA\xc3\ +q_k\xc3\xb4R\xff\x00\x9b\x1a\xdd[\x9b\x0avj\ +\xc4\xc1Np\xf8\x94\x94|'^\xe2\xb7J\xab\xc2\xb3\ +\xc5\xacm\xff\x00\xd7\xb1\xab\x8d\xd8\xab\x81\xa3SK]\ +\xefD4\xad\xa3\x95\xc6\x5c\xac.\x0e\xe2\x95\x89\x86I\ +-\xe1\xc8\xce\xa3\xe1f\xd4{W^\xa4\x1e\x86\xa1\x83\ +\xc1&\x1eL>R\x80\xc8\xbe\xa1\xb3TO\x86`3\ +\xc2\xec\xd6\xd4\x83\xb8\xa2F%\xc3\x05\xbb\x01`F\xf5\ +o\x0b\x0b\xe6\x0f%\xd4t\xe7Z\x93U\xe8\x1c\x17\x14\ +\xf9\xb3O\xe6E\xd0\x13\xb8\xadeee\xcc\xac\x18\x1e\ +b\xb3\xe7\x846(\x22yU\x85\xfb\x0a8\xe2\x9e\x07\ +\xcd\x13\x09\x0709\xfc\xab|v3Wt\xb5\x0b\xca\ +\xaa\xf9\x0c\x8b~\xe3j\x1c\xd7P\xc0\x11~Gq]\ +\x98,\xb76\x02@\x06c\xc8\x8eG\xde\xb5\xa0\xacv\ + x^\x1aJ\xad\x9br\xbc\xa9\x1e\x22\xc4\xaa`\x91\ +\xb3\x11g\xb8\xa9\xe2Q\xa2\x15e\x00\x16\xbd\xc7*>\ +\x1c\x88\x22\xf1H\x05\xb3[^U\x9f\xa5j&I#\ +\x0f\x1f1\xa8\xe9I\x9do\xa8\x1a\x93F\xdeo2\xd9\ +\x5clmo\x91\xedI\xc6I)O\x0d!eo\x88\ +\x8d@\x1d\xa9\xa11\x80\x07#z#\xf9\xf2\xa4\xe1o\ +\xe0\xa5\x81\xf2\x5c\x1f\xf7\xf3\xa6\xa1\x0c\xc4\xd1\x10\xd0\x88\ +\xa3i\x0e\xbe\x1a\x96\xac)\x1b3\x96;\x93z\xd6\xe2\ +rx|9\xb6\xbc\x87'\xefU\xf8T(\xb0\xfd\xa1\ +\xd4\x16ce\xbf*\xcf.\xee5:\x80\xc1`L\x8a\ +$\x95\xb2-\xf4[jkDeT\x08\x8b\x95\x06\xc2\ +\x96\xceI\xb95\x19\xe9\x9d\x0bt\xc0\xd6\xda\xdf1C\ +*\x89.\xca\xc5$\xfcC\x9f\xbd\x0em*\x03T\x15\ +\xe7R<\x93F;\x159O\xc8\x8aW\x85\x87\xfc3\ +\x7f\xfe\xe6\xae\xbb#\xa6W\x19\x87nUVH\x98\x5c\ +\xa0,?1E\x87I8l\x16l\xc2\x19/\xd7\xc5\ +4f4\x90\x91\xe2\xba_k\xd8\x8f\x9d\xa8\x0b\xdb\x90\ +4%\xbb\x0a:!o\xb4aX0$\x03\xb1\x1b\x1a\ +\xbb\x82\xe2\x10\xc8\xbe\x1c\xa1\x22p=EFSU\xc4\ +\xc4\xc7\xe1\xbd\x99:\x1a\x19p\x0e\xcb\x9f\x0f\xf7\x8b\xd3\ +\x9dSg\x87\xff\x00V\xf1s\xc1\x14\x82h\xd9d\xcc\ +\x9a\xaalu\xb5g\xcf;\xca\xe5\xdc\xdd\x8dHVU\ +UpT2\xb2j9\xdc\x11\xfb\xd5v$\x12\x0e\x96\ +\xa3\x95\xaaA\x86\xa2\x07\xa5)N\xb4kY&\x03\xf9\ +\xd5\x84\x8c\xbc\x820\xb9\xb2\x90\x15m\xa36\xe4\x9e\xb6\ +\xa4D\x06`[\xd25>\xd5\xab\xc2\xa3)\x84\x18\x89\ +W\xef$b\xc9q\xa8\x07\x9do\x8c\xd1j\xd4\x00\xe1\ +\xe1\x11\x83\xe6\xb7\x9c\x8e\xbd*C\x03K\x1b\xd1\xa0\xd6\ +\xba0\xe2\x0fJ\x13\xa1\xa6i}\xea\x1b(\xd4\x91\xf2\ +\xab\x11zT\x15\xa6\x05\x0c.*J\x91R!\x85\x01\ +\x8b\xef!\x04x\x99\ +\x10\x03er\x07\xb5;\x05\x8a\x9f\x0a\xf7\x8aL\xb9\xbe\ +\x13\xb1\xad,F\x1f\x0b\x8b\x9c\xcd/\x8b\x1b\x9fQ@\ +\x0ec\xd7Z\x98\xb0\xbc>\x16\x0c\xb04\xac\x07\xaaV\ +\xd3\xe9X\x9cl\xa7J\x8b\x8b!\xb0\x9b\x08\x84\xfcE\ +\x09\x1f\x96\xd4\xf4\xc6\xf0\xf7[\xf8\xb2\xc6z2f\xfd\ +*Z<$\x82\xcf\x83\x8c\x5c\xef\x1d\xd4\xd4E\xc1\xe0\ +\xc4K\x9b\x0f#(\x06\xe5\x1fo`ks\xf4\x0f\x89\ +#\x98\x06\x86ee=t5m0\xf8D\x8d^Y\ +\x90\xdf\xab\x7f\x15\x9b\x8b\x86h\x9f,\x91\x14\x03am\ +\x00\xa4\xd3\xb9\xf06\x863\x05\x18\xca\xb3\x10\x07%\x8f\ +\x7f\x9dp\xc7\xe0\xd5\x0c\x85\xa4\xb2\xf3\x22\xb2\xe0\xc3K\ +*fX\xe4a{yV\xac7\x09\x92X\x8cR\xc8\ +\x89sq\xe6\xd4{\x8a\xd6\xf2\xf9\x06E\xa81\xf0)\ +- \x92\xf2\x0b\xdf\xa0\xa7G\x8f\xc0\xb7\xfc\xe6\x07\xba\ +U\x01\xc3\x8c\x91\xae|B)_!\xb0:\xda\xa3\xff\ +\x00M`r\xa6\x223a\xbe\xa2\xf5K\xc9dl\xa1\ +Y\x174R,\x83\xaa\x9b\xd7_u\x22\xe0\xee\x0db\ +\x9c\x166#\x9e?1\xe6ck\xfdi\x90\xf1LD\ +DG\x89\x842\xed\x98\x8b\x1f\xad?\xaf\xe8\xc6\x89\x86\ +\x03\xaeC\xa7\xf5iS\x9e5\x5c\xaa\x00\x1d\xa9\x11b\ +\xb0\xf8\x96\xc8\xb2\x80\xc0^\xcd\xa7\xe7OX\xd9E\xd5\ +.:\x8di\x9f\xf1\x09\x1e\xe3E5!\x9f6k\xdb\ +\xe7K\xcfj\x8c\xf7\xab@\xdaE\x8aG2\x12\x16B\ +\x18\x1066\xb5\xa8#\x99\x1a{\x05t\xcd\xe9\xcd\xb3\ +Q&v\xf4\x82~W\xa5b\xe4H\x94\xb4\xee;(\ +:\xdf\x95E_\xfcD\xf7X\xa0\xda\xc31\xf74\xdc\ +<\x80``\x04X\xe4\xe5\xefYSb\xa6\x93\x16D\ +\x90\xabHA*\xf9\xb4\xb7Z\xd2\x0d\x96\x18E\xf3\x11\ +\x18\xcd\xde\xb3.\xdbNtfu\xfcU\x19\xd6\xfa0\ +\xa5\xddM\xedj\x02|\xd6\x14\xeaX\xcdj\xe7c\x94\ +\xd8\xda\x96I\xa8k\xe54\xa3\x81\xb0\x16\xe9P\x5c\x82\ +\x08\xde\x96\xadqS\x98\xdc^\xa4\x99`\x8e\x7f19\ +\x1f\xa8\xd8\xfb\xd5\x82\xab\xe3\xd5\ +\xef\x0c\xab\xa1\x0d\x97\xde\xb3L\x1b\x95\x0f\xa6]\x09+\ +~T\x82\xc4\x9b \xbd\xb75bE\x01\x99@\xd2\xfb\ +R\x9b\xca\xa4\xa8\x1aP\x00z\x8a\x8a0\xa0\x0d.{\ +\xd0\xb0\x00\x5c\x9d*:\x12+\x90\x90t\xf9\xd4\xfbk\ +P\xdb[\xadE%\xcb\x02\xa2\xd6\xe7ak\xd0\xe2#\ +Y\xa1\x11\xb3\xe5\xb3\x5c\x1b^\xa4\xda\xdd\x85B\x92X\ +\x007\xa9\x13&\x0b\x0e\xb1\xb4\x9e$\x96Q\xcc\x00\x0d\ +P\x9c[\x13\xf6\x8f\x133\x0fM\x86\x8b\xf5\xab\x5cR\ +l\xcf\xe0\xaf\xa57#\x99\xaae\xack\x9d\xcd\xe8\xc0\ +\xe7b}c\xfe\x91@\xcc\x11\xb4\xdc\x8doD\xc06\ +\xbb\x1eD\x0a\xe8\xa1i\xb1H\xa4\x8b1\x02\xb3I\xf3\ +O<\xa9\x95\xa4%\x7f\x08\xa4S\x0dqS\xae\x97\xf9\ +\xd3\xa8\xba\x90(\x97Sc\xa1\xa2\x0aN\x9c\xea@\xb5\ +\x10Z$\x0d\x94\x92\x01\xb1\xd4s\xa3\xcaJ\x82\x96\xf9\ +\xd4\x8b\x17\xa9\xa6\x15\xe9P\x16\xacA\x15\xa9\x87O\x0b\ +\x0e\xa9\xf17\x99\xbfj\xa5\x84\x88I\x89D\xd8\x13\xad\ +h\xb0\xbb\x93\xca\xf5\xbe0Z\xe5w\xcb\x96\xf7\x1d\x0e\ +\xa3\xf3\xa8l\x84\xdd\xa1\x88\x91\xcc\xadH\xf6\xae\x22\xf5\ +\xa6P]\xed`\xc4\x0e\x83JS\x13z2-B\xd5\ +\x17\x06>!\x1f\x0c\x9a\x8e\xcd\xd2\x96X\xe753\x06\ +1\xa2%\xb3<\x82\xd7\xed\xadt\xa6\xf2\x16\x1dhB\ +\x0cF\xa0\xda\x8f\xc5c\xeb\xb3\x8f\xea\x17\xa4\x13]\x9a\ +\xadN\x97\x0b\x81\x94\xdc\xc1\x90\xf5\x8c\xd8\x0f\x95%p\ +S\xc4o\x85\xc7\x01m\x81%i\xads\xb3\x11P\xb9\ +\xc1\xd4\x82(\xe9%_\x8c\xaf4\x9b\xd8\x83K\x9b\x1b\ +\xc4\xd1\xb2\xb4EOh\xe9\xd7\xa2YdQe\x91\x80\ +\xe8\x1a\xac\xff\x00\xa9I\xa6\xe2s\xe8|s}\xbc\xa4\ +R\x8e\x0f\x1c\xceA\x85\xef\xcc\x9a\xd1\x92Wo)v\ +os\xb5C=\x97V6\x14~g\xf4\xea\xb4x'\ +EG\x9d\xd0\x04$5\xbc\xc7)\xdfm\xaa\xd6!F\ +\x7f.\xd6\xf2\xf7\x1c\xa9bQ}\x14\x91\xb1\xa8\x88\xe4\ +/\x16bFP\xe9~]E3'\x819\x0d\xaf{\ +\x1a\x94R\x0d\xc9\xbd\x0ej\x82\xd79A\xf7\xa9\x19z\ +\xeb\xd2U\x9b5\x81\xd0u\xa3,\xdf\x87\xe9V\xac\x1d\ +\xeco\xf5\xae\xbf*X%\xb4\x0b\xda\x89J3eY\ +U\x98| \xebV\xa1#\xdc^\xf4y\xcd'U;\ +{\x8a\x95k\x8au\x1a\x1a\xc6\xe3CI\xc5a\xd2b\ +]<\xaf\xd3\x91\xa2&\xc2\xf5\x19\x88;\x1a\x92\x83\x02\ +\xad\x94\x82\x08\xe4k\x81\xf3\x5chj\xf4\xea\xb3\x80\x18\ +Y\x86\xcdT\xa5V\x8eB\xae\xba\x8e\x87z\xc5\x8d.\ +\xe0\xb1l\x06I.\xc3a\xd4U\xdc\x19_\xb1!L\ +\xac\xba\x86\xd3\x9fz\xc5\x8c\xd9\x89\xd7Z\xb9\x86\x9d\xe3\ +|\xc8\xd6c\xa1\xbe\xa1\xbb\x1f\xe6\x99\xc8X\xb9.\x16\ +'l\xc8\xde\x19<\xadqR\x15\xf0jdW\x12'\ +\xc4\xb6\xb5\x0f\xdb $(VY\x0f\xfc\xb6?\xa1\xe7\ +Q6\x22\x16V[=\xd9mb+]3\xda\xe4l\ +\xae\xe0\xc7r\xac4\xa7\xa5\xf9\x8dj\xa6\x15U\xb0(\ +\x14X\xe5 \x1e`\xd3\xb8y\x90\xc0\xa5\xe5b\x0e\xc0\ +\x80kp,-\x10\x17\xa8\x19\xbf\x1c\x7f\xf6\x1f\xe6\x8c\ +\x1b\x0f0\x00~%:|\xfaV\x83\x80\xa9+pE\ +\x15\xba\xd4\xd8\xf4\xad\x05Ybe\xfb\xc3r\xa0Y\xc0\ +\xdc\x8e\xbf+\xd7\x10\xac\xb7R\x19z\x8a\xb5\x1f\xac\x03\ +\xb5\xf5\xaax8\xb2\x89\x7f\xd6@\x17\xe5z\xcd\x87\x5c\ +\x14\x0d\x86\xf4\xa6*\xd8\xd0\x83\xfeR\x93\xf3\xab%{\ +\x81\xef\xa5V\x96HS\x1b\xe2\x86\x047\x95\xc8\x1a\x5c\ +\xf3\xa2\x940\xa0+M\x0f\x13\x1b+\x8b\xf4:W:\ +\xdbqY\xc4AE\x1b(\xa0t\x0c-v\xfdi\xe4\ +P\xb2\xd0\x88\xc8\x14ipj\x08\xf3\x5c\x9b\xd3\x1a\x81\ +\xadz\x8c\x09\x1aZ\x82g\xf00\xed'\xc4|\xabM\ +Qso\xf6*\x87\x11\x97\xc5\x94\x85\xf4&\x8bG+\ +\x90\xab{\xd0\x91\xda\x8a\xa2\xb94\x1b\x0a\xe4\xcc\xac\x18\ +\x1b\x11\xb1\xa2\xa9\xb5:\x9cl\x05\xe8\xe3\xb3\x0f('\ +\xf2\xa2\xcb\xe5:_M\xa9\x9c:\x13#\x14\xb5\x94j\ +[\xa52\x22c\xc2\xcf4\xb9Q3\x13\xae\x9c\xaa\xf4\ +V\xd5I;\x1a\x22\xa6\x91j\x12\ +/N(y\xd02\xda\xac\x05e%\xac\x06\xa6\xabI\ +\x0f\x8b\x8b\x92r/\x18k\x8b\xfcV\xab\x8c\x0e]=\ +Ou]>\xa7\xe5B\xea-\x94h\xa0X\x0e\xd4X\ +b\xbc\x9a\xb1&\x94\xe2\xd4\xf9\x01Q\xa8\xbd\xb9\x8et\ +\xa3\xe6\xd2\xd6\xa8\x93mI\xa1aM\x22\xd4,+(\ +\x86\x16=\x8d\x0d\xc5\xedNe\x14!-\xb5\x18t\x9c\ +T\xb2F\xd1\xaa?\x86\x8e5{R\xb18\x86\x81\xc0\ +\x8f\x11\xe3\xa1\x1a\x83\xadZ\x9a!,&6l\xba\xdc\ +5\xb6\xa4\xe0\xe0\xf0&>-\xb3|\x04\xech\xba\x81\ +\x0c\x92\xcd\xacx[\x13\xbb5\xec)\xc4\xfd\xe7\xa8\xb1\ +\x03V\xfe:S$gm\x19\x8f\xb7*ZzmQ\ +q77\x22\xf5\xc2\xd6\xb5\x87\xd2\xa6\xd5\xd5'\x0e\xd4\ +Z\xda\x86\xe0\x1dj\x0b\x12l4\xa9\x08\xd4W\x1a\xea\ +\x93\xaaI\xbd\x095\x17\xbdHw\x05r\xba\x86^\x86\ +\x96#\x8e\x07\xfbDjJ\x8fR\x9dl:\x8a j\ +d\x91a\x81\xa4a|\xc3(^\xb5\x221\xb3\xc4e\ +\x8aH\xdb3)\xf3\x10-\xa5ZpX\xe7@J\xb6\ +\xa0\x8a\xcf\xc1\xe1\x9eo19Pn\xc6\x9f\x8a\x85p\ +\xf0\xe7\x8ei\x03_@M\xafD\xb7\xd4\xb1f\x02\xe5\ +H\x1dmQqUp\x12b\x1f\x14\xa3;0>\xab\ +\x9b\x8bU\xa2.\xf6Q}t\xa6v\x84\xa7\xa1\xaa\xdc\ +KI\xd5\xbf\x12\xebVB0\x17 }j\xb7\x12 \ +\xca\x88\x06\xa8\xba\x9a\xaf\x80\x9a4:P\x81sG\x10\ +\xf3\x009jh\x22\x96?\x16H\x16\xf6$5X\xc0\ +B`\x8d\xf3\x90]\x8d\xbeT\x97v\x8eH\x1d#.\ +\xc06\x80U\x9c9\x12G\x9dAR\x0d\x99N\xe2\x99\ +\xe8\xa6\xaf\xadGz\xbb\xc3t\xc5\xa8\x03F\xd0\xd55\ +\xbe`@'\xda\xb4\xb8|>\x18\xf1\x18\xf9\x88\xb2\x8e\ +\x95\xd7\x8f\xac\xd5\xc8\xb6\xa3t\x04\x5c\x0dM%\xa4\xf0\ +\xec\xc7a\xbd\x14\x18\x98\xa4uMT\x93\xa5\xf9\xd7M\ +\x9e2r\x5cyO*\xaf\xc5\x0d\xa1\x09\xf8\x8d\xea\xd1\ +\x037z\xa3\xc5\x9b\xefUz-\x5c\xba\x8a(\xb5-\ +\xbb\xd1\xb9\x16\xde\x96\xfbW&\xa1\x13\xa3\x11\x9e=\x5c\ +\x0dT\xec\xc2\xa3\x0ff\x80\xb0\x04\x10\xd6e\xe8h\xce\ +\xfaS\x06\x1aV\x1fhD\xd6\xde`t\x12\x0f\xe6\x8c\ +$\xf3\xa8j\xb0p\x93\x11\x99V\xe0\xea5\xd6\x97&\ +\x1ep\x0f\xdd\x9d*\xca\x95\x9c\xd0\xd3\x1a\x19\x83\x10b\ +m;P\x15`.T\x81\xd4\x8a\xc3H\xae\x22\xbb\xf2\ +\xfdh\x80\xf7\xff\x00\xb8\xd4\x83\x96\xb8\x8ab\x8f\xea?\ +=k\xb2\x83\xb9?-)\xc1\xa5e\xa9\x00\x027\xb9\ +\xda\x9b\x91O#\xefz\xe8\xe3\xc8sn?J\xb1k\ +c\x86\xa6\x5c\x1ek\x83\x98\xe8GAV\x00\xa4p\xf5\ +\xb6\x15Z2\x10\x96>_\x84\xf6#\xf7\xa7\x86\x05s\ +\x00E\x8d\x88;\xa9\xe8k\xb4\xf1\x87Z\xbaP\x91G\ +\xe2\xc8\xe1\x00\xd0_\xe2\xedQ4\xb1\xe1\xe2\xf1$\xd4\ +\x9fJ\xf5\xac\xdcd\xef\x89l\xd2\x01a\xb2\xf2\x15[\ +\x89nN%\x1a\xbd\xa2\x830\x1c\xdc\xd0/\x13|\xb6\ +xQ\xbb\x8d?J\xa4\xaa\xc4\x90\x01k}h\x95$\ +\xbf\xf9on\xb9M\xab?\xaar4b\xc6\xe1\xa4\xd1\ +\xb3D{\xea(\xe4H\xf1)\x95$F\xc9\xb1S\xad\ +\xfaVw\x81'\xfe\xd3\xff\x00\xdahLR\x03p\x8e\ +\x08\xe6\x06\xd4\xea\xc3\x9a\x09nT\xc6\xe6\xdam@\x90\ +\xc8\xad\x90\x8c\xa4m\x98\x81\x7f\xadT\xc6\x89\xe4R\x22\ +\x95\xc4\x8a/\xe5>\xa1\xfc\xd6n J\x04q\xbb3\ +<\xc6\xc0\x9b\x9b\x0b\xf2\xaew\x96|2=\x5c\x0e\x1d\ +\x0f\x88\xea\x19F\xa7\x91\xaepH>\x12g;f:\ +(\xaf=\x04\x86,lb+\x00\xac\x006\xf5\x0b\xd7\ +\xa2\xf1\xd6Y\x99\x0e\x8e\x09\x00r5\xd3\x8f-\x16a\ +yJ\x82]\x83;hH\xd8\x0e\x82\x81\x859\xc6\x96\ +\xa4\xc8r\xa7}\x85T\x16\xe5z\x8aC\xaa\xf8\x83!\ +\xf7\xa7 \x19M\xc8\xd7\xf2\xa1\xb0X\xaf\xd7z\xc9\x85\ +:\xebKk\x03nt\xf6\x04\x8eB\x96\xc8\x09\xd6\xf7\ +\xebQ(\x8a\x82\xb4\xc6\xd3\x7f\xad\x0d\x18\x80E\x04\xca\ +\x0e\x16U\x22\xf6RG\xbd:\xb9\x00,W\xf1\x02(\ +\xc4T\xc3\xcc\x17\x9d\x85\xf5\xedP\x16\x89\x980Ck\ +\x12\xa2\xff\x00J\x86 \x0b\x93A\x09\x1a\xd0\x9bW<\ +\x82\xfbP\x9b\x9dI\xb7aAqU\xbd\xcdJ\x82M\ +\x95o\xec*\x15\x030^\xa6\xabO\x88\x91\xa4\xf0`\ +,\x17m\x0e\xadE\xb8\x96\xe4\xc9\x18\xbc\xb2*v\xbd\ +\xcf\xd2\x85\xed\x942\xe6!\x86\x84\xad\xa8p\xf0$>\ +g\x01\xe5;\xdfP\xb4nK5\xc9\xb9\xa5\x16sT\ +D\x18\x9b\x93\xa5\x18\x17\xf6\xfdh\xd5I6\x03\xd8T\ +\x83j\xaf\xc5?\xcdE\xbe\xcb\xb7J\xba\x88\xc4}\xd2\ +\xab\x9el}+\xfc\xd4\xa4\x10\xc6\xe5\xdb\xefd;\xb3\ +m\xf2\x15f\x8df\xc3.\x22$\xb4l\xca\xb4\xdc>\ +\x1eLCx\xb31\xc9\xd4\x9dO\xb5h4\x84\xefo\ +kP\xc8\xdb\x17\xb9\xcd\xa2\xa8\xe7\xfcU\xf9Z\x04P\ +\x13$J\x11y\xff\x00sH\x9ab[\xc1\xc3\x0b\xb1\ +\xd0\xb7\xf1V\x99T\xaf\xdej\xa3R\xa3D\x1e\xfdi\ +\x18c\x0c\x0c\xeeT\xdd\xbd#\x98\x14\xd4\xe8Pa\x22\ +.\xdego\xd7\xa5U\xb3\xbc\x85\xc9\xb9cszl\ +\xce\xf3I\x99\xb4\x1c\x80\xe5\x5c\xaba\xa5f\x90\xaa\x91\ +\xfd\xaa\xce\x0f\x0c\xd2\xb5\x94X\x0d\xcf!L\xc1`\xda\ +O<\x9eT\xeb\xd6\xb4\x11\x00P\xaa,\xa3\xf3\xadN\ +?h\xb58`!\x5c\xb1\x0bw\xb6\xa6\x8c$G\x16\ +\x19\xa3\x5c\xd2!\xbfBF\xd5*\xb6\xda\x83\x17\x13\xb2\ +,\x88}\x1c\xbfz\xe8\xc1\xe9\x1a\x81e@\xbe\xc2\x99\ +\x15\x936v\xb0\x1a\xde\x86\x09ch\x95\xd9\xc6kj\ +\xa3{\xfbT\x82d\x901\x1a\x8fH\xe4\xbf\xde\xb4\x83\ +\x8bI\x5c\x092\xd9W@\xbc\xc7\xbd\x06\x10g\xc4\x22\ +\xf5aW\xa3\xf2\x8boK\x8a \x98\xd2\xc0yB\xe6\ +\x1d\xb9Ux\xf64\xf6\xcau\xb7:\xa1\xc5Tx\xe0\ +\xda\xfeQ\xbe\xb5t\x1a\xa5\xc55\xc4\xfb(\xa7\x97\x8a\ +*\xb1\xd2\x90I\x00\x8e\x86\xd4\xd9\x0d(\x9b\xfc\xcd\xeb\ +\x9bP\xec\x04A\x98\xc8\xc2\xea\xbb\x0e\xa6\x9f\x8ab0\ +\xce\xc4\xea\xdeQS\x87\x190\x88:\xdd\xab\xa4\xb1x\ +\x94\x81`\x0b\xeb\xcc\xedZ\xf8\x91|\xa0\x06\x16\xd0~\ +\x94\x12\x1e\x94R\x90\xd7\xccozQ\x1d\xcd\x14'3\ +l\x09\xd3\xbdH\x91\x8e\xfb\x0eGZ\x0b\x80,+\x94\ +\x92l\x01&\x84\xe9b\x86OR\x05'\xe2Z\xa7<\ +M\x0b\xe5apv#cW\xb4\x0c\x14\xba\x06;\x02\ +\xd4\x18\xb0\x87\x0cD\x92\x22\x95\xd5u\xbf\xe9E\x86)\ +\x0br\xa2PI\xb0\xd4\xd0#\xc1\xcf\x13\x17\xd4\xd0\x89\ +\x96i\xd3\x0f\x09!\x5c\xf9\xda\xda\x9f\xedF\x93\x90\xa6\ +l\xab\x9aF\x1f\x0a\x0b\xfet\xc1\x95E\xe4\x8aH\x87\ +\xe2k\x11\xf9T\x02\x02\xe5@\x15z\x0a4b\xbbs\ +\xe5LK\xdc9\xc3a2\xf3F\xbe\xfb\xde\x8f\x150\ +\x86E{\x5c\xb2\x80A6\x04\xeaE\xfeB\xa8`$\ +\x11b\xb3\x92l\xe3+\x0e\xd4\x7f\xe2X%\x93\x04\x92\ +F\x0b\x04\x7f5\xba\x01Z\xdf\xf1\x1fI\x96y\xb18\ +\x96X\xbc\xf2\xf3k\xf9S\xda\xb4!\xc1\xb4\x08\x1b\x13\ +1\x9d\x86\xad\x1d\xb6\xf9\xd5_\xf0\x8a4e\xf3\xad\x89\ +\xbb-\xc6\xfaoZ\xc4\x02\xc1\xb9\x8et\xf1\x9b5[\ +\xf0\x11\x95\xb2\xac*\xa8\x1bP@\xb1\xa6\x80\xe1n%\ +r\x07\x22i*\x8f\x1b\x05m\x81%\x1fqn\x86\x9d\ +\x1b\x07%C\xad\xf9\x81\xbdn2?\x12f_) \ +\x1e\xadC\x92[\x1b\xc8u\xdc^\xf7\xa6\x0a%Pk\ +X\x08XT\x91\xe2G\x1b\x01\xa8\xf2\xdb\xf4\xac/\xf1\ +\x06\x0da\xe2\x8f,`\xe5\xf0\x96\xc3\x90&\xbd\x134\ +HIy\x05\x97SmM\xab#\x12\xed\x89\x9d\x8b\xaf\ +\xf9\xc7\xd3\xd0r\x15\xcf\x9c\x99\x8dK\xdb\x1f\x83a\xdc\ +\xced\x91\x09\x8e=M\xfa\xf2\x15\xa4\xcd\x9c\x97\xd8\xdf\ +Z\xb4\xf8o\xb1\xc6\xb0\x0b\xdbrz\x9aD\x82\xcf\xee\ ++\x19\x9d\x1d\xd1\xc1\x8a\x01BM\xa8\x1b0\xde\x9a\xea\ +\x08\xb8\xb3)\xd8\xf2\xaaN5\xae\x8eW\x88\xdd\x0f\xb8\ +;\x1aub\xd3(\xbd\xec>\x94\x0fr\xc0[cr\ +h\xe3\x929c,\xba\x11\xea\x1d*\x06\xe4\xf5\xab\x01\ +L,h\x1cS\xa4\xda\x96\xda\x8a\x11F\x94\xc2\xccz\ +\x1au.ASA\xa8\xcd\x91\x1d\xf9\xaa\x93]n\xe6\ +\xa0\xd8\x5c\x1d\x98\x10k(\xb4\x92\x03\x021\x99\x14\x05\ +\x02\xd7\xd4P\xab\xc3-\xc4fY\x0fP\x9aU\x7f\xb1\ +D\x8f\x98\xb9q\xf8mjy&\xc0\x1d\x00\xd9F\xc2\ +\xb3\xb7\xe9\x10\x8a\xdf\x04\x97\xf6_\xe6\xa3(\xd6\xe0\xff\ +\x00\xd4\xc0~\x97\xa15\x16\xbd%3\x06(V)#\ +BE\x8d\x81\xfdj\xae\x12)`\xc7 e\x076\xc4\ +\x1d=\xea\xd2\xad\xcd\x80\xd4\xd1\xaf\x99\x83(\xb8\x00\xaa\ +w\xeah\xcd\xed\x00\xee@\xae\xb6\x94A,.\xcc\xa0\ +u,)\x89\x16r\x08\x05\x97\xae\x81O\xcc\xefV\x22\ +\xe3\x17Q\xa51\x14\x0dl>b\xa3\x10q\x10\xa0e\ +Hr\xed\xa1\xcdL\xb1\x08\xb9\xc8/o5\x86\xd5\xa0\ +\xe6b\xdb\x9d\xb6\xedBu\xa2\xae\xb7]j\x01\x02\xf4\ +k\x14\x9fk\xf13G\x95T\xaa\x0d\xcd\xbeU \x00\ +\xa5\x98\x85Q\xb95_\x11\x89\xcdt\x8b\xca\x9c\xcf3\ +U\xc8\x85\x8a\x91A\xca\xa7;\x0e\xdeQ\xfe\xfe~\xf5\ +W)&\xe7sF\x05\xa9\x98x\x9eV\xb2\x0d9\x9e\ +\x95\x9fZ\xf0\xb4BNU\x04\x93W\xf0\xb8\x05[4\ +\xda\xb7\xe0\x1f\xbd;\x0f\x1cp\x0b&\xad\xcd\xbf\x8af\ +j\xdc\x98\xcd\xa9\xb5\xed\xca\xdc\x85\x12\x8a\x1b\x82,j\ +V\xca\xb6\x17\xa5\x91\x8b^\xd7\xa6\xa1Q\xccw\xaa\xac\ +u\x00nh\xe3\x00noZ\x95\x1bh\xd4\xe5\x8d@\ +\xbe\xe7\xad\x14^Im{\xe9B\xac-cLR\x00\ +\xd3JP\xc3P\xcb#'\xde\x04\xcc\xa1l\xc0\x1dF\ +\xb5\x05\xa8Y\xc8F#s\xe5\x1e\xe7Ju\x1d\x04\xa9\ +*\x07P@&\xda\xd6~._\x12wn\xa6\xacJ\ +\xe2\x0c)Pv\x19W\xbfz\xce&\xe3S\xf2\xac\xf2\ +\xaaD;_@hKT3Z\x82#\x9etQ\xcd\ +\x85cZj1\xb2\xaa\xdf@\xa0~T\x8cc\x950\ +\xba\x9dC\xe5\xa2\x99\xc6cm\xafI\x91\x81@\xcc.\ +#p\xde\xc3\x9d6\x887o9\xe9z\x16z\x17\xbe\ +r\x07\xd6\x96Y\x7f\x18b>\x1475#\x01\x19K\ +1\xca\xa3sUq\x18\xdb\xdda\x05W\xaf3Mo\ +1\x0d \x04\x8d\x97\x92\xff\x00&\x97&\x1e)\x1f5\ +\xcau\x00iY\xbb\xf0\xacA\x1c\x22\x04&5r\xeb\ +\x98\x96\xde\x8e<>\x1a\xe7\xc8\xc2\xeao\xe6\xedB\x18\ +X(\x16\x0a,(\xe2\xdc\xff\x00\xa4\xfe\x95\xa4\xcc\x8b\ +\x0f\x85Q\xe8g\xff\x00Q\xb5\xa9\xb0\xc5\x04s,\xb1\ +\x87\x05v\x17\xb8\xa0Z%\x22\xf5\x89\x84\xe54W\xa5\ +\xa9\xa2\x06\xb5\x00\x85h`\x1dq\x18v\xc3Hu\xb7\ +\x94\xedY\xe0\x1264P\xb3#\x86\x06\xc4\x1a\xd4\xaa\ +\x8e\x09d\xc3cAcfC\x95\x815\xab\x81\x99\xb1\ +14\x99W-\x81\x16\xf8O0}\xa9\x18\xec2c\ +\xb0\xeb\x22\x0bKk\x829\xf5\x15\x9d\x85i0\xf2\x96\ +\x89\xca\xb6\xc7\xca5\xf7\xebN\xde5\x9f[\xeaH\xd8\ +\x91\xedQ\x1a\x83\x8b\x92O\xc22\xfb\x9bjj\x84<\ +NAa*D\xfa\xea@ \xd5\xdc\x06%19\xc0\ +9_1`\x87r9\xfb\xd6\xe5\x94a\xf4\x9ct\xb2\ + T_*\xb6\xed\xd7\xb5:\xab\xf1\x17UTV\xb1\ +\x0a\x0b\x9d\x7f*o\x82;\x8aL\x90a|\x08\xf7\x90\ +\x0b\x91\xd2\x93\xc2!\xb1\xfbK\xec\xa7\xc8-\xb9\xebT\ +s4\x85\x09\xdd\xc5\xfed\xff\x00z\xda\x08\x22\x81c\ +\x03\xd1a\xf3\xac\xce\xee\x9f\x112x\xb1\x956\xd7k\ +\xf25\x97*\x14%O\xa8\x1dkX\x9a\xa3\xc5\x96\xcc\ +\xae>!\xad\x5c\xe7\xd5\x14_jQ\xfd\xe9\x8fK\xae\ +m@\xe1\xdc\xa6-no\xae\xa3\xad_}\x18\xdb\xad\ +gF\xb9\xa5\x04\xef\x9a\xb4d\xd6C\xefT\xf1R\xdf\ +QK\x90\xe9jc\x02t\x1a\xd2dh\xc1\xb7\x88>\ +@\x90>u\x00\xd0\xbe\xd4K\x94\x93\x96Ekn\x06\ +\xe2\x84\x82\xc4\xdb\xff\x00\x154Y\xde\x85\xaa%\x95\x82\ +\xe6\x8a\x02\xe87s\xcf\xda\xa6\xe1\x91\x5c\x02\x03\x0b\xd8\ +\xd6QN5\xa8jc-\xecoP\x10f\x1c\xfa\xd1\ +\x87@\x14\x9a,\xb6\xa6e\xa9\xcbV-((*\xca\ +K.ak\x8d\xc5\x14q\xc6\xb1\xf8e\xe5u\xe8N\ +[})\x81h\x82\xd3\x80\x0a\xa9\x18\xb4Q*\x9eF\ +\xd75,^\xd7snW4\xc8\x94\x5c\xb1\x04\xf6\x1c\ +\xeap\xe2b\xec\xf3F\xcavO)!~\x94\xe2\x05\ +\xac\xc1\x9dH\xb7\xa1[\xf5?\xc5G:k[5\x83\ +\x02w\xb6\xb4\x06\x94\x1dzW;\xc7\x12\xe7\x96\xe3\xf0\ +\x8e\xb5.\xc9\x14^#\xeb\xf8GST&\x91\xe5\x90\ +\xbb\x1b\x9f\xd2\xb3n$\xe2q\x0d3o\xec\xa3aK\ +B\xc3s\xf2\xa8\xb6\xba\x1av\x16#+\x1b\x90\xaa7\ +5\x8e\xebF\xe10\xe6_;\x9c\xa89\xf5\xf6\xab\xc0\ +\x85\x5c\x882\xa8\xe5J\x04\x9bk`\x05\x80\xa2&\xba\ +H\xc8\xf3\x1a\xec\xc6\x97\x9a\xba\xe6\x95\x86\x86\xa9\xce\x00\ +\xb94\x9c\xe3\xdf\xb0\xa8\x05\xcb^\xd6\xa8b\xc4m\xb9\ +\xe6i\x81\xc5V\xbd\x10n\xf5,Y\x06\x8c=VW\ +\xa6#\x166\x02\xe6\x9d\x06\xe6\xbd\x0e\x22A\x14Q\xb9\ +\x22\xe6Aa}M&lT\x10\x86\xbbf+\xea\xb6\ +\xcbT\xa7\x9d\xe7\x91f\x94\xda\xc2\xf1\xa7\xe1\xee{\xd1\ +y\x19\x0e\xc5N\xd3I\xad\x85\xb4\x03\xa0\xa4\xbb\xd2\xf3\ +\x8044\xb7\x92\xb3y5\x83v\xbd\x1e\x00\xdf\x12\x0f\ +\xe1\x05\xaa\xa3\xc9\xad\x85\xc9\xab\x1c:\xe29\x1e\xfb\xd9\ +E\x12\xf6\xbe-\x96\xd2\xe7A\xd4\xd0\x19T^\xec\x08\ +\x22\xc6\xd4\xb6`5\xa0-}kZ\x12K\x15\xca]\ +\xddG':\x7fz\x92\xeeE\x89\xb0\xe8(\x0bP\x93\ +Y\xd3\x86s\x05M\xa8\x81k^\xff\x00QH\xbb\x5c\ +[\xe7FI#O\x9dZ\xb0\xe5bE\xf2\xe9O\x84\ +\xf9\x88\xec\x7fJ\xac\x5c\x11\xe5;\xd3bb\xa6\xd6\xb9\ +\xca\x7fJ\xd4\xa1H\x1a\x90u\xa5g\xca.A>\xd4\ +h\xc1\xb5\x17\xac4|f\x8cR\xe3\xa6-i\x94\x8b\ +t\xbfz$7r7\xb5V\x92kh\x01\x04\xefz\ +\x98K\x13\xa5\xea\xd3\x8d\x9e\x17)\xb1\x88\x9e\xeb\xefC\ +\xc4p\x8c\xef\xe3\xc0\xb7\xbf\xad@\xd8\xf5\xaaQKk\ +\x16$0=+W\x0f\x88Yb\xf1C\x00\xc3\xd4\x01\ +\xfc\xeb\xa4\xb2\xcce\x93\xa86:\x1a8]\xd2Ux\ +\xdb+\xae\xa1\xbb\xd6\xb4\xc9\x16%-*\xef\xa8`,\ +Ee\xe30\xef\x87\x97+j\x0e\xaa\xc3cE\x98\xa5\ +l\xc5\x8c\x8aX\x83\x94q&\xcc\x80s\xa8\xc4D\xad\ +\x85\x99\xe6[\xb9\x5c\xc7]\xba\x0a\xcb\xe1\xb8\xaf\xb3L\ +I\x17V\x16`7\xab\xd8\xbcv\x1d\xb0\xae\x91\xbb3\ +8\xb5\x8a\xda\xd5\xb9\xcbgc\x19\xc8\xe4H\xad\xa6\x84\ +V\xec\xad\xf7\x82\xfc\xc6j\xc0\x17,\x15E\xc9\xda\xb7\ +J\x02@:\x9c\xa2\xe4\xfbQ\xc1rC0.\x14\x1d\ +F\xa6\xaa\xf1fE\x85\x03\xba\xa9\xb9\xde\x89\x8b\x16&\ ++\xaa\xde\xc2C\xcf\xda\xa3\x1e\x8a0\xcc\xc85\x0d\xb9\ +\xd4\x9b\xf5\xa6\xdd\x81\x9d-\x94\xf9\x9dGMnO\xb5\ +-\x8a\x9f*,\x8c\xd6\xbf\xa6\xc0|\xcd\x1el\xb7*\ +\x02\xf5\xb0\xb5-\xdd\x8a\x9b\xb1\xd7\xbdslXP\xfe\ +8&8\xd9\x13R\x15\xaej\xdb2\x9b\x95\x0e\xc7\xba\ +\xe5\xfc\xcd'\x00\xb6\x89\x9f\xf1\x1b\x0f\x955\xc3\x91\xa2\ +\xb1\xaa\x0aS\x9b\xe8\xd6a\xf8~\x1f\xef@\xee\xd6\xd1\ +\x88\xf6\xa9\x9d\xa2\x89o4\xca\xbd\x86\xa6\x93\x16'\x0b\ +4\xa2$f\x0cv,45j\x826v\xb9\x16a\ +\xb3\x8d\xc5W\xc4<\xc9*\xa6\x22K\xc4\xc7R9\x8a\ +\xb6\x14\xe6 \xe9a\xafj\xad(I\xe5\x12\xbd\xcck\ +\xa4k\xf8\xbb\xd1H\x89\x12!\x0bp\x84X\xb5\xad\xa7\ +E\x1f\xbds\x9b\x9b\xec\x06\xc3\xa0\xaef\xb9\xeb\xd0t\ +\xae\xb5\xf7\xa9\x04\x02{\x0a5Kl*TQ\x9d*\ +\xc4\x10\x95\xd9E\x10\xa9\x03\xa5(9jr\xf7\xa3`\ +\x91\xaei\xa4X\xc7}\xea\xac\xfcJ$\x16\x82<\xc7\ +\xf1>\xdfJ\x91\xc1\x09\x16[\x9e\x82\xa5\xad\x10\x1e4\ +\x89\x1fB\xc6\xb3\xe5\xe28\xa7[fT\xff\x00B\xda\ +\xa8\xcd!$\xdc\x96'rk\x17\x9c\x87\x1bo\x8a\xc2\ +\xb9\x03\xc6g*\xe2\xc7.\xda\xf2\xa2L\x92\xdd\xa2\x91\ +Xs\xedY1\x00\x11F\x9f\x11\x07\xbd\x80\x1f\xa9\xaa\ +\xd2\xe3\x0e\x1aL\x98\x7f3\x83\xe6o\xda\x8f\xdez\xb1\ +\xa3\x8f\x90K?\x94\xddTXUrG3\xf2\x14B\ +H\xf1\x10\x09\xe1\x16\xbe\x8e\xbf\x84\xd0_\xf2\xa3\xd2\xe2\ +\xdd\xad\xf3\xad(PG\x02'\xc5k\x9a\xcf\xc3)\x93\ +\x10\x8b\xd5\xabI\xc8.H\xebZ\xe3\xd0\xa8.A\xf4\ +\xde\x84\xca/\xb5\xaav\xa5L\x09~\x80\xd3\xa0\xdc\xeb\ +\xd6\xa6\xf7\xdf\xe9HE\xb3\x5c\x9d\xa8\xcb\x81\xdc\xf4\x15\ +j0\x9e\xa6\xbb8\xef\xf4\xa5\xa9 k\xa9\xa3\x8c3\ +\x9b(\xf7\xedN\xa1\x06\x1d\x0f\xd2\x89nN\x83\xf3\xa5\ +<\xd8tb\xa2h\xe4\x90|\x0aj\x9e#\x19+\xdd\ +A\xc8\xbf\x84Q\xfaK\xf2\xcc\x90\xfa\x9dX\xfe\x10u\ +\xaa\xf3\xe3eq\x95>\xedz/\xf3Ts\x1a\x90\xd5\ +\x9bm8\xb05UF\x17\x04\x97=\xc0\xe5\xf55\xd9\ +\xd9\x98\x93IlB\xa6<\xc5!\xb2\xb2\x00\x1a\xf7\xb5\ +\x1b\x5c>]I\xed\xce\x8d)s@Ozb\xe1\xe7\ +qp\x84\x03\xcd\xb4\x14G\x0a\x8b\xebr\xe4\xf2]\x05\ +YR\xbc(\xd3Jr\xe8\x0f3\xc8U\xdb\x85@\x89\ +\xb2\x8a\x92HP\xa0\x05\x1d\x05,\x9a|\x0e&\xb8\x9a\ +\x12{\x9fj\x16c}\xf4\xa8\xa5\x9a\xa05\x05H\x1a\ +\xd1\xa8\xc5\xa6!\x03RiK\xbd\x1a\xd2\x8cPsf\ +[\x0e\x97\xa6@\xcc$\xcc\xc2\x96\xa7J4\xadFU\ +q\xe8\xd0\xb9\x16\xf2\xb6\xc7\xb5\x0e\x181\xd4[]5\ +\xad\x06A4F3\xbd\xbc\xa6\xa8\x94x\xd8\xad\xaco\ +\xb1\xe5E\x98bRV\x0dk\x0d\xfaSs\xbd\xafk\ +RaB\xad\x99\x88\xf6\xa3\xbd\xee:\xd1\x0atac\ +\xa8\xa7B\x86\xdeE6\xa5\xa2\xd8\xd8\x00[s}\x97\ +\xdf\xf8\xa2\x965\x93C4\x99\xb96\xc0|\xa9\x82\x9a\ +\x8a\x19\x8em\x02\xe9N\x85\xbc9\x03(\xb6\xba\xf7\xa4\ +\xa3\x1b(`v\xaa\xf2qY\ +\xb4\xcb\x14@\xff\x00\xa6\xf5d\xe00\xe93\x09]\x9c\ +\x8b\xf9F\x80Q\xa2A\x1b}\xd4\x08\xa7\xa9\x175\xc3\ +97\xd1\x7fm\xc5\xa4h\x04\xa5[(-n\xa6\x91\ +6'\x11&\x8f3\x90M\xce\xb5\xbc\xd6Q\x91Q\x00\ +\xb0\xd3(\xa4\xcb\x0e\x1d\xc1\xcd\x87\x8c\x9e\xa0X\xd6\xaf\ +\x1b\xfdZ\xf3n\xecX\xe9\xa9\xe7Qw\x8c\x82\xa7[\ +\xd6\xe8\xc3\xe1QH\x18T\xeeI\xbdV\xc5p\xe8\xe5\ +\xf3\xe1\xceV\xff\x00\xdb<\xfd\xab\x17\x85:\x9c>9\ +q\x11\xa4x\x80\x10\x1dY\xaf\xea\x02\xdb\xfdEX\x90\ +f[\xa1B\x08\xf2\xd9\x86\xd5\x910)\x9e3\xff\x00\ +-U-\xdc\x9b\x9aG\x85&\x5c\xd9\x18\x0e\xb6\xab\xf5\ +b\xc6\xc1x!\x07\xc6\x9d\x10\xf4\x1a\x9aK\xf1(\x14\ +\xda(\x19\xf5\xdd\xcd\xbfJ\xcc\xb5\x12\xa8\xe9G\xee\xfc\ +X\xd2N'\x11\xd2L>^\x99[\xf9\xa7\xae#\x06\ +\xc37\xda2\xf6#Z\xce\x87\x05<\xab\x9a8\x0b\x03\ +\xce\xd4\xd4\xe1x\x92\xd6x\x84c\xabZ\xb5/%\xd2\ +\xebc0j\x09\x12\xbb\x9e\x81m\xf9\xd2\xbe\xdd\x88\x98\ +\xe4\xc2A\x97M\xeds\xf5\xae\xc2\xf0\xec4c4\x8e\ +\xd27A\xa2\x8a\xb62\x85\xca\x8a\x15z\x0a\xd7c\xa5\ +\x13\x82\x9aC\x9f\x118V;\x86\xb94c\x87A\x94\ +\x033\x5cnr\xe8}\xaa\xdd\x8dq\x01W3\xb0Q\ +\xd4\xd5\x91j\xaf\xfe\x99\x87,-<\x84~\x1c\xbb\xfd\ +(\xfc>\x1d\x85\xda\x10\xcd\xd0\x9c\xc7\xfbR\xf1X\x92\ +\xdeX\xae\xab\xd7\x99\xaa\xc0X\x97c\xa2\xeaMf\xd9\ +<8l\xd34\xae[.Q\x1a\x8b[\x99'\xfbR\ +%\xc3\xe1\xf1k\x91\xd3$\x9f\x0b\x8d\x01\xf7\x15\xcc\xc5\ +W3z\xa49\x98t\x1c\x85u\xae4\xac\xd2\xcd\xc1\ +\xcb'\x0f\xc7\x94\x9c0S\xa3\xafQZ3 R\x0a\ +\x9c\xca\xc2\xe0\xf5\x15_\x8f\xa6|<\x13[\xcd\xaa\x13\ +m\xfaU\x8e\x03\x1c\xb3\xe1L3\x02\xa15Fm\xed\ +\xccQ=\xc5\xff\x00N\xe1\x91\xfd\xe9\x97\x92\x0f\xce\xad\ +\x11R\x02\xaa\x04Ae\x1f\x9dA\xda\xbafFPE\ +\x0b\x0b\xd4\x9a\x83R\x09],I\xb5Gm\xbeTD\ +\x8a\x8b\x83Rq\xd0\x0d\x0b\x13\xb2\x8euW\x17\x8dw\ +\x06=\x90\x1fB\xe8>z\xdc\xd3\xf1D\xae\x14\xb86\ +(A\x07oz\xcc{\xe67\xde\xf5\x9eW\x0c\x11H\ +\xe5\xb6H\xd29\x14\xddJ\x8b\x03\xd8\xd3$\x1e!2\ +*\x90o\xe7^ji\x17\x14x\x9c@\xc3\xe1Rk\ +\xa8\x99\x89\x11\xb1\x1b\x0e\xf5\x82\x91{^\xc6\xddj\xcc\ +\x18Wp\x19\xceE<\xce\xe6\xa8`1\xbcRfv\ +\x9b\x13\x85\xc8\x8b\xba\x1e|\xafW\xb0\xdcNS\x88H\ +10\xc4\xcb&\x89*\x8b\x0b\xf7\xa7\x8d\x95v\xb4p\ +\xf86\xb6x30\x16\xce\xc6\xe7\xe9L\x8d\xb2\x05\x88\ +\x15\x03d`\xb6\xbfc\xde\x80\x99\xd4ZH#$n\ +\x11\xac\xdfJ\x15\x9b\x0f\x22\xb24\x99:\xac\x9a\x11]\ +:d\xc6$\x9dw\xef@\xc6\xe7\xd8\xebJ\x93\x17\x1a\ +I\x91\x88\x91F\xce\xa7_\x9d\x13\x9d\x99Neaq\ +\xde\x8d8\x96j\x02\xd5\x04\xdf\x9d\xbbP\xb9\xb7;P\ +\x5c\xcdPj./\xa0\xbf\xb5F`v\xbe\xb4$\xeb\ +z\x82X[KQ\xc8\x22\x8d~\xf1\x82\x9e\x97\xb9\xa8\ +\xc3xS\x12\x15\xcenJt\xbdHq[.\x9b\xf3\ +\xa3\x03Z\x0f\x0b]\xed\xefF\xa2\xca\x05\xefJ\x1a\xd3\ +\x12\x821L\x02\xd5\xa8\xc8\xd2\x98\xf1\xac\xcb\x95\xf4<\ +\x9b\xa5)i\xe9\xbdi3\xe6\x8d\xe2r\x8e5\x1f\x9d\ +\x08\xad9#Y\x93#\xef\xf0\xb7J\xce\x91\x19$(\ +\xc0\x82\x0db\xcc2\xe9\xae\xb9O\x87\xbd\x8e\xa4\x9d\xcf\ +3\x5c\x05\x1c\xdf\xe77\xb9\xb5\x0d\xe9\x02Sp\x15\xaf\ +a\xb7Q\xdcS\x16\xecr\x9fX\x17\xb0\xd9\x87Q\xfc\ +R\x81\xa9\x92\xed\x87p/u\x19\x92\xdb\x83LG)\ +7\x16\xde\xb5\x0c\xf1\x05R\xee\x01 h5\xaf?\x06\ ++\x171\x11\xa1\x05\x8f\xc5m~\xb5\xbd\x87\x89a\x85\ +P\x85f\xb0\xccmz\xd7\x1b\xa2\x9aE\x8e\x86\xa4\x5c\ +\xd2\xd4\xaa}\xd9\xd1o\xe4'oj`\x16\xde\xb6\x04\ +*1\x04XD\x0d\x8b\xeez\x0a\x0cT\xf1\xe1\x94g\ +\xbb;\x0b\xac`jG^\xd5\x9d6&iY\x89\x01\ +.,\x15M\xc9\xf7\xaa\xf2\x90Hw\x10\x99\xb1X\x85\ +\x82\x1b\x95\x1a\x0e\xe6\x9b\x0cq\xe1\x90\xc6\x08\xb9\x1ef\ +\xebK\xc1\xc0b\x87;+\x09\x1fn\xc2\x98\xca\xbb\x9d\ +}\xe8\xff\x00\xa5K\x8a\x801\x02@,$\x17\xf9\xf3\ +\xaa\x97\xd6\xb41\xe9\x9f\x0d\xa0\xd63\x7f\x95g\x1d\xeb\ +\x1c\xbd1\xa6[2+\x8f\x89E,\x92\xcam\xa5\xff\ +\x00:^\x0d\xf3A\x97\x9a~\x94C\xa06\xa8\x16I\ +6\xb8\xd3\xad\x14zJ\xa7\xa1\xa2+\xe4\xca5\xcd\xce\ +\xb8Gv\x00Tu\x8f\xc4n\xb8\xa6p\x80\x17!\x9b\ +\xb9\x06\xa8\xe2#\x9de\xf1\xf0\xec\xc7[\x94\xbd\xed\xf2\ +\xadN-\x22\xc9\x8a|\xa3\xc9\x1a\xe4\xbd\xb7nuD\ +\xe6\x04\x10lo\xbdr\xe5;n\x22qcr\x02\x92\ +\xb7 r4\xce\x16\x10\xe3a2\x80\xc9\x9bQKu\ +\xcf\xb9\xf9\xd0FZ9\x01S\xa84yS\xd1JI\ +\x94\x8e\x9a\x1d-QcA\x81\xc4..0\x09\x02e\ +\x1a\x8bz\xbb\xd3\xc2\x9b_a\xde\xbb0U\xad\xca\x89\ +A'J\x87\x96\x04\xdeL\xc7\xa2\x8b\xd5y\xb1.\xc3\ +,c \xeb\xce\x8d]\xac\xcb$q\x03\x9d\x81o\xc2\ +7\xaa8\xdcC4-)L\xd9H\x01o\xa0\x146\ +$\xde\x89UJ\x95\x7fK\x0b\x1a-\xb4\xe4\x84G9\ +\x91n0\x8fnEM\xe9\x18\x99d\x98\x18\xa3\x85\x94\ +s\x16\xb9\xad\x08\xd4\xa4i\x116*,\xa4\x1d\x1b\xfb\ +\xd4\xb1k\xdc\x92\x1bk\xf3\xac\xe6\xc3\xaa\xb6&$.\ +,\xc5|\xc2\xd5\xd1\xa3\x19\x02\xa0'1\xb5\xa9\xae\x09\ +7&\x9f\x80\x0a\xaad\xb7\x9a\xf6\x14\xc8\x8a\xe21$\ +\x185\xcd\xe6\x7f\x13K\x8d/j\xa9\x81\x91\xd7\x88F\ +\xd9\x89%\xad\xa9\xab\xdcn\xc7\x07\x106\xf5\x1a\xad\xc1\ +\xe2\x0f\x8a\xf1\x18yb\x19\xbe|\xa8\xbf\xec\xa7\x8b\xd2\ +\x8c\xb20\x1b\x03Bh\x98\xdd\x89<\xe8k\xa0A\xa1\ +\x22\x8c\xd4\x11Y@\xcb\xda\xba\xdd\xa8\xab\x8e\xd5$\x04\ +\x8eU\xf0\xa4$\x03\xccr\xd2\xb3q\x11\x15\x95\xa3`\ +\x04\xa9\xb8\xe4\xc3\xa8\xad*\xab\xc4\xcf\xdf\xea\xc4\x1d\x19\ +\x1b\xa7oj\xcf)\xd1\x8c\xf2)|b1/\x08\x12\ +X\xe6\x81\xec5\xe4j\xd4\xaa\xa4\x16]4\xb9C\xb8\ +\xfeGqJ\xc5\xdb\xff\x00G\xc4\xdc\x1b\x1c\xb6\xb8\xef\ +\x5c\xec\xe8\xb3\xb8;^9\xe3\xfe\x90\xdfJ\xb2\x8c\xa5\ +2H\x09[\xdcX\xd8\x83\xd4V~\x12S\x06!d\ +\x1b\x0d\xfb\x8a\xd0\x9d\x02\xbf\x94\xf9H\xba\x9e\xd5\x89z\ +j\xb4\xe3\xc7Lp\xba\xb2\xbbGk1\x1e\xa5\xeb\xd8\ +\xd5Y\x1c\xc91w\xe6nmN\xe0 :N\x8e3\ +(PmV\xc48a\xa8\x83^\xecH\xae\xb3l\xd6\ +J\x9a,3\xe1\xcb@\x09`4\x02\xe4\xfc\xc5'\x0d\ +\x8ah\x87\x87\x22f^\x9b\x11Ws\x90\x00_(\x1b\ +\x05\xd0\x0a\x09\x95f\x89\xfcE\x04\xaa\x92\x18\x0di\xb3\ +\xf8\x80\xb8\x8c3\x9dY\x90\xf5#\xf8\xae\x027\x92\xd1\ +\xb7\x88m}6\x1e\xe4\xd5H\xb0\xd3I\x1et\x8c\x95\ +\xebW0Q48v\x0e\xb6w#\x9e\xb6\xa2[}\ +Tr\x00\xabr\x83/6F\xbd\xbd\xc5\xab\x92\x10@\ +(3\x03\xb1\x06\xf7\xa3\x8c\x957\x06\xb9\xa2\x85\xbe\x12\ +\x87\xf1!\xb5o\x02\xb62\x0f\x1b\x1a\xa9\x18\xf3\x103\ +\xdbaV\x06\x1a\x0b\x04U\x0aW\xd3';\xd3\x22H\ +\xe2\x8f$@\xd8\xfa\x98\xee\xd4V\xaaE\xa8aq\x98\ +\x80\x1a\xf9\x5c\x03\xb1\xa5\xa6l\xf6\xb0\xbfz\xb1\xb8\xcc\ +nT\x8b5\xb5\xb5\xb6?K\x83\x5c\x22\xb9\x00&k\ +\xecF\xb7\xfaS\x80*\xa7\xf1\x0f\xa5\x15\xb5\xb5\x19\x8e\ +E[\xb2\xb0\x1f\xd4\xbf\xbdB\x03{\x90\x05\xb6\xad'\ + \xa6\xa0\xa8QF*\x16\x8dWJO\x10\x8e\xea\xb3\ +\x00\x09\x0aF\xbc\xcf/\xd6\x9e\x9b\x0a\xecU\x86\x02R\ +v\x16\xf9kP\x8c\xccD\x8d\x98\xe4[\xd8t\xd8T\ +\x07\xba\x86\x1c\xe8\x1c\xb2\x5c\xdbQ\xb85\x03E\x03\xe7\ +X\xd6\xf0\xd5j4b\x0d\xc1\xd6\x90\x0d\x1a\xb6\xb5j\ +\xc5\xcc\x10\xf1'U\xb0\x00\x9b\xb5\x85i\x06\xb9\xbdS\ +\xc0\xc7\xe1E\x99\xbdn>\x82\xac)\xae\x93\xa8\xcd=\ +N\x96:\x83\xc8\xd2\xf1R\xb6\x16\x0c\xf1\xc8\x00&\xca\ +\xac/cR\xa6\xa9\xf12\xd3q\x05\x81nB\xd9@\ +\xef\xce\xb5oA\xd8<<\x98\x962;\xb6R|\xce\ +\xdb\xb1\xab\xf0\xc7\x0c+h\xd0\x7f\xa8\xeek\x88T\x02\ +4\x16U\xd0Z\xa2\xe6\xa91\x22F\xcb\xa1\xbd\xb9\x1a\ +\x02t\xa9\x90\xe9@\x08\xd8\xde\xfbUR\x01\xf3j.\ +\x0e\xe2\xb3q\x91\x18\xa6*v\xdc\x1e\xa2\xb4\x89\xd7c\ +I\xc5\xc4&\x87/\xc6\xba\xaf~\xd5\x9b4\xc6|2\ +\x98\xa5\x0e5\x1b\x11\xd6\xae\xddJ\x86Su;Vq\ +\xd0\xdb\xa5\x1e\x12s\x11\xca\xd7(w\x1d+\x12\x9b\x17\ +\xc6\xa2\xa5\xe5\xf0 y\x88\xcd\x94i\xf3\xa1[\x10\x1d\ +M\xd4\xd2\xe7\x99\xfcv\xc2\xb2\xab+\xecm\xafj\xd0\ +\x8c\xb9A\x22\xday\x18\x83\xae\xf7\xd4\x1f\xce\x94\xa3;\ +e\x22\xc0\x9d{U\x8cL\x18\x88\x03\x09\xf5wl\xd7\ +\x1bm\xa5 \xdcj-\x5c\xabmu\xe1\xd8E\xb4m\ +\x035\xc7\xac6\xf5\x9d\xc5\xf0p\xe0\x98frCj\ +\xa2\xda\xfc\xe8\xb0\xf8\x9cBYD\xec\x14k`k7\ +\x13<\xb3\xc9\x9aY\x19\xcd\xf9\xd3\xcb\x94\xcf\x04\x94\xc8\ +1\xd2\xc2\xe1\xa1\x0a\xb6\xfe\x9b\x9a\xd4y\x8e\x22$\x9e\ +\xe4\x86\x1a\x8b\xecy\xd6\x22)v\x0a\xa2\xe4\xec\x05m\ +a\x22hp)\x13\xfa\xaeI\x1d/\xca\x8e\x16\xd3b\ +\x10\x86\x17\x156\x14J\x8a\xa6\xe0W\x11[d&\xf5\ +\xd55\xd6\xa99N\x99H\x0c\xa7\x91\x1b\xd1|6\xb9\ +`6?\x10\xf7\xeb\xefCj\xed\x8dH.\xbaf\x04\ +\x10v \xdc\x1a\xb1\x82\x17\xc3\x9e\xaa\xd4\xab\x82nI\ +\x04\xeeG?q\xb1\xa6\xe0\x0d\xa71\xb6PYt\xe8\ +\xdd\xc5S\xd5|'\x8e\x1f\xf8XV\xda\x96&\xbb\x85\ +G\x93\x04\xd2_Y\x1a\xdfJW\x18\x94M\x89X\xa3\ + \xaa\x0b\x0fz\xbc#\xf0\xa1HA\x07\x22\xd8\xfb\xd5\ +?\xdbW\xc2\xce\xf5\x07j\x93s}(N\xf4\xd4\xeb\ +\x9a\xed\xeb\xaa9P\x9cM\x095&\x84\xd4\x90[\xa5\ +V\xe2\xba\xf8m\xd5H\xab\x06\x91\xc5\x01\xf0\x22\x16:\ +\xdc\xd6o\x85U\x1bA\x1bl\x0d\xc1\xe6;\x8a,R\ +\x99p\x18\x88U~\xf1mp6$k\xa7\xb8\xa4\xb0\ +$\xe5\xda\xd4\xd4kb\x1a;\xe5\x91\x95]\x0f\xca\xd6\ +\xacB\xc0e`\xcdqmv;\xd6\x86\x05\xbc\x5c\x0d\ +\x89\xf3Bm\xff\x00I\xab\xf3G\x06 \x9f\xb4\xc1g\ +\xe6\xe9\xa1\xfaPa\xb8w\x85$\x86\x09D\xa8\xe8F\ +]\x9a\xfc\xb4\xac\xce\x16S\xa7p\x01\xac\xe7\x96O\xde\ +\xae\x1d\xa9\x5c&\x16\x8b\x0b#:\x952\x10\xa0\x11m\ +\xa9\xc4v\xae\xb3\xc0\x00\x096\x02\xf48\xb7\x10\xe1\xdf\ +1\xb3\xb8\xb0\x1c\xed]\x888\x87\xc5\x88\x22\x93\x22\xb2\ +\x06\xf6\x16\xa1\x9f\x06\x83\x0e\xefy\x0b(\xbev\xd8\xf6\ +\xab\xff\x00\x01\x18,HH\xc4r)(5\x04n*\ +\xca\xcb\x86\x94\x12\x98\x80\x00?\x10\xb5\xeb9\x04\x92\x9f\ +\x06%,X\xedj\xb6\x9c9\x96\xe0\xcc\x99\xbf\x09\x16\ +\xfc\xeb2\xdc+H\x84\x0c\xc0\x82\xa7@A\xbd\xe8\xd4\ +iK\xc2D\xd0!\x8d\xca\x92\xc77\x94\xdf\x91\xa6\xd6\ +\xe0\xa9\x14LR8\xcc\xb2\xb6T\x1c\xedr}\xaa\x10\ +(S$\x87*/\xa8\xfe\xd5\x99\x8b\x9eL^#A\ +\xa06E\x1c\x85V\xe0[n&C\xe5\xc2\xc0/\xc9\ +\x9b\xccO\xca\x8aW\xc7\xaa\x91$\xb9!\x91o\x90\xb8\ +VS\xda\x9f\x84\xc3G\x83P\x02\x86\x9bvr==\ +\x85v5L\xd8b\xbe\xa6S\x98\x5c\xdf\xde\x9c\xb9\xda\ +&\x0c7\x14\x8c\xf8\x89\x88\x1a\x8fO\x8bv\xb7\xb5\x1a\ +c\xe6\x89\xc4x\xc8s\x10lX\xe8\xc3\xf9\xa6\xc3\x89\ +VDV\x8eB\xcb`\xc5u\xfc\xaa\xc3,s\xc6R\ +KJ\x9fFZd\xfeU\xbf\xd4\xc2c\x9dsA \ +q\xd0\xe8G\xca\xa4\x82\xa6\xc4[\xde\xa9bxl\x89\ +\xf7\x98f.\xa0{0\xae\x83\x88K\x1d\x93\x10\x9e\x22\ +\x8e\xba0\xf9\xd5\xbf\xd1\x9f\xc5\xe5&\x97\xc4\xcf\xfc\x1a\ +\xc2\x0f\x9av \xff\x00\xa7\x99\xa6F\xd1\xcd\x1ex[\ +0\x03Q\xcdj\xb7\x13\x90}\xa5#;\x04(\x18\xf2\ +k\xde\xd4\xdf\x14\xf5Q\x81\x92\x14c`Yu\xb7\x22\ +4\xa5\xc4\xc4\xa5\xb2\x93\x97M(\xf1\x09\x96Ic$\ +\x8b6p\x0e\xe0\x1f\xefS\x83\x86Y\x17\xd2\x04w\xf5\ +\x1a\xe7\xf5\xa4\x00O#\xfa\xd5\xdc\x16\x16\xd6\x92Qq\ +\xb8^\xbe\xf4\xdc,pD@R\xa2S{\x16:\xff\ +\x00jd\x88T\x16\x98e\x03v#Z\xdc\xe2-3\ +RF\xd7;\x0a\xec\xc0\x10\x0df\xcf6i\xfcA|\ +\xabl\xa7\xb7z\xd1#\xc4T\x90i\x9dsS(\xc3\ +\x90\xf45NV\xf0\xf8\xe1<\x84\xb5f%\xd4)'\ +S\xb5fb\x8en.\xcd`O\x8a6\xe7\xad6\xf4\ +\xa3fM$`9\x1a\x8b\xe9C5\x8c\xcf\xa0\xdc\xf2\ +\xa8\x0cG\x7f\x9dkB\x0b\x5c\x91D\xbc\xe8R\xc4t\ +#\xadp7\xedm\xe8H~}(/\xa5\xead6\ +]MF\xf4T\xa9\xc4`\xce\xa6d\x1a\x8fX\x1f\xad\ +Q\xb0\xadp\x1b=\xd4\x12{U|V\x0f1\xbck\ +\x91\xb9\xa9\xe7\xedY\xb3\xebR\xaaa\xe5xI\xcan\ +\x0e\xe0\xecj\xdc\x13G&$\x16!\x18\xc7\xe5\xbe\xdb\ +\xf5\xaaEH6;\xd4\xb0o#\x80NK\x86\x03{\ +\x1a%\xa6\xb4X9\x1e\x19L\xeaw\x04\x5cR\xfe\xc3\ +\x85c\x7f\xb2\xb0<\xf25\x87\xd2\xa8\xea#\x0f\x1c\xbe\ +^\xa0\xfe\xa2\xa0O#\xe8]\xaf\xefW\xea}\x18n\ +\x22\x0c4.Us=\xc5\x8f\x9bjTq\xe1\xd1\xc1\ +\x8f\x0a\xa0\xff\x00V\xb5\xc0Q\xa8\xd2\x82,\xc4\x9d\x95\ +@\xfc T\x85[\xfaE\x08\xa9\xbd V\xf7\xfa\xd4\ +\x1fz\x8b\xd7jjN;\xee>\x95\xd6=EM\xab\ +\xaaH\x1b\xdbc\x5ct\xa9\xde\xba\xc7\xb1\xa9 \x94H\ +\x8c\xb2\xb6T\x1c\xfa\xd5)\xf8\x89\x91\xbc(\x07\x86>\ +\x16'[\xf7\xae\xe3\xce\xde,q\x0d\x15P\x1bw4\ +\xee\x19\x86\x8e,2\xe2$PY\x86`O\xc0\xbd}\ +\xeb;m\xc8s\xad;\x04\xb0\x9cB\xe2f_\x0f8\ +\xcc\xaa\xdb^\xad\xcb|\xc6\xfb\xd2\xf0\x91\xc6\xf0\x09d\ +\x19\x9f19I\xd1o\xa8\xa6J\xda\x92kp}/\ +\xe1\x14$T\xee/\xb0\xaeS}A v\xa5\x04\x8e\ +\xd4\x07\xc4\xbe\xc2\xdd\xa8\xc99\xf2\xefP\xc6\xc4\x0e\xb4\ + \x9a\x13Fh\x1b@OJ\x10N\xa6\xf5S\x8a\x13\ +&$\x22| \x00\x073W\xa1\x1e#j<\xab\xa9\ +\x17\xde\xa8F\xc1\xb1\x99\xdb{\x97\xfakY\xe4\xd4*\ +\x00|gH\x99W\xc2\xb6yH\xbe\xbd\x05\x0e#\x06\ +&\x97\xc4\x8f\x16\xc5\xfa\xca,O\xcciO+\xe1@\ +\xa9k4\x87\xc4\x93\xdc\xf2\xa8U\xbe\xf5\x9c\xeb\xb4\x98\ +\xe3\x9f\xc1?hB\x19=.5\x0c*\xc7\x0bO\xf3\ +$?\x08\xb0=\xea\xae\xe0\xe5\x1bu5\xa3\xc3\x93\xfe\ +\x04X\x80Y\x89`\xcc\x05\xad\xa5j\x0a\x8cn! \ +\x11\x19\x95\x9f\xc4\x04\xe6\xcd\xa8\xd6\xd4P\xaaN\xb9\xb0\ +\xce$\xed\xb3\x0f\x95'\x8bdd\x80\x85\x0f\x95O\x99\ +\x9b*\x03\x7f\xce\xa9x\xe1\x08\xfb\xc7b\x0e\x9e\x19\xc8\ +\xa3\xdb\xadW\x96^\xd6to\x13\x90\x8ch1\xbd\x8a\ +(\x17\x1dE6\x18\x04\x98p\xf8\x89$\xcd&\xa3]\ +\x87\xb5W\x82\x07\xc6g\x95\x0a\xa9\x07\xcc\x09\xb7\xce\xb4\ +%>}5\xb0\x00w\xa2w\xdaV\xc0\xe1\xcc\x124\ +\x99\xd7.V\x02\xc7RM4\x0f\x95HP\xa2\xc3\xf3\ +\xa1\x93Sn\x94\xe6!\x8b\x16\xd3\x97:b\x85\x08^\ +F\xca\x8b\xbbTD\xaa\x22\xcf!\xca\x8a55C\x15\ +4\xb8\xe9\x84P\xa1\xc8\x0d\x95G\xeai\xb7\x10q\xd8\ +\x97\xc5J#\x8dH\x8c\x1b\x22\x0e}\xebC\x87\xe1W\ +\x06\xa1\x9e\xc6s\xff\x00\xd3\xfb\xd1a0\xf1\xe0\xd0e\ +\x0a\xf3s\x7f\xc3\xd8ST\x5c\xdc\xd38\xfd\xa3\x5cT\ +\xb0\xef\xde\xa7\x0cr\xb9\x16\xbeaj4Z`\x5c\xdf\ +\xcdhk\xa2Q\x1d\xfc$\x09}\xed\xbd\x0e%\x0a\xa3\ +N\xacU\x97\x9f^\xd4\xe8\xc1*o\xb865\x18\x98\ +\xcc\xb6\x86\xf6U7v\xfd\xaa\xc4N\x0f\x16$`\xae\ +\xb6c\xa0u\xda\x9b\x8a\x82,R\xdaQg\xd6\xce4\ +\xd7\xbd(`\xa3Y\x96E\x9a\xca\x1a\xe4\x15\xd4\xd5\x96\ +9\x98\x9bnoT\xdc\xed\x7f\xe3($\xfc6v\x95\ +\x80 !=C\x0a\x87\x03\x11\x11d$\xa4\xeaJ\xf6\ +==\xebG\x89F\xb3p\xf3\x03\xb1\x1e#YH\xe5\ +\xfd\xab\x0b\x86\xca\xd8Lca\xa5\xd1Y\xaco\xf0\x91\ +\xb1\xac^\xae\x19\xda\xc7\x09U\x9es\x1c\xceIx\xd4\ +\xa96\xb1\xb0\x1e[\xf5\xb8?\xecV\x8a\x07\x13\x08\x94\ +\x05|\xb7\xb7\xe0\x15\x93\x82\x85^\x18b\x11\x96w\xb3\ +\x02\xbb\x8dkhD\x90\xca\xcc\xacY\x88\xb1\xd0\x00O\ +3O\x1f\x15#\x11\x83R\xb7\x80\x5c\x8d\xc1\x1a\x9e\xe2\ +\xaa\x9f\x14\xb0F.\xdc\xacN\xbfJ\xd1\x04\x8a\x89P\ +L\xca\xf9\x8aH\x9b5\xafzl\x12\xa94m\x1d\xbc\ +E+\x7f\xc5\xa5hp\xe9VL:Dtt\x04-\ +\xf9\x8a^&\x19\xe6 /\x85e\xd7Ck\x9e\xba\xd2\ +\xf0\x0a\xc9\x8f\x8dX\x10Cs\xa6uSF\x1f\xf3T\ +\x9d\x81\xbf\xd2\xb1a\x19\xf1\xe0\xa9\xd1\xa5\xba\xdf\x90\xbd\ +l\xc2~\xf5}\xedX\xa2\xe9\x8e\x00[\xcb&\x976\ +\xb6\xb5r\xf8\xa3f}fo\xf5\x1a\x85\x153_\xc5\ +}G\xa8\xf2\xefC\xafa\xf9\xd6\x80\xd4),Xy\ +F\xa7\xe4+)\xb8\x96 L\xe20B\x83\xa0\xab\x9c\ +M\xcc|8\xda\xf7v\x00\xd6A:\xdf\xebX\xe5s\ +\xc6\xa4_\x87\x88,\x8d|L6\xe4\x0a\xff\x00\x15/\ +\xc4\xa0S\x95av?\xd4l+8\x11\xf8\x87\xd6\xb8\ +\xe6;X\x0eW\xa3\xf5NC\xf18\xccD\xd7\x19\xb2\ +/E\xd2\x82\x1cn*\x11e\x94\x95\xfc-\xa8\xa0\xe5\ +\xb8\xbf\xb5_\xc0\xe1\xa28A#\xc6$g&\xdd\xa8\ +\x9bj\xb9\x0b\x18\xcc6 \x85\x99|7\xfcCj9\ +0n\x144l$\x07\xf0\x9dh\xce\x03\x0d \xb9V\ +\x8c\xff\x00N\xb4\xb5\xc0\xe2\xf0\xe7>\x12Q'`l\ +~\x9c\xeb]\xfd\x1d+O\x01-\x9d3,\xab\xea\x1b\ +g\x14\xa5L\xc72\x03k\xfd=\xea\xf2\xe3\xca\x9c\x98\ +\xbc1\xb8;\x81cS+`\xe6\x91\x1e\x192;\x1c\ +\xadql\xdamFE\xb5]R\xdc\xc9\xf74@Z\ +\x9c\xf8YF\xa9g\x07\x9a\x9aS\xab!\xb3)\x1e\xf5\ +bEuE\xeb\xaaN\x22\xe6\xa4W\x0a\x9a\x92@\xae\ +\xae\xae\xa5:\xdd\xab\xad\xadMu\xaa\xc4\xa7\xc7c\xce\ +\xb1N\xa2\xc4\xaeF7\xe66\xd3\xfd\xefM\xc1\xb1\x97\ +\x0e\x80\x90R\x15\xd1m\xcc1\x02\xff\x00\x91\xa7I\x1f\ +\x8f\x87\x93\x0f\xcd\x85\xd7\xdcUn\x1e\xcc\x85\xe0sl\ +\xe8\x96\x1c\xb3j~Z\x00+9\xda\xf8\xbd\xc3\xc9+\ +*\x12/\xa3\x0b\xf3\xa2\x90\x5cX\xfeT\x8e\x1c\xc0c\ +,~ TU\x87\xb1\xadO\x05\xf5]\x94\x96\xcb\x5c\ +\x17!\x1a\xe8i\x84s\x1b\xfe\xb5\x04\xa8L\xee\xe1T\ +s5\x12\xda\xec\xd7^[\x9a\x9c\xba\xdc\xb5\xcdLo\ +\x0c\xa4\x84\x97nEmE\x94\x13et$n/o\ +\xd6\xa4Y\x15\xd9FRX\x85Q\xb9;S\x0cM\xb8\ +\x1au\xbe\x9fZ\x8b+\x1b\xe8\xc2-\x06\xb7\x05\x8dX\ +\x95\xe4VL$\x8c\x8c\xb6`\x00!\xc0\x1a\xf3\xfc\xaa\ +\x9c0\x9c\x99\x94\x11\x9bC+h\x00\xe7n\xb5\x7f\x1f\ +\xe4\x81]\x15C3X\xf9F\xbaU+\x97bY\x8b\ +\x1eu\x8eS\xb3\x13)\x0f)a\xb6\xc2\x84\x81mj\ +v\xae5\x92\x18\x904\x81T\x1b\x13\xa8\xbe\xf4\xec\x04\ +\x0a\xd238\xba\xc5\xa1\x1d[\xff\x004\xdc6\x1c\xa6\ +\x11\xe7&\xcd\x94\x95\x16\xe5V2,h\xb1\xa0\xd2\xc0\ +\x93\xd4\x91[\x9cF\x93\xc4\xd0\xe28y\x03x\x9b0\ +\x00r\xac`:\x0a\xf4\x11\xb1W\xb8\x17\xb6\xe3\xf65\ +\x9b\xc5\xb0\x9e\x0c\xbe*)1\xbe\xa0\x9eG\xa5\x1c\xf8\ +\xfdR\x87\x829\x18\xf5\x8c\x1b,\xbeS\xde\xae\x85\x02\ +R:\x0eu\x9b\xc3\xe3i1\xf1\x22\x9b\x12\xe3Z\xd8\ +\x97+H\xc5E\x81&\xd5p\x9d*U\xaaZ5\xf0\ +\xcc\x8d\xe5U\xdc\xd1H\xd1A\x18\x92r@>\x95\x1b\ +\xb5Qi&\xe28\x85\x88-\x90\x1d\x15t\x0a)\xb4\ +GL\xd3\xf1\x0cB\xc3\x12\x15\x8cl9{\x9a\xd0\x82\ +8\xf0\xb0\xf8P\x9dO\xad\xc6\xed\xfd\xaabT\x81\x0c\ +0\x8b \xe7\xcd\xbb\x9a\x9bS&v\x82\x06\xb4\xd8\xd7\ +\x95B\x8bS\x10V\x85\x12\x8dmLAP\x83J5\ +\x14\xc0\x9b\x84\x900\x17\xd2\xe4u\xa3(B\x05:\x93\ +\xe6c\xd4\x9dk\x94\x03\xa3lA\x14is\x18\xcf\xeb\ +_+Xt\xd8\xfd+Q\x14V\xc0\x9bl*\x02\xe5\ +P)\xd7[\xdb\xf2\xb5\x00\x07.\xa3QF%>(\ +@x\xd3\xa2\xdc\xfc\xeb#\x8f\xc7q\x16%E\x8by\ +X\xf7\x15\xaf\xc5t\xc4\x8f\xf4\x0f\xd2\xb3\xb8\xbe_\xfd\ +(\xe6\xdf\xc4\x19=\xf9\xfeU\xcf\x9c\xf5\xae-<\x1c\ +\x0b\x86\xc3\xa1\x0bi\x1d\x05\xcf\xe1\x16\xda\xb8\xdc\x9a~\ +(}\xe6Q\xb0\x00}\x00\x14\x83\xa5i\x97\x0a%4\ +5+R\x18\xda\x89\x81\x91@\x06\xce\xba\xa3_cB\ +\xb4@\xebLC\x0d\x9dD\x83Bw\xecy\xd6o\x1b\ +\x8d\x93\x18f\x1bK\xe6\x06\xb4\x09\xca\xcc\xe1K+j\ +\xe0n\x0fZ\x99\x169\x22\xc9 \x12Fv \xed\xed\ +U\x9b\x0c\xea\xaba\xb1\xf0\xc8\x80b.\x8e\x05\xb3\x01\ +{\xd3\xdal(\x5c\xc7\x13\x19\x03\xa6\xff\x00J\xac\xfc\ +2&k\xc7\x88\xca:2\x9b\xfeT\xa9\xb8d\xf1\xdc\ +\x96\x8f/\x22Z\xd7\xa3yE\xd0x\xa6)g\xcb\x1c\ +W\xc8\x97\xd4\xf3\xaa\x95c\xecs\x88L\x9e\x04\xae\xa3\ +\xf0.\x9fZB\x14u%C\x02\xbe\xa5a\xa8\xac]\ +\xfa\xd4\xc7\x0b\xd7X\xd4\x8a\x90<\xb7\xa0\x86\xc6\xb5x\ +m\x9f\x87-\xbe\x06 \xfc\xeb/\xe5W\xf8\x1c\x83\xc4\ +x\x0f\xfc\xc02\xfb\xd6\xb8\xfa/\x8bV\xae\xb5\x19\x17\ +\x14$k]\x18C\xdaE\xc9*\x89\x01\xd2\xcc/U\ +\x8e\x0b\x0e\xf2\xfd\xdeh\xc2\x12I\xbd\xc5\xc8\xb5\xaa\xd1\ +\x16\x89\x8el\xbb\x00}\xcd\xaa]B\x9c\x8a<\xab\xa0\ +\xa3\x16\xb3\x1f\x0b\x8b\xc1\xfd\xec\x12\xe6A\xbd\x8e\xde\xe2\ +\xad`1#\x15\xf7N\xa0H\x06\x9ah\xd5e\x09V\ +\xb8\xff\x00\xcdQ\xe2xQ\x1f\xfcL\x07(\xbf\x99\x7f\ +\x09\xa33\xc3\xba\xb0\xf8X\xe4\xbeQ\xe1\xb7>\x9f\xda\ +\xa9\xcc\x8b\x13e\x92DS\xca\xe7z\xb5\x83\x91\xf1\x8e\ +\xc9,\x8cr\x0c\xc5A\xb6pv?\xcf\xb5I\xc2\xc6\ +\xd8\x93\x11\x04\xc2\x101\x07R/\xd2\xac\xdf\x12\x93)\ +Sc\xf9W\x0a\xb1\x8d\x84\xc5/Ua\xe5\xb7JO\ +\xb5\x18\x5c\x05u\xaaF\x82\xa0\x1b\xd2\x93Pjk\x8e\ +\xa2\xa4\x10J\xb0a\xb8:U>4\x1a,D\x8e\x9e\ +Q\x94I\x19\x07\xa6\x9f\xb8\xabmS,Qb\x03D\ +\xe3\xccQB\xb5\xbd7\xfe\xe0Vl\xde\x908d\x8b\ +\x89\x9a)\xd2\xd9\x81\xb4\x8a9\x1e\xb5d\xd7\x9e\xc1\xb4\ +\xf8N&\xa2\x13f\x12e:\xdbJ\xf4\x122\xb4\xbe\ +\x22\xb7\x92A\x99}\xaa\xe1v\x1a\x9b\xd28\x92_\x07\ +\x985\xad%\xed\xd7J+\xf9\xf3\x0d@\xa6\xe4\xf1<\ +\x10\xc3\xca%$\xdc^\xfaS\xe8'\x0c|\x18\x11\x14\ +\x10\xc4]\x88\xefL,X\x11 \x0e?\xa8^\x80\x7f\ +\x9b\xf3\xe7L7\xbdQ\x06\xd1e\xcb\xe0Gn\x9a\xff\ +\x005 \x8b\x05\x00(\x1b(\xda\xa6\xc6\xa4\x0b\xd2\x89\ +\xe2Z`\xd0\x85\xbd\xa4?\xa5f\xc6r\xb5\xcf=\xeb\ +W\x1e?\xe1\x93\xff\x00\x90\xfe\x95\x9c\xa8\x19\xcfj\xc7\ +/LA\xd7P4\xefE\x86\x88\xcb\x88X\xee\x06c\ +\xc8^\x8a\xd5k\x85\xc6s;\x80n\x05\x87\xce\x896\ +\x9a\x9e \xfe\x1e\x1f\x22\x9d$\xd0\x0bk\x94T`\x09\ +\x93\x0cU\x8d\xccgK\xf4\xa8\xe2eO\x86\x80\xdd\x94\ +\x1b\xd8\xde\xd50\xc5.\x12\xd2\xba\x82\x8e,@5\xaf\ +\xac\xfc7-/\x89\x18\xd3\x07\xe0\xc8\xda\xca\xeam\xd0\ +u\xab\x12\xbcP\xe1\x8e \xd9\xd7\xe1\x1dMcb\xa5\ +y\xe62Hu?\x956\xa8L8\xf90\x9c\x5c\x09\ +\x11\x04q\xb7\xa4\x0d\xbb\xd6\x8c\xdcEP\x0c\xb8T7\ +\x17\x0d\x98\x91\xee+3\x8a\xa7\x89\x83I\x88\xbb#e\ +'\xb7*w\x0e\xe1\xdcV\xc1Q\x13\xc3\xb5\xfe\xf0\xf9\ +G\xf7\xaer\xf2\x97#]\x02w\x9b\x15\x88\xcc\xe73\ +\xb6\x80\x01\xfaV\xbe\x12\x0f\xb2a|/\xf9\x8f\xac\x9d\ +\xbbQ\xe0\xe0L9 F\x04\xfb\xdc\xdfo\xe9\xa2\xb5\ +\xeb|x\xe7u\x9bAkX\xd1\x01S\x96\xedo\x99\ +\xa3U\xad\x0dB\xad5V\xb9\x16\x98\x05A\xca(\xd4\ +kP\xbb\xda\x88\x9bh\xba\xb7\xb6\xd5\xa4$Zj\x8f\ +0\xe8\xfeS\xd8\x8d\x8f\xedI\x89\xb3\x1f1\xdb\x96\xd4\ +\xd8\x8f\xde*\x83\xe5\xccH\xee@\xdb\xf3\xadD\xe3{\ +nhZ\x9aF\x9a\xd00\xa93x\xb7\xff\x00\xaa\x1f\ +\xe8_\xd2\xb2\xb8\xf3\x11\x85\x82;h\xc4\xb9\xf7\xda\xb6\ +x\xba}\xea=\xfdK\xfaiY\x0d\x0e\ +\xcdp\x7f\xee\xae\x5c\xe7U\xae-\xc9\xbc\xc1_l\xea\ +\x1b\xda\x90\xc0\xde\x8b\x87\x16\x9f\x85\xc0Cge\x05\x0d\ +\xbb\x7f\xe6\x89\x81\x07Q\xaf\xb5j\xff\x00Y,/Z\ +!]Q~\xd4!\x0fz\x9a\x10jA5!\x02A\ +\x04n)DM\x16+,\x00\x15\x94f\x00\x8b\x81L\ +\x152\x5cF\xd2\xa5\xc3\xc6\xbe\xe0\x8e\x96\xa5\x03\x10\xf8\ +\xc8\xe2-\x9a5\x00\xeac\xb5\x1e\x192\xc2\xae|\xce\ +\xe2\xe4\xb6\xb6\xaa2K\x88\x9dns\xba\x83\xf0\x8d\x05\ +]I\x84\xa1r\x02\x0a\xd8\x15;\xe9T\xa4\xd0\xd2f\ +\xcd\x98\xdf\xad\xea\xbc\xb0&#\x89J\x19r\xda\xf7u\ +\x1a\xfc\xea\xc6f\x12\x00\xaas|+\xd7\xdf\xb5tq\ +\xac \x859\x8b\x1f3\x1eg\xb7j}\x0c\x9cf\x19\ +\xf0\xf2\xe5:\xa9\xd5XliV5\xbb<^>\x19\ +\xa2\xe7\xba{\xd61[\x12\x087\x15\x8e\x5cq\xa9A\ +m-V8@\xff\x00\xf2P\xff\x00\xaa\x92l7 \ +{\xd5\x8e\x12?\xfc\x8c'\xfa\xaa\x9e\xa6\x89\x02\xdaR\ +\xcd1\x98l\x01'\xda\x81\xae\x01\xd0V\xd9q\x00\xca\ +\xa9sd_\x10\x81\xcc\xec*\x05\xedm\xed\xce\xa1\x81\ +*\xac\x1a\xefke;0\xe9\xd8\xd3\x22\x0aE\x95\x80\ +#p\xda\x11R\x0d\x8d\x12s\xd02\x9d\x18r4\xc5\ +\x8c\xf2\x19\xbd\x8d\xe9%l\xe5FR\x06\xecN\x9e\xda\ +njL\xfe*\x92`\x18b\xa0>Tk.\xbb\x83\ +\xc8\xfc\xe9\xdc\x1b\x1d\x1e6Is0I\x99uRt\ +6<\x8dY\x9a\x05\xc4\xc2\xd8v\x94\x80\xe2\xd6\x0a\x00\ +\xbfZ\xf3\x85%\xc0c\xd9\x1d|\xcbp\xc3\x91\x15\x8b\ +o\x1b\xbf\x0c\xed\xe9\xa7\x89\x9e\x06F\x1c\xae\xa6\xb3-\ +G\x82\xc5\xbcyd\x8d\xd8\xc4\xc7U4\xdcZ\x05\x9c\ +\xd8h\xda\x8a\xd6\xea\x22\xc6\xbb-4-qZ\x16\xaa\ +\xe3\xe6\x92\x08\xd0Dr\x97\xb9'\xb7J\x94\xc5a\xde\ +0\xce\xf9Z\xde`\x16\xfa\xd3\xa7\x8e9#\xfb\xc4$\ +\xa0\xd0\x83jK\xe0bq\xe4c\x1b\x7fV\xa2\x8e\xf7\ +\xa3\xd3\x96H$l\xb1\xcbs\xfdB\xd4J\xd9\xe51\ +#\x03\x95,Ort\xb5V~\x1f8\x04\xfd\xd3v\ +V\xd7\xe9N\xc0\x14\x83\x06\xceHV\x8e\xec\xc0\xef\xdb\ +J;\xde\xd3;\x10VO\xf11\xc8C^O\xae\x95\ +\xb2a\x11\xc3\x1cm\xeaD\x00\xf65\x99\xfe\x1e\x84\xcb\ +\xc6\x17\x12\xea\x08MM\xf9\x9a\xd6\x931\xb9*nh\ +\xe1\xe6\xaaQ\xb2\xadB\xc8J\x94\x07)$\x10z\x11\ +\xb5\x11@9k\xd6\x81\xd4\x12,5\xad#4 H\ +\xabl\xdb\x8e\x87\x98\xa1f\xb1\xb5\xa8\x92\xd7$yI\ +\xdfK\x86\xf7\x1f\xb8\xa9\xb5\xcd\xadf\x1a\xe5\xbe\xfd\xc7\ +ZR(\xd4P\xae\xf4kP\xa0\xc7.l\x18#\xe1\ +}~u\x9c\x10.\xa0\xed\xbdi\xe2Al\x1c\x80n\ +,O\xb5QP-Y\xbe\x99B\x12\xe6\xdbs'\xa5\ +\x5c\xc0%\xf0\xcc\xc4\xb2)`\x02\x8d\x0b\x0b\x1dOJ\ +B\x80\x14+Z\xcer\xfc\x86\xa7\xf2\x1f\x9d\x5c\xc0\xdd\ +\xa0\x91\x8e\xe6K\xfeUH\xa8\xac\xa5r\x18\xd3/\xe1\ +\xcbP\xd8D\x98\x04\xf1dP=*u\x02\x99aL\ +\x87\xd6GU }\x0di\x96\x0e5\xc3HQI\xca\ +\xa4\xdb\xa0\x1b\x0f\xd2\xff\x00:\xb1\xc3\xb8xx\x84\xd8\ +\x82\xc1\x0f\xa5F\xedT\x9c\x10\xc5H\xd4\x1b\x1a\xdfm\ +Bd\xb6L\x82\xc4{V8\xf7u\xaaRA\x86\x8d\ +r$\x00\x5c\xdf19\x884\xb4y\x12_\xb3\xce\xd7\ +\x0d\xe8n_\xf8\xa7\xb0#\x98?\x95-\xf2\x99!r\ +@\xc9%\x89'`\x7f\xbdl9\x94\x98\xd8\x0dY|\ +\xcb\xae\xc4W@\xc92\xe7B\x01\xf8\x94\x9d\xa8\xe2\x17\ +\x97/3py\xf6\xac\xf8\x96!#\xac\x8c\xdeQ\xe5\ +\xcbE\xaa4\x02\x1b\x92t'\xb7*%[Ta\x03\ +\x8c\x22g7'Q~B\x9a\x10\x9f\xeemZ\xc0\x85\ +\x14\x5c\xab\x88#q\xa7#\xd6\xa4R\x9c\xbe\xaa8\xf4\ +[\x03\xcc\xdf\xebAmk\xaeCyM\x89:\x8a\x90\ +\xa6\xb6\x9dM\x1cyd\x87+r\xe69\x1e\xb5 \x8e\ +\x82\xb8\x1c\xa4\xe5\x1a\x1d\xc5i%$a'\x85=\xae\ +}/\xc9\xa8\xd9M\xedo\x95-\x99]2\xb4d\xaf\ +}\xc5\x04s\x98\xdf\xc2\x98\x92\xa7\xd0\xc7\x97j\x90x\ +\x9a_\x0c\xadoKkX\xfc`[\x09\x0c\xd9o\xe1\ +K\xa9\xe87\xfdks\x1a\xc8 x\xdd\xd41\x17\x00\ +\x9e\x95\x95\x8cH\xdf\x014fE7\x00\x8b\x1eco\ +\xd6\xb1\xce\x18\xff\xd9\ +\x00\x00*\x0f\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00d\x00\x00\x00d\x08\x06\x00\x00\x00p\xe2\x95T\ +\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ +\x00\x00\x09pHYs\x00\x00\x0e\xc4\x00\x00\x0e\xc4\x01\ +\x95+\x0e\x1b\x00\x00\x00\x07tIME\x07\xd9\x03\x03\ +\x0e\x1c+\xec\xa5\xbbn\x00\x00 \x00IDATx\ +\xda\xed\x9dy\x94]U\x9d\xef?\xfb\x0cw\xae95\ +\xa5\x06*!!\x09\x14\x15\x84\x88\xd1\x00\x09\x08\xad\x08\ +\x1d[\xec6`\x0bH\xd3\xf0\x1ch\xc4\xf5\xda\xd5O\ +xH\x83\xda\x93\xadH\xabK\xb4\x15Q@\x9f\xd84\ +\xad\x08\xd8\x0e\xc8 $\x81\x8c\x18\x92\x9a\x92\xaaT\xaa\ +\xea\xd6p\xab\xea\xce\xc3\x99\xf6\xfb\xe3\xd6>\xb9\xc9\x13\ +\x03a\xce\xcb^+\x8b[\xdc\xe1\x9c\xbb\xbf\xfb7}\ +\x7f\xc3\x85\xe3\xeb\xf8:\xbe\x8e\xaf\xe3\xeb\xf8:\xbe\x8e\ +\xaf\xe3\xeb\xf8:\xe6\x97x3\xddLuuuW&\ +\x931\xa5\x94^]]\xdd\xfb\xd6\xacY\xf39\xd34\ +]\xd7u\xe5\xfe\xfd\xfb[V\xacX\x81\xe7y$\x93\ +IZ[[)\x95Jh\x9a\xc6\xae]\xbb\xb0m\xbb\ +\xfc\x85\x84@\xd3\xb4\x83_P\x08\x0bp\xd5c\xc30\ +\xfa\x00\x0d \x1e\x8f\x7f0\x1e\x8f\x8f\xa8\xd7\xb6\xb6\xb6\ +\x12\x8f\xc7\xdf\xd0=0\xde\xc8\x8b\xb7\xb5\xb5-\x9d\x9b\ +\x9b{\xa7\x94\xd2\x03X\xbe|\xf9\xb7\xdb\xdb\xdb\xc3R\ +J\x86\xf6\x0d\x11\x0c\x06\xa5\xa6i\xc2\x95.\x86a\xe0\ +8\x0eH\xc9D>A\x87\xd1A&\x93\x01]\x90v\ +\xf2\x9c\xbd\xea\x9d\x00L'\xa6\xd1\x84\x86\xae\xeb\x00\xe8\ +\xba\x1e\x90\x12D\xf9\xe8\x85\x813\xd5\xf5\x1b\x1b\x1bw\ +\xae\x5c\xb9\xd2\x11B\xb0g\xcf\x1e\x86\x87\x87\x1b\xdf\xe8\ +C\xf9\xba\x03RUUef2\x19\x1d`vv\xf6\ +\xba\x8f~\xf4\xa3\xd7\xab\xe7\xfa\xfb\xfb\xcb'\x5c\x08\xf2\ +\x94\xb0J\x96\x10\x9a \xe7\x14\xf0<\x0f\xcb\xb2\xc0\x83\ +\x9c[\xc4\xb2,,\xcb\xc2\xd6]\x1c\xd7&\x9dN\x03\ +p`z\x9c\xd3N\xea\xa6X*\xa1\xeb:;v?\ +OU\x93\xc0\x9b\x0b!\x84\x00I\xf9\x9f\x00\x04\xb5\xea\ +\xda\xd1h\x94\xee\xee\xee>@\xb8\xaek\xee\xd9\xb3g\ +\xd1\xff\x17\x80\xb4\xb5\xb5=\xb8x\xf1\xe2\x8b\xa4\x94\xf4\ +\xf7\xf7333S>\xf9@\xc9.o\xb2\x00\x8a\x9e\ +\x85\xed\xd8\x08!p\x1c\x07)%\x96e!=\x89\x94\ +\x1e\xb6mcY\x16\x8e!\x91\xe0\x7f\x86\xf4\x1a\ +\x8f\xc7\x07\x8e\x19@\x1a\x1b\x1b?X(\x14\x22\x80\x15\ +\x0c\x06\x97\xc7b1\xa4\x94\x98\x01\xd3\xdfX\x00\xc7s\ +(\x95J\xfe\xc6Z\x96U\x06BZx\x9eW~\xce\ +\x03)%\xa5R\xa9\x0c\x88\xe7\x95\x01,\x16\x01p\x1d\ +\xd7\xffLW\xd3\x91\xea}@\x7fo\x1f\xe77\x9eG\ +n4\x87)\xa0\x14M\xb3\xa0C\xc3\x89\x87\x909\x13\ +t\x09\x9aDh\xc8\xb3\xce:\xeb\xb7\x00\xa6i\xf2\xe8\ +\xa3\x8f\xde\x09|\xfc\x98\x01d\xc1\x82\x05\xf7\xbf\xedm\ +o\xd34Mc\xef\xde\xbd\x94J\xa5\xf2\xa6\xba6\xb6\ +eW\x80P\xdeh\x81@J\xcf\x07\xca\x96\xb6/!\ +x\x12\xcf\x93\x077}\xfeD\xab\xd7\xba^YzJ\ +\xa5\x12\xba\xa6\xfb\xcf\x09!\x90\x9e\x87\x87\x87+]\x12\ +\xb33\x88%3\xa4\xa4\x09\x0b%\xd2\x168\xc9\x00n\ +\xca\xc0K\x1b\xa2l\xd5\xc00\x0c\xea\xea\xeaNok\ +k\xbbE\x08\xc1\xec\xec\xec\xf3ccc\x0f\xbe\xe5\x00\ +\xe9\xe8\xe88\xa3\xa6\xa6\x86R\xa9\x84\xe7y^\xa1P\ +\xd0t]\xc7u\xdd\x83\x00H\x0f\xcb\xb6|\x0fI\xd9\ +\x09!\x04\x9eGY\xedH\x89\x8d\x8d7\xbf\xd1\xd2\xf5\ +\x90B\xfa\x9b\xeeI\x81@\x1c\x04\xc4=(!\xba\xa6\ +\xf9\xd2$\x84\xf0\xc1\xb1m\x9b\x03\xc3#\x9c\xbb\xe8\x5c\ +dR\xe2II6\x92\xa2a\xa9\x8e7\x17B\xda\x02\ +iiH\xab\xec\xaduvv\x9e\x09\x9ci\x18\x06;\ +v\xec\xb8\xa7\x12\x90W\xdb3{\xad\x00\x09477\ +o\xe9\xe9\xe9\xc1q\x1c6o\xde\x8cm\xdb\xb8\xae{\ +P\xf5\xcc\x03`[\x07U\x96\xe7yX\xae[6\xbe\ +\xa0\xc0\xc4\x16\x0eBB:\x9d.KQ\xb0D\xb1X\ +$\x9f\xcf#\x1d\x81DV|\xc6A@4\xa1\xe1y\ +\x15\x122\x0f\x88\xfa\xdcT*\x85\xe7yL\xa7f\xd1\ +\x16M23rX\x14`x\xd8\x89\x00\xd6\x810B\ ++\xbb\xd4\xb3\xb3\xb3+[[[o\x06t\xe0\xe1x\ +<\xfe\xdc\x9bVB\xda\xda\xda\x9a\xc7\xc6\xc6j\x80\xa0\ +\xfa\xc2\xae\xeb\xfa\x1b\xa1i\x1a\xae\xeb\xfa\x9b'=\x89\ +\xed\x1c\x04\xc4\xc5#\x9b\xca\xa0\x09\x0d\xdb\xb3\xc8\xd8\x19\ +\x1c\xc7\xc1\xd1=bf\xc4WY\x8ea\x93\xcdf\xc9\ +\xe5rHG\xe0x.sss\x00\xe4\xbd\x22\xb6m\ +Q(\x14\xd0\x84@\x9a\x07\xc1\x92\xe0{g\xbe\xd7\x06\ +\xe4\xe6\xd2,k<\xcd\xb7\xe1\xe3\xc1q\x16\xad\x08\xe2\ +L\x86qsAd\xa71o[$\x8b\x16-\xea\x01\ +z4Mc\xfb\xf6\xed\x8975 \x85B\xe1\x9eK\ +/\xbd\xf4\x82\x5c.\xc7\xe8\xe8(\xb6m\xfb\x1e\x92\x0a\ +\xe2*7\xc2\x93\x92\x5c.G.\x97+\x8bU8\xe8\ +\x9ffWs1L\x1d\xcf\xf30\xe4\xc1\x80\xafP*\ +\x10Lk\x18U\xe5[\x176\xe8\x9e@3\xca\xeaE\ +w\x05\x99L\x96t:\x8d@\x10\xaa\x8fP\xb4\x8b\xf3\ +\x12\xe2\xf9\xce\x80\xef\xb5\xc9\xb2\xfa+\x96\xca\xaf\xd9\x9f\ +\x9d\xa2\xed\xe2\x14\xd4\x070:%\x86\x06^Q\xc3M\ +\x1a83\x012\xcfU\x81&\xd14\x8d|>\x1f\x01\ +j\xe7\xf71\xf1\xa6\x03\xc4\xf3<-\x18\x0cR(\x14\ +|\xd5\xe48\xcea\xb6\xc1\xa3P(\xcc?v\xfd\x13\ +\x0b\x10\x8c\x84\xd0\xe6\xf5~ \xaf!\xea4\xce=\xf7\ +\x5cfgg\xe9\xeb\xeb\xe3\x82\x0b.\xe0\xf2\xcb/\xe7\ +\xce;\xefdpp\x90\xcb/\xbf\x9cX,\xc6\x9dw\ +\xde\x89\xa6itvvr\xe0\xc0\x01tC\xc70\x0c\ +\x04\xe0\x14lr\xb9LY:\x1d\xd7W\x91\xea\x9e<\ +\xcf\xf3\xed\x13\x80\x91\xb4\xf1\x1e]DB\x96%\xca\xd3\ +\x9d\xb2-\xb24\x04\x02\xdd\xf4|7\xb9\xa7\xa7\xe7\x9f\ +O=\xf5\xd4\x7f.\x95J\xfc\xeaW\xbf\x12o\x0a@\ +\x9a\x9b\x9b\x9b\x84\x10\x0f\x01\x05\xcb\xb2z\xd4\x06+\xa9\ +\xa8TY*\xa6\xc8f\xb3h\x9a\x86eY\x18\xba\x81\ +a\x94oC\x93\x82\xf7\xbc\xe7=\xdct\xd3M\x5c{\ +\xed\xb5\x9c{\xee\xb9\xbc\xfd\xedo\xa7\xbb\xbb\x9bu\xeb\ +\xd6q\xcb-\xb7\xf0\xfc\xf3\xcfs\xe5\x95W\xf2\x9d\xef\ +|\x87w\xbc\xe3\x1d\x5cp\xc1\x05\xdc\x7f\xff\xfd\xdcx\ +\xe3\x8dtvv\xf2\xcc3\xcfp\xcf=\xf7PSS\ +C4\x1aezz\x1a\xd70\xd04\x0d\xcd\x12d\xb2\ +\x19\xb2\xd9\xac\xaf:=\xcf\xf3\x1f;\x8eC8\x12&\ +\x181\xd14\x8dg\x8b{x\xef51\x04\xe5\x80\xd2\ +J\x988\x13a\xac\x91\x10\xeel`\xde1\x91\x04\x83\ +\xc17\x8f\xca\x9a\x9c\x9c\x5c\xf4\xfe\xf7\xbf\xff\xccX,\ +\xc6\xe6\xcd\x9b)\x16\x8b\xb2T*\x09\x05\x82\xeb\xba8\ +\x8e\xc3\xdc\xdc\x1cB\x08t}\xfe\xf4\x0a\x81\xe6iH\ +$w\xddu\x17\x89D\x82[o\xbd\x95\xab\xae\xba\x8a\ +\xbe\xbe>\xce9\xe7\x1cv\xec\xd8\xc1e\x97]\x86\xe7\ +\x95}\xd0o}\xeb[\xdcp\xc3\x0d|\xe1\x0b_ \ +\x91H\xd0\xd3\xd3C\xb1Xdff\x86\x93O>\x99\ +\xde\xde^:;;Y\xbcx1\x9f\xfa\xd4\xa7X\xb5\ +j\x15g\x9f}6\xae\xeb\xf2\x9e\xf7\xbc\x87\x87\x1ez\ +\x88R\xa9t\xd0Y8\xcc\xd1p\xe7\x1d\x0a\xdb\xb6I\ +&\x93\x94\x92s\xec\xb87\x87\xe7I\x14\xfd\x22\xca\x11\ +>\xd6\x8c\x815\x11\xf0\xf9\xb3\xea\xea\xea\xafK)\x09\ +\x87\xc3\xcfMMM}\xffu\x05\xa4\xb9\xb9\x99\xc9\xc9\ +I\xf5g\xde\xb6\xed\xcaS'\xd4\xc9S_XyP\ +\x0a\x90\xaa\xaa*.\xbd\xf4R~\xfc\xe3\x1f\xf3\xde\xf7\ +\xbe\x17!\x04\x17]t\x11\xdf\xf8\xc67x\xf0\xc1\x07\ +\xf9\xc8G>\xc2\xf6\xed\xdb\xe9\xef\xef\xe7\xea\xab\xaf\xa6\ +X,\xa2i\x1a\x0f>\xf8 ?\xfc\xe1\x0f\xf1<\x8f\ +E\x8b\x16q\xf1\xc5\x17c\x9a\xe5\xd3|\xc5\x15Wp\ +\xd9e\x97\xf1\xe8\xa3\x8f\xb2`\xc1\x02\xaa\xaa\xaa\x08\x85\ +B\xe4r9\xee\xbd\xf7^\x22\x91\x08###\xec\xdf\ +\xbf\xdfw\xa7\x93\xc9$\x8e\xe3\xf8\xae\xb2\xeb\xbah\x9a\ +F\xa9T\xe2\xc0\x81\x03\xac?\xff\xa22\x18H\xa6\xf4\ +\x04\x9d+L\xbc\x94\x89\x9b1\xf1\xaaMd\x87\x86\xd0\ +$\x18R\x22\xf9\xa4a\x18l\xdd\xba\xf5G\xaf; \ +\x93\x93\x93466\xfe\xd5\x89'\x9e\xf8\xdd|>\x8f\ +\xeb\xba\x12\x10\x95~~\xa5\x97%\x84@\x08\x81\xb2/\ +\xb7\xdf~;\xd9l\x96\xb5k\xd7\xf2\xf4\xd3O\xb3~\ +\xfdz\xf6\xec\xd9\x83\xe38<\xf6\xd8c<\xfa\xe8\xa3\ +\xe4\xf3yZZZ\xfc\xd3\x5c(\x14X\xb0`\x01\xa1\ +P\x88B\xa1@*\x95\x22\x1a\x8d\xfaj#\x10\x08\xf0\ +\xc0\x03\x0f077G\xa9T\x927\xddt\x93\x08\x04\ +\x02eoK\xd3H\xa5R\xe8\xba\xce\xc2\x85\x0b\xf9\xb7\ +\x7f\xfb7>\xf3\x99\xcf\x90L&\xfd\xf7+i\x0e\x04\ +\x02\xbe\xb4\xcc\xcc\xce \xa5$\xe7\x96\x08_\x18Gv\ +\x04\xd1\x84\x86\xa6yH\xcd\xc3\xc9\xe8\xd8\xe3!R\xbf\ +\xae\x13\xe8\x12\xc30\x90R\xda\xaf$F9j\x95e\ +YVW[[\x1bsss\xd8\xb6-\x94\xf1V1\ +\x80\x94\xd2?}\xae\xebr\xddu\xd7q\xf5\xd5W\xb3\ +a\xc3\x06v\xed\xda\xc5\xfa\xf5\xeby\xf2\xc9'q\x1c\ +\x87\xeb\xaf/\xf3\x8b\x13\x13\x13H)\xfdk\xec\xdb\xb7\ +\xef\x90k\x1e8p@m\xa0\xed8\xce\x01)%\xba\ +\xae[\xf9|\xfe\xf2\xb1\xb1\xb1)\x80@ pIs\ +s\xf3\xed\xb9\x5c\x8eB\xa1@,\x16\xe3\xdak\xaf\xa5\ +\xa3\xa3\x83m\xdb\xb6\xf1\xdd\xef~\x97\x91\x91\x11\x9a\x9a\ +\x9a|B\xd2q\x1c\x92\xc9$\xae\xeb\xd2\xd0\xd0p0\ + \x9d\x97\xfc\xfd\x07F0\xa7\x1c\x06\x83\xd0\x12\x5cJ\ + (8\x90\x1eD\x22\x11\x1e\x94\xe2c\x88y\xc6?\ +\x9f\xcf\xffIss\xf3c\x9a\xa6i\xf1x|\xdd\xeb\ +fC\xa4\x94V\xa9T\xc2\xb6m?\xbe\x80r\xf0\x96\ +N\xa71M\x13!\x04\xa5R\x89p8\xcc\xdf\xfe\xed\ +\xdf\xf2\xf4\xd3O\xd3\xdc\xdc\xcc\x8f~\xf4#\x1e\x7f\xfc\ +q\x06\x07\x07\x0f\x01 \x12\x89\xfc\xe1\xa4\x8d\x10X\x96\ +\xb5O\xd3\xb4!@:\x8e\xb3+\x1e\x8f\x7f\xfa\x0f\xbd\ +6\x12\x89|{\xeb\xd6\xad\xff\x09H\xdb\xb6\xb3\x8b\x17\ +/\x1emhh\x88(\x09\xb9\xef\xbe\xfb\xe4\x97\xbe\xf4\ +%\xf1\xbd\xef}\x8f\x0f|\xe0\x03|\xe8C\x1f\xe2\xf3\ +\x9f\xff<\xdb\xb7o\xf7=\xaeJ\xa7$\x91Hp\xf6\ +\x9a\xb3p\x1c\x07\x81`\xd4\x1c\xe3\x84\xf3\xa0mz9\ +N\x22\x84\x1d\x0f![\xe6\xe3\x14C\x02\xb4\x18\x86\xd1\ +\xb2q\xe3\xc6\xa3\x8a\xe0_6 uuu\xd7\xaeY\ +\xb3\xe6\x1f\x07\x07\x07C\x8eSfUu]?$\xde\ +\xb0,\x8b@ \xc0\x0d7\xdc\xc0\x8a\x15+\xb8\xe6\x9a\ +k\xb8\xfe\xfa\xeb\xb9\xf0\xc2\x0b\x19\x1e\x1ef>9D\ +,\x16;\x12\xe8. \x85\x10d2\x99o\xc4\xe3\xf1\ +\xaf\x1c\xe9\xfe\xd2\xe9t\x1e\xf0\x93N\xa3\xa3\xa3\xebG\ +FF\xccy\xe9\xf9\xc7\xf1\xf1\xf1\xd3.\xb8\xe0\x02\x12\ +\x89\x04\xb7\xddv\x1b\x13\x13\x13,^\xbc\x98\xe7\x9f\x7f\ +\x9e|>\x8fm\xdb\x14\x0a\x05\xd4ws]\x97B\xa1\ +P\xfeN\xc2\xa0\xd03\x81\xb6\xa0\x16\xad6G\xf4\x14\ +\x0d\xa9I\xa4\x0dN2\xc0\xec\xcf\xeb\xf1\x8a\x9aR]\ +\x1c\x8d\xea2\x8eBU\xb5-\x5c\xb8\xb0~ll\xcc\ +\xb7\x17\x954\x87J\x0c\x01\xac_\xbf\x9e\xbe\xbe>L\ +\xd3d\xf3\xe6\xcd<\xf5\xd4S\x04\x83A\x82\xc1\xa0O\ +\x8f\x1c\x8e\x81\xb2EUUUl\xd9\xb2\xa5=\x99L\ +N\xbc\x12\x9d\x9c\xc9d~\xa3\x1e\x87\xc3\xe1K\x0e\x1c\ +8`\x00\x9e\xeb\xba'\xdep\xc3\x0d\xd1\xaf|\xe5+\ +\xf4\xf6\xf6\xd2\xd1\xd1\xc1\x9dw\xde\xc9\xfa\xf5\xeb)\x14\ +\x0a\xbe]q\x1c\x07\xc7q\x98\x9d\x9d\xc5.Y\x94J\ +:/\xf4\xe7y\xfb\xc2\x0b\x89\x85\xa3<\xbe\xef?\x08\ +\xe9\xd5\xd8d\xc9\x1f\xb0\x91\x0eh\x9a\x86i\x9a\xf4\xf4\ +\xf4\xdc\x9dL&7\x8d\x8c\x8c\xdc\xf9\x9aI\x88RC\ +\x95\xbe\xbb\xd2\xc1\xb6m\xb3p\xe1B\xee\xb9\xe7\x1e>\ +\xfc\xe1\x0f\xf3\xaf\xff\xfa\xaf\xfc\xdd\xdf\xfd\x1d\xc1`\xb0\ +\xcc;\xcdK\x90\xe7y\xa8\xbc\x83R\x13\xf3\xf6@\xa4\ +R\xa9\x87\x80\x84\xae\xeb\xe9p8l+\xc3\xab\xa4\xea\ +\x95\xacD\x22qm\x22Q\x0e\xa8\xeb\xeb\xeb\x9f\x8c\xc5\ +bg\xdf|\xf3\xcd\x8c\x8f\x8fs\xfb\xed\xb7\xb3s\xe7\ +N\x02\x81\x80O\x5cV~\xbf\xe9\xe9i\xba\xbb\xbb\xcb\ +\x81\xab+y|\xfcq\xba\xcf\x09\xd2\xae\xb5\xe2N\x84\ +\xf0R\x0b\xa1\xed\x10r\x15]\xd7\xaf\xec\xef\xef\xd7_\ ++@B\xef{\xdf\xfb\xf6\x1e8p\xa0Z\x89\xb2\xa2\ +F\x94\xeb)\xa5\xe4\xd3\x9f\xfe4O=\xf5\x14\xf3\x5c\ +\x0f\x1f\xfc\xe0\x07\xa9\xa9\xa9yI\x170M\x93-[\ +\xb6|>\x93\xc9\xbc\xaa\xfc\xd0\x8bH\xfa\x8d\x03\x03\x03\ +\xf5\x9a\xa6YR\xca\xff\xf5O\xff\xf4Oko\xba\xe9\ +&,\xcbb\xdd\xbau\xec\xdb\xb7\x8f\xb1\xb11_\x8d\ +9\x8e\xe3\xb3\xc69\xafD\xdb{J\x84\xdb\xa1\xd0<\ +\x8b\x01\x04\xb5\x08n\x09(\x98L\xfd\xa4\x11ax\x18\ +\x86\xe1\xc7P\xaf\x05 \xf5\xd5\xd5\xd5\x0bu]\xf7%\ +\xa4P(P,\x16\x09\x04\x02\x84\xc3a4M\xe3'\ +?\xf9\x09W\x5cq\x05\xb5\xb5\xb5\x14\x8bE\xdf[9\ +\x5c\x1a\xd4\xdf\xba\xae\x93N\xa7w\x1a\x86\xf1\xb8\xeb\xba\ +N$\x12\x89g2\x99\xd7\x14\x0cM\xd3\xc8f\xb3\xbf\ +\xcbf\xb3\xea4_a\x18\x06\xb7\xdcr\x0b\x86a\xc8\ +\xbb\xee\xbaK\xac^\xbd\xda\x7f\xbdr\xe3\x95&\xc8\x14\ +sD\xb6\xe7\x98\xfa}\x9a\xcb\xcf\xf8[\x5c\xbd\xc0C\ +\xbd\xdf\xa6)\xdc\xc5Df\x88\xb9\xb1\x22\xc2(_g\ +fffQ4\x1a\xfd\xcb\x5c.w\xdf\xab\x02H\x85\ +\xdev\x95\xaf\xaeD\xd9\xb2,\xf2\xf9<\xed\xed\xed<\ +\xf4\xd0C\xbc\xff\xfd\xefg\xdf\xbe}\x5cw\xddu\x04\ +\x02\x014M\xfbCU \x87|~8\x1c&\x1e\x8f\ +?533s\xc3\xeb\x95F>\xfc\xd4\xa6\xd3\xe9\xcd\ +;v\xec\x08z\x9e\xa7\xb7\xb4\xb4\xbc\xff\xe9\xa7\x9fF\ +\xd7u\x84\x10\x84\xc3\xe1CT\x97i\x9a\x9c}\xda\x1a\ +\xa4\x07\xaet\xd9\xd6\xbb\x11\xd3\xd0Y\xea\x9c\x83;#\ +Xj/\x86\xd5\xaa\x9eG\x02\xac)\x14\x0ak\xee\xbe\ +\xfb\xeeW\x07\x90x\x9fg\xef\xde\xbd\xe1|>_\xe4M\ +\xb8\xea\xea\xea\x1e;\xe5\x94S\xce]\xbe|9[\xb7\ +nezz\x9a\xd6\xd6V\xa4\x94d2\x19\x16-Z\ +\x84\x8e\x86S\x82\xa2W\xc4\xa5\x84iG\xd0\x8dy5\ +m\x820\xfcxJ\x9a\xa6)\xb6o\xdf\xbezll\ +l\xf3+\xb5!1\xcf\xf3\xaa\xd4\xe9p]\xd7gk\ +\xe3\xf18\xe7\x9cs\x0e7\xddt\x13\xdb\xb6m#\x97\ +\xcb177G*\x95\x22\x10\x08\xd0\xda\xda\xca\xd8\xd8\ +\x18ccc\xacX\xb1\x82m\xdb\xb6Q,\x16\x7f5\ +>>~k,\x16K\xd7\xd7\xd7\x97\xf2\xf9\xfc\x9b\x11\ +\x0f\x84\x10\x01\xdb\xb6y\xe2\x89'\xe8\xee\xee\x96\x97\x5c\ +r\x89\xb8\xeb\xae\xbb\xa8\xad\xad\xc5\xf3<\x9fG\x1b\xd5\ +gh\xff\x8bY\x164\x06p\xf2V9\xcb8\x15\xc2\ +\x9a\x08\x22\x0b:^^\x07\x10\xd1h\x14\xc30\x9cW\ +\xac\xb2\xea\xeb\xebooll\xfcS\xe5\xea*@\xba\ +\xba\xbax\xf6\xd9g\xd9\xb4i\xd3\x8b\xbewtt\xd4\ +\x97\x9a\xde\xde^b\xb1\x18\x81@`r\xff\xfe\xfdO\ +\xcf\xcd\xcd\xf9i\xd77\xe3r\x1c\xe7\xf3\x03\x03\x03\xcd\ +\xb6m\xafY\xb3f\xcd\xb5CCC\x18\x86qH~\ +\x07 e\xe58\xb39J!/y\xd7\x09\xef\xa3\xaf\ +j3\xe9\x8e\x19@P\x186\x99\xf9E\x0d\xe8e\xf2\ +\xf3U\xb1!\xae\xebF\x94\xfb\xaa\x0a\x0b\xde\xfd\xeew\ +3::\xcac\x8f=F8\x1c\xf6\xcb<\x15\xbd\xae\ +\x0c~\x85k[.\x09u]\xd2\xe9t\x947\xf9\xaa\ +\xae\xae&\x9dN\xff\xf7<7\xe6\x0e\x0d\x0d]\x9bL\ +&QU3\x9e\xe7\xd1\xdf\xdfOUU\x15\x86g\xb3\ +\xedk6\x94\xa2\xcc\xd5\xedD\x0a\x93x\xca!`\xea\ +\x14\x0b\x19\x9cT9==55E,\x16\xfbaS\ +S\xd3\x0dSSS\x8f\x1e5 RJWI\x86\xb2\ +\x07\x13\x13\x13\xdcx\xe3\x8d|\xf5\xab_\xe5\xf6\xdbo\ +gxx\x98\x93O>\x99\x99\x99\x19\xe2\xf1855\ +5<\xff\xfc\xf3h\x9a\xc6I'\x9d\xc4\x96-[\xc4\ +\xe8\xe8\xe8\x13\xd3\xd3\xd3\xeb\x00\x16.\x5c\xc8\xf8\xf8\xf8\ +\x9b\x16\x10\xc5\x02\xcfK\xb7\xa9\xb2\x9c\xabV\xad\x92\xa3\ +\xa3\xa3\x22\x99L\xd2\xd0\xd0\xc0\xc9'\x9f\x5c&#=\ +\x1bN\x9a\xa1\xa6\xae\x80\x97\x0eP\x93Z\x84\x976q\ +S\x06\xb4\x80\xd0\xa5\x22>O\xba\xf7\xde{\x1b\x8eZ\ +B\x9a\x9a\x9a\x16\xbb\xae\xfbn\xe59\x05\x02\x01\x02\x81\ +\x00CCCl\xd8\xb0\xc1\xf7\x9a\x00~\xff\xfb\xdf\xfb\ +9\xf3\xcaxc\xd3\xa6M\x84B!\xffu\xc0\x9b\x1a\ +\x8c?\x10D>\xbae\xcb\x96\xb5\x81@\xe0\xea\xf3\xce\ +;\xef\x8a\x1f\xfc\xe0\x07~j!\x93\xc9 =\x8f1\ +\x99\xe0\x8c\xb79\xd8\x8eKU\xa8\x86\x82\x9bA\xe8\xe5\ +\x82\xbe\xfc\xae\x18\xe9gj@\x1ctr\xfe\xe8\xf5\x8e\ +@\xcc\xad\x89D\x22\x0b]\xd7%\x99L\x22\xa5\xe4\xfa\ +\xeb\xaf\xa7X,\x12\x0e\x87\x89D\x22>H\xa1P\x88\ +`0H8\x1c&\x1c\x0e\x13\x0a\x85\x08\x85B\xc4b\ +\xb1C\xbc\xab\xb7\xda\xcad2\x93\xa5R\xe9IM\xd3\ +F\xbe\xf5\xado\x1d\x22=~2N\xba\x80\xc6by\ +\x11\x9fY}7\x7f\x7f\xee\x8f\x18\xde\xe3\xd2\x11[\x8e\ +\x08\x96k\xcf\x14{|\xa4\x98\xe4\x8f>\x1b\x0e\x87\xaf\ +\x5c\xb2d\xc9\xdd\x00\xc9d\x92\xa6\xa6&~\xf2\x93\x9f\ +0==\xcdC\x0f=\xc4\xfe\xfd\xfbY\xb7n\x1d\x8f\ +<\xf2\x08+W\xae$\x91H088HOO\x0f\ +\x8d\x8d\x8d\xfc\xf0\x87?\xa4X,\xce\xbc\xf0\xc2\x0b\x8d\ +\xcd\xcd\xcd\x81\xc9\xc9\xc9\xd2[\x15\x98\x9a\x9a\x9a/\xac\ +^\xbd\xfa\xa6\xd1\xd1Q\x92\xc9$\xa1P\x88\xd3O?\ +\x9d@ \x80\x04\x02\x86\x86t\x028^\x09\xc30q\ +\xa4\x8d\xa6\x97k\xcfd\x0510<<\x1c\x7f\xfa\xe9\ +\xa7\x17\x1e\x95\xca\xd24-\xacT\x90\xae\xeb\x84B!\ +>\xf9\xc9O\xd2\xd9\xd9\xc9\x0b/\xbc\x80\x94\x92\xde\xde\ +^t]\xf7\xf3\x1c\x00\x8f<\xf2\x08\xae\xeb\xaa\x82\x06\ +\x09\xc8\xb72\x18\xf3t\xcb\xcf\x9ey\xe6\x99\xfd\x0b\x17\ +.\xbc\xbd\xbd\xbd=:::\xea\xf3y\x1e\x1e\xdb\xeb\ +\xfb8\xeb/\x22\x18\x19\x137m\xa0\xa7\x82\xb8)\x03\ +7m`\x8d\x85\x10\x02\xc5h\x9bGmCB\xa1\xd0\ +\xa7e\xd9\xaa\x8b%K\x96\xe08\x0e\xf9|\x9e={\ +\xf6\xf8\xd1\xab\xe2|\x82\xc1\xa0\x9f\x94Qe\x9b\x80L\ +\xa5R6\xc7\xc0\xcad2\xcf\x02\xcf\x1a\x86\xf1\x8f#\ +##QM\xd3\x0e&\xe5\xa4C\xfdB\x03\xe1\xea,\ +j<\x85\x9aEU\xbc0\xb5\x89X\xa0\x96\xbc>\xc5\ +\xc8W[\x11Z\x99PU\x99\xd5\xa3\x02DJ)\xa4\ +\x94\xa2T*\xf1\x89O|\x02\xc30\xb8\xe8\xa2\x8b\xf8\ +\xf2\x97\xbf\x8ci\x9a\x18\x86A*\x95bdd\x84\xee\ +\xeen\x86\x87\x87I\xa7\xd3\xf4\xf7\xf7\x93\xcdf\xc9d\ +2\x7f300\xf0\x0d\x8e\xa1\xa5\ +\xa4\x85B\xa1\xee\xa8mH}}}\x7fSS\xd3R\ +\xd7u\xa9\xab\xab\xe3\x8a+\xae\xa0\xb7\xb7\xd7/6\xf0\ +\xdb\x0aJ%B\xa1\x10\xa5R\x89l6K4\x1a%\ +\x95J\x91\xcdf\xaf;\xd6\x00iii\xf9\x8c\x10\xe2\ +\xb3B\x88\xba\x95+W\xfa\xb9\x9e\xa2g\x11:9\x85\ +\xe1\x18x\xd3\x11\x9c\xc90h\x1eB\x13*\xd7\x8e\x94\ +\x92\xe9\xe9i\x1e{\xec1q\xb4q\x88Pt\xb5\xae\ +\xeb\xdcu\xd7]\x87$\xa3*\xdd[\x15\xb9\x9a\xa6\x89\ +m\xdb2\x16\x8b\x89t:\xad\x1fK`TWW3\ +11\xf1\xa5\xd6\xd6\xd6k\x81:\xcf\xf3\xcaD\xa9\xd0\ +x\xac\xb8\x9d\xbf\x5c\xd5\x84#m,\xb7D\xcc\x08\xe3\ +ft\xbcT\x90\xdc\xce\x18V<\xf0\x07\xa9\xff\x97\xe5\ +\xf6\x02\xa6m\xdb\x5cp\xc1\x05466r\xf5\xd5W\ +\xd3\xd4\xd4\x84i\x9a,^\xbc\x98\x8e\x8e\x0eL\xd3\xa4\ +\xb1\xb1\x91d2I.\x97C\xd7u\xe2\xf1\xb8\xd8\xbd\ +{\xf7/2\x99\xcc/\x8f%@\x94\xcb+\xe6O\xa1\ +JEX\x96\x85\xd0\xca\xe5\xa6\xef\x8c\xfd5_\x5c\xf7\ +0\xcbj\xcfdy\xc3\xd9D;%\xc4J\x07\x1b\x8c\ +^\x89\x0d\x01\xc4|v\x8d{\xef\xbd\x97\xa1\xa1!\xf6\ +\xec\xd9\x83i\x9a\xd4\xd7\xd7\x93\xcdf\xd1u\x9d\xce\xce\ +Njkk\xd9\xbbw/===d2\x19\x0a\x85\ +\xc2\xe6x<\xde\xcb1\xb8\x1c\xc7\x91~W0\xa0!\ +\xd0C\x82}{\x93\xfc\xcb\xff\xb8\x9c\xeb\x1e|7w\ +_\xb6\x99\xc9\xb9i\x9eK\xfc\x17\xdf\xfb\xd5\xbdX\x96\ +\xe6\x07\x94\xaf\x88\xcb\xd24\x8d\x81\x81\x01.\xba\xe8\x22\ +\x0a\x85\x82\xaf\x0b+\xcb\x5c\xfa\xfa\xfa\xfc\xc7O?\xfd\ +\xf4!Q\xf9\xb1\xb8fff\xde\xd5\xd2\xd22\xa5x\ +-\x81@\x84\x05\x85\x9cG8t\xd0\xabu\x5c\x87\xc7\ +\x87\xfe\x03\xcf\x95\xbe\xbd}\xa5\x12B \x10\xa0\xbe\xbe\ +\x9e@ \xa0\xaa\x14\x09\x06\x83d2\x19jjj\xfc\ +\xbc\xba\xca\xa9g2\x19,\xcb\xb2\x81\xb1c\x15\x10\xd7\ +u\xb3\xf3\x92R\xa6C(\xe7\x80b1\x13\xdb\x02\xd7\ +\x9b\xef\x08\xc6\xc5\xf5\x1c<\xd7\xc5\xb2\xbcW\x0e\x88\xe7\ +y\xac[\xb7\x8e+\xaf\xbc\x923\xce8\x83\x87\x1f~\ +\x98\xdf\xfd\xeew\xe4\xf3y&&&8\xe3\x8c3\x98\ +\x9c\x9c\xa4\xaf\xaf\x0f\xcf\xf3hll\xe4\x85\x17^\xc0\ +\xf3\xbc}\xf1x\xfc\xdf\xdf\x0c\x93\x11^\xab5\xcfd\ +K\xcb\xb2\x84@ 4\x9d\xa5\xcb\xeayd\xeb\xcf\xf9\ +\xcc9\xdf\xe2\xbf\xf6|\x13'\x17\xe6\xbc\xc5\x1b\xe8u\ +\xbeC\xa9\xe4\x1c\xa2U\x8eZB6n\xdc\xc8\xf4\xf4\ +4555\x0c\x0c\x0c\xf8(K)\xf9\xe9O\x7f\xea\ +W\x92x\x9e\xc7\xd4\xd4\x94*\xae\x16\xc01\x0b\x06`\ +\x15\x0a\x85\xd9B\xa1P\x9fL&\xd1\x84F\xbe\xd9\xa3\ +hU\xf1\x1fC\x7f\xcf'c\xdf\xe3@\xae\x9f\xe7'\ +~\x87\x11\xd0\x98\x19K17W\xaeCP\x99\xd5\xa3\ +\x06\xc40\x0cFGG\x19\x1e\x1eF\xd7u\xdf\xe5\xd5\ +4\xcd\xff[E\xed*\x0f299\xd9\xd2\xda\xda\xfa\ +\xbex<\xfe\xc8\xb1\xaa\xb5\x84\x10\x96JW\xab\x86\x1e\ +#(\xa8\x22\xc2\x1d\x8f]K\xb2\xcfcfo\x81R\ +\xd2#7\xe9\x224\xe1\xef\xd3Q\x03\x12\x8dF\xf9\xc8\ +G>B\x7f\x7f?\x17_|1O<\xf1\x04CC\ +C\xd4\xd5\xd5\xe18\x8e\xef\x06\x8e\x8c\x8c\x90L&i\ +iiarr\x92\x5c.WM\xb9\x18\xe6\x98\x03\xa4\ +\xa5\xa5EU\xe9Ku\x08kkk1\x87\x8b\xf5\ +)\xa4\x94l\xdc\xb8\x91\xba\xba:jkkq]\x97\ +\xd1\xd1Q\xba\xba\xba\xfc\xc6\x97\xb6\xb66r\xb9\x9c\x02\ +\xca;\x16Ecbb\x82\xf6\xf6\xf6\xef\x06\x02\x81F\ +\xd7u\xb9\xe3\x8e;X\xb7n\x1d_\xfb\xda\xd78p\ +\xe0\x00\x9e\xe7\x91\xc9d0\x0c\x83\xd9\xd9Y\xaa\xab\xab\ +\x09\x85B\x0c\x0f\x0fS(\x148R\x0d\xc1\x91\xd8^\ +~\xf1\x8b_\xf0\xf3\x9f\xff\xfcE_Si'v\xed\ +\xdaE$\x12yI\xc6\xeb\xad\xbc\x02\x81\xc0\xdaU\xab\ +V\x19\xbf\xff\xfd\xefY\xb1b\x05}}}\xac]\xbb\ +\x96\xef\x7f\xff\xfb\xf4\xf4\xf4066FWW\x17\x8f\ +<\xf2\x08\xd5\xd5\xd5\xb4\xb7\xb7s\xdai\xa7q\xdf}\ +\xf7\x1d17\xf4G\x15Zkk\xebpUU\xd5\x09\ +\x95\x84Z\xa9T\x22\x12\x89\xf8\x95%\x91H\x84\x5c.\ +\x87\xe7y\xd4\xd5\xd5\xf9\xd2\xd2\xde\xden\xcf\xcd\xcd\xdd\ +\xb3g\xcf\x9e\xab\x8f5@\x16-Z4x\xea\xa9\xa7\ +\x9e811\xc1\x92%KX\xb3f\x0d\xbf\xfc\xe5/\ +)\x95J\x04\x02\x01\xb2\xd9,\xe1p\x98t:\xed\xef\ +\x9b\xe7y\xe4r9\x5c\xd7e\xe7\xce\x9dG\xc7eE\ +\xa3Q\xeb\x9b\xdf\xfc&\xa9T\x8a\x0f|\xe0\x03\xdc\x7f\ +\xff\xfd\xf4\xf6\xf6\xd2\xd0\xd0@UU\x15\xcf=\xf7\x1c\ +UUU\xf4\xf5\xf5111AWW\x17###\ +\x0c\x0f\x0f\xe38\x8e)\x840\x8fA0\xfe*\x10\x08\ +\xd4\xcd\xcc\xcc \x84`h\xdf\x10\x03\x03\x83\x18\xc6\xa1\ +'\xdf\x1f\x863\x1fw\x08!\x08\x85B\xfe\xff?*\ +@t]\xe7s\x9f\xfb\x1c_\xfc\xe2\x17\xb9\xf5\xd6[\ +\xd9\xb1c\x87_u\x91\xcf\xe7\xd1u\xdd\xafFq\x1c\ +\x87\xe1\xe1a?\x8a\x9fw\x8d\xbdyI;f\x5c\xe0\ +\xb6\xb6\xb6\x7f\x5c\xbati=\xc0\x8e]\xcf\xe35\xa5\ +\x89\x04Ld&\x80\xb44\xdc\xf6ENd\x0d\xdaD;n\xca$S\ +J\x91\x9c+3\xe0\xaa\xb7\xe4\xa5\xd4\xf8\xfeQ\x09\xb1\ +m\xbb\xdf\xb2,\xd6\xae]\xcb\xb2e\xcb\x18\x1f\x1f\xa7\ +T*177Gss3\xe9t\x9a\xda\xdaZR\ +\xa9\x14\x93\x93\x93TWW\xa3\xeb:\xaa\x87\xc4\xb6m\ +L\xd3\x94\x15N\xc2[Vu\xe5\xf3\xf9\x8f\xfd\xe9\x9f\ +\xfe\xe9\x97M\xd3\x04)\xc9\xd8E\xde\xbdh9\xa9\x9f\ +\x19\xcc\x15S\xfc\xc3\xc3_\xc6\xd0\x0d4C X\x80\ +\xae\xc1\x82F\x9d\xa1\xa1!\x1a\x1b\x1b)\x16\x8b\x04\x83\ +A\xe9y^\xf8\x15\xd1\xefcccl\xd8\xb0\x01\xc3\ +0\xfc\xfc\xb9Z\x83\x83\x83\xbe\xc1\x02x\xee\xb9\xe70\ +M\x93J\xe2\xcdu\xdd\xaa\x95+W\xde5555\ +\x18\x8f\xc7\xff\xe1\xad*!\x9e\xe7\xd5)\x16\xbb m\ +\xec5#,\xe8\x89\xe1\xe2\x22mp'\xa2X\x93\x01\ +\x9c\xc9 V\xdc\xf0\xab\xdeUCl*\x95\xa2\xb9\xb9\ +Y\x14\x8b\xc5\xab\xda\xda\xda\x18\x1b\x1b{\xf9*K\xd3\ +4O\xa9\x9eH$B0\x18\xf4\xeb\xb0T\xd7\xd4\xe1\ +5Xjz\x82j\x03\x03B===W\x01\x7fr\ +\x0c\xd8\x8fr\xff\xa1eQW\x13\xa2Tp8w\xc1\ +_\xf3\xde%W\x10h\xb5\xa8\x7f\x9bC\xd5y\x09J\ +y\xfb\xe0L\xc8\xf9z,U\xa0.\x84\x08\xbe\x18\x18\ +G\x94\x90\xaa\xaa\xaa{\xc7\xc6\xc6\xd6\x7f\xf6\xb3\x9f\xfd\ +\xf3\x9a\x9a\x1a.\xbd\xf4Rn\xbb\xed6\x92\xc9$+\ +W\xae\xc4\xf3<~\xf9\xcb_\xb2r\xe5Jv\xec\xd8\ +\x01@0\x18\xa4X,\x92\xcdf\xfd\xc1\x01\xf3\xae\x9e\ +\xfbVT]\xa1P\xe8/\xd6\xaf_\x7f\xff|%\x8d\ +t])\xc2U:\xde/\x1a\xc8\x08\xc9\x03\xdao@\ +\x80\xa6u\xfa\xef\xa9\xae\xd7\xd8\xbcy3\xcb\x96-\xf3\ +[\xe1\x94*?R\xd0\xfcG\x01\x99\x9a\x9a\x92\x8b\x16\ +-\xb2\x1ex\xe0\x01>\xfe\xf1\x8fs\xf3\xcd7\xd3\xd7\ +\xd7\x87\xa6i\xc4\xe3q?%\xb9e\xcb\x16\x0a\x85\x02\ +\xc9d\x92\xe6\xe6f\x9f|T\xee\xafm\xdb\x84\xc3\xe1\ +3.\xbc\xf0\xc2g\x06\x06\x06\xfe{pp\xf0\xd6\xb7\ +\x90\xaa\x0a)\x9bh\x08]\x0c\x9d\xb0\x8bw\x9c_\x85\ +\xeb\xb9\xd8)\x0d\xd2\x11\xdc\xb4\x81\x9b4)\x0e\x86\x91\ +\xae\x00\xb7\xac\xde+\xa7\xd7\x05\x02\x01\x12\x89\xc4\xf3\x86\ +a\xec{En\xaf\x94Rs]\x97/}\xe9K~\ +\xbd\x95\xf2\x16\xa4<\xb4]K\xd34\xa6\xa7\xa7}\xf1\ +T\xddF\xf3\x11lM}}\xfd;kkk\xf7\xbe\ +EH\xc4\xda\xfa\xfa\xfa%\x89Db\xd1|\xd2\x0d]\ +j\xe8\x96 5$\xa9\xd3N\xa4\xb5\xae\x9a\x01o;\ +\xa2JCT\x0br/T\xe3\x155\x7f\x22\xc5\xc1\xd9\ +\x92R\xb52|sjj\xea\x99W\x04\xc8\xec\xec\xec\ +W\xb3\xd9l\xe75\xd7\x5c\xf3\xaeB\xa1\xc0\xbb\xde\xf5\ +.\x1ex\xe0\x01<\xcfc\xc1\x82\x05\x8c\x8f\x8f\x13\x0e\ +\x87\x89\xc5b<\xf3\xcc3\xb4\xb7\xb7\xd3\xd2\xd2B\xb1\ +X\xf4I\xb6\xcaQ\x15/\xb7M\xf8\x8dZ\xc5b\xf1\ +\xe3\xa7\x9f~\xfa?(C^\x92\x16\xc1\x06\x87\xa6\xd9\ +\xb7#\x9e\x13\xe4\x80\x1c\x0e\x01N\xf5\xdf\xd3\xded\xb0\ +{\xf7n\xbf\x15CU\xe2\xa84\x05\xe59\x8dG\xaf\ +\xb2\x0c\xc3 \x9dNo^\xb8p\xe1\xd0\xbe}\xfb\xde\ +\xf5\xef\xff\xfe\xef\xf4\xf7\xf7\xb3t\xe9R\x0c\xc3\xf0\xdb\ +\xa3\x0d\xc3 \x1a\x8dr\xca)\xa7077GCC\ +\xc3!\x05e\xaaIt\x9e\x07\xfb\xe0%\x97\x5cr\xfe\ +\xcc\xcc\x8c\xd8\xbe}{w:\x9dN\xbcY@\xa8\xb4\ +m\x9e\xe7\x99\xf9|\x1e!\x04y\xb7\x04\xe7\x1e`\xf1\ +\xb20\xd2\x03i\xcfG\xe4\x96\x86=m\x92z\xbc\x0e\ +)\x5c\xbf\xa1G\x1d\xc0d2I0\x18D\xd34\x19\ +\x08\x04\x84eY\xe6+\x02\xa4\x22\x12\x17}}}\xac\ +[\xb7\xce7P\x87\x97\x8d*\xf5%\x84\xe0\xd7\xbf\xfe\ +\xf5\xc1!e\x9aF\xb1X\xf4\x01\x11B\x84\x0d\xc3\x08\ +\xd7\xd6\xd6bY\xd6\x9b\x8a\x16\x8e\xc7\xe3\x9cr\xca)\ +\xff\xa7\xb9\xb9\xb9\xb3T*ud\xd2i\xf04\x1c\xcf\ +\xc3x\xb2\x96\xa1\xcd\x82\xf9V\xe7\x0a^\xd6%;3\ +MuM\x95\xdfa\xe6\xcf\x1b\xb6mB\xa1\x10\xba\xae\ +\x8bM\x9b6\x9dX__?\xf1\x8a\x00Q\xabT*\ +M\x99\xa69\xaa\xebz{SS\x13\x86a\xf8\xdc\x8c\ +\x9a_\x15\x0a\x85|#\xaf\x8a\xe9\xd4\x00\x80\xd9\xd9Y\ +\x7f\xca\x8e\x9a\xdb\xeb8\x0e]]]\xd7\x04\x02\x81\xec\ +\xc4\xc4\xc4\xf3SSSO\xbe\xd1R1\xefY^\xb0\ +`\xc1\x82z\x80\x84\x9d\xa6z\xcd,\xf5\xd5!\x9c\xc9\ +0\xced\x08Y\xd2\xf1J\xe5\xb9\xbex\xe5\xc3\x18m\ +)w\x07TN]U\xd9SUt.\xa5\xdc73\ +3s\xc4\xfbyI\x95\x85\xf9|\xfe\xbf\xc7\xc7\xc7\x7f\ +\xdc\xd4\xd4\xf4?\xef\xbe\xfbnV\xadZ\xe5\xab\xa3\x0f\ +}\xe8CLNN\xb2|\xf9r\xba\xba\xba\x98\x99\x99\ +a\xed\xda\xb5\xac^\xbd\xda\x1fJ\xa6Z\xdb\x22\x91\x88\ +?$\xcc\xf3==}\xdbK\xbd\x97\ +\x97\x05\x88\xda\xd4D\x22!=\xcf\x13\xf3\x5c\x15\xba\xae\ +S,\x16\x0f\xe9QW4\x8bJh%\x93Iff\ +f\xa8\xa9\xa9\xc1\xb2,L\xd3T\x80\xc8\xce\xce\xce\x8f\ +,Y\xb2\xe4#\xba\xae\xf3\xab_\xfd\xea*\xe0\xee\xd7\ +AU\xb5\xa5\xd3\xe9\xf3<\xcf+\xe5r\xb9\xe5\xaac\ +8e\xe7\x09\xafL\xa1\x05\x83\xd0%\x91\x96\xc0M\x99\ +8I\x037i\x10\xf6j\xa9\xae\xa9Fz\xd2\xb7\x8b\ +\xba\xae\xfb\x83\xdc\x943T1(\xe1\xc0\xe8\xe8\xe8o\ +_\x0b@\xe2[\xb7n\x0d\x06\x83\xc1[>\xf1\x89O\ +\xdcx\xf6\xd9gs\xfe\xf9\xe7\xf3\xedo\x7f\x9b\xed\xbb\ +%_\xa5\x00\x00\x09\x83IDAT\xdb\xb7\xf3\x8ew\ +\xbc\x83t:\xcd\xe0\xe0 555>\xaf\xb5z\xf5\ +j\x9e{\xee9\x1f\xac\xc3g\xf8Z\x96%\x94s0\ +\xdf\x22\xd7\xd1\xdd\xdd}\x86\x94\x92\x99\x99\x99=\x13\x13\ +\x13\xafI#{\xa1P\xf8\xcb\xcb.\xbb\xec\x9fU\xbb\ +rQ+\x12\xad\x13`\xe9x%\x0d\x99.\xdb\x88\xb2\ +b\x97\xc8\x060\x9a\x0d\xb6\xef\xd8F\xc8:\x98bP\ +\x87+\x99L\x22\x84\xf0\x0f\x9ceY\x04\x83Al\xdb\ +~YsF^\x0e \x92\xf2\xcfM8\xdb\xb7oG\ +J\xc9\x8f\x7f\xfcc\xa6\xa7\xa7\xf1<\x8f\x07\x1ex\xc0\ +O^U\x8e\xca\xdb\xb4i\x93_\xfe\xa2NN\xa1P\ +8\xc4E\xac\x9c\xd5x\xea\xa9\xa7\xde\xd6\xd1\xd1q[\ +$\x12\xe1\xe1\x87\x1f^\x05l}\x15\xa5\xe2\x03\xc0i\ +\xe5\xbdt\xdf\xbds\xe7\xce\xf2\xc8\x0c\xcfA\x9c\x90\xa6\ +\xa6t\xa8Wj'u\xec\xf1 &!\x9a\x9b\x9b9\ +\xfc\xc7\x04\x0e?\x5c\xca3\x8d\xc5bd\xb3Y\x06\x07\ +\x07\xfbu]\x1fx\xad\x00\xf1\x1d\x81P(\xc4\xb6m\ +\xdb\xfci\xa4\xaa]AuTU&\xf2\x95d\xa8\xea\ +\x8b\x5c.G\xb1X\xf4\xd9\xe3J\xcfKM\x11M\xa7\ +\xd3x\x9eGGG\xc7\x7f\x9et\xd2IE\xd7u\xf5\ +\xde\xde\xde;\xe2\xf1\xf8\xd7^\xce\x8d\x1e6\xce\x96l\ +6{\xcde\x97]va6\x9bE\x08A\xa2v\x5c\ +v.3\x85\x15\x0f\xe3\xcc\x04\x91\x19\xd3\xf7h\xa5\xe7\ +!5Ixi\x98\x8d\x9b6R[[\xeb\x03R9\ +\xe4SM\xe9VqW0xp\x5c\xfa\xf4\xf4\xf4\xb2\ +\x97\xcb\xdd\xbdl@t]\xbf\xfb\xc9'\x9f|J\xd7\ +\xf5+/\xba\xe8\xa2\xcb\xd6\xae]K[[\x1b\x9b6\ +m\x22\x9dN\x93L&\x99\x9b\x9bC\xd7uN8\xe1\ +\x04\x86\x87\x87\x99\x98\x98\xe0\xf4\xd3O\xe7\x85\x17^8\ +\x044\xdb\xb6\xfd!6\xa5R\x89`0\xe8\x7fa\xdb\ +\xb6\xa9\xab\xab\xebT?\xfe\xb2k\xd7\xaeu\xe1px\ +\x06\xd0\x82\xc1`!\x99L>p\xa4{\x9d\x9c\x9c\xe4\ +\xe4\x93O~|\xd1\xa2Ek\x95]\xdb7\xb6W\x06\ +\x82\x9a\x90\x05\x03}&\x22\x0e\xf4\x83\xd0l\x84f\xe3\ +z\xae\x1f?\x00\xd4\xd4\xd4\xa0\xe9\x07\x8b;*\x01Q\ +\x01\xaf*\x5c8\xf1\xc4\x13\x89\xc7\xe3\x94J%\xaa\xaa\ +\xaa\x0e\x99R\xf1r\x88\xd4\x97\x0d\xc8\xdc\xdc\xdc 0\ +XSSs\xd6\xce\x9d;Y\xbe|9\x03\x03\x03\xfe\ +TO%\xca\xae\xeb266\xe6s];v\xec\xf0\ +\xdb\xe0T\x10977\xc7\xe1\xe3e+\xb8/\x7f\x13\ +\x00\xd9\xdd\xdd}\xc9\x8a\x15+.\x01\xd8\xbf\x7f\x7f~\ +tt\xb4e^E\xe8SSSO\xba\xae\x1b\x9f\xe7\ +\x8d\x16\xb5\xb5\xb5m\xac,\xd9\xac\xdc\x10\xe9I\xa1\xa4\ +@I)\xc0\xf4\xf44===~,1;;[\ +\xe6\xaf\xe6'ST\x8e\x16Q\x80T\xd2\x22K\x96,\ +azz\x9aR\xa947555R,\x16\x9d\xa3\ +Q\xab\xaf\xa8o\xa0\xad\xad\x8d\x8d\x1b7\x02\xfc\xc1Y\ +\x1eUUU\x87\xe7W\x08\x85B\xb8\xae\xcb\xd4\xd4\x94\ +\x1f\xd9+]\xac\x86\x84)\x09Q\x7f\x03\x22\x97\xcb1\ +11\xa1\xf4td\xc5\x8a\x15_W\xc4\xdd\xd6\xad[\ +\xa9\xae\xae\xf6\x83\xd0\xe9\xe9\xe9?X\xb2\xe98\x0e\x17\ +^x\xa1\xef\x11\x8d\x8f\x8f\xd3\xd8\xd8\xe8\xdf\xbfr]\ +\x95:R?\xb1\xa1\xa6\xe2)W]U\x8e\xa8a\x97\ +\xba\xae322\xa2\x00zx\xf7\xee\xdd\x97\x1f\xed\x9e\ +\x1e5 \x9e\xe7}\xed\xd9g\x9f\xfd\xb1eY+{\ +zz\xee\xbd\xf5\xd6[ikk\xe3g?\xfb\x19;\ +v\xec@\x08A6\x9be\xd9\xb2e\xf4\xf6\xf6\xfa\xcd\ +=\x8d\x8d\x8d\xec\xdb\xb7\xcf\xd7\xbb\x8a\xda><\xd2U\ +)`\xe5N\xab\x0dRA\xa6\xda\x14)%\xad\xad\xad\ +\xb4\xb5\xb5!\x84`rr\x92\xd6\xd6V?\x0e\xd8\xbb\ +w\xaf\x9f\xd7\xdf\xb5k\x97\xcf\xbf\xa9\x93\x7f\xb8\x81V\ +\xb4\x90\xf2\x9e\x0e\xf7\x0c\xd5\xf5\x01\x9fH\x1d\x1c\x1cd\ +nn\x8e\xaa\xaa**\x87v\xbe\xae\x80d2\x99)\ +`J\xd7\xf5*M\xd3\xf8\xdc\xe7>GCC\x03\x89\ +D\xc2\xffRRJ&&&\x0e\xa1\xeb\x15X\xb1X\ +\x8c\xee\xeen\xe2\xf1\xb8\xaf\x12*\x87k\xaa\x7fJ\x8a\ +\x94\xe1\xaf\xcc\xb1Tf\xf2\x14\x11\xa8\x0c\xadr4\x14\ +\xeb\xac\xdcT\xc58+\xf0\xd5\xe7\xa8\x83\xa0<\xc2\xca\ +\xc2\x84\xf9\xa19\xfe\xf7P\x0e\xcc\xb2e\xcb\xe8\xeb\xeb\ +\xc30\x0c\xe2\xf1\xf8\x1dB\x08\xafP(<\xf3\x86\x00\ +R\xa1\x86\x9cR\xa9T\x0c\x87\xc3\xc5d2\x19\x8dF\ +\xa3f0\x18D\xd7u\x7f4\xac:e\xca\xb0\xaaM\ +S\xd5\x8f*\x9a\xd7u\xddO\xffVf\xd6TO\xb8\ +\x92\x10!\x84/!\x95:^\x01\xa7\x1c\x05\xe5\xc1\xa9\ +MW\xaaG\x01\xa2\xc6\xc1V>\xa7\x0e@% \x95\ +?\xb7QUU\xe5\x17\x5c\xff\xf6\xb7\xbf%\x12\x89\x10\ +\x89D\xd8\xb7o\x9f?3\xb2\xa9\xa9\x89\xa9\xa9\xa97\ +\x06\x10\xdb\xb6\x9f\xdb\xbe}{\x18\xa0\xbe\xbe\xfe7\xdd\ +\xdd\xdd\xe7}\xecc\x1f\xe3\xc9'\x9fd``\xc0O\ +a*C\xaf6D\xd7u\xb2\xd9\xac\xcf\xf7\xd4\xd4\xd4\ +\xf8\x06_\xc53*\xda\xadT\x1b*\xd9\xa3\x00;|\ +\xde|\xa5$\x05\x02\x01\x7fc\xd5\xa6+\xe6\xf9p\x8f\ +I]Oy\x81J\x22T\x1b\x9f\xca\x8btvv\xb2\ +|\xf9r\x1e{\xec1<\xcf\xa3\xa5\xa5\xe5\xff\xe9\x1b\ +\x9f\xf7\ +\xd5\x92J\x03T\xb2\xd1J\xdbh\x9aFMM\x8d\xff\ +9\xea\xf5\x81@\x00\xd7uy\xea\xa9\xa70\x0c\x83P\ +(\xf4D*\x95\xba\xfc\xb5\xda\xb7\xd7\x0c\x90D\x22\xe1\ +\xcf\xea\xee\xec\xec\x1c\xe8\xec\xec\x5c\xf2\x12\xed\x90O?\ +x\x9e\xc7\xc2\x85\x0b\x19\x1c\x1c$\x12\x89\xf8S\xa6\xfd\ +\xde\xbe\x0a\x1aF\xd9\x1de\xaf\x14X\x87O\xd6V\x91\ +\xb9\xa6i\xbe\x87\xa7$\xa8\xb3\xb3\x13\xc30\x18\x1c\x1c\ +\xf4'\x1f\xcdW\xce\xa4ggg\x9f\x13Bx\x96e\ +m~-\xd3\x02\xafK\x87\x7f.\x97\xfb\xfe\xf8\xf8\xf8\ +\x02\xcamn\xef\x0b\x87\xc3\xcb\x8e\xd4\xaf=33C\ + \x10\xe0\x99g\x9e\xf17\xf0\xec\xb3\xcff\xe3\xc6\x8d\ +h\x9a\xe6\xf7\xa8$\x12\x09\xbf\x92R\xd9\x0a\xd34\x0f\ +\x99\xbc\x1d\x0c\x06}O\xaf\xb5\xb5\x95\xd9\xd9\xd9r\xea\ +5\x1ae\xe9\xd2\xa5\x0c\x0f\x0f\x93\xcb\xe5\xd04M\xfd\ +W\x0a!\x84\xe38\xaa#l\xdf\xd0\xd0\xd0\xf9/\x96\ +\xf6}K\x012?\x90\xfe\x0b*\x9f|\xc2\x09'\xb4\ +.X\xb0`YE\xe4+\xc5\x1f\xe09*\xd5\x98\x8a\ +i*\xf3\xf8\xd1h\xd4\x1f1X__\xcf\xf2\xe5\xcb\ +\xd9\xb3g\x0fuuu\xe4r9\x82\xc1 \xb9\x5c\x8e\ +\x13O<\x11!\x04\xa9T\x8aD\x22AGG\x07\xef\ +|\xe7;\xf9\xf5\xaf\x7fM\xa1P\xa0\xa1\xa1\x81\xde\xde\ +^4Mc\xff\xfe\xfdJ\x8d\x89\xc1\xc1\xc1o9\x8e\ +\xb3\x0fp#\x91\xc8\xc0\xe1\xc5\x10\xaf\xd5z\xddg\xae\ +k\x9a\xb6@\xd3\xb4\xc8\xfc\xe3\x0fvww\x7f\xe5H\ +\xf3?\x94>Wv'\x10\x08\xf8\x86\xd9\xb2\xca?\xb3\ +z\xd5UWq\xdf}\xf7\x11\x0e\x87\xa9\xad\xadez\ +z\xda\x9f>\xb1a\xc3\x06~\xfe\xf3\x9f377G\ +WW\x17\xdd\xdd\xdd<\xfe\xf8\xe3\xaa:\xdfWm\xea\ +\xf7\x15]\xd7%\x93\xc9\x9c\x1b\x8f\xc7\x1f\x7f\xbd\xf7\xe7\ +\x0d\x1d\x82\x1f\x0e\x87Okll\xbcL\xd7u\x07 \ +\x1a\x8d~*\x18\x0c\x1eq\xae\xaf\x9a`\xa7\xd4\xd3\xd8\ +\xd8\x18\xd5\xd5\xd58\x8e\xe3\xe7$\x14\xf1711A\ +]]\x9d?s8\x16\x8b\xf9\x81a\xa1P\xf0m\xca\ +\xfc\xe8\xf3Cf\xd1\xbf\x11\xe3l\xdf\xd0)1\x85B\ +a\xc7\xc8\xc8\xc8\x8e\x0a\xdd\xecE\xa3\xd1*)\xa5\xb4\ +m\xbb\xcb0\x8c?;R\xa3\xbd\xb2\x05\xcac*\x16\ +\x8b~\x90\xa9b\x09\xf5k\x9c\xd9l\x16\xcf\xf3vK\ +)u\xd7u\xddd2\xf9\xf7\xe3\xe3\xe3?y\xb1\xcf\ +~#\xc6\xd9\xbe\xa1\x12r$\xed\x06\xf8\x9c~,\x16\ +\xbbZ\xd3\xb4\xd8\x8b\x81\xa2\x96i\x9a>\x95!\x84(\ +\x00{\x8b\xc5bVJ)c\xb1Xfvvv\xfb\ +ai\xddcy\x04\xc8\xf1u|\x1d_\xc7\xd7\xf1u\ +|\x1d_\xc7\xd7\xf1\x05\xc0\xff\x05\xf4\xe6\xb0\x9e\xc6n\ +\xd0\xb8\x00\x00\x00\x00IEND\xaeB`\x82\ +\x00\x00?\xd1\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00P\x00\x00\x00P\x08\x06\x00\x00\x00\x8e\x11\xf2\xad\ +\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ +\x00\x00\x09pHYs\x00\x00\x0e\xc4\x00\x00\x0e\xc4\x01\ +\x95+\x0e\x1b\x00\x00\x00\x07tIME\x07\xd9\x03\x03\ +\x0e6\x08!\xa9\x064\x00\x00 \x00IDATx\ +\xda\x9c\xbci\x98$Wy\xe7\xfb;\xb1\xe6\x9eY\x99\ +Y[\xd7\xd2U]\xbd\xaa\x17I-\xb5\xf6\xd6\x0e\x12\ +\x12\x18\x8cm`|\x19l#\x1b\xcc\xb0\x08\xcf\x18\xdb\ +c?\x9e\xe5\xdeg\xbc\x8c\xf1x{\xbc\x8c=6\xc6\ +\xf6\x18\x06c\x1b\x0c\xd8\x80\x05Z\x11\x12\xddH\xa8[\ +\xea}QU\xd7\xbe\xe4\x16\xfbz\xee\x87\xac\xcc\xae\x06\ +\xc6s\x9f\x9b\x1f\xba\xb3\x9e8q\xe2\x8d\x13'\x22\xce\ +\xef\xfd\xff\xdf\x14\xefz\xd7\xbb\xa4\xe38\xd4j5^\ +\x7f\xfdu|\xdfgaa\xc1\xfa\xe8G?Z,\x97\ +\xcb\x84a\xc8\x8b/\xbe\x88\xaa\xaa\x84aH\x18\x86t\ +:\x1d\xd6\xd7\xd7\xa9\xd5j\x9c9sfuhh\xa8\ +\xf8\xfe\xf7\xbf?[\xab\xd5\xf8\xf4\xa7?\xcd\xf0\xf00\ +\x17/^dhh\x88\xf9\xf9yL\xd3\xc44MN\ +\x9e<\x19%I\x12\xfc\xe2/\xfebaxx\x98g\ +\x9ey\x06\xc7q\xb8r\xe5\x0a\x83\x83\x834\x1a\x0d\x86\ +\x87\x87\xd9\xd8\xd8`nn\x0e\xdb\xb6;\xb7\xdf~\xbb\ +x\xc3\x1b\xdeP\xac\xd7\xeb<\xf3\xcc3\xac\xac\xac\x90\ +\xa6)\x8e\xe3P*\x95\xb8|\xf92Q\x14\xe1\xba.\ +\xf3\xf3\xf3\xb3\xefy\xcf{\xb6?\xf0\xc0\x03|\xe9K\ +_\xe2\xca\x95+\x14\x0a\x05\x82 \x8a\x22fgg\ +\xa9V\xab4\x9bM.]\xbat\xee\xae\xbb\xee\xda\xf9\ +\xb3?\xfb\xb3\xcas\xcf=\xc7K/\xbd\xc4\xf4\xf44\ +\x97/_F\xd34l\xdbfrr\x92s\xe7\xce\xb1\ +\xb8\xb8\xb8\xb4\xb2\xb2\xb2\xfc\xeb\xbf\xfe\xeb7f\xb3Y\ +N\x9c8\xc1\xfa\xfa:\xb6m\xa3\x0c\x0d\x0d\x91\xcb\xe5\ +\x10B099\x89\xa6i\x08!\xc8\xe7\xf3\xfc\xc8\x8f\ +\xfc\x08\x83\x83\x83T\xabU\xa6\xa6\xa6\xd8\xb1c\x07\xc5\ +b\x91R\xa9\x84\xae\xeb\x8c\x8d\x8d\x01\x10\x86!\x0f<\ +\xf0\x00\xd7_\x7f=\xa6i255\xc5\xe0\xe0 \xdb\ +\xb7o\xa7^\xafc\x9a&\xfb\xf7\xefG\x08\x81\xef\xfb\ +\xec\xdf\xbf\xbf\xbfmll\x8cR\xa9\xc4\xbe}\xfb\xc8\ +\xe7\xf3\x14\x0a\x05v\xee\xdcI\xa1P@UUVW\ +W\xb9\xfd\xf6\xdb)\x95J\xa4iJ&\x93\xa1T*\ +\x11\x04\x01\xba\xae#\x84\xa0^\xaf\xa3i\x1aRJ\xf6\ +\xee\xdd\xcb}\xf7\xddG\xb1Xdpp\x90\xe9\xe9i\ +\x06\x06\x06\x98\x9c\x9c\xc40\x0c\x86\x87\x87\xc9\xe5r\x00\ +h\x9a\xc6\xbe}\xfb0\x0c\x83\x5c.\xd7\xdf^(\x14\ +0\x0c\x83(\x8a(\x16\x8b\xa8\xaa\x8a\x10\x82\xc1\xc1A\ +n\xbe\xf9f\xc6\xc6\xc6\xd8\xbbwow\xdc\x0e\x1f>\ +,\x01\xa4\x94\xfd\x00;\x9d\x8e\x95\xcf\xe7\x8b\x99L\x06\ +\xd7u\x11B \xa5\xa4\xf7\x91R\x22\x84@\x08A\xa7\ +\xd3Y\x1d\x1c\x1c,\xa6i\x9a\x05\x88\xa2\xa8\xbf=M\ +\xd3\xfe\xbeRJ\xe28\x8e\xa2(\x0a\xf2\xf9|\xa1X\ +,b\xdb\xf6\xf7\xf4\xbb\xf5\x7fM\xd3:\xedv[\x94\ +J\xa5b\x92$(\x8ar\xcd\xf1\xb7\xf6_\xadVy\ +\xed\xb5\xd7f\xaf\xbb\xee\xba\xed\x8e\xe3\x90\xa6i\xff\x9c\ +zmz\xfb\xe8\xba\xce\xec\xec\xec\xb9={\xf6\xecl\ +\xb7\xdb\x8a\xa6i\xd7\x1cw\xebGJ\x89\xa2(Kk\ +kk\xcbCCC7\x9a\xa6\x89\xef\xfb\x08!\xba1\ +\xa6\x89l\x08\x01\x08P\x14\x05\xcf\xf3R\xcb\xb2.g\ +\xb3Y\xdd\xb6m\x04\x824\x95\x80@\x08\x09\x9bm{\ +\x07\x8b\xe3x\xa5\xd3\xe9\xec\xd14\xad$\x10\x9b\x07\xdd\ +\xfcG\x00\x9b\xfbl\x1e0\xf4\xc4\x83 I\x12\xc20\xc4\xf7}\xa2\ +$\xa4\xb1\x16\xf2\x8e\xeb\xfe\x1d9o\x86\xf7\xdf\xfc\x9b\ +\xbc\xe7\x9e\x9f!\x90n\xbf}\x9a\xa6[\xf6\x8dyt\ +\xfb\x87\xd9\xad?\xcc\x8f\xdd\xf2K\xdc\xbf\xe31D\xd1\ +'\x08||\xdf'\x8ec\xa28\xc2s]\xa2$f\ +\xbc\xb0\x9b\xa3\xa3\xef\xe4\x07\xa7~\x81\x01\xefv\xee\xbf\ +\xe1\xcd\xb8I\x1b\xdf\xf3\x89\xa2\x08\x00?\xf0q]\x17\ +]\xd3\x98\xd2o\xe7\x81\xf1\x9f\xe0\x86\xf2\xdb\xf9\xafo\ +\xf9\x12\xb2\xe0\xe1\xfb>\x9e\xeb\x91\xa6i7n/ \ +\x11\x09\xae\x1b\xf0\xa1\x83\x7f\xc2\x1bv\xbd\x9b\x8f\xde\xfe\ +\xe7LL\x8f\x12\xe2\xe1{>a\x18\xf6\xc7$\x08\x03\ +\xa4\xf0\xb9]{\x9c['\xde\x80\xa2\xc4:n\xe0\x10\ +\x04\x11\xbe\xe7\xf5\x1b{\x9e\xd7}\xfd'\x01\xfb\x87n\ +\xe3\xb3\xaf\xfd.\xf3K\xeb\x1c\x1c\xb9\x15\x05\xa5;\xc0\ +\xbeO\x92$DQ\x84\xe7y\x84A\xc8\x80>\xc1\xb2\ +5\xcb\x8b\xb3Op\xc7\xf4Cx\x91C\x14\x84\xfd\xfe\ +\x92$\xe9\xefk\xaay\x06ru\x9e_\xfa\x1bn\xa8\ +\xbf\x81Zn\x84\x92^\xc7\xf3\xaf\x0e`\x12'x\xbe\ +O\x1cE\xe4\xf4\x02J\xc6\xe5[\xe7\xbe\x85HUl\ +\xbfI\x1c&x~w`\x00\x02?\xc0u=4U\ +\xc5i\x09\xbe~\xfe\xf3(q\x9ej\xa5@\x92$x\ +\x9e\x87\xe7y\xf4\xee\x1a\xcfsQ\x15\xc1\xc5\xb3\x16\x03\ +C*\x1b\xce2\xd7O\xdeL53F\x10v\xe3\x88\ +\xa2\xa8{\xe17\xbf\xb7:\x1e?\xf5\xc8c\xfc\xd3\xf9\ +O\xa0$2%\xa3\x94\x88\xe2\x88 \x08\xfa\x03\xd8\x9b\ +%\x0a*~\xe2P\xcf\x8e3P\xa82\xb7>\x8b\x84\ +\xef\x19\xc00\x0c\x89\x93\x18?\xb1\x19,lC\x13Y\ +Z\xde\x1aY-G\x14\xc7\x84ax5\x90 \xc0\xf7\ +}$)\x0a\x1a\x9e\x03\xa9\xea\xd1r\xdb\xac\xdb+\x84\ +\x9b\xdb\x93$!\x8e\xe3\xcd\x81OIdB\x1a\x19\xcc\ +\x8c\xee\xa2\xe3\xd8\x943C\x84q\xd0\x8f\x15 \x08C\ +|\xdfCQ\x14\xf2E\x9d\xbdC7b\xf9M2J\ +\x09M\x18\xdd\xb6a\xf7.\x8b\xa2\x08\xcf\xf7\x91RP\ +\x190I\x02\x1d)\x05H\x85\x86\xbbL\x12\xa7\xfd\x01\ +\x94R\xe2\xf9>a\x14b\xe8\x1as\xcb\xcb\x18J\x16\ +\xedX\xfb\xd3xJ\x03\xdf\xf3\xb0\xec\x88l\x9aAJ\ +\x89\xe38\xf8qD\x11\x83/\xbf\xfeG\xbc\xf7\xd0\xaf\ +r\xb2\xf3\x0f\x5crO\x10\x8b\x00\xc7qPU\xb5?\ +x\xae\xeb\x92\x1a0RW\xf8\xc6\x99\xe7\xf8\xf9G\xff\ +\x1f~\xeb\x9b\x1fd|t\x9c4Iq\x9c\xcd\x19\xb5\ +9\x0b\xa4\x94\x0ch\x82\xa7.\xfd\x1d?\xff\xc6\xdf\xe4\ +S\xaf\xfd\x1a\x96\xefP\xcaTp\xddy\xe2@b\x18\ +\x06a\x18b[\x16\xbe\x1e\xb3d_b\x89E\xf6o\ +\xaf!\x07/p\xa9\xd1] [\x96\x8fa\xea\x00\xb8\ +\x8e\x83\xdbq\xd1R\x9d\xa5\xe8;\xdc\x9b}+Qq\ +\x8e\x8f?\xfdA\x14\x15l\xdbF\xd3\xf4\xab\x93\xc4\xf1\ +\x89\xf21\xdb\xb7\x0f\xf2\xd4\xa9\xaf2\xb3}\x86\xdf{\ +\xf1q2F\x860\x0e\xb0\xed\x18\xdd\xd4H\xd3\x14w\ +sL\xca\xf9\x22\xbf\xf5\xcc\xe3|\xec\xc1?@[\x5c\ +\x9b\xa5\xd1Yc\xf9l\x9b\xc8M\x91\xa4\xa4iJ\xab\ +\xd5\x22H\x22\x8aA\x1eW[\xe4\xf7\xbe\xf58\x8f^\ +\xff\xc3\x9c]=\xc6\xea\x0b\x92v\xdbFQ\x14\xd24\ +\xc5\xb6m\xda\xed6R\x15\x08\xa5\xc2\xf3\x8dO0>\ +7\xcajg\x8e\xc5\xd59\x16\xce4\xf1\xdaI\x7f\x0d\ +\x16\x86!i\x9aRH\xf2\xcc\x06\xdf\xe2\xd9\x85\xcfb\ +\xf9MN/\xbc\xc2\xec1\x9f\x8d\x15\x07\x04\x94J\xa5\ +.\xf9D)A&%QJ<\xb3\xfaW\xb4\xd3\xa3\ +\xf8\x9e\xc5K\x17O\xb0r\xda\xc1wb2Y\x13\xe8\ +\x0e\x90m\xd9\x14\x92\x02\x8eX\xe5\x8b\xb3\xbf\x8deY\ +,\xaf-\xb0\xf2J@\xbbaad\xb5\xfe$\xb1\x1a\ +m\x9c\xa2$\x91\x15\xbe\xd5\xfc\x14\xcb\xfe\x8d\x5cn\xbd\ +\x8c\xe3\xb8\x5c\xfaf\x03\x99\xa6\xe4\x92\x1ci\x9a\xd2h\ +4\xe9\xc8\x8402q3\x97\xf9\x95\xaf|\x041=\ +\xb1S\x0a\x04f^#\x8cB\xb2\xd9,Q\x14Yi\ +\x9a\x16k\xd5:r\xacCiXg\xe5;\x1e\xeb\x17\ +]L\xc3D\xa8\xa0\x1a\xdd7Y\x10\x04\xab\x03\x03\x03\ +EEQ\xb2RO)\xdd,\x89\x97R\x16^\xe9\x80\ +\xa7!\x14\x81jv\xd7`i\x9aFB\x88\xc00\x8c\ +B\xa5RA\xee\xb1(\x19:W\x8e[8K\x09\x9a\ +\xa6\x81*QuA\x92$\x14\x0a\x85N\xb3\xd9\x14;\ +gv\x16\x1b\x9d\x06\xa37\x1b\xcc\xbfhc7B4\ +EC\x92\xa2gT\xe2$\xa6R\xa90;;\xfb\xec\ +\xce\x9d;\x8f*\xa8$C\x16j*X~\xd5!\x8d\ +%\xaa\xa2\x224P\xbakf\xc20\xa4\x5c.[\x02\ +Ql\xe2s\xe3[\x0a,\x1cwY?\xe7!C\x15\ +d\x8a\x96\xedN\x10\xc30\xe8t:\xc7\xf2\xf9\xfc\x11\ +3[d\xfb#\x12g!a\xfd\x9c\x8fv\xc7\xdd\xb7\ +\xd2l6\x19\x1d\x1d\xe5\xc2\x85\x0bx\x9e\xc7\xca\xca\x0a\ +?\xf6c?\xc6\xbe}{\x99\xbb<\xcf\xcb/\xbfB\ +}\xbb$\x9d\xec\xbe\x00<\xcf\xa3\xd1hP,\x16\xb9\ +t\xe9\x12\x9a\xa6\xf1\xd3?\xfd\xd3\x0cT\x06\xf8\xabO\ +\xfe5\x95j\x85\xf2\x9e%j\xb5\x1a\x0b\x0b\x0b\x18\x86\ +\x81\xa2(\x5c\xb8p\x810\x0c\xf9\xc0\x07>\xc0\xc1\x83\ +\x07\xf9\xe4\x9f\xfe\x05\xaa\xd40F\x97\x19\xbc\xbe\xce\xc6\ +\xc6\x06\x03\x03\x034\x9bM\x16\x16\x16\x08\x82\x80;\xef\ +\xbc\x93\xc7\x1e{\x8c0\x0cy\xe6\xc9\xe7\x18\xbdq\x19\ +US\xe9t:\x14\x0a\x05\x16\x16\x16p]\x97$I\ +PU\x95\x87\x1ez\x88\xb7\xbf\xfd\xed|\xe1s_\xe4\ +\x95\x13'\x98\xbeS#\x9f\xcf\xb3\xb0\xb0\x80\xe38d\ +\xb3Y\x9a\xcd&\xcb\xcb\xcbT\xabU>\xf2\xf8G\xb8\ +|\xf1\x12\xcf>\xf5M\xf6\x0cd\xd9}[\xca\xfa\xc6\ +:\x85B\x01!\x04KKKX\x96E\x92$|\xe0\ +\x03\x1f`jj;O\x7f\xed\x1b4\xd3\x06\x83\x13.\ +\xda\xe0\xe0 \x8e\xe3`\x18\x06SSS\x9c;w\x8e\ +$I\x98\x99\x99\xe1\xe8\xd1\xbb9U;\xc5Zc\x95\ +\xc1\xc1A\x14E\xe1\x95W^att\x14\x80\xe1\xe1\ +a.]\xbaD\x9a\xa6\xdcv\xdbmd\xb3Y\xbe\xfc\ +\x95/s\xfd\xf5\xd7s\xe6L\x16\xc30\xfaW\xfb\xc0\ +\x81\x03\x5c\xbcx\x11\x80\xc3\x87\x0f3>>\xce-w\ +\x1caee\x05/\xb2\xd9\xb1c\x07i\x9a244\ +\xc4\xae]\xbb\xf8\xcaW\xbe\xd2\x9b%\x94J%\x86\x86\ +\x86x\xf5\xd5W\x11\x9a$\x9f\xcfs\xfc\xf8q\xc6\xc6\ +\xc6h6\x9b\xe4\xf3y\xd6\xd6\xd6\x10BP*\x95\xd8\ +\xbd{7\x03\xf5\x0a\x95j\x89r\xb9\x8c\x94\x92Z\xad\ +\x86eY\x0c\x0d\x0d\x11\x04\x01B\x08\x0a\x85\x027\x5c\ +\x7f\x03\x193\xc3\x99\xb3g\xd9\xbbw/kkk \ +\xa0P(0::J6\x9b\xe5\xe4\xc9\x93\x00\xdcq\ +\xc7\x1d\x94J%:\x1d\x0b\xcf\xf38y\xf2$\xe2\xc6\ +\x1bo\xec\x03`\x8f\x85\xdb\xed\xb6U*\x95\x8aA\x10\ +\xf4\xf9\xf3\xfb}\x14E\xa1\xd3\xe9\xac\x0e\x0d\x0d\x15\x1d\ +\xc7\xc9\xf6\x10\xec\x7f\xf7\x89\xe38\x0a\xc30\xc8\xe7\xf3\ +\x85\xef\xc7\x9d\xdf\xcd\xda\x8a\xa2t:\x9d\x8e(\x95J\ +\xc5\xffS\xfbr\xb9\xcc\xa9S\xa7\x9e\xdd\xb9s\xe7Q\ +\xcf\xf3\xf8\xdf\xc5\x22\xa5D\xd34666\x18\x1c\x1c\ +\xb4\x82 (\xfeKq\xf7bY[[;644\ +t\xa4\xc7\xd6\xbd\x8f\xb65\xaeM\x16\xc6\xb2\xac \x9f\ +\xcfg\x15E\x91H\x90\x89\xd8\xc2\xb4\x9b\x8d\x05\xa4i\ +*\xe28\x8e;\x9d\x0e= G\x0ad\x17SA\x91\ +\xfd\xb6\x9b\xc1H\xdf\xf7\xe3L&\x13+\x8a\x22\x85\x14\ +]\x06\x15\x12\x94\xcdf[X\xd8\xb2,\xdf\xf7\xfd\x0d\ +!D\x19\x90$\xa2\xcb\xd9\xca\xb5\xb1H)\x85\xe7y\ +\x91\x94raccc]J\x19\x90\x8a.'\xa7\x02\ +\x94.\x0bo\xc6!6\x9f\xdd\x0d\xcb\xb2\xb6\x9b\xa6\x19\ +\x0b\x90i\xb2\xd9\xd9&7\xb3%\x96 \x08\x94$\xe9\ +6P\xc4&\xbf\xcb\xcdd\xc2\xf8\xae!\xa4\xa7v\x0f\ +\xd4\x1d\x14\x96\x96\x96.\xed\xd8\xb1\xe3\x80\xe7zi\x98\ +s\xc9\xef\x08\x10\xaeF\xd26I-\x1d\x19uwV\ +UU\x00rxxXd2\x19\x02\x11\xc2t\x8bR\ +A%\xee\xe8\xd0\xce\x90Z\x1a2Q@\x82\xe7yr\ +qq1\x1a\x1b\x1b\x0b\x14E\x91\x8d\xcc\x06c\xbb5\ +\xa2\xa6\x86l\x9b$\x8e\x0aI\xff\xea\x8av\xbb\x1d\x04\ +A0691Y\xf2\x93\x10uG\x9b\xac\xae\x934\ +\x0d\x12KG\x06\xdd~\x01L\xd3\xe4\xc9'\x9f\xbcp\ +\xe8\xd0\xa1\xba\x8c%\xab\xb9e\xb6\x1f\xd0\x08\xda \xdb\ +\x19\x92\x8e\x01\xbe\x8aL\xc10\x0c\x8e\x1f?\xbemb\ +bb\xde4L\xa5\x15\xdar\xe0\x90\x8f\x96\xea\xc4\x0d\ +\x9d\xb4\xd3e\xf2n\x92\x03aYV\x9c$\xc9\xc4\xf4\ +\xf44\x96\xef\x93\xd9cQ\xa8(\x04\x9d\x14\xad\xfe\x03\ +\x1b\xe8\x8aI\xf3\xc9.\xf7\x19\x86@U\xd5\x01\xd34\ +s\x9e\xe7\xa3n\xf7\xa9\xdc\xee\xa0\x87E\xc2x\x0d%\ +6\x90\x81F\xe3\x8b\xdd\x1c\xdc\xe6-\xae&I\x82\x9d\ +\xb1\x19\xbc\xbe\xc3\xee\xf1\xfd\x90\xa6\xcc\xad\x5cDUT\ +:\xcf\xd4\x09\x17u\xd24UTU\xcdi\x9a\x96\x17\ +B\xc0\x1e\x8b\x81\xdb5ri\x9dV{\x1d!\x15\xc2\ +s\x15\xac\x139\x84\x90h\x9a\x96z\x9e\x07R\xb2!\ +[\xec\xbf\xdfFK2\x04n\x03=\xcd\x10\xb9\x02\xfb\ +x\x99`QG\xc9*H)7\x1f\xba\xe0\xee]\xa7\ +t\xc3\x00Uu\x8auk\x0e\xcb\xb2\xd1:U\x1aO\ +\x14\xe9\xa5\xc6\x0c\xc3\xa8\xe8\xaa\x9e\xbf\x98\xac\xf2\xe6\xbb\ +sD\x81O\x96\x12\x1d{\x03C\xe4\xe8|\xa3L\xb8\ +l\xf4r\x8d\x91L%V\xea0z8\xc0S\xda\xbc\ +q\xe7\x0f\xa2<\xba\xfbq\x8a\xd5\x22\xb1\xec\xf2\xec&\ +\x0bK\xdf\xf7\xf1|\x9fT\x84Lr7\x1f\xbc\xf3\xbf\ +\xf2\xaf\xaf\xfb\x0d\xf6\x0c\x1dex\xdb`\x9f&\x92$\ +\x91\xbdLu\x9cF$\xcd\x0a\xf7\x8e\xbf\x93C\x85\xb7\ +r\xcf\xf6w\xf3\xa6[\xdeAx-\x0b\xcb\xdeq\xe2\ +4\xe1\xd1\xed\x1faRy\x80\x07\x0f\xbc\x8b\xa33\xef\ +\xc2\x11\x1b[)G\xc6q\x8c\xe7\xfa\x84I\xc8Hv\ +\x9aG&>\xca\xcf\xdd\xfdI\xbcf\x9d\x1d\xd3S\x84\ +\xd2\xed\xf3j\x8f\x85=\xcf\xc50T\xa6\xd5\xbbx\xcb\ +\xd4\xe3\x1c\xaa\xbc\x95_y\xcb\xdf\x93\xe6\xec\xcdU\x84\ +\x8f\x94\x920\x0c\xa5\xefzD2\xc2s#>|\xfd\ +'\xb8\x7f\xf7\xbb\xf8\xd0\x1d\x7fHe4G$\x83>\ +gK)\xf1=\x8f8\x89hvZ\xfc\xeeCO\xb3\ +\xb4\xbe\x862^\xd8\xc3\xc1\x91;7\x07\xa4\xcb\xc2B\ +\x08<\xcf\xc3\x0f|\xc28\xe0\xba\xa1[y~\xe1\xef\ +y\xe1\xe4\x09n\x9fz\x08M\xd1\xfbL\x99$\x09A\ +\x10tY8\x0a\x19+\xeef\xb1s\x91\xf3k'\xb9\ +m\xfa\x01\x924!\x0ec|\xbf{\x92[\xdbg\xd4\ +<\x95\xcc \xaf{/\xb0\xbf|?;\x87\x0eP\xd2\ +\xeb\xf8\xbe\x8b\xe7y\xc4qL\x1c\xc7\xf8~\xf7{)\ +S!WLx\xf6\xc4\xf3\x1c\x1c\xbd\x83\xdd\xb5\x9bp\ +\x03\xe7{Y\xd8\xf3QU\x15\xa7-xq\xee\x9f\xc9\ +\x8a*C\x03C\xa4I\x17A\x03\xdf\xef'\x13<\xcf\ +CQ\x15.\x9f\xb3\x18\x1a\xc9\xe2G.7L\xdc\xc2\ +d\xe9:\xfc\xb0\x1bG\x0fA=\xdf'\x0a#4\x99\ +a\xb8:\xc4Fz\x06\xcd\x09l\xce\xae\xbcJ\x14\xc5\ +\xf8^\xda}\xa0Cw\xc6\xf8\x01\x86\x14\xb8\xa1\xc5`\ +i\x02Y\xc8\xf3\xfa\xfa\xb9\xfevUU\xfb,\x1c\xc7\ +1i\x92\xd2\xf4\xd7\x18-?Ls=e\xc5\x9d\xc5\ +T\xb3DQD\x10$}\x02\xe9etuR\x14E\ +\xc1w%F\xceg\xfe\xd2\x02\x1b\xf6\x0a\x81o\xf6_\ +\xf3\xeaos9x\x8e\xacV\xc0q]\ +\x1c\xc7\xe9_\x18\xcfu\x09\xc3\x88e\xfbu\xd6[-\ +(\xb4H\xab\xb3\x04i\x17\xee\x1d\xc7\xe9gX\x1c\xc7\ +\xc1\xeaX$i\xca|\xf4m4\x91\xc1\xcf]\xe4w\ +\xbe\xf93\xa8\x9a\x8aeYX\x1d\xab?\xd8\xae\xe3\x12\ +\xc7)SS\x15\xbe\xfc\xca\xe7\x19*\x8d\xf0;/\xfe\ +\x9b\xae&\x12\xfb8\x8e\xd3\xcf\x22Y\x9d\x0e\xae\xeb\x91\ +\xcfe\xf9\xb5\xa7\xdf\xcf/\xdd\xf3\xe7h\xae\xb2\xce\xdc\ +\x859\x96\xce\xb5\x08\xac\x84\x84\x04\x80f\xb3I\xab\xd3\ +!\xef\xe6\x09U\x95\xbf\xbb\xfck\xbc\xe5\xf0;\x99\xbb\ +\xf8\x1ak/I\xda\xedN\x7f\x8d\xd8\x9b\x85\x94\x14\x14\ +\xd5\xe0x\xe7S\xd4\xd7\x14\xda\xd12\xf3_\xd9`\xfe\ +D\x9b\xc8N\xbf/\x0b/\xf8\xdf\xe1\xb9\xa5\xffE\xa0\ +\xd9\x5cz\xfd\xe5\x90v4\xf4\x9c\x82\x96\xed\xb2p\x1c\xc7\ +\xb6\xaa\xaaf.\x97\xd3c#b\xec\x1e\x83`!a\ +\xe9\x94\x83s\x05\xb4\x8c@\xcf\x8a>\x0b+\x8a\x12\xa8\ +\xaaZ\xc8\xe5r\x18\x87\x22j\x15\x9d\xc5\x93\x0e\x1b\xa7\ +bD\x22\xd0s\x02a\x80L%\x85B\xa1\xb3\xb1\xb1\ +!\x86\x86\x86\x8a\x9d\xd8\xe6\xd0\x0f\x17Y;\x15\xb2|\ +\xd2\xc6_VP\x0c0\xf2]}\xa2Z\xad2;;\ +\xfb\xec\x8e\x1d;\x8e\x8aT\x90N8\xe42\x1a\x8b/\ +;x\xeb\x09\xba\xa9\xa2\x1a \xb4\xee\xda.\x0cCJ\ +\xa5\x92\x15\x87q\xb1cF\xdc\xfc\xd6\x22\xab\xaf\xf9\xac\ +\x9e\xf6\xf0W\xba\xed\x8cB\x97\x85M\xd3\xc4u\xdd\xf5\ +|>_\xcf\x97\x8bT\x0eDt\xe6#Z\x97C\xb4\ +;\xee\xbd\x05\xc7q\xa8V\xab\x5c\xb9r\xa5\xa7\x0b\xf3\ +\xe0\x83\x0fr\xf0\xe0A:-\x8bc\xdf:\xce\xd8H\ +\x96\xf1L\x83b\xa9\xc0\xd2\xe2\x12\xcdf\xb3\xa7\x0b3\ +==\xcd#\x8f<\xc2\xf0\xd00\xff\xf3/?\xc5\xde\ +\xc9\x09J\x13\x0b\x8c\xde:\xca\xca\xca\x0aa\x18\x92\xcb\ +\xe58y\xf2$i\x9a\xf2\xde\xf7\xbe\x97\x83\x07\x0f\xf2\ +\x99O\xfd\x0d\x197\x8b\x9a\x9b\xe7\xae\x1f\x9e\xdc\xd4\x90\ +\x0dTU\xe3\xdc\xb9s\x84a\xc8\xe1\xc3\x87y\xdb\xdb\ +\xdeF\x12'\x9cx\xf9U\x0aj\x8bm\xfb}\xb4\x1b\ +\xbbi\xfc\xd7_\x7f\x1dEQp]\x17UUy\xe3\ +\x1b\xdf\xc8\xdb\x7f\xa8\xcb\xc2\xaf\x9e|\x95\xd1\x1bT\x86\ +\x86\x079w\xf6\x1c\xae\xeb\x92\xcb\xe5h\xb5Z}\x16\ +\xfe\xc9\x9f\xfcIV\x96Wx\xfa\xc9\xe7\xd8;Xe\ +\xfb\xf5\x1e\xcdV\x83r\xb9\x8c\xa0\xcb\xc2\x8dF\x03!\ +\x04\x1f\xff\xf8\xc7\x11B\xf0\xd4\xd7\x9e!-'\x5c\xc8\ +\x9cG\x1b\x1b\x1b\xe3\xd2\xa5K\x14\x8bE\xb6m\xdb\xc6\ +\xe5\xcb\x97I\x92\x84={\xf6\xf0\xf6\xb7\xbf\x9d\xb9\xb9\ +9V\xd7W\xa8T*\xb8\xae\xcb\xf2\xf22\x03\x03\x03\ +X\x96E\xa5R\xe9\xeb\xab\xefx\xc7;P\x14\x85c\ +\xc7\x8f1==M\xa1\x9cG\xd7u\xb2\xd9,\xcb\xcb\ +\xcb\xec\xd9\xb3\x87\xd7^{\x8d(\x8a\xb8\xe7\x9e{\xb8\ +\xe9\xa6\x9b8\x7f\xfe<\xcdf\x13\xcbm399\xd9\ +\xcfZo\xdf\xbe\xbd\xcf\xcd\xdb\xb7o\xef\xeb\xbc\xae\xe7\ +\xb2\xb6\xb6F\xa5R\xe1\xc5\x17_dhp\x88j\xb5\ +\xda\x17\xfc\x01j\xb5\x1a\x07\xf6\x1f\xe0\xf9o\x9f\xa7V\xab!\x84\ +\xa0\xd5j\x91\xa6)SSS\x84a\xc8\xd0h\x1d)\ +%\x8bK\x0b\x88\x1bn\xb8\xe1\x1a\x16\xcef\xb3\xcc\xce\ +\xce\x9e\x9b\x9e\x9e\xde\xddK|\xaa\xaa\xfa=\x9am\x0f\ +\xb7<\xcf\xb33\x99\x8c\xa9\xaa\xaa\xbe\xb5\xcd\xa6|\xd8\ +o\x9b$\x09R\xca(\x8a\xa2@U\xd5B>\x9f'\ +\x8e\xe3~?\xbd7c\xef\x99\xaa(\x0a\xba\xaew\x1a\ +\x8d\x86\xa8\xd5jE\xdf\xf7\xd1u\xbd\xdfVQ\x14\xe2\ +8FQ\x14\x92$\xa1V\xabq\xea\xd4\xa9g\xa7\xa6\ +\xa6\x8e\xb6\xdbm\xb2\xd9\xec5\xcc\xba\xf5\xbba\x18\xac\ +\xae\xaeR\xaf\xd7\xad0\x0c\x8b=Q\xbe\xa7%\xf7t\ +\xe4^L\x9b\xcc\xbf^,\x16\xeba\x18b\x18F_\ +\x17\xd7\x0a\x85b*\xb6\xf0j\x18\x86\x8a\x10B\xc9\xe5\ +rd2\x19\xc4&\xdb\xf6\xf4\xd2Ma\xb6\x1f\x94\xeb\ +\xba\x81\xa6ij&\x93Q\x85\x10\x90n\x8a\xf0\xdf\xc5\ +\xcd\x9bK\x9fh}}\xdd\xaf\xd7\xeby!\x84\xcc\x9a\ +Y\xd2dS\x0f\xde\xc2\xc2\xbd\xcf\xfa\xfaz\x92\xcdf\ +\xf5L&\x93f2\x99.\x93\xb3E?\xde\xd2~s\ +\xad\x16FQD\xbe\x90OE\xda\xe3l\xfaK\xb3^\ +,\x9bYt\x99$IR,\x16\xbb*\xf6\xbf\xd0\xb7\ +eY\x22\x08\x02\xafT*\xc5\xa6iJR\x90IW\ +o\xd6Fv\x97\x93\xc4\xd2 \xee\xbf\x14\x12\xdb\xb6k\ +\x13\x13\x13\x84QDR\xf4\xc8\x8d\xc4\xa4\xbe\x02\xbeN\ +\xea\xa8\xa4\xae\xda\xbf\xa2\xb6m\xaf\xd7\xeb\xf5\x9ai\x9a\ +Z$b\xc4\xa8M.\xabu\xb5[\xd7 \xb1UD\ +\xd2\x1d\x1d\xcf\xf3\x9c \x08\xd6\xea\xf5\xfa\x80\xaa\xaai\ +;\xd3dhR%v\x14\xf0t\x12WE\xfa*=\ +\x81>\x0c\xc3(\x9b\xcd\x16k\xb5Z\xe2\xa4\x1e\xa5]\ +\x01$\x0a\xa9\xabv\xdb\xdb*$\x0a 1MS\x5c\ +\xbat)>x\xf0 i\x94&\x8d\xfc*\xdbvi\ +\x846\xe0\x99\xa4\xaeB\xea\xe8\xc8P`\x9a&\xedv\ +;\x19\x1e\x1e\x8es\x99l\xd2\x0cmY\xdb\x17#\xd2\ +n\xdf\xd2\xd3Im\x15\x19+(\xaa\xc00\x0c\xc5\xf7\ +}g\xef\x9e\xbd\x81\x1f\x86\xa9\x1c\xb6)\xd6\x15\x12O\ +\xa2\x95\x1e\x5c\xd5UU\xa5\xf1\x85\x1a\xb1\xd5e[!\ +\x84n\xdb6\x96\xef\x92\x8c\xad\x91\xd9\x1f\xb1-?\xcd\ +J\xebu4\xa9\x90\xba:\x8d/\xd6zo\xb3,\x90\ +I\xd3T\xef\x18\x16CG\x9a\x8cV\x07Q\x114:\ +\xcb\xe8\x19\x95\x8d/\xd6\x88\x9b\x1aI\x92d\x85\x10\x85\ +4MU@\xf5w\xacS\xbe%KM\x1fg\xa9y\ +\x05E\xa8x\xa7\x0b\xd8\xaf\x14\x00\x89\xae\xeb9@\x13\ +\x09,i\xebl\xbfKb\xa4%d\x9a\x10\x04m\xd2\ +@\xa1\xf3b\x89`\xde@\xcd\xa9$I\x92\xf3<\x8f\ +\xd4M\xf5\xd5\xa99\xa6\x0f\x0e0\xaeM\xb3b\xcd\x11\ +y)q[c\xe3\xcb\x15\xc20B\x08\xa1\xab\xaa\x1a\ +\x93\xa2\x9d\xf2\x17x\xeb\xd1<\x2260D\x86\xb6\xbd\ +\x8e\xae\x99\xb4\x9e*\x13.\x19\xbd[\xba\x1eEQ~\ +\xd5\xea0\xfd\x88\x8dZ\xf6\x98*\xedFyd\xe7\xe3\ +\x0cT\x86\x08\x93\xb0\xbf\xa2\x07d\x10\x04\x84AH\xac\ +\xfa\xdc^{7wo\x7f'\xff\xe9\x0d\x7f\xcbt\xe5\ +6\x06\xea\xa5\xfe\x83\xbb\xc7\x94A\x10\x10\xcb\x90\xd6\x1a\ +\xbc\xeb\xe0\xcf\xf3\xd0\xc4\xe3\x1c\x9a8\xca\xdd\x07\x1f\xc6\ +\x0f\x9d^{\xd9\xd3\x91\xc30$\x8c#\xde<\xf3A\ +\x86\xd2\xdby\xd3\x0d\xef\xe2\xc8\xe8\x0f\xe1\xd2\xc2\xdf\x8c\ +\xa3\xc7\xc2\xbe\x1f\x90\xc8\x88\x89\x81\xdd\xfc\xc8\xde\x7f\xcf\ +\xbf;\xfa\xdfY\x9e\xd7\xd919C\x94\xfa\x04\xfeU\ +U\xae\xcb\xc2\x1e\xba\xa12c\x1c\xe5\x8d\x13\xff\x86\xbd\ +\x85\x87\xf8\xc57~\x92\xd8\xb0\xfb\x9a\xf3\xa6*'}\ +\xcf'%\xc6\x0fB\xdew\xf0\x0f\xb9w\xe7;\xf9\xe0\ +\xad\x7f@\xa9\x96#\x96]\x1a\xbb\xaa&\xfa\x04QH\ +\xa2z\xdc[\xfaY\xf6\x0e\xde\x8a\xb2\x7f\xe40#\x95\ +\xb1.\x1dx.\xfe&'\xf6\xde\x88q\x1c\xb0\xb7~\ +\x84\xaf\x5c\xfcs._Y\xe4\xd0\xb6\xdbPdw\xd9\ +\xd0\xe3\xd5>\x0b\x87!\xbb\xaa7q~\xfd\x15\x8e\xcd\ +=\xc9\x1b\xa6\xff5\xba\x92!\x0c\xbb\xf6\xb3^\xdf=\ +\x12\xc9\xe9E\x8af\x95\x0b\xce\xb3\x5cW\xb8\x9f\xd1\xca\ +$\x06\x19<\xcf\xed\xaa|i\xda\xd7n\xd3$%\xa3\ +dI\xf4\x16O|\xfbI\x0e\x8d\xdcA-\xb3\x0d?\ +\xf0\xfaq\xf7X\xd8s]4U\xc5j\xc2K\x8bO\ +RT\x87\x19\xa9\x0eA*\xf0=\x1f\xdf\xef\x0a\xebA\ +\x18\xe0y.B\x11\x5cw\ +\xf1\xe3x\xda:A\xe0\xe3\xba)\x19\x99^u&\xc4\ +\x11e%\xcb\x17.\xff.?}\xf8\xe3<\xb9\xf8\xdf\ +\x99\xeb\x9c\xc7O\xec.\xcbn.!zY\x16\x19C\ +\x98\x9f\xc3\xee$\x1c\xd9s#\x7fs\xea\xb7\xa8\x0c\x16\ +\x88\xa2\x18\xd7\x0d\x89\xe3\xb8o\x91\x00\xc8\x18\x0aO\x5c\ +\xf8_|\xe4\xde\xff\xc2_\x9c\xfaE\xe2X\xa2\xa2\xe1\ +\xba]YS\xd7\xf5n\xf0\x91$M%\x0b\xed\x0b,\ +\x8aUJ%\x03mx\x8e\x85\xb6N\x1cwm\x19\x99\ +\x9c\xd9\x8d\xdb\xf5p-\x17Cj\x5c\x09_b\xc6\xbb\ +\x81\x96\xf6\x1a\xbf\xf9\x8d\x0f\xa0\xeb\x1a\xb6\xd3FW\xf5\ +\xbe\xb0\x1e\xba\x01iQ255\xc0WO~\x81\x99\ +\xc9Q~\xfd\xf9\x1f'\x106Q\x1c\xe1\xba\x11\xaa\xae\ +\x5c\xbd+\xe3\x88r\xa1\xcc\xef|\xf3q>r\xf4\xd7\ +\xd1l}\x99\xf5\xc5\x16+\xaf7\x89\x83\x94\x5c\xd4\xd5\ +@\x9b\xcd&~\x12\x91ws\x84\xea:\x7f\xf0\xed\x8f\ +r\xc3\xcc\x8d\xb4ZW8\xffO\x01\xad\x96\xdb\xd7\x85\ +\xdb\xed6q\x1cCN E\x95\xcf_\xfeo<\x9c\ +\xf9W4\xd3y\x16\x8f\xe9\xac\xce6\x89\x9c\xee\xbaJ\ +\xd3\xb4\xbe\xff&\x17\xe5X\x8e^\xe5\xef\xce\xfe\x0e\x8e\ +l\xd2\xf6\x9a,]\xb4hnaa\xcf\xf3H\xfc\x98\ +pP\xe0\xcb\x0c__\xf8S\x0ekGI\x0b\x1d\xe6\ +/\x84,\x9cn\xe1\xb5c4\xa3\xbb2\xb0,\xab\xcb\ +\xc2q\x81@Y\xe3E\xfb/H\x8c\x80\x85S\xeb\xbc\ +\xfe\xb4K\xa7\xe9~\x17\x0bw\xe8\x14RbJ\x1ck\ +~\x86\xf9x'M\xed2\xeb\x97\x5c.|\xa3+0\ +e2\x19\x92$ac\xa3AG&\x04\xa1\x8e\xa5\xbc\ +\xce\xc7\x9f\xfe\x08b\xfb\xc4\xb4L<\xc8T\xba\x9d\xe6\ +r9\xa2(\xb2\xa4\x94E\xdd00'\x13\x8a\x83*\ +\xf6RDc\xd6#j\xa8h\x86\x82\x9a\xe9/\x90\xe7\ +4M\x1b0M\xb3\x18\xeb\x11C\x87\x0d\xe2F\xc2\xc6\ +\x15\x07\x7fY%\xf1%fY%M\x13\x00\x0bh\x1a\ +\x861\xa9i\x1a\xe6\x9e\x84rQ\xa71\xe7a\xcf'\ +\xf8\x1b\xa0\xe7\x15\x14\xbdko+\x16\x8b\x96\xe7y\xc5\ +\x8ca\xe2\x19\x013w\xe6h\xcf\x854\xe7]\xfcU\ +\x95\xd8\x97dJWYxnn\xee\xd9\x89\x89\x89\xa3\ +I\x94\xa2\x8c\x85\xe4s*\x8d\xd7\x03\xac\x85\x10\x81\x8a\ +f\x8aM[\x9eJ\x10\x04\x94\xcbe+\x0a\xc2\xa2e\ +\xc4\xec\xbf\xa7@s6\xc0Z\x0ap\x16$i\x04f\ +E!M\xba\xba\xb0\xe7y\xeb\x86a\xd4Qu&\xef\ +\xd6\x88\xec\x14w-F;r\xcbM4[M\x0a\x85\ +\x02\xedv\x9b \x08XXX\xe0\xb1\xc7\x1e#\x9f\xcf\ +\x93\x84)/\xbd\xfc2ZM\xc5\xcd9(\xaa\x82\xe3\ +8\xac\xae\xaeR\xadV9{\xf6,333\xdc\x7f\ +\xff\xfd\x0c\x0f\x0d\xf3\xe9\xff\xf9\x19vMM\xb0\xe0.\ +\xb0\xed\xe0(\x1b\x8d\x0dl\xdb\xa6R\xa9\xf0\xca+\xaf\ + \xa5\xe4}\xef{\x1f\xf5z\x9d'\xbe\xf25t\x0c\ +2\xc6\x22\xe3\xf7\x8c\xb1\xba\xb6\x82\xd1\xb5\xa9\xf5\xfd\xda\ +w\xdey'7\x1e>\x8c\xa1\xe9|\xfb[/3\x5c\ +\x0ah\x8f\xb7\xd1\xa6U\xaa\xd5*g\xce\x9c!\x93\xc9\ +lZ64\xee\xbb\xef>\x1e}\xf3\xa3\xbc\xf0\x8d\x17\ +y\xe9\xa5\x97\x98\xda\x97\xa1|{\x89\xd9\xd9Y,\xcb\ +\xa2\x5c.\xb3\xbe\xbe\xce\xd2\xd2\x12\xd5j\x95w\xbf\xfb\ +\xdd466x\xe6\xa9\xe7\xd9W\x1f\xc0\xcfz4\x06\ +\x1a\x0c\x0e\x0e\x12\x86!+++\xb4\xdbm<\xcf\xe3\ +\xc3\x1f\xfe0\x99L\x86W_9MKi\xe2\x97=\ +\xb4\xa9\xe9)\xdcS.\x9a\xa6133\xc3\x993g\ +H\xd3\x94]\xbbv\xf1\xc8#\x8f\xf0\xe2\x8b/\xb2\xde\ +\x5c\xa3V\xab!\xa5\xe4\xfc\xf9\xf3\xd4\xebu<\xcfc\ +``\xa0o\x9b}\xec\xb1\xc7\xf0}\x9f\x13'O0\ +33C\xa1\x94\xa7\x5c.S\x1f\xacs\xfa\xf4in\ +\xba\xe9&N\x9c8A\x10\x04\xdc\x7f\xff\xfdLMM\ +\xd1n\xb7\xd9\xd8\xd8\xc0\x0b\x1d\xf6\xee\xdb\x0b\x02\x5c\xd7\ +e\xf7\xee\xdd\xcc\xcf\xcf\x03\xb0m\xdb6\xde\xf9\x8ew\ +\xe0y\x1e\x17.^@\xd7\xab\xec\x1f\xb8\x8eo\x7f\xfb\ +\xdb\xd4j5\xea\xf5:\xba\xae\xf7\xb3\xe3\xbbw\xef\xe6\ +\xbe{\xef\xe3\xe4\x89\x93\xd4\x06\xab\x98\xa6I\xb9\x5c\xa6\ +\xd5j\xf5/\xa4eY\x00\x94\xcbe\xde\xf6\xb6\xb7\xf1\ +\xc2\x0b/p\xfe\xc2\x05\xf6\xee\xdd\x8beY\x5c\xbcx\ +\x91\x81\x81\x01J\xa5\x12\xa6i\xf2\xdak\xaf!\xa5\xe4\ +\xc8\x91#LLL\xf4f$\xaf\xbd\xf6Z\xd7#\xdd\ +c\xbf(\x8a\xc8f\xb3X\x96ee2\x99\xe2\xb6m\ +\xdbXZZB\xd3\xb4\x1e\xcb\xf6Y\xb4\xb7\x8f\xeb\xba\ +s\xd9lv`dd\xa4\xd8K>\xf6\xb6\xa7i\xda\ +\xff\xbe\xe9\xdf\xb3\xc20l\xe6\xf3\xf9\xc9\xf1\xf1q\x16\ +\x17\x17{\x0b\xf7\xee3t\x93\xa3{\x8c\xabi\x9a\xe5\ +\xbanqff\xa6\xefpH\xd3\xb4\xcf\xca=\x96N\ +\x92\x84j\xb5\xdag\xe1\x9eQ`+\xe3\xf7r\x97\xbd\ +\x9cd\xa3\xd1`hh\xc8\xca\xe5r\xc5\xad+\x84\xad\ +\xb1\xf7X^Q\x14\xda\xed\xf6z\xb5Z\xad\xd7j5\ +\x9a\xcdf\x9f\x99\xb5l&\x1b\xf4\x98o\xf3\xf9'm\ +\xdbn\xd4\xebu\xa3\xd1h\x90\xcd\xe6 \x05]\xdd\xc2\ +\xc1[\x18\xdd\xb6m?\x93\xc9H\xc7q\x10B\x905\ +s}\xdfr\x9f'\xaf\xb2\xb0\xf0<\x8fL&\x13\xae\ +\xaf\xaf\xcbl&K\x9a\x82@\xa2k\xc65\xcc*\x13\ +j\x82&\x00\x00\x1fEIDAT\x84`uu\xd5\ +\xca\xe5r\x99v\xbb\xad\x17\x8b\xc5.\x93\x7f\x9f~{\ +\x03\x93\xa6i\x1b\xe8\x14\x8b\xc5\x10I\xbf\xfdw\xf3\xb0\ +\xaa\xaa\x04A\x10\x85a\xa8\xab\xaaj\x02RSt4\ +E\xbf\xf6\x1c\x05\x08\x04\xb6m\x8b$IVr\xb9\x5c\ +\xd9\xb6\xed\xd4\xd0\xcd\xbe\x9c\xaa\x8d\xec-\x99\xf1\x86\x81\ +H\x05\xa8]\x9d\xe0\xf2\xe5\xcb\xcd\xb1\xb1\xb1\xed\x9e\xe7\ +\x93\x16=\xb2c\x11i\x92\x82\xab\x93\xb42$-\xad\ +\xef\x91v\x1c\xa7011\xa1\xaa\xaaJ\xac$$\xdb\ +\xda\x94\xcb*I$Q\x82\x0cQCC::\x02\x81\ +\xe38\xba\xe7y\xa5z\xbdn\xa8\xaaJ3\xdb`b\ +\x87N\xe4'\xc8N\x96\xa4\xad!]\xb5\x9f\xf4t]\ +7\xc9d2\xf6\xf6\xc9\xc9\x017\x0e\xc8\xefuP\x84\ + uU\xd2\x8eI\xd2\xd4!\xa5\xeb\x916\x0c\xce\x9c\ +9\xa3OLL\x94d\x22i\xe66\x18\x99\xd6\x88\xfc\ +\x14l\x93\xa4\xad\x93t\xbaq\x1b\x86\xce\xca\xca\x0aC\ +CC\xcd\x5c6g\xac\x07\x1d\x86\x0ft\x0d\xec\xa9\xab\ + -\x93h\xa3\x1b\xb3\xa2w\x97S\xedv{nh\ +pp\xbf\x17F\x88m6\xc5\xaaB\x1c&h\xe57\ +\xae\xa2H\x9d\xd6\xd7\xabD+F\xaf\xf6\x22\xafi\x1a\ +q\x9a Gm\xb4\xc3-\xf6\xd5nf\xc5\xbe\x8c\xed\ +6P\xbc\x0c\x8d/\x0c\xf6\xec\x17Z\x1c\xc7J\x18\x86\ +X\x9a\x83\xb9c\x89\xfd;\x0f2Y\x9d\xe6\xe9s\xff\ +@%Wc\xfd\xab9\x82\x05\x13\xd7u\x15EQ\xb4\ +\xde\xed\x14\xeflR\xbc9\xc3t\xe9\x00\xe7WN\x92\ +\xa6\x92\xe8t\x15\xfbD\xbe\x97 P\xa3(\xd2}7\ +`!]\xe1\xe0M\x0e%1\x8c$\xc0\xf6V\x89,\ +\x81s\xacJ\xb0\xa0\xf7n\xd1\x9c\xaa\xa9\xc8PbO\ +\xad1p{\x99\xaa6\xc1\xba3\x8fe;\x18\xd6\x00\ +\x8d\x7f.\x03\xa2\x97.\xd3U)8\x1f.\xb2\xffh\ +\x19-\xc9\x923\xb2\xcco\xbcNE\x14\xe8<;@\ +\xb8d\xf4\xd2hu\x10\xb4\x02\x8f\x1d\xb7\xfaPls\ +\xd3\xf0=(o\xde\xf1\xb3\x8c\x0cN\x11\xa7a\xdf#\ +\x0dH\xdf\xf7\xf1=\x9f\x98\x80]\xc6\x03\xfc\xab\x1b>\ +\xc6\x8f]\xf7\x9b\x5c?\xf8(\xa3c\xa3}\xed6\xde\ +t\x9f\x06A@\x9cD\xac\xaf\x06\xfc\xe8\xc1\x9fC\xb6\ +\x07\xf9\xa9#\xbf\xce\x0f\x1dy\x1fA\xe2_\xe3P\xf5\ +<\xaf\xef\xfc|\xf3\xcc\x87\xd8\xa1?\xc8\xdd;\x7f\x90\ +7\xed\xfc \xa1f\xe3yW\xfb\xee\x89VQ\x1a1\ +\x9c\x9f\xe2\xa1\x89\x0f\xf1sw\xfd\x19\xf6\xd2 7\xee\ +\xb9\x95 \xb5\xaf\xd5\x85\xfd\x00\xd7u\xd1t\xc1\x8e\xdc\ +\xed|\xf8\xc8\x1fp\xa0\xfaF~\xe9\xbeO\x11g\xba\ +m\xb7x\xa4\xa5\xebz$\xa4x\x81\xcf\xfb\x0e\xfc\x01\ +\xf7\xed\xf8Q~\xe6\x96O26\xbe\x8d0\xbd\xd6#\ +\xed\xf9\x1e~\x10\x10\x0b\x97\xbbs\x1f\xe3\xc0\xf0\x9d(\ +5s\x9c\xa1\xfcX\x9fg{\xce\xa5\xfeI\xc6\x01\xd7\ +\x0d\x1f\xe1\x89K\x7f\xc1\x97_x\x8a\xbdC7\xf4l\ +\x1a\xfd7_\xdf#\x1d\xfa\xd4\x8cI\xe6\xdb\x17xu\ +\xe5\x05n\x99x\x00?\xb6\xfb\xfa\xebV\x8f\xb4\xe7y\ +d\xf5\x22\xe5L\x95g\x16>\xcd\x91\x91G)dJ\ +h\xa9\x89\xe7y\xb8\xae\xbb\xc5\xc7\xec\x11G\x11\xe5\xec\ +\x00J\xa1\xcd\x17_\xfc\x12;k\x07)h\x15\xfc \ +\xc0\xf3\xbd\xab\x16_\xdf\xbf\xea\x91n\xe8|\xe6\xe5?\ +$\x9f\x8e33>\x09\xa9\x8a\xe7_\xf5Hw\xe3\xea\ +z\xa4/\x9c\xb6\xa8\x0d+\xac;\x8b\xec\x9f8DN\ +-o\xb2\xb2w\xcd\x85\x8f\xc2\x90v\xdb\xe3\xa7\x1e\xfd\ +q\xbez\xe9\x93(a\x1ccy\x9dM\x16\xbe\xeav\ +\xefy\x89\x91\x02'\xb4\x19.lg\xa82D\xcbm\ +\xf5\xf5\xd5\xad\xbc\x1a\x86!q\x94\x12\xa4\x0e\xb5\xdc\x08\ +\x05}\x80\x8e\xdf$o\x94\xfb\x09\x87\x9e\x1a\xd7\x9b\xb1\ +\xa9L\x10(hi\x9eX\xb3\xf0\xbc\x08?\xf2\x09C\ +\xbf\xdfw\x92$\x04\xa1O\x12\xa7\xa4R\x22c\x9d\xb1\ +\xda\x04\xab\xad5\xc24\xd8\xe4\xd5-\x1e\xe9M\x83\x80\ +\xa2\xa8d\xb3\x1a\xe3\xe5\x19,\xbf\x89!\xf2H\xb9\xe9\ +\xcf\x0e\xbaI\x8d^\xa6GJ(WL\xe2@CW\ +\x0c\x04\x0aa\xe2\x13G\xc95\x1e\xe9\x1e\x17\x1b\xba\xc6\ +\xdc\xd2\x12E\xa3\x8ar\xac\xf9i|\xd1\xda\xf49{\ +\xdfW\x17\xfe\xc6\xca\xa7\xd9n\xdc\xce\xf8N\x85\x13\xcd\ +\x7f\xc2\x89\xdb\xb8n7c\xd2\xbb\x85]\xd7%\x08C\ +\x0a\xb5\x90\x97_\xff6\x8f?\xfcK|\xfc\xf9\xf7\xf1\ +\xed\xc5'I\x93\xf4\x9alL\xafo\xd5H\xf9\xfa\x85\ +\xcf\xf2\xf8\xbd\xbf\xc2\xe7N\xfd\x01g\xec\xaf\xa1\xa2\xe2\ +\xba\xd7\xcen\xd7\xf5\x88\xe2\x88%\xeb\x12\xed\x8eMm\ +\xd8@\xd6/\xb2a\xaf\x10'\xddLO?\x9d\xe5\xfb\ +\xb8\x8e\x8b\x94\xd0\xe0,{\x86n\xc0\xcb_\xe4w\x9e\ +\xf9\x18\xba\xa6_3\xbb\xbbq;$I\xca\xd4\xd4\x00\ +O\x9d\xfeg\xc6k\x93\xfc\xc6s\xef\x07\x91\xf4\xfb\xee\ +]x\xd7\xeb\xde\xc2\x95|\x99\xdfx\xe6\x83|\xf0\xa6\ +\xdfAk'\x8b\xb4\xa3\x15\x96\xce5\xf0;)q\x9a\ +G\x08A\xb3\xd9\xa4\xdd\xb1(\xb89\x84\xa9\xf2G/\ +?\xce\x1b\xf6\xfe\x10\xab\xf1y\xd6\xbf\xd3\xe5\xdf^2\ +\xc1\xb6mZ\xadV7\x87/*<\xbb\xf6g\xa8\xaf\ +%\xb4\xc3eZ\x97WY8\xd3\xc0o\xa7\xdf\xc3\xc2\ +\xf9(\xc7B\xf82\x9f?\xf3\x87XA\x93\x96\x7f\x9e\ +\xd5y\x9bV\xd3\x05!\xb7\xe8\xc21\x81\x96\x12\x93\xe7\ ++\xaf\xff\x0f\xee\xd1\xde\x02\x19\x87\xb3\xf3'X9\xdb\ +\xd5\x855C\x05\xa0\xddnc7m2Q\x81f\xf2\ +:_\xb8\xf4\xbb\xb8q\x93\x8b\xceKl,\xf8l,\ +71\xf2]\x0d\xc4\xb6m\xacF\x07\xbb\xd8\xd5\x85\x9f\ +_\xfbK.\xd9{X\x8b\xcf\x11X>\xe7\x9f^C\ +\xd1\xe9\xeb\xc2\xcdf\x93N\x9a\x10D\x06\xe6\xc0\x02\xbf\ +\xfc\xa5\x9f@\xec\xd8\xb9C\xc6\xb6\xc4,h$iB\ +.\x97c}}\xfd\xdc\xe0\xe0\xe0n]\xd3\xd1\xb6\x85\ +\xe4\xea\x82\x8d\xb3>v#@z:\xc8\xae\xde\xbb\x99\ +\x91^\xadT*E \x8b.\xc9_\x97\x12-\xa7\xb4\ +\x96\x1c\x12W#\xf1@\xcf\x0aR\x99\xf6=\xd2\xa6i\ +\x16r\xb9\x1c\xca\x8cO^UY9\xef\x10u \xf1\ +\xe8V\x11\xe9\xddu]>\x9f_l\xb5Z\xa5\x91\xe1\ +\x91\x82\x15Z\xcc<\x98c\xf9\x84Gk\xc9E\x09\x0c\ +\x02'\xc1\xc8w9\xfb\x1a\x16\x0e\x12\xf4\xbd1\x85\xac\ +\xca\xcai\x9b\xd0\x92\xa4\x9e\x82LA\xcb\x82\xd8L\xc7\ +U*\x15K\xa6\xb2\xd8\xc1g\xef\xbdyVN\xba\xd8\ +\xab!\xa9\xaf\x10:)fI%\x89\x93\x9e\xe9\xf4X\ +>\x9f?b\x98Y\xc6\xeeV\xb0\x97#\xdas!\xda\ +\xa1\x03\x87z\x86n\xe6\xe6\xe6H\xd3\x94\x85\x85\x05\x1e\ +~\xf8a\x0e\x1c8@k\xa3\xcds\xcf~\x83\xc9]\ +\x196\x1a\x1b\x14\x8b\x05666h4\x1aT\xabU\ +\xce\x9d;\x87\xa6i\xbc\xef}\xef\xa3\x90/\xf0\x99O\ +}\x96\xda\xb6*W\xd29\x86\x86\x87XZZ\xc24\ +\xbb\x0e\xfa\x8b\x17/\x12\x86!\x8f?\xfe8\xf5z\x9d\ +/~\xfe\x1f\xbb%WC\xcb\x8c\x1c\x1aauu\x95\ +l.\xdb\xd7\xa6=\xcf\xe3\xd6[o\xe5\x91G\x1e\xc1\ +\xd0\x0d\x9e}\xeay\x0a\x03\x0d\xe2RD\x14\xc7\x0c\x0e\ +\xd6\xb9p\xe1\x02\xaa\xaavMB\x8a\xc2\xbd\xf7\xde\xcb\ +\xfd\xf7\xdf\xcf\xd3_\x7f\x86\xd3\xa7\xceP\x9b\xd412\ +&\xcdF\x03\xdb\xb5\xc9f\xb2t:\x1dVVV\xa8\ +\xd5j\xbc\xef\xfd\xefc~n\x9e\xe7\x9ez\x9e\xebF\ +\xf3D\x83\x01\x8df\x93Z\xadJ\x14E,//\xf7\ +-)\x1f\xfa\xd0\x87\xa8\xd7k|\xeb\xf9\x97X\xd5W\ +\x88\xb6\x07h;v\xec\xe8\x83u\xa1P\xe0\xf4\xe9\xd3\ +$I\xc2\xde\xbd{\xb9\xfb\xee\xbb\x09\x82\x80\x95\xf5e\ +\x06\x07\x07\xd9\xd8\xd8\xe8\xdf\xba\x96e]\xe3\xa9~\xe0\ +\x81\x07PU\x95\xaf?\xf5un\xbb\xf56\xf4\xe3\x1a\ +\xa3\xa3\xa3\xfd[\xf6\xe6\x9bo\xe6\xd2\xa5K$I\xc2\ +\xad\xb7\xdeJ\xa1\xd0\xbd\x10\xcb\xcb\xcb\xf8\x91\xcb\xee=\ +\xbb13&\x8e\xe3p\xd3M7\xf1\xb9\xcf}\x0e\xdf\ +\xf7\xd9\xb1c\x07\x87\x0e\x1db\xdf\xbe}\xb4\xda-\xd6\ +\xd7\xd7)\x16\x8b<\xf7\xdcs\x8c\x8d\x8d\xd1\xe9t\xd0\ +u\x9d+W\xae\xa0(\x0a\xd3\xd3\xd3<\xfa\xe8\xa34\ +\x9bMl\xcf\xa2V\xab\x01\xb0R\xc8s\xee\xdc9f\ +ff\xb8p\xe1\x02\xab\xab\xab\x14\x0a\x05\xee\xb8\xfd\x0e\ +N\x16Nr\xf6\xfcY\x0e\x1d<\xc4\xfa\xfa:\x97.\ +]\xa2^\xafS\xadV\xb9x\xf1\x22'N\x9c\x00\xd8\ +R\xb7\xdcM\xae\xbe\xf4\xd2KW=\xd2=\x1d\xb4\xa7\ +\x0b\xcf\xcc\xcc\xec\xce\xe7\xf3}\xee\xdb\xaa\xdbn\xf5\x09\ +[\x96\xb5:88X\xccd2\xd9^\x8emkm\ +\xee\xd6\xbe\x93$\x89\xc20\x0c\xaa\xd5j\xa1R\xa9\xf4\ +\x8d\xe1[u\xe1\xad5\xbeB\x88\xc5N\xa7S\xda\xb5\ +kW\xa1\xd5j]\xc3\xcb[u\xe74M\x19\x18\x18\ +\xe0\xd4\xa9S\xcf\x1e8p\xe0\xa8\xa2(\xddg\xf2\x16\ +\x9f\xf3V\x8e\xd74\x8df\xb3\xc9\xd0\xd0\x90\x95\xc9d\ +\x8a\xbd\xaa\xa8\xad\xbc\xdf\xd3\xa7{\xe8\xb7\xb6\xb6vl\ +dd\xe4H\xb9\x5c\xee\xd6\xc4\xf4j\x9a\xd3Dn(\ +\xaa\x10B\x88\x1e#\xca4M\xd7=\xcf+\xb6\xdb\xed\ +T\x11\x8a\x90\xa9\xb8\xea\x1d\xde\xc2\x9fB\x08\x91$\xc9\ +|\xa7\xd3\xa9\xd8\xb6\x9d\xefZ\x8c\x95n\x9d\xadr\x0d\ +3\xf7N\xc4\x0f\xc3\xd0u]\xb7\xe68\x8eT\x85J\ +\x9a\xf2}\xfb\xde\xac\x17^T\x14E\xac\xac\xacD\x02\ +!\xb7\xb2\xad\x10\xb2?\xf8\xaa\xaab\xdb\xb6\x04V\x1a\ +\x8d\xc6F\x92$\xc1\xbf\xd4\xf7\xe6R\xcaq\x1c'\xef\ +\xfb~\xac d*\xaf\xd6\x0b\xf7\xda\xab\xaa\x0a \xa2\ +(\x0a\xe38v\xd34moll$H\x01\x12T\ +M\xd5\xb4\xf1\xbd\x83\xb5\xa4\xa9#\xd4nmlwm\ +\xe4\x8f\x0e\x0e\x0e\xc6I\x9c\x10\x16\x1dr\xdb\x03he\ +H\xd6M\x92\x8e\xd6}\xd9\x1a\x12@I\x92\xc4\xa9\xd5\ +jYM\xd321\x09\xd1x\x83\x81\x5c\x96h\xcd \ +\xd90\x91\x91\x82bv]\xe7A\x10\xb8\xc0\xda\xe0\xe0\ +\xe0\x80\xa2(\xe9\xba\xba\xce\xe4u*\xc9\x86I\xbcb\ +\x92::B\x93\x08\xad;cr\xb9\xdc6EQF\ ++\x95\x0a~\x1c\x92\xb9\xae\x83\xa1*\xc4-\x83\xb4\xd1\ +\xe5[\xa1KP$\xba\xd6\xbd\x8dGFF\x22\x99\xa4\ +\xc9\x9a\xb2\xc1\xf6\xeb\x15\xc2U\x83h\xd5D\xda:B\ +\x91\x08\xbd\xeb\xd2o4\x1a\xb9\xc9\xc9\xc9\x11$\xcab\ +\xd0`\xeaf \x12$M\x9d\xa4\x91!\xb14TS\ +\x22\x14A\xb3\xd9\x5c\x0f\xc3p\xdf\xb6m\xdb\xca\x8e\xef\ +c\xee\xb4\xc9U\x14\xc2\x0eh\xf5\xb7\xae\xa3\xa5\x19\xda\ +OU\x89\xd64\x0c\xc3@\xd7\xf5\xc1r\xb9\x5c\xb0=\ +\x0fe\x8f\xc5\xe8m\x11x\x0a\x9e\xdf\x22'\xca\xa4m\ +\x93\xd6S\x15\x14E\xa1\xd1h\xa4\x85B\xa1\xaa\xebz\ +\xbem\xb4\xd9v\x9fJ!\x17\x90\x84\x1ez\x9c'I\ +\x13\x9c\xa7F\x88;\x0a\xaa\xaaV-\xcb*\x17\x8b\xc5\ +1!\x04\xdeu\xab\x8c\xde.I]A\xea\xc7\xc8X\ +\x12\x9f\xaf\xe1\x9c\xc9\xf4<7Q\x18\x86dt\x93\x0d\ +\xddb\xc7\x83!9Y\xc5\xf7=H#\xbc\x86\xc4\x7f\ +\xa9\x8a\xbf\xa4S,\x16\x10B\x8cT\x06*#\xd2\x95\ +4\xf7.\xb2\xed\xee\x0c\x8d\x8d\x0d\x0aJ\x85\xc0\x0b\xd1\ +\xdbUZ\xdf(b\x9a&\x9a\xa6\x91\xcb\xe5\xc2\xc8\x8f\ +\x0c\xbbj3~o\x91\xd8W)h\x05\xe6\xd6.R\ +R\x86\xd8\xf8\xc722P1\x0cC\x13B\xa4\xa6a\ +\xd0L\x5c&\xef\x04O_\xe3\xd6\xd1{Q\xde\xb6\xeb\ +\xe7\x19\x1f\x9b!\xc6\xc7\xf7\xaf\xf51{\x81G\xa4x\ +\xec\xd2\xdf\xc4/<\xf0\xa7\xfc\xc2\x83\x9f`b\xf0 \ +\xe5\x09\xf3\xbb=\xd2\xa9\xef\xfb\x04I@\xa7\x19\xf1\xe1\ +[\x7f\x9f\x8f\xde\xf1\xa7L\x8c\xec\xe6\xae[\xee\xc1K\ +\xec\x1e\xb9\xa4I\x92\x5c\xf5H\x13q\xef\xc8{y\xd7\ +\xae_\xe5\xd6\xbd\xf7sd\xe6Q\ +wl\x7f\x94\xdf\x7f\xe1c\x84V\x86\x1f\xb9\xe1\x03d\ +\xd4\x5c\x9f\x95{2\xa5\xbfY\x0a:]\xb8\x99Sk\ +\xcf\xf3\xe5\x93\x7f\xc3;\xf7\xfe{&*{\x88\xa3\xb8\ +\xcf\xc2=]\xd8\xf3w\xfe\ +\xb7\xb9\xa1\xf8\x83<\xb0\xf7\xad\x0cf'q\xbd\xab\x9a\ +sO\x17\x8e\xa3\x84rv\x00\x91\xed\xf0\xc4KO\xb0\ +\xb3v=\xa3\x85\x1dx\x81\xb7\xd5\x1cO\xe0\xfb8\xae\ +\x87\xae)\x04\xad<\x9f<\xf6\x1bL\x9aGx\xf0\xba\ +\xb7`\xaay\x5c\xdf\xc5s\xb7\xb2\xb0\x07H\xf2\xe1\x14\ +\xeb\xe9\x19*\xf9\x12\xdbJ;\xa8g\xc7\xf1}\xaf\x8f\ +o[=\xd2D\x1a7\xee>\xc4\xf3\xeb\x9fBs|\ +\x97\xb9\xe6%\xa2(&\xf0#$z_z\x0c\xc3\x80\ +,\x0aq\x12R\xd0+\xe8\x8a\xc9\x8b\x17\xbfB\x9cv\ +\x1d\xfd[eM\x80$\x9f\x10$\x1e\x05\xa3\x8c*:\ +8,\xd3p\x97\xf1}\x97\xc0\xd7\xae\xa9\x17\x060\x00\ +U\xa8\x04^BuP\xe5\xc5\xb3\xc7\x98k\x9c%\x08\ +\xba\xd6\x0eM\xd3z\xcfd\x12#F\x002Q\xa8\x97\ +\x07y\xe9\xf2K\xc4%\x1f\x91v\x8b\xbf3\x81\xb9\xe9\ +L\x08\x08\xbc\x00Ch\x98\x19\x9dJf\x88\xe5\xf6<\ +1\x1eN`\x11\xf8\x062\x95W\xb5o\xdfG \xf0\ +\xd2\x0e%}\x90\x86\xf3<\x0a\x0a\xeb\xce\x12Q\x18\x11\ +\xf9\xd15rl\xac\xc5\xa4\xa4\x90\x82c\xa5(\xc7[\ +\x9f\xc5\xc8H\x82\xc0\xc3q\x9d\xfe\xf4\xee\x95\xfck\x22\ +\xcbW_\xff3\xdes\xf0?s\xca\xfd\x12\x1b\xf1\xe5\ +\x9eQ\xa8\xcf\xab\xbd\x92\xff$J\xe9h\x17\xc8\xc8A\ +\xee;x/\x9f?\xfbG\xf8\xa9M\x12_Mam\ +-\xb8\x16Z\xc2\x8bsO\xf03\xf7\xfe\x06\x7f\x7f\xfa\ +\xf7\xb1\xb8B5;\x8a\xe7]u\xc7\xf7\x060\x8ab\ +\x96\xad9\x9cN\xc2\xe8\xb6\x02qa\x96\x91\xe2v\xbc\ +\xa0;\xa3\xae&\x13||\xcfE\x22\xb0\xb5\xcb\x1c\x1e\ +?JG?\xc3\x17O\xfe\x15\x05\xb3\xd8\xcd\xc6\xb8^\ +\x7f@\xba>\xef\x94\xfad\xc4K\xe7^e\xa2>\xce\ +\x9f\xbc\xfc\x0bT\x8bu\xdc\xc0\xc1\xb6\x9d\xbe\xee\xed8\ +\x0e\x81\xefS*d\xf9\xbf\xff\xf1#\xfc\xe6\xa3_D\ +k\xf9\x8b,.\xcd\xb2|\xb1\x8d\xdf\x8e\x89\x93\xf7o\xf9\ +\xa3\x1f\xfd'\xce6\xbe\xc9\x95\xd5\xf3\xac\xce7\xf0[\ +W=\xd2=\xa7A.\xc9s\xb2\xf5U\x0ex\xb7\xe1\ +&\x1d\xce.}\x89\xb9K\x0e\x8du\x17\xa1B\xa5R\ +\xe9\x9e`\x10\x13i\xe0\xc9\x0cO\xcc}\x92\xf7\x8c|\ +\x0cQj\xf0\xf5W\xbeHc\xde\xa1\xd5\x0cQ\xf5n\ +\x92\xb6\xd9hb\xaf\xdb\xe8Q\x91\xa5\xe0\x14\xc7\xd6\xfe\ +\x81b1\xcb\x17\xce\xfc1\x8d\xc5\x90\x8d\x95&z\xa6\ ++\xe1Z\x96E\xb3\xd9\xea\x96\xe5\xaay\x9e\x5c\xfec\ +&\x9dC\x9cY\xf9\x06~'a\xe1\xd5&z\x01L\ +\xb3\xab\x0b7\x9bM\xfc\xbc$NM\x16\xd2\x17\xf8\xcd\ +\xaf\xfd\x1cb\xfb\xd8\x0e)\x10\xa8\x99\xae?\xaeW/\ +\x1cEQ1\x9b\xcd\x91\xbf!flo\x8e\xd5\x93\x1e\ +W^\xea\x80e\xa2\xe8\xa0\x9a\xe2\x1a]X\xd7\xf5b\ +\x92\x8f\xd8\xfd\xf6\x02\xe1|\xca\xe5\xe3\x1b\xf8\xb3]\x9d\ +C\xcb\xf4\xcb\xc8,EQ\x9aR\xca\xc9|>O\xfe\ +h\xca\xd8h\x86\xd9\xe3m\xd6\xbf\x93\x90\x86\x02\xd5\x00\ +E\xeb.\xc2+\x95J\xd8n\xb7\x8d\x5c6\x87\xad\xb8\ +\xdc\xf5\xc1\x1a+'|f\x8f\xb5\x09\xe6u\x10)Z\ +FErU\x17\x1e\x1d\x1d=\xea[\x01\x957*L\ +N\xe5\x98}\xb1\xcd\xda\x89\x08\xe9u\x7fzE5\xe9\ +\xeb\xc2\xb5Z-\x94\x894\xa2\x91\x88\xe9\x1b3,\x1e\ +wh^\x0c V\x91H\xb4\xac MRt]o\ +z\x9e'3\x99L5W.\xb0\xed^\x89u%f\ +\xe3\x9c\x8fv\xe4\xf6\xc3XV\x17yfgg\x09\xc3\ +n\xd9\xc0[\xde\xf2\x16v\xed\xda\xc5\xc2\xdc\x22\xa7\xbf\ +y\x96\xba\x22)\xed\xf4QT\xa5_/\x5c(\x14\xb8\ +r\xe5\x0a\xd5j\x95w\xbc\xe3\x1dh\xaa\xc6\xe7\xff\xf6\ +\x8bTk\x03L\xe4\x1bT\x8f\x0e\xd0n\xb7\x09\xc3\x10\ +\xd34\xb9p\xe1\x02q\x1c\xf3\xde\xf7\xbe\x97\x1d;v\ +\xf0\x0f\x7f\xf7\x05\x94\x15\x8d\xaa\xbd\xce\xce\xdb\x06h\xb5\ +[\x18\x86A\x92$,..\x22\xa5d\xdf\xbe}<\ +\xf2\xe8#\xf8\xae\xcfw\x9ez\x95\x9c\xd5f\xa6\xea\xa3\ +\x8fjd\xb3Y\x16\x16\x16\xfa\xd4 \x84\xe0\x8e;\xee\ +\xe0\xce\xbb\xee\xe4\xb9\xa7\xbe\xc1\xe5\xaf\xceR\xd7\x87\x99\ +\xbc!K\xb3\xd5\xec\xfe\xd0\x85ibY\x16+++\ +\x8c\x8d\x8d\xf1\xe1\x0f\x7f\x98\xe7\x9e~\x8eWO\x9e\xe2\ +\xfa\xf12\xd6@\x870\x0aI\xe2\x84b\xb1\xc8\xfc\xfc\ +<\xcdf\x13\x80\xff\xf8\x1f\xff#\x00/>\xceC\x0f=\xc4\xd0\ +\xd0\x10\x17/]\xec\x0e\xfcf2`ll\x8c\xa5\xa5\ +%FFF\xb8|\xf92\x00\x0f?\xfc0{\xf6\xec\ +\xa1\xd3\xe9\xb0\xb6\xb6\xc6\xb9s\xb0o\xdf>._\xbe\ +\x8c\xef\xfb\x8c\x8f\x8f\xb3\xb2\xb2B\x1c\xc7\xdc|\xf3\xcd\ +\xdcy\xc7\x9d\xec\xdc\xb9\x93\xbf\xfc\xcb\xbfd~a\x9e\ +\xd1\x91Q\x9ex\xe2\x09\xea\xf5:\x00kkkDQ\ +\x84\xa6i\x1c?P\xadV\x8b[\xcd\xde[\xf9\xb9\xf7\ +=\x8ec+\x0c\xc3f\xb1X\x9c\x1c\x18\x18\xa0\xd3\xe9\ +\x5c\xc3\xab=\x1d\xb9\xf7\xb7a\x18\xa1\xe38\xc6\xf0\xf0\ +0\xb6m\x7f\x8fwy\xeb\xefcU*\x15N\x9f>\ +\xfd\xec\xee\xdd\xbb\x8fn\xb1\xfc^\xb3O\xef\x7fM\xd3\ +X[[c||<\xb4m\xdb\xf8\x97j\xa27\xcf\ +\xb7iY\x96,\x97\xcb\xd5\xef\xde\xae\xa5I\x1am\xf5\ +1;\x8e\x83eY^\xb5Z\xcd\xb4Z\xdd\xf4\xbdL\ +\x05\x8a\x10\x08\xe5{xUX\x96\x95h\x9a\xd6\xcd^\ +#\xd0\x84\xde\xd5\x85\x95\xab5\x19[\xfc\xd7\xd2u\xdd\ +P\xd7u\x1c\xc7AW\xf5k\xea\x85\x15]\x5c\xd3\x7f\ +\xa7\xd3\x91\x8a\xa2D\xbe\xefk\x9a\xa6\x09\x12\x81\x14\xa0\ +j\x12E\xb9\xb6\xed&\xf8\xcb$Id\x9a\xa6\xb1\x82\ +\xd25^#Q\x94>\xd7\xf6\xab\x0a\xe28N,\xcb\ +JUU\x15\x02\xf8\x17\xea\x85\xc5\xe6z7\xcaf\xb3\ +q\x9a\xa6R\xc8\xcd\xbae@\xdb69\x12\xc8H\xd9\ +,\x90\xee\x16/\xaf\xae\xae^\xaa\xd7\xeb\x07}\xcf\x97\ +\xa1\xd1\xd5\x85qM\xd2N\xb7FWF\x0aB\x93\xbd\ +<\x9cQ*\x95\xf4L&CDD:\xde\xa6\x985\ +HZ\xbd\xba\xdb\xab\x81\x87a\x18\xb8\xae\xbbZ,\x16\ +gt]\x17-\xb5\xc5\xf0\x1eHm\x8d\xb4e\x22\x1d\ +m\xd3H\xde\xbf\xfa\x9e\xeb\xb9\xb2Z\xad\x0e\x04I\x88\ +\xb2\xa3MN3\x88[:i[GFj\xf7\xc7\xc5\ +\x90d2\x19.^\xbcX\x19\x1e\x1e\x0e|\xd7\x8f\xdb\ +\x99\x16#\x13*\xe1\x86Ajk\xdd\x1a\xe7D T\ +\xd0u]\x18\x86\xe1\x8f\x8c\x8c\x04\x193S\xfe?\xd4\ +\x0bc\xdb\xb6~\xe5\xca\x95\xb5r\xb9\x5c\x0c\xe38\x0d\ +\xca\x16\x95\xbaJ\xda\xd1\xd1F~\xa4U\xd05\x9d\xe6\ +S\x15\xa2U\x1dE\x15\x08!j\xa5R)\x9fJP\ +v9\x8c\xde\x11\x11\x05.\x22\xd2\xd0E\x864Ph\ +\xfec\x1dUU\xd1u]\x98\xa6\xa9\xea\xba\x8ec\xb8\ +\x0c\xde\xe5S/j\x10\x87\x84\x9e\x0b\xba\xa4\xfd\xe5!\ +\xe2\x96\x8a\x94Rh\x9a\xa6\x1b\x86!4M\xc3\x1d\xeb\ +0|\xbfFQ\x8e\xb2\xdaXA\x93\x1a\xf1B\x91\xce\ +\xf1\x022\x06\xd34\xd5>\x0b\xab\x1d\xf6\xbf)BK\ +T|\xc7\xc1$G\xe4\x82u\xacD\xb0h\xf4~\x03\ +\xb1R.\x973A\x94\x90\xb9\xc5e\xdb!\x13\xabm\ +\x91\xa1@\x10\x06\xe8N\x99\xc6\xd7\xcb\x98\x86\x81\xa6i\ +y\xd34\xed\xff/\xf5\xc2\xaa\xaa\xa2\xaaj\xb5\x90\xcf\ +\xe7\x96\xfd\x16\x13o\x94\x14\x06}\x22\xcfG\xb9c\xea\ +\x1d\x88<\xc4\xd2\xff.\xa6\xec\xfe\x9d\xaa\x015y\x80\ +\xff\xf0\xe0\xa7x\xef\x91_\xa5V\xdcA}\xdb\xc05\ +5\xbd}\x94K\x03\xec5\x9dw\x1f\xfae\xde\xbc\xe3\ +c\x1c\x9c\xb8\x87{nx#^\xe4\x5c\xf3\xdbY\xbd\ +\xe3\xf8I\xc0}#?\xc1\xb0r#\x8f\xdd\xf1\x1f\xb8\ +e\xf2\xedxz\xa3\xef\x22M\x92DvQ1$L\ +#j\xe66\x1e\x19\xfb\xb7\xfc\xa7\x87?\xcd\xeb\xf3\x1e\ +\xa3\xe3\xc3\xc4\xe2\xaa\x8fYv\xa7,\x9e\xe7c\xe4\x04\ +\xdb\x94\xdb\xf9\xbd\x1f|\x9aJf\x86_~\xdb\x1f\xe3\ +e\x1a\x04\x9bu\xd0\xff\x7f\xea\x85=\xcf'\x88\x02\x94\ +L\xc0\xee\xf4\x9d\xfc\xe8M?\x87rx\xf8A\xee\x99\ +\xf9\x81M\x16\xbeV\x17\xf6<\x9f(\x0a8\x05/\x9c\x07\x1f\ +\xaf='&\x8e\xec\xa0\x08\xc1R\xbd\x81*b\xc8\xa7\ +\xea/\x93\xeeNa\xbbvD\xda\xaf4\xa8E\xa0r\ +r\xfe\xcflI\x1d\xa0o\x83\xcbD\xebT8\x98\xff\ +\x93Xw,\x17#>\xc1\xd2\x92\xc9\xce\xa1a^9\ +\xff+&\x97\xcf\xe2\xd8N\x94\xe9]I\xe9\xab\x9a\xe0\ +\xed\xcb/r\xf8K\x8f\xf1\xfb\xd1\xc7\xb8l\x1e'\x9d\ +\xc8\xa3_\x97\x176\x8dp\xd7gn\xf9\x0a\xf5\x86E\ +\xae(\x90\xf23\xa8R\x02\xdb\xb5>3n\xd340\ +m\x0b\x09A]\xb9\xc8p\xff\x97\x99\xf2N\xf0\xd73\ +\xcf\xd1\xa5u\x87\xe3\xd6\x8d\x08\xb93L\x13\xcf\x87\x8d\ +\x1b\xf3\xbc\x7f\xee}\xfa\xb2\xfd<\xfd\xe1#d\xe2\x85\ +hN\xae\x91\x09a\x8b\x5c!\x93\xe1\x89\xa3?\xe5\x81\ +\x9d\xbfDi*\xd3\xcc.M3[\xaa\xa0\xd7<\xba\ +\xdd\xd0\x17.\x97\xcb\xd4\x1b\xcb\xc4\x9bIl\x15\x9e:\ +\xf10\xf7\xec\xb9\x8f\xe9\xb9\xd3,\x9d\x81j\xb5\x1ei\ +\xe1\xce\x15HRB\xa8\x05\xfex\xe6\x09~\xb1\xfe\x19\ +f\xec\xb3\xcc\x8df)_\xada\xd5\xfd\xce\xbb]\x84\ +Vt\xdb1\xaa\xfe%^=\xfb\x0cn\xa2\xce\xe5\x85\ +\xb3\x94>0\xa8\xce\x1b\x91/l\x18\x06\x8e\xe9`\xc9\ +>\x86\x1f\xe3\xd8\xe4\x1f\xd8\xbf\xf9n\xc8T879\ +\xcf\xfc\xe5:\x8d%\x07I\x84\xefl\xe5r\x99J\xbd\ +A\xbf\x9dc\xd2\xf8\x98w'\xffD\x90h\xf2\xaf\x99\ +\x97Y\x982)\xcf\xd7P\xe3J\xa4\x85\x97\xab\x0d\x1a\ +\x09\x1f/H\xf1\xce\xdcsl\xf5\xf70\xee|@c\ +\xd1\xe0\xca\xa92\x8e\xee\x13O\x84Z\xb8\x5c.c$\ +|L[P\xe9\x1e\xe5\xb9\xe3O\xa2<\xff\xc3\xd3\x98\ +\x8b\x10\xcbH\xa8\xaa\x125\xd6\xca\xb2LL\xd3p\x17\ +\x02\xe6\xff\xe3\xd1\x98\x9a\xe3\xc7O=\x8a>\xaeA\x10\ +\x10K+\x91\xb1\xd3n\xc0\xc0\xb7|\x96\xce\xb9\xc8\xad\ +n\xee{\xe9\xfb\xe8%\x0d\xb3^&\x91\x15\x88pu\ +\x8f\x8e\x9d\xcf\xe7\xb1g[L\xbd\x1d\xf0\xe1\xe8\x9b,\ +\x8e\xda\xf8\x96\x84\x92\x04-\xa6FPd\x10\x04h\x09\ +\x0d\xcf\xb0\x99?\xed\xb2<;\xc3\xb1_?\x8e~Y\ +\xc5\x5cr\x89g\x15\x14ED\x81H\xa1(\xc4d\x15\ +}\xdc\xa7Z\x87\x17/\xbe\xc4\xd2y\x9f\xc6\x15\x1f-\ +)\xa3%\xd5\xa8\xd2Y\x08\x81\x1aS\xe9\xd6}\x16G\ +\x1d\x96\xe7\x179~\xee\x05\x96\xce\x05\xb8z@<+\ +PT9\x823%I\x22!i\xd4.\xb84\x15\x9f\ +\xb3\x93\xef\xa0l\xda\xb0\x05\xe9&\xd0\xd40\xc1\xe8\xfb\ +>333\xec\xd9\xb3\x87\x81\x81\x01,\xdd\xe6\xf4\x07\ +\x9f\xb0*\x19CJ,R\xdc\xd7\xc3\xfc\xc2<\x8dz\ +\x83B\xa1\xc0\xd8\xd8\x18\xbd\xbd\xbd\xec\xdb\xb7\x8fTw\ +\x8a\xbf\xff\xed\x0dz\xfbzY\xe5\xcc\xd3\xbb{\x15\xf5\ +F\x8dVK'\x9dNs\xe1\xc2\x05\x0c\xc3\xe0\xfe\xfb\ +\xefg\xe7\xce\x9d\xbc\xf5\xfa?\xb0\xaa6\x922\xc3\xb6\ +\x039\x9a\xcd&\xb9\x5c\x8eZ\xad\xc6\xf4\xf44\xadV\ +\x8b\xe1\xe1aFFF\x88i1>9\xf5)\x9e\xd1\ +\xe2\x06\xa9El\xabF&\x97\xe1R\xe9\x12\xf1x<\ +L'\xa9*###\xdc|\xf3\xcd\x9c\xf8\xe7I\x16\ +/V(j\x82\xbeA\x19w\xadC\xb5R\xed\x10\xb8\ +Ql\xf6\xd0\xa1C,U\xaa||\xec4\x99T\x8a\ +x\xcc$\x7f\xd32\xb9|\x0e\xcb\xb2\xa8T*\xb4Z\ +-t]\xe7\xc8CGh5\x9b\x8c\x97&Y\xaa\xd5\ +\xc8:\x16\xca\xf0\xf06\xce\x9f?\xcf\xe0\xe0 \xa9T\ +*\x12\xfc{\xf7\xee\xe5\xf6\xdbo\x0f!\x1f~G.\ +\x97\xc3\xb6\xed\x08\xcb\xb5L\x8bb\xb1\xc8\xd8\xd8\x18\xf9\ +|\x9eC\x87\x0e\x91\xcf\xe7\xb9:s\x95\xa1\xa1!&\ +&&\xe8\xd4(_\xb9r\x85\xad[\xb7R*\x950\ +M\x93;\xee\xb8\x83M\x9b6111\x11.\x00\x9e\ +\xc1\xf6\xed\xdb9}\xfa4\xe9t\x9a\xfe\xfe~\xe6\xe6\ +\xe6\x00\xd8\xb1c\x07\x07\x0f\x1ed\xfd\xfa\xf5<\xfb\xec\ +\xb3,,,P(\x148y\xf2$}\xbd}\xed\xc6\ +\xca\x90\xd1Q\x14\x85\x91\x91\x11\xee\xbd\xf7^\x1c\xc7\xa1\ +T*144\xc4\xa5K\x97\xc8f\xb3\x1c=z\x94\ +\xb5k\xd7255E\xb9\x5c&\x97\xcbq\xf8\xf0a\ +FGG)W+l\xde\xbc\x19]\xd7\xb9p\xe1\x02\ +\x99L\x86b\xb1H\xa9T\x8a|\xe1#G\x8ep\xee\ +\xdc9\xc6\xc7\xc7\x99\x9d\x9d\x0d\x19\xe9]\xbbv\x05\x1d\ +\x9d\xe88\x0e\xc9d\x92\xc9\xc9\xc9\x8bk\xd6\xac\x19\xda\ +\xbcy3ccc\xd1\xce\xf3\xf5\xdd\xcc\xed\xf8SS\ +\xd3\xb4\xd8\xd6\xad[\xd5j\xb5\xca\xf2\xf2r\xa4U;\ +^k'b/IR\xd9u\xddq`W6\x9b\x8d\ +h\x82\x95\xbb)+\xfdgUU\x1b\xb3\xb3\xb3\xd2\xfe\ +\xfd\xfbSccc\x916\xed<6:\x15-\xae\xeb\ +v\x18\xe9\x89\x91\x91\x91\x1bm\xdb\x8e\xbc\xdb\xcen\xf2\ +\xca\xa6\x8e\x95\xbep\x87\xed^\xb9X\xac\x1c\xbb\xef\xfb\ +\x08!\xa8\xd7\xeb\xe5b\xb1\xd8388\xc8\xe4\xe4d\ +tK+\xa9\xeet\xa4)\xa5v\x96\xd6u]\xaf\xbd\ +\xbfF2\xd1\x15b\xb4\xda\xf5\x5cr\x88\xf8Z\x96\xe5\ +\xa6R)uvv\x16Y\x96\xdb\x8c\xf4\xf5\x1cs\xd0\ +\x99DyffFZ\xbdz\xb5'\x84\x90bZ\xec\ +\xb3Yd\xaey\xbd\xed\x1a\xe4\xa0X,*SSS\ +$\x12\x09:ZXj\x7f\xb7\xab\xab;\xfaM\xfb\x8f\ +\x9a\xba\xaec;6q-\x8e\xefC\x5c\xfb\xfc\xf1\x85\ +\x10\x94\xcbe\x84\x10R\xbd^GBB\x1514%\ +\xb6\x82\x91\x96\x22M\xdch4\xf0}\xbf\x99N\xa7{\ +\x16\x16\x16\xe8Jt\x11\xf8a}\x96\x92\x1b\x8cGZ\ +\xb1s6eYv\xf3\xf9<\x86n\xe0t\x99$\xfb\ +\xed\xb0\x94\xd0\x10\xf8\xba\x1a\xe6\x85\xdb\x98l\xa5Ri\ +\x15\x0a\x05U\x08\x11\xf3\xf0\xf0V-\xd3\x9dRB\xd6\ +\xb8\x93\xe9u\xe5N\x0d|\x22\x16\x8b\xe5\x93\xc9\xa4\xa3\ +(\x8ah\xcaMr\x03\x12\xbe)\x11\xb4T|]!\ +\xb0\xe4\xd0\xeb\x0d\xaf\x02!\x84H\xe6r9Z\xbeA\ +z\xa3\x05\xaeL\xa0+\x04\xa6\xd2\xee\xda\x92\x91\xa4\x10\ +kS\x14e\xb2\xa7\xa7g\x93\xa9\x9b\xd4\xe2U\xfa\x06\ +\x05N\xb3\x9ds\xd6\xc3\x9cs'\xb1.\xcb2}}\ +}j\xe0\x07\x94\x9d:}[ \xb0$|C!0\ +\x04~3\xe4\xafe!wV\xf7K\x99Lf\xd0\xb2\ +\x1d\xfcUMR\x05\x19W\x07%{\xa0\x8c,\x04K\ +oeq\xe6\xb5N\x0b[\x5c\x08\x81\xe3{\xf8\xfd\xcb\ +$w\xb7\xe8M\x0c\xd04\xeb!ti+T^)\ +Fw\x9a\xa2(\xb2\xe7y\xe8\xaaAl{\x95\xe2\x9a\ +\x1c)5\xcbLu\x8aX\x5c\xa5~,\x8f=\x13\xc3\ +\xf7}YQ\x94d,\x16\xd3\x14E\x91\xe7VO\xb3\ +\xe5N\x8dDP`\xa9YA\xc8\x02w\xaa\x9b\xe5\x8f\ +R\xf8n\xd8 bY\x16\xb2/\x05sJE\x1a\xdc\ +\x1b\x10\x0f\xb2Xv\x0b\xd7\xb1\x09\x0c\x95\xfa\xf1\x0c\xce\ +\xa2\x8a\xa6i\x04A\x10\x97e\x19\xd9\x95Y^\xb7\xc0\ +\xe6=i\x12A\x9e\xa6^\xc3\xb6\x1dh$\xa9\xbe\x99\ +]Y\xaf'9\xb6\xc3|r\x91\xe1\xbdI\x02+\x8e\ +*K4Z\x15TEc\xf1\x95<\xbe\x11\xed\xe4\xa4\ +\x09\xa0j\xe8\xac\xbbMG\xc9\x18\x0c\xa4\x86\x90\x0f\xac\ +{\x80dW\xbb;\xcb\xba\x96\x17\x0e+\x92,<\xd9\ +f}\xec\xab|o\xc7\xa3|\xe7\x0b\x8f\xb3.\xb3;\ +*1\xec\xd8\x9aQ\xfe\xd7sX\xa84\xf8\xd1\xee'\ +\x19\xce\xde\xc57\xb7?\xc0\xb7n\xfd\x01\xa6\xdbZI\ +\xa8\x06\x1dYg\x05\x06\xbbz\xeffw\xf1\xbb\xdc\xb3\ +\xfbA\xbe\xb8\xea\x1b\xe8\xa2\x82q\xadG\xba\x93\x17\x96\ +\xbc\xc0amn\x13_\x1f|\x88\x9f\xdf\xf9[2\xe6\ +m\xac\xea\xed\xc1\xf6\xcc(E\x19\xf5_\x1b&\x8a&\ +\xb11\xb9\x87\x07oy\x9a\xa1\xfc^~\xb2\xf7\x19l\ +m\xf934k\xc7s\x96U\xb82Q\xe3\xd1}\xcf\ +\xb3!\xbb\x9b\x9f\xed\x7f\x01'\xd9\x88>\xbf\x96\xd6l\ +\xe7\x85e\x83}\xa9v^xMj\x13\xeb\x0b\xdb\xb0\ +\xedPyt\xb4p(\xf8M\x5c\xd7dS\xe1\x16\x8e\ +\xcf\xfc\x85\xf7N}\xc4\xce5\xfb\xc2d\xf9\x0am\x1b\ +ia\xdb\x22+\x06\x98\xaa\x958q\xf9u\xbe6t\ +\x08\x81\xc0u\xbdHgw\x1a\x83\x0c\xc3 p\x15\x06\ +s7q\xd6|\x95\x1d\xf9\xbb\xd8X\xdcF_\xd7z\ +\xcc\xeb|a\xd34\xc2\xbc\xb0\x92\xa4\xeaL\xf3\xdf\xd2\ +(\xb7\xae\xdbK>\xbe\x1a\xd32\xaeS\x22\xa1\xe7\xac\ +\x08AsI\xf0\xda\xd9\xe7Y\xadmc\xfb\xda\xedh\ +R\x22\xd4\xca\xc6\x0aMn\x1a\x04\x81G\xd6\xdb@\xd5\ ++\xd1\x97\xed\xa7\xb7{\x80\xde\xe4@\x14\xde\xeeHP\ +\xbd\xcdH7\xday\xe13\x95\xf7\xf8\x1f\xcb\xb6\x8e\xf6\ +\x8f\xf1\xef\x16\x00\x00\x00\x00IEND\xaeB`\x82\ +\ +" + +qt_resource_name = b"\ +\x00\x06\ +\x07\x03}\xc3\ +\x00i\ +\x00m\x00a\x00g\x00e\x00s\ +\x00\x0b\ +\x08R\xaa\xc7\ +\x00f\ +\x00i\x00g\x00u\x00r\x00e\x008\x00.\x00p\x00n\x00g\ +\x00\x0a\ +\x0bSG\xc7\ +\x00r\ +\x00a\x00n\x00d\x00o\x00m\x00.\x00p\x00n\x00g\ +\x00\x0b\ +\x0a\x12^\xc7\ +\x00k\ +\x00i\x00n\x00e\x00t\x00i\x00c\x00.\x00p\x00n\x00g\ +\x00\x0c\ +\x05\x8f\xe2\xc7\ +\x00c\ +\x00e\x00n\x00t\x00e\x00r\x00e\x00d\x00.\x00p\x00n\x00g\ +\x00\x14\ +\x00\x22\x00G\ +\x00T\ +\x00i\x00m\x00e\x00-\x00F\x00o\x00r\x00-\x00L\x00u\x00n\x00c\x00h\x00-\x002\x00.\ +\x00j\x00p\x00g\ +\x00\x0b\ +\x07P1G\ +\x00e\ +\x00l\x00l\x00i\x00p\x00s\x00e\x00.\x00p\x00n\x00g\ +\x00\x08\ +\x00(X'\ +\x00t\ +\x00i\x00l\x00e\x00.\x00p\x00n\x00g\ +" + +qt_resource_struct = b"\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x02\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x82\x00\x00\x00\x00\x00\x01\x00\x00\x8f_\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00\xcc\x00\x00\x00\x00\x00\x01\x00\x018M\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00d\x00\x00\x00\x00\x00\x01\x00\x00\x8b\xdf\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x01\x00\x01\x0e:\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00H\x00\x00\x00\x00\x00\x01\x00\x00qc\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00.\x00\x00\x00\x00\x00\x01\x00\x006\xe6\ +\x00\x00\x01~*kP\x18\ +" + +def qInitResources(): + QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +def qCleanupResources(): + QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +qInitResources() diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/images/Time-For-Lunch-2.jpg b/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/images/Time-For-Lunch-2.jpg new file mode 100644 index 0000000..c57a555 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/images/Time-For-Lunch-2.jpg differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/images/centered.png b/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/images/centered.png new file mode 100644 index 0000000..e416156 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/images/centered.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/images/ellipse.png b/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/images/ellipse.png new file mode 100644 index 0000000..2c3ba88 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/images/ellipse.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/images/figure8.png b/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/images/figure8.png new file mode 100644 index 0000000..6b05804 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/images/figure8.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/images/kinetic.png b/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/images/kinetic.png new file mode 100644 index 0000000..55cfa55 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/images/kinetic.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/images/random.png b/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/images/random.png new file mode 100644 index 0000000..415d96f Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/images/random.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/images/tile.png b/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/images/tile.png new file mode 100644 index 0000000..c8f39d8 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/animation/animatedtiles/images/tile.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/appchooser/__pycache__/appchooser.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/animation/appchooser/__pycache__/appchooser.cpython-310.pyc new file mode 100644 index 0000000..3806be3 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/animation/appchooser/__pycache__/appchooser.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/appchooser/__pycache__/appchooser_rc.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/animation/appchooser/__pycache__/appchooser_rc.cpython-310.pyc new file mode 100644 index 0000000..d9cd943 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/animation/appchooser/__pycache__/appchooser_rc.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/appchooser/accessories-dictionary.png b/venv/Lib/site-packages/PySide2/examples/widgets/animation/appchooser/accessories-dictionary.png new file mode 100644 index 0000000..e9bd55d Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/animation/appchooser/accessories-dictionary.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/appchooser/akregator.png b/venv/Lib/site-packages/PySide2/examples/widgets/animation/appchooser/akregator.png new file mode 100644 index 0000000..a086f45 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/animation/appchooser/akregator.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/appchooser/appchooser.py b/venv/Lib/site-packages/PySide2/examples/widgets/animation/appchooser/appchooser.py new file mode 100644 index 0000000..74e9f1c --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/animation/appchooser/appchooser.py @@ -0,0 +1,133 @@ + +############################################################################# +## +## Copyright (C) 2010 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2 import QtCore, QtGui, QtWidgets + +import appchooser_rc + + +class Pixmap(QtWidgets.QGraphicsWidget): + clicked = QtCore.Signal() + + def __init__(self, pix, parent=None): + super(Pixmap, self).__init__(parent) + + self.orig = QtGui.QPixmap(pix) + self.p = QtGui.QPixmap(pix) + + def paint(self, painter, option, widget): + painter.drawPixmap(QtCore.QPointF(), self.p) + + def mousePressEvent(self, ev): + self.clicked.emit() + + def setGeometry(self, rect): + super(Pixmap, self).setGeometry(rect) + + if rect.size().width() > self.orig.size().width(): + self.p = self.orig.scaled(rect.size().toSize()) + else: + self.p = QtGui.QPixmap(self.orig) + + +def createStates(objects, selectedRect, parent): + for obj in objects: + state = QtCore.QState(parent) + state.assignProperty(obj, 'geometry', selectedRect) + parent.addTransition(obj.clicked, state) + + +def createAnimations(objects, machine): + for obj in objects: + animation = QtCore.QPropertyAnimation(obj, b'geometry', obj) + machine.addDefaultAnimation(animation) + + +if __name__ == '__main__': + + import sys + + app = QtWidgets.QApplication(sys.argv) + + p1 = Pixmap(QtGui.QPixmap(':/digikam.png')) + p2 = Pixmap(QtGui.QPixmap(':/akregator.png')) + p3 = Pixmap(QtGui.QPixmap(':/accessories-dictionary.png')) + p4 = Pixmap(QtGui.QPixmap(':/k3b.png')) + + p1.setGeometry(QtCore.QRectF(0.0, 0.0, 64.0, 64.0)) + p2.setGeometry(QtCore.QRectF(236.0, 0.0, 64.0, 64.0)) + p3.setGeometry(QtCore.QRectF(236.0, 236.0, 64.0, 64.0)) + p4.setGeometry(QtCore.QRectF(0.0, 236.0, 64.0, 64.0)) + + scene = QtWidgets.QGraphicsScene(0, 0, 300, 300) + scene.setBackgroundBrush(QtCore.Qt.white) + scene.addItem(p1) + scene.addItem(p2) + scene.addItem(p3) + scene.addItem(p4) + + window = QtWidgets.QGraphicsView(scene) + window.setFrameStyle(0) + window.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop) + window.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) + window.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) + + machine = QtCore.QStateMachine() + machine.setGlobalRestorePolicy(QtCore.QStateMachine.RestoreProperties) + + group = QtCore.QState(machine) + selectedRect = QtCore.QRect(86, 86, 128, 128) + + idleState = QtCore.QState(group) + group.setInitialState(idleState) + + objects = [p1, p2, p3, p4] + createStates(objects, selectedRect, group) + createAnimations(objects, machine) + + machine.setInitialState(group) + machine.start() + + window.resize(300, 300) + window.show() + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/appchooser/appchooser.pyproject b/venv/Lib/site-packages/PySide2/examples/widgets/animation/appchooser/appchooser.pyproject new file mode 100644 index 0000000..14bc351 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/animation/appchooser/appchooser.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["appchooser_rc.py", "appchooser.py", "appchooser.qrc"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/appchooser/appchooser.qrc b/venv/Lib/site-packages/PySide2/examples/widgets/animation/appchooser/appchooser.qrc new file mode 100644 index 0000000..28a3e1c --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/animation/appchooser/appchooser.qrc @@ -0,0 +1,8 @@ + + + accessories-dictionary.png + akregator.png + digikam.png + k3b.png + + diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/appchooser/appchooser_rc.py b/venv/Lib/site-packages/PySide2/examples/widgets/animation/appchooser/appchooser_rc.py new file mode 100644 index 0000000..17b0124 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/animation/appchooser/appchooser_rc.py @@ -0,0 +1,1424 @@ +# Resource object code (Python 3) +# Created by: object code +# Created by: The Resource Compiler for Qt version 5.15.2 +# WARNING! All changes made in this file will be lost! + +from PySide2 import QtCore + +qt_resource_data = b"\ +\x00\x00\x13\x09\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00@\x00\x00\x00@\x08\x06\x00\x00\x00\xaaiq\xde\ +\x00\x00\x00\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\ +\xa7\x93\x00\x00\x00\x09pHYs\x00\x00\x1b\xaf\x00\x00\ +\x1b\xaf\x01^\x1a\x91\x1c\x00\x00\x00\x07tIME\x07\ +\xd7\x09\x17\x17\x15\x19I\x86pA\x00\x00\x12\x96ID\ +ATx\xda\xed[\x09t\x5c\xd5y\xfe\xee{\xb3k\ +\xb4Z\xb2%\xd9\x96dcl\x8316\xb6\x81\x00\xe1\ +\xb04\x14\xc2\xda\x94\x86\x04\xd2\x90Br ] \x14\ +h\x08KH\x09\x87\xda\xadsRR\x02$\xad{ \ +\xe4\xb0\x95\xcd@\xb0\x1bV/\x80\xb1-\xdb\xd8\xb2l\ +l\xd9\xb2,\xc9\x1aK\x1ai\xf6\xe5m\xf7\xf6\x7f3\ +\xef\xf0\xf4:\x9a\x19\x1b&=\xc9i~\x9dO\xf7\xbd\ +\xfb\xee\x9by\xdfw\xff\xe5\xbe+\x1b\x7f\xb4?\xda\xff\ +oc8\x0e\x1b\xbb\x05uR\xed\xf4\x8b]3\x97\x5c\ +\x06\xb7\xef<\xa1\xa4<\xd0\xb3\xc3B\xcd\x0cq5\x15\ +\x12J\x22\xc4S\xe3!\x91\x8d\x85\x84\xc0\x10\x80\x10\xe1\ +\xe8\xd4\x9fC\xf9\x83\x16@\xfc\xd8\x7f\x95h]v7\ +\xe7X\xc6\xd3Q\x99\x08Bp\x01\xe1\x0e\x12\xaa\xc0e\ +?\x84\xec\x81`n\x82\x0b\x90\x5c\x10\x82\x03\xdc\x00\xd7\ +\xd2\x02\xba2.\x0cmH\xe8jHhJH\xe8\xd9\ +\x10W\xd3$T|Hh\xd9\x900\x85\x12\x08M\x7f\ +\x0c\x99\xdf;\x01\xc4\x03\x9e?\xc7\xf9\xf7\xbf\x88\xe6E\ +\xcc$\x04\xae\x03&9C\x052\x11\x80\xc4\x80\x9a\xcc\ +C\xcf@h\x19\xf0l\x82\x90\x02W\x92\xe0\xa6P\xb2\ +\x0f\x5cH\x04S\x13N\xd0\xc1u-'\x14@\xd7\x0d\ +\x03$\x0aA\x8d\x0a\xae\x87\x08C\xc2\xa06\x07\x95\x04\ +3\xa1\x0c\x09n\x84\x00\x84:\x1eG\xf2\xffN\x80\xa7\ +.\xee\xc4\x99\xb7,\x85\xb0\xc8s#\x07\xc7\xb9(\xd6\ +\xa7\xe7\xa1\x98\xe2d\xed>\xd3\x84\x00W3\xa4\xa3B\ +\xc8\x82s\x0e\x03np\x12\xd6P29\x01\x0d\x12R\ +\xcf\xc4\x01\xba&\xcc\x1fn\x80<\x89\xa0'h`N\ +\x90\x1c\x04\x0f\x01<\xc4d\x98\xd8\xd9q)\xba\xd9\xc5\ +\x10\x95\x11\xe0\x85kSXxm ?\xf3F\x09\x01\ +\x9cb8\xc6\x8b\xdc5\x1b\xa2\xc8X\xf2\x1e@\x00\x14\ +N\x90\xdc\x80\xcbG\xf0\xe7\xcd\ +\xf4\x96\xd4\xa7\xe2H4\xc6c\x0b\x95\x0f?\xd9\x0b\xd4\ +\xd7\x00\xb3.\x85\xde4\x97\x9c\xec\x03\xe8C\xab\xc1\xb3\ +\x06\xd48\xae\xc8\x8c\x88U\xa2\x1b_c\x0bP\xd2$\ +\x945\x0e\x88\x89\x04x\x01\x81\xa2\xd7E1\x91\x8a|\ +\xd6\xb1~\xb6iZ\x1aH\x1c\x01\x0e\xbf\x0f\xd7\xbe5\ +\xa8Z\xba\x02\x9e\xe9\xcb\x00\x96\x1f\x0a\xce\xbe\xda\xf38\ +N\x00>\xaf\x00BLp\xdd\x223iyD\xd9\x87\ +\xe7\xe5\xbd\x80P\xfe\xb3\xedky\x11\x0e\xbc\x09\xac\xbd\ +\x13zf\x16RC\x02\xe9a\x015)\x98\xa1bI\ +%\x04(|8\xce\x8b\xccl1a\x8e\x918/\x15\ +Z\x93\x08\x13'\xf2\xe91\xe4\xec\x93\xd50\x12^\xa4\ +\x8f\x9a\xe4\xf3\xb7B\xc0_\x81\x1c \x0a\xc9\xd8\x84J\ +\x92q\x1e\x97\x0a%^F\x9cB\xf1l\xf2\xf6D1\ +\xdd,\xaf\xd6#\xc3\xb2\xcf-@\xa1\xdb\x15xA\xb1\ +\xd8u\x1e\x17\x0f\x95\xc2DY\xc6\xc3\xe2\x83D>\x8c\ +\x02\xe3\x1a\x84\xc5\xbcr\x02@\x14\xcd\xe86\x81\xe3M\ +\x88E\xae\x17\x92-\x1c\x1f\x1bp\x90w\x98\xa1C\xa0\ +\xd2\x02\x08A0\x8e=\xa3\x17\x86J\xf9$\xc8\x8f1\ +)\xc6K\x90'\x13\xa6\x07L\x9c\xb7\x0a\x09\xe0$[\ +\xbe\xd4\x95_\x03\x94\xff\xacB\x0f\x8b\xf5\x03\xa9Q\x94\ +4C\xb7\x89W8\x04,\x18\x05\x0fW\x9eL\x91k\ +(\xa8&\xc5E\x8d\x1d.O\x1e\xc8/\x93\xe1\x14\xa0\ +\x12e\xd0A\xb6\x10E26l\xa2\xb9~\x10\x98u\ +\x0en\x9d\x13`\xf7M\x9a\x10\xcb\xcf\xbc3\x09\x026\ +D%\x04@\xc9D5\xb9\x10\xb0\x88\xb1c$n\xc2\ +>\xb6\xbf'j\xce\xfc\x08\x8e\xd5\x04\xd7-\xe2\x16*\ +\xe4\x01eVz\x0e\x22\xc5\x88\x95\x12\xc3\xeas\x0a\x87\ +X_\x01\xf9\xb2f8\xca`%\x05(\x1f\xdbN!\ +\x9cd\x0a=\xc2&n\x0bdX\xe0@\x9c\xc8g\x88\ +\xbcT\xe4}\xb5t\x15p\xa0\xd2+\xc1\x828\xb7`\ +\x93\x13\xff\xdb\x0b,b\xc2\xe1\xe66Y\x82\xe38~\ +\x88\xc8\x0f\x03\xb25TX\xe0(g\xf6:\xc0\xf6\x82\ +\x0a\xaf\x04=U@\xfd\x09\xf9\xa7\xd1\xd3@&\x0c$\ +\x8f\x02Z\xd2\x99\xe8\xecX.\x14\x889\x12\xa3S\xa8\ +xo\x9e\xbcd==\xb3E\xb0\xfd\xbat\x15\xb0\xcb\ +`\xe5\xd6\x01\xb6\x08\xfe)\xc0\xdcK\xe14\x91\x17a\ +l/\x10\xfa(\xe7\xbe\x85\xeeO\x10\x13\xfa\x84\xc3\xe5\ +\xf3m\xe2\x90\x93\xbcM\xd6\xd9\xf2\x12\xcc\xac$X\xe9\ +u\x80#\xbb\x17\x1a\x03\x82-y\xb4_\x98\x17\xe0\xe0\ +k\xc0H\xa73\x1c\x18\x016y\xb3\xb5\xc9\x9b3\x7f\ +\xd4r\xfb2\x02\xc0\x1eSr\x1d \x08\x15M\x82\xb0\ +P\xcej:\x80\xd3n\x05\xce\xb8\x17\xa8\x9e>!\xce\ +\xed|`\x9f[\xe4\xb3\x16y\x09\xd4Z\x90\xca\x80\xa1\ +\xf8\xcb\x90\xa8d\x15\xc0$\x19\xdfP\xca\xaf2\xea\xe7\ +\x01\xe7,\x07:.s\x84\x84\x0d\x93\xfcA\x22\x1f\xb2\ +I\x95\x03+-\x820\xf4\xcaW\x01\x22j'\xaaH\ +\x0f\xb0\xeen@\xe8\xf9so5\x10l&\xb2'\x02\ +\xd3\x96\xd1y}\xc1v\x22N\xba\x01\xa8\x9b\x03\xec\x5c\ +\x09\x18\x9a\x95\x00\x09\x89\x03\x80b\x91\x17\x93\x00\x8eD\ +h\x1b\xb7\xa7\xad \x1c\xb8\xe6\x8c\x16Q\xe92\x88\x89\ +\xe5O\x07\xb2a\xc200\xba\x1d\xe8y\x16h\x5c\x04\ +\xcc\xfe3\xa0\xba\x1d\x0ek9\x17\xf0\x90X\x9d\x14\x16\ +\x9a\x0a${\xec\x99\x17%\x92\x9cp\x10v\x92f\x13\ + \x9c\x1e\x90\xfbU\xb1\x10`\x02\xce\x9a?Y\x19\xb3\ +\xb6\xbaG\xb6\x00\x9b\x7f\x00|\xb2\x8a\xba\xb2p\xd8\x94\ +\xc5\xc0\x92\xfb\x81t\x9fI\xbex\xcc\xdb\xfd\xc7\x17\x1a\ +\xa6\xd9e\x90P\xa9$\x08QX\xd7m\xf2\x85\xab>\ +S\x88\x815$\xc4\x1d@j\x10\x0ek:\x138\xf5\ +\xfb\x05d\xcb\x82M\x1a\xff\xce~\xf6;]\x09Z\x04\ +\xfd\x8d@\xfb\x05\x80\xbb*\x17oH\x0f\x01\xf1\x83\xc0\ +x\x17`\xa8\x13D\xa06u\x18\xd8J\x22,y\x10\ +\xa8\x99\x8bOm\xfe\xdf\x00\xa3\x1f\x00\x87\x9e\x01P&\ +\xfeQ\xc2\xf5%G\x9e\xc8\x83\xeb\xf6\xed\xa22\xeb\x00\ +\xe7\xcc\xfb\xea\x80\xd6\xb3`\xdbR\x02\xf2+\xc1\xa1w\ +\x80\xbe\xd5t\x1c\xb1\x17;Z\x14\xd8~\x17\x89\xf0\xcf\ +N\x11\xce|\x04\x18y\xd7\xac\xfd\xc5\xe3\x9f\x17\xf5O\ +'i\xc9>\x17\x10\x16\xf1\x8a\x87\x80\xed\xee\x93\x9a;\ +\x08\xb4_\x05\x9c\xf5S\xa0q\xa9\xf3\xe5f|+\xb0\ +\xfer@\x8b\xd9\xe3=\x0d\xa4\xddO\xca\xd7|f\xb7\ +6\x8a\x84\x06\x9b\xc4\xa1*#\x80s%X\xd2<\xf5\ +\xc0\xe2\xfb\x80\xb6+\xf2^\x90\xd8\x07(G\x80T\x0f\ +\xb0\xfdV8\xac\xfdZ\xa0\xe1\xb4\xcfP\xfbK\xc2\xb1\ +\x12\x14\xa2b\x02p\x0b\x02Pb@x\x170\xb2\x0d\ +H\x0eN\xf2-\x0c\x98\xfb]\xa0\xf1L ;h?\ +x\xffSt\xcf;\x13\x86Q\xe7)\xf7\x1dg\x22,\ +q\xcc\x9c\xc4\x05*\x97\x03\xec\xfa?\xbe\x17\xd8p\x1b\ +\x00\xdd\x0a\x09\xeb\x05\xa9\xe3J`\xc6\xc5\xce\xa5\xd9\xc2\ +\x1f\x11\xe1\xdf\x02\x91N\xfbAw\xdf\x05\x5c\xb8\xd5\x1e\ +\xd7Ja\x13l\x03\x92\xfd\xce\xd8g6\x0ac\xbd\x04\ +\x80\xcf\xb6'\xf8\xe0}7-\xdc\xf2\xf6O\xa5\xd2U\ +\x80\xc0U\xe7\x92\x18\x84L\x08\xd8\xfb\x18\xb0\xfd\x87\x80\ +\x91\x99\xf0\xc9n\xe0\x0b\xbf\x06\x5c.{\x16\xe3\xdb\x80\ +\xd1\x89^ \x03\xed\xdf,;\xf3N\x14\xef\x17\xec3\ +\xe6\x80\xb77\xf7\xae~k\xc3\xbe_\x90\x08\xach\x0e\ +(\xdc\xf3s.\x90\xc6:\x81\x0fo\xb4\xfa,\xab\x9e\ +\x0f\xb4]\xe7\x8c\xe3\xfe_\xc2a\xd3\xaf.A\xbaL\ +\xdc\xa3\xe0\xdc\x0e\x83\xe3\xc9\x01\xe3\x8a\x9e\xed\xdc58\ +\x7f\xc7\xee\xc1\x7f%\x11Jo\x89\x81;\x84\xb0wo\ +\xf7\x00\x87\x9f\x03\xf6\xac\x84\xc3\xe6\xdd\xe5$7\xba\x06\ +0\xd2\xf6\xf5\xda\xc5\x80\x7fj\x01\xe9\xe3$n\x0b \ +>\x83\x07$3\x19C\x81\xfb\xce\xd7\xdf\xec\xba\xe6P\ +\xff\xd8C\xc5\xdf\x06\x09\x81\x16\xe0\x8c\x1f\x03\x17=O\ +\xed\x0a 83O>=\x80\x9c\xed\xa5\x9a\xaf\xc5'\ +x\xc1\xc9@\xcd|\x9b\x94 \xf2\xd1\x0f\x9dIs\xca\ +\xd9\x85\xa4Q6\xde\x0b\xc93'q!\xb9\xe5c\x12\ + \x95\xc9\x1a)\xdd\xc8\x8eE\x92\xb7<\xbbz\xeb=\ +k_x\xf0\x9e\xc2?\x8d\xf1|\xe6^r'Po\ +\x12r\x01u\xd4\x9e\xbe\xc2v{\x86\xfc\xe2\xe7\xc8\xab\ +p\xd8\xd4\x8b\x9d3\x1b\xdb\x0c\x87\xd5.:\x0e\xa2e\ +D\x80\x05\xfa\xb5\xcbw\xfa/\x96?p\xeb\xeb\x8f=\ +\xfc\xc3\xef\xfc\xec'\xf7N/Z\x052\x8a\xa2'\xd2\ +\x19\xff\xf6M\x9b^Z\xbat\xe9k\xcf\xbc\xbc\xf9\xa1\ +\x0f\xff{\xe5\xc8\xd9\x97\xfc\xc3*G\x12\xac\x99\x0dT\ +\xb5\xc0a\xee\x1a\xe0\xe4\xef\x01\xdb\xbfo\xf7\x8dn\x00\ +:\xbe9\xc1\x0bNq\xbawf\x1f\x1cVu\xc2\xf1\ +\x91G\x89\xbe\x09%p\xe3\xa6.\xcf\x86\xa1\xfd\x977\ +\xd4\xd7^>sf\x8b\xf8\xea\xd5W\xec\x9a6m\xda\ +{UU5\xeb3Y\xf5\x83\x7f{\xe4\xe7\xa39\x01\ +\x14M\xe3\x14\x06~\x90q\xce\xffvgw\xff\xb9/\ +\xbd\xb1\xedq\xca\x07\xc38\xfc\xa4-\x80\x96)\xb2\xf9\ +q\x0a\x1c\x96\x19\x80\xc3|\xcd\xce\x87V\x87\xe00o\ +KY\x82\xe5\xc9;c\x9f\x83aj\x9d\xf7\xad\xdaT\ +\xed\x02&\xb9Z\x87G\xa2ll<\xb9\xa8\xb7oh\ +\x91,\xcb\xb7\xa9\xaa\xca\xe7\xcc\x99s{N\x00]\xd7\ +Y:\x9b\x0d\x80l\xc7\x8e\x1d\x83\x0b\x16,\xf8\xbb5\ +o\xef|\xbaeZ\xeds'\x9d0S\x0er\xc3\xda\ +\xc1\xe9\x07\xd2G\x81@3\x1c\x96<\x0c\xe7\x02\x5c\x86\ +\xc3\x5c\xb5\xce5\xbf\x91\x82\xc3\xe4*\x1c\x97\xb1\xc9\xfb\ +F\xb2>\xbc\x1f\xa9\xc3\xc1L-\x0egk0\x1eK\ +_\xa4\xebI\xc4b1(\xe4\xe5\x84}\xc4\xb5\x95s\ +^o\xf9\xe2,\xf3\x17\xb8\x10\x8c\xf2@\x10\x96uw\ +w?c\x18\xc6\xd3\xff\xf9\xf4\xba\xc0k\x91\xb9rZ\ +x\x00n\xfd\xe3\xc8\xf5\xb7\xe5W\x83\xb0,;\x0a\xec\ +|\xc8I\xb0\xaa\x03\x0e\xd3\xe3p\xee\xef{P`\xf6\ +\xfd\xc7e\xe3Y7~\xb5\xb7\x19\xd7\xbf\xbd\x00\xcb\xfb\ +\xcf\xc5{\xb1\x99\xd8\xdc\xaf\xe0\xc0\xde.\xd4%\xbaQ\ +\xa7\xf4?ZSSs\xe1\xca\x95+g\x90\x00Kg\ +\xcf\x9e\xdd#I\x12\xacoz\xcb\x05\xb2\x80\xcf\xd3\x94\ +U\x95FL0\x12\xe0&U5N^\xfe\xd8\xda\xd3\ +<\xb7\x5c\x86\xcb\x9b\xfa\xe03_{\x93}$\xf5&\ +`\xee\xd7\xf3\x1a\xf6<\x01\xa8$\x82<\xe1\xe1[.\ +\x83\xc3R\xbd6yF\x90\xeb\xe10m\x1c\x10\xc7!\ +\x82\x99\xe0F\xaa\xf0\xec\xee\xa9\xd8\x12\x9e\x06M\xd7\x10\ +\x8f\x8fCD\xdf\xc3\xe5s\x0d\xccY\xe4\xc3\x89\xb3\xda\ +\xe0\xadm\xa6<}A_\xfb\x95\xf7\x0c\x03\x10\x0f?\ +\xfc0#[,D.k_Mx\xc3u\xcf\xdf_\ +\x83\xc7\xd6\xeelJ\xa6\xd5\x16\xcb-8\x01\x07\x0f\x1e\ +L\xb7\xb5\xb5}%\x1aIl]\xf1\xcb\xdf6\xc97\ +~\x11\x97d\x87\xe0\x96\x00\x16\xeb\x07\xdb\xfe/\x80y\ +,\xe3\xd3\xedl\xc6\xac\x87\xdf\xf9\x03\xe0\xc0\xa3f\xc9\ +\xcc#\xfc.\xc0'\xb8\xafo\x0e\x1c\xa6Z\x028E\ +\x98\xb4o\xf3`\x10\xab\xb65c\xd3a/\xa2\xd1\x08\ +b\x91\x8f\xf1\xa59\x0a~t\x9e\x84\xf3\x17\xce\x04\xab\ +\x9b\x87=\x83@d\xe8\x10\xa2\x07;\x11\xee\xddy\xf0\ +\x9dp\xf3\x01\x00|\xc5\x8a\x15\xcb\xc8\x1b<$\xc0\xeb\ +\x00r\xa5\xca\xd5\xd8X#e\x15\xad\xdf\xd05\x0e\xa0\ +\x86\x90&h\x041\xbb\xbf\xffp\xf4\x84\xa6\xeb\x87\x8e\ +\x8c\xacY\xf1\xe4&\x96\xb9\xfaj\x9co\xbc\x08\x8f\xac\ +A\x96\xcdJH\xa0V\xa6\x96Y\xe7\x8c\x13\xc2]`\ +\x11\x82\x9c\xaf\x9c)]\xc6\xa1\xb1\x00\x8e\xc4<\x18\x8a\ +z\x10z\xf5\xbf\x10\xd3\xd7!\xcd\xa6#e\xd4\x01$\ +l-\xef@\x8d\xcf\xc0\xd4j\x0ds\x9b2X6#\ +\x85)~\x1d\xa6\x0d'\xdc\xd8p\xb0\x1a/uM\xc1\ +\xc7\x83\x12\xc2\xe10\x22\xe3\xe3\xf8\x8b\xa5\xc0\x037\x07\ +p\xe2\xbc/\xe4\x12\xb1\x88\x1d\x811\xb4\x1d\x91}1\ +\xa4\x14\x91O7n\xb75E`---\x17\x9b\xf9\ +\x80\xecyX\xe6\xba\xfd\xdeU\x1c^\xff\x12\xa8Y\x93\ +\xfc\x14B\x15!F\xc8\x10\xf8\x99\xd3G\xd7m<\x5c\ +\xf7`o\xdf\x91\xfb\x1f~IB\xf4O\xaf\xc22u\ +5<.\x1d.W\x9e\xbc\xcb\x12\x81\x13\xdbP\xda\x8b\ +\xc1\xb8\x17\xfdQ\x1f\x8e$\x83\xd8?\xecBoHC\ +:\x93E6\x9b\x85\xaaf D\x1a>_\x06\x81\xc0\ +(\x82\xf2\x18\xd4\ +7\xf0\x97O\xbc\xc9\xb0\xff\xa4\xf35ytK\xca`\ +\xae\xa0\xaf\xaa\xc6\xe5\xae\x9e\x82\x81\xa8\x84\x811\x8eh\ +<\x8dT*\x83D2\x8d\x804\x88\x93Zu\x5c\xbb\ +T\xc2\xbc\x19@[\xb3\x84\xf6\xd6 \x9a\xbf\xf4\x22$\ +3Q\xbaH\xf3\x9d7\x83\x99\x9b&\xba\x02(I0\ +5\x85\xa7\xd6\xeb\xb8\xf1?R\x18\x19\xe1\x85\xc9\x9e\x01\ +\xabo\x0b\xe0\xbc+\xbe\x05\xe1i\x82H\x0eC\xdb\xf7\ +\x12\x90I\x12a\x19\x0c\xc8\x91\xe7\xd6\x96\x92\x90h\xa6\ +\x00\xf6\xca+\xaf\xdc\x10\x08\x04fG\xa3\xd1U ^\ +\xc5\x0a\x8a\x8b\x10$4\x10\xbc\x84ds\x10\x89\xf3\xe7\ +\x815\x04Q\xfb\x9b\xfd\x0dw)\xdc\xfd\xdd\xd6\xd6V\ +\xf4\xf7\xf7\xa1*\xe0\x0574\x84\x86#0\x0c\x8ei\ +\xb5\x14\x87\xf3%\x9c;\x8f\xe1\x82\xa5Mh\x9f=\x8b\ +*\x5c\x13\x98\xbf\x01\xcc[\x0b\xe6\x0e\x82A\x03\xb8\x92\ +\x033\xb2\x10j\x14,=\x08\xa4\x87s\xdb\xecL\xcb\ +\xe2\xd0Q\x81\xb3\x97\xd7b$\x1c\x01Yn\xc6;\x1a\ +%\xec\x09\x01\xa7\xb5\x09|\xf0\xb3\x0b \xd1\xeb7O\ +G\xa0\xedy\x06\x22\x9b\xb47\xaau\x81M\x078\x14\ +\x8d\x83\x09\xae'\x1b\x16/|\xba\xa7N'\xf2[>\ +\xfa\xe8#\xcf\xc0\xc0\xc0\xa9\x00z\x8b\xed\x07\xe8\x848\ +A\xb5D\xa8\x1dN\x22\xf0z\x17\xa2'5#|\xde\ +\xac\xc8\x9d\xef\xf65\xb3\xde\xde\xde\x9b\xcdX\x22o\xb4\ +f\x85\xe1\x9c9\xae\xc8\xbd_\x9f\xe5\x9f\xb5\xe8Bo\ +\xb0u!s\xfb\x82H\x0b\x05\xc4\x90\xa0\x101\x82\xaa\ +\xd0a\x14<\xd9\x9f\xdb,\x91\x94\x10$=\x01\x99\x09\ +\xc8B@\x12f\xcb\xd0=\x5c\x0d\x0e97\xdb7\x9e\ +\x03|\xeblPh\x00\x7f\xfdB-f4$\x10\x97\ +\xdb\xe0J+H\xedZ\x0d\x91\xce\xd0}f\xfc\x09\x08\ +\x9d#\x95\x11T\x1a\x01\xb3'e\xf8\x1eyd}\xba\ +\xbauz\xfd\xbf\xf7\xf4\xf4\xd4\x11\xf9\x1bL\xf2\xe56\ +D\xb8\x15\xff#\x04E\x00\x8d)\x15S;\xfb\x11\xdb\ +\xd6/\xc6[\x1b\x95\xefi\x9a6\x04\xe0\xdb\x846\x02\ +\xbcn\xb9w\xd9\x895\xf7\xb6_\xf9\xe8u5SZ\ +\xdaT%-\xa53\x09\xb7\xa6\xa6]Jr\x14\xa3\xfd\ +\xbd\x99p\xff\xc7n#\xbe\xbfZ6\xe2\xbe\x80WT\ +y=\xc2\x13\xf0\x08)\xe0a\xb9\xca\xe2\x22\xb8\x19\xc0\ +\x0d\xe0\xdd\x819H$\xba0\xb3\x1e[\x82n\xecy\ +m\x07j=.Q'\x04?\xefp\x18\xfa\xc7=\x11\ +\xc9\x88\xbf*\xf3x\x04\x01\xb7\xcc\xdf\xf6T*\xb5\xd0\xe3\ +\xf5\xbe\xdcq\xfa\xd5\xef\xcf>\xe5\xec\xaf\x09.\x06\x0c\ +CS\xe2\x91p\xf7\xde\x1d\x1bwo\xfc\xcd\x93\xa3\xaa\ +\x9a\xf6AW}\x86\x11\x0c\x08\xdd[%\xb8VE\xa1\ +\x13dB\xaf\x97\x99\xde\xe0\x96\x8c\xdaj\x9fA-\x0f\ +\xc6\xa4\x99\xf3;\xfb\xa4*UQ\xe2\x0b\xe6\xe0\x0e\x83\ +#\xab\xab\xf0eT\xe1\xf3\xbb\xb8\xa7\xfb\x88\xb1d\xcd\ +;\x9d\xcf\xca.\xd6\x00x\x83\x0c\xc2\xc7`\xb8\x05\x87\ +\x94H\xc3\x08\xa7\xb8r$*\xbc\x9ag\xda\x17;\xe6\ +\xcc\x98\xd1\xd5\xd5\x95\x08\x85B\xf7\x00x\xf4\xb3l\x89\ +\x19\x84\x84%\xc2\x14\x0b3\x08\x11\xc30\xc6\x1a\x1a\x1a\ +\xb6d2\x99\x85\xfe@p\xd7Wn\xbcw\x9a\xcb\xed\ +5\xb3\xed\xfb]\xbb\xf7\xbc\xb1\xa3sk\x94C\x97\x1a\ +O\xfa2\xe3\x5ce\xa4\x89\xc4\xf5,3\xd4\xb4\xa4+\ +)IW\x932eoY\xa3\x96gS\xee1-\xed\ +\x19\x1cc\x0b\xdd\xcd\xcb\x1e\xdd\xd9\xf5:$\x86\x07;\ +\xa6b\x9b\x00\x1dj\x90\xb8L\xe9\xc4\xa5\xde>,\xd8\ +[O\xae\x1f\x9bu\xe1\xb2Y\xcf\xb74\xf8\xd3\xe3\xb1\ +\xd4\xb4\xd1h\xfa\x84pL\x9foH\xfe\x99\x9e@]\ +\xa3\xab\xc6\x1f\x8c\x86\xc3\xea\xce\xee\xf7^\xd6u}9\ +\x80]\x04\xed\xf3\xfc\xaf1f\x89UK\x98j\x95\xca\ +$\xd5\xd5\x9b\xa8&\xdf\xd6\xdc\xdc\xfc\x0dz\x87P\xd2\ +\xe9t\xe2\x8d7\xde\xd8=\xc9\x96\x86\x80\x05\xd3\x98\x10\ +\x9c\xc3\xe0B7\xe8H\xe5\x86\x9a\x11\xdb\xb6\xed\xa8\x86\ +\xb7z\xed\xde\xbd\x9f\xcc\xeb\xec\xec\xdc\x0e\xe0L\x82\xfe\ +\x8f\x00\xd6-\x06K\x8d\x83Ec\x90{\x13\xec,\xba\ +\xf3y\xb7\xdb\xdd\xec\xf5zUj\x99\xcb\xe5r\x93\x81\ +\xc8\x1a\xf1x|\xbf\xa2(k\x01\xfcZ\x08\xd1]@\ +\xbc\x9c\x07\x94\x08\x09\x8d\x10!(\x84&\xc2\x14UU\ +\xe3\xe6\xba\x9a\xda\xa6\x97\xc9\xc8+8\x00\x97S\x00\xe7\ +\x9f=\x18c\x1c\x8cA\xa2\x1fx\xdc\x02\xf0\xf1w7\ +|\xd4\xee\xf7W=\x91\x88\xc6\xe6m\xdb\xb6m\x14\xc0\ +5\xd6x\x99\x04\x90\xf01d\xab*\xd5\xe4wTp\ +\x0b\xe5\xa1\xb3\x08\xb5\xd6s\x85\x09\xfb\x09\xa6p}\xd6\ +bNTfW\xb80$\x92\xd6\x97fi\xc67\x92\ +\x00J\x22\x918\xe3\xc0\x81\x03\xafQy\xe4t.\x13\ +I\x13\x92U!r\xe4\xf3\x13/\x0c\xab\x95H,\xb1\ +n\xdd\xba6\xba~=-O\xbfs\xe8\xd0!\xff\xa6\ +M\x9b\xc6\xe9\xda_\x01\xc8\x12\xda&|\xa76\xc1\x0b\ +\x93\x84\xdd\x84NB\x8a\x90\xb1&E/G\xbat\x08\ +\x1c\xff}2!\xe0\xf1x\xbeM\x1e\xb0\x9c\xc2`\xe5\ +\xa9\xa7\x9e\xba\x9e\x92\xa3\x9b\x5c\x93Q\x82\xe4\xe4\x9a:\ +\x09\xa2r\xce\x0d\x1a#(_\xc8\xe3\xe3\xe33\xfc~\ +\xff)4\xe6\x22j\x97Q\x82b\x94\xa1\x0d\xea\xff\x10\ +\xc0*\xc2Q\x8bP\xc2*\xc9\xb1\x1cQ'AnA\ +\xe0s\x1a\xab\xc0\xfd&\xaec\x8c=L\xa4j\xab\xaa\ +\xaa\x86\x89X\x8a\xda\x0c\x09 \x12\x0c\xa0\x90\xa8\x9e~\xc4\x0dM\ +a\x1d\x1c(f\xc3\xfd\xe5\xcb\x97\xf1\x07\x98\x13\xfb\xbc\ +\x0e\xad\xba\x1cN\xf4\x1f===\xff\xda\xbf\x7f\xff\x89\ +\x9838b\x00v\xec\xd8\xb1\xf4\xe6\xcd\x9b_\xc5m\ +\xcb\xe2\xc5\x8bo\xd6\xd6\xd6\xd6\x04\xa1\x8bz{{[\ +\xcf\x9f?\xdf\xc8&\xa8$\x92\x84Q\x18\xc0c\xf3\x8c\ +m\xbfz\xf5\xca\xae'wi\xa4\xce8D\xd2\x99\xcf\ +\x18L\x0c\x1b\x0e\x01-hQ\x0bx?c\xd8\xe7\x90\ +z\x8a\xe8\x82\xf9\x00>~\x22\xdb;\xe8\xeeloo\ +\xff&\xf6\xfd2\xe6\xdc\x1e\x12\x80\xdd\xbbw\xa3\x8b\xbf\ +{\xf8\xf0\xe1_\x8e\x1f?>;\xd4\x88\x97\x0d7\x10\ +\x08\xe1y\x06\x91\x1e\x1b\xdb\xdfxFBt\x1bk\xe0\ +\xd0d\x9e=`\x8c{\xae\xf9n\xf3=\xaf\xac\xeb\x95\ +\x0e\x00y\xe7\x19\x1a\x09\x08\x00\xc5\xfa8O\xfcH\xe6\ +gB\x1b\xae\x1f=z\xf4\x937\x00\xd8\xb5kWM\ +\xd8\xd0\xd7\xa1\xaa\xebb\x92L\xb2\x10\x1d\xc6\xd8\x14\xbb\ +\x858\x09\x18\x16\x006\x869\x1b\xce\x0b-\x810\xc6\ +\xed#\x01\x80.\x93y\x10X\xcb\x88\xe0\xef\x87\x0f\x1f\ +f\x1f\x98V\x08\xdc\xd3\xfb\xc3$\xebo\xdf\xbe\xdd[\ +\xf4\x85\x9d;w\xb6D8\xfa6T\xb9\x96\xd0\x93'\ +\x02d\x91\x18\xe3a\xf3i\xee\xdc\xb9)^\x06\x086\ +\x960\x89\xcb\xe6\x00`\xe4\xea? \xd6\xe6\xfa\x00%\ +\x08j\x80\xfb9\xce\x9a9@\x87\xd4\x00;\xcc\xf1\x1e\ +\xfe\x06\x8d z`V\x08\x12 B\xab\x11$\xeb\x17\ +\xc3\x17\xfd\x09_\x9d\x01\xb0o\xdf\xbe\xc6\x90\xca\xb5(\ +2\xaad:\xcf\xbc\xd7\x17\xd9\xf3\x0d\x0d\xe0\ +e\x88\xd0\x86\xe9\x82\x90\x0f\x7f\x02a\x1e\xfe\x86]j\ +\x7f\x02\xa0Y\xd8\xc8\xed/^\xbc\x08hH\x1d\x89\x03\ +\x00>\x08i\xb2/\x84\xeb\x00\xe92\x8b\xf4U[\xe6\ +@\x07k\xe0\xf0X\x83\x88\xc3<\x0b&S\xebaS\ +\xec\xa2*\xf4\xaeM/\x9dk\x10\x85\xa4J\xd3V\x9c\ +\x1c\x0c\x10&\x91\x0cs\xd0\x06\x00\x83\x01\x1c\x14k\xe1\ +\xb1\xd1\x1e\xf3\x07\x01a]hEs\xb8G\x0b\x99\x03\ +\xe3\x80\x00\xf3\xbc\x8bC%\x04\x1a\xc5\xb8\xda\x87\x01\xa0\ +L\x0d\xc2`\xc0\x06QH\x18U\x85P}G\x14F\ +\x5ca\x1c\x8d\xc11\xf2\x1e\x0c\xb3\x06\x0cA\x1b\x0c\xd2\ +\x01M\xed\x831\xd6\xa5\x94\xc6yZ\x1a\xb3G6~\ +\xff\xfe}\x9c\xec\xb0\xf5\x05> \x95\xbbi2F\x15\ +\x98\x8ac+31M\x0bF\xa8\xe02\x82\x97,Y\ +B\xb1\xc4\x19_iF\x88\xb4a\x1e\xa6Y\x03\x86\x01\ +\x8e\xe8\x01\xd3\x5cq\xd0\xac\xc9\x95u\x19\xc3TL\xb3\ +\x05\xe2\xfdk\x80\x9b\xda\xb0G\xc2(\x04@\xac!\x92\ ++\xb6\x8f9\x00\x00\xe6\x01\xe1\xe6\x0d\xe6!&/\xfa\ +\x03}\x92v\x0e8\x80\x82\xc6\xa8%\x8c\x13\xfaX\x1f\ +\xad\x1a\xd6\x07\x94\xb3\x11&!\x02P\xb5A\xd4\xbf\x94\ +yT\x17\x82\x91&~@M\xe4\x1d#\x8ay\x88\xe9\ +0s`\xd4\xb9\xccC[\xe4\x819\x00\x05 y\xc7\ +m\x1b\x15\x0d0\x03cc%D\x83Y\x01\x80\x09\xa4\ +M\xb9\x8a\xad2fJ\x8cd5\x15\xcf\x0ed\xce\x08\ +\x01\xc8\x98\x0b\x8e\xd5\x04\x88\xf7\xd4\x06C&\x9a\x85\x1f\ +a\x9d\xd1\xd2\x00\xe36\x1d\x86pJ\x84\xaf|\xa6\x08\ +\xf1\x84]=9\x0c\xe8\xd4\xb0a\xa3\x00\xa01nx\ +\x86y\xde\xb1\xe0\xa1\x13\x05\x04>\x9f\x00\xc1\xb4{Q\ +gp\xffV'XV\x0d\x90Q\x9a\xea\x8e\x9a\xe7U\ +\xd2:\x9d(\xc0\xb8g\x06\x8c1\x17\xa6\xb8\x1a\xfb\xcd\ +\xf4\x90<\xcf\xfa\x05\x8b\x1f\x9a\xd9\xa2i5`\xd0\x0c\ +\x9bh\x1c\xfb\x8e\xaa\x06h\xabJ\xd11\x98p\x1e\xfb\ +C8\x04\xeb\xe1q`\xf3f,IM\xd3>I\x03\ +\x13B\xdd\xbbo\xa3)0l\x8d`\xdeo\xea\xab\x84\ +\x87\xca\x1e\xc91\x00\xd5|\xe2\xfd\xfa\x80\ +J\xb5U\xf5\xa9>\xca\xd8\x89u\x93S\xfd\xec\xc8\x19\ +\x1a\xa68\xcf\xf7\x5c\xc3\xee\xfev5\x0d\xb0\xde\x04\xa0\ +\xdc> O@\xbe\xa2\xf3\xdeL\xd0\xef\x7f0\xeb\x5c\ +\xfb\xf71\xbf\xa77u\x84\xeaw\xb5\xb7\xa5\xee\xb6\xf6\ +\xd4\x1bj[e\xc0\x18\xeb\xad\x05\xb4e\ +A\xf0\x9c2>\xdbq@+\xd0\xcc\xc9;B\xb5\x84\ +=GO\x03LG\x05\x82g\x08\xf1h\x8b1\x99\xf6\ +\xd0\xd3\x12\x1a\x10Pyk\x04\xabA\xdf\xf1\xec\x12\x9a\ +\xa9 9\x12\xf3\x5c\xd03J\x80\xf5\xd3\x1d\xe6\x05\xf3\ +\xa3u b\xfd\xaf\xf3\xd3\x0c`\xcajM\x02!\x1a\ +@\xf2\x1fG\x19\x83!\x8b\x17\xa4\xed<\xc3'_w\ +\x00\x94J\x12\x06\xd9\x03\xe65\x09\xfd\x0fB\xe0X\x8c\ +\xdfF\xd7\x07X\xcf\xeb\x84Tw+@\x982\x13\xb4\ +t6\x1c\xf2\x9bE\x8b\x15\x9d\x1fRaD\x8f\x1e_\ +\xaa\xd1\x0eO\x95\x00\x8f\xf73\xa0<)jnn6\ +\xed\x1dU\x1f \xc3\x1eE\xeb\x18\x01\x85|\xdc\x83N\ +\xf3z\x011\xf4\xe1 aT\xd3\x00\x00\xde\xa1\xf6g\ +\x1d\xd7\xd4!ZL\xb1'ct\xd6\xc0\xf9\x01\xfa\x88\ +\x00\xe0\x0bq\xb9\x01\xc0\xa1i\xbfflH\x0b\xf5\xd5\ +W\xc0\xb8\xde\xdeR\xd7DJ\xa6Js\x0bU\xde\x22\ +'\x9f\x0cyb\x84\xf41\xbb\x11)l1P\xaea\ +\xd1rT\x7f6\x88\xb3\x04.\x05\x06\x10 T\xe7\x05\ +\x13\xac\x81\xdd#q\xa5jm`FI\xb7\xb6'\xf9\ +\xf1T)\xffu\x8aw\xf9\xd6\xc0\xbc\xb5k\xd7r\xec\ +\xa6\x06\xe9$\xf9.!\xdd\x00\xde\x87\x064\xf0\xf0\x0e\ +\xcd\x8c\xeemZ\x80-*9\xbb\xc7\xde\x10\xe7\x87\x0d\ +\x08\xf1K\x8e\xa7\xba\x1e\x8cp\xc6\x0fS\x00\xc5\xf19\ +k\xc8\x98\xef m\x00c=+N*@\xd6\xf6=\ +@\xf5\xbc\x01\xba\xa0\x01 o\x15\xf9\xdb[\xff\x14\xed\ +\xc7\xb6|\xf5\xa5\xbd\xea\xfd\xd9\xc0\xdfJ\x9bN\x12\x8f\ +\x0eQH\x15\xa2\xf3i34\xd1y\x9fd\xc7F\xe6\ +gh3)\xe2}K]\x01\xf8\xee\xbb\xef\x86\x22Y\ +\x00\xd1\xd0\xb3\x11I\xfe[\x8c\x81\x9bdZl\xca\x22\ +\xf9\xd8\x9b\xaf\xeb\xed,nM\x0fa~\xa8\x90(\x8f\ +\xb8\xecn\xea\xb5\xa4y\x86\xef\x91\xd8pi\xb9f\x82\ +\xcf\xf0\x0b\xb6\xe7\x83#1W\xfd\xc7\x85\xf8\xfb\x86/\ +c\xa8\xad\x18R\xea\x08oy(\x08_\xef_X\x04\ +\x832\xe2U\xe2e\x12/?\x10D|\x1b\x8f\xcf\xf2\ +i\xae\xcd\xf8>\x82&8\x95\x01\xe8\xd4Xcz\xd0\ +P\x13\x9d\xbfW\x80>\xf6\x1b\x88\xf1\xbe\xb8\xbc\x88\xa9\ +\x8f\xc3A>\x09\xa0~l\x02\x83\xd0:\xc2\x9c.E\ +8\xfe:\xd6\xbb\xc0)~!\xfe\xf6~R,\xbc:\ +T\xf6\xf3@wY\xfc\xf0\x13\xfe\xcc\x8d\xf9y\xc9K\ +g4\xa0\xbe\x1d\xb6t$\x88\xf8_\xbc\xdb\x99\xdeO\ +s\xc3B\xb4\xd7e\xc8O\x90\x0e\xb4\x12\x1b\xefE\x7f\ +\x12\x7fq\xfa:\x0b\x81\xf1\xf7}\xd3\x02\xed\x96`f\ +n<\x83~}\x00A\xfd\xca\xefH\xb2\x10\x9d{\xfa\ +`\xdc\xb3P{\xcc\xb9\x16\xd7\xa7il4@\xec#\ +h\x04\xe3}\x0e\x9a\x03\x00B\x15\x99l\xf4\x9a\xe8\x18\ +\xa2\xfa\xeb\xb5@g!T\x07\x7fD\x07\xc54\x86\xdb\ +\xf8\xbf\xce\xa64\xfe_c\xe3\x00\x8c\x03\xf0\x11\xb7\xff\ +\x03\x7f\x19\x0a\xe4\xd7bc\xda\x00\x00\x00\x00IEN\ +D\xaeB`\x82\ +\x00\x00\x15\x14\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00@\x00\x00\x00@\x08\x06\x00\x00\x00\xaaiq\xde\ +\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\ +\x00\x00\x00\x09pHYs\x00\x00\x06\xec\x00\x00\x06\xec\ +\x01\x1eu85\x00\x00\x00\x19tEXtSof\ +tware\x00www.inksca\ +pe.org\x9b\xee<\x1a\x00\x00\x14\x91ID\ +ATx\xda\xe5[y\x8cd\xc5}\xfe\xbd\xa3\x8f\xe9\ +\xee9v\xa6\x97\xdd\xb9\x96=fa\xef\x05al\xae\ +\xa08\xb6 N,\x22'2\x09\x92\x0f\x14 \xc6\x81\ +\x18\x84\x92\x08Y\x8a0\x7f\x18\x04\x09\xe0\xf8\x08G$\ +\xa2$v\x14\x9b\x80\xf3O\x0e'\x86\x80\xc3a`1\ +\xe6\xb0!\xbb\xec\xb2\xf7\xce\xf4L\xcf\xf4\xdd\xfd\xae\xaa\ +|\xbfz]\xf3\xfa\x98I\xef\xb4\x90e)e}T\ +\xbdzG\xd7\xf7\xbb\xabfmH)\xe9\xffs\xb3\xe9\ +\x97\xb8\xbdt\xed\xb5\x03\x9e\xebf\x09\xf0\x84\x18#\xe9\ +g\xa5/\xb3B\x88\xac\x14\x18cN\x04\x22-\xfd\xe0\ +\xdf\x7f\xf3\x95W\xfe\x8a\xfah\xbf0\x0bx\xefK_\ +JT=/\xebH7k\xf8A\x96\x04\x88\x04\x04\x02\ +AV\x92\xc8R CRR\x8c\xc9@\xe0\x9e`\x82\ +)\x89\x87pM\x18\x87\x08\x02\x12\xd1\xb8\xd9\x8b\xc6F\ +!\x86.:p\xc0\xfb\x85X\xc0\xcf\xef\xbe;n\xd5\ +jY\xd7\xf3\xc6L\xc3\xc8\x0ab\x12\x06/\x18=\x8d\ +\x19\x22\xc8\x0aIY\x92LB\x86} \xd3 G\x06\ +n\xa0\x03\xd0\xf3\x80\x00&!\x19\x12d\x00\xdc#\xd9\ +\x84z\xae\x1d\xb4\x0c\xd2s\xc9cR\xee\xbc\x88\xe8\xcd\ +\x0fD\x00\xef\xdcy\xe7\xed\xe5\xb8\xbd)y\xe2\xe4\x88\ +\xb1n$&\x0d\xca\x1ad\x8c\x11H\x12I\x80\x06}\ +\xe2&\xa18\xeeB2za\x22\xecC\xed\xf0\x98\xfb\ +\xe6u\x04\xb92\xa4\x86\x88\xde\xd7\x08\xafC\x88\xf6\xdf\ +4\xa4\x7f\x01}\x10\x02x\xec\xc2\x0b\xbfr\xc5\x95\x97\ +\xdf\xe5\x98C\x94\x1a\x18\xa0@\x88\x90\xaa\xc1\xffU\xff\ +\xa1P\xf4z(\xc3a\xa4\x9d\x88t4V\xefZ\xa9\ +4\x05\x8d:\x5c\x99\xcd\xdae3P0c6\xe6\x1b\ +\xe1\xb5\xd0\xc4\xf1F2A\xa4\x85U\xa9\xb4\x0b\xa3\xc3\ +*\x840.0\x0c\xe3\xef%Z_\x020\xd0\xee\x98\ +\x9eN\xce\x0c\x0f\xdf^/\x95\xa9T,Sv|\x9c\ +\xfcr\x89\xc84i\xb5f&\x12$\xea\xf5H\x10\xe1\ +\xe2\x99\x8c\xd6TH\xcc`\x01\x0c\xa0\xc7;\x98\x0bj\ +\xfc\xb2\xa5\xe6\xfcZ\x83\xac\xc1!\xf45\xb2\x86\x06\xc9\ +\xcd\xcd\x13\xa5S\xca\xf7\x85\x03\xc1`^\x13\xee\xd6\xbe\ +\xb6\x00\xb1\xbf\xa9\xa1\xb5\x0b\x80\xc9\xf3r<\xa2mA\ +\x10\x0c\xd7\xf0\x83\x85\xa5\x22\xc5v\xee\xa4Zn\x8e\xcc\ +dRKIk]u\xf1l\x96\xbcB\x81\x12\x1b6\ +RP\xad\x84k\xf1=2b1\xe2O\x06\x9eG\xd6\ +@J\x09\xa81?\xaf4\xeb\xd7A6\x99\xc4;\x1b\ +\xc8\xc9\xe5H\xb2e\xc0\xd2\xbcz\x95\xc82\xc9\xaf\xd6\ +\xc8\x84P\x02\xd7\xa3\x00\xe4\xf9]\xe9\xba\x91\xf6\x05\xf7\ +\x1d\xae\x80\x1e*\xda\xcb+\xec\xd7\x05\x0c 1W\xaf\ +\xaf\x9fI\xa5\xa8\x86\x1fu\xaaU\xb2\x86G(`\xe9\ +\xc7\xe2x\xa2\xfd\xeb\x120,\x1b\x8btH\xb8\x0e4\ +\x08\xcd-,(r6\xb4\xe9,.\xc2\xb4\xe3\xea\x9e\ +\xa4\xd0\xff\xb5\x00\xdd\xa5%\x08n\x89\x04\x5c!X*\ +4M\xbe3>\x04\xaa'\xdb\xc27\xbc\xe8\x9e\xd4q\ +\xa5E\x18\x00\xfe\xb3\xfe\x9b\xdb\xb7\x8fC\xf0\xa7\xd6\xe2\ +\x06vS\xfb\x16\x90.\x04\xc1\x04\x07\xb0\x06\xfc13\ +\x98!{\xdd\x08I\x98\xa7\x1c\x0c4\xe9\xb6\xe6,\xcc\ ++\xc2\x0dh\xd2J$\x95\x86\xdcR\x99M[I\xab\ +~\xfaTK\x1c\x90T;qB\xbb\x84&\xdaA^\ +2\xda\xef5|\xfd\x8d.\x17\x00\xda,c\x90\x88\x03\ +\xe1\xa9~,\xc0\x04R\xaeTE\x069\x8eK\xe7l\ +\x9f!\xd7\x07q\x19\xe6\xdb\x95L\xc0\x87\x95\xe8\x00(\ +<\x8fG\xa1\x99W\xca\xad\x011\x22-#\x82:K\ +D\x02\x88\xae\x89\xc1\xf9\xde\xf7)\xf0\xb9\xf7\xd4\xd8\xc7\ +\x98\x94\xba,2\x01\xb8Z(l\xdc\x93X\x0b\xc8\xec\ +\xc3\xdd\x7f\xe9W\x001C\xca\x14/\xd2\x81\xcfM\xcf\ +l\xa3\xea|\x8e\xccx<\x5cTw\xd3\xe4\xa3l\xa0\ +S\x22\xe94\x18\x09\x81\x05 \x02\xc1q!\x04/\x1a\ +@\xaf\x82\xacaY\x80\x0d`\x8c\xdf4l\x9bl\xcc\ +\xc7\x00\xa4`\xf0\xe4\x9e\xf8y\x951\x82:\xe08\xe1\ +\x98\xdd\x8c\xb3\x89\x94\xfbt \xec'\x0d\x9a\xf0\xd1\x18\ +/\xd6\xf3|\x15|*\xe5\x1a\x0d \x1a;\xda\x02\xba\ +\x9a\x04\x09\x90\x0a<(\xc1g+\x08\xb5\x16\x04LF\ +\x91\xb0\x00\xee\xc9\x8e!cX\xb8\xb6\xe0\xd66\x00\xc2\ +&`\x19\xca\xc7\x03\xfc\x9e\xd0\x84\x18\xd0\xa8\xaf-\xa4\ +7\x94\x0bX:\x10\xf6\x15\x04\x81y\xdf/\xa2Wd\ +<\x04\xb1R\xb5N\x83\x08\x84\x8d\xc5<\xd5\x0aE\x12\ +,\xa5x\x8cMOY\x86e\xa1\xcf\xc4\xc8B\xb0\x8b\ +\xc7\x98\x5c\x1c\x81/\xd4\xa2l\x92\x11\x8a\x90C>z\ +Y\x87\x90\x9a\xe6\xee\xb7\xb9@8\xa6h\xdc\x01\xd9\x1b\ +R2\x89\xed\x9f\xdb\xb0!\x89\xb0V\x93hk.\x84\ +\xde\xaf\xd7\x17\xf1\x96\xd2`\xad\x5c\xa6B.O\xe7^\ +\x22\x06\x88\xff\x1bb\x19\xb1\xcb\xe2\xf1\xdd\ +\x7fG\xf4j?. \xabA\xe0\xbaB\xa0\x0b\xd2\xb5\ +Z\x9dJ\x88\xee\xf6\xc8\x88\xd2b\xf5\xd8Q\x8a\x9a\xe2\ +\xd4Q\x15F\xe4iEA\x88\x96\xba\xbe\x83\xb0\x5cQ\ +\x00m\xe4h\x19\xb2\x1b2B\xd2\x90\xfb\xa9\x0f\x01H\ +@\x00~-\x08\x0a\x83B\xa4Q\x0b\xf0\x02\xb8\x16P\ +Z6\x06\x92\xd4\x91\x06\xda;)\xb504\xe9\xae\x80\ +\xa8\x02,J\xda\x0a\xfc{\xdd\xd8\xd8\xea\xfb\x85\x8e1\ +E\xa6\xde\x919\xbaa\x0a\xc4\x8154\xb3\x85\x8d\x0f\ +x,\x00]\x0b\xf0\x22%\x071!\x9b[\xd2 D\ +\xc0\x10\xcbs\x22\xda\x96\x02<\x0e\xafEsN\x00|\ +]\x02\xf9\xe9\xcf_OW=\xf1O=\x82Z\x07\xf9\ +\x88\xb4\x86\x16R\x17\x8c0\x15\x9ak\xb2\x00\xad}\xc0\ +\xad\x0a\xb1\x14\xd6\x02\x1eM\xef\xddM\xd5\x85y\x15\xf0\ +|\xd1\x91\x09\xb4\xb6\xa3\xb1JQ%T\x83#\xe7\x9c\ +\xb3\xe2&\xe9C\xbf\xf3\xdb4u\xc3\x0daN\xe72\ +\xd90u1\x13\x91m\x89\x0d\xb4z\xb1\xc4X\xd9\x02\ +\xa4T\x99\xa0\x1f\x0b\xf0\x00\xa7\xe4\xfb\x0bJ\x00\xaeK\ +\xe3[6C\x00y\xb22\x19\x12Z\xbb\x80PP\x1a\ +nZD\xd8\xdb\xdbf\xe8#\x7f\xf9u\xf28@\x0a\ +\xfd|\x84\xc3\xdf\xfd.\xcd~\xff)2m\x9b+G\ +m)\xcd\xf7WD7\xf9\xd5\xef\xeb\xc04z\xcf\xc6\ +\x8dS\x06\xdaY\x09@\xa2\xb5\xb8\x80[\xf4\xfd\xbcN\ +\x85A\xb1He\x04\xc2\xf8\xc8:m\xd2\x0a2\x22\x17\ +\xb9\x01\xfa\x0b\xef\xb8\x83&.\xbb\x8c\xec\x89\xc9\xe5\xc5\ +\x89\x96\xde\x01\xe9\xd2\x1b?%n\x89\xb1Q}\xef,\ +\xd1\xed\x0a\xd19A\xd8\x8b&\x91u\xa6\xb9\xbf\x1f\x0b\ +\x08\x007\x1f\x04\xf3M\x01\xe0\x22O\xc53g8\x13\ +p^o\xd7\xa8^\x8c\xb6\x06<\x9f\xc0s\xdc\xce\xbf\ +\xe9&e\x05\xd1\xf3\x91\x96\x1b\xc7O\x10\xb7\xf4\x94\x12\ +\x92\x16`o\xd2\x00\xbbM\x19\xbbO\x07uH\xd5\x0f\ +\xa8\x5c\xa9D\xf7#\x22\xaa$\xee'\x0b(\x01\x9ct\ +\xdd9-\x80J\xa5Jelc\xedK/!b\x01\ +tX\x95l\x19\xc7\xb0qZx\xe6iJ\xc2]&\ +\x7f\xfd\x13\xf4\xf3\x8d\xe3$r\xf8TG=P\x9f;\ +C\xdcR\x9b6\x93\xfc\xef\xe7\x95\xf6<\xc7Q\xd6`\ +Y\x5c\x8c\x1aQ\x0ch\xf1\x7f\xc7\xb2i\xc7\xcd7\xd3\ +\xf8\xee\xdd\x94\x9a\x9c\xa0\x81-[\xa8\x84\xcd\xd5\x0f\xaf\ +\xbaZ\x0b@[\x00\x7f\xe3\xacKb\xb3#\x0dzg\ +\x1c'\x1f\x80?/\x88Saei)\xac\x05\x5cW\ +\xbb\xc0\x8a\xae0\xb8e+\x15_\x7f\x8d\xe6\xfe\xfaQ\ +\xe2\xb6\xeb\xd6[a\x05N\x97\x1b\x94\x17\xf2\xaadN\ +\xcf\xccP\x15[\xe1z\x22A\x9b\x10\x18g\xf0\xfc\xd8\ +'~\x83\x8a\xd5*\x07\xd3\xb6\xb8 \xd6\x8d\xd2\xd5\x88\ +\x1f#\xcf\xfd\x90\xde\xfd\xccu\xf4\xda\xaf^I\x87.\ +\xff\x08\xd1\xf3\xcfa\xc5\x1e/>\x82a\xe8\xb3\x01s\ +\x0d.\xd0\x96\x09\x9c\x1aJb^l\xbdV#\x1b\x87\ +\x15F\x12\xd0d;\xd1\x9c\x1f\xde\xbb\x8fj\xef\x1d\xa6\ +\x93g\xe6h\xe1?~@\x93W^I\xf1\xe9\xe9v\ +\x17\x00\x1ciP\xf9\xf0a\x9a\xfa\xd8\xc7\xe8\x92\xfb\xef\ +\xa7_\xf9\xbdkik\xadD[\xb7o\xa3+\xee\xbd\ +\x97~\xf7\xc0k\x14\xdb\xb6M\x93W\xc2\xf8\xe8\xe3\x8f\ +S\xe1\x1f\xbeM\x07~\xf2\x16\xe5\x92i\xca%R\xf4\ +\xe6\xdc\x22=\xff\xe5?\xa3\xa0\x9d\xbc\xb6\x80\x99\xcf\x8c\ +\x8e\xa6\x0c\xb4\xb5\x08@g\x02\xb7.DA\xb0\xbf\xc2\ +47LOQ\x0d\xfb\x02+\x91\xe8\xf6Q\xf6\xfd\xe6\ +1\xf5\xe8\x85\x17\xaax\x11\x90As\x8f>L\xdc\xf6\ +\xdcv\x1b\x9bw\x18$\x01\xd9D\xf5\xd0A\xb2\x90Z\ +\xe7\x1f\xf9\x16\x1dx\xe4Qz\xfe\xdb\xffH\xaf\xdct\ +#\x9d\xbe\xe5\x0b\x14\x1f\x1a\xa2\xab\xbf\xf3\x1d\x92\xc3\xc3\ +\xea\xd9\x91}\xfbh\xddy\xe7\xd1\xd1\xe7~DB\xca\ +6\x9f\xafZ\xf62y\x11\x92\xd7\xb0\xf6\x0d\x0c\xec^\ +\xab\x05\xc8e\x0b\x08\x82%\xa1\xb6\xc5\xa8\x05v\x9cO\ +ul\x86\xect\xbaM\xf3\x82\xa1\x83\x97eq\x90\xc4\ +\xf3\xbe\x9a;\xf2\xde\xfb\x94{\xee9\x9a\xb8\xe2\x0aJ\ +l\xdd\xd6n\xce@\xfd\xbd\xf7\x88[\x11\xd6\xe0A`\ +0x*&S\xf4\xda\x7f>C\xb3O|\x8f\xe28\ +]\xda|\xcd5\xea\xd9\xb1\xcd\xe7\xaa\xa55\x82\xa0\x8d\ +\xbc\x86\xe8 \xaf\x91 \xda\xdf\x8f\x0bx\x80S\x0e\x82\ +\xbc>\x18\xd901\x8eT8Oq\xf8\xa1\xce\xfd\xdc\ +\xcbe\x044\xb4y39\x88\xfa\xd6\xf9\xe7\xd3\xf0G\ +\x7f\x8d6\x7f\xf1\x8b\x94\xda\xba\x95\xb8\xed\xbd\xfdvX\ +A\xa3\xcd\x0d\xea\xcd}Erj\xaa\xadbt\x0d\x93\ +rO>Ah\xecBj\xce2\x0d\x15@\xd3\xbb\xf7\ +\xa8^\x10\xb5Av\x93Ws\xb10\x13\x9c\x9d\x0b\xb4\ +\xd6\x02Z\x00\xcb\xa9\x90\xb7\xc5ssd\x8f\x8e\xf2\x81\ +\xa7.u#`\x91#\xf0\xff1\x04\xb5\x8b/\xb9\x98\ +v\x0a\x97\xb2/\xfc\xd6\xdbT|\xf5\x15\x1a\xbf\xf4R\x1a\ +\xdc\xb7w\xb9\xe0\xa9\x14J\xe4\xe0\x9bSW]\x15\x1e\ +\x8c\xa8o\x85\xef\xc5\xd9\xd20\x97\xff\xdb\xbfQ\xbd\x87\ +\xf5\x1f\xbe\xe5fr \xb4\xed\x9f\xfe4}\xea\xc7/\ +\xd1\x87\x1e\xf8s\xda\xf5\xa7\x7fB\xd7<\xfb_4\x99\ +\x1d\xa1\xf7_~\xb5\xcb\x15p=r\xe7\xfa\xf5\x9b\xd6\ +j\x01\x02\xf0\x8e;\xce\xac>\x18\xe1Z\xa0\xc6G\xe4\ +\x99A\xf6\x95v\x0b\x10\xf0\xffm[\xa9|\xe8\x10y\ +\xbe\xafI,\x9b\xb5\x83\xcf\xcf~\xf3\xeb\xc4\xed\xc3_\ +\xbd\x87\x5c7\x14\xa0OR\xbd\x93\x04\xd9\xf1O~\x92\ +\xaa\xa52y\xaeKU\xa4\xdd\xf3n\xb9\x85\x16\x1e{\ +\x98\x0e\xbe\xfe\xc62\x99\x83\x85\x0a\xfd\xec\xea\x8fS\xe9\ +\xbe\xaf\x92<~\x8c\xa6\xf6\xef\xa7-\xd3\x93\xe4\xdfs\ +7\xbd\xf9\xb5\xaf\x93o\x9az\xf1mAq]\x22\xb1\ +o\xad\x7f\x1a\x93\xcd-q\xd5\x05\xe2R\xa6kXT\ +\x06\x0bu\x0aK*\x15z\x22h+\x03\xc7\x90\xfe\xaa\ +G\xdfW\xd6\x80\xd6~&\x80\xf6\xb3g\x7fD\xd3H\ +\x8f\x9c\xca\xf6\xddu\x17\xbd\xf9\x8do\x90\x84Ky \ +\x22/\xba\x88\xae|\xe8!\xda{\xe3\x8d\x94;p\x80\ +\x86Q\xe1\x89'\xbfG/>\xf1\x14\xb9v\xac\xad\xbc\ +=X\xf7\xe8\xc8c\x8f\xd3\xc8\xb7\x1e&[\x08\x95\x02\ +\x17\xe3Ih\xda\xea\x8a\x0bzl\x87\x99\xe0\x9f\x01\xd9\ +K\x00\xdd\xc5\x10j\x81\xb4\x10i\xce\x04\x93\xe7\x9f\x87\ +Z`\x89bHOu\xc4\x04\xdd\x1a\x8d:M^\xf3\ +[4\xff\xfa\xebT\xc4\xbea\xa8\xb9\x17\x90\xa1\x10T\ +\xae\xbf\xf0\xa1\xaf\x91\x09\xed\x96\x9f}\x86&\x93q\xca\ +\xdet\x03\xfd\xcf\x93OQ\xee\xa1\x07\xe8\xc4\x1f\xfd!\ +e\xb0u\x8ee\xd2\xe4\x97+\xf4\xf6\x99Y\xca\xc7\x07\ +\xc8g\xf2\x11!-\x04\x95%\xe6p\xbf\x93(\xb0\xe2\ +\x1cY\x96\xca\x04k\xb6\x80\xa6\x00\xb8\x16\x98\xe4m\xf1\ +\xae];i\xfe\xf8I\x8a\x83\xa0\xc0\xde\x80\xdb\x10\x0a\ +\x94K`\xae\xe9\xc1\x0c\xc5!\xa0\x8f?\xf8\x00\xbd\xfc\ +\x95\xbbI\xb6\x1e\x93\xc3u\xe6o\xbd\x99\x8e\xc15\x1a\ +VL\x11\xf0\x0dC\xf5\xa7\xf8\xbe\x95 \xca\x17I\x02\ +\xdcd\x22\x15-~\x05\x82\xd4\x83x\xe7\x9c\x85\xb3\x81\ +f \x14\x12m-\x16\xe0V[j\x81a\x90<\x82\ +\xa8<\x9e]O\xf4\xee;a\x9e}\xfbM:\xf5\xd9\ +\xeb\xe8\x10L\xdf3-\xf2-\x8b\x84\x1do;0\xf4\ +\xd0\x1f\x89\x0d\x10\xd9\xd1f\x08-\x1c\xb7\x12[\x85$\ +\xadN\x94[OK\x00\xf1-\x9f\x1a\x19I\x7f\xbfP\ +(\xf6\x0a\x82Q-\x10\x15C\x8b:\x13p*,\xcf\ +\x87\xa9\xd0\xf0\xc2\x8d\xca\xbc\xe3\xd1\xfb 7\x8b\x0a.\ +\x1fKP\xd1\xb4[\xff\xd5FtL\xa6{)\xdbv\ +l\xa2c\x8cE3t\x00\xeb\x0ej\x8c\xee\x0a\xb0\xbd\ +(\xd2\xcfFs&J\xe2=ku\x01}0\xb2\x5c\ +\x0b8\x5c\x0b\x14\x8bds}\xce\xa9\x90\xba\x1b\x18\xb6\ +~d\xf5q\xb7\x06;\xe7\xba\xdd\xa0\xb7\xd6\xf5|\xd7\ +\xb5\x1d\x8fs |\x11\xe8\xe1\x02\x1d\xe7\x02\x8bA\x90\ +\xd3\x02\xa8Tka*\x5c\xb7\x8eL\xbd\xb7_\xa1\xc9\ +\xce\xeb\xd5\x84\xd0i\xe2\x9d\xcf\xf7p\x83h\xae\xb7\x1b\ + \x0e\xb0\x00\x8c\xb5X\x80\x00\xbc\x13\xa8\x05\xd0\x87\x9b\ +\x17\xd4\x02u\xd4\xfan\xa9D\x16o\x8a\x5c\xb7\x9bp\ +/\xad\x1b\xc6*\x82\xe9\xd6x7\xf1\xfe\x83\x22\x22`\ +[ \xec!\x80\xc8\x0dN\xe3`\xc4\x97\xd2\x8fIi\ +s-\xb0\x1e\x1b\x9e\x06\xbb\x01\xb6\xabba\xa1\xb7\xf6\ +\x99p\xffn\x10\x8d{\xb9A\x8f\xe7A\x5c\x95\xc4=\ +\x83\xe0J\xbbBlA\x8b:\x13l\xday>UQ\ +\xbe&\xb2Y\x0e4]\x90\x8c\xd6k\xa2^Ao\xd5\ +\xe0&\xa3\xfb\xd15\xa3\xc7\x0e\xb0+(\xe2\x1a\x02\x18\ +\xbcmbb\xf3\x1a\x04\x10\x05\xc2\xba\x10\x8b\xfa\x88\xfc\ +\x5c\xe4\xfa*4\x9fX\xbf^\x9f\xf9wG\xeb\xce\xb9\ +UH\xa9~5\x01u\x13\x8f\xc6-\xef\x8a\x1e1\x80\ +Z,p\xd0\xb6\xf7\xafI\x00\xda\x02P\x0b,\xc1m\ +T\x0d\x9fBUW\x99\x9fW\x81\x90\x84h'\xbd\x1a\ +qM\xb8\x9d\xd4J}\xf4\xdcZ\xac\x81\xe7z\x90\xe7\ +\x167\x0c\x15\x08{\x06A\x89\xc6\xc1B\x97\xc3\x95\xd6\ +s\x81|>L\x85\xd8\x17\x18R\xf2\xa2\xd6\x16\x08\xf5\ +\xb8g6\xe8]\x10Q\x0f\xadw6\xcc\xeei*[\ +\x9cu\x10\x04\xdc\x12\x04\xa0\x8b!\xa7P\xa0z\xa5\xc2\ +\x16\xa0\xbf\xd4;\x10v\x8d5\xe9\xde\xd9\xa07\xf1n\ +a\xea\xac\x85\x8d\x9c\x82\x0f8\xbe/\xc84\xe7\xf8\x09\ +n\x12\xad\xa7\x00t-Ph\xad\x05*U\xaa;\x0e\ +y\xd5\xaa:)\x16\x98\xa3^\xda\xd7V\xd2\xcb\x12z\ +\xa4A]V+b\xf8]\x0f\xbd'\x84\xf4\xd9Z\x13\ +\x89\xc0\x1aH\x0a;\x95\x96\xf6\xf0\x90L\x8e\x8e\xd1\xe0\ +\xe4\x84\x1c\x9d\xdeDS\xbbv\xc8\xbf\xb8\xf3\xcb\xd7\xfd\ +\xdb\xbb\xef\xbe\xdc\xb3\x0eX\xf1`\xc4\xf3\xe6Zk\x01\ +\xe5\x17p\x83\x18R\xa1\x5cZ\xea&\xdd\x87\x1b\xb8M\ +\x8dy\x00\xf7\x0e\x88Ac\x81\x88\xc7\x03#\x91\x10F\ +&\xc3\xffxR\x9d\x1d\x0c\x8c\x8f\xcb\xd1\xc9Icd\ +z\xda\x1e\x99\x18\xb7m;f\x99\xf8\x9fm\xd9\x14\x8b\ +\xc5\xc8\xb6-\xf4q\xe2\xebd2ICX\xe7y\x93\ +\x93\x15\x08\xa0\xce\x9cz\xd4\x01\xdd\x81\xf0x\xa31+\ +\xf0\x8e\xfe#\xc9\xe4\xf6\x19j\xa0\x18J\x8e\x8d\x91\x80\ +\x00V{\x11\xefh-isd\x0d\x0a\x11\x12c\xad\ +\x09\x99JI+\x931l\xa4\xd5\x01l\x893\xe3\xe3\ +\xe6\xf0\xf4\x94\x99\xc9fm2\xd4\xc6\xc2\xe6\xe5Z\x96\ +EqE\x0e$\xe3q5\x8e'\xb8\x8f\x87\xa4c\x98\ +\xb7c\xfc\x9cz\x06\x02a\x01\xa8g\xd2\xa94\xed?\ +wR\xe9\xadg)\xbc\xd2\xae\x10Y\xa0\x02\x12\x15\x14\ +C\x19\x95\x0aw\xec\xc0\xb6\xf8\xb8\x0a\xa7\x8b\xb5Z\xe8\ +gx6\xb0\xac@\xc4bB&\x12R\x0e\x0cH\x99\ +\xce X\x8e\xc9\xc4\x86s\xcc\xd4\xf8Fc\xdd\xe4\xa4\ +=8:fAU&/\xce4\x94C\x92\xc9\x8b\x06\ +L\x1e\x9b&\x19\x80&\x8c{!i\xc0b\xe0\x1e\xae\ +\x19\xeaY\x0d}\xe4\x87y~W\x83\x05\xa4\xe6&\x92\ +\x99\x18n\xf7\xda\x0e\xaf\x9e\x0a\xf9\x8f$I!2\xae\ +\xe3\xd1\xb6\xa9)\xf9\xea\xf1\x13\x1e\xcd\xccH\xfb\xe2\x0f\ +\x1b\xa3\x9b6\xd9\x03\x83\x83&~\xc8\xd4\x0bd\xad`\ +\xac4\x80Y\xb2\x15\x19s\xf9\xf8\x1b\xd41\x0ex\xcc\ +\x8bW\xe0\xb5\x99\xfc\x0e4\x0c\xe89u\xf8\xc9\x827\ +\x00|\x97c\x11\xf7\xfc\x0c\x93\x0c\x85\xd8\xfc]4\xbe\ +\xd6\xd9,\xdc\xc5\xd6\xebn\xcc\x94\xa95\x9c\x08ug\ +\x82\x1a\x8a\xa1\x11)\xa78\xf2\x9f)\x14\xbc\x89\xcf}\ +\x1e\xe7\x22#\x94I\xa7@2\xc1\x0bQ\x84AE\xbd\ +&\x98\x8c\x8e\xe2\x18\xa3\x0f\x17iY\xbcx\x8c-@\ +\x11l\x03\x04\xa2\xc7\x9a\x84z>\x11Z\x85&\xac5\ +\xdd\x9a\xbaY0<\xd7\xf6\x0d\xbe\xae\x17\x8be\xcb\x13\ +\x995l\x87\xa3Z@[@\xa5y.\xb0\x1e\x01\xe5\ +\xe4\x9e}\xd6\xa6\xe9i\xca\x8e\x8d\x92\xdd\xd44\xb1\x16\ +\x0c\x93;m\xaa\x9aDD\x8e\x11\x04\xbc\xd00\xa5:\ +.kW/XC\x9b4\xa3m\x8e\xdf\xd1B@k\ +\x8e\xb5@W.\xf3\xf9\xdb\x8d|\xbeJ\xc2O\xb3q\ +\xf4k\x01,\x00\xb5\xf3\x09V\ +\x8dBC\x93\xd3\xd2\xd7Z\xd4\xda\xd7d;\x03\x9b\x16\ +N\x9b&u\xd3\x04\xb5\xf6\xf4\xb3:#t\xb6r>\ +\xef\xce\xbe\xf3N=\x7f\xf4\xa8S:y\xc2\xaf\x9e\x99\ +\x95A\xa1`X\x8d\xba= E|\xc8\x8e\xa52\xa9\ +d2\x96\x88\x0f\xbf\x9e[\xfc\xd7>\xb2@\x94\x0aO\ +9\xce\x82\x90\x92=;\xd0\x8bn\xd5\xa8\x16\x82\xd6\x1a\ +4\xd2\xb5h\x5ck\xb4\xa5\xaf\xd6\xc6\xefq+\xe6r\ +\xce\xe9#G\xea\x0bG\x8e\xb8\x85\xe3\xc7\xfd\xf2\xe9\xd3\ +\xd2YX0\xfcb\xd16\x1a\x8dD\xdc\xf7S\xb6i\ +\xc6\xf1\x8d\xb8\x0a\x90\x86Q\x0bL\xa3\xe4\x1a\x0a\x05`\ +\x09\xa2\x9cC\xd1u\xe8\xe9\xd3\xb3O\xbe\x9d\xcf\x1f\xeb\ +W\x00:\x134\xea\xbe_\xf2\xa4\x8ckr\xda\x84[\ +\xcdUC\x13]\xa9\x15fg\x9d\x1c\xc8-\x1d;\xe6\ +,\x1e=\xeaWggy\x97\xb9L.!D\xca\x84\ +,\x08\xc0\xef5\x1c)K|(\x83Z\xa4X\xc7\xd6\ +\x9c\xff\x0dcY\x88|\x01\x9b\xb4<\x14s\xd4u\xe7\ +0_gWe\xe8\xcc\x05\xd4\x80\x02P\x0c\xe7\xfb\x17\ +\x80\x0b\xd4q@zl|qqG\x12\x02\xb0Y\x83\ +\xb6\xddE\x12\xe4\x1a\xb9C\x87\xeay\x90\xc3_\x7f\x83\ +\x0ak\x0e\xe4D\xa9\x14S\x9a\x13\x22\xcd\xe4\x02d\xd9\ +\x86\x10~C\xcaJ\x93\x9c\x22V\xf1\xfd|\x11\xc4\x16\ +|?\x87\x12|\x1e;\xd12\x13\xea \xc7\xf0[\x10\ +\xb4\xf7z\x1c=\xab\xab\xc0\x1e\x02X\xb5\x16p\x80\xd2\ +{\x8d\xc6K\x9b\x97\x96\xf6\xbe\xf4\xe0\x83\x8b\x89z\xd5\ +<5\x9f\xaf\xe1\x80T\x82\x9cm6\x1a\xc9\x18\x8a_\ +\xfe\x16od\x80:\xffY\xad.e\xa1\xe6\xfbK\x15\ +h\xac\xe8y\x0b\x8b8f?\x89\xcd\xd5\x82\xeb\x964\ +\xa1>\x881\x04 \xcf\x06\xdc\xfa\xfe\xbf\xceB\x00&\ +\x85\xe6\xb8\x11R\xda~\xf3\xe4\xe4\x1foL&w\xa7\ +\xd2)\xff\x8d\xb9\xdcO\xaa\xa8\x0fJ@\x1e\xc4p\x80\ +\x9a;\xe3\xba\x8b\xdd\xa4\x80\xde\xa4\xb8\x17\x8c\x1e\xe4(\ +\x1aw\xb7\xd5\xc8\xf6+\x00-\x04\x1b]\x1a\x18\x05\x86\ +\x81\x18 \xceF[k\xd4\x18}0\xc4>x\x01\x18\ +\xe8,&\xde\x84\xa1k\x84_.b\xfd\xb7\xff\x05\xc7\ +\xfd\xe7\xdb#]\x138\x00\x00\x00\x00IEND\xae\ +B`\x82\ +\x00\x00 \x1c\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00@\x00\x00\x00@\x08\x06\x00\x00\x00\xaaiq\xde\ +\x00\x00\x00\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\ +\xa7\x93\x00\x00\x00\x09pHYs\x00\x00\x1b\xaf\x00\x00\ +\x1b\xaf\x01^\x1a\x91\x1c\x00\x00\x00\x07tIME\x07\ +\xd7\x08\x12\x149()\x91|\x0e\x00\x00\x1f\xa9ID\ +ATx\xda\xe5\x9b\x09\xb0\x5cW\x99\xdf\xff\xb7\xf7\xbd\ +_\xbf\xfd\xe9\xe9=I\xd6.\xd9\xda,y\xc1x\xc0\ +vB\x81\xc1\x03d\x0c\x13\x1cBe\x02N\xb1\x84x\ +\x5c\xc5\x14UI*TH\x05*\x03\xc3\x14\x03U3\ +\x13C*\xae!\x9e\x01&\x05C\x80\xd8\xb2\x0dx\xc3\ +\x96%k\xb1\xf5\xb4=k}\xd2\xdb\xb7\xde\xb7\xdb\xb7\ +\xf3;\xa7\xbb5\x12\x1a\x0a\x18\xb0\x81J\xcb\x9f\xcf\xed\ +\xbb\x9cw\xbe\xed\xff-\xf7\xb4\xfe\x7f\xff8\xaf\xe7\xdf\ +Y\xb3f\x8d\xaf\xab\xab\xcb\xd7\xdb\xdbk)\x91H8\ +\xd5jU\xb9\x5c\xce[XX\xf0\x96\x97\x97\xbd\x0b\x17\ +.x\xd9l\xb6)\x09\xfa-\x16@$\x12\xf1m\xdd\ +\xba5\xb0{\xf7\xee\xf8\xddw\xdf\xbd\xb5\xaf\xafog\ +4\x1a]\xcf\xf9u~\xbf\xbf\xd7q\x9c\x04\x14o\xf2\ +i4\x1a\x05C\x08c\xa6\x5c.\x9f*\x16\x8b\xe3\xd3\ +\xd3\xd3\xfb\xbf\xfd\xedo\x9fK\xc1\ +`P\xdcg\xcfW*\x15\x15\x0a\x85I\xac\xe1\xd9\xa9\ +\xa9\xa9o=\xca\xe7[\xdf\xfaV\xdeX\xca\xafR\x18\ +\xce\xafJ\xdb\xd7_\x7f}\xf4\x13\x9f\xf8\xc4\xaem\xdb\ +\xb6}4\x9dN\xdf\x0d\xd3)\xc3\x08\x1a\x15\x1aU\xa9\ +TR\x15\xa6j\xb5\x9a\xdcz\xbd%\x00\x08\xa1@\xad\ +\x95\xc0\xbc\x15B8\x1aU*\x95\xb2\x14\xe5\xb8\xce\xfd\ +\x8b\x8b\x8b\xf3333\xff{ll\xec\xcf>\xf7\xb9\ +\xcf\x8dONN\xbaF\x10\xbfn\x018\x1b7n\x8c\ +~\xfa\xd3\x9f\xbey\xc7\x8e\x1d\x7f\x94\xc9d\xde\xe2\xe7\ +\x03\xd3\xc6\xafU,\x14T\xe1\xd8P\x15*#\x04\xc8\ +\x0a\xa2\x8e \x1aX\x82\xe1\xde\xe78\xf2\x07\x02\x0a\x05\ +C\x0a\x86B\x0a\x84C\xf2\x9bc\xc6h<\xae\x9e\xbe\ +>\xf5A!\xae---\xd5/]\xba\xf4\xcd#G\ +\x8e|\x96\xbf{\x22\x9f\xcf\xbb\xbf\x16\x01\xa0\x9d\xe0\x87\ +?\xfc\xe1\x91\xf7\xbf\xff\xfd\xff~hh\xe8\x03\x98p\ +\x10M[\xc6K0n(\xbb\xbc\xac\x85\xb9y\xcd\xce\ +\xcdjnvVK\x8bK\xca\xe6\xb2\xd6\x1a:\x02\xf0\ +I\x0a\xfa\xfc\x8a\x84\x82J\x18\xcd'\x12\xeaJ\xa7\xd5\ +\x95\xe9V*\xd3\xa5h*\xadP\x22\xaep,\xa6n\ +\x840\xbcr\xa5b\x1c\xcf\xce\xce\x96\xcf\x9c9\xf3\xc5\ +o|\xe3\x1b\x9f\xfb\xfa\xd7\xbf\xbe,\xc9{\xbd\x04\xe0\ +\x8c\x8e\x8e\xc6\xbe\xf4\xa5/\xbdc\xcf\x9e=\x7f\x8a\x89\ +\x0e]\xd6x>\xaf\x1cLOOM\xe9\xfc\xb9\xf3:\ +s\xf6\x8c&&&4\x03\xf3\xf8r\x87qk\xfa\xc2\ +=\x1c\xa3}I\x01\xc7\xa7\x00\x18\x10\x0a\xf8\x15E\xcb\ +\x89HT\x19\xcc\xbf\xaf\xa7[\x83\x83\x83\xea_\xb1B\ +\xe9\x81\x01E3\x19\x85\xcdy\xce\xadZ\xb5J\xc2r\ +\xce\x9d;\xf7\xea\xc1\x83\x07\xff\xf5'?\xf9\xc9\xe7]\ +>\xaf\xb5\x00|\xb7\xdcrK\xf7\x97\xbf\xfc\xe5\xff@\ +H\xfb\xb7f\xed\x98\xa0\x0aPvqQ\x13\x17.\xe8\ +\xc4\xf1\x13\x1a;~Lh\xc72^.\x96\xd4\xdb\xdb\ +\xa3\x95+\x86\xd5\xc7\xd8\xdd\xd5\xa5X$\xa20\xbe\xde\ +lx\x06\x0f\xb8\xa7\xa0\x02\x02\x5cZX\xd0\xfc\xf4\x0c\ +4\x8d`\x9a\x8a\xe0\x06)\x5c\xa0\xbf\xa7G+V\x0e\ +k\xc5\xea\xd5\xca\x8c\x8c*\xda\xdb\xab8\xc2\x19\xe5{\ +_\x7f\xbf\xc0\x86*\xd8\xf0\x1f\x1f|\xf0\xc1/\xe3\x22\ +\x95\xd7J\x00\xfe\xb7\xbf\xfd\xed+>\xff\xf9\xcf\xff\x05\ +Z\xb9\x1b`\xb2\x8c\xe7\xd0\xec\xe4\xc5\x8b:\xfa\xca+\ +:\xf0\xd2K:~\xf2\xa4f\xa6\xa6\xf1\xd9^m\xdb\ +\xbaU\x9b7mR\x22\x1c\x91\xaf\xe9\xc9\xef\xb5\xc81\ +\x04\xf3b\x84\xacE4\x0cq\xecr_\xb5Z\xb3s\ +\x9e>vL\x0b\x08\xd1\x80c\x12\xb3\xef\x87\xf1\x950\ +\xbdb\xfdz\xa5V\x8d*\xc2\xf7\x01\x5cb\xf5u\xd7\ +Y\xa0E\x08_\xf9\xd4\xa7>\xf5\xe0\xc9\x93'\x8b?\ +/@\xfa\x7f^\xe6?\xf0\x81\x0f\xac\xf9\xccg>\xf3\ +H\x7f\x7f\xff\x9d&D\xe5\xdb\x1a;16\xa6\x1f\xfe\ +\xf0\x87z\xe2\x07?\xd0\xcb/\xbf\xac\x01\x16\xf5\xcew\ +\xdc\xa3\xbbn\xbf]\xd7\xa1\xf5\x0c\xbe\x9d\xc4T\xd3j\ +Q\xaaC\x9cKJJt\x88sq\xc6\x18n\x11\xe7\ +Zo2\xa5u\x1b\xd6i\x04\x06k\x08\xb9\xb0\xb0\xa8\ +\x12\x02/\xf27kKK\xf2U\xaa\x0a \x98J\xdd\ +U\xae\x84\x95\x81\x0f\x03\x03\x03\xbbn\xb8\xe1\x86\xadX\ +\xc4c\xe7\xcf\x9f\xaf\xfe\xaa\x04\xe0\xbf\xf3\xce;W~\ +\xf6\xb3\x9f\xfd_\xc4\xf5[\x0d\x8a\x1b\xb3\x9f\xc3L_\ +\xda\x7f@\x8f=\xbeW\xcf>\xfb\xac\x5c|\xfb\xbd\xbf\ +\xf7{\xba\xe3\x8do\xd4 \xc0\x95\xc2\xa7\xd3N\x87\xe9\ +\x0e\xb3\x0e\x0c\xc2\xa4\xa4\xa81\xf1&$\x99\x11\xe2\x9c\ +\x19\xa1\x98\xbd\xc6y\xac\x22\x01&\x5c\xb7n\xbd\xba\x01\ +\xc4\xfc\xf4\x94\xaah\xba\x9c\xcb\xab\xba\xbc$\x87\xb5\x84\ +\x88\x1e\x0d\x9f\xa3<\xc7\x19\x5c\x05!l\x02\xa36\xee\ +\xdb\xb7\xef\xbb\xe0R\xfd\x97\x15\x80\x8f0\xd7\xff\xd0C\ +\x0f}\x85\x89\xef\x00\xc4\xac\xd9O]\xba\xa4\xe7\x9f\x7f\ +^\xff\xf7\xb1Gu\xe8\xe0A\xed\xda\xb1C\xff\xfc\xde\ +{\xb5\xb2\xa7W\xe9\x0e\xe3Wh8\x0a\x85a\x0c\xaf\ +W\x00\xc6\x02\x8c\xfe\xa6 F\xafu\xec3\xc7\xf6\xba\ +!)\xc8\x18\x16\xe4\xf1\x9c[\x07;\x12\x1a\xc1\x22\xaa\ +3s\xaa\xb1\x86Z\x89\xd0JD\xb1B\xf03#\x96\ +\x96\x03\x8c\xbb\x00JB\xe6&\xb2\xd0\x81\xef\x7f\xff\xfb\ +\x8f\xe3Z\xee?V\x00\x0ey{\xea\xe1\x87\x1f\xfe\xcf\ +k\xd7\xae\xbd\x8fXn23M\xc3\xfc\x8f\x9f{N\ +\x8f\xed\xdd\xab\xb3\xa7O\xeb\xdd\xef|\xa7n\xdb\xbdG\ +]\x80Z\x86\x85t\x18\x8fY\xa6a\xb6\xcd\xa4E|\ +3\x1a\xbfoB\x1c7m$h\x8dj\x9fw\xec\xbd\ +\x8c\x1d\xe1X0l2Y\xddZ\xcf\xf0\x9a\x0dj\x10\ +N\xddB\x8e0ZS=W@\x08e,!\x88\xa4\ +#*\xd6j\xd6\x1dX\xfb.\x92\xb3e\x84\xb0_\xcc\ +\xfe\x0b\x0b\x80\xb8\x1e\xf9\xc2\x17\xbep\xefm\xb7\xdd\xf6\ +_\x00<\x1f\xcc[\xb3\x7f\xe1\xf9\x17\xb4\xf7\xf1\xc7u\ +\x11\xc4\xbf\xef\xf7\x7f_\x1b\x09G]\xf8b\x06\xcd\xe3\ +\xd7v\x91!\x18hi\xb5\xcdX\x9b\xa9\xa6e\x9a\xb1\ +}\xac\xf6\xb1\xda\xc7\xba\xea\xd8\x8e\xac\xc3S \x0d@\ +:\x9eBE\xc9)\xd75\xb4\xf6:5\x96\xc1\x027\ +'\xa7\xee\x22\x84\xa2\xfc`B\x08\xb0m\x1a!\x10\x0d\ +\x07\x08\x95\xe4\x0b\xbfC\x8e\xf2\x14.:!f\xfcE\ +\x04\xe0\xa7\x80\xd9\xf4\x91\x8f|\xe4\xaf@\xe0\xa4\xc9\xe8\ +\x96\x09s\x07\x0f\x1c@\xf3\x8f\xeb($\xc7mX\x06R\x83\ +CV\x83\xfcU\xc34t%\xf3\x8d\xd6\xb1q\x11\x09\ +\x0d\xaf\xd3\x10\x89\x12\xcc\x9bs\x96<\xa8\xf3\x8c\xb8\xbf\ +\xd1,+\x90\xea\x95\xcf\x0aQ\x10\xff\xb3\xd7 \xc6\xfa\ +rN\xabo\xbcI\xc9\xe1^%\x03\xb8 \xcf\x08W\ +uO\x9fU\x1dA\xd4\xb39\xcd\xce\xcc\xa8\xbb\xbb;\ +z\xeb\xad\xb7\xfe\x91\xa4\xf0\xcf\x12@\xe0C\x1f\xfa\xd0\ +\x1b0\x99\xdb\x0d\xf3\xb5r\x19\xb0\x9b\xd0\x91\xc3\x874\ +KN\xffO\xde|\x87\x92\x86Q(\x0e\x85x\x9a\xe5\ +KV\xe3\xaee2\x92Ljh\xcbf\x05\x11V\xc7\ +\x0a:\xccs\xc0\xf9\x80\x86wnSzh\xa8\xe3\x16\ +\x1d!]\x1e\xbd\xf635\xaf\xa6h\xba[\xf8\xc85\ +Vd\x05V\xab*Fj\xdd{\xfdv\xd2\xeb\x16w\ +\x81Z]M\xc0\xba\x81\x00<\xb2\xc8\x02\x0a4%\xf8\ +\xca\x95+\xdfs\xdf}\xf7m\x90\xe4\xfcT\x01P\x8b\ +'\xdf\xf6\xb6\xb7\xddO\x1d\xef3\x0f\xe5\xc9\xc0\xc6O\ +\x9e\xd0\x19\xd2\xdb5\xc3+\xb5\xb2;\xa3d\x87y\x16\ +\xe4s\x01\xa6\x96j4s\xfc$~X\xb1LS\xda\ +\xe2\xab\xa4\xc0}\xbdW\xb9Cr \xad\xe4\x86!\x85\ +\x13!\xfb\xbd\x01hM\x1dyE.\xc2\xbe\xc6m\x9a\ +\x8c\x12\xf7\xa6%\xe6k\xaa~\xf9\x9a\xd7\x06S_\x90\ +hC\xe1\xd4\xbdy\xbb\xc2q\x8a),/d\xc2-\ +\xb9\x81&\xa7\xe4R\x8c\x09%.\x92=\xd2\xa3\x08\xdd\ +~\xfb\xed\x1f5l\xfe\x14\x01\xd8\xa4g\xd5\xf0\xf0\xf0\ +\x9bm\xd3\x02\x9aE\x92\xe3\xc7\x8f+73\xab=\xdb\ +\xb7+\xe1\xb5\x98\x0f{m4\xae\xd4D\x1b\x0b3n\ +\xa8\x92]\xd6\xa5#GT^Zj#\xbb\xd4C\xde\ +\xde\x0b68\x8e\x0f\xd7X\xad\xae\xf5\x83r\x9d\x966\ ++\xa4\xd2\xe7_xAY\xf2\x8a+5\xebY\x17`\ +l\x0b\xc3O|\x0f\xf6\xad\x92\x17\xc8\x09n8Wc\ +\xee\x9a\x821O\x91\x95\x09\xa5F7*>0\xc2\xf7\ +\xa0e\xc6/Y\xc5\x80\x8ej^\xbcd\xb1\xa0\x8a@\ +\x5c\xce\x01\xea\xef\x06\x13\xd3?M\x00\xa1\xfb\xef\xbf\xff\ +\x1e\xc2^\xcc\xdc\x5c\x06\xfd/\x9e;\xa7KP\x17h\ +\xba\xb2\xaf\xcf2\x1f1\xc9\x89\xf5A4X\xc2\x02\xaa\ +,\xcao\x17k59\x05^,\x9d\xbf`\x90\xdd2\ +\x11'=\x1d\xdd\xbdK\xc9\x15]*\xe3\xef1\xc2\xd4\ +\xf2\xc4\xa4.\xec\xdb\xafj\xbe\xd06\xfdF'b@\ +\xae%\xbe[l\xa9\x15s\xea\x1e\xdd,gx\xbdj\ +\xf1\xaa\xea\xe1\x05y\xf1\xac\xbanZ\xa3\xfe7\xbf\x13\ +\xdcY\x05X\xc28@\xe9H\x90\xcd*\xad\xe6\x1d\x98\ +\xaf\x9d?/\x1f\xf3\x93\xbe\x1b+\xe8\xff\xd8\xc7>\xf6\ +\x96+\xf9\x0et\x0eL\xbc_\xb7n\xdd?\xb5\xfd:\ +\xc8\x80\xdf\xc4\xd9s\xca\xcf\xcdi#\x05\x89a>j\ +\xd2R\x99,\xcd\x11\xff\xc1\xb0\xf19O5\xbf\x83\x96\ +\x1bb\xdd6~/\xf2\x5cyiY}\xeb\xd6\xcaG\ +\x8d/\x01X*)\xda\xb7Z\x0b/=\xa5\xec\x899\ +\xee\xbd::t\xa2\x87\xeb\x95\xe4sL\x1e\x11V\x80\ +FIa\xfa\xacb=\x03\xea\xb9\xee\x065\x86\xd7\xa9\ +^)\xda{\xd3<\xeb\x0f\x84T/\xcdk\xf9\xcc\x01\ +\xf98\xbe\xaa\xbcu\x11\x22\x19ccrR>\x5c\xb3\ +\x1a)\x8b.\xb4FFF\xee\x91\xf4\xb7P\xf5J\x01\ +\xf8\xe8\xeb\xf5Q\xeclC\x00\xb6F_\x9a\x9f\xd7\x0c\ +\xc0\xe7\x15\x8a\x1a\x1d\x18\x84yO\xe0}\x0b\xf4\xd4\x12\ +\x00\xa7\x14*K\x95LB=#a\x92\x91\x90\xb8l\ +\x85 \xa8\x00\x08%\xfa\xfbY\x5cU\x0d\xe2}\x94\x92\ +6h\xd2e\xaaD\x0b\x1d\xedL\x11\x8bi\x9b\xbd\xcb\ +\xbc\xf4\x06\xca\x05%\x82CjT)tf/\xa8\xd0\ +3\xc8<+i\x93\x05\x99+m\x05@o\x0d!V\ +U\xbc\xf4\x8c\xca\xf3\x17\x98,pu\xaag\xc0\xb5\x84\ +0\x97\xb3\xaa\xd3\x91\x0af\xba,\x18\x92\x22\xdf*)\ +~\x8d\x00\xde\xf7\xbe\xf7\xed\xa4\xe7\x962u~\x1d\xbf\ +^d\xf1\xb9\xf99\x85x\xa8/\x95\xb4\xa6\x1f\xb8B\ +\xfb\x12\xa3DN\x8ee\xf4\xd3\xcc\x1c\x1aT\xaa\xe6\x80\ +\xcc-!HV\x10-\xcd:\x15\x852\xd7Y\xbbK\ +v\xf7\x90\xae&a\xfc\xef\x05\xb5l\x05\xd0\x10\x12\xc0\ +\xd7\xc1\x1f\xa7.\xa9\xc6\x5c\x01B E\xce\xd8\x8f\xd1\ +\xf4\x0dJ\xaf$\xc4\xcai'W.e\xf2i\x15'\ +\x9eC\x18\x01k\x8dWI\x80c8\x96C\x16[\xa3\ +?\x11\xdb\xb8\xd1\xe2U2\x99\x1c}\xef{\xdf\xbb\x96\ +V\xda\x92\xb9\xab\xe3\x0b\xc1\xcd\x9b7\xefhX\xe0\xf1\ +l\x03syvNU\xe2h\x8c\xefi\x906\xc8\x1f\ +\xf5u\x90\xda5\xe4Zr+\x1cg\xb308H\xd2\ +\xe2Z\xc1\xe2\xfbh\xc7\xf8\xb1\xa1\xba\xdc&\x85Lw\ +\x9f\xd5x\xc7\xd4\xbd\xcbs\xb9\x1dt\x87`<\x880\ +\x09}\xccc\xaec\x05~\xf9\xf2!\x95O\x1d\xd0\xc2\ +\xab\x879\xc7\xf9\xa6\xc1\x9e%\x15\xce?\xa6\xc2\x1c\xbd\ +\x01\x04_\xcf_[\xf9\xda9\xc1\x19\x17k\x0eJ\x82\ +?\xdb~\xa7H\xba\xd1(\xfdJ\x0b\x08c\x1a\xd7\x99\ +\xf0\x02Y\xd4,\x90P\x08A$\xda\xa5l\x80\xf3r\ +\x98T\x90s\xd9\xd3l\xde\xdfX2\xa5\xe9\x9c\xa2\x83\ +k\x94=\xf4\x8c*\x97j\x1d<\xb0\xc5LxuL\ +\x99pT$\x16Z\x9a\x9c\xe0\xba\x07\xe3\xcd\xcb\xe9\xb0\ +[\xad\xd1\xe8\x98W\xe0bE\xd1\xeb\xd7`\xe6a-\ +\x1e;\xa2\xca\x82\x1f\x86[\xf7\xf8\xfc5\x85\xce\x9dV\ +\xa3VQ\xd7\xaa\xf5\x98\xfe\xb3\xaa\xcc\x8f\xa9\xb4\x80[\ +\x16\xa5z\xe1\xda\xfe\x07\xcc\xd8\xf4\x98WNVy\x00\ +\x9d=\x0d\x18\xaeo\x0b\xa0a\x05@\xba\x18\xe5\xe4h\ +[\x006\x01*\xe7s\xf2\xd7\xea\xb6;\x13p\xeb\x98\ +b\xf8\x1f,\xa8<\xa8V\xc0\xdf'N\xabg\xe3\x0e\ +\xe5\x87F\xc9\xc2\x9eWy\xc13\x8b\x87\x19hh\xc0\ +@3\xa1*\x8e5\xc0,\x9d\xe2F\xa5S\x00Y7\ +\xc1\xda\x96T\xca\xe4\x94\x19\xb8\x9dgi\xa2^\xbc\xa0\ +\xfc\xc5\xc6U@\x19\x8cs_\xed\xbb\xf2n\xbdY\x95\ +\xc9\xa7T^\xac\xa9Y\x8c\xaa\xe7\x96\x0b\xb8\x90\x09\x93V\x8b\x00\x1eR\x07\x89\x0b\ +S\x17\x94\x1aY\x85\x80|\xea\xdd\xb8U\x8d5h\x5c\ + \xbc1{\xeb\xaf55\x8c\xf6K\x05\xc6 \xb1\xbf\ +d\x05P\xcb\x17H\x84z\x94Y\x13\xa3){\x09,\ +\xc1\xdd\x96\x22\xcc[G\x00\xb3\xed\x90\x07\xb9\x0e.\xd4\ +\xb4\x02\xa8\xe6l\xc8\xb2\x82\x11\x14\x08\x87m\xe9\xcdw\ +S\x17\x94\x0c\xcfW\xba\x80\x0b\xff\x95\x8e\x00\x02\xc1\x80\ +\xc2\xc1\x90\x15@\xb3\xcc\x12\x17\xa7\xd4\xe08\x944<\ +\xa3\xd5+\xfc\x1f\xe2$\xa3\x9f>},i\x05Q[\ +\x9c6\xa6\xd9\xbe\xee\xb6\xcc\xb9\xe8\xd3\xd2\xf1\x83h\xc6\ +0U\x13\x92\xc4Mp/\x88c\x90\xd8\x1690K\ +1U*\xa3\xd5\xcb\xee\x86\xe6\xfd\xa4\xc3!U\xaa\x13\ +\xe4\x13E\x04\xd0$\x22\x04@\xff)\xee\xab\xb5u\xd0\ +\xae\x03\x1c\xc1,~\xcf\xd8\xd6&k\xf3)\x9cL^\ +\x16\x00\xd6^\x96\xe4]i\x01U\x8a\x85,\x17\xe4\xf0\ +/\x88\xb4\xa2\xd4\xf3\x05S\x86V\x1cU/M*\x0a\ +j\xbbKS\x0a\xa7C\xaa.\xb9\x1d\xe5c\x15\x14H\ +]R3\x19U\xbc\xb7Ou\xb4_\x9e\xba\x88\x00\x0c\ +\x006!\xd7,\x02\x018*-\x9eRa\xc3F\xac\ +`\xd4j\x85\xa7\xda\xebh\xf97D\xec\x9fF\x0eM\ +\x0b\x82\xa3\xb7\xdcl\x05\x10\x8c\xfa\x15\x88\xcf\xca\xf5\x16\ +PBYq\x94Q\x9e\xe182\xafj\x10\x86\xeaj\ +\x15D0nJ\x82\x9a\x8dm\x86\xe0\x06\x1e\xcb\xe0^i\x01\x15^7_h\xa7\x8a\ +V\x00q:-a\x80\xcaqr\xaa.7\x95;\xfa\ +\x8a\x86n\xbcY\xdd\xeb7\xca\xb9~7\xfe\x99g\x81\ +\xb8E\x22i\xcd+\xc4\xbd\x1e\x0c\x94.\x9e\xc5\x05L\ +b\xd2\xb0!\xc8F\x08\x00\x94\x0f~KY\xfa\xea\xb8\ +J7lSjhX\xb0)b\x94\x05N\xdb\xe2\x22\ +o\xaf\x13J\xddR\xc8\x0a\x8e\x05\x83\x17u\xc6Y\xc5\ +z\xa9'\xd21\xd6\xd3$\xaf\x99Pb\x10T\xc7\xdf\ +\xb3\xb1\xba\x92\x83\x8eUT\xac\xdf\xa36\xc1\xcc\xc9\xf0\ +\xf9\x87\xc9\x1b\xcb\x89\xcbGc\xc6o\x92 \xe6\xe7c\ +6[\x9cfh\x5c\x89\x01\xb51>n\xfb\x8f\xfa\x90\ +Z\x82\xfa?\xc2\xc3LbM\xac|>\xaf\xe9\xe7\x7f\ +\x04C%\xf9\x9d\x0a\x85\xc9\x08L\x0c!q\xeeql\ +\x1eO<\x9e!\xef\x9e\xc5\x8fm(m\xbd\xf4\xb4\x16\ +\x00\xd5M\xdd@\x9a=WPi\xf2\x02\xf7W\xed3\ +\x1e\xd4tI\x9d\x99\xb7x\xe1\x04\xe8^6\xf7\xd9n\ +\xd1\xf9g\x9f\xd3\xf4\xb1\x1f\xab\xb4|F\xd1\x01?\x16\ +f\xc2\xd5\x8c\x22\xe9\xb8B\xa9\xa8b\x03A\xf5mu\ +\xd4\xb3\xc9S\xcf\x96\x06\x02\x90M\xd6\x1c\xd7G\x04\xf3\ +\xb56\x5c\xa0\x9c8\x1dg\xe1\x0a\x9dL\xf7\xa5\x97^\ +:r\x0d\x08>\xf9\xe4\x93\x87y\x97V278\x94\ +\x9dq\x04\x10\xc5\x0a\x8c\x095%\xea{)w\xf8\xa8\ +\xe6\xc7\x0ea\xdeyb\xef\x84\x8d\xd9\x96\xbc\x9a\x05\xb7\ +\xfc\xe9c\xc4\xe6&\xd7=\xcb|\xc7\x05:\x84P\xb8\ +\x86 \xb0\x1e\x98\xb7f\xcf\x09\xc2$\xf5\xc1\xf4^\xcd\ +\xef\x7f\xc2j\xd0\xabY\x90E\x08\x15\x18h\xd0\xf1\x09\ +q\xef\x12\xe7/\xe2\xe70\x97HQ|\xf5p-N\ +\xe1\x14\xa2\x90\xf1\x81\xfc\xed0XC\xf75\xbf\x22N\ +\x00\x1c\x8b\xc9\x0b\x85\x08\xbb\xf4\x12L\x94\x810\xffi\ +\xb6\x1b\x9d\xfcI\x10\xf4\xf8\x5cd3\xc3\xab\xd4\x04\xdb\ +H\x15If2JP\xe2\xe6\xe9\xa8\xd8\x5c\xda\xe5\xe1\ +\x0b5\xcd=\xff\x14\xdd\x9d!\xc5\xfa\xfaU]0f\ +i\xea\xfd\x10\xe05\xa7:UW-\x171\xcc\xb6\xa3\ +\x83\xc9\x0f`\x1eWA\x8a\x9cs\xad\xc9\xe3\x9b0X\ +\x80\xa1yy\x953\xb8\xd8Q\xacb\x99\xe2\x8645\ +\xe0\xb4\xdcG\x02\xe9#X\x98A\xf5ypaI\xa1\ +\xae\x1e\x1a\x17q\x14\x94\xa0Y\x02@\xc3\xa4pQ\xb1\ +6a1n\x1d\xedW\xc0\x8c\x0a\xd1\x05s\xf1'S\ +\xaat\xa5q\xdb\xf5\xca\xb67f\xcd\xcf\xcf\x1f\x94\x94\ +\xfd\xc9\x96X\x13\x9a\xc7\x0b\x9e\x05!\xad\x99\xf81\x9d\ +\xf4\x9a5\x0a\xa6R\xed\xa6\xa4\xd0\x9c\xa3\xfcI\x1a%\ +\xfb\x9eFq\x86\x812B\xb8\x00\xd33\xaa-/\x81\ +e\xa1\xab\xc2\x97\x07\xb5\xcd\x1fB\xe3j\xa0A\x97\x89\ +.\xaa:\xbf\x17\xac\xd8\x8b\xc6\x8f2OVE\x84\x0b\ +\xd6\xd8\x8c\xceA`\xe4\x06<_g\xfe\xf3\xcc;K\ +h\x0e\xc2xD\x0e\xc2\xf6\x05\xad\x10\xf0\xeb.\xe6\x8b\ +\xf3\xbd\xdd\xaa\xc9\xe1\xf7eBx\x1d\xed\x93p\x053\ +\x19\xa5\xae\xdf*_\x81v\x22a\xae\xdb\x82\x04\ +\x90B3i\xa8/ \xc0\xc5v\x8b\xb9\x04\xb3.\x89\ +H\x85P\x9b'\xf5\xbe\x84\x15\xd4Z\xcf\xf8Mv\x88\ +@\x8a\x97k\x14\xdc\xa3l\xdd\x11\x0d\xb5\xdc\xac\x0eU\ +\xb87\x8f\xd5,\x04\x14\xc8\x13&\x11\x8cG\xdc\x0fl\ +\xda\xa0$/o\xe7\x0ay\xdb\x0db\xd3\xc4\xe3\xf9b\ +q\xcaJ\xf2Z\x01\xd8\x93\xb3{\xf7\xee}\x84\xf6\xb8\ +\xd9\xdc\xe8\x04\x89\x02I\x04P\xe4\xbd\xa0ry(g\ +\xb5Z+8\xca\x9d\x9e\xd7\x12\xe7\xfb\xf7\xec\x84\x11Y\ +\x8d7\x1d\x17\x01\xd5)T\xa6h^Vl\x1c\x0fc\ +\xce\x84\x22P\x1b\xad$s\x8a\x0fa]2a\xcf\xb1\ +Y\x9c\xc7\xc2\xb2/_\xd2\xfc\xcb\x0d0\xc6\xa7df\ +\xb0S\x9e\xd8fK\xad\x14\xc6]|\x8a\x90\x03x\x80\ +&!\x02\xa1v\xf3\xf7\x10\x08.\xa8\xb2\xd1\x08\xb82\ +\x8b\xf6\x970\xff2\x18\x80\xdb\x9e%\xc3\xdc\xf0\xcf\xde\ +\xad\xba\xcf\xe9\xecUt\xbf\xff\xdd\xef~\x05&K\xe2\ +s\x8d\x00:I\xd2\xfe\xfd\xfb\x1f\xc7\x0a^\xd9\xbe}\ +\xfb6\xfag\x0a\x00\x84]\xbbviy\x0e\xf3\x86\xa9\ +&\xa4\x860Yr\x83S\xa7\xd4\xbdi-\x0cF\xf0\ +\xd7\x12=\xfeW\xb44\x0ec-\x03\xb3\xa6\x7f\xfe\x99\ +\xe7\x8cU\xab{\xa3\xc7\xcbM\x97L.\x88\xb5\xa0y\ +\x00\x8bf\x08\x02\x80\xc9,\xe93\x9a\xf3\xc8\x00'^\ +\xdc\x7f\xe5\x0e&\xee\x97Fv\x01\x8e\xfdT\x99}0\ +i\xe6u\x0a\x08\x1d\xa0-\x928!w\xf9\x15\xb0\xa0\ +,\x8c\x11\x80t\xacic\xe1$URz\xb5\xa7\xde\ +U\xaezw\x05@r\x98\x08\xf9\xb0\x0e#\x00!\x08\ +\xfc\xff\xac\xa7\xec\xb4\x0f0u\xaei:\xe1]`\x90\ +\xa3D\xccS\xa8\xa7\xfdr\xd4\xb6\xa1X\xc32\xda\x9f\ +\x02W&\xb9\xe7\x22 Y\x00$\xfb\x07u\xaa/\xa5\ +\x1d\x0f\xfe\xa1j\x91\x90IzD\x92W\xfb\xc6#\x8f\ +<8~\xf6\xec13\xe5\xcfz=\xee\xb2\x0du\x86\ +wi\xdb\xd9j\xb2&\x12\x8d\xb2\x80\x98\xc2Pin\ +\x16\x90\xa1/\x8f\xd9\xa2=\x00\xad\x81\xc4'\x15\x0c\x9d\ +\xc5\xa5+\x80\x95\x09\x18\xd4\x06\xa4\xa6\x804\xcd\x89\xa6\ +\xba`\xbege\x83f\x87\x0f@\x0d`\xbeA\x9b[\ +\xd8\xac\xa6-\x80\xfa\x82G\xb2\xe3Si\xde\x0a\xa5\xa3\ +\xfdN%k)\xc1\x5c\xb1>\xb5\xdc\xad\xc1\x89<7\ +\xceP\xfa\xe2\xd1\xc1i|?k6G\xf4\xea\x04\x09\ +\xd2\xba\x7f\xf7QEy\xf9\xbaHd\x9a\x9b\x9bc/\ +\xd3\xfe\xaf\xfd\xcd\xc3\x0f?d\xf2\xb9\x9fw\x83D\x89\ +\x0d\x88\xb3\xec\xb8z\x07\x1b\x0c\xc20o\x22\x01B\x88\ +\xabD\xf9\xe9\x00\x88\x04][v\xc6\xd3\x15\x16\xd6\x80\ +)\x07@t8\x86\xf1\x98\xc7\xf9\xa6R}\x9e\xd2\xc3\ +M\xa5\xb7\xf81_|3\x12\x82\xa2X@\xbc\x85\xe0\ +MY`\x13\x0c\xb9\xcb\x9e\x0a\x0b>\xacG\xd7~\x9a\ +\xcc\xdb\x83\x10\x98\xd3f\x83&\xdd]\xa0\xc4\x9d&\xde\ +\xcf`U\xb90\x80\x99\xd1Y\xf2\xfd\xf0\xbb\xde\xae\x91\ +\xb7\xbdU\xd9r\xc9h\xde\x00\xdf\xe4\x9f\xfd\xf1\x1f\x7f\ +\x14\x0c\xb8\xe42\xd3\xcf+\x80\x06~3\x07r:\xec\ +\xc8\xbc\xdd\xb8B\x10!\x180\x0bCe\xfas\xbeJ\ +\x99\xa2\xa4\xa6D\x0f\x9d\xa3^\x13\x8d\xa0\xa0lF\x16\ +\xee\xf6Q,\xf9\x14\x1d\xf6\xa3u?\x11\xc1h>\x0c\ +\xf3\x09\xf0 E\x0c\xa74\x05\xc5e0\xc0\xad\xdb\xf6\ +\x99\x93m\x08x\xa4\xd1i1\xe4\xca\x8f-a\xa3\xcc\ +\x99I\xca\xbe-\xf2-\xa2\xf1Y\xfc}\x0e\xca\x86\xb9\ +\x9e\xd6\x85DF\xb9\x9bvk\xcb\x07\xff@E\x22\xce\ +,\x9a'\xb3s\xbf\xfd\xcd\xbf}`\xec\xd0\xa1\xa7\x8b\ +\x92\xfb\x8bn\x922\xfb\xf4\xcf\xd0._\xcb\x0b\xc5\x8d\ +\xc6\x15\x82&\xb4%\x13\xb6\xf8\xa9\xd0\xc5M\xc6K\x8a\ +g\xaa\x14DM+\x00'\xe0 \x04S\x81\xf9\x18a\ +:\x1c\xe0\xd8j\x1dJ\xf2=\x0d\xf3\x90/\x81*Z\ +M\x10\xe2\x9a\xb5\x82\x00V\x13,!\x04bw5'\ +\xce1\x9f\x98\xcbA\xd3\xe0E\x17\x00\x98\x89\xa0\xf1:\ +\xf9\xfdBX!(\x987\xf9FZ\xe7H\x17g\xe8\ +\x18\xedx\xe0\xe3\xaa\x04\xfc-\xe6\xd9\xd4\xf1\xdc\xd3\xcf\ +\xfc\xf9\xb7\xbe\xf6W\x7f\xcet\xc5\x7f\xcc.\xb1&T\ +8v\xec\xd8\x89\x15+V\xec!\x22\x0c!\x04k\x05\ +\x81T\xca6)k\xe5\x9cR\xdd\xe6]^\xcd4%\ +!A~\xcc\xd1o\xb23\x98\x07\x94\xc21L>\xc1\ +\xf7\x14\xe7\x93\x5c\x8fsS\xa8\x95\x83\xd9\x1e\xa3k\xdd\ +\xc9q\xc0\x93\x18~^G\x10)\x1fX@7\x0a\x0a\ +\xd3\x0cIg\x82\x1a\xec\x0e(\x19 E\x07\xe8B\xf8\ +{\xa0L\xc78\xd8\xa3\x13\xfe\x08\x9a\xbfI;>\xfe\ +1U\x10\xfa\x0c\xcc\xa38\xb3\x9f\xe9\xd1\xbf\xfc\x93/\ +|\xb2[\x9a[\xfe%\xf6\x09zhi\xe1\xf8\xf1\xe3\ +c\xbc6\xbf\x0d<\xe8\x09\x1bP\x8c\xc7\xa1$\x05\xd3\ +\xb0\xf2K\xa00\xd5\xa1\xdf\xd6\xf6\x08Ab\x0c0\xfa\ +\xa1\x90\x80>\x04\x84 \xcc\xc8y5\xfc&w\x87\xcc\ +f\xa7\x06c\x83\xb1.Q\x00\xc16\xd6\xe4(\xe9I\ +]4c\xbb2\x01\xf5v\xc3<\x05O\x97/\xacp\ +\x93\x88T\x04C\xdc\x84\xaa\x80\xcd\x8b<\x1f}\xd7\xbb\ +\xb4\xf9_\xfdK\x15\xb1\x94\xe9\x99\x19\xcb\xfc\xcb\x87\x0f\ +\xbf\xf0\x97\x9f\xff\xc2\xbfI6\xea\x13\xe7\xe0\xe1\x97\xdd\ +)J\x16\xeb\xce\x8c\x8f\x8f\x1f#*\x98\x04\xa9'\x1c\ +\x89\xd8L\xaf\x19\x89S\xa7\xaf\x22\xcbJ\xab\x9c\xaf\x90\ +\x81\xd5-S\x0c\xb6*s\xaaP\x05C.\x0b\xe0\x84\ +\xd9\xa2+\x15\xb0\x96b\x95\xe3\x0aTkQ\xc1\x05\xd8\ +\x1a\x8c\xb8P\x09\xcc\x00\xe9\xa2P\x02\x9cH\xf9\xe8M\ +@\xa1&\xd6W\x8f#\xdb\x8c&|Q\x1df\x0d\x9b\ +\x1f|PCw\xdd\xa1,Qijz\xda\x00\x1e\xbb\ +Y\x0e\xbf\xf8\xb5\xbf\xf8\xef\xf7G\xf2\xd9\xf1\xb3\xac\xfd\ +W\xb9Y:\x82\x05\xdc\xc4\xcfa\xfe\x94$i\x17\xdb\ +hD\xe5h7H\x85\xca\x00b~^\xc5\xf1\x17\x15\ +)\x8f)\x1d\x98W\xa8Qm\xed\x0a5\x8dU\xfe\xf9\ +\x9a\x10\xff\x1cK\x9d\xfdN\xed7\xc4\xed\x1e#\x9e\xd4\ +)g\xa1 \xc2\x0c\xa2mF/,LN4\xc14\ +V\xa6\x17q\xd7]\xda\xf8\x9e{\xd5\xc0\x12\x17\xb3\xcb\ +vW:\x95\xac\x8e\x1c<\xf4\xf8_?\xf4\x95\x8fw\ +WJ\xa7\x8fK\xeek\xb1]>D\xc7h+{\x08\ +?\xc5o\x05~\x97\x5c\xc1a\x03\x92\x22!\x80\x093\ +\x8e\x19\x7f\xa6\xa7W>}\x08?=\xa5\x1ee\x11H\ +I\x81j\xc3\xee#\xf0\xd7\x01K[\x11C\xcdv\xba\ +k\x81\xc3ic\x82\x9f\xf3\x86`\xda\xe4\xfah\xde\xa3\ +\x08\xbaXqu\xae\xe1\xd1\x97\xdc\xa3M\xecG\x0e\xb2\ +\x1b-GB\xb6@\x92\xc3\xfe?\xa3\xf9\xc6\x81}\xfb\ +\xfe\xc7\xf7\xfe\xfao\xfe\xebH\xd3\xbbx\x04\x91\xbe\x96\ +?\x98\x08@\xc3;w\xee\xfc\x837\xbd\xe9M\x0f\x12\ +&S\xec \x17 \xa9\xb0\xc9\xfdYh\xdcAa\xc5\ +\x9c\x0a\xaf\x9e\x94&\xc7\x15\x9a\xbf\xa4\x1e\x9a\x1b\x09\xf2\ +\xf6@\x89\xd4\xb5J\xeen\x84\xc0?\xf1\x8c|P \ +\x88y\x87`8\xa2\x1a\xe3T\xa9\xaaY\xee\xa9bi\ +\x03ox\x83F\xd8}\xeet\xa5\xf1\xa0\xaa\x96\xb2Y\ +\x9b\xe1Mc\xf6g\xcf\x9c\x99{\xe6\xc9\x1f\xfc\xa7\xa3\ +\xcf=\xff\xcd\x95\xd4s\x07%\xef\xf5\xf8\xc9\x8c\x03\xa5\ +\xf9\xdcz\xc7\x1dw|\x82\xd7\xcdo\xc6%|\x84K\ +\xc5c1\xbb\x83;,)\xee\x0f(\xe6C\xb3\xe4\xe3\ +EL\xb4:5\xa9\xe6\xec\x8c|0\xa0\x82ywP\ +\xb7U^\xc3T\x85\xe1\x88\x5c\x00\xd6KS\xe3\x0f\xf4\ +\xab\x7f\xcbV\xf5n\xdd\x22\x1fnF\xd9\xa0y\xe4\xc5\x17\xffO\xadTy5\xe8\ +\xd5\x97\x03\xa6`\x93\x9a\xbf\xa9?\x9du\xd4*\x0d\xa2\ +\xb0\xd7\x8d\x81\x0f\xaf\xdd\xb0\xfe\xc6\x15\xc3\xc3\xd7\x03\x94\ +\xab\x12\xc9\xd4\xcap$\x9c\xa6\xf1\x8aW\x04\xc3\xdcl\ +\x18\xaf\xd0\xb2*\xc1\xfc2m\xab\x0b\xecN?79\ +1q\xf8\xec\xa9\xf1\x83\x5c\x9f\xa6\xfa\xcb\x8a>\xd1\xb2\ +\xe4\xfd6\xfex\x9a\xba\x0f\xb7\x97\xc8\xf2\x15\x91\x15\x8c\ +\xc3\xe8\x84\x9a\x9c\xc7\xfc=G\xb8=\x90\xc8\xf52\x9b\ +T\xcb\xa0\x80\xcd\x08\x0c\xd7\xaf\xf5\x8f\xa8\x9d\xdf\xb0_\ +\xad7\xf5:\x7f\xfe\x1f_\xbc\xdd\xe6\x1aS\x0c\xc2\x00\ +\x00\x00\x00IEND\xaeB`\x82\ +" + +qt_resource_name = b"\ +\x00\x0d\ +\x0b4-\xe7\ +\x00a\ +\x00k\x00r\x00e\x00g\x00a\x00t\x00o\x00r\x00.\x00p\x00n\x00g\ +\x00\x0b\ +\x01\xad\xabG\ +\x00d\ +\x00i\x00g\x00i\x00k\x00a\x00m\x00.\x00p\x00n\x00g\ +\x00\x1a\ +\x08\xdd\xe1\xa7\ +\x00a\ +\x00c\x00c\x00e\x00s\x00s\x00o\x00r\x00i\x00e\x00s\x00-\x00d\x00i\x00c\x00t\x00i\ +\x00o\x00n\x00a\x00r\x00y\x00.\x00p\x00n\x00g\ +\x00\x07\ +\x0e\x95W\x87\ +\x00k\ +\x003\x00b\x00.\x00p\x00n\x00g\ +" + +qt_resource_struct = b"\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x01\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00 \x00\x00\x00\x00\x00\x01\x00\x00\x13\x0d\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00<\x00\x00\x00\x00\x00\x01\x00\x00 \x17\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00v\x00\x00\x00\x00\x00\x01\x00\x005/\ +\x00\x00\x01~*kP\x18\ +" + +def qInitResources(): + QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +def qCleanupResources(): + QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +qInitResources() diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/appchooser/digikam.png b/venv/Lib/site-packages/PySide2/examples/widgets/animation/appchooser/digikam.png new file mode 100644 index 0000000..9de9fb2 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/animation/appchooser/digikam.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/appchooser/k3b.png b/venv/Lib/site-packages/PySide2/examples/widgets/animation/appchooser/k3b.png new file mode 100644 index 0000000..bbcafcf Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/animation/appchooser/k3b.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/easing/__pycache__/easing.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/animation/easing/__pycache__/easing.cpython-310.pyc new file mode 100644 index 0000000..dcba441 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/animation/easing/__pycache__/easing.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/easing/__pycache__/easing_rc.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/animation/easing/__pycache__/easing_rc.cpython-310.pyc new file mode 100644 index 0000000..87806f5 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/animation/easing/__pycache__/easing_rc.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/easing/__pycache__/ui_form.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/animation/easing/__pycache__/ui_form.cpython-310.pyc new file mode 100644 index 0000000..82a22b9 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/animation/easing/__pycache__/ui_form.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/easing/easing.py b/venv/Lib/site-packages/PySide2/examples/widgets/animation/easing/easing.py new file mode 100644 index 0000000..18b5c09 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/animation/easing/easing.py @@ -0,0 +1,259 @@ + +############################################################################# +## +## Copyright (C) 2010 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2 import QtCore, QtGui, QtWidgets + +import easing_rc +from ui_form import Ui_Form + + +class Animation(QtCore.QPropertyAnimation): + LinearPath, CirclePath = range(2) + + def __init__(self, target, prop): + super(Animation, self).__init__(target, prop) + self.setPathType(Animation.LinearPath) + + def setPathType(self, pathType): + self.m_pathType = pathType + self.m_path = QtGui.QPainterPath() + + def updateCurrentTime(self, currentTime): + if self.m_pathType == Animation.CirclePath: + if self.m_path.isEmpty(): + end = self.endValue() + start = self.startValue() + self.m_path.moveTo(start) + self.m_path.addEllipse(QtCore.QRectF(start, end)) + + dura = self.duration() + if dura == 0: + progress = 1.0 + else: + progress = (((currentTime - 1) % dura) + 1) / float(dura) + + easedProgress = self.easingCurve().valueForProgress(progress) + if easedProgress > 1.0: + easedProgress -= 1.0 + elif easedProgress < 0: + easedProgress += 1.0 + + pt = self.m_path.pointAtPercent(easedProgress) + self.updateCurrentValue(pt) + self.valueChanged.emit(pt) + else: + super(Animation, self).updateCurrentTime(currentTime) + +# PySide2 doesn't support deriving from more than one wrapped class so we use +# composition and delegate the property. +class Pixmap(QtCore.QObject): + def __init__(self, pix): + super(Pixmap, self).__init__() + + self.pixmap_item = QtWidgets.QGraphicsPixmapItem(pix) + self.pixmap_item.setCacheMode(QtWidgets.QGraphicsItem.DeviceCoordinateCache) + + def set_pos(self, pos): + self.pixmap_item.setPos(pos) + + def get_pos(self): + return self.pixmap_item.pos() + + pos = QtCore.Property(QtCore.QPointF, get_pos, set_pos) + + +class Window(QtWidgets.QWidget): + def __init__(self, parent=None): + super(Window, self).__init__(parent) + + self.m_iconSize = QtCore.QSize(64, 64) + self.m_scene = QtWidgets.QGraphicsScene() + + m_ui = Ui_Form() + m_ui.setupUi(self) + m_ui.easingCurvePicker.setIconSize(self.m_iconSize) + m_ui.easingCurvePicker.setMinimumHeight(self.m_iconSize.height() + 50) + m_ui.buttonGroup.setId(m_ui.lineRadio, 0) + m_ui.buttonGroup.setId(m_ui.circleRadio, 1) + + dummy = QtCore.QEasingCurve() + m_ui.periodSpinBox.setValue(dummy.period()) + m_ui.amplitudeSpinBox.setValue(dummy.amplitude()) + m_ui.overshootSpinBox.setValue(dummy.overshoot()) + + m_ui.easingCurvePicker.currentRowChanged.connect(self.curveChanged) + m_ui.buttonGroup.buttonClicked[int].connect(self.pathChanged) + m_ui.periodSpinBox.valueChanged.connect(self.periodChanged) + m_ui.amplitudeSpinBox.valueChanged.connect(self.amplitudeChanged) + m_ui.overshootSpinBox.valueChanged.connect(self.overshootChanged) + + self.m_ui = m_ui + self.createCurveIcons() + + pix = QtGui.QPixmap(':/images/qt-logo.png') + self.m_item = Pixmap(pix) + self.m_scene.addItem(self.m_item.pixmap_item) + self.m_ui.graphicsView.setScene(self.m_scene) + + self.m_anim = Animation(self.m_item, b'pos') + self.m_anim.setEasingCurve(QtCore.QEasingCurve.OutBounce) + self.m_ui.easingCurvePicker.setCurrentRow(int(QtCore.QEasingCurve.OutBounce)) + + self.startAnimation() + + def createCurveIcons(self): + pix = QtGui.QPixmap(self.m_iconSize) + painter = QtGui.QPainter() + + gradient = QtGui.QLinearGradient(0, 0, 0, self.m_iconSize.height()) + gradient.setColorAt(0.0, QtGui.QColor(240, 240, 240)) + gradient.setColorAt(1.0, QtGui.QColor(224, 224, 224)) + + brush = QtGui.QBrush(gradient) + + # The original C++ code uses undocumented calls to get the names of the + # different curve types. We do the Python equivalant (but without + # cheating) + curve_types = [(n, c) for n, c in QtCore.QEasingCurve.__dict__.items() + if isinstance(c, QtCore.QEasingCurve.Type) \ + and c != QtCore.QEasingCurve.Custom \ + and c != QtCore.QEasingCurve.NCurveTypes \ + and c != QtCore.QEasingCurve.TCBSpline] + curve_types.sort(key=lambda ct: ct[1]) + + painter.begin(pix) + + for curve_name, curve_type in curve_types: + painter.fillRect(QtCore.QRect(QtCore.QPoint(0, 0), self.m_iconSize), brush) + curve = QtCore.QEasingCurve(curve_type) + + painter.setPen(QtGui.QColor(0, 0, 255, 64)) + xAxis = self.m_iconSize.height() / 1.5 + yAxis = self.m_iconSize.width() / 3.0 + painter.drawLine(0, xAxis, self.m_iconSize.width(), xAxis) + painter.drawLine(yAxis, 0, yAxis, self.m_iconSize.height()) + + curveScale = self.m_iconSize.height() / 2.0 + + painter.setPen(QtCore.Qt.NoPen) + + # Start point. + painter.setBrush(QtCore.Qt.red) + start = QtCore.QPoint(yAxis, + xAxis - curveScale * curve.valueForProgress(0)) + painter.drawRect(start.x() - 1, start.y() - 1, 3, 3) + + # End point. + painter.setBrush(QtCore.Qt.blue) + end = QtCore.QPoint(yAxis + curveScale, + xAxis - curveScale * curve.valueForProgress(1)) + painter.drawRect(end.x() - 1, end.y() - 1, 3, 3) + + curvePath = QtGui.QPainterPath() + curvePath.moveTo(QtCore.QPointF(start)) + t = 0.0 + while t <= 1.0: + to = QtCore.QPointF(yAxis + curveScale * t, + xAxis - curveScale * curve.valueForProgress(t)) + curvePath.lineTo(to) + t += 1.0 / curveScale + + painter.setRenderHint(QtGui.QPainter.Antialiasing, True) + painter.strokePath(curvePath, QtGui.QColor(32, 32, 32)) + painter.setRenderHint(QtGui.QPainter.Antialiasing, False) + + item = QtWidgets.QListWidgetItem() + item.setIcon(QtGui.QIcon(pix)) + item.setText(curve_name) + self.m_ui.easingCurvePicker.addItem(item) + + painter.end() + + def startAnimation(self): + self.m_anim.setStartValue(QtCore.QPointF(0, 0)) + self.m_anim.setEndValue(QtCore.QPointF(100, 100)) + self.m_anim.setDuration(2000) + self.m_anim.setLoopCount(-1) + self.m_anim.start() + + def curveChanged(self, row): + curveType = QtCore.QEasingCurve.Type(row) + self.m_anim.setEasingCurve(curveType) + self.m_anim.setCurrentTime(0) + + isElastic = (curveType >= QtCore.QEasingCurve.InElastic + and curveType <= QtCore.QEasingCurve.OutInElastic) + isBounce = (curveType >= QtCore.QEasingCurve.InBounce + and curveType <= QtCore.QEasingCurve.OutInBounce) + + self.m_ui.periodSpinBox.setEnabled(isElastic) + self.m_ui.amplitudeSpinBox.setEnabled(isElastic or isBounce) + self.m_ui.overshootSpinBox.setEnabled(curveType >= QtCore.QEasingCurve.InBack + and curveType <= QtCore.QEasingCurve.OutInBack) + + def pathChanged(self, index): + self.m_anim.setPathType(index) + + def periodChanged(self, value): + curve = self.m_anim.easingCurve() + curve.setPeriod(value) + self.m_anim.setEasingCurve(curve) + + def amplitudeChanged(self, value): + curve = self.m_anim.easingCurve() + curve.setAmplitude(value) + self.m_anim.setEasingCurve(curve) + + def overshootChanged(self, value): + curve = self.m_anim.easingCurve() + curve.setOvershoot(value) + self.m_anim.setEasingCurve(curve) + + +if __name__ == '__main__': + + import sys + app = QtWidgets.QApplication(sys.argv) + w = Window() + w.resize(600, 600) + w.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/easing/easing.pyproject b/venv/Lib/site-packages/PySide2/examples/widgets/animation/easing/easing.pyproject new file mode 100644 index 0000000..2677e28 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/animation/easing/easing.pyproject @@ -0,0 +1,4 @@ +{ + "files": ["easing.qrc", "ui_form.py", "easing.py", "easing_rc.py", + "form.ui"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/easing/easing.qrc b/venv/Lib/site-packages/PySide2/examples/widgets/animation/easing/easing.qrc new file mode 100644 index 0000000..7e112d3 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/animation/easing/easing.qrc @@ -0,0 +1,5 @@ + + + images/qt-logo.png + + \ No newline at end of file diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/easing/easing_rc.py b/venv/Lib/site-packages/PySide2/examples/widgets/animation/easing/easing_rc.py new file mode 100644 index 0000000..bae7135 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/animation/easing/easing_rc.py @@ -0,0 +1,361 @@ +# Resource object code (Python 3) +# Created by: object code +# Created by: The Resource Compiler for Qt version 5.15.2 +# WARNING! All changes made in this file will be lost! + +from PySide2 import QtCore + +qt_resource_data = b"\ +\x00\x00\x14\x1d\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00.\x00\x00\x007\x08\x06\x00\x00\x00s`xd\ +\x00\x00\x13\xe4IDATx\x9cb\xfc\xff\xff?\xc3\ +\xdf\x7f\x7f\x99\x99\x99\x98\xff>x\xf1Xf\xe9\x9eU\ +\x09\x87/\x9e\xb6y\xf7\xe9\xad\x98\xa4\xf2?~Q\xb9\ +\xbf\xfc\xcc\x1c?\xf8\xfe\xfd\xff\xc7\xca\xc5\xc6\xf7F\x9c\ +[\xf6\x96$\xaf\xd25)>\xa5\xcb\xd2\xbcJ\xd7\xc4\ +xd\xef\x08p\x8a>ccf\xff\xc5\x80\x05\xfcg\ +\xf8\xcf\xf4\xef\xff?&\x06\x86\xff\x0c\x8c\x0c\x8c\xff\x19\ +\x19\x18\xff30Bi\x0a\x00\x00\x00\x00\xff\xffb\xfc\ +\xfb\xf7/3\x13\x13\xd3\xdfY\x9b\x17\xa6T\xcfm\xed\ +}\xf3\xe6\x0d\x1f\x17/\xdb\x7f{/aFYEN\ +\x06\x86\x7f\x8c\x0c\x0c\xff\x99\x18\x18\x18\x18\x18\xfe\xfd\xff\ +\xc7\xf0\xe7\xdfo\x86\x7f\xff\xff00002\xb00\ +\xb12p\xb2\xf0|\xe3c\x17z&\xcc%u_\x9c\ +G\xee\xa6\x04\x8f\xc2u\x09^\x85\x9b\xa2\x5cR\xf7\x05\ +8\xc5\x9e\xb1\xb3p\xfc\xc0n\xf5\x7f\xc6\x7f\xff\xff1\ +\xc39$z\x08\x00\x00\x00\xff\xffb\xfc\xff\xff?\xc3\ +\xa4\xb5\xb3s\xf2\xbb\xf3&s\xf2\x09\xffcgc\xfb\ +\xef\x1e,\xc4 !\xc3\xc6\xf8\xed\xeb?FF\x889\ +\x8cp\x0b\x18\x99\xfe320\xfcg```\xf8\xff\ +\xff?\xd3\xbf\xff\x7f\x19\xff\xfc\xff\x03\xf1\xd0\xbf?\x0c\ +\xff\x19\xfe3\xb00\xb22\xb0\xb3p\xff\xe5g\x17~\ +!\xcc%y_\x8cG\xee\xa6\x14\xaf\xe2u\x09\x1e\x85\ +\xeb\xa2<2w\x859%\x9ep\xb0r}\xc5\xe7\xa1\ +\xffpK\x19\xff1b\xf1\x10\x00\x00\x00\xff\xffl\x92\ +\xbd\x0a\xc20\x14F\xbf/\x16\x7f\xd2\x06!\x83\xc6A\ +\xc5]p\xec\xa8\xbb\xcf\xe2k\xbavp(\xa8\x83\xe0\ +\xd6\xb1\x88 $\xf7:\x88[^\xe0\x1c\x0e\x1c6\xb7\ +\xcbv\x7f:\x9e\x85\xea\xe2\x87\xb2\xabKS\x1f\xa6x\ +\xbf\x04f\x90\x03gL\xa0\xfe\x0a\xa9\xc4\x7f\x8fd\xa2\ +D$\x89H\x1a\xa1*0,0.\xac\xb8\x91\xef\xfc\ +$\xac\xef\xed?\xf7\x00\x00\x00\xff\xff\x22\xd9\xe1\ +\xff\xff10pp23|\xfb\xfa\x87\xe1\xf4\xc9\xc7\ +\x0cR\x5c\xea\x0c^&>\x0c\xc6\xaa\x86\x0c\xa2\x02\x22\ +\x0c\x8c\x8c\x0c\x0c_~}`x\xf6\xe9\x1e\xc3\xb5\xd7\ +'\x19\xae\xbe:\xc1\xf0\xf5\xf7'\x06nV>\x9c\x8e\ +gdd`\x80\x95JL\x8cL\x0c\xff\xff\xffg\xf8\ +O\xc0\x13\x00\x00\x00\x00\xff\xff\x22\xc9\xe1\xff\xffC\x1c\ +}\xe7\xc6\x17\x86\xa3\xfb\xde2T\x84T0\x14\x85g\ +0\xb0\xb3\xb32\xfc\x87T\xe9p\xb5Zb\x16\x0c\xae\ +*\xd1\x0c\xcf??`Xsu\x22\xc3\xe9';\x19\ +\xb8\xd8\xf8\x180\x8bM\x06\x86_?\xff1\xb0\xb0\xb0\ +002\xfde\xf8\xf6\xfb\x0b\x03\x0b\x13\x0b\x03+\x13\ +;^\xc7\x03\x00\x00\x00\xff\xff\x22:;\xfe\xff\xc7\xc0\ +\xc0\xce\xc1\xc4p\xe3\xf2W\x86\x9dk_0\xcc.\x9c\ +\xceP\x19\x97\xcb\xc0\xc2\xca\xc4\xf0\xf7\xdf_\x86\xff\xff\ +\xff\xc1+\x9b?\x7f\x7f3\xfc\xfe\x03)\xd2$y\xe5\ +\x19r-\xfa\x19Bt\xf2\x19\xbe\xfd\xfa\xcc\xc0\x04-\ +\x01\xfe\xffg``ecdx\xf5\xec\x0f\xc3\x92Y\ +\x0f\x18<\xc4K\x18\xba\xbc62\xd4\xd8/f0\x94\ +td\xf8\xf1\xe7\x1b\x5c-6\x00\x00\x00\x00\xff\xff\x8c\ +\xd4!\x0e\xc2@\x10@\xd1?3\xbbu\x0d\x06\x01\x0e\ +S\x82D5X$\xa6\x12\x8d \xe1\x04xn\xc4\x01\ +\xb8\x0ci\x10\x08\x0cI1]\xb6\x83B\x92p\x82\xff\ +\xd4\xff\x0b\xfe\x8d<\xee\x99\xcb\xf9\xcai\x7fd\xbbn\ +\xe8SBE15D\x14\xd3\x80I X\xa4\x08\x05\ +\x0e\x0c\xeed\xcf4\x8b\x03\x9b\xf9\x8e\xae\x7f\xa2b\xb8\ +;\xaa\xc2\xad}\x11\xbd\xa4\xaeV\x8c\xe2\x94j\xbcd\ +R\xcex\x0f\x09\xf8\xfd\xe4\x0f\x00\x00\x00\xff\xff\x22:\ +\xc4\x19\x19\x99\x18\x0e\xee~\xce\xa0\xa9\xac\xcbP\x16\x95\ +\xcb\xc0\xc0\xc0\xc0\xc0\xca\xc2\xc2\xc0\xc8\xc8\xc8\xf0\xff?\ +$\x99\xdcx{\x92\xa1fC:\x83Oe\x04\xc3\xda\ +C[\xa0!\xc6\x08\x0f\xb9\x10\xed<\x06EAm\x86\ +\x9f\x7f\xbe10313\xfc\xff\xc7\xc8\xf0\xf4\xf1\x17\ +\x06m%U\x06\x19Qi\xa8c\x19\x18\xfe\x13Q\x12\ +\x01\x00\x00\x00\xff\xff\x84\xd4+\x0e\xc2@\x14F\xe1\xf3\ +\xdf\xa6L\x05\xeb@\xa0P,\x02\x0dIu\x05\x0e\xc9\ +\x1eX\x09\x8a-\x90`p$x\x12\x14b\x12\x02\x02\ +\x0c\x8f\xb6w\xb0\x18\xc2\x0e\x8e\xf8r\xfe\x86\xa7\x04\x9d\ + \xe2\xe9M<\xde\x99M*B^\xd0\xb4\x0d\x92\xf0\ +\xe4H\xe2p\xdd\xb3\xd8L\x89\xb6\xe5\xd6\xdd1\x9e\x97\ +,\xd7+L\xc2\xdd\xf1\xd4\x92g\x81Q\xaf\xa2\xf6\x1a\ +\x99x=\xc4\xe5\xfcd\xd8\x1f\x00|\xed4\xc3d\x98\ +\x0c\xfd\xe0\xf2\x01\x00\x00\xff\xff\x22\x1c\xe2\xff!e\xf5\ +\x8d+\x1f\x19\x04\x84\xc4\x19\xfc\xad=\x19\x18\x18\x18\x18\ +\x98\xa1-0Xdn\xbe1\x8b\xe1\xdf\xff\xbf\x0c\xec\ +\x0c\x02\x0c\xa6\xe6\x92\x0cr\x9a\x22\x0cU3\xda\x18\xbe\ +\xff\x82\x84.#\xb4\x086\x94t`\x90\xe1Wf`\ +b\xfd\xc5\xf0\xf2\xc5g\x86\xdf/\xdf3X\xe9\x98 \ +,c``\xf8\xf5\xf7;\xc3\xd7\xdf\x9f\x18\xbe\xff\xf9\ +\xca\xf0\xeb/\xf6V1\x00\x00\x00\xff\xff\x22\xe8p&\ +f\x06\x86\x9f\xdf\x19\x18\xee\xdf\xfb\xc8`\xa9c\xc4 \ +%,\x09\x0f\xe5\xff\x0c\xff\x19\x18\x19\x99\x18>\xfcx\ +\xcd\xf0\xe0\xfdU\x06\x0e\x16.\x86?\xff~3\xfc\xfe\ +\xf3\x87ASG\x90\xe1\xe1\xe3\xfb\x0c\x07.\x1c\x85\x84\ +\xe6\xff\x7f\x0c\x7f\xff\xfde`g\xe1d\xe0\xfdd\xc4\ +\xb0b\xfeC\x86d\xd3F\x86\xcd3v0\xb8\x988\ +@\x03\x03R\xc8)\x08j3\x98\xc9\xb83h\x88\x98\ +0H\xf2(`u\x17\x00\x00\x00\xff\xff\xc2[\x1c\xfe\ +\xff\xcf\xc0\xc0\xc2\xc2\xc8\xf0\xfe\xdd_\x86\xef\xef\x7f0\ +X\xe9\x9aB\x1c\xf1\xef\x1f\x03\x133\xa4\xbcedd\ +dx\xf9\xe5!\xc3\x97_\x1f\x19\xd8Y\xb8 \xc9\xe2\ +\xef\x7f\x06a16\x06\x06\xe6\x7f\x0c\xa7\xae\x9dc\xf0\ +4s\x85\xe7\x03\x06\x06\x06\x06MQ3\x86w\x8f\xfa\ +\x19T\xc5\xb4\x194\xe5\xd5\x18\xfe\xfe\xfb\x0bu8$\ +\x16-e\xbd\x19,d<\x19\x18\x19\x99\x18\x9e\x7f\xbe\ +\xcf\xd0\xb0/\x02\xc3m\x00\x00\x00\x00\xff\xff\xc2\x1f\xe2\ +\xff\x19\x18\x98\x98\x19\x19\xde\xbf\xfd\xcd\xc0\xf0\x8f\x99A\ +_E\x8b\x81\x81\x81\x81\x81\x11\xde\x02\x83D\xed\x9bo\ +\xcf\x19\xfe\xfc\xfb\xcd\xc0\xc8\xc0\xc8\xc0\xc8\x08I\xab\x9c\ +\xdcL\x0c\xcc\x5c,\x0c7\x1f\xdf\x83\xebad\x82\xe8\ +\xd3S\xd1d\xe0\xe2\xe3g\xf8\xf3\xf7\x0fn\x8b\x09T\ +@\x00\x00\x00\x00\xff\xff\x22\x98T\x18\x19\x19\x18>\xbc\ +\xff\xc5\xc0\xc4\xce\xc9\xa0 !\x07\x11\x83\x86\x1c\xcc\xe8\ +O?\xdeB\x9a\xa1P\xfe\xbf\x7f\x0c\x0c\xac\xac\x0c\x0c\ +\xdc\xdc\xac\x0c\xcf\xdf\xbc\x84X\xc4\xc8\x04\xd7'%,\ +\xc1\xa0\xa9&\xc5p\xf1\xfe%\x86\xa7\xaf\x9f\xc3C\x1a\ +\x06\xfe\xfc\xfd\xcb\xf0\xfb\xcf?\x14\xbb\xd0\x01\x00\x00\x00\ +\xff\xff\x22\x5cs\xfeg`\xf8\xfc\xe97\x03/\x177\ +\x83(\xbf0\xd43\xd0N\x15T\xc9\xb7\xdf\x9fQ<\ +\xc2\xc0\x00\xc9\x1b\x1c\x1c,\x0c\xef?\x7f\x82\xeb\xf9\x0f\ +\x0dINvN\x86\x88(-\x86\xd4\xced\x06\x13i\ +\x17\x86\xc3S72\xfc\xff\xff\x9f\xe1\x1f\xc3?\x06f\ +Ff\x86\xed7\x172\xec\xba\xbd\x82A\x84[\x92\x01\ +\xa9\xef\x80\x02\x00\x00\x00\x00\xff\xff|\x95M\x0a\x80 \ +\x18D\x9f\xf9C\x88P\xf7\xbf['\x886-41\ +\xfdZ\xb8\x11\x8a\xf6\x03\xf3\x86\x19\x98\x7fp\xd5w\x9e\ +b!\xf8\x85\xe0\xc3\xa7,\xdf\x91\xf1,DzS\xce\ +i\xe2\x95(\xb5`\xb5\x05\x81\x860)\x85\xb7+\xd6\ +\x18\x8c\x1e\x11z\xf4\xd4N\xf6\xbc\x91\xe4\xa0\xb6\x8a\xd3\ +\xf3\xcb\xf3\x01\x00\x00\xff\xff\x84\x97\xc1\x0a\x800\x0cC\ +_\xb7\xae\x9b\xc5\xff\xffW\xad\x16\x0f\x9ed\x03\xef!\ +y\x10\x08\xe4\x7f\xc7\x81\x88d\xb3AW[j\x22c\ +:\x1e\x22\xa0Z8\xe2\xe4\xbac\x82\xf3\xb6\x93\x99|\ +{zM\x8aT\x9a\x0c\xac:]}\x99\xf9\x00\x00\x00\ +\xff\xff\x22\xaa\x1c\xff\xfb\xf7?\x03\x0b33\x03\x13\x13\ +\x13\xb2\xf9p\x00i\xf5\xa1\xbb\x1c\x92\xb1\xff\xfe\xfb\x0b\ +u *`eb\x83&\x1dli\x18\xd2:\xfc\xff\ +\xff\x1f\xceZ\x14\x00\x00\x00\xff\xff\x22\xb2\xad\x02)\xf6\ +\x18q\xf6\xe7\xb0\x97\x00\x8cP)l\xb2L\x8c\xc4\x0d\ +!\xe0\x02\x00\x00\x00\x00\xff\xff\x22\xca\xe1LL\x8c\x0c\ +\x7f\xff\xfdc\xf8\x87\xa5I\xca\xc0\xc0\x80\xbdZ\x86:\ +\x98\x91\x11{\xb9@i\xcf\x08\x00\x00\x00\xff\xff\x22\xaa\ +8da\x85\xa4\xd5\xdf\x7f~\xc3\x1d\x85\x0cX\x18Y\ +\xb1\xb6\x9d\xff\xfd\xfd\xcf\xc0\xcc\xc4\xc4\xc0\x84e\x80\xe6\ +\xf7\xbf\x9f\xd0\xa2\x8e\xbc\x918\x00\x00\x00\x00\xff\xff\x22\ +\x1c\xe2\x8c\x0c\x0c\xec\xec,\x0c\xdf~|g\xf8\xf1\x0b\ +{\xbb\x81\x95\x99\x1d\xc3\xfe\xff\x0c\x0c\x0c\x7f\xfe\xfec\ +`eee`aFv8$\xfc\x7f\xfc\xf9\x06-\ +\x22\xc9\x03\x00\x00\x00\x00\xff\xff\x22Xs2220\ +psC\xfa\x96\x1f\xbf~\x82\x0a\xff\x87;\x8e\x81\x81\ +\x81\x81\x93\x95\x9b\x012\xa8\x89p\xda\xff\x7f\x0c\x0c\xbf\ +\x7f\xfde\xe0d\xe7\x80\x14\x85P\x09X>\xf9\xfa\xeb\ +#$\x89\x91\xe9r\x00\x00\x00\x00\xff\xff\x22*\x8d\xf3\ +\xf2\xb12|\xff\xf1\x8d\xe1\xe5\xfb\xd7\x10\x07\xffG8\ +\x90\x81\x81\x81\x81\x87M\x80\x81\x81\x01)\xf4\x18!\x0e\ +\xff\xf9\xf3/\x03\x1f\x17/D\x0e\xaa\x89\x91\x81\x91\xe1\ +\xcf\xbf\xdf\x0c\x9f~\xbec`fd!\xd8\xb7\xc4\x05\ +\x00\x00\x00\x00\xff\xff\xc2\xefp\xa8\x03\xf8\x05\xd9\x18\x18\ +\xfe\xfcd\xb8\xf7\xec!\xd4\xe1\xa8\x96\x09p\x88\xa2t\ +\xb3\x18\x19\x19\x18\xfe\xfc\x81T\x5cb\x82B\x0c\x0c\x0c\ +\x90\x9e\x10\xcc\x8d\x9f~\xbe\x838\x9c\x89\x85\x81\xdc \ +\x07\x00\x00\x00\xff\xff\x22\x18\xe2\x7f\xff\xfdg\xe0\x17d\ +a``a`\xb8x\xe7*\x9a\xbf a.\xc2%\ +\xc5\xc0\xc6\xc2\x09))\xa0\xed\xf7\x9f?\xfe3\xfc\xfc\ +\xf6\x87A^B\x06\xeeYX\xe8\xbe\xfc\xf2\x88\xe1\xeb\ +\xaf\x8f\x0c\xcc\x8c\xccd\xa7q\x00\x00\x00\x00\xff\xff\xc2\ +\xebpFF\x06\x86\xbf\x7f\xfe3\xf0\xf011\xf0\x0a\ +s2\x9c\xbcz\x8e\x81\x81\x81\x81\x81\x19^\x11A\x1c\ +.\xca-\xc3 \xc0.\xc2\xf0\x17\xdaOdbf`\ +\xf8\xfc\xe1\x0f\x03\xc3\xaf\xff\x0c\xba\xca\x9aP\xd3\x10-\ +\xbe{\xef.3\xfc\xfe\xfb\x0b\x9a\xc6\x91\x9d\x8eHN\ +L\x8cL\x0c\xac,,\x0c\xcc\xcc\xd8\xcb{\x00\x00\x00\ +\x00\xff\xff\x22\x5c\xe5\xffc``eg`PP\xe2\ +g8{\xe32\xc3\xa3W\x8f\xa1]6H\xfb\xfa\xdf\ +\xff\x7f\x0c\x9c\xac<\x0cJB:\x0c\xbf\xfe\xfdd`\ +d`b`bbdx\xfa\xe8;\x03+'/\x83\ +\x8d\xae\x05\xc4\x22\xa4n\xd8\xb5W'\x18X\xa0\xc9\x04\ +\xa5<\x87\xfa\x81\x87M\x90\xe1\xeb\xef\x8f\x0c/\xdf\xbd\ +ax\xf7\xf1#\xd6\x16\x22\x00\x00\x00\xff\xff\x22\xaa8\ +\xfc\xf7\xf7?\x83\x9a\x06/\xc3\xe7\x8fo\x186\x1f\xdb\ +\xc9\xc0\xc0\xc0\x80Q\x8d\xdb+\x860\xfc\xfb\xfb\x97\x81\ +\x99\xed\x1f\xc3\xcfoL\x0c\xa7\x8e>`\x08u\xf2f\ +P\x93Qa\xf8\xf7\xef\x1f\x03##$$\x9f|\xba\ +\xc3p\xfb\xedE\x06\x0eV.\x06V6&\x86\xcf\xdf\ +\xbe000@jfXmj%\xef\xc5`-\x92\ +\xc0\xa0\xfc'\x80!Uw\x02\x83(\x8f4$\x86\x90\ +<\x00\x00\x00\x00\xff\xff\x22\xaa\x02\xfa\xfd\xeb?\x83\x84\ +\x0c\x1b\x83\x84\x12\x1f\xc3\xf4\xf5\x8b\x18~\xfd\xf9\xc5\xc0\ +\xc2\xcc\xcc\xf0\x9f\xe1?|\xe4I[\xcc\x82!L/\ +\x9f\xe1\xd3\xa7\xef\x0c[\xd6=d\xb0\xd5sa\x98\x98\ +\xd7\x0a5\x83\x91\xe1\x1f\x03\xc4\xa3\xfb\xef\xadb\xf8\xfa\ +\xeb\x13\x03\x0b\x0b3\x83\x98\x18'\xc3\xc3\x17O\x19\x9e\ +\xbf{\x01\x0dpH\x90\xf3\xb2\x093\x14\xb9\xb60\xb4\ +%\xb418\xe9:3\xc0\x87\xe7\x90\x9a\x1c\x00\x00\x00\ +\x00\xff\xff\x22\xae\xad\xc2\xc0\xc0\xf0\x9f\xf1\x1f\x83\xad\x93\ +\x04\xc3\xd5[\x17\x19\xa6\xac\x9b\xcd\xc0\xc0\xc0\xc0\xf0\xfb\ +\xcf\x1f\xb8\xc3\xfe\xff\xff\xcf\xe0\xa7\x91\xc1Pg\xb7\x86\ +aM\xf9F\x86\xbd\x13\xd70\x88\xf0\x8b@\xc6V\x18\ +\xfe203\xb20\xdc{w\x99\xe1\xd0\x83\xf5\x0c\xdc\ +l|\x0c\xbf~\xfdfP\xd7\xe1g\xf8\xf8\xf1\x15\xc3\ +\xca=\x9b \xf6\xfc\x83\xe5\x03\xb4!8,9\x18\x00\ +\x00\x00\xff\xff\x22j\x08\x8e\x91\x91\x81\xe1\xf7\xcf\xff\x0c\ +\x122,\x0c\xd6\xee2\x0c\x95S\xdb\x18L5\x8d\x18\ +lu-\x19~\xff\xf9\xcd\xc0\xc4\xc4\xc4\xc0\xcc\xc4\xc4\ +\xf0\xff\xff?\x06U)U\x06U)H)\x02I\xbf\ +\xff\x19\x98\x19Y\x18>\xfd|\xc70\xe7l-\xc3\xdf\ +\x7f\xbf\x19\xd8Y8\x19~\xff\xfe\xc7 $\xc6\xcc\xe0\ +\x1a(\xcb\xd0\xb1\xaa\x9bA\x5cX\x94!\xc4\xde\x9f\x81\ +\x99\x81\x91\xe1\xff\xff\x7f\x0c\x9f\x7f}`x\xf8\xe1:\ +\xc3\xa9';\x19\xde|{\xc6\xc0\xca\xcc\x86\xd2R\x04\ +\x00\x00\x00\xff\xffb\xe4\xf1\x90\xfb\xcf\xc8\xc8\xc0\xf0\xeb\ +\xe7\x7f\x06YEv\x06\xb7@\xdc\x03\xfb\xff\xff30\ +pp03\x9c:\xf2\x96\xe1\xe6\xf9\xbf\x0cKkf\ +3xY:B\xcauh\x1a\xfe\xf7\xff\x1f\xc3\xff\xff\ +\x90\x92\x076\x9e\xf8\xe4\xe3m\x86\xe9\xa7\xca\x18\x9e~\ +\xba\xcb\xc0\xc9\xca\x03\x1f\xfc\xfc\xff\x9f\x81\x81\x9d\x9d\x89\ +\xe1\xcb\x97_\x0c/_~eP\x93Qf\x10\x17\x12\ +c\xf8\xf1\xe7\x1b\xc3\xfb\xef/\x19>\xfex\x03\xcf\xfc\ +\xe8\x19\x14\x00\x00\x00\xff\xff\x22\xc9\xe10\xcb89Y\ +\x18\x1e\xde\xff\xccp\xf1\xf4G\x06o\xfdP\x86d\xcf\ +x\x06\x1d%M\x06Vho\x06\xe6\xe0o\xbf?3\ +\xac\xbd:\x99\xe1\xf0\x83\x0d\x0c\x7f\xfe\xfd\x82\x8c\x02\xa0\ +\x8d\xd8\xc2\x86\xacYX\x98\x18~\xfc\xfa\xc1\xf0\xfb\xcf\ +\x1f\xc8\x8c\x03\x13+\xb4\xe4a\xc4:\xca\x0b\x00\x00\x00\ +\xff\xff\x22y\x0e\x82\x91\x91\x81\xe1\xfb\xb7?\x0c2r\ +\xdc\x0c~\xe1\xd2\x0cw\x1971\x18%X1\xb4.\ +\xeec````\xf8\xfb\x17a\xc9\x9f\x7f\xbf\x18\x0e\ +\xde_\xcb\xc0\xc0\xc0\xc0\xc0\xc5\xca\x8b\xd5\x01\x8cL\x90\ +Q\x81\x9f?\xff203\xb01p\xb0r3\xb0\xb3\ +p203B'\x0b\xb0\x0fM\xff\x07\x00\x00\x00\xff\ +\xff\x22k\xf2\x84\x91\x89\x81\xe1\xd7\xaf\x7f\x0c?\xbe\xfd\ +ePS\x15g\x10\x94\xe0e\xd8zl\x0f\x03\x03\x03\ +\x03\x03\x1333<\xc9\xf0\xb1\x0b3\xb8\xa9\xc60|\ +\xf8\xf1\x8a\xe1\xe3\xcf\xb7\xd04\x8f=*\x19\x19\x19P\ +z=x\xdb0\xff\x19\xfe\x00\x00\x00\x00\xff\xff\x22k\ +F\x02n\xd1?\x06\x86\xff\x8c\x7f\x18\xd45\x04\x19\xce\ +\x1c\xbd\xcap\xe9\xde\x15\x06=%\x1d\xc8\x80\x11\xb4v\ +\x0d\xd4\xcaf\x90\xe1Sex\xf1\xe9\x11\xc3\xb1'\x9b\ +\x19>\xfcx\x85\xb3\xfdN\x84\xad\xff\xff\xfd\xff\xc3\xc8\ +\xcf.\xfa\x0c\x00\x00\x00\xff\xff\xa2l\xba\x8a\x91\x81\xe1\ +\xf7\xef\xff\x0c\xea\xba\xbc\x0c\x7f\xfe\x7fc\x98\xb1q!\ +\x03\x03\x03\x03\xc3\x9f\xbf\x7f\xe0\x0d1\x16FV\x06+\ +9\x1f\x86 \x9d,\x06^6\x01\x86\xbf\xff\xfe0\xe0\ +\xcc@\x04\x00\x13#\xe3\xbf\xdf\x7f\x7f2\xa8\x0a\x1b\xed\ +\x07\x00\x00\x00\xff\xff\xa2\xc8\xe1\x8c\x8c\x0c\x0c\x7f\x7f\xff\ +g\xe0\x15`dpt\x97e\x98\xb9v1\xc3\xf6\x13\ +{\x19\xd8X\xd9\xe0\x0e\xff\xcf\xf0\x9f\x88\xf9\x1f\xa2\xc0\ +\xff\xff\x0c\xff\x99\x98\x99\xd8~;(\x06\xcf\x02\x00\x00\ +\x00\xff\xff\xa2x\x82\x90\x91\x89\x81\xe1\xe7\x8f\x7f\x0c\xda\ +\x86<\x0c\xf6>\xc2\x0ci\x932\x19fl\x9a\xcf\xf0\ +\xe1\xf3g\x86\xff\xff\x11m\x94o\xbf?3\xfc\xf9\xff\ +\x1b\xe7\xc8\x14\x0e\xd3\xff322\xfdcbd\xfe\xc3\ +\xc2\xc4\xfa\xfb\xfd\xf7W\x8c\x0e\x0a\xa1S\xd4E\x8d\x8e\ +\x03\x00\x00\x00\xff\xff\x22\xb98\xc4\x05`e\xfc\xb7\xef\ +\xbf\x19\x9e<\xfd\xc0 ) \xc5\xa0()\xc7\xc0\xce\ +\xc6\xce\xf0\xfd\xf7g\x86\x8f?\xdeAG\xbc0\xd36\ +db\x16\xba\x82\x02\xba\xd8\xe0?\xc3?\xe6\x7f\xff \ +\x0b\x1c\xfe\xfe\xfb\xfd\xef\xf7\xdf_L\xb6\xf2A+R\ +M[bX\x98X\xfe\x02\x00\x00\x00\xff\xff\x22;s\ +bX\xce\xc8\xc0\xf0\xe3\xfb_\x06\x16ff\x065\x15\ +1\x86_\xbf\xbf1\xdc\xffx\x09>\xb5\x0d\x9df\xf9\ +\x0fY\x09\xc1\x04o\xe3\xfeg\xf8\xc7\xfc\xf7\xdf_\xc6\ +\xbf\xff~3\xfe\xfd\xf7\x87\xe1\xef\xbf\xbf\x0c\x8c\x0c\x90\ +~,\x17+\xdf\x17qN\xb1\xc7\xa2\x5c2\xb7\xcdd\ +\xdc\x97\x9a\xcbz\xac\x82\x0c\xb4\xffg\x04\x00\x00\x00\xff\ +\xffb\x81\xacz\xf8O\x95\x09pH\xf3\xfa?\xc3\xcf\ +\x1f\x7f\xfe32\xb2\xfc\xe7de\x83/\xd7\xf8\xf7\xff\ +/\xf3\xdf\x7f\x7f\x18\x7f\xff\xfb\xcd\xf8\xe7\xdf\x1f\x86\x7f\ +\xff k^\xd8 \x0e\xfc*\xc0!\xffX\x94[\xe6\ +\xb6$\xaf\xc2uI^\xc5\xab\x92\xbc\x0a7E\xb8\xa4\ +\x1e\xf0q\x08\xbdfbd\xfe\xc7\xc0\xc0\xc0\xf0\xff\xff\ +?&\x06h\xac\x00\x00\x00\x00\xff\xffb\xf9\xf3\xe7\x0f\ +\x03\x1b\x1b\xdb?\x06\x86\xdfL$%?\x88S\xff3\ +22\xa0\x85\xe0\x7f\xe6\x7f\xff\xff0\xfe\xfe\xfb\x8b\xf1\ +\xef\x9f\xdf\xf0\x10dafg\xe0f\xe5\xfb*\xc6!\ +\xffX\x94[\xfa\x0e\xc4\x81JW%x\x14n\x8ar\ +K\xddGv :\x80,\xc8\xf9\xcf\xc0\xc4\xc8\x0c\xcf\ +\xe5\x00\x00\x00\x00\xff\xffb\x11\x13\x10~\xf2\xf4\xeds\ +Yvf\xee\xbf\xff\xff30cw<\xe3\x7f\xa4\xc5\ +.(i\x10\x11\x82\x103Ya\x0e\xe4\x16}\x22\xca\ +-s[\x82W\xe1\xba\x14\xaf\xe25\x09\x1e\x85\x9b\x22\ +\xdc\xd2\xf7\xf99\x84^\xe1r\xe0\xff\xff\xff\x98\xff\xc3\ +c\x1f\xba\x18\x81\x91\xf1?\x13\x96![\x00\x00\x00\x00\ +\xff\xffb\xd9\xd3\xbf\xc1.\xa4.n\xd3\xc5+\x97t\ +Y\x98\xa5\xfeB\x06S\x99\xfe31\x22V\x01\xfd\xfd\ +\xff\x87\xf1\xcf_\xc8\x0a\x86\xbf\xff\xa1!\xc8\xc4\xce\xc0\ +\xcd\xc6\xf7]\x94C\x0e\x12\x82<\x8a\xd7$y\x15\xaf\ +I\xf0\xca\xdf\x10\xe5\x96\xb9\xcf\xcf.\xf4\x8a\x89\x09\xb7\ +\x03\xffA\x17\xcc@\x03\x05\xb2\x04\x84\x91\xe9/\xb1\x91\ +\x0e\x00\x00\x00\xff\xffb\xfc\xff\xff?\xc3\xeb\x8fo\x84\ +\xbdJ\xa27?\xfev\xd928F\xee\xdf\xd7o\xdf\ +\x99\xfe3@\x062Y\x99\xd8\x18\xb8Xy?\x09p\ +\x88=\x11\xe1\x96\xbe#\xc1\xa3pC\x92W\xe1\x9a8\ +\x8f\xfcMQn\xa9\x07\xfc\xec\xc2x\x1d\x88-\x04\x89\ +t\x1b^\x00\x00\x00\x00\xff\xffb\xfc\xf3\xf7\x0f33\ +\x13\xf3\xdfW\xef\xde\xf3f\xcfN\xde.\xa1\xfdVO\ +\x96O\xfd\xac\x04\xaf\xc2ui>\x95KR\xbc\x8a\xd7\ +\xc4\xb8e\xef\x08p\x8a\xbedfb\xc6\xde\xe2\xf9\xff\ +\x8f\xf9\x1f\xc3?h\xc3\x96\x11i\xa9\x13\xd9\x9dx\x82\ +\x00\x00\x00\x00\xff\xff\x03\x00<\x1e\x17\xa6\x18\xe4\xa8\x9e\ +\x00\x00\x00\x00IEND\xaeB`\x82\ +" + +qt_resource_name = b"\ +\x00\x06\ +\x07\x03}\xc3\ +\x00i\ +\x00m\x00a\x00g\x00e\x00s\ +\x00\x0b\ +\x05R\xbf'\ +\x00q\ +\x00t\x00-\x00l\x00o\x00g\x00o\x00.\x00p\x00n\x00g\ +" + +qt_resource_struct = b"\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x01~*kP\x18\ +" + +def qInitResources(): + QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +def qCleanupResources(): + QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +qInitResources() diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/easing/form.ui b/venv/Lib/site-packages/PySide2/examples/widgets/animation/easing/form.ui new file mode 100644 index 0000000..61a7921 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/animation/easing/form.ui @@ -0,0 +1,205 @@ + + + Form + + + + 0 + 0 + 545 + 471 + + + + Easing curves + + + + + + + 0 + 0 + + + + + 16777215 + 120 + + + + Qt::ScrollBarAlwaysOff + + + QListView::Static + + + false + + + QListView::IconMode + + + false + + + + + + + + + Path type + + + + + + Line + + + true + + + buttonGroup + + + + + + + Circle + + + buttonGroup + + + + + + + + + + + 0 + 0 + + + + Properties + + + + QFormLayout::AllNonFixedFieldsGrow + + + + + Period + + + + + + + false + + + -1.000000000000000 + + + 0.100000000000000 + + + -1.000000000000000 + + + + + + + Amplitude + + + + + + + false + + + -1.000000000000000 + + + 0.100000000000000 + + + -1.000000000000000 + + + + + + + Overshoot + + + + + + + false + + + -1.000000000000000 + + + 0.100000000000000 + + + -1.000000000000000 + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + 0 + 0 + + + + + + + + + + + + false + + + + diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/easing/images/qt-logo.png b/venv/Lib/site-packages/PySide2/examples/widgets/animation/easing/images/qt-logo.png new file mode 100644 index 0000000..14ddf2a Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/animation/easing/images/qt-logo.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/easing/ui_form.py b/venv/Lib/site-packages/PySide2/examples/widgets/animation/easing/ui_form.py new file mode 100644 index 0000000..c2279c5 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/animation/easing/ui_form.py @@ -0,0 +1,152 @@ +# -*- coding: utf-8 -*- + +################################################################################ +## Form generated from reading UI file 'form.ui' +## +## Created by: Qt User Interface Compiler version 5.14.0 +## +## WARNING! All changes made in this file will be lost when recompiling UI file! +################################################################################ + +from PySide2.QtCore import (QCoreApplication, QMetaObject, QObject, QPoint, + QRect, QSize, QUrl, Qt) +from PySide2.QtGui import (QColor, QFont, QIcon, QPixmap) +from PySide2.QtWidgets import * + +class Ui_Form(object): + def setupUi(self, Form): + if Form.objectName(): + Form.setObjectName(u"Form") + Form.resize(545, 471) + self.gridLayout = QGridLayout(Form) + self.gridLayout.setObjectName(u"gridLayout") + self.easingCurvePicker = QListWidget(Form) + self.easingCurvePicker.setObjectName(u"easingCurvePicker") + sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.easingCurvePicker.sizePolicy().hasHeightForWidth()) + self.easingCurvePicker.setSizePolicy(sizePolicy) + self.easingCurvePicker.setMaximumSize(QSize(16777215, 120)) + self.easingCurvePicker.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) + self.easingCurvePicker.setMovement(QListView.Static) + self.easingCurvePicker.setProperty("isWrapping", False) + self.easingCurvePicker.setViewMode(QListView.IconMode) + self.easingCurvePicker.setSelectionRectVisible(False) + + self.gridLayout.addWidget(self.easingCurvePicker, 0, 0, 1, 2) + + self.verticalLayout = QVBoxLayout() + self.verticalLayout.setObjectName(u"verticalLayout") + self.groupBox_2 = QGroupBox(Form) + self.groupBox_2.setObjectName(u"groupBox_2") + self.verticalLayout_2 = QVBoxLayout(self.groupBox_2) + self.verticalLayout_2.setObjectName(u"verticalLayout_2") + self.lineRadio = QRadioButton(self.groupBox_2) + self.buttonGroup = QButtonGroup(Form) + self.buttonGroup.setObjectName(u"buttonGroup") + self.buttonGroup.setExclusive(False) + self.buttonGroup.addButton(self.lineRadio) + self.lineRadio.setObjectName(u"lineRadio") + self.lineRadio.setChecked(True) + + self.verticalLayout_2.addWidget(self.lineRadio) + + self.circleRadio = QRadioButton(self.groupBox_2) + self.buttonGroup.addButton(self.circleRadio) + self.circleRadio.setObjectName(u"circleRadio") + + self.verticalLayout_2.addWidget(self.circleRadio) + + + self.verticalLayout.addWidget(self.groupBox_2) + + self.groupBox = QGroupBox(Form) + self.groupBox.setObjectName(u"groupBox") + sizePolicy1 = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Preferred) + sizePolicy1.setHorizontalStretch(0) + sizePolicy1.setVerticalStretch(0) + sizePolicy1.setHeightForWidth(self.groupBox.sizePolicy().hasHeightForWidth()) + self.groupBox.setSizePolicy(sizePolicy1) + self.formLayout = QFormLayout(self.groupBox) + self.formLayout.setObjectName(u"formLayout") + self.formLayout.setFieldGrowthPolicy(QFormLayout.AllNonFixedFieldsGrow) + self.label = QLabel(self.groupBox) + self.label.setObjectName(u"label") + + self.formLayout.setWidget(0, QFormLayout.LabelRole, self.label) + + self.periodSpinBox = QDoubleSpinBox(self.groupBox) + self.periodSpinBox.setObjectName(u"periodSpinBox") + self.periodSpinBox.setEnabled(False) + self.periodSpinBox.setMinimum(-1.000000000000000) + self.periodSpinBox.setSingleStep(0.100000000000000) + self.periodSpinBox.setValue(-1.000000000000000) + + self.formLayout.setWidget(0, QFormLayout.FieldRole, self.periodSpinBox) + + self.label_2 = QLabel(self.groupBox) + self.label_2.setObjectName(u"label_2") + + self.formLayout.setWidget(1, QFormLayout.LabelRole, self.label_2) + + self.amplitudeSpinBox = QDoubleSpinBox(self.groupBox) + self.amplitudeSpinBox.setObjectName(u"amplitudeSpinBox") + self.amplitudeSpinBox.setEnabled(False) + self.amplitudeSpinBox.setMinimum(-1.000000000000000) + self.amplitudeSpinBox.setSingleStep(0.100000000000000) + self.amplitudeSpinBox.setValue(-1.000000000000000) + + self.formLayout.setWidget(1, QFormLayout.FieldRole, self.amplitudeSpinBox) + + self.label_3 = QLabel(self.groupBox) + self.label_3.setObjectName(u"label_3") + + self.formLayout.setWidget(2, QFormLayout.LabelRole, self.label_3) + + self.overshootSpinBox = QDoubleSpinBox(self.groupBox) + self.overshootSpinBox.setObjectName(u"overshootSpinBox") + self.overshootSpinBox.setEnabled(False) + self.overshootSpinBox.setMinimum(-1.000000000000000) + self.overshootSpinBox.setSingleStep(0.100000000000000) + self.overshootSpinBox.setValue(-1.000000000000000) + + self.formLayout.setWidget(2, QFormLayout.FieldRole, self.overshootSpinBox) + + + self.verticalLayout.addWidget(self.groupBox) + + self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding) + + self.verticalLayout.addItem(self.verticalSpacer) + + + self.gridLayout.addLayout(self.verticalLayout, 1, 0, 1, 1) + + self.graphicsView = QGraphicsView(Form) + self.graphicsView.setObjectName(u"graphicsView") + sizePolicy2 = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) + sizePolicy2.setHorizontalStretch(0) + sizePolicy2.setVerticalStretch(0) + sizePolicy2.setHeightForWidth(self.graphicsView.sizePolicy().hasHeightForWidth()) + self.graphicsView.setSizePolicy(sizePolicy2) + + self.gridLayout.addWidget(self.graphicsView, 1, 1, 1, 1) + + + self.retranslateUi(Form) + + QMetaObject.connectSlotsByName(Form) + # setupUi + + def retranslateUi(self, Form): + Form.setWindowTitle(QCoreApplication.translate("Form", u"Easing curves", None)) + self.groupBox_2.setTitle(QCoreApplication.translate("Form", u"Path type", None)) + self.lineRadio.setText(QCoreApplication.translate("Form", u"Line", None)) + self.circleRadio.setText(QCoreApplication.translate("Form", u"Circle", None)) + self.groupBox.setTitle(QCoreApplication.translate("Form", u"Properties", None)) + self.label.setText(QCoreApplication.translate("Form", u"Period", None)) + self.label_2.setText(QCoreApplication.translate("Form", u"Amplitude", None)) + self.label_3.setText(QCoreApplication.translate("Form", u"Overshoot", None)) + # retranslateUi + diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/states/__pycache__/states.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/animation/states/__pycache__/states.cpython-310.pyc new file mode 100644 index 0000000..99d4794 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/animation/states/__pycache__/states.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/states/__pycache__/states_rc.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/animation/states/__pycache__/states_rc.cpython-310.pyc new file mode 100644 index 0000000..c066b11 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/animation/states/__pycache__/states_rc.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/states/states.py b/venv/Lib/site-packages/PySide2/examples/widgets/animation/states/states.py new file mode 100644 index 0000000..1a85924 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/animation/states/states.py @@ -0,0 +1,264 @@ + +############################################################################# +## +## Copyright (C) 2010 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2 import QtCore, QtGui, QtWidgets + +import states_rc + + +class Pixmap(QtWidgets.QGraphicsObject): + def __init__(self, pix): + super(Pixmap, self).__init__() + + self.p = QtGui.QPixmap(pix) + + def paint(self, painter, option, widget): + painter.drawPixmap(QtCore.QPointF(), self.p) + + def boundingRect(self): + return QtCore.QRectF(QtCore.QPointF(0, 0), QtCore.QSizeF(self.p.size())) + + +if __name__ == '__main__': + + import sys + + app = QtWidgets.QApplication(sys.argv) + + # Text edit and button. + edit = QtWidgets.QTextEdit() + edit.setText("asdf lkjha yuoiqwe asd iuaysd u iasyd uiy " + "asdf lkjha yuoiqwe asd iuaysd u iasyd uiy " + "asdf lkjha yuoiqwe asd iuaysd u iasyd uiy " + "asdf lkjha yuoiqwe asd iuaysd u iasyd uiy!") + + button = QtWidgets.QPushButton() + buttonProxy = QtWidgets.QGraphicsProxyWidget() + buttonProxy.setWidget(button) + editProxy = QtWidgets.QGraphicsProxyWidget() + editProxy.setWidget(edit) + + box = QtWidgets.QGroupBox() + box.setFlat(True) + box.setTitle("Options") + + layout2 = QtWidgets.QVBoxLayout() + box.setLayout(layout2) + layout2.addWidget(QtWidgets.QRadioButton("Herring")) + layout2.addWidget(QtWidgets.QRadioButton("Blue Parrot")) + layout2.addWidget(QtWidgets.QRadioButton("Petunias")) + layout2.addStretch() + + boxProxy = QtWidgets.QGraphicsProxyWidget() + boxProxy.setWidget(box) + + # Parent widget. + widget = QtWidgets.QGraphicsWidget() + layout = QtWidgets.QGraphicsLinearLayout(QtCore.Qt.Vertical, widget) + layout.addItem(editProxy) + layout.addItem(buttonProxy) + widget.setLayout(layout) + + p1 = Pixmap(QtGui.QPixmap(':/digikam.png')) + p2 = Pixmap(QtGui.QPixmap(':/akregator.png')) + p3 = Pixmap(QtGui.QPixmap(':/accessories-dictionary.png')) + p4 = Pixmap(QtGui.QPixmap(':/k3b.png')) + p5 = Pixmap(QtGui.QPixmap(':/help-browser.png')) + p6 = Pixmap(QtGui.QPixmap(':/kchart.png')) + + scene = QtWidgets.QGraphicsScene(0, 0, 400, 300) + scene.setBackgroundBrush(scene.palette().window()) + scene.addItem(widget) + scene.addItem(boxProxy) + scene.addItem(p1) + scene.addItem(p2) + scene.addItem(p3) + scene.addItem(p4) + scene.addItem(p5) + scene.addItem(p6) + + machine = QtCore.QStateMachine() + state1 = QtCore.QState(machine) + state2 = QtCore.QState(machine) + state3 = QtCore.QState(machine) + machine.setInitialState(state1) + + # State 1. + state1.assignProperty(button, 'text', "Switch to state 2") + state1.assignProperty(widget, 'geometry', QtCore.QRectF(0, 0, 400, 150)) + state1.assignProperty(box, 'geometry', QtCore.QRect(-200, 150, 200, 150)) + state1.assignProperty(p1, 'pos', QtCore.QPointF(68, 185)) + state1.assignProperty(p2, 'pos', QtCore.QPointF(168, 185)) + state1.assignProperty(p3, 'pos', QtCore.QPointF(268, 185)) + state1.assignProperty(p4, 'pos', QtCore.QPointF(68 - 150, 48 - 150)) + state1.assignProperty(p5, 'pos', QtCore.QPointF(168, 48 - 150)) + state1.assignProperty(p6, 'pos', QtCore.QPointF(268 + 150, 48 - 150)) + state1.assignProperty(p1, 'rotation', 0.0) + state1.assignProperty(p2, 'rotation', 0.0) + state1.assignProperty(p3, 'rotation', 0.0) + state1.assignProperty(p4, 'rotation', -270.0) + state1.assignProperty(p5, 'rotation', -90.0) + state1.assignProperty(p6, 'rotation', 270.0) + state1.assignProperty(boxProxy, 'opacity', 0.0) + state1.assignProperty(p1, 'opacity', 1.0) + state1.assignProperty(p2, 'opacity', 1.0) + state1.assignProperty(p3, 'opacity', 1.0) + state1.assignProperty(p4, 'opacity', 0.0) + state1.assignProperty(p5, 'opacity', 0.0) + state1.assignProperty(p6, 'opacity', 0.0) + + # State 2. + state2.assignProperty(button, 'text', "Switch to state 3") + state2.assignProperty(widget, 'geometry', QtCore.QRectF(200, 150, 200, 150)) + state2.assignProperty(box, 'geometry', QtCore.QRect(9, 150, 190, 150)) + state2.assignProperty(p1, 'pos', QtCore.QPointF(68 - 150, 185 + 150)) + state2.assignProperty(p2, 'pos', QtCore.QPointF(168, 185 + 150)) + state2.assignProperty(p3, 'pos', QtCore.QPointF(268 + 150, 185 + 150)) + state2.assignProperty(p4, 'pos', QtCore.QPointF(64, 48)) + state2.assignProperty(p5, 'pos', QtCore.QPointF(168, 48)) + state2.assignProperty(p6, 'pos', QtCore.QPointF(268, 48)) + state2.assignProperty(p1, 'rotation', -270.0) + state2.assignProperty(p2, 'rotation', 90.0) + state2.assignProperty(p3, 'rotation', 270.0) + state2.assignProperty(p4, 'rotation', 0.0) + state2.assignProperty(p5, 'rotation', 0.0) + state2.assignProperty(p6, 'rotation', 0.0) + state2.assignProperty(boxProxy, 'opacity', 1.0) + state2.assignProperty(p1, 'opacity', 0.0) + state2.assignProperty(p2, 'opacity', 0.0) + state2.assignProperty(p3, 'opacity', 0.0) + state2.assignProperty(p4, 'opacity', 1.0) + state2.assignProperty(p5, 'opacity', 1.0) + state2.assignProperty(p6, 'opacity', 1.0) + + # State 3. + state3.assignProperty(button, 'text', "Switch to state 1") + state3.assignProperty(p1, 'pos', QtCore.QPointF(0, 5)) + state3.assignProperty(p2, 'pos', QtCore.QPointF(0, 5 + 64 + 5)) + state3.assignProperty(p3, 'pos', QtCore.QPointF(5, 5 + (64 + 5) + 64)) + state3.assignProperty(p4, 'pos', QtCore.QPointF(5 + 64 + 5, 5)) + state3.assignProperty(p5, 'pos', QtCore.QPointF(5 + 64 + 5, 5 + 64 + 5)) + state3.assignProperty(p6, 'pos', QtCore.QPointF(5 + 64 + 5, 5 + (64 + 5) + 64)) + state3.assignProperty(widget, 'geometry', QtCore.QRectF(138, 5, 400 - 138, 200)) + state3.assignProperty(box, 'geometry', QtCore.QRect(5, 205, 400, 90)) + state3.assignProperty(p1, 'opacity', 1.0) + state3.assignProperty(p2, 'opacity', 1.0) + state3.assignProperty(p3, 'opacity', 1.0) + state3.assignProperty(p4, 'opacity', 1.0) + state3.assignProperty(p5, 'opacity', 1.0) + state3.assignProperty(p6, 'opacity', 1.0) + + t1 = state1.addTransition(button.clicked, state2) + animation1SubGroup = QtCore.QSequentialAnimationGroup() + animation1SubGroup.addPause(250) + animation1SubGroup.addAnimation(QtCore.QPropertyAnimation(box, b'geometry', state1)) + t1.addAnimation(animation1SubGroup) + t1.addAnimation(QtCore.QPropertyAnimation(widget, b'geometry', state1)) + t1.addAnimation(QtCore.QPropertyAnimation(p1, b'pos', state1)) + t1.addAnimation(QtCore.QPropertyAnimation(p2, b'pos', state1)) + t1.addAnimation(QtCore.QPropertyAnimation(p3, b'pos', state1)) + t1.addAnimation(QtCore.QPropertyAnimation(p4, b'pos', state1)) + t1.addAnimation(QtCore.QPropertyAnimation(p5, b'pos', state1)) + t1.addAnimation(QtCore.QPropertyAnimation(p6, b'pos', state1)) + t1.addAnimation(QtCore.QPropertyAnimation(p1, b'rotation', state1)) + t1.addAnimation(QtCore.QPropertyAnimation(p2, b'rotation', state1)) + t1.addAnimation(QtCore.QPropertyAnimation(p3, b'rotation', state1)) + t1.addAnimation(QtCore.QPropertyAnimation(p4, b'rotation', state1)) + t1.addAnimation(QtCore.QPropertyAnimation(p5, b'rotation', state1)) + t1.addAnimation(QtCore.QPropertyAnimation(p6, b'rotation', state1)) + t1.addAnimation(QtCore.QPropertyAnimation(p1, b'opacity', state1)) + t1.addAnimation(QtCore.QPropertyAnimation(p2, b'opacity', state1)) + t1.addAnimation(QtCore.QPropertyAnimation(p3, b'opacity', state1)) + t1.addAnimation(QtCore.QPropertyAnimation(p4, b'opacity', state1)) + t1.addAnimation(QtCore.QPropertyAnimation(p5, b'opacity', state1)) + t1.addAnimation(QtCore.QPropertyAnimation(p6, b'opacity', state1)) + + t2 = state2.addTransition(button.clicked, state3) + t2.addAnimation(QtCore.QPropertyAnimation(box, b'geometry', state2)) + t2.addAnimation(QtCore.QPropertyAnimation(widget, b'geometry', state2)) + t2.addAnimation(QtCore.QPropertyAnimation(p1, b'pos', state2)) + t2.addAnimation(QtCore.QPropertyAnimation(p2, b'pos', state2)) + t2.addAnimation(QtCore.QPropertyAnimation(p3, b'pos', state2)) + t2.addAnimation(QtCore.QPropertyAnimation(p4, b'pos', state2)) + t2.addAnimation(QtCore.QPropertyAnimation(p5, b'pos', state2)) + t2.addAnimation(QtCore.QPropertyAnimation(p6, b'pos', state2)) + t2.addAnimation(QtCore.QPropertyAnimation(p1, b'rotation', state2)) + t2.addAnimation(QtCore.QPropertyAnimation(p2, b'rotation', state2)) + t2.addAnimation(QtCore.QPropertyAnimation(p3, b'rotation', state2)) + t2.addAnimation(QtCore.QPropertyAnimation(p4, b'rotation', state2)) + t2.addAnimation(QtCore.QPropertyAnimation(p5, b'rotation', state2)) + t2.addAnimation(QtCore.QPropertyAnimation(p6, b'rotation', state2)) + t2.addAnimation(QtCore.QPropertyAnimation(p1, b'opacity', state2)) + t2.addAnimation(QtCore.QPropertyAnimation(p2, b'opacity', state2)) + t2.addAnimation(QtCore.QPropertyAnimation(p3, b'opacity', state2)) + t2.addAnimation(QtCore.QPropertyAnimation(p4, b'opacity', state2)) + t2.addAnimation(QtCore.QPropertyAnimation(p5, b'opacity', state2)) + t2.addAnimation(QtCore.QPropertyAnimation(p6, b'opacity', state2)) + + t3 = state3.addTransition(button.clicked, state1) + t3.addAnimation(QtCore.QPropertyAnimation(box, b'geometry', state3)) + t3.addAnimation(QtCore.QPropertyAnimation(widget, b'geometry', state3)) + t3.addAnimation(QtCore.QPropertyAnimation(p1, b'pos', state3)) + t3.addAnimation(QtCore.QPropertyAnimation(p2, b'pos', state3)) + t3.addAnimation(QtCore.QPropertyAnimation(p3, b'pos', state3)) + t3.addAnimation(QtCore.QPropertyAnimation(p4, b'pos', state3)) + t3.addAnimation(QtCore.QPropertyAnimation(p5, b'pos', state3)) + t3.addAnimation(QtCore.QPropertyAnimation(p6, b'pos', state3)) + t3.addAnimation(QtCore.QPropertyAnimation(p1, b'rotation', state3)) + t3.addAnimation(QtCore.QPropertyAnimation(p2, b'rotation', state3)) + t3.addAnimation(QtCore.QPropertyAnimation(p3, b'rotation', state3)) + t3.addAnimation(QtCore.QPropertyAnimation(p4, b'rotation', state3)) + t3.addAnimation(QtCore.QPropertyAnimation(p5, b'rotation', state3)) + t3.addAnimation(QtCore.QPropertyAnimation(p6, b'rotation', state3)) + t3.addAnimation(QtCore.QPropertyAnimation(p1, b'opacity', state3)) + t3.addAnimation(QtCore.QPropertyAnimation(p2, b'opacity', state3)) + t3.addAnimation(QtCore.QPropertyAnimation(p3, b'opacity', state3)) + t3.addAnimation(QtCore.QPropertyAnimation(p4, b'opacity', state3)) + t3.addAnimation(QtCore.QPropertyAnimation(p5, b'opacity', state3)) + t3.addAnimation(QtCore.QPropertyAnimation(p6, b'opacity', state3)) + + machine.start() + + view = QtWidgets.QGraphicsView(scene) + view.show() + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/states/states.pyproject b/venv/Lib/site-packages/PySide2/examples/widgets/animation/states/states.pyproject new file mode 100644 index 0000000..d94cf2e --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/animation/states/states.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["states.py", "states_rc.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/animation/states/states_rc.py b/venv/Lib/site-packages/PySide2/examples/widgets/animation/states/states_rc.py new file mode 100644 index 0000000..fe8a05c --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/animation/states/states_rc.py @@ -0,0 +1,2221 @@ +# -*- coding: utf-8 -*- + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +# Resource object code +# +# Created: to lokakuuta 14 16:08:44 2010 +# by: The Resource Compiler for PySide (Qt v4.7.0) +# +# WARNING! All changes made in this file will be lost! + +from PySide2 import QtCore + +qt_resource_data = b"\ +\x00\x00\x1b\x48\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\ +\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ +\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x06\xec\x00\x00\x06\xec\ +\x01\x1e\x75\x38\x35\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\ +\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\ +\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x1a\xc5\x49\x44\ +\x41\x54\x78\xda\xcd\x7b\x0b\x5c\xcf\xf7\xf7\xbf\xf9\xee\xc6\x30\ +\x14\xdb\xd7\xfd\x32\x66\xc6\x66\xc3\xd8\xec\x8a\x51\x51\x2a\x42\ +\xae\xb9\x35\x84\xb9\x33\x86\xe6\xba\x94\x6b\xc9\xa5\x74\x2f\x11\ +\xa9\x24\x95\x8a\xe4\xbe\xdc\x72\x0b\x45\x49\x4a\x4a\xf7\xcb\xa7\ +\xcb\xe7\xf9\x3f\xcf\xd7\x47\xf3\xdd\x77\xdf\xff\x77\xfb\x7d\xc7\ +\xf0\x78\x9c\xf5\xde\xfb\xf3\x7e\x9d\xf3\x3c\xe7\x75\x5e\xe7\xf5\ +\x7a\x9f\x73\xde\x35\x00\xfc\x65\x5a\xbf\x7e\xbd\xbe\x87\x87\xc7\ +\x48\x77\x77\x77\xcb\xad\x5b\xb7\xb6\x5f\xb0\x60\x41\xcd\xff\xf6\ +\xfc\xa6\x4d\x9b\x6a\xb9\x07\x44\xce\xf1\x39\x7a\xcf\xca\x3b\x26\ +\x65\xa2\x47\x40\xf8\x4f\x32\x76\xd2\xce\x9d\x3b\xad\x5c\x5c\x5c\ +\xc6\x0a\x4d\x12\x9a\xbc\x63\xc7\x0e\x5e\x8f\x70\x75\x75\xed\x2d\ +\xfc\x9b\x71\xec\xd3\xa6\xbf\x34\x38\x28\x28\xa8\xf6\xee\xdd\xbb\ +\x8f\x87\x87\x87\x17\x47\x47\x47\xe3\xe8\xd1\xa3\x90\xbf\x15\xb1\ +\xb1\xb1\x5a\xf9\x2d\xf3\xc0\x81\x03\x39\x01\x01\x01\x09\xfb\xf7\ +\xef\x4f\x15\xba\x11\x12\x12\xf2\xe0\xd0\xa1\x43\x05\x31\x31\x31\ +\xda\x5b\xc9\x77\x50\x5c\x56\xa9\xe8\xc6\xad\x64\xc8\x18\x35\xf6\ +\xd4\xa9\x53\x88\x88\x88\x28\x38\x71\xe2\x04\xc2\xc2\xc2\x1e\xc9\ +\xb3\xfc\x5b\x10\x19\x19\x09\xa1\x22\xe1\x1b\xb7\x61\xc3\x86\x56\ +\x2f\x84\x01\xbc\xbd\xbd\x03\x05\x60\x85\x28\x19\x2b\x33\x64\x2d\ +\xb3\x38\xd5\xc7\xc7\x67\x9d\xbf\xbf\x7f\xe0\xae\x5d\xbb\xa2\x45\ +\xe1\xdb\x02\xf8\x4a\x58\x70\x60\x8e\xb7\xdd\x92\x87\x7b\xf7\x05\ +\x95\xee\xda\x1d\x58\xe6\xe2\xb9\xb7\x6c\xf9\xd6\xb0\xf2\xb9\xce\ +\xa7\x2a\xe7\x6f\x3b\x53\xb9\xd6\x3d\xae\x6c\x93\x67\x4c\xe1\x36\ +\x8f\x43\x99\xde\x1e\x81\x57\xc3\x67\x98\xaf\xda\xe3\xb0\x6c\xa2\ +\xf0\x1c\xec\xe7\xe7\x37\x55\xe4\xcc\x17\x9e\xbb\xf6\xed\xdb\x77\ +\x4e\x8c\x53\x29\xc6\xaa\x14\x6f\x19\xf2\x5c\x0d\x20\xb3\x50\xff\ +\xd8\xb1\x63\x5a\x01\x75\xea\x3f\xfd\x7e\xd2\xb0\x51\x97\x63\x03\ +\x1a\x6e\x3a\x32\x50\x2f\x39\x66\x60\x43\xed\xd1\xc1\x4d\x71\x39\ +\x25\x1f\x57\xd3\x0a\x90\x78\xaf\x08\xc9\x19\x45\xb8\x9d\x49\xd2\ +\x5d\x27\x09\xdd\xb8\x57\x88\xab\x77\x0b\x70\x6d\x58\x6b\x24\x98\ +\xbc\xa5\xfd\xc5\x50\xff\x97\xf3\x06\x7a\x0b\xe3\xfb\xe9\x75\xa8\ +\xe6\x2b\x4b\xac\x63\x70\x70\x70\x8a\x78\x5d\xce\x73\x35\x00\xd7\ +\xac\xb8\x6c\x95\xa7\xa7\xa7\x55\xf5\xbd\xab\xfd\xeb\x35\x8c\x37\ +\xd2\x5f\x15\x6f\xa0\x77\xfb\xe2\x80\x46\xb8\x36\xb8\x09\x6e\x8d\ +\x68\x89\x3b\x56\xef\x20\xcd\xe6\x43\x64\xe7\x97\x21\xb7\x50\x83\ +\xfc\xe2\x72\x14\x94\xe8\xa8\xb0\xa4\x82\x7f\xd5\xbd\xdc\x22\x0d\ +\x72\x0a\x34\xb8\x3f\xf3\x63\xa4\x59\x77\xe0\x38\x8e\x57\x7c\xce\ +\x0d\x68\x7c\x9b\xbc\x29\x43\x8c\x1e\x15\x17\x17\xa7\x7d\xae\x06\ +\x10\x97\xdc\x2d\x6b\x1c\x02\xa6\xd9\x49\x8b\x66\xb5\xe2\x0d\xf4\ +\x17\x9d\x33\xd0\x2f\xb8\x6c\xfa\x36\x6e\x5a\xb6\x40\xca\xf8\x76\ +\xb8\x3f\xf5\x7d\x3c\x9c\xd5\x05\x39\x0b\x7b\x20\x6f\x65\x5f\x54\ +\x54\x56\xa1\xb2\x4a\x8b\x2a\x92\x56\x0b\xad\x22\x5e\xab\x7b\xfc\ +\x4d\x3d\x93\xb7\xd6\x08\xb9\xb6\x5f\x72\x1c\xc7\x93\x0f\xf9\x29\ +\xbe\x97\x4c\xdf\x2e\x88\x99\x63\x71\xed\x60\x70\x60\xf1\x73\x35\ +\x80\xaf\xaf\xef\x51\x59\x9f\xda\x0b\x03\xdf\x9a\x28\xca\x3f\xa0\ +\xe2\xb7\x46\xb6\xc2\xdd\x49\xef\xe2\xc1\xf7\x1f\x20\xe7\x07\x51\ +\x7a\x45\x6f\x14\x38\x0c\x40\xd1\x96\x21\x28\x71\xb3\x42\x59\x05\ +\x50\xa2\x01\x8a\x84\x0a\xcb\x74\x54\x50\xaa\xfb\x5b\x24\x54\x2c\ +\xf7\x4b\xcb\x85\x7c\xbf\x43\x89\xcb\x48\x8e\xe3\x78\xf2\x21\x3f\ +\xf2\x25\x7f\x25\xe7\xfc\xf0\x76\xda\xf3\x06\x0d\x27\xec\xb1\xa8\ +\xf1\x8f\xe7\x62\x00\xb7\x2d\x9b\x6e\x6e\x75\x72\xc2\xa5\x81\x8d\ +\x38\x33\x0a\x58\xd6\xcc\x0f\xf1\x68\xc9\xe7\xc8\xb7\x33\x50\xe0\ +\x4b\xdd\xc7\x42\xe3\x3f\x19\x15\x41\xb3\x50\x19\xb9\x04\x0f\x0b\ +\x81\x07\x05\x40\x46\x3e\x70\x3f\x0f\x48\x57\xa4\xbb\xce\x10\xca\ +\x94\xfb\x59\xf2\x4c\xd5\xd1\x15\xa8\x0a\xff\x81\xe3\x38\x9e\x7c\ +\xc8\x8f\x7c\xc9\x9f\x72\x28\x8f\x72\xb9\x34\xae\x9c\x37\xaa\xdf\ +\xf2\x6f\x35\xc0\x39\xc3\x06\x9f\x3b\xaf\x58\xa4\xdd\xb0\x7e\x3d\ +\x6e\x5b\xb5\x45\xe6\xf4\xce\x78\xb4\xf8\x53\x9d\xe2\xce\x43\x51\ +\xe6\x33\x11\x15\xfb\x67\xa2\x2a\x62\x11\x10\xb3\x0c\x88\x5e\x02\ +\xed\xe1\x1f\x71\xfb\x21\x90\x94\x05\xdc\x7c\x00\xdc\xc8\x04\x12\ +\x9f\x90\xba\x77\x4b\x7e\x4b\x96\x67\xb4\x11\x0b\x80\xc8\x85\x1c\ +\xc7\xf1\xe4\x43\x7e\xe4\x4b\xfe\x94\x43\x79\x94\xab\xe4\x27\x98\ +\x35\xcd\x25\xa6\xbf\xc5\x00\xbf\x18\xea\x4d\x3c\x6f\xa8\x5f\xe1\ +\xb2\x6a\x11\xdc\x76\x6c\x45\xf6\xdc\x8f\x65\x7d\xf7\x41\x91\xd3\ +\x60\x94\x79\x4f\x50\xb3\xa6\x7d\xac\x34\x22\x45\x91\xb0\x19\x40\ +\xd0\x04\x68\x03\x46\xe0\xd2\x3d\xe0\xc2\x5d\xe0\x5c\x2a\x10\x9f\ +\x02\xfc\xf2\x84\xd4\xbd\xf3\xf2\xdb\xc5\x34\x40\xeb\x63\x02\xec\ +\xb6\xe0\x38\x8e\x27\x1f\xf2\x23\x5f\xf2\xa7\x1c\xca\xa3\x5c\xca\ +\x57\x01\x33\x71\x58\xf3\x0a\x62\x7b\x66\x06\x90\x47\x5f\x3a\x6b\ +\xa0\xb7\xe9\x82\x91\xbe\x8a\xcc\xbe\x9b\xed\x10\x12\x1c\xa4\xd6\ +\x68\x89\xeb\x28\x94\xef\x9d\xc6\x59\xd6\x29\x1e\x31\x0f\x08\xf9\ +\x4e\xa7\x84\xdb\xd7\xc0\xe6\x0e\xa8\x5a\xd3\x08\xc7\x93\x80\x63\ +\x37\x81\xa3\x37\x80\x23\x42\x31\x89\x5a\x44\x5f\xd7\xf2\x5a\x51\ +\xac\xfc\x76\xfc\x16\x50\xb1\xec\x75\x60\x65\x5d\x8e\xe3\x78\xf2\ +\x21\x3f\xf2\xad\xf6\x26\xca\xa3\x5c\x25\x3f\x67\x51\x4f\xa4\x4f\ +\xe9\xa8\x70\x9d\x35\x6c\xb4\x89\x58\x9f\xba\x01\x4e\x19\x34\xb6\ +\xbb\x38\x40\x1f\x49\x12\x80\x32\xa6\x75\x82\xff\x16\x3b\xec\xf7\ +\xf7\x56\xb3\x51\x19\x3a\x57\xb4\x59\xaa\x73\xdb\x03\x53\x00\xff\ +\xc1\xc0\xb6\xee\xc0\x9a\x86\xa8\x5a\x5c\x03\x9a\x85\x35\x51\xb4\ +\xe0\x0d\x04\x9e\x2b\x83\xff\x99\x12\x78\x9f\x28\x82\x47\x5c\x21\ +\xdc\x8e\x15\x28\x72\x97\x6b\x2f\xb9\xe7\x77\xaa\x18\x7b\xe3\x4b\ +\x51\x30\xaf\x0e\x4a\xe6\xfe\x83\xe3\x38\x9e\x7c\xc8\x8f\x7c\xc9\ +\x9f\x72\x28\x8f\x72\x95\xfc\xc2\x4d\xa6\x78\xb4\xf4\x0b\xe2\x52\ +\xf8\x4e\x19\x35\xb6\x7b\xaa\x06\x38\x6d\xa8\x37\xe2\x82\xa1\x1e\ +\x99\x73\xdd\xa9\x2d\x2a\xd8\xcf\x1d\xe1\x07\xf6\x73\x7d\xea\x66\ +\x3d\x7c\x36\xb0\x77\x24\xe0\xda\x0b\x58\x5d\x1f\x95\x8b\x5e\x42\ +\xe9\xfc\x9a\x28\x9c\xf5\x32\xb2\x6c\xea\xe0\xe6\xc4\x36\xd8\x28\ +\x67\x97\xb5\xa1\x59\x58\x15\xf4\x00\x3f\x05\x66\xc0\x76\x5f\x06\ +\x96\xed\xbd\xaf\xae\x57\x06\x65\xe2\xe7\x90\x2c\xac\x0f\xcb\x46\ +\xe2\x84\x36\xc8\x9c\x5c\x17\x79\x33\x5e\xe1\x78\xf2\x21\x3f\xf2\ +\x25\x7f\xca\xa1\x3c\xca\x55\xf2\x35\xbb\xbe\xe3\x92\x20\x2e\xe2\ +\x53\x38\x89\xf9\xa9\x18\xe0\xac\x91\x7e\xb7\x73\x06\x7a\xe5\x37\ +\x2d\x5b\xd2\xc2\x14\xa2\x22\x72\x58\xa0\x3f\x0e\xf8\xb9\x00\x51\ +\xe2\xf6\xa1\x36\x80\x9f\x09\xb0\xa1\x2d\xaa\x7e\xac\x81\xb2\xc7\ +\x8a\xdf\x9b\x5c\x1f\x97\xc6\xb6\xc1\xa9\x51\x9d\x71\x7a\x54\x27\ +\xcc\xf1\xbe\x8b\x99\x3b\x2e\x6b\xa7\xd9\x47\x95\x58\x2d\xd9\xf5\ +\xd0\x74\x86\xd3\x6d\xb3\xe9\x4e\xb7\xc7\x2d\xf1\xcb\xb6\xb1\x8f\ +\x2c\x9d\xb1\x2d\x41\x3b\xd3\x33\x85\xcf\xaa\x31\x17\xc7\xb4\x45\ +\xea\xc4\x06\xc8\x9d\xf6\x2a\xf9\x91\x2f\xf9\x53\x0e\xe5\x51\xae\ +\x92\xaf\x8d\x5a\x02\xcd\xee\x29\xc4\x45\x7c\x0a\xe7\x75\xcb\x96\ +\xe5\xc4\xfe\x97\x0c\x10\xdf\x5f\xff\x9f\x67\x0c\xf4\xb3\x13\x87\ +\x36\xe3\x1a\x53\x5b\x50\x91\xa3\x39\x72\xbd\xac\x71\x3c\x2e\x0e\ +\xe1\x5e\x1b\x80\x10\x6b\xc0\xa3\xaf\x9a\x9d\xf2\x1f\x5e\x42\xf1\ +\x9c\x7f\x20\x6b\x6a\x6d\x9c\x1d\xd5\x16\xc7\x2c\x3b\x2a\x8a\x1b\ +\xde\xae\xd2\x75\x60\xbb\xb4\x6f\xbe\xec\x73\xe0\xe3\x8f\x3f\x76\ +\x16\x5a\x2f\xb4\xea\xa3\x8f\x3e\x5a\x4a\xe2\x35\xef\xf1\xb7\xde\ +\x5f\xf5\x3e\xb0\xd5\xa8\x5d\xca\x91\xa1\xed\x2b\xaa\xc7\x9f\x19\ +\xf9\x0e\xd2\x27\xd5\x41\xde\xf4\x57\xc8\x9f\x72\x28\x8f\x72\x75\ +\xf2\x0f\x2f\x62\x80\xa4\x11\x88\x8f\x38\x15\xde\x04\x8b\xe6\xd9\ +\xd4\xe1\x7f\x36\xc0\xf1\xfe\x8d\x4e\x5f\x31\xfb\x27\xf7\x5c\x75\ +\x10\x29\xdc\x38\x08\x65\x7e\xd6\x38\xed\xb7\x06\x91\x11\x11\xb8\ +\xea\xbb\x10\xd8\xf9\x25\x60\xfb\x0a\x34\x0b\x64\xd6\x67\xbe\x8c\ +\xd4\x49\xf5\x70\x74\xf8\x3b\x88\x1e\xd6\x0e\xe1\x43\xda\x94\x2c\ +\xeb\xd3\x2e\xbe\x6b\xd7\xae\x1b\x44\xb9\x39\xa2\xec\x10\xb9\xfe\ +\xec\x43\xdd\xbf\x76\x5d\xba\x74\x69\x4a\xe2\x35\x6f\xf0\x37\x3e\ +\xc3\x67\x39\x66\xda\x57\x1d\x8f\x1f\x1c\xdc\xa6\x98\xbc\xc8\x33\ +\x79\x5c\x7d\xe4\x4c\x7d\x8d\x72\x28\x8f\x72\x75\xf2\x83\x27\x01\ +\x51\x8b\xe9\x09\xc4\x47\x9c\xc4\xab\x70\x9f\x19\xd4\xe4\xf4\xff\ +\x64\x80\xb8\x7e\xfa\xc6\x8c\xf8\xc9\x63\xda\x20\x7b\xce\x47\xc8\ +\x5f\x6b\x88\x52\xcf\x71\x28\x0d\x5b\x8c\xa8\x88\x30\x84\xca\x12\ +\xd0\xee\xfc\x1a\x58\x56\x53\xb9\x66\xfe\xf7\xaf\xe0\xfa\xb8\x06\ +\x38\x64\xd1\x06\x91\x16\xad\xb4\x73\xbe\x69\x7f\x56\x94\x58\x2b\ +\x0a\x0e\xa7\x72\xa2\x94\xbe\xd0\x2b\x7f\xe4\x92\x7c\x86\xcf\x72\ +\x0c\xc7\x92\x87\xcd\x97\x1d\x4e\x46\x0c\x69\x5d\x45\xde\x97\x47\ +\xeb\xe1\xe1\xe4\xd7\x28\x8f\x72\x29\x9f\x3b\x05\x3d\x81\x31\x81\ +\x07\x28\xe2\x24\x5e\xe2\x56\xf8\xe3\x0c\xdf\x36\xfe\xbf\x19\xc0\ +\xb6\x46\xcd\xe3\xfd\x1b\xa7\xca\xde\xaa\x5b\xf7\xcb\xbf\x91\xa3\ +\xe9\x08\x54\x84\xcc\x46\xd4\x3e\x0f\x99\xfd\x70\x9c\x71\x9e\x0c\ +\x2c\x7f\xfd\x57\xe5\xcf\x8f\xd6\x47\xc8\xe0\x96\x08\x1d\xdc\x5c\ +\x63\xdc\xb3\x93\xb7\xcc\xe4\x58\x51\xa4\xb3\xd0\xeb\xff\xeb\x29\ +\x8d\x63\xc9\x83\xbc\x8c\x3e\xe9\xec\x15\x6a\xde\xa2\x92\x32\xce\ +\x8e\x68\x84\xac\xef\x5e\xaf\x36\x82\xc2\x01\xaf\xfe\xc0\xc1\x69\ +\x34\x02\x71\x12\x2f\x71\x2b\xfc\xf1\x43\x5a\xa6\x52\xa7\x3f\x6d\ +\x80\x98\x7e\x8d\xa7\x26\x18\x37\xe6\x0b\x08\x5f\x48\x64\x9b\x31\ +\x83\x66\x8f\x0d\x0e\x07\xec\x54\x89\x8b\x88\x1d\xb6\xa8\x5c\xdd\ +\x48\xb9\x61\x81\x80\xb8\x39\xae\x2e\xf6\x99\x35\x83\xe7\xc0\x66\ +\x0f\xbb\x75\xe9\xb2\x46\x66\xee\x2b\x01\x5e\xf7\x69\x25\x2d\xc8\ +\x8b\x3c\x47\x0f\x1b\x7a\x29\xd0\xbc\xb5\x96\xb2\xae\x8e\xac\x47\ +\x23\x50\xbe\xc2\x81\x9f\x1b\x01\x7e\xa6\x40\xf8\x1c\x9e\x1e\x89\ +\x97\xb8\x89\x5f\xe9\x71\xd4\xe8\xed\xa9\x7f\xca\x00\x47\xbe\x6e\ +\xf5\xfa\x29\x83\x46\x8f\x6e\x0c\x6f\x81\xcc\x19\x9d\x91\xbf\xe6\ +\x5b\x14\x7a\x4c\x40\xa0\xef\x4e\x04\xf8\xfb\x21\xcc\xdd\x1e\x9a\ +\xf5\x1d\x50\x21\x81\x88\x91\x39\x53\x40\xec\x37\x6b\x2c\xca\x37\ +\x79\x24\x20\x17\xca\x6c\x75\x11\xc0\x2f\x3f\xed\xd4\x15\x79\x3a\ +\x38\x38\xc4\x2e\x5e\xf4\x03\x7c\x07\x34\xc9\x0f\x34\x7d\x0b\xa9\ +\x63\x6b\x73\x39\x10\x87\xc2\x03\xc7\x8e\x40\xe0\x18\x06\x45\xd9\ +\x1e\x65\x29\x78\x8c\x25\x7e\xa5\xc7\xc5\xa1\xad\x1e\x51\xb7\x3f\ +\x34\xc0\xa1\x7e\x8d\xe7\x5d\xaa\x9e\x7d\x9e\xb0\x9c\xc7\x62\xfb\ +\xe6\x75\x70\x74\x74\xc4\x41\xd7\x35\x28\x75\xee\x05\xed\x92\x1a\ +\x28\x96\x83\x4a\xce\xd4\x57\x11\x65\xd1\x00\xfe\x26\x8d\xca\x7b\ +\x7c\xd4\xd9\x56\x40\xbe\x23\xa4\x4e\x61\xcf\x82\x24\xf7\xb0\x55\ +\xa8\xf8\xf3\x5e\x9f\xae\xf3\x1c\xf0\x56\x59\x84\x59\x43\xa4\x8f\ +\xaf\x45\x1c\xc4\x43\x5c\x8c\x07\x8f\x97\xc2\x52\x94\x07\xce\xe0\ +\xf9\x80\x7a\x28\x7d\x82\xe6\x8e\x4a\x92\xd7\xf8\x63\x92\xad\xf2\ +\x93\x3c\x66\xad\xff\x68\x80\xf0\x7e\x6f\x5d\xe1\xb6\xc7\xb5\x93\ +\xb0\x61\x12\x7c\xbc\xbd\xb0\x6d\xeb\x56\x1c\xdb\x3e\x4f\x82\x8b\ +\x29\xb0\xf6\x6d\xba\x9c\x3a\xa4\x5c\x1e\xf3\x06\xbc\x06\xd6\xd7\ +\x8e\xe8\xf5\x9e\x97\x04\xab\xce\xcf\x52\x79\x92\xa4\xc8\x4c\x0e\ +\x1e\x3c\x88\xd5\xab\x57\x7b\x9a\xf4\xe8\xec\xea\x31\xa0\x81\xf6\ +\xdc\xb0\x7a\xc8\x9c\xf4\x3a\xf1\x10\x97\xc2\x87\x3d\xc3\xd5\x69\ +\xb1\x2a\x72\xb1\xf2\x82\xbc\xd5\x7d\x95\x3e\x31\xe3\x3f\x45\x68\ +\x68\x68\x16\x73\x96\x7b\xf7\xee\x8d\xfa\x9d\x01\x0e\x7e\xd1\xf4\ +\xcd\x78\x43\xbd\x4a\x46\xce\xa8\x8d\x0b\x21\x09\x4c\x04\xf8\xb8\ +\x23\xd1\x7b\x36\x2a\x82\xac\xb9\xe5\xa8\x83\x48\xd1\xec\x97\x95\ +\xeb\x05\x0e\xaa\x8b\xc5\xbd\x9b\x9f\x13\xe5\x3f\x17\xe5\xd5\x7b\ +\xf9\x33\xa6\x9a\x32\x7b\xd9\x92\x84\x29\x96\xe5\x70\x7b\x89\xf1\ +\x47\x8f\x02\x8c\xeb\x21\x4d\xb7\x14\x88\x8b\xf8\x88\x53\xe7\x05\ +\x31\xe2\x05\x01\xd3\xd4\x51\x39\x7b\x7e\x37\xdc\x1c\xdd\xa6\x92\ +\x3a\x06\x06\x06\x9e\x92\x94\x5a\xe9\xef\x0c\x10\xf0\x6d\x13\x9b\ +\x4b\x66\x4d\x64\x9d\x3b\x21\x3a\xe2\x10\x22\xf6\xf9\x22\xdb\x7b\ +\x12\xb4\x3c\x7b\xef\x1b\x05\x38\x34\xa7\x95\xd5\x81\x24\x6d\x5c\ +\x6d\xb8\x18\xd4\xad\x10\xc5\xc7\x09\x29\x77\xfa\x3b\x48\x92\xae\ +\xef\x4b\x32\xe6\xba\x64\xa3\x35\x4b\x96\x2c\xd1\x6c\x37\x68\x80\ +\x5b\x96\x75\x90\x31\xa1\x16\x71\x11\x1f\x71\x12\xaf\x3a\x1b\x54\ +\x1e\x9c\xaf\xdb\x11\x96\x7d\xa9\xde\x1a\x83\x8c\x9a\xd9\xc8\x32\ +\xd8\xca\xac\xb3\xa4\xdb\xbb\xfc\x86\x79\x88\x49\xfb\xb3\xa1\x5e\ +\xdb\x21\xc9\x4e\x1c\xdd\xb9\x1a\xf9\x2e\xc3\xb8\x96\x74\x91\xd5\ +\xdb\x88\x6b\x4c\x9d\xc4\xb2\xa7\xbc\x86\x93\x43\x6b\xe1\xe7\xde\ +\x8d\xae\x75\xeb\xd6\xad\x2d\xc7\x3e\x0f\xea\xd5\xab\x57\xbb\xc5\ +\x5f\xbe\x7d\xf1\xe8\xa0\x37\xe8\x05\xc4\x45\x7c\xc4\x49\xbc\xd5\ +\x3b\x82\xca\x23\xe4\xff\xdc\x5f\xbd\x27\x44\x9a\xb6\x3a\x21\xf9\ +\xcc\x91\x92\x6a\xcf\x17\x03\x8c\x79\x92\xe1\x59\x35\xad\x76\xb0\ +\xe7\x0e\x6d\xe4\xa1\x30\x9c\x58\x37\x1d\x79\xeb\x0c\x51\xbe\x47\ +\x05\x13\xdd\x1b\xd8\xd6\xae\x8c\xb4\xdc\x76\xd4\x9a\xf3\x1f\xf0\ +\x5a\x95\x51\x8f\xce\x56\xd5\x87\x9b\xe7\x41\x94\xfd\x59\xf7\x0f\ +\x47\xee\xfc\xb6\xb6\xe6\xce\xc8\x3a\xc4\x45\x7c\xc4\x49\xbc\xc4\ +\x4d\xfc\x5c\x06\x3c\x1d\xaa\x83\xd1\x95\x91\x6d\x4a\xdd\x5d\xb6\ +\x7e\x45\x0f\x90\x98\x62\xfb\x2b\x33\x2f\x57\x97\x98\xa8\xc8\x70\ +\xc4\xba\xac\x46\xde\x8e\xc9\x28\xde\x6f\x8b\xb2\x38\x67\x94\x9c\ +\x71\x43\xe1\x61\xb9\xe7\x31\x14\xe9\xf6\x5f\xe1\xfa\xb2\xaf\x70\ +\x66\xf6\xd7\xd8\x34\xa0\x69\x56\xf7\xee\xdd\x55\x81\xe2\x79\x12\ +\x31\xd8\xf5\x6b\x9e\x71\x64\x72\x6f\x9c\x9f\xf7\x0d\x92\xe4\xf0\ +\x93\xb5\xfe\x1b\x14\x78\x0e\x45\x71\xd4\x6a\x68\xce\xba\xa1\xfc\ +\xb8\x33\x4a\x83\x6c\x91\xbb\x7d\x0a\xee\xac\x18\x0e\xd7\x85\x53\ +\x4c\x59\x74\x91\x7a\xc3\x7a\xdd\xec\xbb\xb9\x19\xf1\x80\x13\x7e\ +\x38\x86\xe9\x69\x66\x68\x99\xa4\x64\xee\x8e\xa9\x2a\x66\x6b\x54\ +\x12\xc3\x57\xde\xd7\xd7\x84\x3c\xc0\xd4\x9d\xb7\x31\x7a\xd4\x8c\ +\x48\x99\x81\x3a\xcf\xdb\x00\xc4\x30\x76\xd8\xd4\x18\x2b\xe7\x5b\ +\x58\x12\x70\x1f\x2e\x47\xf3\x11\x71\xa5\x12\x67\xee\x00\xd7\xee\ +\x03\x69\x8f\x80\xdc\x12\x40\x92\xcd\x28\xd5\x54\x22\x3d\xa7\x04\ +\x01\x1b\xec\x1c\x58\x71\x92\x78\xe2\xa1\x98\x48\x76\x37\xea\xe0\ +\xc1\xd0\x8a\xc4\x94\x2c\x14\x95\x56\x00\xd0\x65\x6b\xd3\x73\x81\ +\xc4\x0c\x95\xb2\x62\xe6\x86\xc9\x0b\xf5\x0e\x3f\x7e\xdb\x2d\xf4\ +\x1a\x64\x33\x53\x84\x73\xfc\x73\x25\x62\xf8\xca\xc4\x7a\xee\xf0\ +\x4d\x89\x98\xef\x97\x86\x2d\x87\x73\x71\xe0\x62\x39\x4e\x26\x03\ +\x97\xd3\x81\x94\x1c\x20\xa7\x08\x28\xaf\x04\x34\x15\x55\xc8\xca\ +\x2b\xc3\x01\x27\x87\x7d\xb2\xc3\x15\x8a\xde\xbe\x8a\xc9\xe1\xc3\ +\x87\x35\x41\x7b\xf6\x14\xdf\xcb\x2e\x41\x89\x58\x49\x1c\x00\x79\ +\x25\xb4\x9e\xce\x8a\x67\x6e\x03\xe1\x62\xd5\x1d\x47\xf2\xb0\x78\ +\x77\x3a\x46\x3b\x5e\xc7\x07\x9f\x7e\xdb\x89\x63\x5f\x04\x22\x96\ +\xc1\x0e\x09\x98\xe5\x95\x8a\x0d\x87\xb2\x99\x79\x62\xfa\x8d\x39\ +\x48\x26\x62\x25\x1b\x4d\xe5\x69\x84\x2a\x55\x9c\x89\x74\x75\x3a\ +\x23\x75\x46\xad\x18\x60\x6f\x0d\x9f\x98\x3b\xd3\xf2\x0a\x4b\xb5\ +\x73\x37\x86\x97\xdd\xcf\x29\x45\xa9\x98\x8a\xee\x92\x5b\x0c\xa4\ +\xe6\x00\x57\xd2\x81\x53\x62\x80\xd0\x4b\xe5\x70\x8e\xca\xc5\x82\ +\x5d\x69\x18\x63\x77\x5c\x23\x96\x7f\xfb\x45\x31\x00\xb1\x8c\x5e\ +\x1e\x5d\x35\xdd\xfd\x0e\xec\x43\x1f\x62\xcf\xd9\x52\xc4\xdd\x62\ +\x82\x55\x97\x65\xce\x2a\x50\xf5\x06\x16\x5d\x54\xe5\xc9\x6b\xef\ +\xb1\xbc\xf4\x07\xb9\xd8\x15\x1c\x73\xb2\x86\x94\xa8\x67\xb2\x42\ +\x3b\x7f\x63\x74\x69\xe6\xa3\x52\xba\x89\x3c\x08\x3c\x2a\xa6\xfb\ +\x28\x37\x52\xee\x14\x22\x6e\xe5\x18\xf9\x08\xf3\x7c\xef\x62\xc4\ +\xb2\x90\x1c\x11\xaa\xf7\x02\x19\x40\x6f\xd2\x42\xdf\x32\x1b\xb7\ +\x3b\xb0\x3b\x90\x85\x5d\xa7\x4b\x98\x7c\x65\x06\x5a\xa5\xe1\x1f\ +\xfc\x8b\x01\x1e\x15\x6a\xe0\x19\x1c\xaf\xa1\x21\xfc\x0e\xc4\x9d\ +\xf8\xd5\x00\x0b\x36\x46\x56\x3d\x31\x00\xd7\xcd\x6f\x0d\x10\x7c\ +\x41\xa3\x0c\x30\xd7\xe7\x2e\x46\xae\x88\xc8\x17\xa1\xf5\x5e\x20\ +\x03\xd4\xb3\x5a\x1c\x58\xce\xe0\xcc\xbc\x22\x0d\x10\xfb\x6f\x06\ +\x28\xf9\x57\x03\x04\x9d\x2d\xa7\x01\x7c\x82\x8f\x45\xd1\x00\xb5\ +\xf7\x05\x06\x6e\x3e\xb8\xd3\x55\xfb\x67\x3d\xc0\xd2\xfe\x5c\xa5\ +\x08\x7d\xe3\x05\x32\xc0\x1b\x83\x57\x9e\xd6\xd2\x00\x7f\xc6\x03\ +\xc2\xbd\xdd\xb3\x25\x06\x94\x78\x78\xf9\xac\xa9\x7e\xcb\x0a\x0e\ +\x72\x74\xa8\x62\x0c\x28\xfb\x4f\x31\x20\xf9\x49\x0c\x60\xa4\x65\ +\xc4\xfd\x6c\xac\x7d\xdb\x17\xc5\x00\x5d\x87\xd9\xb7\x35\xb1\xbb\ +\x8c\xea\x18\xb0\xfb\x4c\xc9\x7f\x8d\x01\x41\xae\x5b\x1e\xf0\x20\ +\xb4\x7d\xfb\xf6\x41\x8a\x81\xbc\x5c\xdc\xf5\x72\x58\x55\xf6\xef\ +\xbb\xc0\xdd\x7f\xd9\x05\x0e\x5d\xae\xc4\xf6\x98\x3c\x2c\x92\x5d\ +\x60\x94\xd3\x0d\x18\x4e\x71\x35\x7f\x51\x0c\x60\x69\xf5\xd3\x78\ +\xf3\x75\x57\x7f\xdd\x05\xf6\xc5\xff\x7e\x17\x28\x7b\xb2\x0b\x48\ +\x3d\xc3\xaf\x58\x5e\x88\xd2\xbd\xbc\xbc\x6a\xd5\x90\x7e\x9e\x97\ +\xa5\xcc\xad\xd9\xbc\x62\xd9\x9d\x3b\xf1\xa7\x91\x97\x78\x1e\x95\ +\xf7\xae\xa1\xf0\x5e\x12\x1e\xa6\xa5\x21\x25\x39\x15\x57\x2f\xdf\ +\xc0\xd9\xb8\x93\x08\x0a\x3a\x82\xad\x6e\x87\xb0\xd4\x3e\x10\x8b\ +\x26\x4c\x77\x79\x51\x0c\xf0\xc3\x28\x6b\x9f\x39\x2b\xf6\x62\xdd\ +\x96\x50\xec\xf2\x8f\x46\x6c\xd4\x09\x24\x9c\x3e\x8d\xa4\xc4\x1b\ +\xc8\x48\x4d\x45\x7e\x46\x1a\x34\x99\x49\x28\x4d\xbd\x82\xb8\xb0\ +\x03\x38\x79\xf2\x24\x0f\x41\xfe\x1c\xcb\x46\x87\xc9\x62\x8d\xaa\ +\x79\x53\xac\x9d\x98\x34\x48\x9d\xd8\x5e\xa5\x95\x8b\x77\x58\xa2\ +\x32\x6c\x01\xb3\x2b\x7c\xbf\x56\x69\xe8\xd2\x79\xba\x24\xc8\x3d\ +\xab\xda\x38\x66\xaa\x77\xfd\x45\x31\x40\x48\xbf\xb7\xcf\xde\x1c\ +\x5a\x8f\xb8\x88\x8f\x38\x89\x97\xb8\x89\x5f\xe9\x51\xec\x32\x42\ +\x8e\xf9\xab\x10\x19\x7e\x08\xfe\xde\xee\xf7\xc5\xfd\xd5\x3b\x0c\ +\x5f\x2f\x83\xa5\xc7\x47\x6b\x6e\x6e\xde\xf3\xaa\x55\x7b\x0d\xbb\ +\x32\x72\x16\x7e\xc2\xfc\x3a\x2b\xb2\x4c\x32\xb2\x48\xc9\x3a\x1d\ +\x4b\x55\x4c\x3c\xa8\x57\xcf\x24\xcb\xba\x38\x6d\xd4\xa0\xc3\xf3\ +\x56\x3e\xb6\x6f\xa3\xd6\x17\x07\xd5\xaf\x4c\x16\x3c\xc4\x45\x7c\ +\xc4\x49\xbc\xc4\x4d\xfc\xc9\xbb\x97\x22\x6c\xaf\x0f\x22\xc2\x0e\ +\x62\x97\xb3\x03\x46\x0d\x1e\xd4\xa3\x7a\x3c\x1b\x9d\xa2\xe4\x44\ +\x74\x5f\x22\x69\xe3\xfd\xa6\xed\x92\xef\x8c\x6b\xc7\xfa\x3b\x8b\ +\x8e\xac\xcd\xf3\x75\x92\x15\x5a\x95\x64\xa8\x94\x3a\x1d\xf3\x6f\ +\x4c\x46\xa6\x8e\x7e\x03\xa7\x4c\xf5\xdc\x9f\xaf\x01\x58\xbb\xd0\ +\x0f\x4a\x1c\xfc\x26\xf1\x10\x17\xf1\x11\xa7\xe0\x95\x17\xb7\xc0\ +\x95\x88\x3c\xb0\x17\xf2\x96\x87\xb0\x03\xc1\xf0\x5f\x38\x92\x29\ +\xfb\x02\xea\x5a\x3d\x9e\x3b\x40\x9c\x2c\x81\x12\xb9\xf9\x9a\xf5\ +\x67\xef\x39\xdf\x95\x25\xc0\x96\x14\x96\x9e\x99\x4e\x62\x5a\x89\ +\xe5\x69\x55\x98\x5c\x51\x5b\xb9\xd7\x23\x9b\x57\x91\x2e\x09\x91\ +\x6b\x43\xeb\x95\xc6\x1b\x37\xa9\xfd\x77\x29\x2b\xff\x5e\x92\xbe\ +\xc1\x0f\x25\x78\xb5\xe0\xff\x5f\xea\xaf\xff\xf1\x65\x93\x06\xda\ +\xa4\x61\x75\x15\x9e\x1c\x9b\xd7\x70\x6d\x79\x0f\x84\xb9\xd8\x22\ +\x60\xb7\x1f\x82\x83\xf6\x23\x78\xff\x5e\x04\xad\x9b\x8f\x13\x53\ +\x3f\x46\xca\xe4\x0e\xf0\x30\xef\x14\x46\x5d\xab\x79\xf2\x4d\x70\ +\x8f\x78\x40\xc6\xf1\xe3\xc7\x5f\x92\xe4\x86\xe1\x0d\xab\x76\x15\ +\xa9\x13\xda\xa9\x06\x84\x22\x67\x0b\x54\x04\xeb\x8a\x90\x08\x9e\ +\x08\x6c\xf9\xe0\xd7\x9c\xc0\x03\xeb\xd7\x91\x32\x4a\x79\x81\xff\ +\xb3\x56\x7c\xcb\x96\x2d\x75\xa4\x2d\x2e\x4a\xfe\x56\xd8\xd9\xd9\ +\x55\x3a\x3b\x3b\x63\xdb\xb6\x6d\x05\x5e\x2e\xdb\x2a\xfc\xd6\x2f\ +\x87\x9f\x93\x1d\x5c\x36\xdb\xc3\xc1\xde\x1e\xab\x56\xad\xc2\x36\ +\xe7\x2d\xd8\xe5\xe6\x8c\x18\xa7\xd9\x48\x5a\x67\x82\x07\xf6\x46\ +\x4a\x9f\xdb\x93\x3b\x56\x0e\xfa\xbc\xeb\x6f\x76\x2f\x06\xc1\xb5\ +\x92\x1f\x63\x7a\xe8\x13\xf9\xd7\x3c\xdc\xac\xcd\xfd\x54\x09\x86\ +\x6c\x4e\xe2\x32\x60\xa9\x89\xcb\x40\x65\x57\x7c\x06\xb0\x12\x23\ +\xa5\xeb\x27\x5e\x90\x3c\xbc\x2e\x2e\x19\x37\x18\xfd\xac\x94\xb7\ +\xb5\xb5\x7d\x55\x26\x29\x63\xe5\xca\x95\x55\xa2\xf4\x5d\x31\xc4\ +\x0e\xc1\xec\xef\xeb\xb2\xf5\x56\x80\xb7\x07\xf6\x78\xbb\x21\x28\ +\x70\x2f\x02\x77\x79\x22\x54\x82\xdc\x29\x87\x21\xc8\xd8\xd4\x1b\ +\x79\x5e\xa3\x50\x16\x3a\x97\xf8\xa9\x87\x5a\xd6\x97\xc7\x77\x28\ +\xa4\x8e\xff\x6e\x80\xfe\x92\x23\xcb\x67\x76\x44\x5c\xa3\xf6\xf4\ +\x2f\x3a\x78\xdf\xb5\x7e\x17\xf7\xbe\x7b\x8f\x95\x56\xdd\x6e\x10\ +\x3a\xef\x49\x30\x74\xea\x84\x0a\x29\x55\x17\xce\x64\x2c\x78\x0d\ +\x77\x25\x33\x9c\x68\x51\xaf\xec\xaa\x71\xc3\xf7\x9f\x85\x01\x44\ +\x61\xb7\x35\x6b\xd6\x60\x9b\xfc\xab\xbe\x77\xc1\xa8\x51\x97\x0b\ +\xc6\xfa\xf9\x49\x96\xf5\x91\x36\xbe\x9e\x2a\xbf\xe7\xcf\xa9\x85\ +\xb2\x45\xaf\x40\xeb\xd8\xa9\x3a\xf8\x11\x37\xf1\x53\x0f\xa9\x54\ +\xbf\x07\xf7\x41\x1d\x63\xa8\xe3\xef\xea\x02\x92\x1d\xd1\xc8\x4e\ +\x70\x9d\xef\xd6\xb2\x0c\x4c\x8e\x0d\x69\x9d\x9f\x32\xa1\xbd\x4a\ +\x21\x15\xac\x1b\xc8\xfa\xbb\xce\x0b\x22\xe6\xb2\xfa\xc2\x2d\x86\ +\x25\x29\x46\x5c\x95\x86\x4a\x95\xa5\x90\x60\x5e\xff\x2e\x7b\xf8\ +\x9e\x81\xfb\x67\x6d\xde\xbc\x39\x8b\xd7\xa4\x8b\x06\x0d\x3e\xbf\ +\x38\xb0\x41\xd1\x8d\x21\xf5\x28\xb7\x3a\x25\x4e\x3c\xc4\x45\x7c\ +\xc4\x49\xbc\xc4\xad\xf0\x3f\x90\xd9\xbf\x31\xfe\xdd\xf2\x1e\x5d\ +\xbb\x0e\xa2\x8e\xbf\x33\x80\xa4\x9a\x4f\x48\x96\xf5\x21\x83\xcb\ +\x07\x1f\x7c\xd0\xc4\xb2\x67\x47\x4f\x9e\x09\x68\x35\xe5\x05\xdb\ +\x87\xb3\xde\xa6\xf3\x82\xd0\xa9\xdc\x11\x98\x78\xac\x5e\x0a\xdc\ +\x7e\x24\x1e\xd4\xc1\xd5\xc1\x6f\xde\xbf\x62\xac\xd7\xfd\x69\xae\ +\x7d\x49\x7f\x43\x02\xdf\x21\x35\xf3\x06\x8d\x8c\x2e\x0d\x68\x50\ +\x46\xe5\x29\x8f\x72\x29\x9f\x38\x88\x87\xb8\x88\xaf\xba\x3e\x48\ +\xdc\xb9\xcb\xbe\x50\x55\xe2\x9f\x0d\xde\x0f\xa7\x6e\xff\x2e\xa3\ +\x3a\x25\xd6\x9b\xcd\xc8\x7b\xf6\xec\x09\x14\x0b\xd5\x94\xc2\xac\ +\x41\xa8\x49\xeb\x07\x29\xe3\x24\x16\xcc\xee\xc2\x4a\x2b\x5b\x51\ +\x74\x3d\x40\x87\x7f\x00\xf6\x5b\x31\x20\xca\x76\xc3\x7e\x00\xdd\ +\xe1\xe8\xfe\x63\x23\x24\x0e\x79\xb3\xe2\xa2\x71\xfd\xe9\x4f\xc3\ +\x00\x12\x97\x7a\x4a\xd0\xab\x90\xae\xf1\x95\xf1\x86\xfa\x23\x13\ +\x06\x36\xac\xa8\x56\x9e\xf2\x28\x97\xf2\x89\x83\x78\x88\x8b\xf8\ +\x88\x93\x78\x89\x9b\x05\x91\x4b\xa3\xdb\x95\x50\x27\xea\xf6\xff\ +\x2d\x8d\xc9\x12\x48\x0a\xdc\x1f\x98\x25\xef\x05\xcd\xf9\x7e\xdd\ +\xbf\x5b\xe7\xf5\x49\x63\xda\x68\xb9\x14\x18\x41\x0b\x37\xab\x02\ +\xe9\xe3\xa5\x30\x4f\x77\xca\xda\xd4\x9e\xf1\x80\x05\x09\x9d\x27\ +\x4c\xac\xa5\xf6\xe3\x5b\x72\x2a\x4b\x18\xd4\x30\xf0\x82\x41\xfd\ +\x56\x7f\xb1\x19\x7b\xdc\xc6\x8d\x1b\xe1\x3a\x69\x40\xe6\x35\xd3\ +\xfa\x5a\xf2\x25\x7f\xca\xa1\x3c\xca\xa5\x7c\xe2\x20\x1e\xe2\xaa\ +\x2e\x8c\x12\xef\xc3\xf9\xdd\x71\x67\xdc\x3b\x98\xdb\xe7\x7d\x1f\ +\xea\xf4\x5f\x8b\xa3\x4e\x4e\x4e\x9f\x47\x47\x47\xb1\xf9\xf9\x32\ +\xd7\x89\x14\x3a\xbf\xd8\xd6\xbf\x6d\xe2\xed\xb1\x6d\x75\x01\x71\ +\xf9\xd7\x74\x29\x9e\x0e\x59\x71\x61\x8f\x8e\xee\x6c\xb0\xbe\x15\ +\x41\x70\x26\xd8\xca\xc2\x35\xa9\x72\xf4\xb7\x2d\xe9\x0d\xf5\xb4\ +\x97\x4c\xea\x87\x5f\x34\x6a\x30\xb0\xba\x3c\xfd\x67\x89\x81\x2e\ +\x78\xc1\xd8\xd8\xf5\xeb\x1c\xb0\x63\xec\x17\xe4\x47\xbe\xe4\x4f\ +\x39\x94\x47\xb9\x94\x4f\x1c\xc4\x43\x5c\xc4\xa7\x70\xe6\x48\xd3\ +\xd4\x1d\xe9\x21\x8c\xb6\x78\x27\x8b\xba\x50\xa7\x3f\xac\x0e\x4b\ +\x0c\x08\x0e\x0a\xda\x5f\xec\xe1\xe1\xbe\x49\x06\xbc\x29\x25\xaf\ +\x59\x87\x8c\x5b\xe5\xb0\x54\x96\x61\xd3\x49\x55\x5a\x4b\x76\x8e\ +\x46\xe5\x81\x39\x40\xf4\x13\x23\x70\x06\x78\xfa\xe2\x5a\xcc\x97\ +\x80\xc4\x32\xd5\xfd\xf1\xca\x1b\xd4\x36\x49\xb7\xbd\x68\xaa\x77\ +\x6f\x9c\x8d\xe3\x69\x93\x29\x9e\xab\xdf\x9f\x73\xb2\xff\xfb\xb3\ +\x4e\xbe\xd3\xd5\x3a\xfe\x15\x12\xaf\x79\xcf\x78\xb2\xf7\xaa\x31\ +\x93\x1d\x4f\xc7\x9b\xe8\x27\xc9\x8c\x23\x76\xb6\x21\xa4\x2b\x1d\ +\xde\x13\xbf\x24\x3f\xf2\x25\x7f\xca\xa1\x3c\xca\xad\x56\x9e\x78\ +\x88\x4b\xe1\xcb\x5b\xd5\x17\x3c\xd1\x5e\x1c\xf9\x4e\xe9\x67\xdd\ +\xbb\xce\xa5\x2e\x7f\xaa\x41\x82\x27\x2d\xf1\x80\x34\x59\x0a\x5a\ +\x59\x7f\xbe\xb2\x23\xbc\xdb\xb3\xdb\xc7\x6b\xe2\x87\xb4\x28\x4b\ +\x1e\xd5\x1a\x59\xb3\x3e\xe4\xba\x62\xeb\x2a\x5b\xd4\x9e\x54\x8d\ +\x02\x2c\x01\xe7\x2e\x0c\x44\x2c\x4d\xf1\x38\xca\x59\xe2\xd1\x94\ +\xc0\xd5\x56\x79\x4b\x3a\x3b\xcc\x1c\xae\x62\xc0\x9a\x04\x7c\xbb\ +\xe2\x22\xbe\xf9\xe9\x02\xbe\x5e\x76\x4e\x4b\xe2\x75\x5f\xb9\x67\ +\xb8\x3a\x01\x83\xd6\x5e\x41\xa2\xa5\x3e\x58\xe8\x38\xb5\xa0\x2f\ +\xd6\xda\xd9\x21\x60\x5a\xdf\xea\x46\x29\xf2\xa7\x1c\xca\xa3\x5c\ +\xca\x27\x0e\xe2\x21\x2e\xc1\x67\x80\x94\x89\xed\x70\x63\x64\xeb\ +\x2a\x93\x4f\xbb\x6c\x94\x72\x7d\xbb\xff\x53\x8b\x8c\xbc\x25\xd5\ +\x96\x60\x78\xd3\xd3\xcb\xa3\xd2\xd1\x69\x73\xf9\xac\xd9\xb3\xce\ +\x9b\x7d\xd3\xeb\xd0\xb5\x61\x2d\xaa\xd8\xa4\xfc\x60\xa6\x1c\x90\ +\xec\x8d\x28\x8c\x91\xf6\x71\x7f\xe0\x7c\x20\x68\x3c\xe0\xde\x9b\ +\x8d\x0a\x0c\x4a\x72\x64\x7e\x62\x08\xce\x5c\xfa\x77\x6f\xe2\x7b\ +\xcf\x14\x4c\x71\xbd\x8d\x09\xdb\x92\xc0\x3c\xfe\x98\x2d\x37\x15\ +\x8d\x75\xbe\xa9\x52\xed\xdf\xb9\x24\xab\xa4\x46\xda\xc4\xfa\xca\ +\xd5\x2f\x2d\xfa\x0c\x3f\xfd\xf4\x13\x42\xe6\x1b\x49\xf9\xbb\x26\ +\xf9\x92\x3f\xe5\x50\x1e\xe5\x52\x3e\x71\xe8\x94\xff\xd9\x00\xa9\ +\x12\xb3\x6e\x8d\x68\x85\xe9\x5f\x75\xdc\x2f\x51\xbf\xdb\x1f\x55\ +\xac\xff\x5b\x29\x7a\xba\xaf\xaf\x4f\xe6\x5a\x7b\xbb\x8a\x61\x96\ +\x43\x31\x63\xd0\xd7\x9a\xeb\xc3\x5a\xe0\x86\x34\x28\xa7\x73\x39\ +\xd8\x19\xb0\x53\x53\xd6\xdc\xf7\x0c\x3c\x2c\x44\xb2\x22\xcb\xae\ +\x4e\x36\x35\xb2\xd3\x93\xbd\x7d\xdc\x9f\x75\xf1\x61\x76\x1d\xac\ +\x0b\xcb\x56\x85\x95\xe5\x81\x99\x58\x2a\x45\x8c\x1f\xf7\xa4\x93\ +\x58\xd0\x60\xbd\x81\xfd\x83\x2a\xa3\x93\xf3\x7d\x5d\x5d\xe7\xc9\ +\xb2\x2e\x90\x5d\x00\x11\xcb\xcc\x50\xb9\xbc\x2e\xf9\x92\x3f\xe5\ +\x50\x1e\xe5\x52\xbe\xc2\x91\xb3\xbc\x37\x92\x46\xb7\x11\x7c\x2d\ +\x61\xff\x6d\xfb\xb3\xb2\xee\xfb\xfe\x99\xb2\xdd\x9f\x39\x89\xbd\ +\x2b\x5e\xb1\xcb\xfa\x3b\xeb\xdc\xe9\x66\xdf\x6a\x13\x2c\x5a\x80\ +\xfd\x03\xb4\x74\xee\xaa\x3e\x28\xde\x3a\x8c\xed\x69\xaa\x23\x03\ +\xd1\xca\x1b\x74\x0d\x4b\xbb\xcc\x80\x1d\x3d\x58\xaf\xd7\x2d\x8d\ +\x1f\x6b\x21\xe0\x97\x52\x56\x97\x54\x97\xe8\xce\xd8\x02\x56\x71\ +\x14\xb9\xc6\xaa\x6e\x51\x76\x90\xaa\x74\x56\xe9\x0f\xb5\xd5\x3b\ +\xc7\xfd\x55\xed\xe1\xe4\xb8\x19\x51\x6b\xad\x50\xe5\x33\x88\x7c\ +\xc9\x9f\x72\x28\x8f\x72\x95\xfc\x07\x0b\x7b\xe2\xc6\xf0\xe6\xb8\ +\x3e\xac\xb9\x76\x69\x9f\x77\x4f\x8a\xdb\x0f\xe5\x89\xef\xa9\xb6\ +\xca\x0a\xc3\xfa\xfd\xfa\xf5\x9b\x3e\x6c\x40\xff\x6b\x27\xa5\x4f\ +\xe7\xba\x45\x53\x24\x8d\x6a\x85\xec\xc5\x9f\xa9\xfa\x7b\xa9\x87\ +\x15\x23\xf0\x93\x46\x69\x6e\x49\x3c\x94\x70\x9d\x7a\x19\xa0\x6a\ +\x47\x2f\xe6\xe9\x98\xad\x55\x7d\xc1\x51\xd7\xaa\x10\x79\x55\x47\ +\x87\xe5\x9a\x7d\xc3\x2c\xbf\x31\x99\x59\xb5\xe9\x5d\x35\xdb\x59\ +\x9e\x23\x20\x81\x19\x47\x9c\xe7\xa0\xfc\xc0\xf7\xd5\x0d\xd3\x94\ +\xa3\xe4\x15\x6c\x30\xc1\x5d\x9b\xce\x10\x2c\xec\x09\xac\x18\xdd\ +\xab\x23\xcf\x31\xc3\x88\xf5\x99\x74\x8b\xb3\x0e\x27\x3b\x43\xbf\ +\xee\x5d\x3f\xda\x14\x32\xa0\x45\x36\x3f\x65\xb9\x2e\x94\x32\x5e\ +\xce\x0a\x2b\x7a\x57\xb7\xca\xab\x37\x48\x2d\xbd\x41\x88\x19\x19\ +\x06\x2a\xed\xc1\xef\x55\x92\xf2\x7c\xaa\xae\xd4\x76\xf6\xce\x6f\ +\xa9\xba\x63\x9c\x99\x5c\x6d\xb0\xb5\x32\xde\xa3\xd0\x1f\xb1\xdb\ +\xdf\x0f\xb1\x6e\x4b\xa0\x91\x3a\x3f\xf9\x92\x7f\xd1\x16\x0b\x64\ +\xcc\xe9\x0e\x76\xb1\x11\xc3\x49\xb3\x16\xc5\xbd\x3f\xf9\xd0\x99\ +\xd8\x88\xf1\x99\xb6\xcb\x8b\x80\x57\xc5\xc5\x7a\x08\xd9\x3a\x7c\ +\xdd\xfa\xea\x25\xf3\xa6\x55\x6c\xa6\xbc\x2a\x40\x52\xad\x3b\xca\ +\x56\xd9\x5f\x19\xa2\xd4\x6b\x3c\xca\xf7\x4d\xd7\xa5\xd5\x8e\xd8\ +\x42\x7b\x64\x39\x92\xb3\x80\x5b\xd5\xdf\x0a\x64\x00\xd7\x9f\x50\ +\xf5\x37\x03\x4c\x63\xcb\x2c\xff\xa4\x82\x5b\x4e\xc4\x6a\x7e\x32\ +\x87\x38\x37\x5b\x14\xee\x1c\xa5\xf8\x66\xfe\xf0\x19\x12\xa5\x81\ +\x8b\x32\xaf\x98\x37\xd1\xfa\x18\xb6\x4e\xed\x2a\x58\x88\x89\xd8\ +\xfe\x96\x0f\x26\x78\xa4\x94\x08\xfb\x9e\x58\x7c\x5a\xcf\xae\x5d\ +\xdc\xbd\xfb\xb7\xbc\x77\xd9\xf4\x9f\xda\xcb\x83\xde\xc2\x55\x01\ +\x76\x5b\x3c\x22\x73\xc1\xa7\xe2\xa2\xa6\xec\xce\x50\xc7\xd2\xb2\ +\x7d\x33\x91\xf5\xaf\x5f\x8b\xe4\x02\xf7\x14\xc9\x35\x29\x8f\xbf\ +\xe9\x72\xf8\xe5\x21\xf3\xd4\x69\x2e\xcd\x73\x26\x22\x24\x89\x79\ +\x62\xe3\x34\xa4\x4d\xff\x40\x29\x4e\x19\x97\xa5\x43\x2c\x74\x60\ +\x8b\xec\xfe\x9f\x7c\xe8\x4b\x0c\xc4\x42\x4c\x7f\xeb\x27\x33\x8f\ +\x4f\x8b\x8d\xc4\xf2\x7d\xe4\xbc\xb0\xa0\x4f\xf7\xce\xbb\x43\x0c\ +\x9b\x65\x13\x60\x82\x49\x63\x92\x02\x7a\x4b\x1a\x9e\xd3\x67\x77\ +\x43\xae\xbd\xb1\xca\xcd\x17\x69\x9e\x7c\x2b\x94\xaf\x88\xd7\x8a\ +\x54\x49\xbe\x44\x23\xd7\x8e\x16\x78\xb0\xe4\x4b\x1c\x5f\x31\x01\ +\x52\xb8\x45\xec\xf7\xfd\x65\xb6\x75\x7c\x8f\x18\x37\x2d\x1c\xde\ +\xf3\xfd\x60\xca\xa4\x6c\x62\x20\x96\xe7\xf0\xe1\xe4\x6f\xbc\xa1\ +\xa9\xcc\xc4\x40\x01\x63\x3b\xb0\x7b\xa7\x60\x97\xbe\xad\xd3\x4e\ +\x98\xb6\xc0\x25\x93\xb7\xf8\x4d\x91\xa2\x04\xf3\x66\x2c\x4c\xfc\ +\xe6\x8b\xb1\xea\x7f\xbc\x26\x55\x7f\x39\xc6\x67\x39\xe6\xe0\xe6\ +\x95\x60\xd3\xc6\x59\x8b\x96\x9a\x3d\x86\x2d\xee\x8f\xfc\xb4\x63\ +\x38\x65\x50\x16\x65\x52\xf6\x5f\xc5\xff\x54\x1b\x19\x85\x5a\x0b\ +\x99\x09\xc0\xd9\xd2\xbf\xe3\x3a\xc2\xc2\x3c\xcf\x71\xf0\xa7\x88\ +\x36\x6e\x59\x79\xde\xac\x79\x55\x4e\x6e\x11\xf2\x8a\x1e\x7f\x2f\ +\x58\x5a\x81\xa2\x27\xc4\xef\x07\x75\xdf\x0e\x16\x94\xe1\x82\x79\ +\xf3\xaa\x83\xd6\xdf\x6a\xa2\xa2\x0e\xc3\xd3\xdd\x2d\x4f\x66\xda\ +\x81\x3c\xc9\x9b\x32\x28\xeb\xf9\x7e\x3a\xfb\xc7\x86\xd0\x97\x99\ +\xfa\x40\x8c\x60\x6e\x6d\x6d\x7d\x6e\xd2\xa4\x49\x45\x42\x55\x43\ +\x87\x0e\xcd\x1e\x6d\x39\x3c\x75\xe9\xc4\x11\x29\x9b\x57\xda\xe7\ +\x3a\xba\x86\x6a\x1c\xdd\xc2\x35\x5b\xd6\x6f\xcb\xb5\x9b\x63\x73\ +\x73\xde\x8c\x69\xf1\xf3\xe6\xcf\x3f\x2f\x87\xb0\x6c\xf9\x3a\xb4\ +\x54\x52\x75\x9a\x3e\x7d\xfa\x0c\x27\x2f\xf2\x7c\x16\x1d\xa8\xcf\ +\xba\x68\x59\x53\xa8\x81\x8d\x8d\x8d\xa9\xb4\xb4\x1d\x95\x63\x6d\ +\x16\x5f\x6e\x98\xb8\x0c\x8b\x88\x42\xae\x78\x03\x29\xf1\x66\x32\ +\x1b\x18\x8b\x1f\x7f\x30\x5d\x2a\x5f\x85\x56\x49\x9a\x2e\x41\x0c\ +\xd6\x82\x3c\x9e\x25\x46\xfe\xe7\x6f\xa5\xe5\xcb\x97\xff\x53\xd2\ +\x7b\xc3\xb6\x7b\x07\xad\xde\xb1\xe7\x88\xf7\xce\x7d\xb1\xfe\x2e\ +\xbe\xc1\xeb\xe5\xde\x2c\x49\x7c\x4c\xe2\xa7\xf2\xac\xd9\xfd\x5d\ +\x78\xfe\x1f\x54\xc7\x67\x32\x0b\x29\x7c\xe5\x00\x00\x00\x00\x49\ +\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x13\x17\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\ +\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ +\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x06\xec\x00\x00\x06\xec\ +\x01\x1e\x75\x38\x35\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\ +\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\ +\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x12\x94\x49\x44\ +\x41\x54\x78\xda\xed\x9b\x09\x90\x5c\x47\x79\xc7\xff\xdd\xef\x9a\ +\x73\x67\xf6\xd2\xae\x56\xbb\xba\xbd\xb2\x84\x0e\x0b\x1b\x51\xb2\ +\x1d\x0a\x6c\x8e\x40\x9c\x40\x48\x0a\xca\x54\x80\x70\xe4\xa8\x8a\ +\x53\x60\x08\x15\x8a\x22\x45\x48\x02\x14\x47\x01\x45\x05\x63\x28\ +\x53\xa9\xd8\xd8\xb1\x62\x82\x6d\x8e\x02\x0c\x54\x30\x92\x15\x09\ +\xc9\x96\xac\xd3\xd2\xae\x76\x25\x4b\x7b\x68\xaf\x99\xdd\xd9\x9d\ +\x79\xf3\x8e\xee\x7c\xaf\x5f\xc7\x33\x7b\x69\x25\xb0\x1c\x57\xa1\ +\x4f\xfa\xeb\xeb\xd7\x3b\xf5\x66\x7e\xff\xef\xeb\x7e\x6f\x34\xb3\ +\x4c\x4a\x89\xdf\xe5\xe0\xa4\x6b\x06\x5c\x33\xe0\x9a\x01\xd7\x0c\ +\xb8\x66\xc0\x35\x03\x5e\xfa\x60\x51\xe0\xff\x39\xae\xca\x7d\x00\ +\xbb\xee\x73\xad\x46\xd2\x79\x95\x44\x78\x13\x24\xef\x92\x12\x79\ +\xce\xd1\x68\x9a\x46\x63\xd2\x36\x9a\x52\x09\x33\xcf\x18\xcf\x80\ +\x49\x37\x0c\x51\x0c\x05\x0a\xbe\x2f\x0a\x55\x5f\x4c\x54\xaa\xfe\ +\xf8\xb6\x75\xa9\x83\x87\x1f\xff\xab\x7b\xf1\x12\x84\xf9\xdb\x97\ +\x11\x0c\xaf\xf8\xda\x2d\x8d\x59\xeb\x35\x89\x84\xb5\xa3\x54\x0e\ +\xb6\xb7\x2c\x6f\x59\x99\x72\x2c\xa4\x93\x26\x32\x29\x0b\xd9\xb4\ +\x85\x5c\xc6\x42\xc2\x31\x60\x5b\x06\x4c\x83\xc3\x88\xc4\x59\x86\ +\x31\x64\x00\x74\x0a\x01\xb8\x5e\x88\x3d\x87\xc6\x83\xa1\xbe\x5f\ +\x5a\x00\x5e\xde\x06\xb0\x1b\xee\x5d\xd1\xdd\x95\xff\x9b\xed\xef\ +\xb0\xdf\xdd\x37\x90\xeb\x5c\xd7\xd5\x00\xce\x01\xc7\xe6\x24\x03\ +\x09\x3b\x86\xa5\x63\x3d\xa6\xf9\x48\xb6\xa9\xc6\x96\xc9\x94\x11\ +\x8c\x01\xa1\x00\xaa\x04\xbf\xef\xe8\x04\x5a\xf3\xe1\x91\xde\xfd\ +\x67\x72\xa0\x78\xd9\x19\xc0\x5e\xf7\x4b\x33\x17\x0e\xbf\x6d\xd3\ +\x9a\xdc\x5d\xc9\x64\xc3\xad\x4d\x8d\x0d\x46\xa1\x54\xc5\xaa\x8e\ +\x26\x30\x82\xb1\x6d\x05\x1c\x03\x92\x6c\xc7\xd0\x63\x03\x96\x1d\ +\xcf\x99\x26\x87\x11\xc9\x60\xaa\x7d\x04\x24\x02\x21\x31\xed\x4a\ +\x4c\x56\x8c\xca\xc9\xbd\x8f\x77\x02\x38\xff\xb2\x33\xc0\xda\xf9\ +\xdd\xd7\x6e\x5f\x9b\xbf\x2f\x9f\x6d\x5f\x37\x34\x56\x41\x7b\x6b\ +\x0e\xe3\xd3\x8c\x40\x12\x90\xdc\x80\x50\x30\x1c\x81\x34\xc0\x25\ +\x03\x17\x1c\x2c\xe0\x90\xe0\x08\x49\xbe\x60\x70\x7d\xc0\xe0\x91\ +\x24\xb1\x4b\x48\x09\x25\x3f\x94\x38\xda\x57\x46\x02\x13\xc7\x67\ +\x4a\x85\x9b\x40\xf1\xb2\x31\x80\xdd\xf2\xe8\xb2\x5c\x22\xf9\xd5\ +\x1b\x36\xb4\xdd\x79\x71\xc2\xc5\xc8\xa4\x4f\x00\x16\x38\x67\x08\ +\x25\x00\x82\x05\xc1\x8a\x00\x04\xca\xe0\x4b\x0e\x2f\x8c\x2a\xcd\ +\x60\xfa\x24\x83\xc5\xd0\x06\xc0\x19\x03\xe7\x50\xf0\x00\x53\xf0\ +\x42\x4a\x94\x5d\x81\x54\x32\x39\xf5\xd4\x4f\x1f\xee\x06\x38\xc0\ +\xf8\xcb\xc3\x00\x76\xf3\xcf\xb7\xb4\xe6\x1a\x7f\xd1\x90\xb6\x5a\ +\xcf\x0c\xfa\x04\x61\x13\x0c\x83\x90\x04\x24\x19\x01\xc5\xe3\x80\ +\x80\x0d\xca\xbe\xe0\xe0\x3e\x08\x32\x12\x81\x2b\x78\x46\xc0\x0c\ +\x94\x94\x50\x77\xe5\x13\x92\x91\x00\xd7\xe3\xc8\x89\x9e\xd3\x9e\ +\x57\xbd\x09\x64\x2e\x98\x81\x28\x3e\x73\xf3\xcd\x2b\x66\x86\x87\ +\x1f\x19\xef\xef\x3f\x2c\x81\x43\x9c\x64\x03\x47\xbf\x26\x65\xf5\ +\x6a\x1b\x40\xf0\xbb\x77\x80\x27\x7e\x5c\xaa\xf2\xa6\x42\x59\x2a\ +\x78\x53\x30\xbd\x7b\x03\x66\x54\x51\xc9\x09\x54\x57\x56\x12\xa8\ +\x40\x04\x4b\x42\x2c\x30\x5d\xcc\xd8\x84\xfa\x90\x32\x9e\xf7\x42\ +\x89\xed\xeb\xec\xb1\x1f\xdd\xbf\x6b\x73\x0d\x9e\x44\x91\xe4\xfc\ +\xb3\x76\x5b\xdb\xce\xd6\x15\x2b\x76\x7a\xd3\xd3\x70\x4b\x25\xb8\ +\x53\x53\xc1\x47\xd3\xe9\x43\x7e\xb9\xfc\x98\x00\x1e\xff\x57\x29\ +\x8f\xbf\xe8\xf7\x01\xec\xf7\x7e\xdd\x0d\x66\x1c\x04\x43\xb6\x6e\ +\x76\x56\xd6\x70\xaa\xc2\xbc\x2e\x73\x65\x80\x56\xfc\x40\x95\x05\ +\xe2\x6a\x0b\x11\x29\x5a\x3e\x92\xb2\x44\xf7\x0a\x0b\xd6\xe4\xbe\ +\x83\x87\xf7\x7e\xef\x26\x05\xcf\x38\x28\x3f\xfe\x8d\x2d\x85\x4f\ +\xd2\x39\x0e\xe5\x57\xad\x32\x79\xf4\xd8\x30\x44\xe8\x79\x4a\x81\ +\xeb\x62\x66\x6c\x0c\xa5\xc1\xc1\x28\x9f\x71\xa7\xa7\xff\x0b\xc0\ +\x3d\x5f\x92\xf2\xdc\x8b\x63\xc0\xeb\x8e\xff\x84\xd2\x9b\x66\x41\ +\xb3\x7a\x23\x2e\x31\x66\x97\xff\x73\xc7\x62\xf8\xe3\x9d\x7c\xf0\ +\xe1\x7b\x3e\xd2\x4e\xe0\xfc\x05\x03\x38\x7f\xfc\xdf\xb6\x15\x13\ +\xcb\xb7\x6d\x7b\x53\xaa\xa5\x05\x22\x82\xae\x54\x40\x55\x87\x4f\ +\x39\xa0\xac\x8f\x95\xca\x64\xc6\xe4\xb9\x73\x81\x5b\x2c\x3e\xc4\ +\x84\xf8\xfc\xa7\xa4\x3c\xf1\x1b\x2f\x01\x76\x5b\xff\x1f\xc1\x48\ +\x12\xfc\xd5\x8f\x1d\x1b\x4c\x3c\xf3\x3f\x3f\xba\x08\x6e\x76\x28\ +\x78\x70\x44\x79\x67\x93\x68\xc9\xe7\x72\x37\x37\xe4\xf3\x90\x42\ +\xc0\x64\xd1\xd2\x33\x60\x58\x16\xcc\xa8\x13\x48\xc1\xff\x49\x08\ +\x38\x4d\x4d\x68\x48\x26\x4d\x32\xe0\x3d\x33\x83\x83\xef\xfe\x22\ +\x63\x0f\x13\xd8\x5d\x77\x4b\x39\x71\xe5\xef\x05\x0c\xf1\xa7\x58\ +\x34\xd8\x8b\xa6\xe6\x2c\xc7\xca\xe6\xa0\xff\xf4\xb3\x4f\x6e\x07\ +\xb3\x00\x66\x02\xdc\x52\x7a\xdf\x3a\xb9\xb9\xa1\xa9\x89\x85\x13\ +\x13\xf0\x49\xa2\x50\x00\x68\xfd\x73\xaa\xb6\xe9\xba\x30\x7d\x1f\ +\x16\xc1\xdb\x11\xbc\x94\x48\x02\x48\x32\x86\x6c\x22\x81\xd6\xe5\ +\xcb\xd9\xb2\xf6\xf6\x3b\x93\x86\x71\xf4\x9b\x8c\xbd\xe1\xca\x37\ +\x41\xc9\x6e\x04\xd8\x6f\x7c\x5f\x7c\x39\x61\x19\xc0\x6b\xb6\x5a\ +\x78\xf2\x89\x07\xcb\x0a\xba\xb6\xf6\xf1\x86\x65\x21\xd6\x58\x7e\ +\xce\xa0\x16\x97\xd1\x9a\x8f\xaa\x0f\xa8\x4e\x00\x41\xb3\x20\x00\ +\x27\x03\x98\xe7\x29\xf1\x6a\x15\x06\x1d\x0b\x9a\xd7\xdd\x01\xdb\ +\xb6\x91\x68\x6c\xec\x08\x8a\xc5\x9f\xde\xcf\xd8\xa7\xde\x23\xe5\ +\x3f\x5f\xbe\x01\x8c\xad\xfc\x4d\x0d\x58\x1a\x9c\x61\xeb\x5a\x13\ +\x5b\x56\xb3\x99\x91\xe1\xa1\xc3\x17\xce\x9e\xb8\x45\x19\xa0\x5b\ +\x9f\x73\x13\x7f\x7d\xbd\x07\xa3\x58\x06\xfc\xf8\x7a\x2a\xb4\xa9\ +\x4c\xc6\x3b\x28\xd3\x26\x48\x12\x27\x03\x84\xef\xc7\x46\x91\x11\ +\x26\x29\xa4\xb1\x3a\x8e\x1e\x63\x59\x8c\x8c\xf9\xa7\xef\x31\x56\ +\x7a\xbb\x94\x5f\xbd\x3c\x03\x44\x70\x0e\xdc\x7e\x05\x5e\xc4\xb0\ +\x4d\x46\xd0\x1c\x5b\xd7\x18\xd3\xbd\xfd\x43\xa7\x1f\x7c\xf8\x99\ +\x0d\x5d\xcb\xcc\x3c\xd8\xec\xea\xbf\x77\x8d\x40\xdb\xf8\x05\x84\ +\x53\x53\xe0\xa6\xa9\x3a\x4a\x72\x0e\xae\xaf\x9b\x4a\x64\x80\xd4\ +\x42\x5c\x79\x95\x8d\xc8\x0c\xea\x1a\x83\x96\x89\x88\x96\x09\x1d\ +\x2b\xc3\xa0\xe2\xcb\x4f\x30\x36\xf4\x46\x29\x77\x2d\x6d\x40\x50\ +\x2c\xc1\x5e\xb6\x64\x7b\x2f\x1d\x8c\xc0\x11\x41\x63\xcb\x2a\x3e\ +\xdd\x7b\x6e\xe8\xf4\x77\x76\x1d\xda\xe0\x07\xc1\x2b\x09\x96\xc0\ +\x1c\xa9\xaa\xaf\xe1\x13\x06\xc7\x07\xbb\x09\xec\xbf\xcf\xa8\x0d\ +\x8f\x93\xf4\x6d\x23\x0c\xe8\xd0\x5d\x00\x82\xa6\x2a\x2b\x50\x10\ +\xb0\xa4\xca\xf3\x48\x35\xe0\xb9\x99\x31\x32\xe1\xc7\x8c\x3d\xf6\ +\x66\x29\xab\x97\x36\xa0\x74\xba\x19\x2d\xed\x1e\x00\x1b\x60\x57\ +\x04\xac\x93\x06\xe7\xd8\xb2\x92\x4f\xf7\xf4\x0f\x9f\x7e\xe0\x3f\ +\x0f\x5d\x1f\x04\x82\xc0\x39\xc0\x13\x0a\x3a\x84\x49\x39\x92\xa1\ +\xf4\xf1\x2d\x0c\x89\xa7\x7e\x0e\xb7\xb7\x17\x1a\x5c\xc9\x27\x31\ +\xe8\x3d\x40\x8b\x49\xa9\xe6\x8c\x39\x5b\x33\xe6\x1f\xd7\xe7\x8e\ +\x0c\xf0\x01\x00\xf7\x2c\xb1\x04\xaa\xd7\xc1\x1b\xdd\x03\xa7\xfd\ +\xd6\xcb\x02\x06\x66\x5d\xd7\xb7\xae\x66\xd8\xbc\x8a\x97\x7a\xce\ +\x0e\xf5\x3c\xf0\xc8\xb3\x1a\xdc\xc0\xac\xcd\x0e\x1c\x42\x9a\x1c\ +\x7a\xae\x25\x61\xe0\x5d\x6b\x25\xa6\x1f\x3d\x86\x14\x50\xdf\xba\ +\x98\x21\x25\xe7\xc1\xe8\xbc\x18\xf0\xe2\xa6\xdc\xb9\xb4\x01\xdc\ +\x01\x26\x8f\xec\x40\xeb\xb2\x13\xe0\xe6\xa6\xc5\x80\xe7\x83\x43\ +\x81\x9f\xee\x1b\xea\x7d\xe0\x91\xe3\x04\x1e\x12\xb8\xa9\xab\xa9\ +\x85\xda\x58\xc8\xd0\x89\x0d\xb0\xf0\xc5\x9d\x16\xda\xb6\xad\x41\ +\xc3\xfb\xdf\x8f\xd2\xc3\x0f\x43\x96\xcb\x2f\x00\x0c\x91\x12\xaa\ +\xda\x2f\x4a\xb4\x2e\xbd\x07\x18\x0e\x10\xc2\xc6\xe8\x2f\x96\x37\ +\xaf\x7d\xe3\xb1\xf1\x19\x73\xf3\xa2\xe0\x36\x03\xbd\x6e\x6c\xea\ +\x44\xe9\x54\xdf\x85\xfe\x07\x1e\x39\xd5\x1d\x04\x72\xbb\xaa\xb4\ +\x41\x70\x52\x90\x02\x40\x90\x64\x08\x1a\xe8\xb9\x10\xfe\xd4\x64\ +\x13\xfd\xa3\x9e\x6f\xef\xd3\xfd\xe8\x5a\xd5\x80\x1d\x7f\x70\x07\ +\x52\x3b\x77\x62\xea\xbe\xfb\x50\xdd\xbf\x1f\x13\x00\xce\x92\x9e\ +\x27\xa5\x49\x59\x52\x86\x94\xd7\x62\xb8\xb2\x28\x02\x4d\x4b\xde\ +\x0a\xb3\x57\xff\x40\x22\xac\x02\xc2\x85\x69\x04\x6e\xd0\x78\xfb\ +\xb3\xe9\x74\xea\xd5\x33\x6e\x7d\xc5\x63\xf0\x8d\x2b\xc2\xe9\x53\ +\xbd\xe7\xcf\x1f\x38\x7c\x66\x5d\x18\x4a\x1b\xc2\x05\x44\x05\x08\ +\x23\xcd\x90\xaa\x75\x9b\x27\xd3\xe3\x58\x2d\xe9\x69\x77\xec\xe2\ +\x40\x22\x32\xeb\x6d\x23\xbf\x42\x8b\x37\x81\xfc\x96\x1b\x70\xc7\ +\xbb\xfe\x04\x37\x6d\x5e\x0b\xef\xa9\xa7\xf0\xab\x6f\x7e\x13\x63\ +\x85\xc2\x82\x3d\x68\xe9\x72\xb6\x20\xa6\xe2\x58\x3a\xf6\x00\x07\ +\xfe\x4c\xca\x1d\x97\x36\x60\xe7\x13\x52\x1b\xa0\x55\x95\xd7\x6f\ +\xe8\xde\x5f\x4d\xbe\x62\xcd\xc5\x49\xde\x76\x03\x81\x5f\x4f\xe0\ +\x27\x4e\xf6\x0f\x1d\x38\xd2\xbf\x3a\xac\x4e\x5a\x08\x26\xe3\xc7\ +\x4a\xe8\x16\x67\x7a\x5c\x03\x9e\x3b\xd7\xe8\x14\xbd\xc2\xf8\x45\ +\x3b\x32\xe0\x9d\xc3\x3f\xc7\xb2\xea\x18\x04\x24\x42\x00\xcb\xb6\ +\x6e\x9c\x7c\xd3\x7b\xdf\x69\x74\xac\xec\xcc\x9c\xfe\xd6\xb7\x30\ +\xf8\xb3\x9f\x5d\x72\x21\x9a\xa4\x0e\x52\x27\xc9\xc6\xe2\xf1\x61\ +\xe0\x17\x8f\x4a\xf9\xfa\x4b\x1b\x70\xcb\x93\x92\xa0\x81\x50\xc1\ +\x93\x5c\x35\xb6\x2d\x39\xfd\xd6\xdf\xbf\x75\x60\xa4\x50\xb6\xf6\ +\x1c\xe8\x59\x19\x56\xa7\x4c\x04\xa5\x79\xd5\xd5\x9a\x33\x37\xdf\ +\x8c\x9c\x39\xea\x4f\x16\xc7\x2d\xc0\xc4\xbb\x07\x7f\x88\x76\x77\ +\x34\x32\x80\x04\x84\x94\x07\x10\xa0\x65\xf3\x86\xe0\xad\xef\x7d\ +\x17\xeb\x12\x81\xf1\xdc\x57\xbe\x82\xca\xf0\xf0\xa2\x46\x30\xad\ +\x36\xd2\x4a\x52\x02\xb3\x63\x0c\x28\xbe\x03\x48\xf6\x48\x99\x58\ +\x7a\x13\xd4\xd7\x5c\x3d\x50\xf2\xfc\x6a\x66\x7a\xf8\x40\xe7\xa9\ +\x3e\x99\x0e\x2b\x25\xfd\xae\x2d\x15\x83\x31\x00\xb2\x76\xe9\x8a\ +\x83\x2f\x0c\xaf\x0d\x90\xbc\x04\xf0\x34\xc9\x80\x03\x13\x49\x30\ +\x08\x25\xa0\x80\x10\x06\x8d\x27\x8e\x9d\x36\xbf\xfd\xb1\x7f\x44\ +\xdb\x96\xeb\xc3\xb7\xfc\xed\x87\xd0\xd9\x73\x8a\x0f\x3e\xf6\x18\ +\xf3\x8a\xc5\x05\x4d\xd0\xa0\x28\x90\x56\xeb\xae\xd0\x11\x7c\x16\ +\xd6\xd3\x19\x88\xdb\x97\xde\x04\x79\xa2\x0e\x5c\x67\xe1\x83\xaa\ +\x4d\x29\x6d\x05\x22\x0d\x98\x99\x39\x40\x57\x38\x86\x80\x80\x0d\ +\x98\x91\x81\x26\x1c\x52\x02\x5c\xc1\x07\x91\xd9\x90\xda\x10\x28\ +\x15\x8e\x3e\x67\x7c\xe7\xe8\x67\xb1\x6c\xcb\xc6\xf0\xcd\x1f\xff\ +\x04\xd6\x8f\x8f\xf2\x81\x5d\xbb\x58\xe5\xf9\xe7\xb1\x58\x5c\x20\ +\x4d\x93\xd6\x91\xee\x45\x62\x5f\x05\xec\xf6\x2c\x02\xa8\x58\xba\ +\x03\x64\x9d\x77\x53\xf1\x86\xc6\xcd\xa8\x2e\x3c\x60\x29\xc0\x08\ +\xe7\x54\x96\xcf\x69\x77\x3e\x07\x5c\x46\x7f\xe3\xac\x25\x85\x23\ +\xe3\x67\x8f\x0d\x48\x6a\x03\x26\x10\xc0\xa2\xb1\xa1\x97\x83\x54\ +\x99\x45\x59\x19\xf1\xe0\xc7\xff\x05\xad\x5b\x37\x85\x7f\xf8\xd1\ +\x8f\x61\xbd\x5f\x35\x86\x1e\x7a\x08\x93\xcf\x3c\xb3\xe0\x5d\x4a\ +\x25\x99\xc4\xe7\x2b\x62\xcc\x83\x7d\x6b\x16\x21\x04\x0c\x30\x0a\ +\x49\x71\xe9\xcb\x20\xa4\x92\x82\x07\xa3\xb9\x14\x25\x03\x92\xd9\ +\x2c\x40\x64\x80\xa8\x01\xab\xcc\x6b\x63\x15\x6c\x76\x07\x49\x12\ +\xc3\xac\x39\x21\x38\x60\x64\xd5\x79\x2d\xdb\x81\xe3\x5b\xf0\x45\ +\x08\x57\x32\x24\x04\x87\x50\xc8\x40\xa8\xb3\xa8\xcb\x53\x47\x4e\ +\x1a\xf7\x7f\xe8\x93\x68\xdd\xb6\x29\xbc\xe3\x2f\x3e\x88\xed\x77\ +\x67\x8d\xe1\x07\x1f\xc4\x38\x6d\x96\x32\x0c\xc1\x1d\x07\xc3\x9e\ +\x1f\xec\x66\x59\x0f\xa8\xb6\x78\x90\x48\x13\x7c\x58\x63\xf6\x17\ +\x34\x80\xcc\x31\x70\xfb\x19\x7d\x2f\x50\x06\x98\x45\xe3\x34\x65\ +\x53\x49\x70\x2e\x95\x01\x26\x16\x00\x17\x80\x9c\x05\x59\x4b\xac\ +\x56\x79\xc6\x38\x72\x59\x07\xd9\x95\x67\xf9\xf9\x0d\x5f\x07\xeb\ +\xdf\x86\x7c\x49\x56\x93\x70\x9c\x29\xcf\x85\x15\x98\x30\x24\xc1\ +\x4a\x42\x15\x0a\x5a\x65\x01\xd2\x1c\x23\x4a\xcf\x9e\x34\x1e\xbc\ +\xeb\x13\x68\xde\xba\x51\xdc\x71\xd7\x07\xe4\x8d\x77\xdf\x6d\x0c\ +\xef\xda\x85\x27\x4f\xf5\x54\x2f\x1c\xeb\xb7\x5a\xdc\x20\x55\x81\ +\xa1\x1e\x1d\x92\x32\xe0\xa0\x48\x13\xe7\xa4\xee\x02\x98\x35\x78\ +\x45\x91\x56\x40\x32\x88\x97\x82\x29\x55\xeb\x23\x24\x89\xa8\x03\ +\x04\x42\x9e\xa5\xf9\xd9\xa0\xb5\x2a\x2f\x54\xf9\x48\xea\xfc\xc8\ +\x65\x6c\x34\xae\x1d\x01\x5f\xbf\x07\xd5\x65\x07\x4d\x24\x0e\x81\ +\x75\x1f\xc2\x0f\x6e\x58\x66\xbd\x7e\x4f\x13\xf2\xbb\x4d\x64\xc6\ +\x5d\x50\xf1\x20\x94\x01\x80\x50\x26\x48\x1a\xeb\x63\xc8\x59\x86\ +\x48\x52\xe9\xc8\x29\xfe\xd0\x5f\x7e\x0c\x4d\x64\x84\x63\x04\x41\ +\x43\x71\xc6\x69\x4a\x25\x51\x81\x1b\xbf\x06\xcf\xc7\x34\x24\x9c\ +\xb8\x0d\x9b\xf5\x1d\xb6\x3f\xcb\x00\x3d\xce\x93\x74\xdb\xdb\xba\ +\xf2\x5a\x64\x82\x60\x2e\x42\xe9\x00\x5c\x43\x83\xcd\x06\x55\xa1\ +\x8d\x90\x52\x57\x1c\x04\x6e\x21\xb7\x7a\x08\x7c\xdd\x41\x84\xd9\ +\x01\x54\x05\xe0\xf9\x02\xb0\xa0\xe4\xa6\x05\xdf\x73\x7b\x09\x89\ +\x9d\x1c\x1b\xf7\x25\xb0\x72\x77\x0a\x95\x02\x19\x11\x90\x11\x61\ +\x0c\x2c\xd5\xb2\xd1\x63\x49\x63\x59\x1b\xab\x63\x30\x4c\x93\x11\ +\x99\xee\xe5\x3c\x99\xb4\x11\xb7\x89\x54\x99\x51\x96\x41\x6c\x9e\ +\xbe\x77\x1a\x5e\xcc\x80\x56\x30\x56\x9b\x36\x74\x07\x08\x65\x82\ +\x5a\x8f\x82\xd9\xb3\x61\xa3\x21\xc7\xbc\xca\x33\x03\x68\x48\xdb\ +\xc8\xad\x3a\x0f\xb6\x66\x5f\x0c\x1e\x02\x41\x55\xc2\x0f\x24\x08\ +\x0d\x70\x30\x2b\xdc\x94\xc0\xa1\xdb\xca\x38\x41\x46\x6c\xde\x97\ +\xc4\xaa\xbd\x69\xb8\x13\x51\x47\xf8\x11\xac\x86\x86\xee\x0e\x0d\ +\xae\x40\xc5\x0b\x86\x24\x6c\x0b\x29\xc7\x89\xc1\x69\x0e\x42\xab\ +\x2c\xe1\x89\x10\x14\x0d\x24\x63\xa1\x3d\xc0\x8a\x3b\x80\xe9\xc2\ +\xc6\x15\x56\x24\x3c\xa1\xc6\x7e\xe0\xaa\xe3\xf9\xff\x3f\x20\xeb\ +\x8a\xcf\x90\x4d\x73\x34\x74\x9d\x05\x5b\xbd\x17\x41\x7a\x00\x41\ +\x08\xf8\x33\x92\x32\xc1\x87\x42\x19\x20\x24\x4d\x5a\x50\x26\x94\ +\x11\x20\x2b\x6c\xf2\x3b\x3e\x67\xd5\x16\x78\xfa\x35\x33\x38\xf6\ +\x2a\x8e\x2d\x4f\xa7\xb1\x66\x6f\x12\xd5\x42\x15\xbe\x1f\x10\xeb\ +\xec\xea\x0b\x95\xd5\xf2\x50\xc7\x8e\x63\x43\x75\x80\x36\xa0\x5e\ +\x46\xd9\x13\x90\xea\x59\xf9\x3c\x03\xf4\x24\x91\x4a\x2c\x6c\x82\ +\x03\x2f\xe4\x34\x5e\xf8\x1e\x4c\x81\x67\x4c\x64\x57\xf4\x01\x5d\ +\x7b\x10\xa4\x06\xe2\x4a\x97\x22\x68\x0d\x1f\xc4\x2f\x16\x20\xd9\ +\x5e\x44\x0e\x91\x92\xe8\x61\x45\x8c\x99\x2e\x3a\xbd\x0c\x72\x01\ +\x19\xa1\xcf\x5b\x35\x05\x0e\xee\x28\xe1\xe8\x36\x86\xad\x87\x33\ +\x58\xbf\x3f\x09\xaf\x58\x55\x7b\x84\xea\x88\x08\x1a\x22\x36\x41\ +\x2b\x99\xa0\x0e\x48\x38\x60\x02\x1a\x5c\x73\x48\x60\x4a\x88\x49\ +\x54\x10\x00\x10\x8b\x5d\x06\x05\xaa\x43\x13\x70\x3a\x9a\x74\x95\ +\x67\x99\xe0\x4b\x4b\x8d\xeb\x42\x81\x67\x52\x26\x32\x1d\x04\xde\ +\xb1\x07\x5e\x62\x20\x86\x9d\x22\x68\x55\x6d\x20\x14\x42\x9f\x27\ +\x04\x8c\x0a\xd0\x78\x02\xc8\x9f\x04\x26\x24\xe0\xc6\x97\xba\x71\ +\x54\x50\x60\x2e\x1a\x99\x85\xce\x4a\x0a\x39\xdf\xaa\x75\x04\xe9\ +\xc0\xa6\x2a\x8e\xac\x63\xb8\xe1\x78\x16\xdd\x87\x93\x74\xfe\x80\ +\x0a\x22\x5e\xe8\x08\xa8\xac\x0d\x48\x39\x0a\xbc\x26\xa9\x0c\xa9\ +\x7a\xee\x79\x00\x25\x52\x30\xcf\x00\x3d\x39\x8d\x99\x33\xe7\x90\ +\x58\xd1\x04\x39\x77\x43\x03\xc1\xf0\x1a\x38\xe7\x0a\x3c\xdd\x76\ +\x06\xb2\x8d\xc0\x9d\x0b\xb5\x8a\x07\x71\xd5\x75\x5f\xc6\x86\x1b\ +\x33\x31\x74\xc3\x73\x00\xf7\x01\x3f\x2a\x09\x00\x7d\x53\x29\x01\ +\x6d\x84\x87\x82\xe5\xa3\x51\x18\xe8\x9a\xb6\x91\xf3\x0c\x70\x05\ +\xc1\xe0\x01\xd8\xbf\xb6\x8c\xc3\x5d\x1c\xdb\x4f\xe5\xb0\xf1\x64\ +\x06\x7e\x19\xf0\x24\xf4\x72\x10\x64\x80\x8d\x54\x52\x1b\x80\xb8\ +\xf5\xa1\x3b\x61\x64\x26\x3c\x00\x60\x6c\xc1\xfb\x00\x3d\x39\x81\ +\xe9\x13\xc7\xd0\xfc\xda\xed\xca\xb2\x59\x26\x00\x55\x5f\x2a\xf0\ +\x74\x92\x5c\x5e\xd6\x0b\xd9\xb2\x1b\xae\x15\x55\x5c\xe8\x8a\x4b\ +\x84\x24\x40\xc1\x6b\xf0\x32\x41\x9f\x20\x9d\xaa\x81\x57\x01\x4c\ +\x92\x5c\x52\x1f\xa9\x61\x21\x23\x02\x14\xd2\x01\x1a\x39\x47\xd7\ +\x24\x43\xde\xd5\x9f\x3d\x02\xb1\x11\x5d\x33\x38\xdc\x4e\x46\xf4\ +\xe5\xb0\xb9\xa7\x11\xbe\xb4\xc9\x08\x03\xb6\x41\x45\x89\x0c\x00\ +\xf4\x12\x60\x0a\x7e\xc8\x75\xcf\xee\x2a\x5e\xfc\x0f\xc5\x08\x04\ +\x8b\x19\x30\x8a\xb3\xf7\x7d\x1f\xed\x6f\x7f\x0b\x9c\xf6\xe6\xb9\ +\x26\xf8\x21\x60\x27\x27\xd1\x7c\xdd\x5e\x54\x93\xbd\x98\xae\x96\ +\x51\x75\x43\x9a\xd7\x55\x96\x75\xe0\x5c\x83\x67\x4e\xd7\xc0\x3d\ +\xdd\x80\x2e\x6a\x11\xea\x9a\x14\xb4\x09\xa9\x7a\x23\x80\x71\x43\ +\xa0\x90\x07\xf2\x15\xa0\xb3\x08\xe4\x5c\xc4\x4b\x43\x02\x15\x84\ +\xd8\xb7\x6a\x1c\xcf\xad\xa8\xe0\xc6\x63\xcd\x58\x35\xd9\x04\xce\ +\x39\x12\x8e\xa5\x0c\xe0\x92\x04\x46\x45\x11\xde\x03\xc3\xe7\xbf\ +\xa0\xed\x2e\x2d\x78\x2b\x4c\x73\x82\x31\x36\x05\x6f\xf4\x38\x9e\ +\xfb\xe4\xd7\xb1\xf5\x1b\x9f\x00\xb3\xcc\x7a\x13\xbc\x40\xca\xc0\ +\x18\xc2\xc5\xf1\x43\x70\x8c\x75\xc8\xa7\xb2\x90\xf6\x08\xa6\xc3\ +\x22\x66\xfc\x69\x04\xc2\x8f\x5b\x3d\x43\xe0\xa9\x08\x3c\x88\xfb\ +\xd3\xd7\xef\x4c\x3c\x2c\x1e\x81\x5e\xec\x05\x6d\x42\x72\xb6\x11\ +\x13\x06\x50\x6c\x02\x72\x15\xa0\xab\xc4\xd1\x11\x64\xd0\xe1\xe5\ +\x90\x1c\x91\xe8\x2d\x8d\xe2\x38\x2b\x61\x83\xdd\x06\xcb\x30\x24\ +\xe7\x2c\xba\x12\x28\xf8\x6a\x10\x7a\x0f\x0d\x9c\xfb\xf2\xa1\xc9\ +\xc2\x2f\x01\x5c\x24\xf9\x97\x7a\x33\xe4\x91\x86\x30\xf2\xd3\x9f\ +\xe0\xfc\xbf\xaf\xc7\xca\x0f\xde\x09\x70\xa6\x4d\x88\x37\x34\x3a\ +\x0c\xbd\x00\x2e\x3f\x85\x49\x5f\x22\x65\xb5\xa0\xd1\x5e\x87\xd5\ +\x0d\x5c\xb6\xb5\xf7\x4a\x2f\x39\xc8\x47\x2b\xc0\x68\xb9\x11\xe5\ +\xe8\x83\xcb\xc9\x32\x84\x27\xb0\x60\x30\x2c\x18\x7a\x89\x28\x13\ +\xac\xa4\x85\xb4\x93\x46\x73\xb2\x19\x4d\xc9\x26\x91\x43\xc3\x70\ +\xa5\x38\x53\x1e\xee\xbb\xd0\x74\xfe\xe2\x40\x53\xa6\x12\xef\xf0\ +\xcd\x3c\x03\x87\x2a\x6f\x70\x0e\x93\x71\x44\x31\x63\xb0\xd2\xa7\ +\x9f\x3e\xf4\xf9\x1f\x9f\x3b\xf7\x43\xfd\x06\xb1\x22\x29\x16\x35\ +\x40\x77\x41\x09\x40\x0f\x4e\x7d\xfa\x1e\x54\x47\xa6\xb1\xfe\x23\ +\x7f\x0e\xe6\xd8\x60\x80\x1f\xea\xfb\x5a\x11\xaa\x04\x29\x50\xc6\ +\x19\x94\x13\xdf\xc7\x40\xa2\x97\x25\x7c\x03\xd7\xd9\xd7\x8d\x6c\ +\xcc\x6d\xc4\x6d\xcd\xb7\xa5\xda\xd3\xed\x4e\x73\x43\xb3\x59\x0d\ +\xaa\xcc\x0d\x5c\x94\xbd\x32\x66\xaa\x33\x98\xaa\x4e\xa1\xe4\x96\ +\x30\xe5\x4e\x51\xc5\x2c\x64\x9d\x2c\x92\x56\x12\x29\x3b\x85\x84\ +\x95\x80\x63\x3a\xb0\x0d\x5b\x8a\x40\x84\xe3\xa5\x71\x6f\xa4\x32\ +\x52\xee\x2f\xf5\xbb\x3d\x17\x7a\x1a\xc7\xa6\xc6\x3a\xe0\x23\xde\ +\x0f\xf2\x40\x83\xcd\xd0\x56\x62\x90\xe0\x48\x70\x1b\xb6\x61\x84\ +\x64\x82\x75\xf8\xe2\xe8\x91\x7f\xd8\xbd\xf7\x2b\x07\x86\x47\xf7\ +\x01\x18\x24\xcd\x48\x8a\xcb\xfb\x78\x9c\x31\x8b\x52\x8e\xb4\x16\ +\xad\xaf\x7f\x23\x36\x7d\xee\xc3\xb0\xdb\x9a\x4d\x7f\xc8\x0d\x32\ +\xa5\x04\xb2\xf7\x03\x56\x19\xc8\x1c\x03\xb2\xbd\x34\x0e\x48\xba\ +\xa2\x7e\x9d\xb5\x24\x27\xe1\xa0\x23\xd1\x21\x3a\x8d\x4e\xd1\x68\ +\x37\xca\x8c\x9d\x61\x79\x3b\x2f\x73\x66\x8e\x35\xd8\x0d\x08\xc2\ +\x00\xc5\x4a\x11\x85\x4a\x41\x96\xaa\x25\x4c\xba\x93\x6c\xa8\x32\ +\xc4\x2e\x94\x2f\x18\x85\x72\x21\x3e\x5f\xa0\xd7\x01\xaf\x7b\x0e\ +\x2d\x16\x90\x3c\xa0\x79\xc2\x7a\xf6\x73\xe5\x1b\x8d\xce\xce\x16\ +\xf3\x91\xbe\xfe\xef\x7e\xfb\x59\xf5\x11\x7f\xbf\x5e\x54\xd5\xa8\ +\xb8\x57\xf0\x45\x49\xfd\xce\x90\xf0\x48\xed\x30\xb2\x1b\x71\xfd\ +\xa7\xde\x87\xa6\x5b\x77\x22\x3b\x98\x42\xfb\xdf\xa7\x90\xee\x07\ +\x6c\x05\x1e\x87\xd0\xd9\xaa\xc1\xc3\xaa\xcb\x86\xce\x24\x15\x41\ +\x9d\x7c\x0d\xe8\x2f\x31\xa7\x8d\x50\x21\x6b\x3f\xd3\x7b\xcc\xa3\ +\x78\x02\x9f\x41\x1c\x45\xd2\xb8\x7e\xd3\x13\x48\x8a\x2b\xfe\x8a\ +\x8c\x94\x32\x54\x9b\x22\x50\x45\x58\x2a\xe0\xf8\xdf\xf5\x23\x7f\ +\xd3\x2a\xac\x3f\xde\x8d\x55\x95\x2f\x80\xe9\x17\x13\x90\x58\x1d\ +\x28\x27\x19\x5a\x7c\x4e\xd6\x52\x21\xb5\x84\x9e\x93\x3a\xcf\x9b\ +\xd3\xc7\x5c\x4b\xd4\x81\xd7\x63\x71\x35\x7b\xaa\xee\x55\x85\xaa\ +\xea\xbf\xcd\x97\xa4\xf4\x09\x2a\x64\x84\x47\x79\x0a\xc5\x83\xcf\ +\xa3\x01\x36\x84\xde\xa8\x78\x0d\x5a\x4b\x03\xcf\x85\x5e\xc2\x00\ +\x39\xe7\xb8\x06\x3d\x5f\x4c\xe7\xfa\x02\x08\x25\x5b\x43\x57\x5e\ +\xdc\x2f\x4b\xeb\x6e\xd0\x27\x2e\xe1\x24\x7e\x8d\x7e\x7c\x0d\x33\ +\x18\x9c\x0b\xba\xc4\xf1\xa2\xaa\x19\x37\xcf\xcc\xa5\x4d\x90\x70\ +\x31\x41\xcd\xff\x3c\xee\x8d\x66\xa2\xb8\x6a\x5f\x96\xa6\x73\x73\ +\xfd\x21\x4d\x3b\x69\x0d\xb6\xe0\x76\x6c\xc2\x5b\xd0\x89\x6e\x24\ +\x60\xc3\x9a\xb7\xf6\x6b\x32\x17\xd8\x03\xfc\xd9\x59\x8f\x97\x3e\ +\xf6\x20\x09\x7a\x04\x17\xb0\x1b\xc7\xf1\x18\x5c\x9c\xd0\x97\xb9\ +\x22\xf1\xf8\x57\xcb\x80\x7a\x13\x1c\x6d\x44\x63\xbc\x49\x62\x39\ +\xb6\xe1\x55\x58\x87\x57\x62\x05\x36\xd0\x51\x3b\x1c\x18\x57\x6c\ +\x80\x7f\x89\xb9\x22\x8a\x84\xdc\x87\x21\x1c\xc1\x69\xec\x47\x01\ +\x7d\xfa\xc6\x66\xb4\x76\x7f\xa9\x37\xbc\xab\x66\xc0\x7c\x23\x4c\ +\x6d\x46\x52\xdf\xd1\xe7\x95\x29\x49\xb4\xa0\x9b\xec\xe8\xc4\x1a\ +\xb2\xa2\x03\xcd\x68\x27\x35\x23\x8d\x04\x92\xb0\x55\xaf\x18\xda\ +\x16\x17\x02\x15\xf8\x2f\xa8\x0c\x0f\x93\xf4\xa7\x40\xb8\x13\x18\ +\x24\xbc\x73\x78\x9e\x60\xc7\x30\x00\xa0\xa0\x55\x24\x95\xf5\x4e\ +\xe4\x91\x84\x06\x7f\xe9\x7f\x5f\x40\xaf\xb9\x48\x46\x9d\x21\x36\ +\x29\x51\xbb\xa9\x55\x39\x51\xd7\x0b\x86\x16\xab\xdb\xfa\x82\x5a\ +\x56\x60\x95\x08\x52\xe7\x19\x0d\x4a\xd2\xbd\xb1\x14\xf4\xd5\x37\ +\x60\x69\x43\x16\xd9\xce\x50\xcb\xda\x80\x38\x44\x2d\xab\xb9\x50\ +\x8f\x43\x2d\xb9\x10\xf0\xcb\xc9\x80\xa5\x8d\xb9\xcc\x50\xa0\x2f\ +\x51\x5c\xfb\xd5\x59\xe0\xda\x6f\x8d\x5d\x33\xe0\x9a\x01\xbf\xc3\ +\xf1\xbf\x9d\xd2\xae\xe2\x5a\xef\x69\x4e\x00\x00\x00\x00\x49\x45\ +\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x0d\x06\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\ +\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ +\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x06\xec\x00\x00\x06\xec\ +\x01\x1e\x75\x38\x35\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\ +\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\ +\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x0c\x83\x49\x44\ +\x41\x54\x78\xda\xed\x9b\x5b\x68\x55\xd9\x19\xc7\xd7\x49\x4e\xa2\ +\x26\x26\x1a\xe3\x35\x31\x5e\xc6\x54\xad\x97\x4a\x95\x29\x38\x14\ +\xc4\x22\xb6\xcc\x73\x9f\x2a\xf4\x61\x5e\x7c\x10\xc4\xc2\x0c\x08\ +\x7d\x28\xf8\x54\x4a\x1f\x15\xa4\x4f\xf6\x51\x0a\x52\x90\x4e\x07\ +\x41\x94\xfa\xe0\xfd\xd6\xaa\x03\x5e\xc6\xfb\x35\x51\x63\x2e\x46\ +\xcd\xc5\x7e\xbf\x0d\xbf\x61\xcf\x31\x92\x8c\x1c\x83\xc1\x2c\x58\ +\xec\xbd\xd7\x59\x7b\xad\xef\xfb\x7f\xf7\xb5\x93\xc2\xeb\xd7\xaf\ +\xd3\xc7\xdc\x2a\xa2\x8f\x03\x30\x0e\xc0\x38\x00\xe3\x00\x8c\x03\ +\x30\x0e\xc0\x47\xda\x8a\x1f\x1a\x41\xc7\x8e\x1d\xdb\x53\x5d\x5d\ +\xfd\xb3\x69\xd3\xa6\x7d\xe1\x98\xad\xad\xad\xed\x8f\x95\x95\x95\ +\xf3\x57\xaf\x5e\xfd\x8b\x72\xed\xf7\x41\x24\x42\xdb\xb6\x6d\x5b\ +\x50\x2c\x16\xff\x10\xb7\x9f\xcd\x9e\x3d\xbb\x65\xf2\xe4\xc9\x93\ +\x18\x87\x36\xaf\xb6\x81\x81\x81\xc1\x4b\x97\x2e\xdd\x1a\x1c\x1c\ +\xbc\xd4\xd1\xd1\xf1\xb7\xbd\x7b\xf7\x1e\x1a\xd3\x00\x6c\xd9\xb2\ +\xe5\xb3\xfa\xfa\xfa\xc3\x21\xf5\xaa\x21\x09\x2c\x14\xd2\xdb\xc6\ +\x03\x84\x74\xfd\xfa\xf5\x43\x15\x15\x15\xbf\xd9\xb3\x67\xcf\xab\ +\xb1\x64\x02\x32\xff\xcb\x9a\x9a\x9a\x43\x21\x84\xe2\xcb\x97\x2f\ +\x87\x63\x78\xc8\xb1\x96\x96\x96\xf5\xd7\xae\x5d\xfb\x26\x1e\x7f\ +\x35\x96\x9c\xa0\x0c\xfc\xb3\xbf\xbf\x3f\x13\x42\x00\x91\xaa\xaa\ +\xaa\x52\x98\x02\x3d\xbb\xb7\x3b\x6e\x9f\x38\x71\x62\xc6\x3c\xa0\ +\xd1\x9b\x9a\x9a\xd6\x6f\xd8\xb0\x61\xdd\x98\xd2\x80\xcd\x9b\x37\ +\xff\x39\x98\x69\xec\xeb\xeb\x4b\xcf\x9e\x3d\x4b\x0f\x1e\x3c\x40\ +\xa5\x47\x0a\x5c\x0a\x27\x99\x1a\x1b\x1b\x93\xad\xae\xae\xee\xaf\ +\x71\xf9\x74\xac\x00\x00\xb3\x5f\x04\xf3\x48\x10\xef\x9e\x16\x2d\ +\x5a\x94\xc2\xf9\xa5\xe7\xcf\x9f\x23\x65\xe7\xa4\xce\xce\xce\xd4\ +\xd0\xd0\x90\x31\xfc\xf4\xe9\xd3\x34\x69\xd2\xa4\x74\xfa\xf4\xe9\ +\xf4\xe4\xc9\x93\x44\x0b\xff\x91\x68\x53\xa6\x4c\xf9\xf9\xc6\x8d\ +\x1b\x8b\x07\x0e\x1c\xe8\xff\xe0\x01\xd8\xb4\x69\x53\x75\xb4\xe9\ +\x71\x0b\xc3\x78\xf6\xb4\x6a\xd5\xaa\x34\x61\xc2\x84\x74\xe3\xc6\ +\x8d\x34\x6b\xd6\xac\x74\xea\xd4\xa9\xd4\xda\xda\x9a\xe6\xcf\x9f\ +\x8f\x9d\xc3\x60\xba\x7a\xf5\x6a\x5a\xb8\x70\x61\x3a\x7b\xf6\x6c\ +\xf6\x4e\x77\x77\xb7\xe6\x00\x68\x95\x2f\x5e\xbc\xd8\x14\x4b\xfe\ +\xfd\x83\x88\x02\xdb\xb7\x6f\x6f\x7c\xf4\xe8\xd1\xba\x20\xbc\x3f\ +\x88\x9d\x17\xd2\x5b\x31\x73\xe6\xcc\xdf\xde\xb9\x73\xa7\x2b\x88\ +\x9e\x1c\x63\xd3\x83\xe0\x84\x16\x00\x42\xc4\xf7\x77\xd1\xa2\x4c\ +\x33\x02\xcc\x0c\x84\x5b\xb7\x6e\xed\x0b\x8d\xd9\x4f\x38\x8d\x7e\ +\x34\xd6\xfc\xf7\x89\x13\x27\x1e\xbc\x17\x00\x7e\x1d\x6d\xc5\x8a\ +\x15\x95\xc1\x54\x6d\x30\xd3\x7a\xe6\xcc\x99\xdf\xaf\x59\xb3\xa6\ +\x39\x18\x7d\x10\xd2\x68\xba\x70\xe1\x42\xed\xb2\x65\xcb\xd2\xdd\ +\xbb\x77\xd3\xd4\xa9\x53\x53\x57\x57\x57\x7a\xfc\xf8\x71\x46\x6c\ +\x84\xad\xc4\xbe\xd8\x3e\x12\x0c\xa0\x90\xa8\x9e\x7e\xc4\x0d\x4d\ +\x61\x1d\x1c\x28\x66\xc3\xfd\xe5\xcb\x97\xf1\x07\x98\x13\xfb\xbc\ +\x0e\xad\xba\x1c\x4e\xf4\x1f\x3d\x3d\x3d\xff\xda\xbf\x7f\xff\x89\ +\x98\x33\x38\x62\x00\x76\xec\xd8\xb1\xf4\xe6\xcd\x9b\x5f\xc5\x6d\ +\xcb\xe2\xc5\x8b\x6f\xd6\xd6\xd6\xd6\x04\xa1\x8b\x7a\x7b\x7b\x5b\ +\xcf\x9f\x3f\xdf\xc8\x26\xa8\x24\x92\x84\x51\x18\xc0\x63\xf3\x8c\ +\x6d\xbf\x7a\xf5\xca\xae\x27\x77\x69\xa4\xce\x38\x44\xd2\x99\xcf\ +\x18\x4c\x0c\x1b\x0e\x01\x2d\x68\x51\x0b\x78\x3f\x63\xd8\xe7\x90\ +\x7a\x8a\xe8\x82\xf9\x00\x3e\x7e\x22\xdb\x3b\xe8\xee\x6c\x6f\x6f\ +\xff\x26\xf6\xfd\x32\xe6\xdc\x1e\x12\x80\xdd\xbb\x77\xa3\x8b\xbf\ +\x7b\xf8\xf0\xe1\x5f\x8e\x1f\x3f\x3e\x3b\xd4\x88\x97\x0d\x37\x10\ +\x08\xe1\x79\x06\x91\x1e\x1b\xdb\xdf\x78\x46\x42\x74\x1b\x6b\xe0\ +\xd0\x64\x9e\x3d\x60\x8c\x7b\xae\xf9\x6e\xf3\x3d\xaf\xac\xeb\x95\ +\x0e\x00\x79\xe7\x19\x1a\x09\x08\x00\xc5\xfa\x38\x4f\xfc\x48\xe6\ +\x67\x42\x1b\xae\x1f\x3d\x7a\xf4\x93\x37\x00\xd8\xb5\x6b\x57\x4d\ +\xd8\xd0\xd7\xa1\xaa\xeb\x62\x92\x4c\xb2\x10\x1d\xc6\xd8\x14\xbb\ +\x85\x38\x09\x18\x16\x00\x36\x86\x39\x1b\xce\x0b\x2d\x81\x30\xc6\ +\xed\x23\x01\x80\x2e\x93\x79\x10\x58\xcb\x88\xe0\xef\x87\x0f\x1f\ +\x66\x1f\x98\x56\x08\xdc\xd3\xfb\xc3\x24\xeb\x6f\xdf\xbe\xdd\x5b\ +\xf4\x85\x9d\x3b\x77\xb6\x44\x38\xfa\x36\x54\xb9\x96\xd0\x93\x27\ +\x02\x64\x91\x18\xe3\x61\xf3\x69\xee\xdc\xb9\x29\x5e\x06\x08\x36\ +\x96\x30\x89\xcb\xe6\x00\x60\xe4\xea\x3f\x20\xd6\xe6\xfa\x00\x25\ +\x08\x6a\x80\xfb\x39\xce\x9a\x39\x40\x87\xd4\x00\x3b\xcc\xf1\x1e\ +\xfe\x06\x8d\x20\x7a\x60\x56\x08\x12\x20\x42\xab\x11\x24\xeb\x17\ +\xc3\x17\xfd\x09\x5f\x9d\x01\xb0\x6f\xdf\xbe\xc6\x90\xca\xb5\x28\ +\x32\xaa\x64\x3a\xcf\x3c\x49\xca\xca\x95\x2b\x13\xed\xc8\x91\x23\ +\x20\x9d\x81\x10\x7e\x00\xe9\xe6\x01\xc8\x88\x8e\x82\x86\x8d\x01\ +\x8d\x35\xb2\x4d\x6d\x6a\x14\x8d\xb9\x30\xc7\x1e\xd3\xa7\x4f\xc7\ +\x79\xf1\x9b\x1a\x02\xe1\x43\x81\x24\x20\xa5\x20\xc8\x38\xe0\x2b\ +\x79\xd6\xc0\x0c\xe8\xd6\x0f\xfc\x86\xe3\xfd\x2a\x9e\xf7\x64\x00\ +\xdc\xbb\x77\xef\x3f\x11\x77\xab\x54\x53\x99\xd7\xfe\xc9\xb8\x02\ +\x31\x9c\x48\x46\xa4\xf3\x24\x16\xfb\x82\x10\xcd\x23\x22\x00\x8c\ +\xf2\x2c\x00\xae\x9b\xad\x41\x13\x00\x12\x20\xd6\x46\xa3\xc8\x01\ +\xf2\x4e\x50\xa6\x35\x3d\x9b\x29\x71\xe9\x6f\xac\x8d\x83\xc4\xe1\ +\x42\x07\xeb\xd2\xb6\x6e\xdd\x9a\xdd\x9f\x3b\x77\x0e\x67\x4d\xa4\ +\x40\x0b\x2b\x02\x88\x4f\x8b\x21\xfd\xda\x50\x8d\x9f\xe6\xbd\xac\ +\xc4\xa9\x8a\x84\x29\x50\x43\xa2\x80\x81\x84\x4f\x9e\x3c\xc9\x34\ +\xc6\xd9\x54\x00\x40\x18\x86\x95\x8e\x25\xec\x0f\x34\x80\x36\x6f\ +\xde\x3c\x9c\x2a\x5a\x04\x31\xec\x07\xb8\x86\x34\x9e\x5d\x03\x1a\ +\x74\xb6\xec\x87\x76\x71\xcd\xfb\x09\xe6\xb0\xaf\xeb\x93\x1f\x08\ +\x36\x91\x20\xfb\x7d\xce\x9c\x39\x19\x38\x57\xae\x5c\x31\x5a\x4d\ +\x2b\xc6\x4b\xad\x11\x8f\x0b\xbc\xa8\x63\x73\x41\x91\x9e\x31\x63\ +\x46\xb6\xb0\xa9\xea\xc1\x83\x07\x9d\x87\x8a\xb1\xd1\x1b\x6a\xc9\ +\x06\xda\xbf\x44\x0a\xc4\xf2\xe5\xcb\x49\x65\x31\x27\x18\x05\x54\ +\xcc\x0a\xa2\x19\xd7\x9e\x95\x24\xb4\x20\x41\x34\x0d\x3a\x98\x03\ +\xb3\xa8\x3c\x57\x23\x13\x82\x50\x20\x8c\xab\x45\xf8\x37\xae\xbc\ +\x57\xea\x5c\x0b\xc5\xd8\xa0\x10\x8d\x7c\x9b\x8d\xf3\x5e\x7f\x48\ +\xc6\x68\x10\xc6\x6f\x3c\x03\x00\x0b\x43\x30\x44\xd2\x35\x0d\x43\ +\x9f\xef\x31\x8e\x2f\x21\xa5\x25\x09\x82\x69\xf6\x05\x60\xd6\x40\ +\xc3\xb8\xc2\xb4\x0e\xcf\x7d\xd5\x4a\xf6\x31\x17\xc0\xff\xb0\x26\ +\x6b\x01\x12\x7b\xd2\xa0\x01\x3e\xbc\xd7\x17\xd9\xf3\x0d\x0d\xe0\ +\x65\x88\xd0\x86\xe9\x82\x90\x0f\x7f\x02\x61\x1e\xfe\x86\x5d\x6a\ +\x7f\x02\xa0\x59\xd8\xc8\xed\x2f\x5e\xbc\x08\x68\x48\x1d\x89\x03\ +\x00\x3e\x08\x69\xb2\x2f\x84\xeb\x00\xe9\x32\x8b\xf4\x55\x5b\xe6\ +\x40\x07\x6b\xe0\xf0\x58\x83\x88\xc3\x3c\x0b\x26\x53\xeb\x61\x53\ +\xec\xa2\x2a\xf4\xae\x4d\x2f\x9d\x6b\x10\x85\xa4\x4a\xd3\x56\x9c\ +\x1c\x0c\x10\x26\x91\x0c\x73\xd0\x06\x00\x83\x01\x1c\x14\x6b\xe1\ +\xb1\xd1\x1e\xf3\x07\x01\x61\x5d\x68\x45\x73\xb8\x47\x0b\x99\x03\ +\xe3\x80\x00\xf3\xbc\x8b\x43\x25\x04\x1a\xc5\xb8\xda\x87\x01\xa0\ +\x4c\x0d\xc2\x60\xc0\x06\x51\x48\x18\x55\x85\x50\x7d\x47\x14\x46\ +\x5c\x61\x1c\x8d\xc1\x31\xf2\x1e\x0c\xb3\x06\x0c\x41\x1b\x0c\xd2\ +\x01\x4d\xed\x83\x31\xd6\xa5\x94\xc6\x79\x5a\x1a\xb3\x47\x36\x7e\ +\xff\xfe\x7d\x9c\xec\xb0\xf5\x05\x3e\x20\x95\xbb\x69\x32\x46\x15\ +\x98\x8a\x63\x2b\x33\x31\x4d\x0b\x46\xa8\xe0\x32\x82\x97\x2c\x59\ +\x42\xb1\xc4\x19\x5f\x69\x46\x88\xb4\x61\x1e\xa6\x59\x03\x86\x01\ +\x8e\xe8\x01\xd3\x5c\x71\xd0\xac\xc9\x95\x75\x19\xc3\x54\x4c\xb3\ +\x05\xe2\xfd\x6b\x80\x9b\xda\xb0\x47\xc2\x28\x04\x40\xac\x21\x92\ +\x2b\xb6\x8f\x39\x00\x00\xe6\x01\xe1\xe6\x0d\xe6\x21\x26\x2f\xfa\ +\x03\x7d\x92\x76\x0e\x38\x80\x82\xc6\xa8\x25\x8c\x13\xfa\x58\x1f\ +\xad\x1a\xd6\x07\x94\xb3\x11\x26\x21\x02\x50\xb5\x41\xd4\xbf\x94\ +\x79\x54\x17\x82\x91\x26\x7e\x40\x4d\xe4\x1d\x23\x8a\x79\x88\xe9\ +\x30\x73\x60\xd4\xb9\xcc\x43\x5b\xe4\x81\x39\x00\x05\x20\x79\xc7\ +\x6d\x1b\x15\x0d\x30\x03\x63\x63\x25\x44\x83\x59\x01\x80\x09\xa4\ +\x4d\xb9\x8a\xad\x32\x66\x4a\x8c\x64\x35\x15\xcf\x0e\x64\xce\x08\ +\x01\xc8\x98\x0b\x8e\xd5\x04\x88\xf7\xd4\x06\x43\x26\x9a\x85\x1f\ +\x61\x9d\xd1\xd2\x00\xe3\x36\x1d\x86\x70\x4a\x84\xaf\x7c\xa6\x08\ +\xf1\x84\x5d\x3d\x39\x0c\xe8\xd4\xb0\x61\xa3\x00\xa0\x31\x6e\x78\ +\x86\x79\xde\xb1\xe0\xa1\x13\x05\x04\x3e\x9f\x00\xc1\xb4\x7b\x51\ +\x67\x70\xff\x56\x27\x58\x56\x0d\x90\x51\x9a\xea\x8e\x9a\xe7\x55\ +\xd2\x3a\x9d\x28\xc0\xb8\x67\x06\x8c\x31\x17\xa6\xb8\x1a\xfb\xcd\ +\xf4\x90\x3c\xcf\xfa\x05\x8b\x1f\x9a\xd9\xa2\x69\x35\x60\xd0\x0c\ +\x9b\x68\x1c\xfb\x8e\xaa\x06\x68\xab\x4a\xd1\x31\x98\x70\x1e\xfb\ +\x43\x38\x04\xeb\xe1\x71\x60\xf3\x66\x2c\x49\x4d\xd3\x3e\x49\x03\ +\x13\x42\xdd\xbb\x6f\xa3\x29\x30\x6c\x8d\x60\xde\x6f\xea\xab\x84\ +\x87\xca\x1e\xc9\x31\x00\xd5\x7c\xe2\xfd\xfa\x80\x3c\x21\x82\x9b\ +\xaf\xda\x54\x55\x88\xb7\xb4\x05\x00\x41\x50\x0b\xe6\xcf\x5c\x9a\ +\xfa\x6b\x1f\xa7\xe6\xa6\x96\x54\xdd\x96\x85\x4c\xed\x1d\x46\x74\ +\xb6\xac\xc7\x3b\xae\x6f\x04\x92\x27\xfd\x0a\xa6\x88\x29\x00\x40\ +\x59\x35\x60\xd8\x23\x2b\x01\xb0\xa9\x01\xee\x2b\xd1\x8c\xe5\x35\ +\xa1\x50\xf7\x32\x2d\x58\xb4\x34\x15\xeb\xfa\x52\xb1\xba\x39\x75\ +\x90\x2a\xc7\x3b\x66\x99\x9e\x31\xa2\x19\xac\xaf\x29\x5b\xd0\xe5\ +\xa3\x10\xe1\xd0\xcc\xb3\xb4\x55\x94\xd3\x07\xc8\xa8\x04\x20\x95\ +\x52\x60\xf2\x67\x0e\xf9\x7b\x9f\x3d\x23\x7c\xde\xdf\x1e\xcc\x3e\ +\x4a\xb5\x55\xf5\xa9\x3e\xca\xd8\x89\x75\x93\x53\xfd\xec\xc8\x19\ +\x1a\xa6\x38\xcf\xf7\x5c\xc3\xee\xfe\x76\x35\x0d\xb0\xde\x04\xa0\ +\xdc\x3e\x20\x4f\x40\xbe\xa2\xf3\xde\x4c\xd0\xef\x7f\x30\xeb\x5c\ +\xfb\xf7\x31\xbf\xa7\x37\x75\x84\xea\x77\xb5\xb7\xa5\xee\xb6\xf6\ +\xd4\x1b\x6a\x3c\x21\xbe\x9c\x0f\xe6\x34\x8c\xf5\x2c\x99\x05\x54\ +\xe9\x6b\x86\x66\x93\xac\x5b\xda\x8a\x12\x53\x6e\x00\x8c\xdd\x3a\ +\x2d\x9a\xa1\xd1\x33\x02\x55\x9f\x79\x3a\x35\xed\x1b\x6f\x5e\xc5\ +\x07\x8f\xfa\xba\xd4\xf7\xbc\x27\x3d\x8d\x32\xb9\xb3\xa7\x3b\xf5\ +\x15\x99\xfb\x7d\xc5\x0a\x00\xbc\x83\xa7\x57\xd2\xa5\x25\x38\x7b\ +\x50\x83\x70\x1d\x1d\x00\x24\x40\x00\x2c\xb9\x75\x4a\x82\xc2\xbd\ +\x85\x92\xcc\x6b\xe3\xcc\xc9\xca\xe3\xca\x42\x7a\x45\x32\x55\x5d\ +\x91\xba\xba\x3b\x23\xb7\x4e\xa9\xab\xb3\xcb\x13\x6b\x22\x06\x60\ +\x19\xf7\x65\xdc\xc6\x98\xc5\xd2\x90\xad\xa8\x57\x2e\x57\xf3\x24\ +\x57\x42\xcc\xe3\x21\x42\x7f\x03\xb1\x66\x7e\x48\x0e\xdb\xa4\x9b\ +\xfe\xe6\x6d\x96\x10\x56\x37\xb3\x21\x4d\xa8\x9c\x98\xba\x7a\xbb\ +\xd2\xa3\x2b\x0f\x01\x0c\x2d\x61\x4d\xee\xcd\x1a\x3d\x87\x54\xab\ +\xbc\x1f\xdd\x54\x18\x06\xf2\x84\xc0\x84\xa0\xd0\x4c\x7a\x90\x9a\ +\x80\x51\x10\x91\x12\x23\xfd\x7c\xf1\x83\x60\x3c\x95\xce\x67\x82\ +\xda\x33\x8c\x73\x82\xb4\x60\xc1\x02\xcf\x27\x05\xd8\xc4\x89\x44\ +\x69\x74\x8b\x21\x9d\x9a\xcd\xb3\x3a\x80\x80\x60\x6d\x14\xd5\x67\ +\x0c\x66\x01\x8a\xda\x3d\x3e\x5b\x65\xc0\x18\xeb\xad\x05\xb4\x65\ +\x41\xf0\x9c\x32\x3e\xdb\x71\x40\x2b\xd0\xcc\xc9\x3b\x42\xb5\x84\ +\x3d\x47\x4f\x03\x4c\x47\x05\x82\x67\x08\xf1\x68\x8b\x31\x99\xf6\ +\xd0\xd3\x12\x1a\x10\x50\x79\x6b\x04\xab\x41\xdf\xf1\xec\x12\x9a\ +\xa9\x20\x39\x12\xf3\x5c\xd0\x33\x4a\x80\xf5\xd3\x1d\xe6\x05\xf3\ +\xa3\x75\x20\x62\xfd\xaf\xf3\xd3\x0c\x60\xca\x6a\x4d\x02\x21\x1a\ +\x40\xf2\x1f\x47\x19\x83\x21\x8b\x17\xa4\xed\x3c\xc3\x27\x5f\x77\ +\x00\x94\x4a\x12\x06\xd9\x03\xe6\x35\x09\xfd\x0f\x42\xe0\x58\x8c\ +\xdf\x46\xd7\x07\x58\xcf\xeb\x84\x54\x77\x2b\x40\x98\x32\x13\xb4\ +\x74\x36\x1c\xf2\x9b\x45\x8b\x15\x9d\x1f\x52\x61\x44\x8f\x1e\x5f\ +\xaa\xd1\x0e\x4f\x95\x00\x8f\xf7\x33\xa0\x3c\x29\x6a\x6e\x6e\x36\ +\xed\x1d\x55\x1f\x20\xc3\x1e\x45\xeb\x18\x01\x85\x7c\xdc\x83\x4e\ +\xf3\x7a\x01\x31\xf4\xe1\x20\x61\x54\xd3\x00\x00\xde\xa1\xf6\x67\ +\x1d\xd7\xd4\x21\x5a\x4c\xb1\x27\x63\x74\xd6\xc0\xf9\x01\xfa\x88\ +\x00\xe0\x0b\x71\xb9\x01\xc0\xa1\x69\xbf\x66\x6c\x48\x0b\xf5\xd5\ +\x57\xc0\xb8\xde\xde\x52\xd7\x44\x4a\xa6\x4a\x73\x0b\x55\xde\x22\ +\x27\x9f\x0c\x79\x62\x84\xf4\x31\xbb\x11\x29\x6c\x31\x50\xae\x61\ +\xd1\x72\x54\x7f\x36\x88\xb3\x04\x2e\x05\x06\x10\x20\x54\xe7\x05\ +\x13\xac\x81\xdd\x23\x71\xa5\x6a\x6d\x60\x46\x49\xb7\xb6\x27\xf9\ +\xf1\x54\x29\xff\x75\x8a\x77\xf9\xd6\xc0\xbc\xb5\x6b\xd7\x72\xec\ +\xa6\x06\xe9\x24\xf9\x2e\x21\xdd\x00\xde\x87\x06\x34\xf0\xf0\x0e\ +\xcd\x8c\xee\x6d\x5a\x80\x2d\x2a\x39\xbb\xc7\xde\x10\xe7\x87\x0d\ +\x08\xf1\x4b\x8e\xa7\xba\x1e\x8c\x70\xc6\x0f\x53\x00\xc5\xf1\x39\ +\x6b\xc8\x98\xef\x20\x6d\x00\x63\x3d\x2b\x4e\x2a\x40\xd6\xf6\x3d\ +\x40\xf5\xbc\x01\xba\xa0\x01\x20\x6f\x15\xf9\xdb\x5b\xff\x14\xed\ +\xc7\xb6\x7c\xf5\xa5\xbd\xea\xfd\xd9\xc0\xdf\x4a\x9b\x4e\x12\x8f\ +\x0e\x51\x48\x15\xa2\xf3\x69\x33\x34\xd1\x79\x9f\x64\xc7\x46\xe6\ +\x67\x68\x33\x29\xe2\x7d\x4b\x5d\x01\xf8\xee\xbb\xef\x86\x22\x59\ +\x00\xd1\xd0\xb3\x11\x49\xfe\x5b\x8c\x81\x9b\x64\x5a\x6c\xca\x22\ +\xf9\xd8\x9b\xaf\xeb\xed\x2c\x6e\x4d\x0f\x61\x7e\xa8\x90\x28\x8f\ +\xb8\xec\x6e\xea\xb5\xa4\x79\x86\xef\x91\xd8\x70\x69\xb9\x66\x82\ +\xcf\xf0\x0b\xb6\xe7\x83\x23\x31\x57\xfd\xc7\x85\xf8\xfb\x86\x2f\ +\x63\xa8\xad\x18\x52\xea\x08\x6f\x79\x28\x08\x5f\xef\x5f\x58\x04\ +\x83\x32\xe2\x55\xe2\x65\x12\x2f\x3f\x10\x44\x7c\x1b\x8f\xcf\xf2\ +\x69\xae\xcd\xf8\x3e\x82\x26\x38\x95\x01\xe8\xd4\x58\x63\x7a\xd0\ +\x50\x13\x9d\xbf\x57\x80\x3e\xf6\x1b\x88\xf1\xbe\xb8\xbc\x88\xa9\ +\x8f\xc3\x41\x3e\x09\xa0\x7e\x6c\x02\x83\xd0\x3a\xc2\x9c\x2e\x45\ +\x38\xfe\x3a\xd6\xbb\xc0\x29\x7e\x21\xfe\xf6\x7e\x52\x2c\xbc\x3a\ +\x54\xf6\xf3\x40\x77\x59\xfc\xf0\x13\xfe\xcc\x8d\xf9\x79\xc9\x4b\ +\x67\x34\xa0\xbe\x1d\xb6\x74\x24\x88\xf8\x5f\xbc\xdb\x99\xde\x4f\ +\x73\xc3\x42\xb4\xd7\x65\xc8\x4f\x90\x0e\xb4\x12\x1b\xef\x45\x7f\ +\x12\x7f\x71\xfa\x3a\x0b\x81\xf1\xf7\x7d\xd3\x02\xed\x96\x60\x66\ +\x6e\x3c\x83\x7e\x7d\x00\x41\xfd\xca\xef\x48\xb2\x10\x9d\x7b\xfa\ +\x60\xdc\xb3\x50\x7b\xcc\xb9\x16\xd7\xa7\x69\x6c\x34\x40\xec\x23\ +\x68\x04\xe3\x7d\x0e\x9a\x03\x00\x42\x15\x99\x6c\xf4\x9a\xe8\x18\ +\xa2\xfa\xeb\xb5\x40\x67\x21\x54\x07\x7f\x44\x07\xc5\x34\x86\xdb\ +\xf8\xbf\xce\xa6\x34\xfe\x5f\x63\xe3\x00\x8c\x03\xf0\x11\xb7\xff\ +\x03\x7f\x19\x0a\xe4\xd7\x62\x63\xda\x00\x00\x00\x00\x49\x45\x4e\ +\x44\xae\x42\x60\x82\ +\x00\x00\x15\x14\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\ +\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ +\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x06\xec\x00\x00\x06\xec\ +\x01\x1e\x75\x38\x35\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\ +\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\ +\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x14\x91\x49\x44\ +\x41\x54\x78\xda\xe5\x5b\x79\x8c\x64\xc5\x7d\xfe\xbd\xa3\x8f\xe9\ +\xee\x39\x76\xa6\x97\xdd\xb9\x96\x3d\x66\x61\xef\x05\x61\x6c\xae\ +\xa0\x38\xb6\x20\x4e\x2c\x22\x27\x32\x09\x92\x0f\x14\x20\xc6\x81\ +\x18\x84\x92\x08\x59\x8a\x30\x7f\x18\x04\x09\xe0\xf8\x08\x47\x24\ +\xa2\x24\x76\x14\x9b\x80\xf3\x4f\x0e\x27\x86\x80\xc3\x61\x60\x31\ +\xe6\xb0\x21\xbb\xec\xb2\xf7\xce\xf4\x4c\xcf\xf4\xdd\xfd\xae\xaa\ +\x7c\xbf\x7a\x5d\xf3\xfa\x98\x49\xef\xb4\x90\x65\x29\x65\x7d\x54\ +\xbd\x7a\x47\xd7\xf7\xbb\xab\x66\x6d\x48\x29\xe9\xff\x73\xb3\xe9\ +\x97\xb8\xbd\x74\xed\xb5\x03\x9e\xeb\x66\x09\xf0\x84\x18\x23\xe9\ +\x67\xa5\x2f\xb3\x42\x88\xac\x14\x18\x63\x4e\x04\x22\x2d\xfd\xe0\ +\xdf\x7f\xf3\x95\x57\xfe\x8a\xfa\x68\xbf\x30\x0b\x78\xef\x4b\x5f\ +\x4a\x54\x3d\x2f\xeb\x48\x37\x6b\xf8\x41\x96\x04\x88\x04\x04\x02\ +\x41\x56\x92\xc8\x52\x20\x43\x52\x52\x8c\xc9\x40\xe0\x9e\x60\x82\ +\x29\x89\x87\x70\x4d\x18\x87\x08\x02\x12\xd1\xb8\xd9\x8b\xc6\x46\ +\x21\x86\x2e\x3a\x70\xc0\xfb\x85\x58\xc0\xcf\xef\xbe\x3b\x6e\xd5\ +\x6a\x59\xd7\xf3\xc6\x4c\xc3\xc8\x0a\x62\x12\x06\x2f\x18\x3d\x8d\ +\x19\x22\xc8\x0a\x49\x59\x92\x4c\x42\x86\x7d\x20\xd3\x20\x47\x06\ +\x6e\xa0\x03\xd0\xf3\x80\x00\x26\x21\x19\x12\x64\x00\xdc\x23\xd9\ +\x84\x7a\xae\x1d\xb4\x0c\xd2\x73\xc9\x63\x52\xee\xbc\x88\xe8\xcd\ +\x0f\x44\x00\xef\xdc\x79\xe7\xed\xe5\xb8\xbd\x29\x79\xe2\xe4\x88\ +\xb1\x6e\x24\x26\x0d\xca\x1a\x64\x8c\x11\x48\x12\x49\x80\x06\x7d\ +\xe2\x26\xa1\x38\xee\x42\x32\x7a\x61\x22\xec\x43\xed\xf0\x98\xfb\ +\xe6\x75\x04\xb9\x32\xa4\x86\x88\xde\xd7\x08\xaf\x43\x88\xf6\xdf\ +\x34\xa4\x7f\x01\x7d\x10\x02\x78\xec\xc2\x0b\xbf\x72\xc5\x95\x97\ +\xdf\xe5\x98\x43\x94\x1a\x18\xa0\x40\x88\x90\xaa\xc1\xff\x55\xff\ +\xa1\x50\xf4\x7a\x28\xc3\x61\xa4\x9d\x88\x74\x34\x56\xef\x5a\xa9\ +\x34\x05\x8d\x3a\x5c\x99\xcd\xda\x65\x33\x50\x30\x63\x36\xe6\x1b\ +\xe1\xb5\xd0\xc4\xf1\x46\x32\x41\xa4\x85\x55\xa9\xb4\x0b\xa3\xc3\ +\x2a\x84\x30\x2e\x30\x0c\xe3\xef\x25\x5a\x5f\x02\x30\xd0\xee\x98\ +\x9e\x4e\xce\x0c\x0f\xdf\x5e\x2f\x95\xa9\x54\x2c\x53\x76\x7c\x9c\ +\xfc\x72\x89\xc8\x34\x69\xb5\x66\x26\x12\x24\xea\xf5\x48\x10\xe1\ +\xe2\x99\x8c\xd6\x54\x48\xcc\x60\x01\x0c\xa0\xc7\x3b\x98\x0b\x6a\ +\xfc\xb2\xa5\xe6\xfc\x5a\x83\xac\xc1\x21\xf4\x35\xb2\x86\x06\xc9\ +\xcd\xcd\x13\xa5\x53\xca\xf7\x85\x03\xc1\x60\x5e\x13\xee\xd6\xbe\ +\xb6\x00\xb1\xbf\xa9\xa1\xb5\x0b\x80\xc9\xf3\x72\x3c\xa2\x6d\x41\ +\x10\x0c\xd7\xf0\x83\x85\xa5\x22\xc5\x76\xee\xa4\x5a\x6e\x8e\xcc\ +\x64\x52\x4b\x49\x6b\x5d\x75\xf1\x6c\x96\xbc\x42\x81\x12\x1b\x36\ +\x52\x50\xad\x84\x6b\xf1\x3d\x32\x62\x31\xe2\x4f\x06\x9e\x47\xd6\ +\x40\x4a\x09\xa8\x31\x3f\xaf\x34\xeb\xd7\x41\x36\x99\xc4\x3b\x1b\ +\xc8\xc9\xe5\x48\xb2\x65\xc0\xd2\xbc\x7a\x95\xc8\x32\xc9\xaf\xd6\ +\xc8\x84\x50\x02\xd7\xa3\x00\xe4\xf9\x5d\xe9\xba\x91\xf6\x05\xf7\ +\x1d\xae\x80\x1e\x2a\xda\xcb\x2b\xec\xd7\x05\x0c\x20\x31\x57\xaf\ +\xaf\x9f\x49\xa5\xa8\x86\x1f\x75\xaa\x55\xb2\x86\x47\x28\x60\xe9\ +\xc7\xe2\x78\xa2\xfd\xeb\x12\x30\x2c\x1b\x8b\x74\x48\xb8\x0e\x34\ +\x08\xcd\x2d\x2c\x28\x72\x36\xb4\xe9\x2c\x2e\xc2\xb4\xe3\xea\x9e\ +\xa4\xd0\xff\xb5\x00\xdd\xa5\x25\x08\x6e\x89\x04\x5c\x21\x58\x2a\ +\x34\x4d\xbe\x33\x3e\x04\xaa\x27\xdb\xc2\x37\xbc\xe8\x9e\xd4\x71\ +\xa5\x45\x18\x00\xfe\xb3\xfe\x9b\xdb\xb7\x8f\x43\xf0\xa7\xd6\xe2\ +\x06\x76\x53\xfb\x16\x90\x2e\x04\xc1\x04\x07\xb0\x06\xfc\x31\x33\ +\x98\x21\x7b\xdd\x08\x49\x98\xa7\x1c\x0c\x34\xe9\xb6\xe6\x2c\xcc\ +\x2b\xc2\x0d\x68\xd2\x4a\x24\x95\x86\xdc\x52\x99\x4d\x5b\x49\xab\ +\x7e\xfa\x54\x4b\x1c\x90\x54\x3b\x71\x42\xbb\x84\x26\xda\x41\x5e\ +\x32\xda\xef\x35\x7c\xfd\x8d\x2e\x17\x00\xda\x2c\x63\x90\x88\x03\ +\xe1\xa9\x7e\x2c\xc0\x04\x52\xae\x54\x45\x06\x39\x8e\x4b\xe7\x6c\ +\x9f\x21\xd7\x07\x71\x19\xe6\xdb\x95\x4c\xc0\x87\x95\xe8\x00\x28\ +\x3c\x8f\x47\xa1\x99\x57\xca\xad\x01\x31\x22\x2d\x23\x82\x3a\x4b\ +\x44\x02\x88\xae\x89\xc1\xf9\xde\xf7\x29\xf0\xb9\xf7\xd4\xd8\xc7\ +\x98\x94\xba\x2c\x32\x01\xb8\x5a\x28\x6c\xdc\x93\x58\x0b\xc8\xec\ +\xc3\xdd\x7f\xe9\x57\x00\x31\x43\xca\x14\x2f\xd2\x81\xcf\x4d\xcf\ +\x6c\xa3\xea\x7c\x8e\xcc\x78\x3c\x5c\x54\x77\xd3\xe4\xa3\x6c\xa0\ +\x53\x22\xe9\x34\x18\x09\x81\x05\x20\x02\xc1\x71\x21\x04\x2f\x1a\ +\x40\xaf\x82\xac\x61\x59\x80\x0d\x60\x8c\xdf\x34\x6c\x9b\x6c\xcc\ +\xc7\x00\xa4\x60\xf0\xe4\x9e\xf8\x79\x95\x31\x82\x3a\xe0\x38\xe1\ +\x98\xdd\x8c\xb3\x89\x94\xfb\x74\x20\xec\x27\x0d\x9a\xf0\xd1\x18\ +\x2f\xd6\xf3\x7c\x15\x7c\x2a\xe5\x1a\x0d\x20\x1a\x3b\xda\x02\xba\ +\x9a\x04\x09\x90\x0a\x3c\x28\xc1\x67\x2b\x08\xb5\x16\x04\x4c\x46\ +\x91\xb0\x00\xee\xc9\x8e\x21\x63\x58\xb8\xb6\xe0\xd6\x36\x00\xc2\ +\x26\x60\x19\xca\xc7\x03\xfc\x9e\xd0\x84\x18\xd0\xa8\xaf\x2d\xa4\ +\x37\x94\x0b\x58\x3a\x10\xf6\x15\x04\x81\x79\xdf\x2f\xa2\x57\x64\ +\x3c\x04\xb1\x52\xb5\x4e\x83\x08\x84\x8d\xc5\x3c\xd5\x0a\x45\x12\ +\x2c\xa5\x78\x8c\x4d\x4f\x59\x86\x65\xa1\xcf\xc4\xc8\x42\xb0\x8b\ +\xc7\x98\x5c\x1c\x81\x2f\xd4\xa2\x6c\x92\x11\x8a\x90\x43\x3e\x7a\ +\x59\x87\x90\x9a\xe6\xee\xb7\xb9\x40\x38\xa6\x68\xdc\x01\xd9\x1b\ +\x52\x32\x89\xed\x9f\xdb\xb0\x21\x89\xb0\x56\x93\x68\x6b\x2e\x84\ +\xde\xaf\xd7\x17\xf1\x96\xd2\x60\xad\x5c\xa6\x42\x2e\x4f\xe7\x5e\ +\x3c\x4d\xf2\xd4\x29\x1a\xdb\xb5\x8b\xcd\x34\x24\xa5\xc9\xb9\x0e\ +\x08\x42\x73\x24\x55\x40\xf6\xa8\xc5\x0d\x80\xee\x9e\xc9\x74\x8e\ +\x55\xdf\x4d\x3e\x22\x06\x88\xff\x1b\x62\x19\xb1\xcb\xe2\xf1\xdd\ +\x7f\x47\xf4\x6a\x3f\x2e\x20\xab\x41\xe0\xba\x42\xa0\x0b\xd2\xb5\ +\x5a\x9d\x4a\x88\xee\xf6\xc8\x88\xd2\x62\xf5\xd8\x51\x8a\x9a\xe2\ +\xd4\x51\x15\x46\xe4\x69\x45\x41\x88\x96\xba\xbe\x83\xb0\x5c\x51\ +\x00\x6d\xe4\x68\x19\xb2\x1b\x32\x42\xd2\x90\xfb\xa9\x0f\x01\x48\ +\x40\x00\x7e\x2d\x08\x0a\x83\x42\xa4\x51\x0b\xf0\x02\xb8\x16\x50\ +\x5a\x36\x06\x92\xd4\x91\x06\xda\x3b\x29\xb5\x30\x34\xe9\xae\x80\ +\xa8\x02\x2c\x4a\xda\x0a\xfc\x7b\xdd\xd8\xd8\xea\xfb\x85\x8e\x31\ +\x45\xa6\xde\x91\x39\xba\x61\x0a\xc4\x81\x35\x34\xb3\x85\x8d\x0f\ +\x78\x2c\x00\x5d\x0b\xf0\x22\x25\x07\x31\x21\x9b\x5b\xd2\x20\x44\ +\xc0\x10\xcb\x73\x22\xda\x96\x02\x3c\x0e\xaf\x45\x73\x4e\x00\x7c\ +\x5d\x02\xf9\xe9\xcf\x5f\x4f\x57\x3d\xf1\x4f\x3d\x82\x5a\x07\xf9\ +\x88\xb4\x86\x16\x52\x17\x8c\x30\x15\x9a\x6b\xb2\x00\xad\x7d\xc0\ +\xad\x0a\xb1\x14\xd6\x02\x1e\x4d\xef\xdd\x4d\xd5\x85\x79\x15\xf0\ +\x7c\xd1\x91\x09\xb4\xb6\xa3\xb1\x4a\x51\x25\x54\x83\x23\xe7\x9c\ +\xb3\xe2\x26\xe9\x43\xbf\xf3\xdb\x34\x75\xc3\x0d\x61\x4e\xe7\x32\ +\xd9\x30\x75\x31\x13\x91\x6d\x89\x0d\xb4\x7a\xb1\xc4\x58\xd9\x02\ +\xa4\x54\x99\xa0\x1f\x0b\xf0\x00\xa7\xe4\xfb\x0b\x4a\x00\xae\x4b\ +\xe3\x5b\x36\x43\x00\x79\xb2\x32\x19\x12\x5a\xbb\x80\x50\x50\x1a\ +\x6e\x5a\x44\xd8\xdb\xdb\x66\xe8\x23\x7f\xf9\x75\xf2\x38\x40\x0a\ +\xfd\x7c\x84\xc3\xdf\xfd\x2e\xcd\x7e\xff\x29\x32\x6d\x9b\x2b\x47\ +\x6d\x29\xcd\xf7\x57\x44\x37\xf9\xd5\xef\xeb\xc0\x34\x7a\xcf\xc6\ +\x8d\x53\x06\xda\x59\x09\x40\xa2\xb5\xb8\x80\x5b\xf4\xfd\xbc\x4e\ +\x85\x41\xb1\x48\x65\x04\xc2\xf8\xc8\x3a\x6d\xd2\x0a\x32\x22\x17\ +\xb9\x01\xfa\x0b\xef\xb8\x83\x26\x2e\xbb\x8c\xec\x89\xc9\xe5\xc5\ +\x89\x96\xde\x01\xe9\xd2\x1b\x3f\x25\x6e\x89\xb1\x51\x7d\xef\x2c\ +\xd1\xed\x0a\xd1\x39\x41\xd8\x8b\x26\x91\x75\xa6\xb9\xbf\x1f\x0b\ +\x08\x00\x37\x1f\x04\xf3\x4d\x01\xe0\x22\x4f\xc5\x33\x67\x38\x13\ +\x70\x5e\x6f\xd7\xa8\x5e\x8c\xb6\x06\x3c\x9f\xc0\x73\xdc\xce\xbf\ +\xe9\x26\x65\x05\xd1\xf3\x91\x96\x1b\xc7\x4f\x10\xb7\xf4\x94\x12\ +\x92\x16\x60\x6f\xd2\x00\xbb\x4d\x19\xbb\x4f\x07\x75\x48\xd5\x0f\ +\xa8\x5c\xa9\x44\xf7\x23\x22\xaa\x24\xee\x27\x0b\x28\x01\x9c\x74\ +\xdd\x39\x2d\x80\x4a\xa5\x4a\x65\x6c\x63\xed\x4b\x2f\x21\x62\x01\ +\x74\x58\x95\x6c\x19\xc7\xb0\x71\x5a\x78\xe6\x69\x4a\xc2\x5d\x26\ +\x7f\xfd\x13\xf4\xf3\x8d\xe3\x24\x72\xf8\x54\x47\x3d\x50\x9f\x3b\ +\x43\xdc\x52\x9b\x36\x93\xfc\xef\xe7\x95\xf6\x3c\xc7\x51\xd6\x60\ +\x59\x5c\x8c\x1a\x51\x0c\x68\xf1\x7f\xc7\xb2\x69\xc7\xcd\x37\xd3\ +\xf8\xee\xdd\x94\x9a\x9c\xa0\x81\x2d\x5b\xa8\x84\xcd\xd5\x0f\xaf\ +\xba\x5a\x0b\x40\x5b\x00\x7f\xe3\xac\x4b\x62\xb3\x23\x0d\x7a\x67\ +\x1c\x27\x1f\x80\x3f\x2f\x88\x53\x61\x65\x69\x29\xac\x05\x5c\x57\ +\xbb\xc0\x8a\xae\x30\xb8\x65\x2b\x15\x5f\x7f\x8d\xe6\xfe\xfa\x51\ +\xe2\xb6\xeb\xd6\x5b\x61\x05\x4e\x97\x1b\x94\x17\xf2\xaa\x64\x4e\ +\xcf\xcc\x50\x15\x5b\xe1\x7a\x22\x41\x9b\x10\x18\x67\xf0\xfc\xd8\ +\x27\x7e\x83\x8a\xd5\x2a\x07\xd3\xb6\xb8\x20\xd6\x8d\xd2\xd5\x88\ +\x1f\x23\xcf\xfd\x90\xde\xfd\xcc\x75\xf4\xda\xaf\x5e\x49\x87\x2e\ +\xff\x08\xd1\xf3\xcf\x61\xc5\x1e\x2f\x3e\x82\x61\xe8\xb3\x01\x73\ +\x0d\x2e\xd0\x96\x09\x9c\x1a\x4a\x62\x5e\x6c\xbd\x56\x23\x1b\x87\ +\x15\x46\x12\xd0\x64\x3b\xd1\x9c\x1f\xde\xbb\x8f\x6a\xef\x1d\xa6\ +\x93\x67\xe6\x68\xe1\x3f\x7e\x40\x93\x57\x5e\x49\xf1\xe9\xe9\x76\ +\x17\x00\x1c\x69\x50\xf9\xf0\x61\x9a\xfa\xd8\xc7\xe8\x92\xfb\xef\ +\xa7\x5f\xf9\xbd\x6b\x69\x6b\xad\x44\x5b\xb7\x6f\xa3\x2b\xee\xbd\ +\x97\x7e\xf7\xc0\x6b\x14\xdb\xb6\x4d\x93\x57\xc2\xf8\xe8\xe3\x8f\ +\x53\xe1\x1f\xbe\x4d\x07\x7e\xf2\x16\xe5\x92\x69\xca\x25\x52\xf4\ +\xe6\xdc\x22\x3d\xff\xe5\x3f\xa3\xa0\x9d\xbc\xb6\x80\x99\xcf\x8c\ +\x8e\xa6\x0c\xb4\xb5\x08\x40\x67\x02\xb7\x2e\x44\x41\xb0\xbf\xc2\ +\x34\x37\x4c\x4f\x51\x0d\xfb\x02\x2b\x91\xe8\xf6\x51\xf6\xfd\xe6\ +\x31\xf5\xe8\x85\x17\xaa\x78\x11\x90\x41\x73\x8f\x3e\x4c\xdc\xf6\ +\xdc\x76\x1b\x9b\x77\x18\x24\x01\xd9\x44\xf5\xd0\x41\xb2\x90\x5a\ +\xe7\x1f\xf9\x16\x1d\x78\xe4\x51\x7a\xfe\xdb\xff\x48\xaf\xdc\x74\ +\x23\x9d\xbe\xe5\x0b\x14\x1f\x1a\xa2\xab\xbf\xf3\x1d\x92\xc3\xc3\ +\xea\xd9\x91\x7d\xfb\x68\xdd\x79\xe7\xd1\xd1\xe7\x7e\x44\x42\xca\ +\x36\x9f\xaf\x5a\xf6\x32\x79\x11\x92\xd7\xb0\xf6\x0d\x0c\xec\x5e\ +\xab\x05\xc8\x65\x0b\x08\x82\x25\xa1\xb6\xc5\xa8\x05\x76\x9c\x4f\ +\x75\x6c\x86\xec\x74\xba\x4d\xf3\x82\xa1\x83\x97\x65\x71\x90\xc4\ +\xf3\xbe\x9a\x3b\xf2\xde\xfb\x94\x7b\xee\x39\x9a\xb8\xe2\x0a\x4a\ +\x6c\xdd\xd6\x6e\xce\x40\xfd\xbd\xf7\x88\x5b\x11\xd6\xe0\x41\x60\ +\x30\x78\x2a\x26\x53\xf4\xda\x7f\x3e\x43\xb3\x4f\x7c\x8f\xe2\x38\ +\x5d\xda\x7c\xcd\x35\xea\xd9\xb1\xcd\xe7\xaa\xa5\x35\x82\xa0\x8d\ +\xbc\x86\xe8\x20\xaf\x91\x20\xda\xdf\x8f\x0b\x78\x80\x53\x0e\x82\ +\xbc\x3e\x18\xd9\x30\x31\x8e\x54\x38\x4f\x71\xf8\xa1\xce\xfd\xdc\ +\xcb\x65\x04\x34\xb4\x79\x33\x39\x88\xfa\xd6\xf9\xe7\xd3\xf0\x47\ +\x7f\x8d\x36\x7f\xf1\x8b\x94\xda\xba\x95\xb8\xed\xbd\xfd\x76\x58\ +\x41\xa3\xcd\x0d\xea\xcd\x7d\x45\x72\x6a\xaa\xad\x62\x74\x0d\x93\ +\x72\x4f\x3e\x41\x68\xec\x42\x6a\xce\x32\x0d\x15\x40\xd3\xbb\xf7\ +\xa8\x5e\x10\xb5\x41\x76\x93\x57\x73\xb1\x30\x13\x9c\x9d\x0b\xb4\ +\xd6\x02\x5a\x00\xcb\xa9\x90\xb7\xc5\x73\x73\x64\x8f\x8e\xf2\x81\ +\xa7\x2e\x75\x23\x60\x91\x23\xf0\xff\x31\x04\xb5\x8b\x2f\xb9\x98\ +\x76\x0a\x97\xb2\x2f\x3c\x4b\xf9\x9b\x7f\x9f\x4a\xaf\x1d\xa0\x89\ +\xcb\x2f\xa7\xd4\x8e\x9d\xad\x6e\x00\x01\x1c\x0b\x53\x21\x22\x79\ +\xe7\x5f\x7e\x4e\x1f\x3c\x48\xaa\x35\x35\x5e\x7b\xe9\x45\x95\x48\ +\x66\xbe\xf0\x07\xe4\x0a\xd1\x45\x94\xd7\x68\x66\x32\x5d\x71\x80\ +\x4c\x53\x95\xc4\xfd\xb8\x80\xbb\x84\x5a\xa0\x55\x00\x95\x85\x05\ +\x95\x09\x60\xe3\x6a\xb1\x11\x42\x52\x59\x14\x3f\x07\xaf\xff\x2c\ +\xfd\xf8\xe1\x47\xe8\x85\x1f\x3c\x4d\xaf\xbc\xf5\x0e\xfd\xf4\x64\ +\x8e\x4e\xdf\x77\x2f\x71\xdb\x87\x02\x89\x33\x82\x7e\xaf\x78\xf2\ +\x64\x28\x80\x6d\x33\x1d\x55\x20\x22\xc8\xba\x31\xe2\xe6\xe7\xe6\ +\xd4\xdc\xc9\xa3\x27\xa8\xf8\xc2\xf3\xb4\xfe\x82\x0b\xe8\xa2\xfb\ +\xef\x23\xc7\xe0\xc0\xef\xa9\x2d\x7b\x1d\x19\x63\xe6\xfa\xeb\xe9\ +\xdc\x5d\x3b\xda\xc8\x03\x4c\x6c\x37\x77\x06\xda\x5a\x04\x10\x00\ +\xde\xac\xeb\xe6\x42\x25\x04\x61\x2d\x80\x54\x68\x8d\x0c\xf3\x2f\ +\x33\xe1\x08\xbc\x78\x32\x68\x74\xcf\x1e\x3a\x8e\xe8\xef\xe1\x73\ +\xa2\xa5\x34\x3e\xfc\xd6\xdb\x54\x7c\xf5\x15\x1a\xbf\xf4\x52\x1a\ +\xdc\xb7\x77\xb9\xe0\xa9\x14\x4a\xe4\xe0\x9b\x53\x57\x5d\x15\x1e\ +\x8c\xa8\x6f\x85\xef\xc5\xd9\xd2\x30\x97\xff\xdb\xbf\x51\xbd\x87\ +\xf5\x1f\xbe\xe5\x66\x72\x20\xb4\xed\x9f\xfe\x34\x7d\xea\xc7\x2f\ +\xd1\x87\x1e\xf8\x73\xda\xf5\xa7\x7f\x42\xd7\x3c\xfb\x5f\x34\x99\ +\x1d\xa1\xf7\x5f\x7e\xb5\xcb\x15\x70\x3d\x72\xe7\xfa\xf5\x9b\xd6\ +\x6a\x01\x02\xf0\x8e\x3b\xce\xac\x3e\x18\xe1\x5a\xa0\xc6\x47\xe4\ +\x99\x41\xf6\x95\x76\x0b\x10\xf0\xff\x6d\x5b\xa9\x7c\xe8\x10\x79\ +\xbe\xaf\x49\x2c\x9b\xb5\x83\xcf\xcf\x7e\xf3\xeb\xc4\xed\xc3\x5f\ +\xbd\x87\x5c\x37\x14\xa0\x4f\x52\xbd\x93\x04\xd9\xf1\x4f\x7e\x92\ +\xaa\xa5\x32\x79\xae\x4b\x55\xa4\xdd\xf3\x6e\xb9\x85\x16\x1e\x7b\ +\x98\x0e\xbe\xfe\xc6\x32\x99\x83\x85\x0a\xfd\xec\xea\x8f\x53\xe9\ +\xbe\xaf\x92\x3c\x7e\x8c\xa6\xf6\xef\xa7\x2d\xd3\x93\xe4\xdf\x73\ +\x37\xbd\xf9\xb5\xaf\x93\x6f\x9a\x7a\xf1\x6d\x41\x71\x5d\x22\xb1\ +\x6f\xad\x7f\x1a\x93\xcd\x2d\x71\xd5\x05\xe2\x52\xa6\x6b\x58\x54\ +\x06\x0b\x75\x0a\x4b\x2a\x15\x7a\x22\x68\x2b\x03\xc7\x90\xfe\xaa\ +\x47\xdf\x57\xd6\x80\xd6\x7e\x26\x80\xf6\xb3\x67\x7f\x44\xd3\x48\ +\x8f\x9c\xca\xf6\xdd\x75\x17\xbd\xf9\x8d\x6f\x90\x84\x4b\x79\x20\ +\x22\x2f\xba\x88\xae\x7c\xe8\x21\xda\x7b\xe3\x8d\x94\x3b\x70\x80\ +\x86\x51\xe1\x89\x27\xbf\x47\x2f\x3e\xf1\x14\xb9\x76\xac\xad\xbc\ +\x3d\x58\xf7\xe8\xc8\x63\x8f\xd3\xc8\xb7\x1e\x26\x5b\x08\x95\x02\ +\x17\xe3\x49\x68\xda\xea\x8a\x0b\x7a\x6c\x87\x99\xe0\x9f\x01\xd9\ +\x4b\x00\xdd\xc5\x10\x6a\x81\xb4\x10\x69\xce\x04\x93\xe7\x9f\x87\ +\x5a\x60\x89\x62\x48\x4f\x75\xc4\x04\xdd\x1a\x8d\x3a\x4d\x5e\xf3\ +\x5b\x34\xff\xfa\xeb\x54\xc4\xbe\x61\xa8\xb9\x17\x90\xa1\x10\x54\ +\xae\xbf\xf0\xa1\xaf\x91\x09\xed\x96\x9f\x7d\x86\x26\x93\x71\xca\ +\xde\x74\x03\xfd\xcf\x93\x4f\x51\xee\xa1\x07\xe8\xc4\x1f\xfd\x21\ +\x65\xb0\x75\x8e\x65\xd2\xe4\x97\x2b\xf4\xf6\x99\x59\xca\xc7\x07\ +\xc8\x67\xf2\x11\x21\x2d\x04\x95\x25\xe6\x70\xbf\x93\x28\xb0\xe2\ +\x1c\x59\x96\xca\x04\x6b\xb6\x80\xa6\x00\xb8\x16\x98\xe4\x6d\xf1\ +\xae\x5d\x3b\x69\xfe\xf8\x49\x8a\x83\xa0\xc0\xde\x80\xdb\x10\x0a\ +\x94\x4b\x60\xae\xe9\xc1\x0c\xc5\x21\xa0\x8f\x3f\xf8\x00\xbd\xfc\ +\x95\xbb\x49\xb6\x1e\x93\xc3\x75\xe6\x6f\xbd\x99\x8e\xc1\x35\x1a\ +\x56\x4c\x11\xf0\x0d\x43\xf5\xa7\xf8\xbe\x95\x20\xca\x17\x49\x02\ +\xdc\x64\x22\x15\x2d\x7e\x05\x82\xd4\x83\x78\xe7\x9c\x85\xb3\x81\ +\x66\x20\x14\x12\x6d\x2d\x16\xe0\x56\x5b\x6a\x81\x61\x90\x3c\x82\ +\xa8\x3c\x9e\x5d\x4f\xf4\xee\x3b\x61\x9e\x7d\xfb\x4d\x3a\xf5\xd9\ +\xeb\xe8\x10\x4c\xdf\x33\x2d\xf2\x2d\x8b\x84\x1d\x6f\x3b\x30\xf4\ +\xd0\x1f\x89\x0d\x10\xd9\xd1\x66\x08\x2d\x1c\xb7\x12\x5b\x85\x24\ +\xad\x4e\x94\x5b\x4f\x4b\x00\xf1\x2d\x9f\x1a\x19\x49\x7f\xbf\x50\ +\x28\xf6\x0a\x82\x51\x2d\x10\x15\x43\x8b\x3a\x13\x70\x2a\x2c\xcf\ +\x87\xa9\xd0\xf0\xc2\x8d\xca\xbc\xe3\xd1\xfb\x20\x37\x8b\x0a\x2e\ +\x1f\x4b\x50\xd1\xb4\x5b\xff\xd5\x46\x74\x4c\xa6\x7b\x29\xdb\x76\ +\x6c\xa2\x63\x8c\x45\x33\x74\x00\xeb\x0e\x6a\x8c\xee\x0a\xb0\xbd\ +\x28\xd2\xcf\x46\x73\x26\x4a\xe2\x3d\x6b\x75\x01\x7d\x30\xb2\x5c\ +\x0b\x38\x5c\x0b\x14\x8b\x64\x73\x7d\xce\xa9\x90\xba\x1b\x18\xb6\ +\x7e\x64\xf5\x71\xb7\x06\x3b\xe7\xba\xdd\xa0\xb7\xd6\xf5\x7c\xd7\ +\xb5\x1d\x8f\x73\x20\x7c\x11\xe8\xe1\x02\x1d\xe7\x02\x8b\x41\x90\ +\xd3\x02\xa8\x54\x6b\x61\x2a\x5c\xb7\x8e\x4c\xbd\xb7\x5f\xa1\xc9\ +\xce\xeb\xd5\x84\xd0\x69\xe2\x9d\xcf\xf7\x70\x83\x68\xae\xb7\x1b\ +\x20\x0e\xb0\x00\x8c\xb5\x58\x80\x00\xbc\x13\xa8\x05\xd0\x87\x9b\ +\x17\xd4\x02\x75\xd4\xfa\x6e\xa9\x44\x16\x6f\x8a\x5c\xb7\x9b\x70\ +\x2f\xad\x1b\xc6\x2a\x82\xe9\xd6\x78\x37\xf1\xfe\x83\x22\x22\x60\ +\x5b\x20\xec\x21\x80\xc8\x0d\x4e\xe3\x60\xc4\x97\xd2\x8f\x49\x69\ +\x73\x2d\xb0\x1e\x1b\x9e\x06\xbb\x01\xb6\xab\x62\x61\xa1\xb7\xf6\ +\x99\x70\xff\x6e\x10\x8d\x7b\xb9\x41\x8f\xe7\x41\x5c\x95\xc4\x3d\ +\x83\xe0\x4a\xbb\x42\x6c\x41\x8b\x3a\x13\x6c\xda\x79\x3e\x55\x51\ +\xbe\x26\xb2\x59\x0e\x34\x5d\x90\x8c\xd6\x6b\xa2\x5e\x41\x6f\xd5\ +\xe0\x26\xa3\xfb\xd1\x35\xa3\xc7\x0e\xb0\x2b\x28\xe2\x1a\x02\x18\ +\xbc\x6d\x62\x62\xf3\x1a\x04\x10\x05\xc2\xba\x10\x8b\xfa\x88\xfc\ +\x5c\xe4\xfa\x2a\x34\x9f\x58\xbf\x5e\x9f\xf9\x77\x47\xeb\xce\xb9\ +\x55\x48\xa9\x7e\x35\x01\x75\x13\x8f\xc6\x2d\xef\x8a\x1e\x31\x80\ +\x5a\x2c\x70\xd0\xb6\xf7\xaf\x49\x00\xda\x02\x50\x0b\x2c\xc1\x6d\ +\x54\x0d\x9f\x42\x55\x57\x99\x9f\x57\x81\x90\x84\x68\x27\xbd\x1a\ +\x71\x4d\xb8\x9d\xd4\x4a\x7d\xf4\xdc\x5a\xac\x81\xe7\x7a\x90\xe7\ +\x16\x37\x0c\x15\x08\x7b\x06\x41\x89\xc6\xc1\x42\x97\xc3\x95\xd6\ +\x73\x81\x7c\x3e\x4c\x85\xd8\x17\x18\x52\xf2\xa2\xd6\x16\x08\xf5\ +\xb8\x67\x36\xe8\x5d\x10\x51\x0f\xad\x77\x36\xcc\xee\x69\x2a\x5b\ +\x9c\x75\x10\x04\xdc\x12\x04\xa0\x8b\x21\xa7\x50\xa0\x7a\xa5\xc2\ +\x16\xa0\xbf\xd4\x3b\x10\x76\x8d\x35\xe9\xde\xd9\xa0\x37\xf1\x6e\ +\x61\xea\xac\x85\x8d\x9c\x82\x0f\x38\xbe\x2f\xc8\x34\xe7\xf8\x09\ +\x6e\x12\xad\xa7\x00\x74\x2d\x50\x68\xad\x05\x2a\x55\xaa\x3b\x0e\ +\x79\xd5\xaa\x3a\x29\x16\x98\xa3\x5e\xda\xd7\x56\xd2\xcb\x12\x7a\ +\xa4\x41\x5d\x56\x2b\x62\xf8\x5d\x0f\xbd\x27\x84\xf4\xd9\x5a\x13\ +\x89\xc0\x1a\x48\x0a\x3b\x95\x96\xf6\xf0\x90\x4c\x8e\x8e\xd1\xe0\ +\xe4\x84\x1c\x9d\xde\x44\x53\xbb\x76\xc8\xbf\xb8\xf3\xcb\xd7\xfd\ +\xdb\xbb\xef\xbe\xdc\xb3\x0e\x58\xf1\x60\xc4\xf3\xe6\x5a\x6b\x01\ +\xe5\x17\x70\x83\x18\x52\xa1\x5c\x5a\xea\x26\xdd\x87\x1b\xb8\x4d\ +\x8d\x79\x00\xf7\x0e\x88\x41\x63\x81\x88\xc7\x03\x23\x91\x10\x46\ +\x26\xc3\xff\x78\x52\x9d\x1d\x0c\x8c\x8f\xcb\xd1\xc9\x49\x63\x64\ +\x7a\xda\x1e\x99\x18\xb7\x6d\x3b\x66\x99\xf8\x9f\x6d\xd9\x14\x8b\ +\xc5\xc8\xb6\x2d\xf4\x71\xe2\xeb\x64\x32\x49\x43\x58\xe7\x79\x93\ +\x93\x15\x08\xa0\xce\x9c\x7a\xd4\x01\xdd\x81\xf0\x78\xa3\x31\x2b\ +\xf0\x8e\xfe\x23\xc9\xe4\xf6\x19\x6a\xa0\x18\x4a\x8e\x8d\x91\x80\ +\x00\x56\x7b\x11\xef\x68\x2d\x69\x73\x64\x0d\x0a\x11\x12\x63\xad\ +\x09\x99\x4a\x49\x2b\x93\x31\x6c\xa4\xd5\x01\x6c\x89\x33\xe3\xe3\ +\xe6\xf0\xf4\x94\x99\xc9\x66\x6d\x32\xd4\xc6\xc2\xe6\xe5\x5a\x96\ +\x45\x71\x45\x0e\x24\xe3\x71\x35\x8e\x27\xb8\x8f\x87\xa4\x63\x98\ +\xb7\x63\xfc\x9c\x7a\x06\x02\x61\x01\xa8\x67\xd2\xa9\x34\xed\x3f\ +\x77\x52\xe9\xad\x67\x29\xbc\xd2\xae\x10\x59\xa0\x02\x12\x15\x14\ +\x43\x19\x95\x0a\x77\xec\xc0\xb6\xf8\xb8\x0a\xa7\x8b\xb5\x5a\xe8\ +\x67\x78\x36\xb0\xac\x40\xc4\x62\x42\x26\x12\x52\x0e\x0c\x48\x99\ +\xce\x20\x58\x8e\xc9\xc4\x86\x73\xcc\xd4\xf8\x46\x63\xdd\xe4\xa4\ +\x3d\x38\x3a\x66\x41\x55\x26\x2f\xce\x34\x94\x43\x92\xc9\x8b\x06\ +\x4c\x1e\x9b\x26\x19\x80\x26\x8c\x7b\x21\x69\xc0\x62\xe0\x1e\xae\ +\x19\xea\x59\x0d\x7d\xe4\x87\x79\x7e\x57\x83\x05\xa4\xe6\x26\x92\ +\x99\x18\x6e\xf7\xda\x0e\xaf\x9e\x0a\xf9\x8f\x24\x49\x21\x32\xae\ +\xe3\xd1\xb6\xa9\x29\xf9\xea\xf1\x13\x1e\xcd\xcc\x48\xfb\xe2\x0f\ +\x1b\xa3\x9b\x36\xd9\x03\x83\x83\x26\x7e\xc8\xd4\x0b\x64\xad\x60\ +\xac\x34\x80\x59\xb2\x15\x19\x73\xf9\xf8\x1b\xd4\x31\x0e\x78\xcc\ +\x8b\x57\xe0\xb5\x99\xfc\x0e\x34\x0c\xe8\x39\x75\xf8\xc9\x82\x37\ +\x00\x7c\x97\x63\x11\xf7\xfc\x0c\x93\x0c\x85\xd8\xfc\x5d\x34\xbe\ +\xd6\xd9\x2c\xdc\xc5\xd6\xeb\x6e\xcc\x94\xa9\x35\x9c\x08\x75\x67\ +\x82\x1a\x8a\xa1\x11\x29\xa7\x38\xf2\x9f\x29\x14\xbc\x89\xcf\x7d\ +\x1e\xe7\x22\x23\x94\x49\xa7\x40\x32\xc1\x0b\x51\x84\x41\x45\xbd\ +\x26\x98\x8c\x8e\xe2\x18\xa3\x0f\x17\x69\x59\xbc\x78\x8c\x2d\x40\ +\x11\x6c\x03\x04\xa2\xc7\x9a\x84\x7a\x3e\x11\x5a\x85\x26\xac\x35\ +\xdd\x9a\xba\x59\x30\x3c\xd7\xf6\x0d\xbe\xae\x17\x8b\x65\xcb\x13\ +\x99\x35\x6c\x87\xa3\x5a\x40\x5b\x40\xa5\x79\x2e\xb0\x1e\x01\xe5\ +\xe4\x9e\x7d\xd6\xa6\xe9\x69\xca\x8e\x8d\x92\xdd\xd4\x34\xb1\x16\ +\x0c\x93\x3b\x6d\xaa\x9a\x44\x44\x8e\x11\x04\xbc\xd0\x30\xa5\x3a\ +\x2e\x6b\x57\x2f\x58\x43\x9b\x34\xa3\x6d\x8e\xdf\xd1\x42\x40\x6b\ +\x8e\xb5\x40\x57\x2e\xf3\xf9\xdb\x8d\x7c\xbe\x4a\xc2\x4f\xb3\x71\ +\xf4\x6b\x01\x2c\x00\xb5\xf3\x09\x3c\x4f\x66\xa6\xa7\x51\x06\x8c\ +\xd0\xf0\xf0\x30\xff\x78\xf3\xbb\xa1\xf6\x74\xbd\x00\x62\x7a\xcc\ +\xe0\x7b\x0a\xda\x2c\xd1\xba\xc9\x47\xd0\x1a\xe6\xbe\x6d\x0c\xa2\ +\xda\x0a\xf8\xdd\xd0\xc4\x9b\xbb\x52\xad\x71\xfd\x8c\x16\x4a\xe5\ +\xf4\xa9\x1a\x1e\x4c\xaf\xc1\x02\xba\x53\x61\xc9\xf7\x95\x00\x6a\ +\xae\x1b\x0c\x25\x93\x76\x22\x9e\x20\x5d\x1b\x60\x31\x6d\x64\xb5\ +\x00\x22\xd2\x91\x70\xb4\x56\x5b\x7d\x94\x7b\x4d\x46\x2f\x5e\x9b\ +\xb4\xe3\x38\xfa\x0f\x20\xda\xf4\xbb\x02\x1d\xe6\x75\x1c\x50\xdf\ +\xd1\xef\xeb\x00\xb9\xf8\xea\x2b\x0d\xc3\xf3\xfa\xb6\x00\xd1\xfc\ +\x17\x23\x73\xfc\xb6\x67\xdb\x42\xfd\xa8\x69\x68\xcd\x6a\xad\x69\ +\x82\xda\x2c\x79\xac\x89\x30\xb4\x50\x34\xda\xde\xd1\x66\xaf\xef\ +\xe9\x6b\xf4\xfa\x5b\x3c\xcf\xdf\x60\x8d\xab\xf9\x0c\x6a\x83\x81\ +\x81\x01\x95\xeb\x13\xcd\x38\xd4\xd9\x1a\xa5\x62\xc3\x39\x72\x78\ +\xc4\xf5\x7c\xd9\x87\x05\x44\xa9\x10\x07\x23\x67\x78\x11\x3e\x56\ +\x8d\x42\x43\x93\xd3\xd2\xd7\x5a\xd4\xda\xd7\x64\x3b\x03\x9b\x16\ +\x4e\x9b\x26\x75\xd3\x04\xb5\xf6\xf4\xb3\x3a\x23\x74\xb6\x72\x3e\ +\xef\xce\xbe\xf3\x4e\x3d\x7f\xf4\xa8\x53\x3a\x79\xc2\xaf\x9e\x99\ +\x95\x41\xa1\x60\x58\x8d\xba\x3d\x20\x45\x7c\xc8\x8e\xa5\x32\xa9\ +\x64\x32\x96\x88\x0f\xbf\x9e\x5b\xfc\xd7\x3e\xb2\x40\x94\x0a\x4f\ +\x39\xce\x82\x90\x92\x3d\x3b\xd0\x8b\x6e\xd5\xa8\x16\x82\xd6\x1a\ +\x34\xd2\xb5\x68\x5c\x6b\xb4\xa5\xaf\xd6\xc6\xef\x71\x2b\xe6\x72\ +\xce\xe9\x23\x47\xea\x0b\x47\x8e\xb8\x85\xe3\xc7\xfd\xf2\xe9\xd3\ +\xd2\x59\x58\x30\xfc\x62\xd1\x36\x1a\x8d\x44\xdc\xf7\x53\xb6\x69\ +\xc6\xf1\x8d\xb8\x0a\x90\x86\x51\x0b\x4c\xa3\xe4\x1a\x0a\x05\x60\ +\x09\xa2\x9c\x43\xd1\x75\xe8\xe9\xd3\xb3\x4f\xbe\x9d\xcf\x1f\xeb\ +\x57\x00\x3a\x13\x34\xea\xbe\x5f\xf2\xa4\x8c\x6b\x72\xda\x84\x5b\ +\xcd\x55\x43\x13\x5d\xa9\x15\x66\x67\x9d\x1c\xc8\x2d\x1d\x3b\xe6\ +\x2c\x1e\x3d\xea\x57\x67\x67\x79\x97\xb9\x4c\x2e\x21\x44\xca\x84\ +\x2c\x08\xc0\xef\x35\x1c\x29\x4b\x7c\x28\x83\x5a\xa4\x58\xc7\xd6\ +\x9c\xff\x0d\x63\x59\x88\x7c\x01\x9b\xb4\x3c\x14\x73\xd4\x75\xe7\ +\x30\x5f\x67\x57\x65\xe8\xcc\x05\xd4\x80\x02\x50\x0c\xe7\xfb\x17\ +\x80\x0b\xd4\x71\x40\x7a\x6c\x7c\x71\x71\x47\x12\x02\xb0\x59\x83\ +\xb6\xdd\x45\x12\xe4\x1a\xb9\x43\x87\xea\x79\x90\xc3\x5f\x7f\x83\ +\x0a\x6b\x0e\xe4\x44\xa9\x14\x53\x9a\x13\x22\xcd\xe4\x02\x64\xd9\ +\x86\x10\x7e\x43\xca\x4a\x93\x9c\x22\x56\xf1\xfd\x7c\x11\xc4\x16\ +\x7c\x3f\x87\x12\x7c\x1e\x3b\xd1\x32\x13\xea\x20\xc7\xf0\x5b\x10\ +\xb4\xf7\x7a\x1c\x3d\xab\xab\xc0\x1e\x02\x58\xb5\x16\x70\x80\xd2\ +\x7b\x8d\xc6\x4b\x9b\x97\x96\xf6\xbe\xf4\xe0\x83\x8b\x89\x7a\xd5\ +\x3c\x35\x9f\xaf\xe1\x80\x54\x82\x9c\x6d\x36\x1a\xc9\x18\x8a\x5f\ +\xfe\x16\x6f\x64\x80\x3a\xff\x59\xad\x2e\x65\xa1\xe6\xfb\x4b\x15\ +\x68\xac\xe8\x79\x0b\x8b\x38\x66\x3f\x89\xcd\xd5\x82\xeb\x96\x34\ +\xa1\x3e\x88\x31\x04\x20\xcf\x06\xdc\xfa\xfe\xbf\xce\x42\x00\x26\ +\x85\xe6\xb8\x11\x52\xda\x7e\xf3\xe4\xe4\x1f\x6f\x4c\x26\x77\xa7\ +\xd2\x29\xff\x8d\xb9\xdc\x4f\xaa\xa8\x0f\x4a\x40\x1e\xc4\x70\x80\ +\x9a\x3b\xe3\xba\x8b\xdd\xa4\x80\xde\xa4\xb8\x17\x8c\x1e\xe4\x28\ +\x1a\x77\xb7\xd5\xc8\xf6\x2b\x00\x2d\x04\x1b\x5d\x1a\x18\x05\x86\ +\x81\x18\x20\xce\x46\x5b\x6b\xd4\x18\x7d\x30\xc4\x3e\x78\x01\x18\ +\xe8\x2c\x26\xde\x84\xa1\x6b\x84\x5f\x2e\x62\xfd\xb7\xff\x05\xc7\ +\xfd\xe7\xdb\x23\x5d\x13\x38\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ +\x42\x60\x82\ +\x00\x00\x20\x1c\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\ +\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\ +\xa7\x93\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x1b\xaf\x00\x00\ +\x1b\xaf\x01\x5e\x1a\x91\x1c\x00\x00\x00\x07\x74\x49\x4d\x45\x07\ +\xd7\x08\x12\x14\x39\x28\x29\x91\x7c\x0e\x00\x00\x1f\xa9\x49\x44\ +\x41\x54\x78\xda\xe5\x9b\x09\xb0\x5c\x57\x99\xdf\xff\xb7\xf7\xbd\ +\x5f\xbf\xfd\xe9\xe9\x3d\x49\xd6\x2e\xd9\xda\x2c\x79\xc1\x78\xc0\ +\x76\x42\x81\xc1\x03\x64\x0c\x13\x1c\x42\x65\x02\x4e\xb1\x84\x78\ +\x5c\xc5\x14\x55\x49\x2a\x54\x48\x05\x2a\x03\xc3\x14\x03\x55\x33\ +\x13\x43\x2a\xae\x21\x9e\x01\x26\x05\x43\x80\xd8\xb2\x0d\x78\xc3\ +\x96\x25\x6b\xb1\xf5\xb4\x3d\x6b\x7d\xd2\xdb\xb7\xde\xb7\xdb\xb7\ +\xf3\x3b\xa7\xbb\x35\x12\x1a\x0a\x18\xb0\x81\x4a\xcb\x9f\xcf\xed\ +\xbb\x9c\x77\xbe\xed\xff\x2d\xf7\xb4\xfe\x7f\xff\x38\xaf\xe7\xdf\ +\x59\xb3\x66\x8d\xaf\xab\xab\xcb\xd7\xdb\xdb\x6b\x29\x91\x48\x38\ +\xd5\x6a\x55\xb9\x5c\xce\x5b\x58\x58\xf0\x96\x97\x97\xbd\x0b\x17\ +\x2e\x78\xd9\x6c\xb6\x29\x09\xfa\x2d\x16\x40\x24\x12\xf1\x6d\xdd\ +\xba\x35\xb0\x7b\xf7\xee\xf8\xdd\x77\xdf\xbd\xb5\xaf\xaf\x6f\x67\ +\x34\x1a\x5d\xcf\xf9\x75\x7e\xbf\xbf\xd7\x71\x9c\x04\x14\x6f\xf2\ +\x69\x34\x1a\x05\x43\x08\x63\xa6\x5c\x2e\x9f\x2a\x16\x8b\xe3\xd3\ +\xd3\xd3\xfb\xbf\xfd\xed\x6f\x9f\x3c\x70\xe0\x40\x0d\xa1\x34\x8c\ +\x40\x7e\x1b\x04\xe0\x6c\xda\xb4\x29\x74\xef\xbd\xf7\xf6\xbe\xf5\ +\xad\x6f\xbd\x07\x2d\xbf\x3d\x16\x8b\xdd\x1c\x0e\x87\xfb\x60\x5a\ +\xf0\x2a\xd7\x75\x2d\xc1\xb0\x3c\xcf\xb3\x0f\xf9\x7c\x3e\x4b\xc1\ +\x60\x50\xdc\x67\xcf\x57\x2a\x15\x15\x0a\x85\x49\xac\xe1\xd9\xa9\ +\xa9\xa9\x6f\x3d\xca\xe7\x5b\xdf\xfa\x56\xde\x58\xca\xaf\x52\x18\ +\xce\xaf\x4a\xdb\xd7\x5f\x7f\x7d\xf4\x13\x9f\xf8\xc4\xae\x6d\xdb\ +\xb6\x7d\x34\x9d\x4e\xdf\x0d\xd3\x29\xc3\x08\x1a\x15\x1a\x55\xa9\ +\x54\x52\x15\xa6\x6a\xb5\x9a\xdc\x7a\xbd\x25\x00\x08\xa1\x40\xad\ +\x95\xc0\xbc\x15\x42\x38\x1a\x55\x2a\x95\xb2\x14\xe5\xb8\xce\xfd\ +\x8b\x8b\x8b\xf3\x33\x33\x33\xff\x7b\x6c\x6c\xec\xcf\x3e\xf7\xb9\ +\xcf\x8d\x4f\x4e\x4e\xba\x46\x10\xbf\x6e\x01\x38\x1b\x37\x6e\x8c\ +\x7e\xfa\xd3\x9f\xbe\x79\xc7\x8e\x1d\x7f\x94\xc9\x64\xde\xe2\xe7\ +\x03\xd3\xc6\xaf\x55\x2c\x14\x54\xe1\xd8\x50\x15\x2a\x23\x04\xc8\ +\x0a\xa2\x8e\x20\x1a\x58\x82\xe1\xde\xe7\x38\xf2\x07\x02\x0a\x05\ +\x43\x0a\x86\x42\x0a\x84\x43\xf2\x9b\x63\xc6\x68\x3c\xae\x9e\xbe\ +\x3e\xf5\x41\x21\xae\x2d\x2d\x2d\xd5\x2f\x5d\xba\xf4\xcd\x23\x47\ +\x8e\x7c\x96\xbf\x7b\x22\x9f\xcf\xbb\xbf\x16\x01\xa0\x9d\xe0\x87\ +\x3f\xfc\xe1\x91\xf7\xbf\xff\xfd\xff\x7e\x68\x68\xe8\x03\x98\x70\ +\x10\x4d\x5b\xc6\x4b\x30\x6e\x28\xbb\xbc\xac\x85\xb9\x79\xcd\xce\ +\xcd\x6a\x6e\x76\x56\x4b\x8b\x4b\xca\xe6\xb2\xd6\x1a\x3a\x02\xf0\ +\x49\x0a\xfa\xfc\x8a\x84\x82\x4a\x18\xcd\x27\x12\xea\x4a\xa7\xd5\ +\x95\xe9\x56\x2a\xd3\xa5\x68\x2a\xad\x50\x22\xae\x70\x2c\xa6\x6e\ +\x84\x30\xbc\x72\xa5\x62\x1c\xcf\xce\xce\x96\xcf\x9c\x39\xf3\xc5\ +\x6f\x7c\xe3\x1b\x9f\xfb\xfa\xd7\xbf\xbe\x2c\xc9\x7b\xbd\x04\xe0\ +\x8c\x8e\x8e\xc6\xbe\xf4\xa5\x2f\xbd\x63\xcf\x9e\x3d\x7f\x8a\x89\ +\x0e\x5d\xd6\x78\x3e\xaf\x1c\x4c\x4f\x4f\x4d\xe9\xfc\xb9\xf3\x3a\ +\x73\xf6\x8c\x26\x26\x26\x34\x03\xf3\xf8\x72\x87\x71\x6b\xfa\xc2\ +\x3d\x1c\xa3\x7d\x49\x01\xc7\xa7\x00\x18\x10\x0a\xf8\x15\x45\xcb\ +\x89\x48\x54\x19\xcc\xbf\xaf\xa7\x5b\x83\x83\x83\xea\x5f\xb1\x42\ +\xe9\x81\x01\x45\x33\x19\x85\xcd\x79\xce\xad\x5a\xb5\x4a\xc2\x72\ +\xce\x9d\x3b\xf7\xea\xc1\x83\x07\xff\xf5\x27\x3f\xf9\xc9\xe7\x5d\ +\x3e\xaf\xb5\x00\x7c\xb7\xdc\x72\x4b\xf7\x97\xbf\xfc\xe5\xff\x40\ +\x48\xfb\xb7\x66\xed\x98\xa0\x0a\x50\x76\x71\x51\x13\x17\x2e\xe8\ +\xc4\xf1\x13\x1a\x3b\x7e\x4c\x68\xc7\x32\x5e\x2e\x96\xd4\xdb\xdb\ +\xa3\x95\x2b\x86\xd5\xc7\xd8\xdd\xd5\xa5\x58\x24\xa2\x30\xbe\xde\ +\x6c\x78\x06\x0f\xb8\xa7\xa0\x02\x02\x5c\x5a\x58\xd0\xfc\xf4\x0c\ +\x34\x8d\x60\x9a\x8a\xe0\x06\x29\x5c\xa0\xbf\xa7\x47\x2b\x56\x0e\ +\x6b\xc5\xea\xd5\xca\x8c\x8c\x2a\xda\xdb\xab\x38\xc2\x19\xe5\x7b\ +\x5f\x7f\xbf\xc0\x86\x2a\xd8\xf0\x1f\x1f\x7c\xf0\xc1\x2f\xe3\x22\ +\x95\xd7\x4a\x00\xfe\xb7\xbf\xfd\xed\x2b\x3e\xff\xf9\xcf\xff\x05\ +\x5a\xb9\x1b\x60\xb2\x8c\xe7\xd0\xec\xe4\xc5\x8b\x3a\xfa\xca\x2b\ +\x3a\xf0\xd2\x4b\x3a\x7e\xf2\xa4\x66\xa6\xa6\xf1\xd9\x5e\x6d\xdb\ +\xba\x55\x9b\x37\x6d\x52\x22\x1c\x91\xaf\xe9\xc9\xef\xb5\xc8\x31\ +\x04\xf3\x62\x84\xac\x45\x34\x0c\x71\xec\x72\x5f\xb5\x5a\xb3\x73\ +\x9e\x3e\x76\x4c\x0b\x08\xd1\x80\x63\x12\xb3\xef\x87\xf1\x95\x30\ +\xbd\x62\xfd\x7a\xa5\x56\x8d\x2a\xc2\xf7\x01\x5c\x62\xf5\x75\xd7\ +\x59\xa0\x45\x08\x5f\xf9\xd4\xa7\x3e\xf5\xe0\xc9\x93\x27\x8b\x3f\ +\x2f\x40\xfa\x7f\x5e\xe6\x3f\xf0\x81\x0f\xac\xf9\xcc\x67\x3e\xf3\ +\x48\x7f\x7f\xff\x9d\x26\x44\xe5\xdb\x1a\x3b\x31\x36\xa6\x1f\xfe\ +\xf0\x87\x7a\xe2\x07\x3f\xd0\xcb\x2f\xbf\xac\x01\x16\xf5\xce\x77\ +\xdc\xa3\xbb\x6e\xbf\x5d\xd7\xa1\xf5\x0c\xbe\x9d\xc4\x54\xd3\x6a\ +\x51\xaa\x43\x9c\x4b\x4a\x4a\x74\x88\x73\x71\xc6\x18\x6e\x11\xe7\ +\x5a\x6f\x32\xa5\x75\x1b\xd6\x69\x04\x06\x6b\x08\xb9\xb0\xb0\xa8\ +\x12\x02\x2f\xf2\x37\x6b\x4b\x4b\xf2\x55\xaa\x0a\x20\x98\x4a\xdd\ +\x55\xae\x84\x95\x81\x0f\x03\x03\x03\xbb\x6e\xb8\xe1\x86\xad\x58\ +\xc4\x63\xe7\xcf\x9f\xaf\xfe\xaa\x04\xe0\xbf\xf3\xce\x3b\x57\x7e\ +\xf6\xb3\x9f\xfd\x5f\xc4\xf5\x5b\x0d\x8a\x1b\xb3\x9f\xc3\x4c\x5f\ +\xda\x7f\x40\x8f\x3d\xbe\x57\xcf\x3e\xfb\xac\x5c\x7c\xfb\xbd\xbf\ +\xf7\x7b\xba\xe3\x8d\x6f\xd4\x20\xc0\x95\xc2\xa7\xd3\x4e\x87\xe9\ +\x0e\xb3\x0e\x0c\xc2\xa4\xa4\xa8\x31\xf1\x26\x24\x99\x11\xe2\x9c\ +\x19\xa1\x98\xbd\xc6\x79\xac\x22\x01\x26\x5c\xb7\x6e\xbd\xba\x01\ +\xc4\xfc\xf4\x94\xaa\x68\xba\x9c\xcb\xab\xba\xbc\x24\x87\xb5\x84\ +\x88\x1e\x0d\x9f\xa3\x3c\xc7\x19\x5c\x05\x21\x6c\x02\xa3\x36\xee\ +\xdb\xb7\xef\xbb\xe0\x52\xfd\x97\x15\x80\x8f\x30\xd7\xff\xd0\x43\ +\x0f\x7d\x85\x89\xef\x00\xc4\xac\xd9\x4f\x5d\xba\xa4\xe7\x9f\x7f\ +\x5e\xff\xf7\xb1\x47\x75\xe8\xe0\x41\xed\xda\xb1\x43\xff\xfc\xde\ +\x7b\xb5\xb2\xa7\x57\xe9\x0e\xe3\x57\x68\x38\x0a\x85\x61\x0c\xaf\ +\x57\x00\xc6\x02\x8c\xfe\xa6\x20\x46\xaf\x75\xec\x33\xc7\xf6\xba\ +\x21\x29\xc8\x18\x16\xe4\xf1\x9c\x5b\x07\x3b\x12\x1a\xc1\x22\xaa\ +\x33\x73\xaa\xb1\x86\x5a\x89\xd0\x4a\x44\xb1\x42\xf0\x33\x23\x96\ +\x96\x03\x8c\xbb\x00\x4a\x42\xe6\x26\xb2\xd0\x81\xef\x7f\xff\xfb\ +\x8f\xe3\x5a\xee\x3f\x56\x00\x0e\x79\x7b\xea\xe1\x87\x1f\xfe\xcf\ +\x6b\xd7\xae\xbd\x8f\x58\x6e\x32\x33\x4d\xc3\xfc\x8f\x9f\x7b\x4e\ +\x8f\xed\xdd\xab\xb3\xa7\x4f\xeb\xdd\xef\x7c\xa7\x6e\xdb\xbd\x47\ +\x5d\x80\x5a\x86\x85\x74\x18\x8f\x59\xa6\x61\xb6\xcd\xa4\x45\x7c\ +\x33\x1a\xbf\x6f\x42\x1c\x37\x6d\x24\x68\x8d\x6a\x9f\x77\xec\xbd\ +\x8c\x1d\xe1\x58\x30\x6c\x32\x59\xdd\x5a\xcf\xf0\x9a\x0d\x6a\x10\ +\x4e\xdd\x42\x8e\x30\x5a\x53\x3d\x57\x40\x08\x65\x2c\x21\x88\xa4\ +\x23\x2a\xd6\x6a\xd6\x1d\x58\xfb\x2e\x92\xb3\x65\x84\xb0\x5f\xcc\ +\xfe\x0b\x0b\x80\xb8\x1e\xf9\xc2\x17\xbe\x70\xef\x6d\xb7\xdd\xf6\ +\x5f\x00\x3c\x1f\xcc\x5b\xb3\x7f\xe1\xf9\x17\xb4\xf7\xf1\xc7\x75\ +\x11\xc4\xbf\xef\xf7\x7f\x5f\x1b\x09\x47\x5d\xf8\x62\x06\xcd\xe3\ +\xd7\x76\x91\x21\x18\x68\x69\xb5\xcd\x58\x9b\xa9\xa6\x65\x9a\xb1\ +\x7d\xac\xf6\xb1\xda\xc7\xba\xea\xd8\x8e\xac\xc3\x53\x20\x0d\x40\ +\x3a\x9e\x42\x45\xc9\x29\xd7\x35\xb4\xf6\x3a\x35\x96\xc1\x02\x37\ +\x27\xa7\xee\x22\x84\xa2\xfc\x60\x42\x08\xb0\x6d\x1a\x21\x10\x0d\ +\x07\x08\x95\xe4\x0b\xbf\x43\x8e\xf2\x14\x2e\x3a\x21\x66\xfc\x45\ +\x04\xe0\xa7\x80\xd9\xf4\x91\x8f\x7c\xe4\xaf\x40\xe0\xa4\xc9\xe8\ +\x96\x09\x73\x07\x0f\x1c\x40\xf3\x8f\xeb\x3c\x21\xce\x30\xbf\x66\ +\x60\x00\xcd\xfb\xd4\xed\xf7\x29\xe9\x39\xd6\x7f\x03\x2d\x2d\x42\ +\xad\x58\xaf\x0e\xa3\x57\x33\x79\x95\x15\xa8\x6d\x05\x96\x38\xee\ +\x8c\x1c\x28\x18\xa7\x2e\xe8\x8a\x28\x56\x73\xe5\xe5\x4c\xf4\x80\ +\x88\x40\xfd\x6b\x56\x03\x86\x17\xb9\xa7\x2a\xaf\x84\x80\x8a\x65\ +\xf9\x39\x1f\x8a\xc7\xd4\x20\xcc\xba\x92\x86\x56\xac\x08\x90\xa7\ +\xdc\x76\xe2\xc4\x89\x47\x00\xc6\xf2\xcf\x2d\x00\x24\xd7\xf5\xc5\ +\x2f\x7e\xf1\xb3\x84\xbb\x5b\x08\x2f\x36\xc1\x39\x41\x48\x7a\xfc\ +\x89\x27\x34\x06\xd2\xbf\xfb\x77\xef\xd1\xda\xa1\x15\xea\x86\xf9\ +\x54\x44\xea\x92\x8f\xe4\x25\x2e\x11\xbe\x3a\xcc\x59\x26\x1a\x10\ +\x82\x40\xcb\x57\x6a\xfe\xaa\x31\x68\xb4\xe6\xba\xc4\xf7\x11\xad\ +\xba\x79\x8f\xfa\xd6\xae\x55\x1f\xbe\xde\x47\xa8\xeb\xdf\xb8\x56\ +\xf1\x35\xbd\x0a\xf7\xf4\x6b\xd5\x75\x5b\xd4\xbf\xe1\x06\x0d\x6e\ +\xde\xac\x9e\xd1\x51\x2d\x9c\x1a\x57\xdf\x48\x9f\x16\x16\x27\x14\ +\xab\x53\x64\x95\x5d\x35\x89\x4e\x01\x39\x0a\xa6\x92\xaa\x01\x9e\ +\x41\x04\xd1\xc3\x07\x2b\xf0\xbe\xf7\xbd\xef\x3d\x2d\xa9\x71\x8d\ +\xa5\xeb\xda\x4f\xf0\x81\x07\x1e\x78\x13\x7e\xff\x1e\xc2\x9d\xcd\ +\xe3\xa7\x88\xc9\xa0\xaa\x8e\x1e\x79\x59\xb7\xec\xd9\xad\x75\xc3\ +\xc3\x4a\x4b\x84\x38\xc1\x78\x40\x41\x98\x1b\x20\x16\xa7\x07\xfb\ +\x5b\x0c\x37\x5a\xc4\xf1\x15\x82\xb8\x96\x12\x84\xcc\x55\x37\xed\ +\x91\x83\xfb\xa8\x69\xdc\xe4\xea\xcc\xc4\xf1\xd7\x55\x27\x19\x8a\ +\x45\xc3\xdc\x1f\x30\x67\x3a\xff\xc9\x2b\x57\x14\x4b\x74\x6b\x64\ +\xeb\xf5\x44\x08\xbf\xe2\xc2\x32\x4c\x74\xc0\x3a\x6b\x27\x4e\xca\ +\x9b\x5f\xd0\x0c\x19\x29\x25\xb7\xe0\xe5\x81\x0f\x7e\xf0\x83\x9b\ +\xcd\x04\x3f\x4b\x00\x0e\xda\xcf\x50\xca\xfe\x21\x26\x18\xb0\xf1\ +\x9e\xd4\x76\xec\xe8\x98\x8e\x1c\x3a\xa4\x34\xfe\x75\xeb\xce\x5d\ +\x4a\x35\x05\xd8\x11\xaf\xc3\x3e\x28\x24\xc7\x6d\x58\x06\x52\x83\ +\x43\x56\x83\xfc\x55\xc3\x34\x74\x25\xf3\x8d\xd6\xb1\x71\x11\x09\ +\x0d\xaf\xd3\x10\x89\x12\xcc\x9b\x73\x96\x3c\xa8\xf3\x8c\xb8\xbf\ +\xd1\x2c\x2b\x90\xea\x95\xcf\x0a\x51\x10\xff\xb3\xd7\x20\xc6\xfa\ +\x72\x4e\xab\x6f\xbc\x49\xc9\xe1\x5e\x25\x03\xb8\x20\xcf\x08\x57\ +\x75\x4f\x9f\x55\x1d\x41\xd4\xb3\x39\xcd\xce\xcc\xa8\xbb\xbb\x3b\ +\x7a\xeb\xad\xb7\xfe\x91\xa4\xf0\xcf\x12\x40\xe0\x43\x1f\xfa\xd0\ +\x1b\x30\x99\xdb\x0d\xf3\xb5\x72\x19\xb0\x9b\xd0\x91\xc3\x87\x34\ +\x4b\x4e\xff\x4f\xde\x7c\x87\x92\x86\x51\x28\x0e\x85\x78\x9a\xe5\ +\x4b\x56\xe3\xae\x65\x32\x92\x4c\x6a\x68\xcb\x66\x05\x11\x56\xc7\ +\x0a\x3a\xcc\x73\xc0\xf9\x80\x86\x77\x6e\x53\x7a\x68\xa8\xe3\x16\ +\x1d\x21\x5d\x1e\xbd\xf6\x33\x35\xaf\xa6\x68\xba\x5b\xf8\xc8\x35\ +\x56\x64\x05\x56\xab\x2a\x46\x6a\xdd\x7b\xfd\x76\xd2\xeb\x16\x77\ +\x81\x5a\x5d\x4d\xc0\xba\x81\x00\x3c\xb2\xc8\x02\x0a\x34\x25\xf8\ +\xca\x95\x2b\xdf\x73\xdf\x7d\xf7\x6d\x90\xe4\xfc\x54\x01\x50\x8b\ +\x27\xdf\xf6\xb6\xb7\xdd\x4f\x1d\xef\x33\x0f\xe5\xc9\xc0\xc6\x4f\ +\x9e\xd0\x19\xd2\xdb\x35\xc3\x2b\xb5\xb2\x3b\xa3\x64\x87\x79\x16\ +\xe4\x73\x01\xa6\x96\x6a\x34\x73\xfc\x24\x7e\x58\xb1\x4c\x53\xda\ +\xe2\xab\xa4\xc0\x7d\xbd\x57\xb9\x43\x72\x20\xad\xe4\x86\x21\x85\ +\x13\x21\xfb\xbd\x01\x68\x4d\x1d\x79\x45\x2e\xc2\xbe\xc6\x6d\x9a\ +\x8c\x12\xf7\xa6\x25\xe6\x6b\xaa\x7e\xf9\x9a\xd7\x06\x53\x5f\x90\ +\x68\x43\xe1\xd4\xbd\x79\xbb\xc2\x71\x8a\x29\x2c\x2f\x64\xc2\x2d\ +\xb9\x81\x26\xa7\xe4\x52\x8c\x09\x25\x2e\x92\x3d\xd2\xa3\x08\xdd\ +\x7e\xfb\xed\x1f\x35\x6c\xfe\x14\x01\xd8\xa4\x67\xd5\xf0\xf0\xf0\ +\x9b\x6d\xd3\x02\x9a\x45\x92\xe3\xc7\x8f\x2b\x37\x33\xab\x3d\xdb\ +\xb7\x2b\xe1\xb5\x98\x0f\x7b\x6d\x34\xae\xd4\x44\x1b\x0b\x33\x6e\ +\xa8\x92\x5d\xd6\xa5\x23\x47\x54\x5e\x5a\x6a\x23\xbb\xd4\x43\xde\ +\xde\x0b\x36\x38\x8e\x0f\xd7\x58\xad\xae\xf5\x83\x72\x9d\x96\x36\ +\x2b\xa4\xd2\xe7\x5f\x78\x41\x59\xf2\x8a\x2b\x35\xeb\x59\x17\x60\ +\x6c\x0b\xc3\x4f\x7c\x0f\xf6\xad\x92\x17\xc8\x09\x6e\x38\x57\x63\ +\xee\x9a\x82\x31\x4f\x91\x95\x09\xa5\x46\x37\x2a\x3e\x30\xc2\xf7\ +\xa0\x65\xc6\x2f\x59\xc5\x80\x8e\x6a\x5e\xbc\x64\xb1\xa0\x8a\x40\ +\x5c\xce\x01\xea\xef\x06\x13\xd3\x3f\x4d\x00\xa1\xfb\xef\xbf\xff\ +\x1e\xc2\x5e\xcc\xdc\x5c\x06\xfd\x2f\x9e\x3b\xa7\x4b\x50\x17\x68\ +\xba\xb2\xaf\xcf\x32\x1f\x31\xc9\x89\xf5\x41\x34\x58\xc2\x02\xaa\ +\x2c\xca\x6f\x17\x6b\x35\x39\x05\x5e\x2c\x9d\xbf\x60\x90\xdd\x32\ +\x11\x27\x3d\x1d\xdd\xbd\x4b\xc9\x15\x5d\x2a\xe3\xef\x31\xc2\xd4\ +\xf2\xc4\xa4\x2e\xec\xdb\xaf\x6a\xbe\xd0\x36\xfd\x46\x27\x62\x40\ +\xae\x25\xbe\x5b\x6c\xa9\x15\x73\xea\x1e\xdd\x2c\x67\x78\xbd\x6a\ +\xf1\xaa\xea\xe1\x05\x79\xf1\xac\xba\x6e\x5a\xa3\xfe\x37\xbf\x13\ +\xdc\x59\x05\x58\xc2\x38\x40\xe9\x48\x90\xcd\x2a\xad\xe6\x1d\x98\ +\xaf\x9d\x3f\x2f\x1f\xf3\x93\xbe\x1b\x2b\xe8\xff\xd8\xc7\x3e\xf6\ +\x96\x2b\xf9\x0e\x74\x0e\x4c\xbc\x5f\xb7\x6e\xdd\x3f\xb5\xfd\x3a\ +\xc8\x80\xdf\xc4\xd9\x73\xca\xcf\xcd\x69\x23\x05\x89\x61\x3e\x6a\ +\xd2\x52\x99\x2c\xcd\x11\xff\xc1\xb0\xf1\x39\x4f\x35\xbf\x83\x96\ +\x1b\x62\xdd\x36\x7e\x2f\xf2\x5c\x79\x69\x59\x7d\xeb\xd6\xca\x47\ +\x8d\x2f\x01\x58\x2a\x29\xda\xb7\x5a\x0b\x2f\x3d\xa5\xec\x89\x39\ +\xee\xbd\x3a\x3a\x74\xa2\x87\xeb\x95\xe4\x73\x4c\x1e\x11\x56\x80\ +\x46\x49\x61\xfa\xac\x62\x3d\x03\xea\xb9\xee\x06\x35\x86\xd7\xa9\ +\x5e\x29\xda\x7b\xd3\x3c\xeb\x0f\x84\x54\x2f\xcd\x6b\xf9\xcc\x01\ +\xf9\x38\xbe\xaa\xbc\x75\x11\x22\x19\x63\x63\x72\x52\x3e\x5c\xb3\ +\x1a\x29\x8b\x2e\xb4\x46\x46\x46\xee\x91\xf4\xb7\x50\xf5\x4a\x01\ +\xf8\xe8\xeb\xf5\x51\xec\x6c\x43\x00\xb6\x46\x5f\x9a\x9f\xd7\x0c\ +\xc0\xe7\x15\x8a\x1a\x1d\x18\x84\x79\x4f\xe0\x7d\x0b\xf4\xd4\x12\ +\x00\xa7\x14\x2a\x4b\x95\x4c\x42\x3d\x23\x61\x92\x91\x90\xb8\x6c\ +\x85\x20\xa8\x00\x08\x25\xfa\xfb\x59\x5c\x55\x0d\xe2\x7d\x94\x92\ +\x36\x68\xd2\x65\xaa\x44\x0b\x1d\xed\x4c\x11\x8b\x69\x9b\xbd\xcb\ +\xbc\xf4\x06\xca\x05\x25\x82\x43\x6a\x54\x29\x74\x66\x2f\xa8\xd0\ +\x33\xc8\x3c\x2b\x69\x93\x05\x99\x2b\x6d\x05\x40\x6f\x0d\x21\x56\ +\x55\xbc\xf4\x8c\xca\xf3\x17\x98\x2c\x70\x75\xaa\x67\xc0\xb5\x84\ +\x30\x97\xb3\xaa\xd3\x91\x0a\x66\xba\x2c\x18\x92\x22\xdf\x2a\x29\ +\x7e\x8d\x00\xde\xf7\xbe\xf7\xed\xa4\xe7\x96\x32\x75\x7e\x1d\xbf\ +\x5e\x64\xf1\xb9\xf9\x39\x85\x78\xa8\x2f\x95\xb4\xa6\x1f\xb8\x42\ +\xfb\x12\xa3\x44\x4e\x8e\x65\xf4\xd3\xcc\x1c\x1a\x54\xaa\xe6\x80\ +\xcc\x2d\x21\x48\x56\x10\x2d\xcd\x3a\x15\x85\x32\xd7\x59\xbb\x4b\ +\x76\xf7\x90\xae\x26\x61\xfc\xef\x05\xb5\x6c\x05\xd0\x10\x12\xc0\ +\xd7\xc1\x1f\xa7\x2e\xa9\xc6\x5c\x01\x42\x20\x45\xce\xd8\x8f\xd1\ +\xf4\x0d\x4a\xaf\x24\xc4\xca\x69\x27\x57\x2e\x65\xf2\x69\x15\x27\ +\x9e\x43\x18\x01\x6b\x8d\x57\x49\x80\x63\x38\x96\x43\x16\x5b\xa3\ +\x3f\x11\xdb\xb8\xd1\xe2\x55\x32\x99\x1c\x7d\xef\x7b\xdf\xbb\x96\ +\x56\xda\x92\xb9\xab\xe3\x0b\xc1\xcd\x9b\x37\xef\x68\x58\xe0\xf1\ +\x6c\x03\x73\x79\x76\x4e\x55\xe2\x68\x8c\xef\x69\x90\x36\xc8\x1f\ +\xf5\x75\x90\xda\x35\xe4\x5a\x72\x2b\x1c\x67\xb3\x30\x38\x48\xd2\ +\xe2\x5a\xc1\xe2\xfb\x68\xc7\xf8\xb1\xa1\xba\xdc\x26\x85\x4c\x77\ +\x9f\xd5\x78\xc7\xd4\xbd\xcb\x73\xb9\x1d\x74\x87\x60\x3c\x88\x30\ +\x09\x7d\xcc\x63\xae\x63\x05\x7e\xf9\xf2\x21\x95\x4f\x1d\xd0\xc2\ +\xab\x87\x39\xc7\xf9\xa6\xc1\x9e\x25\x15\xce\x3f\xa6\xc2\x1c\xbd\ +\x01\x04\x5f\xcf\x5f\x5b\xf9\xda\x39\xc1\x19\x17\x6b\x0e\x4a\x82\ +\x3f\xdb\x7e\xa7\x48\xba\xd1\x28\xfd\x4a\x0b\x08\x63\x1a\xd7\x99\ +\xf0\x02\x59\xd4\x2c\x90\x50\x08\x41\x24\xda\xa5\x6c\x80\xf3\x72\ +\x98\x54\x90\x73\xd9\xd3\x6c\xde\xdf\x58\x32\xa5\xe9\x9c\xa2\x83\ +\x6b\x94\x3d\xf4\x8c\x2a\x97\x6a\x1d\x3c\xb0\xc5\x4c\x78\x75\x4c\ +\x99\x70\x54\x24\x16\x5a\x9a\x9c\xe0\xba\x07\xe3\xcd\xcb\xe9\xb0\ +\x5b\xad\xd1\xe8\x98\x57\xe0\x62\x45\xd1\xeb\xd7\x60\xe6\x61\x2d\ +\x1e\x3b\xa2\xca\x82\x1f\x86\x5b\xf7\xf8\xfc\x35\x85\xce\x9d\x56\ +\xa3\x56\x51\xd7\xaa\xf5\x98\xfe\xb3\xaa\xcc\x8f\xa9\xb4\x80\x5b\ +\x16\xa5\x7a\xe1\xda\xfe\x07\xcc\xd8\xf4\x98\x57\x4e\x56\x79\x00\ +\x9d\x3d\x0d\x18\xae\x6f\x0b\xa0\x61\x05\x40\xba\x18\xe5\xe4\x68\ +\x5b\x00\x36\x01\x2a\xe7\x73\xf2\xd7\xea\xb6\x3b\x13\x70\xeb\x98\ +\x62\xf8\x1f\x2c\xa8\x3c\xa8\x56\xc0\xdf\x27\x4e\xab\x67\xe3\x0e\ +\xe5\x87\x46\xc9\xc2\x9e\x57\x79\xc1\x33\x8b\x87\x19\x68\x68\xc0\ +\x40\x33\xa1\x2a\x8e\x35\xc0\x2c\x9d\xe2\x46\xa5\x53\x00\x59\x37\ +\xc1\xda\x96\x54\xca\xe4\x94\x19\xb8\x9d\x67\x69\xa2\x5e\xbc\xa0\ +\xfc\xc5\xc6\x55\x40\x19\x8c\x73\x5f\xed\xbb\xf2\x6e\xbd\x59\x95\ +\xc9\xa7\x54\x5e\xac\xa9\x59\x8c\xaa\x3c\x57\x27\xa7\xa8\xf2\xb7\ +\xac\x17\x5d\xbd\x4c\x5c\x5a\x46\x08\xf4\x26\xa9\x8c\xac\x52\x00\ +\xc3\x75\x6d\xe5\xd7\x6d\x82\xcd\xc9\x08\xfe\xdf\xdd\xa9\xc4\xea\ +\xa0\xa6\xcb\x03\x41\xd3\x91\x09\x88\x73\x39\x72\x11\x34\x68\x7c\ +\xfc\x27\xd2\x69\x66\xc4\x4c\x9b\xf4\xec\x12\xe4\xe7\x45\x0d\x6c\ +\xd8\xae\xd2\xf8\x51\x98\x58\xb4\x02\x18\xde\xb3\x4b\x4e\xb7\x2b\ +\x07\x21\x86\x58\x40\x64\xc5\x88\x4a\xaf\xce\x6a\x74\xcf\x1b\x25\ +\xaf\x85\x01\x67\x9e\x79\x56\x7e\xea\xfd\x08\x7d\xbe\xee\x61\x22\ +\x45\x31\xcf\xf5\x9b\x55\xdf\x1c\x63\x0e\x33\x7f\x15\x4d\x2f\x68\ +\xe1\xf4\xb8\x8a\x67\xa6\x34\xe1\xfe\x9d\x32\x83\x39\x84\x44\xb4\ +\x28\x86\x55\x99\xcb\x2b\x10\xa9\xcb\x09\xb3\xf6\x25\x3f\x56\x72\ +\x79\x6d\xd6\x0d\x7d\x75\x97\x90\x5d\xc4\x00\xfa\xad\x1b\xc0\x6b\ +\x7f\xc7\xfa\x2f\x63\x00\xbe\x11\x45\x00\xd6\x02\xdc\x3a\x92\x05\ +\x40\xa8\xeb\x61\xcc\x91\x8b\xf9\x05\x42\x36\x5e\x5f\x4d\xae\x6b\ +\x47\xaf\x8e\x58\x08\x87\x15\x6a\xf4\x10\x5a\x0e\x0f\x0e\x81\xd8\ +\xd6\xcf\x6d\xb8\x13\x0c\xd4\x8b\x59\xeb\x42\x19\xac\x24\x3c\x14\ +\x15\x27\x3b\x58\x80\xe6\x5c\xc5\x46\x42\xea\xd9\x76\x8b\xfc\xa1\ +\x20\xf3\x56\xed\x73\x16\x6b\xcc\x75\x4c\x37\xde\xdf\xa7\x91\x9b\ +\x6e\x26\x5b\xcd\xc0\x64\x5e\xf9\x19\xae\xe5\xfd\x58\x4e\x90\x28\ +\xb0\x48\x32\x86\x9b\x76\xb9\x8a\x64\x58\xcb\x95\x3a\x6a\x97\xe6\ +\x5e\x0d\x1e\x02\x81\x4e\xc8\x8f\x9b\xe1\x2a\x01\x70\x32\x72\xb9\ +\x16\x77\x5b\x80\x17\x96\x14\x89\xf9\x31\xdd\x28\x8b\xd4\x15\x49\ +\xcb\xb5\x82\xf0\x4c\x49\x5a\x5a\xb6\xb1\x21\xdc\x3d\x80\x46\xdb\ +\x80\xe7\x1a\xe1\x34\x31\xfb\x49\xc1\x15\x89\xcb\x0a\x65\x76\xdd\ +\x22\x5f\x2c\xcb\x12\x4a\x24\x31\x45\x25\x56\x39\xca\xec\xbe\x55\ +\x99\xd5\x6b\xdb\x00\x57\x62\xc1\xb8\xa3\x4d\xa6\xda\x64\xc1\xd2\ +\x53\xff\xa6\x75\xd6\x2a\x4a\x53\x92\x9b\x8d\x20\xd8\xba\xaa\x26\ +\xde\x57\x1d\x18\xa4\x14\xee\x62\xed\xc1\xab\x2c\x14\x62\xe4\x79\ +\x9a\xa8\x1d\x01\xc4\x7e\x12\x04\x1d\x4c\xc3\xf1\x0c\x83\xf6\x4a\ +\xd3\x5e\x08\x3a\x52\x18\xb2\xe8\x0f\x98\xd9\x30\xe5\x75\x26\xbe\ +\x3a\xe6\x34\xeb\x46\xca\x06\xa1\xeb\x36\x7d\xc5\x96\xda\xd6\x01\ +\x92\x97\x7d\xf2\xa6\xcf\xab\xb1\x9a\x50\x18\x0a\xab\xff\x86\xdd\ +\xca\x12\x59\x34\x77\xc6\x3c\x49\x65\x78\x17\xf8\xb1\x0d\x2d\x8a\ +\x79\xd0\x7e\x39\xaf\x06\x02\x38\xfd\xa3\xa7\x2c\xd3\xe1\x78\x5c\ +\x83\x37\x5c\x8f\x55\x31\xab\x93\xc5\x22\x82\x6a\xe4\x04\x78\x86\ +\x55\x26\x5a\x79\xf8\x39\x38\x06\xcc\x98\x05\x7b\xf8\x7a\x93\xe7\ +\x9d\x2b\x85\x60\xad\x08\x2b\xef\x84\xe7\x4e\xd2\xd8\x11\x00\x42\ +\xe7\xc3\x85\x76\x3b\xcc\x4f\xa3\x11\x62\x45\x7e\x18\xf0\xe1\x54\ +\x75\xb7\x80\xb6\x42\x52\xbd\x3d\xe7\x55\x42\x68\xb6\x42\x98\x5a\ +\x3e\xe7\x96\x0b\xb8\x90\x09\x93\x56\x8b\x00\x1e\x52\x07\x89\x0b\ +\x53\x17\x94\x1a\x59\x85\x80\x7c\xea\xdd\xb8\x55\x8d\x35\x68\x5c\ +\x20\xbc\x31\x7b\xeb\xaf\x35\x35\x8c\xf6\x4b\x05\xc6\x20\xb1\xbf\ +\x64\x05\x50\xcb\x17\x48\x84\x7a\x94\x59\x13\xa3\x29\x7b\x09\x2c\ +\xc1\xdd\x96\x22\xcc\x5b\x47\x00\xb3\xed\x90\x07\xb9\x0e\x2e\xd4\ +\xb4\x02\xa8\xe6\x6c\xc8\xb2\x82\x11\x14\x08\x87\x6d\xe9\xcd\x77\ +\x53\x17\x94\x0c\xcf\x57\xba\x80\x0b\xff\x95\x8e\x00\x02\xc1\x80\ +\xc2\xc1\x90\x15\x40\xb3\xcc\x12\x17\xa7\xd4\xe0\x38\x94\x34\x3c\ +\xa3\xd5\x2b\xfc\x1f\xe2\x24\xa3\x9f\x3e\x7d\x2c\x69\x05\x51\x5b\ +\x9c\x36\xa6\xd9\xbe\xee\xb6\xcc\xb9\xe8\xd3\xd2\xf1\x83\x68\xc6\ +\x30\x55\x13\x92\xc4\x4d\x70\x2f\x88\x63\x90\xd8\x16\x39\x30\x4b\ +\x31\x55\x2a\xa3\xd5\xcb\xee\x86\xe6\xfd\xa4\xc3\x21\x55\xaa\x13\ +\xe4\x13\x45\x04\xd0\x24\x22\x04\x40\xff\x29\xee\xab\xb5\x75\xd0\ +\xae\x03\x1c\xc1\x2c\x7e\xcf\xd8\xd6\x26\x6b\xf3\x29\x9c\x4c\x5e\ +\x16\x00\xd6\x5e\x96\xe4\x5d\x69\x01\x55\x8a\x85\x2c\x17\xe4\xf0\ +\x2f\x88\xb4\xa2\xd4\xf3\x05\x53\x86\x56\x1c\x55\x2f\x4d\x2a\x0a\ +\x6a\xbb\x4b\x53\x0a\xa7\x43\xaa\x2e\xb9\x1d\xe5\x63\x15\x14\x48\ +\x5d\x52\x33\x19\x55\xbc\xb7\x4f\x75\xb4\x5f\x9e\xba\x88\x00\x0c\ +\x00\x36\x21\xd7\x2c\x02\x01\x38\x2a\x2d\x9e\x52\x61\xc3\x46\xac\ +\x60\xd4\x6a\x85\xa7\xda\xeb\x68\xf9\x37\x44\xec\x9f\x46\x0e\x4d\ +\x0b\x82\xa3\xb7\xdc\x6c\x05\x10\x8c\xfa\x15\x88\xcf\xca\xf5\x16\ +\x50\x42\x59\x71\x94\x51\x9e\xe1\x38\x32\xaf\x6a\x10\x86\xea\x6a\ +\x15\x44\x30\x6e\x4a\x82\x9a\x8d\x6d\x86\xe0\x06\x1e\x3c\x53\x84\ +\x51\x94\x75\xde\x99\xa1\xec\x79\x06\xb7\x63\x01\x4d\x88\x28\xb3\ +\x30\xe9\xb5\x93\x9d\x40\x84\xbc\x9d\xc2\x21\x84\x69\xca\x63\xc2\ +\x19\xfa\x82\x17\x4f\x29\xb3\x69\xbb\xe2\x1b\x57\x28\x71\x5d\x58\ +\xb1\x15\x94\xc6\x2b\xa5\xd4\xfa\xa8\xd2\x3b\x37\x72\x6d\x27\x9a\ +\x0a\xa8\x34\x37\xad\xda\xec\x02\xe6\xd9\xd2\x1e\x02\x80\x18\xb1\ +\x82\xf2\xa5\xa2\x96\x8e\x1e\xe0\xb8\x24\x54\x67\x1b\x9a\x6a\x6b\ +\xbe\x69\xc8\xa5\x09\x33\x8f\xb5\x95\x1c\x2e\x5b\xf4\xc7\xa4\x03\ +\x54\x7a\xa4\xb3\xd5\x29\x3a\x3f\xe4\x23\x7c\x0f\xc5\x68\x84\xa4\ +\x27\x94\x1c\xad\xaa\x6b\x6d\x43\xd1\x6e\x62\xfb\x30\x58\x91\xa0\ +\x44\x4e\x19\x16\x3a\xd6\x60\x5c\x22\x24\x7f\x3c\x81\xe2\xd2\xea\ +\x58\x38\xca\x3e\xcb\xe0\x5e\x69\x01\x15\x5e\x37\x5f\x68\xa7\x8a\ +\x56\x00\x71\x3a\x2d\x61\x80\xca\x71\x72\xaa\x2e\x37\x95\x3b\xfa\ +\x8a\x86\x6e\xbc\x59\xdd\xeb\x37\xca\xb9\x7e\x37\xfe\x99\x67\x81\ +\xb8\x45\x22\x69\xcd\x2b\xc4\xbd\x1e\x0c\x94\x2e\x9e\xc5\x05\x4c\ +\x62\xd2\xb0\x21\xc8\x46\x08\x00\x94\x0f\x7e\x4b\x59\xfa\xea\xb8\ +\x4a\x37\x6c\x53\x6a\x68\x58\xb0\x29\x62\x94\x05\x4e\xdb\xe2\x22\ +\x6f\xaf\x13\x4a\xdd\x52\xc8\x0a\x8e\x05\x83\x17\x75\xc6\x59\xc5\ +\x7a\xa9\x27\xd2\x31\xd6\xd3\x24\xaf\x99\x50\x62\x10\x54\xc7\xdf\ +\xb3\xb1\xba\x92\x83\x8e\x55\x54\xac\xdf\xa3\x36\xc1\xcc\xc9\xf0\ +\xf9\x87\xc9\x1b\xcb\x89\xcb\x47\x63\xc6\x6f\x92\x20\xe6\xe7\x63\ +\x36\x5b\x9c\x66\x68\x5c\x89\x01\xb5\x31\x3e\x6e\xfb\x8f\xfa\x90\ +\x5a\x82\xfa\x3f\xc2\xc3\x4c\x62\x4d\xac\x7c\x3e\xaf\xe9\xe7\x7f\ +\x04\x43\x25\xf9\x9d\x0a\x85\xc9\x08\x4c\x0c\x21\x71\xee\x71\x6c\ +\x1e\x4f\x3c\x9e\x21\xef\x9e\xc5\x8f\x6d\x28\x6d\xbd\xf4\xb4\x16\ +\x00\xd5\x4d\xdd\x40\x9a\x3d\x57\x50\x69\xf2\x02\xf7\x57\xed\x33\ +\x1e\xd4\x74\x49\x9d\x99\xb7\x78\xe1\x04\xe8\x5e\x36\xf7\xd9\x6e\ +\xd1\xf9\x67\x9f\xd3\xf4\xb1\x1f\xab\xb4\x7c\x46\xd1\x01\x3f\x16\ +\x66\xc2\xd5\x8c\x22\xe9\xb8\x42\xa9\xa8\x62\x03\x41\xf5\x6d\x75\ +\xd4\xb3\xc9\x53\xcf\x96\x06\x02\x90\x4d\xd6\x1c\xd7\x47\x04\xf3\ +\xb5\x36\x5c\xa0\x9c\x38\x1d\x67\xe1\x0a\x9d\x4c\xf7\xa5\x97\x5e\ +\x3a\x72\x0d\x08\x3e\xf9\xe4\x93\x87\x79\x97\x56\x32\x37\x38\x94\ +\x9d\x71\x04\x10\xc5\x0a\x8c\x09\x35\x25\xea\x7b\x29\x77\xf8\xa8\ +\xe6\xc7\x0e\x61\xde\x79\x62\xef\x84\x8d\xd9\x96\xbc\x9a\x05\xb7\ +\xfc\xe9\x63\xc4\xe6\x26\xd7\x3d\xcb\x7c\xc7\x05\x3a\x84\x50\xb8\ +\x86\x20\xb0\x1e\x98\xb7\x66\xcf\x09\xc2\x24\xf5\xc1\xf4\x5e\xcd\ +\xef\x7f\xc2\x6a\xd0\xab\x59\x90\x45\x08\x15\x18\x68\xd0\xf1\x09\ +\x71\xef\x12\xe7\x2f\xe2\xe7\x30\x97\x48\x51\x7c\xf5\x70\x2d\x4e\ +\xe1\x14\xa2\x90\xf1\x81\xfc\xed\x30\x58\x43\xf7\x35\xbf\x22\x4e\ +\x00\x1c\x8b\xc9\x0b\x85\x08\xbb\xf4\x12\x4c\x94\x81\x30\xff\x69\ +\xb6\x1b\x9d\xfc\x49\x10\xf4\xf8\x5c\x64\x33\xc3\xab\xd4\x04\xdb\ +\x48\x15\x49\x66\x32\x4a\x50\xe2\xe6\xe9\xa8\xd8\x5c\xda\xe5\xe1\ +\x0b\x35\xcd\x3d\xff\x14\xdd\x9d\x21\xc5\xfa\xfa\x55\x5d\x30\x66\ +\x69\xea\xfd\x10\xe0\x35\xa7\x3a\x55\x57\x2d\x17\x31\xcc\xb6\xa3\ +\x83\xc9\x0f\x60\x1e\x57\x41\x8a\x9c\x73\xad\xc9\xe3\x9b\x30\x58\ +\x80\xa1\x79\x79\x95\x33\xb8\xd8\x51\xac\x62\x99\xe2\x86\x34\x35\ +\xe0\xb4\xdc\x47\x02\xe9\x23\x58\x98\x41\xf5\x79\x70\x61\x49\xa1\ +\xae\x1e\x1a\x17\x71\x14\x94\xa0\x59\x02\x40\xc3\xa4\x70\x51\xb1\ +\x36\x61\x31\x6e\x1d\xed\x57\xc0\x8c\x0a\xd1\x05\x73\xf1\x27\x53\ +\xaa\x74\xa5\x71\xdb\xf5\xca\xb6\x37\x66\xcd\xcf\xcf\x1f\x94\x94\ +\xfd\xc9\x96\x58\x13\x9a\xc7\x0b\x9e\x05\x21\xad\x99\xf8\x31\x9d\ +\xf4\x9a\x35\x0a\xa6\x52\xed\xa6\xa4\xd0\x9c\xa3\xfc\x49\x1a\x25\ +\xfb\x9e\x46\x71\x86\x81\x32\x42\xb8\x00\xd3\x33\xaa\x2d\x2f\x81\ +\x65\xa1\xab\xc2\x97\x07\xb5\xcd\x1f\x42\xe3\x6a\xa0\x41\x97\x89\ +\x2e\xaa\x3a\xbf\x17\xac\xd8\x8b\xc6\x8f\x32\x4f\x56\x45\x84\x0b\ +\xd6\xd8\x8c\xce\x41\x60\xe4\x06\x3c\x5f\x67\xfe\xf3\xcc\x3b\x4b\ +\x68\x0e\xc2\x78\x44\x0e\xc2\xf6\x05\xad\x10\xf0\xeb\x2e\xe6\x8b\ +\xf3\xbd\xdd\xaa\xc9\xe1\xf7\x65\x42\x78\x1d\xed\x93\x70\x05\x33\ +\x19\xa5\xae\xdf\x2a\x5f\x3c\x66\x9b\x21\xa6\xd7\xc1\xde\x81\xc7\ +\x84\x4a\xff\xa1\x9e\x60\xe9\x3b\xdf\xf9\xce\xf7\x30\x91\xaa\xc1\ +\x02\x87\x50\x18\xe7\x0d\x4c\x64\x90\xb4\x36\x16\xb5\x21\x05\xb9\ +\x80\xf2\xd2\xf2\xe1\x63\x5a\x3a\x31\x66\x72\x76\xa8\x26\x37\x3f\ +\xa7\xe5\xb1\x7d\x2a\x4d\x2f\xb0\xc0\xa0\x01\x1c\x8b\x1d\x3c\x70\ +\xd9\xfc\x1b\x90\xcf\xef\xa2\x4d\x63\xf6\x27\x08\xaf\x17\x44\xc5\ +\xc5\xb1\xc9\x14\x49\x6d\x67\xc8\xeb\x0b\x71\xc1\x91\x15\x58\x85\ +\x0c\xaf\x1b\x8c\x49\xf6\x0d\x12\x96\xbb\x15\x80\xe9\x96\x19\xc9\ +\xb6\xcd\x85\xf6\x1d\x5f\x08\x0e\x18\x9b\x30\x8e\xe9\x8b\x42\xc8\ +\x57\xc0\xfc\x3d\x08\xe4\x5f\x0e\xfa\xb4\xfa\xce\x3b\x55\x67\x1d\ +\xed\x0d\x1d\xcb\xff\xf3\xab\x5f\x7d\x54\x92\x7b\x4d\x4f\x50\x2c\ +\x85\xed\x25\x63\x48\xe8\x50\x3c\x1e\xbf\x85\x92\x51\x41\xd0\x33\ +\x45\x27\x25\x4b\x77\x55\x24\x27\xcc\x62\x2b\xad\xdc\xb9\x3a\xfe\ +\xba\x4f\x09\x5c\x21\x94\x4e\x09\x75\x63\xa2\x05\x15\xcf\x03\x82\ +\xe5\x59\xe5\xa7\xd1\x98\x79\x3e\x81\x76\x22\x61\xae\xdb\x82\x04\ +\x90\x42\x33\x69\xa8\x2f\x20\xc0\xc5\x76\x8b\xb9\x04\xb3\x2e\x89\ +\x48\x85\x50\x9b\x27\xf5\xbe\x84\x15\xd4\x5a\xcf\xf8\x4d\x76\x88\ +\x40\x8a\x97\x6b\x14\xdc\xa3\x6c\xdd\x11\x0d\xb5\xdc\xac\x0e\x55\ +\xb8\x37\x8f\xd5\x2c\x04\x14\xc8\x13\x26\x11\x8c\x47\xdc\x0f\x6c\ +\xda\xa0\x24\x2f\x6f\xe7\x0a\x79\xdb\x0d\x62\xd3\xc4\xe3\xf9\x62\ +\x71\xca\x4a\xf2\x5a\x01\xd8\x93\xb3\x7b\xf7\xee\x7d\x84\xf6\xb8\ +\xd9\xdc\xe8\x04\x89\x02\x49\x04\x50\xe4\xbd\xa0\x72\x79\x28\x67\ +\xb5\x5a\x2b\x38\xca\x9d\x9e\xd7\x12\xe7\xfb\xf7\xec\x84\x11\x59\ +\x8d\x37\x1d\x17\x01\xd5\x29\x54\xa6\x68\x5e\x56\x6c\x1c\x0f\x63\ +\xce\x84\x22\x50\x1b\xad\x24\x73\x8a\x0f\x61\x5d\x32\x61\xcf\xb1\ +\x59\x9c\xc7\xc2\xb2\x2f\x5f\xd2\xfc\xcb\x0d\x30\xc6\xa7\x64\x66\ +\xb0\x53\x9e\xd8\x66\x4b\xad\x14\xc6\x5d\x7c\x8a\x90\x03\x78\x80\ +\x26\x21\x02\xa1\x76\xf3\xf7\x10\x08\x2e\xa8\xb2\xd1\x08\xb8\x32\ +\x8b\xf6\x97\x30\xff\x32\x18\x80\xdb\x9e\x25\xc3\xdc\xf0\xcf\xde\ +\xad\xba\xcf\xe9\xec\x55\x74\xbf\xff\xdd\xef\x7e\x05\x26\x4b\xe2\ +\x73\x8d\x00\x3a\x49\xd2\xfe\xfd\xfb\x1f\xc7\x0a\x5e\xd9\xbe\x7d\ +\xfb\x36\xfa\x67\x0a\x00\x84\x5d\xbb\x76\x69\x79\x0e\xf3\x86\xa9\ +\x26\xa4\x86\x30\x59\x72\x83\x53\xa7\xd4\xbd\x69\x2d\x0c\x46\xf0\ +\xd7\x12\x3d\xfe\x57\xb4\x34\x0e\x63\x2d\x03\xb3\xa6\x7f\xfe\x99\ +\xe7\x8c\x55\xab\x7b\xa3\xc7\xcb\x4d\x97\x4c\x2e\x88\xb5\xa0\x79\ +\x00\x8b\x66\x08\x02\x80\xc9\x2c\xe9\x33\x9a\xf3\xc8\x00\x27\x5e\ +\xdc\x7f\xe5\x0e\x26\xee\x97\x46\x76\x01\x8e\xfd\x54\x99\x7d\x30\ +\x69\xe6\x75\x0a\x08\x1d\xa0\x2d\x92\x3c\x65\x6b\xf2\x2f\x32\xd7\ +\x14\x82\xce\x05\x01\xbf\xa8\xf2\x7d\xdd\x8a\xdc\xb2\x5b\x29\xc0\ +\x6f\x1e\xed\x9b\x8d\x1d\x67\x4e\x9f\x7e\xe2\x99\xa7\x9e\x3a\x20\ +\x56\xff\x53\xdf\x0e\x77\xb2\x42\x5e\x8b\xf9\xb6\x6c\xd9\xf2\x16\ +\x3a\xc5\x8e\x49\x8a\x82\x50\x9d\xee\x6a\x93\x56\xb7\x8c\x00\x6c\ +\xda\xea\x90\xa2\xd6\xd0\x68\x17\x3e\x38\x21\x77\xf9\x15\xb0\xa0\ +\x2c\x8c\x11\x80\x74\xac\x69\x63\xe1\x24\x55\x52\x7a\xb5\xa7\xde\ +\x55\xae\x7a\x77\x05\x40\x72\x98\x08\xf9\xb0\x0e\x23\x00\x21\x08\ +\xfc\xff\xac\xa7\xec\xb4\x0f\x30\x75\xae\x69\x3a\xe1\x5d\x60\x90\ +\xa3\x44\xcc\x53\xa8\xa7\xfd\x72\xd4\xb6\xa1\x58\xc3\x32\xda\x9f\ +\x02\x57\x26\xb9\xe7\x22\x20\x59\x00\x24\xfb\x07\x75\xaa\x2f\xa5\ +\x1d\x0f\xfe\xa1\x6a\x91\x90\x49\x7a\x44\x92\x57\xfb\xc6\x23\x8f\ +\x3c\x38\x7e\xf6\xec\x31\x33\xe5\xcf\x7a\x3d\xee\xb2\x0d\x75\x86\ +\x77\x69\xdb\xd9\x6a\xb2\x26\x12\x8d\xb2\x80\x98\xc2\x50\x69\x6e\ +\x16\x90\xa1\x2f\x8f\xd9\xa2\x3d\x00\xad\x81\xc4\x27\x15\x0c\x9d\ +\xc5\xa5\x2b\x80\x95\x09\x18\xd4\x06\xa4\xa6\x80\x34\xcd\x89\xa6\ +\xba\x60\xbe\x67\x65\x83\x66\x87\x0f\x40\x0d\x60\xbe\x41\x9b\x5b\ +\xd8\xac\xa6\x2d\x80\xfa\x82\x47\xb2\xe3\x53\x69\xde\x0a\xa5\xa3\ +\xfd\x4e\x25\x6b\x29\xc1\x5c\xb1\x3e\xb5\xdc\xad\xc1\x89\x3c\x37\ +\xce\x50\xfa\xe2\xd1\xc1\x69\x7c\x3f\x6b\x36\x47\xf4\xea\x04\x09\ +\xd2\xba\x7f\xf7\x51\x45\x79\xf9\xba\x48\x64\x9a\x9b\x9b\x63\x2f\ +\xd3\xfe\xaf\xfd\xcd\xc3\x0f\x3f\x64\xf2\xb9\x9f\x77\x83\x44\x89\ +\x0d\x88\xb3\xec\xb8\x7a\x07\x1b\x0c\xc2\x30\x6f\x22\x01\x42\x88\ +\xab\x44\xf9\xe9\x00\x88\x04\x5d\x5b\x76\xc6\xd3\x15\x16\xd6\x80\ +\x29\x07\x40\x74\x38\x86\xf1\x98\xc7\xf9\xa6\x52\x7d\x9e\xd2\xc3\ +\x4d\xa5\xb7\xf8\x31\x5f\x7c\x33\x12\x82\xa2\x58\x40\xbc\x85\xe0\ +\x4d\x59\x60\x13\x0c\xb9\xcb\x9e\x0a\x0b\x3e\xac\x47\xd7\x7e\x9a\ +\xcc\xdb\x83\x10\x98\xd3\x66\x83\x26\xdd\x5d\xa0\xc4\x9d\x26\xde\ +\xcf\x60\x55\xb9\x30\x80\x99\xd1\x59\xf2\xfd\xf0\xbb\xde\xae\x91\ +\xb7\xbd\x55\xd9\x72\xc9\x68\xde\x00\xdf\xe4\x9f\xfd\xf1\x1f\x7f\ +\x14\x0c\xb8\xe4\x32\xd3\xcf\x2b\x80\x06\x7e\x33\x07\x72\x3a\xec\ +\xc8\xbc\xdd\xb8\x42\x10\x21\x18\x30\x0b\x43\x65\xfa\x73\xbe\x4a\ +\x99\xa2\xa4\xa6\x44\x0f\x9d\xa3\x5e\x13\x8d\xa0\xa0\x6c\x46\x16\ +\xee\xf6\x51\x2c\xf9\x14\x1d\xf6\xa3\x75\x3f\x11\xc1\x68\x3e\x0c\ +\xf3\x09\xf0\x20\x45\x0c\xa7\x34\x05\xc5\x65\x30\xc0\xad\xdb\xf6\ +\x99\x93\x6d\x08\x78\xa4\xd1\x69\x31\xe4\xca\x8f\x2d\x61\xa3\xcc\ +\x99\x49\xca\xbe\x2d\xf2\x2d\xa2\xf1\x59\xfc\x7d\x0e\xca\x86\xb9\ +\x9e\xd6\x85\x44\x46\xb9\x9b\x76\x6b\xcb\x07\xff\x40\x45\x22\xce\ +\x2c\x9a\x27\xb3\x73\xbf\xfd\xcd\xbf\x7d\x60\xec\xd0\xa1\xa7\x8b\ +\x92\xfb\x8b\x6e\x92\x32\xfb\xf4\xcf\xd0\x2e\x5f\xcb\x0b\xc5\x8d\ +\xc6\x15\x82\x26\xb4\x25\x13\xb6\xf8\xa9\xd0\xc5\x4d\xc6\x4b\x8a\ +\x67\xaa\x14\x44\x4d\x2b\x00\x27\xe0\x20\x04\x53\x81\xf9\x18\x61\ +\x3a\x1c\xe0\xd8\x6a\x1d\x4a\xf2\x3d\x0d\xf3\x90\x2f\x81\x2a\x5a\ +\x4d\x10\xe2\x9a\xb5\x82\x00\x56\x13\x2c\x21\x04\x62\x77\x35\x27\ +\xce\x31\x9f\x98\xcb\x41\xd3\xe0\x45\x17\x00\x98\x89\xa0\xf1\x3a\ +\xf9\xfd\x42\x58\x21\x28\x98\x37\xf9\x46\x5a\xe7\x48\x17\x67\xe8\ +\x18\xed\x78\xe0\xe3\xaa\x04\xfc\x2d\xe6\xd9\xd4\xf1\xdc\xd3\xcf\ +\xfc\xf9\xb7\xbe\xf6\x57\x7f\xce\x74\xc5\x7f\xcc\x2e\xb1\x26\x54\ +\x38\x76\xec\xd8\x89\x15\x2b\x56\xec\x21\x22\x0c\x21\x04\x6b\x05\ +\x81\x54\xca\x36\x29\x6b\xe5\x9c\x52\xdd\xe6\x5d\x5e\xcd\x34\x25\ +\x21\x41\x7e\xcc\xd1\x6f\xb2\x33\x98\x07\x94\xc2\x31\x4c\x3e\xc1\ +\xf7\x14\xe7\x93\x5c\x8f\x73\x53\xa8\x95\x83\xd9\x1e\xa3\x6b\xdd\ +\xc9\x71\xc0\x93\x18\x7e\x5e\x47\x10\x29\x1f\x58\x40\x37\x0a\x0a\ +\xd3\x0c\x49\x67\x82\x1a\xec\x0e\x28\x19\x20\x45\x07\xe8\x42\xf8\ +\x7b\xa0\x4c\xc7\x38\xd8\xa3\x13\xfe\x08\x9a\xbf\x49\x3b\x3e\xfe\ +\x31\x55\x10\xfa\x0c\xcc\xa3\x38\xb3\x9f\xe9\xd1\xbf\xfc\x93\x2f\ +\x7c\xb2\x5b\x9a\x5b\xfe\x25\xf6\x09\x7a\x68\x69\xe1\xf8\xf1\xe3\ +\x63\xbc\x36\xbf\x0d\x3c\xe8\x09\x1b\x50\x8c\xc7\xa1\x24\x05\xd3\ +\xb0\xf2\x4b\xa0\x30\xd5\xa1\xdf\xd6\xf6\x08\x41\x62\x0c\x30\xfa\ +\xa1\x90\x80\x3e\x04\x84\x20\xcc\xc8\x79\x35\xfc\x26\x77\x87\xcc\ +\x66\xa7\x06\x63\x83\xb1\x2e\x51\x00\xc1\x36\xd6\xe4\x28\xe9\x49\ +\x5d\x34\x63\xbb\x32\x01\xf5\x76\xc3\x3c\x05\x4f\x97\x2f\xac\x70\ +\x93\x88\x54\x04\x43\xdc\x84\xaa\x80\xcd\x8b\x3c\x1f\x7d\xd7\xbb\ +\xb4\xf9\x5f\xfd\x4b\x15\xb1\x94\xe9\x99\x19\xcb\xfc\xcb\x87\x0f\ +\xbf\xf0\x97\x9f\xff\xc2\xbf\x49\x36\xea\x13\xe7\xe0\xe1\x97\xdd\ +\x29\x4a\x16\xeb\xce\x8c\x8f\x8f\x1f\x23\x2a\x98\x04\xa9\x27\x1c\ +\x89\xd8\x4c\xaf\x19\x89\x53\xa7\xaf\x22\xcb\x4a\xab\x9c\xaf\x90\ +\x81\xd5\x2d\x53\x0c\xb6\x2a\x73\xaa\x50\x05\x43\x2e\x0b\xe0\x84\ +\xd9\xa2\x2b\x15\xb0\x96\x62\x95\xe3\x0a\x54\x6b\x51\xc1\x05\xd8\ +\x1a\x8c\xb8\x50\x09\xcc\x00\xe9\xa2\x50\x02\x9c\x48\xf9\xe8\x4d\ +\x40\xa1\x26\xd6\x57\x8f\x23\xdb\x8c\x26\x7c\x51\x1d\x66\x0d\x9b\ +\x1f\x7c\x50\x43\x77\xdd\xa1\x2c\x51\x69\x6a\x7a\xda\x00\x1e\xbb\ +\x59\x0e\xbf\xf8\xb5\xbf\xf8\xef\xf7\x47\xf2\xd9\xf1\xb3\xac\xfd\ +\x57\xb9\x59\x3a\x82\x05\xdc\xc4\xcf\x61\xfe\x94\x24\x69\x17\xdb\ +\x68\x44\xe5\x68\x37\x48\x85\xca\x00\x62\x7e\x5e\xc5\xf1\x17\x15\ +\x29\x8f\x29\x1d\x98\x57\xa8\x51\x6d\xed\x0a\x35\x8d\x55\xfe\xf9\ +\x9a\x10\xff\x1c\x4b\x9d\xfd\x4e\xed\x37\xc4\xed\x1e\x23\x9e\xd4\ +\x29\x67\xa1\x20\xc2\x0c\xa2\x6d\x46\x2f\x2c\x4c\x4e\x34\xc1\x34\ +\x56\xa6\x17\x71\xd7\x5d\xda\xf8\x9e\x7b\xd5\xc0\x12\x17\xb3\xcb\ +\x76\x57\x3a\x95\xac\x8e\x1c\x3c\xf4\xf8\x5f\x3f\xf4\x95\x8f\x77\ +\x57\x4a\xa7\x8f\x4b\xee\x6b\xb1\x5d\x3e\x44\xc7\x68\x2b\x7b\x08\ +\x3f\xc5\x6f\x05\x7e\x97\x5c\xc1\x61\x03\x92\x22\x21\x80\x09\x33\ +\x8e\x19\x7f\xa6\xa7\x57\x3e\x7d\x08\x3f\x3d\xa5\x1e\x65\x11\x48\ +\x49\x81\x6a\xc3\xee\x23\xf0\xd7\x01\x4b\x5b\x11\x43\xcd\x76\xba\ +\x6b\x81\xc3\x69\x63\x82\x9f\xf3\x86\x60\xda\xe4\xfa\x68\xde\xa3\ +\x08\xba\x58\x71\x75\xae\xe1\xd1\x97\xdc\xa3\x4d\xec\x47\x0e\xb2\ +\x1b\x2d\x47\x42\xb6\x40\x92\xc3\xfe\x3f\xa3\xf9\xc6\x81\x7d\xfb\ +\xfe\xc7\xf7\xfe\xfa\x6f\xfe\xeb\x48\xd3\xbb\x78\x04\x91\xbe\x96\ +\x3f\x98\x08\x40\xc3\x3b\x77\xee\xfc\x83\x37\xbd\xe9\x4d\x0f\x12\ +\x26\x53\xec\x20\x17\x20\xa9\xb0\xc9\xfd\x59\x68\xdc\x41\x61\xc5\ +\x9c\x0a\xaf\x9e\x94\x26\xc7\x15\x9a\xbf\xa4\x1e\x9a\x1b\x09\xf2\ +\xf6\x40\x89\xd4\xb5\x4a\xee\x6e\x84\xc0\x3f\xf1\x8c\x7c\x50\x20\ +\x88\x79\x87\x60\x38\xa2\x1a\xe3\x54\xa9\xaa\x59\xee\xa9\x62\x69\ +\x03\x6f\x78\x83\x46\xd8\x7d\xee\x74\xa5\xf1\xa0\xaa\x96\xb2\x59\ +\x9b\xe1\x4d\x63\xf6\x67\xcf\x9c\x99\x7b\xe6\xc9\x1f\xfc\xa7\xa3\ +\xcf\x3d\xff\xcd\x95\xd4\x73\x07\x25\xef\xf5\xf8\xc9\x8c\x03\xa5\ +\xf9\xdc\x7a\xc7\x1d\x77\x7c\x82\xd7\xcd\x6f\xc6\x25\x7c\x84\x4b\ +\xc5\x63\x31\xbb\x83\x3b\x2c\x29\xee\x0f\x28\xe6\x43\xb3\xe4\xe3\ +\x45\x4c\xb4\x3a\x35\xa9\xe6\xec\x8c\x7c\x30\xa0\x82\x79\x77\x50\ +\xb7\x55\x5e\xc3\x54\x85\xe1\x88\x5c\x00\xd6\x4b\x53\xe3\x0f\xf4\ +\xab\x7f\xcb\x56\xf5\x6e\xdd\x22\x1f\x6e\x46\xd9\xa0\x3c\x6e\x96\ +\xe3\x99\x2c\xcf\xd2\xd4\x10\xd9\xaa\xcb\xa6\xcd\xbf\xfb\xc1\xf7\ +\x1f\xfd\x6f\xde\xe2\xe2\xd1\xf5\xf2\x2a\x3f\x92\x9a\xaf\xf7\x8f\ +\xa6\x82\xd0\x8a\x0d\x1b\x36\xdc\x73\xe3\x8d\x37\xde\xbf\x7e\xfd\ +\xfa\x1b\x00\x4a\xb3\xc9\xda\x6e\x47\x09\xe3\x1a\x21\x63\x15\x50\ +\x14\x0d\x47\x8c\x60\x10\x4a\xc0\x74\x6b\x3b\x11\x83\x63\x87\xeb\ +\xe2\x9a\x82\x41\x46\xbf\x5c\x47\xb6\x86\x2f\x03\x6e\x14\x26\x2a\ +\x96\x4a\xc8\xab\xd0\xc9\xeb\xbd\xd3\xe3\xe3\x2f\x1c\xdc\xf7\xe2\ +\x97\xce\x1d\x1d\x7b\x22\xd3\x6c\x2c\x8d\x4b\x8d\x5f\xe7\xcf\xe6\ +\x1c\x28\x02\x0d\xaf\x5b\xbb\xf6\x2d\x3b\x76\xee\xfc\x17\xb8\xc5\ +\x6e\x04\x11\xc2\x42\xac\x20\x00\x4f\x11\x3d\x14\x0c\xc0\x3c\xcc\ +\xf2\xfb\x20\x2c\x3f\x00\x01\x78\x68\x9f\xff\xd9\xa4\xa8\xe1\x79\ +\x96\xea\x00\x62\x0d\xe6\xcb\x30\x6f\x18\xe7\x17\xa5\x26\xa7\x2f\ +\x4f\x9c\x3f\xff\xdc\xe1\xfd\x07\xbe\x7a\xe1\xd4\xf8\xd3\x51\xcf\ +\x9d\x0f\x49\xb5\x73\xbf\x41\x3f\x9c\x74\xa0\x30\xec\xf4\x26\x62\ +\xb1\x2d\xdb\x77\xee\x7c\xc7\xc8\xe8\xe8\xef\x80\x0f\x1b\x32\xec\ +\xd4\x64\x07\xea\xdf\x0b\x02\x4d\x07\x10\x46\xe7\x5d\x9d\xda\xbb\ +\x37\x08\xb7\xb6\x75\x45\x35\x6a\x4b\xd8\xa5\xc5\xc5\xc2\xfc\xdc\ +\xdc\x31\x36\x6b\x3e\x79\xe4\xc5\x17\xff\x4f\xad\x54\x79\x35\xe8\ +\xd5\x97\x03\xa6\x60\x93\x9a\xbf\xa9\x3f\x9d\x75\xd4\x2a\x0d\xa2\ +\xb0\xd7\x8d\x81\x0f\xaf\xdd\xb0\xfe\xc6\x15\xc3\xc3\xd7\x03\x94\ +\xab\x12\xc9\xd4\xca\x70\x24\x9c\xa6\xf1\x8a\x57\x04\xc3\xdc\x6c\ +\x18\xaf\xd0\xb2\x2a\xc1\xfc\x32\x6d\xab\x0b\xec\x4e\x3f\x37\x39\ +\x31\x71\xf8\xec\xa9\xf1\x83\x5c\x9f\xa6\xfa\xcb\x8a\x3e\xd1\xb2\ +\xe4\xfd\x36\xfe\x78\x9a\xba\x0f\xb7\x97\xc8\xf2\x15\x91\x15\x8c\ +\xc3\xe8\x84\x9a\x9c\xc7\xfc\x3d\x47\xb8\x3d\x90\xc8\xf5\x32\x9b\ +\x54\xcb\xa0\x80\xcd\x08\x0c\xd7\xaf\xf5\x8f\xa8\x9d\xdf\xb0\x5f\ +\xad\x37\xf5\x3a\x7f\xfe\x1f\x5f\xbc\xdd\xe6\x1a\x53\x0c\xc2\x00\ +\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x13\x09\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\ +\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\ +\xa7\x93\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x1b\xaf\x00\x00\ +\x1b\xaf\x01\x5e\x1a\x91\x1c\x00\x00\x00\x07\x74\x49\x4d\x45\x07\ +\xd7\x09\x17\x17\x15\x19\x49\x86\x70\x41\x00\x00\x12\x96\x49\x44\ +\x41\x54\x78\xda\xed\x5b\x09\x74\x5c\xd5\x79\xfe\xee\x7b\xb3\x6b\ +\xb4\x5a\xb2\x25\xd9\x96\x64\x63\x6c\x83\x31\x36\xb6\x81\x00\xe1\ +\xb0\x34\x14\xc2\xda\x94\x86\x04\xd2\x90\x42\x72\x20\x5d\x20\x14\ +\x68\x08\x4b\x48\x09\x87\xda\xad\x73\x52\x52\x02\x24\xad\x7b\x20\ +\xe4\xb0\x95\xcd\x40\xb0\x1b\x56\x2f\x80\xb1\x2d\xdb\xd8\xb2\x6c\ +\x6c\xd9\xb2\x2c\xc9\x1a\x4b\x1a\x69\xf6\xe5\x6d\xf7\xf6\x7f\x33\ +\xef\xf0\xf4\x3a\x9a\x19\x1b\x26\x3d\xc9\x69\x7e\x9d\x4f\xf7\xbd\ +\xfb\xee\x9b\x79\xdf\x77\xff\xe5\xbe\x2b\x1b\x7f\xb4\x3f\xda\xff\ +\x6f\x63\x38\x0e\x1b\xbb\x05\x75\x52\xed\xf4\x8b\x5d\x33\x97\x5c\ +\x06\xb7\xef\x3c\xa1\xa4\x3c\xd0\xb3\xc3\x42\xcd\x0c\x71\x35\x15\ +\x12\x4a\x22\xc4\x53\xe3\x21\x91\x8d\x85\x84\xc0\x10\x80\x10\xe1\ +\xe8\xd4\x9f\x43\xf9\x83\x16\x40\xfc\xd8\x7f\x95\x68\x5d\x76\x37\ +\xe7\x58\xc6\xd3\x51\x99\x08\x42\x70\x01\xe1\x0e\x12\xaa\xc0\x65\ +\x3f\x84\xec\x81\x60\x6e\x82\x0b\x90\x5c\x10\x82\x03\xdc\x00\xd7\ +\xd2\x02\xba\x32\x2e\x0c\x6d\x48\xe8\x6a\x48\x68\x4a\x48\xe8\xd9\ +\x10\x57\xd3\x24\x54\x7c\x48\x68\xd9\x90\x30\x85\x12\x08\x4d\x7f\ +\x0c\x99\xdf\x3b\x01\xc4\x03\x9e\x3f\xc7\xf9\xf7\xbf\x88\xe6\x45\ +\xcc\x24\x04\xae\x03\x26\x39\x43\x05\x32\x11\x80\xc4\x80\x9a\xcc\ +\x43\xcf\x40\x68\x19\xf0\x6c\x82\x90\x02\x57\x92\xe0\xa6\x50\xb2\ +\x0f\x5c\x48\x04\x53\x13\x4e\xd0\xc1\x75\x2d\x27\x14\x40\xd7\x0d\ +\x03\x24\x0a\x41\x8d\x0a\xae\x87\x08\x43\xc2\xa0\x36\x07\x95\x04\ +\x33\xa1\x0c\x09\x6e\x84\x00\x84\x3a\x1e\x47\xf2\xff\x4e\x80\xa7\ +\x2e\xee\xc4\x99\xb7\x2c\x85\xb0\xc8\x73\x23\x07\xc7\xb9\x28\xd6\ +\xa7\xe7\xa1\x98\xe2\x64\xed\x3e\xd3\x84\x00\x57\x33\xa4\xa3\x42\ +\xc8\x82\x73\x0e\x03\x6e\x70\x12\xd6\x50\x32\x39\x01\x0d\x12\x52\ +\xcf\xc4\x01\xba\x26\xcc\x1f\x6e\x80\x3c\x89\xa0\x27\x68\x60\x4e\ +\x90\x1c\x04\x0f\x01\x3c\xc4\x64\x98\xd8\xd9\x71\x29\xba\xd9\xc5\ +\x10\x95\x11\xe0\x85\x6b\x53\x58\x78\x6d\x20\x3f\xf3\x46\x09\x01\ +\x9c\x62\x38\xc6\x8b\xdc\x35\x1b\xa2\xc8\x58\xf2\x1e\x40\x00\x14\ +\x4e\x90\xdc\x80\xcb\x47\xf0\xe7\x3c\x46\xd7\x75\x18\x9a\x96\xf3\ +\x20\x9d\x33\x12\x27\x09\x3d\x35\x06\x75\xa4\x07\x7a\xa2\x0f\xae\ +\x00\x03\xf3\xe4\x6f\x37\x14\xf1\x3a\x35\xdf\xe8\x58\x81\x04\xca\ +\x98\x0b\x65\x8d\xb9\x72\x0f\x97\x8b\x69\x82\x63\xc6\xb9\x89\x82\ +\x63\xc7\x78\x61\x58\x2d\xb7\xfa\x8b\x8c\x35\x21\xc9\xf9\x3e\xcd\ +\xf4\x96\xd4\xa7\xe2\x48\x34\xc6\x63\x0b\x95\x0f\x3f\xd9\x0b\xd4\ +\xd7\x00\xb3\x2e\x85\xde\x34\x97\x9c\xec\x03\xe8\x43\xab\xc1\xb3\ +\x06\xd4\x38\xae\xc8\x8c\x88\x55\xa2\x1b\x5f\x63\x0b\x50\xd2\x24\ +\x94\x35\x0e\x88\x89\x04\x78\x01\x81\xa2\xd7\x45\x31\x91\x8a\x7c\ +\xd6\xb1\x7e\xb6\x69\x5a\x1a\x48\x1c\x01\x0e\xbf\x0f\xd7\xbe\x35\ +\xa8\x5a\xba\x02\x9e\xe9\xcb\x00\x96\x1f\x0a\xce\xbe\xda\xf3\x38\ +\x4e\x00\x3e\xaf\x00\x42\x4c\x70\xdd\x22\x33\x69\x79\x44\xd9\x87\ +\xe7\xe5\xbd\x80\x50\xfe\xb3\xed\x6b\x79\x11\x0e\xbc\x09\xac\xbd\ +\x13\x7a\x66\x16\x52\x43\x02\xe9\x61\x01\x35\x29\x98\xa1\x62\x49\ +\x25\x04\x28\x7c\x38\xce\x8b\xcc\x6c\x31\x61\x8e\x91\x38\x2f\x15\ +\x5a\x93\x08\x13\x27\xf2\xe9\x31\xe4\xec\x93\xd5\x30\x12\x5e\xa4\ +\x8f\x9a\xe4\xf3\xb7\x42\xc0\x5f\x81\x1c\x20\x0a\xc9\xd8\x84\x4a\ +\x92\x71\x1e\x97\x0a\x25\x5e\x46\x9c\x42\xf1\x6c\xf2\xf6\x44\x31\ +\xdd\x2c\xaf\xd6\x23\xc3\xb2\xcf\x2d\x40\xa1\xdb\x15\x78\x41\xb1\ +\xd8\x75\x1e\x17\x0f\x95\xc2\x44\x59\xc6\xc3\xe2\x83\x44\x3e\x8c\ +\x02\xe3\x1a\x84\xc5\xbc\x72\x02\x40\x14\xcd\xe8\x36\x81\xe3\x4d\ +\x88\x45\xae\x17\x92\x2d\x1c\x1f\x1b\x70\x90\x77\x98\xa1\x43\xa0\ +\xd2\x02\x08\x41\x30\x8e\x3d\xa3\x17\x86\x4a\xf9\x24\xc8\x8f\x31\ +\x29\xc6\x4b\x90\x27\x13\xa6\x07\x4c\x9c\xb7\x0a\x09\xe0\x24\x5b\ +\xbe\xd4\x95\x5f\x03\x94\xff\xac\x42\x0f\x8b\xf5\x03\xa9\x51\x94\ +\x34\x43\xb7\x89\x57\x38\x04\x2c\x18\x05\x0f\x57\x9e\x4c\x91\x6b\ +\x28\xa8\x26\xc5\x45\x8d\x1d\x2e\x4f\x1e\xc8\x2f\x93\xe1\x14\xa0\ +\x12\x65\xd0\x41\xb6\x10\x45\x32\x36\x6c\xa2\xb9\x7e\x10\x98\x75\ +\x0e\x6e\x9d\x13\x60\xf7\x4d\x9a\x10\xcb\xcf\xbc\x33\x09\x02\x36\ +\x44\x25\x04\x40\xc9\x44\x35\xb9\x10\xb0\x88\xb1\x63\x24\x6e\xc2\ +\x3e\xb6\xbf\x27\x6a\xce\xfc\x08\x8e\xd5\x04\xd7\x2d\xe2\x16\x2a\ +\xe4\x01\x65\x56\x7a\x0e\x22\xc5\x88\x95\x12\xc3\xea\x73\x0a\x87\ +\x58\x5f\x01\xf9\xb2\x66\x38\xca\x60\x25\x05\x28\x1f\xdb\x4e\x21\ +\x9c\x64\x0a\x3d\xc2\x26\x6e\x0b\x64\x58\xe0\x40\x9c\xc8\x67\x88\ +\xbc\x54\xe4\x7d\xb5\x74\x15\x70\xa0\xd2\x2b\xc1\x82\x38\xb7\x60\ +\x93\x13\xff\xdb\x0b\x2c\x62\xc2\xe1\xe6\x36\x59\x82\xe3\x38\x7e\ +\x88\xc8\x0f\x03\xb2\x35\x54\x58\xe0\x28\x67\xf6\x3a\xc0\xf6\x82\ +\x0a\xaf\x04\x3d\x55\x40\xfd\x09\xf9\xa7\xd1\xd3\x40\x26\x0c\x24\ +\x8f\x02\x5a\xd2\x99\xe8\xec\x58\x2e\x14\x88\x39\x12\xa3\x53\xa8\ +\x78\x6f\x9e\xbc\x64\x3d\x3d\xb3\x45\xb0\xfd\xba\x74\x15\xb0\xcb\ +\x60\xe5\xd6\x01\xb6\x08\xfe\x29\xc0\xdc\x4b\xe1\x34\x91\x17\x61\ +\x6c\x2f\x10\xfa\x28\xe7\xbe\x85\xee\x4f\x10\x13\xfa\x84\xc3\xe5\ +\xf3\x6d\xe2\x90\x93\xbc\x4d\xd6\xd9\xf2\x12\xcc\xac\x24\x58\xe9\ +\x75\x80\x23\xbb\x17\x1a\x03\x82\x2d\x79\xb4\x5f\x98\x17\xe0\xe0\ +\x6b\xc0\x48\xa7\x33\x1c\x18\x01\x36\x79\xb3\xb5\xc9\x9b\x33\x7f\ +\xd4\x72\xfb\x32\x02\xc0\x1e\x53\x72\x1d\x20\x08\x15\x4d\x82\xb0\ +\x50\xce\x6a\x3a\x80\xd3\x6e\x05\xce\xb8\x17\xa8\x9e\x3e\x21\xce\ +\xed\x7c\x60\x9f\x5b\xe4\xb3\x16\x79\x09\xd4\x5a\x90\xca\x80\xa1\ +\xf8\xcb\x90\xa8\x64\x15\xc0\x24\x19\xdf\x50\xca\xaf\x32\xea\xe7\ +\x01\xe7\x2c\x07\x3a\x2e\x73\x84\x84\x0d\x93\xfc\x41\x22\x1f\xb2\ +\x49\x95\x03\x2b\x2d\x82\x30\xf4\xca\x57\x01\x22\x6a\x27\xaa\x48\ +\x0f\xb0\xee\x6e\x40\xe8\xf9\x73\x6f\x35\x10\x6c\x26\xb2\x27\x02\ +\xd3\x96\xd1\x79\x7d\xc1\x76\x22\x4e\xba\x01\xa8\x9b\x03\xec\x5c\ +\x09\x18\x9a\x95\x00\x09\x89\x03\x80\x62\x91\x17\x93\x00\x8e\x44\ +\x68\x1b\xb7\xa7\xad\x20\x1c\xb8\xe6\x8c\x16\x51\xe9\x32\x88\x89\ +\xe5\x4f\x07\xb2\x61\xc2\x30\x30\xba\x1d\xe8\x79\x16\x68\x5c\x04\ +\xcc\xfe\x33\xa0\xba\x1d\x0e\x6b\x39\x17\xf0\x90\x58\x9d\x14\x16\ +\x9a\x0a\x24\x7b\xec\x99\x17\x25\x92\x9c\x70\x10\x76\x92\x66\x13\ +\x20\x9c\x1e\x90\xfb\x55\xb1\x10\x60\x02\xce\x9a\x3f\x59\x19\xb3\ +\xb6\xba\x47\xb6\x00\x9b\x7f\x00\x7c\xb2\x8a\xba\xb2\x70\xd8\x94\ +\xc5\xc0\x92\xfb\x81\x74\x9f\x49\xbe\x78\xcc\xdb\xfd\xc7\x17\x1a\ +\xa6\xd9\x65\x90\x50\xa9\x24\x08\x51\x58\xd7\x6d\xf2\x85\xab\x3e\ +\x53\x88\x81\x35\x24\xc4\x1d\x40\x6a\x10\x0e\x6b\x3a\x13\x38\xf5\ +\xfb\x05\x64\xcb\x82\x4d\x1a\xff\xce\x7e\xf6\x3b\x5d\x09\x5a\x04\ +\xfd\x8d\x40\xfb\x05\x80\xbb\x2a\x17\x6f\x48\x0f\x01\xf1\x83\xc0\ +\x78\x17\x60\xa8\x13\x44\xa0\x36\x75\x18\xd8\x4a\x22\x2c\x79\x10\ +\xa8\x99\x8b\x4f\x6d\xfe\xdf\x00\xa3\x1f\x00\x87\x9e\x01\x50\x26\ +\xfe\x51\xc2\xf5\x25\x47\x9e\xc8\x83\xeb\xf6\xed\xa2\x32\xeb\x00\ +\xe7\xcc\xfb\xea\x80\xd6\xb3\x60\xdb\x52\x02\xf2\x2b\xc1\xa1\x77\ +\x80\xbe\xd5\x74\x1c\xb1\x17\x3b\x5a\x14\xd8\x7e\x17\x89\xf0\xcf\ +\x4e\x11\xce\x7c\x04\x18\x79\xd7\xac\xfd\xc5\xe3\x9f\x17\xf5\x4f\ +\x27\x69\xc9\x3e\x17\x10\x16\xf1\x8a\x87\x80\xed\xee\x93\x9a\x3b\ +\x08\xb4\x5f\x05\x9c\xf5\x53\xa0\x71\xa9\xf3\xe5\x66\x7c\x2b\xb0\ +\xfe\x72\x40\x8b\xd9\xe3\x3d\x0d\xa4\xdd\x4f\xca\xd7\x7c\x66\xb7\ +\x36\x8a\x84\x06\x9b\xc4\xa1\x2a\x23\x80\x73\x25\x58\xd2\x3c\xf5\ +\xc0\xe2\xfb\x80\xb6\x2b\xf2\x5e\x90\xd8\x07\x28\x47\x80\x54\x0f\ +\xb0\xfd\x56\x38\xac\xfd\x5a\xa0\xe1\xb4\xcf\x50\xfb\x4b\xc2\xb1\ +\x12\x14\xa2\x62\x02\x70\x0b\x02\x50\x62\x40\x78\x17\x30\xb2\x0d\ +\x48\x0e\x4e\xf2\x2d\x0c\x98\xfb\x5d\xa0\xf1\x4c\x20\x3b\x68\x3f\ +\x78\xff\x53\x74\xcf\x3b\x13\x86\x51\xe7\x29\xf7\x1d\x67\x22\x2c\ +\x71\xcc\x9c\xc4\x05\x2a\x97\x03\xec\xfa\x3f\xbe\x17\xd8\x70\x1b\ +\x00\xdd\x0a\x09\xeb\x05\xa9\xe3\x4a\x60\xc6\xc5\xce\xa5\xd9\xc2\ +\x1f\x11\xe1\xdf\x02\x91\x4e\xfb\x41\x77\xdf\x05\x5c\xb8\xd5\x1e\ +\xd7\x4a\x61\x13\x6c\x03\x92\xfd\xce\xd8\x67\x36\x0a\x63\xbd\x04\ +\x80\xcf\xb6\x27\xf8\xe0\x7d\x37\x2d\xdc\xf2\xf6\x4f\xa5\xd2\x55\ +\x80\xc0\x55\xe7\x92\x18\x84\x4c\x08\xd8\xfb\x18\xb0\xfd\x87\x80\ +\x91\x99\xf0\xc9\x6e\xe0\x0b\xbf\x06\x5c\x2e\x7b\x16\xe3\xdb\x80\ +\xd1\x89\x5e\x20\x03\xed\xdf\x2c\x3b\xf3\x4e\x14\xef\x17\xec\x33\ +\xe6\x80\xb7\x37\xf7\xae\x7e\x6b\xc3\xbe\x5f\x90\x08\xac\x68\x0e\ +\x28\xdc\xf3\x73\x2e\x90\xc6\x3a\x81\x0f\x6f\xb4\xfa\x2c\xab\x9e\ +\x0f\xb4\x5d\xe7\x8c\xe3\xfe\x5f\xc2\x61\xd3\xaf\x2e\x41\xba\x4c\ +\xdc\xa3\xe0\xdc\x0e\x83\xe3\xc9\x01\xe3\x8a\x9e\xed\xdc\x35\x38\ +\x7f\xc7\xee\xc1\x7f\x25\x11\x4a\x6f\x89\x81\x3b\x84\xb0\x77\x6f\ +\xf7\x00\x87\x9f\x03\xf6\xac\x84\xc3\xe6\xdd\xe5\x24\x37\xba\x06\ +\x30\xd2\xf6\xf5\xda\xc5\x80\x7f\x6a\x01\xe9\xe3\x24\x6e\x0b\x20\ +\x3e\x83\x07\x24\x33\x19\x43\x81\xfb\xce\xd7\xdf\xec\xba\xe6\x50\ +\xff\xd8\x43\xc5\xdf\x06\x09\x81\x16\xe0\x8c\x1f\x03\x17\x3d\x4f\ +\xed\x0a\x20\x38\x33\x4f\x3e\x3d\x80\x9c\xed\xa5\x9a\xaf\xc5\x27\ +\x78\xc1\xc9\x40\xcd\x7c\x9b\x94\x20\xf2\xd1\x0f\x9d\x49\x73\xca\ +\xd9\x85\xa4\x51\x36\xde\x0b\xc9\x33\x27\x71\x21\xb9\xe5\x63\x12\ +\x20\x95\xc9\x1a\x29\xdd\xc8\x8e\x45\x92\xb7\x3c\xbb\x7a\xeb\x3d\ +\x6b\x5f\x78\xf0\x9e\xc2\x3f\x8d\xf1\x7c\xe6\x5e\x72\x27\x50\x6f\ +\x12\x72\x01\x75\xd4\x9e\xbe\xc2\x76\x7b\x86\xfc\xe2\xe7\xc8\xab\ +\x70\xd8\xd4\x8b\x9d\x33\x1b\xdb\x0c\x87\xd5\x2e\x3a\x0e\xa2\x65\ +\x44\x80\x05\xfa\xb5\xcb\x77\xfa\x2f\x96\x3f\x70\xeb\xeb\x8f\x3d\ +\xfc\xc3\xef\xfc\xec\x27\xf7\x4e\x2f\x5a\x05\x32\x8a\xa2\x27\xd2\ +\x19\xff\xf6\x4d\x9b\x5e\x5a\xba\x74\xe9\x6b\xcf\xbc\xbc\xf9\xa1\ +\x0f\xff\x7b\xe5\xc8\xd9\x97\xfc\xc3\x2a\x47\x12\xac\x99\x0d\x54\ +\xb5\xc0\x61\xee\x1a\xe0\xe4\xef\x01\xdb\xbf\x6f\xf7\x8d\x6e\x00\ +\x3a\xbe\x39\xc1\x0b\x4e\x71\xba\x77\x66\x1f\x1c\x56\x75\xc2\xf1\ +\x91\x47\x89\xbe\x09\x25\x70\xe3\xa6\x2e\xcf\x86\xa1\xfd\x97\x37\ +\xd4\xd7\x5e\x3e\x73\x66\x8b\xf8\xea\xd5\x57\xec\x9a\x36\x6d\xda\ +\x7b\x55\x55\x35\xeb\x33\x59\xf5\x83\x7f\x7b\xe4\xe7\xa3\x39\x01\ +\x14\x4d\xe3\x14\x06\x7e\x90\x71\xce\xff\x76\x67\x77\xff\xb9\x2f\ +\xbd\xb1\xed\x71\xca\x07\xc3\x38\xfc\xa4\x2d\x80\x96\x29\xb2\xf9\ +\x71\x0a\x1c\x96\x19\x80\xc3\x7c\xcd\xce\x87\x56\x87\xe0\x30\x6f\ +\x4b\x59\x82\xe5\xc9\x3b\x63\x9f\x83\x61\x6a\x9d\xf7\xad\xda\x54\ +\xed\x02\x26\xb9\x5a\x87\x47\xa2\x6c\x6c\x3c\xb9\xa8\xb7\x6f\x68\ +\x91\x2c\xcb\xb7\xa9\xaa\xca\xe7\xcc\x99\x73\x7b\x4e\x00\x5d\xd7\ +\x59\x3a\x9b\x0d\x80\x6c\xc7\x8e\x1d\x83\x0b\x16\x2c\xf8\xbb\x35\ +\x6f\xef\x7c\xba\x65\x5a\xed\x73\x27\x9d\x30\x53\x0e\x72\xc3\xda\ +\xc1\xe9\x07\xd2\x47\x81\x40\x33\x1c\x96\x3c\x0c\xe7\x02\x5c\x86\ +\xc3\x5c\xb5\xce\x35\xbf\x91\x82\xc3\xe4\x2a\x1c\x97\xb1\xc9\xfb\ +\x46\xb2\x3e\xbc\x1f\xa9\xc3\xc1\x4c\x2d\x0e\x67\x6b\x30\x1e\x4b\ +\x5f\xa4\xeb\x49\xc4\x62\x31\x28\xe4\xe5\x84\x7d\xc4\xb5\x95\x73\ +\x5e\x6f\xf9\xe2\x2c\xf3\x17\xb8\x10\x8c\xf2\x40\x10\x96\x75\x77\ +\x77\x3f\x63\x18\xc6\xd3\xff\xf9\xf4\xba\xc0\x6b\x91\xb9\x72\x5a\ +\x78\x00\x6e\xfd\xe3\xc8\xf5\xb7\xe5\x57\x83\xb0\x2c\x3b\x0a\xec\ +\x7c\xc8\x49\xb0\xaa\x03\x0e\xd3\xe3\x70\xee\xef\x7b\x50\x60\xf6\ +\xfd\xc7\x65\xe3\x59\x37\x7e\xb5\xb7\x19\xd7\xbf\xbd\x00\xcb\xfb\ +\xcf\xc5\x7b\xb1\x99\xd8\xdc\xaf\xe0\xc0\xde\x2e\xd4\x25\xba\x51\ +\xa7\xf4\x3f\x5a\x53\x53\x73\xe1\xca\x95\x2b\x67\x90\x00\x4b\x67\ +\xcf\x9e\xdd\x23\x49\x12\xac\x6f\x7a\xcb\x05\xb2\x80\xcf\xd3\x94\ +\x55\x95\x46\x4c\x30\x12\xe0\x26\x55\x35\x4e\x5e\xfe\xd8\xda\xd3\ +\x3c\xb7\x5c\x86\xcb\x9b\xfa\xe0\x33\x5f\x7b\x93\x7d\x24\xf5\x26\ +\x60\xee\xd7\xf3\x1a\xf6\x3c\x01\xa8\x24\x82\x3c\xe1\xe1\x5b\x2e\ +\x83\xc3\x52\xbd\x36\x79\x46\x90\xeb\xe1\x30\x6d\x1c\x10\xc7\x21\ +\x82\x99\xe0\x46\xaa\xf0\xec\xee\xa9\xd8\x12\x9e\x06\x4d\xd7\x10\ +\x8f\x8f\x43\x44\xdf\xc3\xe5\x73\x0d\xcc\x59\xe4\xc3\x89\xb3\xda\ +\xe0\xad\x6d\xa6\x3c\x7d\x41\x5f\xfb\x95\xf7\x0c\x03\x10\x0f\x3f\ +\xfc\x30\x23\x5b\x2c\x44\x2e\x6b\x5f\x4d\x78\xc3\x75\xcf\xdf\x5f\ +\x83\xc7\xd6\xee\x6c\x4a\xa6\xd5\x16\xcb\x2d\x38\x01\x07\x0f\x1e\ +\x4c\xb7\xb5\xb5\x7d\x25\x1a\x49\x6c\x5d\xf1\xcb\xdf\x36\xc9\x37\ +\x7e\x11\x97\x64\x87\xe0\x96\x00\x16\xeb\x07\xdb\xfe\x2f\x80\x79\ +\x2c\xe3\xd3\xed\x6c\xc6\xac\x87\xdf\xf9\x03\xe0\xc0\xa3\x66\xc9\ +\xcc\x23\xfc\x2e\xc0\x27\xb8\xaf\x6f\x0e\x1c\xa6\x5a\x02\x38\x45\ +\x98\xb4\x6f\xf3\x60\x10\xab\xb6\x35\x63\xd3\x61\x2f\xa2\xd1\x08\ +\x62\x91\x8f\xf1\xa5\x39\x0a\x7e\x74\x9e\x84\xf3\x17\xce\x04\xab\ +\x9b\x87\x3d\x83\x40\x64\xe8\x10\xa2\x07\x3b\x11\xee\xdd\x79\xf0\ +\x9d\x70\xf3\x01\x00\x7c\xc5\x8a\x15\xcb\xc8\x1b\x3c\x24\xc0\xeb\ +\x00\x72\xa5\xca\xd5\xd8\x58\x23\x65\x15\xad\xdf\xd0\x35\x0e\xa0\ +\x86\x90\x26\x68\x04\x31\xbb\xbf\xff\x70\xf4\x84\xa6\xeb\x87\x8e\ +\x8c\xac\x59\xf1\xe4\x26\x96\xb9\xfa\x6a\x9c\x6f\xbc\x08\x8f\xac\ +\x41\x96\xcd\x4a\x48\xa0\x56\xa6\x96\x59\xe7\x8c\x13\xc2\x5d\x60\ +\x11\x82\x9c\xaf\x9c\x29\x5d\xc6\xa1\xb1\x00\x8e\xc4\x3c\x18\x8a\ +\x7a\x10\x7a\xf5\xbf\x10\xd3\xd7\x21\xcd\xa6\x23\x65\xd4\x01\x24\ +\x6c\x2d\xef\x40\x8d\xcf\xc0\xd4\x6a\x0d\x73\x9b\x32\x58\x36\x23\ +\x85\x29\x7e\x1d\xa6\x0d\x27\xdc\xd8\x70\xb0\x1a\x2f\x75\x4d\xc1\ +\xc7\x83\x12\xc2\xe1\x30\x22\xe3\xe3\xf8\x8b\xa5\xc0\x03\x37\x07\ +\x70\xe2\xbc\x2f\xe4\x12\xb1\x88\x1d\x81\x31\xb4\x1d\x91\x7d\x31\ +\xa4\x14\x91\x4f\x37\x6e\xb7\x35\x45\x60\x2d\x2d\x2d\x17\x9b\xf9\ +\x80\xec\x79\x58\xe6\xba\xfd\xde\x55\x1c\x5e\xff\x12\xa8\x59\x93\ +\xfc\x14\x42\x15\x21\x46\xc8\x10\xf8\x99\xd3\x47\xd7\x6d\x3c\x5c\ +\xf7\x60\x6f\xdf\x91\xfb\x1f\x7e\x49\x42\xf4\x4f\xaf\xc2\x32\x75\ +\x35\x3c\x2e\x1d\x2e\x57\x9e\xbc\xcb\x12\x81\x13\xdb\x50\xda\x8b\ +\xc1\xb8\x17\xfd\x51\x1f\x8e\x24\x83\xd8\x3f\xec\x42\x6f\x48\x43\ +\x3a\x93\x45\x36\x9b\x85\xaa\x66\x20\x44\x1a\x3e\x5f\x06\x81\xc0\ +\x28\x82\xf2\x18\x3c\x48\x23\x6f\x12\x09\xe4\x42\x46\xf7\xc0\xef\ +\xaf\xc7\xec\x66\x2f\x3d\x5a\x35\x14\xe1\x43\x86\xee\x1f\x0a\x8d\ +\x20\x3c\x36\x86\xa0\x17\x78\xed\x8e\x7a\x5c\xf2\x27\xe7\x03\xb5\ +\x27\x43\x28\x29\x18\x07\xd7\xe6\x04\x10\x06\xc0\x49\x79\xc1\x04\ +\x84\xe0\x74\xec\xca\x15\x5f\xf3\xbb\xeb\xeb\xeb\xaf\xef\xeb\xeb\ +\xcb\x80\x6e\x77\xbe\x0d\x2a\xf4\xe9\x00\xb7\x50\x47\xf0\x13\xa2\ +\x9b\x81\x44\xbb\x0e\x76\x61\x7b\xf4\xb9\xf7\x0e\xd7\xce\x3e\xd4\ +\x37\xf0\x97\x4f\xbc\xc9\xb0\xff\xa4\xf3\x35\x79\x74\x4b\xca\x60\ +\xae\xa0\xaf\xaa\xc6\xe5\xae\x9e\x82\x81\xa8\x84\x81\x31\x8e\x68\ +\x3c\x8d\x54\x2a\x83\x44\x32\x8d\x80\x34\x88\x93\x5a\x75\x5c\xbb\ +\x54\xc2\xbc\x19\x40\x5b\xb3\x84\xf6\xd6\x20\x9a\xbf\xf4\x22\x24\ +\x33\x51\xba\x48\xf3\x9d\x37\x83\x99\x9b\x26\xba\x02\x28\x49\x30\ +\x35\x85\xa7\xd6\xeb\xb8\xf1\x3f\x52\x18\x19\xe1\x85\xc9\x9e\x01\ +\xab\x6f\x0b\xe0\xbc\x2b\xbe\x05\xe1\x69\x82\x48\x0e\x43\xdb\xf7\ +\x12\x90\x49\x12\x61\x19\x0c\xc8\x91\xe7\xd6\x96\x92\x90\x68\xa6\ +\x00\xf6\xca\x2b\xaf\xdc\x10\x08\x04\x66\x47\xa3\xd1\x55\x20\x5e\ +\xc5\x0a\x8a\x8b\x10\x24\x34\x10\xbc\x84\x64\x73\x10\x89\xf3\xe7\ +\x81\x35\x04\x51\xfb\x9b\xfd\x0d\x77\x29\xdc\xfd\xdd\xd6\xd6\x56\ +\xf4\xf7\xf7\xa1\x2a\xe0\x05\x37\x34\x84\x86\x23\x30\x0c\x8e\x69\ +\xb5\x14\x87\xf3\x25\x9c\x3b\x8f\xe1\x82\xa5\x4d\x68\x9f\x3d\x8b\ +\x2a\x5c\x13\x98\xbf\x01\xcc\x5b\x0b\xe6\x0e\x82\x41\x03\xb8\x92\ +\x03\x33\xb2\x10\x6a\x14\x2c\x3d\x08\xa4\x87\x73\xdb\xec\x4c\xcb\ +\xe2\xd0\x51\x81\xb3\x97\xd7\x62\x24\x1c\x01\x59\x6e\xc6\x3b\x1a\ +\x25\xec\x09\x01\xa7\xb5\x09\x7c\xf0\xb3\x0b\x20\xd1\xeb\x37\x4f\ +\x47\xa0\xed\x79\x06\x22\x9b\xb4\x37\xaa\x75\x81\x4d\x07\x38\x14\ +\x8d\x83\x09\xae\x27\x1b\x16\x2f\x7c\xba\xa7\x4e\x27\xf2\x5b\x3e\ +\xfa\xe8\x23\xcf\xc0\xc0\xc0\xa9\x00\x7a\x8b\xed\x07\xe8\x84\x38\ +\x41\xb5\x44\xa8\x1d\x4e\x22\xf0\x7a\x17\xa2\x27\x35\x23\x7c\xde\ +\xac\xc8\x9d\xef\xf6\x35\xb3\xde\xde\xde\x9b\xcd\x58\x22\x6f\xb4\ +\x66\x85\xe1\x9c\x39\xae\xc8\xbd\x5f\x9f\xe5\x9f\xb5\xe8\x42\x6f\ +\xb0\x75\x21\x73\xfb\x82\x48\x0b\x05\xc4\x90\xa0\x10\x31\x82\xaa\ +\xd0\x61\x14\x3c\xd9\x9f\xdb\x2c\x91\x94\x10\x24\x3d\x01\x99\x09\ +\xc8\x42\x40\x12\x66\xcb\xd0\x3d\x5c\x0d\x0e\x39\x37\xdb\x37\x9e\ +\x03\x7c\xeb\x6c\x50\x68\x00\x7f\xfd\x42\x2d\x66\x34\x24\x10\x97\ +\xdb\xe0\x4a\x2b\x48\xed\x5a\x0d\x91\xce\xd0\x7d\x66\xfc\x09\x08\ +\x9d\x23\x95\x11\x54\x1a\x01\xb3\x27\x65\xf8\x1e\x79\x64\x7d\xba\ +\xba\x75\x7a\xfd\xbf\xf7\xf4\xf4\xd4\x11\xf9\x1b\x4c\xf2\xe5\x36\ +\x44\xb8\x15\xff\x23\x04\x45\x00\x8d\x29\x15\x53\x3b\xfb\x11\xdb\ +\xd6\x2f\xc6\x5b\x1b\x95\xef\x69\x9a\x36\x04\xe0\xdb\x84\x36\x02\ +\xbc\x6e\xb9\x77\xd9\x89\x35\xf7\xb6\x5f\xf9\xe8\x75\x35\x53\x5a\ +\xda\x54\x25\x2d\xa5\x33\x09\xb7\xa6\xa6\x5d\x4a\x72\x14\xa3\xfd\ +\xbd\x99\x70\xff\xc7\x6e\x23\xbe\xbf\x5a\x36\xe2\xbe\x80\x57\x54\ +\x79\x3d\xc2\x13\xf0\x08\x29\xe0\x61\xb9\xca\xe2\x22\xb8\x19\xc0\ +\x0d\xe0\xdd\x81\x39\x48\x24\xba\x30\xb3\x1e\x5b\x82\x6e\xec\x79\ +\x6d\x07\x6a\x3d\x2e\x51\x27\x04\x3f\xef\x70\x18\xfa\xc7\x3d\x11\ +\xc9\x88\xbf\x2a\xf3\x78\x04\x01\xb7\xcc\x3c\x4c\x80\x71\x01\x45\ +\x15\x62\xdf\x30\xd4\xa3\x09\x36\x7a\x28\xea\xde\xf8\xe1\xa0\xdf\ +\x35\xeb\xc4\xa6\xd5\x54\xd1\x9a\xf7\xee\xdd\x7b\x37\x80\x5f\x1d\ +\xeb\x8e\x90\xb0\xbc\x60\xdc\x6a\x1b\x09\x0d\x02\x08\x1c\x09\x8f\ +\x87\x01\xac\x90\x65\xf9\x9f\x7c\x3e\xdf\xf6\x54\x2a\xb5\xd0\xe3\ +\xf5\xbe\xdc\x71\xfa\xd5\xef\xcf\x3e\xe5\xec\xaf\x09\x2e\x06\x0c\ +\x43\x53\xe2\x91\x70\xf7\xde\x1d\x1b\x77\x6f\xfc\xcd\x93\xa3\xaa\ +\x9a\xf6\x41\x57\x7d\x86\x11\x0c\x08\xdd\x5b\x25\xb8\x56\x45\xa1\ +\x13\x64\x42\xaf\x97\x99\xde\xe0\x96\x8c\xda\x6a\x9f\x41\x2d\x0f\ +\xc6\xa4\x99\xf3\x3b\xfb\xa4\x2a\x55\x51\xe2\x0b\xe6\xe0\x0e\x83\ +\x23\xab\xab\xf0\x65\x54\xe1\xf3\xbb\xb8\xa7\xfb\x88\xb1\x64\xcd\ +\x3b\x9d\xcf\xca\x2e\xd6\x00\x78\x83\x0c\xc2\xc7\x60\xb8\x05\x87\ +\x94\x48\xc3\x08\xa7\xb8\x72\x24\x2a\xbc\x9a\x67\xda\x17\x3b\xe6\ +\xcc\x98\xd1\xd5\xd5\x95\x08\x85\x42\xf7\x00\x78\xf4\xb3\x6c\x89\ +\x19\x84\x84\x25\xc2\x14\x0b\x33\x08\x11\xc3\x30\xc6\x1a\x1a\x1a\ +\xb6\x64\x32\x99\x85\xfe\x40\x70\xd7\x57\x6e\xbc\x77\x9a\xcb\xed\ +\x35\xb3\xed\xfb\x5d\xbb\xf7\xbc\xb1\xa3\x73\x6b\x94\x43\x97\x1a\ +\x4f\xfa\x32\xe3\x5c\x65\xa4\x89\xc4\xf5\x2c\x33\xd4\xb4\xa4\x2b\ +\x29\x49\x57\x93\x32\x65\x6f\x59\xa3\x96\x67\x53\xee\x31\x2d\xed\ +\x19\x1c\x63\x0b\xdd\xcd\xcb\x1e\xdd\xd9\xf5\x3a\x24\x86\x07\x3b\ +\xa6\x62\x9b\x00\x1d\x6a\x90\xb8\x4c\xe9\xc4\xa5\xde\x3e\x2c\xd8\ +\x5b\x4f\xae\x1f\x9b\x75\xe1\xb2\x59\xcf\xb7\x34\xf8\xd3\xe3\xb1\ +\xd4\xb4\xd1\x68\xfa\x84\x70\x4c\x9f\x6f\x48\xfe\x99\x9e\x40\x5d\ +\xa3\xab\xc6\x1f\x8c\x86\xc3\xea\xce\xee\xf7\x5e\xd6\x75\x7d\x39\ +\x80\x5d\x04\xed\xf3\xfc\xaf\x31\x66\x89\x55\x4b\x98\x6a\x95\xca\ +\x24\xd5\xd5\x9b\xa8\x26\xdf\xd6\xdc\xdc\xfc\x0d\x7a\x87\x50\xd2\ +\xe9\x74\xe2\x8d\x37\xde\xd8\x3d\xc9\x96\x86\x80\x05\xd3\x98\x10\ +\x9c\xc3\xe0\x42\x37\xe8\x48\xe5\x86\x9a\x11\xdb\xb6\xed\xa8\x86\ +\xb7\x7a\xed\xde\xbd\x9f\xcc\xeb\xec\xec\xdc\x0e\xe0\x4c\x82\xfe\ +\x8f\x00\xd6\x2d\x06\x4b\x8d\x83\x45\x63\x90\x7b\x13\xec\x2c\xba\ +\xf3\x79\xb7\xdb\xdd\xec\xf5\x7a\x55\x6a\x99\xcb\xe5\x72\x93\x81\ +\xc8\x1a\xf1\x78\x7c\xbf\xa2\x28\x6b\x01\xfc\x5a\x08\xd1\x5d\x40\ +\xbc\x9c\x07\x94\x08\x09\x8d\x10\x21\x28\x84\x26\xc2\x14\x55\x55\ +\xe3\xe6\xba\x9a\xda\xa6\x97\xc9\xc8\x2b\x38\x00\x97\x53\x00\xe7\ +\x9f\x3d\x18\x63\x1c\x8c\x41\xa2\x1f\x78\xdc\x02\xf0\xf1\x77\x37\ +\x7c\xd4\xee\xf7\x57\x3d\x91\x88\xc6\xe6\x6d\xdb\xb6\x6d\x14\xc0\ +\x35\xd6\x78\x99\x04\x90\xf0\x31\x64\xab\x2a\xd5\xe4\x77\x54\x70\ +\x0b\xe5\xa1\xb3\x08\xb5\xd6\x73\x85\x09\xfb\x09\xa6\x70\x7d\xd6\ +\x62\x4e\x54\x66\x57\xb8\x30\x24\x92\xd6\x97\x66\x69\xc6\x37\x92\ +\x00\x4a\x22\x91\x38\xe3\xc0\x81\x03\xaf\x51\x79\xe4\x74\x2e\x13\ +\x49\x13\x92\x55\x21\x72\xe4\xf3\x13\x2f\x0c\xab\x95\x48\x2c\xb1\ +\x6e\xdd\xba\x36\xba\x7e\x3d\x2d\x4f\xbf\x73\xe8\xd0\x21\xff\xa6\ +\x4d\x9b\xc6\xe9\xda\x5f\x01\xc8\x12\xda\x26\x7c\xa7\x36\xc1\x0b\ +\x93\x84\xdd\x84\x4e\x42\x8a\x90\xb1\x26\x45\x2f\x47\xba\x74\x08\ +\x1c\xff\x7d\x32\x21\xe0\xf1\x78\xbe\x4d\x1e\xb0\x9c\xc2\x60\xe5\ +\xa9\xa7\x9e\xba\x9e\x92\xa3\x9b\x5c\x93\x51\x82\xe4\xe4\x9a\x3a\ +\x09\xa2\x72\xce\x0d\x1a\x23\x28\x5f\xc8\xe3\xe3\xe3\x33\xfc\x7e\ +\xff\x29\x34\xe6\x22\x6a\x97\x51\x82\x62\x94\xa1\x0d\xea\xff\x10\ +\xc0\x2a\xc2\x51\x8b\x50\xc2\x2a\xc9\xb1\x1c\x51\x27\x41\x6e\x41\ +\xe0\x73\x1a\xab\xc0\xfd\x26\xae\x63\x8c\x3d\x4c\xa4\x6a\xab\xaa\ +\xaa\x86\x89\x58\x8a\xda\x0c\x09\x20\x3c\x79\xf3\xd1\xf5\x06\x42\ +\x8d\x39\xfb\xe4\x39\x88\x44\x22\xc6\xd0\xd0\x50\x2f\x79\xc2\x06\ +\x6b\x69\x3a\x60\x11\x4d\x12\xd2\x96\x08\x9a\x4d\xf6\x77\x63\x0c\ +\x95\xb3\x2a\xc2\x97\x09\xa7\x13\xda\x2c\xc2\x75\x04\x37\xe7\x5c\ +\xb2\x5e\x41\x23\x84\x83\x84\x6e\xc2\xfb\x84\x7e\x6b\xa6\x8d\x72\ +\x7f\xd6\xfb\x03\x10\xa0\xf0\xf3\x1c\xff\x0a\xc0\xf9\x17\x56\x81\ +\xdf\x13\xfb\x1f\x84\xaf\xe2\x02\x22\xe6\xe9\x93\x00\x00\x00\x00\ +\x49\x45\x4e\x44\xae\x42\x60\x82\ +" + +qt_resource_name = b"\ +\x00\x10\ +\x0f\xad\xca\x47\ +\x00\x68\ +\x00\x65\x00\x6c\x00\x70\x00\x2d\x00\x62\x00\x72\x00\x6f\x00\x77\x00\x73\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x0a\ +\x08\x99\x64\x87\ +\x00\x6b\ +\x00\x63\x00\x68\x00\x61\x00\x72\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x0b\ +\x01\xad\xab\x47\ +\x00\x64\ +\x00\x69\x00\x67\x00\x69\x00\x6b\x00\x61\x00\x6d\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x1a\ +\x08\xdd\xe1\xa7\ +\x00\x61\ +\x00\x63\x00\x63\x00\x65\x00\x73\x00\x73\x00\x6f\x00\x72\x00\x69\x00\x65\x00\x73\x00\x2d\x00\x64\x00\x69\x00\x63\x00\x74\x00\x69\ +\x00\x6f\x00\x6e\x00\x61\x00\x72\x00\x79\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x07\ +\x0e\x95\x57\x87\ +\x00\x6b\ +\x00\x33\x00\x62\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x0d\ +\x0b\x34\x2d\xe7\ +\x00\x61\ +\x00\x6b\x00\x72\x00\x65\x00\x67\x00\x61\x00\x74\x00\x6f\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ +" + +qt_resource_struct = b"\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x01\ +\x00\x00\x00\x40\x00\x00\x00\x00\x00\x01\x00\x00\x2e\x67\ +\x00\x00\x00\x26\x00\x00\x00\x00\x00\x01\x00\x00\x1b\x4c\ +\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x01\x00\x00\x3b\x71\ +\x00\x00\x00\xaa\x00\x00\x00\x00\x00\x01\x00\x00\x70\xa9\ +\x00\x00\x00\x96\x00\x00\x00\x00\x00\x01\x00\x00\x50\x89\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ +" + +def qInitResources(): + QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) + +def qCleanupResources(): + QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) + +qInitResources() diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/codeeditor/__pycache__/codeeditor.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/codeeditor/__pycache__/codeeditor.cpython-310.pyc new file mode 100644 index 0000000..5fba504 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/codeeditor/__pycache__/codeeditor.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/codeeditor/__pycache__/main.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/codeeditor/__pycache__/main.cpython-310.pyc new file mode 100644 index 0000000..a5cf37d Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/codeeditor/__pycache__/main.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/codeeditor/codeeditor.py b/venv/Lib/site-packages/PySide2/examples/widgets/codeeditor/codeeditor.py new file mode 100644 index 0000000..331069f --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/codeeditor/codeeditor.py @@ -0,0 +1,141 @@ +############################################################################# +## +## Copyright (C) 2019 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2.QtCore import Slot, Qt, QRect, QSize +from PySide2.QtGui import QColor, QPainter, QTextFormat +from PySide2.QtWidgets import QPlainTextEdit, QWidget, QTextEdit + + +class LineNumberArea(QWidget): + def __init__(self, editor): + QWidget.__init__(self, editor) + self.codeEditor = editor + + def sizeHint(self): + return QSize(self.codeEditor.line_number_area_width(), 0) + + def paintEvent(self, event): + self.codeEditor.lineNumberAreaPaintEvent(event) + + +class CodeEditor(QPlainTextEdit): + def __init__(self): + QPlainTextEdit.__init__(self) + self.line_number_area = LineNumberArea(self) + + self.blockCountChanged[int].connect(self.update_line_number_area_width) + self.updateRequest[QRect, int].connect(self.update_line_number_area) + self.cursorPositionChanged.connect(self.highlight_current_line) + + self.update_line_number_area_width(0) + self.highlight_current_line() + + def line_number_area_width(self): + digits = 1 + max_num = max(1, self.blockCount()) + while max_num >= 10: + max_num *= 0.1 + digits += 1 + + space = 3 + self.fontMetrics().width('9') * digits + return space + + def resizeEvent(self, e): + super().resizeEvent(e) + cr = self.contentsRect() + width = self.line_number_area_width() + rect = QRect(cr.left(), cr.top(), width, cr.height()) + self.line_number_area.setGeometry(rect) + + def lineNumberAreaPaintEvent(self, event): + painter = QPainter(self.line_number_area) + painter.fillRect(event.rect(), Qt.lightGray) + block = self.firstVisibleBlock() + block_number = block.blockNumber() + offset = self.contentOffset() + top = self.blockBoundingGeometry(block).translated(offset).top() + bottom = top + self.blockBoundingRect(block).height() + + while block.isValid() and top <= event.rect().bottom(): + if block.isVisible() and bottom >= event.rect().top(): + number = str(block_number + 1) + painter.setPen(Qt.black) + width = self.line_number_area.width() + height = self.fontMetrics().height() + painter.drawText(0, top, width, height, Qt.AlignRight, number) + + block = block.next() + top = bottom + bottom = top + self.blockBoundingRect(block).height() + block_number += 1 + + @Slot() + def update_line_number_area_width(self, newBlockCount): + self.setViewportMargins(self.line_number_area_width(), 0, 0, 0) + + @Slot() + def update_line_number_area(self, rect, dy): + if dy: + self.line_number_area.scroll(0, dy) + else: + width = self.line_number_area.width() + self.line_number_area.update(0, rect.y(), width, rect.height()) + + if rect.contains(self.viewport().rect()): + self.update_line_number_area_width(0) + + @Slot() + def highlight_current_line(self): + extra_selections = [] + + if not self.isReadOnly(): + selection = QTextEdit.ExtraSelection() + + line_color = QColor(Qt.yellow).lighter(160) + selection.format.setBackground(line_color) + + selection.format.setProperty(QTextFormat.FullWidthSelection, True) + + selection.cursor = self.textCursor() + selection.cursor.clearSelection() + + extra_selections.append(selection) + + self.setExtraSelections(extra_selections) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/codeeditor/main.py b/venv/Lib/site-packages/PySide2/examples/widgets/codeeditor/main.py new file mode 100644 index 0000000..14c2e08 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/codeeditor/main.py @@ -0,0 +1,52 @@ +############################################################################# +## +## Copyright (C) 2019 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +import sys +from PySide2.QtWidgets import QApplication +from codeeditor import CodeEditor + +"""PySide2 port of the widgets/codeeditor example from Qt5""" + +if __name__ == "__main__": + app = QApplication([]) + editor = CodeEditor() + editor.setWindowTitle("Code Editor Example") + editor.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/__pycache__/extension.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/__pycache__/extension.cpython-310.pyc new file mode 100644 index 0000000..20cd491 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/__pycache__/extension.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/__pycache__/findfiles.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/__pycache__/findfiles.cpython-310.pyc new file mode 100644 index 0000000..9001a6c Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/__pycache__/findfiles.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/__pycache__/standarddialogs.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/__pycache__/standarddialogs.cpython-310.pyc new file mode 100644 index 0000000..d1b75b7 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/__pycache__/standarddialogs.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/__pycache__/trivialwizard.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/__pycache__/trivialwizard.cpython-310.pyc new file mode 100644 index 0000000..01973ec Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/__pycache__/trivialwizard.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/__pycache__/classwizard.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/__pycache__/classwizard.cpython-310.pyc new file mode 100644 index 0000000..2b6685d Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/__pycache__/classwizard.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/__pycache__/classwizard_rc.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/__pycache__/classwizard_rc.cpython-310.pyc new file mode 100644 index 0000000..6bcef7d Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/__pycache__/classwizard_rc.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/classwizard.py b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/classwizard.py new file mode 100644 index 0000000..d0e970f --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/classwizard.py @@ -0,0 +1,404 @@ +# -*- coding: utf-8 -*- +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from __future__ import unicode_literals +from PySide2 import QtCore, QtGui, QtWidgets + +import classwizard_rc + + +class ClassWizard(QtWidgets.QWizard): + def __init__(self, parent=None): + super(ClassWizard, self).__init__(parent) + + self.addPage(IntroPage()) + self.addPage(ClassInfoPage()) + self.addPage(CodeStylePage()) + self.addPage(OutputFilesPage()) + self.addPage(ConclusionPage()) + + self.setPixmap(QtWidgets.QWizard.BannerPixmap, + QtGui.QPixmap(':/images/banner.png')) + self.setPixmap(QtWidgets.QWizard.BackgroundPixmap, + QtGui.QPixmap(':/images/background.png')) + + self.setWindowTitle("Class Wizard") + + def accept(self): + className = self.field('className') + baseClass = self.field('baseClass') + macroName = self.field('macroName') + baseInclude = self.field('baseInclude') + + outputDir = self.field('outputDir') + header = self.field('header') + implementation = self.field('implementation') + + block = '' + + if self.field('comment'): + block += '/*\n' + block += ' ' + header + '\n' + block += '*/\n' + block += '\n' + + if self.field('protect'): + block += '#ifndef ' + macroName + '\n' + block += '#define ' + macroName + '\n' + block += '\n' + + if self.field('includeBase'): + block += '#include ' + baseInclude + '\n' + block += '\n' + + block += 'class ' + className + if baseClass: + block += ' : public ' + baseClass + + block += '\n' + block += '{\n' + + if self.field('qobjectMacro'): + block += ' Q_OBJECT\n' + block += '\n' + + block += 'public:\n' + + if self.field('qobjectCtor'): + block += ' ' + className + '(QObject *parent = 0);\n' + elif self.field('qwidgetCtor'): + block += ' ' + className + '(QWidget *parent = 0);\n' + elif self.field('defaultCtor'): + block += ' ' + className + '();\n' + + if self.field('copyCtor'): + block += ' ' + className + '(const ' + className + ' &other);\n' + block += '\n' + block += ' ' + className + ' &operator=' + '(const ' + className + ' &other);\n' + + block += '};\n' + + if self.field('protect'): + block += '\n' + block += '#endif\n' + + headerFile = QtCore.QFile(outputDir + '/' + header) + + if not headerFile.open(QtCore.QFile.WriteOnly | QtCore.QFile.Text): + QtWidgets.QMessageBox.warning(None, "Class Wizard", + "Cannot write file %s:\n%s" % (headerFile.fileName(), headerFile.errorString())) + return + + headerFile.write(QtCore.QByteArray(block.encode("utf-8"))) + + block = '' + + if self.field('comment'): + block += '/*\n' + block += ' ' + implementation + '\n' + block += '*/\n' + block += '\n' + + block += '#include "' + header + '"\n' + block += '\n' + + if self.field('qobjectCtor'): + block += className + '::' + className + '(QObject *parent)\n' + block += ' : ' + baseClass + '(parent)\n' + block += '{\n' + block += '}\n' + elif self.field('qwidgetCtor'): + block += className + '::' + className + '(QWidget *parent)\n' + block += ' : ' + baseClass + '(parent)\n' + block += '{\n' + block += '}\n' + elif self.field('defaultCtor'): + block += className + '::' + className + '()\n' + block += '{\n' + block += ' // missing code\n' + block += '}\n' + + if self.field('copyCtor'): + block += '\n' + block += className + '::' + className + '(const ' + className + ' &other)\n' + block += '{\n' + block += ' *this = other;\n' + block += '}\n' + block += '\n' + block += className + ' &' + className + '::operator=(const ' + className + ' &other)\n' + block += '{\n' + + if baseClass: + block += ' ' + baseClass + '::operator=(other);\n' + + block += ' // missing code\n' + block += ' return *this;\n' + block += '}\n' + + implementationFile = QtCore.QFile(outputDir + '/' + implementation) + + if not implementationFile.open(QtCore.QFile.WriteOnly | QtCore.QFile.Text): + QtWidgets.QMessageBox.warning(None, "Class Wizard", + "Cannot write file %s:\n%s" % (implementationFile.fileName(), implementationFile.errorString())) + return + + implementationFile.write(QtCore.QByteArray(block.encode("utf-8"))) + + super(ClassWizard, self).accept() + + +class IntroPage(QtWidgets.QWizardPage): + def __init__(self, parent=None): + super(IntroPage, self).__init__(parent) + + self.setTitle("Introduction") + self.setPixmap(QtWidgets.QWizard.WatermarkPixmap, + QtGui.QPixmap(':/images/watermark1.png')) + + label = QtWidgets.QLabel("This wizard will generate a skeleton C++ class " + "definition, including a few functions. You simply need to " + "specify the class name and set a few options to produce a " + "header file and an implementation file for your new C++ " + "class.") + label.setWordWrap(True) + + layout = QtWidgets.QVBoxLayout() + layout.addWidget(label) + self.setLayout(layout) + + +class ClassInfoPage(QtWidgets.QWizardPage): + def __init__(self, parent=None): + super(ClassInfoPage, self).__init__(parent) + + self.setTitle("Class Information") + self.setSubTitle("Specify basic information about the class for " + "which you want to generate skeleton source code files.") + self.setPixmap(QtWidgets.QWizard.LogoPixmap, + QtGui.QPixmap(':/images/logo1.png')) + + classNameLabel = QtWidgets.QLabel("&Class name:") + classNameLineEdit = QtWidgets.QLineEdit() + classNameLabel.setBuddy(classNameLineEdit) + + baseClassLabel = QtWidgets.QLabel("B&ase class:") + baseClassLineEdit = QtWidgets.QLineEdit() + baseClassLabel.setBuddy(baseClassLineEdit) + + qobjectMacroCheckBox = QtWidgets.QCheckBox("Generate Q_OBJECT ¯o") + + groupBox = QtWidgets.QGroupBox("C&onstructor") + + qobjectCtorRadioButton = QtWidgets.QRadioButton("&QObject-style constructor") + qwidgetCtorRadioButton = QtWidgets.QRadioButton("Q&Widget-style constructor") + defaultCtorRadioButton = QtWidgets.QRadioButton("&Default constructor") + copyCtorCheckBox = QtWidgets.QCheckBox("&Generate copy constructor and operator=") + + defaultCtorRadioButton.setChecked(True) + + defaultCtorRadioButton.toggled.connect(copyCtorCheckBox.setEnabled) + + self.registerField('className*', classNameLineEdit) + self.registerField('baseClass', baseClassLineEdit) + self.registerField('qobjectMacro', qobjectMacroCheckBox) + self.registerField('qobjectCtor', qobjectCtorRadioButton) + self.registerField('qwidgetCtor', qwidgetCtorRadioButton) + self.registerField('defaultCtor', defaultCtorRadioButton) + self.registerField('copyCtor', copyCtorCheckBox) + + groupBoxLayout = QtWidgets.QVBoxLayout() + groupBoxLayout.addWidget(qobjectCtorRadioButton) + groupBoxLayout.addWidget(qwidgetCtorRadioButton) + groupBoxLayout.addWidget(defaultCtorRadioButton) + groupBoxLayout.addWidget(copyCtorCheckBox) + groupBox.setLayout(groupBoxLayout) + + layout = QtWidgets.QGridLayout() + layout.addWidget(classNameLabel, 0, 0) + layout.addWidget(classNameLineEdit, 0, 1) + layout.addWidget(baseClassLabel, 1, 0) + layout.addWidget(baseClassLineEdit, 1, 1) + layout.addWidget(qobjectMacroCheckBox, 2, 0, 1, 2) + layout.addWidget(groupBox, 3, 0, 1, 2) + self.setLayout(layout) + + +class CodeStylePage(QtWidgets.QWizardPage): + def __init__(self, parent=None): + super(CodeStylePage, self).__init__(parent) + + self.setTitle("Code Style Options") + self.setSubTitle("Choose the formatting of the generated code.") + self.setPixmap(QtWidgets.QWizard.LogoPixmap, + QtGui.QPixmap(':/images/logo2.png')) + + commentCheckBox = QtWidgets.QCheckBox("&Start generated files with a " + "comment") + commentCheckBox.setChecked(True) + + protectCheckBox = QtWidgets.QCheckBox("&Protect header file against " + "multiple inclusions") + protectCheckBox.setChecked(True) + + macroNameLabel = QtWidgets.QLabel("&Macro name:") + self.macroNameLineEdit = QtWidgets.QLineEdit() + macroNameLabel.setBuddy(self.macroNameLineEdit) + + self.includeBaseCheckBox = QtWidgets.QCheckBox("&Include base class " + "definition") + self.baseIncludeLabel = QtWidgets.QLabel("Base class include:") + self.baseIncludeLineEdit = QtWidgets.QLineEdit() + self.baseIncludeLabel.setBuddy(self.baseIncludeLineEdit) + + protectCheckBox.toggled.connect(macroNameLabel.setEnabled) + protectCheckBox.toggled.connect(self.macroNameLineEdit.setEnabled) + self.includeBaseCheckBox.toggled.connect(self.baseIncludeLabel.setEnabled) + self.includeBaseCheckBox.toggled.connect(self.baseIncludeLineEdit.setEnabled) + + self.registerField('comment', commentCheckBox) + self.registerField('protect', protectCheckBox) + self.registerField('macroName', self.macroNameLineEdit) + self.registerField('includeBase', self.includeBaseCheckBox) + self.registerField('baseInclude', self.baseIncludeLineEdit) + + layout = QtWidgets.QGridLayout() + layout.setColumnMinimumWidth(0, 20) + layout.addWidget(commentCheckBox, 0, 0, 1, 3) + layout.addWidget(protectCheckBox, 1, 0, 1, 3) + layout.addWidget(macroNameLabel, 2, 1) + layout.addWidget(self.macroNameLineEdit, 2, 2) + layout.addWidget(self.includeBaseCheckBox, 3, 0, 1, 3) + layout.addWidget(self.baseIncludeLabel, 4, 1) + layout.addWidget(self.baseIncludeLineEdit, 4, 2) + self.setLayout(layout) + + def initializePage(self): + className = self.field('className') + self.macroNameLineEdit.setText(className.upper() + "_H") + + baseClass = self.field('baseClass') + is_baseClass = bool(baseClass) + + self.includeBaseCheckBox.setChecked(is_baseClass) + self.includeBaseCheckBox.setEnabled(is_baseClass) + self.baseIncludeLabel.setEnabled(is_baseClass) + self.baseIncludeLineEdit.setEnabled(is_baseClass) + + if not is_baseClass: + self.baseIncludeLineEdit.clear() + elif QtCore.QRegularExpression('^Q[A-Z].*$').match(baseClass).hasMatch(): + self.baseIncludeLineEdit.setText('<' + baseClass + '>') + else: + self.baseIncludeLineEdit.setText('"' + baseClass.lower() + '.h"') + + +class OutputFilesPage(QtWidgets.QWizardPage): + def __init__(self, parent=None): + super(OutputFilesPage, self).__init__(parent) + + self.setTitle("Output Files") + self.setSubTitle("Specify where you want the wizard to put the " + "generated skeleton code.") + self.setPixmap(QtWidgets.QWizard.LogoPixmap, + QtGui.QPixmap(':/images/logo3.png')) + + outputDirLabel = QtWidgets.QLabel("&Output directory:") + self.outputDirLineEdit = QtWidgets.QLineEdit() + outputDirLabel.setBuddy(self.outputDirLineEdit) + + headerLabel = QtWidgets.QLabel("&Header file name:") + self.headerLineEdit = QtWidgets.QLineEdit() + headerLabel.setBuddy(self.headerLineEdit) + + implementationLabel = QtWidgets.QLabel("&Implementation file name:") + self.implementationLineEdit = QtWidgets.QLineEdit() + implementationLabel.setBuddy(self.implementationLineEdit) + + self.registerField('outputDir*', self.outputDirLineEdit) + self.registerField('header*', self.headerLineEdit) + self.registerField('implementation*', self.implementationLineEdit) + + layout = QtWidgets.QGridLayout() + layout.addWidget(outputDirLabel, 0, 0) + layout.addWidget(self.outputDirLineEdit, 0, 1) + layout.addWidget(headerLabel, 1, 0) + layout.addWidget(self.headerLineEdit, 1, 1) + layout.addWidget(implementationLabel, 2, 0) + layout.addWidget(self.implementationLineEdit, 2, 1) + self.setLayout(layout) + + def initializePage(self): + className = self.field('className') + self.headerLineEdit.setText(className.lower() + '.h') + self.implementationLineEdit.setText(className.lower() + '.cpp') + self.outputDirLineEdit.setText(QtCore.QDir.toNativeSeparators(QtCore.QDir.tempPath())) + + +class ConclusionPage(QtWidgets.QWizardPage): + def __init__(self, parent=None): + super(ConclusionPage, self).__init__(parent) + + self.setTitle("Conclusion") + self.setPixmap(QtWidgets.QWizard.WatermarkPixmap, + QtGui.QPixmap(':/images/watermark2.png')) + + self.label = QtWidgets.QLabel() + self.label.setWordWrap(True) + + layout = QtWidgets.QVBoxLayout() + layout.addWidget(self.label) + self.setLayout(layout) + + def initializePage(self): + finishText = self.wizard().buttonText(QtWidgets.QWizard.FinishButton) + finishText.replace('&', '') + self.label.setText("Click %s to generate the class skeleton." % finishText) + + +if __name__ == '__main__': + + import sys + + app = QtWidgets.QApplication(sys.argv) + wizard = ClassWizard() + wizard.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/classwizard.pyproject b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/classwizard.pyproject new file mode 100644 index 0000000..1c1fe99 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/classwizard.pyproject @@ -0,0 +1,4 @@ +{ + "files": ["classwizard.qrc", "classwizard.py", "classwizard_rc.py", + "classwizard_rc.pyc"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/classwizard.qrc b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/classwizard.qrc new file mode 100644 index 0000000..41a5ddc --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/classwizard.qrc @@ -0,0 +1,11 @@ + + + images/background.png + images/banner.png + images/logo1.png + images/logo2.png + images/logo3.png + images/watermark1.png + images/watermark2.png + + diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/classwizard_rc.py b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/classwizard_rc.py new file mode 100644 index 0000000..5540f6a --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/classwizard_rc.py @@ -0,0 +1,3892 @@ +# Resource object code (Python 3) +# Created by: object code +# Created by: The Resource Compiler for Qt version 5.15.2 +# WARNING! All changes made in this file will be lost! + +from PySide2 import QtCore + +qt_resource_data = b"\ +\x00\x00:@\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\xa8\x00\x00\x01w\x08\x03\x00\x00\x00\x06\x8a\xf0\xc8\ +\x00\x00\x02\xd9PLTE\xad\xac\xff\xc4\x90\xc4\xe2Z\ +c\xe6\xc1\xd5\xe9\x9c\xa7\xb8\xb6\xfe\xc8\xc6\xfe\xcb\xcb\xfe\ +\xbb\xbb\xff\xc0\xbe\xfe\xc3\xc3\xfe\xd2\xd2\xff\xd8\xd7\xff\xdc\ +\xdb\xfe\xb3\xb3\xfe\xe2\xe2\xfe\xb0\xae\xfe\xd0\xce\xfe\xeb\xeb\ +\xfe\xf3\xf3\xfe\xfc\xfb\xfe\xdd\x06\x08\xda\x22,\xdc\x0d\x12\ +\xb7\x8f\xd1\xe0\xde\xfe\xeaZZ\xdd\x09\x0b\xdd\x19\x1e\xfc\ +\xec\xec\xde\x00\x00\xf0\xef\xfd\xe1\x13\x13\xbf\xa1\xde\xbb\xb2\ +\xf4\xe3##\xe522\xe6::\xe6AB\xcc\xc3\xf4\ +\xe9SS\xdc\x14\x1a\xbd\x81\xbb\xecll\xedrr\xee\ +{{\xf2\x9b\x9b\xf2\xa2\xa2\xd2\x81\xa2\xf4\xac\xac\xf6\xb9\ +\xb9\xfa\xdb\xdb\xfa\xf5\xfa\xfb\xe2\xe2\xdd\x10\x15\xbd\xab\xeb\ +\xfd\xf2\xf3\xe4,,\xebcc\xf0\x8b\x8b\xf5\xcd\xd1\xd6\ ++<\xd8-;\xd8FX\xcaV{\xd9%1\xd94\ +C\xd9BR\xd9m\x83\xda\x1b%\xcau\x9e\xda1=\ +\xdaRd\xdb\x1a\x22\xdb\x85\x9d\xb2\xa9\xf5\xdc\xd3\xf5\xcc\ +i\x8d\xcc\x84\xad\xcc\x8b\xb4\xbb\xa3\xe3\xcdJi\xddP\ +^\xb7\xb0\xf7\xdf07\xcdZ{\xcd\xa1\xcd\xe2\x1a\x1a\ +\xceq\x94\xce\xc0\xef\xe4\xaa\xbd\xcf9T\xcf@[\xcf\ +\xba\xe7\xd0_~\xe8EE\xe8LL\xd0\xad\xd8\xe9o\ +t\xbe\x8a\xc3\xd1Vq\xea\xe6\xfb\xd2z\x9a\xc4\xab\xe3\ +\xd2\x89\xab\xecvx\xd2\xcb\xf7\xc5\x83\xb4\xee\x8f\x91\xef\ +\x81\x81\xf0\x84\x84\xf8\xcb\xcb\xd3D\x5c\xf1\x93\x93\xd3S\ +m\xd45I\xd4Kb\xd4i\x84\xf4\xe2\xe9\xf5\xb3\xb3\ +\xe0\x0b\x0b\xd4\xc2\xeb\xf6\xd8\xdc\xf7\xc3\xc3\xd5b{\xf9\ +\xd4\xd4\xc8\xbd\xf3\xd5\xa5\xc8\xd6'7\xbe\x9a\xd5\xd7I\ +]\xd4Zs\xca\x86\xb2\xcbt\x9b\xf8\xc5\xc5\xd69L\ +\xce\x80\xa6\xcba\x85\xcd\x9a\xc4\xdf\xa8\xc0\xd3\x9a\xbe\xcb\ +z\xa2\xe4y\x84\xd4Ng\xd5@T\xe6s|\xc4\xba\ +\xf4\xe6\xc6\xda\xe7jp\xe7\xb8\xc9\xc5f\x92\xe8^`\ +\xe8\x84\x8c\xc5s\xa1\xcd\x92\xbb\xb6\x9b\xe0\xcd\xb0\xde\xeb\ +\xad\xb7\xeb\xe2\xf4\xc5\x8a\xbb\xd7\xb5\xd8\xcd\xac\xda\xc5\xa0\ +\xd5\xed\xa3\xaa\xcd\xba\xea\xceUv\xc6\x5c\x86\xc8\x92\xc1\ +\xd9Ym\xf0\xac\xb1\xc8\xb3\xe8\xd9\x87\xa1\xf1\x9e\xa1\xc0\ +\xb6\xf4\xb9\x87\xc6\xf2\xbf\xc5\xda)5\xc2\x9b\xd3\xca\x5c\ +\x81\xf4\xe9\xf1\xd0m\x8d\xdbKZ\xd0\xa6\xd0\xcad\x8c\ +\xdc:F\xc2\xa2\xda\xde\x98\xaf\xd1\x8d\xb1\xd1\xc5\xf1\xb9\ +\xa6\xe9\xd2\xbb\xe5\xd2\x9d\xc2\xcc\xa5\xd2\xde\xb1\xcc\xd3t\ +\x92\xe1\x87\ +\xa7f\xd1\x13T\xa2\xca>>Y\x8cb\xf2\x80\x90\x19\ +\xba\xe2\x97O/\xff\xbd\xc5\xc5\x1f50\xdcc\x96*\ +f\xe2\xcf4\xeb\xa8\x8a\x9fz@\x18\xe6\x11L\xc4\xea\ +\x0b\x1f\x03g\x85\x15\x97|!4&\xc2\xea\xd8y\xeb\ +e{F\x8b\x8e\x0e+\xfd\x10\x0fq\xb2#\x8d\xe3Q\ +\xa1\x1eB\xb50]\xb4\xe7\xa1\xe4\x98\x94<\xbe\xc0D\ +\xefT\x050+\x01Yf\xee>\x7f\xfd\xa2\xd0\xcdM\ +\xe0\xa7\x04%\x14\xe2'\xdcS\xe0\xf2\x99\xa3\x8cP\xa0\ +\xe2-K(\xad\xf6\xc4Pg\xfb\x08\x12\xde\x9a\xb2r\ +\xf9S\x8b>\xad\x19\xa8\xa8Y\x8c>b)X\x12C\ +\xed!O\x0b\x5c\xf3{p\x19\xac\x80\x10C\xd1B,\ +Ig#\xd6\x972GaQR:j\x9f\xa7\xa7\x14\ +\xce\xd1\xfea*\xc2O\xaf\xf5\x9a\xa1\x05\xf2\x14\xf5\x13\ +m\x89)G[\xa2t\x84\xd9Y)\xc9+\x8e>}\ +\x96H\xffp\x87ov\xcb\x8e\xc3\xb6\x1e0_W\x19\ +\xa0\x19a\x9cP\x09\x1e9|\xb4\xa7&\xc5\xf7\x82\x15\ +\x90\xe2\x12\x8a0EI\xc5\xe6I\xf2\xb5\xc7Os\xb9\ + \x9f\xc3\xa6\xaa|\xfb\xe2\xe8\x1b5\x1a\xfd\xcf\x00\xe6\ +\xe6\x85A\xab2\xeaz\xe6\x9aM\xc3>\x02%\xb0\x88\ +6N\xef\xd8\xe6e\x0d5\x18\x1dG%(\x01\x80Q\ +\xb2\x0c\xaf\x5cY=F\xf8\x10;\xdf\xf8\xa5\xbb>7\ +5\x7f\xf4\xd4h\xb4\xaa\x8f,=\xdf\x02\xdd\xc3[\xb9G\xb3\x05\x09\xff^1\xa3\x91\xfd\x19\x9d\ +s#\x85yO\x1f~\xccr\x0a\x9b\xff\xf5x\xcb\x82\ ++\x87\xa50\x94\x0b:I\xd1{.\x1f\x82{\x0aJ\ +\xec\xf3\xa7\x82dc?\xcfa\xbd'\x98\xef8Z\x9b\ +\xc5\x8e\x1cyzFd1s\xff\x04\x1c\x05\x1e^x\ +\xcaYYv\xee\xaf\x8eZ\xef$\xb1s\xe0gwl\ +Gq\x98\x17\x97\x9ep\x09\x05\xac\x17[0\x93o\xdd\ +\xbf\xe8\x94T`\xe6\xf5\x0d#\xc6\xb1l\x19x\xf2>\ +\xad\xf6'FH/|\x0f\xf0t\xb9\xc3=?\xc5\xce\ +\xeb\xe0\xb0jg^r\xa7\xd7\xcf\xb6\x02\xcarw\x84\ +%\x1d'\xfc\xde\xe5\x7f\xbfc\xf7\xb0\xff\x1a\x0bd\xa1\ +G\x09\x09\xa8\xe8\xe1\x0e\xc2\xfe?_\x18\xf4\xaf\xff\xa9\ +\xfd|<\xc7 \xbfl L\x0e\xf0\x83\xca\xb3\ +\x88\x1e\xeef\xe0I)\xb9\xeb9G\xfa\x0a\x8b\xe3\xc1\ +\x16\xc0$\xba\xc2\x0an\xf6\x85a\xbfa`\x7f\xc0\x02\ +\xd8\xd2\xaa*\x84\x9a\xbf\xf1\x83[\xb6\xef\xb8\xf3\x91\x07\ +\x06\xfd\xf7\xfc\x0d\xb0{PZ:Y\xe1\xbcj\xf7\x00\ +\xfc=3\xb4\x8b\x0bRLA\xfd\xa1\xa0\xb5\xbe\xd0%\ +\xb2\xb5s\xb0\xbe\x007\xc9\xe6\xeb\xc7~zpa\xd0\ +\xc9\xf3\x1b\xcf<\xfd\xb5 \xec\xd9~U\x8a\xd7\xaf\xf2\ +\xdaeM{\x17!\xa0\x83\xea\xc3\xf9\x02s\xf2\xb6\x07\ +\x06\xad\xb2-@M\x0e\xda%cJ\xc5\xa3Q\x94\x07\ +i\x88\xc3\xcau\xdcc\xac\x90\x07\x06\xa5\x8f\xb5\xd12\ +\xcc<\xf3\x17\xcc\xa1\xf9!U\xa0\xce:\xff\xd5\x1c\x91\ +~\x1dl\xee\xc0\x10\xbc\xd3Y{\x16\xe7o;\xb8y\ +\xd3m;v\xef\xea\x14\x921\x8bAq\xf0\xf4\x92\x0e\ +\xbf\xc0\xb5\x1eU\x14\xa2g\xb8\xef\xb7@\xf6\xf5\x1cD\ +\x11\xff\x13_R\xb2\xdcY\xd4P&\xfb\x80\xf1\xe4\xd7\ +<\x01\x01\xe9\xad\xc78\xe3\xde\xdd\xcf\xc0\x91\xee\xbdd\ +a\x00\xf1\x17\x96q\xb9\x92\xdb\x05\xd9\x8b~\xa6E\xaf\ +\xa2\x12L\xebTu\xf4\xbb\xa8\xa4\xc0O\x96\xfe\xf7\x0c\ + \x9f\xeen\xb9\xfa\xe8\x09\xa0\x81'\xde\xf3\xba\xa7p\ +9\x18\xdd6\xcc3\x8b\x14\x88\xb7F\xb2\x92-^r\ +;J\xee\xe2J\x89NF\x5c\x1e\xfa\x9b\xbf\xff\xacN\ +\xeeF\xa4\xa4\x9e\x96^0\x85\x99\xcf\xec\xe6\xadw^\ +\x08J\xea*z/c\xe8\x8c\xb3\x99a\xed\x81\xb1\x96\ +\xc8QOIU\xe0lP+\xa0\xd1\x96\xd8\xc5O^\ +\xf0\xbe\x8b\x0d\xae\xed\x066\xc2d%\x05\x98Dk'\ +\xc1\xfdl\xde=\xec\xb4\x1a\xc5]\xe6{\xfd\xd0\x19\xd2\ +r\x8ds\xe5\x9d\xc3\x1e\xaeL\xeeAi\x03_\xe1\x9b\ +\xcd\x9e\xd7%\xf3\xf9Ry\xfd-\x9f<\xc6\x09\x0b`\ +\xf5\x84\xa3\xa0\xa4\xa3\x85\xc2\x07z\xba\x05\xb1\xea\x91a\ +\xc3\xe6JO\x80.\x1e|\xec\xba\xbdF\xf6\xd5\xbcD\ +\xa3\xa3u\x0f\xee\xea\xe7\x94\xddY\xc2\xdd\x06E\xac\xa5\ +\x13\xe4H\x85\xb4\xe8\x9b\x86\x97\x0f\x1f\xb7^\x99F\x83\ +\xac^<)!\xad\xcdm\x19:\xbf{`\xff\xa3\xfa\ +\x8dI\xc0e\xa3\xac\xd3\x0cWO7\xe6s\xd5\xea\xfd\ +\xfb\xd7\xdd\xbcuaW\xab\xa6\xea\x13p\x95D\x0f7\ +\x9b\x12\xe0\xa4]\x11z\xd2y}\xf3UAT\xbbu\ +\xc6O\x95\xd1\x93\x8a{\xba\xd1ej6z\xae\xce\x9c\ +\x12}|\xb4a\x84\x7f\xc3\xcd;\x87\xcdV\xa7\xd3\xea\ +\xe5T%\x13\xc1\x13G\xc1\x942\xcdR\x854\xad\xa3\ +\x88S\xe8\xc0\x120\x94=),\xf79\xd3\xbb :\ +\xbe\xbe\xce\xdfp\x03\xb0\x13i\xfdB\xcb\xba\xcf\xbc\x97\ +s-O(\xcb\xd8\xf0A?\xe1B\x94\x8c\xd3|\xcb\ +Z\x1f\xeb\xe8\x93\x0e\xe7\xfc\xcd[\x1f}a\xeb\x95P\ +o\x19\xfa\x1c}\x0c\x94\xb4'F\xff\x06\xa7\xc9_;\ +b\xca3\xef\xf5\x9bv\x0esH\x9b!\xabWH}\ +\xbb\xa7M\xc6Lk(\xd7G\xa3\xb5\x9e\xddho\x19\ +\x18\xd0\xd6\xe1\xd2L\xd3\xb8\xa8/\x1bT\xab\x86EA\ +\xf5\xdc\x1c\x95\xb4\xe9\xb1\xf4>m\xda[\xd6\xaf\xbb\xfb\ +q\x93}\xd4\x5c\xc6\xab\xecU\x97B\x82T\xf6\x982\ +eN,\xfa\x908e\xfaM\xf0#\x0b\x03\xfb]\x18\ +\xa4\xe7-\xeeytHi\x93^\xee\x89~\xbe\x07\x02\ +j\xc7\xca\x8d\xfb\x96\x8a~\xab\xa8\xad\xcd\xfbe\x9d@\ +\xf2X\xc6\xe7\xed0\xb5\x19*\xdb7\xdd\x08(\xc7\xf7\ +G\x1a\x18S;\x87\x16&\xacN\xb7\xbc\xef\x81]\xba\ +\x82\xef\x944_\xfe\xb2g&\xe7O\x82\xbd\xd0O\xfc\ +h\xd1\xe1\x5c\xb6\xf1\xb0a\xabv\x05\x9d\xaat\xafR\ +\xa0\x0a3\x19&`\xa3_^\x95\xba\xe8\xf0\xbb\x00\x18\ +I\xd7\xf0\xbf5g83;\xb4:\x80d?\xd4\xde\ +2(\xe9\xec\xbc\x83v[\x03\xd6\xa6'\xdf\xb6n\xcd\ +O\xae\xf9\xf8\xae\xa5&U\xcaJ\xfb\x01\x18\xe9\xf2L\ +\x8a\xb7AK\xf7\xab\xc5.\x85\xbct!\x17nX\xcb\ +w\x0c\xdc\xe62Raof\xe9\xbb\x9eeu\x04\x1d\ +@gZ\xb4:\xcdFO*zuI\xc2G\xb6*\ +\x8b\xf7wB3xH\xee\xba\x09B\xa0\xeaB.\xaa\ +\xe8\x9d\x1d\x17?)\xa4\x00\xf2\x86g\xe6uf\xb1\xb3\ +\x9f\xe3n\x98j\xd6\xb0FT\x0bJ\x8d\xb4$\xa0`\ +\xf3\x8c0\xf3\xc2Q\x00\xa9\xb2\xa60\xc2\x7f\x128\xda\ +\x81\x22>\xd1\xe5'=\xf6p\xcf\xc2\xfc\xdaH\xa1\x9c\ +\x9f\xdd:\xec\xf7 \xb1\xcf\x0b]#\xb3\xbfeE\x84\ + +VR\x14\xbd(@h\xf4\xdd k\x12\xa3\xa2\ +\xc2\xd3w`\xa5\xee\xcb\xb6H\xaf\xb8\xda\x18\xf5\x89\x1d\ +\xe3\xf0\xef\x1b\xc9\xc2=?\xbbe\xe7\xb0?\xd3\xe00\ +\x9f\x8bO\xf6&\xa0\x22w6%x\x891\xc1\x0d\xec\ +\xf4c\x12\xe5\x9d\xdai\xf7dE\xbbr\x094\xd4\x81\ +\xbdz\xbd\xc5\xb6\xafY\x14\xaf#y\x9f\x83 \x11%\ +<\xb5G\x95\x88\xbed\xb0\x0a*\xb9'\xe1\xa8\xc7T\ +\xde\xb9\x83\x8fqe\xc7?\x842L\x0b\xf9Y|\xf7\ +\xcbs\xb0\x00\x0c\x0d\xd0\xcb\x8d~\x1e\xff\xd6-;\x07\ +K\x9d\x06xQBJ\xdc\x14\xaap\xd7\x8e\xc0\xaaE\ +\x94\x8c\x09\xe0\x91\xd5\xc7\x1b\xf6\x91\x86Ns\x84\x0f\xfe\ +\xe9!([|\xff[\xbd\xc6w^u\x1c&\x18\x0f\ +\xbd0\xb4\xe6\xf4\xa17\x9ad\xb2\xd3\xc0\xfd\x86\x00\xa9\ +{J,\xe7aw\x0e\xa4u\xf0(\x0dE3\x02\xb8\ +\x98\x85\xa4q\xb6\x13V\x8fW\xe31\x0a*$6\x19\ +m\x1d6\xf5^\x83 \x05S\x8a8Z\xd6\xdc\xf8\xc0\ +\x18+\x96<\x00%\xd9;\x8efq<\xaa\xeb\x8e\xba\ +\xb1\x00^\xe7,\x06\xb4\xe6\xf1a\x8b J\xcdY\xb1\ +\xd4\xdbe\xc2\xce\x07D\x0b8\xb5\xc3\xa7\x95I\xb4\xd3\ +\x92J\xeb9\xc2\x8f;u\xfc\x12\xd9\xc7\x14\xcc\xd5\xdb\ +MiAsSeL\x96\x22~R7QM\x1a\x0a\ +8\xc5\x96\xd0\xdfg\xa2\xa6\xf1\x16#/N\xe3w\xee\ +>\xb9\x9fP\xae:h\xec\xbb\x09\x05\xbd\x90\xa7\x92\xd7\ +\xe3%0\x81*\xe4(\x1bS\x15YS\x96\xd1*\x0f\ +\xfce\xd1#\xdc\xe4n\x83\xceA\x9bo\xbe{\xe3\xc6\ +M\x07w\x98jR\x93:\xca\x98\x04\xa4\x92\xbd\x904\ +\xbe@\xed!\x82\x097\xb0Q\xaeR[\x93\x94t\x92\ +\xc6\xa4\xa853\x03\xc8\x99\x9b\x0d\xdah\xd2\xb2g\x94\ +\x9ap\xbb\xbe*EI\x85\x9f,{\xbd\xcc\x97Xx\ +\xf2\x9aJ\xe2\x1a~\x5c)\x91\xa0D\xc2<\xa1\x9a/\ +Y=\x0b\xf6\xf7hM\xd2\x9d\x17\xb6@\xf0K\xc1\x14\ +\xa2\x08?\x1d\x8f*\xac\x02So\x84\xe6\x82\x8f6\xeb\ +\xe1\xd2\xed\x8e(z\xba<\xca\xbc\x9e\xa2D\xbf#2\ +Q\xfd\xb4=\xff\x048\x83]P\x07S\xdaG\xf56\ +85B\x8c\x93zU\xd9\x07A\xd6\x9a\xa1\xa0\xa4m\ +\xe6h\x92\xc4\x87\xc6\x05\x88@K{\x08\xb70\x17H\ +_pR\xd7(w\x96\x08\xe2\xaab\xab\xb7\xdf,v\ +\xc2\x9c\xb1{*i\xed\x04\xbc!S\xc7\xafLz\x9f\ +\x09u\x94\xf7\xc2t;\x11\xf4\x8f2>\xe5\x9e*\xb8\ +J\x04j\x11\xeaN\xd76\xbe\xb3R\xf0e\x8a\x93\xa2\ +\xa4\x09jF\x9b\xa1\xb2{G\x85G\xd1Q{\xe7\xac\ +\xa9E\x91\x0aI\x80\x91\xc0a\x0f%\x1b{\x09\xcc\xa4\ +NR\x88L\x05*_\xd1\xe6\xcd4\xea\xa8\xaa:\x02\ +5\x02%\xad\xf1E\x1c\xe5\x1e\xe7BG\xf8\xd29\x9c\ +h\xca\x04\x80\xe0N\xa9@\x96\xb0y\xb5-\x12\x17r\ +\xd1u\xba\x08\x9f7\x1b\xe2\x1e\xe7:\xd6\xce\xdc\x13=\ +\xf7\x91Ql\x02\x97G\x80\xd2\x01\x0e1\xa2\xf0YI\ +5\xe9\x8d\x06xs\xda\xa4vli\x1b\x5cP\xc2C\ +puv\xc7b\xafk\x95/e(\xf1d\xa3\xeb\x04\ +\xde\x02RsTYSQ0O\x0dF\xf3\x08KE\ +Q-L\x81\xaaq\x026\x88L\x04d\x9djw,\ +\xd3._\xdc(\xfc&Z\xde\x84@\xea\xc8Ol\xd4\ +\x02\xddt\x0f^\x8e\xab\xa0\xa3\xd1\xb9\x060\xfd\x9a \ +FY(\x94\xc4\xa9\x92W\x0a;%\x9dO\xd5u\x02\ +[\xe2\xe6Q\x92}D\x0c\xb2\xce\xfd\x0e\x88\x92\x8c\xc9\ +WQx+\xb3\x07K\x027\x1a\xf7c3dB\x19\ +\xaf\xf5\xc0Ua\xa7\x18\xbc\x94\x1ft\xf7\xa0\xbct4\ +J\x1c\xc5d\x04\x81\xc6\x8b\xbdJ\xef\xe2E)\xf6\xa4\ +\xa1\xe8\x0b|\xa0N\x86\x15|\xc1I\xbf\x04\x98H\x15\ + \xd89U\xe2\xee\x85P7\xd5\xaa\xc4\xd2W\xebS\ +*]\x16\x12\x93Jr\xd4\xf7\xa7\xfc\xa1\xa1\x02\x91n\ +\xd61J\xf9HI\x1d\x10\xa63{\xcc\xed\xd8\xdd[\ +\x88\xa8\xa5\x88V\x88\xd7z\xf7&\xb2\xa0\xd1\xe8I\xde\ +t\x0a\x038+\xe82O\xec\xca7\x95~\xd7S\x8a\ +\xa1\xd3\xe1~=\x8b\x1f.\xe0\xac\x8eE\xc1\x99\xe2\x8a\ +$\xf6\xa4\xe2\x12\xdf\x8c\xea\xb4\xe0\xe1\x8a\xce\x08\x09P\ +\xe4g\xc8QE\xc4P\xca\x97\x84rVP\x8a\xf3\xc2\ +\xe4\x8e\xac^\xae\x04X\xc1\xe9p\xeb\xc5\x9e\x1d\xe9\xa1\ +\xdb\xdb\x85\x9f\xda\x960\x22\x09\xda\xdbE\x078\xb8\xa7\ +W*\xc2\xcf\xda^\xe8\x9c\x0eE\xe9\x15\x10\xad\xf4h\ +\xea\xa8\x9e\x80\x13\xff\x87\xa1\x86\x1f\x8f\xb2\x97\xd2\xbaZ\ +\xe2\x8bx\x89wP\x1a\x0f\xdcSIv\x1f\x83\x8d\x9a\ +\xb1\x05\xa7\xb8'\x87\x91 6$p\x16\xa4\xc2\xd2B\ +\xbbR\x11=\xacN\xc2L\xbd\x84\xea\xf5S<}\xd2\ +\x95N\x8b\xe8c=\xa5HO\xf5\x8eJ,*P5\ +N\x0fi\x85\xa2\xaf\xb5r\xf2\xaf\xc2{\xc8F\x9d\xc8\ +\x94P\xd6\xccQ\x9f\x1cR\x12{\x1afpH\xa8J\ +\xe4\xa0\x9e\xe0C\xb9\x13Oc\xa8\x0d\xedH{\x08\x17\ +\xfd\xa8@\xad\xa3e\x94o\x8d\x95q\x92\x13\xadb\xaf\ +\x9fTN\xd5\x8e\x1bS\xea\xf8EA\xbeT\x13\xb5e\ +2R\xfa\x12\x9cdM^rW{k\x91X\x13\xfb\ +\xfc\x90\xa5\x11\xa59\xeaL^N\x0b\xe1\xe5\x91\xc4\xa3\ +1/E\xf4\x08\x14\x9e\xf8\x80\x98hg\xe2\x00\xeb8\ +\x0acQ\xdf\xe3\x17r\xde\x92\x97N\xfc\xc0(/\xc2\ ++\xa2'\xf1\x87\x82G/\x9a\xce\xed\xd3R\x9f\xe6T\ +D\xa3\x05\x98\x12\x98h\xaa\x95\xf0\xe3EI^\x88\xb6\ +\xf2\xc5\xdf&\xac\xc4N~O\xa4\x81\x8e_\x99\xe4\xec\ +MOg\xf5\x124I^/Kh\xecE\xeb\x14K\ +\xdb\x1c\xe5'\xad\xe9\x10\x1c\x85[\x05%\xe8\x9f\xe0\x1d\ +\x87\xa3y\x8d\xa018\xd1:\xcaX+x\x02\x94\x0e\ +\x9f\xb2}q\xf8\x87\xe4hLdL1G\xc9\x90\x88\ +\xa7\xf0\x0e\xd9*\xc2\xaf\xf4Z/*\x10\x1bS\xda\xec\ +\xd3k=\xf3\x13\xcc\x1e\xef\x98(\xa9\x8b2\xd1\xb2\x14\ +\xa6\xf2\x86}\x1c\xe6\x89\xe0\x15\xcc\xd8\xe8\xd3~T\x83\ +%\xa4\xeeu\x8bW\xcc\x8b0\xeaBI)w*\x1a\ +\x95\xf3\xf5xK\xdc\xcc\xfe>\xbd\x17\x1aUr\xf5\x15\ +\x14\xc6Y?Q\x0d\x04\xafl\x83\xfbqS%X5\ +W\x05\xa6f\xea\xf8\xf3L\xc2N\xc1* u\xc6\x9c\ +\xf3R\x9f\x0aJ*\x08\x98\x08' V\x06\xc5b\xd7\ +\x09\x09\x92b)\xfc&\x0f\xb5\x08D\x85\x14P\x22\xd4\ +\x5cJz>\xcc \xbb+\xc9\xa28\xb9\xab\x12\xf1\xbd\ +\xc0\xa4\x97\xf2\xa5c\x8bdL\x92+\x93\xcb'\xe1\xcb\ +\x81+\xf0P\xb9d\xf6\x01\xd1\x22O\x1f\x1a$?*\ +t\x8ee\x1f\xbbT\xda\xb8\xd3:\xca\x87\x03\xd1\x90\x98\ +\x10\x1f\x97\x1e\x85\xa7`H\xc2\xd12&\x02\xa8\xa3\x91\ +8j\x86W\xca\xeay\x09-\x84\xab=\x8cH\xb41\ +I.O\xfe)\xd4Q\x0c\x9f\x88\xa7\xc2\xe0v`L\ +\xa1oJo\x8a\xa4\x83\x12\x01\x8b(\x1dC\xb7\xcd\x9f\ +|R\xa3\xc8\xd5\x091\x92:|\x855\xe7\xf4)[\ +\x119k\xa8\xe4\xccA@\x0a7\xe7#\xd3R\x1fM\ +\xa4\xcbT$[\xfb9\xbb\xcb\xfc\xc1Fx\xda\xb2\xe0\ +\x1d\xf0B/\xa1\xbc\xc5\xcc\xbb\xa0U\x00Xl>\xb4\ +z%\xf9v\xcc\xd1\xc8\x9c\x0a\x00\x0a\xce\xe9X\xb7\x1d\ +\xde\xc7B.\x9f\xb9#\xb4\xbe\x1b-\xf9\x06\xab\xc7\xae\ +\x0d\x0f)\xaf\xf3\x826\xb2\xfa4\xcei\x0eJ\x84z\ +\x00\x169\xfa\x8f\x8b\x96\xce\xdb\xdd\xc7\x14\x14\x80\xfa\xbb\ +\x22L\xc2N\xb1\xf68(\x01\xa0^\x8c\x1f\xc5yA\ +\xcfx;\x88\xf0\xe3h\x14\x9b\x89\xfe\xcd\xf2s\xd3\xbe\ +\xa5\x1e\xc0D\xd1sj\x1f\xc3\xac\x18,\xbcu;\x11\ +\x82D\x94\xfc\xa1\x84?\xd6?\x05\x82\xc7b\x0eo\x86\ +\x9dd\xb7\xc4wu\xa4\x88_\xa3I\xd5)7*\xce\ +^\xf8*lU\xc6\xa4\xf3\xfa\xd8\x96\x22\x8e\xb6|\x96\ +\x16\x08V6mm\xaf\xc1\xca\x81>\xba\x0c\x9a)\x0b\ +S\xa1\x22|x\xe8[:\xf3b\xeb\x97\xd0$aN\ +\xf0\x95\xce\xeb\xb5\xe8\x01d\xcf\xfa&\xab\xa2\xbb\x1b\xfe\ +\x12\xea\xa5M\xc0\xda \x17\xf1\xfd=J\x1fI\xe2\xa6\ +\xf1y=\x8b_\x9d\x0c\xe4cB\x1a&\x00\xc5T\xe4\ +jw\x84J\xf6\xeb\x83\xe8\x9e\xa9\x0c\xda\x89\xf0W\x82\ +\x12\xc1\xaa3\x91\xb4\x86&*\xce\xadV\xe0\x9e\xf4x\ +\xa2)\xdbB\xdcG\x98\xf0\xca\xe1\x85*\x9a\xee)\xa0\ +\x10_\x93\xb6y\xb8\xd3\x05\x9d\xf4\xbc\xa7\x98\xa46\xda\ +p]d+\x87\x80S\xf5\xe8X\xae&Iq\xb3N\ +T\xc5\x03\x96\x96A\x22\xe2~\xc2(\x8f: \xe2|\ +\x99\xe0\xfe@\x94\x14\x91:*8\xcdG\xc8\xa5.\x92\ +\x0aQA_b\x9208\x89\x1d\xber\xa3\xe9\x02D\ +\x11\x8c\xd0\x02\x8f\xbf\xb5\xa3\xfa\x9e\xdc\xb9\xabt\xe5\x01\ +\xb0bG\xd9\xd8\x15\x1f9\xaa\x1c\x14\xd9<\xde\xb1\x1f\ +\xb5*\x1a\xa4K\xea\x94\xed\x1e\xe8j-B\x96\xd2\x18\ +\x00A[\xaa(\x9f\xca\x0f\xda\x94\x10\xa0\xd8Q\xa9\x94\ +T\xb0\xb6c\x8e*\xa3\xd7\x11>|\xd8\xa0d\xdd@\ +\xb8\x89H\xbd\xa9T\x85@\xad\xb0CK\xf2&y\xda\ +q\x8c_\xa6\xa3<\x0dvZ8\x9a6&\xc7\xd0'\ +\xad\xd9\xcf\x0e\x91\x9fbN2\xb5@/\xa1%< \ +tnp\x1f\x9f0\x87\x86\xafX\x1aY}\x0b\x1f\x01\ +*\x11\xa9\xeb,\xdc>(\xc47\x01\xa1\x8e\x86\x8aZ\ +\x09D):V\xc9l\xb9\x8cMI\xe7\xa1\x01\xd6\xd4\ +\xd6\xb2\xa8\xe8\xd3#\x00:{=\x00en\xe2q`\ +\xf2\xfa\x9a\xd2\x85'_\xee)\x98\xb2\xce'\x19:\x0d\ +y}\x94\x87\x16\x04\xf7\x95s8\xa5\xc3\xf3O\xcc\xd4\ +\x90\x9db\xe8\xfc#\xad:\xa4\x9bHdF\xd1r\xcf\ +,\x8d7\xc4b\x12\xb0\xc5\x7f;\xa0S\xfb\xd8\x94\x04\ +d.\xf3\xd3\xf4\xa6\xad\x18{\xcc\xd4\xb6\x96|zp\ +^\xbc\x86*\x87\xdf,\x18\xa28\xd2\xf7}\xfc\x00\x9e\ +\x11!kB\xf1S\xef\xa8\x22\xe9\xc3\xaf\xb5\x0f\xadT\ +\xaa\x9c,>\x012B\xaa\xc5\xae\xf3z\xfe-\xd4^\ +h\xef[n\xb9\xa7E\x94\xdc\x13<*\x19\xad\xd0\x9a\ +X\xe2\x22\xf6\xa4g*#w\x8f\x97\xc3\x9bn~\x11\ +\x90\x8c\x92\xfbt\x8e\xc5\xe5>\xeau5\x97\xe6%\xde\ +\xe2\xf1\xe3:.\x82d\xc4!\xe9\x13\x18\xf1\xf8\x8ft\ +y\xd4q\x15\x97{\x030n\xc5\xd6\x06%9\x88T\ + \xd3.T\xf3SH-J\x11G#\x88dL\xae\ +\xf2\xf4\x15w\xac\x8d&\xaah\xacQD\xaa\xf6\xc3\xd2\ +-Z\x0a\xb3\x80e\xa1'\x9ar\xa7\x13~\xb4Ge\ +\x1d\xae\x8f\xedA%\x05\xe2\x11\x10E\xbc\x11^U\x15\ +>\xd8_\x10((\x1f\x18\x80\x83W\xf8(v\xa6\xe3\ +Q\x89\xf0\x9b\xd2\x98\xc9\xfbL\xe6\x17\x93QP\xd2]\ +4w\xd4\xfe\x00\xce1\xed\xed\x95\x01\x08\x0f\xad\xf5\x95\ +\x9a\xa0%~\x89\xe6\xe6iv*=U\xee\x89-\xde\ +\x81\xf4Z5\x80PIG;\x1b~\x83\x1e\x1b;C\ +-\xcb\xa8\x15\x1f\xdeu\xb8\x0f\xae|i\x16j(\xbd\ +\xe2\xf9\xa3\xa11\xe9\xe0\x09\xa4\xff=8\xae\xf8\xca\xf7\ +\x17\x82\x93Cf\x04[\xe9lDi\xa9j*\xd1y\ +St\x8eU\xc7\xa3q\xffhj\x9f\xc9\xdehN8\ +\xeba\xcfw\x84\x9d\xbc\xd5\x14\xee4E\xbbLq\xda\ +4.\xcaS!\x1e~\xa4\xfdhA\x0c\x15\xb8`O\ +7-\xe2\x01\xc0\x0eg \xb2\xdb\x90'\x12\xbc\xd8\x8f\ +\xb2\xa5\x8b\x92\x86k\xfd\x84\x02+\xa47\x1b\xd2\xdb\xf6\ +T\x1a\x7f\xcc\x01\xbdy\x00\xc2\x0f\xba\xf3\x94n\x0a[\ +K\xd2\xd4\x80\xb07\x8f\x8e\xb3\xfd\xba\xf1h3\xa1\xa0\ +\xe2\xa2x6\x11\x9cyX\xbd\xbb\x0fV\x0f(\x99\x99\ +\x9a\xa5\xf1&\xa3@\x95\xeaC\x86\xef,S\xec\x1c\x1b\ +\x8fN\xf3\x86\x98\xc0\x0c\x92;n{\xfb\xe7?:l\ +\xd0\x07\x86\xb2\xf85L\x01\x18\xe6\xcaq\xa9$\xcdP\ +\xd9\x0f9\xd4t\x22\x81\x9b\xdef\xa2\xf2xT#\x8b\ +\xcdi\xfc\x1cg\xf7\xc2\xf3\xcb1\x8d\x8fG\xd5\x06\x0e\ +q\xd27\xfc\x9en{\xd2\x00\x8bx\xdb\x96d\xae\x0d\ +Jbf9\xff\x1f\x99\xbd\xeax\x8c\xfbGc\xe21\ +J\x8a\xa7\xb2s';c\x22~N\xe5%\x8eJ\xda\ +\xbdpTw;\xea\xcax\xba-S\x8fL\xf4\xb6k\ +\xb1}\x98\xa8\x06|\xaa\x0f\x1f_z\xe84\xa2\xc4w\ +\xe5\xc5\xf6\x19<\x08\x94mI\x80\x8e\x8fG\xc3\xce\xe1\ +\x82\x9br\xa9KK\xb15W\xebR\x11\x04%x\xe4\ +\x8a\xa2\xbd\xa8@\x8aS \xc0Ae\xeeV\x91\xf3\xf8\ +\x99\xe8A\xed\xa9\x90^\x22\xb7\xd5\xe4q\xb4\x96\xd8\xa9\ +fs\xf2O2\x96\x12\x92\xaa\xc1\xe8U2\x0b5\x10\ +\x11\xa7\x0f\xd5sK\xc4\xd3\xe9t\xb5\x0d\x8e\x97\x82*\x91\xb3>\xc9\x86V/\ +wj\xf9\x14\xb41\xb5y\xe60\xcd\xf2U\xe7\xd6\xbb\ +\x80\xb2\x0b4\xbe\xe5-\x91\xdb\xab\x09\xa4\xb9\xbfs\x07\ +O\xc8\xd4`\x82\xb3p6l\xd2\xe2Y\xbe\xf6F\x94\ +H0\xa1\xc4\xe0\x0c\xe3\xbc\xa6\xee\xd2a\xff\xc9 \x1b\ +z\x847\x0a\x9f&d'Y\xea\xa0\x92\x8e*\xc1g\ +e\xcd\xc1\x93\xa7\x9f\ +@\xb2.\xd1\x14\xef\xee;\x8f\xde\xb8}a\xd01\x9f\ +\xf1h\x05\x0d\x936m\x81\x95z@2/L\xbc\x82\ +\x0aT\x9d\x92\x00\xbe\xb0@\xc6\x0e\x0a\xe8\xd4k\x8f\xba\ +6\x8c\xf2\x00k3\xcf\x92\x87\xac5R*<\xf4\x0a\ +\x16\xbbn'\x92C\x18\xda7U^\xfeA\x0e*\xdc\ +\x0ce\xa0\xe7n8\xff\x1fL\x95\xf8'3\x08R\xd6\ +\xa66{{]q\xd6\xee\x9ef;\xf2\xf4\x0f\xe5\xee\ +\xd1\x96\x08\xac\xee\x22\xd3\xbd\x1a\x08R\x9f\xbcb\xfd\xdc\ +p\xefh\x84\xc3\xaf<\xabww\xd7\xca|\xc3\x17\x0e\ +?\xbbT\xa2oic*\x88\xa1\x05^\xc2\xd2\x9c\xa7\ +\xf9\xca91@\x1c\x9eg*i\xe6O\x5c%A\xa8\ +\xbf-3\x11\x16\xca\x8c[ \x1c7O\xddp\xd4\xe1\ +#\xa8t\x0aC\xdf\xc9\x8d\x05\xe1\xf04\x22mJ \ +yuxYSE'Bi\x8a{\x5c\xcb\x03\xab\xbf\ +k\x91\xe9\xc1\x86\x96}\xf7\x0b<\xc4\xeb/\xcb\xb8#\ +W[\x93\x93\xbc\xb0\x15\x89L\x09\xde\x14\x94\x84X\x01\ +\xe8\xb8\x92\x0e\x99\xfd_\xb9\xe9\xb8s\xe6\xbd\xb1\xe3\xa3\ +\xecv\x7f\xe6\x0d\xf0\xeau\xe3\xf1\xc8*n&\x05\x05\ +\xa4\xb1\xe8E\xe6E\x98\x89\x94\xfa\xc8\x00,\xa5\x02R\ +\xbc\xe8\xad\xaf\xb9}\xc7\xbe\xc1\xb1\xa0\xa4\x8a\xa3\x13\xa2\ +\x15\x8b\x07:\x8cr|\x0d?\x15\x96\x00P\xbc\xf3\xc4\ +\xe10\xe9{\xc3)%\xf0\x1b\x85$\xf0TE\x9ee\ +_\x85\x11\x9c\xda\x9aN\xb5\x03\x18Wo^m\xde\x93\ +\xa2\xa4\xf1x\xe4\xa2`\xa4x+\xd1Ku\xbc\x8e\x04\ +\x0f\xf8\xc0\xa2\x90\xcaOo\xd8\x80}:\x82\xd3\xde\x14\ +\xe6\xfd\x0e(i\xcf\x83\xd95H/8\xec\x8bK\xad\ +\x8b\xacn\xec\xce\x14G\xd3\xe5\xfb\x18f\xa16\x9a\xd8\ +\x9e\x94\x83*+\xda\xbc\xa96\x5cal\x17fwW\ +:\xb5\x93\xa5\xfe\x5cT\xd2L\x8d\xff\x98\xb0\xdf\xd3\xa0\ +\xa4\x85\xe2\xa804LG\x10*\xa3\xcdUcA.\ +\x1c\xd53\x92-=}\xb4\x9d\x016\x1a\xed\xab\x83a\ +\x15~@\x92\xdd\x0b3\xb9\xa2\xf1i]CS\xa1\x92\ +j\x8c\x85\xdc2\x85\xb2\xe7\xf3S\x80\x06\xc92\x1f`\ +\x05\xa4\x97\xd1\xd8\xdc\x86\x8f\x13c'F\xfar\xa7\xa4\ +\x99r\xf8\xf0t/\x85>&\xd5\x01\x91LF\xa8\xee\ +\xa8U\x14X*:\x0aH\x99\x9bp\x13G\xef\xc3\xa9\ +\xc3\xaf\xef(\x97\x1f\xccG\xbe\x16\xb6\xae\xc9\x93\xca\xe4\ +\x17\x03\xf4-\xb0g\x94)\x8e\xa6\xcbd\xc4P\xae<\ +\x22R\xad\xa3\xb9\xea\xc4\x16CZ1\xb987\x85\x03\ +g+\x07r\xc5\x0agL\xa8\xa4\x107[%\xbdf\ +F\x80\xf2\x907QR\xed\xf0\x95j\x8a\xd5\xa7\xdc\x13\ +\xf0\x94t\x14\xb54\x97\xe3\x96xU+N[z=\ +\xcc\x8b\xca\x0d\xc8\xff\xfd\x8f\xc9\xf5Fc\x8f=aE\ +\x99P\xd2%\xc8D\xbb]\x1eP\x04aI\xa8\xa4\x02\ +Skj\xaaF\xa6\x9a\x1fdk\xb9\xd0\xe7\xd6yD\ +\xee{GNI\xffkR&\x10\xff\x89u\xfd\x02\xf5\ +\xe5n\xb9g\x86\xe2=a\x80\x1a%\x1dM\x0e&>\ +\xf3\x91{\xa7\xe6\x8eY\x11\x0eJ\x05xR{\x12\xc1\ +KO\x09\x22\xd5}:\xc2Q\x91~\xbd\x02f\xabv\ +,\x18\xa1\xd7\x03PBz\xed\xc8*iO\x1b\x93\xd1\ +SR\xd2+\xb1_`s\x09\x1c\xc5\x08\x8aHJ\x0f\ +R\xc5\x07b\xb8\x1c<\xeb\xe2x\xc5\xa3?*\x1e9\ +\xbe\xfaM\xc1l\xd7sjQQ\xe7I7u\xb4\xcb\ +\x87\x22\xc9g s\x92\xa1\xdc\x13\x89\xdeQ\xd6Q\xc5\ +R\xd5T\x02n\x1e\xf5T\xac\x1e\xed\x9e\x07}\xc9(\ +\xe4\xb9uwl\xd9z`\x19\xb8\x82O\xe5\xa5\xa4v\ +\xbf\x90\xe5\xbeKP'\xa6?bbj\x9fV>r\ +\xbd\xf3\xa3qC\x11|D\x89\x08M*\x81\x07\xf3\x10\ +\x86\xfa\x06t\xf8{\x9f\xbb\xee:TR\xc2i\x86\xd3\ +\xb6\x8a\xba\x5c{\x0e\xc4\xca}\x96\xbcSRY\xeeA\ +A\x7f\xf5\x94\x96\xc1\xaa\x8d\x97,\xb5\xda\x108\xc7]\ +\x84\xe1\xc0i\xed\x9f\xc0\xd7\x03\xd2\xa8Uc\xc3\x87\x8f\ +6L\x9b\xdbU\xc3Z\x8fc\xec\xb6\x0c\xd1\xedg\xf7\ +\xc1\xea\x9e\xa3\xe8K\xf2\xa4=\xe4'\x5c$s\xc8E\ +m\x9a\xd7\xa2\xbe\xa7\xa6gO\x85\x84O\xa4\xa31O\ +\x81\xab*\xb3C\xb8\x9f~\x0a\xa1\xdd\xd9\x03\x96\x1e\x01\ +87\x01NX\x99\xf6Z\x91\xae\xe9x9=.\xf7\ +\xdd\x0d/\xbf\xec\xd2\x0d\xb0\x80\x9eM\x9c\xdc\xf4\xa0\x9d\ +\xbbM\x8b\xd3\x98R\x1e\xfd\xc6\x1c5\xa0\x98\xa3\x05I\ +\xbe\xda\xb0\xd7\x02}\xd9\x08\x81\x1e\x9c\xa9JV\xd2\xdd\ +\x1d\x09\x9f\xee\xb1\x9d4C\x1e\x96\xda\xce\xac\x92N\xbe\ +\xedp\xd0\xc9\xa9\x7f\xb7HO\x9d4\xea\xb1\xd1\x80l\ +\x15\xedx\x1b\x7f\xbe\ +\x9b\xf7|\xc7\xd0\x85z\x1b>\xf8\xd9}\xfdNQ\xea\ +\x02\xa9\xcb\x9c 0\xd5P\xc5\x94\xb4\xf8\x03\x1d\xbd\xfc\ +\xfeI\x8bn\x13\x951\xf6 \xd2\xd9\x86\xed\xd6\xd8&\ +Jj\xa0\xee\x05%mU\x86x\xb9\x1f\xb1yo\x1c\ +\xb62G\x86\xc9\xfe\xc0\xcc.*\xa8\xa3d\x07D\x9c\ +\xd4sD\x8a\xb4v\xd2\x0f\x11n\x7f|\xd7\xe0=o\ +\xfe!\x00x\xc4\xfa\xfcO$\x95\xd4P\xf9\xdcb@\ +\x07\x863<\xbb\x9f\x07\x93e\xac\x9e\xbc\x17\x9a\xee$\ +k\x0aNe\xf9\x05\xe9\xe8\x05\x9e#\xb9}\xd8o\xe5\ +\x96\x8e\x03\xe1\xcfX\xa4\xc7\x83\x92\x82\xd9\xe7U9\x09\ +\x9e\xd4\xc0\xfc\xfc]#\x0ds\xfe\x8ea\x87\x0b\xb8\xe1\ +\x0coD\x8b\x08\xe3\xde\xbcV(v\xb9\x00\xa8\xbd\xd6\ +\x1e\xcd8\xef\x1e\xce\xe4H_\x83*\x81\x05JJZ\ +\xd9\xeb\x0a`\xf5\xe6\x1b\xbeN\x7f\x8d\xe9\xa1\xd58\x7f\ +\xd3\xce\x00\xa6\x94\xa9\x1c7\xd6\xd3^\xddxx\x7fX\ +\x19/\xf4\x81\x01\xa2\xcb\xcfy\xd3\xed\xae\xa09\xec\xc8\ +_Bp\x07I\x8c\x96\xbe\xda~\x1d\xd6\x03\x9c\x1f%\ +.^\xf8}\xd4\xcf\x87\xf6\x9d\xf6\xee\xdb\xb6?\xfa\xc0\ +\xb0SdD\x96\x95\xc0P\x01\x0a\x0f%$\xd1\x96\x18\ +\x80l\xc5~4\xcaE\x9a-\xd0\xd3O\x0de\x00\xe9\ +\x13\xa0\x09}R\xd2u\x1d\xbbos\xc2\xbc\x94\xe3\xce\ +\x81\xa2\xdd\xcd;v\x15e\x96\xd7T\xd0)K\xa7\xa3\ +j\xfa,\xf1\x14)\xde\x06Ow\x91\xe1\x1c\x15\x9d\x86\ +>\x03\x15\x85~\xceTCP\xdc\xb7\xb2\x7f\x1d \xbd\ +\xe9\x8c\xfb\x09&t\xc9\xfd\xcb\x0f\xb6\xec0.\xa8Q\ +\xa3\xbf\xf7J%$\xf5\x0c\x7f\xd9\x93\x22Kc\x1dm\ +y\xc9\xb2\xb6\xfc0(9\x05\x80v\xa4%\xf7\x9b\xa0\ +\xb3\x00\xf4\xc7*s\xb8\xdb\xc2\xbc\xca\x0c\x7f\xaf\xf2<\ +\x18\x94J$GZDM'\x88\xa5\x13)\xf7\xa4\xfb\ +\x89\xc6\xc7\xa3f\xaa<\xb8\xc1\x19\x89\x9e\x8e\x00c\xea\ +\xd4\x96^\x14\x9cS\x8f?p\xc4fS\xfe\x9c\xd1m\ +\x99\x99\x7f\xc9\x9f\xeb\x10\x1dE\xacpu\x0f\x1d\x94\x14\ +*\xb1W\x7f|\xd7\x8au\xee\x11.<\x1eiQ\xfd\ +\xe7\xae\x9ek}\xf9\x18\xc5B\xf3;\x86y\xddl$\ +k\xe3\xd1\x9f\xb0/\xc7\xcd\x1fMo\xdf\x8c=\xb6\xae\ +\x07\xe2C\xc6\xb3\xfe\x92\x1c\xe8\x1d'\x02\xac\xcf\x0ej\ +\xa4\x9b\xd6\xb6\xedK\xcf\xe2R5;h\ +\xd5L\xa7\x99\xb9\xd4K\x9d\xc2\x95\xf1\xd3'\xacCF\ +fc\x1b\xb4\xa2\xf6\xf6\x06\x99S,\xffp\xd2\xd7\xbb\ +\x9c1\x8f\xfc\x05\xb1\x13\x96\x9c+\xda\x08\xaf\xeat\xa3\ +\xab\xcf\xd9,:o\xc9W\xba\xa7$\x92|\xd8T\xd2\ +\x80\x18\xefx\xc4'\x01F'*=\x01X\xfa\xab\xe0\ +\xf6C\x13\xfa\xcf,q\xe4\xeeP\xf3G\xc5=\x05y\ +H\xbce\x0fJJ\x0c\x1d\xcd\x1efV)\xcdN\xc0\ +*\xfai\x91\x0a\xd4L\xba\xdb\xb3\x8c`\xfe?\xe6\x8f\ +\xaa\xb2\x93\x7f\xb1/e\xa0\xa0\xa4w\xbe{\xe3\xca\x95\ +\xab\xd7\xdd\xbe0\x9c\xe1:\xa9\xae9;\x91\xcb\xb0q\ +\xbd\x85c\xc1\xa2{J\xd9\xfc\xb8^|\xa9>h\x0d\ +E\xa4z26(\xe9\xdd\x9d\xbc\xd1\xe9wf\x1a\xc1\ +\xbc\xe9*\x9a>ko\xe9}Q#\xbc\xc5\xee\x7f\xfd\ +\xf9\xa3\x96Z\x0a\xa5b\xa9 \xad\x9d'\x9d\xf5\x17Q\ +\x9f*,\xe5\x12\xc9f}\xdcD\x8a\x5c\xcd\x12\x83\xa9\ +\xa4-3\x0c\xf30rN\xfbQE\xf53&\xd1\xd9\ +3,\xb8\xfe\x10\x9e\xaf\xafb\xa4\x95\xc6\xa8\x8e\x08e\ +\x8995\xda\xdd\xeb)o\xcd\xf46S\x02\xe96k\ +I\x7f\xdb\x90\xbc><\x80\x810ev{\xd2\xec\x05\ +j<\x22UK>\xfe+\x18a\xb1$m\xfa\xcb-\ +\xd0-\x1d\x84\xa9\xaa\xce\xfc\x87%4KE\xf2\xd8:\ +\xe8\x9dcU\xf3\x9e\xb4\xed\x87\xb2\x8f9J\xf8\xd8\x8e\ +\xf4\xd4\xe1y\xc89^\xf5\xbbW\xdc\x94\xe7\xaa<\xca\ +\xc2\xb7T\x0bW\xd3\xc7W\xe5\xe0\x95f)_\xe3\xfd\ +h2gjDJj=\xe9\x9c\xcd(G\x97\x80\xe4\ +s\x0f$\xf2\x95Q\x8a\xc7\x97M&\xb6z\xff\xef\xdf\ +\xc4\xcd\x8e\x81=\xa5G+D\x03\x7f\x04\xec\x13\xdbd\ +m\x9a\xed\xa7\x8e3Eb\xd7'\x9a2\xf6\xa5lN\ +\x91\xdd\x8f\x9f\xed\xa8\xa2\xd1\xa8\xddQ\xb0\xd6\xf5\xd4h\ +\xe4%y\xa93w%\xfeE!\x0dVO\xf3\xf5T\ +4\xd3\xf3G\xf5!\x0c}\x9e)\xb2%\xbd\xdd\xa0j\ +d\xcfs@2Z\xb3}8C8\x8b\xc4\x80\xbf\x0a\ +\xa7\xb8\x07m\x99\xed\xd0G\xbd\xe4\xfc\xd1C\x8e\xfaJ\ +\xebgn\xb2\xfb\xd1\x08\xaaZ;\x16\x06\xd7\xf7\xf2\xe8\ +(\x9b4:\xa2n\x02GC\x12\xa4@\xbf\xee\xfcQ\ +\xd8d\x8a\xfb\xf0\xc9C1Ks{\xddt\xe4\xbaM\ +&\xc7\xe8\xcb\xdf\xe7\xfa\xbf\xca\xce\xddU\xb2\xac\x0a\xe3\ +\xbe\xea\x81\x9f\xb9\xbe|\xfb\xf6i\ +\x8e\x86I\x1c\x05\xd4Wk@\xf8\x8b\xb8y\xd6\xd7^\ +\xe1\x8f\x12\xd7\xf3\xc4NW\xf14\x8d\x8a\x5cv2\xe3\ +\xec2\x14\xbe\xce\x9d\xc3\xc0k\xdas\xa7c\x97J=\ +\xd4\xf8\xa3A\x92\x14\x85\x96X\x15\x11\xc8y\x12\xa5\xf6\ +\xc0\x84\xaei\xb0ehM0\x8f\xddKb\ +\x9d\xa5\x9c\xb1n$\xd7\xa7k\x9dX\xce\xd9\x82\xd2t\ +\xf4'xy\xb5\xd2O\x8bM\xdd2q\x0eC|d\ +\xb4\x9c1j\xe8\x91\xf2\x91\xd4\xe3\xe4\xfb\xc7\x19j9\ +\x1d\xce\x82\xbb\xad\x17uYEa8\xf0\xe0\x98\x9e\x8a\ +\x98\x0f\x0b\x86oj\x8e\xa2\xbb]t\xc6\xfc\xc3e\x98\ +\x170\x96Z[\x09\x9a\x86E\xa5\xc8\xb4\x111\x0c\xde\ +\x01,\xb5&T\x1c\xf5\xb3\x9f\x93\xd6\x8f\xdd\xc3\xa2q\ +\xce\x87\xcf\xc7\x85)\xbay\xa2n\x87\x88\xff\xff@\xcf\ +\x92\xa1\xe2\xa4\x84\xdf\x1f\x0d\x87a-W\xf2G\xf2\x1e\ +\x04\x22\xbaf\xf0\xf6$M\x84\xa3\xa2z\x82\x0d\x15G\ +\x01C9\xe7\xe5\x5c@\xff\xc8\x92\x8f\x87\xe0\xed\xba\xa1\ +\xcf\x06\x8f\x9c\xb0g\x85\x8f\xdb\x7f72\x8fI\x8f\x8a\ +\xd2a\xf7\xb0\xa2e\xc1dn\xdc\xc5\xa0%p\x9c1\ +r7\x1ee+\xa6\x18mg\x07\xcd\xa7\x1f\xfd\xdc\xa6\ +\x1d\x9dMt\xaeF\x22`\xde\x00\x00\x11y\x9a\xe3%\ +\xc6L\xbe\xb8>6:R\x8d\xba~\x1a\xe2\xe6\xad\xd6\ +Jv~u\xa9\x82\xa9'P\xaa\xfee\x14\x8e\x13z\ +X\x0dn\x01\x93\xc84\xa1\xcfM\x846\xc5\xa8\xe6'\ +9P\xfd\xe3ns\x95\x7f\xc8`\xa9\xcc\x93\x10B\x8b\ +\xeb:f\xbd3\xa4\xab4\xa8\x9b\xd0\xd6I\xdd\xabQ\ +?\xf6\xed\xcf\xfb\xf1/(K\x05\x84\x92\x18[-6\ +\xa5\xcc\xd3\x84j\xe6\xae\xa3\xbe\xcc\xb6\x87\x11\xf9\xbc\x04\ +\xa2\x04f\x8a\x8f\xf1\x93\x9eg\xc3\xcd\xbb\x94]*:\ +3\x9b\x06\x04\x030\x15\x12z\xf2D\x8d\x9bu&\x9f\ + J:\xf6\xf8C\xf5\x94\x9ed\xe5/\xf3&\x84\xd6\ +\x8f_\x93w\xda\x1c\x19\xb2\xa3M\xa7\xcf\x11F\xfdE\ +\x86\x22\x0a\xd57\x07w7\xd5\xba\x0e\x89|\x9c\xb9\xd3\ +\xa3\x9b\xa97-g[\x0c\xe5-\xce/\xc3\xd4\x8b\xbc\ +:\x0a-\xb6\x04\xa7\x15=\x9e/A\x17\xbe\xff\x13[\ +\xf9\x88S\x03\x99\xcf\xbe\xa8C})O\x92WI!\ +A:*\xdd\x043\x8fMw-\xaf\x91\x9a\x87p:\ +t\x9b\xf5t\xd2\xdc\x85\x1e\xca\xd2`\xbc\xbe\xc4\xc3\xd7\ +\x0c\xa3\x87\xcc\xde\xdf\x1e\x81\xd1G\xbct\x81\x0a5\x11\ +\xf0\xb5^\x7f\x12$\xca^\xe5\xf4M\xa85\xc5\x99P\ +\xfd\xf8H\x8b\x1a\xc7\xa7\x9cv\xf2\x08\x14\x04&\xb6\xba\ +\xc5\x87\xb1G\x8cG<|\xd9y\xf3\x9d0(d\x18\ +\xdem\xca0%\x04\x01\x91\x83\xbf\xaei,\xd8\xeei\ +\xa2\x92c\xeb5\x1e\xfe%\x86\xc1\xa5\xa5\xb2\xa1o>\ +\x1c\x98Wse\xf4~c\xa8\x11I\xc7\x99\x00\x10\x22\ +5\xe9\xd3\x9br\xe3\x95\xd0\x15.\x153agd\xb3\ +\xa5gP\xf8!\x06\xa5\x97\x87d\x9e\xf4\x14\x00U\xe0\ +:\x0d\xf1\xf0\xf3\x9c\x10\xb6\x09\xb5\x16oi#\xfa\xb0\ +R\xf8\x1a\xbc\xc2\x93r\xf8,\x89\xd95\xa5e*\xba\ +\x08\xb9Ud\xd27\x0aR\xf6H\x17\xc7{Z\x85\xf7\ +\x04\xe3t\x91m>\xcf~h?o\xd0\x9bgZ\x14\ +\xa5\xbb\x84\xa14M\xb8\xa3\xf9\xf8\x97\x0a\xefI\xb2$\ +b\xc7\xb5\xd0\xb1\x1eU\x1a\x175\x11o\xd5p\x1a\x13\ +\xdc|\x9b\xc1\xd1\x12\xefI\xc4e\x04-\xc2\x94\xf8\x1f\ +\x8d(\xb3\x8e\x8c\xeb\xb1F\xcc\x912\xe7\x12\xda\xd1\x7f\ +(\xf7\xb1z\xc7\xbc8\xd5h\x8dX bq\xf06\ +\x0c,\xf4\x97\xf0\xb8\xac\x1b\xb5\xdc{\xc3\x12#a\xfb\ +\x81?Y\xe0\xe1\xcfsY\xb2\x8d\x147a,`[\ +\xa8\xb3\xb4\xae\x83\xba\x81\x22\x92\x8e\xe7\x9d\x89\x91Kv\ +\xe6\x0b\x90Yj|\xa5\xef\xec\xed\x0f2\xfb\x9c\xaf\xf7\ +*#Y\xeaZ4RY\x03S\x01&7\x90\x9a\xa4\ +\x9e\xab%Db\xfc[M\x96R\xd3\x93G\xcc\xa7\xaf\x9b*z\xf7~\xec\ + Wz\xb4\xde}\xc3\xdc\xd3\xd1\xd4(!jj,\ +\x9d3q\xb1rK\xae\x8a\xa1\xd8d\xfd6\xe7\xa8}\ +P\xb4E$b\xd2\x0f\x8e\xb6\x04\xef\x98\x1b\x9fD\x9f\ +#\xd2)\xf5\xc8E\x9c\xe2*\xf3\x8du\x83\x16\x92\xa3\ +I\xecG\xf9\xf1\xe0.\x03\x13]\x12\xbf\xaeK\x81\x91\ +\xea\xae^\x115E\x97\x84\x96\xc9\x1c\xd2\xa8\xe8\xf3\x1d\ +\xa5\x8a\x02z\xfb\xe2\xc4\xea\xdb\x92\xad\xbf\xb0\x9aH\xb1\ +\xd5\x96{M\x89\x87O\xc1\xf7\xdcc4\xf2\xa2R1\ +\x13\x8f]/\xe6\xf3\x12\xb5\xb1\xe7-\xb5=9\x95\xe3\ +\x94\x0e\xd4h`\xed\x11q=\xe0\xfd&d \xf4\xb2\ +\x95\x91tI\xa3\xa5_\x90\xc5\xa7\xe8\x1b\x1e>\xc5\x09\ +\xc2\xa4\xaf;%J\x91E\xa7\xc49\xba:\x863a\ +\xbc\xb1\xcd\x1aq=\xa4\x89$F\x90\x5c\xa2\xa5\xb6\x94\ +\xd2\x11\x91\xd0\xa5\xbeq\x9d[\x9a\x9c\xa34\xf3\xbc\x9f\ +\x84LL\xdd\xe3\xfa\xc6HD\x1b\xac\x0d\xddO%&\ +c\xa8[OG\xcd#|{VM\x14\xa8\xa4P\xfd\ +au\x99x\xf8\xd5\x96\xe0\xfe\x07'/\x06wc+\ +\x9aj\x22\x5cik\xf24\xdc\xb6\x0e\xb7\x84\xce=C\ +\x12\xd9\xa5(\xf7\xdcg\xdc\x82(e\xfd\xc4\xd0.m\ +\xb8\xd4/\x12\x10\x84\xc2\x07\xa5\xb2\xed\x0d\xbb\xac'\xb2\ +t\xd1o\x10zVmM\xe9\xb3|\x03\x13Z\xf9\xa3\ +\xfa\x83Yr4\xba\x9c\x18\xf7Dn\x0c\xf1\xea&\xc2\ +H-\xb6\x09\xf5/\x9e!\xfahY_n\xc12Y\ +\x85\xd1\xde+j\xa1\x0d+\x1b\xcc\x86\x9a\x19\x85z\x02\ +3\xb9\x8b\x11m\xae&\xf5\x99\xad\xcd\x5c\xbei\xce\x9d\ +\x0f\xab\x1d\xfc(5\x0e\xd3D\xe3\xa97\xf3y\x1c\xbb\ +J\x10\xa4\xf4\x9e$L\xc6IjQ\xe3i\x94\xaa\x8b\ +$R\xceU\xda\xa6\x02\xce\xf7\x08\x5cO\x80\xd4\xd0\x1f\ +M\xe4\xce\x11\xf6\xa59\x81e\xbdV\xa2$\xc6\xc2\xcb\ +c\xf6Iz\x14\x93\xcb\xc1\xc9#G\x13\x9d\x1e-O\ +\x86\xa7\xb2\xae\xa6\xfa\x09\xdd\x0eABt\x07~\x16\x99\ +\x12 \x92Q\x9e\x1c\x1f\x95\x81\xbd\xfa^\x1c\x83\x90\x86\ +\xc9UT\x08\x9a\x197\x81\xd2J=\x1dK\x7f\xd4\x02\ +f8O\xab\xfeB\xe7Kc\xc5\x16#\x18\x00o\xf7\ +\x10\x94G\x7f+I\x92\x91j2o!H\xf4\x9e\xf4\ +q\xc8\x1f\xc7\xf64\xc1\x876\xc5\x8a\x9ee\xc8L\xe6\ +\x9e\xf2%52K\x7f\xd4\x93\x0f\x8c\xeeDi\xd8a\ +\x0eC\x8f\xbd\xf0z\x11\x18\x9dR?:\xfb\xca\x1f\xd5\ +\x91\xfboz$H\x1e\x8c0\xa6O\xf5\xda\x05\xf9f\ +\xb0\x12\xe5\x9b\xa1\x22u`\x15\xab\xdd\xe8\xdf\xc4\xa1t\ +\x86F\xef~\xcd\xc2\x94\xd4=\x15>\xb1\xe6/*\xa7\ +d\x06\xdeS\x1af\x9b\xe2\xc2\xc8\xe4;/F\xa9@\ +\x1dE\xab\x9f?#\xbc\xe0\xe6a\xe76\x1el5\xd5\ +\x17\xc5\x9bH,\xfdQ\xdfk\xeaa\x93\xaaw+\x89\ +\xcc\xb7\x94iG\x90J0_\x17'\x16n%\xf4B\ +O\xcb:t\xb6\xd5\x5c\xd96\xb5\xe2\x92\xa6,>Y\ +Z\xb4\x13U\x0b\xf9\x98\xc9u\xc9\x97\xecO3\x90\xe6\ +\xf3v\x89b\x8a\x11\xd9\xbch\xe9\xf5.=|\x96\x99\ +\xce_:\xf7A\x98\xd8\xeb(A\xd2\x0b+\x1b\xf4f\ +\xad\xc1EI\xe7N\x0f\xbf\x1ac\xac#\x11?\xfa\xcd\ +\xe73^\xea\x92n\xe5\xfa5D\xcb,\x85\x22/^\ +W\x1a|l\x9d\xe5P:zN\x9e\xd7\xee\x82\xd0{\ +vL\xf5\x06\x81M\xafh\x22\x14?\x99\x1cO\xa5\x86\ +\xbah\x9bu\xbd\xe7\xf3y\xf4\x22\xb9pH=\xe1\xbc\ +\x9e\xbf\xc5f\xae\xc3AT\x82\xa9\xa50\x9d\xb0\xd3\xd6\ +\x19\x0a\x15\x15\xf1\xf0'u\xea\xa4LI\x8eA\x1b\x05\ +\xa9\x0f3\xd948i\xd4g4x\x05\xb1\x17C\xe3\ +\xb1\x1f\xa3Q\x8aQ\xe8 \x08\x8dm/\x8d\x93\x0d\xa2\ +\xf6L,-\xbd\xf2\xf8l\xd0\xaa'm\xed\x86\x0e\x02\ +\xe6\x14\x87\x92\xccX\xc4\xb1\x1eg\x9b\x0cs\xd9\xdf\xc6\ +1\xe0\xdf\xfb0\x9b\xd7\xc3n\x1c\x14\x9d\xbehe\x9b\ +\xb0Z\xc0I\x15q\xbew{\xcd+\x8f\xf2\xf0M?\ +\xfd\x83(e\x0e\xaa\xb0L\xd8\xd5!\x99\x02;\xfd-\ +\x8b\x0fy\xf2\x15\xeb\xabF.\xe9\xe3K\x8a\x80\x01\xe1\ +\xe3\xab\x85\x9bw\x0b\xf5zT\xc4\x9c\xd6\xa0\xa4r\xfb\ +plu\xd3\xec2\x5c=\xcd\xb1\x99e*z\x09\x19\ +8\x11R\x83\x1dO\xd4\xf7\xda\x86\xc0\x1c\xbe\xf5\xe6\x89\ +\xab\x1aj\xa1@\xe9\xb3\x1b\x07OC\xebL\x8d\x9b8\ +\x89@\xd1\xaa\x1f\xe6I<\x18A\x12\xd7$I\x13\xc1\ +\x99B\xed\xe4\xca\x90*\xf5\xd2m6c\x9f\xeaz=\ +{_Z\x0c\xed\xf4\xdaiRA@\xf4O\xc6\x1a\x8f\ +uP\x09\x162d\x91N\x17}\xa6\xf2\xf6\xd9\xa7\xf4\ +\xf8\xb9[\xd16d\xc9\xd4\xee\xa6\x1d\xac\xc2\xc5\xe7\xb9\ +\xdb\x86CVmwm\xce\x8cB\x8b\xd1\xe5\x0c\xfbc\ +Bd\xed\x99\xadq\x93\x94\xfa\x07\xd3\xd9\xb3\xda \xcd\ +\xb4\x8cC\xbb\xa2\xdb\xf1\x04A\xaa\xc6\x05L\xf6}(\ +\x10`\x00^\x14\x03\x99\xd6\xf9\x10\x91*\xb8\xdfp\x98\ + \xad\xcaL\xac\x89\xb5\x9c U\x97;\xd5\x93\xad\xeb\ +\x00D\x0d\xf9\xd5\xe3\xe7\xee\xfd\xf9\xf2\xec@w:\ +\xd9\xe5ZN6\x88\xa5\xd5v&\x90\x1a\x15)\x82&\ +\xa9\xfc7>\xb79'\x9f\xba\xb3K\x92<\xe9\xf0\xc9\ +\xd7gBu\xfaP\xf9~\xf0\xd9\xe5\xbbU\x8e0\xa2\ +]\x83\x86ijPN\xdb5}\xf0h\xc3\xf0\xbe\x8a\ +\x8e\xde\xd9\xcf\xeb\xbb<\xaeWA\xcf\x16\xf9\xd1\xa1q\ +b\xc7[n,aX\x1f\xb2\xb9TN\xdamx\xff\ +l\xd6?\xfe\xd1\xeb[\xb9r\xd7W\x06\xde\xfd\xfeU\ +\xc0\xc3\x87\x19\xad\xb2O\xb0JDn\xcf\xb4\xb6\xd0\x9f\ +\x83+\xaa\xa4x\xeb\xdb\x10\xde\xba\x9a\xbb\xca\x0f\xd2\xf4\ +\x9d\x8e]{[\x10\xde\x05\x9aJ\x91\x1f%\x84Vt\ +\xf6\x98\xc3M;\xf6]\xeaW1u;\xfe\xb7wB\ +\x8fN\xa6H\xfdW\x87\xf4?\x9ei\xce3bz\xa1\ +\x0eZ\x83P\xce\x9e,+\x0ab~\xf4\x91\xa5\x0e\x01\ +q\xbe\x96\xafo\xe6^\xc6\xde\x95\xfd\xd9\x14\xfc\xf5\xba\ +Sg\xe1\x1d*#\xbe\xc6\x1c`\x15\xd1\xdc\xcf\x97\x12\ +%\xe4\x1d\xf3*cS\xa2~\xf4a\x8d\xd4\x06\xa6+\ +\xf84'\xf5\xef\xe7E\xc5W\xb6\xbf\xbeh(\xe1\x15\ +\xe5\x1d\xe5\x16\x0c\xc2\xd4\xe4\xfd\xf5\xceP\x1d}[\xe5\ +\x93~\xedZ%F\x0f\x95\xcf\x8b\xc1~~[\x10\xa4\ +\x16\x86d\xe7\xbe\x94\xfa\xec\x95\xd8\xfez\xd1(j\xeb\ +\xfd\xf5Y\xdb\x0bO\xa7\x9b\xfb{/M9A\xda\xf7\ +Y\xde\xbd>:\xa8\x0a\xfd\xe6\x90\x1f\xad\x11]\xad\xb4\ +\xb8\xed\xb5e!\xbc\xa58\x94\xfdY\x0e:\xfcG\xbf\ +\xa4\xcb\xea\x0a\xff\xe9\xde\x89\x0f\x5c\xb7\x8d\xcc\x03\xda2\ +U\xb1\xf7KJ$B\x7fr`\x8f&B\xee\xaf\x0f\ +\xcd\xd8\x01\xa1F\x97t\xd9Y\xd0W\xcf\xdb>\xcc'\ +Y\x08\xa8R\xcf\xdf\x88J\x0c\x0d\x140J\xd8_O\ +\xb8\xc4\xad\xd9\xf5g}3\xe9\xbe\x17\xff\xd5M\x8b\xca\ +\x85\xaa\x0a8,/K\x98\x88\xf4\x95\xb1\xde\x9c\xa5\xd8\ +_\x9f\xf7\x19{ks\xfbb\xdf\xd4\xb3\xbb\xa4\xcb\xfd\ +\x9f\xber=\x8b\xc8C\x17}\xd8\xa4z\xe6\x0e\xf1\x92\ +\x1f=\x19\x8a\xfd\xf5\xc0\xa0T&\xf7\xcb}c\xd4$\ +,%O\xe3\x9e\x8e\x9b?\xea\xd0\xd84\xa0\xb5z\xc2\ +%\x1d.b\x8cft2\xf34e\x85\xbf\xa1g\xbd\ +\xdc\xf7\xb1}\xe3\x13\x93\xc8\x0c\xb3\x96\xf2\x9b\xe5\x90p\ +\xc2\x1eW\xd48\x0a\xa0\x0a'\x96R/e\xaf7\xe2\ +z\x81}\xb5\x17\xde\xbb9O\xec&2\xf7~9\x14\ +\x08\x10\xfe\xad'\x1b\xc8T\x91\xea\xd9f\xdb_\xcf\xb8\ +\xde7\xc5>\xe8\xa0\xbf\x1f|x\xb2FR/7x\ +\x1c\xd2\xcf~!\xe0tQ\xaf\xd7J\x99\xb2^\xaf\xdf\ +\x96\xf2\xa3d\xa8\x88\xdc\x08]\x9e\xee\xdd\xbd\xfb\x9e\x87\ +w\xf63-\x87\x0b\x0b\x99\x95.\xa1\x83W!\xa8\xd1\ +\xbbwy*\xbb\xde\x9a-\x8d\xcc\xf4\x1a\xee\xc7\x1b\x1f\ +y\xe5\xa5\xab\x93\xcd\xb0\xe6\xda\x9d\x09\x13\x8ch\xbc\xa8\ +\xe0(S%\xe8}\x81\x9f\x97[\xf3\xe6\xec:o\x95\ +\xdbi\xb6>g>Z{\x84\xe6\xf6\xac\xed\x19\xd7W\ +hO\xe8x\xd3\xd1cD,Y\xfb\xb8\xc0Z\xe5p\ +\xcc\x09m\x17\x94\xaa\x09\xa1\x1d\xd4\x13\xbd\xd1\xf3\x0b\xf5\ +\xfa\xc9\xea\xf5\xc3\xb8I\x97t\xe9o+\x80K\x91\xaa\ +\x06*;\xdf\xdf\x1e\xdc\xb1\x7f\x94\x8d\xae'H\x0d\xc1\x89R\xc0LL\ +2\xd9N\xf0\xb4\x13\x9ag\xc4x\xf4\xe5\x8c\x98\x0e\xbe\ +\x1c\xc1\x18\x91Yx\xa4V\x06\xf7\xfd\xf5l\xcc\x14\xa9\ +\x00\x9c\xde\xcd\x88\x1dF\xb4\xa6\x81\xa6\x1aZ\xc1\x13y\ +\x9cg\x9a\xbcV\x1b\x00\xc9&\x00+D\xa9O\x11\x93\ +\x84\x88P\xa9\xc4r\x05?\xb1\xc4<\xdf\xd4\xc2.\xb9\ +c\x929*\xe2\xd4Q&\xb6\x8a\xd6tE\x87 \x84\ +.\xf8\xcf\x84\xa5C\xa4'$ L\x8a\xe6V\xf7\x8f\ +\xb6\x15\xe3\x02\xd4\xa2\xba\xa8\x98b$O}\xb1)E\ +\x89q}\x8b\x80\x9e\x04\xcd\x0b\xe0\xf2\xba\x02\x9c\x0a\x15\ +\x1e\xba\x1c\xe7q\x11~\xf1p\xa3-\x87\x03yG\xcd\x86N\xe1\x9b9\ +\xba\xed\x0c\x15K9\xd6Ph{\xf0\x14cB\x99N\ +h|\xb1Rb\xeft\x22\x8b\xbb\x8aRUn0\xdd\ +\xb0\x1b\x0c\x1d\xfa\xce\xd5\xd1\x0fL\x93(\x06\xad1I\ +6\x8fQ\x9c]\x94V\xd8P\x15\x16\xb1\xa3\xc7\x98\x09\ +\x93\xf4\xac\xc0\xfd<})Q\x8e\x83w*\x9d\xa3\xb6\ +\xf4\x88\xa0\x1a\xfe\xa1\xbe/9\xfa_\xc1*\xd8\xa0\xc5\ +Q\x93\x08\x00\x00\x00\x00IEND\xaeB`\x82\ +\x00\x00\x06S\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00@\x00\x00\x00@\x08\x03\x00\x00\x00\x9d\xb7\x81\xec\ +\x00\x00\x02\xebPLTE\x00\x00\x00\xff\x00\x00\xff\xff\ +\xff\xff\xff\xff\xbf\x00\x00\xff\xff\xff\xcc\x00\x00\xff\xff\xff\ +\xdf\x00\x00\xe2\x00\x00\xe5\x00\x00\xff\xff\xff\xe7\x00\x00\xff\ +\xff\xff\xd4\x00\x00\xff\xff\xff\xd7\x00\x00\xda\x12\x12\xff\xff\ +\xff\xdd\x00\x00\xe4\x00\x00\xff\xff\xff\xff\xff\xff\xda\x00\x00\ +\xff\xff\xff\xdc\x00\x00\xe2\x00\x00\xff\xff\xff\xda\x00\x00\xff\ +\xff\xff\xdb\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\ +\xff\xdc\x00\x00\xde\x00\x00\xe4GG\xff\xff\xff\xff\xff\xff\ +\xdc\x00\x00\xdd\x00\x00\xdd\x00\x00\xff\xff\xff\xff\xff\xff\xdd\ +\x00\x00\xff\xff\xff\xdf\x00\x00\xff\xff\xff\xdd\x00\x00\xfa\xd5\ +\xd5\xff\xff\xff\xff\xff\xff\xe488\xdd\x00\x00\xff\xff\xff\ +\xff\xff\xff\xff\xff\xff\xdd\x00\x00\xff\xff\xff\xff\xff\xff\xdf\ +\x00\x00\xdd\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdd\x00\ +\x00\xde\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\ +\xde\x00\x00\xde\x00\x00\xff\xff\xff\xdf\x00\x00\xebpp\xdd\ +\x00\x00\xe0\x02\x02\xde\x00\x00\xff\xff\xff\xdf\x00\x00\xff\xff\ +\xff\xf0\x8c\x8c\xde\x00\x00\xff\xff\xff\xdf\x00\x00\xff\xff\xff\ +\xdf\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xde\x00\x00\xff\ +\xff\xff\xecuu\xdf\x00\x00\xe8QQ\xde\x00\x00\xf9\xdc\ +\xdc\xff\xff\xff\xde\x00\x00\xdf\x00\x00\xff\xff\xff\xde\x00\x00\ +\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\xb2\xb2\xff\ +\xff\xff\xdf\x00\x00\xff\xff\xff\xdf\x00\x00\xdf\x00\x00\xde\x00\ +\x00\xde\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xedqq\ +\xde\x00\x00\xff\xff\xff\xe3''\xde\x00\x00\xde\x00\x00\xfd\ +\xf4\xf4\xf0\x87\x87\xff\xff\xff\xff\xff\xff\xe3$$\xff\xff\ +\xff\xe3\x1f\x1f\xff\xff\xff\xfa\xd9\xd9\xff\xff\xff\xe2\x1a\x1a\ +\xdf\x00\x00\xde\x00\x00\xde\x00\x00\xff\xff\xff\xff\xff\xff\xdf\ +\x00\x00\xde\x00\x00\xea\x5c\x5c\xff\xff\xff\xe2\x1b\x1b\xe0\x0a\ +\x0a\xdf\x03\x03\xde\x00\x00\xff\xff\xff\xff\xff\xff\xde\x02\x02\ +\xff\xff\xff\xdf\x02\x02\xff\xff\xff\xff\xff\xff\xebcc\xdf\ +\x00\x00\xdf\x01\x01\xff\xff\xff\xdf\x00\x00\xe0\x08\x08\xde\x00\ +\x00\xff\xff\xff\xecmm\xde\x00\x00\xe1\x10\x10\xf4\xae\xae\ +\xdf\x00\x00\xdf\x00\x00\xff\xff\xff\xff\xff\xff\xf6\xbd\xbd\xfd\ +\xf4\xf4\xdf\x00\x00\xde\x00\x00\xe3\x22\x22\xf6\xc1\xc1\xff\xff\ +\xff\xe9ZZ\xf0\x8b\x8b\xff\xff\xff\xdf\x00\x00\xff\xff\xff\ +\xe3\x22\x22\xdf\x01\x01\xe522\xe8HH\xf6\xb7\xb7\xfc\ +\xea\xea\xfd\xf0\xf0\xfd\xf2\xf2\xff\xfe\xfe\xdf\x02\x02\xe9L\ +L\xe2\x1a\x1a\xe0\x04\x04\xe4&&\xe4''\xe0\x05\x05\ +\xe533\xe655\xe6;;\xe7>>\xe8DD\xe0\ +\x06\x06\xe2\x19\x19\xe9OO\xe9RR\xeaWW\xeaX\ +X\xeaYY\xebaa\xebbb\xecff\xecjj\ +\xeett\xeeuu\xee{{\xef~~\xef\x81\x81\xf1\ +\x8f\x8f\xf3\x9e\x9e\xf3\x9f\x9f\xf3\xa2\xa2\xf4\xaa\xaa\xf4\xab\ +\xab\xf5\xb0\xb0\xf5\xb1\xb1\xf6\xb4\xb4\xe0\x09\x09\xf7\xbe\xbe\ +\xf8\xc4\xc4\xf9\xd0\xd0\xfa\xd4\xd4\xfa\xd5\xd5\xfa\xdb\xdb\xfb\ +\xde\xde\xfb\xe0\xe0\xfc\xe4\xe4\xe0\x0b\x0b\xfd\xec\xec\xe1\x0e\ +\x0e\xe2\x15\x15\xfe\xf7\xf7\xfe\xfb\xfb\xff\xfc\xfc\xe2\x16\x16\ +\xe2\x17\x17f\xeer`\x00\x00\x00\xb6tRNS\x00\ +\x01\x01\x03\x04\x04\x05\x08\x08\x09\x0a\x0a\x0b\x0b\x0c\x0d\x0d\ +\x0e\x0f\x0f\x13\x13\x14\x15\x15\x16\x1b\x1b\x1c\x1c\x1d\x1e\x1f\ +!$%''*+,-./2669;\ +<=@ADEHKLMNOPTTU\ +Z\x5c]]`acegghkllmp\ +qsx|~\x80\x81\x83\x84\x8a\x8b\x8c\x8c\x8d\x91\x93\ +\x95\x95\x95\x96\x98\x99\x9c\x9d\x9e\xa4\xa6\xa7\xa7\xa8\xa8\xa9\ +\xaa\xac\xad\xad\xb0\xb3\xb3\xb4\xb7\xbb\xbc\xbd\xbd\xc0\xc1\xc4\ +\xc6\xca\xcb\xcc\xcd\xcd\xd0\xd2\xd4\xd7\xd8\xd9\xdb\xdc\xdc\xdd\ +\xde\xe0\xe1\xe4\xe5\xe6\xe7\xe8\xe9\xe9\xea\xef\xf0\xf0\xf1\xf3\ +\xf3\xf5\xf6\xf6\xf7\xf7\xf7\xf8\xfa\xfa\xfb\xfb\xfb\xfb\xfc\xfc\ +\xfd\xfd\xfe\xfe\xfe\xa0\xb1\xff\x8a\x00\x00\x02aIDA\ +Tx^\xdd\xd7Up\x13Q\x14\xc7\xe1\xd3R(\xda\ +B\xf1\xe2^\xdc[(\x10\xdc\xdd\xdd\xdd\x0aE\x8a\xb4\ +\xb8{p)^$P\xa0\xe8\xd9\xa4*\xb8\xbb\xbb\xbb\ +\xeb#\x93=w\xee\xcb\xe6f\x98\x93\x17\xa6\xbf\xd7\xff\ +\xe6\x9b}\xc8\x9c\x99\x85\x14R\xfaR9]\xfa\xf9\x80\ +(\xc4\x95A&60\x10\xa9\x19\xd9x\x80\xc7N\x14\ +\xed\xaa\xca\x02r\xa3\xec`%\x96\xb0\x1ee\x1b3p\ +\x80\xfa6\x09\xd8F\x00\xa7^\x17\xbe\xa0\xe8h\x19\x96\ +P}\xca\xeeh\x02\xae\xb6\x03^\x9e}\x08\xb0\x8e\x02\ +fE\x098a\xe6\x02y\x05\x10\xf9?\x03n.\x01\ +%G/9\xb0*4\x90\x0d4\x8f\xa2}2\x13\xf0\ +\xb3\xa0h*\x0f\xe8\x84\x22\xbc\x5c\x97\x05\x8c\x95\x80u\ +<\x0b\xe8-\x81sf\x16`\x92\xc0\xdd\xe9\x0a\xc0\xd7\ +)\xe06\x0b)k|7\x05\x90\x8e\x80\xa4\xfd\x8e\xe7\ +,\xcb.\xda\xe7+\x1f\xcd>\xa0h3\x09\x87\x147\ +\xc9\xbb\xdf\xbeG\xb1\x9f\xb4q\x85@\xd5B\x02bZ\ +\xa8\xfe\xb19*7\x0a(\x08\xea\xc2P\xb4\xa2\x95\x17\ +p\xaa\x85\xb2m\xc5X\xc2<\x94\xed\xc8\xc7\x01\xca\xa2\ +,\xb9'\x07\xe8\x81\xb2\x9b!\x0c\xc0o\x8f\x04l\xaf\ +\x870\x80`\x14\xe1\x9f'\xc7\xaa0\x80\xf9\x04\x1c\xbf\ +\xf7.q]\x03`\xb4\x89\x80\x17\xab\xbb\x96p\x07F\ +Y\x91\x8a\xab\xe1\xe2U\xd6r9\x9c\xfd\xbb\x88\x9a2\ +\x8fj(\x8a&4c\x01^\x16\xa4N\xfdl\xcc\x02\ +\x02Q\xf4tQj\x16\xd0\x17\xa9\xe8\xc4:\xc0\x02\x96\ +\x22\x15;\xd7\x9d\x05\x14A\xea\xbc\x16\x00,\xa05R\ +o\xa6\x01\x0f\x98Hc\xb2V\x81\x07\xa4\xddN\x17\xfb\ +m\x08\xf0\x00\x7f\xda\xae\x1f.\x0d\xea\xca\x13\xf0*R\ +yjN\x7f\x18\x0eN\xea@\xc0\xd9\x080\xb6@\x9f\ +n\xed-\xac\x04|\xeb\x05o%\xe0\xf6L\xe3\x9a\x9f\ +\xde\xed\xf3 P\x949\x08e\x8f\xfb\x1b\xf7&\xfar\ +'\x22\x8f\x0a\x18\x8c\xb2\xefq\x0d\x8d\xfb\x18\xfb\xf2\xed\ +kwP\x94\xc6\x82\xb2g\xe1\xc6s\xe0\xa1\xdf\xaa\x07\ +[\xb2\xff\xc3\xf7\xc25\xad\xb6q\xaf\xa8\xbfZBG\ +P\xb6\x16E7\x12F\x82\xb1\xb6\xf6\xe9a\xb8\xb7\x1a\ +0%\xe9\xc0\xef\xe7\xdaPGO\xb5D\xc4\x93?\xda\ +\x80\x93\xda\x1f9\x13s\xffe\xfc\x86\x9a\x0e\xd7\x8c\xcb\ +\xf1\xd2\xfb\xc5\x9e\xe0\xacr\xc3fO\xea\x5c\xcdG\xb1\ +f\x9a\xf3kMqp\xa9\x02\xa9 %\xf7\x17\x09\xba\ +99\xea\xb1au\x00\x00\x00\x00IEND\xaeB\ +`\x82\ +\x00\x00X2\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\xdc\x00\x00\x01|\x08\x06\x00\x00\x00\xa41\xd5\xdb\ +\x00\x00W\xf9IDATx^\xec\xdd\xc1KUi\ +\x18\xc7\xf1\xdf\xb9\xd7\xeb\x95\x0b\x95a\x10:\xad$P\ +P\x08\x12\x0aqV!\x83%H\x10\x11-lQ\x11\ +B\x81\x04\xddjF\xbc\xaf`P\xa3\xb6(\x89 r\ +q!\x5c\xb4\x90\xac\x08\x936\xcd\xb4r\x06#b\x86\ +\x1a7R\xdc\xc8\x82\xb1\xc2l\x91\xf2\xf4l\x82\x10\xbc\ +HYi~?\xf0\xe5\xf9\x0b~\xbc\x8b\xb38\xfa\x11\ +\x00\x00\x00\x00\x00\x00\x00\x00\x82\xf4\x8b\xb7Cy\x001\ +}\x11\x9c\x94\xd6\x06\xa9_\xd2\xed\xa8\xa0\xa0E_\x0f\ +\x18\x1c\xafZRzh\xd2\x9e\x9f\xb6n\x1dJOL\ +<0\xb3\x94\xe6\x01\x14\xe8s0\xb4\x94I\xbfK:\ +\x1cO$&\xea\xbb\xbb\xfbj[[\x9fJ\xba\xeb\xbd\ +\xd3\xa2\x01\x18\xdb\x16\xef\x91g\xbd\x15\x15\x7fL\x8e\x8f\ +\x9f6\xb3\xc3^\x99\x16\x07\x80CR\x22H\x1d\x19\xe9\ +}G,69|\xfcx\xd6\xcc\x82\xb7\xdd+\xf8d\ +\x90E\xde!\xafr\xb7\x14\xf7;\xe4\x1d\xd3\xc2\x00\x08\ +R\xa57\xe2YOi\xe9\xdf\xb9\xd1\xd1\xb3fv\xd4\ ++\xd7\x1c\xbfJ\xeb\x834\x15\xa2\xe8IF\xea\x0c\x92\ +\xf5\xd5\xd5uiA\x00\xc6v\xd0\x9b\xf6\x01M\x0f4\ +7_\x9d\x9d\x9d\xed0\xb3]^\x91\xe6q\xa7\xad\xad\ +\xcb_\xc1\x99 Yg2\xf9\xf6\xbf[\xb7\xbaB\x08\ +1\xe5\x07\xc0\x87v\xfdLI\xc9\xfd\xb1\xe1\xe1sf\ +v\xc2\xabV\x1e\xedR\xcd\xa9T\xea^\x90lN7\ +\x95\x1f\x003\xab\xf1\x82\xd7\xec\xadV~\xcaH\x17}\ +\xa4S\x17\xaa\xaa\xfe\x0a\x92]\xae\xad\xbd\xdf\xdf\xd4t\ +c`\xdf\xbe\x1e3K(/\xf0Y\x00\x8f\xbd\x97Q\ +\x14=\xd1\x02\x1c\x18\x19\xe9.\xdb\xb4\xe9\xc5\x9b\x5c.\ +q\xbe\xbc\xbc&Y\x5c\xfcz\xef\xe0\xe0\xa0\xa4Bo\ +\x95\xf7\xbfV,DZT0\xb3\xa4\xa4jo,[\ +_\x9f\xdd\xd8\xd0\x90\xfb9\x9d>\xa2\xaf\x0e`|\xdb\ +\xbc\x16}\x13\x00\x83\x8b\xb4R\x01\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\ +G\x1f\x80\x8c\xd4\x16\xa4W~\xc3\xca\x18\x1eb\xfan\ +\xb0z\xc3\x86\x7f$\xad\x89EQ&#\xdd\x0bR\x8b\ +\x96\x130\xb8 \x15\xfe&\x95j\x19\x98z\xfe\xfcH\ +,\x1e\x9f)\xdd\xbc\xf9\xdf\xd4\xbau%Q\x14\xf5\x06\ +ig\xbbT\xb7[\x8ak)\x022R:H]\x92\ +\x22\xbf\x97\xbcgZ\xe2\x82\xd4\xe4\xd9\x95\xc6\xc6?\xcd\ +,\x5c\xdb\xbf\x7f(H\xf6\xb1\x8c\x94\xd5R\x04|h\ +\xef*\xa0\xaa\xca\xda\xf6\xbe\xa2\x82\xd9\x1d`\x8c\x9dc\ +\x8d\xdd\xdd9\xea\x98c\xd7\xd8\x8d\x88\x08\x16\x12ba\ +\xa0\x98\x01\x82\x8d\x05\x82\x01\x8a\x8aXX\x18\x08b\x22\ +) \xa1\xf2?\xef]\xfb\xacu\xbf\xfb\xe3\xcc\xe0\x10\ +\xd7\x99\xf7Y\xebY\x87\xb3\xcfa>\xef\xb7y\xef\xde\ +\xfb\x8d\xe7]\x96#\xc7z\xf9Gz\x08\xd7\xaf\x1bk\ +\xd5\xa2?\xe2\xc2:jhy\xc1\xc9`\xa0y\xae\x5c\ +Q\xd1\xaf^\x99{[ZV\x82\x81\x85\xad.Z\xf4\ +\xbd\xfb\x82\x05\x07\xb66n\xecKF\xb7,g\xce\xea\ +B\xd7\xc0`\xc4\x85\x855\xb4.S\xe6\x95\xb2:\xec\ +\xeb\xd1\xc3{G\xdb\xb6\xddt\xd4\xe0\x9a\xc0\xb8\xbe\x90\ +A\xed\xea\xd0\xc1\x17\xab[\x07\xdc\xdb\xd2\xfd\x15[\xdb\ +=\xb8\x1f\xb3\xaej\xd5\xeb\xa6*\xd5\xd7\xd7\xfe\xfe\xad\ +1^\x07\xdcm\x22DO\xc1`\xe8\xc0\x8a\xf1\x13V\ +\x87[\xd2\xd8\xb4\xf9\x93\xd0A\x5c\xb5\xb5]gU\xaa\ +\xd4\x9b5\xa5J\x85Z\x97-[\x1b\x06\x95\xb4\xbez\ +\xf5\x070\xb6)f\xfa\xfam\xc9\xf8\xb6\xb7h\xe1\x8f\ +\xfb\xe6x\xd6Pc\x9bi/\xb2\x12\x0cv\x9a|\x11\ +\x22Wv}\xfdl?u\xe9\xe2\x9a\xa7X\xb1\xb0|\ +\xa5K\xbf\x1d\xe4\xea\xba\xb9\xd7\xf6\xed\x9b\xe6DD\xe4\ +\x12:\x88&3fl\x9d\xf1\xf2\xa5\xed\x8c\xe7\xcf\x1d\ +\x12\xa2\xa3\xcd1\x94#o\xc9\x92q1aa\xee_\ +\x13\x13\xad\xb3\xe5\xc8\xf1\xa9\xfb\xa6M\x1e\x18\x7f\x96\xb7\ +D\x89\x10\x01\xe4)^<\xac\xec/\xbf\xe4\x81\x11\xaa\ +\xe7,\xcb\x9c*\x0c\x06V\x82\xd9\xe0\xc2\x0d5j\xf8\ +\xaf\xc8\x9f?\x1a\xf7]\xc0\xbe`\xa5\xbfX\x1d\xaba\ +\xd5p\xc4\xb5I\x16\xfc\x9bs\x81\xb5.YYU\xd9\ +\xd3\xa5\x8b\xb7\xf3\xc0\x81G\xb0\x82\x8d\xa3\x95\xccu\xe8\ +Pw<\xeb%W\xf0\xf24vh\xd0\xa0\xf3\x18[\ +\x02\x16\xc1\xbd3\x9d\xf9\xc0IY\x11\xbfc\xb0\xc1\x15\ +\x02sz,\x5c8\xe0\xc6\x96-\x8e\xb8/+\xfe\x1c\ +\xe4\xcd\x9c\x06\xc6\xe3\xac\x14\xbb\xbdy\xf3_\xb3\xf0\xdf\ +^\x18\x1c\x06\x1a\xc3\x89\xe2D\xc6e_\xaf\xde]\xdc\ +\xe7\x95\x06W\x8b\xc6\x5c~\xfb\xed0\xc6r\x90\x81\xad\ +,Xp\xab\xc66s\x8a\xc8\x220\xd8\xf0\xf2\xc9?\ +\xde\xc2\x7f\xb2\xaa\x95\xc5\xca\xe0\x8ek\xca\xca\xc2\x85\x03\ +\x9e_\xb8`\x8b\xf7G\xea\xc0*\x9d\x13\xac\xe3\xbf}\ +\xfb\xf6\x9b\xdb\xb6Y\xe2>\xbb\x00L\x84hJ\x86u\ +t\xec\xd8=\x8b\x85\xa8\x0d\x03\xf3\xa1{r\x12\x9d\x9a\ +1\xe3\xd8\xfd#G\x86\xcb\xcf\xe3\x02V\x14:\x04\x06\ +\xc7\xeb\x86\x82\x91\xe4\xa4\xd8\xdf\xb3\xe7\x91\xe4\xc4D3\ +\x18\xdbo`^\x1dY\xa9\xf5\xc0\xa6\xe0\x100\x874\ +\xb8\x8ed`p\xb0<\xc15i\xa9J\x15w\xb0_\ +?\xe7\xe4O\x9f\xe8\xdf>\x09\xecb\xae\xaf\xef+W\ +\xbb\x8f\xb8V\x11Y\x09\x06c\x81\x10E`h\xea\xed\ +\x9aE\xee\xdc\xcf\x03\x9c\x9c6\xc2\xc8\x16\x81\x0d\x85\x8e\ +a\xa1\x10\xc5\xb0\x92U\xd7X\x91'*\xdb\xc75%\ +K\xde|\xe1\xedM+\xf2\x02\xb0\x11\xa8\x12\x80\xb9\x81\ +\xc1\xdbU\x85\x0bG8\x0d\x18p\xea\xd1\x993\xd5D\ +\x16\x82\xc1a\x83.06\x8a\xd1}\xdd\xf6\xcb/g\ +\xe2\xc2\xc3-(\xd6\xa5\xc3\x81q\x17\xf03\xb8\x19\xdc\ +D1;\x9c\xedb\xdd\xe7\xcfw\xa5\x8c\x14p\x10\x98\ +O\xe3\xfd\x1a`\x0a\x1c/W.-_\xbeme\xa1\ +B7\xe4\xd6\xd3\x09\xf4\xa1-\xe9\xb7R\xe0Dz\x81\ +\xc1\x98\x0dO:\xfd\xc1\x82_\x91\x89\xf2\xe6\xea\xda\xb5\ +\xdb`d&`+Pg\xc3!^\xa6\xa6\xf5\x90)\ +\xe3\xaf\xacj\xcb\xf3\xe6}\xf3\xe1\xf1\xe3\xd50\xb2Y\ +`\xf5T\xb6\xc9\xb3\xe9\xbd\x0d\xd5\xab?\x96\x86\x9a\xb2\ +\xb2H\x91)\xab\x8a\x165\xa1q2\xd8\xd4\x82\xe6x\ +\xe6\x09\xee\x98/D\x01\xc1`\xfc\xd3m\x19\xa5N\x81\ +)\xc8\xda\xb8\x1c\xf9\xe2\xc5J\x0a*\x83\xa5\x7f\x10\xc7\ +\xcfx\xf2\xb6Z\x95.\xfd\x86Vf\x04\xca\xa7a\xcc\ +@\xa4\x02xY=\x14\xe34\xcb\x91#\x96\xae\xa7\xa7\ +O\xdf\x82\xb4\xb0\x17\xb8O\xda\xdd\xa9\xd3\xe5\x8b\x16\x16\ +\xbd5\xd2\xcar\x92\x91-\xd3\xd7\xf7\xc1\xf6:\xc8q\ +\xe4H\x03\xf1\x0f\xc1\xe0m\xa4\xc1\x8a\x02\x05\xce!L\ +\xb0Sn\xc3\xba\x82\xd9\x7f o\xab\x0a\xac\x9f\x94\x90\ +0\xef\x99\xa7\xe7:r\xa4|\xebs\xc2\xe0\x12\xd4\xe9\ +l\xdd\xbb{\xef\xea\xd4I\xed<\xc1\x99.\x0a\xce\x95\ +\xc4+66\x8e\xf2\xbc\xd7_\xbe\x7f\x17+^\x108\ +099\xb9\xdf\xdb\x80\x805\xf4\xbf#\x18\x8ctX\ +)\x86\x833\xc1\x8a?\xf0g0\x00[\xff\xd9\xca\xec\ +\xbep\xe1\xcc\xf3&&\x87\xf0\xceb8U\xae\x92\xc1\ +-\xcd\x96\xed\xf3\xc5\xe5\xcbwcl\x9a\xe6y\xcf\xa1\ +y\xf3\xd1X\xd5\xc2\xe9\x1d\x18\xeaAX\xe4\xc9\x13\xfb\xca\xdf\xbf\xb7`0\ +\x18\x7fY\x06\xd4-\xfc\xe9\xd3\x15\xbb\xda\xb7\xbfFN\ +\x95%\xb0C\x13!zk\x18\xdcQ\x8c'\x5c47\ +\xdfGa\x94\x88g\xcfV\x91a\xca\xca\xf4\x93`\xca\ +\xa9i\xd3\x8e\xe1Y'\xf1\xb7\xc0`\xb0\xe1\x15\x07\x87\ +?>qb#\xca\x7fn\xed\xed\xd9s\x94\x90@\xcc\ +\xee\x93\xad\x91Q\x88\xf4lV\x03\xeb\x86=~<\x1e\ +!\x04u }M\x89\x12/\xe1d\x99\x9bv\xcf/\ +\x83\xc1\x86W\x15\xfc\x03\x9c$$\xb0\xdd\x8c\xa2\xac\x96\ +W\x01\x01\x86\x1a\xefe\xc7\xf9/\x8e\xb6\x99\xe4\xf9\xfc\ +\xfe\x009\x83\xc1F\x97M3\xf3\xc6\xben\xddc\xb4\ +\x92\xc1\xc0v-\x10\xa2\x90,\xd0\x9dEcp\xb2\x04\ +\xe0\xdd\x09\xa0\x8a\xb6\xa1\xe4\xf5\x04\xef\xe0\x99\x03\x1c*\ +UE\xda\xc0`0\x9eyx\xb4D\xce\xe93\x0dg\ +\xc9\x07\xba\xc2;\x99\x18r\xf5*\x05\xc8\x8dp?U\ +f\xb1\xc4\x99e\xcf\x1e\xa9\xfeY\xa5z\x89kZ\xf3\ +S\x19\x0c^\xf1\x12?}\x1a\xebcm\xbdwO\xd7\ +\xae\xc7Q\xa1@\x86\x94\x02}\xcc;x6\x80\x92\x9d\ +q\x9f\x00o\xe5\x0b\xd4\xe3\xad\xc5\x98\xe9\xdd}\xfb\xb6\ +\xc2\xf0\x92`\x80\x81\xb2\x0a\xbd\xb1\xf8\xdb`0\xd8\xe8\ +\xb2\x83\xed\xc0\xb1\xa8\xab\xdbKbLjQ\xddz\xf5\ +Z+*\xd1\xa4\x0e-\xab\xd1\xcb\x83\xf5\xf7v\xeb\xe6\ +\xa5\xa1\xad\x92,k\xef\xd2\x08\x06\x83\x8d\xaf\xe4\xc7w\ +\xef\xcc|\xd7\xad\xdb\x99\x98\x98X\x1f\x06\xd5\x01L9\ +\xd0\xa7\xcfI\xa1\x01$K\xef\x95\x82\xb6\xd7\x8e\x8c\x1a\ +u\xf2\xd9\x85\x0b\x8d\xc4w\x81\xc1`\xa3+\x00\xf6\x04\ +\x7f\xfaC\x08}\xacxQ8\xd3\xd1*\xd6\x9fr2\ +\xc1\xc18\xc3E\xd3x\xec\xfb\xf7T\x025\xea}`\ + \xad\x86\xe3\xb1\xda\x1d\xc1\xf5(\xaeSp\xcd/\xd2\ +\x06\x06\x83\x81\xf3\xddR%.\xa7I\x0fcc\x17\x18\ +[\x9b\xf1B\xe4\xa0\x940\xe9X\x89\x05\xe3\xe5;\x81\ +\x7f\xd3\x9b\xc9\xca\xcb\x0c\x06\xadn\xa4\x1cVo\xe4\xc8\ +m\x93\xee\xdc\xb1\xe9de\xb5\xabl\x93&\x9e\x02(\ +X\xbe|H\x1b3\xb3+d\x8f%\x85\xf8M%D\ +\x17\xbd\x9c9\x13\xbb\xad_\xef2?<\xdc\xba\xd9\xec\ +\xd9GU\xd9\xb2U\xcc\xa1\xa7w85\xa5h\xf2p\ +\x82y\x05\x83\xc1P\x8cB\x8c\x90N\x91\x9b\xebk\xd6\ +\x1c\x1c\xe0\xec<\xca\xba\x5c\xb9\x07\xd4l\xe4\x9e\xb3\xf3\ +\x16R\x8f\x96\xef\xed\xc5\x16\xf3\x8be\xc9\x92\xef\xe8\xd9\ +\xaa\x22E\x0e#\xabe\xb0\xcb\xd0\xa1\xe7\xe8\xf7-\x8b\ +\x15\xeb\x22$4*\x19\xde\x81\xd6r\x88\xc1`\xf8\xf9\ +\xf9\xe5\x80\xcc\xfaa$5\xc7)\xdbH\x18T\xfc\x99\ +Y\xb3\xa8\xca|\xb4\x90\x80Z\xd8\x0ez\x16\xe4\xe5\xb5\ +\x16\xc9\xd2\xc7\xf0~4\xe9d\xae*T\xe8<\x8d\xef\ +\xef\xd3g\xb9\x14=\x1a\x88{_\xf0\x14\x8d_X\xb6\ +\x0c\x17M0\x18\xec@\xe9\x0c\xe5\xb0U\xc7\xc6\x8c9\ +\xe9\xd8\xba\xb5\xdb\x03WW\x8a\xc5\xcd\x01K\x08\x89\xfd\ +}\xfb\xf6\xa2\x95\x0dN\x94GO\xcf\x9d\x1bB\xc9\xd2\ +;Z\xb5\xba\x801\xb5\x92\x18V\xc6Y\x02030\ +h\xa9\x04\xceQ\x81\x10\xf3\xe8\xf8\xf1%\xe2\xff\x83\xc1\ +\xe0P\x018\x00\x9c\x0d\x8e\x00\xf3i=\xcf\xed:l\ +\x98\x1b\x19\x1d\x18\xb1<\x7f\xfe\x9d>VVf\x8f\xdd\ +\xdc6bu\xbb\x84\xe7}\xe4{\xf9\xd7V\xaa\xf4\x9c\ +<\x9e\xa4\xbd\x82w\x93`|Vs\x85\xc8'\xd2\x04\ +\x06\x83\x8d\xb2\xd1u{\xfb\x9d\xd0\xc8\xbc-\x0d)\x05\ ++\x9e\xa7L\x96\xfeI\x9e\xf5\x06\xd08\xe4\xda/\x04\ +\x9e9\xb3a]\x95*\x8f\xe4\x19\xd1]\xa4\x19\x0c\x06\ +\x1b]mp\xf6\x87'OV\xe3,w\xf4\xd4\x1f\x7f\ +,\xc3}.E\xd6\x8fd\xfaH9\x8c\x02\xeb\x18\xff\ +\x19\x9c\x0a\x91\xde\xddW\xd7\xad[\xf1_(\xffQ\x89\ +t\x06\x83!\xa5\xf7*\x82u\xc0b\xe0A\x15\x82\xe4\ +\x14,\xc7\xfd\x81\xa63g\x1e\xeblcc\x871/\ +\xf9\xee/\xe0O\xa0+\xc6\xe2\xc5?\x07\x83\xc1\x90\x1e\ +\xca\x14\xc76m.\x07\x04\x04d\xa4b\x18\x83\xc1\x08\ +\x0c\x0c\xd4'\x99\x07\x19^x\x01\x03\x5c\x8fk\x8f\xef\ +m\x9f\xbcX\x88\x9f\xf1\xfb\xfd\xbe\xb1Sc0\x18\x90\ +X\xefzb\xf2\xe4\x93V\xa5J\xddW\x9a\x8f\x98\x08\ +\xd1\xf6;\x83\xf2\xbb\xa5\xf1zS ]\xa4\x0a\x06\x83\ +\xcfx\x1d\xc1E\xd4\x15(\xf8\xca\x15+\xdc\xb7\x11\xdf\ +\x81\xb3\xf3\xe7\xb7\xa3\xec\x16\xd4\xe9\x05~\x08\x0c\xfc\x93\ +$i\x06\x83\x8d.\x87\x14,\xea\x00\x96\x15\xdf\x81\xa5\ +zz\xfb\xd4\xc2\xb6\xbbv9\x90\xf0\x91H;\x18\x0c\ +\x06U\x8f\x93J\xb4\xb1\x10\xe5\xfe\xe4\x9d&\xe0\xd7\x0d\ +5j<|p\xe4\x88\x89\xf3\xc0\x81z\xe2\xbb\xc0`\ +\xb0\xc1\xed\x04S\xccr\xe6\xdc.R\x87\x0a\x06\xa9v\ +\xbe(\xc4}0\xae\x15\xb9}.\x0f=\ +u*\xe4\x1b\x069\x5c\x85U\xd0\xb0U+\xff\xee\x1b\ +7:\xa0th\x97^\x8e\x1c\xc5Tzzg\xfe\xf3\ +)b\xb2\xea7eu\xb1bKq\xcdo,D%\ +\xc1`\xfcu_\xbc1\xe0 \xcdq*r\x85\xb1\x15\ +\xa7\x9e\xed\x10:\xfa\x10\xfb\xe1\x03U\x9a\x0f\x04\xfba\ +K\xa9.\x03\xb2*W\xae\xe3\x7fu[P\x1f\xac\x02\ +\xc6\xa26*46,l\x1e\x8c\xcf\x0b\xf7\x97\xc4\xf7\ +\x81\xc1\x81s\xd2\xcfL\x02S<\x97,q\xa6~\xed\ +B\x02\xe9b\x97(!\xfa\xe5\x8d\x1b\x03\xfes[J\ +\x18\x15\xb9yo\x82w\x85Je\x80e\xdfm\x7f\x8f\ +\x1e\xe5T\x18\xaf\xde\xb7o\xc4\xf7\xf4%c0\x0c\x9b\ +5\xdb\xae\x9f?\x7f\x98\x00\x9e\x9e9c\x84\xcb\x15P\ +\x98\x08\xd1=9>\xbee\xa5N\x9d\xae\x97m\xd80\ +B\xfc\x17a[\xb1\xe2u\xe5@k\xf7\xd3Ow\xb0\ +\xba}B\xb0\xf39\xfaV\x1b\xcb\xd2\x8e\xb4\x82\xc1[\ +\xcd\xd2\x09\xb1\xb1\x8b\xa8\x1b\xd0\xb9\xb9s\xad\x97\xe5\xcb\ +W\x15\xab\xde\x1a\xf01\xfa\x9aGG\x86\x84X\xe0\x9d\ +\xc2\xff\xa5md^\x18\x96\x19);!F\x92\x00\xbd\ +\xfa\xd7\xdb[\xb4\xb8\xa9\x18\xde\x8e\xd6\xad\xfd\x92\x92\x92\ +\xfe\x89\x94\x1a\x83\x8d.7\xd8\x03\x9c\xba\xb2H\x11\x92\ +^OVK\xb2\xd7\xaf\x7f\x1fY,\x9d\xffk\xe7\xb6\ +\xf2\xa8\x83\x8aR\x0c\xec\xfa\xc6\x8d;\x0f\xf6\xed{\x82\ +\xee\x91\x0d\x10A{l\xe8\xd7W\x10@*\xcd\x00/\ +\xa6U\xbd\x97\xc1}\xdc\xef\xbb\xb8l\xb4\xabT)\x08\ ++\xdc'\xc7n\xddJ\x8a\xff\x1avw\xeatR1\ +8te\x89\xc35\xc1\xb6|\xf9g_\x92\x93\x97F\ +\x04\x05\xad\xc2\x92\xdfD\xbb<\x88\xb4\x0c)Egy\ +\xbe|\xcbD\xda\xc0`\xa3\xab\x02N\x8f\x0b\x0b\xb3\xc0\ +\xf5g\xf1_\x02\xb5\xa7\xc5\x0a\x97`cd\xf4\xf2\xda\ +\x86\x0d\xbb\xc8\x88\xd4\x8aM\xc5\x8b\xbf{x\xe4Hg\ +\x18[\x03\xb0\x80<\xe8\xb6\xc4\xaa\x16\x86\xe7K\xaen\ +\xdbV\x02\xda\x16\xeb\xe3\xc3\xc3\xe7\xcb\xae.i\x05\x83\ +e\xda\xeb\x81\xb9\xffkn[\x1f\xea\xa4\xf9\xf4\xec\xd9\ +\xf5\x10\x9b\xd9\xa7n\x08\xd1\xa4\xc9\x9du\x95+\x07\xee\ +\xeb\xd1\xa3\x9a\xb6L\x1a\xb6\x99\xb7\x95R\x8d\xc3\xa3F\ +\x0d$\x83\x14\x7f\x0f\x0c\x06\x03\xc1\xc8c\xe7\xe6\xcds\ +\xf1\xdf\xb1c\x11\xb5\xb5\xc5V\xf2\xf1\xe7\xcf\x9f\x17\xc1\ +\x90\x16\xa7\xd6\xae6).n\x0aIe/\xd3\xd7\x8f\ +\xbd\xb0jUu\x91f0\x18\x5cv1\x17\x86gK\ +\xba\x84\xb2\xb5Qm0\x0f\xa8\x12Z\x80\x03\xe5\x0fZ\ +\xe1\xc8\xcd\x8b\xe7]\xffJ\x01\xf8\xff\xab\xf42\x18\xbc\ +\x97\xce\xfb\xf0\xe8\xd1\xd2\xef\x1f>\x5c\x8d\xfb\xc1Z\xde\ +\xc8n\x147Y D\x11\xfc\x5c\x18\xfc\xb0\xbaH\x91\ +\xd7I\xf1\xf1\x0b\x14\xa1\x19\xad\xf7\xf3\xcbt\x9e:\xb2\ +\xebf\x12x\x05\x1c%\xfe\x07\x0c\x06\x1b^KP_\ +\xeb\x8c7Wfv\x87\xe3z\x01L\x81Z\xd3n\xbc\ +\x97Z8@\x85\xe7\xa1\x14\xd4\xc4\xf5-\xc4CC\xe0\ +\x01u\x86xh\xb0<\xf7\xed\x07\xff$S\x86\xc1`\ +C,O\xdeK\xe8\xcc\xbf\x92a\x83\xc4\x8b+V\xac\ +\xc3x\xaa\x86\xb3\xa3M\x9b\xe9f9r\xc4\xd3\xbb6\ +\xe5\xca\x85\xa2\xee\xc9\x22>\x22\xc2tg\xbbv\xd7i\ +\xcb\xba\xaaT)C\xf1\xa7`0\xd8\xe8\x1a \xbdk\ +\xc1\x89\x89\x13OZ\xe4\xca\x15\xa7\xacV\xa9\x09\xc9\x5c\ +03\xebJ\xc1r\x0a\x9a#s\x85\xf4/\x92p\xee\ +\xb3\xfa\x9c\x988\x98\xe2z0\xd4\xa6\xe2/\xc1`\xb0\ +\xd1\xe5\x02\xbb\x86?\x7f\xbebw\xc7\x8eW\xd0\xf0\xe1\ +\xbe]\xe3\xc6\xf9S\xcd\x0e\x876}\xe0\xa9S\x1b\x9e\ +yz\xae\x83\xa2\xef}l-\xa3\x97\xe7\xc9S\x82\x94\ +|\xd3\x96\x93\xc9`\xb0\xe1\x15\x03\x87\x81\xa6`\x03\x19\ +\x10\xa7\xfc\xb8\x91\xb8v\xa6\xd5og\x87\x0eW\xe4;\ +\x95\xc0\xc9\xc9\x9f>\x99)g><\xef\x03\xfe\x1d\x01\ +\x1a\x06\x83\x1b2Be7\x0c\xdc\x8b\x9b\xcd\xa0\xbf\xcc\ +\xf5\x1a\x05\xee\x04O\xa2\xb9_l\xcf\xad[/`\xf8\ +,\xde{F\xefe70p\xc2\xf5\x1e\x0c-'\xae\ +kAO\xfc\x91-n\x93p\xfdL[\xd0\xb4\xc7\ +\xea\x18\x0c\x96O\xeb\xf96 \xc0\x92J{\xd4\xed\x8f\ +\x84\x88\xa1,\x95\x035\ +nkjzY?o\xdex\xfd|\xf9\x12\xc7\xfb\xfb\ +\xc7\x08]\x05\x83{{mi\xd0\xe02\xa4\x13\x1a\xe1\ +g_\xb0J\x16m3\x0d\xe5\xb9m62Q\xfa*\ +\x15\xe6\x07\xfa\xf6\xbd(\xcb\x80\x94\xda\xbcx\x94\x0b\x1d\ +\xa4J\xf3\x1b\x9b7;\xa2\x8a!\x0ac\x1f\xa4\xb2\xaf\ +\x22\xb5\xd6Z\xe8\x10\x18lh\xd60\xac3\xb8\x86A\ +\xfb\xef\x03\x94\x91V \xd3\x83\xee\xbf\xec\xef\xdb\xb7\xbb\ +\x0e$I\xab\xdc\xa6N=\x80\x7f\xd3G\xa8\x82\xbd\xc4\ +\xbd\xfeB!J\x90\xc7rK\xc3\x86we\x13\xf8_\ +\xc0\x8ew\xf6\xec\xb1\x92^\xcf\x14\x92}@\xad\xdeL\ +\x9d\xaa0g0\xe0\x09\x9cC\xeev0\x05\x8d\x13\x02\ +w\xb6ooO?#s\xdf\x9b\x14ou\xc4\xb1\xd2\ +\x02=\xa3\x97E\xbfzE\xfd\xa4\xa9\xf4\xa7(\x98\xb2\ +\xadi\xd3\xdb\xb8/($|\xd7\xad\xab@\xe3dt\ +\x10\x9f\xd9\x8cg5\x85.\x80\xc1\xa0s\x1a\x0e?\xa5\ +\x1c\x9a7'\x83KYY\xa8P\xa4\x868P,\xfe\ +\xb8I\xb4\xa5\xa4\x0ey3\x0b\x83M\xe4\x8a\xa5ZS\ +\xb2\xe4S\xf9E\xf1\xab\xc6g\x9a\x01\xa6lo\xd5\xea\ +&\xde\x1b%uXjb\xcc\x02+\xb6-8\x08\xcf\ +\x0dD\x16\x80\xc1\x06\xe7L\xe2\xad\xb8Fa\x95{\xf7\ +\xf1\xcd\x9b\xe56\x86\x86\xa1\x8a\xd1\xad\xabV\xcdE\xe8\ +0|\xac\xac\xa6\xe0\xcc\x16CF\x07Cz\x09\xde\x94\ +_\x16\xf1\xef\x1f<\xa0\xe2\xd8\x92\x18\x9b\xa0\xac\xde\xca\ +\x15c\xcf2\xdd\x13\xcb`\xb8\x8e\x1c\xd9\x84\xfe8\xc9\ +\xb8 _\x17cW\xa5\xcaI\xb5\xdb\xbd{w\x9f3\ +3g\x1eE]\xdb\xec\xbf0\xd8\x8a\xf3\x85(\x90\x85\ ++^\xfe\xd77o.w\x1d6\xec,T\xc4|\x10\ +J \xe3K9\xd8\xbf\xff\x05\xcad!\x0dM\xf03\ +m/ON\x9e|\x0cFh\x89\xeb\x09\xbc\x97\x04\xc7\ +\xca\xbbLM\x11c0\xb0%\x9bH\x06\xb6\xa9N\x9d\ +\x87\xcav\x92d\xef w\xb7\x01\xabCop$\xa8\ +G\xb19\x8ae\x81m5\xb7cX)\xa2\xc1w\xe0\ +\xb8,\xdef\x0e\x07\x17\x1e\xe8\xd3\xe7\x22\x0c\xe9\x0b\x09\ +\x86\xba\x0e\x1dZV&<\xa7\x90\xb3\x85>\x17\x9c(\ +\x87_\xf8\xf8\x0c\xf7X\xb4\xc8Iv\xfb\x99\xfb'\xab\ +\x7f\xc1tK\x1fc0(\x03\x03\x86\x12\xb9\xb2`\xc1\ +\xd7\x10\xd8\x5c\xb6\xaeJ\x95@\xfac\xa5,\x0e\xc8\x97\ +{\x0b\x09\x18Y{%\xebC2\x82\xceA\x02ph\ +\xd6l%\x8da;z\x5c\x07\xcew*\xb0\xe9\xe3\x13\ +'6\xc2\xa3\xe9\x14\xf7\xe1C\x19\xd4\xd5\xa9\xbfP.\ +,[v\xf0\xf0\xf0\xe1'\x11^\xf8H\x9f\xd9\xbal\ +Y{\x1a\xdf\xd2\xa8\xd1q\xa1\x01\xd2a\xa1\xab\xdc\x86\ +\xc6J\x99\x88\xc3\xe9\xb1\xfddp(`\x12\x0c,\xf1\ +\xf6\xde\xbd\xdbv\xb5o\xbf\x86\x0c\xc7i\xe0@/j\ +\x82\x1e\xfb\xee\xddB\xea\xdf\x851C\x90\xe2Z\x9f\xa0\ +9ylO\x97.\x9eH\xad\x0a\xc5j\x91H\x86\x88\ +jn\x7fd\xfc'\x85^\xbbf\x83\xf7\x8b\x0a\x1d\x80\ +\xec)=\x16\xac\xb4\xa9a\xc3\xaa0\xba$T\x93\x07\ +?>}z\x14\x9d\xeb\xb66n\xecM\xdbL\xa9$\ +\xe6\xa4\xb1\xa2\xb5\x93g\xe4\xeaU[\xad\x9e\x00\x02[\xb0\xcddT!W\ +\xae\xccS\xa4\x0ep5\xd8\xd7\xb3\xe7I\x1a\x87\x870\ +\x22\xf6\xfd{S\x8c\x15\xd0\xe1\xcfY\xf3\xea\xda\xb5\xbb\ +\xe1}U\x87\x10\x88p\x10]\x87l\xdf,\x0a\x94\x0b\ +\x0d\xec\xea\xd8q?\x19\x1b\x04\x90\xdeK\xc3\x0bE\xf9\ +\xd0\xb0\xcfII3e\xc5z\xba9Y\x18,\xee:\ +P[\xc8\x15N\x86%\xd2\xa9\xb2_s\x1cN\x88\xa3\ +4~\xde\xd8\xf8\x10~\xa7\x8d\xd2\xc6J\xc6\xbb\x0cu\ +\xd1\xe8\xc0\x05/.]Z\x0b\xc7\xca\x99\xcd?\xff|\ +(2(\xa8\xa0\xa6\xc4\x9fL\x82\xfe\x88\xad\xe4\x8b/\ +_\xbe,\xf5Z\xba\xd4\x09\x8a\xd1a0\xce\xa3R\x9f\ +\xa5\x0a\xa8'2\x0a\x0c\xc6\xbd\x03\x07\xca\x91\x9a\x96\x8c\ +s\xed\x01IEy7\x98\x82f\x8c\xc1H\x9b\xa2U\ +\x82D\x5c\xe7\x81Q\x1a\xb1._\x13!\x1a\xe8`\xd1\ +km\xa9\x9db\x0cV\x95\x95\x11\x0bd)\xcf.\xfa\ +\x9ct\xa6\xc5\xb3\xfa`K\xac\x82\xc6X\xddL2m\ +ec0^\xf9\xf9M\xb7\xaf[\xf7\x01\x9c\x0f\xb1d\ +PJ\xda\xd4=g\xe7-t\xde\xc3\xfdh\x1aC\x0e\ +\xe6K\xac\x1e\x87\xe0\x94\xb8\x88w?\xe2\x1d\x8a\xef\xb5\ +\xd0\xd1\x15=\x9b\xc6\xaa\x16\x89\xebg\x99\x97y\x8b\x1c\ +.\x1a\xef\xe5\x03\xab\x89\xcc\x02\x83A\xe73p\x02i\ +D\x92{\x9d\x8c\x8bt$\xb1\x9d\xb4\x95[1\x7f\x1a\ +\x83\x91%\xef\xeb\xde\xdd\x1d\x8e\x86\xd9\x10s\xb5'=\ +J\xc4\xc3\xee\x09\x1d\xc7\x93s\xe7f\xdb\xd7\xabw\x97\ +>\x03\xc5\xef\xac\xcb\x95[J\xd2\xeb\x22\x0b\xc1`\xa3\ +\xd3\x03\x0d\xc1\xa6\xd77m\xda\x8c\xb3]\xb0C\x8b\x16\ ++\x05\x80\xac\x8d\x08J\x07C\xd8\xe0\x12\x85\x0b\xc8\xd1\ +\x00o\xdf4\xc4\xb8\xfc\xc8\x10ON\x9aT\xe8\x1ba\ +\x89\xa1\xa0+8\xddX\x88\x0aY\xf8\xd9J\x82\x13n\ +l\xd9\xe2\x88J\x84W2\xf5\xcb\xeb;S\xe5JK\ +\xd9\xf6\xb5`A\xf1O\xc1`\xc8\xf3\xcd\x1cp\x81\x00\ +,K\x94\xb8\x8dVT\x09\xf7\x0f\x1f\x9e\x1bt\xf1\xa2\ +\x1d\x02\xe8\xfer\xdb\x99@J\xca/}}\x9bh\xf6\ +\x1d\x00\xed\xf0|\x83\xccy\x0c\x92\xe7\xc38pL\x16\ +{l\xebC-z\x1e\xa5\xb4\x1d\xe8\xd7o\x07\xee\xf5\ +\xbf'\x19\x1c\xab\x7f\xb4\xdcz\xa7_\x1e*\x83\xfb.\ ++\xa1\x80\xb3\xf3\xe6M@p\xf83\xb6\x99\xe1(\x5c\ +\x9d\x1a\x17\x11\xf1\x07Jdv\x22U\xec\xe5\xc6Z\xb5\ +\x1ek\x86\x1a\xd0+@\x1d`\x97\xfd\xc0CH\xf0\x95\ +2C\xd6\x94(\xf1J\x8e\xb7\xd2\x81\xcf\xd5I\xd6\xd7\ +\x95\xf8\x0e\x83\x1b\xa0|\xbe\xad\x8d\x1a]&G\x8dH\ +g0\xd8\xf8\xf2\xa1:|\x1b\x9c&1J\xea\x17\xb6\ +\x9c.8\x1bY\xbe\xbd{w\x0d)si\xbc[O\ +\xb3\x1aa\x99\x81\xc1S\xa7\xfe\xfd\xc7\xc5\x86\x85\xcd%\ +7|\xd0\x85\x0bm\x7f\xe0\xca\x0b\x03\xac\xd2At\xbe\ +\x95\x95\xe9\x94@\xadR\xf22\x97\xe0\x92^[g\x06\ +\x1b]\xe5\x84\x98\x18\xe3\x0b\xe6\xe6\x07\xd0z\xd8\x8f\xce\ +r\xc8\xccX\xac\xdd\x88C\xca\x96\xa7\xc0\xb9\xe2}b\ +\xf2\xe4\x93\xd8\x8a\xaaKk\x90\xc9\xd1J&K7\x14\ +\x1a0\x11\xa2+U$\xfc \xa9r\xc6dhH\x93\ +\xbbFW\xb4W>\x22\x8d\xad\x15\xf8B\x9e\x0d?\x81\ +\x83\x04\x83\x91.Y\xfbr;\x96\xf8\xf1\xe32\x5c\xa7\ +\x08\x80<~$\x87 c^O\xe1\xbd\x8cDa\xab\ +9\x9e\xf7\x08\x7f\xfat\xc5\xb9\xf9\xf3\x0fE\x05\x077\ +He\xc5\xc8K\xc9\xc3`\x1c\xf5\x0a\xd7\xf5Dp\x19\ +4\x0f\xf241\xd9A\xc6\xe5\xf6\xc7\x1f\x8e\xb8Z\x80\ +\x9f5\xb6\xd1\xef\xb0\xcd6\xc7\xfd\x1cp\x98Z\xf5\x9d\ +\xc1\xf8\xa71.\xd9\xf5\xc6H\x1a\xcef\xf9\xcd~\x9e\ +V\x80\xb3s\xe6\x1c\xc1\xb3\xf6\xf2\xdd\xa2\xe0\xaf`=\ +\x0dC\x1b\x8dw\x7f\xc75\x9b\xcb\xb0aS\x91\xaby\ +\x8a\x12\x91\x85\x8eB&=\x1f$\xfd\x97\xbb\x07\x0el\ +E\x1c\xd2T\x86\x18\xa2\xa5\x91=\xc1\xd95\x11ip\ +\x1f\xa3CCW\xc4~\xf8\xb0\x04\x0e\xa5\x00\xb9\xe2]\ +LWu4\x06c\x7f\xaf^?\xe3\x9b\xff\x81Rk\ +wz\xfa\xf4\x03\x81\x81\x81\xdf\xf4\x00\xe2\x9d\xb3r\xfb\ +u\xf3\xe8\xef\xbf\xff.\x93\xa6K\x0a\x1d\x84\xb1\x10F\ +R\xfb2\xc5\xb6B\x85\xe7\xc8\xbc\x19k\x9a-\xdb\x22\ +%9\x00\x09\xd0gP\x97\xe7N\xf7\xe4\xfd\xc4\xe7\xe8\ +\x0c\xe6\x83\xca\xf4^Y\x91\xe0\xef\xd8\xad\x9b\xfa\xb3\xc9\ +\xdey\xff\x1c\x0c\x0e\x9c\xe3\x0fq\x9a\x97\x99\x99\x13U\ +\x19Hc\xba\xaa4\xef\xd0\x06d\x1e\xda\xec\xee\xdc\xf9\ +*\xbd\x87\xd2\x9f\xd3\xba\xae\xb8ur\xea\xd4\x158\xaf\ +\x86\x93\x01\xc1\xdbj\x8d\x1a\xc1\xaa\x0eM\x9b\xde\xban\ +o\xbf\xf3\xed\xbd{+\x11\x1a\x89\xc5\x195\x04)b\ +s\x94P\x83U\x992\xd3\xe9}Z\x11\xe9\x9c\x8b\x9f\ +;\x81Q\xe0\x22\xdaz\x8b\xf4\x00\x83\xfb\x81\xa3\x95\xb0\ +\x89\xcb\x90!\x1e\x88\xbf\xc5\xac.Qb\xd07\xde\xcd\ +i]\xa6\x8c\x1f\xc5\xf0\x9e\xb9\xbb\xdb\xe2\xbe\xa0\x8e\x7f\ +\xb6\xba\xf4\xb9P\x06\xe4\x86\xaa\x84\xc9\xb8\xcf\x85x\xe4\ +\x02\xa4\xc4-\x5c\x91/\xdf>r\x0a\xf9;:n\xc7\ +\xf8\xcfB\x02\xdb\xcb~dp\x90{0\xa5\xf3-V\ +\xc9mt/WvW\x91^`p\x08\x01\xecK\xd9\ +\xf8\xb8\x8e\xd48\x07\xd5\x07\x0d\x149s\xa5\x1e\x0d\xef\ +\x0cI\xe5\xcc\x94SG?W\x1fp\x84\xfc\x0c\x0f\xc8\ +\x89\x02~Al\xf2\xb6\x14\xb4Ui|\x86f\xea\xf3\ +]\xd1\xa2\x8fp\x8dW\xb6\xa4G\xc7\x8e=}z\xe6\ +L\x1b\xac\x8aN\x18;\x07\xd6\x11\xe9\x04\x06w\xcd)\ +\x22\xcfA\x95\x14%-\xa9\xfc\xfc\x88\x1c\x0e\x10\xa3\xb5\ +P\xdeQ@\xed\xac\xe4\x1f\xf2e\xbc\xa7\xb3I\xc5'\ +\xa6L\xe9\x8b4\xb1\xe7dH\xc8\xbcy\x06c+\xa7\ +\xe5hiB\xcfdH\xe4\xaa\xdf\xd6\xad\x9bd\xbd\xdd\ +\x14\x22b\x9a\xe7\xe8\xb9\xec\x87\xb7\x5c\xa4'\x18\x0c\xe8\ +\x8d\xac2\xcf\x95+B\xd9V9\x0f\x1a\xe4I!\x86\ +\xd4\x1a4\x22v\xf7\x9a\xde\x81\xe7\xef$\xae[\xc1f\ +:\xb8\xe2\x95\xc6\x99m\xb6\xc7\xc2\x85.\xa7g\xcc\xd8\ +G\xdbd\x0a\x8f(1E\x18\x11I7$\xdf\xda\xb5\ +\xcbA\x1a\xdah\xb0\xb2\x12@G\x22x\x94e\xc9\x92\ +\xefP\xa5q\x0f\xe7^?\x8d&+\xe9r\x9ee\xf0\ +\x8a\xd7\x10\xce\x12\xb3\xfd\xbd{SiO2y3a\ +P[\xb4e\xecp?XQ\xe1ZS\xaa\xd4\x13*\ +\x01\x92\xba\x9a\xedt\xd0\xe8r\x82\xed\xc0?\xc0\x22$\ +'\x0f&\x83\xc7\xe4\x96\xd9Gn5\x8d\xb4>\xe3(\ +z\xee6m\xdaq8\x9bf\xa37\x9e9\x85Y\xf0\ +{\xb7h\xab\x0av\x11\xe9\x00\x06\x1b]A\xf0\xd7\x17\ +\xde\xdek\xe9\x9b]\x86\x11\x96k&\x06\xc3\xb8\x82-\ +\xf2\xe4\x89\x80\xe4\xf9rZ\x19B\xaf_\xb7\x81\x870\ +\x12F\xfaF\xe88\x8e\x8d\x19\xf3\xd3\xfaj\xd5\xfc\x94\ +U\xdc\xf9\xd7_=\xde<}Z<\x95\x8c\x95\x1b\xa4\ +\x15\xfa\xe1\xc9\x13c|\xfe=\xf8lA&B\xfc\xb2\ +\xa9n\xdd)\x18\x8f\x91\xdb\xef-\x22\x9d\xc0`\xc3+\ +\x0fN$\xa1\x1f\xe8\xa5P1(\x89\x19\xcd\x07\xf7\x91\ +\x11\xba/X\xe0\x8a\xe7\xdd\xc1\x22`\x05x4_P\ +\xed]ttt\x11\x1d\xff\x5c\xb9\xc0q\x14.\xc0\xea\ +\xfcV\x1a\xde2\xa1\x012,\x1a\xa7\xb0\x02D\x9d\x14\ +\xe3\xa4\xea\xfa\x09\xc8WmM+;\x09\xf6B\xc6}\ +3%\x18\xe0Y\xe1\xf4\x12\xb3e\xb0\xc0Q\x03\x19\xa3\ +2\xc0\xd6\xf1\x85,\xe7I@B\xb4\x89\x92\x85\x8f\xb1\ +64\xbe\xabS'_\x8c\xd5\xd4L\xb5\x82\x83\xa56\ +\x9e\xe5\xd7\xc1\xcf\xd5\x10e@\xf3\xcf\x9b\x98\x1czt\ +\xfc\xf8X\xad\xed\xe4n\xe5s\x92\x87\x13a\x85p\xba\ +\x0f8t\xc8\x04\xd7K8\xf7%\xdd;x\x90*\xed\ +\x17\x82%1\x16\xa8\x08\xf1\xa6\x9bh-\x83\xf1\xfa\xf6\ +\xed\x11\x14\x0c\xa72\xa0\xed\xcd\x9b/U23`P\ +\xb7\xa9\xe9\x08\xb44W\x91k~\x81\x10\x85\xb0\x12\x9e\ +\xd0\xe8!\x10\x87\xab\x83\xae\xad\x02\xa4|&\xb3N\xfa\ +\x0a\x09\xca\x17\x85\xd1$(\x15\xf5p\xb8\xec\xb5\xfb\xe9\ +\xa7gT\x85n_\xbf\xbe+\x8d\x1f\x1b7\xee8\xad\ +\x92J2\x00*-\x86\xad,P\xe0\xb5\x5c\x09\xfd\xd3\ +\xb3\xd3+\x83e\x1e\x86B\xbea\x05\xae#aH\xb3\ +\xc1h\xd9\x92\xf84m1\xe5\xf9\xc7\x8b\xc6P\x02\xe4\ +\x8b\x1cLgl\xc5\xee\xc84+\x7f]\xcf\xe0\x80\xc1\ +\x8c\x00S\xcc\xf5\xf5?\xd1\xb6\x93\x1c&\xa4#CJ\ +\xd8\x14>@\xd23u\x03\x9a\xaf\x99\x08@[\xeag\ +\x9e\x9ek\x94~xD\xdaz\xcf\x16\x22\x8fH\x070\ +\xd8\xf0*\x81F\x96e\xca\xd4A\xb6\x86\xba\xaenw\ +\xc7\x8eT\xe8\x99[J\xf4\xa5\x10!\xf8\x1a\xee\xbep\ +\xa1=\xc6\x17(\xb9\x8c\x88m\xcd\xd5\xf5l\x9c\x8b\xcb\ +\x97\xefxx\xf4(\xc5\xe4\xa6 \xdf\xb2\xa1bD(\ +\xe6}G\x89\xcf\x18\xaf*\xb4\x00\xa3}\xfa#\x8d+L\x13\x92\xf0\xcbjg\ +\x0b\xadV\x1aAq'\x8d\x15\xeb-\x82\xfeoI\xda\ +\x82V\xfbT\x02\xe8\xea\xb3\x1dmG\xf1\xf9\xadm\x8d\ +\x8c\x14\x99\x87\x99\x22\x1d\xc1\xe0\xf8]\xf77w\xeeX\ +Q?8\xfcA>\x87\xd1\xc5\x1e\x197\xaeYZ\x15\ +\x94ap\xeb\xa4\xd7\xef\x09\xaee\x85\x0e\xe0]@@\ +=\xac\xd8\xe7i\xc5\x22\xe3Y_\xb5\xea\xd3\x07\x87\x0f\ +\xf7H\xe5l\xd7\x9a\x9e;\xb6n}]6\xd5,G\ +\x0dY\x90\xa5\x13\x8b\x5c\xd4\x0f\xe9\x1e\xb3c\xb0\xa8\x11\ +8\x08\x5c,\xf5U\xd2\x1c\x9f\x82\xa7\xf3\xa0\xe2%\xdc\ +\xdf\xbf\x7fC\x1d\xca\xcf\xecG+\x16\xa4\x1c\xeeJM\ +\xcfh\xe5|\xa6\xc4'1v\x0b\xc5\xbb\xb1\xef\x1f>\ +\x5c\xad\xc8\xfd\xe1\xaa\x8f3\xe1e2\xc4\x8bVV\xe5\ +\x04\x83\x91A\xe9Tu\xc0|\x22\x0d@\x88\xe1gE\ +:\x81\x88\x9ex\xbd\x84\x04b\x0b\x14`/\x92\xc5\x86\ +W\x0e\x1cwk\xe7N\x07\xc8\xb4\xdfp\x1e8\xb0\x8b\ +R+\x08\x8e\xd7\x88O\xf6\x10\x1a\xc0\x0aw\x9d<\xb6\ +X)[h\xac\xe4u\xc0\xb1\xd4\xf55+Vr\x06\ +C\xa5N\xa3\xd2\xd3K@\xeb\xe57\xd4\xe1\x95\xdc\xf5\ +\x1aulOe+\xe2\xb1:\xb0\xe2\xd5\x03g\x82C\ +(\xd8-k\x05\x93\xd5g\xbb\xd8\xd8E\xd2I\xa4\x18\ +VIl\xaf\xe3\xa81\x0b\xc6\x1bK\x1dM'%+\ +G\xa3\xfen=\xeb\xab02\xd3\x1d\xff\xab\xd2\xd9\xd5\ +\xa6\x5c\xb9\x17\xa4\xc3\x12\x1b\x19Y\x0fcK(\xc4\xa0\ +\xaczr\x05,\xad\x0b\xe2\xae\xb2o\x9dj}\x8d\x1a\ +\x9b(\xdf\x12\xfc\xb2\xb6R%\x8a\xc1\x15\x97E\xbe\x15\ +`H\xf7)#\xc5\x7f\xfb\xf6\xed\xb1\xb1\xb1\x94\x87\xe9\ +\x02\xa6 \x91\xfa6r:\xd7\x93\xbe\x0a\xad\x96\x8aL\ +;\x15\x03\x8b\x0c\x06\x83\x8d-7\xf8\x02\xf1\xbbp\xea\ +\xecj\x9e;w(\xf5\xc7C\x96\x8a\x9f\x145\x8a\xa5\ ++Je\x1eRsG\xbbJ\x95\x1c\xa4\x01\x1e\x05K\ +\xeb\x80\xe1\xb5\xa2\xfe\x0e\xf4\xef\x93\x86\x93@\x82M`\ +8\xdd\xbb\x0e\x1bF\x92\x83c\x95/\x95mM\x9b^\ +\x91\x81\xf2\x81`[p\x02T\xd6.+_(\x14<\ +\x17\x19\x04\x06\x1b\xdb2\xac\x02o4;\xbb\x92\xe2\x96\ +\xb2\x9aAQ\xf9,\x0cL-eN\xc6\x86\xe7]\x1f\ +\x9f=[\x8fV\x0d\x99\x11\xb2UG\xce\xad\x15\xc1I\ +t\xbeC\xbf\xbb\xab\xe8\xe2\xfa\x002\x0e>>\xd6\xd6\ +;e\x95Aq\x0a+\xa0\xa4):.,\x8c\x8c\xad\ +\x81\xd0\xc0\xd9\xb9s'Kc\xa4\xdc\xcdF\xf8y\x15\ +\x8coe\xbaV^0\x18\xab\x8b\x17\xef\x85\x00\xb9:\ +!\x1a[+\x7f\xe7\xc9\x93\xf3\xae.Z\xf4\x1e\x09\xb8\ +^\xb5\xb3\xdbu\xd1\xdc|\x1f=C\x7f\xf3K\xe4\x01\ +U\xf2\x1f\x91\xcd\x1f\x83\xc2\xd2\xa7\x90T\x98\x86{\x15\ +u\x08R\x84l\xb3X\x8c\xb7\xa1\xd4H1\x95\x9c\x04\ +\x1aQ\xe5\x04\xf8\x15\xf1\xc9k\xb8o#\xab.zQ\ +\xa5\x85R\xb5\x80\x8a\x0c\xef\x88\xe7\xcfW\x92T\x04\xbe\ +Hv\xcb\xd5\xf2-8:]>\x17\x83A\xee\xf3\xb0\ +\xc0\xc0\xe5\x08\x94\xfb\x22$\xf0\x1c\xa51\xc5\x92\x93\x93\ +{Q\x85B\x5cd\xe4\x0c\xaclA\x1a2\xed\x85\x84\ +\x04\x0aB\x83q^zA+\x05y\x09\x11lV\xb6\ +s\xbe`q\x1d\x91\xa0\xcf\xaf\xd1X\xc4\x80Ve\xfb\ +\x9f\x7f\x0e /.%}\xcb,\x940<\x9bH\x06\ +(\xd3\xe5:\xcb\xec\x1d+28\xc4\xef\x94\xd5\xfe\x86\ +\x89\x10\xcdE:\x80\xc1FW\x0c\x1c.W\x84&X\ +\xddZ\xe2\xfc\x16\x08'\x84\xab\xb6L\xbb\x02\xa4N\xdd\ +\xa6\xea\x04\xd4\xa5\xcd\xc5;!`\xca\x8a\x02\x05\xa2\xf0\ +\xbb\xefV\x97,I\x92\x7f\x8b\xa5\xe8\xad\xce\x00+\xf2\ +Ei<\xa6\x02p_\xb4h5y6\x15\x83RV\ +;\xba\x92!\xe23\xbe\x87\xe6\xcc\xf2\xc3#F\x9c\xc3\ +96^\xaex\xfb\xd3\xebs1\xd8\xf0J\x83\xd9H\ +\xc2\x0f\xf5i\xc1dD8\xcf%\xbd\xbc~\x9d\x82\xe8\ +9\x85\x06,\x8b\x17?\xaf\xd1~\xeb9*\x18\xf6$\ +\xc6\xc5\xd1{\xa6\x10\x022S\x0aaA\x13]Q\xdd\ +\xba{\xf0`\x1fH8\x84I\x03\xdbup\xc0\x80\x09\ +\xa8\xb2P\x1b!*-n\xec\xed\xd6M\xe9\x0b\xb1\x96\ +\xc6\xce\xcc\x9au\x14\xfa1\xbd\xae\xae_?\x1d\x15\xf7\ +\x96x'\x88\xc6\x97f\xcf>_0\x18\xe9y\x16\x8a\ +\x8f\x8c\x9c\x874\xb1sp>D\x1d\x1e9r\xa2\x90\ +PV\x00j\xb9\x8cz\xb5H$K\xef\xa5>\xe82\ +.\xd6\x04,\x05\xbd\x95\x81dp\x088+\xbd\xf3&\ +\xeaJ\xed]\xe4\x8b\x17sQA\x11\xa0\x19\x87\x93\x1a\ +\x9a\xa6`+\xd2\x00\xc5X\x92t\x08%RX\x01\xbc\ +\x15\xe4\xe5U\x9e\x1c.\xb4\xaaS\xf3M\xbc\xabh\xce\ +\x0cJ\x972 \x06\xd7\xde\x81\xbd\xc0%\xe0\x10\xd9F\ +\xeb\xac\x5c\xb16\x83)T\xfc)\xe5\xf0\xea\x83z\x1a\ +\x09\xc4\xa7\xc9\xab\x89\xf2\x19K\x92;\x8f\xfb\xf0\x81$\ +\xce\xab\xd1\xaa\x82k}\x1d(o\x1a\xf5\xcc\xc3c\x1d\ +*\x0eNoo\xd1\xc2\xeb\xb1\x9b\xdbF\xa4\xc2\xd5\xa1\ +\x95\x98\xfe\xed8\x8f&S\xa3L\x88\xda\xbe$\xc3\x83\ +\xcc\x85\xc73?\xbf\x02\xb8?I^P\xfc~s\x8c\ +W\xc1\xbb\x89\xd2h/\xa5\xd7\xe7b\xb0\xe1\x15\x07\xf3\ +Q\xf5\x00\x9c'\x17\x95U\x01\xabX\x08\xe4\x10\xa6\xa4\ +R\xafFZ\x92_\xb66ir'\xf2\xe5\xcb\xfe8\ +79\xa1\xf1\x07iN6\x83c%\x8e\x9eI!\xdb\ +\xdcY\xec\xcd\xac\x0d\x8e\x00g\x81\xc3a0{I\x98\ +Hm`\x9d:]\xc1\xd88h\xaa\xdc\xa0\x15^:\ +\x8c\x0a\xca/\xa0\x89 y8O\x92a\xd2\xbb\x94\x9d\ +#\xb3U\xb6\xa5[\x0c\x8f\xc1\x80\xf7\xb2?\xc5\xea\xa0\ +\xaa\x15IF\x07O\xe5eRV\xd6*\x8f\xb1\xa6g\ +\x97W\xae\xdc\x8fp\xc3u\xa9\xad\xf2\xc1\xcb\xcb+;\ +\xa4\xfe\x9c\xe4}\x92Y\xce\x9c}\x85\x0e\x01\xd9*\xbd\ +\xb0eT\x9f\xef\xd0::\xd8\xa1U\xab\xb6W\xd6\xad\ +kL\x1a\xa0A\x97/\xf7%\xcf\xab\xac\xd5\xcb\x81\x03\ +\x5c\x01Z\xddp\xe6\xa3P\xc9l\xca\xce\xd1H\x13\x8b\ +\x02\xe7\xa4W/\x08\x06w\x03jC\xd9(H\x1c\xf6\ +D\xce\xa5\x1f\xae\x0543V\xb0\x8aE\x22F\x17\x8f\ +\x95\xe1-\xadf\xb2\x9c&\xd0\xdb\xd2\xb2\x1eV\x82\xb7\ +d\xacH\x8a^C\xd9\xff&B4\x92\x0d+{\xe8\ +\xc0g+\x83\xcf\xb5\x84\x8c\x87\xcen\xb4b\xe1K\xc1\ +\xf1\xe1\xf1\xe3\xbf\xe13\xdd\xa3\x15Mh\x00\xa9b\xd3\ +\x92\xe2\xe3MON\x9f^\x1d\xde\x5c\xea\x02\xfb\x0a\xbd\ +\x12v\xc0\x99\xf4J\x1a\xde:\x91\x1e`0d|k\ +\x00h\xaa\xd9\x9f\x5c\xa9\xc6\x96\x0e\x87OT\x9bG\xf7\ +\x946\x05\xaf'\x15\xc8&\xcb3\xd0\xaf`q\xd2\xd0\ +\xc4{\x8a\xd7\xf0,\xae5t@%\xad\x7f\xe8\xb5k\ +6p\xac\xdc&\xc7\x8a\x92G\xea:b\xc4NZ\xdd\ +\xb4J\xa1jI9B\xa55W\x1ft\x03zJz\ +,\x81g\xce\xcc\x90\xe7\xda\xf4\x03\x83e\xfc\xb4\xb6\x93\ +\xb7\xa4w2\xf6\xee\xfe\xfd[\xdc\xa6L\xd9C\xf7H\ +\xb1z-s\x1a\xdd\xe4\x19(\xbb\x92|\x1c\x15\x12\xb2\ +dC\x8d\x1a\x8f\xa5\xa1&\xc1\xf0\xech\xcb\x96\xc5\x86\ +g\x08\x8e\xa7\x84g\xcb\x12%B\xd0p\xf2%Dl\ +\xe7i\x87F\xb0B7\xd0h\xcd5\x0e\x8e\xa2\xf6d\ +\x9c\x07\xfb\xf5\xbb\x80\xfb\x0cM\x82f0T\x9b\xea\xd5\ +[\x84\xf3O\x08\x5c\xe8v\xf4\x07\x8b\xad\xa5\xbd\xb2\xe2\ +\xc1yr\x07N\x96\x85\xda\xad\xb8|\xb7n-\x8b\xb3\ +S8U'l\xa8Y\xf3\xbe\x92\x14\xad#U\xf4?\ +#um.U\xd2\x93'V\xa3\x9bOy)E\x7f\ +\x99\x1c&t\xce\xa3Z=\x8c\xe7G\xee\xe9\xb1\xf8\xa8\ +(SZ-\xff\x8b\x89\xb9\xadD\xa6\x81!\xc3\x03\x8b\ +e\xd6JN\xc5iB\xc6\x14\x11\x14\xb4J\x91e\xd7\ +Z\x15\xcd\xe9\x1dj\xcd\x8c\xe7\xf3nl\xde\xec\x18\xe0\ +\xecL\xa1\x88\x1c\x187\xcc\xeat*\xaa\x18\x07\x9bi\ +\xa4\x88m\x92+\xb1\x1b}6:\xcb\xd26T\xe3\xfd\ +Q`\x13\xf1_\x04&\x98'2\x1bl|\xadC\xae^\ +\xb5\x95b\xadz\xd2\xc8\xf2\xa6\xa6\xb0\x85\xe7\xd5\x85\x16\ +\xd6U\xab\xb6@\xd9\x92\xca~xK\xc1l:\x108\ +\x9fx\xc5\xd6v\x0f<\x92\xef\xff\xe9\xdf\x16\xad\xe2\xa4\ +\x92\xf6\xaf\xe8\x06D[\x14\xc8\xa9-A\x90\xf6\x15\xf6\ +\xda\xf1\x9c\x82\x93%\x01\xe6\xc6`Ail\x0d)~\ +\x05\xba\x82#\xc9\x90\x90\x95\x7fM\xe9{\xae@1L\ +\xc4\xeb^\xa3\x106\x9cVHZ\x05\xa5\xe1\x1d\xd0\x91\ +\xcf\xf5\x0b\xc99P\x5c\xf2\x99\xbb\xfb\xd0\x7f`p\x13\ +\xa5\xd1\xbe\x06{\x89\x1f\x1d\x81\x81\x81\xfa\xc8b\x7f\x09\ +F\xc5\xc7\xc7\x1b\x8a,\x03\x83\x82\xc1\xeb\xabWw\x85\ +!}\x96\xc2\xb5_B||l\xa4\xc2\x96\xf6\xbb+\ +\xc0\x14(I\x1f\xa0\x98]Bt\xf4L\x1b#\xa3\x97\ +4f\xa6\xaf\xdfVGV\xf0\xdc`W\xb0\x9b\xf8N\ +\xe0\xefr\x86l\xd5\x15\x87R \xf2\xf2fG\xb8\xa4\ +\xaa\xf8Q\x81\xe5z\xb8tI\xbbk\x1e\xda\xe5\x81\xbc\ +=)U\x89L\x03\x83bU\x08&oZ[\xb1\xa2\ +z\xc5\x82'3\x1c\xf3\xd0[\xcb\xd8*\xd2\x16\x12\x95\ +\xe6\x81x\x7f\x1a\xa8G\x843e\xb6\xf4x\xee\x11:\ +\x864\x0b\xe7j\x97\x01\xa1\xbb\xed\xa7\xc8H\xb3UE\ +\x8bZ\xca:=\x0a\xa9\x94\x14?\x12`Lu1q\ +\xaf\x90\xf5\xf0\x9e\xe4\xbf\xa9?\x99T\xa7Z\xa7\x044\ +%\x1fd\xaa\xe1\xb1\xd1UC\x88`\xfa\x05\x0b\x8b\x83\ +\xa8G{\x07\xe7\xd6c-\xcf\xa5z\x15$\xc3\xd4\x14\ +\xb2E\xc8\xe1\x17\xf56\xb4U+/\xa1\x85\x99B\xe4\ +\xca*\xd5-Z\x95@opVZR\xba\x942\xa0\ +ss\xe7\x1e\xa6zC\xf0\xe73\xc6\xc6\xe5\x10N\xf9\ +(S\xe0\xae\xfch[\x98\x14\x8d\x0f\xd4BN\xa6\x09\ +\x8da\xa2\x9f!\x13\xe2\xb0C\xf3\xe6>\xd4C\x1a\x13\ +\x1c\x83gC\xa8TV\x0f5'\x12\x86\xc9.\xcb/\xc2 \ +\x91\x16\x14\x17\x1en!\xf5.fQy\x06*\x95\x95\ +\xda-\x17\xadI\xee\xa31\x99C\xd9\xf1\x92\xfe=\x04\ +\xc0\x06`\x0er\xa4(\xf9\x97H\x0c\xbe\xfc\xe4\xcc\x99\ +r\x1a\xbb\x95\xaax\x16\x8cy\x8aF=\xdaT\x12\xa6\ +\xc5\xbdZ\xde\x0e[2\x7f\xa8+\xbb\xc2k\xf8P\xae\ +\x0c\x1eR\xfcG\x95\xc9\xe5L}\x82.]\x9a\x8cj\ +\xf9\x032NW\xedO\x16\x8338\xc3R\xc7W\x17\ +8\xf5\x94\xfe\x07\xcf\xc0\x97\xa4\x9e\x86/!\xaa1\x1c\ +\x0c\xe6\xfa\x91&s\x04mK\xa0\xb8;\x9f\x0c\x8e&\ +I\xc9\xed\x93\xf2h*\xf9^\xc9-\x8d\x1a\xf9\xd1\xb3\ +\xcb\x96\x96\xf6\x14\x03\xd2\xf4H\xa1\xc8r\xa7\xa2mA\ +\xfa\xf5\x22\xc3\xc0R\x0f\xa4\x13\x89\x06\x1c!r\xc5\x0a\ +\xc6u1\xae3\xc1pr\xb2\x5c\xb1\xb1\xd9#{\xa0\ +\xef\x00\xbf\xee\xeb\xd1\xc3SJ\xde\xcd\x02\x17\xa1\xda\xfc\ +8mGe\xdbe\xcb\xacH\x82\x06G]03\x9b\ +\x86\xa4\xe6\xcb0 [\x18SA\x8d\xed\xf2|\xdc\x87\ +j\x94\x01\x8d\xa7\xae\xaf\xe7\xe6\xcd;\xac\xfc\x8d\x91\x11\ +b\xbc\xcd\x8f:\x89\xb5\xc1N\xb2nK\x85\xf3\xdck\ +|\x03\xc5R\x1e\x9c\xd0\x00V\xc1\xf9\x94)N\xab\x9e\ +\xd0\xc2U[\xdb~\x08+|\xc6a\xfd\x09\x19\xaa\xc8\ +H\xb0\xd1\xd5\xc46s\x16Jy\x5c\xa1\x1e\xa6\xfe\xe6\ +\x97^\xbcw\x1e\xc6\xc6N\xe4D\xb1\xaaP\xa1\x8a\xcc\ +a\xa4\x9d\x8b1\xf8\xb3\xfc\xdd\x1c`+l\xed\x9e\xcb\ +,\x10\x0b\x5c\x0d\xc0\x1eTF\x94\xd9\x7fw0\xa4\x89\ +;\xdb\xb7_L}\xc8\xc1\xb1R\x9a\xa2\x03\x0cK\x1d\ +\xbfC\x0ei`LLL1\x0a\xf2\xdfwq\x19\x84\ +\xb3l\x22\xa5\xc6\xd1\xe7\x97\x89\xd2?>NN\x99\xb2\ +\x8c\x14z\xe9\xcc\x86\x89\x18\x06\xe6T\xfaF\x83&`\ +\xf9T<\x9d\xc7h\xf9\x0f\xe6\xbdQo\xa7|\x81\ +z\xac\xabU\xab\x1a\xcd\xb1\x9c\xc3\x0e4\xee\xd0\xb4\xe9\ +-h\x93xcw\x93,\xb5Hl\xc0\x82:\xa0\x1b\ +\xa3w\xdd\xde~\x1b\x1cy\xea\x12\xa6}\xdd\xbbw\xfe\ +\xd7\xd6r\x81\xedd\xd2\xac)8A\xb6=\x9a\xa6D\ +\xfa11\x7f\xd0d\x9d\x98<\xf9$\x9ew\xd12\xc6\ +*\xe0\x92\xcco\xe1\xc4\x88\x8c\x8c,H2\x08\xd2\xc0\ +6_\xb6\xb1\xa9\x89\x04bs\x94\xf9\xc4\xc9\xe2\xd7=\ +\x02\x90^\xe9{8\xff\xc5~x\xfcx\x159\xd1H\ +<\x08g\xf1\x07\xca\xee\x86j\xeft\xc1\xcf\x802\xa0\ +yO\xcf\x9e]O\x0e\xa1\xffL!%\x09|RL\ +G)\x84\x04\xc3-\x8b\x15{\x85\xd5\x90\xbc\x9c\x06Z\ +\x067Zz\xd2\xc23\xbf\x84\x84\xf1\xfe\xf1\xe3!\x90\ +f\x7f \xe7 \x19FvG)\x97\x91N\x072\xb6\ +)2\x9b%~W\xa7N[p\x7f\xcbu\xe8\xd0\xbe\ +W\xac\xad\xd7\xd28z\x10\x90\xb7\xba\xb4\x94=o\xa6\ +\x03e@\xad\xc12\xe2\xbf\x84\x80C\x87\xe6\xc3\x1b\xa9\ +\x8e\xe7\x101Q\xbeqQQ\x8d\x05\xa0\xa5iQ\x0c\ +\xe7\xc0hx<\xa3\x1e\xba\xb9\xd5V\x14\xabD\xa6\x81\ +\x9bN\xc2\xb0FR\xb6\x0a\xbc\x92\x01X\xc5\xde\xa3\xee\ +N\xe9\xfd]O\x06\xc5? \xc1\xe1=*\xce\xdf*\ +\xf3y\xb0o\xdf\xc1p\xa4,\xc1\xbcEC\xc6o5\ +\xe9hj$\x10;\x83\xe5E\xa6\x82'\xb2,8\x05\ +]W\xf6j\xa8\xf4\xde\xd2>hc\xcc\x98\x9e\x9d\x9d\ +=\x9bd\xc0;\xe0~\x88\x9c\xb4\xe3x\xb7\xb2\xc8,\ +p5B+p.h\xfa\xe5\xcb\x97\xa5\xd8\x96u\xa5\ +m&\xe6\xe3\x08\xcd\x07\xc5\xed^\x5c\xbch-\x9b\x95\ +\x04PC\x92\xa0k\xd7JB\x10\x96\x9av\xf4T\xf2\ +\x19)\x06Fq>\xca\xe1\x04\xcd3?\xb3\x88'\xb2\ +\x09\xbe-\x17Q\x0b[\xea\x8f\x86o\xcaEB\x82\xb4\ +\x07i\xeb\x09\xd5\xaa`\xec\xbd\xe7\x90w\x13\x8d\xdc\x0d\ +\x10\xff\xb9.\xcf\x10\x0e\x22\xb3\xc1jbe\xc0\x1a\x88\ +\xddU\x86\xe1\xa8\xbf()\xde\xfa\xdc\xd3s\xc9\x95m\ +\xdb\x0a\xc3i\xe2%\xd5\xc2\xca\x83*Y6\x94C\xa9\ +8\xa7\xfa\xb6\x87G\x8fn\xc2J\x99@\xf728=\ +\x8c3\x8b2\xbf\xfc\xa2\x072\x19\x96\xe2:M\xe3\xfc\ +6\x0dL\xf1^\xb3f\x1fm_\xe4X6\xa4\x18=\ +\x83\xb7\xec\xd3\xeb\xdb\xb7M\xc9\x08\xff\xa2\x97\xf6\x90\x8c\ +)\xa6d\xbc\xb9{w\xbec\x9b67h\xc5\x02\xa9\ +puYdp\xf0(d\xb1\x8c\xa7F\x8d\x9a=\xbd\ +W\x16-\xda\x0a\x95$'hW\xb3\xbbc\xc7iJ\ +\xe3I\x1c\x17\x94\xdd\xcd\xd5\xac\x11we\xf5\xe1rB\ +\x02g\x80Y4\x19h`\xb1\x03\xe3*M'\xca\x91\ +\x91#\xcf\xd2VE)\xbf\xc0\xd8Tp\x19\xd8G\xc9\ +v\xc0$*\xe2:~\x19\xd2A\x94\xe7\xab(8\x92\ +\x02\xe3$[\xa7\x91\x0b{\x93Dh\x0f\xfe\xfak}\ +-o\xf5\xbc\x97\xfe\xfe\x95\xa9\x8f9V\xc5Ht\xcc\ +Y\x16\xec\xe3\xb3\x9a\x12$P\x00\xfb\xf4C``V\ +6ed\xb8\x9b\x9a\x1ab;\xf9\x9a\xb2O\xe8\xcc&\ +57\xa2\xa8\xd4D\x1e\xda\xf3H\x095ulH!\ +M8\xe5szYX4\x91\x93\x19\x14|\xf7n!\ +\x91Q`\xc3\xab\x0eN\xa7>\x01P\x89\x0eS\x92\xa2\ +\xbf\xa1\xaf\xb2@\xb35\x17\xcet;q\xaf\xee\x0d.\ +S\xc7\x18Y)\xa1\x16z\xe3\xc6\xac\x1d-[\xde\x80\ +\xd1\xdc\xa6N24Y\xc8\xf5s!\x85'\xe9f~\ +\x01\xa3\x8a\x876\xa3\xd3\x8d-[\x1c\x0f\xfd\xf6\x9b;\ +\xa5\xee`\x8c\xae\xbb\xe9}\x1a\x97\xado3\x16|\xbe\ +k\x19\xfb\xe1\xc3\x12\xea\xf3\x16\xfd\xf2\xa59\xee\x0b\x0b\ +\x0d\xe0pN\x9e\xca\x18\x9c\xc9_P\x221\x1d\x07p\ +\x96sF\x89\x90:\xb9\x18\xd4\x91s\x1c\x9f\xef\xc6\x91\ +g\x0c\x1dXn\xd2\xb7!\xca\x81\xae\xcbF\x0f-\xc0\ +\x14\xa7\x81\x03\xbdp?\x07\xec\x0c\x0es\x19:\xf4\x1c\ +\x8dK\x8f\xd9]\x0a\xb6g\xeadr\x19P_\xb0\x83\ +\x5c\xd1\x0a\x82\x1e\xd8u,\xc4u/\xf8\xf5\xf6\xee\xdd\ +\xdb\xf0\xbc\xae|\xbf!\xb8\x04\xe4\xe6\x8b:\x98\xb1\xd2\ +\x9a\xce\x0ba\x0f\x1f\xce%\x83S\xd2\x89\x8e\x8d\x1bG\ +\x85\xafy\x85\xc4\x89)SFJ/f\x12\xb4\xb3\xa9T\xe1\x94\xa1\xae(\xf5\xe2\xf0\x1e\x05\ +\xc1\x18*\x98\xa4-\xcd\x0c\xa5\xcc^\xf2\xablZh\ + 2\x0b\x5c\x06\xd4\x1e^I\xb3\x03}\xfa\x5c\xb4*\ +[\xf6\xea);;}\xf1\x1d C\x05\xdfK\xe1\xe1\ +N\x22\xd3\xc1\x93Y\x83\xb2\x1c\xec\xeb\xd6\xf5Cl\xee\ +\xa5R\x82\xe1>\x7f\xbe+\xd5HQ\xfe%\x8d\x91^\ +\xa6\xc7\xe2\xc5\xfb)\xf0\x8as\xdd-)\x1f\xe7*2\ +\x1b\xac\x16\xfd+h\xfaOj\xd1\x10R\xb8\xab|q\ +fv\xed\x1d\xc0\x90\xdb\xccy\xe4XQ4\x15\x91\xe5\ +\xfeD\xea\xe6\xaf\x93\x06\xf7\x19[\x9a\x08\x97\xdf~[\ +\x85\xac\x95\xc9p\xc0\xf8\xd3{\xd8\x8e6\x14\x99\x0en\ +\xc3%\xbe\x13\xca\xb9}[\xd3\xa6\xb7OL\x98p\xfc\ +\xc1\xb1c\x1de\x8b\xe65\x99_\x91\xc0\x13Y\x04\x15\ +\xcb\xc3\xd0z\xf7\x04Z\x199\x91\xdb\x19\x07\xf6\xedd\ +p~\x0e\x0e;\xd6V\xaa\xa4h\xd5{ok\xd6L\ +\x1d2\x80L\xbb\x89\xc8t0L\x84\xe8\x89y\xf8-\ +-)]J\xdd\xa4F\x19\xd0\xb0O\x1f?\xb65\xcf\ +\x95\xeb\x8c\xa2\xaa\x9c5\xe2\xae\x5c\xbd\xdc\x05\x9c\x07\x96\ +\xda\xda\xa8\xd1\x1f2\x8d\xe84V\xb6)\xd8R\xeeF\ +:Q\x08\x8d\x11\xcf\x9b\x98X\x88L\x07\x83\xb2\x83\x90\ +\xc0@=\xc8/P\x87\xd6\xbfipS\xe5\xae$\xee\ +@\xbf~\xb6\x8a\xe3\x05\x9d_\xcf\xd2.\x06\xbb\x9a\x87\ +\x07z\xf7n)\xb2\x0e\x8c\xa8\xa8\xa8B\x1bk\xd5z\ +\xac\xc8\xba9\xf5\xef?\x07-o\x17\xa3;\xcbq*\ +'\x81L\xc0\x08\x91U\xe0/\xc6\xa1~\xdb\xb7OA\ +\xf8\x86\xb6\x84\x8e\x14\x18\xff\x13c+L5\x91\x90,\ +\x0fC\xb7\xa0p\x9aO)\xdf7\x1e\xd7/\xf8b\xbd\ ++\xcf\x86\xfdD\xd6\x82\x91\x10\x17\xd7\x17\x92}\x97\xa0\ +\xd6\x14'\x9d%aP\x15\xde\x01w5MP#\x91\ +\x95`\xc3\xab\x02\x8ew\x192d.\xe6\xe5&\xc9\xdb\ +i\xca\x99S^,\xc6L5\xcb\x80>EG\x9bA\ +\x5c\xf8\x1c\xaaK\xe2iL\xa3Y\xe3O\xa0\x8e\x84\x0b\ +8\xed\xa8\x0f\x89\xd2BM\xd8\x09\x89\xb6\xfe\xd6\x86\x86\ +;1VBgd\xd2X\x1d\xba\xe9\xa7\xa8\xa8\xc9(\ +J^M\xb9\xb0\x8aP\x11\xaeE\xb13Q\xcb\xddA\ +\xb8\xf5c\xd8\xe3\xc7se\xef\xf3^nS\xa7\x1e\xd7\ +j\xd6\xa8c\xe0\x89-\x0dvU\x0a)S\xe9&\xc3\ +\xc8\xfa\x9ep=\xb1ZM\xc69\x9b\x9al4\x11@\ +\x88\xaf\xef\x14J\xeb\xa3x\xab]\x95*V\x18\xcf\x0f\ +\x16\xc6\xca\x16J\xaap\xc8\xdf4\x95\x9eO]\x05\x17\ +\xbe\xea\xf4\x04\xf1\xfc\x94\x02G\x82\xcd\x15\xef3\xf8\xfb\ ++??k\x1c\x03Fc\x05|\x08\xaa\x8f\x07\xd47\ +\x0e\xcf\xfem*\xdd\x0c\x92\x02\xa0\x8c\x15L\xf4\xef\xb8\ +\xf6!)v\xea\x1a\x841CJ5\xe2\x8a\xe5\x8c\x91\ +\xb7\xd3Nr\x00k\x22\x943\x1a\xdbKu\x19\x10\x14\ +\x00.\xfdK\xcfm\x0c\xc4\x7f\xb6\xd2$\x7f\x83\xb1\x94\ +\xaf)2\x03l\x88\x95i\x1bI\x8e\x93\xd33fX\ +\xfdK+A\x18\xd8\xd2t\xa2\x0e\xaf\xd4\x01\x08}\x10\ +\xec\xd1Hb\x13\x0e\xee[\x0e\x0d\x1e\xbc\x0d\x9a,V\ +Q\xc1\xc1\x15\x05 \xeb\xf4\xeaSp\x17FXId\ +\x088[\x05\xec\x07\xce\x00s\x89\xff\x10T\xff\xa5\xb3\ +\xdf\x85\xa5Km`h\xd3+t\xe8\xb0\x7f\xa4\xbb\xbb\ +\x0b\x86\xf5\xc1\x9c`v\xd0{\x89JU\x06\xd1X;\ +\xdck\xe6\x0a^\x04\x07\x98\x09\xf1A\xa4\x0d\x0c\x06\xeb\ +\xae -\xcc\xdfLO/Q[\x1f\x13+ZS\x92\ +\x7f#I\x88=]\xba\xb8\x5cZ\xb1\xc2\x01\x9a\xf6\xe7\ +e\xec\xef\xdewt\x0ee0\x18\xc1\x97/\xf7\xa4m\ +%\xb2\xd6\xbd5Wx\x18\xdbcdM\xc4@\xc3\x9e\ +b|\xf3ef\xfc\xa8mM\x9a\xa8s8\x91!\xf1\ +\x9bH;\x18\x0c\x0e+\xa0\xfcG\xad\x08\x86\x92\xa0.\ +\xb2\xc0\xb5\x92T\x18;IRp\x9az\x1e\xc1\xbe\xbe\ +\xbde\x9f2\x17\x8d\x96\xbe\x07\xd3p\xbec08\x88\ +\xeeme\xb5\xfb\xdd\xc3\x87\x9d\xa5\x11\x8d\x07S\x1e\x1c\ +>\xbcF\xbb?\x02\xda\xf4\xe6\xa3g\xdb[\xb6\xf4\x16\ +\x00\xb6\x97vt\x0f&\x80K\xff^\xf53\x83\xc1F\ +\xd7\x04l,\x00S=\xbdndD\xf0Z\x9a\xa4\x92\ +x;@J\xc39\x09\x00\xdbQ\x1f\xe4\x01&\xa1\x1d\ +\xd4cdK\xc4\xa4\xb13\x10\x83\xc1\xf0\xda\xb0!/\ +\x95\x8dX\xe4\xc9\xf3\x8a\x82\xe4Z\x05\x93\x11\xa8\xd9\x8a\ +\x89\x0c\x09\x99\x8d\xfbj\xe0W*\x80\x85\xb1.F\x22\ +\xae9\xae\xa4\xadi\x8d\xf1+\x7f\xd1]\x86\xc1`\x90\ +\xf7\x91<\x94\xd0\xdbW\xf7\xbc\x86\x07\xf3*\x0c\x88\x8c\ +k\x9dl\xf1\x14Ez\xfa\xd4\xc0\x9d\xc6\xc0\x94{\x07\ +\x0elF\x1b\xdc\x89\x10\xd4\xb9gch\xd8nU\xb1\ +b#\xb1\xda\xc5J\xbd\x95m\xbc\xcdd0\xbe]\xab\ +\xb5\x0aL!B3\xf3\xbeu\xd9\xb2\xf7\xd5\xdd?U\ +\xaa\xd7H\xb6u\x97=\xb2\xc7 \xab\xbd0\xc6b\xd0\ +\x1b;tO\xb7n\x07\x15\xfd\x15l1\xed\xa2\xde\xbd\ +\xab\xb4\xaeJ\x95g\x10\xb0\xfd\x8c:=o4,I\ +Md\x87\xc1`l\xaa]\xbb\xc1\xa6:u|Po\ +GF\xf6\x15\x86\xe5\x0e\xc5\xb0\xe5\xa4\xb1\x22\xab\x12F\ +\x82\xfa0\xc2IRQ,\x86\xaeH\x15\xfbHW\x8f\ +E\x8b\xf6\xe1\x99\x19\x8d\x1d\x195\xea\xac\xfc\x9d:\x1a\ +\x06\xddI:Wr\x0b5\x18\x0c\x16\xa9\xfd#:4\ +t\xc5\x8e\xd6\xad\xaf\xc8\xda\xad\x9b\x90\xf4>t\xc9\xce\ +N\xe9W\xae\xa2\xb6\xbc\x1a\x8a\xd0\x97\xa9\x09%\xddC\ +\xeao7U-C*\xe06\xb2\xe1\x17jw\xe7T\ +\x8a/M\x84\xe8+\x140\x18\x82\x0d\xcf\x90DOI\ +[\x1f]B\x9fA\xc0\xe8\xce\xd6\xc6\x8d\xcb\xcaU\xaa\ +\x89bl\xa4\xcdH\xd5\xe68\xf3\xdd\xa5VOX\xe9\ +\xa8\xc3\xeb[\xd9\xbc\xb0\xa6|\x7f\x18\x0c\xcd\x1dF\xf6\ +K\xd8\xa3G\xd5<\x16.tI]>\x80\xc1`\xc3\ +k\x0f\x9aJ*\xb5Z\xaa\xe3\x13&lr\x9b6\xed\ +8\xc6\x8c\xa1.V\x13\xe7\xb5X\xe9dI\xbew\xf0\ +\xe0\x16\x8cw\xd5\xa8L\xe8\x85\xe7qt\xce3\xcb\x99\ +s\xdf\x9b{\xf7\x06\xe1yu\x91:\x18\x0c\xae\xe5\x02\ +\x0d\xc1l\x1acm\xc0\xd9\xa0\x11\x0c\xa9\x86\xb2\xe2\x1d\ +\x9f8\xd1\x0dc\xe3@=\xcd\xdek\x81nn\xeb\xe8\ +L\x88\xed\xe9s/S\xd3\xb4\xaaD3\x18\x0c\x8d\xc6\ +\x92Eqf\xbb\xba\xa5A\x83{2\xef\xb2\xa0\xd0\x02\ +r/\xb7\x93A^]\xbbv7\x9e\xd7\x17\xff\x08\x0c\ +\x06\x1b\xdf\x88/\xc9\xc9\xe4\xc9\xac*\xab\x0d\xfa\x82]\ +\x05 W\xc0\xa4\x0d5k\xde\xc7\xf3\xc9\xe0_\xc6\xe5\ +\xa4c\x86:\x07\xd5\x12\xa9\x82\xc1\xe0n@\x86\x1a\xee\ +\x7f_0E6%\xb9\x883\x5c\xf23O\xcfux\ +\xa7R*\xb1\xbf\xfa\xe0b\xbcg\xbcX\x88\x9a\x8a\x0c\ +\x04\xee\xc30\xfe\x19\x5c%\xfe\x1c\x0c\x06W\x94# \ +\xeeM\x86F\x86gU\xa6L\xe8\xfb\xfb\xf7G\x0b-\ +\xc0\xa8\x96+As\x85\x18[(\x80\x9d\xed\xda\xed\xa6\ +{xG\xd7\xfe\xf5\xaa\xc8`\xb0L\xdc\x10Z\xd5\x14\ +\xb5h\x18_8\xae\x03\xb4\x9bY\xa0\x05\xf3\xb3[\x8e\ +\x8e\xdb.\xaeXq\x00Z\x8e\x0feJ\xd8t\xbc\x1f\ +\x81pCXBl\xec\x22\xea\x1e+\xfe\x12\x0c\x06\x1b\ +^%\x90\xfa \xec\x81a\xbdFB\xf4%\x0d\x83\xdb\ +\x01\xa6\x84^\xbbfCg@\xb0\xd7\xc7\xb7og`\ +5|M\xe3D\x9f5k\xf6b\xbc\x89H\x13\x18\x0c\ +\xd6\xce\xfc\x05\x0dH\x16$'&\x92c\xa5\xa8\x00\x10\ +L?D\xabYxP\xd0\x10\xc5\xe3\x89\xab\xde\x96\x86\ +\x0d=\xc9\xd8\xd6W\xaf\xfe\x08\xf7S\xbfo;\xc9`\ +\xb0\xe1\xe5\x06\xab\x83*\x99\xb7\xa9\xce\xb9\x5cS\xaa\xd4\ +iE\xde\x81\xfa\xa2!\x8f\xf3>%>?uw_\ +O2r\xb2\xb5\xd3`p\x198\x99\xda3\x8b\xb4\x81\ +\xc1`\xbc\xf4\xf5-\x8b\xb6L\xc1r\xfb\x18\x80s\xdb\ +>\xf0\x19\xddC\xb8\xe8\x0a\x8c\xed7\x12\xa6\xc5\xd8\x0d\ +-\xa7\xca;\x5c\xcb\x8b\xb4\x81\xc1`\xc4GD\x8c@\ +\xb7\x19\x0f$G\xdf\xa1\x8aq2(\x14\xb8\xc6\x22\x17\ +s9\xc9\x82\xe3~+\x8dm\xfb\xe5\x97\x0b\x0f\x8f\x1f\ +\xdfDr\xe0H\x15\x8b\xc7\xbb\x8f0\xbe\xc4X\x08#\ +\xf1\xef\x03\x83\xb65\x22\xa3\xc0M\xea\xfb\x83&\xb7\xf7\ +\xee\xdd\x06cR\x97\x05\x1d\xe8\xdb\xd7\x8a\xb6\x92H\x88\ +\x8eFM^0=\x07{\x80}\xdc\x17,\xd8\xa7\xb1\ +\xe2\xc5\x9b\x08\xf1/\xeb6\xc3\xc6\x96\x8d\xb6:\xa0\x17\ +i\xf0\x8b\x8c\x02\x1b\x9e\xd1k\x7f\xffU\xbb;w\xbe\ +zv\xde\xbc1T)N\x15\x08\x1b\xeb\xd4!\xe7I\ +5!\xb1\xbbc\xc7\x81dl\xf0x\xc6\x22\xa5\xec>\ +\xb45g\x8a\x7f\x17\x18\xf0\xa8\xf9K\x11\xd4g\x22#\ +\xc1\x86W\x06\x1cM\x14\x80e\x89\x12\xf7\xc9\xe8V\x97\ +(\xd1C\xee4r*\xe1\x04\xa5Z\x01\x9c+3S\ +\x86`|\x22V\xbc\xe6?\xb6\x8a6\xafp\x0d\xa9\xa8\ +\x92&\x19\x9a\x1d\xc1\xd2\xad\x9d\x09`x-]:\x09\ +\xe1\x83x\x18\x1de\xac<\x00\x03\xc1\x14\xabR\xa5^\ +%%$\xcc\xa3\x00;\x1c/\xad0\xf6A\xcb\xb1r\ +\xcbX\x88\x0aB\xa7\xc1H-\xde\xa3J\x11\xc2NO\ +O/I\x00\x06\x85\x0a\xc5\xd3{\xd2\x10\xf3\x92B\x95\ +L\xd2\xcd\x00\xf0\xb9\xb9\x8d\xa9\xe9\xdeAG\x8f\xdaW\ +\xe9\xd9\xd3;O\xc9\x921*\x95\xcaH\x00m\xcc\xcc\ +\xce\xe6\xd0\xd7\xf7\x98\xa6R}\x8ez\xf1\xc2\x05CE\ +*u\xea\xe4\xd1w\xef^\x87\xea\xfd\xfa\x9d\xcf\x96-\ +[\xed\x1c*\x15U\xac\xffH\xbd\xf3\xd8\xe00aC\ +TB4\xab\xd4\xa5\x8b\x9f\x00r\x15*\x14\x8bK\x1c\ +\x8c\xac\x11\xae\xfex6\x0b\xbfD\x09\xbav\x22=\xc1\ +\xc6F\xbb\x88\xb7X\xd9\xf6\x04\xec\xdb\xe72\xe4\xd8\xb1\ +\x03\xed\x96-\xbb\x8f\xb1\xec\xa5 n\xd4`\xdc\xb8k\ +x~\xab\xb0\x10\xedq-\x96-{\xf6\xcfA\x9e\x9e\ +\xado\xac_\x9f\xa7\x8b\x9d\x9ds+ccW\xac~\ +%\xf1\x059'\x95\xfc\xcd\xb9\x98\xd7\xa3B\xb7\xc0\x90\ +\xe7\x82\x97\x10\xca\x09{t\xec\x98Zax\x7f\xef\xde\ +\x94\xf9nL\xe5&tO\xb4,^\xfc\xdd\xb6\xa6M\ +\x1d\xd2\xb7\xb7\x17;\xaa\xd6V\xa8\xe0h\x8a\x15\x8c\xe4\ +\xf9p\x7f\x1b\xd7\xc4\x95\x05\x0a\xbc\x96M\xe7\x8d\xe4{\ +}\xc0\x94\xe3\xe3\xc7\xbbAW\xe5<\x0c4\x91\xe6\x0c\ +\xd9*\x0b\xe9\xec\x87\xdc\xcc\xcb\x02\xa0x\x1e\x85\x11L\ +\x84\xe8M\xff\x9d5%J\x5c\xd1\xa1\xe6\x87\x0c\xda&\ +b\x826\x83)\x9e\xa6\xa6\xce\xe7\xe6\xce\x9d(\xd5\xa9\ +\x12\xe8\xba\xb2`\xc1'+\xf2\xe5\x8b\x86NcR\x88\ +\x8f\x8f-&o\x09XP\xa4'\xd8\x81\xd2\xf1\xb1\x9b\ +\xdbF\xc4\xe0\xaeC~/\x18r{\x1e\xd1\xaf_\xaf\ +\xd0\xd4CY$D)R\x18\xc3\x97^\x10*\x14\xc6\ +\x05yy\xd9A\xa2\xef\x16\xcd\x91\x0c\xa0{\x0b\x00\xde\ +\xe5\xca0\xb4\x8f\xca\xb8\xbf\xa3\xe3v\xccWY\xa1\x13\ +`\xa80)o\xa5\xeb9\x06\xcd\x09\xe7C\x89\xb8\xaf\ +\x9c\xac\xaf\xdb[\xb5:\x8fX\x90+\xdd#^t1\ +><|\x08&\x9d\xcaL\xa6\xa6{\xbc\x8e\x8d\xae\x0a\ +8\x054\x95\xec\xa4\x9d[\xe9\xf2\xdbo\xea\x9cL\xac\ +\x86\xcf7T\xaf\xbe8\xec\xe1\xc3\xb9W\xed\xecv\xad\ +.^\xfc\xcd}\x17\x97\x8d\x8a\xdc\xc3\xf1q\xe3\xf6\xd0\ +\x9c\xc9\xc6%\x1fuh\xbe\x18\xd7\xb7l\x19\x8e\xc9S\ +\x97\x95`\x1b\xe3\x8d\xab\x014\x1a\xdd\xbc\xd7\xac\xd9\xf7\ +)2\xd2\x0c\x9e\xb3\xd7P\xa7\x8a\x80f\xa3\xd9\xd3\xb3\ +g\x8bc\xb2C\xa4w\xecf\x86\x1c\xd4\xd9\xf0\x8a\x81\ +E\xbe\xf1\xac\x86\xe7\x92%\xce\xe8\xe8\x1a\xa64\x16\x81\ +\x00\xed\xb9\x98\xb7o\x17S\x89\x90\x00\xc6\x0b\x91\x03\xbb\ +\x91@\xccY\xecE\x0b\x8b\x03\x96\xc5\x8a\xbd\x92\xef\xfa\ +I9\xf7,\x06OpIp\xea\xb5\xf5\xebw\xa1G\ +\x9a9\xee\xf5\x1f\x9d<9\xc6o\xdb6\xeb5\xa5K\ +\xaf\xa6\xc9\xa2U\x0e\xe3m\x05\x007\xf5\xfde\xfa\xfa\ +\x09\x08\x1b\xdcq\x1d:\xb4\x94\xf8\x062\xac\x91!\xcf\ +W\x03\xc8\xf5\x99\xf8o\xdf\xbe}K\xa3F\x97\xa0\xa1\ +\xe2{v\xf6\xec\x0a\x8a\x91R}\x1d\xcd\xd9\xc9\xa9S\ +O`l$B\x0a\x0b\xa8\x1d\x17\xcex\xde\xa7\x16.\ +,\xa6yv\xcc\xda\x86$\x5cV\xd2\x04\x1c\x0a\xe6\xc6\ +d\xec\x97[\x92$\xd4l\x05a\x82I\xb5*\x87\x00\ +\xb0\xda=@>\xe0\x1b\xb9\xedi)\x83\xb0oq%\ +\xe3\xcc+'\xd3\x8a\x0e\xf4\xe0\xd0\x0c\x0b\xccr\xaf\xec\ +\x16\xe0d9\x0f\xcd\x95\xd5\x8d\xe4\x1ahU\x83\xa1\x91\ +\xc8\x91\x01\x98\x0b\xec\x0a\x9a\x80\x0d5\x0cn4\x18\xa5\ +\x039\x9a\x8c\xeb\x0e\x0e\xb5\x1c\x9a7\xf7%\xef\x17\xa5\ +\x15\x85\xdc\xb8\xd1XH \xe16\x18\x0d-^\xc8\x82\ +K\x95\x99\x81Ak\x0d\xe9\x803\x02\xc0\xef\xac\xa4{\ +I\xcf\x0c\x95\xfbf\xe3+\xa8\xe9XQz%$%\ +%5\x14\x1a\xd0\xee\x7f\x07\xc7L1\x1c\x17\xa2pf\ +\xf7\xd2\x8d/E\xae\xe7\x1a\xf9\xc0\xd5\xd5\x1e]C]\ +\xe9\x5c\xa1!v\x1a\x06U\xaa\xc0\x9b\xfb\xf7\x97\xc6\xe4\ +Z\x90\xeb\x99\xbcg\xe4T\xf123\xb3\xc2\xbb9!\ +\x82\x1a\x80\x950\xcey\xf0`\x0flA\xef\xec\xef\xd9\ +\xb3\xc4\x1fB\xe8g\xf8\x16\x86\xa1\x82.\xca92:\ +\x9c\xb5\xcf\x90\x1a\xd8\xb7j\xea(\xb4\x83\x941\xb5\xa4\ +\xdf\xd2\x1c9\xc6\x08\x9d\x00\x1b^\x0dp\x0ch$$\ +\xa08\x1cG\xf18\xc4\xe8\x82h\xb2\x90\x03x\x1d\xe1\ +\x02k\xbc\xb3\x80\xde\xb524lO\xe3\xfb\xbaw\xf7\ +&\xaf\xdb\x87'OV\xe3\xda\x14c\xce`\x0c\xb8\x80\ +\x8cOd\x08\x18\xc9\xc9\xc9m\xf6\xf7\xeau\x09\xded\ +%4@\xba)&\xdf\x98\xdf\xb2h\xa9\x1c\x08'\x0b\ +\xcdKi\xa1\x13\xe0\xb0A\x0d\x8d}\x7fA*)\xa1\ +\x89\xc4$E\x9c\x999s\xb7\xa4\xdfB\xe9z\xd1\xdc|\x17\x9e\ +9\xd1\xe4R|\x0f\xbf7O\xcbP\xc7\x82\x9e\x8b\x85\ +\xc8\xe0\xc6\x17\x9cF\x06\x89\xbe9\x88\xe5\xad?9i\ +\xd2\x96\x83\x03\x06\xectl\xd7n\xbfc\x9b6\xe7\x90\ +\xe4p\x13\xce\xb0#Y\x1c gP\x95\xb2Zs\xb1\ +f\xcd\x87d<\x10==\xa5(\x0fkBV-\xbf\ +R\x0c\xf3\xd8\xd8\xb1\xce\x108\xf5\xa5{\xf4_;)\ +\xd3\x8f<\xf1\xbb\xd3A\x03\xf9;\xca\xd5\x8a~\xc7\xd6\ +\xc8\xa8\x8d\xc8P0d\xf8\xa7\x0f8\x04\xfc\x1d\x9c\x04\ +\xce\x04\x17\x82\xc6\xbaS\x92\xc5\x9a\x8b\x93\xa9=S\xec\ +\xfb\xf7\xa3\xbf\xf1\xedY\x8f\x12j)\xe7\x922\x1c\xa8\ +\xd9\x05\xf2\x02\xef\xd2v\x85VH\xeb2e\x1e'\xc5\ +\xc7\xd3\xcaXZ\xae\x86\x0b)\x0e\x04\xce\x89x\xf6\xac\ +\xce\x0booR\x1d\x1e&\xb2\x1a\x1c\x8f\xd5\xa1\x15\x8e\ +'\xa3\x11\xd8L|\x03O\xce\x9c1\xbe\xbbo\xdfV\ +\xfa\xc6\x0c\xbey\xb34\x8c-A\x8a\xe5\xc4\xbc\xf2\xf7\ +\xb7\xa6\xdf\x17\x12k\xabU\xab\x853\xddSz\x0e\x06\ +\xde9x\xb0\x954\xc6\xbf\x09\x06\x83\x8d\xb2\x82\xf4X\ +\xe6\xc7y\xecg\x19\x0f\xfa\x0a/\x19y3\x07h\xf7\ +b\x0b\x9a\x08\xd1S0\x18\xec4\xf9\xdb2\ +\x01\xb5.m\xdc\xe8;\xfe\xe6M\xcb\xce66{+\ +w\xef\xee\xaa\x87\xa2W\x95\x9e\xde\x97\xaevv\xe7\xf0\ +\xca\xd9\x05*U>\x5c\xb7\x82\xaaj\x90\xef[\x1c\x1f\ +\xbf\xa6\xdb\x86\x0d\xbb\xf5\xf3\xe6\xfd\xa2\xa7R\x1d\x86\xf1\ +\xfd$\xb4@y\x9a\xb2u\x14\x83\xc1\x90\xc6V\x18\xfc\ +L\xaa\xce\x88\xd3\x8d~{\xf7n_\xe7_\x7fU\xab\ +D\xef\xed\xda\xd5\x87d\x034[;A\x06<\x9c\xae\ +\xe8\xfes\x03g\xc0\xb1\x0f\x0e\x1f^C\xf7\xd0\xe3w\ +L\xc5\x90w\x82\x81\x1aC\x0c\x06\xe3\xe8\xef\xbf\x1b\xc3\ +\x80\xdek\xc4\xe9R\xec*W\xbe\x81f#\xcb\x14}\ +}\x13!:*q\xbb\xcb\x96\x96{\xf1~(\x19\xea\ +\xf28~\xbc\xbe\xc8\ +X0\x18\x8c\x13\x93&m \x99>\x18\x1e\x85\x19\x1c\ +\xc0>\x19\xd4\xb7\x9c\xc1\x99&\x8c\x1e\x9b6ml\xbf\ +r\xe5\xfe\xc2\x15+\xbeC\xb9\x0fU\x98\x1f\x01W\x88\ +\x8c\x03\x83\xc1q=pAth\xe8\x8a\x9b\xdb\xb7o\ +\x8b\xfd\xf0!\xdd\xbb\x812\x18*P\x82!cr\xe5\ +\xc1*`\x14V\xbb\xab\xe2\xc7\x00\x83\xc1=\xd82\xe1\ +\x0b\x8d\xc1`P \x1dA\xf3'0:?0#E\ +j\x19\x0c\x06y8\x91F\xf6\x1a\xfc\xb4\xadI\x93\x9f\ +D\xc6\x82\xc1`\xbc\xbd\x7f\x7f\xe2+??\x92ao\ ++$\x18\x8c\x0c\x92\x08g\x94\xa8Q\xc3\x19\x97\xfa\xe0\ +u\x91\xfe`0\x18$T\x0b\xdadB\xc23\x83\x03\ +\xdf\x8c\x14!\x16\xe22S/\x07T\x1a2\x16\x0c\x06\ +\xc3}\xc1\x82\xa6\xa8D\xb8\x06\x09\x87\x8c\xd6\xc2d\xf0\ +\x19\x8e\xd1a\xe5\xca{\xb8\xec\x01\xa3\xc5\x0f\x01\x06\x83\ +\xcf\x81'\xb1<^\xc4\xb5\xa1\xf8\xd7\x81A\xba\x8d\x13\ +H\x1aN\xe8\x04\x18yK\x96\xf4U\x09\xd1J\xa8T\ +\x9e\xd4\x09\xc8X\x08#\xf1\xef\x01C\x0a\xa3>\xc4\xb5\ +\x8b\xc8r0\xd0\xffn#\xcd\x89\xa6\xb8-\xb8\xef_\ +\x92\xb1\xc289u\xea\x09H\x85G\xcb\x09>\xb9X\ +\x88\xca\x22K\xc0\xa0^w0\xae8\x8b\x5c\xb9>\x9e\ +\x9d=\xfb\x08\xfa\x228l\xaaS\xe7\xa6T\x8d>)\ +\xfe\x15\xe0\x0c\xf9N\x90\x17x\x0ea\x9d\xcf\x10\xceI\ +\xc6\x84\x93\xf1\x15\x9d)D.\x91\xa9`\xc8\xde\x07J\ +\xff\xbb\xd9`\x8f\xcf\x9f?Ouh\xda\xf4\x16\x8d\x9b\ +\xe5\xca\xd5H\xfc\xf0\xe0I\xee\x07\xa6\xec\xeb\xd1\xc3\xfb\ +\xa9\xbb\xfb\xfa\xd33f\x1c@\xbb\xdf=\xd4\xe8\x10\x1c\ +7P\x08=\x91\xe1`\x98\x08\xd1\x5c\x11\xb4u\x1e8\ +\xf085.\x11\x12\x07\xfa\xf5\xb3\xa5\xf1=]\xba\x18\ +\xcb9\xdb\x8a\xb9\xb1\xc3\xb5\xb0\xf8\xe1\xc0\x06\xf7\xdc<\ +W\xae\xa8\xe8\x97/\xcd\xa9\xbf\x1a\xf8\xfb\xc9\xc9\x93G\ +\x91\xce\x87\xdcf\xfa\x83\xadDF\x82\xe7\x80\x9cW7\ + F\x1b\xbf\xb1V\xadG\xe8\xe6\x9a\x8c\xb1nx\xa4\ +\xc2\xd5\x00sq\x90\xe6\xe2\xfa\xe6\xcds\x05\xb0L_\ +\x7f\xaf\x9c\x9bG?`\x09\x10;M\xce\xcc\x9au\x14\ +\x86\xd6AHX\x95+7\x8b\xc67\xd6\xac\xf9\x18\x7f\ +\x04\xb1R\x18\xd5)}=f\x0c\xf2\x0e\xc3\xd0\xc6\x80\ +\x0bi\x1e\x0e\x8f\x18q.\xe6\xed[c\x9br\xe5B\ +\xa5A\xbd\xc7\xb3`\xd9\x11\x88T\xc5\xfa\x0b\x00[\xcc\ +M4vd\xd4\xa8\xfd\x18\xa36]M\xc06B\x03\ +\xd2X\xe7\x80\x1d\x84\xce\x80\x91-_\xe9\xd2!\x1dV\ +\xad\xf2\xc6\xcde\xa5\x96+\xe6\xe5\xcb\xf9\x06\x05\x0b\x86\ +\xfd\xee\xe3\xb3\x7f\xd2\xdd\xbb\x1b\x0d[\xb6\xf4\xcb\xa6R\ +\x0d@\x94\xfc\xe1\x12z%]\xc0(%\x84\x91J\x88\ +\x8d\xe0\x0a\xbd\x9c9\x13\xda\x9a\x9b_\xc9W\xa2\xc4\xfa\ +\x81\xce\xce\x96\x95:u\xf2\xd1\xcf\x9f?)g\xee\xdc\ +\x02?\x9f\x1f\xe9\xe9yH\x08\x11\xb0P\x88\x12!W\ +\xaf\x0eE\xf8\xe0M\xf7\xcd\x9b\xef`,6E\x08s\ +\x5c\xbd`\x5cG\xc9\xf1\x22WM:\x83O\x03\xdd1\ +g\xdb\x84n\x80\xf1\xcc\xd3s\x1dV\xb7zB\x02\x93\ +cM\xab\x1b\xf4\xfa\xef_]\xb7n\x10\xd4\x88\xd7\xe3\ +\xf9(\xe7A\x83\xb2\ +C\xa83\xc5\xed\xb4\xb7CX\x19?,\xcf\x97/&\ +\xfa\xd5\xab\xe9x/\xa7L\x8a\xde@gD\x91\x11\xe0\ +\xf9R\x81\xa3>EF\x9ac%\x9b\xaa\xb9\x85\xdc\xdd\ +\xb9\xf3U<3\x12\x12\x8fO\x9e\xfcE\xc6\xf3\xae\x0a\ +-$%%5Bg\xd8s\xf4\x1c\x0e\xb3\x0b\x22\xd3\ +\xc1\x93X\x17\x9e\xb39\x94@\x8bmK \xbc\x5c\xf3\ +1f\x80\x09\x99\x01\xa6<9{v)\xbd'\xb4\x80\ +j\xe7\xb5d\xacx\xd6N\x06]\x95\x8c\xf7p\x5c\xa7\ +\x82\x19S\xf0\xca\xf3U\x03,td\xf4\xe8\x0d\xd8^\ +F\x91\x97\x19\xd9C\xf1\xe4u\xd6H\x1d\xebIs\x81\ +\xad\xa8g*s\x9e\x0d\xe7uojh\x02\xc3\xdc\x80\ +\xfb\x12\x22\xf3\xc1\x07x\xb0\xbd\x8c\x015\x14\x00\xb6#\ +\x03i\xd2\xb65k\xb6\xfd\x1b\xbf\xd3\x08\x1c\xbf\xfe\xe7\ +\x9fK\xd3\x96\x14\xee\xeb\x90k\xeb\xd7\xef\x82\xdb\xfa\x8d\ +4\xbe\x00jt/2\x0aZ\x0e\x93\xec\x98\x8f{X\x15?\x86?}\xba\ +\x02\xcf\x8b\xfd\xa9|{\xe6\x82\xe1\xe7\xe00we\xc1\ +\x82\x91\x14\x06\xc0\x04\x5c\x00\x17\xc8\xec\x14\x03\xad\x89\x9f\ +\x00\x8e\xc56e\xb8\x12\x94\x8d\x08\x0aZE\x8d\x0f\xe9\ +\x1eq\xa3\xa1\x22\xa3\xc1m\x96\x17\x04]\xbch\xf7\xe2\ +\xd2\xa5\xb5_\xbe|Y*\x83\xe5\x06Z!\xa1)4\ +\x1f\xc7'Nt\xc3\xb3\xae\xe2O \xe7\xfa\x84\xb1\x10\ +\x15D\xe6\x81\xdd\xd2\xef\xee\xdd[\xea\xd8\xa6\xcd\x0dd\ +\xb5\xab3Rh\xeb\x82B\xc9ZZ\xef\x15\xc1\x19\xb0\ +\xb8fP\xd6\xd3\xc4\xa49\xe1\xdb\xf0\x09\x9eM\x07\xb3C2\ +\xa0 \xbc`4a\xbf\x8b,\x03o5\x03O\x9d\xda\ +`W\xb9\xf2c26\xaa\xbdC\x0co7\xe6&U\ +\x0f2\xe2y\xcd\xb1C\x09\x91g\xc1\xdb\xafn\xdfn\ +A%ABg\xc0ib\x07\xe4\xe4\xc4b\xfb\xf1\xe5\ +\xe1\xd1\xa3\x9b0A\xd5\x85\x84\xdc\xde\x14\x14Y\x096\ +\xba\xca\xe0\x1f\x97W\xad\xda\x8fj\x90\x0f\xd2\x91uY\ +[\xa8HI\xa0\x86\x03F\x9d\xca\xb7\xaeJ\x15\x1f\x1d\ +\x9b;Fdhh=*\xa4\xa4\xeae\xf2fR\xa0\ +u\xae\x10\xf9\x84.\x82\xb3\x8b\x9a%\xc4\xc4\x18\x1f\x19\ +9\xf2,J\x84n\xb8\x0e\x1b\x96ZO\x04\x15\xb6\xa1\ +\x97\xe9\xec\x1dz\xed\x1a\xa5\xf2\x19\x0a\x9d\x03g\xbe\xf7\ +|{\xf7\xae\xe5\xf6\x16-n\xd2*\x87\x04\xe7\x81B\ +W\xc1\xf3\x95\x07\xec\x05.\x01\x1b\xcb]\xcaz\xd0D\ +\xa6\xf2\xfd*\x03\xe6^\xb2\xe2\x5cG\xc1\x13Y\x0a\xfc\ +=2$d%\xae:np\x0c\xa5\xac\x87\x80\xd5\xec\ +\x18\x19\x99\x94w\x08]\x9e'Ox\xec\xfb\xf7\xa6\xe4\ +,K\xc51V\x16\xef\xcd\x05\xcd\xa8d+\xeb\xcb\x80\ +x\x22\xab\x83e\xc5\x8f\x04\x9e\xb3\xf6\xe7\x8d\x8d\x0f\xa1\ +\x0cH}\xbeC\xc6\xd0[\xaf\xa5K\xc7\xa5\xa24\xd6\ +\x9f\x0a\x94\xb5\x84ko\xca\x8a\x844\x80\xc1\xe0\xf3]\ +kZ\xd5\x9c\x06\x0e\xf4\xc2y}\xf5\xa7\xa8\xa8\x8a\xdf!\xb9\x9f\x1b\x1c\x0dZ\ +\xc0hg\xe3ZQ\xfc\x0b\xa1\x12\xff\x10\x0c\x86<\xdb\ +\xd5\x06\xeb\x80_\xc1\xf3*\x95\xeay\x1a:\x07uV\ +\x09\xb1\x03,\xad1\xfc%E\x88q\xcb\x84p\x14\xe9\ +\x06\x06\x83\x9b\xc9\xd4\xc3\x8a\xf6\x11\xb1\xbb\xc4\x13\x13'\ +\x1e\xa4\xcc$*\xdfB\x91\xf3\x07\xa9,\xd0L\xfck\ +\x90\xc5%\xf3\x0c\x06V1\x13===\xd1k\xc7\x8e\ +\xbd=\xec\xed\xfd\x0a\x96+w\xaaz\xbf~{\xda\x9a\ +\x99\xed\x15*\x95\xc8]\xb4\xa8\x89\x90\xf8gic\x0c\ +\x06\xafn\xd9Q\x89\x10M\x82\xb5\xd8\x96N\x02\x0bj\ +*\x06\xd8\x18\x19\x05[\x96(\x11\x8aq\x15\xe9e\x82\ +\x91\xf8\x9d\xc5\xdf!X\xcb`0\x16\x0b\xf13y6\ +\xd1\x00\xf4\xb8\x12\xe3\xd3\x04tN\x9f\x93\xdc\xbe\xba\x07\ +\x9e\x9e^7zW\xf2y\x1aE\xa8\x18\x0c\x06)s\ +C\xad;nc\x9d:WSq\xa4\xa8\x85k\xd1\xe3\ +\xe2\x12U\x9e@\xf5m\x0b\xdd\xbb\xfc\xf6\x9b\x07\x8c0\ +\xd0\xa1eKj\xdf\xa5ZDm\xf6\xfe\x1e\x18\x0c\x06\ +\x8c\xed\x92\x5c\xb5zi\x18[w\xd25%YE(\ +\x8eY\xed\xee\xdb\xb78\x82\xeb\xb1\xb6\x15*\xbc\xa0J\ +u\xc8\xf9Y\xe0\xfa+\xde\x99\x09~\x01\xb7P{.\ +\x91:\x18\x0c\x06)\x81\x81c\xa1\x97rSvbJ\ +\xc4\xf5\x0c\x8c\xc7\x1d\xd7\xcf\xa8\xc9\x8b\x86\xb7\x92\xe49\ +\xfaa\xec\x0fz\x87z\xe8\xd9\xff\xfc\xf3<}\xbcd3\xcbV\x1a\xc6V\x87\x0c\x95\ +\x82\xea\xb8e0\x18T\xe4\x0a\xcezp\xe4\x88=5\ +!\xa1\xfe\x07\xe8S\xfe\x02\xdb\xc5\xf6\x1a*pG\x94\ +\x95\x105y\xdeg\xe7\xccQ\xdfc;y\x99\xde\xb7\ +)W\xee!\x9a\xcd\x98\x90\xfc\x9f\xd2RM\xfe\xdeP\ +\x18\xf2'\xcb\xe2\xc5\x8d\x05\xc0`0d\xe7\x1e\xb0\xda\ +3w\xf7Uh\x02\xeaa\xf7\xd3OgN\xcf\x99\xd3\ +A9\xe7\xc1h\xdej\x88\x18-\xc1\xf6s\x9f\xd4\xd3\ +\xa4^\x15\x11\x10\xabZ\x83\xf1\x06\xf2\xfd\x0eR\xe0v\ +\xe3\x91\x09\x13\xca\xbf\xbaqcMBl\xec|\xd9\xa8\ +\x92\xc1`h\x06\xba\xc1q\xa0\x09\xd8[H\xbc\xb9{\ +w\xa0\x8f\xb5\xf5^\xb9e\xac\x0aI\x87\xab\xd2\xc9\xf2\ +\xe5\xba\xbd\xfdNM\x15h\x8c\xe7G\x13Q\xc5\xeb\x19\ +\xb1\xb3c\xc7\xbe\x7f\xa1\xf0\xcd`\xb0\x9eJ*\x868\ +\x00,GN\x10\xacx\xf1dP\x87\x06\x0d:\x8f\xb1\ +)\xda}\xd1\xd1\x9c\x92<\x9fQ\xd8\xa2F?ts\ +\xab-\xbe\x1f\x0c\x06\xe3\xf8\xf8\xf1\x0b\xd0\xf8\xf3\xc6\xe7\ +\xa4$\xe3\xd4Zk\x99f\xcb6\x8f\x0c\xf2\xcc\xacY\ +Ge\x97^\x9d\xc2\x0f\xb5\xb7e0zn\xd9\xe2\x86\ +K\x0ax\x06%@a\x94c\xa9\x12\xa2+\xee\x97&\ +a\x81K\xf9\xfa\xd58\x1f\x1a\x81vX\xb5\xca\x1bc\ +\x97\xfefLp\x16.\xc5\xc1\x15fB\xc4hI\x8d\xcd\x140\x10,\x8a\x98\xdeL\xba\xdf\xd1\xaa\ +\x95\xfb_\xf77g0\xd8\xe8\xaa\x81\xd3\xbd\xcc\xcc\x9c\ +V\x15*\x14A\xc6#W\xb1\x9c\x02\xa0\x8e\xad\xb4\xf2\ +\xa1\xd4\xe7\xc9+??\xeb\x8f\xef\xde-\xa7\x9e\x85\x14\ +p\xc7\xeav\x1d\xef>1\xcf\x95+\x06\xc5\xaf\x16\xe4\ +\xa4\x11\x7f\x09\x06\x83\x8d.;\xd8\x92:\xed:\x0f\x1e\ +\xec\x81\xd6\xd6\xbe\xe8\x0aTP\x9e\xd1&\x83)\x90k\ +w\xa2>\x17`\x0d\xb0\xed\xe1\xe1\xc3O\xd38\xd1m\ +\xda4*\x11\xea$\xd2\x06\x06\x83\x9b\x92\x80}AS\ +\xb0\xbe\x00\xb0\xcd\x1c+\xeb\xee\xb6\x08\x0dl\xfd\xe5\x97\ +\xc54N5w\xc8V\x99'\xcf\x86\xff\x04\x0c\x06w\ +\x03Z[\xa3\x86!\x9d\xed\xc0\x8f\x8b\x85\xa8+\x00*\ +\xe7\xc1V\xf2\x22\x19\x9c\xdf\xd6\xad;\xc88\xa9\x8f!\ +\xee\x17\x81\xe7\xf0\xcc\x0d\xd7Q\x22\xed`0\x18\x88\xcb\ +\xedD\x02t\xb2<\xdf\x85\x11\xe9\xe7\xcd\xf5\xeb\x07\xc0\ +\xd8&\xac)Q\x22\x0f\xee}i\x0cg\xbbX\x0d\x9d\ +Mc\x16\x11J#\x18\x8c\xce\xd6\xd6+\x87\x9c8a\ +_g\xd8\xb0\x93E*Uz\xa4\x12\xa2\x88\x00Z\x19\ +\x1b_&{\x84#e*\xae\xbfT\xea\xd4\xe9\xc2\xc2\ +\x8f\x1fmf\x85\x86\xae,\xdd\xa0A\x00\xde3\x87\xe1\ +yR\x0f<\xe9\x84\xf9\x9b`0x\x9bY\x01\x1c\x1e\ +\x15\x1a\xba\x84\x9a\x8d\xa8\xcfoe\xcb\xde\x16\x00\xc2\x05\ +\x17\xb1\xb2}\xc1Y\x8e:\xc16\x03\xebD\x04\x07\x8f\ +\xa0\xad\xa8\xc6jwZ|\x17\x18\x0c6\xbe\x01\xfe\xdb\ +\xb7o\xbf{\xe0\x8099K\x90\x7f\xe9\x8d\xea\x83\x84\ +\x97\xbe\xbe\xed\x84\xc4\x86\xd6\xad\xf3R8\x81j\xf1\x8e\ +\x8d\x1d{\xea\xf8\x84\x09\xeb(w\x93S\xbb\xd2\x0e\x06\ +\xc3\xf5\xe7\xd1\xa3_\xe0Z\x09\x14\xc5j\xd5\xf2\x0a\xbd\ +r\xa5\xf9\xde.]\x16\x1a#.\x07\xc3\x88\x0c\xbbx\ +q\x1d\x1e\xa9\xaa\xf6\xee}\xa5\xd7\xb6mnt\x04;\ +\xf4\xeb\xaf?Q\xad\x1d\xc6\x0d\xc1\xb7_\x85\xd8k!\ +\xc4\x1d\xf1\xf7\xc1`0^\x05\x04\x18\xa2\xc0\xf5\x8e\x86\ +\x14\xdfg\xbaB\xaa/\x22.,l)5\xa7$Y\ +?\x127\x92\x1d\x83\xe2\xe56\xf3K\xda\x1c+\x0c\x06\ +\x0b\x1a\x19\x92\xdc^rrr?\x7fG\xc7\xed\x90\xe2\ +s^\x9e/\xdf+E\xb8\x08\xc6\xd6F\x00\xb2\x7fy\ +\xca\x86\x1a5\x1e\xc5\x85\x87[<<~|\x93\xad\x91\ +\xd1\x0bi\xa0\x83\xbf\xf1\xdf.\xfd\xbf^J\x06\x83q\ +2\x07\xb6\x91\x16\xfa\xfa\xb5r\x15,x\xb4X\x8d\x1a\ +O\xbe$$\x14-X\xbe|H\x1b3\xb3+x\xee\ +C-\xb8TB\xd47(T(\xea\xc3\xa3G\x95\xad\ +K\x97\x1eqo\xcf\x9e\xa0\xd1\xde\xde\xb69\xf3\xe6\x8d\ +\xd5\xcf\x9f\x7f\x89\xd0\x02\x06&\xa4\x08\x11\xa4at\x0c\ +\x06\xc3m\xfa\xf4>Ve\xca<\xd3\xd8N~]\x91\ +/\xdfS\xa9\x1cVK\x00\xd4hR\xc6\xed\xee\xd1\xca\ +f]\xb6l\x80\x8c\xd9y@\xd8\xe8\x0d\xb6\x9e1x\ +\x97\xf4TT\x18?\x08Z\x914;\x9e=\x8f~\xff\ +\xbe\xb2\x00\x00\x06\x83A\x02D\xe8q7\xcb{\xcd\x9a\ +}\xdb\x9a4\xb9\x88\x02\xd7\xc3\xb4e\xc4\xf8`\xa1\x01\ +\xd2\xc0\xa4\xd0\xc1\x96\x06\x0d\xa8\xf8u\x1a\x12\xa0\xf7\xa3\ +\xe5\xf2\x1b\xb9\xcd\x0c\xc4\x98\x91\x00\xcc\x0d\x0c\x8e)\xc6\ +\xbb\xb7kW\x9f\xc4\xd8\xd8\xfa\xe2\x7f\xc0`\xb0\xd1\xe5\ +\x90*b3\xc0\x85`\x1bP%4p\xd7\xc9\xe9\xd7\ +\xd5\xc5\x8a\x85\xd1\x0a\x08\xa7\x89\x07\x8c\xc9\x22,0\xd0\ +\xdcu\xe8Pw\xef\xd5\xab\xf7)\xcaa\x97--'\ +\xd0;\xa8D\xf8,\x0d\xef\xba\x89\x10ME\xda\xc0`\ +p_\xf3\xf0\xe7\xcf\xe7\xef\xed\xde\xdd\xc7\x5c_?\x5c\ +z+c\xd1vy\x11\xe9\xab\xc8\xd7T\x18\xbb@\xb1\ +\xbb\xa7\xee\xee\xebQ\x91p\x0e\xc2G\xf1\xb2\x06\xaf\x9d\ +H\x13\x18\x0c6\xba<\xe0\xb0\xe4O\x9f\xcc\xae\xd8\xda\ +\xeeql\xd3\xc6\xed\xa2\xb9y+2F\xa9(\xdd\x9f\ +\x0c\xf1@\xdf\xbe\x1706\x04\xec\x0d)?K\xd7\xe1\ +\xc3O=>q\xa2\xa5J|\x0f\x18\x0c6\xbc\xc2\xb8\ +\xd4\x05k\x83O\xa0\xafrZz&\xaf\xe600\xa8\ +1#8xm\xde\xe2\xc5m1\x1eE\xdd\x7f\xf0\xa8\ +#\x18,\xd2\x0f\x0c\x06\x03\x0e\x93\xfb\xcb\xf3\xe4\xf9x\ +m\xfd\xfa\x91\x19\x5c-\xc0`0\xda\x98\x9aZ\x93\x9a\ +\xf4\xe9i\xd36\x99\x0aq\x18\x1c\x85\xa0z\x99\x0c0\ +8\x06\x83\xd1b\xc1\x82\xe3}\xf7\xec\xd9\x5c\xaa~\xfd\ +G*==\xd2\xc5tDP\xfd\x84\xc8\x180\x18\x0c\ +R\xfe\x02g$\xc6\xc5-#\xc9\xbe\xb0\xc7\x8f\xe7*\ +\x15\xe8\x19\xe74a0\xd8\xf0J\xe3RM\xda\x99\x0f\ +\x1c(\x09\xe2_\x09\x06\x83\xc1`0\xfe\x0f\x1d\x9b\x1f\ +\x99f\xa1:\xad\x00\x00\x00\x00IEND\xaeB`\ +\x82\ +\x00\x008\xb4\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\xa8\x00\x00\x01w\x08\x03\x00\x00\x00\x06\x8a\xf0\xc8\ +\x00\x00\x02\xc1PLTE\x7f\x00\x00\xa3m\x93\xa4u\ +\xa1\xae\x96\xd0\xbb\xb2\xec\xcb\x9d\xa4\xd7\xcd\xed\xbb\xbb\xfe\ +\xcb\xcb\xfe\xd0\xce\xfe\xd2\xd2\xff\xc8\xc6\xfe\xc3\xc3\xfe\xdc\ +\xdb\xfe\xc0\xbe\xfe\xb8\xb6\xfe\xd8\xd7\xff\xb3\xb3\xfe\xe2\xe2\ +\xfe\xeb\xeb\xfe\xf3\xf3\xfe\xfc\xfb\xfe\xb0\xae\xfe\xf0\xef\xfd\ +\xad\x80\xa3\xf9\xf7\xfb\xaa\x9b\xe0\xad\xac\xfe\xa4b{\xbc\ +{{\xbd\xb9\xf5\xbf\x80\x80\x911=\xa7PP\xa9S\ +S\xca\xc4\xf2\x95,,\x96@S\xcc\x9b\x9b\xcf\xcb\xf7\ +\xae\xa6\xf1\x9cSm\xdc\xb9\xb9\xe0\xdf\xff\x9cZ{\xb5\ +\xb0\xf4\xee\xe0\xe1\xb7pp\x9eAB\xf5\xec\xec\xbb\x83\ +\x8f\x8f !\xbe\xb1\xe4\xd5\xac\xac\xce\xa0\xa1\xbe\xa8\xd3\ +\xb2lr\xd7\xb0\xb0\xdd\xc2\xc8\xed\xe3\xeb\xa9v\x99\x8b\ +\x22,\xb6\xa9\xe4\x9dj\x98\x89\x13\x14\xb9ss\xb9v\ +x\xb9\x9f\xcc\x9fh\x90\xa3\x81\xbb\xbc\xa2\xcb\xbc\xaa\xdb\ +\x9c::\xa6q\x94\xc1\xbb\xf3\xa6\x88\xc2\xc4\x91\x98\xc5\ +\xba\xea\xc6\xba\xe5\xc6\xc0\xf4\x95Ji\xa8\x85\xb9\x960\ +1\xcb\xaa\xbd\xb5ll\xaa\x84\xb3\xcd\xa3\xaa\xb5\xa0\xd5\ +\x8b\x1a\x1b\xd0\xa2\xa2\xacZ[\xd1\xac\xb5\xac^b\xac\ +\x84\xad\xaddm\x97V}\x9833\xb6\x99\xc4\xdf\xdb\ +\xf7\x99FY\x9a=D\xe4\xcd\xd1\xe6\xd0\xd2\xe8\xe6\xfb\ +\xea\xd7\xd8\xaf``\xec\xda\xdb\xb3\x92\xbb\xaf\x8a\xb5\x9b\ +J\x5c\xf1\xe3\xe3\xf3\xed\xf3\xb1cc\xb1\xa3\xe2\xf7\xf0\ +\xf0\xf8\xf3\xf3\x8c&2\xb3\x89\xab\xba\xaf\xe8\x8d,;\ +\xb6\x84\x9a\xac\x8a\xbb\xba\xb4\xf4\x89\x1a\x22\xa1P\x5c\xcb\ +\xc1\xec\xd9\xb3\xb3\x85\x10\x13\x95C\x5c\xc1\x83\x83\xa3T\ +a\xc2\xb4\xe2\xb0\x9e\xdb\x99CR\xb1\x86\xa9\xc7\xa8\xc0\ +\xb1\x8b\xb3\xa3\x87\xc6\xb2\x9c\xd3\xa5LL\xa5h\x84\xb4\ +s|\xb4\xa1\xdb\xb4\xae\xf3\x9aLb\x94Eb\xa6\x8e\ +\xce\xd5\xb8\xc5\xd6\xc1\xd5\xb6x\x83\xa6\x8f\xd1\xd8\xd3\xf5\ +\xb6\x90\xb2\x9bWx\xd9\xc6\xda\xa7`p\xa7\x90\xd1\x9b\ +d\x91\xdd\xcf\xe2\x8d0D\x8e8R\xe1\xc4\xc4\xb9\x8b\ +\xa3\xe4\xcb\xcb\xa9\x8b\xc3\x8b'9\xe6\xe1\xf4\x9d`\x85\ +\x90.;\xea\xe4\xf2\xbb\x9a\xbe\x905I\x9fEM\x96\ +Id\xa1DD\xad\x90\xc7\xa1MV\xaer\x86\x924\ +C\xa3j\x8d\x91,4\xc0\x86\x8a\x83\x0a\x0b\x9fRf\ +\xbc\x93\xac\xc4\x8b\x8b\xc3\x9c\xb0\x89\x16\x1a\xcf\xc2\xe5\xe9\ +\xd4\xd4\xb1\xa6\xe9\xb5\xab\xeb\xc9\x94\x94\xa1n\x98\xae\x99\ +\xd4\x9eXs\xd5\xbc\xcc\xbf\xa1\xc3\xae\xa9\xf5\x9bUs\ +\xafx\x92\xc1\xab\xd4\xc1\xb7\xec\x87\x19#\xb6\x9b\xcb\xa4\ +r\x9d\xaal\x83\xb7{\x87\xaar\x8d\xc4\xa9\xc9\x92=\ +S\xaa\x98\xdc\xb1\x92\xc1\xc7\x91\x92\xa4z\xab\xba\x95\xb5\ +\xe8\xda\xe3\xba\x9c\xc3\xca\xb1\xcc\xba\xab\xe2\x94;L\x9a\ +\x5c\x82\xae\x95\xcd\x959F\xa2Ym\xcf\xbb\xd7\xb4\x85\ +\xa1\x9dc\x8c\xbc\xa5\xd1\x99Om\xa6x\xa3\x91$$\ +\x9fo\xa1\x86\x14\x1a\x8e)5\x0d\x87*p\x00\x005\ +\xaeIDATx^\x84]S\xb7,\xcd\xb2\xed\xb7\ +r\xb5\x17\xb6m\x1b\x1fm\xdb\xb6\x8dc\xdb\xb6m\xeb\ +\xda\xb6m\xfd\x8a\x9b\x19\xe8YQQ=NveV\ +\xed\x97=\xe6\x08gDd\xae^\x9e\x0fr\x8c,O\ +\xc3\x1af\x1a\x7f\xfc\xe8(u-i\xca\xab,J\x19\ +u\x9c5=e\x12\x9e2\xb1\xa3\x1f\x9e\xb8\x0c\x87\xf2\ +\xc4\xa5\x1f~:V\xc6ge|\xe2W\x5cW\xf2X\ +\x11f/\x1f\x0c\xf2\x01\xd0f9C\x15\xb0\xadQ\xd2\ +\x14\xa8a\xa5Y\x16\x0a\x97A\xd64\x02\xb22\xfe\x04\ +p\xcdP\xfb\x01]\x12'#\x0d3\xe0\xec\xf7\x814\ +\x0c\x8bR\xb1\xf6\x22\xc80\x05iF3\x8d8\xe9\xc9\ +,E\x89\x8c\xf4\x13z\x82\xa2\xb5<4\x93\x004\xac\ +4JK\xd6\x00\x92\xa0\x0aA\xe9\xb14%\xa2:\xac\ +=\xa0\x04=\x99\x98Yx\xe2\xa2X-`\xb0\xde0\ +\x9f\xa9\x19I\x9b\xcc\xa89\xa3(\x91S\x99\x1ef\xe0\ +;Q\xb3\xcf(\x01\x95\xb8opF\xd6\xc7_\x03i\ +\x84E\x88\x09-\x81\xcd\x0dD\x85\x09\x82\x02(C\x8d\ +\x13\x1c\xa7\x85\xc9)\xbc\x0f\x0c'\xa22Z\x82\x89!\ +\x10\x15%(\xda\xa5MY&\x8a\x94\x1bBB\x99\xf8\ +\xc5\x98\x0b\x03S\xa5\x94\xe8\x19\x95\x0a\x5c\xe7IH\x03\ +8a\xbf\xd1%\xd6# 5\x14\x8d\x9c\x07\xd4\x8c9\ +O\x22\xaa\x04M1\xbc\xef\xac\xe5\x91A\ +\x09b\x1aO\x0f\xd6\x03e\x84\x19'\xe1D\xdc\x5c(\ +R\x0e\xf4\x09\xab\xc0,\x14%\xbb%%iR\x9fv\ +\xce\xab\xbf\xd0[G\x0c\x1e\x0b\xf7w\x11\xceINf\ +4\xcc<\x1f&\x80\x09\xa2z\xcd7\x14e\xc6\xe7\x02\ +\x94!\xd2\x9aAD\x05\xa8be\xa00K`\xfe\xad\ +\xff\xd0\xc3\xf8\x5c\xc9@o'\x05z\xd3\x95K\x9f\xb8\ +\xfd\x8a\xf7l\xde~\xfb9\xefJ\xa0K\x82qnP\ +b\xed\xa8\x1a\xd2HM\x11\xd3\xa6&\x15\xc2zF\xe9\ +\xa3\xf9\x95\xf1x<\x1a\xe5\x83\x94\x90\ +NK\xe8\x03\xaf\xa7(t?{x\xf3\xc7\x08\xa9\xb2\ +~\xabXRr\xf1EA\xef\xf29\x8d\x80nZ}\ +\xe3\x89\x97\x91\x90\xf2V\xd9\x19\xd2_Y\x1e\x04\x94\x0c\ +\x95\xf3\x99\ +\xeb\xdeF^o9\xcd\x80\x94\x85\x94\x08J#]\xc3\ +\xae~spJ\x18?\xdb\xfb\xd0\xb4\xd0\xf2\x8d$\xa0\ +\x0cF\xc9;jQ\xccr\xde\xc8\xa87\xf8q\xe6\xd9\ +A\x8a0n\x9e.\x8e\x06y\xba\xf5\xdb\x91~Sx\ +\xa6\x22;\x9b\x22\xb9\x8aq\x92\x8b\x8a\xd016\x1d\xe9\ +\xddt\xc9\x03\xd3qU\xa2 F\xe4\xac\x81\x92\x9f(\ +\xa3\x022|\x01&=]\xbb\xa6m\xdb\xb6!\x01\xf1\ +UR\xe1\xa7\xa6\x03\xb1\xf5\xc1\xef}n\xda\xd8\xd3s\ +\xc0\xb7:ZR\x0d\xf5\x8c\xb9\xdf\xfb\xf4\xb8\x18W\x99\ +\xd6B\xc9\xe1\xd7`=\x8a\x0d\xc0\x0b}\xc2\xb0\xe9\x07\ +\x0c\xe4\xf0\xef&=\x9f\xcc|\xd3\xd6\x8f~e\xc2E\ +\x11E\xfa\xcfQ\x1a\xc6a\x9f\xf7\xe8\xa9\xbdUY\xdc\ +\xd4\x1dz\xb9\xc2<\x16T\xc7T\xee\x08d\x0d\xd6\x0b\ +V\xd5v}h\xf2@\x1c\xca\xd3\x85yb\x99(w\ +\xb5\xda\x1d\x81\xd2oD\xf4\xab\xb3\xd8\xe0\x1b\xde\ +\xe2\xc8-Np]\x80Z\x9c\xe8)\x89\x8f\xa5\xe7\xb0\ +\x0f\xd6K\x82\x84\x16\x97\x86P\x80\x06+2\xceh\x22\ +\x94'\x95\xaa\xad\x89JJ~\x19\xd6\x17f\xbb,\xbd\ +O\x08I\xbc\x17\xa5\x1f}\x1a\xeb\x84\xbe\x17\xb7\xafg\ +\xcf\xe4\xdb\xdb\x09g\x06\x19\x05-\xad\xa4:\xbe\x87\x07\ +\xca\x94\x04\xe4]\xee\x93\x1f$\xc5\x13c\xee\x8d\x15\xb5\ +\xad\x1a\xae\xdb\x91\xbb\xc53\x18|\xab\xf7\x82O\xdf\xfc\ +\x82\xd6\xaby\xf22\x0a\xb4\xbaW\xa6o/\xa8p\xf9\ +6\x1e\xb5\x03\xfd\xcd\x99\x97Q\x905Ut\xa9\xd1\xa3\ +\x1a\xa6IVk\x99\xb0\x9fw\x18\xfd\xbe\xde\xfb\xfa.\ +\xb4qi\xf9P\xeb\xe8IT]\x96\xc4\x91\xd4\xb5\x0e\ +\xc3\x86\xd2b\x15\xc9\x1fl\x98\xafL\xaa\xf8\xa0\xa8\x0b\ +J\x8a\xb8\xfanLu\xa1\x82\x12@\xed\x90\xe8\x095\ +&@\xednx[\xd1\xdd?J U\xf3\xa1\xf5\x08\ +L\x0a\xae\xde\xd0\xce\xd9\x84\xf8\x89\xb2\x1e\xb3\x9dwb\ +\x96sa\x84\xd4>q\xbe\xc9$\x9b\x8765\xee\xb8\ +\xce\xab\xb7\xf6\x08\x99qZ \xc5\xae^\x95I\xe3Q\ +\xc8\xa9\xed\xc3\xc7a&CMy\xe4\xe5sO\xf2D\ +h\x99`\xcdT\xa7(\x84vh[m\xce\x18jC\ +kZ\x15l\x9c\x84\x118\x01\xd6\x0c\xa3Fx{\x8a\ +\xa6\xbaF\xe9T\x19\x05T\xf6E\xea;\xfdV\x84W\ +\x06[\xf3\x0b\xc3\x22\xf5\x813v\xa1\xde\xdb\xfb\xde<\ +6L\xcdcl\x99\xe1:>\xbd\xa7\x07J\xa4I\x8c\ +\x98\x82\x9a2\x05-l>\x0c>-~_\xef<\x13\ +\xc3\xf5[P!\xa8\x85\xe9s:%\xa4\xd3\xf8{\x17\ +\xe5\x81\xb0N\xef\xbdy2}O0\xa2\x19\x93\x15\xbc\ +w\xa7\x9adZ\xf9\x04\xf3\x91\xd7a\x90\x16.`&\ +\xde'\xe9\xea\xca7\xc6\x8eR\xef\xa0\xc0\xc5\xe0\x04Y\ +1\xe3\xbaLKWD\xf7no\x87\xed\x08@Z\xdb\ +\x04\xc5\x9f\xd7\x01\xe1\x07\xe1\xe4\x98\xc4\xb0\xbf@\xa0\xd7\ +\x86\x09\xe1\xa4\xc5\x9fm\xe8\xc3\xd3\xebj\xa0v\x07%\ +\xa0he\xa5T9\x8f\xc0\x99a\x02i\x89\xc0\xd91\ +^\xd9^\x93}BX\x0a\xa2\xca\xe2r%@\xab|\ +ok}k\x08J\x9c\xc0p\x91\x93\x22-`\x9c|\ +\xea\xb1L@R\x83\x12\x91\x13b\xd1D \xfaZ\x18\ +\xa0\xba\xb6L\x06\xca\x10\xado*y\x16f\x17*\xae\ +\x09>T\xa5\x14\xd9\x92v\x80\x079\xb5\x81\xb3\x8f\x97\ +;=\x13\xcc=\xbfR\xdd\x88\xba\x5cI\x81\x93\x0d\xc6\ +\xd5\x1bQ\x85WrJO\xe0\xd0\xa7\xd1\xd2\xa6\xb9@\ ++\xbb[\x96\xed'\x0c~n\xad(\x07%\x90S\xd4\ +\x99\x12^\x98\xe3<\xbb\xe3\xe6Y\xc1\xa1\xa5\xf8^4\ +}~\x94\x16/\xa7\x80i\xad\xe8\xbc\x13-\x00\x8b0\ +\xaf4\xd1\x93*\x13`z]r\xe2I\xb3W\x0d,\ +\xccT\x812=i12\x8a\x04\xa9\x1b|\x88\x8d\xb0\ +9\x9c\xf0\xf3\xb6X\xef\x8f\xaf\xces\xa1y\x05!\x85\ +\xb7\x87\xbd\xf7\x813\xa6\x09\x9fj\x9a \xab\x97S\x8d\ +\xef\xb1[\x02]\x11\xe1\xe1\xa0\xb5\x09\x9c\x09\xa7\x0fG\ +\x89\x90X\xad)\xb5\xb9\xd1\xd4\xeeC\x15b9gc\ +\x87\xd0I\x00\xfbZ\x837S(\xda\x02\xa7\xe1\x7ff\ +7\xa2\x88C\xc37\x12y\xc0\x89]\xa8\xb8zSl\ +\xe8\x13\xf3\x01\x18:oc\x92\xee>\xfc\xca\xf0=\x15\ +\x8c\x10S\x9f#s\x1b{y\xd5\xb0\xf8\x9a\xd2I\xb0\ +\xf6\x85\xf9\xb6^o0\x9a\xca\x9d\xa7\xa8iv\x84*\ +\xe9#\x0bR\xb9\xcd\x9f\x190\xa0Q\xa9\xcc\xe6\x1e\x15\ +1_\xafO:\x14\xaa3\xf74\xb0(\xf1\x9b\x01\x06\ +T\xd5\xfc\x19J\x9f~\x12_\xefl\xa8`\xb5\xf5z\ +\x07S\xa0\x82\x9c\xd0z+\xa2x)57\x86\xfa\xf8\ +\xaa\x5c\x83{s0\xd4*\xbd\xf8x\xe3\x9cJ\x13;\ +q\xab\x86\xad\xd7\xeb\xb2\xd2\xe2\x0cow\xd2\x16\xa3\x83\ +\xf7\xe9\xc6/\xd3\xc1\x13\xb0\x9fQ\xf2,\xe0\x99\x8c\x88\ +\xaai\xd2\xa9X5\xed\x88\x82\x18\xc2g\xa8\x92w\xf9\ +b\x9e*0\x1f\x8c\x17\xb4[7s9|\xdc\x14R\ +A)\xd3F\xa4\xc6=A\xe5\xe7\xd5\xeb\xbd\xd6\xbb\x1a\ +#|=\xf4\x09\x04U\xaa\x1e\xe5\x12\xeec\xa3f6\ +\x0f\xfe\x93&\x06\xec\xa8,\xf4\xc0\xd8\xbbz\xbd~C\ +\x8f\x90\x18\xf7\xad\xc3\xde\x85\xc2\xd1\xaf\xa2\x8e\xe1\xe5\x09\ +\xf6\xa2NJM\x1c\x0a;*O\x93\xf5}_\xaf\xc7\ +\x00T\xb0\xde6h\xf94\x09\x9ch\x1a;K\xaeZ\ +\x1e)L\x94\xeb\x95\xb0\x96\x9a\xb0\xa3\x8a\xd6\x0c_\xaf\ +\x87J\x81\xef\xfa\xb6Z/E\x11\xbb\x15\x81\xce\xc7^\ +\x83\x83\x13wcAQ\xc0\xe2[\xb43;\xaazT\ +\xfa\xf3\xf5\x88\x9f\x00\xd2\x15\x1a|\xd1\xd6\x88\xa7.\x02\ +u+\xf5\xee<\x96+D(\x94M\x8fZ\x01\x80l\ +\xaa6\x01k\xbb^\xef\x93\x8e\x0c\xd5\xdaR_\x15\x01\ +\xeb\x19\xe9\xef\x92q\xaa,\xebQ_.\x9c\x8c\xf2[\ +\x9f\xba\xfb|=\xcc\x93\x13R\xa0\xf5\x9e\xc9\xe0l{\ +z:=1F\xf3\x8b\xb4\x8eBF}\xcc\xac?}\ +\xe90\x81\xb3\xa2\xf5^I\x81\x9a\xcc8\xf6Lm\xa4\ +\x025\x7fwl\xa3\x9f6\x1bux\xf8D\x1e\x10\x9b\ +\x94\x8e+6\xb5\xc2\xe6\xc4\xd9\xd0\xeeN2[\xb2\x85\ +i\xd2h\xf4\x14\x11R\x82\x08\x9c\x85\xfa(\x0b\x18\xa7\ +\xab\xe3\x8b\xbf\x91&\xd1\x0f\xd4\xeb\x15\xa7\x05\xeb\xec\xa8\ +\xdf3\xf9\xf8\xf9(\x9f\xf3K\xcd)V\xdf\x9e\x93\xb2\ +\xb3GK\x11t\xde\xd7CP\xafW\xbd\x07\xeb\xe7\x1f\ +\xb7\xf4\xca\x84k?\xf2\xadiF]\xad\xe3\x8cqB\ +L9\x90*:z\x9e\x12lFk\x7f\xf3\x0b\xaa\xe0\ +\x1aE\x81\x98M)\xed\xcc8+\xf3S\x03\x97\x99\x9f\ +\xfd_l\xb6\x9f\x10\xc2\xd4\xb0^\xea\xf5^R\xa5\xa3\ +@E\xc0*\xfe\x90\xa6\xb6d:\xd6\x03\x9f\x0fJ\x8c\ +\xb1\x87\x19\x15\xda\xd2\xc9\x8b\x07\xa7P\xa5\xd4h\xbd\xf3\ +\xf5LJ~\x9b\xcev\xc8i\xbf\xa1\xee\x5c\x1d\x01J\ +\xb4j\x06\xeb\x8d\x07\xa5\xed2P\xfa\xfb\x89\ +\x8e\xcaY\x0cu\xf6Px({j#g\x95P\x18\ +Q\xb7\xb7w\xbe\xde'r}\xffh\xd5\xd0\xfa\xd4\x15\ +\x1c\xbe\xaa=\xe2\x834\x85\xc6#_B M\xe0\x0c\ +\x88\xde\xdd\x0fU\x93l\xae\x84\x96\x95NL\xb1 \x1e\ +\xad,\xebaGS9\xcf\xff\xaa\x09\xb4\xbeH)z\ +r\x22\x0a\xadG\xd5\x0e.\x14\x045\xe6\xb3\xef\xe2{\ + \xf5\xc5\x06\xe7BS(\xd3/\xdc\xbc\x97\x0e2\x0d\ +D\xeb\xc94\xa5\x85\xb4\x91Z\xde\x9b\xbd(@\x22$\ +!\xa4\x90P\xef\xebQ\x17i\x83\x85\x8c\x0e\x5c\x86\x8c\ +f\x96m\x14w\xcf\x8c\xe7\x08\xaf\x19\xe5\xa5\xa6\xb1\x00\ +\xed\x83\xbc\xd24F\x94\xe5\x13\xf5z\x97&\x01F\x13\ +8\x07\xde\xd3\xec\xa8.\x0b\xde7PS6\xeb\x92 \ +U\x8d\xc2@\xecl\xfc\xbc\xa3(*L\x88\xa0\xbdB\ +y\xc5\xefY\x80\x88\x98\x91\xc7\xcb\xfe\x84\x8f\xb5\x89\xd6\ +KiY\xf5\x08hk\xa3Q\xdd\xf7=Y_j\x82\ +{s\x08\x83^ns\xd7ASd\xf32q\xf7G\ +\xaaT\x98\xcf\xda\xd4\x11\xdc\xd7\xa8\x812L\x9f\xcb\xe3\ +`\xc4\x86y\xbel\xdb}e\xa2+\x88e\xd4\xa7\xa1\ +\x89\xfc\x0c1)\xc1\x94ZS\xe7&4a\x8a\x92\xeb\ +\x94\xc9\x87\x06\x90\x17#\xa0\x8aT\x13&\x18\xf3O\x8b\ +\xf4\xda}d\xa9\x1c\x0a\xd6\xd6\xac8\x1f\x8d1)\x1b\ +(4\xe7\xf1\xbb\xb0J\xaf1\x09\xa7t\xf4\xe4\x8d\xbd\ +L\x098\x09\xa9\x93N\xabO\xbe\xba\xec\xbbJ\x22U\ +\x09\xea)\x10RQwZ\x0dE}\x17!/5=\ +.\xca\xc7\xdd\x9e?7\x1e\x85\x1d\x95'E-\x14\x11\ +>\x01%!]\xff\xa6C$\x9e\xa6t\x8btn\x22\ +\x13E1\xbf\xc1#lf%\xc6\x03\xa1\x8bG=E\ +\xad\x12\xc1\x962R=M\xf9!\xa9\xdc5\xda\x88\x5c\ +\xed\xce\x10\x14\x22j\xb7LH\x96\x00(\xaf.\x1eE\ +\x83Vw\x87\x0eOi~y\xa3\x00\xbdm\x14\x94\xc9\ +\xd2\xb3\x9cS\xb0\xef\xa2(\x94\xcaD$\xa6\x82\x03|\ +\x00i\x1b\xb4\xa0\xf60\xf6\xaaQz\xb0r\xf5\x04\xc5\ +0o\x9e\x92\x048\xf9\xa3-\xa1\x0c\x0a\xde\xc9'\xf0\ +]<:\xaf^\xcfL\xf7\x1d\x10\xff\x16\xcf<\xec\xdb\ +3.\xb4\xd8\x10\xde\x04\xd5S\x15\x22\x0a\x9d\xf7\xea\xa4\ +g\xeb\xbdq\xf2\xf1(n\xd0\xf2\xd9\xbc\xf8\x12\xdd\x17\ +\xb0\xffz\xe2\xbe\xc98+\x1a\x09|\xa3L-]B\ +\xfc\xe4\xa2|\x98\xa7.\xcd\xf7\xf1((\xda\x1d9\xbb\ +\xb6'q\xf5\xf3e\x14\x05F]ivu\x11\xce-\ +\x88\xcd\x8fGs\x9b$Ky\xb5Z\x8fA\x04\x85\x81\ +\xf2\xaad<=o\xef\xc0\xfd!\xd2cP{\x9f'\ +\xf1\xe4\x5c!\x11\xbe\xdf\xd0\xe3.\x1dS\x06g\x8a\xa2\ +^\xef{\x89\xd0U\x227\x0e\x03%\x16\x93\xc9\xe3\xcf\ +\x9f\x1f\x8fV\xad\xb3\x22\xec\xde\x19\xaf\xf8\xfa\xcc\x92\x14\ +bZ\xd2?\xac\xaf\xa7\xc9B\x0a\x82\xf2\x00\xcb\x91#\ +\xa3\xb0\xcf_\xf7\xe4\xc2Q\xc9\x94T\xd6<\x19\xbe\x9b\ +~\x5c\x8a\xf2\x05\xa9\xab\x82\xab\x07\xc5\xa1\x16\x1c\x08\xae\ +Q\xaf\xf7\xbe\xde\xb0\x7f~<\xea{J\xe0\xefm\x0b\ +!j\xf5\xb6^o\xbb \xa0N\xa5?f\xad\x12\x0a\ +\xe6\xfb\x02#\xaeK\xf5\x09\x08\xb7\xfd$\xe9\x0c\xd3u\ +\xe2\xf3R\xb8\xbe<\xc8\xa7FO\xa2\xf5\xf3\xce\xd7\x1b\ +_\xef\xfb\xf0\x01\xd2\x1a|\x0c\xa8\xbcp\xbfh_\x97\ +\x09\x19\xa5\xd5\x94\xc1!\x9d\xb8\xdf\xd1\x07N\xfax\xee\ +\x83\xf7\x18\xae\xc7\x19\x038\xa1\xf5,\x9f\xa6^_\xf2\ +\xe2\x8f6\x98\x0c\xa9s\xf5J\xd5F\x82\x5cA\x02c\ ++\x93\xcb\x05\xb1\xbcMPl\xee\xe4J\x9d\x223\xf7\ +z\x02a\xd1*\xd7\x1bo\xef`\x12\xb3\x91#\x0d\x08\ +i\xb1f\xc9\xd7\x99|u\x19\x9a\xc4\x0bC\xe4)\x8f\ +\xb2^*w\xaeW\xc3\xd5\xeb%\xd2\xc3\xd0>l6\ +N\xf1\xed8\xff\xc1\xd3\xaf\xb0\x06\x0a\xf5z\x0c%$\ +}\xc4/\x08)\x8b\xa8\xd6\x99\x8c\xd6\xab\x12\xb9z}\ +\xc0m\xf8\x8e2\xb87PB\xceO\xd3e'e\xd7\ +5\xf3\xe1\xb1\x15\xb1,k\xb5\x12!\x8d\xabu&_\ +\x0f\xa3\xc5\xd5\xeb\xadt\x9a\xd48(\xab\xb4\xa47]\ +\xb7\xf8\x83\xdc\xd0\xd4\xd6\xeb\x81\x15\xddYz\x9c\xa9\xc8\ +T\xe9qb\xc4\xf6\x95\xf0\x9dTs\xeb\xf5\xc0\x8b\xd4\ +\xb8\xc2\xb4)\xb2+\x22\xd0o\xde\xa5\xfa\xb4\xc2\x9b'\ +\x98Re=\x88\x9a\x05\x94q\xe2F\xf4\xce\xb6\xcc\xba\ +\x95\x22\x87\x84\x22&Q\x8a\x12ho\xf0\xf9:\xbd\x0b\ +\xc6\x1d\xbe\xde:&F\x8a\x03\x8c\xe4\xef55\xaeQ\ +\xb3\xf6\xe1\x03f\x82\xb7\xf8\xfb\xday&\x01\xaaw\xcc\ +\xf3\xe3b\xbd\x15\xbdc\xc7\xf7\x8f\xefr}O\x83\xf9\ +\xfd\x8e\xb8~\x14\xca\xc4$E\x1f\xbe\xad\x82\xf2\xca\xb9\ +q\xa7\xef\xa8\x86\x09\xd2\x8bw}\xbey-\xba\xd6\xc1\ +\x93*\xed\xab1\x85\xd6\x0f\x9a\xea\x9421\xf5\x95\xb5\ +\xc2\xe6\xd4\xeeB\x11\x94\x80\x9ajKk\xb9\xac\x027\ +\x95\x08\xb3Y>w\x07\x90\xf1b\xc5c\xa3\xbeo\xc3\ +\x1fv' \xaa\xbc\xebp\x83\xdc\x9a\x07\x92\x82\xa2\x08\ +\x9e;+\x22\x04Qo\xd6\xf0\x09\x88~\x5c\xae\xdd\xac\ +\xa7\xce\xc7\x96\xf1\xba\x0d\xb9\xf8\xf6\xe7\xafHlO\x89\ +\x17\xd0\x94O\x04\xd3\x84:\xb1\x8c\x0a\xc0\x02j\xef\xa0\ +\xea \x88\xae\xbf\x9d\xd8\xdf\xb8\x87/\xb8\x1b\x1b\x17\x8a,.\x86\x22\x05H\x90\ +TnV\x80\xde\xe3\xa0\x90\x9ei\x00\xd2\x12\xc4D\x16\ +?\x08\xe5\xab\x01\xf4x\xde\xb7a\xf3?\xf6t<\x96\ +\xb43%\x95\xcb7f4Z\x91s\x01\x8a:\x98j\ +\xec\x81\x12\xc2Y\x8b\x95G\x7f\xc1\xc5\x04\xe4\x9e\x1e\x09\ +\xa9\xb9vx\xe5\xb9 \xf6u\xb9\xeb\x1aw\x22\xca\x12\ +\x8a\xab\xb1\x0bZ\x94\xa2\xa6\x0f\xdfy{`%mR\ +\xa8\xa0h\x18\xd7~\xe0\xc0\x8e\xa7'\x94\xca^4\xac\ +_\xb9\x04\xa0\x0f\x8e\xda\x145&\x1f\xe7\x99\xb0\x1b\xa1\ +\xa0\xb4h\xe6\xc6\xad\x80\xa6\xba\xa9\xaf\xe5\xd6a\x04\xce\ +\xfe\xa2\x92>=\xf1&\xc2/\xd1\xed\x86\x14\x97 p\ +^\x17\xad\xfd\xea\x0b(\xd3\x89\xebG\xdd\xbe\x1e\x09\x1d\ +\xc6\xcc\x8c'\xa7\x94\x15\x85m\x1b\x86s\xc2\x10\xb8\x12\ +\x94\xbc\xf8\x22EzH\x8e\x0aN\x89\xee\xdeKB\x9a\ +Z\x9d\xff\xad\xb3\xef}|\xb1\xba\x90\x85ta\x06\x15\ +\xcd/f\xe0\xcce&8\xc5\x7fJI\xa4,p\xaa\ +\x0d\x5c\x97l3S\xf4\x9d\xab\x82\x9d\xfc\xfe\xd8\x18\xfd\ +\xbePT\x0d>\xdd\xbc5j\x02\xd5\xe7\xe3T}O\ +\xe7\xc9\xa8\xed~\xd0\x02\x8ep>C\xdc,\xb5&7\ +\x12^\x03\xce\xeb\xf5\x02`D\xf9Re\x8a\x00\x13\xf1\ +\xa0\xebp\xd1<3\x1e\xc9Q\x08\xa9\x95Q\x8b5U\ +\x17\x0a\x19\x15\xa5\xb7\x94\x94\xd480\xd6\xba\x0dyT\ +\x80\xbe/g\x98\x8a\x93@\x92RE\xdf\xf9\xefjI\ +\xa1\xf9\xfc[XxO\x00\xfa\xcc\xd4P\xd4\x85\xf8\x80\ ++\xa9\xf1\x82cgh?\xf6\xf5\xce\xda\xcbf\xf9\x1b\ +\x02t\xf5h\x16\x94\xf41\xd5\xdb\x7f\x1cBj\xfb\x9b\ +\x17\x16N\x87%\xc5vy\x00\x90\xe8(A\x12B)\ +JS\x8c\x13\x81\xe57F\x8d*\xe3K_\x96\xebc\ +&3ez\x89\xb0i\x88G\xbc7B\xaaP\x99\xa2\ +\x1f\x84\x90\xce\xef)\x81\x94B\xeb\xd5\x90\xc6Q2\xe0\ +\x8e\xa3l8$\xb2\xa6\x1a\x7f\x80\xacO\x14\xd2\x7f\xfa\ +\xc63?\x0b\xdfoX\xda\xdd\xd7\xab X\x9b>E\ +\xb7\x1bZeb\x8a\x92\x90>12[\x91\xaaj\xb3\ +\xdd\x1cj\xa1\xa7`\x88\x92y@%\xd4\xed\x96%\x1e\ +\x89\x9ft}\xf2\x8e,\xf9\xab\xc6\x85\x8a\xbf\xa3\xd1(\ +\x9f\x0c\xfc\x12\x0b\xa9o\xd6XX\xf9i\xb6\xa4o\xf9\ +D\x88_6\x0f)p\xf6\xaa\x84\xba\xc8\xcc>!=\ +jN\x89\xb5F\xd3\xd5'}\xaa\xf4\xef\xb4\xf7\x15\x1e\ +\x13\xef\xc4=\xd9lI3\x90\x13\x8d\xae$\xa4_W\ +Q\xaf\x11\xe1\x9b\xaeq47gz\xc5\xbc\xf0\x9e!\ +\x16\x90M\xc0\xd5\xear\xad^42\xf6\x82c=;\ +^^\x0aI\xfbC\x15\xd2\x9dM\xe9\x8cl\x0f`\xdf\ +\x12vN\x18\xd7\x8c{\xa8\x82;k/f\x94pf\ +\xda\xa3\xa3w\xe9\xe8\xde\xbe\x9d\xd2a\xaf\xc4@w\x01\ +\xde\x86\xb5[\x0e\xdfv\x06}\x1e)\x84\xf5\x11\xf0\xa7\ +\xc8\x92\xc2\xd9\xd3\xa5\xae\x1f\xfcR\xeb\xb2\xf2S\xf7\x8c\ +\x18\xa8\xab4\xb5\x94\x09\x96\x09Y5\xe1\xbd\xe8\xfc\xde\xbc\x14@\xfd^D;\xc9p\ +\xc1_Q^\xfb\xdb\xc1P\xbe\x90\x07\xa0/*\xd0\xf5\ +\x13\xa2(\xfd\xfb\x8ei\x8a\xd8\xe9\x1c\x8aT\x88\xf7q\ +\x0e\x87F\xb9\xb7\xe4$\x01\x1b\xc7\xe3\x9d\x01\xa4\xbf\x93\ +\x0c\x01T\x96\x81\xf9\x0c\xd5n\xec\x0bE\x89\x1b\xfe\x96\ +^\xc5\xd0\xc6\x01h\x11\x0a\xe67\xed#!\xe5\xdd\x1d\ +y\xd1)\xc2<\xde\xd6=\x95\xf6i\xbcwWK\xbb\ +OVlC\x17\x16\x16:\xb6\xcb\xce:)5\xe9\x87\ +\xe4x!P-\xd2\x8b\xf4\x0a\xdfe.\xe0\x8fG?\ +\xa5{73J\x91\xac\xa3\xbe\x99\x1a\xcd/D\xc0I\ +\x04\xfaK\x86\x96\x91\xf2k\x9f\x9e$\xac\xf9a\xf8#\ +\xc1\xb8\xa0\x86gj\xf4\xa9\xb5\x05e\x98\x87\xce{\xf8\ +\x8d\x17\xdeY\x16\xf1W(5~1\xe3\x10\x8fu}\ +KU\xce\x84\xf4^\xec\x98w\x13\xf1\x97Kq\xf3\x00\ +y\xe6+\xa3L\xaa\xd1\x0f\xc3\xa5\xc6]\x1f\xbe\xad.\ ++\xef\x81v\xeb#\xeb\xe4~\xe1\xed\x11kzk\xa0\ +&\xddz\xfeE\x89Jj*\x98\x8f\xebD-\xe9\x86\ +\x91n\x98x\x9f||\x1cM\x93\x019\x1e\x15b\xf4\ +\xc97\x85\xa5A\xcdm\xb8U\xc3g\xf0\x815\xb3:\ +\x7f\xb4y9\xf7\x1f\x93\x00|rr0\xc2Y\xd4\x90\ +t\xbbXR\x15\xd2\xde\xdeR\x02=\xe6\xf6\xf2 \x9a\ +\xfb%\x92\xdf\xb3^\xf9\xf4\xe2(M\x9a\x95\xf0\x05\xa2\ +(\x80v\xfe\xa5\x16E\x87VW\x18\xa8C\xcfn?\ +\xf5\xe8\xf9V\xaen\xe1\x0d\xc9v\x12\xd2\x22)\xf17\ +0\xeeMi\xaf,w/>\xbb;y\xe9\xf5\xbbX\ +\xed\x0eLk2\xa1\xef\xbd\xee}\x8f\x8f\x03\xc8~\x03\ +%\xc2\xb1g:*$\x05\x81?\x19K ]\xd9\ +vAJb\xe6\x08F;\xc2G\xb1\xde\xdc\x04PU\ +/\xe3\x90-U\xafT\x5cD\x94\x1b\x15\x22\xa4\x1bv\ +\x96e\x91,5\xd2q\x8f\x12\x1dW\xefXN\x93\xb2\ +\xa8\x93\xa1\xfa'\xa1(\x85z@\xea\xae\xcb\xc402\ +\xea\xcf\xdf\xcc\xcc\xd3Vz\x13\x7fw\x8c\xe0AK\x02\ +\x1a\xedgA\xc2\xb8\xfe\xd9kO\xf9\xfd\x1e\xc6Cw\ +-m\xd9\xf1\xd4\xe2(\xabMR\x87\x86\xb4\xe9\xe8\x03\ +\x90\xdd-Z\xdb\xa8U\xa3\xb3\xd4\x94:\x83\xbf\xc4@\ +\xc9\x8f\x12E\xdfL\x7f\xa5a\x1c\x85\xf4\x0fzM\xb3\ +\xb0\x85`\x7ff9]\x134\xad\x91\xcb\xa3\x85\x07q\ +\xde\xd7\x96->kG\xfd1[\x98(\x13>\x1d\x22\ +-\x07E\x0b\xf2\xa5\x8f\x8d\xc8\xe6\x93b\xa9\xdb?\xb9\ +.\xb0{q'\xe7\x1c\xeb\xda$\xf3\x84\xaa\x8d{\x7f\ +\xfa\x8e\xf3\xb0M\xa0h\x17\xe7\x81\xd3\x8c\x92\xd3^z\ +\xdftJ\x0e\xf1\xe5\x93\xbc\x8c\xe3\xf2\x7f\x11\x94t\x8d\ +~R\xe5\xd2\x9d\x87\xb6\xb7\xa1\xb9\xd1\x95\x81&]\x7f\ +k\x1d4\xf5\xf5zOT\xa8\x15\x00\xf3~\xe8O\xf9\ +O\x06\xde\xc94<1.e|\x98<\xc0\x1d\x87'\ +\x93L\xfe,\xbc\x1f\x80\xe9\xee}AF\xcf\x1d\x0c]\ +\xe12\xce.\x22\xb1d}V\xac\xe2\xae\xa5\x03\xba\x13\ +~b\x5ca\xcf4\xf8\xe8\xc9\xc5\xc9(\xd3\xb4\xb8i\ +r\x16\xe6\xa3g\x1cP\x9d\xc1\x9f\xd3\x91[\xe5\x08\x9e\ +S\xdb\xada9OBj\xc7m\x93\x11\xce\xac\x9b\x14\ +\xbe\xf0]\xd8\x0e\xa8\xee&\xc2\xc4\xdd\xe0\x0d\xdf\xe4\xef\ +\xd2\xf1\xe6\x1e\x09]\xa8}\xde\xc6y\xcdt\x94\xba\x0c\ +Dx\x11Ps\xe50\x14_\xcf1\xa1)\xd7\x88\xa8\ +\xa7'\xfaGm\xbd^\xa7\xd7\xa54\xdfn\xe3\x8b\xfb\ +\xa6#\x86\x98\xa2\xffA)\xaa\xcdD\xad\x1a\x93\xb0\x1e\ +\xa7\x83\x1c\xebe\xb5H\xfd\x91`\xa7D&r\xe6H\ +\xf3\xe6c\xbd{\xee\xd9\xb0v\xffrU\x94\x85\xbb\xe1\ +\x8dP\xb2\x8cr\xe9\xd6\xdaQ\xd3D\x98\x00\xad?\x19\ +J\x0bN6\x18j\xba\x14\x04\x04\x15\x96\xf4\x92Q:\ +\xa0?\xfcGv\xdf\xe4\xc8x6e\xb4\xf6w\x95\xa0\ +\xe3M\x86~\x18b\xfa\xb3\x22\xf0\xf4\x96\xf7\xc0\x88Q\ +\x90K\x1f\x93\x15\xc5]\xe3\xb6\xb6\xac\x09R\x1c\xb8\x83\ +o\xb2v4\xce>Pj\xe2\x11T\xb5\x8d\xae\x1d\xda\ +\x94BL-\xda\x22Z\xd2\x1b&\x05\x0dE\x9aZ\xa8\ +\x8d\x12ci\x19O\xab\xc2D\xe8d\xd8\xefI\xe9o\ +\x22\xb4\xe7,\x9dk*\xe3\xf20\x05\xf5\xb9\xa0,\xdd\ +\x1d\xde\x5c\xb8S\xb0\xd0z{\x86Q-=\x90z\x17\ +\xea\xa2'\xd0\xd3\xc7O^H\x7f\x8fB\xe7\x91\xa6!\ +\xd0X\x80\xa1vT~\xfe\xcc\x1d\x9ar\xfd1F\x14\ +p\xa0O^\xebS,\xc2~\x7fA\x0d\x0b\xe9\x9d\xa7\ +\xacz\xb3\xb0\x9eP\xda\xcb\x89\x94\xf5e\xe7\xa1\x16m\ +~\xe9\xf2\xf5\xf0\x9d\x9e\xa2\xb6qXW\xa5\xa3\xbc\xd1\ +\xab\x83$\xf2\xd5\x8c\xd4\x8fZ\x86\xf3\xf7M;\xdaw\ +go\x0c^P\xd3\xdc\xde\xee\xf2\xcd\xfc\xe99\x8f\xbc\ +b\xdc\xcb\x05\xa0N\xed\x13u\xa2\xa0d\xd7M\x84\x08\ +C\xbd%u\xd7\xd1\xa1#\x97\xa73\xfa\xce\xd9\xaf1\ +)\xc2IK\xeb\x13\xd03\xac\xe8\x1d\xef\xf0\xa0\xb2\xb2\ +u\x82*\xf9K_\x86\xad0\xafrY\x5c\xd5|\x93\ +xj\xd0s\xdf\xe1\xe5\x9d\x0c\xd4\xf6\xe8\xf8kR\x95\ +\xfdC{\xe4\x92\x1eGQ\x1f5\xc3\xd7WN\xe5\x9b\ +\x09\x08\xf3\xb7\xac\xff\x830R\xc2(Ds^Fq\ +T\xdd]J\xe5n\xee\xa7\xe1]\xa8\xe2\xf4\xd7z\xce\ +/5\xd8\x9bg)\xd3\xfc\xec\x1b\xd6\x9f\xb5cy:\ +\x1e\xa4\xb3D\xee\xff7v6\xad\xb6\x1dE\x18\xbe\xd1\ +\xabk\x7f\xac\xbd\xd6Y\xd7\xbb\xb9\xde\x13P\x07^A\ +I@t 8\x88\xa0\x01\x11'\x89\xa0D\xf1k\x92\ + \x19)\x82\x1fq`\x06\x8e\x1c8\xf0'8S4\ +\x198\x0a\xfe\x80\x8c\xfc\x05\x01A2P\xfc\x15\xe6t\ +\xd7^OW\xbfUk\xdf>{\x9fs\x86EwW\ +u}\xbdo\x09\xa4mp\x16\xa0\x13\xd41\x16\xe8-\ +\x85\x1eY\x89\x00 \xd0B\x9f\x14\xdd\xb0J\xfb\xe0A\ +\x15\x92\xd9\x12\x09Y\x85N\x17\x98a,\xe0\xf4\xe5\xe4\ +[\x1b\xdaM\xb2\xa6\xbd\xddgslG\x91\x92\x9d\xad\ ++\x18\x81Q\x8f\x5c\xb0\xcb\xa3]Q+\xd5\x83\x15\xd1\ +\x14\x99B\xee4\x91\xabE[(\xfe\xa0\xa1;\xb2*\ +\x99\x8eHk\xa2)\xf5,\xc4?\xf6\x90\xf6r*U\ +\x85\xe2\xebc\x92\x1ae\xc9\xeds\xf8^\xcc*\x9a\x9a\ +\xa6^\xe3WL\xd3,*\x05\xdaN\xba\x1d\xb9\xa3D\ +\xf5H\xca\x00\xb9u\xba!b\x0a\x17\x04\xf6\x89{\xca\ +f\xfa\x99\x0dLB\xe8\xb7\x14n\x0d\x01\xb0\xb2\x9c\xa0\ +\xc2\x969V\x08\x86i\x927\xa3\x0eY_>\x8a[\ +\x07\xd1\x14\xb2\xfe\x84,\x00fG\xb1O\xf2\xd6w\xef\ +'\x0d\xe3\x91>y\x81\xb9\xa1J\xe6L\x02B\x19\x13\ +\xf9F\xdc\x8e\x8a\x05\x0f\xcd\x13rr\xf8\xc4v\x81\xcd\ +G\xab\xc8<9\xfe\xeea\x96\xfc\x83(\xbc\x8c=\x92\ +\xc2\x88\xea\x13\xd2\x16}/\xa2\x0a\xda\xb2\x01\x09\xc6~\ +\x09\x18!! \x05\xd5\xa0;\x0a[A\xafM}\x8e\ +\xcc\xda\x85\xa1#\xcb\xfc<0w\xfcv\xfeh\xc3\x94\ +\x99\xf2\x8f\xaa\xd6sI\xdd5E\x5c\xb7VI\x19$\ +\xd5\x8e\xe6\x02\xc2\xca\x93\xaf\x0e)\x89\x07\xf5\xf3\xb2\x85\ +\xa0'T\x1e\x07_\xa9\x9cM\x99\xd8\xd1\x9e\x97\x8a\xa3\ +Wb*\xc0\xe0\x8c9t\xea\xbeI\x94\xaa>\x89\xaf\ +\x84\xea\xcc\x86\x0a\x1c0]*\x92\x0e\x1eg\x8b!\x95\ +g)\x99\x81\x91o\xe9u|\xfd\x8e\xc9\x0d2O\x06\ +\xe4\xb2\xea\xfc\x80\xb8B\x8c\xcd>\x22\xaaR\x92\x09>\ +,\xc7\xd7\x17a/\x9by\x10\xdea\xb0\xa1)\xdf\x93\ +\xba\xa4K\x8b\x15\x22`BJ\xa1D\xbf\x8e\xaf\xb7\xec\ +\xbd\x94l\xab\x944\xe4\x061\x13\xa0\xf0\xee\x8a\x22/\ +\x964\xe1\x1f\xe5\xae.\x80\xacC|=hK\xc9\xe9\ +\x15M2\xc3\x1f<\xf5\xe0\xea\x95\xe8\xcbe\x9c\xc5:\ +!*\x1f\xccS\x8c\xaf'\x00eKWd5X\x11\ +\xe9\x1b\x1f\x1a\xc5O\xa3\x915\x5c\xe2\x9b\xf2\x8fz\xc6\ +\x02\xc4T0cg\x9fz\xac\xc8\x18\xa2\x97\xb1\xa3\x91\ +*\xa1H\xa2\xf7\x19\xffh\x82\xaf\xa7\x810\xec\x800\ +]2\xc8\xe51G\xad#5\x0bm\xf2\xa0p0\x22\ +\xc2?\xba\x85\xaf\xe7\x97\xb3\xa3~\xbe\x80\xe8\x12\xd8E\ +\xec\xa8\xc8\x88}\x8a\x9d<\x9f\xd8\xe9vt\x0b_/\ +l\xd3\x15\xc6\xc6\xfdTmRC\xaaS\xa4p\xf2R\ +\xfeQ\xdd\xd1\xd8<\x91v:\xe8k\x0f\x7f\xbfZ'\ +\xaf\xee\xd0\xbf,(?1\xd36\xff\xa82h\xddd\ +\xf8z5MQ]\ +>e\xf8\xfa\xb0\xcf\xf5h\xc2\xa2L\x89&\x11\xd6\xcb\ +\x02_\x1f\xb3b\x13\xdbk\xda1\xc7\xd7kR\x07Z\ +\x85\xf5+\x03\x8dE\xe7\xf5aj\xe4e\x09m?\x8b\ +Dn\x88\xaf\x07n\x8b\x88\xf6?l\x99naAu\ +\xe4\x15\x0a\xa5\x15{\xf6\x14\x9ay\xc9=m\xe1\xeb\x19\ +\x84P\x17G\x0f[&yq\x0d\xf0\x9a%I\x12\xf4\ +\x091\x91\xb6\x1d\xc2\xb9\x8d\xafO\xde\xfa1e(\xaa\ +\x82!j\x08\x05\xef\x08\x9f\x9e\x8e\x7f\xf4\xf6*\xbe>\ +\x19\x10\x0d\xe7\xb4.\x94I=|\x1d\xc1\xfb\x94\xfc\xa3\ +\xd7\xf1\xf5\x889\xd6\x0f\x14\xc9\x86\x1b\x91\xe5gre\ +D\xbeZoP\xfeQ\x84N\xf1\xf5\x07\x18\xb4\x5c\x80\ +g\xd2\x9a\x88\xfeq\xa2\x1a\xe2B\xd1`cy\x9b\xae\ +\xf1\x8f\xe6P6*\xe0F\xa8\x81\xa4\xe8\xfeQ\xe8\x0a\ +\xe4}\x92\xf8\x0ec\xefr\xce\xd7\xf8G)1&\xf8\ +z&3\xf9\xa8\xde\xe6\xdc1MJ\xa7\xd7c\xa2\xc2\ +\xe5\xa7\xb4\xd8\x7f9\xff(\xc1\x1d\x06\x9f\x00\x84\x1dE\ +\xd4Q \xeb^H\xd8\x1c\xc5\x8brB\xfaQ\xd6)\ +\xffh\xee\xe6\xb1\xe0$\xdb\xa3\xf5XSb&-\x85\ +\xeap\xcbQ\xc3z\xe4\xcc8r#\xfe\xd1\x80\x00\xa2\ +\xdaQ\xdbS\x84\x84{\xd2\xb8J\xdc\x08V-\x88\xe6\ +G\x8fB\xd9R\xbe\xa7\x04\x82q\xea\xb6s\xbf\x87\xfb\ +\xe3\xd0\xe7ur\x98P\xfd\x10\x86(S\x89g\xcf\x0a\ +\x1f\xfb\x96Hi\x03_\x7f\x01\xd8\x83\x13A\xcc\xe6\xd8\ +\xa34\xd9\x80\xb4\x81\x09\xf5\xe2\xf2\x1b\x09\x95\x7fT\xf1\ +\xf5j\xf2\xed\xe8\xfb\xb3\xf7\x13\x9a\xb4pGX/\xe6\ +\xc9\xf4(\xa8\xdf\x0cyc&Q\xa8\x89\x99\xe2\xeb\xf7\ +\xba\x9d\x8c\xba\xd3\x01\xd1\xael\x0b\xc0\x1at=\xd1\x9d\ +\xbb\x00\xd2I\x18\xbcL71\xbe\x1e\xa7D\xf6\x15j\ +Oe+\xc0w\xa2=\xcbg\x9c9\xf8\x84\xe1-\xb9\ +\xa3\xf8yb\xf3\xd9R?n;\x87\xaf2~S\xed\ +\xe8\xdc\xcc\x10\xa3k<\x0dEXO\x8d\xaf\x97\xe7\xc9\ +\xc4\xcc \xc1\xe5\xebX\xbe&G\xde\xbf\xb8\xaeq\xcd\ +8s\xec\xdb\x06\x1f,\xf8z\xf2\x92%s#\x8d\x8f\ +\x9d\xa4EF\xb6\xd2u\xb6\xb7\xf9\xfb\xb9O<\xf1A\ +\x9f2\xa7d\xa7\xf8\xfaN\x9bP\xa6\xf0\x8a2\xb1\x85\ +\xc1|\xed\x1duS\x06\xe2a-\xf6\xc1\xc7\x07x%\ +\x9eS\xd4\xf3\xc4\x8e:\xe6\xbc`\x98\xb1\x9aQt\xa9\ +.,h\xc7DH\x10\x9a\xb0\xb7\xe7\xf8zt\x1e\xfb\ +$\x05\x1c\xa4\x15\xdf\xc4\x98\x08i|r\xbc\xd8\x02\x12\ +B\xcae\x91(\xf4\x14Fvr\xf4\x08\x8b\x98\xa2\xf6\ +\xd8Q\x98TXE\xe3}\x0e\x7fP\xeaQ\xfb/\xc3\ +\x8a\xb0\xc0\xd7\xfbX\x04\xd3\xc4\x0f\x02s\xf8u+\xe1\ +y4\xbdr|\x15NFyE\xa91\x0b\x83\xd6M\ +\x8c\xaf\xc7:\x89\xa7\xc7\xd1\x87s\xee\xca\x9ad\x06\x06\ +~\xbe\xcc\xb5U\xe0U\x0e\xb7D\xa3(\xd6\xb3\xadD\ +v\xeb\x8f\xef\x19w\xf3\x99\xb8\xa0\xee\x09u\x1e\xbe\xef\ +s%\x99\x9b\xf3\xe1g\xf8\xfah+\x19\x1a)\xec\xed\ +-o\x9e\xce5uC\x0e\xab\xcc\x01\xf1l\x92\xc3\xdf\ +\xc6\xd7{\x07\x1f\x0b\xda\x19'd\x857\xcf\xcf<\xe3\ +\xf0\xcdi\xae`;\xa5\xc3\xc7\xde\xb36\xf0\xf5\xf6\xe5\ +\xec\xddJ\x95\x1ee\x12\x97d\xb6\xdf\x0b?\xb3(\x93\ +}\xc8\xe2g|\xf8\x8a\xafW\x7ftd_Q\xfb\x89\ +i\xeb\x8d_\xca \x0c.)\xf1\xb2\x9a'\x0dB\xf3\ +\xf9\xf5\xdb\xf8\xfa\x91\xbe\xa7\xc2\x8f\xab\xed\xa3\x13u\x11\ +\xb6\xd5]RW\xb3KN^\xfa\xc9n%\xae\x8f\xf1\ +\xf5\xda\xaa\x01\xf1l\xbf\x9e\xb0\x8e\xc8IV?l\x9d:8O(\ +\xda\xef\x82\x11\x92\xb83\x9d%\x12\x87jm9\x9f_\ +\xcf\xe9\x87\x992$\x0d\x0aw\xae\xedi\xf21\xe8R\ +#'\xd0\xe0\x9a\xd0c?}[\x89\xcc\xaf7\x01\xa3\ +\x1d\x1d\x11\xf0xdG\xb5\x7f\x94\x87\x14\x8b\x8f\xb0\xbe\ +UCy\x1d\xa9\x8cd|\xf8\xfa\xd8\xdbWc\xbc\xe3\ +1\xf6H\x10Q\x03;\x90WF\xfc\x81\x83/\xea\xf4\ +\xb4\xf5z\x8fa\xf5{j\xed:\x91\x8cHj/\xbe\ +?z\x86\xb2\xb1\xa7\xf3\x90\x95\xc1\x89\x9c\xf2z\xbd\x05\ +w\xa2\xf3H{\xf4\xbd:Zg\xb2+\xca\xd1\x0bX\ +\x04\x84\xd8\x80\x94\x00X\xd1'f\x83\x07\xd3%\x08\x98\ +\xa5\x99\xc8>\xcc\xb9\x0b\xdb\xc9\xc6\x15f-4\xf3\x94\ +\xc3\xb2\xc7\xe9\xea\xd1kML\x22P\x7f\x09\xdcc\x0f\ +\xe6\xc6\x8e\xbd\xc8\xaa;\xca\xe3\x04~\x99R\x18\xe9\x87\ +d\xd8\x19\xf5z\xbc<\x1a\xc7\x15\xdb s\xeeH\x90\ +\x18$\xbc'\xab0\xd3\x04\x9dJlE\xf1\xa1\x94\xfe\ +C\xd1\xb6\x80X=N\x88\xa4S>\x97\xedR\x0b\x99\ +x\x9a\xc0X\xf7uP\x11\x96;*\xe5\x1b\x89\x97p\ +K\xe4\xec\xedWkE\x11\xd5\xde\xf9\x89pi\x05\x85\ +\x03\x0ed\x8e\xd0\x1c\xbe\xf5\x18|\x85\xad7{\x8a\xd2\ +gu&\x9d\x1b\xa8o=\xe6t\xc2>aF\xcb\xd7\ +\xfcf\x9dr\xc7\x9e\xea\xfcz\xa4$X\x0a\x10w\xa3\ +&u\x1a\xcc\xdd\xc0\xae\xe2\xe8M\xbd\x943\xe91\x9d\ +l\xa9\xe0\x0b\xc1\xd7\xfb\x85\xb9/)\x09\xd6\x882\xa5\ +\x13\xee|\xbc<\xf1B1\xdb2\xe6\x80x6h*\ +\xda\xe2\xc3\x17\x0aJ\xcd\xe1s\xf4\xbd\x8f7\xc1:\x8c\ +\xb1\x0f\xa1l\xb6\xb9q\x04\xba(\xbe>\x8c\xeb1\xf7\ +\x87\xd0q\x8e\xb5~j\xae\xa8\x09\x8a:\xa1\xf5\xeb\x0f\ +\x88`\xcd\x8d\xcb\x12\x12J!\xa7A\xf3G7\x05A\ +\x94\xde\xc4,\xa22\x5c\xa2\x88\xeaAw\xe4G\xa3m\ +\x155\xca\xd17\x88\x9b]\x00$\xf5\xe5\xfa\xfa\xb1\x93\ +\x9f,\x1c\xd1\xa2\xedB\xe1N\xd3\xa32\xe02\xe7\xc8\ +E\xf1\x99\xcb&\xba\xe4\x8dS+.\xbb9Q\xb05\ +9\xa9\xd7\x03\xb2WeR1\xf1\x9e\xc2\xa2\x18\xcbg\ +\x1d\xe3z=\x83\x10lC\xcdq\x9e\x92'\x94\x08T\ +#&V\xc6\x87o\x1f\xea\xa1~\x80\x1c\xb2*\xe1\xb4\ +\xb2\xa9\x90|B\xe5\xbdS\xa2K\x04%S\xa2\xe6\x89\ +\x8am\x14\x8c`\xf1\x11\x16@\xc3\x1b\x9f}\xf2\xe4\x1b\ +\xf7\xab\x9c\xb0hE=:\x14\xc5\x00^\xc57\x14\xc0\ +\xc0\xa9\x8fB\x9c\xa8r\xfeH(\xe3\xce\xee\xdf+\xeb\ +/\xc5\x1d-\x1fw\xf4\xdf|\xe9\xcd\x97\x8b&\xcd\x92\ +\x1c\x97\xa8\xbe\xc3\xd7K6\x0fq#\x98\x90?\xf8\xde\ +\xd5\x1b\xc6\xdf\xdf\xab\xeb#\xa3yyET\x9b\x81\xf1\ +|a\x04\xfcw\xa1ML0\xd6\xd8\xd2~\xc5|\xf8\ +v\xe4\xf6M\xeb\xf5\x9a\xd1\xfb\xc5\x85\xdd\xf1QQ%\ +\xbf\xa3\xcfT\x92\xe1\x93\xd9NS\xa8nW\xd3\x82\xd8\ +!c\x9c\x0eq-\xbe^\xbf\x8a\xca%\xfd\xda\xf7\xdf\ +\xfat\x1d\xb03\xc8\xcc\xab\x1f\xdd3f\xf76f\x1a\ +\xe2\xa2\xedv\x92L\x93\x0f\xb6\x0eT\xee\xc883<\ +\xd0\xf9\xf8\x87\x8f\xc2\xe3l\x9ad\x9d/\xff\xaa\xdc\x85\ +g\xd7\xfb\xa0oh$\xe8\xf5\xf9\xf5\xfa\xdc\xfb\x1c>\ +'\x8f\xc1\xff\xdb\x85l|\xe8\x02\xbc\x8f\x17R\xa3B\ +?]X2\x87^F\x9f+a]\x9f_\xdf\xc7\xf5\ +Z\x10CLk)\x18+\xa7\xeb\xeb\xc7\xa2K\xbeW\ +\xe3\xfe\x97\xff\xfcp7\xd3\x03\xa1\xfe}\x9e\x1f\xdd\x9e\ +_\xaf:/\xf5z\xddQ#K\x9elO{\xa3?\ +\xcf\x02i\xd1\x0c\xc4\xd6[\x0fl\xfd\xee\xcblK\x87\ +g\xb2#g(\xe3\xc8\xc6\xae\xa8\xb0\xdf\x14\x82\xad\x22\ +\xa4\xd8\xd2\xc5fI-\xf6\x9aF1\x13\x9fVPj\ +\x8c\xfb\xf2)\x7f\xee\xe4\xdd\xfb>2\xa4\xb5\xe4\xbd\x10\ +\xaa\xac\xec\x1fw\x97\xf4\x1f\xe7n\x86\x18\x84D\x8c\xeb\ +\xd0\xb6\x12\xe2z\x96\x8bB)1\xc2FF\x0d\x5c;\ +\x08\x99n\xa9G?}\xa8\xb0\xeb\xedd\xac)rV\ +\x92\x5cb\x11\xc5\xdf\x5c-\xda\xf24a\xa3\x92D.\ +\x1b\xcb*\xde\xd3{eD\xcb\xa9\xa4\xca\xb1\xa4\xf3\xfa\ +\xb7\xca\xc9\x0c\xce\x84\xa4FG!\xa8a\x0a\xbb\x9e\xf4\ +\xfdd\x1d\x1b\x96\xb7i\xfa_\x99b\xf1\xe4}\x0bF\ +\xeaZ,\x14\x99~\xf7\xb32\x5c\xc2\xec=;J\xa0\ +\x1c+\x13[\xeaa\x8c\xccB\xd0\xc8>\xecr\xc6\xd1\ +{\xc6^\xd2?\xedp\x9d\xcb\x9a?\xfc\xe2\x07\xd4\xba\ +_\xda\x17:J\xf6\xd3a\xc3B`\x0bP\xb6\xc8\xe0\ +\x87x&\xd7]\xd2cX\x87\xea6\x7f\xe2S\xc6\xa0\ +\xfb\xa83\xa4\x7f\xac\xcc\xfd\xfb\x9a\xc5\xcd\xd1\x0dQ\x89\ +1\xe9q\xb6\xedT<\x13G\xaf\x1c\x10\x83Ew\xd3\ +\x1b\x95\xa3\xff\xbb\x8f\x07?\x16\xbe\xcc\xef\xf8\xeby\xb4\ +K\xea]\x12\x0fc\xd3;\x1aa\xeb\x09\xeb8zi\ +\xd4\x22r\x12$\xdb\x1f\x0a\xa7\xfc\xe7\xce7\x93w\xf2\ +_.\x9c\xfe\x0f\xe7\xcb\xd2p$b,@\xeb\x91T\ +\x19]\xb3\x0e|\x5c=\xdfNP\xc2\xd1\xc2Q\xfb\xda\ +\xc3]Q%\xdc\x92\xca\xe3\xff\xea\x83\x8b\x90rI\x1b\ +\xcaD\x0dEX2\x9aIk\xa1\xf4\xe1\xfbl3\xe2\ +\x16\x8b\xf4v\x11\xf4\xd0E\xa1su\x03\xce\x87\x99-\ +\x1d\xb6\xc8_4\xb8\xf3;j\xd4/\x1c\xbd\x80\xaf\x8e\ +a\x9f\xc6\xb0\xde\xd3\xf7\xeaso.>\xeb\xbfwc\ +u\xcf\xf64\x95/B:\x9cH\x8c\xb9\xe3\xe8\xf7\x9e\ +\x9d\xe8py\x9a\xc8\x8b\x96\xdf\x9aqF\xd4:\x81\xb1\ +>\xf7\xc0\x05\xa6\x9a\xd0\xf9J\x19\xa5\xd0\xdc\xd09v\ +Kx\x9b\xf0\x9e\xa2T\x89\xdbN\x09\xf0\xa9\xd7\xdb\xff\ +\xca\xe8;\xbdy\xa7Lg\xfcQcx{\xf1\x8e\x9d\ +\xbc\xb9\xa2\xb3\xc4K\xe8|^b\x84\x9e\xc8T\x89\x1e\ +g(J\xbc\xc6{\xa7\x84\x01r\xd3?\xabO\xda\xb7\ +=\xbdo\xf3O\xea\xc1\x9b\xa0,_m\xd0\xe0NZ\ +_\xaa\xab'Xp\x8c\xfeQ\xf3\xa3S[i\x9a\xbe\ +^/iu\x9dy\xeb\x9f\xfb\x80\x10\xf4<\xb6G\xef\ +\x02;\xef\xe0\xe7]:\x18'%\xa6RLS\x92\xc7\ +\xb5\xee,\x0b\x9c::\xd7\xe7\xb8\xa2(SgJ\x13\ +V\x8d8\xe1\x0c\xa8mo\xb2\x82\x07\xf6 \xeb\x84\xf0\ +\xa9\xf8\xa4\xff9\xfb\xdcx\x09D_{\xb0\x8e\xe1d\ +C\x111\x88En]c\x01bbI\xc3w\xc9\x1e\ +#\xcb\xe1S_\x1e\xec\xf0\xad$\xfa\xf7b1w\x1d\ +y\xda\xed/\xdf9\xefm\x0c's%p\xee\xedw\ +\xc6?\x9a\x00\xafv\xa0m%\xe5\xcc~v\x8f\x93\xd9\ +\xa7\xe1\xa5\x8b\xa0\x1dd\xe0tS\xe0B\xb6\xe2\x17\x94\ +\xd3\xef\x94\x09\xf1r|=\xe6\x9e\xc9\x81\x81\xcd\xb7\xce\ +\xac\x17\x8aO\xf2\xd6\xe3c\xc7\xe7Ye4\xad\xc7<\ +!c\x18,\xd3D\x88\xa8\xbcL\xda\xe3<\x12\xd7\xdb\ +\xa0}\xafI@\xee\xc6{\xd5yz\xe8O\x9e\xd9\xbb\ +h}\xca\xe6\xab]\xe3\x91\x12\x01\x10\x91\xfbY\xe4\xc5\ +\xbf\xeb\x14\xca\x10\x0d\x95\xe9\xf9\xf1\x091\xdd\x00\x14\xc6\ +\xad\x0b\x9e\x09\xac\x88\x94oB\x1c#\x95[\xcd\xe4\xea\ +\x9c;\x22&\xb3\xa6\xef\xde\xc9\xf9\xf3\x8f\xb5\xa0\x01;\ +\xfa\x22\xe7\xe2\xcdS\xd8\x98)\xa3\x10\x0e]xG\x8f\ +\x8eC\x83\x8f\x1a\x8bP\x11\xdd\xad\x95\x06\xab.?\xff\ +\xabw^\x7ft\x1aFo\x9c\x96\x15ze\x82r\xf2\ +.T\x0e\xe3z8(\x95\x08\xc06\xd3\x07#\x00\xd9\ +4R\xa6\xddq\xa8&\x8b\xe5\xc0\x0d\xee\x8e\xca\x0a\xac\ +\x93\xd9QL)\x09|\x84\xedr\xf7\xc0Y\xec\x8f\x0a\ +\x0a\xee\x86-\xf5\x09\x1d\xf6\x940Tw\xd5\x1b|\x1d\ +\x17J\x0c\x9a\x06\x22\xf6\xc3;\xca\xd1+n}l\xd1\ +\x22\xeb-]\xea\xd9;\xfaQ\xa9\xd6/\xb1y\x02v\ +\xb7\x07\x0d\x8e\xa4\x0e\xd3@\xcb\x9b\x13uj\xfat\x82\ ++\xca\x80\x1e=\xfag\xb5\x01f\x1bik\xf0zS\ +'\x0f_\x1d1S1&\x18\xb6\xa7\xa0{\x14\xad/\ +;Z\xbe\xea8\xa3\xf2\x89S\xa2\xe9\x92\xbd<\xa1\xf8\ +\xf9us\xa5h;\xd5s\xa6 \xde\xc2\xae0\xf9\xb6\ +\xa7\xbc\xf5\xe26+\xab\x06\xe3\x8c}Xo\x1a\x9f\xb4\ +\xbe\xf8=\xa5\x1d\x9b6-\xf4I\x86\x98\xdb\x9e\xb2\xa5\ +Q~T\xe3\xfa(\xf5D5L\xc0\xb6\x88\xaa\x0cZ\ +\x0e\x22\x16\x15\xeb\xd9\xd0\xbc^\xaf\x95p\x85\xadcH\ +=\xf0\xea\xa0\x05F\xc5[N\xbc\xa0@\x9aZz\xaa\ +u4\xd7V\xbd\x9eN\xa2%\x05\x0c($X\x8b7\ +\x98R\x9c\xbcv\x01\xbd\x91FB\xd4\x09|\xbdlk\ +\x95\x8f\x0b\xa0Cz4K\xe2\xc9\x15Px\xb5O\x8d\ +\xe5t\xddy2F\x0a\xdfi\xc8\xea\xf5KR\x0e\xb5\ +\xb7>\xc5\xd7\xb3\xa91\xbe^\x82&\x85\x8a\xe0\x93\x98\ +\xa86M&dU\x91,.;\xaa\x16\x9f\x17Jc\ +z\xad\xd7\xab\xac\xd0\xd5\xe8So\xea\x04.T\x18J\ +6\xfd\xd1|~\xbd\xc2W;\x88uD\xf9\xd3\x1e\xbc\ +\x1c>\xa8\x9b\xd9\x89\xa9Yg\xbd\xa3X(\xc5\xd7+\ +\xa3J\x06\xbbc+Q%~\xd1\xaa\xe1\xe1\xd5\x82g\ +\xca\xb0\x22\x87x\x11\xd9\x13/k+\xb6\x89\xaa-\xce\ +\xd0=\x89)u\x973\xc63Qc\xee\xb2y's\ +\xa0v\xd1\xfcz\xd4\x9e\x0d\x150\xb8\x13\x11([\xf0\ +2\x0d4\x8dg\xe6\x9e\xb7~\xdb)!IJ\x17a\ +Z\xaf\xf7\x0b)\x95\xe7KG\xca\x00i\xda\x86\x0c\x10\ +.\xc7S\xd9\x0e\x1a\x86j\xbd^z\xdb1P\xad\x94\ +\xd0\xcc\xb7\xf73\xae\xd7\x9b\x90Z\x15\xf1\xf5Z\xc13\ +\xe9V\x86P[\xb8\x1f\xc8\x93\xcb\x0d\xcd@\x18\xca\xec\ +\xa9\x99\x12\x13\xf3\xe6:\xbe\x9e\xcef\x14_-i\xf6\ +~\xfa6|\xeb\xc3\x8f\xf0L\xf4@,\x92\xcdS\xcc\ +:\xa0\x16\x89B\x15\xcd\xc2\xffz\xf4Un|\xbc\x22\ +\x9d\xd6\xeb\xf3\xfc\xa8\x92P\x9e\xbc\xac\xf6\x89\xbc\x12W\ +\xaf\xd7Wi\x90\x93w\x03&\x1c\x07a\xf9r\xeci\ +\x10*\x13\xaf\xd0\x22\xf1\x9e\xd0&\x93P\x8f\x7f2\x0f\ +\xdf>\xf6W\xa7\x9de\xe4\xed\xa8R\xde\x9b\x97\x95\x18\ +\x0fW\xfa\xdd\xd4\x1feO\xd9N?R\xc6\xab\x92\xd0\ +\x7f\xc4\xaddn\xb0)\x87\xce\x0c\x94\x80$\x17\xcb\xe4\ +\xed\x13\xb8P;\xf7\xf6\xfc\x17\x99q\x88\x1d\x8d\xb8\x15\ +\xb2\xc6\x02\xe5\x7f\x00\xc6\xe8)H\xf1\x9eBZ\x8d\x96\ +\xcf\x95=EXH\xd1{;\x0aT@o(d\xbe\ +\x1c\xb9\xbcN8%\xa3\x00\xc4\xec/Bv\xfe\xd3\x06\ +':$\x94\xc2\x9d\x16\xad~\x9c1\x22\xea\xd1c\xee\ +\x13\xb2/\xc7\x8d\x8cN\xc5\xbc\xe8\xc3,\x08\xb1\xedY\ +\x8c\x88\xa9\x96t\xe7aB\xa0\x18\xd9J\x99\xc0\xaa<\ +\xe3\xa3\x03[z\x9e\x12b\x11\xecS8\xa9\xe5\xffG\ +\x8a\xa8\x96\xa8Z\x04\xd8\x00\x00\x00\x00IEND\xae\ +B`\x82\ +\x00\x00\x06S\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00@\x00\x00\x00@\x08\x03\x00\x00\x00\x9d\xb7\x81\xec\ +\x00\x00\x02\xebPLTE\x00\x00\x00\xff\x00\x00\xff\xff\ +\xff\xff\xff\xff\xbf\x00\x00\xff\xff\xff\x99\x00\x00\xff\xff\xff\ +\x9f\x00\x00\xaa\x00\x00\xb2\x00\x00\xff\xff\xff\xb9\x00\x00\xff\ +\xff\xff\xaa\x00\x00\xff\xff\xff\xb0\x00\x00\xb6\x12\x12\xff\xff\ +\xff\xaa\x00\x00\xae\x00\x00\xff\xff\xff\xff\xff\xff\xaa\x00\x00\ +\xff\xff\xff\xad\x00\x00\xb3\x00\x00\xff\xff\xff\xad\x00\x00\xff\ +\xff\xff\xaf\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\ +\xff\xac\x00\x00\xb0\x00\x00\xc4GG\xff\xff\xff\xff\xff\xff\ +\xad\x00\x00\xaf\x00\x00\xb1\x00\x00\xff\xff\xff\xff\xff\xff\xae\ +\x00\x00\xff\xff\xff\xae\x00\x00\xff\xff\xff\xae\x00\x00\xf2\xd5\ +\xd5\xff\xff\xff\xff\xff\xff\xbf88\xad\x00\x00\xff\xff\xff\ +\xff\xff\xff\xff\xff\xff\xaf\x00\x00\xff\xff\xff\xff\xff\xff\xaf\ +\x00\x00\xb0\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xae\x00\ +\x00\xaf\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\ +\xae\x00\x00\xaf\x00\x00\xff\xff\xff\xae\x00\x00\xd1pp\xae\ +\x00\x00\xae\x02\x02\xaf\x00\x00\xff\xff\xff\xb0\x00\x00\xff\xff\ +\xff\xda\x8c\x8c\xae\x00\x00\xff\xff\xff\xaf\x00\x00\xff\xff\xff\ +\xaf\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xae\x00\x00\xff\ +\xff\xff\xd3uu\xaf\x00\x00\xc9QQ\xae\x00\x00\xf4\xdc\ +\xdc\xff\xff\xff\xaf\x00\x00\xae\x00\x00\xff\xff\xff\xae\x00\x00\ +\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe6\xb2\xb2\xff\ +\xff\xff\xae\x00\x00\xff\xff\xff\xaf\x00\x00\xaf\x00\x00\xae\x00\ +\x00\xaf\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2qq\ +\xaf\x00\x00\xff\xff\xff\xba''\xae\x00\x00\xaf\x00\x00\xfa\ +\xf4\xf4\xd9\x87\x87\xff\xff\xff\xff\xff\xff\xba$$\xff\xff\ +\xff\xb8\x1f\x1f\xff\xff\xff\xf3\xd9\xd9\xff\xff\xff\xb7\x1a\x1a\ +\xae\x00\x00\xae\x00\x00\xaf\x00\x00\xff\xff\xff\xff\xff\xff\xae\ +\x00\x00\xaf\x00\x00\xcc\x5c\x5c\xff\xff\xff\xb7\x1b\x1b\xb2\x0a\ +\x0a\xaf\x03\x03\xae\x00\x00\xff\xff\xff\xff\xff\xff\xaf\x02\x02\ +\xff\xff\xff\xb0\x02\x02\xff\xff\xff\xff\xff\xff\xcdcc\xaf\ +\x00\x00\xaf\x01\x01\xff\xff\xff\xaf\x00\x00\xb1\x08\x08\xae\x00\ +\x00\xff\xff\xff\xd1mm\xaf\x00\x00\xb4\x10\x10\xe6\xae\xae\ +\xae\x00\x00\xaf\x00\x00\xff\xff\xff\xff\xff\xff\xea\xbd\xbd\xfb\ +\xf4\xf4\xae\x00\x00\xaf\x00\x00\xba\x22\x22\xeb\xc1\xc1\xff\xff\ +\xff\xcbZZ\xda\x8b\x8b\xff\xff\xff\xaf\x00\x00\xff\xff\xff\ +\xba\x22\x22\xaf\x01\x01\xbf22\xc6HH\xe8\xb7\xb7\xf8\ +\xea\xea\xfa\xf0\xf0\xfb\xf2\xf2\xff\xfe\xfe\xb0\x02\x02\xc7L\ +L\xb7\x1a\x1a\xb0\x04\x04\xbb&&\xbb''\xb1\x05\x05\ +\xbf33\xc055\xc2;;\xc2>>\xc4DD\xb1\ +\x06\x06\xb7\x19\x19\xc8OO\xc9RR\xcaWW\xcbX\ +X\xcbYY\xcdaa\xcebb\xcfff\xd0jj\ +\xd3tt\xd4uu\xd6{{\xd7~~\xd7\x81\x81\xdc\ +\x8f\x8f\xe1\x9e\x9e\xe1\x9f\x9f\xe2\xa2\xa2\xe4\xaa\xaa\xe5\xab\ +\xab\xe6\xb0\xb0\xe7\xb1\xb1\xe7\xb4\xb4\xb2\x09\x09\xeb\xbe\xbe\ +\xec\xc4\xc4\xf0\xd0\xd0\xf2\xd4\xd4\xf2\xd5\xd5\xf4\xdb\xdb\xf5\ +\xde\xde\xf5\xe0\xe0\xf7\xe4\xe4\xb2\x0b\x0b\xf9\xec\xec\xb3\x0e\ +\x0e\xb6\x15\x15\xfc\xf7\xf7\xfe\xfb\xfb\xfe\xfc\xfc\xb6\x16\x16\ +\xb6\x17\x17\xdc\x97<\x09\x00\x00\x00\xb6tRNS\x00\ +\x01\x01\x03\x04\x04\x05\x08\x08\x09\x0a\x0a\x0b\x0b\x0c\x0d\x0d\ +\x0e\x0f\x0f\x13\x13\x14\x15\x15\x16\x1b\x1b\x1c\x1c\x1d\x1e\x1f\ +!$%''*+,-./2669;\ +<=@ADEHKLMNOPTTU\ +Z\x5c]]`acegghkllmp\ +qsx|~\x80\x81\x83\x84\x8a\x8b\x8c\x8c\x8d\x91\x93\ +\x95\x95\x95\x96\x98\x99\x9c\x9d\x9e\xa4\xa6\xa7\xa7\xa8\xa8\xa9\ +\xaa\xac\xad\xad\xb0\xb3\xb3\xb4\xb7\xbb\xbc\xbd\xbd\xc0\xc1\xc4\ +\xc6\xca\xcb\xcc\xcd\xcd\xd0\xd2\xd4\xd7\xd8\xd9\xdb\xdc\xdc\xdd\ +\xde\xe0\xe1\xe4\xe5\xe6\xe7\xe8\xe9\xe9\xea\xef\xf0\xf0\xf1\xf3\ +\xf3\xf5\xf6\xf6\xf7\xf7\xf7\xf8\xfa\xfa\xfb\xfb\xfb\xfb\xfc\xfc\ +\xfd\xfd\xfe\xfe\xfe\xa0\xb1\xff\x8a\x00\x00\x02aIDA\ +Tx^\xdd\xd7Up\x13Q\x14\xc7\xe1\xd3R(\xda\ +B\xf1\xe2^\xdc[(\x10\xdc\xdd\xdd\xdd\x0aE\x8a\xb4\ +\xb8{p)^$P\xa0\xe8\xd9\xa4*\xb8\xbb\xbb\xbb\ +\xeb#\x93=w\xee\xcb\xe6f\x98\x93\x17\xa6\xbf\xd7\xff\ +\xe6\x9b}\xc8\x9c\x99\x85\x14R\xfaR9]\xfa\xf9\x80\ +(\xc4\x95A&60\x10\xa9\x19\xd9x\x80\xc7N\x14\ +\xed\xaa\xca\x02r\xa3\xec`%\x96\xb0\x1ee\x1b3p\ +\x80\xfa6\x09\xd8F\x00\xa7^\x17\xbe\xa0\xe8h\x19\x96\ +P}\xca\xeeh\x02\xae\xb6\x03^\x9e}\x08\xb0\x8e\x02\ +fE\x098a\xe6\x02y\x05\x10\xf9?\x03n.\x01\ +%G/9\xb0*4\x90\x0d4\x8f\xa2}2\x13\xf0\ +\xb3\xa0h*\x0f\xe8\x84\x22\xbc\x5c\x97\x05\x8c\x95\x80u\ +<\x0b\xe8-\x81sf\x16`\x92\xc0\xdd\xe9\x0a\xc0\xd7\ +)\xe06\x0b)k|7\x05\x90\x8e\x80\xa4\xfd\x8e\xe7\ +,\xcb.\xda\xe7+\x1f\xcd>\xa0h3\x09\x87\x147\ +\xc9\xbb\xdf\xbeG\xb1\x9f\xb4q\x85@\xd5B\x02bZ\ +\xa8\xfe\xb19*7\x0a(\x08\xea\xc2P\xb4\xa2\x95\x17\ +p\xaa\x85\xb2m\xc5X\xc2<\x94\xed\xc8\xc7\x01\xca\xa2\ +,\xb9'\x07\xe8\x81\xb2\x9b!\x0c\xc0o\x8f\x04l\xaf\ +\x870\x80`\x14\xe1\x9f'\xc7\xaa0\x80\xf9\x04\x1c\xbf\ +\xf7.q]\x03`\xb4\x89\x80\x17\xab\xbb\x96p\x07F\ +Y\x91\x8a\xab\xe1\xe2U\xd6r9\x9c\xfd\xbb\x88\x9a2\ +\x8fj(\x8a&4c\x01^\x16\xa4N\xfdl\xcc\x02\ +\x02Q\xf4tQj\x16\xd0\x17\xa9\xe8\xc4:\xc0\x02\x96\ +\x22\x15;\xd7\x9d\x05\x14A\xea\xbc\x16\x00,\xa05R\ +o\xa6\x01\x0f\x98Hc\xb2V\x81\x07\xa4\xddN\x17\xfb\ +m\x08\xf0\x00\x7f\xda\xae\x1f.\x0d\xea\xca\x13\xf0*R\ +yjN\x7f\x18\x0eN\xea@\xc0\xd9\x080\xb6@\x9f\ +n\xed-\xac\x04|\xeb\x05o%\xe0\xf6L\xe3\x9a\x9f\ +\xde\xed\xf3 P\x949\x08e\x8f\xfb\x1b\xf7&\xfar\ +'\x22\x8f\x0a\x18\x8c\xb2\xefq\x0d\x8d\xfb\x18\xfb\xf2\xed\ +kwP\x94\xc6\x82\xb2g\xe1\xc6s\xe0\xa1\xdf\xaa\x07\ +[\xb2\xff\xc3\xf7\xc25\xad\xb6q\xaf\xa8\xbfZBG\ +P\xb6\x16E7\x12F\x82\xb1\xb6\xf6\xe9a\xb8\xb7\x1a\ +0%\xe9\xc0\xef\xe7\xdaPGO\xb5D\xc4\x93?\xda\ +\x80\x93\xda\x1f9\x13s\xffe\xfc\x86\x9a\x0e\xd7\x8c\xcb\ +\xf1\xd2\xfb\xc5\x9e\xe0\xacr\xc3fO\xea\x5c\xcdG\xb1\ +f\x9a\xf3kMqp\xa9\x02\xa9 %\xf7\x17\x09\xba\ +99\xea\xb1au\x00\x00\x00\x00IEND\xaeB\ +`\x82\ +\x00\x00\x0fk\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x01\xf4\x00\x00\x00K\x08\x03\x00\x00\x00\xb1\xe3\x85\xac\ +\x00\x00\x00BPLTE\xd5\xd5\xff\xf6\xf7\xff\xda\xdb\ +\xff\xef\xef\xff\xdf\xe0\xff\xe7\xe7\xff\xea\xea\xff\xea\xeb\xff\ +\xeb\xeb\xff\xdf\xdf\xff\xf7\xf7\xff\xfa\xfb\xff\xf3\xf3\xff\xd7\ +\xd7\xff\xff\xff\xff\xe6\xe7\xff\xdb\xdb\xff\xe3\xe3\xff\xd5\xd6\ +\xff\xf2\xf3\xff\xee\xef\xff\xe5\xe6\xff\x96\xf6\xba\x85\x00\x00\ +\x0e\xe4IDATx^\xed]\xd9\x92$7\x08\x1c\ +\xa4:\x8f\xbefv\xff\xffW\x0d$\x14R\xd7N\xd8\ +\x0f#Gl\x84R\x05\xd5\xf6\x9b\x9d\x83\x0e U\x1f\ +\xf7\x1fE\xc7~\xdfwv\xf7\xedN\xf7m\xdf\xb7;\ +\x0f\xc1.\x8e\xb6c;\x88\x87\x812-\x94\xf9\xf9\xca\ +\x05\x96\xf0\ +0~\x94\x80\x8e\x1d\x9e\x84\xf5\x8d\xf9\xdf\x95m\xf1\x02\ +\x12S\xde\xc1\xbcr\x9e)3\xc0\xfb\xaf\x99\xc9\x16\xd6\ +\xf3\x22\x98\x95r\xc6\xfc\x98\x9d\xf4QY\x07\xedA\xbd\ +\x93\x9e\xd6\xf5)\x8e\xc9\x06\xe97\x19\xcf\xf4q\xbb\x81\ +\xf0\x06\xa4\xf70\x87\x17\xe3X\xdf\xc5\xf1k3\x10\xf3\ +m\xd1.\xc8\x94\xd9\xd3B\xcb\x97\xc5\xfa\xfcK\x1c\xa2\ +\xfc\x8f\x91\xfe\x1aeT\x94\xaf\xaf\xd7`\xd1\x9eV\x01\ +\x07yZ\x11\xe97\xe6;\xdd\xf0\xdc>8\xda\xd9\xb5\ +!\xbd\xc7\xfa.A.\xb1\xce\xcf\xae\xe3\xee\x91~\x90\ +qN\x94e\x1cY\xc3=0\xcf\x12\xe72\x9c\xf4I\ +I\x9f\x10\xe9\xc6\xbb\xd1\xbe\xca30\xe9\x80Dzz\ +\x1a\xe1n\xe9y\xbb\xd9\x14\xaf\x9c7 \xbd\x83\x84m\ +!\x9f\xd8\x8c\xf3=\xd6t\xe7\x1c\x91\x9e\x17:\x98\xf8\ +\xaf\xe0\x9c\x1f\xb0\xee\xd3;\xc6\xc8\xcc\x0b\xe9U\xa4\xaf\ +l\x03H\x1f\xd8V]\xd3\x95x~@\xba2\xfe\x94\ +\x18g(\xeb\xb7\x9f&\xbdc\x87\xdb\x09;8Y\xd5\ +\x85y\x00k:\x06\xf6ql\xf9\xf05=8\x9fu\ +v\x8fH\x9fFy\xc6\xc7\x0b\xacW\x91\xce\x9c\x8b\x07\ +\xf1\xe0\x5c\xe7wL\xef)\xdd\x94\xf7`\x9d\x9f\x1f&\ +\xa0S\xbe\xcb \x9d\xde9\xdei3\xec\x14kz\xec\ +\xde%\xdacM7\xcc\xc5\xee\x1d\xd0\xa9]M\xf6q\ +:\x04`\xdd\xa6\xf7\x97\xd0\xad\x900\x07\x12fw\x9b\ +\xdf\x99\xef&kz\xe7\x1c&^(g\xf3u\xdd\xd7\ +t\x1e\x94m\x8e\x97 \xc7\x16\x1e\x98\x84p~b\xf7\ +\xcex\xf03\x8a\x8d\x16\xe9\xfc\xc4\xee]#}x\xad\ +\x80\xed\xde\x13;\x90\xce\xb4K\x98\xa7\x9b \xf9\x9a>\ +\x01\xf3\xbc\x00Y\xc7\x9c'\xfb\xb5\xe4\x1a\xf8glA\ +\xf8\xb1]\xe8\xc2\xe3Plx\x9d\xabW>\xb6\x12\x98\ +\xf3\xf8\xa1\x8d\xa3\x00\xefM\xd7@q\x9b\x9cq\xe5\x8d\ +\xb5\xb1\x0d:\x0a\xd2\x033?\xe0\x5c\x80?\x82\x80\x10\ +,>\xfb_*\xce\x1e\x01a\x1b\x9e\x0e\xda\xc1\xfev\ +\xc1]l\x07\xe5L6i:\x83\xdf\x08\x16b\x93\x7f\ +\xe3Sf\x03t\xd2\xa7\xe0;\xcb[\xa9\xce\xf3\xac\xaf\ +\x12\x87\xbdA\xb8\xc47X?\x00\xda\xd8\xf0\xd6A\x1b\ +Ple\xee\xf8g\xb8\xfb\x1d&\xf1M\xf8MN\xb9\ +\x1fy\xf1j\x86N\xfa$\x9c\xcfY\xdf\xba\xb60\xa6\ +\xe0]~!u(\xac\xf3\x0f~\x1f\xfa\xeb\x08\xe4c\ +\xf3A\xf8M\x94\x83te\x9b0\x9bk\xc4\x13)\xf5\ +2$\xb4\xf5\x07\xf1`\xd7\x82\xec\x8e\x9f\xdd\xc8u\xec\ +\x18\xd8\x98`\xc7\xe2;\xb9\xcc\xbfb\xa7\xa3 ,\x95\ +\xb4,l\x88/\xc6\x82\xcd\xdcT\xec\xde\x1f#6r\ +\x91\x9by\xd8\xde]s\xefvF_\x93=)y\xee\ +\xfd\xa6\xc7\xb6'\xdb\xc7\xf3#5M\xc3v\xea\xc9l\ +C6.V8\x9c\xd3\xe9\xf0\xdd;a\x8fT\x16[\ +,3c\xa43\xcf\xecAz\x9c\xd3\x1d\xab\xda\xc0v\ +\xee\xde\x93\xbat\xe6\xde\x8dy\x1c\xd9Zd\xe4:4\ +-c\xb9w\xecO\xad\xe6B\x1b\xc3\xcf\xe9\x9e{\x17\ +OL\xbdc\x0e\xe2\x05s\x04\xfaX\xe5\xde\x03^e\ +Ss\xe2S\xe4\xde\xc5\xf00\x9a\xe4\xde;\x88\x0d\xe7\ +\x0eu\x98\xd9\xebsz\x99{\xb7\xf3O\xce\x14\xbck\ +\x8dm.H\x7fHr\xa6\xce\xbd?\xcaD,X/\ +\xcf\xe9L8\x22]\x89\xe7\xa3:\xd0\x22\xf7\xde\xb1\xbb\ +'\xf1\x1b\xdb\xbf\xd4\xd3\x17\x1e_\x19\x83\xf1\xeb-\x0f\ +;\xcfsD\xfa\x03iX\xb1\xd7\xeb\xf7oK\xcc\xac\ +/\xa7|\x18\x12\xc2\xbcZ\xd3Q]\xfdcv\xcff^c\x8b\x19~\xc1\xbc\x8e_\xf2\ +\xdbjl\x19\xb3<;\xab\xad\x09\xeb\xa8\xb1\xedy\xdb\ +H<\x83H\x1c\xaalb\xcc\xb5\xfe\xc2\xec\xce\xcf.\ +oy)\xf9\xf4W1\xde\xabl\xbd\xfb\x1d\x7f\xcd\xf6\ +7\xee\xbb\x9a\x834\x122\x91\xac\x89\x1a%\xb4,\xe7\ +>n\x16o;9\x17;\xa8cXrFS\xb0\xfc\ +\x00\xb1uO+\x80\x8c\x1c\x12\xb1\xc8\xbd'm\x8c\xc4\ +\xd6\x1d\xfe\xa7\x09\xe8\xe75\x14]L\xd1\x84\x07Y\xb9\ +\xb2\xe2\xa2\xf8\xbe\xef}^\xea\x1e9~\x81t\x10.\ +\xa3\xca\xbd\xaf\xea\xa2\xd8\xa2\xa7\xf4\x905\x99\xb4)\xb5\ +\xca\xbdw\xf8\x1e\x14\xbb\xd2m\x8f\xce\xc8\xa8\xa7\x1b\xbe\ +\xeb{\xaf\xb5l(\xaf\x22\xc8\xd5\xd5\x0a\x17\x88[\xd8\ +\xa2\x9e\x1eZ6a?\xa1\xbe&hXe\xeb}\xef\ +B<\x1ed\xe3.}\xef`\xfe\xda\xf7\xbe\xe4\xfc\xa7\ +n\xd8\xc7\xe4-\xd0L\xf7Xt\xc3\xae\xa7\x94m\xb8\ +\xd4\xd3C\xdd\xf2,\xfb\xde?\x7f\x9a\xf4\x9e\x9cq\x1d\ +\x9b\x982NE=\x9d\xa2\x9e\x0e\xfc\xb1\xef\xdd\xa2\xbc\ +\x100\x22#\xe7\xd9\x19p\xee\xb8\x94\xd3\x8b\x1e\xe8\xf4\ +4-[\xd9\xf7\xde\x86\xf4\x1e\xeaZe\xd3s\xc9\xf7\ +\xf5t\xf0\x1e}\xefE\xe7\xf1\x82\x11yXa\x1c\x91\ +\xfe\xe2\x17[\x10\x0e\xc7\xf6M=\xfd\xc6?\xa2\x87\xa2\ +Y\xa4w\xd2#\xd7\xe4\xeb\xb9\x81\xe8@\xfe\xdd8\xcf\ +Y\x1d1\xc3\x91{w\xc1C1\xbd\x83t\x8btM\ +\xc5~\xafOO\xb5>\x1d\xcdR\x1f\x09\xe2\xf4Vk\ +z_\xd1IM\x13\xcc\xf7M](\x18}=\x07\xe7\ +\xe2\xa1#\x10\x03B\x9d^\xd6\xd3\x99yDzt\xce\ +\x5c\xf5\xe9kz\xaf\xa7\x0bp`\x0b\xce\x9b\x91\xde\xbb\ +gx\xa0\x96\xee\x1d\xfex\xd9\xba\xee\x9bw!\x9b4\ +\xb3\xe9\x98\x8b\x1e\xb9\xd9T\xab\xde#\x87\xc3\xfak\xbc\ +\xe8\xd3\x11\xed\x86\xd7YO\xf7\x9eH\xb86\xfa\xf4\x0e\ +Wf\x10\x8a\x07\xbb\x86zqN\xcf\x16\xe5\xfa\xc61\ +]\x94\x03\xba\x94\x13\xb4l\xfa{B9}:1Z\ +\xe3\xcc\xf8\xba4\xc3\x96|\x87j\x15\xe2E\xc6\x13\xe9\ +\x19}<7S\x15\x5c&\xcb\xbd\x87\x96m\xae\x94\x0e\ +S\xf6.\xbe\x85,\x0bK\x8b\xe9\x1b\xe4\x8d_P6\ +e6}\x18Y=@\xa1p!\x8aS\xec\xeeU6\ +y!L\x5c\xec\xb0\xc3\xfd\x18:.\xa43r\xa1e\ +\x9b\xc5\x09\xf9\x05\x0e\xa9\xc0\xa1\xd6Bxe\xdf\x8c\xea\ +\x1bu5+\xb8\xf0oOC\xd6@Q\x8d\x1dfA\ +qb\xca/\x89\xc3\xef\xff\x05\xbd\xca\x16Z6\xb6w\ +|\xd9\xfaCG\xc6\xc8\x11\xdf\xa8\xa3\x97*F\xd4\xd0\ +\x0f\x04u\x09!\xd9\xb5l\xc4\x86\xcbY\xc4\xe07\x17\ +/\xb6\x976u\xd2\x01h\xd90\xecU\x01Z6\x0c\ +S*\x1f\x00e\xe5\x9b\x0eDx\xde\xf3\x81\xdc\xa3\x91\ +N\xae\xf3a\xb8\x96Ml'\xaf\xa7\x8b\xe9\x10ll\ +\x7f\x89n\xb5W\xd9\xfa\xfe\x9d\xde{\xe4\xbcm\x08\x19\ +\xb9L\xe79=\x17\x19\xb9_\x93\x9f\xd3\x97\x8b\xc2\xc5\ +\x1b\xe4\x90zg\xe7\xb0\xbc;\xbfyX\xdf\xbbo\xe6\ +\x90\x8e\x93\xf4\xbb\x0b\x9b\xc4Z\x90\xde\x13r\xea\xd0\x08\ +v\x07\xeb@\xd9\xf3^\x9f\xd3\x81_\x9e{\xcf\xf5\xe5\ +\x81\xd1\xf7~\xd9\xbd\x0f\xc3K\x86\xe6\xe2\xe2\x1e9\x88\ +[@\xba\xeb[\x8c\xf5V\xa4\xf7\xbew\xbb]j\xdb\ +\x91\x9c\x8b\xdc\xbb\xf1\xfevN\xbf\xf4\xbd\xcf\xcb\x9ck\ +Y\x93\x0b\x18\x85w\xa8V\x1d\xab\x8f\xb8s\x86\xf3q\ +H\xc3*n\xb8h\xa8u\x95\xad\xe7\xde7?\xa7\xa3\ +\xfb\xd9s\xef\xbe\xc3)\xce\xe998\x8f\xbew\xf6\x0a\ +P\xcef}\xef<\xca\xc2\xea\xea\xc9w\xc7y\x8f\x5c\ +:\xef\x9c\xb9\xdd\xd8\xb7\xd3\xb2u\xec0r\x95\x0bi\ +\x8cW\x0a\x97J\xcf&[b\xfaS\xdf\xfb\x8c\x84\x5c\ +\x5c4\xe4U6I\xc1V\xb4\xf3\x03}:\xac\xae\xa7\ +C\xbc(\x9c\xabB]\xa2\xbd\xcb\x9a\x9a\xb0\x8e{S\ +8\xca\xd9aM\xc7\xa8\x14.^V\xfd\x22\xebz\x0f\ +\xe6\x17\x10\xef\xa4?f\xb6\xa8\xb2]r\xefC\xe8\xd3\ +\x87\xa1\xca\xbd;\xe9\x89M\xa8\x17\xba?\x1b\x92\xde\xa7\ +w5\xe5\x1a>\x04\x8c\x88r1\x88\x17+\xc6\xab\xdd\ +\xbbGz\x90.\x0e\x1b96`\x88\x82\xfa\x90\xde\xeb\ +\xe9\xb0\xe4\x8a\xd5g+\x01c\xa7\x9c\xe4\xb5\xfb\x9a\x8e\ +\x19\x1e\xe63;\x19\xe7\xf4\xc5\x00\xe7b\xe0<\xd6\xf4\ +\xe9\x84W\xd9\x94pq\x8e\xe1\x1b}\xba\x13\x0e\xf9\x22\ +\xc7\xfbSXo\xd4\x18\xd9IG\x05\xc1\xef{g\xaa\ +\xb5\xcd\xfb\x04\xf2V'LA\xe0\x88\xce\x99z#\xe7\ +\xdd\xb0\xa5\xa4\xc9\xf5\xe9u\xebLJ\xa5>\xfd]\xa9\ +\xdcj#\xd7\xa7\xf6\xb8\xef\x9dL\xcb\xb6m\xea\xf7|\ +\x88\xa1\x0f\x9a\xb4\xf9\x99\xc4\x84h\x8d\xf4I\x09W5\ +\xdb<\x95\xc9\x196$g\xae\x0au\xe1=y\x0ft\ +\xac\xe9\x02\xbb\x94\x80\x17s\xa3\xdd\x0a\xeaU\x1aV\x9c\ +k\x1eP\xe1Ce\xad\xf4K\x16g56\xbbK\x8e\ +2eT\xd9\x16h\xd8\x8e\x83\xd8#\xf7\xb4ol\xc8\ +\xc2\x8b\xdd\xed\xbf\xff\xd4\xb2m\xa4\xe9+\xcf\xbb\xb3\xdb\ +\xed\xb4\xcb\x1e\xef\x86\xe8\xb9\xf7\xa9\xa8\xb9T\xb9\xf79\ +\x97 \x1e\xd9UM\xae\xb1\xa6#@\xa1d\xb3\x93)\ +\xbd_\x22\xe8\x1a6~\xe3\x89*\x1b?tv\xa0\xec\ +\x1eB-\xd0K\xab\xc0\x1c|\x9b<>\xc3;H-\ +\xda\xf4\x85t3R\x03\xe2\xc6Hc}\xab\x81<\x15\ +\xf8\xd6A\xe2,\xd6\xd1KJ\xec\x83\xfb\x06\xe8\xa4#\ +\xd61\xc3\xcf\xa8\xb3\x99\xcaF\xcd\xfd\x22\xb6\xe0\xd7q\ +,\xaab[\xec\xc6H\xb1\x83\xb2\xdf\x03Lj\x1b\xd4\ +l\x0a\xbc\xa1c\x9373\x0e-[\xa8\x95w6\xd0\ +.\xa0\xbf\x81\xed^e\xeb\xd81\xb0{g\xc3.\x86\ +G\xde7\xca;\x99\x92\x0dZ6\xb1B\xcb\x06[\xf2\ +l\x11\x08 %\xf7P\x03^'\x92\x9f\xd8\x8a\xdc;\ +v\xef\xb0\xdb\x99}o\xaap\xe9\xa4\x17\x97\x0dm\xdb\ +{\x95m\x0b\xad\x03\xf2\xee\x97\xbe\xf7E]4F\x8a\ +\xb1\x03\xe9/<\xd7z\x8b!\xc9\x03\x97\xe2\xc8&\x8f\ +\xa2\xe9\x8d\x91\xbd\xef\x1d7\x99\xdb^\xf5\x92{7D\ +\xffQ\xd5\xf7~\xd5\xb2\x8d\xd6\x19\xf9:/\x0fT\x0c\ +\xe6\xd0\x04\xeba^\xdd.e\xcaU\xb4E\xb6\x8e\xf4\ +\xde\xf7\xce\x5c\xbbm\x97\xdc;\xa2]\xb7E\xc2\xf9\xa5\ +\xef=\xbf\xabVGA|\x96\x8d=\x08\x1f\xcaH\x8f\ +z:\x90T\xe2\x82\xc1\x87\xf5v\xc9\x99\x9e\x9c\x11\xd0\ +\xeeyX\xda\xdfr\xef1\xbfS\x16\xa3j~\x9f\xdf\ +\xb5l\xe3$\x0ex\x08\xe3\x9a\x88\xf5P\xff\x8dF\x0a\ +\xe3}\x88z:H\x7fZ\xd3\xccg\xfaLm\xd7\xf4\ +\xfe\xe5\x1e\xbbG\xaeT\xb7\xa8\x95QN\xc67F^\ +\xa8\xe0\xfc\xa2e\x1b-\xd2yD\xa0\x87\x98\x0dd\xa7\ +a\x88z\xba\x91\x8e\xa2*\x87\xfc\xfa\xe9q\xde\x88\xf4\ +\xbew\x8f\xc6\xee\xcd9\xb7H\x0f\xce\x11\xe9\xc6yf\ +\xbb\xce\xef\xbe\xa6\x8f\xe7\x8d\x91\xf2D\xa0_\xd4\x0e\xd7\ +z:\xae\x92\xfb\xe4P\x17\xdf>\xd2{y\x15\x92e\ +\x0c\xdf\xbdWZ\xb6|x\xb4W\xf7\xbd\x97\xdfec\ +\xaa\xc5\xf3\x1b\xbb\xf7\xd0\xa7\x03\xab\x8d\xaa\xcafMr\ +\xc8\xbeK\xa43\xeb\xb7\xf4\xd92\xd2\xfb}\xef\xe8\x93\ +\xb3\x1b\xd3\xaa\xdd;\x86!\xfbp\xcc\xd5w\xd9\xae\xf7\ +\xbd\xbf4\xd2\xe5\x16\xe8\xd7\xb5\x9e\x9e\xd6\xe1\xaaO\xc7\ +N\x8e)W|\xf2\xf8y\xd2\xfb\x17\x1d\x00f\x1b\xba\ +\x0d!\x9e\xde;ba\xc0\xe5\xbe\xf7\xea&\x0a\xc1X\ +\xde\xf7>b\xfb\x0e\x0cU==\xbe\xaa\x0c\xc2\x15\xd0\ +\xa7\xcb\xec\x0e\xd6/Z\xb6\xf2\xbbl\xfa\xf6\x17\x0f\x87\ +\x7f\x82B\xdfK>\xb5l\x8e\x0d/\xa2\xd0\xb2\x1d<\ +\x02\xa5\xce\x01\xfa>\xfc\xf0\x0a\x1b\xf2\xb0<\x14\xbb=\ +\xcd\xd0\x0b.\xf5w\xd9\xa0\x8e\xbf\x02\xb57\x5c\x14\xe9\ +Z\xb6\x12\xae\xba\x87\x96\x8d0\xaf\x01\xd1/\x86\x14e\ +|\x97\xedN _\xa3\x034o\xffW\xee\xbd\xcb\x9a\ +.Z\xb6w\xdeC\xcbF\xf2\xdb\xdb\xf6\x05T}\x97\ +\x0dZ\xb6\xe3\xd4\xb2\xed\x88q\xc0\xd6\xba\x1de\xd5\xb8\ +1\x92Gh\xd9L\xb9\xda\x94\xf9N\xfa\x5c}\x97\x8d\ +mb\xe7\xd56\xab\xadUZ\xb6\xc5\xbf\xbai\xdc\xe7\ +\xf8.\x1b\xb4l[h\xd9r\x11\xed\xe4\xbf\xfc\xbbl\ +\x88p\x92\xf8\x0f\x9a\xb7\xbf%\xd2{\x95\xad\x0b\xd9\xd8\ +a\xdeRI[,o\x94\x91{\x8f\xef\xb2\xe9}\xef\ +\x84buh\xd9\xe2\xbblQq\x81\x96\x0d\x1fw\xb8\ +\x1e\xd9\xce\xf6gl\xe4\xd2\x93=\xa4\x0e\xa8\xb4}@\ +\xdd\xf4\xd1D\xd6\xd4\xb1cG\xaa\xe9\x19\x14\x5c\xc2h\ +\xb7\x9d;\x1d\xe57\x5c\x16\xca\xecK-\x9b\x7f\x97-\ +\xee\x0e\xf4Oty\xcd\xa5\xbe~\xc4S\xb0\xcey\x9c\ +\xd3q\xdd\xfb\x07?\xad\xabl\x9dx\xcf\xbd\x13\xfbo\ +s\xef8\x05\xb9\xd2AI\xff\xd3w\xd9Fe\x1dU\ +6\x8b\xf4\xf1\x22kz\xc5\x05\xff\xea\x93g\xe4 X\ +\x85k\x15\xe9=\xf5\x1e}\xef\xdb\xbf\xe6\xde\xe3kM\ +j\x904\xa9\x03\xe9\xd5\x97\x1d\xe2\x9c~\xf9Z\x13[\ +\x80Y\x8f*[\xd9\x03\xfd\xf1L\xcd2r]\xcb&\ +^\x0bl\xca9\xbe$\x1d\xb9\xf7\xc8\xc9\xa1\xb4Z\xde\ +\x0d;cx\xeb\xfb\xc99;\xdc\x22g\xa3\x84~\xc6\ +\xe3%nMj\x18\xa8\xacj\xc9\xa5\x90\xa77\x8b\xf4\ +\x1e\xedh\xf0\xd4\x04\x84g\xa2\xea\xdc\xfb!\x86\xd4;\ +?\x8c\x9a\xf7\xc5?\xd1e`\xc2\xdd\x5c\xe5\x02\xac\x1e\ +\xe9\xf8\x16\x9fs\xfeL\xd61%yw\x95\xb7\xa4\x96\ +\xaa\xd5N\xb8\x184.\xec\x91y\x02\xeb\x00sM\xca\ +\xb8\x07\xfbB\x84c\xb1`\xae\xd7\xf4\xd0\xb2\xd9\xb7\xd9\ +L\xbe\xe8\xac\xafp.p\x19\x10\xe9O\x1e\xab\x92\xee\ +\x84\xd7\xddR\xff\x00\x0e^\x0cN\xab\x94\x1d2\x00\x00\ +\x00\x00IEND\xaeB`\x82\ +\x00\x00\x06S\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00@\x00\x00\x00@\x08\x03\x00\x00\x00\x9d\xb7\x81\xec\ +\x00\x00\x02\xebPLTE\x00\x00\x00\x00\x00\x00\xff\xff\ +\xff\xff\xff\xff\x7f\x00\x00\xff\xff\xfff\x00\x00\xff\xff\xff\ +\x7f\x00\x00q\x00\x00\x7f\x00\x00\xff\xff\xffs\x00\x00\xff\ +\xff\xff\x7f\x00\x00\xff\xff\xffu\x00\x00\x7f\x12\x12\xff\xff\ +\xffw\x00\x00x\x00\x00\xff\xff\xff\xff\xff\xffy\x00\x00\ +\xff\xff\xff\x7f\x00\x00z\x00\x00\xff\xff\xff\x7f\x00\x00\xff\ +\xff\xff{\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\ +\xff|\x00\x00|\x00\x00\xa3GG\xff\xff\xff\xff\xff\xff\ +\x7f\x00\x00|\x00\x00\x7f\x00\x00\xff\xff\xff\xff\xff\xff\x7f\ +\x00\x00\xff\xff\xff}\x00\x00\xff\xff\xff\x7f\x00\x00\xea\xd5\ +\xd5\xff\xff\xff\xff\xff\xff\x9988}\x00\x00\xff\xff\xff\ +\xff\xff\xff\xff\xff\xff}\x00\x00\xff\xff\xff\xff\xff\xff\x7f\ +\x00\x00\x7f\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\ +\x00~\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\ +~\x00\x00~\x00\x00\xff\xff\xff\x7f\x00\x00\xb7pp\x7f\ +\x00\x00\x7f\x02\x02~\x00\x00\xff\xff\xff~\x00\x00\xff\xff\ +\xff\xc5\x8c\x8c\x7f\x00\x00\xff\xff\xff\x7f\x00\x00\xff\xff\xff\ +~\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x00\xff\ +\xff\xff\xbauu~\x00\x00\xa8QQ~\x00\x00\xed\xdc\ +\xdc\xff\xff\xff\x7f\x00\x00\x7f\x00\x00\xff\xff\xff\x7f\x00\x00\ +\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd8\xb2\xb2\xff\ +\xff\xff\x7f\x00\x00\xff\xff\xff~\x00\x00\x7f\x00\x00\x7f\x00\ +\x00~\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb7qq\ +\x7f\x00\x00\xff\xff\xff\x93''\x7f\x00\x00~\x00\x00\xf9\ +\xf4\xf4\xc3\x87\x87\xff\xff\xff\xff\xff\xff\x91$$\xff\xff\ +\xff\x8f\x1f\x1f\xff\xff\xff\xec\xd9\xd9\xff\xff\xff\x8c\x1a\x1a\ +\x7f\x00\x00\x7f\x00\x00~\x00\x00\xff\xff\xff\xff\xff\xff~\ +\x00\x00\x7f\x00\x00\xad\x5c\x5c\xff\xff\xff\x8d\x1b\x1b\x84\x0a\ +\x0a\x81\x03\x03\x7f\x00\x00\xff\xff\xff\xff\xff\xff\x80\x02\x02\ +\xff\xff\xff\x80\x02\x02\xff\xff\xff\xff\xff\xff\xb1cc\x7f\ +\x00\x00\x7f\x01\x01\xff\xff\xff~\x00\x00\x83\x08\x08~\x00\ +\x00\xff\xff\xff\xb6mm~\x00\x00\x87\x10\x10\xd6\xae\xae\ +\x7f\x00\x00\x7f\x00\x00\xff\xff\xff\xff\xff\xff\xde\xbd\xbd\xf9\ +\xf4\xf4~\x00\x00\x7f\x00\x00\x90\x22\x22\xdf\xc1\xc1\xff\xff\ +\xff\xacZZ\xc4\x8b\x8b\xff\xff\xff\x7f\x00\x00\xff\xff\xff\ +\x90\x22\x22\x80\x01\x01\x9822\xa3HH\xdb\xb7\xb7\xf4\ +\xea\xea\xf7\xf0\xf0\xf8\xf2\xf2\xfe\xfe\xfe\x80\x02\x02\xa5L\ +L\x8c\x1a\x1a\x81\x04\x04\x92&&\x93''\x82\x05\x05\ +\x9933\x9a55\x9d;;\x9e>>\xa1DD\x82\ +\x06\x06\x8c\x19\x19\xa7OO\xa8RR\xabWW\xabX\ +X\xacYY\xb0aa\xb0bb\xb2ff\xb4jj\ +\xb9tt\xbauu\xbd{{\xbe~~\xc0\x81\x81\xc7\ +\x8f\x8f\xce\x9e\x9e\xcf\x9f\x9f\xd0\xa2\xa2\xd4\xaa\xaa\xd5\xab\ +\xab\xd7\xb0\xb0\xd8\xb1\xb1\xd9\xb4\xb4\x84\x09\x09\xde\xbe\xbe\ +\xe1\xc4\xc4\xe7\xd0\xd0\xe9\xd4\xd4\xea\xd5\xd5\xed\xdb\xdb\xee\ +\xde\xde\xef\xe0\xe0\xf1\xe4\xe4\x85\x0b\x0b\xf5\xec\xec\x86\x0e\ +\x0e\x8a\x15\x15\xfb\xf7\xf7\xfd\xfb\xfb\xfd\xfc\xfc\x8a\x16\x16\ +\x8b\x17\x17\xd2g\xa5\xb8\x00\x00\x00\xb6tRNS\x00\ +\x01\x01\x03\x04\x04\x05\x08\x08\x09\x0a\x0a\x0b\x0b\x0c\x0d\x0d\ +\x0e\x0f\x0f\x13\x13\x14\x15\x15\x16\x1b\x1b\x1c\x1c\x1d\x1e\x1f\ +!$%''*+,-./2669;\ +<=@ADEHKLMNOPTTU\ +Z\x5c]]`acegghkllmp\ +qsx|~\x80\x81\x83\x84\x8a\x8b\x8c\x8c\x8d\x91\x93\ +\x95\x95\x95\x96\x98\x99\x9c\x9d\x9e\xa4\xa6\xa7\xa7\xa8\xa8\xa9\ +\xaa\xac\xad\xad\xb0\xb3\xb3\xb4\xb7\xbb\xbc\xbd\xbd\xc0\xc1\xc4\ +\xc6\xca\xcb\xcc\xcd\xcd\xd0\xd2\xd4\xd7\xd8\xd9\xdb\xdc\xdc\xdd\ +\xde\xe0\xe1\xe4\xe5\xe6\xe7\xe8\xe9\xe9\xea\xef\xf0\xf0\xf1\xf3\ +\xf3\xf5\xf6\xf6\xf7\xf7\xf7\xf8\xfa\xfa\xfb\xfb\xfb\xfb\xfc\xfc\ +\xfd\xfd\xfe\xfe\xfe\xa0\xb1\xff\x8a\x00\x00\x02aIDA\ +Tx^\xdd\xd7Up\x13Q\x14\xc7\xe1\xd3R(\xda\ +B\xf1\xe2^\xdc[(\x10\xdc\xdd\xdd\xdd\x0aE\x8a\xb4\ +\xb8{p)^$P\xa0\xe8\xd9\xa4*\xb8\xbb\xbb\xbb\ +\xeb#\x93=w\xee\xcb\xe6f\x98\x93\x17\xa6\xbf\xd7\xff\ +\xe6\x9b}\xc8\x9c\x99\x85\x14R\xfaR9]\xfa\xf9\x80\ +(\xc4\x95A&60\x10\xa9\x19\xd9x\x80\xc7N\x14\ +\xed\xaa\xca\x02r\xa3\xec`%\x96\xb0\x1ee\x1b3p\ +\x80\xfa6\x09\xd8F\x00\xa7^\x17\xbe\xa0\xe8h\x19\x96\ +P}\xca\xeeh\x02\xae\xb6\x03^\x9e}\x08\xb0\x8e\x02\ +fE\x098a\xe6\x02y\x05\x10\xf9?\x03n.\x01\ +%G/9\xb0*4\x90\x0d4\x8f\xa2}2\x13\xf0\ +\xb3\xa0h*\x0f\xe8\x84\x22\xbc\x5c\x97\x05\x8c\x95\x80u\ +<\x0b\xe8-\x81sf\x16`\x92\xc0\xdd\xe9\x0a\xc0\xd7\ +)\xe06\x0b)k|7\x05\x90\x8e\x80\xa4\xfd\x8e\xe7\ +,\xcb.\xda\xe7+\x1f\xcd>\xa0h3\x09\x87\x147\ +\xc9\xbb\xdf\xbeG\xb1\x9f\xb4q\x85@\xd5B\x02bZ\ +\xa8\xfe\xb19*7\x0a(\x08\xea\xc2P\xb4\xa2\x95\x17\ +p\xaa\x85\xb2m\xc5X\xc2<\x94\xed\xc8\xc7\x01\xca\xa2\ +,\xb9'\x07\xe8\x81\xb2\x9b!\x0c\xc0o\x8f\x04l\xaf\ +\x870\x80`\x14\xe1\x9f'\xc7\xaa0\x80\xf9\x04\x1c\xbf\ +\xf7.q]\x03`\xb4\x89\x80\x17\xab\xbb\x96p\x07F\ +Y\x91\x8a\xab\xe1\xe2U\xd6r9\x9c\xfd\xbb\x88\x9a2\ +\x8fj(\x8a&4c\x01^\x16\xa4N\xfdl\xcc\x02\ +\x02Q\xf4tQj\x16\xd0\x17\xa9\xe8\xc4:\xc0\x02\x96\ +\x22\x15;\xd7\x9d\x05\x14A\xea\xbc\x16\x00,\xa05R\ +o\xa6\x01\x0f\x98Hc\xb2V\x81\x07\xa4\xddN\x17\xfb\ +m\x08\xf0\x00\x7f\xda\xae\x1f.\x0d\xea\xca\x13\xf0*R\ +yjN\x7f\x18\x0eN\xea@\xc0\xd9\x080\xb6@\x9f\ +n\xed-\xac\x04|\xeb\x05o%\xe0\xf6L\xe3\x9a\x9f\ +\xde\xed\xf3 P\x949\x08e\x8f\xfb\x1b\xf7&\xfar\ +'\x22\x8f\x0a\x18\x8c\xb2\xefq\x0d\x8d\xfb\x18\xfb\xf2\xed\ +kwP\x94\xc6\x82\xb2g\xe1\xc6s\xe0\xa1\xdf\xaa\x07\ +[\xb2\xff\xc3\xf7\xc25\xad\xb6q\xaf\xa8\xbfZBG\ +P\xb6\x16E7\x12F\x82\xb1\xb6\xf6\xe9a\xb8\xb7\x1a\ +0%\xe9\xc0\xef\xe7\xdaPGO\xb5D\xc4\x93?\xda\ +\x80\x93\xda\x1f9\x13s\xffe\xfc\x86\x9a\x0e\xd7\x8c\xcb\ +\xf1\xd2\xfb\xc5\x9e\xe0\xacr\xc3fO\xea\x5c\xcdG\xb1\ +f\x9a\xf3kMqp\xa9\x02\xa9 %\xf7\x17\x09\xba\ +99\xea\xb1au\x00\x00\x00\x00IEND\xaeB\ +`\x82\ +" + +qt_resource_name = b"\ +\x00\x06\ +\x07\x03}\xc3\ +\x00i\ +\x00m\x00a\x00g\x00e\x00s\ +\x00\x0e\ +\x09\xbco'\ +\x00w\ +\x00a\x00t\x00e\x00r\x00m\x00a\x00r\x00k\x002\x00.\x00p\x00n\x00g\ +\x00\x09\ +\x0e&\xb1\xe7\ +\x00l\ +\x00o\x00g\x00o\x003\x00.\x00p\x00n\x00g\ +\x00\x0e\ +\x07\x04\x9f\x87\ +\x00b\ +\x00a\x00c\x00k\x00g\x00r\x00o\x00u\x00n\x00d\x00.\x00p\x00n\x00g\ +\x00\x0e\ +\x09\xbdo'\ +\x00w\ +\x00a\x00t\x00e\x00r\x00m\x00a\x00r\x00k\x001\x00.\x00p\x00n\x00g\ +\x00\x09\ +\x0e%\xb1\xe7\ +\x00l\ +\x00o\x00g\x00o\x002\x00.\x00p\x00n\x00g\ +\x00\x0a\ +\x04\xc8G\xe7\ +\x00b\ +\x00a\x00n\x00n\x00e\x00r\x00.\x00p\x00n\x00g\ +\x00\x09\ +\x0e$\xb1\xe7\ +\x00l\ +\x00o\x00g\x00o\x001\x00.\x00p\x00n\x00g\ +" + +qt_resource_struct = b"\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x02\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x01\x00\x00\xd7\xe0\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00L\x00\x00\x00\x00\x00\x01\x00\x00@\x9b\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00n\x00\x00\x00\x00\x00\x01\x00\x00\x98\xd1\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00\xc2\x00\x00\x00\x00\x00\x01\x00\x00\xe7O\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00\x90\x00\x00\x00\x00\x00\x01\x00\x00\xd1\x89\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x004\x00\x00\x00\x00\x00\x01\x00\x00:D\ +\x00\x00\x01~*kP\x18\ +" + +def qInitResources(): + QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +def qCleanupResources(): + QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +qInitResources() diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/images/background.png b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/images/background.png new file mode 100644 index 0000000..44c7bad Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/images/background.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/images/banner.png b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/images/banner.png new file mode 100644 index 0000000..3169152 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/images/banner.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/images/logo1.png b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/images/logo1.png new file mode 100644 index 0000000..f9b594a Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/images/logo1.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/images/logo2.png b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/images/logo2.png new file mode 100644 index 0000000..5dcbd46 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/images/logo2.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/images/logo3.png b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/images/logo3.png new file mode 100644 index 0000000..9fd3ea2 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/images/logo3.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/images/watermark1.png b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/images/watermark1.png new file mode 100644 index 0000000..0091f5c Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/images/watermark1.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/images/watermark2.png b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/images/watermark2.png new file mode 100644 index 0000000..3b88f2e Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/classwizard/images/watermark2.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/dialogs.pyproject b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/dialogs.pyproject new file mode 100644 index 0000000..001fd14 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/dialogs.pyproject @@ -0,0 +1,4 @@ +{ + "files": ["findfiles.py", "standarddialogs.py", "extension.py", + "trivialwizard.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/extension.py b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/extension.py new file mode 100644 index 0000000..6d560c8 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/extension.py @@ -0,0 +1,113 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the widgets/dialogs/extension example from Qt v5.x""" + +from PySide2 import QtCore, QtWidgets + + +class FindDialog(QtWidgets.QDialog): + def __init__(self, parent=None): + super(FindDialog, self).__init__(parent) + + label = QtWidgets.QLabel("Find &what:") + lineEdit = QtWidgets.QLineEdit() + label.setBuddy(lineEdit) + + caseCheckBox = QtWidgets.QCheckBox("Match &case") + fromStartCheckBox = QtWidgets.QCheckBox("Search from &start") + fromStartCheckBox.setChecked(True) + + findButton = QtWidgets.QPushButton("&Find") + findButton.setDefault(True) + + moreButton = QtWidgets.QPushButton("&More") + moreButton.setCheckable(True) + moreButton.setAutoDefault(False) + + buttonBox = QtWidgets.QDialogButtonBox(QtCore.Qt.Vertical) + buttonBox.addButton(findButton, QtWidgets.QDialogButtonBox.ActionRole) + buttonBox.addButton(moreButton, QtWidgets.QDialogButtonBox.ActionRole) + + extension = QtWidgets.QWidget() + + wholeWordsCheckBox = QtWidgets.QCheckBox("&Whole words") + backwardCheckBox = QtWidgets.QCheckBox("Search &backward") + searchSelectionCheckBox = QtWidgets.QCheckBox("Search se&lection") + + moreButton.toggled.connect(extension.setVisible) + + extensionLayout = QtWidgets.QVBoxLayout() + extensionLayout.setContentsMargins(0, 0, 0, 0) + extensionLayout.addWidget(wholeWordsCheckBox) + extensionLayout.addWidget(backwardCheckBox) + extensionLayout.addWidget(searchSelectionCheckBox) + extension.setLayout(extensionLayout) + + topLeftLayout = QtWidgets.QHBoxLayout() + topLeftLayout.addWidget(label) + topLeftLayout.addWidget(lineEdit) + + leftLayout = QtWidgets.QVBoxLayout() + leftLayout.addLayout(topLeftLayout) + leftLayout.addWidget(caseCheckBox) + leftLayout.addWidget(fromStartCheckBox) + leftLayout.addStretch(1) + + mainLayout = QtWidgets.QGridLayout() + mainLayout.setSizeConstraint(QtWidgets.QLayout.SetFixedSize) + mainLayout.addLayout(leftLayout, 0, 0) + mainLayout.addWidget(buttonBox, 0, 1) + mainLayout.addWidget(extension, 1, 0, 1, 2) + self.setLayout(mainLayout) + + self.setWindowTitle("Extension") + extension.hide() + + +if __name__ == '__main__': + + import sys + + app = QtWidgets.QApplication(sys.argv) + dialog = FindDialog() + sys.exit(dialog.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/findfiles.py b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/findfiles.py new file mode 100644 index 0000000..cf2be86 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/findfiles.py @@ -0,0 +1,210 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the widgets/dialogs/findfiles example from Qt v5.x""" + +from PySide2 import QtCore, QtGui, QtWidgets + + +class Window(QtWidgets.QDialog): + def __init__(self, parent=None): + super(Window, self).__init__(parent) + + self.browseButton = self.createButton("&Browse...", self.browse) + self.findButton = self.createButton("&Find", self.find) + + self.fileComboBox = self.createComboBox("*") + self.textComboBox = self.createComboBox() + self.directoryComboBox = self.createComboBox(QtCore.QDir.currentPath()) + + fileLabel = QtWidgets.QLabel("Named:") + textLabel = QtWidgets.QLabel("Containing text:") + directoryLabel = QtWidgets.QLabel("In directory:") + self.filesFoundLabel = QtWidgets.QLabel() + + self.createFilesTable() + + buttonsLayout = QtWidgets.QHBoxLayout() + buttonsLayout.addStretch() + buttonsLayout.addWidget(self.findButton) + + mainLayout = QtWidgets.QGridLayout() + mainLayout.addWidget(fileLabel, 0, 0) + mainLayout.addWidget(self.fileComboBox, 0, 1, 1, 2) + mainLayout.addWidget(textLabel, 1, 0) + mainLayout.addWidget(self.textComboBox, 1, 1, 1, 2) + mainLayout.addWidget(directoryLabel, 2, 0) + mainLayout.addWidget(self.directoryComboBox, 2, 1) + mainLayout.addWidget(self.browseButton, 2, 2) + mainLayout.addWidget(self.filesTable, 3, 0, 1, 3) + mainLayout.addWidget(self.filesFoundLabel, 4, 0) + mainLayout.addLayout(buttonsLayout, 5, 0, 1, 3) + self.setLayout(mainLayout) + + self.setWindowTitle("Find Files") + self.resize(500, 300) + + def browse(self): + directory = QtWidgets.QFileDialog.getExistingDirectory(self, "Find Files", + QtCore.QDir.currentPath()) + + if directory: + if self.directoryComboBox.findText(directory) == -1: + self.directoryComboBox.addItem(directory) + + self.directoryComboBox.setCurrentIndex(self.directoryComboBox.findText(directory)) + + @staticmethod + def updateComboBox(comboBox): + if comboBox.findText(comboBox.currentText()) == -1: + comboBox.addItem(comboBox.currentText()) + + def find(self): + self.filesTable.setRowCount(0) + + fileName = self.fileComboBox.currentText() + text = self.textComboBox.currentText() + path = self.directoryComboBox.currentText() + + self.updateComboBox(self.fileComboBox) + self.updateComboBox(self.textComboBox) + self.updateComboBox(self.directoryComboBox) + + self.currentDir = QtCore.QDir(path) + if not fileName: + fileName = "*" + files = self.currentDir.entryList([fileName], + QtCore.QDir.Files | QtCore.QDir.NoSymLinks) + + if text: + files = self.findFiles(files, text) + self.showFiles(files) + + def findFiles(self, files, text): + progressDialog = QtWidgets.QProgressDialog(self) + + progressDialog.setCancelButtonText("&Cancel") + progressDialog.setRange(0, len(files)) + progressDialog.setWindowTitle("Find Files") + + foundFiles = [] + + for i in range(len(files)): + progressDialog.setValue(i) + progressDialog.setLabelText("Searching file number %d of %d..." % (i, len(files))) + QtCore.QCoreApplication.processEvents() + + if progressDialog.wasCanceled(): + break + + inFile = QtCore.QFile(self.currentDir.absoluteFilePath(files[i])) + + if inFile.open(QtCore.QIODevice.ReadOnly): + stream = QtCore.QTextStream(inFile) + while not stream.atEnd(): + if progressDialog.wasCanceled(): + break + line = stream.readLine() + if text in line: + foundFiles.append(files[i]) + break + + progressDialog.close() + + return foundFiles + + def showFiles(self, files): + for fn in files: + file = QtCore.QFile(self.currentDir.absoluteFilePath(fn)) + size = QtCore.QFileInfo(file).size() + + fileNameItem = QtWidgets.QTableWidgetItem(fn) + fileNameItem.setFlags(fileNameItem.flags() ^ QtCore.Qt.ItemIsEditable) + sizeItem = QtWidgets.QTableWidgetItem("%d KB" % (int((size + 1023) / 1024))) + sizeItem.setTextAlignment(QtCore.Qt.AlignVCenter | QtCore.Qt.AlignRight) + sizeItem.setFlags(sizeItem.flags() ^ QtCore.Qt.ItemIsEditable) + + row = self.filesTable.rowCount() + self.filesTable.insertRow(row) + self.filesTable.setItem(row, 0, fileNameItem) + self.filesTable.setItem(row, 1, sizeItem) + + self.filesFoundLabel.setText("%d file(s) found (Double click on a file to open it)" % len(files)) + + def createButton(self, text, member): + button = QtWidgets.QPushButton(text) + button.clicked.connect(member) + return button + + def createComboBox(self, text=""): + comboBox = QtWidgets.QComboBox() + comboBox.setEditable(True) + comboBox.addItem(text) + comboBox.setSizePolicy(QtWidgets.QSizePolicy.Expanding, + QtWidgets.QSizePolicy.Preferred) + return comboBox + + def createFilesTable(self): + self.filesTable = QtWidgets.QTableWidget(0, 2) + self.filesTable.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) + + self.filesTable.setHorizontalHeaderLabels(("File Name", "Size")) + self.filesTable.horizontalHeader().setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch) + self.filesTable.verticalHeader().hide() + self.filesTable.setShowGrid(False) + + self.filesTable.cellActivated.connect(self.openFileOfItem) + + def openFileOfItem(self, row, column): + item = self.filesTable.item(row, 0) + + QtGui.QDesktopServices.openUrl(QtCore.QUrl(self.currentDir.absoluteFilePath(item.text()))) + + +if __name__ == '__main__': + + import sys + + app = QtWidgets.QApplication(sys.argv) + window = Window() + window.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/standarddialogs.py b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/standarddialogs.py new file mode 100644 index 0000000..f61157e --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/standarddialogs.py @@ -0,0 +1,319 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the widgets/dialogs/standarddialogs example from Qt v5.x""" + +import sys +from PySide2 import QtCore, QtGui, QtWidgets + + +class Dialog(QtWidgets.QDialog): + MESSAGE = "

Message boxes have a caption, a text, and up to three " \ + "buttons, each with standard or custom texts.

" \ + "

Click a button to close the message box. Pressing the Esc " \ + "button will activate the detected escape button (if any).

" + + def __init__(self, parent=None): + super(Dialog, self).__init__(parent) + + self.openFilesPath = '' + + self.errorMessageDialog = QtWidgets.QErrorMessage(self) + + frameStyle = QtWidgets.QFrame.Sunken | QtWidgets.QFrame.Panel + + self.integerLabel = QtWidgets.QLabel() + self.integerLabel.setFrameStyle(frameStyle) + self.integerButton = QtWidgets.QPushButton("QInputDialog.get&Integer()") + + self.doubleLabel = QtWidgets.QLabel() + self.doubleLabel.setFrameStyle(frameStyle) + self.doubleButton = QtWidgets.QPushButton("QInputDialog.get&Double()") + + self.itemLabel = QtWidgets.QLabel() + self.itemLabel.setFrameStyle(frameStyle) + self.itemButton = QtWidgets.QPushButton("QInputDialog.getIte&m()") + + self.textLabel = QtWidgets.QLabel() + self.textLabel.setFrameStyle(frameStyle) + self.textButton = QtWidgets.QPushButton("QInputDialog.get&Text()") + + self.colorLabel = QtWidgets.QLabel() + self.colorLabel.setFrameStyle(frameStyle) + self.colorButton = QtWidgets.QPushButton("QColorDialog.get&Color()") + + self.fontLabel = QtWidgets.QLabel() + self.fontLabel.setFrameStyle(frameStyle) + self.fontButton = QtWidgets.QPushButton("QFontDialog.get&Font()") + + self.directoryLabel = QtWidgets.QLabel() + self.directoryLabel.setFrameStyle(frameStyle) + self.directoryButton = QtWidgets.QPushButton("QFileDialog.getE&xistingDirectory()") + + self.openFileNameLabel = QtWidgets.QLabel() + self.openFileNameLabel.setFrameStyle(frameStyle) + self.openFileNameButton = QtWidgets.QPushButton("QFileDialog.get&OpenFileName()") + + self.openFileNamesLabel = QtWidgets.QLabel() + self.openFileNamesLabel.setFrameStyle(frameStyle) + self.openFileNamesButton = QtWidgets.QPushButton("QFileDialog.&getOpenFileNames()") + + self.saveFileNameLabel = QtWidgets.QLabel() + self.saveFileNameLabel.setFrameStyle(frameStyle) + self.saveFileNameButton = QtWidgets.QPushButton("QFileDialog.get&SaveFileName()") + + self.criticalLabel = QtWidgets.QLabel() + self.criticalLabel.setFrameStyle(frameStyle) + self.criticalButton = QtWidgets.QPushButton("QMessageBox.critica&l()") + + self.informationLabel = QtWidgets.QLabel() + self.informationLabel.setFrameStyle(frameStyle) + self.informationButton = QtWidgets.QPushButton("QMessageBox.i&nformation()") + + self.questionLabel = QtWidgets.QLabel() + self.questionLabel.setFrameStyle(frameStyle) + self.questionButton = QtWidgets.QPushButton("QMessageBox.&question()") + + self.warningLabel = QtWidgets.QLabel() + self.warningLabel.setFrameStyle(frameStyle) + self.warningButton = QtWidgets.QPushButton("QMessageBox.&warning()") + + self.errorLabel = QtWidgets.QLabel() + self.errorLabel.setFrameStyle(frameStyle) + self.errorButton = QtWidgets.QPushButton("QErrorMessage.show&M&essage()") + + self.integerButton.clicked.connect(self.setInteger) + self.doubleButton.clicked.connect(self.setDouble) + self.itemButton.clicked.connect(self.setItem) + self.textButton.clicked.connect(self.setText) + self.colorButton.clicked.connect(self.setColor) + self.fontButton.clicked.connect(self.setFont) + self.directoryButton.clicked.connect(self.setExistingDirectory) + self.openFileNameButton.clicked.connect(self.setOpenFileName) + self.openFileNamesButton.clicked.connect(self.setOpenFileNames) + self.saveFileNameButton.clicked.connect(self.setSaveFileName) + self.criticalButton.clicked.connect(self.criticalMessage) + self.informationButton.clicked.connect(self.informationMessage) + self.questionButton.clicked.connect(self.questionMessage) + self.warningButton.clicked.connect(self.warningMessage) + self.errorButton.clicked.connect(self.errorMessage) + + self.native = QtWidgets.QCheckBox() + self.native.setText("Use native file dialog.") + self.native.setChecked(True) + if sys.platform not in ("win32", "darwin"): + self.native.hide() + + layout = QtWidgets.QGridLayout() + layout.setColumnStretch(1, 1) + layout.setColumnMinimumWidth(1, 250) + layout.addWidget(self.integerButton, 0, 0) + layout.addWidget(self.integerLabel, 0, 1) + layout.addWidget(self.doubleButton, 1, 0) + layout.addWidget(self.doubleLabel, 1, 1) + layout.addWidget(self.itemButton, 2, 0) + layout.addWidget(self.itemLabel, 2, 1) + layout.addWidget(self.textButton, 3, 0) + layout.addWidget(self.textLabel, 3, 1) + layout.addWidget(self.colorButton, 4, 0) + layout.addWidget(self.colorLabel, 4, 1) + layout.addWidget(self.fontButton, 5, 0) + layout.addWidget(self.fontLabel, 5, 1) + layout.addWidget(self.directoryButton, 6, 0) + layout.addWidget(self.directoryLabel, 6, 1) + layout.addWidget(self.openFileNameButton, 7, 0) + layout.addWidget(self.openFileNameLabel, 7, 1) + layout.addWidget(self.openFileNamesButton, 8, 0) + layout.addWidget(self.openFileNamesLabel, 8, 1) + layout.addWidget(self.saveFileNameButton, 9, 0) + layout.addWidget(self.saveFileNameLabel, 9, 1) + layout.addWidget(self.criticalButton, 10, 0) + layout.addWidget(self.criticalLabel, 10, 1) + layout.addWidget(self.informationButton, 11, 0) + layout.addWidget(self.informationLabel, 11, 1) + layout.addWidget(self.questionButton, 12, 0) + layout.addWidget(self.questionLabel, 12, 1) + layout.addWidget(self.warningButton, 13, 0) + layout.addWidget(self.warningLabel, 13, 1) + layout.addWidget(self.errorButton, 14, 0) + layout.addWidget(self.errorLabel, 14, 1) + layout.addWidget(self.native, 15, 0) + self.setLayout(layout) + + self.setWindowTitle("Standard Dialogs") + + def setInteger(self): + i, ok = QtWidgets.QInputDialog.getInt(self, + "QInputDialog.getInteger()", "Percentage:", 25, 0, 100, 1) + if ok: + self.integerLabel.setText("%d%%" % i) + + def setDouble(self): + d, ok = QtWidgets.QInputDialog.getDouble(self, "QInputDialog.getDouble()", + "Amount:", 37.56, -10000, 10000, 2) + if ok: + self.doubleLabel.setText("$%g" % d) + + def setItem(self): + items = ("Spring", "Summer", "Fall", "Winter") + + item, ok = QtWidgets.QInputDialog.getItem(self, "QInputDialog.getItem()", + "Season:", items, 0, False) + if ok and item: + self.itemLabel.setText(item) + + def setText(self): + text, ok = QtWidgets.QInputDialog.getText(self, "QInputDialog.getText()", + "User name:", QtWidgets.QLineEdit.Normal, + QtCore.QDir.home().dirName()) + if ok and text != '': + self.textLabel.setText(text) + + def setColor(self): + color = QtWidgets.QColorDialog.getColor(QtCore.Qt.green, self) + if color.isValid(): + self.colorLabel.setText(color.name()) + self.colorLabel.setPalette(QtGui.QPalette(color)) + self.colorLabel.setAutoFillBackground(True) + + def setFont(self): + ok, font = QtWidgets.QFontDialog.getFont(QtGui.QFont(self.fontLabel.text()), self) + if ok: + self.fontLabel.setText(font.key()) + self.fontLabel.setFont(font) + + def setExistingDirectory(self): + options = QtWidgets.QFileDialog.DontResolveSymlinks | QtWidgets.QFileDialog.ShowDirsOnly + directory = QtWidgets.QFileDialog.getExistingDirectory(self, + "QFileDialog.getExistingDirectory()", + self.directoryLabel.text(), options) + if directory: + self.directoryLabel.setText(directory) + + def setOpenFileName(self): + options = QtWidgets.QFileDialog.Options() + if not self.native.isChecked(): + options |= QtWidgets.QFileDialog.DontUseNativeDialog + fileName, filtr = QtWidgets.QFileDialog.getOpenFileName(self, + "QFileDialog.getOpenFileName()", + self.openFileNameLabel.text(), + "All Files (*);;Text Files (*.txt)", "", options) + if fileName: + self.openFileNameLabel.setText(fileName) + + def setOpenFileNames(self): + options = QtWidgets.QFileDialog.Options() + if not self.native.isChecked(): + options |= QtWidgets.QFileDialog.DontUseNativeDialog + files, filtr = QtWidgets.QFileDialog.getOpenFileNames(self, + "QFileDialog.getOpenFileNames()", self.openFilesPath, + "All Files (*);;Text Files (*.txt)", "", options) + if files: + self.openFilesPath = files[0] + self.openFileNamesLabel.setText("[%s]" % ', '.join(files)) + + def setSaveFileName(self): + options = QtWidgets.QFileDialog.Options() + if not self.native.isChecked(): + options |= QtWidgets.QFileDialog.DontUseNativeDialog + fileName, filtr = QtWidgets.QFileDialog.getSaveFileName(self, + "QFileDialog.getSaveFileName()", + self.saveFileNameLabel.text(), + "All Files (*);;Text Files (*.txt)", "", options) + if fileName: + self.saveFileNameLabel.setText(fileName) + + def criticalMessage(self): + reply = QtWidgets.QMessageBox.critical(self, "QMessageBox.critical()", + Dialog.MESSAGE, + QtWidgets.QMessageBox.Abort | QtWidgets.QMessageBox.Retry | QtWidgets.QMessageBox.Ignore) + if reply == QtWidgets.QMessageBox.Abort: + self.criticalLabel.setText("Abort") + elif reply == QtWidgets.QMessageBox.Retry: + self.criticalLabel.setText("Retry") + else: + self.criticalLabel.setText("Ignore") + + def informationMessage(self): + reply = QtWidgets.QMessageBox.information(self, + "QMessageBox.information()", Dialog.MESSAGE) + if reply == QtWidgets.QMessageBox.Ok: + self.informationLabel.setText("OK") + else: + self.informationLabel.setText("Escape") + + def questionMessage(self): + reply = QtWidgets.QMessageBox.question(self, "QMessageBox.question()", + Dialog.MESSAGE, + QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No | QtWidgets.QMessageBox.Cancel) + if reply == QtWidgets.QMessageBox.Yes: + self.questionLabel.setText("Yes") + elif reply == QtWidgets.QMessageBox.No: + self.questionLabel.setText("No") + else: + self.questionLabel.setText("Cancel") + + def warningMessage(self): + msgBox = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Warning, + "QMessageBox.warning()", Dialog.MESSAGE, + QtWidgets.QMessageBox.NoButton, self) + msgBox.addButton("Save &Again", QtWidgets.QMessageBox.AcceptRole) + msgBox.addButton("&Continue", QtWidgets.QMessageBox.RejectRole) + if msgBox.exec_() == QtWidgets.QMessageBox.AcceptRole: + self.warningLabel.setText("Save Again") + else: + self.warningLabel.setText("Continue") + + def errorMessage(self): + self.errorMessageDialog.showMessage("This dialog shows and remembers " + "error messages. If the checkbox is checked (as it is by " + "default), the shown message will be shown again, but if the " + "user unchecks the box the message will not appear again if " + "QErrorMessage.showMessage() is called with the same message.") + self.errorLabel.setText("If the box is unchecked, the message won't " + "appear again.") + + +if __name__ == '__main__': + app = QtWidgets.QApplication(sys.argv) + dialog = Dialog() + sys.exit(dialog.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/trivialwizard.py b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/trivialwizard.py new file mode 100644 index 0000000..80a3981 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/dialogs/trivialwizard.py @@ -0,0 +1,112 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the widgets/dialogs/trivialwizard example from Qt v5.x""" + +from PySide2 import QtWidgets + + +def createIntroPage(): + page = QtWidgets.QWizardPage() + page.setTitle("Introduction") + + label = QtWidgets.QLabel("This wizard will help you register your copy of " + "Super Product Two.") + label.setWordWrap(True) + + layout = QtWidgets.QVBoxLayout() + layout.addWidget(label) + page.setLayout(layout) + + return page + + +def createRegistrationPage(): + page = QtWidgets.QWizardPage() + page.setTitle("Registration") + page.setSubTitle("Please fill both fields.") + + nameLabel = QtWidgets.QLabel("Name:") + nameLineEdit = QtWidgets.QLineEdit() + + emailLabel = QtWidgets.QLabel("Email address:") + emailLineEdit = QtWidgets.QLineEdit() + + layout = QtWidgets.QGridLayout() + layout.addWidget(nameLabel, 0, 0) + layout.addWidget(nameLineEdit, 0, 1) + layout.addWidget(emailLabel, 1, 0) + layout.addWidget(emailLineEdit, 1, 1) + page.setLayout(layout) + + return page + + +def createConclusionPage(): + page = QtWidgets.QWizardPage() + page.setTitle("Conclusion") + + label = QtWidgets.QLabel("You are now successfully registered. Have a nice day!") + label.setWordWrap(True) + + layout = QtWidgets.QVBoxLayout() + layout.addWidget(label) + page.setLayout(layout) + + return page + + +if __name__ == '__main__': + + import sys + + app = QtWidgets.QApplication(sys.argv) + + wizard = QtWidgets.QWizard() + wizard.addPage(createIntroPage()) + wizard.addPage(createRegistrationPage()) + wizard.addPage(createConclusionPage()) + + wizard.setWindowTitle("Trivial Wizard") + wizard.show() + + sys.exit(wizard.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/draganddrop/draggabletext/__pycache__/draggabletext.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/draganddrop/draggabletext/__pycache__/draggabletext.cpython-310.pyc new file mode 100644 index 0000000..45a2888 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/draganddrop/draggabletext/__pycache__/draggabletext.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/draganddrop/draggabletext/__pycache__/draggabletext_rc.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/draganddrop/draggabletext/__pycache__/draggabletext_rc.cpython-310.pyc new file mode 100644 index 0000000..c06aaac Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/draganddrop/draggabletext/__pycache__/draggabletext_rc.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/draganddrop/draggabletext/draggabletext.py b/venv/Lib/site-packages/PySide2/examples/widgets/draganddrop/draggabletext/draggabletext.py new file mode 100644 index 0000000..77a40b1 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/draganddrop/draggabletext/draggabletext.py @@ -0,0 +1,155 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the widgets/draganddrop/draggabletext example from Qt v5.x, originating from PyQt""" + +from PySide2.QtCore import QFile, QIODevice, QMimeData, QPoint, Qt, QTextStream +from PySide2.QtGui import QDrag, QPalette, QPixmap +from PySide2.QtWidgets import QApplication, QFrame, QLabel, QWidget + +import draggabletext_rc + + +class DragLabel(QLabel): + def __init__(self, text, parent): + super(DragLabel, self).__init__(text, parent) + + self.setAutoFillBackground(True) + self.setFrameShape(QFrame.Panel) + self.setFrameShadow(QFrame.Raised) + + def mousePressEvent(self, event): + hotSpot = event.pos() + + mimeData = QMimeData() + mimeData.setText(self.text()) + mimeData.setData('application/x-hotspot', + b'%d %d' % (hotSpot.x(), hotSpot.y())) + + pixmap = QPixmap(self.size()) + self.render(pixmap) + + drag = QDrag(self) + drag.setMimeData(mimeData) + drag.setPixmap(pixmap) + drag.setHotSpot(hotSpot) + + dropAction = drag.exec_(Qt.CopyAction | Qt.MoveAction, Qt.CopyAction) + + if dropAction == Qt.MoveAction: + self.close() + self.update() + + +class DragWidget(QWidget): + def __init__(self, parent=None): + super(DragWidget, self).__init__(parent) + + dictionaryFile = QFile(':/dictionary/words.txt') + dictionaryFile.open(QIODevice.ReadOnly) + + x = 5 + y = 5 + + for word in QTextStream(dictionaryFile).readAll().split(): + wordLabel = DragLabel(word, self) + wordLabel.move(x, y) + wordLabel.show() + x += wordLabel.width() + 2 + if x >= 195: + x = 5 + y += wordLabel.height() + 2 + + newPalette = self.palette() + newPalette.setColor(QPalette.Window, Qt.white) + self.setPalette(newPalette) + + self.setAcceptDrops(True) + self.setMinimumSize(400, max(200, y)) + self.setWindowTitle("Draggable Text") + + def dragEnterEvent(self, event): + if event.mimeData().hasText(): + if event.source() in self.children(): + event.setDropAction(Qt.MoveAction) + event.accept() + else: + event.acceptProposedAction() + else: + event.ignore() + + def dropEvent(self, event): + if event.mimeData().hasText(): + mime = event.mimeData() + pieces = mime.text().split() + position = event.pos() + hotSpot = QPoint() + + hotSpotPos = mime.data('application/x-hotspot').split(' ') + if len(hotSpotPos) == 2: + hotSpot.setX(hotSpotPos[0].toInt()[0]) + hotSpot.setY(hotSpotPos[1].toInt()[0]) + + for piece in pieces: + newLabel = DragLabel(piece, self) + newLabel.move(position - hotSpot) + newLabel.show() + + position += QPoint(newLabel.width(), 0) + + if event.source() in self.children(): + event.setDropAction(Qt.MoveAction) + event.accept() + else: + event.acceptProposedAction() + else: + event.ignore() + + +if __name__ == '__main__': + + import sys + + app = QApplication(sys.argv) + window = DragWidget() + window.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/draganddrop/draggabletext/draggabletext.pyproject b/venv/Lib/site-packages/PySide2/examples/widgets/draganddrop/draggabletext/draggabletext.pyproject new file mode 100644 index 0000000..0d42207 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/draganddrop/draggabletext/draggabletext.pyproject @@ -0,0 +1,4 @@ +{ + "files": ["draggabletext_rc.py", "words.txt", "draggabletext.qrc", + "draggabletext.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/draganddrop/draggabletext/draggabletext.qrc b/venv/Lib/site-packages/PySide2/examples/widgets/draganddrop/draggabletext/draggabletext.qrc new file mode 100644 index 0000000..b72217d --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/draganddrop/draggabletext/draggabletext.qrc @@ -0,0 +1,5 @@ + + + words.txt + + diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/draganddrop/draggabletext/draggabletext_rc.py b/venv/Lib/site-packages/PySide2/examples/widgets/draganddrop/draggabletext/draggabletext_rc.py new file mode 100644 index 0000000..e54a6cd --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/draganddrop/draggabletext/draggabletext_rc.py @@ -0,0 +1,57 @@ +# Resource object code (Python 3) +# Created by: object code +# Created by: The Resource Compiler for Qt version 5.15.2 +# WARNING! All changes made in this file will be lost! + +from PySide2 import QtCore + +qt_resource_data = b"\ +\x00\x00\x01 \ +Q\ +t\x0d\x0aQuarterly\x0d\x0ais\ +\x0d\x0aa\x0d\x0apaper\x0d\x0abase\ +d\x0d\x0anewsletter\x0d\x0ae\ +xclusively\x0d\x0aavai\ +lable\x0d\x0ato\x0d\x0aQt\x0d\x0ac\ +ustomers\x0d\x0aEvery\x0d\ +\x0aquarter\x0d\x0awe\x0d\x0ama\ +il\x0d\x0aout\x0d\x0aan\x0d\x0aiss\ +ue\x0d\x0athat\x0d\x0awe\x0d\x0aho\ +pe\x0d\x0awill\x0d\x0abring\x0d\ +\x0aadded\x0d\x0ainsight\x0d\ +\x0aand\x0d\x0apleasure\x0d\x0a\ +to\x0d\x0ayour\x0d\x0aQt\x0d\x0apr\ +ogramming\x0d\x0awith\x0d\ +\x0ahigh\x0d\x0aquality\x0d\x0a\ +technical\x0d\x0aartic\ +les\x0d\x0awritten\x0d\x0aby\ +\x0d\x0aQt\x0d\x0aexperts\x0d\x0a\ +" + +qt_resource_name = b"\ +\x00\x0a\ +\x0b\x0b\x17\xd9\ +\x00d\ +\x00i\x00c\x00t\x00i\x00o\x00n\x00a\x00r\x00y\ +\x00\x09\ +\x08\xb6\xa74\ +\x00w\ +\x00o\x00r\x00d\x00s\x00.\x00t\x00x\x00t\ +" + +qt_resource_struct = b"\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x01~*kP\x18\ +" + +def qInitResources(): + QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +def qCleanupResources(): + QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +qInitResources() diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/draganddrop/draggabletext/words.txt b/venv/Lib/site-packages/PySide2/examples/widgets/draganddrop/draggabletext/words.txt new file mode 100644 index 0000000..19b8b03 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/draganddrop/draggabletext/words.txt @@ -0,0 +1,41 @@ +Qt +Quarterly +is +a +paper +based +newsletter +exclusively +available +to +Qt +customers +Every +quarter +we +mail +out +an +issue +that +we +hope +will +bring +added +insight +and +pleasure +to +your +Qt +programming +with +high +quality +technical +articles +written +by +Qt +experts diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/effects/__pycache__/lighting.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/effects/__pycache__/lighting.cpython-310.pyc new file mode 100644 index 0000000..e8eb90a Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/effects/__pycache__/lighting.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/effects/effects.pyproject b/venv/Lib/site-packages/PySide2/examples/widgets/effects/effects.pyproject new file mode 100644 index 0000000..c64fe46 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/effects/effects.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["lighting.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/effects/lighting.py b/venv/Lib/site-packages/PySide2/examples/widgets/effects/lighting.py new file mode 100644 index 0000000..596db4e --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/effects/lighting.py @@ -0,0 +1,144 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +import math + +from PySide2 import QtCore, QtGui, QtWidgets + + +class Lighting(QtWidgets.QGraphicsView): + def __init__(self, parent=None): + super(Lighting, self).__init__(parent) + + self.angle = 0.0 + self.m_scene = QtWidgets.QGraphicsScene() + self.m_lightSource = None + self.m_items = [] + + self.setScene(self.m_scene) + + self.setupScene() + + timer = QtCore.QTimer(self) + timer.timeout.connect(self.animate) + timer.setInterval(30) + timer.start() + + self.setRenderHint(QtGui.QPainter.Antialiasing) + self.setFrameStyle(QtWidgets.QFrame.NoFrame) + + def setupScene(self): + self.m_scene.setSceneRect(-300, -200, 600, 460) + + linearGrad = QtGui.QLinearGradient(QtCore.QPointF(-100, -100), + QtCore.QPointF(100, 100)) + linearGrad.setColorAt(0, QtGui.QColor(255, 255, 255)) + linearGrad.setColorAt(1, QtGui.QColor(192, 192, 255)) + self.setBackgroundBrush(linearGrad) + + radialGrad = QtGui.QRadialGradient(30, 30, 30) + radialGrad.setColorAt(0, QtCore.Qt.yellow) + radialGrad.setColorAt(0.2, QtCore.Qt.yellow) + radialGrad.setColorAt(1, QtCore.Qt.transparent) + + pixmap = QtGui.QPixmap(60, 60) + pixmap.fill(QtCore.Qt.transparent) + + painter = QtGui.QPainter(pixmap) + painter.setPen(QtCore.Qt.NoPen) + painter.setBrush(radialGrad) + painter.drawEllipse(0, 0, 60, 60) + painter.end() + + self.m_lightSource = self.m_scene.addPixmap(pixmap) + self.m_lightSource.setZValue(2) + + for i in range(-2, 3): + for j in range(-2, 3): + if (i + j) & 1: + item = QtWidgets.QGraphicsEllipseItem(0, 0, 50, 50) + else: + item = QtWidgets.QGraphicsRectItem(0, 0, 50, 50) + + item.setPen(QtGui.QPen(QtCore.Qt.black, 1)) + item.setBrush(QtGui.QBrush(QtCore.Qt.white)) + + effect = QtWidgets.QGraphicsDropShadowEffect(self) + effect.setBlurRadius(8) + item.setGraphicsEffect(effect) + item.setZValue(1) + item.setPos(i * 80, j * 80) + self.m_scene.addItem(item) + self.m_items.append(item) + + def animate(self): + self.angle += (math.pi / 30) + xs = 200 * math.sin(self.angle) - 40 + 25 + ys = 200 * math.cos(self.angle) - 40 + 25 + self.m_lightSource.setPos(xs, ys) + + for item in self.m_items: + effect = item.graphicsEffect() + + delta = QtCore.QPointF(item.x() - xs, item.y() - ys) + effect.setOffset(QtCore.QPointF(delta.toPoint() / 30)) + + dd = math.hypot(delta.x(), delta.y()) + color = effect.color() + color.setAlphaF(max(0.4, min(1 - dd / 200.0, 0.7))) + effect.setColor(color) + + self.m_scene.update() + + +if __name__ == '__main__': + + import sys + + app = QtWidgets.QApplication(sys.argv) + + lighting = Lighting() + lighting.setWindowTitle("Lighting and Shadows") + lighting.resize(640, 480) + lighting.show() + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/gallery/__pycache__/main.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/gallery/__pycache__/main.cpython-310.pyc new file mode 100644 index 0000000..b347d38 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/gallery/__pycache__/main.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/gallery/__pycache__/widgetgallery.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/gallery/__pycache__/widgetgallery.cpython-310.pyc new file mode 100644 index 0000000..a84581c Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/gallery/__pycache__/widgetgallery.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/gallery/gallery.pyproject b/venv/Lib/site-packages/PySide2/examples/widgets/gallery/gallery.pyproject new file mode 100644 index 0000000..635e123 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/gallery/gallery.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["main.py", "widgetgallery.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/gallery/main.py b/venv/Lib/site-packages/PySide2/examples/widgets/gallery/main.py new file mode 100644 index 0000000..11f1920 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/gallery/main.py @@ -0,0 +1,56 @@ +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the widgets/gallery example from Qt v5.15""" + +import sys + +from PySide2.QtCore import QCoreApplication, Qt +from PySide2.QtWidgets import QApplication +from widgetgallery import WidgetGallery + + +if __name__ == '__main__': + QCoreApplication.setAttribute(Qt.AA_EnableHighDpiScaling) + QCoreApplication.setAttribute(Qt.AA_UseHighDpiPixmaps) + app = QApplication() + gallery = WidgetGallery() + gallery.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/gallery/widgetgallery.py b/venv/Lib/site-packages/PySide2/examples/widgets/gallery/widgetgallery.py new file mode 100644 index 0000000..a06ac2e --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/gallery/widgetgallery.py @@ -0,0 +1,429 @@ +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +import sys + +from PySide2.QtWidgets import * +from PySide2.QtGui import (QCursor, QDesktopServices, QGuiApplication, QIcon, + QKeySequence, QStandardItem, QStandardItemModel, + QScreen, QWindow) +from PySide2.QtCore import (QDateTime, QDir, QLibraryInfo, QMetaObject, + QSysInfo, QTextStream, QTimer, Qt, qVersion) + + +POEM = """Twinkle, twinkle, little star, +How I wonder what you are. +Up above the world so high, +Like a diamond in the sky. +Twinkle, twinkle, little star, +How I wonder what you arenot""" + +DIR_OPEN_ICON = ":/qt-project.org/styles/commonstyle/images/diropen-128.png" + +COMPUTER_ICON = ":/qt-project.org/styles/commonstyle/images/computer-32.png" + +SYSTEMINFO = """ +

Python

{}

+

Qt Build

{}

+

Operating System

{}

+

Screens

+{} +""" + + +def class_name(o): + return o.metaObject().className() + + +def help_url(page): + """Build a Qt help URL from the page name""" + major_version = qVersion().split('.')[0] + return "https://doc.qt.io/qt-{}/{}.html".format(major_version, page) + + +def launch_help(widget): + """Launch a widget's help page""" + url = help_url(class_name(widget).lower()) + QDesktopServices.openUrl(url) + + +def launch_module_help(): + QDesktopServices.openUrl(help_url("qtwidgets-index")) + + +def init_widget(w, name): + """Init a widget for the gallery, give it a tooltip showing the + class name""" + w.setObjectName(name) + w.setToolTip(class_name(w)) + + +def style_names(): + """Return a list of styles, default platform style first""" + default_style_name = QApplication.style().objectName().lower() + result = [] + for style in QStyleFactory.keys(): + if style.lower() == default_style_name: + result.insert(0, style) + else: + result.append(style) + return result + + +def embed_into_hbox_layout(w, margin=5): + """Embed a widget into a layout to give it a frame""" + result = QWidget() + layout = QHBoxLayout(result) + layout.setContentsMargins(margin, margin, margin, margin) + layout.addWidget(w) + return result + + +def format_geometry(rect): + """Format a geometry as a X11 geometry specification""" + return "{}x{}{:+d}{:+d}".format(rect.width(), rect.height(), + rect.x(), rect.y()) + + +def screen_info(widget): + """Format information on the screens""" + policy = QGuiApplication.highDpiScaleFactorRoundingPolicy() + policy_string = str(policy).split('.')[-1] + result = "

High DPI scale factor rounding policy: {}

    ".format(policy_string) + for screen in QGuiApplication.screens(): + current = screen == widget.screen() + result += "
  1. " + if current: + result += "" + result += '"{}" {} {}DPI, DPR={}'.format(screen.name(), + format_geometry(screen.geometry()), + int(screen.logicalDotsPerInchX()), + screen.devicePixelRatio()) + if current: + result += "" + result += "
  2. " + result += "
" + return result + + +class WidgetGallery(QDialog): + """Dialog displaying a gallery of Qt Widgets""" + + def __init__(self): + super(WidgetGallery, self).__init__() + + self._progress_bar = self.create_progress_bar() + + self._style_combobox = QComboBox() + init_widget(self._style_combobox, "styleComboBox") + self._style_combobox.addItems(style_names()) + + style_label = QLabel("Style:") + init_widget(style_label, "style_label") + style_label.setBuddy(self._style_combobox) + + help_label = QLabel("Press F1 over a widget to see Documentation") + init_widget(help_label, "help_label") + + disable_widgets_checkbox = QCheckBox("Disable widgets") + init_widget(disable_widgets_checkbox, "disable_widgets_checkbox") + + buttons_groupbox = self.create_buttons_groupbox() + itemview_tabwidget = self.create_itemview_tabwidget() + simple_input_widgets_groupbox = self.create_simple_inputwidgets_groupbox() + text_toolbox = self.create_text_toolbox() + + self._style_combobox.textActivated.connect(self.change_style) + disable_widgets_checkbox.toggled.connect(buttons_groupbox.setDisabled) + disable_widgets_checkbox.toggled.connect(text_toolbox.setDisabled) + disable_widgets_checkbox.toggled.connect(itemview_tabwidget.setDisabled) + disable_widgets_checkbox.toggled.connect(simple_input_widgets_groupbox.setDisabled) + + help_shortcut = QShortcut(self) + help_shortcut.setKey(QKeySequence.HelpContents) + help_shortcut.activated.connect(self.help_on_current_widget) + + top_layout = QHBoxLayout() + top_layout.addWidget(style_label) + top_layout.addWidget(self._style_combobox) + top_layout.addStretch(1) + top_layout.addWidget(help_label) + top_layout.addStretch(1) + top_layout.addWidget(disable_widgets_checkbox) + + dialog_buttonbox = QDialogButtonBox(QDialogButtonBox.Help | + QDialogButtonBox.Close) + init_widget(dialog_buttonbox, "dialogButtonBox") + dialog_buttonbox.helpRequested.connect(launch_module_help) + dialog_buttonbox.rejected.connect(self.reject) + + main_layout = QGridLayout(self) + main_layout.addLayout(top_layout, 0, 0, 1, 2) + main_layout.addWidget(buttons_groupbox, 1, 0) + main_layout.addWidget(simple_input_widgets_groupbox, 1, 1) + main_layout.addWidget(itemview_tabwidget, 2, 0) + main_layout.addWidget(text_toolbox, 2, 1) + main_layout.addWidget(self._progress_bar, 3, 0, 1, 2) + main_layout.addWidget(dialog_buttonbox, 4, 0, 1, 2) + + self.setWindowTitle("Widget Gallery Qt {}".format(qVersion())) + + def setVisible(self, visible): + super(WidgetGallery, self).setVisible(visible) + if visible: + self.windowHandle().screenChanged.connect(self.update_systeminfo) + self.update_systeminfo() + + def change_style(self, style_name): + QApplication.setStyle(QStyleFactory.create(style_name)) + + def advance_progressbar(self): + cur_val = self._progress_bar.value() + max_val = self._progress_bar.maximum() + self._progress_bar.setValue(cur_val + (max_val - cur_val) / 100) + + def create_buttons_groupbox(self): + result = QGroupBox("Buttons") + init_widget(result, "buttons_groupbox") + + default_pushbutton = QPushButton("Default Push Button") + init_widget(default_pushbutton, "default_pushbutton") + default_pushbutton.setDefault(True) + + toggle_pushbutton = QPushButton("Toggle Push Button") + init_widget(toggle_pushbutton, "toggle_pushbutton") + toggle_pushbutton.setCheckable(True) + toggle_pushbutton.setChecked(True) + + flat_pushbutton = QPushButton("Flat Push Button") + init_widget(flat_pushbutton, "flat_pushbutton") + flat_pushbutton.setFlat(True) + + toolbutton = QToolButton() + init_widget(toolbutton, "toolButton") + toolbutton.setText("Tool Button") + + menu_toolbutton = QToolButton() + init_widget(menu_toolbutton, "menuButton") + menu_toolbutton.setText("Menu Button") + tool_menu = QMenu(menu_toolbutton) + menu_toolbutton.setPopupMode(QToolButton.InstantPopup) + tool_menu.addAction("Option") + tool_menu.addSeparator() + action = tool_menu.addAction("Checkable Option") + action.setCheckable(True) + menu_toolbutton.setMenu(tool_menu) + tool_layout = QHBoxLayout() + tool_layout.addWidget(toolbutton) + tool_layout.addWidget(menu_toolbutton) + + commandlinkbutton = QCommandLinkButton("Command Link Button") + init_widget(commandlinkbutton, "commandLinkButton") + commandlinkbutton.setDescription("Description") + + button_layout = QVBoxLayout() + button_layout.addWidget(default_pushbutton) + button_layout.addWidget(toggle_pushbutton) + button_layout.addWidget(flat_pushbutton) + button_layout.addLayout(tool_layout) + button_layout.addWidget(commandlinkbutton) + button_layout.addStretch(1) + + radiobutton_1 = QRadioButton("Radio button 1") + init_widget(radiobutton_1, "radioButton1") + radiobutton_2 = QRadioButton("Radio button 2") + init_widget(radiobutton_2, "radioButton2") + radiobutton_3 = QRadioButton("Radio button 3") + init_widget(radiobutton_3, "radioButton3") + radiobutton_1.setChecked(True) + + checkbox = QCheckBox("Tri-state check box") + init_widget(checkbox, "checkBox") + checkbox.setTristate(True) + checkbox.setCheckState(Qt.PartiallyChecked) + + checkableLayout = QVBoxLayout() + checkableLayout.addWidget(radiobutton_1) + checkableLayout.addWidget(radiobutton_2) + checkableLayout.addWidget(radiobutton_3) + checkableLayout.addWidget(checkbox) + checkableLayout.addStretch(1) + + main_layout = QHBoxLayout(result) + main_layout.addLayout(button_layout) + main_layout.addLayout(checkableLayout) + main_layout.addStretch() + return result + + def create_text_toolbox(self): + result = QToolBox() + init_widget(result, "toolBox") + + # Create centered/italic HTML rich text + rich_text = "" + for line in POEM.split('\n'): + rich_text += "
" + line + "
" + rich_text += "
" + + text_edit = QTextEdit(rich_text) + init_widget(text_edit, "textEdit") + plain_textedit = QPlainTextEdit(POEM) + init_widget(plain_textedit, "plainTextEdit") + + self._systeminfo_textbrowser = QTextBrowser() + init_widget(self._systeminfo_textbrowser, "systemInfoTextBrowser") + + result.addItem(embed_into_hbox_layout(text_edit), "Text Edit") + result.addItem(embed_into_hbox_layout(plain_textedit), + "Plain Text Edit") + result.addItem(embed_into_hbox_layout(self._systeminfo_textbrowser), + "Text Browser") + return result + + def create_itemview_tabwidget(self): + result = QTabWidget() + init_widget(result, "bottomLeftTabWidget") + result.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Ignored) + + tree_view = QTreeView() + init_widget(tree_view, "treeView") + filesystem_model = QFileSystemModel(tree_view) + filesystem_model.setRootPath(QDir.rootPath()) + tree_view.setModel(filesystem_model) + + table_widget = QTableWidget() + init_widget(table_widget, "tableWidget") + table_widget.setRowCount(10) + table_widget.setColumnCount(10) + + list_model = QStandardItemModel(0, 1, result) + + list_model.appendRow(QStandardItem(QIcon(DIR_OPEN_ICON), "Directory")) + list_model.appendRow(QStandardItem(QIcon(COMPUTER_ICON), "Computer")) + + list_view = QListView() + init_widget(list_view, "listView") + list_view.setModel(list_model) + + icon_mode_listview = QListView() + init_widget(icon_mode_listview, "iconModeListView") + + icon_mode_listview.setViewMode(QListView.IconMode) + icon_mode_listview.setModel(list_model) + + result.addTab(embed_into_hbox_layout(tree_view), "Tree View") + result.addTab(embed_into_hbox_layout(table_widget), "Table") + result.addTab(embed_into_hbox_layout(list_view), "List") + result.addTab(embed_into_hbox_layout(icon_mode_listview), + "Icon Mode List") + return result + + def create_simple_inputwidgets_groupbox(self): + result = QGroupBox("Simple Input Widgets") + init_widget(result, "bottomRightGroupBox") + result.setCheckable(True) + result.setChecked(True) + + lineedit = QLineEdit("s3cRe7") + init_widget(lineedit, "lineEdit") + lineedit.setClearButtonEnabled(True) + lineedit.setEchoMode(QLineEdit.Password) + + spin_box = QSpinBox() + init_widget(spin_box, "spinBox") + spin_box.setValue(50) + + date_timeedit = QDateTimeEdit() + init_widget(date_timeedit, "dateTimeEdit") + date_timeedit.setDateTime(QDateTime.currentDateTime()) + + slider = QSlider() + init_widget(slider, "slider") + slider.setOrientation(Qt.Horizontal) + slider.setValue(40) + + scrollbar = QScrollBar() + init_widget(scrollbar, "scrollBar") + scrollbar.setOrientation(Qt.Horizontal) + scrollbar.setValue(60) + + dial = QDial() + init_widget(dial, "dial") + dial.setValue(30) + dial.setNotchesVisible(True) + + layout = QGridLayout(result) + layout.addWidget(lineedit, 0, 0, 1, 2) + layout.addWidget(spin_box, 1, 0, 1, 2) + layout.addWidget(date_timeedit, 2, 0, 1, 2) + layout.addWidget(slider, 3, 0) + layout.addWidget(scrollbar, 4, 0) + layout.addWidget(dial, 3, 1, 2, 1) + layout.setRowStretch(5, 1) + return result + + def create_progress_bar(self): + result = QProgressBar() + init_widget(result, "progressBar") + result.setRange(0, 10000) + result.setValue(0) + + timer = QTimer(self) + timer.timeout.connect(self.advance_progressbar) + timer.start(1000) + return result + + def update_systeminfo(self): + """Display system information""" + system_info = SYSTEMINFO.format(sys.version, + QLibraryInfo.build(), + QSysInfo.prettyProductName(), + screen_info(self)) + self._systeminfo_textbrowser.setHtml(system_info) + + def help_on_current_widget(self): + """Display help on widget under mouse""" + w = QApplication.widgetAt(QCursor.pos(self.screen())) + while w: # Skip over internal widgets + name = w.objectName() + if name and not name.startswith("qt_"): + launch_help(w) + break + w = w.parentWidget() diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/__pycache__/anchorlayout.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/__pycache__/anchorlayout.cpython-310.pyc new file mode 100644 index 0000000..5098a8c Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/__pycache__/anchorlayout.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/__pycache__/elasticnodes.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/__pycache__/elasticnodes.cpython-310.pyc new file mode 100644 index 0000000..2cfc241 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/__pycache__/elasticnodes.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/anchorlayout.py b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/anchorlayout.py new file mode 100644 index 0000000..f7f4edc --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/anchorlayout.py @@ -0,0 +1,125 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2 import QtCore, QtWidgets + + +def createItem(minimum, preferred, maximum, name): + w = QtWidgets.QGraphicsProxyWidget() + + w.setWidget(QtWidgets.QPushButton(name)) + w.setMinimumSize(minimum) + w.setPreferredSize(preferred) + w.setMaximumSize(maximum) + w.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) + + return w + + +if __name__ == '__main__': + + import sys + + app = QtWidgets.QApplication(sys.argv) + + scene = QtWidgets.QGraphicsScene() + scene.setSceneRect(0, 0, 800, 480) + + minSize = QtCore.QSizeF(30, 100) + prefSize = QtCore.QSizeF(210, 100) + maxSize = QtCore.QSizeF(300, 100) + + a = createItem(minSize, prefSize, maxSize, "A") + b = createItem(minSize, prefSize, maxSize, "B") + c = createItem(minSize, prefSize, maxSize, "C") + d = createItem(minSize, prefSize, maxSize, "D") + e = createItem(minSize, prefSize, maxSize, "E") + f = createItem(QtCore.QSizeF(30, 50), QtCore.QSizeF(150, 50), maxSize, "F") + g = createItem(QtCore.QSizeF(30, 50), QtCore.QSizeF(30, 100), maxSize, "G") + + l = QtWidgets.QGraphicsAnchorLayout() + l.setSpacing(0) + + w = QtWidgets.QGraphicsWidget(None, QtCore.Qt.Window) + w.setPos(20, 20) + w.setLayout(l) + + # Vertical. + l.addAnchor(a, QtCore.Qt.AnchorTop, l, QtCore.Qt.AnchorTop) + l.addAnchor(b, QtCore.Qt.AnchorTop, l, QtCore.Qt.AnchorTop) + + l.addAnchor(c, QtCore.Qt.AnchorTop, a, QtCore.Qt.AnchorBottom) + l.addAnchor(c, QtCore.Qt.AnchorTop, b, QtCore.Qt.AnchorBottom) + l.addAnchor(c, QtCore.Qt.AnchorBottom, d, QtCore.Qt.AnchorTop) + l.addAnchor(c, QtCore.Qt.AnchorBottom, e, QtCore.Qt.AnchorTop) + + l.addAnchor(d, QtCore.Qt.AnchorBottom, l, QtCore.Qt.AnchorBottom) + l.addAnchor(e, QtCore.Qt.AnchorBottom, l, QtCore.Qt.AnchorBottom) + + l.addAnchor(c, QtCore.Qt.AnchorTop, f, QtCore.Qt.AnchorTop) + l.addAnchor(c, QtCore.Qt.AnchorVerticalCenter, f, QtCore.Qt.AnchorBottom) + l.addAnchor(f, QtCore.Qt.AnchorBottom, g, QtCore.Qt.AnchorTop) + l.addAnchor(c, QtCore.Qt.AnchorBottom, g, QtCore.Qt.AnchorBottom) + + # Horizontal. + l.addAnchor(l, QtCore.Qt.AnchorLeft, a, QtCore.Qt.AnchorLeft) + l.addAnchor(l, QtCore.Qt.AnchorLeft, d, QtCore.Qt.AnchorLeft) + l.addAnchor(a, QtCore.Qt.AnchorRight, b, QtCore.Qt.AnchorLeft) + + l.addAnchor(a, QtCore.Qt.AnchorRight, c, QtCore.Qt.AnchorLeft) + l.addAnchor(c, QtCore.Qt.AnchorRight, e, QtCore.Qt.AnchorLeft) + + l.addAnchor(b, QtCore.Qt.AnchorRight, l, QtCore.Qt.AnchorRight) + l.addAnchor(e, QtCore.Qt.AnchorRight, l, QtCore.Qt.AnchorRight) + l.addAnchor(d, QtCore.Qt.AnchorRight, e, QtCore.Qt.AnchorLeft) + + l.addAnchor(l, QtCore.Qt.AnchorLeft, f, QtCore.Qt.AnchorLeft) + l.addAnchor(l, QtCore.Qt.AnchorLeft, g, QtCore.Qt.AnchorLeft) + l.addAnchor(f, QtCore.Qt.AnchorRight, g, QtCore.Qt.AnchorRight) + + scene.addItem(w) + scene.setBackgroundBrush(QtCore.Qt.darkGreen) + + view = QtWidgets.QGraphicsView(scene) + view.show() + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/collidingmice/__pycache__/collidingmice.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/collidingmice/__pycache__/collidingmice.cpython-310.pyc new file mode 100644 index 0000000..ad35dce Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/collidingmice/__pycache__/collidingmice.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/collidingmice/__pycache__/mice_rc.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/collidingmice/__pycache__/mice_rc.cpython-310.pyc new file mode 100644 index 0000000..adddc6b Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/collidingmice/__pycache__/mice_rc.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/collidingmice/collidingmice.py b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/collidingmice/collidingmice.py new file mode 100644 index 0000000..2203cb3 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/collidingmice/collidingmice.py @@ -0,0 +1,218 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +import math + +from PySide2 import QtCore, QtGui, QtWidgets + +import mice_rc + + +def random(boundary): + return QtCore.QRandomGenerator.global_().bounded(boundary) + + +class Mouse(QtWidgets.QGraphicsItem): + Pi = math.pi + TwoPi = 2.0 * Pi + + # Create the bounding rectangle once. + adjust = 0.5 + BoundingRect = QtCore.QRectF(-20 - adjust, -22 - adjust, 40 + adjust, + 83 + adjust) + + def __init__(self): + super(Mouse, self).__init__() + + self.angle = 0.0 + self.speed = 0.0 + self.mouseEyeDirection = 0.0 + self.color = QtGui.QColor(random(256), random(256), random(256)) + + self.setTransform(QtGui.QTransform().rotate(random(360 * 16))) + + # In the C++ version of this example, this class is also derived from + # QObject in order to receive timer events. PySide2 does not support + # deriving from more than one wrapped class so we just create an + # explicit timer instead. + self.timer = QtCore.QTimer() + self.timer.timeout.connect(self.timerEvent) + self.timer.start(1000 / 33) + + @staticmethod + def normalizeAngle(angle): + while angle < 0: + angle += Mouse.TwoPi + while angle > Mouse.TwoPi: + angle -= Mouse.TwoPi + return angle + + def boundingRect(self): + return Mouse.BoundingRect + + def shape(self): + path = QtGui.QPainterPath() + path.addRect(-10, -20, 20, 40) + return path + + def paint(self, painter, option, widget): + # Body. + painter.setBrush(self.color) + painter.drawEllipse(-10, -20, 20, 40) + + # Eyes. + painter.setBrush(QtCore.Qt.white) + painter.drawEllipse(-10, -17, 8, 8) + painter.drawEllipse(2, -17, 8, 8) + + # Nose. + painter.setBrush(QtCore.Qt.black) + painter.drawEllipse(QtCore.QRectF(-2, -22, 4, 4)) + + # Pupils. + painter.drawEllipse(QtCore.QRectF(-8.0 + self.mouseEyeDirection, -17, 4, 4)) + painter.drawEllipse(QtCore.QRectF(4.0 + self.mouseEyeDirection, -17, 4, 4)) + + # Ears. + if self.scene().collidingItems(self): + painter.setBrush(QtCore.Qt.red) + else: + painter.setBrush(QtCore.Qt.darkYellow) + + painter.drawEllipse(-17, -12, 16, 16) + painter.drawEllipse(1, -12, 16, 16) + + # Tail. + path = QtGui.QPainterPath(QtCore.QPointF(0, 20)) + path.cubicTo(-5, 22, -5, 22, 0, 25) + path.cubicTo(5, 27, 5, 32, 0, 30) + path.cubicTo(-5, 32, -5, 42, 0, 35) + painter.setBrush(QtCore.Qt.NoBrush) + painter.drawPath(path) + + def timerEvent(self): + # Don't move too far away. + lineToCenter = QtCore.QLineF(QtCore.QPointF(0, 0), self.mapFromScene(0, 0)) + if lineToCenter.length() > 150: + angleToCenter = math.acos(lineToCenter.dx() / lineToCenter.length()) + if lineToCenter.dy() < 0: + angleToCenter = Mouse.TwoPi - angleToCenter + angleToCenter = Mouse.normalizeAngle((Mouse.Pi - angleToCenter) + Mouse.Pi / 2) + + if angleToCenter < Mouse.Pi and angleToCenter > Mouse.Pi / 4: + # Rotate left. + self.angle += [-0.25, 0.25][self.angle < -Mouse.Pi / 2] + elif angleToCenter >= Mouse.Pi and angleToCenter < (Mouse.Pi + Mouse.Pi / 2 + Mouse.Pi / 4): + # Rotate right. + self.angle += [-0.25, 0.25][self.angle < Mouse.Pi / 2] + elif math.sin(self.angle) < 0: + self.angle += 0.25 + elif math.sin(self.angle) > 0: + self.angle -= 0.25 + + # Try not to crash with any other mice. + dangerMice = self.scene().items(QtGui.QPolygonF([self.mapToScene(0, 0), + self.mapToScene(-30, -50), + self.mapToScene(30, -50)])) + + for item in dangerMice: + if item is self: + continue + + lineToMouse = QtCore.QLineF(QtCore.QPointF(0, 0), self.mapFromItem(item, 0, 0)) + angleToMouse = math.acos(lineToMouse.dx() / lineToMouse.length()) + if lineToMouse.dy() < 0: + angleToMouse = Mouse.TwoPi - angleToMouse + angleToMouse = Mouse.normalizeAngle((Mouse.Pi - angleToMouse) + Mouse.Pi / 2) + + if angleToMouse >= 0 and angleToMouse < Mouse.Pi / 2: + # Rotate right. + self.angle += 0.5 + elif angleToMouse <= Mouse.TwoPi and angleToMouse > (Mouse.TwoPi - Mouse.Pi / 2): + # Rotate left. + self.angle -= 0.5 + + # Add some random movement. + if len(dangerMice) > 1 and (QtCore.qrand() % 10) == 0: + if QtCore.qrand() % 1: + self.angle += random(100) / 500.0 + else: + self.angle -= random(100) / 500.0 + + self.speed += (-50 + random(100)) / 100.0 + + dx = math.sin(self.angle) * 10 + self.mouseEyeDirection = [dx / 5, 0.0][QtCore.qAbs(dx / 5) < 1] + + self.setTransform(QtGui.QTransform().rotate(dx)) + self.setPos(self.mapToParent(0, -(3 + math.sin(self.speed) * 3))) + + +if __name__ == '__main__': + + import sys + + MouseCount = 7 + + app = QtWidgets.QApplication(sys.argv) + + scene = QtWidgets.QGraphicsScene() + scene.setSceneRect(-300, -300, 600, 600) + scene.setItemIndexMethod(QtWidgets.QGraphicsScene.NoIndex) + + for i in range(MouseCount): + mouse = Mouse() + mouse.setPos(math.sin((i * 6.28) / MouseCount) * 200, + math.cos((i * 6.28) / MouseCount) * 200) + scene.addItem(mouse) + + view = QtWidgets.QGraphicsView(scene) + view.setRenderHint(QtGui.QPainter.Antialiasing) + view.setBackgroundBrush(QtGui.QBrush(QtGui.QPixmap(':/images/cheese.jpg'))) + view.setCacheMode(QtWidgets.QGraphicsView.CacheBackground) + view.setViewportUpdateMode(QtWidgets.QGraphicsView.BoundingRectViewportUpdate) + view.setDragMode(QtWidgets.QGraphicsView.ScrollHandDrag) + view.setWindowTitle("Colliding Mice") + view.resize(400, 300) + view.show() + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/collidingmice/collidingmice.pyproject b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/collidingmice/collidingmice.pyproject new file mode 100644 index 0000000..ea58218 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/collidingmice/collidingmice.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["collidingmice.py", "mice_rc.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/collidingmice/mice_rc.py b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/collidingmice/mice_rc.py new file mode 100644 index 0000000..e9042a0 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/collidingmice/mice_rc.py @@ -0,0 +1,271 @@ +# -*- coding: utf-8 -*- + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +# Resource object code +# +# Created: Fri Jul 30 17:52:15 2010 +# by: The Resource Compiler for PySide (Qt v4.6.2) +# +# WARNING! All changes made in this file will be lost! + +from PySide2 import QtCore + +qt_resource_data = b"\ +\x00\x00\x0b\xd5\ +\xff\ +\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x02\x01\x00\x48\x00\ +\x48\x00\x00\xff\xee\x00\x0e\x41\x64\x6f\x62\x65\x00\x64\x40\x00\ +\x00\x00\x01\xff\xdb\x00\x84\x00\x02\x02\x02\x02\x02\x02\x02\x02\ +\x02\x02\x03\x02\x02\x02\x03\x04\x03\x02\x02\x03\x04\x05\x04\x04\ +\x04\x04\x04\x05\x06\x05\x05\x05\x05\x05\x05\x06\x06\x07\x07\x08\ +\x07\x07\x06\x09\x09\x0a\x0a\x09\x09\x0c\x0c\x0c\x0c\x0c\x0c\x0c\ +\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x01\x03\x03\x03\x05\x04\x05\x09\ +\x06\x06\x09\x0d\x0a\x09\x0a\x0d\x0f\x0e\x0e\x0e\x0e\x0f\x0f\x0c\ +\x0c\x0c\x0c\x0c\x0f\x0f\x0c\x0c\x0c\x0c\x0c\x0c\x0f\x0c\x0c\x0c\ +\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\ +\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\xff\xc0\x00\x11\x08\x00\x5e\ +\x00\x5e\x03\x01\x11\x00\x02\x11\x01\x03\x11\x01\xff\xdd\x00\x04\ +\x00\x0c\xff\xc4\x01\xa2\x00\x00\x00\x07\x01\x01\x01\x01\x01\x00\ +\x00\x00\x00\x00\x00\x00\x00\x04\x05\x03\x02\x06\x01\x00\x07\x08\ +\x09\x0a\x0b\x01\x00\x02\x02\x03\x01\x01\x01\x01\x01\x00\x00\x00\ +\x00\x00\x00\x00\x01\x00\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\ +\x10\x00\x02\x01\x03\x03\x02\x04\x02\x06\x07\x03\x04\x02\x06\x02\ +\x73\x01\x02\x03\x11\x04\x00\x05\x21\x12\x31\x41\x51\x06\x13\x61\ +\x22\x71\x81\x14\x32\x91\xa1\x07\x15\xb1\x42\x23\xc1\x52\xd1\xe1\ +\x33\x16\x62\xf0\x24\x72\x82\xf1\x25\x43\x34\x53\x92\xa2\xb2\x63\ +\x73\xc2\x35\x44\x27\x93\xa3\xb3\x36\x17\x54\x64\x74\xc3\xd2\xe2\ +\x08\x26\x83\x09\x0a\x18\x19\x84\x94\x45\x46\xa4\xb4\x56\xd3\x55\ +\x28\x1a\xf2\xe3\xf3\xc4\xd4\xe4\xf4\x65\x75\x85\x95\xa5\xb5\xc5\ +\xd5\xe5\xf5\x66\x76\x86\x96\xa6\xb6\xc6\xd6\xe6\xf6\x37\x47\x57\ +\x67\x77\x87\x97\xa7\xb7\xc7\xd7\xe7\xf7\x38\x48\x58\x68\x78\x88\ +\x98\xa8\xb8\xc8\xd8\xe8\xf8\x29\x39\x49\x59\x69\x79\x89\x99\xa9\ +\xb9\xc9\xd9\xe9\xf9\x2a\x3a\x4a\x5a\x6a\x7a\x8a\x9a\xaa\xba\xca\ +\xda\xea\xfa\x11\x00\x02\x02\x01\x02\x03\x05\x05\x04\x05\x06\x04\ +\x08\x03\x03\x6d\x01\x00\x02\x11\x03\x04\x21\x12\x31\x41\x05\x51\ +\x13\x61\x22\x06\x71\x81\x91\x32\xa1\xb1\xf0\x14\xc1\xd1\xe1\x23\ +\x42\x15\x52\x62\x72\xf1\x33\x24\x34\x43\x82\x16\x92\x53\x25\xa2\ +\x63\xb2\xc2\x07\x73\xd2\x35\xe2\x44\x83\x17\x54\x93\x08\x09\x0a\ +\x18\x19\x26\x36\x45\x1a\x27\x64\x74\x55\x37\xf2\xa3\xb3\xc3\x28\ +\x29\xd3\xe3\xf3\x84\x94\xa4\xb4\xc4\xd4\xe4\xf4\x65\x75\x85\x95\ +\xa5\xb5\xc5\xd5\xe5\xf5\x46\x56\x66\x76\x86\x96\xa6\xb6\xc6\xd6\ +\xe6\xf6\x47\x57\x67\x77\x87\x97\xa7\xb7\xc7\xd7\xe7\xf7\x38\x48\ +\x58\x68\x78\x88\x98\xa8\xb8\xc8\xd8\xe8\xf8\x39\x49\x59\x69\x79\ +\x89\x99\xa9\xb9\xc9\xd9\xe9\xf9\x2a\x3a\x4a\x5a\x6a\x7a\x8a\x9a\ +\xaa\xba\xca\xda\xea\xfa\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\ +\x11\x00\x3f\x00\xfb\x41\xd3\x6f\xa2\x87\xc7\x3c\x37\x89\xe9\xd4\ +\xe9\xe2\x6b\x90\x29\x6e\xa3\x72\x4d\x0d\x0f\x8f\xf0\xc8\x82\xa5\ +\xb2\x41\x5a\x86\xfa\x46\xf9\x22\x37\x50\xa6\x63\xe5\xe2\x76\xf9\ +\x60\xe4\x95\xc1\x48\xd8\x74\x3d\x46\x0b\x56\xa4\x9a\x18\x14\x31\ +\x60\xa4\xec\x6b\xe3\x92\x1b\xa0\xac\x49\x92\x51\x1b\x02\xad\xc8\ +\x91\xb7\xea\xc2\x84\x34\xaf\xc5\x8e\xfb\x77\xc9\x81\x6c\x49\x62\ +\x3a\xaf\x9e\x3c\xbf\xa3\xcc\x6d\xee\xef\x2b\x38\x34\x68\x61\x1e\ +\xa3\x03\xfe\x55\x36\x1f\x7e\x3c\x51\x09\x11\x94\x91\xfa\x47\x9a\ +\xb4\x9d\x6e\xa9\x61\x75\xce\x50\x2a\x60\x70\x51\xe9\xec\x0f\x5f\ +\xa3\x11\x38\xc8\xd2\x0c\x65\x16\x48\x25\x3c\x5b\x7f\x0c\x4c\x37\ +\x5e\x2d\x9f\xff\xd0\xfb\x3a\xfb\x0a\xee\x4d\x6b\x4c\xf0\xb0\x1e\ +\xa1\x6f\x2d\xfa\x6e\x71\x21\x34\xb8\x11\x5e\x9b\xe4\x50\xd3\x53\ +\xa7\x8e\xe7\x25\x6a\xda\xd0\xee\x48\x03\xc7\x04\x95\x4e\x59\x12\ +\x15\x2e\xce\x02\x81\x52\x7e\x59\x00\x2d\x2f\x9c\xbf\x36\xbc\xc7\ +\xa8\x98\xa5\x5d\x1f\xce\x9a\x7e\x8f\x67\x14\x6c\xb7\x36\xf1\xd5\ +\xef\x5d\xc8\x20\x08\xe8\x0f\x1a\xd7\xae\xc4\x65\xb8\xf2\x00\x6a\ +\x89\xfb\x99\xc6\x16\x37\x67\x9f\x93\xcf\xa8\xdc\xf9\x2a\xda\xe2\ +\xfe\x49\xa6\x9d\xee\x65\x58\xee\x2e\x09\x77\x68\xd4\x2d\x0d\x4e\ +\xf5\xa9\x3d\x72\x73\x02\xb8\xbb\xda\xe5\xb4\xa9\x96\xf9\xa2\x6b\ +\x8b\x2d\x12\xfa\xea\xdc\x11\x3d\x38\x44\x47\x50\x5b\x6a\xfd\x19\ +\x5c\xe5\x51\xd9\x61\x1e\x29\x51\x7c\xdf\x17\x97\xda\xf2\x43\x35\ +\xc2\x16\x66\x35\x24\xd4\xd0\x93\x95\x44\x97\x22\x42\x99\x5e\x9b\ +\xa3\x5c\xe9\x77\x56\xd7\x56\xfc\x97\x83\x06\x53\x4e\x84\x65\x73\ +\xca\x8e\x0b\x7b\xbf\xac\x46\x9e\x2f\x3d\x3d\xcc\x3e\xa7\xa7\xef\ +\x4e\x9f\x7e\x65\xf8\x9e\x9e\x2f\x27\x13\x87\x7a\x7f\xff\xd1\xfb\ +\x3f\x4a\xed\xd4\xf6\xcf\x0b\xa7\xa8\x51\x79\x15\x3f\xd6\x3d\xb0\ +\x88\x71\x2d\xd2\x81\x9a\x84\x16\x6a\x7b\x64\xbc\x26\x06\x61\xc6\ +\x70\x4a\x91\x4a\x74\x22\x98\xf8\x74\x8e\x30\x55\xd4\x87\x07\x6e\ +\xdb\x8c\x8f\x0b\x3b\x40\xde\xda\x0b\x88\x9a\x16\x62\x12\x4a\x83\ +\xc4\xd1\xa8\x7c\x0e\xf9\x20\x05\xee\xac\x15\xbf\x2b\x7c\xb5\x3d\ +\xe0\xbb\x9e\x59\x1b\xe2\xe4\xc8\x62\x42\xff\x00\x21\x25\x4f\xdf\ +\xc7\x2c\x88\xc5\xd6\xfd\xcc\xbc\x49\x8e\x54\xf4\x6b\x2b\x5b\x2d\ +\x3a\xd6\x1b\x2b\x0b\x65\xb6\xb4\x80\x11\x1c\x29\xfe\x51\xab\x13\ +\xee\x4e\xe7\x21\x96\x7c\x67\x95\x00\xc0\x0e\xa7\x9a\xdd\x4e\xca\ +\x3d\x4e\xc2\xe6\xcd\xb6\x12\x80\x50\x9e\xcc\x37\x15\xca\xc4\x44\ +\xbd\x27\xab\x21\x23\x13\x61\x85\x69\xbe\x5c\x92\xdd\xbd\x3b\x8b\ +\x76\x4a\x1d\xd5\xc6\xff\x00\xdb\x98\xd9\x23\x2c\x47\x84\xb9\x3c\ +\x42\x7b\xb2\xdf\xd0\x29\x38\x58\x91\x15\x55\x57\x76\x3f\x65\x47\ +\x72\x4f\xb6\x47\x06\x9a\x59\x32\xd0\x3b\x75\x3d\xc1\xae\x79\xc4\ +\x42\x61\xe9\xdb\x95\x16\xf4\xff\x00\x47\x54\xf4\xf9\x53\xf6\x69\ +\xc7\x95\x3f\x1c\xd8\xdc\x38\xab\xf8\x7f\x43\x8b\x52\xab\xea\xff\ +\x00\xff\xd2\xfb\x3e\x0f\x2d\x80\xa9\xcf\x0a\xb7\xa8\x4a\x2f\xe7\ +\x8e\xda\x39\xee\x66\x71\x1c\x50\x21\x79\x1c\xf4\x01\x45\x49\x39\ +\x7c\x48\x02\xcb\x59\xb2\x68\x3e\x52\xf3\x27\xe6\x7f\x9a\xf5\x4b\ +\xe9\x62\xd0\x49\xd3\x6c\x51\x88\x8d\xd2\x9e\xab\x81\xdd\x9c\x83\ +\xd7\xc0\x65\x3e\x29\x9f\x5a\x72\x23\x86\x31\xe7\xba\x71\xe5\x5f\ +\x3e\x79\xa2\xd6\xee\x08\xf5\x8b\x87\xbe\xb5\x94\x81\x22\x4c\x01\ +\x60\x0f\x52\xac\x05\x76\xf7\xc8\x1c\x86\x06\xed\x12\xc4\x25\xc8\ +\x53\xe9\x9b\x49\x96\x45\x8a\x68\xdb\x9c\x52\x85\x64\x61\xd0\xa9\ +\x1b\x66\x41\x20\x8b\x0e\x3c\x6c\x1a\x4c\x4d\x08\x3b\x74\x39\x53\ +\x6a\xd0\xb4\xad\x0d\x3d\xb0\x5a\xb7\xb8\x20\x56\x83\x1b\x55\xe2\ +\x4e\x3d\x45\x6a\x30\x91\x6a\xa1\x15\xed\xd4\x44\x8a\x2c\xb1\x8f\ +\xb0\x8e\xa1\xa9\xf2\xae\xf9\x31\x9a\x63\x6d\x8f\xbc\x02\xd6\x60\ +\x3d\xcb\xa4\xbc\xbc\xb9\xf8\x5d\xb8\x45\xfc\x8a\x02\x83\xf3\x00\ +\x63\x3c\xb2\x90\xa3\xb0\xee\x00\x01\xf6\x2c\x71\x81\xc9\xc6\x36\ +\xe2\x14\x1d\x89\xf8\xbe\xef\xeb\x95\x58\x6c\xa7\xff\xd3\xfb\x3c\ +\xa4\x0e\x9b\x30\xf0\xcf\x07\xb7\xa9\x48\xfc\xc9\x66\xf7\xbe\x5f\ +\xd6\xe0\x88\x16\x96\x58\x1b\x8a\x8e\xa4\x0a\x13\xf8\x64\xc8\x33\ +\x89\x01\x61\xb4\xc1\x2f\x9e\x34\x6f\x29\x2b\x86\x01\x0a\x90\x76\ +\x04\x6f\x53\x98\xd0\x90\xe4\x79\xb9\x99\x3c\x99\xef\xf8\x20\x08\ +\x22\x67\x00\x48\xa7\x96\xc3\x31\x67\x9a\xe7\xc3\xd1\x63\x10\x05\ +\xbd\x3f\x46\xb2\x7b\x4d\x26\xc6\x19\x3e\xd8\x5a\xa8\x3d\x81\x35\ +\x19\xb5\x84\x0c\x31\x80\x7b\x9d\x7c\x88\x33\x34\x9b\x00\x6a\x7a\ +\xef\x4e\x4d\xef\xed\x90\x3c\x99\x86\xb8\x35\x09\x00\x91\x5a\x57\ +\xb7\xcb\x10\x0f\x35\xb5\x8c\xac\x0d\x6b\x81\x2d\xa9\xad\x01\xf0\ +\x39\x24\x2e\xe3\x4e\x84\x0f\x0e\xf8\x15\x7d\x48\x1e\x07\x25\x41\ +\x5d\xc8\xd4\xf8\xf8\xd7\x23\x4a\xff\x00\xff\xd4\xfb\x43\xc9\x29\ +\xd8\x1c\xf0\x7a\x7a\x85\x1e\x7f\x1f\x7a\x74\x20\xf4\xc9\xc4\xf0\ +\x9b\x1c\xd4\x8b\x4b\xad\xb4\x7d\x14\x4e\xed\x0c\xbf\x55\x94\xb1\ +\x66\x8e\x5a\x94\xff\x00\x60\xc0\x7e\x07\x27\x9b\x06\x3c\xfb\xc6\ +\x5c\x27\xb8\xdd\x7c\x08\xfd\x2b\x1c\xd2\x86\xc4\x5a\x7f\x27\xe8\ +\xab\x60\xbe\xa4\xab\x78\xca\x28\x21\x8c\x1a\x13\xdb\x93\x35\x36\ +\xc4\x69\xf1\x42\x62\x52\x90\xc9\x5d\x22\x0e\xfe\xf2\x40\x6a\xf1\ +\x72\x4f\x90\xaf\x34\x2a\xb3\xdc\xb9\x9d\xf8\xaa\xb1\x3c\x40\xd8\ +\x7c\x80\xf0\x18\x72\xe4\x96\x42\x65\x2e\x65\x94\x00\x88\xa0\xaa\ +\x40\x3f\x3e\x94\xca\x3a\x33\x73\x31\x20\x06\xdc\x2e\xca\xb5\xfd\ +\x58\x6c\xf5\x45\x21\xdc\x6f\xb0\x26\xa7\x14\xac\x0a\x7a\xd7\xe5\ +\x8a\x55\x14\x13\xd0\xf6\xeb\x8d\xa1\x7d\x09\x34\x1d\xf0\xda\xb8\ +\xc4\x79\xaa\x72\x52\x4f\x5d\xf6\x1f\x4f\x4c\x3c\x3b\xd5\xa3\x89\ +\xff\xd5\xfb\x38\xc0\xd6\xa3\xae\x78\x5d\xbd\x42\x93\x47\x5e\x84\ +\xd7\xb9\xc4\x2a\x80\xb7\x5d\xd9\xb6\x35\xdb\xc4\xe2\x00\x28\x56\ +\x48\xa0\x5f\x89\xba\xf8\x9d\xf2\x44\x1e\x8c\x78\x82\x36\xaa\x63\ +\xa2\x80\x05\x36\x23\x23\xcd\x92\x9f\xa8\x54\x7c\x40\x9d\xfa\xe2\ +\x60\x96\xea\x5c\xf1\x14\x1f\x3d\xce\x42\x92\xba\xaa\x2a\xa4\xd7\ +\xdf\x0f\x0a\x16\x54\x03\x4a\x54\x7b\x63\x4a\xbb\x9d\x77\x51\xb7\ +\x6c\x95\x2a\xe0\x6b\xfe\x4b\x78\x64\x24\x15\xdb\xd4\x6f\xf4\x60\ +\x57\xff\xd6\xfb\x3d\x51\xd7\x7f\x96\x78\x53\xd4\x2f\x24\x71\x24\ +\x6c\x69\xd3\x01\xd9\x52\x8d\x6e\x4b\x8b\x7d\x1b\x51\xbb\xb3\xa1\ +\xba\x86\x12\x6d\xc1\x1b\x06\x62\x00\x34\xf6\xad\x72\x32\x91\x11\ +\x24\x26\x31\x12\x90\x05\xe2\xba\x66\x87\xe6\x68\xee\x06\xaa\x35\ +\x3b\xc9\xae\x39\x09\x24\x32\x48\xc5\x18\x1e\xa2\x84\xd2\x9e\xd8\ +\x80\x40\x07\xab\x74\xa2\x39\x3d\xe2\xd4\xb9\x86\x27\x91\x78\x34\ +\x88\xae\xc9\xe0\x58\x54\x8c\xc8\xc9\xb5\x17\x16\x2a\xc6\x87\xae\ +\xf4\x34\xca\xec\xb3\x52\x63\xc7\x7a\x6e\x7b\xe2\x16\xd4\x4c\xbd\ +\x87\x5c\xb0\x06\x04\xb4\x26\x00\xd0\xb6\xfe\x03\x1e\x04\x71\xaf\ +\xf5\x96\x94\xaf\xd1\x80\xc1\x22\x6a\xab\x29\x24\x50\x8e\xbb\xe4\ +\x08\xa6\x56\xa6\x25\x23\x9a\x92\x79\x12\x29\x91\xa5\x7f\xff\xd7\ +\xfb\x3b\xd0\x50\x1a\x0f\xc7\x3c\x2a\xde\xa1\x50\x50\xfb\xf5\xc4\ +\xab\xa4\x55\x28\x41\x5e\x4a\xc0\x86\x53\xd0\x82\x28\x41\xc6\x04\ +\x83\x61\x05\x0f\x6e\xf6\xd1\x47\xe9\xc3\x61\x46\xaf\xd9\x67\xe4\ +\x83\xe8\xa5\x4f\xdf\x99\x7e\x2e\x21\xbf\x0e\xfe\xfd\xbf\x1f\x16\ +\x24\x4c\xf5\x54\x53\x23\x33\x99\x00\x24\xb6\xd4\x1e\xd9\x8b\x93\ +\x27\x19\xbe\xac\x80\xa6\x85\x6a\x46\xd5\x34\x60\xbd\xc7\xcf\x01\ +\xe4\x94\x35\xc1\x22\x83\xb9\xe9\x92\xc7\xbb\x19\x30\x2f\x38\xf9\ +\xc2\xc7\xca\x76\x42\x7b\xa0\xd3\x5c\x4b\x51\x6d\x6a\x86\x8d\x21\ +\x1d\x6a\x7f\x65\x45\x7a\xe5\xb2\x98\x80\xf3\x63\x08\x19\x97\xcf\ +\xf2\xfe\x73\xf9\xa6\xe6\xea\x96\x91\x43\x6b\x6b\x5f\x86\x31\x0f\ +\x30\x07\xbb\x31\xa9\xca\x8c\xe6\x7a\xb7\x8c\x31\x0f\x52\xf2\x6f\ +\xe6\x3c\xfa\xc4\xf1\x58\xea\xf0\xa4\x72\xcc\x42\xc5\x73\x10\x2a\ +\x39\x1e\x81\x94\x93\x4a\xf8\x8c\x11\xcc\x41\xa9\x35\xcf\x10\xab\ +\x0f\x64\x8d\x8a\xb0\x27\xa5\x77\x19\x74\xe3\xb3\x54\x64\x8d\xf4\ +\x96\xb5\xed\x4e\x99\x8e\xdc\xff\x00\xff\xd0\xfb\x34\xca\xdb\x1e\ +\xfd\xc6\x78\x43\xd4\xb6\x8c\x41\x5a\x91\xd6\xa7\x24\x82\xa8\x4f\ +\x26\x00\x12\x40\xaf\xb0\xdb\x02\xaf\xf8\x54\x6f\x40\x72\x2a\xb4\ +\x02\xcd\x55\x0d\x41\xd4\xf8\x7b\xe2\x02\x57\x15\xa7\x41\xd7\xae\ +\x1e\x88\x43\xbc\x6d\x2b\x2d\x0d\x46\xe3\x6c\xb3\x19\x63\x37\xcb\ +\xbf\x99\xb6\x37\x3a\x8f\x9a\x65\x88\x82\xd6\xd6\xa1\x62\x44\xeb\ +\x40\x00\x3f\x89\x39\x8b\x92\x77\x37\x37\x0c\x00\xc6\x12\x4b\x1f\ +\x2c\x8a\x46\x1a\x1d\x9b\x75\xf0\xcb\x2c\xc4\x30\x20\x5b\x21\x87\ +\xcb\x32\x59\xdc\x45\x3c\x51\xb2\x0d\x89\xa7\x6a\x66\x2c\xf3\x71\ +\x36\x08\x3e\x85\xd2\x7d\x5b\x8d\x2e\xd2\x69\x7f\xbd\x31\x81\x21\ +\xf1\x23\xbe\x6c\x71\x4a\xf1\x82\x5d\x7c\xc5\x4a\x93\x7e\x27\xd3\ +\xfa\x32\xbe\xad\x8f\xff\xd1\xfb\x39\x2d\x06\xfc\x4e\x78\x43\xd4\ +\x30\x2f\x32\x6b\x5e\x65\xb0\xd4\xf4\xfb\x2d\x0b\x46\x8b\x51\x8a\ +\x78\xda\x7b\xb9\xa6\x76\x50\x15\x5b\x8f\x08\xf8\xfe\xd6\xd5\xa9\ +\xf6\xc6\x79\x04\x06\xec\xa3\x8c\xcb\xab\x3f\xb5\x76\x78\x91\x9d\ +\x0a\x3d\x01\x74\x3d\x41\x22\xb4\x3e\xe3\x24\x46\xec\x02\xb9\x41\ +\xb9\x1d\x70\x14\xb6\xa0\x70\x55\x0c\x76\xdf\x7f\xd7\x86\x90\xef\ +\x87\xa7\x8f\x51\x80\xec\x97\x72\xe2\x00\x34\xc3\x19\x20\x87\x99\ +\x79\xc3\xcb\x6b\x75\xa8\x26\xab\x14\x6c\xde\xb5\x04\xe5\x77\x2a\ +\xe0\x01\x53\xec\x72\x59\xf4\xfc\x51\xe3\x8f\xc7\xcb\xf6\x16\xec\ +\x19\xab\xd2\x51\x5a\x46\x86\x84\xa7\xab\x0e\xe2\x82\x94\xa8\xda\ +\x9e\x1f\x2c\xc0\xe3\x32\x3c\x37\xbb\x71\xa1\xbb\x27\x6d\x01\xae\ +\x5c\x45\x14\x7c\x98\xec\x06\xd4\x1f\x4f\x86\x43\x49\xa3\x9e\x4c\ +\xfc\x11\xde\xcf\xf6\xb0\xc9\xa9\x88\x8d\x94\xcf\xd2\x8a\x08\xe2\ +\xb4\x82\x8f\x1d\xba\x88\xc3\xff\x00\x37\x11\xc4\x9f\xa6\x99\xb8\ +\xcd\xc1\x13\xc3\x0e\x43\x6f\x96\xdf\x6f\x37\x06\x16\x77\x3d\x55\ +\x39\x1a\xd3\x8f\x4d\xa9\x98\xf6\xdd\x4f\xff\xd2\xfb\x3c\x69\xc8\ +\xf5\x23\xbe\x78\x4e\xcf\x50\xd0\xe4\x5c\x7a\x5e\xa2\xb5\x0e\xc9\ +\xe1\xf4\x54\xe4\xa3\x7d\x11\x2a\xea\xbd\x00\xe3\x50\x41\xf6\xc8\ +\xa5\x78\xe7\xe1\x51\xf4\x62\x50\xb8\xd6\x83\xae\x05\x51\x25\xb9\ +\x8a\x83\xf3\xed\x85\x2b\x8f\x2a\x0c\x21\x0e\x53\x74\x18\x9b\x55\ +\xe4\xc3\xed\x03\x4e\x05\x7b\xf2\xe5\xb5\x3e\x79\x93\xa7\x39\x2f\ +\xd1\xf1\xee\xf8\xf4\x61\x3e\x1a\xdd\x5e\xda\xea\xdc\x90\x65\xd3\ +\x14\x4c\x2b\xc8\x24\xd4\x42\x7c\x77\xe4\x47\xdf\x95\x9c\xda\x7e\ +\x2b\x9e\x3b\x3b\xdd\x48\x81\xfa\x7e\xc2\x89\x47\x2d\x7d\x5b\x7b\ +\x95\x27\x9f\x50\x96\x29\xbe\xa9\x64\x96\xd6\xe1\x7f\x7d\xe9\xba\ +\xbb\xf1\xef\x53\xca\xb4\xf1\xa0\xc9\xe3\x99\x9c\x25\xe1\x44\x46\ +\x35\xbd\x6f\x2a\xeb\x77\xbf\xbe\x80\x0d\x62\x20\x11\xc4\x49\x3e\ +\x69\x64\x03\xe2\x1c\x8f\xc5\xe1\x94\x1a\xa7\x21\x19\xf0\xd4\x65\ +\x69\x7f\xff\xd9\ +" + +qt_resource_name = b"\ +\x00\x06\ +\x07\x03\x7d\xc3\ +\x00\x69\ +\x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ +\x00\x0a\ +\x0c\x9d\x6c\x07\ +\x00\x63\ +\x00\x68\x00\x65\x00\x65\x00\x73\x00\x65\x00\x2e\x00\x6a\x00\x70\x00\x67\ +" + +qt_resource_struct = b"\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ +\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ +" + +def qInitResources(): + QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) + +def qCleanupResources(): + QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) + +qInitResources() diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/__pycache__/diagramscene.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/__pycache__/diagramscene.cpython-310.pyc new file mode 100644 index 0000000..f3767d6 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/__pycache__/diagramscene.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/__pycache__/diagramscene_rc.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/__pycache__/diagramscene_rc.cpython-310.pyc new file mode 100644 index 0000000..cbf480b Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/__pycache__/diagramscene_rc.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/diagramscene.py b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/diagramscene.py new file mode 100644 index 0000000..3890782 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/diagramscene.py @@ -0,0 +1,824 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +import math + +from PySide2 import QtCore, QtGui, QtWidgets + +import diagramscene_rc + + +class Arrow(QtWidgets.QGraphicsLineItem): + def __init__(self, startItem, endItem, parent=None, scene=None): + super(Arrow, self).__init__(parent, scene) + + self.arrowHead = QtGui.QPolygonF() + + self.myStartItem = startItem + self.myEndItem = endItem + self.setFlag(QtWidgets.QGraphicsItem.ItemIsSelectable, True) + self.myColor = QtCore.Qt.black + self.setPen(QtGui.QPen(self.myColor, 2, QtCore.Qt.SolidLine, + QtCore.Qt.RoundCap, QtCore.Qt.RoundJoin)) + + def setColor(self, color): + self.myColor = color + + def startItem(self): + return self.myStartItem + + def endItem(self): + return self.myEndItem + + def boundingRect(self): + extra = (self.pen().width() + 20) / 2.0 + p1 = self.line().p1() + p2 = self.line().p2() + return QtCore.QRectF(p1, QtCore.QSizeF(p2.x() - p1.x(), p2.y() - p1.y())).normalized().adjusted(-extra, -extra, extra, extra) + + def shape(self): + path = super(Arrow, self).shape() + path.addPolygon(self.arrowHead) + return path + + def updatePosition(self): + line = QtCore.QLineF(self.mapFromItem(self.myStartItem, 0, 0), self.mapFromItem(self.myEndItem, 0, 0)) + self.setLine(line) + + def paint(self, painter, option, widget=None): + if (self.myStartItem.collidesWithItem(self.myEndItem)): + return + + myStartItem = self.myStartItem + myEndItem = self.myEndItem + myColor = self.myColor + myPen = self.pen() + myPen.setColor(self.myColor) + arrowSize = 20.0 + painter.setPen(myPen) + painter.setBrush(self.myColor) + + centerLine = QtCore.QLineF(myStartItem.pos(), myEndItem.pos()) + endPolygon = myEndItem.polygon() + p1 = endPolygon.at(0) + myEndItem.pos() + + intersectPoint = QtCore.QPointF() + for i in endPolygon: + p2 = i + myEndItem.pos() + polyLine = QtCore.QLineF(p1, p2) + intersectType, intersectPoint = polyLine.intersect(centerLine) + if intersectType == QtCore.QLineF.BoundedIntersection: + break + p1 = p2 + + self.setLine(QtCore.QLineF(intersectPoint, myStartItem.pos())) + line = self.line() + + angle = math.acos(line.dx() / line.length()) + if line.dy() >= 0: + angle = (math.pi * 2.0) - angle + + arrowP1 = line.p1() + QtCore.QPointF(math.sin(angle + math.pi / 3.0) * arrowSize, + math.cos(angle + math.pi / 3) * arrowSize) + arrowP2 = line.p1() + QtCore.QPointF(math.sin(angle + math.pi - math.pi / 3.0) * arrowSize, + math.cos(angle + math.pi - math.pi / 3.0) * arrowSize) + + self.arrowHead.clear() + for point in [line.p1(), arrowP1, arrowP2]: + self.arrowHead.append(point) + + painter.drawLine(line) + painter.drawPolygon(self.arrowHead) + if self.isSelected(): + painter.setPen(QtGui.QPen(myColor, 1, QtCore.Qt.DashLine)) + myLine = QtCore.QLineF(line) + myLine.translate(0, 4.0) + painter.drawLine(myLine) + myLine.translate(0,-8.0) + painter.drawLine(myLine) + + +class DiagramTextItem(QtWidgets.QGraphicsTextItem): + lostFocus = QtCore.Signal(QtWidgets.QGraphicsTextItem) + + selectedChange = QtCore.Signal(QtWidgets.QGraphicsItem) + + def __init__(self, parent=None, scene=None): + super(DiagramTextItem, self).__init__(parent, scene) + + self.setFlag(QtWidgets.QGraphicsItem.ItemIsMovable) + self.setFlag(QtWidgets.QGraphicsItem.ItemIsSelectable) + + def itemChange(self, change, value): + if change == QtWidgets.QGraphicsItem.ItemSelectedChange: + self.selectedChange.emit(self) + return value + + def focusOutEvent(self, event): + self.setTextInteractionFlags(QtCore.Qt.NoTextInteraction) + self.lostFocus.emit(self) + super(DiagramTextItem, self).focusOutEvent(event) + + def mouseDoubleClickEvent(self, event): + if self.textInteractionFlags() == QtCore.Qt.NoTextInteraction: + self.setTextInteractionFlags(QtCore.Qt.TextEditorInteraction) + super(DiagramTextItem, self).mouseDoubleClickEvent(event) + + +class DiagramItem(QtWidgets.QGraphicsPolygonItem): + Step, Conditional, StartEnd, Io = range(4) + + def __init__(self, diagramType, contextMenu, parent=None, scene=None): + super(DiagramItem, self).__init__(parent, scene) + + self.arrows = [] + + self.diagramType = diagramType + self.myContextMenu = contextMenu + + path = QtGui.QPainterPath() + if self.diagramType == self.StartEnd: + path.moveTo(200, 50) + path.arcTo(150, 0, 50, 50, 0, 90) + path.arcTo(50, 0, 50, 50, 90, 90) + path.arcTo(50, 50, 50, 50, 180, 90) + path.arcTo(150, 50, 50, 50, 270, 90) + path.lineTo(200, 25) + self.myPolygon = path.toFillPolygon() + elif self.diagramType == self.Conditional: + self.myPolygon = QtGui.QPolygonF([ + QtCore.QPointF(-100, 0), QtCore.QPointF(0, 100), + QtCore.QPointF(100, 0), QtCore.QPointF(0, -100), + QtCore.QPointF(-100, 0)]) + elif self.diagramType == self.Step: + self.myPolygon = QtGui.QPolygonF([ + QtCore.QPointF(-100, -100), QtCore.QPointF(100, -100), + QtCore.QPointF(100, 100), QtCore.QPointF(-100, 100), + QtCore.QPointF(-100, -100)]) + else: + self.myPolygon = QtGui.QPolygonF([ + QtCore.QPointF(-120, -80), QtCore.QPointF(-70, 80), + QtCore.QPointF(120, 80), QtCore.QPointF(70, -80), + QtCore.QPointF(-120, -80)]) + + self.setPolygon(self.myPolygon) + self.setFlag(QtWidgets.QGraphicsItem.ItemIsMovable, True) + self.setFlag(QtWidgets.QGraphicsItem.ItemIsSelectable, True) + + def removeArrow(self, arrow): + try: + self.arrows.remove(arrow) + except ValueError: + pass + + def removeArrows(self): + for arrow in self.arrows[:]: + arrow.startItem().removeArrow(arrow) + arrow.endItem().removeArrow(arrow) + self.scene().removeItem(arrow) + + def addArrow(self, arrow): + self.arrows.append(arrow) + + def image(self): + pixmap = QtGui.QPixmap(250, 250) + pixmap.fill(QtCore.Qt.transparent) + painter = QtGui.QPainter(pixmap) + painter.setPen(QtGui.QPen(QtCore.Qt.black, 8)) + painter.translate(125, 125) + painter.drawPolyline(self.myPolygon) + return pixmap + + def contextMenuEvent(self, event): + self.scene().clearSelection() + self.setSelected(True) + self.myContextMenu.exec_(event.screenPos()) + + def itemChange(self, change, value): + if change == QtWidgets.QGraphicsItem.ItemPositionChange: + for arrow in self.arrows: + arrow.updatePosition() + + return value + + +class DiagramScene(QtWidgets.QGraphicsScene): + InsertItem, InsertLine, InsertText, MoveItem = range(4) + + itemInserted = QtCore.Signal(DiagramItem) + + textInserted = QtCore.Signal(QtWidgets.QGraphicsTextItem) + + itemSelected = QtCore.Signal(QtWidgets.QGraphicsItem) + + def __init__(self, itemMenu, parent=None): + super(DiagramScene, self).__init__(parent) + + self.myItemMenu = itemMenu + self.myMode = self.MoveItem + self.myItemType = DiagramItem.Step + self.line = None + self.textItem = None + self.myItemColor = QtCore.Qt.white + self.myTextColor = QtCore.Qt.black + self.myLineColor = QtCore.Qt.black + self.myFont = QtGui.QFont() + + def setLineColor(self, color): + self.myLineColor = color + if self.isItemChange(Arrow): + item = self.selectedItems()[0] + item.setColor(self.myLineColor) + self.update() + + def setTextColor(self, color): + self.myTextColor = color + if self.isItemChange(DiagramTextItem): + item = self.selectedItems()[0] + item.setDefaultTextColor(self.myTextColor) + + def setItemColor(self, color): + self.myItemColor = color + if self.isItemChange(DiagramItem): + item = self.selectedItems()[0] + item.setBrush(self.myItemColor) + + def setFont(self, font): + self.myFont = font + if self.isItemChange(DiagramTextItem): + item = self.selectedItems()[0] + item.setFont(self.myFont) + + def setMode(self, mode): + self.myMode = mode + + def setItemType(self, type): + self.myItemType = type + + def editorLostFocus(self, item): + cursor = item.textCursor() + cursor.clearSelection() + item.setTextCursor(cursor) + + if not item.toPlainText(): + self.removeItem(item) + item.deleteLater() + + def mousePressEvent(self, mouseEvent): + if (mouseEvent.button() != QtCore.Qt.LeftButton): + return + + if self.myMode == self.InsertItem: + item = DiagramItem(self.myItemType, self.myItemMenu) + item.setBrush(self.myItemColor) + self.addItem(item) + item.setPos(mouseEvent.scenePos()) + self.itemInserted.emit(item) + elif self.myMode == self.InsertLine: + self.line = QtWidgets.QGraphicsLineItem(QtCore.QLineF(mouseEvent.scenePos(), + mouseEvent.scenePos())) + self.line.setPen(QtGui.QPen(self.myLineColor, 2)) + self.addItem(self.line) + elif self.myMode == self.InsertText: + textItem = DiagramTextItem() + textItem.setFont(self.myFont) + textItem.setTextInteractionFlags(QtCore.Qt.TextEditorInteraction) + textItem.setZValue(1000.0) + textItem.lostFocus.connect(self.editorLostFocus) + textItem.selectedChange.connect(self.itemSelected) + self.addItem(textItem) + textItem.setDefaultTextColor(self.myTextColor) + textItem.setPos(mouseEvent.scenePos()) + self.textInserted.emit(textItem) + + super(DiagramScene, self).mousePressEvent(mouseEvent) + + def mouseMoveEvent(self, mouseEvent): + if self.myMode == self.InsertLine and self.line: + newLine = QtCore.QLineF(self.line.line().p1(), mouseEvent.scenePos()) + self.line.setLine(newLine) + elif self.myMode == self.MoveItem: + super(DiagramScene, self).mouseMoveEvent(mouseEvent) + + def mouseReleaseEvent(self, mouseEvent): + if self.line and self.myMode == self.InsertLine: + startItems = self.items(self.line.line().p1()) + if len(startItems) and startItems[0] == self.line: + startItems.pop(0) + endItems = self.items(self.line.line().p2()) + if len(endItems) and endItems[0] == self.line: + endItems.pop(0) + + self.removeItem(self.line) + self.line = None + + if len(startItems) and len(endItems) and \ + isinstance(startItems[0], DiagramItem) and \ + isinstance(endItems[0], DiagramItem) and \ + startItems[0] != endItems[0]: + startItem = startItems[0] + endItem = endItems[0] + arrow = Arrow(startItem, endItem) + arrow.setColor(self.myLineColor) + startItem.addArrow(arrow) + endItem.addArrow(arrow) + arrow.setZValue(-1000.0) + self.addItem(arrow) + arrow.updatePosition() + + self.line = None + super(DiagramScene, self).mouseReleaseEvent(mouseEvent) + + def isItemChange(self, type): + for item in self.selectedItems(): + if isinstance(item, type): + return True + return False + + +class MainWindow(QtWidgets.QMainWindow): + InsertTextButton = 10 + + def __init__(self): + super(MainWindow, self).__init__() + + self.createActions() + self.createMenus() + self.createToolBox() + + self.scene = DiagramScene(self.itemMenu) + self.scene.setSceneRect(QtCore.QRectF(0, 0, 5000, 5000)) + self.scene.itemInserted.connect(self.itemInserted) + self.scene.textInserted.connect(self.textInserted) + self.scene.itemSelected.connect(self.itemSelected) + + self.createToolbars() + + layout = QtWidgets.QHBoxLayout() + layout.addWidget(self.toolBox) + self.view = QtWidgets.QGraphicsView(self.scene) + layout.addWidget(self.view) + + self.widget = QtWidgets.QWidget() + self.widget.setLayout(layout) + + self.setCentralWidget(self.widget) + self.setWindowTitle("Diagramscene") + + def backgroundButtonGroupClicked(self, button): + buttons = self.backgroundButtonGroup.buttons() + for myButton in buttons: + if myButton != button: + button.setChecked(False) + + text = button.text() + if text == "Blue Grid": + self.scene.setBackgroundBrush(QtGui.QBrush(QtGui.QPixmap(':/images/background1.png'))) + elif text == "White Grid": + self.scene.setBackgroundBrush(QtGui.QBrush(QtGui.QPixmap(':/images/background2.png'))) + elif text == "Gray Grid": + self.scene.setBackgroundBrush(QtGui.QBrush(QtGui.QPixmap(':/images/background3.png'))) + else: + self.scene.setBackgroundBrush(QtGui.QBrush(QtGui.QPixmap(':/images/background4.png'))) + + self.scene.update() + self.view.update() + + def buttonGroupClicked(self, id): + buttons = self.buttonGroup.buttons() + for button in buttons: + if self.buttonGroup.button(id) != button: + button.setChecked(False) + + if id == self.InsertTextButton: + self.scene.setMode(DiagramScene.InsertText) + else: + self.scene.setItemType(id) + self.scene.setMode(DiagramScene.InsertItem) + + def deleteItem(self): + for item in self.scene.selectedItems(): + if isinstance(item, DiagramItem): + item.removeArrows() + self.scene.removeItem(item) + + def pointerGroupClicked(self, i): + self.scene.setMode(self.pointerTypeGroup.checkedId()) + + def bringToFront(self): + if not self.scene.selectedItems(): + return + + selectedItem = self.scene.selectedItems()[0] + overlapItems = selectedItem.collidingItems() + + zValue = 0 + for item in overlapItems: + if (item.zValue() >= zValue and isinstance(item, DiagramItem)): + zValue = item.zValue() + 0.1 + selectedItem.setZValue(zValue) + + def sendToBack(self): + if not self.scene.selectedItems(): + return + + selectedItem = self.scene.selectedItems()[0] + overlapItems = selectedItem.collidingItems() + + zValue = 0 + for item in overlapItems: + if (item.zValue() <= zValue and isinstance(item, DiagramItem)): + zValue = item.zValue() - 0.1 + selectedItem.setZValue(zValue) + + def itemInserted(self, item): + self.pointerTypeGroup.button(DiagramScene.MoveItem).setChecked(True) + self.scene.setMode(self.pointerTypeGroup.checkedId()) + self.buttonGroup.button(item.diagramType).setChecked(False) + + def textInserted(self, item): + self.buttonGroup.button(self.InsertTextButton).setChecked(False) + self.scene.setMode(self.pointerTypeGroup.checkedId()) + + def currentFontChanged(self, font): + self.handleFontChange() + + def fontSizeChanged(self, font): + self.handleFontChange() + + def sceneScaleChanged(self, scale): + newScale = int(scale[:-1]) / 100.0 + oldMatrix = self.view.matrix() + self.view.resetMatrix() + self.view.translate(oldMatrix.dx(), oldMatrix.dy()) + self.view.scale(newScale, newScale) + + def textColorChanged(self): + self.textAction = self.sender() + self.fontColorToolButton.setIcon(self.createColorToolButtonIcon( + ':/images/textpointer.png', + QtGui.QColor(self.textAction.data()))) + self.textButtonTriggered() + + def itemColorChanged(self): + self.fillAction = self.sender() + self.fillColorToolButton.setIcon(self.createColorToolButtonIcon( + ':/images/floodfill.png', + QtGui.QColor(self.fillAction.data()))) + self.fillButtonTriggered() + + def lineColorChanged(self): + self.lineAction = self.sender() + self.lineColorToolButton.setIcon(self.createColorToolButtonIcon( + ':/images/linecolor.png', + QtGui.QColor(self.lineAction.data()))) + self.lineButtonTriggered() + + def textButtonTriggered(self): + self.scene.setTextColor(QtGui.QColor(self.textAction.data())) + + def fillButtonTriggered(self): + self.scene.setItemColor(QtGui.QColor(self.fillAction.data())) + + def lineButtonTriggered(self): + self.scene.setLineColor(QtGui.QColor(self.lineAction.data())) + + def handleFontChange(self): + font = self.fontCombo.currentFont() + font.setPointSize(int(self.fontSizeCombo.currentText())) + if self.boldAction.isChecked(): + font.setWeight(QtGui.QFont.Bold) + else: + font.setWeight(QtGui.QFont.Normal) + font.setItalic(self.italicAction.isChecked()) + font.setUnderline(self.underlineAction.isChecked()) + + self.scene.setFont(font) + + def itemSelected(self, item): + font = item.font() + color = item.defaultTextColor() + self.fontCombo.setCurrentFont(font) + self.fontSizeCombo.setEditText(str(font.pointSize())) + self.boldAction.setChecked(font.weight() == QtGui.QFont.Bold) + self.italicAction.setChecked(font.italic()) + self.underlineAction.setChecked(font.underline()) + + def about(self): + QtWidgets.QMessageBox.about(self, "About Diagram Scene", + "The Diagram Scene example shows use of the graphics framework.") + + def createToolBox(self): + self.buttonGroup = QtWidgets.QButtonGroup() + self.buttonGroup.setExclusive(False) + self.buttonGroup.buttonClicked[int].connect(self.buttonGroupClicked) + + layout = QtWidgets.QGridLayout() + layout.addWidget(self.createCellWidget("Conditional", DiagramItem.Conditional), + 0, 0) + layout.addWidget(self.createCellWidget("Process", DiagramItem.Step), 0, + 1) + layout.addWidget(self.createCellWidget("Input/Output", DiagramItem.Io), + 1, 0) + + textButton = QtWidgets.QToolButton() + textButton.setCheckable(True) + self.buttonGroup.addButton(textButton, self.InsertTextButton) + textButton.setIcon(QtGui.QIcon(QtGui.QPixmap(':/images/textpointer.png') + .scaled(30, 30))) + textButton.setIconSize(QtCore.QSize(50, 50)) + + textLayout = QtWidgets.QGridLayout() + textLayout.addWidget(textButton, 0, 0, QtCore.Qt.AlignHCenter) + textLayout.addWidget(QtWidgets.QLabel("Text"), 1, 0, + QtCore.Qt.AlignCenter) + textWidget = QtWidgets.QWidget() + textWidget.setLayout(textLayout) + layout.addWidget(textWidget, 1, 1) + + layout.setRowStretch(3, 10) + layout.setColumnStretch(2, 10) + + itemWidget = QtWidgets.QWidget() + itemWidget.setLayout(layout) + + self.backgroundButtonGroup = QtWidgets.QButtonGroup() + self.backgroundButtonGroup.buttonClicked.connect(self.backgroundButtonGroupClicked) + + backgroundLayout = QtWidgets.QGridLayout() + backgroundLayout.addWidget(self.createBackgroundCellWidget("Blue Grid", + ':/images/background1.png'), 0, 0) + backgroundLayout.addWidget(self.createBackgroundCellWidget("White Grid", + ':/images/background2.png'), 0, 1) + backgroundLayout.addWidget(self.createBackgroundCellWidget("Gray Grid", + ':/images/background3.png'), 1, 0) + backgroundLayout.addWidget(self.createBackgroundCellWidget("No Grid", + ':/images/background4.png'), 1, 1) + + backgroundLayout.setRowStretch(2, 10) + backgroundLayout.setColumnStretch(2, 10) + + backgroundWidget = QtWidgets.QWidget() + backgroundWidget.setLayout(backgroundLayout) + + self.toolBox = QtWidgets.QToolBox() + self.toolBox.setSizePolicy(QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Ignored)) + self.toolBox.setMinimumWidth(itemWidget.sizeHint().width()) + self.toolBox.addItem(itemWidget, "Basic Flowchart Shapes") + self.toolBox.addItem(backgroundWidget, "Backgrounds") + + def createActions(self): + self.toFrontAction = QtWidgets.QAction( + QtGui.QIcon(':/images/bringtofront.png'), "Bring to &Front", + self, shortcut="Ctrl+F", statusTip="Bring item to front", + triggered=self.bringToFront) + + self.sendBackAction = QtWidgets.QAction( + QtGui.QIcon(':/images/sendtoback.png'), "Send to &Back", self, + shortcut="Ctrl+B", statusTip="Send item to back", + triggered=self.sendToBack) + + self.deleteAction = QtWidgets.QAction(QtGui.QIcon(':/images/delete.png'), + "&Delete", self, shortcut="Delete", + statusTip="Delete item from diagram", + triggered=self.deleteItem) + + self.exitAction = QtWidgets.QAction("E&xit", self, shortcut="Ctrl+X", + statusTip="Quit Scenediagram example", triggered=self.close) + + self.boldAction = QtWidgets.QAction(QtGui.QIcon(':/images/bold.png'), + "Bold", self, checkable=True, shortcut="Ctrl+B", + triggered=self.handleFontChange) + + self.italicAction = QtWidgets.QAction(QtGui.QIcon(':/images/italic.png'), + "Italic", self, checkable=True, shortcut="Ctrl+I", + triggered=self.handleFontChange) + + self.underlineAction = QtWidgets.QAction( + QtGui.QIcon(':/images/underline.png'), "Underline", self, + checkable=True, shortcut="Ctrl+U", + triggered=self.handleFontChange) + + self.aboutAction = QtWidgets.QAction("A&bout", self, shortcut="Ctrl+B", + triggered=self.about) + + def createMenus(self): + self.fileMenu = self.menuBar().addMenu("&File") + self.fileMenu.addAction(self.exitAction) + + self.itemMenu = self.menuBar().addMenu("&Item") + self.itemMenu.addAction(self.deleteAction) + self.itemMenu.addSeparator() + self.itemMenu.addAction(self.toFrontAction) + self.itemMenu.addAction(self.sendBackAction) + + self.aboutMenu = self.menuBar().addMenu("&Help") + self.aboutMenu.addAction(self.aboutAction) + + def createToolbars(self): + self.editToolBar = self.addToolBar("Edit") + self.editToolBar.addAction(self.deleteAction) + self.editToolBar.addAction(self.toFrontAction) + self.editToolBar.addAction(self.sendBackAction) + + self.fontCombo = QtWidgets.QFontComboBox() + self.fontCombo.currentFontChanged.connect(self.currentFontChanged) + + self.fontSizeCombo = QtWidgets.QComboBox() + self.fontSizeCombo.setEditable(True) + for i in range(8, 30, 2): + self.fontSizeCombo.addItem(str(i)) + validator = QtGui.QIntValidator(2, 64, self) + self.fontSizeCombo.setValidator(validator) + self.fontSizeCombo.currentIndexChanged.connect(self.fontSizeChanged) + + self.fontColorToolButton = QtWidgets.QToolButton() + self.fontColorToolButton.setPopupMode(QtWidgets.QToolButton.MenuButtonPopup) + self.fontColorToolButton.setMenu( + self.createColorMenu(self.textColorChanged, QtCore.Qt.black)) + self.textAction = self.fontColorToolButton.menu().defaultAction() + self.fontColorToolButton.setIcon( + self.createColorToolButtonIcon(':/images/textpointer.png', + QtCore.Qt.black)) + self.fontColorToolButton.setAutoFillBackground(True) + self.fontColorToolButton.clicked.connect(self.textButtonTriggered) + + self.fillColorToolButton = QtWidgets.QToolButton() + self.fillColorToolButton.setPopupMode(QtWidgets.QToolButton.MenuButtonPopup) + self.fillColorToolButton.setMenu( + self.createColorMenu(self.itemColorChanged, QtCore.Qt.white)) + self.fillAction = self.fillColorToolButton.menu().defaultAction() + self.fillColorToolButton.setIcon( + self.createColorToolButtonIcon(':/images/floodfill.png', + QtCore.Qt.white)) + self.fillColorToolButton.clicked.connect(self.fillButtonTriggered) + + self.lineColorToolButton = QtWidgets.QToolButton() + self.lineColorToolButton.setPopupMode(QtWidgets.QToolButton.MenuButtonPopup) + self.lineColorToolButton.setMenu( + self.createColorMenu(self.lineColorChanged, QtCore.Qt.black)) + self.lineAction = self.lineColorToolButton.menu().defaultAction() + self.lineColorToolButton.setIcon( + self.createColorToolButtonIcon(':/images/linecolor.png', + QtCore.Qt.black)) + self.lineColorToolButton.clicked.connect(self.lineButtonTriggered) + + self.textToolBar = self.addToolBar("Font") + self.textToolBar.addWidget(self.fontCombo) + self.textToolBar.addWidget(self.fontSizeCombo) + self.textToolBar.addAction(self.boldAction) + self.textToolBar.addAction(self.italicAction) + self.textToolBar.addAction(self.underlineAction) + + self.colorToolBar = self.addToolBar("Color") + self.colorToolBar.addWidget(self.fontColorToolButton) + self.colorToolBar.addWidget(self.fillColorToolButton) + self.colorToolBar.addWidget(self.lineColorToolButton) + + pointerButton = QtWidgets.QToolButton() + pointerButton.setCheckable(True) + pointerButton.setChecked(True) + pointerButton.setIcon(QtGui.QIcon(':/images/pointer.png')) + linePointerButton = QtWidgets.QToolButton() + linePointerButton.setCheckable(True) + linePointerButton.setIcon(QtGui.QIcon(':/images/linepointer.png')) + + self.pointerTypeGroup = QtWidgets.QButtonGroup() + self.pointerTypeGroup.addButton(pointerButton, DiagramScene.MoveItem) + self.pointerTypeGroup.addButton(linePointerButton, + DiagramScene.InsertLine) + self.pointerTypeGroup.buttonClicked[int].connect(self.pointerGroupClicked) + + self.sceneScaleCombo = QtWidgets.QComboBox() + self.sceneScaleCombo.addItems(["50%", "75%", "100%", "125%", "150%"]) + self.sceneScaleCombo.setCurrentIndex(2) + self.sceneScaleCombo.currentIndexChanged[str].connect(self.sceneScaleChanged) + + self.pointerToolbar = self.addToolBar("Pointer type") + self.pointerToolbar.addWidget(pointerButton) + self.pointerToolbar.addWidget(linePointerButton) + self.pointerToolbar.addWidget(self.sceneScaleCombo) + + def createBackgroundCellWidget(self, text, image): + button = QtWidgets.QToolButton() + button.setText(text) + button.setIcon(QtGui.QIcon(image)) + button.setIconSize(QtCore.QSize(50, 50)) + button.setCheckable(True) + self.backgroundButtonGroup.addButton(button) + + layout = QtWidgets.QGridLayout() + layout.addWidget(button, 0, 0, QtCore.Qt.AlignHCenter) + layout.addWidget(QtWidgets.QLabel(text), 1, 0, QtCore.Qt.AlignCenter) + + widget = QtWidgets.QWidget() + widget.setLayout(layout) + + return widget + + def createCellWidget(self, text, diagramType): + item = DiagramItem(diagramType, self.itemMenu) + icon = QtGui.QIcon(item.image()) + + button = QtWidgets.QToolButton() + button.setIcon(icon) + button.setIconSize(QtCore.QSize(50, 50)) + button.setCheckable(True) + self.buttonGroup.addButton(button, diagramType) + + layout = QtWidgets.QGridLayout() + layout.addWidget(button, 0, 0, QtCore.Qt.AlignHCenter) + layout.addWidget(QtWidgets.QLabel(text), 1, 0, QtCore.Qt.AlignCenter) + + widget = QtWidgets.QWidget() + widget.setLayout(layout) + + return widget + + def createColorMenu(self, slot, defaultColor): + colors = [QtCore.Qt.black, QtCore.Qt.white, QtCore.Qt.red, QtCore.Qt.blue, QtCore.Qt.yellow] + names = ["black", "white", "red", "blue", "yellow"] + + colorMenu = QtWidgets.QMenu(self) + for color, name in zip(colors, names): + action = QtWidgets.QAction(self.createColorIcon(color), name, self, + triggered=slot) + action.setData(QtGui.QColor(color)) + colorMenu.addAction(action) + if color == defaultColor: + colorMenu.setDefaultAction(action) + return colorMenu + + def createColorToolButtonIcon(self, imageFile, color): + pixmap = QtGui.QPixmap(50, 80) + pixmap.fill(QtCore.Qt.transparent) + painter = QtGui.QPainter(pixmap) + image = QtGui.QPixmap(imageFile) + target = QtCore.QRect(0, 0, 50, 60) + source = QtCore.QRect(0, 0, 42, 42) + painter.fillRect(QtCore.QRect(0, 60, 50, 80), color) + painter.drawPixmap(target, image, source) + painter.end() + + return QtGui.QIcon(pixmap) + + def createColorIcon(self, color): + pixmap = QtGui.QPixmap(20, 20) + painter = QtGui.QPainter(pixmap) + painter.setPen(QtCore.Qt.NoPen) + painter.fillRect(QtCore.QRect(0, 0, 20, 20), color) + painter.end() + + return QtGui.QIcon(pixmap) + + +if __name__ == '__main__': + + import sys + + app = QtWidgets.QApplication(sys.argv) + + mainWindow = MainWindow() + mainWindow.setGeometry(100, 100, 800, 500) + mainWindow.show() + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/diagramscene.pyproject b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/diagramscene.pyproject new file mode 100644 index 0000000..0acabdd --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/diagramscene.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["diagramscene.qrc", "diagramscene.py", "diagramscene_rc.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/diagramscene.qrc b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/diagramscene.qrc new file mode 100644 index 0000000..c4d845e --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/diagramscene.qrc @@ -0,0 +1,19 @@ + + + images/pointer.png + images/linepointer.png + images/textpointer.png + images/bold.png + images/italic.png + images/underline.png + images/floodfill.png + images/bringtofront.png + images/delete.png + images/sendtoback.png + images/linecolor.png + images/background1.png + images/background2.png + images/background3.png + images/background4.png + + diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/diagramscene_rc.py b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/diagramscene_rc.py new file mode 100644 index 0000000..c536aec --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/diagramscene_rc.py @@ -0,0 +1,417 @@ +# Resource object code (Python 3) +# Created by: object code +# Created by: The Resource Compiler for Qt version 5.15.2 +# WARNING! All changes made in this file will be lost! + +from PySide2 import QtCore + +qt_resource_data = b"\ +\x00\x00\x00\xf7\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x0b\x00\x00\x00\x0c\x08\x06\x00\x00\x00\xb4\xa9G\x9e\ +\x00\x00\x00\xbeIDAT(S\x85\x911\x0e@@\ +\x10EWM$J7\xa1\xa4\x918\x85^t\xaa=\ +\x8aNT{\x80\xadun\xa0\xd1l\xe7\x12\xc4\x97\x19\ +\xb1!YQ\xfcb\xfe\xbc\xfc\x99\xcc\x08\x00\x82t\x1c\ +\x07\xa6i\x82\x10\xc2)\xcf\xf3.\xf0\xd68\x8e\xa8\xaa\ +\x8aU\x14\x05\x03I\x92X\xef\x05?\xd5u\x1d\xc3Z\ +k\xd0T\xf2\x9c 5\xeb\xbafx]W\xdc\xfeg\ +r\x9a\xa6\x88\xe3\x18O\xcf\x09n\xdb\x06\xdf\xf7Q\x96\ +\xa5]\xc1\x09Ss\x9eg^AJ\xf9\x9f<\x0c\x03\ +\xc3J\xa9\xff\xe4\xb6m\x19^\x96\xe5?9\xcfs\x84\ +a\x88}\xdf\xdf\xc9T\x18c\xec\xe1IA\x10 \x8a\ +\x22[7M\x03\x9b\xdc\xf7\xfd\xf5\xce\x8fWgY\xc6\ +\x13N\xfaWVX\xe8@\xda\xc6\x00\x00\x00\x00IE\ +ND\xaeB`\x82\ +\x00\x00\x01\x1a\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00*\x00\x00\x00+\x02\x03\x00\x00\x00s\xf1\xf2m\ +\x00\x00\x00\x0cPLTE\xff\xff\xff\x80\x80\x80\x00\x00\ +\x00\xff\xff\xffEJK8\x00\x00\x00\x01tRNS\ +\x00@\xe6\xd8f\x00\x00\x00\xbcIDATx^M\ +\xcb\xbd\x89\x041\x0c\x86a\xa1\xd0U8\x1c\xdc\x8f&\ +\xd8\x12\xa6\x0a\xb3\xe1\xe6N.2\x07\x02\xdb\x07[\xc0\ +\x96\xb4U\x9cG?3V\xf4!\xde\x07B\xcd\xe0\x17\ +F\xbd\xf6\xb6\xec\x1a\xef\xa6A\x024\xb2A\x80`$\ +\xcf\x9d\x9a\xee8\x8b~x\x83O~d\xb30hW\ +\x102t\x22\x05\x98\x91\x89\x0c\xe4P\x88\x0c\xd4D\xe4\ + \xce\xdc\xc1\x98\x89\x833q \x89\x02\xe4\x9d\x1d`\ +\xa1.@\xff\xe9\x02\xfd\xf1*\x0e\xd2\xfe{\x81P\xda\ +\x02\x8e\xef\x02>\x0bx\xb3l\x01\x7f]\x1a\x03f\x1d\ +4\x00\x03B\x15\xb0\xe4\x0a$7P$W\xc0\x92+\ +\xe8\x92\x1b\x90\xdc\x80\xe4\x0a$7\xf0so\x1cp_\ +[v<\xc7?\xd6Qh R\x85\xdb_\x00\x00\x00\ +\x00IEND\xaeB`\x82\ +\x00\x00\x00\xfa\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x0b\x00\x00\x00\x0c\x08\x06\x00\x00\x00\xb4\xa9G\x9e\ +\x00\x00\x00\xc1IDAT(S\xcd\x901\x0a\x840\ +\x10E\xc7\xceV\xb0\xd3F\x10o`\xe5\x01\xbcB@\ +\x0b\x9bt\x22\x11\xbc\x94\x9d'\xd2\x03x\x03\x03\x19\xf7\ +\x0f\xb8\xd9,l\xbf\x81Of\xde\xfc|\xc8P\x1c\xc7\ +LD\xa2(\x8a8\xcfs~\x1d\xc2\xfd\xc9\xd34e\ +\xd2ZsQ\x14\x02\x86a\xe0y\x9e\xc5\x8c\x1b=8\ +\xe6\xe382a\xa0\x94\x12\x88\xfa[\xe0\x98;\xe7B\ +3\xc0/3\xea\x7fJ\xee\xbaN\xcc\xd7u\x05\x0f\xd0\ +\x83\xf7}\xef\x93\xb1&\xc0}\xdf\x03\xf3q\x1c\xc2\x97\ +e\xf1\xc9\xeb\xba\x0a\x9c\xa6)0?!\xdb\xb6\xf9d\ +\xa8\xaek\x19\x94e\xc9m\xdbrUU\xd27M\xc3\ +\xd6Z\x9f\xfc\xc8\x18\xc3Y\x96\x89)I\x12\xc6_\xce\ +\xf3|o\xe9\x063 8\xcd\x08\x1exv\x00\x00\x00\ +\x00IEND\xaeB`\x82\ +\x00\x00\x00r\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x7f\x00\x00\x00\x7f\x01\x03\x00\x00\x00\xfcs\x8fP\ +\x00\x00\x00\x06PLTE\xff\xff\xff\x00\x00\x00U\xc2\ +\xd3~\x00\x00\x00'IDATH\xc7c`\x80\x82\ +\x06\x0640*0*0*0*\x80*\xf0\x1f\x15\ +\xfc\x1b\x0d\xa0Q\x81Q\x81Q\x01\x22\x05\x00\xd5;N\ +\xf0s\xe3o\xe9\x00\x00\x00\x00IEND\xaeB`\ +\x82\ +\x00\x00\x02\xf1\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00*\x00\x00\x00,\x08\x03\x00\x00\x00$D\xdat\ +\x00\x00\x012PLTE\xff\xff\xff\xfe\xfe\xfe\x01\x01\ +\x01\xbe\xbe\xbe\xfd\xfd\xfd\x00\x00\x00ddd\xd2\xd2\xd2\ +|||\xfb\xfb\xfb\xe7\xe7\xe7\x84\x84\x84\xd7\xd7\xd7\xe0\ +\xe0\xe0\xe1\xe1\xe1\x0c\x0c\x0c(((\xf5\xf5\xf5\xb3\xb3\ +\xb3\x02\x02\x02\x95\x95\x95...\x11\x11\x11kkk\ +\x03\x03\x03rrrIII\xfc\xfc\xfc\x13\x13\x13\x04\ +\x04\x04\x9f\x9f\x9f\xc4\xc4\xc4\xa9\xa9\xa9\x05\x05\x05WW\ +W\x17\x17\x17\xf6\xf6\xf6\x16\x16\x16\xa6\xa6\xa6\xa0\xa0\xa0\ +```$$$>>>###\xb7\xb7\xb7M\ +MM\xf8\xf8\xf8\xc0\xc0\xc0000\x09\x09\x09\xec\xec\ +\xec \x8a\x8a\x8a\xda\xda\xda\xf1\xf1\xf1\x0d\x0d\x0d\ +\x99\x99\x99\x19\x19\x19\xf9\xf9\xf9\xcd\xcd\xcd\xf4\xf4\xf49\ +99---;;;\x12\x12\x12CCC\xc2\xc2\ +\xc2\xa4\xa4\xa4\xdc\xdc\xdcUUUhhhZZZ\ +PPP\xf0\xf0\xf0\x06\x06\x06\x1f\x1f\x1fttt\xb1\ +\xb1\xb1]]]!!!666\x08\x08\x08\xea\xea\ +\xea\xdb\xdb\xdb\x81\x81\x81\x9c\x9c\x9c\x8b\x8b\x8buuu\ +\xf2\xf2\xf2%%%\xce\xce\xceHHHccc\xba\ +\xba\xbaSSS888\xf7\xf7\xf7\xe4\xe4\xe4\xa2\xa2\ +\xa2JJJ\xf3\xf3\xf3___\xf1i\x00\xec\x00\x00\ +\x00\x01tRNS\x00@\xe6\xd8f\x00\x00\x01mI\ +DATx^\xd5\x92\xc5v\xc30\x10E=\x92\x1d\ +f\xe6\x94\x99\x99\x99\x99\x99\xe1\xff\x7f\xa1\x9e\x89\x93S\ +\xa9\xb2Nvm\xdf\xf2\xea\xfa\xbdY\xd8\xf8+\xf10\ +\xeb[X\xcc\x047\x13<\x96\x10\xc6\xb5\xadB\xda\x9a\ +om\x0d@\xb3\xad,\xe8\xda\x1a\xe2\xb5\xf4\xd4\xddq\ +\xbf\xa1\x0d\x14{\x1b\xed\x09\xd0\xbb\x03\x0d\x93\x0d\xeaM\ +\xd8A+3\x82n.\xac5\xc39\xbb\x95\xe5\xbb\xa9\ +\xdb\xa7\xbd\xc0G\xcedG'~1;\xa7q\x87\xda\ +\xd1,\x00\xf8\xe8\xda\x16\xcd~\x17\x19\x09\xc3\x88\x94\xd1\ +]\xd5\xb4\xf6\xe1n\xbf\xdf66\xe9\x92\x90\xab\xeb\xa5\ +\xf7\x09\xdb\x84a\xea\xcf\xbb\xeeg\xd1\x1c\x1dC`\xa6\ +\xd1]\x89\xbb\x98S\xd3\xb8\xef\xa9\x81\x19Z\xa8\x80\xda\ +M\xd1\xeb<\xbd\xc2B\x06\xbf[T\x9b\xe6\x12\x9a\xcb\ +N\x0f\x1c\xd0\xb5w\xca\xfd5z[\xaf\x83\x8d$\xba\ +[\xca\x0b\xb6q_\x0a\x8b\xee*\xdc\xc0\x9e\xa5\x08K\ +)\xf6\x83\x962i\xf3\x87\xe9\xdfgj\xb7\x0a\xb2{\ +\xe8b\xb2#\xd9\x84\x02\xf2c.\xe4\x04\xd9\xe9\x99d\ +\x9eS\xc3\x85H/i\xe9\x0aDzmS\x96\x8c\x08\ +\x14n\xa2Ho\x8b\x02\x8d\x97\xb0\xf5\x1e\xa4\xad\x07\xda\ +z\x14XE\xfd\xd7W\xe9\x82'\xa1\xe1\x19\x97J/\ +r\xab\x19C^~\xads\xce\xf9\x1b}\xfd\xce1\x1f\ +\xe0`\xcc'\xademL\xcc\x12\xc2\xbcN#\x139\ +A\x89y\xc1P5\xfc~\xeb\xff\xca\x17Uq \xbb\ +\xd7\xbb.\xca\x00\x00\x00\x00IEND\xaeB`\x82\ +\ +\x00\x00\x01>\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x16\x00\x00\x00\x16\x08\x06\x00\x00\x00\xc4\xb4l;\ +\x00\x00\x00\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\ +\xa7\x93\x00\x00\x00\xf3IDAT8\xcb\xed\x94An\ +\x830\x10E\x9f%\xe0\x0c\xbdC/\xd0\x13\xe5\xfaU\ +b\x9b\xd83\x01w\x81\x0d$\x85\xaa1\xca\xaa\x1d\x89\ +\x8d\x0dO\xef{\x067m\xdb&\x0e\x94\xaa\x9a\xad\xf5\ +\x06@D\xaa\xa0]\xd7\xed\xee5\xbc\xa8\xfe\xc1\x7f\x01\ +l\x8c\xd9\xdbJ\x87\x8dS\xda`\x8c\x03\x0c\x01\xf4\x0a\ +\xd2Ct\x98\xb7\xf7\x83G1*h\x81z\x10\x07\xd1\ +\x1d<\xe3A&\xa0\xf6\x0b48\x88\x97Jp\x1aa\ +\x88Kt\xf5\x93e\xb4\xd3#5\xc6i\x80[\x00)\ +\xd1=\xa8\x83`W`_\x01\x96\x1c}\xb6|0\x95\ +jp\xfep\x06\xba\x15\xd4\xe5\x14v\x01\xfft\xfd\xdd\ +U\xb8\xe4\xce\xdb\x05\x5c&A\xfd\xb2\x064{\x17\xf5\ +\xe6\x8f\x10\xce\xdf\xa1\xc54\xe6\x89\xa8j^\xf8\x9cF\ +j\xb6t\x10\xb3\xa9\xac\x1a\xf84\xf8z\xce\xa6\x16b\ +\x0fj\xef\x1bXRT\x81\xa5\x98nLE\xf4p\xeb\ +\x9f\x07\x9b\x8f\xd3\xaf\xdf\xfd\x02\xd6\xbd\xde\xdfp\xdb\x04\ +\x83\x00\x00\x00\x00IEND\xaeB`\x82\ +\x00\x00\x00\xad\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x0f\x00\x00\x00\x18\x02\x03\x00\x00\x00XkO\xfa\ +\x00\x00\x00\x09PLTE\xff\xff\xff\xff\xff\xff\x00\x00\ +\x00\x8e\xf4\xc3\xec\x00\x00\x00\x01tRNS\x00@\xe6\ +\xd8f\x00\x00\x00RIDAT\x08\x1d\x05\xc1\xb1\x0d\ +\xc20\x14\x05\xc0\x8b\x04\x1b\xd0g\x5c\xc7\x8cC\x93\xe2H\x19\ +O-\xeaW\x95\xed\x8e\x87!KI\x96\xbe\x8e\xa6\x92\ +\x1a1\xeb\xf1\xfc)V\xaa\xefk\xb0 \xc9TG\x0f\ +\xf85\xb8M\xd7V\x03\xe2 \x98\xc7\xaa\xf5\xb7\x98\x05\ +\xd6\xde\xd4>\xf7W\x1a\xb8:\x00\x8a\xa5\xcbfj\xee\ +\x91a\xa9f\xc0\x0f\xb5]\x00\x00\x00\x00IEND\ +\xaeB`\x82\ +\x00\x00\x00`\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x7f\x00\x00\x00\x7f\x01\x03\x00\x00\x00\xfcs\x8fP\ +\x00\x00\x00\x03PLTE\xff\xff\xff\xa7\xc4\x1b\xc8\x00\ +\x00\x00\x18IDATx^\xed\xc01\x01\x00\x00\x00\ +\xc2 \xfb\xa76\xc5>X\x0b\x00\xe0\x08o\x00\x01\x01\ +>\xc31\x00\x00\x00\x00IEND\xaeB`\x82\ +\x00\x00\x03?\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x16\x00\x00\x00\x16\x08\x06\x00\x00\x00\xc4\xb4l;\ +\x00\x00\x00\x04gAMA\x00\x00\xd6\xd8\xd4OX2\ +\x00\x00\x00\x19tEXtSoftware\ +\x00Adobe ImageRead\ +yq\xc9e<\x00\x00\x02\xd1IDAT8\xcb}\ +\x95KhSA\x14\x86\x93\xe6\xd1\x08I(\x04[\x17\ +\x055\xeeZ\xbbP\xb2\xb1\xda\x85\x8f]\xb5\xbe\x16v\ +)-BIW\xed\xce\x8d\x0a\xa2\xe0\xba\xab\x14\x84\x8a\ ++QDE\x17\x0a\x8aU\xf1\x01\x1a\xb0V#\xad\xa2\ +\xc5\xb6\x92j\x95\xbe4\xcd\xc3\xe3\x7fn\xced\xe6N\ +\xd2\x16>\xe6\xde\xce?\x7ff\xcec\xae\x87\x88<&\ +\xf8\xf3\x01~\xa8\x07\x01Pgk\x0cm\x9d\xa1\x0d\xf2\ +\xda\xca\x9c!\xf2\x8a\x11Q\x7f\x7f^\x16l\x04a\xe0\ +\xafa\xeaw\xb4\x03\x03J\xdb\x08\x22\xe2\xe15\x85\x8e\ +\xe9\xbf\xa1!*uwS\xa1,f6\x83(\xcfW\ +iS)*\xf5\xf4P)\x18T\xda8hp\xe6\xcd\ +\xe3\x97`Z\xec\xed\xa5BK\x0b\xe5\xf0\xfe]\x9bo\ +U\xe6\xca\xb44R\xbex\xe8\xa0\xd6\ +\x1e\x05\x09\xf3\x12\xf2I\xd0\xb7\xb1\xe0\xa4>R\x97\xb4\ +\xa9}mV:\xf4\x94\xd6\xb2\xe9\x1e\xf1\x88\xda\xa5\xd6\ +\xa0\xcc\xe5H;\xc1\x965.\xfa\xa8\xcc)mB\xd6\ +\xea\x8b\xde\xfa4\xf1\x82MN\x9c\xca\xe1\x89\xac\xf3i\ +\x8a\x88\xa6Y\xd6\xa8Syku\x9eO>\x8e\x1b\xec\ +\x0f\xe4\x1a\xda\xa0h\xebM\xed\x7f=\xa9\x97\x96\x02\xf1\ ++\x1c\x00\x00\x00\x00IEND\xaeB`\x82\ +\x00\x00\x00\x8d\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x1b\x00\x00\x00\x1b\x01\x03\x00\x00\x00\xb7\x1af\x16\ +\x00\x00\x00\x06PLTE\xff\xff\xff\x00\x00\x00U\xc2\ +\xd3~\x00\x00\x00\x01tRNS\x00@\xe6\xd8f\x00\ +\x00\x005IDAT\x08\x99c`\xc0\x02\xd8\x1b\x80\ +\x04\xff\x01L\x82\xfd\x01H\xba\x00DX\x80\x08\x19\x10\ +\xc1\x07\xd6\x02\x22\x98A\xfa\x18A\x0a\x19\xc0\x0a\xeb@\ +\x84=\x16B\x0e\xddF\x00\xb5\x00\x09@\xa31\xbf^\ +\x00\x00\x00\x00IEND\xaeB`\x82\ +\x00\x00\x01\x12\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x0b\x00\x00\x00\x0d\x08\x06\x00\x00\x00\x7f\xf5\x94;\ +\x00\x00\x00\xd9IDAT(S}\x901\x0eE@\ +\x10\x86G$$\x1a\x0d\x0d\xd1\x22Qp\x80m\x5c@\ +\xe7<\x0e!\x0aGq\x19\xb5N\xa9\xc1x3\xb2\x8b\ +\xf7\xec\xdb\xe4\xcbfv\xfe\xf9gv\xc00\x0c\x04\x80\ +\x07\xf4fY\x16&I\x82\x9f\x03\xc4\xbe\xef\x94;\x05\ +i\x9a2$\x08\xc3\xf0QX\xd75\x17\x01\x05\x04U\ +\xde]\xe8v\x1c\x87s\xb6m\xe3\xc3Y\x0a\xefDQ\ +\xc4\xe2 \x08\xf4\xce\xeb\xbab\xdb\xb6j\x94\xbe\xefO\ +\xb1|(\x8a\x82\xc9\xf3\x1c}\xdfg\x03!\x04\x0e\xc3\ +\xa0L@\xb7\x0d\xd34Y\xdcu\xdd%\xfe\x9ey\xdb\ +6\x9c\xa6\x89c\xd9!\x8ec\x1c\xc7\x11\xd5\xcco\x1f\ +$d\xbe\xaa\xaa\xff\xdbX\x96E\x8dF]^\xb7A\ +\xcc\xf3\x8cM\xd3\xa0\xccgYv9{\x9e\xa7p]\ +\xf7\xe7\xd3\xdamH\xa8\xa8,K\xd5\xf1\x00\xd0\xc0\x13\ +\xc8\x06\xaf\x16(\x00\x00\x00\x00IEND\xaeB`\ +\x82\ +\x00\x00\x00t\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x7f\x00\x00\x00\x7f\x01\x03\x00\x00\x00\xfcs\x8fP\ +\x00\x00\x00\x06PLTE\xc0\xc0\xc0\xff\xff\xff+i\ +\x87\xb4\x00\x00\x00)IDATHKc\xf8\x0f\x05\ +\x0d\x0cP0*0*0*0*@\xa4\x00\x0c\xd8\ +C\xc4\xff\x8d\x0a\x8c\x0a\x8c\x0a\x8c\x0a`\x17\x00\x00?\ +x\xe4\xb7\xe3\x900_\x00\x00\x00\x00IEND\xae\ +B`\x82\ +" + +qt_resource_name = b"\ +\x00\x06\ +\x07\x03}\xc3\ +\x00i\ +\x00m\x00a\x00g\x00e\x00s\ +\x00\x0a\ +\x02\xfcBG\ +\x00i\ +\x00t\x00a\x00l\x00i\x00c\x00.\x00p\x00n\x00g\ +\x00\x0d\ +\x06C\xe3g\ +\x00f\ +\x00l\x00o\x00o\x00d\x00f\x00i\x00l\x00l\x00.\x00p\x00n\x00g\ +\x00\x0d\ +\x08\xd5\xc4\xe7\ +\x00u\ +\x00n\x00d\x00e\x00r\x00l\x00i\x00n\x00e\x00.\x00p\x00n\x00g\ +\x00\x0f\ +\x00I\xdb\xa7\ +\x00b\ +\x00a\x00c\x00k\x00g\x00r\x00o\x00u\x00n\x00d\x002\x00.\x00p\x00n\x00g\ +\x00\x0f\ +\x05\xaa\x0c\xc7\ +\x00t\ +\x00e\x00x\x00t\x00p\x00o\x00i\x00n\x00t\x00e\x00r\x00.\x00p\x00n\x00g\ +\x00\x0e\ +\x0f\x0d\x22'\ +\x00s\ +\x00e\x00n\x00d\x00t\x00o\x00b\x00a\x00c\x00k\x00.\x00p\x00n\x00g\ +\x00\x0b\ +\x0a+\x97\xe7\ +\x00p\ +\x00o\x00i\x00n\x00t\x00e\x00r\x00.\x00p\x00n\x00g\ +\x00\x0f\ +\x00P\xdb\xa7\ +\x00b\ +\x00a\x00c\x00k\x00g\x00r\x00o\x00u\x00n\x00d\x001\x00.\x00p\x00n\x00g\ +\x00\x0d\ +\x05l\x22\xc7\ +\x00l\ +\x00i\x00n\x00e\x00c\x00o\x00l\x00o\x00r\x00.\x00p\x00n\x00g\ +\x00\x10\ +\x0f\x9b\x88g\ +\x00b\ +\x00r\x00i\x00n\x00g\x00t\x00o\x00f\x00r\x00o\x00n\x00t\x00.\x00p\x00n\x00g\ +\x00\x0f\ +\x00K\xdb\xa7\ +\x00b\ +\x00a\x00c\x00k\x00g\x00r\x00o\x00u\x00n\x00d\x004\x00.\x00p\x00n\x00g\ +\x00\x0a\ +\x0c\xad\x0f\x07\ +\x00d\ +\x00e\x00l\x00e\x00t\x00e\x00.\x00p\x00n\x00g\ +\x00\x0f\ +\x03J#\xe7\ +\x00l\ +\x00i\x00n\x00e\x00p\x00o\x00i\x00n\x00t\x00e\x00r\x00.\x00p\x00n\x00g\ +\x00\x08\ +\x06'Zg\ +\x00b\ +\x00o\x00l\x00d\x00.\x00p\x00n\x00g\ +\x00\x0f\ +\x00J\xdb\xa7\ +\x00b\ +\x00a\x00c\x00k\x00g\x00r\x00o\x00u\x00n\x00d\x003\x00.\x00p\x00n\x00g\ +" + +qt_resource_struct = b"\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x0f\x00\x00\x00\x02\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00l\x00\x00\x00\x00\x00\x01\x00\x00\x03\x17\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x01\xd4\x00\x00\x00\x00\x00\x01\x00\x00\x0f\xf5\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x01\x5c\x00\x00\x00\x00\x00\x01\x00\x00\x0a\xa7\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00\xf2\x00\x00\x00\x00\x00\x01\x00\x00\x08u\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x01\x9a\x00\x00\x00\x00\x00\x01\x00\x00\x0eN\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x01\x16\x00\x00\x00\x00\x00\x01\x00\x00\x08\xe9\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00\x90\x00\x00\x00\x00\x00\x01\x00\x00\x03\x8d\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x01\xbe\x00\x00\x00\x00\x00\x01\x00\x00\x0e\xdf\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00,\x00\x00\x00\x00\x00\x01\x00\x00\x00\xfb\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00L\x00\x00\x00\x00\x00\x01\x00\x00\x02\x19\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00\xd6\x00\x00\x00\x00\x00\x01\x00\x00\x07\xc4\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x01\x80\x00\x00\x00\x00\x00\x01\x00\x00\x0b\x0b\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00\xb4\x00\x00\x00\x00\x00\x01\x00\x00\x06\x82\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x016\x00\x00\x00\x00\x00\x01\x00\x00\x09~\ +\x00\x00\x01~*kP\x18\ +" + +def qInitResources(): + QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +def qCleanupResources(): + QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +qInitResources() diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/background1.png b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/background1.png new file mode 100644 index 0000000..0f93c6b Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/background1.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/background2.png b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/background2.png new file mode 100644 index 0000000..1e293db Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/background2.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/background3.png b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/background3.png new file mode 100644 index 0000000..3db4f8e Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/background3.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/background4.png b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/background4.png new file mode 100644 index 0000000..9c1f3bf Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/background4.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/bold.png b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/bold.png new file mode 100644 index 0000000..986e65e Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/bold.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/bringtofront.png b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/bringtofront.png new file mode 100644 index 0000000..bda2757 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/bringtofront.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/delete.png b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/delete.png new file mode 100644 index 0000000..df2a147 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/delete.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/floodfill.png b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/floodfill.png new file mode 100644 index 0000000..54c0dae Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/floodfill.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/italic.png b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/italic.png new file mode 100644 index 0000000..9a438b5 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/italic.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/linecolor.png b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/linecolor.png new file mode 100644 index 0000000..98a821f Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/linecolor.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/linepointer.png b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/linepointer.png new file mode 100644 index 0000000..66933d4 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/linepointer.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/pointer.png b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/pointer.png new file mode 100644 index 0000000..0b0b0aa Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/pointer.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/sendtoback.png b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/sendtoback.png new file mode 100644 index 0000000..5aa3b0a Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/sendtoback.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/textpointer.png b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/textpointer.png new file mode 100644 index 0000000..b25832c Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/textpointer.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/underline.png b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/underline.png new file mode 100644 index 0000000..9b8209f Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/diagramscene/images/underline.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/dragdroprobot/__pycache__/dragdroprobot.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/dragdroprobot/__pycache__/dragdroprobot.cpython-310.pyc new file mode 100644 index 0000000..5b5fe01 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/dragdroprobot/__pycache__/dragdroprobot.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/dragdroprobot/__pycache__/dragdroprobot_rc.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/dragdroprobot/__pycache__/dragdroprobot_rc.cpython-310.pyc new file mode 100644 index 0000000..492a155 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/dragdroprobot/__pycache__/dragdroprobot_rc.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/dragdroprobot/dragdroprobot.py b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/dragdroprobot/dragdroprobot.py new file mode 100644 index 0000000..73ca02d --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/dragdroprobot/dragdroprobot.py @@ -0,0 +1,287 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2 import QtCore, QtGui, QtWidgets + +import dragdroprobot_rc + + +def random(boundary): + return QtCore.QRandomGenerator.global_().bounded(boundary) + + +class ColorItem(QtWidgets.QGraphicsItem): + n = 0 + + def __init__(self): + super(ColorItem, self).__init__() + + self.color = QtGui.QColor(random(256), random(256), random(256)) + + self.setToolTip( + "QColor(%d, %d, %d)\nClick and drag this color onto the robot!" % + (self.color.red(), self.color.green(), self.color.blue()) + ) + self.setCursor(QtCore.Qt.OpenHandCursor) + + def boundingRect(self): + return QtCore.QRectF(-15.5, -15.5, 34, 34) + + def paint(self, painter, option, widget): + painter.setPen(QtCore.Qt.NoPen) + painter.setBrush(QtCore.Qt.darkGray) + painter.drawEllipse(-12, -12, 30, 30) + painter.setPen(QtGui.QPen(QtCore.Qt.black, 1)) + painter.setBrush(QtGui.QBrush(self.color)) + painter.drawEllipse(-15, -15, 30, 30) + + def mousePressEvent(self, event): + if event.button() != QtCore.Qt.LeftButton: + event.ignore() + return + + self.setCursor(QtCore.Qt.ClosedHandCursor) + + def mouseMoveEvent(self, event): + if QtCore.QLineF(QtCore.QPointF(event.screenPos()), QtCore.QPointF(event.buttonDownScreenPos(QtCore.Qt.LeftButton))).length() < QtWidgets.QApplication.startDragDistance(): + return + + drag = QtGui.QDrag(event.widget()) + mime = QtCore.QMimeData() + drag.setMimeData(mime) + + ColorItem.n += 1 + if ColorItem.n > 2 and random(3) == 0: + image = QtGui.QImage(':/images/head.png') + mime.setImageData(image) + drag.setPixmap(QtGui.QPixmap.fromImage(image).scaled(30,40)) + drag.setHotSpot(QtCore.QPoint(15, 30)) + else: + mime.setColorData(self.color) + mime.setText("#%02x%02x%02x" % (self.color.red(), self.color.green(), self.color.blue())) + + pixmap = QtGui.QPixmap(34, 34) + pixmap.fill(QtCore.Qt.white) + + painter = QtGui.QPainter(pixmap) + painter.translate(15, 15) + painter.setRenderHint(QtGui.QPainter.Antialiasing) + self.paint(painter, None, None) + painter.end() + + pixmap.setMask(pixmap.createHeuristicMask()) + + drag.setPixmap(pixmap) + drag.setHotSpot(QtCore.QPoint(15, 20)) + + drag.exec_() + self.setCursor(QtCore.Qt.OpenHandCursor) + + def mouseReleaseEvent(self, event): + self.setCursor(QtCore.Qt.OpenHandCursor) + + +class RobotPart(QtWidgets.QGraphicsItem): + def __init__(self, parent=None): + super(RobotPart, self).__init__(parent) + + self.color = QtGui.QColor(QtCore.Qt.lightGray) + self.pixmap = None + self.dragOver = False + + self.setAcceptDrops(True) + + def dragEnterEvent(self, event): + if event.mimeData().hasColor() or \ + (isinstance(self, RobotHead) and event.mimeData().hasImage()): + event.setAccepted(True) + self.dragOver = True + self.update() + else: + event.setAccepted(False) + + def dragLeaveEvent(self, event): + self.dragOver = False + self.update() + + def dropEvent(self, event): + self.dragOver = False + if event.mimeData().hasColor(): + self.color = QtGui.QColor(event.mimeData().colorData()) + elif event.mimeData().hasImage(): + self.pixmap = QtGui.QPixmap(event.mimeData().imageData()) + + self.update() + + +class RobotHead(RobotPart): + def boundingRect(self): + return QtCore.QRectF(-15, -50, 30, 50) + + def paint(self, painter, option, widget=None): + if not self.pixmap: + painter.setBrush(self.dragOver and self.color.lighter(130) + or self.color) + painter.drawRoundedRect(-10, -30, 20, 30, 25, 25, + QtCore.Qt.RelativeSize) + painter.setBrush(QtCore.Qt.white) + painter.drawEllipse(-7, -3 - 20, 7, 7) + painter.drawEllipse(0, -3 - 20, 7, 7) + painter.setBrush(QtCore.Qt.black) + painter.drawEllipse(-5, -1 - 20, 2, 2) + painter.drawEllipse(2, -1 - 20, 2, 2) + painter.setPen(QtGui.QPen(QtCore.Qt.black, 2)) + painter.setBrush(QtCore.Qt.NoBrush) + painter.drawArc(-6, -2 - 20, 12, 15, 190 * 16, 160 * 16) + else: + painter.scale(.2272, .2824) + painter.drawPixmap(QtCore.QPointF(-15*4.4, -50*3.54), self.pixmap) + + +class RobotTorso(RobotPart): + def boundingRect(self): + return QtCore.QRectF(-30, -20, 60, 60) + + def paint(self, painter, option, widget=None): + painter.setBrush(self.dragOver and self.color.lighter(130) + or self.color) + painter.drawRoundedRect(-20, -20, 40, 60, 25, 25, + QtCore.Qt.RelativeSize) + painter.drawEllipse(-25, -20, 20, 20) + painter.drawEllipse(5, -20, 20, 20) + painter.drawEllipse(-20, 22, 20, 20) + painter.drawEllipse(0, 22, 20, 20) + + +class RobotLimb(RobotPart): + def boundingRect(self): + return QtCore.QRectF(-5, -5, 40, 10) + + def paint(self, painter, option, widget=None): + painter.setBrush(self.dragOver and self.color.lighter(130) or self.color) + painter.drawRoundedRect(self.boundingRect(), 50, 50, + QtCore.Qt.RelativeSize) + painter.drawEllipse(-5, -5, 10, 10) + + +class Robot(RobotPart): + def __init__(self): + super(Robot, self).__init__() + + self.torsoItem = RobotTorso(self) + self.headItem = RobotHead(self.torsoItem) + self.upperLeftArmItem = RobotLimb(self.torsoItem) + self.lowerLeftArmItem = RobotLimb(self.upperLeftArmItem) + self.upperRightArmItem = RobotLimb(self.torsoItem) + self.lowerRightArmItem = RobotLimb(self.upperRightArmItem) + self.upperRightLegItem = RobotLimb(self.torsoItem) + self.lowerRightLegItem = RobotLimb(self.upperRightLegItem) + self.upperLeftLegItem = RobotLimb(self.torsoItem) + self.lowerLeftLegItem = RobotLimb(self.upperLeftLegItem) + + self.timeline = QtCore.QTimeLine() + settings = [ + # item position rotation at + # x y time 0 / 1 + ( self.headItem, 0, -18, 20, -20 ), + ( self.upperLeftArmItem, -15, -10, 190, 180 ), + ( self.lowerLeftArmItem, 30, 0, 50, 10 ), + ( self.upperRightArmItem, 15, -10, 300, 310 ), + ( self.lowerRightArmItem, 30, 0, 0, -70 ), + ( self.upperRightLegItem, 10, 32, 40, 120 ), + ( self.lowerRightLegItem, 30, 0, 10, 50 ), + ( self.upperLeftLegItem, -10, 32, 150, 80 ), + ( self.lowerLeftLegItem, 30, 0, 70, 10 ), + ( self.torsoItem, 0, 0, 5, -20 ) + ] + self.animations = [] + for item, pos_x, pos_y, rotation1, rotation2 in settings: + item.setPos(pos_x,pos_y) + animation = QtWidgets.QGraphicsItemAnimation() + animation.setItem(item) + animation.setTimeLine(self.timeline) + animation.setRotationAt(0, rotation1) + animation.setRotationAt(1, rotation2) + self.animations.append(animation) + self.animations[0].setScaleAt(1, 1.1, 1.1) + + self.timeline.setUpdateInterval(1000 / 25) + self.timeline.setCurveShape(QtCore.QTimeLine.SineCurve) + self.timeline.setLoopCount(0) + self.timeline.setDuration(2000) + self.timeline.start() + + def boundingRect(self): + return QtCore.QRectF() + + def paint(self, painter, option, widget=None): + pass + + +if __name__== '__main__': + + import sys + import math + + app = QtWidgets.QApplication(sys.argv) + + scene = QtWidgets.QGraphicsScene(-200, -200, 400, 400) + + for i in range(10): + item = ColorItem() + angle = i*6.28 / 10.0 + item.setPos(math.sin(angle)*150, math.cos(angle)*150) + scene.addItem(item) + + robot = Robot() + robot.setTransform(QtGui.QTransform().scale(1.2, 1.2)) + robot.setPos(0, -20) + scene.addItem(robot) + + view = QtWidgets.QGraphicsView(scene) + view.setRenderHint(QtGui.QPainter.Antialiasing) + view.setViewportUpdateMode(QtWidgets.QGraphicsView.BoundingRectViewportUpdate) + view.setBackgroundBrush(QtGui.QColor(230, 200, 167)) + view.setWindowTitle("Drag and Drop Robot") + view.show() + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/dragdroprobot/dragdroprobot.pyproject b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/dragdroprobot/dragdroprobot.pyproject new file mode 100644 index 0000000..587484a --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/dragdroprobot/dragdroprobot.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["dragdroprobot.qrc", "dragdroprobot_rc.py", "dragdroprobot.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/dragdroprobot/dragdroprobot.qrc b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/dragdroprobot/dragdroprobot.qrc new file mode 100644 index 0000000..b0969d2 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/dragdroprobot/dragdroprobot.qrc @@ -0,0 +1,5 @@ + + + images/head.png + + diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/dragdroprobot/dragdroprobot_rc.py b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/dragdroprobot/dragdroprobot_rc.py new file mode 100644 index 0000000..b52c752 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/dragdroprobot/dragdroprobot_rc.py @@ -0,0 +1,975 @@ +# Resource object code (Python 3) +# Created by: object code +# Created by: The Resource Compiler for Qt version 5.15.2 +# WARNING! All changes made in this file will be lost! + +from PySide2 import QtCore + +qt_resource_data = b"\ +\x00\x00:|\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x84\x00\x00\x00\xb1\x08\x04\x00\x00\x00\xaf\xfa\xdd2\ +\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x00\x07tIME\x07\xd6\x03\ +\x10\x0a1\x18\xc7\xacb\xef\x00\x00\x00\x1dtEXt\ +Comment\x00Created \ +with The GIMP\xefd%\ +n\x00\x00\x00\x02bKGD\x00\xff\x87\x8f\xcc\xbf\x00\ +\x009\xe4IDATx\xda\xd5\xbd\xd9\xb2]\xc7\xb5\ +\x9e\xf9e\xe6lW\xbb\xf7\x066\x00\xf6$\xa8\xc6u\ +\x8e\x1daY\xf2E\xd5E]T\xd1\xe1\x8b\xba&\x1f\ +\x81z\x04\xea\x11\xc8G\x10\x1fAz\x041\xea\xae\xae\ +|\x8e\xe3\xd4)GX\x16M\x1cQ\x02\x89nw\xab\ +\x9d}\xa6/r\xcc\x5cs-l\x10\x0dI\x85\x0b\x0c\ +\x92\x00v\xb7\xd6\x98\x99\xa3\xf9\xc7?\xfe\xa1V\xfc\xb8\ +\xbf\xdc\xe0\xf7*\xfc\x9d\x02,J~?\xfcSK\x07\ +\xc4\x18*\xda\x8f\xdb\xdfr\x19\xfd&\xfe\x9b\xfc\xa6\xa1\ +\xc3\xde\x8d\xee\xc5h\xc0\xe1\x00\x15\xbe\x9b\xda3\xf9\xff\ +\xd4\x86\xf0/\xdb\xc9[wh\x1c\x96N\x8c\xd2|z\ +\xf1IAM\xca\x98\x88\x925[\x1c\x09\x19\x0aKB\ +N\x8d\x05R&\xe4*\x12\xf3)\xf9\x09\xea\xe0'\xbd\ +\xbc!\x22\xfef\xbf\xfa\x0b\x01\x1a\xb0h:\xca\x8f\xb7\ +\xbf\xad\xb1T\x94lQ\xa4(\x1a6\x5c\xb2$&\xa7\ +\xe2\x8a\x0a\x03\xb4\x14hbr\xe6\x1c\xbb9\xb9\xca\xe4\ +\xad*9\x1d\xdf\xef\xd7\xdf\xd0\x10jp\x84-\x0d\xd5\ +\xdd\xf2\xabK.\xa8\xe8h\xd8r\xcc1s\x1c\x0b\xce\ +\xd8b\xd1\x94\x14\xc2{\x85\x9a\x0e(\xdd\x8a\xfbl8\xa3`\xc2)\ +34\x11[V\xac(\xa9)i8c\x83\xe1\x981\ +-\x96\x0c\x87\x01j\x1a\x14\x19)w\x98s\xca\x09\xe3\ +\xf7\xd3{\xe6{;\xcb\xe8\xd5\xdf\x9cz\xea\x8d\xf6\xb7\ +\xbfC\xc9S\xe2\xc0U\xb64\x1f\x17\xbf\xdd\xb2\xa1\xe4\ +>\x1d\x96\x11c\x124\x86+6\x5c\xb1f\xcb\x96%\ +%WL\x99\xd3\xf0\x98\x16ML\xd3\xc7\x16\x22fL\ +\x80\x05k\xd6\xcc\xbf\x9a1W\x99D!\xff\x1a\xa0\xc5\ +\x1c8\xd3\x1f\xe1D\xb8gX\xdcI6\xe0\x7f\xf5A\ +N\x0dND\xcd\x85[Rr\xceC.\xb0\x8c\xb8\xc1\ +\x18G\x83C\xb3\xe1\x82\x15\x1bJ\xb6T(\x12b4\ +\x1d-\x00\xe7\x00\xc4\xa4\xa4\xc4\x18nb\xd1Dd\x9c\ +\xf0&\xb7xS\xc5\x98\xf0\xca\xdc\xde\xef\x86\xa1[\xfd\ +\x18>b\xdf$>\x18j\x1c\x0d\xb5\xb3\xe8\xcb\xf4\xa4\ +\xf7\xed\x0d\x06G\xf5\xe99\xe7\x94<\xe0K\x22r\xc6\ +(\xd6,hHI\xb9\xe2!\x17\x944X,s:\ +:\xac\x18\xb8\xa3\xa6E\xa1\x18\x13c\xd9\xb2\x92\x8fk\ +\xe6\x9c\xf1\x0e\xb8\x19\xe3_\xeb\xcf\x15\x86\x18\xb5\xf7P\ +\x86g\xf7zc|\xcf\x131\xbc\x97\xed .\x94w\ +\xb7_\xadQ\xc4\x8c/''\x11\x8e\x0eC\xc9c\xf7\ +5\x8f\xd9\xf0\x98\x87$\xdc\xe6\x84\x96K\x1a&\xcc\xf8\ +\x86%\x17\xac\xb0D$\xc4\xa4(\x8c\x98\x01\xa0\xa2\xa2\ +!fLLK\xcd\x82\x88\x84\x08H\xb9\xcd\x1d\xde\xe1\ +\x84\x13r\x12r\x95`\xb0rU\x86y\x86\x1b\xc4\xaf\ +\x1f%j\xa8p\x19,\x0eMzO\xab\x09kw\xc1\ +\xf9\xf1\xc8\x1d3U1\x9b\x0f\x1e\xfd\xe1k\xce\xb9\xe2\ +\x9c\x0d\x13@\xb1\xe015\xc78\x9e\xf0\xdfh\xb1@\ +B\x8cO\xa93r\xa0\xa2A\x11ai\xa9\xd9\xb0\xc1\ +\x88\x07\xf2\x97\xa7\xa5\xe6\x9c\x86)-\x1d\xc7\x1c\x01\x8e\ +n\xcf\x87\xb9\xe7\x86\xd8\xe8\x87\x88\x07Jn\xaf\xa5\xb8\ +\xbb\xf8\xaa\xc6\xa0h\xb9\xf1Y\xc5\x9a\x05\x09%\x85\xcb\ +x\xcc=\xee\xd3\xb2\xe1\x09\x969\x8e+\xb6l\x99\x10\ +q\xce_)1$h\x1c%\x0bZ&\x8c\xa8\xb1l\ +(\x81\x08GMEA\x87&#F\xd1\xe1Hq@\ +\x89\xe1K&\x9c\xf2:\x11c\x0cJ.\xd5\xbe\xb3\xfe\ +Q\x9c\xa5\x93<\xb1/\x86b*\xce\xdd7\xacpT\ +,\xb9C\xc1\x8a\x12HH1\xacy\xc2\x0aE\xc1\x05\ +59\x19\x1d\x90\x12Qp\xc9\x92\x11\x96\x96\x8a\x92\x9a\ +\x0e\xcb\x1c\x83\xa6\xa5\xa4\x06\x14)\x96\x8e\x0e\x87&\xc2\ +\xe0\x80\x84\x8c\x94\x88\x8c\x9c-\x19G\xbc\xc5\xff\xc2O\ +9Q\xd1\xc0G\xb8\xa7j\x11\xf5C\x9e\x08\x9f\xda\xb6\ +t\x1f\xb7\x9f\xdac\xc7DU\xff\xe0\x1d]\xc7\x15\xdf\ +r\xc1\x96\x05+j\x1411\x13\x1c\xd0Qa\xa9\xd8\ +p\x8c\xe2\x84#\x9e\xf0gj\x8eh\xd8\xb2dCC\ +L\xce\x88\x86\x8a\x8e\x16\x8b\x95$\xcc\x07h\x034T\ +\xf2\xd2c:\x1c-%\x13\xa0\xe4\x9c\xc7\xdc \xfd\x87\ +\xd1\xaf\x8cD,\xf7}\xf3\x88\xa7\x13\x94\x0e'_\xe0\ +\xd0@Mq\xd1\x1c\xb7\x94\x94t\x94n\xc9#\x1eq\ +\xc6\x86\x0a\xcb)\x96\x92\x92\x05\x1bj\x1c7\x982\xa1\ +e\xc9\x96\x88\x11\x0d\xff\x9a\x9c\xff\x8f\x7f!bB\xc9\ +_h\xa8Qd\x8c\xa4\xe6\xachhH\xc8\xb0Tt\ +\xe4D8\x222\xa0d\x89\xc2\xe2\xe8\x980\x22aL\ +DF\xc4\x92\xc7\x8c~\x19\xdd\xcd\xef\xa9g\x84J\xf5\ +\xaa>B\x85\xcc\xc0\xed\xfdM{ws\x5cR\xb3a\ +A\xc1\x92K\x1e\xb3\xa2\x15\xff\xfc\x98\x96\x825\x05\x9a\ +1cFh6\xacY\xd11\x22\xe5\x94oYr\x81\ +\xa6fIA\x81\xc3a)\xe9\xa8I\xd8b\xe9\xd0\x18\ +q\x93q@,*\x14\x8e\x1b\xf2\xd1\x0cCK\x87\x22\ +''!\xf1\xce\xf4\x9e\x1b\xbca\xf5}N\x84\xba\xa6\ +zT\xc1\x03\xb7Tw/\xbfz\xcc\x9a\x8a+\xceX\ +\xe0\xb8bAK\x8c\xa2\xa4\xa0\xc0\xd2\xd0\x00)3f\ +,\xe9\xc4\x03$\xa4\xe48\xfe\xcac\x14\x8a\x15k\xc9\ +\x0b\x15\x96\x9a\x96\x96\x94\x0c|\x00&\xa1@\x01\x11)\ +\xd0b\xe9\xb0\x92\xbe\xa5\x80\xc6\xd2\xb1e*\xaf;%\ +\xa5qwTD\xf4\xc2\xb9e\xf42.R\x85\xff\xd6\ +\xac\xddC.9gK\xc1%gl\x18Q\xca]\xae\ +Y\xb1!E3\x22!&B\xb1a%?\xd0G\xff\ +\x8eoY\xd2\xe1(Y\xe2\xc8\x05\xab\xf0~@\x039\ +\xa0\x88\xc8\x18\x91\x92\xb0\xc0\x90\x12S\xb1\xa1\xc5R\xd3\ +\xa1p$\xc4@K\xcd\x16E\xc1\x15W\x5cr\x83\xad\ +\x9b2#W&\xa4\xdd\xdf\xdb\x10\xee\xe0O\x1dK\xf7\ +\x90\xaf\xd8RR\xb3\xe6\x92\x15\x0d\x1bj\x1a\x1a\xc9\x03\ +\x0d\xa7(bF\xc4\x94\x5c\xb0\x22\xc6\x04\xef]\xd3\xb0\ +%f\xcc\x86Fp\x06EC\x85!&\xc6\xa0Y\x89\ +\xd9\xb7\x8c\x88\xe9\xe8\xd8\xd2\x90\xd1R\xe1\xe4\xcd\xbbA\ +M3%\x92\xef\xdc\xd0p\xc9\x827x\x8f\xd3\xdf\xe5\ +\x1f\x99k\x11\xac\x974\x84\x1b\xfc\xd7\x07\xca\x8e\xb5{\ +\xc8}.\xe4G\xaeYQ`\xb9\xa0\x91\x808bD\ +\xca-*\x1a\xf1\xf0\x15%\x11\x84\x97\xad1\x01l\xcb\ +\xc8P8R\xa0\xc3\x11\xcb\x19\x8aPr\x99Z\xc9\x1a\ +|D\x89\x80\x8c)[y(-V\xaa\x92\xfe\x12X\ +6\xb4\x8ci1\xc4\x1fE\xa8\x83*\xe8\x15\x0c\xe1\x06\ +\xa6\xd0\x929l.\x1e\xf1\x0d\x17t\x14l(\xd9\xb0\ +\xa1\xa0\xa5\xc4a\x18q\xcc\x9c\x1cC\x22a\xb2\xa4\xa6\ +%\xa1#&#\x0e`\x9d\xa6\xc0\x91`\x80\x8eN\xae\ +\x81\xcf\x12\x224\xb7H\x81\x15+Z4\x8a\x86\x9a\x82\ +\x98\x04\x85\xa6\xa6\xa1\x93\xbc\xc21&a+>%\xc3\ +Q\xb2\xe5&\xed\xc0\xaf}\xef\xf0\xe9\xc2\xbfJ\xfe_\ +\x1c\x9fqA\x85\xa5\xe0R`\x12\xff\xec\x0d#nq\ +\x9b\x9c\x92\x15\x1d\x0d-%k\x1a\x22R\x14cNH\ +\xa8YS\xd2bh\x80\x8c\x9a\x12\xc5\x98\x92\x98D\x0a\ +70lI\x18\x01\x8e\x06\x85\xa1\xc6`\x88\x89\xe8\xa8\ +X3\xa1\xa1\xa2eCGMJ\x07\x82Xu4T\ +|I\xc4)S\xa7\xd5\xee\xb4\xbcr\xd4\xd8A\xe5\xfe\ +\xd0m\xef^~\xf5\x84\x82H\xea\x8a\x8a\x85\xd4\x80-\ +\x0d\xb7x\x93c4K\xceXp\x8b\x86\x92\x12\xc8\x99\ +0f\xc6\x881\xb0A\x13\xd3\xb1\x06\x1a\x1a49\xe0\ +\x88P\x18\x22\xa9^[\x14[JZ**\x09\xdd\xb7\ +\xd8\xe0\xc8X\xb1%e\x83\x96\x1cSq\xc5\x869\x9a\ +D\xa2\x86\x22Bs\xc1=2\x227W\xec]\x8d\xeb\ +`\x84\xe8\xc5\xa2\x857H\xc3\xfa\xabs\x9ep\xc9\x9a\ +\x86BR\xe1\x1a\x87!\xe7\x16\xb7\xb8\x85b-)\x8e\ +\xcf\x04cb\xc6\x9cp\xc4)\x19\x09\x0dK\xb4\x9c\x06\ +\x0dT8I\xd5T\x00cA\xa1q(24\x19\x05\ +\x15-s\x22\x0c\x15\x1111\xd0a\xe9h\xd1\x82P\ +t8j\x898\xb1\xc0\xbdK.9\x11,\xfc{E\ +\x0d5\xb8\x1a\x96\xea\xd35+\x96\x5c\xb1\xa6\xa1\xa3\x0e\ +\xb9\x7fJ\xc2\x0d\xa6\xf2,\xbdc\xad%\xce'\xdc\xe0\ +5\x8e\x99\x13\x11QKG\xa3\x22\x95:\xa3\xa3\xa5\x93\ +\xd4\xbb\xa3\x13\x5c\xa3\xa3 e\xca\x98\x94D\x12\xa6\x8c\ +\x84\x05\x8e\x91\x9cO%\x91C\x912f\x85\xa5\xa5\xc0\ +\xd2\x92\x12I\x0ds\xc6\x9c\xd4E*\xf9\xbeQC\x0d\ +\xf0\x06\xdf~\x89\x80\x92\x92\x88\x9a\x1aH\xc9\xc8\x89I\ +\xa9\xa9\xe4+6\x5c\x91cHI\x98r\x93\x1b\x1ca\ +0\x18\x14S \xa3aCJLAECM\x87\x91\ +S\xd6\xd2a\xb1h\x1aZ\xa9B3\x14\x1b4\x19\x15\ +\x0d\x19\x8e\x82X\xaa\xd5\x92N\xea\x93\x86Zj\x9d\x96\ +\x18\x83\xe3\x82\x87\x8cH\x88\xdcL\x99W/\xba\xdcA\ +\x87\xaa\xa1\xa4\x09]\x84\x86\x82\x0a\x183%\xc21\x01\ +\x1a6T\x94l\xa8\xc9I\x98s\xc4\x11'\x1c3\xa6\ +\x22\x12\x18%\xa7\xa6\xe31cr\xc1(\x155\x11%\ +m\xf8\xfe\x8a1\x8a\x08G\x85\x0d~C\x03\x1d\x86T\ +J9\x0f\xf0W\xb4\x94\x8cp\xe1\xba\xb4\x186T(\ +rRbR\xa2\xdfM?z\xc5Z\xc3\xed\xfd\xde\xd1\ +|\xbc\xe6\x9cK\x96\x14\xb4h)\xa5R&Lq\xd2\ +~qlyLM\xca\x11\x13f\xdc\xe1\x94\x19SF\ +$\x18\x01T\x1c\x09\xad<\xf1\x92\x15\x0b\x96\xac\xa9(\ +qt@\x14 :\x1f#\x1c%\x96\x96\x88\x0d1\x8e\ +\x92\x08C\x22\xd7(\x17\x8f\xe3B\x81\xee0h\xe9\xa3\ +\xb5l\xb8`\xc4\x09\xb3\x0f'\xdf\x99hG\xcf\xf3\x0f\ +H)dY\xfc\xf6\x8c3\x96\x14l\xd8\xd2Qc\x18\ +3f\xce\x98\x06\xcbC`\xcb%\x15\x19GL8\xe5\ +\x88\x9b\x1c\xf9\xa3\x89&\x0b\xd8v,\x00}GK\xc1\ +\x8a%k\x1a\xbe\xa5\xa5\xa1\xa6\xa6\xa0\xa0\xa2BI8\ +\xf4\x10m\xcb\x8a\x12\xcd\x86\x98)\x09\x0d-[R\x0c\ +\xbe\x01\xe8\xaf\xad\xc1JD\xf3\x0es\xcb%\x19\x0bN\ +\xbf\x8f\xb3\xec\x9bi\xdey]r\xc9\x06+\xdf\xbe\x22\ +%!f\xca\x84\x14\x03\xfc\x99\x0dk4\xa7\xbc\xc1\x14\ +\xcb\xebb\xa4Hz\xdc\xb9T\x11J\x92p\x1f\x8d&\ +L\x98\x0b\x1c\xe7k\xcb\x82+.\xd9\xd2\xa01tX\ +\x0c\x13F\x5c\xd0\xd1\xa1\xa9p8\x12\x14[j:\x12\ +\xc0\xa0\xb1h)\xbf\xac\xb8P_\x9a\xd5\x18.X\x7f\ +\xbf\xa8\xe1\xb0\x18\x0cW\xee\x1b\x16X\x12\xd6<\xe2\x9c\ +\x0a\x85b\xc61)\x1b\x1ep\xce\x9aK \xe1\x98\xdb\ +\xdc\xe6\x98\x84#f\xcc\x88h\xb1D\xc4\x12\xe3\xfb\x80\ +\xec\xdf\xa2\xc2\x90K\x1a\x95SQ\xd0`\xa9)(\xb9\ +\x92\xe4\xbc\x93@\x1b\xf1:5%\x9a\x92Kr\x14\x11\ +1\x06CB\x84a-\x10NC#\xc5yBGM\ +N\xc9}r^ws\xa5\xf6J\xc7\x97\x0a\x9f\x1aG\ +\xc5\x15\x0f\xd8\xd2P\xb2\xe6\x9c+\x22f\xdc\xa6\xe4[\ +*J*J\x1a\x0c\x09\x13nr\x9bS\x8eH\xc9H\ +B\xd3WK^\xe0\x06\x08\xb2\x1ep\x1a\x14\x9a\x13j\ +*\x81ZJ\xc1\xacJ\x0aJZ:\x1c\x09[\xb6$\ +\x18\x22 &\x11\x88\xd6\x10\x91b\xa4[\xdeIn\xea\ +A\xc4\x1e\xff~B\xca;p1;Q\x07\xdd\x96\x17\ +0\x84\x95c\xdc\xb2vO\xf86@d5\x96\x9c\x9b\ +d\xac\xb9`%WH\x913\xe56o\xf2\x1a7\x98\ +\x08\x9a\xe0?\xa21!7\xdd\xfd\xab\xa5\x14Rh,\ +\x0eED\x22e]C\xc3\x11\x96\x9a-[\xd6\x14\x12\ +\xa8c\x0a\x22\x12:\x14\xa9d1\x8aX\x8a\xfb\xde\x9b\ +\xb5t\xb4lqt\x8c\x04\x1b\x1dq\xc1\xcd\xe3\xe93\ +\x0b\xf2\xe7\xe6\x11\x96\xfa\xe3\xad`\xc7\x0d[Z\x12f\ +L\xc9\xb9`\x8bf$!\xad%\xe7&os\x87c\ +\xc6\xe4$\xb4by\x1f-vgL\x1d\x9c\xb8\xde`\ +\xde\xe7\xf7m\x01E\x8e\xa3c\xcc\x96\x945U\xc0 \ +\x0c\xb1t@\x8dT%\xbe\xfb\x11\x0bn\xddR\xd1\xd2\ +RH\xd7]3\xe6\x84\xdb\x9c2\xfe\xcc\xbc\x8a\x8f\xd0\ +\xf2\x8d\xca\xdf\x96\xc0\x845W,h\x18\xe1\xd0,y\ +\x82\x22\x11\x1f`\x88x\x9b\x9b\xbc\xce1\xa9'~\xd0\ +\x02\x9a\x98H^\xa8\x0a\xff\xf4&\xde\xb1]\xf4\xa0\xa8\ +sRv94Z\xcc\x18S\xb1\xa4\x91\xaa$\x93\x0b\ +\xa9\x89\x04\xcc\xdd\x99\xcfI\xf5\xd1\xe7\x14\x8a5\x09'\ +\xfc\x8c7?\x9b\xfe\x86\xd0\xf6yig\xd9}\x5cR\ +H\x82\xe2\xf1\x80\x11\x0d\x1bV\x820T\x94hf\xcc\ +\xb8\xcb\x8c99\x0aGM#/Ic\xa4\x80\xd7\x03\ +<\xa2\x0f\xcb\xc3\xeeS\xffF\xfa|\xa0\x09\x9eE\x11\ +\xd3\x08\x16\xb5\xa1\x95\xccvA$\xa7\xa1O\xcd;\x81\ +\xed\x1aq\xf2-\x8d<\x14MF\xf2\x1b\x7f^\xa2k\ +M\xf1|`\xe6n\xc3\x92s\x16\x9c\xe3\x181\xc2R\ +R\xb0\x05j*J,\xc7\xbc\xc9\xdb\xbcIB\x86\x91\ +\x00\xe6\xdf\x9a\xde3\x02\x03Z\x87;\x00\x82\xa1\x93\x0b\ +\xd4\x17]\xf1\x80\x1e\xa4\xa5\xab1bI#x\x83\x0e\ +\xde\xa5\x95\xb3\xd3I u\x18,\x8e\x8a\x12\xe5[\x8d\ +<\xe0=w\xa4\xcc n\xbdd\xd4P\xf7Z|F\ +y\xce\x9499+6\xac\xa9I\xa8\xa9h\xc8\xb9\xc5\ +Oy\x8fL\xb2\x84\xfe\xc6\xabp{\xad\xfc\xee\x90P\ +\xb6\x9f\xf2\xba\x80-\x1ay\xb2\xfd\xdf\xfa\x0e\xc5H\xfa\ +]\x05V\x80|\x8fO5\xf2=\xbc\xe1|F\xd1_\ +N\x7f\xb1\x1a\x1es\x8f\xbf#\xffx\xfc\xf9\xb3\xe0\xdc\ +\xef\xe8t\xf9O\xae\xb9\xef\xfe\x89/)x\xc4\x09\xc7\ +8\xcex\xc2\x96\x8eR\x90\xe5\xd7\xf97\xbc\xcf\x8c4\ +\xf8\x00\x7f\xe8\xe3\x90\xf31\xb8\x14J|\x82\x12\x1c\xba\ +o\xdf\x80\x198\xe8\xbe\xf0\xeaBBg\xa5\xe4/\xd8\ +J\xc5\xb3\x11\xc4\xbb\xa1\xa4\x12\xa6\x95\x93\xf0\xdb\x08~\ +\xf5\x10\xcb\xeb\xb4t\xbc\xcb\x7f\xe4\xdfs\xaa\x90\xcc\xf3\ +%3\xcb!`\xabhX\xd3\xb2\xa5Ea\x98`\x88\ +\x19\xf3\x0ew\x98\x92\x0d\x0erO\xd8\xd0r\xf3\x19\xb8\ +\xc9\xde\x0cC\x0e\xc3!\x1dl\x98_\xf4W\xcc\xcaS\ +\xb7Xi\x09\xfb\xfb^\x0b$\xac\xa9q\x12\xf2}-\ +\xe2H)9\xa7$\xa6\xe5\x09\xf7\xf8\x197\x9f\x09\xef\ +\xbf@_\xa3\x7f\xca1\x1d[Z)q=\xe9o<\ +\x88\x14Qx;z\xf0vw}rs`\x90>p\ +\xdap\x86v\x89\x8e\x0ao]\x853\xe4\xb3\x0e\x8d&\ +\x16(\xbf\xa3!\x11@\xb7\xe6R~r\x84!\x07\x1a\ +\x8eXq%\xc8G\xc5W\x9c\xf16\xf1\xab`\x96}\ +\xc1\x93\x90H\x09\xdd\x81\xa0\xce\x8a\x15\x09#N8\x22\ +\x0d\xb4\x8c\x9d)\xf4\x81\xd5\xd5\x9e\x11\xd8\x0byVn\ +\xf5\xfeg\x0f\x197}b\xe6\x82\x89}O4\xa2\x95\ +\xd8\x14\xb1\x91\xd8\xa1\x89\x84V`\x980\xc1b\xc9\x18\ +\xd1\xd2\xd2=\xf3\x0dG\xcfo\xe9\x18a,\xf4\x81\xac\ +'\xf5\xf9\xca\xe2\x881i\xe8\x88\x0e\x9f\xe9\xae\x05\xa0\ +\x0f(\x86\x87\x94\x82>\x03u\x83|CK\xb7\xb5\xaf\ +xl\xc8<41V\x12\xa8\xfe\xc4Y \x97\xaeJ\ +o\xaa\x9c\x8e\x11\xb79c\xc1\x8c\x9b\x1c\x93\x85\xcb\xf3\ +t\xdcx\x01\x84J\xcb\x97v\x18\x22\xb1\xbf\xffA\x19\ +S\xa6\xa4 \x8c\xb7\xdd\xdb\xfanf\xb4\x1b\x98\xf9Y\ +mZ\xff\xfc\x87\x0cl-\xdc\x19\x9f\xb2\xfb\x9a\xb6\xbf\ +b\x16\x18\xd3P\xd2\x06\xbf4\xa7dNJ\xc9\x19\x96\ +9o\x09A\xf1\x15\xf1\x08'\x00G-f\xf0\x07\xd9\ +`\x88\xc8\x980\x22\x96\x00\xe9_\xaa\x93\xecah\x8e\ +\xa1\x83\xd4\x07<&5h.\xab=j\x8f\x0b'\x03\ +\x81\x8f\x11\xc2\xb2\x22\x96\xb3\xd1\xc9u\x00%<\xba:\ +\x5c\xcc\x88\x889\x9a\x05O\xe8$+\x1eF\xaf\x97\x8e\ +\x1a\xde\x0c\x95\xf8\x09'\x04\x1fCL\xce\x84\x09)N\ +:W\xfd[\xe8\xa9=z`\x06-OO\xedqY\ +\xf4\xe0Y_G\xe5\xd8w\xad\x8e\x88.T\x16}U\ +\xdb\x9f\x94J\xc0\x98\xfe\xf07(F\xe4\xdc\xe2\x8c\x15\ +-\xe7\x14\xc1\xb0\xaf\xe4#4\x0999\x8dT\x0d\x11\ +\x9a\x84\x98\x9c7\xb8\x81\xc1\x92\xa2\xa9I\x06\x1d\xf3\x9d\ +\xb3S!T\xea\x01\xbd`\xc7k\xda\xfd3\xf4&\xfe\ +\xabZ\xc9#\x08\xd9\x86\x96\xef\xea\xe1\xb9\xfemE\x02\ +\xdfDt\x81z\xe6\xb0\x82l\xbe\x86\xe2\x1e\x8fQ\x94\ +\xb4\x1f\xa4_t\xa1\x5c{\xc9\xbe\x86\xa5\x11\x04)f\ +\x84\xa2\xc5\x11\x11\x0b\xd0\x1e\x85\xb2\xc8=\x15\x1f\x86f\ +\xe1\xa9\xa2\xeb\xbaK\xe0\xf6:l\x87\x83\x0dn\xef\xcf\ +&P\x09\xd8\xfbs\xef3\x1a4-c2,\x05\x8a\ +\x98\x96\xf6\x0fN\xbd\xa2\xb3tXjjJ\x22\xc6\xe4\ +\xd2\x7f\x82\x88\x91t\xad\xd5 \xee\xef\x07?u`\x98\ +}3\xec\xa2\x8b\xba\xa6\x02=t\xb1\xea \xf5\xea\x83\ +(!\xec\x1a\xb9\xba]0eM+L\xefJ\x1a\xcc\ +\x0d6D8\xf5r>\xc2\x09@n1dL\xb0\x94\ +\xf2\xe3#q\x8e\x96v/\xe2\xab\x80L\xeeg\x92O\ +g\x11\xbb\xe6\xf2\xf0I\x0e\xa3\xca\xae\xed\xf84\xb3\xd3\ +`1\x82Y{\xaa\xa1#\x11\x9e\x96\xa6#\x92\x14\xdc\ +\xa2\x89\x89I%\x0e\xbd2?\xa2G\x8f\x8e8fF\ +\xcbF\xf2\xb7h\x8fq\xab\x0f\x12\xec\xc3t\xfa\xe9\xf4\ +\xf9\xba\xc2K\x85\xb9\x9c\xde\x99v\xe1\x9a\xa8k\xd2p\ +'\xa0\xad\xa1E\x13\x85A\x986`\xd9=.\x12\xc9\ +\xe9\xed\xd3>\xfd\xf2\x86\xf0\x00kGN\x82\xa1\xa2\x96\ +\xaa.\x92&\xec\x0e\xdb<\xac\x13\xfah\xc1A\x03\xf6\ +\xbah\xee\x0eH\xc2\x87y\x86\x1ad\xaf\x87Y\x8e\x7f\ +\x1d\xadd\x98\x0c.\x97\x12\xd2J\xcc\x88\x9a\x86\xfa\x99\ +\xd4\xd3\x172D\xcc\x18C\x1c0K'\x00\xaa\x0b\xd4\ +s\x06\xfc\xaa\xdd\x91\x1f\xbaJ7\xf8\xa8;\xe0F\xbb\ +\xa78\x9b\xbb\xb3\xa1\xf6\xd0\xad]r\xd5\x0dLa\x88\ +$\xae\xf4\xf1\xc0\x05<\x149\x119%\x1b\xd64\xa4\ +\xd7\x9aB\xbf\x88!\x22\x12r\xb2\x10\xa5=\x0f\xd2\x06\ +\xb0\xcd\xc9\x8bP{o\xfa\xb0\xbe\xd8\xb5\x93\xdd5\xc3\ +Gn\x10\xf8^\x84\xda\xa6\x0e\x9c\xa8\x1e\x94{\xc3\xbc\ +\xc5\xd2\xd1\x08\xbe\xbdfC\xf3\x01/\x8bPY\xf9f\ +\x11c&l\x89\x85\x1a\x94a\xc8\xc9\xc9HB\xc6\xa7\ +\xc2\xad\x1b\xbe\xf1\xc3\xcc\x80\x01[F\xc9\xedwRN\ +ij1\x96\x1e\x9c\x10\x04\x01\xdfuC\xfa\xf6\x90\x95\ +\x9c\xa1\xa5\x95\xd75$\xb0;i4;\xc9\x83#b\ +\xe68\xd6T\x7f\x98\xa8W\xa2\x17z2NBA#\ +\x00\x98\x96\xbe\xb6\x13\x94H\xbd\xf0\xac\x8c;\xf0\x08.\ +\x14R\xee\x9a\xabr\xf8\xa7\x1e\xacw!\xc7\xf0\x81\xbd\ +\x0e\xfd\x8b\xdd\xd5\xdae\x90V\x00\x1e+\xae\xb3\x09\x90\ +\xe0K\x1aB\x13_f\xc7\x09J\x9c\xa4\x15B\xb1\x11\ +\x0c\xc9\xed\x11;\xaeK\x8f\x87oi??\x19^\x14\ +\xb7g\x9eCC8q\x966T\x16\x86\x8e\x8eZZ\ +\xd1Z \xba\x9d\xd7pr\xeaZ\xaa`\x8aV\x98W\ +\xd7=:\xfd\xddO\xd0\x01\xd1G\x89\xdc\xb5\x96F\x0a\ +.5x6\xfb\x07\xdf\x1d R\xd7\x99\xc1\xed\x99\xc0\ +\x0e\x00;+\x7f\xe3\xa4\x1e\xd97\x95\x0b\xe0\x1d\x82\x88\ +:ZZ\xc1&\x5c8+*\xb4\x8f\x9d4\x96[\xb9\ +L\xdd3\xc9\xa7/\xc0\x8f\xd0_h,\x15H\xac\xde\ +\xa59\x1c`X\xea\xa9\x13\xa5\x9e\x82g\x0e\xcd\xe2\x0e\ +\x80\xfd\xe1\xef\xd53\xdaB\x04:\xba\x11lB\x07\xcf\ +B\xc0\xcc;\xb4\xf4H\x9c4\xa1\xf4^\xd7\xed\x15\x08\ +\xa7\x96\x86\x92H\xea\xffXR)\xbd\x973\xee\xa7\xad\ +\xea\x19f\xd8\x9f\xad\xeaa:up\x1d\xd8\xab6\x86\ +\x95\xcb\xae\x9d\xe3$\x9b\xcc\xa5\xdf\x89\x10\x0d\xf5\xe0\xea\ +\xf5\xb5\xb3\x91\xb7\xaf\xbf\x83\x97\xfdB\xe0m'\xd8O\ +\x0b\xc2\x80\x8f\x9eB\x1d\x9e\x9e\xa1R\xd7\xfcY\xed\xa5\ +\xd6}l\xb2RJ\xbbA\x0e\xa1\xf6\xfa`\x9e\xff\xa0\ +\x03|g\xe5m\xfb\x8eg\x89\xa5\x19D\xb0]3\xc0\ +\x8a\x89zD\xbd'%\xbd\xa2!z'\xd5\x84\xe7\x12\ +\x89\x85\xf5S\x9e\xe0\xe9\xa2\x8a\xa7N\x89\xdb\xcb\x00\x86\ +9\x81\xdb#\xa8\xec\x17m6T\xa8}\x8f\xb3\xef|\ +j,\xed\x00\x96U\x03\xe7\xb7\xc3P#9\x1f\xf6e\ +3K\x1b\x92\x14K\xc3Hj\xceX|q,cG\ +]\xc87\xfc\x8b\xeahe\xd6\x8a\x81/Q2\xdf\xed\ +\xf9\x8fV.\x96\x0d\x1fi\xa8\xa9B\xfe!NZz\ +\x97J\xee\x7fG#\x90\xa0\x05\x19\x93\xf6\xf0@BK\ +#\x8e<\x06i\x15#|=#\x8c\xfe)-\x15k\ +!\xa8\xbc4\x9c\xef\xe8\xee\xfa\x16J'-]=\x80\ +\xdc\x875j\x86\x13\x9a\xb8\x91\x82W\x87\xca\xd0\xec\xc1\ +v\xfe,\xb5\xa1\xe5\xdb3j\x86\x10\xcd.g\xd0\xf2\ +\xffH`9#(Y)\x83\xb6\xbe\xac\x8a\x83ct\ +\x12#\x08\xdf\xadgb\x9b\x80\xbf\xaa\x97\xcd#\x1c\x96\ +\xf6w\x95\xb4\xe1=!\xa3\x0b\x17d\x97R\xfb\xe3\xd6\ +\xca3\x89\xe8\x84\x14\xe0\x065C,/\xc7\x0e\xfc\x87\ +\x09\xc77\x92\xd6\x9d\x0d\x9f_\x87\xf8\xa1\xa4s\xa6\x06\ +n\xd6\x9b<\x09\x0dg-o\xbd\x1b\xc4\x1d\x1b\xfc\x89\ +\x11\xfc:z\xf52\xdc\xe1~\xe9ogJL$\xbd\ +\x81\xec\xe0\x9b:,k\x10\xdf\xd1HsX\x87RY\ +cHP\xd2\x1a\xea\xf1\x84\xde#4\x92Xw\x83H\ +\xafB\xbe\xb8\xff{'\xcc(- \x0c\xf4:$Z\ +Jp'\xa7\xb5\x16#(1BC>\x98\xfe{\x89\ +\xab\xe1\x06\x18c\xc2X\x80\x8d\x8aV\xa6\xfbM\xf8\x11\ +J\xe0\x90\x84\x14-\x94A?\xd4\xac\x85\x11\x97\x91P\ +\x910b,\x06\x88\x04i\xd6t\x94\x01\x05\xb7\x83\xe8\ +a\x07\xa9\xb4\x15\xb2\x80\x91\xb3\x86\xd0\xd4}\xc7+\x0e\ +Mg\xa4'\xee\x06s>\x04\x94\xdb\x8f>\xb8\x97G\ +\xa8v\x9f\x94\xc9E\xf0\xe0WJN&\x13\x176p\ +\xe23\xe1\xc1\x9e\xf1\x90+\xc1\xb1z\xb7\x97\x92\xf2\x90\ +\x11sfD\x92\xa6\xcf\x88\x992\x16'\xaa\x07Y\x9f\ +\xdb\x8b\x19\xfb%{+\x97\xae\x939\xd0F\x1e\x94\xa1\ +\x0c\xaf\xb7\xa3\x91\xecb\xe7\xaa}\xf8M\xbe\x0fB\x85\ +\xf45[q]\x09S\xa6\x8c0\x02\xec#.q\x8d\ +\xa3\xe4\x82oyB%-|?\x01\xe8i^k\x12\ +\xc6\x8c\x85\xd5\x92s\x87\x9c\xdb\xdc\xc4P\xa1\x19\xc9t\ +\xe7!\xb6\xb9\x03d\x94p}\x15\x9a\xad\x0c\xcb\xf8A\ +\x05?\xf5\xd3\x08\xc8\xbf3\x87\x0d\xd7\xc4\xb3&\x22a\ +|^\x97\xa9>\xc7Y\x0eYo\x9d\x1c\xe6\x8c1\xb9\ +\xb8.\x1b\xfa\x97\x8a{\x14\x5c\xf0\x80sj\x91\xc5\xf0\ +\xdc\x99\xad0\xac3\x1aa69\x12\xc6(F\xe2\xea\ +\xae\xe8\x980\x93.k*\xa0\xb0\x1d\xe4\x95\x08;n\ +)\xfd\x95%\x0fx\x80\xc2\xb2e\x0b\x8c\x19q\x84!\ +\x13\x98\x06\x14\xd5 \x87\xf0EZ\x14b\xdewF\x0d\ +{\x00\x91:\xc9\xd9{\xbeA$\x938S2\x0c\x11\ +\x0d-9\x9a\x9a\x98\x96?s\x9f\x0b.\xa8\x889\xe6\ +\x84\x09\xb0\xa5\xa1\xe1\xb1\xd0JR eJ\xc1\x9a\x88\ +\x91P\xda\xad(DLyD\xc6\x9c\x13\xe1\xca8\x1c\ +5)F\x98\x96%\x9a\x15\x8fY\x12c8\xe3\x01\x8f\ +he\x84\xa5\x22a\xca\x9c\x88)\xb78\x0a\x19\x8a\x1b\ +\xcc\x00+\xa6\xd4$\xcc\x07\x19\xed3\x0c\xa1\x0f\xda}\ +Z2\xb1\x86:8\x9d($R\x9e#\xe1\x7f\xe0\x92\ +K\x1e\x00\x093\x12N\xb8\xc9\x94\x94\x8a\x9a-\x0do\ +\xf03\x1e\xf2\x84+,\x8a\x8c\x09)\x96%\xaf\xb1\xe2\ +B2\xbe\x9a\x05\x05s\x8ct\xaf\xad\xa4\xf0\xc3\xb3\xb9\ +\xe2\x8co\xb9@\xa1Yq\x8e\x9f*\xae\xa8(\xd8\xb0\ +bI\xc4\x98%\x13Rr\xc6\x02\xf472\xc6\xc0\xc1\ +\x95x\xc1\xab\xe1d0\xa1gO\x1b\x0c\x85p\x99\x12\ +\xe9\x80\x1a\x8c\xf4\x1b\xcf\xf9\x92\x0b\x12\x22nr\x83[\ +\xcc\x89\xe8\x18\x13QS\x11\xa1y\xc4=\xbe\xe2\x9cs\ +\x96\xdc\xe0\x98\x88\x965%1%\x11%\x15\x0dk2\ +\x89#;j\x88\x0d\xdd\xae\x96\x15W<\xe1\x02E\xc4\ +\x96\x0d-uh6UTl\x88\x18\xb3%#c\xc2\ +\x94\x19c\x22\x0a\xac\xc8\xf4\xc8I\xbf\xd4\xcf3\x84=\ +\xf8\xb0\xc5\x12\xe3X\xf3-\x8fPL%\x06\x18\xa9?\ +\x95\xcc\xdfD\xacy\x02\x8c\x18s\xc2\x9c)\x09--\ +9\x193\xe9,\xdcb\xc41\x0f\xf9\x9a+ fD\ +\xc7\xa58\xcf\x86\x0eKLJN\x8e\xc1I\xc1\xdc\xe7\ +\x14%\x86\x8e\x82\x0b\xae(\xe80\xc2t\xd8\xd2\xe2H\ +\x980bC\xc9E\x80\xf2K\x0aV\xb4\x18&Dt\ +2\xf3#\xc8\xea\xbdW\xe0Yj\x14\x9b\x0f\xbe\xe4?\ +\xb3!\xe5\xef$\x19v\x18\x91<\xb1BQ\xb7\x8c\x19\ +\xf1.S\xc6\x92<\xf9c\xbd\x95\xb4gK\xcb\x94\xb7\ +\xb9\xc3\xbb<\xa1 &\xc7\x90\x01\x19))\x96\x12\xc8\ +\x18\x13aiB\xeam\x05\x95t\xb4ly\xc0\x05%\ +\x0eG\xc5\x8a\xb58\xc3X\x94\x03\x1c\x09\x0d\x05-9\ +)\x85$\xe4\xa7\x81u\xe9\x06\x88\x85\xbb\x06=\x89\x9e\ +\xcd`\xf0\xb5D\xf9\x87\x07\x14\xcc\x98\x852\xa6\xc7\x05\ +\x1d\x13*\ +\x0c9\x9a\x86\x94\x9c-OX\xf3:\x7f\xcf\xfbL\xa8\ +)iI1\xccI\xa8\xe8P\xd4t\x94\x94\xf2\xaaV\ +\xac\xf9\x0b\x97\xacd\x22P\x93p,\x95\x8bg\xeag\ +R^\x95\xacY\xb0\x16\xbd\x02\xc3\x1b\xfc\x8c\xb7\xb9\xcd\ +\x9c\x12\xcb{\xfcD\xe6\xfd\xbe\xf3D(\x1c\xd5\x87\x97\ +\xac\x99\x93H\x17#bJC\xc1\x96\x0c\x87\x0aHv\ +\xce\x7f\xe6\x92\x9c\xbb\xccXpNK\xce\x96\x9a\x8a%\ +\x0bR\x12\x0a\x19Yy\x8d\x11\x8a\x07\x94l\x04r\xdb\ +\xa29\x22\xa6\xe2Oly\x9b9\xd01\x95!\xc7\xad\ +\xa8\x0c,)Y\xd3\x01\x15W,\xd8PP\x86\xa6p\ +\xcb\x8a-\x17\xa1$\x1c1\xc1\x900\xe7\x06W<\x94\ +\xc1\x5c\x9f\xd9Z\x22\x22\xe2P\xca?\x07\xc5\xf6\xb7~\ +\xcb\x05[\x92\xe0\x05\x22&X\x19#2\xe4\x8c\x88%\ +e\xfdg\xbe\xe6\x94\xd7\x98s\x9f\x7f\xa2\xa6!\x16\x81\ +\x9c\x9a\x04#\x91{\xca\x84\x88\x88\x1c\xcb%[Z\xb6\ +\x14Lx\x8d\x9cK\x1e\xb3\xc5\xf2\x1e9\xd0J\x92\xa6\ +E\x84\xab\x95r\xbee\xc39\x0b9\xf4.\x10\x83Z\ +\x09\xe4\x86\x96\x8dP\xd6\xa7\xdc`\xc6\x84c\x0cJ&\ +\x00\x17\x94\x81\xec\x94\xbeH\xd1\xe5\xa4n\xeb$\xdbk\ +\xc4!A\x82\xa1eE\xce1\xb79\x92*\xf4&\x17\ +\xc4\xb4\xacx\xc8\xd7\x14\xb6\xc4!\x0f\xeb\ +\xe1\x8e\x941\x13*r2\x01ObR2Fl\xa9\ +i\xb8C\xc6\x8a\x88\x09\xc7\xe4\xd4\x5cp\xc6\x9a%7\ +\xb8b\xcb\x98w\xd8p\x9f\x0d\x11gL8\xe5\x94\x9c\ +\x88\x96\x11)\x965\x97T\x9c\xf3W\x14\x0f\xd8\xf0s\ +\x12\xfe\x85{<\x14\x91\xcf\x15\x8d\x88\xae%\x8cIP\ +t\xd4\xd4\xa4D\xe4L\xc8PT\xd4B]i\xa4K\ +\x1b\x09\xf0;\x22\x97\xaa\xb9D\x13\xfd^\x89T\x97}\ +vB\xe5p\xd8_v\xa2\xfb\x93\xc9\x13\x81\x9c\x88\x88\ +N\x9e\x87\xcf\xcf\x0c)\x1br4\x1b\x19|N\xb9\xc9\ +\x94\x89\xa4;\x055Sn\xb0\x22g\xc6\x98%%w\ +\xa8\xe4\xc7\x97hRZZ\x22n\x93\xb0a\xc3},\ +\x8a\x96\x8a\x02\xc3\x88\x13\xd6\xacXp\xc5Vr\xd9X\ +\x0e\xb7\x17\xee\xebd\xc27%\xa2\x1d\x00\xc6\x95\x8c\xee\ +[\x16\x182\xc6L\xa4\xf3\xd1\xa1\x89>z\x01g\xd9\ +\xc9)P\xc2\x7f\xa8h\xa9e\xc2\xb2\x11\x18\xafsD\x8aa\xc4[\x18jN\x19\ +\xd31gE\xc4\x11Y\x98\xddT\xe4\xcc\x19IO-\ +b\x84b\xcb\x05\x17l\xb02y:\x95WQ\xb3\xa0\ +\xa2\xa1\x0aY\xe5Z\x06\x16<\xbcW\xb2\xe6\xbfsI\ +\xf7\xa9\x83\x01\x0d\xe5\x19\xd5\xa7\xc7\x12\xdb\xc0\xb7N\xc8\ +\xa4\xe4\xed0d\x8cd\xb6\xd2\x05\xaaq\xff\xdf\x11\xad\ +\x8c\xcb\xfb\x03\xb8\xa6\x22e\xc4\x9c9\xef\xb1\x024[\ +\x8ex\x8f\x9c\x0a\xc5\x11)\xf0:W4\xccY\xa0x\ +\x0b\xc3M^\x93\xe2\xc8\x8a\xa0\xeb\x11\x89\x88\xbce\xa4\ +\x94\xd4d\x1cs\xcc9\x05G\xcc\xb9\xa4\x12D+!\ +\xa6\xa3\x10\x0d#M!\xe7\xe1\x8a\x11\x11sR,\x0d\ +\xabO.>\xd9r\xc4\x0d\x15\x7f\x97\x8f\xb0\xe8\x7fL\ +\x7fi$\xe0x\xe0}+>\xbac\xca(\x08f\xea\ +@\xf3\xf1\x0d9?\xc2>F\x93\xcaA+\xb8\x8d\x22\ +\xe1\x06\xef\xb1fE)\x99\xdd\x92\x15%#\x8e)%\ +\xc9ih8&g\xc2\xcfy\x8d4P\xd5bf\xdc\ +&\xa7\xa6%bJ\xcd\x9a\x96\x1b\xfc=o\xf0G.\ +iX\xb1\xc5\x91\x92a\x98s\x835O\xd8\x023\x14\ +\x1d%\x8e\x9a%\x86\x8a\x8a)\x1b.y\xc4\x13\x9e\xf0\ +6\xa9;Q\xee\xd9\xe1S\x13\xff*v6\xa4\xd1\xbe\ +\xd5\x87\x94-\x99\x88'2P\xb4U\x01\xaa\xc9Y\x09\ +\x0c\x97\xd1\xe1\x18\x91\x0a\xc2\xe5\xb9\xbb\x8d\xa8:$R\ +S\xae\x98\xb1`\xcc\x11O(\xf9\x09\x0b~\xca\xfbL\ +\x84\x13\xe9\x95(F\xbc\xcb\x1b<\xa0\x22%\x13$\xc4\ +\xa00\x9c\xf06_\xb2\x02f\x9c\x10\xe3\xc8\xb8IJ\ +%\x91\xc9I;\xd03;\x1e\xb0%\xa6\xe2\x18E\xc1\ +\x8a\x95\x0cp>\x13\xb3\xecY(^\x83pM\xc5\x16\ +\xcb\x14-\xe5\xae\x09\x83\x08CB\xb0\x95\xce\xe3)\x8e\ +%#\xd2\xa0`;\x22\xc7\xb0\xa6&eBMA\x1b\ +\x84|k\xa0\xe0\x989gt\xbc\xcf\x92\x9f3\x17\x08\ +0\xc2\x91p\x8ef\xc6[\xfc\x15\x87\xa2\x91\xeb\xa4\xf8\ +\x9a\x86#~A\xce}\xb9\xb4\x8e)'\xc4\x8c\xb8E\ +J\x11\xf8\x94)\x13rj\x12F\xc4\x14l\xf8&\xf4\ +F\xddw#T>\xcd\xf6\xddD\x0f\x7f\xa4LD\x04\ +\xab\x0b\xf4\x9e\xbe\x17\xa9\x03/\xd7\x90\xf0\x0b\xfe\xcc\x9a\ +\x96\xa9\xa0\xdd\x0d\x19\x19\x8e\x9cDx\xd3\x1b\xd6\xb4X\ +\x81\xe4\x96$LPT\x18\x8e8\xe1\x88H\x5cqM\ +IMLI\xc3\x88\xdbh\x0a\x0a\xa9\x14\x12JV\xdc\ +\xe0\x94\x8c\x8c\x19k\x16d\xbc\xcd\x11\x8d8\xdb%W\ +bN\xcd\x88cb&\xdc\xe6\x04\xc5\x96%5\xb3\xbd\ +\xf9\xe1k\x13\xaa.p'U\xa0g)\x99\x90\xea\x02\ +S\xc9\x86\xa4j\x9fZ\xfaSV,i\xc3\x90\xe3\x09\ +\x9a\x96\x8e\x94\x88\x8a%\x05\x8e\x94Q8\xb8\xdf\xf2\x06\ +\x89t(\x157\xe4\xda\xf9\xe2k\xc3\x86c\x1eS\x01\ +sb\x96<\xa1@\x91J\x16aY\xd10\xe3\x16\x15\ +_\x93qG\x94\xf0\x0c9%\x8aD\x86/-\x8a\x84\ +9o\xf361_r\x0e\xcc\x99_3\xe2\xb6g\x88\ +\x9e][\xcb\xb7\x84\x96\x84\x1cE-\x9d\x22\x85\x15\xe2\ +\xd0\x8e\xb2\xd3\xf7\x13\x97\xbcK\xc2\x9f\xb8\xcf\xbb\x9c\xd2\ +\xb0$\x92\xf9\xbb--\x1a\xc7\x98LZ:\x1d[^\ +GS\x921c\xccH\x8c\xa7\x02\xfb!\x91V\x8eb\ +B\x22\xd5\xa6\xa3eMBFL\x8d\x16\xbd\x02G\xc5\ +#\x22.\xa4\x8d\xec\xd5n\xc01!'#\xa7\xe2\x09\ +'\xe4\xc4\xdcb\x8ba\xc6\xe4\xfd\xf6\xc0\x18{>\xa2\ +\x07\xcf\xbd?h\xc88\x22\x13\xe1\x94r\x8fK{]\ +?\xb9\xc61\xe3]\xcex\xc4\x82\x113\xc1\x0a\x12i\ +\xca{\xca\xea\x15\x17\x94 \xc2L#F\xa2-`\xf6\ +\xc0\x80\xbe\xfb\x19\x8bZ\x89!c\x83\x96t\xde\x1b\xad\ +$!\xe7\x84\x82\x96\x9a\xf5\x80\x9e\x10K~3\x165\ +\xe5\x98\x11c\xc1\xb1\xbc\x19\xf5=\xf3\xdd>\xa2\xfbx\ +7\xa8\xd4\x0a\xfa\x90\xd2\xd2\xb0\x0d3v\xea\x19\xed\xc1\ +\x84\x9a\x093\xe6\xdcc\x89\xe3\x98\x8a\x86B\xe6\xc5k\ +\x0c-\x05\x8f9Gs\xc4L\x847Fdr\xa6\xa2\ +\x019\xd4\xc90\xdd\x8811\x05\x86T\x84?\x9d\xa0\ +\x14\xbd d\xca\x84\x92\x15\xad\xe4\xb8\xad\xcc%\x1af\ +\x8c0h\x12\x22\xc6\x8c\x04\x97\xcf\x18\x93]\xc3\x938\ +H\xa8\xb8\xa7\x05\x91\x8cI\x18\xcb\x19\xe8\x84\x98\xe3\x06\ +\xbd\xa2\xa7\xf9\xd4\x095\x96\x8c[\xb4<\xa6\xe3\x01\x05\ +[\xea0\xc8\xf0\xae\x08~F\xcc\xb8\xc5LD[{\ +\xd1>'\x1d\x8d^\x86OI\xcd3\x16q\x8d\x98\x89\ +\x08\x80Ul\x88%\xd3l\xa5\xfb\x922b-\xf5\x8f\ +\xef\xa0\xc6r1\xf5\x80\xbf\xefU2'd\xd7P\x0c\ +\xa3\xfd\xb9\x0c\xf3E\x8c\x96\x14fB\x8e\x15\x03\xf4s\ +\xbe\xee\xda\x86\x99\x12l\x19\x81\xe1f\xa2B\xd9I\xfe\ +\xd03\xa7|\xf9\x1e1a\x12\xc6\x1ct\x98\xf3\xeb\x82\ +FY\xaf\x03\xe1\x03\xe0\x98\x05\xe0\xb8\xc5ZN\x85W\ +\xa4\xf2=\x95&D\xbbJF_SrR\x226\x22\ +\xd8\xd53{\xfc\xe4W\xca\x8c\xe4yM`\x87\x22\xba\ +L\x8e\xb5\xa8\xce&\x82){\xee\xd4n\xc0L=5\ +\xee\xea\xbb\xcf9\xb0\xa5$\xe2\x88\x19[\x22\x22!&\ +\xf6}h\x07\xa4\x22\xb5\x91\x1cL\x89n\xe5'\xec\x8f\ +\xa5\x8c9\x92~EB\x22m\xc0\x9a\x0d\xb14\x00l\ +`a\xdd\x1e\xcc\x18:,9cQ\xca\xb4\xf2\xf3-\ +\x8e\x11\x13\x92\xff\xc0w\xe5\x11\x86\x9a\xee\xae\xfe\x22\xfd\ +p$\xc2\xbb.\x8c\x86 \x8aa\xc3Y\xbb\xc3\x19\xd1\ +X\xe4\xf2\xb4\xccV\xa5r\xdfw\xf4\xe0X\x14\x0a=\ +\xcf-:\x18g\xd9]\x89>s\xf5\xc5\xde\x09K\x96\ +\x14\x22\xeb\x92\xd1\xb2e\x8b#\x97\x11%\x83b\x22=\ +\xf9JH\xea\x8e\x96[L\x85\xea\xd4Ia\x8e`-\ +\xc95M\x9e\x83\x06O\xf3\x0f^t\xbb\x91y(\x82\ +\x97(\x06\xa3\xc9\xd7\x83\x1bI\xd0\xb6\xd744\xd2G\ +\xf0\xd5l+ET$\xe9:a\xb0\xdaI/\xc5\x86\ +\xb1\x84\xa1\xac\x82#f\xcc\x8c\x0cC\x8db\xcc\x5cb\ +X\xcd\xa5\x0c\xec\xa7L\x98\xa0\xd9\x08\xa1TI\xdd9\ +e\x22\x17\x89\x81\xb4W2\x88P\xcf\xbc\x1a\x11\xe6\xf3\ +\xe5'\x96\x09\x19\x1b:\x1e\x10q,z\xb3\x06E\x8d\ +\x22\x0d,}\x0e&lj\x8c\xa0\xc4}\x08NCH\ +\xd3\xe4\xe2\x15bY\x13\xa1\xa4\xcd\xdb\x89o\xb0\xc2\xaa\ +&\xf8\x8d\x9e\x91\x9f0\xe7\x98\x05+\xd1\xc7\x9eq\x07\ +K\xc9#\x1e\xf3\x95l\xdb8f\xc49\x15\x0d\x11'\ +\xbc\xc9\x1b\xccY\x90\xb3\xa0\x90\x86\x94\xe7\x5clQ\x8c\ +\xdf7\xd7\x080\x1d\x14]\xfas\xfd\x89\x95\x09O\x0f\ +\xb8\xd5\x1c\xcb\x88\xa0g,\xf9\xb7\x13]\xe3,M\xf0\ +3\xbd\x12\x90f(\x0d\xea\xbb\x1c\x1a%\xc0H+\x14\ +\x94N\xbeJ\x0fX\xffJ\x1a7~\x9et\xcc\x8cc\ +\xd1\xcb6T\xc4d\xcc\xb8\xc1\x86%+*\x1ck6\ +\xe4\x8c\xc8\x99q\xc4\x18\xc5\x86\x0aD\x92\xa7W\xd8\xed\ +\x06\x93\x1d\xea\xbb\xae\x86\xc2\xdc\x8bdX)\xa1\x10\xd7\ +g\x84-w\xc6\x88\xa9\xbc\xdcN\xc6\x8f\x87Tc\x13\ +F\x9aL\x18\x91v\xe1\xb0\x9b\xa0\x13\xd5\xb3!\x1bZ\ +\x1aZ\xf9\x0a\x13\x92\xfafo\x14\xbe#\x22a\xcc\x94\ +\x0b\xd6T(2\x1arf\xcc\x83\xc2\x88Wc\xd6\xe4\ +\xcc\x99\x93cYS\xa2\xa8\xe4\xf5g\xd2\xb2n|\xc2\ +x\x97{\xcf\xa5\x05D\xa4\xbf\xe7CC\xf4\x99\xfe|\ +\xf6\x95'\x0b*\xb9\xe7\x0b\xe9]I\xa0}&\xe7J\ +\x07\xa5\x97\xdd\xfc\x84\x11ZI+\xd5\x8a\x17\xdc#\x8c\ +7\xf7\x1c]+$4+\xd4\xe1\x9d\x86DD\xca\x15\ +[\x22\xc6\x924y1\xe1#Zi\x19n\x03\xe5\xd0\ +;M/:\xef\x0d\x14\x0b\xaabQ\xa8{\xd7\xcd\x19\ +F\xfb\xdckC\xfa\x11\xbfsw\xd5=}o\xfa\xeb\ +)\xa3\xdf\xae$\x11\xf1\x14\xcf^R\xd5\x8b\x9b\xb0\x97\ +l\xbb@\xcf\xd1\x81\x1d\xb9S\x18\xf1,\x89:\xa0\x05\ +\x9dh\x8cE\x81j\xeeg\xc6b\xd9\xd5U\xc2\x80o\ +\xd9\x9f\xa8Z4\x95\xbdf\x9d\x92\x04\xca\xb3\xabgA\ +\x18\xb4\x15\xd2P\x1df\xba\xb4(mj\x12\xf4=\x9e\ +?\xaf\xa1\x88\xb0\x1f\xb5\x9f\xda\x0f@}\x11\xdf\xe3\x1e\ +\x7f\xf0\x92\xae:0\x18]\x80s\x87S\xdf\xc3I`\ +B[\xc5\x89\x1cF\x07\xf2\x06\x1a\xc9\x1d-\x91\xac\x84\ +\xb0\x81P\xda\xd1\x89z\x89\x8fSCSF\x02\xc1\x95\ +,1$$$\xb42\xf9\xab\xf1\xa3V\x08\x9e\xe2\xc7\ +\x96|\xa9\x88\xc4\xbe-\x0bYH`\x9e\xef#\xc2D\ +\xe6]\xfb\x81\xfd\x80\xe3\xee\xf7\xed\x87\xfe\x09\x1a&\xd4\ +\x02\x89\xc6R\x0dF\x83Etj\x8f\x89\xbf?\xc7\xdd\ +\xcf\xe29\x19\x80\xe9\xf5\x08\xc7B\xf4\xe8\xbf\xce\x8b\xf8\ +\xb80\xe7\xdd\x086\xe6k\x8b\x02\xcb\x98\x8a5\xe7\xc0\ +$\x08A\xea0\xaa\xf0h0\xaf\xe1\x85@[\x09\xdd\ +\x1d\x1d\x1b\x964\x02\x15\xf1<\xa2H\x98\xa2\xba\xeb\x8e\ +\xa1\xc1~\xd8J\xd9\x1d3\xa3\x94\x9e\xe7\x88Lx\xb2\ +n\xf0f\x87\x03k:p\xe2\x94\x98\xa1\x92\xc3n\xe5\ +\xd8&\xc4\x92n\xa9\x103\x96@\x22\xacY\x1b\xe4\xc8\ +[*\xb6,\xb8\x92U4K\xb6\xa44\x83\x8c\xd4\x8a\ +\xf6\xd8F|\x91\xbfFH\x03I\x89\x8c\x9f7e\x1c\ +\x14\xd5\x9fC\x14\x11H\xffW\xcd?\xd8_\xee\x18\xab\ +\x1d9oPI\xc9\xachEzG\x0d8\xfcJn\ +\xb3\x158\xc4Jk\xad\x13U\xca\xde9\xf6\xfau\x11\ +\x0d\x95\xe8\x9e\xf6\x18DC!\xaa\xd9~\xed\x80\x1fH\ +X\xf2\x0d\xf79\xa7%\x13~\xe6\x8a3&(4\xb9\ +\xcc\xff\xa80\xc6\xe0I\xa8\xad@<\x15\x19\x19#`\ +C\x8d\xe5\x16\xf30\xde\xaf\xbe\xdbG\xf8\xab\xe1~\xd9\ +J>\x80Hx\xb6ldl\xc5\x1d\x0c\xb23\x18y\ +\xb4a\xc8D\x85<\xd4I\xba\xdc\x05\xef\x1f\xe1h\x18\ +\x03\x9a\x8a\x0dW\x94(Q\xaf\x8d\x84\x9e\xa6e\x98\xf1\ +\x09\xdf\xf2\x80+\x11\x1a\xf6\xb3\xc8%\x0b\x9e0\x96\x82\ +\xae\x7fCGA\xa7\xdb\x0a\xa3\xc7\xbb\xe5\x94\x18GA\ +G\x16<\xc4s\xc2\xe7!\xf3\xb6\xa7\x9c\x1bR&\x81\ +\xffx8\xdbMP\x88\xda]/\x7f[\x1b\xc1\xb1{\ +\xce\xb4\xe7D\xe6D\xa2\xa1\xdeQp\xc6\x9f\xf8\x8a+\ +:\xc6\xdc\xe1\xe7\xbc\xcb\x11Hs\xb9\xe6\x82\xfb|\xcd\ +\x19\x05\x8eZ\xd6\x0b@\xcd\x8a\x0bN\xc9(\x84\x18k\ +\x80)\x95D\x8dZ\x94f<\xf9\xcd\xf7\xef7(\x8e\ +9!\xf9\xb5\xbevh7\xbaNe\xc8\xdc3\xbfw\ +\x1fva\x8e\xd6\xffm\xb2G\xf8\xe6\xa9\x89\xbd\xc3\xa1\ +\xd5\xdd<\xa7\x0fz\x06M*P\xae\xc6p\xc1\x86G\ +|\xc9\x7f\xe5>%\x86\x9c\x85<\xf3\x84B\xf4\xf0\xae\ +8\xe3\x9c\xc7Th\x0c\x95h\xe9\xf7\x8b\xaaRr\xf9\ +\x0a\x17vz\xb5\xb2Xb7\xa5\x9e\xc8\xfe\xd0\x13\xee\ +p\x93\xe4s\xf5\x22>\xa2\x97\xe0R\x1fE\x94\xceO\ +\xe0\xd9\xa0\xda\xb1\x1b#\xd8e\x96\xfd\x84\x94\x1aL\xe6\ +\xb8`,M\xcdV\x18+~\xcf\x8a\xef\x9f&\xb2'\ +\xa3d\x03\xdc`\xce)\xb7iP\x9c\xd1\x92c\xa9x\ +\xc2\x9a\x0b\x1e\xf1\x0d\xe74\x02\xbc\x19\xaa\x90\x94\x17\x94\ +\xb2\xf7\xb1\xd7\x0fh\x04\xd9\xf4\xf9E%r\x1a\x19\x0d\ +k\x11\x17\x9c\xffc4\x08\xf5\xcf!\x9c*\xf1\xbc\xf5\ +\x9e>\x90\x12N\x15\x073\xbf;Q\x83\xee\x80\xd3\xdf\ +\x0a\x93\xa1\xa0\x09z\x03Y\x88\x121\xc7T\xe4\x8c\xb8\ +\xc9\x88\x9f\xf0\x1e7Ys\xc5\x96\x8as.XRr\ +\xc1\x19\xe7\x5c\xb0\xc5I\x85c\xa5\x83\xb5+\xed;\xc9\ +D}p\xeeB\xb2o(\x04\xe3\x8cXq\x85\xc20\ +%\xff\x95z\xbe\x8f\x18\x1e\x19\x8d#~\x1f\xcc\xa7\xd1\ +\x87N\x9ef!#\xe6\xfb\xcf}\x98W\xee\x8fD\xd7\ +\xa2\xad\xee\x88\x85a\xbbC\xaa;Q\x9a\xbc\xc1]n\ +\x91p\x9b)\x1dcF\x94<\xe6\x09\xf79\xa3c!\ +S\x19\xfd\xd5\xf3\x1d8\x15\x0a\xbfH\xc2%\xe2\x8e\xdb\ +\xb0\xd9\xa1o\xe1h2\x0c\xe7,\xb8I\x17\x84\xdb^\ +h\x12x\x07\xc6\x8d\xee\x81\xfbh7O{\xee\xf4\xc0\ +c\xa8\xa7t@\xf4@\x92Q\x05\xde\x84W\x17\xedq\ +\xea^\xbb\xba\x11\xec\xeb\x16\xa7\x82U\xc4\x94\x02\xd3\x97\ +,\xd9PsEAK\x02h\x09\xd8=\xb5\xd9\x08\xd6\ +\x19I\xab\xc6\x84\xb8\xe4'\xc5k\x01\xf0z\x95\xcb-\ +\x85\xcc1\xf7\xa3W/0\xe5w\xa8$gB\x9d\x91\ +\x0d\x86\x81\x5c\xc0\x13v\x9a\x0evO\xa8\xc0\xdfaO\ +F\xcdH\xc3\xbcV\x9fox\x86\x85O\x81\x0d\x95(\ +\xa6:\x147x\x0f\xc3\x05g\x5c\xb1\x09\x13z\xa9L\ +\x89\xf8\x81\x83)sN\xc9\x85\x9a\xd6\x05\xf9\xd7\xbe\xd2\ +\xb0\xe23\xeep\x0bG\xc21\x11\xb1h\xa9\xbf\xf4\xb8\ +\xe3\xd3\x9f\xda\xf7\xbe\xdc0\x0b=\xc8,\xfb\xa3\xd9\x0a\ +\x8c\x13I\xd3h(\xed\xe8\x02\x03\xa6\xc7=\xbd\xea\x99\ +\x0f\xb3\x8e\x19wy\x9d\x87<\xe1L\x96\x18ZRi\ +\xf8e\x18\x8cH\x8f\x0f\x05\x7fz\xd1\xdf\xdd\x03\xf1\xe0\ +\xaf\x91Nl|\xc0'\xfd\x1e\xdb\x1d\xa3\xcf\xcc'&\ +LY\xed\x9c\xe5\xae\x05\xd8\x0a\x94\xdaJ\x17=\x91\x9e\ +\x05\xb2\x10D\x0d\xc6g\x9d\xb8\xbeNh\x00Z\x06\x9d\ +*:\x09\x8bcr\x0cWB\x15\xf5\x13@\x91x\x9b\ +\x89pg\xfa\xael'\x86p\x83\xa1\xe7R\xe4`\xda\ +\xd0\xb1\xbf^\xef\xe8\x855f\x82!~\x13\x07\x85\x80\ +\xa1\xf4\x81;\x80\xd8\x90&\x8c\xa7\x96\x8c\x06\x94>\xf5\ +\x94<\x06\x82ED\xa2g\xd4\xc85\xd4\x228>c\ +\xce\x0979\xe5&\x13\xc6\xe4dL\x983\x11\x9a\x92\ +\x09\xc5]'\x8f\xa0\x96\x1e\x8c\x15\x10'\x91\x93h\x18\ +\x87\xa7\xee^U6\xa1\xffT=P\x12\x1anrw\ +\xe1\x87\xb9\x90\xdc\x18Y3\xa6\x02S!\x0aC\xd4\xfb\ +J\x97f/\x18k\xa9c\xc01\xe6\x88HZ\x8e\xc8\ +8c$0\xbe\xde\xd3\xa2\xe8\xa4\xf4\xaaCd\xd3\xe4\ +B<\xdc\xd00b\xc4\x0d\xd2W[+q\xdd \xcb\ +~\xa6\xd0_\x92\x9d\xcam$\x82\x15\xb1\xec\xe4$\xcc\ +wG\x03!`\xbb\xa7\xfd\xd1\xbf\x0d#\xfa@~9\ +\x88\xa6c\xc4\x14EFMM#\xacY'\x88\x85o\ +\x08t\x81\x9a\xe0D\x14\xb8\x0dM\x81)\xb9\xa0\x990\ +a\xceMr\xf5\xb4\xb0\xe8+\x18b\xe7 \xf7\xc7\xdd\ +\xbb\x10)\x8b\x06]\x15-\xc5\xf7\x84\x09\xe6\xf3\ +\x97I\x17_\xea\x97\x1e\x5c\x0dwM\xb6n\x07\x93\xa3\ +Q\xd8\xd7\xebOJ\xca\x9c\x98\x93\xa0/\xe8\x04\xafX\ +\xb3\xa1\x92E\xca\x95\xc0p\xbd>m\x8f>\x18\xf9\x0a\ +#s\xe0\x89\xb4\xf4\xac\xd4/\x914\x95{\xc3L8\ +a\x8e\xf9|\xa8\xb8\xfc\x03_\x8dg\x7fC\x13B\xa1\ +\x8f\xf3>\x90%\x12I\x12\x19_P\xb2o\xcfk\x90\ +\xcc\x89\xb1\x94\xb25g\xc5\x13\xceYJS\xf7\xb10\ +a*i\x0c\xf7\xd4\xa3\x96\x9a\x0c\xcb\x8d\x80O\xf89\ +\xafB\xb2M\x88\xc8\x85Jv\x9d>\xd6+\x19b_\ +oP\x13\xbf\xaf\xbfR\xe1\x12\xa8\x00\xc6\xd8 |\xb1\ +\x13f\xb2\x82*\xf5\xbb\x9d:\xd9\x84\xd0\x85\x5c\xb4\xa2\ +\x22e\xcc\x94\x115[@s*\xcb/K\x16X\x96\ +\x9c\xb3\x92E\xec\x17T\x92+(&h\x96\x1c\x91\xcb\ +8S\xc7Z\xf2\x0c\xef\x80s\x8e8Qj\xa0\xa5\xf5\ +E.d\x02\xdc\ +k\x0f\xd8\xb0\xdcr#'\xa6\x14\xbe^*Sf^\ +\x0c\xccW(\x06G\xc5\x96-\x85\xd0\x0a'\xdc\xe6\x0e\ +\x93_\xeb\x17H\xab_\xd9\x10\xa0\xd0_\xe8\x0f\x87m\ +_\x06p\x8d\x0a\xb3=n\x0f(u\x83\xc9R\x17\xe6\ +~\xa64\xa2IP\xe1hX\xb1bI-\x0c\xbcZ\ +\xd2m+J21#\x19u\x8e$\xaa \x1f\xf3\xaa\ +C\x05#\xc00\xe6\x989\xe9\xe7j\x0fH|\x81k\ +\xbfz)X\xc6R\xb1rW,D\xb9#\x0aD\x9c\ +~!\x95\x19d\x8d*8W\x7f\xf8\xfbU\xb8\x8dl\ +}\xeed\xf2\xb7\xa4\xa4e\xcd\x8as\x16\xa2Z\xecD\ +\xe6\xb9\xef\xc7\xfb\xb9\xb1\xa9\xc8\x05&a\xbd\x89\x1fr\ +)iH\x898\xe2_\xf1\x0b\xde}\x7ft\xefE\xa3\ +\xc5+F\x0dpw{\xe7\xd8Jq\xa5\x06\xad x\ +z\x99\x04\xa1&\x1c\xeeOqTr\xae\x22i\xff\xb4\ +4\x8c\xa4\x87\xea\xcb)B\x87\xd3\xc9(\xa6\x9f2\xac\ +\xe9h\xc8$\x1d/E\xba/A\x91s\xcc\x8c\xe4\xde\ +\xcb]\x8bW2\xc4\xae\xd6\xace=\x91\x1e\x90\xc9z\ +\xfd\x07\x0d\x07{\xba\x86\x86\xf0\x90Y#\xe6t\x03\xfc\ +3\x91S\xd6\x0d\xb8\x15\x9d,.H\x05\xa1\xb4\xd2\x0f\ +\x89\x84\x13\xb3\x116DB\xe47\x94\xff:~\x85\xf7\ +\xf3\xca\x86 L\xd8\xc5\xc2\xabi\x05L\xd1\xb2\x1fg\ +\xa8\x83\xbc\xaf\xda\xe0\xeb\xc5~YT+yE$\x9a\ +\xc6\x99\xd0\x8az0\xcfg\x13\x0d\x0c\xba\xf3\x0a\x84\x5c\ +\x5c\xc9\xd0\x82\x01&\xbc\xc6-\xf2\xcfy\xe6\xce\x84\x1f\ +\xd0\x10\xea\x9e\x0ac\x91v\x80Q\xf6\xfb\x90\x5c\x80\xd2\ +\xf6+T\xb5W\x07j`6h\xc9\xb4t\xc4\x8c\x85\ +\xdejdgC\xbf\x97/aD+\xe3k;1\xd8\ +*\x84\xc8\x9e\xf1\x7f\x837\x99\x7f\xa6\x9fA\x88\xfdA\ +\xa3\x06\x83\x89p_!\xf4\xe9\xb2G\x9a\xfb\xb3a\x07\ +{\x9a\x14\xfb\x8b\xca\x5c(\xd9\xd5\x8e\xdbIG\x1a\xea\ +R\x9f8\xf5\xcc\xcb:@2=\x89\xb8'&9\xd9\ +\xe9\xe7\xab\xdb\x9c;\xdc\x22\xfd\x8d\xbbF\xda\xf7\x07?\ +\x11*\xd8?\x96\xa1\x14\xff\xc4\xa2A\xa6a\xd9WB\ +\x1cn\xe3s\x831\x07\xcbP\xf8K\x09\xf3\xba\x11\xfe\ +m,\x86h\xc2\xf9JC\xfb\xc6\x89C\xed\x04\xe2Q\ +Dd\x9cH\x22E\xd82\xfa\xe3^\x8d\xa0bl\xc4\ +Y52^\x9c\x0d\xea\x8f\xe1\xdaJ\xbd\xa7\x8d\xbb\xe3\ +\xe0E\xec\xd6\xa1)\x81\xd9l``\xf7*\xc9\xdd\x01\ +\x19\xd9\xc9\x89\xb2b\x8eZ\x96\x1a\xa6\xcc\x99\x91\xa8\x97\ +l\xe8\xbej\xad\xb1\x93\xe8\x8fI\xc8D\x12)bJ\ +N!\xf9^?<\xdd+\x9f\xfa^D$)\xd8\xae\ +\x8b\xd1'eV\xc0|'\xe4\x0fG%\xd8c\xaft\ +\xec\xf9\xd4\x1b\x09\xd8\x08\xb8W\x07f\xb7#\xe1\x94\x9f\ +\xf2\x9a\x0cM\x1f.\xb0P?^\xd4\xe8g2b\xd2\ +@/\xadE\x97\xb8\x17\xedK\x84\xd5\xdfK\xf1\x9ap\ +6\x5c\xd0\xadf\xb0CA\x05\xb2\xea\x90Lbe\xdd\ +M3\x18si\x82x[?\xf48b\xc2\x9c\xec3\ +3\xd8\xdc\xe3~\xec\xf0\xd9\x17\xd811\x19\x994\xde\ +J*\x12)\x85\xfd\xbf\xb9d\x85;>n\xb4\xb7\x9a\ +F\x0fL\xd1_\xa96\x0c\xadt\xe2\x10+\xa97\x1a\ +i\x05\xb7\xf2\x7f#T\xf9\x88\x88\x11G\x9cpL\xfa\ +\x9bg\x13A~PC\xb8=\xb4\xb8Ou;Jy\ +ym\xd0\xd47\x18\xe9\xf1I\x05\xa1V\x02\xed+a44\ +r\xe3\x9dt*k\xd9\x93P\x00\xa5\xb0\xf2=\xacW\ +\x0b`\xe7EG\x8d\xf8\xa2\xa7\x89\xf2\xee`\x01\xef\x0f\ +`\x88\xa1{\xdc)\x9b\xfaC\x5c\xa2ei\xba\x95\xb2\ +\xa7\xa6F\xcb\x0cv#\x8a\xb7\x1eH\xa9eT5\x15\ +x5!a\x11\xbe\xd6\xca\x89h\xd1\x82Hy\xde\xe4\ +\x15Kj\x99\xfc\xed\xb3X\x9f\x95\xf4\xdb\x04sQ\xcc\ +\xcd\xb8-C\x94Jh\xa6\xee\x87\x86\xeaT\xc0y\xf4\ +`%%\x03\x8e\xad!\x16\xf5(\x1dj\x91.PG\ +T\x98\xea\xf3\x12I}\x83\xb6\x1f;\xb0\x92\x84iY\ +km%Dv\xa2k\xeb\x85\x9e\x0b:\xe9\x86\xd90\ +.\xe1/R'.;\xe6\xfb\xfd\x8a\x9e\xe7\x16\x9f>\ +!\x84\xbdk=\x01<\x95&\x8dw\x8d\xad\x88&\xfa\ +\x99,\x8fGUat\xc0aD\xbf\xce\x0f\x92 j\ +D\x91\x9c&\xa4\xcd\xd7p\xc9\x8a\x95\xccsUX\xaa\ +\x81\xe9\xbdw\xf0\x17\xc9\xf3q\xd3\xff\xf0\xa3\x19\xe2\x90\ +\x8c,\x9c\xa8O{\x9c@\xef}\x9e\x16\xf9\x95\xbe*\ +0R#tAr~+%\x92\xe7M\x8c8\x0a\xfb\ +\xc2\xbd!\x12\xa0\xa4a\xc5\x15+ja\xdd\xd6\x92R\ +9i\xfb\x1bQ+\x8d\xa5WR\x13{\x1d\x8a/~\ +4C\xec\x17\xdf\x04\xd2F\xdf\xb9\xe8\x8f\xb5\x92\xcc1\ +\x91P\xd8Osi1\xc2\x8eQ\xe9'4:\xb6l\ +\x89)\x88Ej\xd3W%3Z\xb6,\xb9d\xc1F\ +\xb6\xceV\x92\xa5\xd8\xa03a\x84Kg\xa4mh\x84\ +M\xa1\xf9\x91\x0d\xc1`\x8f\x96\x0e=\x8d\xbe\xba\xec\xd9\ +)\xb1\xf44\xfb\x1bo\x05J\xab\x83\x06\x80\x966~\ ++\xca\xd6J\x9a\xbe\xb1x\x0e\xc7\x94\x8a%KVl\ +\xc4]6ar\x18\xd1>\xd2\x03\x95\x81&\x94v\xd9\ +\x8fk\x08\xb7G\x1e\xb3\xd4\x1fd_@\xf7I#G\ +\xd4\x0d\x1at~\x9b\xa2~Jp\xa5\x0e\x07\x1aa\xcb\ +\x1a\x99\xd6\xeaX\x8b\x98x\x22\x18e*\x02{\xb5\xb0\ +_\x90<\x03!\x94\xf5\x1a\xecJ\xce\x99\xef\x8d\xf8z\ +'\x82\x1f\xd3\x10}\x82\xe2k\xbe\xd5\x1f\xdcg\xe67\ +=\x10\x12S\x85\xd0\xba[E\xd9\xc9t\xae?\x07\xad\ +\x9c\x1f#\x88U_\xbeW(\xa9\x1a*Y\x8eW\x0d\ +V\x0f\xda\xbd\x15D\xbb,\xf6\xb0\xb3\xe6\x13\xb0^n\ +\xf4G3\x84\x93\x14\xd8\xa0\xa9\xf9\x8b\xfb\x9a-\xff\xee\ +\x93c\xa9\xf9Z\xd9\xba\xaa\x84A\xe7$zk\x12*\ +\xb6(Q\x83K$\x1cZ:\xe2\xa0 \x13\xcbFV\ +\xbf\x18\xc2\xcaI\xe8\x85v\x86\xab\xb6u\xc0\xc34=\ +O\xbb\x0f\xd2\x9dD'\xaf\xaa\xa8\x9f\x8ak\xdf\xcd\xf6\ +x\xce\x98\x82{j\x99m\xcd\xa5\xfb3\x7f\xe2[~\ +JE\xf5\x89\x0d\x9e\x82\x01\x04\xa7C6iD\xf0\xa6\ +\x8f4\xdd\x80\x07\xd9ObyDa&\xe2\xbd\x9d\x90\ +\xc8uX&\xc1\x80N`\x0et\xafv%{&\x84\ +\xb3^\xdcuX\xb6\xbd\xc2\x89\xd8\x0f\x90;\xce\x91\xc3\ +\xb2p\x0b.\xf8g\xfe\x09\xc5\xbb\xfc\x9c\xe3\x01\xbcF\ +\xc8\xe4z\xb3\xf4\xb1!\x11\xd8-\x92\x1a@\xc9\x8a\xed\ +\xed \xb86\x02\xb3\x19r\xb9.]\xd8\xe5\xea\x06h\ +\xa6\x19\x0c\x1e\xa9\xbd\xde;B'\x88H\x19\xc9\xc6\xa8\ +\xe1\x93\xfe\x1e\x99\xe5.?\xef(>\xa8\xfep\xc9\x1f\ +\xf9\x923\xfe\xcc%\xbf\xe0\x7f\xe5]R\xb6\x942\x82\ +\x14\x0dXl\x04i\x1c_\x1a\xa7\x02\xca'\xc2\xa0\xf4\ +\xdc\x88\x9d\x80\x8fO\xd5\x1fa\x84y]\xcb\xa2\x80\xbe\ +\xfepb\xd8\xe1\xe2\xc4C\x05,G%\x9ae\x89\x08\ +\xba\xb8\x01\x14|\x1d\xf3\xef\xa5\xa8C\x16G\xc5\xa5{\ +\xc89_\xf2W\xbe\xe6\x9c\x98\x9f\xf3\xbf\xf1&\x0d-\ +\x0bY\xe6\xa0\x83~\x84\x0a\xab\xb2u\xc84z\x8az\ +\x22\x99BD\xc4V\x8a\xea*\xc8\xff\xf5\x88\xb4\xa7y\ +X\xe9|1p\xc1\xc3\x85sz\xeft \x9a\xa7\x8a\ +\x8aR\xe8\xa6\xfa\x80\xc0\xf2\xca'Bc\xd9~\xb0\xfe\ +\xc3\x05\xdf\xf0\x15\x0f\xb8\xa4\xe2\x92K~\xc2\xff\xc9\xbf\ +%f\x032\x97\xa3e4i\x08\xe92\xe8}\xba\xc0\ +\x911Rv\xc5\x14\xc2\x89i\xc2\x10Z<\x10W\xf1\ +\x9a\xa8*L\x10\xab\xc1\xe2k\xb5\x17:w\xff\xa4\xd2\ +\xf4k\xf6\xb6R?\x8b)\xfe\x12\x86\xa8Y\xb8o\xf8\ +\x0b\x8f8\xe3\x9c\x0d5O\xd8\xf0&\xff;?\x93\x8d\ +\xcb\x88\xcc\x8a\xf7\xd6\xf1\xc1\x8f\x8c\xf7\xdc\xd9\xee)j\ +\xf9hGA*\x93\xfa\x8d4\xfd\xeb\x80^\xec\xc8$\ +\xf6)\xb2\xda\xee<\x0cw\x91\x97r6[\x16<\xa4\ +p7\xdfO\xee\xc5\x83\xc7\xfa\xca\x08\xd5c\xf7\x0d\xff\ +\xcc\x1fE\x16Ss\xc1\x97\x8c\xf8?\xf8\xbfH\xb8\x12\ +<\xb0\x92/1\xd2\x89:\xfcV6`\x01;I\x0c\ ++\xd2\x1b7\xa9\x990f\xcc9\x89,\x1c\xd1\xa28\ +\xd5\x84\xb0i\xaf\xd9\xd8\xd6\xb7\x15\xf7O\xc4VF\xe7\ +\xd6\xdc\xe3\x02\xf8\x8f_M\x98\xaah\xaf\x0ez\x09C\ +\xf86ks\xd7~\xfc\xff\xf0G\xfe,\xd4\xe0F\xda\ +\xefo\xf3\xafp\xac\x83\xb0\xa7\xefSDhj\xb1\xe1\ +n?g;\x98\xc1\xe8\x84\x89\xb9;\x11\x09\x15#f\ +\x1c\xb3\xe4\x88\x05[\x1e\xb3d\x1b\xe4\xc5\xd5\xdeNz\ +\xb5\xa7M\xa0D!d_F2\xa6\xa6`N\xc6\x82\ +\xff\xca7\xac\xf97\xfc\x9d\xbb\xa1z\xe5U-*\xb9\ +*\xd0\xd2w[g\xaf\xc9#*V\xcek\xdd?f\ +AI\x1b\x10$\x98s*\xea>&\x88\xa3 \xd9\xc2\ +~W\x0bI\x88m \x07\x0cW\xd2\xfa)\x8d,4\ +\xf0\xfc\xc0Z\xce\x82\x95\x88g\x94\xc1Y\xda\xf0=v\ +m\xc2af\xa9B\xaeY\x0b\xeb\xaa\xa5\xe1\x82\xc7\xfc\ +\xdf\x9ccy\xdf\xcd\x19\xa9\xdd\xf03\xd2^\xec\x88\x04\ +@\xba\xbe\x17\xf6?\x00\xe1\x00\x14\x01\xde&\x16\xb2\x00\ +\x00\x00\x00IEND\xaeB`\x82\ +" + +qt_resource_name = b"\ +\x00\x06\ +\x07\x03}\xc3\ +\x00i\ +\x00m\x00a\x00g\x00e\x00s\ +\x00\x08\ +\x0bwZ\x87\ +\x00h\ +\x00e\x00a\x00d\x00.\x00p\x00n\x00g\ +" + +qt_resource_struct = b"\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x01~*kP\x18\ +" + +def qInitResources(): + QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +def qCleanupResources(): + QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +qInitResources() diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/dragdroprobot/images/head.png b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/dragdroprobot/images/head.png new file mode 100644 index 0000000..1e520e0 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/dragdroprobot/images/head.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/elasticnodes.py b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/elasticnodes.py new file mode 100644 index 0000000..f5d229b --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/elasticnodes.py @@ -0,0 +1,416 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +import sys +import weakref +import math +from PySide2 import QtCore, QtGui, QtWidgets + + +def random(boundary): + return QtCore.QRandomGenerator.global_().bounded(boundary) + + +class Edge(QtWidgets.QGraphicsItem): + Pi = math.pi + TwoPi = 2.0 * Pi + + Type = QtWidgets.QGraphicsItem.UserType + 2 + + def __init__(self, sourceNode, destNode): + QtWidgets.QGraphicsItem.__init__(self) + + self.arrowSize = 10.0 + self.sourcePoint = QtCore.QPointF() + self.destPoint = QtCore.QPointF() + self.setAcceptedMouseButtons(QtCore.Qt.NoButton) + self.source = weakref.ref(sourceNode) + self.dest = weakref.ref(destNode) + self.source().addEdge(self) + self.dest().addEdge(self) + self.adjust() + + def type(self): + return Edge.Type + + def sourceNode(self): + return self.source() + + def setSourceNode(self, node): + self.source = weakref.ref(node) + self.adjust() + + def destNode(self): + return self.dest() + + def setDestNode(self, node): + self.dest = weakref.ref(node) + self.adjust() + + def adjust(self): + if not self.source() or not self.dest(): + return + + line = QtCore.QLineF(self.mapFromItem(self.source(), 0, 0), self.mapFromItem(self.dest(), 0, 0)) + length = line.length() + + if length == 0.0: + return + + edgeOffset = QtCore.QPointF((line.dx() * 10) / length, (line.dy() * 10) / length) + + self.prepareGeometryChange() + self.sourcePoint = line.p1() + edgeOffset + self.destPoint = line.p2() - edgeOffset + + def boundingRect(self): + if not self.source() or not self.dest(): + return QtCore.QRectF() + + penWidth = 1 + extra = (penWidth + self.arrowSize) / 2.0 + + return QtCore.QRectF(self.sourcePoint, + QtCore.QSizeF(self.destPoint.x() - self.sourcePoint.x(), + self.destPoint.y() - self.sourcePoint.y())).normalized().adjusted(-extra, -extra, extra, extra) + + def paint(self, painter, option, widget): + if not self.source() or not self.dest(): + return + + # Draw the line itself. + line = QtCore.QLineF(self.sourcePoint, self.destPoint) + + if line.length() == 0.0: + return + + painter.setPen(QtGui.QPen(QtCore.Qt.black, 1, QtCore.Qt.SolidLine, QtCore.Qt.RoundCap, QtCore.Qt.RoundJoin)) + painter.drawLine(line) + + # Draw the arrows if there's enough room. + angle = math.acos(line.dx() / line.length()) + if line.dy() >= 0: + angle = Edge.TwoPi - angle + + sourceArrowP1 = self.sourcePoint + QtCore.QPointF(math.sin(angle + Edge.Pi / 3) * self.arrowSize, + math.cos(angle + Edge.Pi / 3) * self.arrowSize) + sourceArrowP2 = self.sourcePoint + QtCore.QPointF(math.sin(angle + Edge.Pi - Edge.Pi / 3) * self.arrowSize, + math.cos(angle + Edge.Pi - Edge.Pi / 3) * self.arrowSize) + destArrowP1 = self.destPoint + QtCore.QPointF(math.sin(angle - Edge.Pi / 3) * self.arrowSize, + math.cos(angle - Edge.Pi / 3) * self.arrowSize) + destArrowP2 = self.destPoint + QtCore.QPointF(math.sin(angle - Edge.Pi + Edge.Pi / 3) * self.arrowSize, + math.cos(angle - Edge.Pi + Edge.Pi / 3) * self.arrowSize) + + painter.setBrush(QtCore.Qt.black) + painter.drawPolygon(QtGui.QPolygonF([line.p1(), sourceArrowP1, sourceArrowP2])) + painter.drawPolygon(QtGui.QPolygonF([line.p2(), destArrowP1, destArrowP2])) + + +class Node(QtWidgets.QGraphicsItem): + Type = QtWidgets.QGraphicsItem.UserType + 1 + + def __init__(self, graphWidget): + QtWidgets.QGraphicsItem.__init__(self) + + self.graph = weakref.ref(graphWidget) + self.edgeList = [] + self.newPos = QtCore.QPointF() + self.setFlag(QtWidgets.QGraphicsItem.ItemIsMovable) + self.setFlag(QtWidgets.QGraphicsItem.ItemSendsGeometryChanges) + self.setCacheMode(self.DeviceCoordinateCache) + self.setZValue(-1) + + def type(self): + return Node.Type + + def addEdge(self, edge): + self.edgeList.append(weakref.ref(edge)) + edge.adjust() + + def edges(self): + return self.edgeList + + def calculateForces(self): + if not self.scene() or self.scene().mouseGrabberItem() is self: + self.newPos = self.pos() + return + + # Sum up all forces pushing this item away. + xvel = 0.0 + yvel = 0.0 + for item in self.scene().items(): + if not isinstance(item, Node): + continue + + line = QtCore.QLineF(self.mapFromItem(item, 0, 0), QtCore.QPointF(0, 0)) + dx = line.dx() + dy = line.dy() + l = 2.0 * (dx * dx + dy * dy) + if l > 0: + xvel += (dx * 150.0) / l + yvel += (dy * 150.0) / l + + # Now subtract all forces pulling items together. + weight = (len(self.edgeList) + 1) * 10.0 + for edge in self.edgeList: + if edge().sourceNode() is self: + pos = self.mapFromItem(edge().destNode(), 0, 0) + else: + pos = self.mapFromItem(edge().sourceNode(), 0, 0) + xvel += pos.x() / weight + yvel += pos.y() / weight + + if QtCore.qAbs(xvel) < 0.1 and QtCore.qAbs(yvel) < 0.1: + xvel = yvel = 0.0 + + sceneRect = self.scene().sceneRect() + self.newPos = self.pos() + QtCore.QPointF(xvel, yvel) + self.newPos.setX(min(max(self.newPos.x(), sceneRect.left() + 10), sceneRect.right() - 10)) + self.newPos.setY(min(max(self.newPos.y(), sceneRect.top() + 10), sceneRect.bottom() - 10)) + + def advance(self): + if self.newPos == self.pos(): + return False + + self.setPos(self.newPos) + return True + + def boundingRect(self): + adjust = 2.0 + return QtCore.QRectF(-10 - adjust, -10 - adjust, + 23 + adjust, 23 + adjust) + + def shape(self): + path = QtGui.QPainterPath() + path.addEllipse(-10, -10, 20, 20) + return path + + def paint(self, painter, option, widget): + painter.setPen(QtCore.Qt.NoPen) + painter.setBrush(QtCore.Qt.darkGray) + painter.drawEllipse(-7, -7, 20, 20) + + gradient = QtGui.QRadialGradient(-3, -3, 10) + if option.state & QtWidgets.QStyle.State_Sunken: + gradient.setCenter(3, 3) + gradient.setFocalPoint(3, 3) + gradient.setColorAt(1, QtGui.QColor(QtCore.Qt.yellow).lighter(120)) + gradient.setColorAt(0, QtGui.QColor(QtCore.Qt.darkYellow).lighter(120)) + else: + gradient.setColorAt(0, QtCore.Qt.yellow) + gradient.setColorAt(1, QtCore.Qt.darkYellow) + + painter.setBrush(QtGui.QBrush(gradient)) + painter.setPen(QtGui.QPen(QtCore.Qt.black, 0)) + painter.drawEllipse(-10, -10, 20, 20) + + def itemChange(self, change, value): + if change == QtWidgets.QGraphicsItem.ItemPositionChange: + for edge in self.edgeList: + edge().adjust() + self.graph().itemMoved() + + return QtWidgets.QGraphicsItem.itemChange(self, change, value) + + def mousePressEvent(self, event): + self.update() + QtWidgets.QGraphicsItem.mousePressEvent(self, event) + + def mouseReleaseEvent(self, event): + self.update() + QtWidgets.QGraphicsItem.mouseReleaseEvent(self, event) + + +class GraphWidget(QtWidgets.QGraphicsView): + def __init__(self): + QtWidgets.QGraphicsView.__init__(self) + + self.timerId = 0 + + scene = QtWidgets.QGraphicsScene(self) + scene.setItemIndexMethod(QtWidgets.QGraphicsScene.NoIndex) + scene.setSceneRect(-200, -200, 400, 400) + self.setScene(scene) + self.setCacheMode(QtWidgets.QGraphicsView.CacheBackground) + self.setRenderHint(QtGui.QPainter.Antialiasing) + self.setTransformationAnchor(QtWidgets.QGraphicsView.AnchorUnderMouse) + self.setResizeAnchor(QtWidgets.QGraphicsView.AnchorViewCenter) + + node1 = Node(self) + node2 = Node(self) + node3 = Node(self) + node4 = Node(self) + self.centerNode = Node(self) + node6 = Node(self) + node7 = Node(self) + node8 = Node(self) + node9 = Node(self) + scene.addItem(node1) + scene.addItem(node2) + scene.addItem(node3) + scene.addItem(node4) + scene.addItem(self.centerNode) + scene.addItem(node6) + scene.addItem(node7) + scene.addItem(node8) + scene.addItem(node9) + scene.addItem(Edge(node1, node2)) + scene.addItem(Edge(node2, node3)) + scene.addItem(Edge(node2, self.centerNode)) + scene.addItem(Edge(node3, node6)) + scene.addItem(Edge(node4, node1)) + scene.addItem(Edge(node4, self.centerNode)) + scene.addItem(Edge(self.centerNode, node6)) + scene.addItem(Edge(self.centerNode, node8)) + scene.addItem(Edge(node6, node9)) + scene.addItem(Edge(node7, node4)) + scene.addItem(Edge(node8, node7)) + scene.addItem(Edge(node9, node8)) + + node1.setPos(-50, -50) + node2.setPos(0, -50) + node3.setPos(50, -50) + node4.setPos(-50, 0) + self.centerNode.setPos(0, 0) + node6.setPos(50, 0) + node7.setPos(-50, 50) + node8.setPos(0, 50) + node9.setPos(50, 50) + + self.scale(0.8, 0.8) + self.setMinimumSize(400, 400) + self.setWindowTitle(self.tr("Elastic Nodes")) + + def itemMoved(self): + if not self.timerId: + self.timerId = self.startTimer(1000 / 25) + + def keyPressEvent(self, event): + key = event.key() + + if key == QtCore.Qt.Key_Up: + self.centerNode.moveBy(0, -20) + elif key == QtCore.Qt.Key_Down: + self.centerNode.moveBy(0, 20) + elif key == QtCore.Qt.Key_Left: + self.centerNode.moveBy(-20, 0) + elif key == QtCore.Qt.Key_Right: + self.centerNode.moveBy(20, 0) + elif key == QtCore.Qt.Key_Plus: + self.scaleView(1.2) + elif key == QtCore.Qt.Key_Minus: + self.scaleView(1 / 1.2) + elif key == QtCore.Qt.Key_Space or key == QtCore.Qt.Key_Enter: + for item in self.scene().items(): + if isinstance(item, Node): + item.setPos(-150 + random(300), -150 + random(300)) + else: + QtWidgets.QGraphicsView.keyPressEvent(self, event) + + + def timerEvent(self, event): + nodes = [item for item in self.scene().items() if isinstance(item, Node)] + + for node in nodes: + node.calculateForces() + + itemsMoved = False + for node in nodes: + if node.advance(): + itemsMoved = True + + if not itemsMoved: + self.killTimer(self.timerId) + self.timerId = 0 + + def wheelEvent(self, event): + self.scaleView(math.pow(2.0, -event.delta() / 240.0)) + + def drawBackground(self, painter, rect): + # Shadow. + sceneRect = self.sceneRect() + rightShadow = QtCore.QRectF(sceneRect.right(), sceneRect.top() + 5, 5, sceneRect.height()) + bottomShadow = QtCore.QRectF(sceneRect.left() + 5, sceneRect.bottom(), sceneRect.width(), 5) + if rightShadow.intersects(rect) or rightShadow.contains(rect): + painter.fillRect(rightShadow, QtCore.Qt.darkGray) + if bottomShadow.intersects(rect) or bottomShadow.contains(rect): + painter.fillRect(bottomShadow, QtCore.Qt.darkGray) + + # Fill. + gradient = QtGui.QLinearGradient(sceneRect.topLeft(), sceneRect.bottomRight()) + gradient.setColorAt(0, QtCore.Qt.white) + gradient.setColorAt(1, QtCore.Qt.lightGray) + painter.fillRect(rect.intersected(sceneRect), QtGui.QBrush(gradient)) + painter.setBrush(QtCore.Qt.NoBrush) + painter.drawRect(sceneRect) + + # Text. + textRect = QtCore.QRectF(sceneRect.left() + 4, sceneRect.top() + 4, + sceneRect.width() - 4, sceneRect.height() - 4) + message = self.tr("Click and drag the nodes around, and zoom with the " + "mouse wheel or the '+' and '-' keys") + + font = painter.font() + font.setBold(True) + font.setPointSize(14) + painter.setFont(font) + painter.setPen(QtCore.Qt.lightGray) + painter.drawText(textRect.translated(2, 2), message) + painter.setPen(QtCore.Qt.black) + painter.drawText(textRect, message) + + def scaleView(self, scaleFactor): + factor = self.matrix().scale(scaleFactor, scaleFactor).mapRect(QtCore.QRectF(0, 0, 1, 1)).width() + + if factor < 0.07 or factor > 100: + return + + self.scale(scaleFactor, scaleFactor) + + +if __name__ == "__main__": + app = QtWidgets.QApplication(sys.argv) + + widget = GraphWidget() + widget.show() + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/graphicsview.pyproject b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/graphicsview.pyproject new file mode 100644 index 0000000..007d36b --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/graphicsview/graphicsview.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["elasticnodes.py", "anchorlayout.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/__pycache__/basicsortfiltermodel.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/__pycache__/basicsortfiltermodel.cpython-310.pyc new file mode 100644 index 0000000..d423bae Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/__pycache__/basicsortfiltermodel.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/__pycache__/fetchmore.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/__pycache__/fetchmore.cpython-310.pyc new file mode 100644 index 0000000..e3eae23 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/__pycache__/fetchmore.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/__pycache__/adddialogwidget.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/__pycache__/adddialogwidget.cpython-310.pyc new file mode 100644 index 0000000..a9737b3 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/__pycache__/adddialogwidget.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/__pycache__/addressbook.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/__pycache__/addressbook.cpython-310.pyc new file mode 100644 index 0000000..6d77ee1 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/__pycache__/addressbook.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/__pycache__/addresswidget.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/__pycache__/addresswidget.cpython-310.pyc new file mode 100644 index 0000000..ea61269 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/__pycache__/addresswidget.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/__pycache__/newaddresstab.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/__pycache__/newaddresstab.cpython-310.pyc new file mode 100644 index 0000000..a63615a Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/__pycache__/newaddresstab.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/__pycache__/tablemodel.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/__pycache__/tablemodel.cpython-310.pyc new file mode 100644 index 0000000..3cb62a4 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/__pycache__/tablemodel.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/adddialogwidget.py b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/adddialogwidget.py new file mode 100644 index 0000000..7991039 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/adddialogwidget.py @@ -0,0 +1,102 @@ + +############################################################################# +## +## Copyright (C) 2011 Arun Srinivasan +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2.QtCore import Qt +from PySide2.QtWidgets import (QDialog, QLabel, QTextEdit, QLineEdit, + QDialogButtonBox, QGridLayout, QVBoxLayout) + +class AddDialogWidget(QDialog): + """ A dialog to add a new address to the addressbook. """ + + def __init__(self, parent=None): + super(AddDialogWidget, self).__init__(parent) + + nameLabel = QLabel("Name") + addressLabel = QLabel("Address") + buttonBox = QDialogButtonBox(QDialogButtonBox.Ok | + QDialogButtonBox.Cancel) + + self.nameText = QLineEdit() + self.addressText = QTextEdit() + + grid = QGridLayout() + grid.setColumnStretch(1, 2) + grid.addWidget(nameLabel, 0, 0) + grid.addWidget(self.nameText, 0, 1) + grid.addWidget(addressLabel, 1, 0, Qt.AlignLeft | Qt.AlignTop) + grid.addWidget(self.addressText, 1, 1, Qt.AlignLeft) + + layout = QVBoxLayout() + layout.addLayout(grid) + layout.addWidget(buttonBox) + + self.setLayout(layout) + + self.setWindowTitle("Add a Contact") + + buttonBox.accepted.connect(self.accept) + buttonBox.rejected.connect(self.reject) + + # These properties make using this dialog a little cleaner. It's much + # nicer to type "addDialog.address" to retrieve the address as compared + # to "addDialog.addressText.toPlainText()" + @property + def name(self): + return self.nameText.text() + + @property + def address(self): + return self.addressText.toPlainText() + + +if __name__ == "__main__": + import sys + from PySide2.QtWidgets import QApplication + + app = QApplication(sys.argv) + + dialog = AddDialogWidget() + if (dialog.exec_()): + name = dialog.name + address = dialog.address + print("Name:" + name) + print("Address:" + address) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/addressbook.py b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/addressbook.py new file mode 100644 index 0000000..262027a --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/addressbook.py @@ -0,0 +1,130 @@ + +############################################################################# +## +## Copyright (C) 2011 Arun Srinivasan +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2.QtWidgets import (QMainWindow, QAction, QFileDialog, QApplication) + +from addresswidget import AddressWidget + + +class MainWindow(QMainWindow): + + def __init__(self, parent=None): + super(MainWindow, self).__init__(parent) + + self.addressWidget = AddressWidget() + self.setCentralWidget(self.addressWidget) + self.createMenus() + self.setWindowTitle("Address Book") + + def createMenus(self): + # Create the main menuBar menu items + fileMenu = self.menuBar().addMenu("&File") + toolMenu = self.menuBar().addMenu("&Tools") + + # Populate the File menu + openAction = self.createAction("&Open...", fileMenu, self.openFile) + saveAction = self.createAction("&Save As...", fileMenu, self.saveFile) + fileMenu.addSeparator() + exitAction = self.createAction("E&xit", fileMenu, self.close) + + # Populate the Tools menu + addAction = self.createAction("&Add Entry...", toolMenu, self.addressWidget.addEntry) + self.editAction = self.createAction("&Edit Entry...", toolMenu, self.addressWidget.editEntry) + toolMenu.addSeparator() + self.removeAction = self.createAction("&Remove Entry", toolMenu, self.addressWidget.removeEntry) + + # Disable the edit and remove menu items initially, as there are + # no items yet. + self.editAction.setEnabled(False) + self.removeAction.setEnabled(False) + + # Wire up the updateActions slot + self.addressWidget.selectionChanged.connect(self.updateActions) + + def createAction(self, text, menu, slot): + """ Helper function to save typing when populating menus + with action. + """ + action = QAction(text, self) + menu.addAction(action) + action.triggered.connect(slot) + return action + + # Quick gotcha: + # + # QFiledialog.getOpenFilename and QFileDialog.get.SaveFileName don't + # behave in PySide2 as they do in Qt, where they return a QString + # containing the filename. + # + # In PySide2, these functions return a tuple: (filename, filter) + + def openFile(self): + filename, _ = QFileDialog.getOpenFileName(self) + if filename: + self.addressWidget.readFromFile(filename) + + def saveFile(self): + filename, _ = QFileDialog.getSaveFileName(self) + if filename: + self.addressWidget.writeToFile(filename) + + def updateActions(self, selection): + """ Only allow the user to remove or edit an item if an item + is actually selected. + """ + indexes = selection.indexes() + + if len(indexes) > 0: + self.removeAction.setEnabled(True) + self.editAction.setEnabled(True) + else: + self.removeAction.setEnabled(False) + self.editAction.setEnabled(False) + + +if __name__ == "__main__": + """ Run the application. """ + import sys + app = QApplication(sys.argv) + mw = MainWindow() + mw.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/addressbook.pyproject b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/addressbook.pyproject new file mode 100644 index 0000000..2aa7637 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/addressbook.pyproject @@ -0,0 +1,4 @@ +{ + "files": ["tablemodel.py", "addressbook.py", "adddialogwidget.py", + "addresswidget.py", "newaddresstab.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/addresswidget.py b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/addresswidget.py new file mode 100644 index 0000000..d0c1747 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/addresswidget.py @@ -0,0 +1,248 @@ + +############################################################################# +## +## Copyright (C) 2011 Arun Srinivasan +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +try: + import cpickle as pickle +except ImportError: + import pickle + +from PySide2.QtCore import (Qt, Signal, QRegularExpression, QModelIndex, + QItemSelection, QSortFilterProxyModel) +from PySide2.QtWidgets import QTabWidget, QMessageBox, QTableView, QAbstractItemView + +from tablemodel import TableModel +from newaddresstab import NewAddressTab +from adddialogwidget import AddDialogWidget + + +class AddressWidget(QTabWidget): + """ The central widget of the application. Most of the addressbook's + functionality is contained in this class. + """ + + selectionChanged = Signal(QItemSelection) + + def __init__(self, parent=None): + """ Initialize the AddressWidget. """ + super(AddressWidget, self).__init__(parent) + + self.tableModel = TableModel() + self.newAddressTab = NewAddressTab() + self.newAddressTab.sendDetails.connect(self.addEntry) + + self.addTab(self.newAddressTab, "Address Book") + + self.setupTabs() + + def addEntry(self, name=None, address=None): + """ Add an entry to the addressbook. """ + if name is None and address is None: + addDialog = AddDialogWidget() + + if addDialog.exec_(): + name = addDialog.name + address = addDialog.address + + address = {"name": name, "address": address} + addresses = self.tableModel.addresses[:] + + # The QT docs for this example state that what we're doing here + # is checking if the entered name already exists. What they + # (and we here) are actually doing is checking if the whole + # name/address pair exists already - ok for the purposes of this + # example, but obviously not how a real addressbook application + # should behave. + try: + addresses.remove(address) + QMessageBox.information(self, "Duplicate Name", + "The name \"%s\" already exists." % name) + except ValueError: + # The address didn't already exist, so let's add it to the model. + + # Step 1: create the row + self.tableModel.insertRows(0) + + # Step 2: get the index of the newly created row and use it. + # to set the name + ix = self.tableModel.index(0, 0, QModelIndex()) + self.tableModel.setData(ix, address["name"], Qt.EditRole) + + # Step 3: lather, rinse, repeat for the address. + ix = self.tableModel.index(0, 1, QModelIndex()) + self.tableModel.setData(ix, address["address"], Qt.EditRole) + + # Remove the newAddressTab, as we now have at least one + # address in the model. + self.removeTab(self.indexOf(self.newAddressTab)) + + # The screenshot for the QT example shows nicely formatted + # multiline cells, but the actual application doesn't behave + # quite so nicely, at least on Ubuntu. Here we resize the newly + # created row so that multiline addresses look reasonable. + tableView = self.currentWidget() + tableView.resizeRowToContents(ix.row()) + + def editEntry(self): + """ Edit an entry in the addressbook. """ + tableView = self.currentWidget() + proxyModel = tableView.model() + selectionModel = tableView.selectionModel() + + # Get the name and address of the currently selected row. + indexes = selectionModel.selectedRows() + + for index in indexes: + row = proxyModel.mapToSource(index).row() + ix = self.tableModel.index(row, 0, QModelIndex()) + name = self.tableModel.data(ix, Qt.DisplayRole) + ix = self.tableModel.index(row, 1, QModelIndex()) + address = self.tableModel.data(ix, Qt.DisplayRole) + + # Open an addDialogWidget, and only allow the user to edit the address. + addDialog = AddDialogWidget() + addDialog.setWindowTitle("Edit a Contact") + + addDialog.nameText.setReadOnly(True) + addDialog.nameText.setText(name) + addDialog.addressText.setText(address) + + # If the address is different, add it to the model. + if addDialog.exec_(): + newAddress = addDialog.address + if newAddress != address: + ix = self.tableModel.index(row, 1, QModelIndex()) + self.tableModel.setData(ix, newAddress, Qt.EditRole) + + def removeEntry(self): + """ Remove an entry from the addressbook. """ + tableView = self.currentWidget() + proxyModel = tableView.model() + selectionModel = tableView.selectionModel() + + # Just like editEntry, but this time remove the selected row. + indexes = selectionModel.selectedRows() + + for index in indexes: + row = proxyModel.mapToSource(index).row() + self.tableModel.removeRows(row) + + # If we've removed the last address in the model, display the + # newAddressTab + if self.tableModel.rowCount() == 0: + self.insertTab(0, self.newAddressTab, "Address Book") + + def setupTabs(self): + """ Setup the various tabs in the AddressWidget. """ + groups = ["ABC", "DEF", "GHI", "JKL", "MNO", "PQR", "STU", "VW", "XYZ"] + + for group in groups: + proxyModel = QSortFilterProxyModel(self) + proxyModel.setSourceModel(self.tableModel) + proxyModel.setDynamicSortFilter(True) + + tableView = QTableView() + tableView.setModel(proxyModel) + tableView.setSortingEnabled(True) + tableView.setSelectionBehavior(QAbstractItemView.SelectRows) + tableView.horizontalHeader().setStretchLastSection(True) + tableView.verticalHeader().hide() + tableView.setEditTriggers(QAbstractItemView.NoEditTriggers) + tableView.setSelectionMode(QAbstractItemView.SingleSelection) + + # This here be the magic: we use the group name (e.g. "ABC") to + # build the regex for the QSortFilterProxyModel for the group's + # tab. The regex will end up looking like "^[ABC].*", only + # allowing this tab to display items where the name starts with + # "A", "B", or "C". Notice that we set it to be case-insensitive. + re = QRegularExpression("^[{}].*".format(group)) + assert re.isValid() + re.setPatternOptions(QRegularExpression.CaseInsensitiveOption) + proxyModel.setFilterRegularExpression(re) + proxyModel.setFilterKeyColumn(0) # Filter on the "name" column + proxyModel.sort(0, Qt.AscendingOrder) + + # This prevents an application crash (see: http://www.qtcentre.org/threads/58874-QListView-SelectionModel-selectionChanged-Crash) + viewselectionmodel = tableView.selectionModel() + tableView.selectionModel().selectionChanged.connect(self.selectionChanged) + + self.addTab(tableView, group) + + # Note: the QT example uses a QDataStream for the saving and loading. + # Here we're using a python dictionary to store the addresses, which + # can't be streamed using QDataStream, so we just use cpickle for this + # example. + def readFromFile(self, filename): + """ Read contacts in from a file. """ + try: + f = open(filename, "rb") + addresses = pickle.load(f) + except IOError: + QMessageBox.information(self, "Unable to open file: %s" % filename) + finally: + f.close() + + if len(addresses) == 0: + QMessageBox.information(self, "No contacts in file: %s" % filename) + else: + for address in addresses: + self.addEntry(address["name"], address["address"]) + + def writeToFile(self, filename): + """ Save all contacts in the model to a file. """ + try: + f = open(filename, "wb") + pickle.dump(self.tableModel.addresses, f) + + except IOError: + QMessageBox.information(self, "Unable to open file: %s" % filename) + finally: + f.close() + + +if __name__ == "__main__": + import sys + from PySide2.QtWidgets import QApplication + + app = QApplication(sys.argv) + addressWidget = AddressWidget() + addressWidget.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/newaddresstab.py b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/newaddresstab.py new file mode 100644 index 0000000..ab54fb8 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/newaddresstab.py @@ -0,0 +1,93 @@ + +############################################################################# +## +## Copyright (C) 2011 Arun Srinivasan +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2.QtCore import (Qt, Signal) +from PySide2.QtWidgets import (QWidget, QLabel, QPushButton, QVBoxLayout) + +from adddialogwidget import AddDialogWidget + +class NewAddressTab(QWidget): + """ An extra tab that prompts the user to add new contacts. + To be displayed only when there are no contacts in the model. + """ + + sendDetails = Signal(str, str) + + def __init__(self, parent=None): + super(NewAddressTab, self).__init__(parent) + + descriptionLabel = QLabel("There are no contacts in your address book." + "\nClick Add to add new contacts.") + + addButton = QPushButton("Add") + + layout = QVBoxLayout() + layout.addWidget(descriptionLabel) + layout.addWidget(addButton, 0, Qt.AlignCenter) + + self.setLayout(layout) + + addButton.clicked.connect(self.addEntry) + + def addEntry(self): + addDialog = AddDialogWidget() + + if addDialog.exec_(): + name = addDialog.name + address = addDialog.address + self.sendDetails.emit(name, address) + + +if __name__ == "__main__": + + def printAddress(name, address): + print("Name:" + name) + print("Address:" + address) + + import sys + from PySide2.QtWidgets import QApplication + + app = QApplication(sys.argv) + newAddressTab = NewAddressTab() + newAddressTab.sendDetails.connect(printAddress) + newAddressTab.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/tablemodel.py b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/tablemodel.py new file mode 100644 index 0000000..155f091 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/addressbook/tablemodel.py @@ -0,0 +1,146 @@ + +############################################################################# +## +## Copyright (C) 2011 Arun Srinivasan +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2.QtCore import (Qt, QAbstractTableModel, QModelIndex) + +class TableModel(QAbstractTableModel): + + def __init__(self, addresses=None, parent=None): + super(TableModel, self).__init__(parent) + + if addresses is None: + self.addresses = [] + else: + self.addresses = addresses + + def rowCount(self, index=QModelIndex()): + """ Returns the number of rows the model holds. """ + return len(self.addresses) + + def columnCount(self, index=QModelIndex()): + """ Returns the number of columns the model holds. """ + return 2 + + def data(self, index, role=Qt.DisplayRole): + """ Depending on the index and role given, return data. If not + returning data, return None (PySide equivalent of QT's + "invalid QVariant"). + """ + if not index.isValid(): + return None + + if not 0 <= index.row() < len(self.addresses): + return None + + if role == Qt.DisplayRole: + name = self.addresses[index.row()]["name"] + address = self.addresses[index.row()]["address"] + + if index.column() == 0: + return name + elif index.column() == 1: + return address + + return None + + def headerData(self, section, orientation, role=Qt.DisplayRole): + """ Set the headers to be displayed. """ + if role != Qt.DisplayRole: + return None + + if orientation == Qt.Horizontal: + if section == 0: + return "Name" + elif section == 1: + return "Address" + + return None + + def insertRows(self, position, rows=1, index=QModelIndex()): + """ Insert a row into the model. """ + self.beginInsertRows(QModelIndex(), position, position + rows - 1) + + for row in range(rows): + self.addresses.insert(position + row, {"name":"", "address":""}) + + self.endInsertRows() + return True + + def removeRows(self, position, rows=1, index=QModelIndex()): + """ Remove a row from the model. """ + self.beginRemoveRows(QModelIndex(), position, position + rows - 1) + + del self.addresses[position:position+rows] + + self.endRemoveRows() + return True + + def setData(self, index, value, role=Qt.EditRole): + """ Adjust the data (set it to ) depending on the given + index and role. + """ + if role != Qt.EditRole: + return False + + if index.isValid() and 0 <= index.row() < len(self.addresses): + address = self.addresses[index.row()] + if index.column() == 0: + address["name"] = value + elif index.column() == 1: + address["address"] = value + else: + return False + + self.dataChanged.emit(index, index, 0) + return True + + return False + + def flags(self, index): + """ Set the item flags at the given index. Seems like we're + implementing this function just to see how it's done, as we + manually adjust each tableView to have NoEditTriggers. + """ + if not index.isValid(): + return Qt.ItemIsEnabled + return Qt.ItemFlags(QAbstractTableModel.flags(self, index) | + Qt.ItemIsEditable) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/basicsortfiltermodel.py b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/basicsortfiltermodel.py new file mode 100644 index 0000000..00441ff --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/basicsortfiltermodel.py @@ -0,0 +1,213 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +import sys +from PySide2.QtCore import (QDate, QDateTime, QRegularExpression, + QSortFilterProxyModel, QTime, Qt) +from PySide2.QtGui import QStandardItemModel +from PySide2.QtWidgets import (QApplication, QCheckBox, QComboBox, QGridLayout, + QGroupBox, QHBoxLayout, QLabel, QLineEdit, + QTreeView, QVBoxLayout, QWidget) + + +REGULAR_EXPRESSION = 0 +WILDCARD = 1 +FIXED_STRING = 2 + + +class Window(QWidget): + def __init__(self): + super(Window, self).__init__() + + self.proxyModel = QSortFilterProxyModel() + self.proxyModel.setDynamicSortFilter(True) + + self.sourceGroupBox = QGroupBox("Original Model") + self.proxyGroupBox = QGroupBox("Sorted/Filtered Model") + + self.sourceView = QTreeView() + self.sourceView.setRootIsDecorated(False) + self.sourceView.setAlternatingRowColors(True) + + self.proxyView = QTreeView() + self.proxyView.setRootIsDecorated(False) + self.proxyView.setAlternatingRowColors(True) + self.proxyView.setModel(self.proxyModel) + self.proxyView.setSortingEnabled(True) + + self.sortCaseSensitivityCheckBox = QCheckBox("Case sensitive sorting") + self.filterCaseSensitivityCheckBox = QCheckBox("Case sensitive filter") + + self.filterPatternLineEdit = QLineEdit() + self.filterPatternLineEdit.setClearButtonEnabled(True) + self.filterPatternLabel = QLabel("&Filter pattern:") + self.filterPatternLabel.setBuddy(self.filterPatternLineEdit) + + self.filterSyntaxComboBox = QComboBox() + self.filterSyntaxComboBox.addItem("Regular expression", + REGULAR_EXPRESSION) + self.filterSyntaxComboBox.addItem("Wildcard", + WILDCARD) + self.filterSyntaxComboBox.addItem("Fixed string", + FIXED_STRING) + self.filterSyntaxLabel = QLabel("Filter &syntax:") + self.filterSyntaxLabel.setBuddy(self.filterSyntaxComboBox) + + self.filterColumnComboBox = QComboBox() + self.filterColumnComboBox.addItem("Subject") + self.filterColumnComboBox.addItem("Sender") + self.filterColumnComboBox.addItem("Date") + self.filterColumnLabel = QLabel("Filter &column:") + self.filterColumnLabel.setBuddy(self.filterColumnComboBox) + + self.filterPatternLineEdit.textChanged.connect(self.filterRegExpChanged) + self.filterSyntaxComboBox.currentIndexChanged.connect(self.filterRegExpChanged) + self.filterColumnComboBox.currentIndexChanged.connect(self.filterColumnChanged) + self.filterCaseSensitivityCheckBox.toggled.connect(self.filterRegExpChanged) + self.sortCaseSensitivityCheckBox.toggled.connect(self.sortChanged) + + sourceLayout = QHBoxLayout() + sourceLayout.addWidget(self.sourceView) + self.sourceGroupBox.setLayout(sourceLayout) + + proxyLayout = QGridLayout() + proxyLayout.addWidget(self.proxyView, 0, 0, 1, 3) + proxyLayout.addWidget(self.filterPatternLabel, 1, 0) + proxyLayout.addWidget(self.filterPatternLineEdit, 1, 1, 1, 2) + proxyLayout.addWidget(self.filterSyntaxLabel, 2, 0) + proxyLayout.addWidget(self.filterSyntaxComboBox, 2, 1, 1, 2) + proxyLayout.addWidget(self.filterColumnLabel, 3, 0) + proxyLayout.addWidget(self.filterColumnComboBox, 3, 1, 1, 2) + proxyLayout.addWidget(self.filterCaseSensitivityCheckBox, 4, 0, 1, 2) + proxyLayout.addWidget(self.sortCaseSensitivityCheckBox, 4, 2) + self.proxyGroupBox.setLayout(proxyLayout) + + mainLayout = QVBoxLayout() + mainLayout.addWidget(self.sourceGroupBox) + mainLayout.addWidget(self.proxyGroupBox) + self.setLayout(mainLayout) + + self.setWindowTitle("Basic Sort/Filter Model") + self.resize(500, 450) + + self.proxyView.sortByColumn(1, Qt.AscendingOrder) + self.filterColumnComboBox.setCurrentIndex(1) + + self.filterPatternLineEdit.setText("Andy|Grace") + self.filterCaseSensitivityCheckBox.setChecked(True) + self.sortCaseSensitivityCheckBox.setChecked(True) + + def setSourceModel(self, model): + self.proxyModel.setSourceModel(model) + self.sourceView.setModel(model) + + def filterRegExpChanged(self): + syntax_nr = self.filterSyntaxComboBox.currentData() + pattern = self.filterPatternLineEdit.text() + if syntax_nr == WILDCARD: + pattern = QRegularExpression.wildcardToRegularExpression(pattern) + elif syntax_nr == FIXED_STRING: + pattern = QRegularExpression.escape(pattern) + + regExp = QRegularExpression(pattern) + if not self.filterCaseSensitivityCheckBox.isChecked(): + options = regExp.patternOptions() + options |= QRegularExpression.CaseInsensitiveOption + regExp.setPatternOptions(options) + self.proxyModel.setFilterRegularExpression(regExp) + + def filterColumnChanged(self): + self.proxyModel.setFilterKeyColumn(self.filterColumnComboBox.currentIndex()) + + def sortChanged(self): + if self.sortCaseSensitivityCheckBox.isChecked(): + caseSensitivity = Qt.CaseSensitive + else: + caseSensitivity = Qt.CaseInsensitive + + self.proxyModel.setSortCaseSensitivity(caseSensitivity) + + +def addMail(model, subject, sender, date): + model.insertRow(0) + model.setData(model.index(0, 0), subject) + model.setData(model.index(0, 1), sender) + model.setData(model.index(0, 2), date) + + +def createMailModel(parent): + model = QStandardItemModel(0, 3, parent) + + model.setHeaderData(0, Qt.Horizontal, "Subject") + model.setHeaderData(1, Qt.Horizontal, "Sender") + model.setHeaderData(2, Qt.Horizontal, "Date") + + addMail(model, "Happy New Year!", "Grace K. ", + QDateTime(QDate(2006, 12, 31), QTime(17, 3))) + addMail(model, "Radically new concept", "Grace K. ", + QDateTime(QDate(2006, 12, 22), QTime(9, 44))) + addMail(model, "Accounts", "pascale@nospam.com", + QDateTime(QDate(2006, 12, 31), QTime(12, 50))) + addMail(model, "Expenses", "Joe Bloggs ", + QDateTime(QDate(2006, 12, 25), QTime(11, 39))) + addMail(model, "Re: Expenses", "Andy ", + QDateTime(QDate(2007, 1, 2), QTime(16, 5))) + addMail(model, "Re: Accounts", "Joe Bloggs ", + QDateTime(QDate(2007, 1, 3), QTime(14, 18))) + addMail(model, "Re: Accounts", "Andy ", + QDateTime(QDate(2007, 1, 3), QTime(14, 26))) + addMail(model, "Sports", "Linda Smith ", + QDateTime(QDate(2007, 1, 5), QTime(11, 33))) + addMail(model, "AW: Sports", "Rolf Newschweinstein ", + QDateTime(QDate(2007, 1, 5), QTime(12, 0))) + addMail(model, "RE: Sports", "Petra Schmidt ", + QDateTime(QDate(2007, 1, 5), QTime(12, 1))) + + return model + + +if __name__ == '__main__': + app = QApplication(sys.argv) + window = Window() + window.setSourceModel(createMailModel(window)) + window.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/fetchmore.py b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/fetchmore.py new file mode 100644 index 0000000..2b0d8c1 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/fetchmore.py @@ -0,0 +1,147 @@ + +############################################################################# +## +## Copyright (C) 2009 Darryl Wallace, 2009 +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2 import QtCore, QtWidgets + + +class FileListModel(QtCore.QAbstractListModel): + numberPopulated = QtCore.Signal(int) + + def __init__(self, parent=None): + super(FileListModel, self).__init__(parent) + + self.fileCount = 0 + self.fileList = [] + + def rowCount(self, parent=QtCore.QModelIndex()): + return self.fileCount + + def data(self, index, role=QtCore.Qt.DisplayRole): + if not index.isValid(): + return None + + if index.row() >= len(self.fileList) or index.row() < 0: + return None + + if role == QtCore.Qt.DisplayRole: + return self.fileList[index.row()] + + if role == QtCore.Qt.BackgroundRole: + batch = (index.row() // 100) % 2 +# FIXME: QGuiApplication::palette() required + if batch == 0: + return qApp.palette().base() + + return qApp.palette().alternateBase() + + return None + + def canFetchMore(self, index): + return self.fileCount < len(self.fileList) + + def fetchMore(self, index): + remainder = len(self.fileList) - self.fileCount + itemsToFetch = min(100, remainder) + + self.beginInsertRows(QtCore.QModelIndex(), self.fileCount, + self.fileCount + itemsToFetch) + + self.fileCount += itemsToFetch + + self.endInsertRows() + + self.numberPopulated.emit(itemsToFetch) + + def setDirPath(self, path): + dir = QtCore.QDir(path) + + self.beginResetModel() + self.fileList = list(dir.entryList()) + self.fileCount = 0 + self.endResetModel() + + +class Window(QtWidgets.QWidget): + def __init__(self, parent=None): + super(Window, self).__init__(parent) + + model = FileListModel(self) + model.setDirPath(QtCore.QLibraryInfo.location(QtCore.QLibraryInfo.PrefixPath)) + + label = QtWidgets.QLabel("Directory") + lineEdit = QtWidgets.QLineEdit() + label.setBuddy(lineEdit) + + view = QtWidgets.QListView() + view.setModel(model) + + self.logViewer = QtWidgets.QTextBrowser() + self.logViewer.setSizePolicy(QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)) + + lineEdit.textChanged.connect(model.setDirPath) + lineEdit.textChanged.connect(self.logViewer.clear) + model.numberPopulated.connect(self.updateLog) + + layout = QtWidgets.QGridLayout() + layout.addWidget(label, 0, 0) + layout.addWidget(lineEdit, 0, 1) + layout.addWidget(view, 1, 0, 1, 2) + layout.addWidget(self.logViewer, 2, 0, 1, 2) + + self.setLayout(layout) + self.setWindowTitle("Fetch More Example") + + def updateLog(self, number): + self.logViewer.append("%d items added." % number) + + +if __name__ == '__main__': + + import sys + + app = QtWidgets.QApplication(sys.argv) + + window = Window() + window.show() + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/itemviews.pyproject b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/itemviews.pyproject new file mode 100644 index 0000000..a582259 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/itemviews.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["basicsortfiltermodel.py", "fetchmore.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/stardelegate/__pycache__/stardelegate.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/stardelegate/__pycache__/stardelegate.cpython-310.pyc new file mode 100644 index 0000000..e2f9841 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/stardelegate/__pycache__/stardelegate.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/stardelegate/__pycache__/stareditor.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/stardelegate/__pycache__/stareditor.cpython-310.pyc new file mode 100644 index 0000000..4da04f3 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/stardelegate/__pycache__/stareditor.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/stardelegate/__pycache__/starrating.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/stardelegate/__pycache__/starrating.cpython-310.pyc new file mode 100644 index 0000000..df9bac7 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/stardelegate/__pycache__/starrating.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/stardelegate/stardelegate.py b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/stardelegate/stardelegate.py new file mode 100644 index 0000000..86fd99c --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/stardelegate/stardelegate.py @@ -0,0 +1,173 @@ + +############################################################################# +## +## Copyright (C) 2010 Hans-Peter Jansen +## Copyright (C) 2011 Arun Srinivasan +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2.QtWidgets import QStyledItemDelegate, QStyle + +from starrating import StarRating +from stareditor import StarEditor + +class StarDelegate(QStyledItemDelegate): + """ A subclass of QStyledItemDelegate that allows us to render our + pretty star ratings. + """ + + def __init__(self, parent=None): + super(StarDelegate, self).__init__(parent) + + def paint(self, painter, option, index): + """ Paint the items in the table. + + If the item referred to by is a StarRating, we handle the + painting ourselves. For the other items, we let the base class + handle the painting as usual. + + In a polished application, we'd use a better check than the + column number to find out if we needed to paint the stars, but + it works for the purposes of this example. + """ + if index.column() == 3: + starRating = StarRating(index.data()) + + # If the row is currently selected, we need to make sure we + # paint the background accordingly. + if option.state & QStyle.State_Selected: + # The original C++ example used option.palette.foreground() to + # get the brush for painting, but there are a couple of + # problems with that: + # - foreground() is obsolete now, use windowText() instead + # - more importantly, windowText() just returns a brush + # containing a flat color, where sometimes the style + # would have a nice subtle gradient or something. + # Here we just use the brush of the painter object that's + # passed in to us, which keeps the row highlighting nice + # and consistent. + painter.fillRect(option.rect, painter.brush()) + + # Now that we've painted the background, call starRating.paint() + # to paint the stars. + starRating.paint(painter, option.rect, option.palette) + else: + QStyledItemDelegate.paint(self, painter, option, index) + + def sizeHint(self, option, index): + """ Returns the size needed to display the item in a QSize object. """ + if index.column() == 3: + starRating = StarRating(index.data()) + return starRating.sizeHint() + else: + return QStyledItemDelegate.sizeHint(self, option, index) + + # The next 4 methods handle the custom editing that we need to do. + # If this were just a display delegate, paint() and sizeHint() would + # be all we needed. + + def createEditor(self, parent, option, index): + """ Creates and returns the custom StarEditor object we'll use to edit + the StarRating. + """ + if index.column() == 3: + editor = StarEditor(parent) + editor.editingFinished.connect(self.commitAndCloseEditor) + return editor + else: + return QStyledItemDelegate.createEditor(self, parent, option, index) + + def setEditorData(self, editor, index): + """ Sets the data to be displayed and edited by our custom editor. """ + if index.column() == 3: + editor.starRating = StarRating(index.data()) + else: + QStyledItemDelegate.setEditorData(self, editor, index) + + def setModelData(self, editor, model, index): + """ Get the data from our custom editor and stuffs it into the model. + """ + if index.column() == 3: + model.setData(index, editor.starRating.starCount) + else: + QStyledItemDelegate.setModelData(self, editor, model, index) + + def commitAndCloseEditor(self): + """ Erm... commits the data and closes the editor. :) """ + editor = self.sender() + + # The commitData signal must be emitted when we've finished editing + # and need to write our changed back to the model. + self.commitData.emit(editor) + self.closeEditor.emit(editor, QStyledItemDelegate.NoHint) + + +if __name__ == "__main__": + """ Run the application. """ + from PySide2.QtWidgets import (QApplication, QTableWidget, QTableWidgetItem, + QAbstractItemView) + import sys + + app = QApplication(sys.argv) + + # Create and populate the tableWidget + tableWidget = QTableWidget(4, 4) + tableWidget.setItemDelegate(StarDelegate()) + tableWidget.setEditTriggers(QAbstractItemView.DoubleClicked | + QAbstractItemView.SelectedClicked) + tableWidget.setSelectionBehavior(QAbstractItemView.SelectRows) + tableWidget.setHorizontalHeaderLabels(["Title", "Genre", "Artist", "Rating"]) + + data = [ ["Mass in B-Minor", "Baroque", "J.S. Bach", 5], + ["Three More Foxes", "Jazz", "Maynard Ferguson", 4], + ["Sex Bomb", "Pop", "Tom Jones", 3], + ["Barbie Girl", "Pop", "Aqua", 5] ] + + for r in range(len(data)): + tableWidget.setItem(r, 0, QTableWidgetItem(data[r][0])) + tableWidget.setItem(r, 1, QTableWidgetItem(data[r][1])) + tableWidget.setItem(r, 2, QTableWidgetItem(data[r][2])) + item = QTableWidgetItem() + item.setData(0, StarRating(data[r][3]).starCount) + tableWidget.setItem(r, 3, item) + + tableWidget.resizeColumnsToContents() + tableWidget.resize(500, 300) + tableWidget.show() + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/stardelegate/stardelegate.pyproject b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/stardelegate/stardelegate.pyproject new file mode 100644 index 0000000..13fdf9d --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/stardelegate/stardelegate.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["stardelegate.py", "stareditor.py", "starrating.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/stardelegate/stareditor.py b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/stardelegate/stareditor.py new file mode 100644 index 0000000..820aba8 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/stardelegate/stareditor.py @@ -0,0 +1,100 @@ + +############################################################################# +## +## Copyright (C) 2010 Hans-Peter Jansen +## Copyright (C) 2011 Arun Srinivasan +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2.QtWidgets import (QWidget) +from PySide2.QtGui import (QPainter) +from PySide2.QtCore import Signal + +from starrating import StarRating + +class StarEditor(QWidget): + """ The custom editor for editing StarRatings. """ + + # A signal to tell the delegate when we've finished editing. + editingFinished = Signal() + + def __init__(self, parent=None): + """ Initialize the editor object, making sure we can watch mouse + events. + """ + super(StarEditor, self).__init__(parent) + + self.setMouseTracking(True) + self.setAutoFillBackground(True) + self.starRating = StarRating() + + def sizeHint(self): + """ Tell the caller how big we are. """ + return self.starRating.sizeHint() + + def paintEvent(self, event): + """ Paint the editor, offloading the work to the StarRating class. """ + painter = QPainter(self) + self.starRating.paint(painter, self.rect(), self.palette(), isEditable=True) + + def mouseMoveEvent(self, event): + """ As the mouse moves inside the editor, track the position and + update the editor to display as many stars as necessary. + """ + star = self.starAtPosition(event.x()) + + if (star != self.starRating.starCount) and (star != -1): + self.starRating.starCount = star + self.update() + + def mouseReleaseEvent(self, event): + """ Once the user has clicked his/her chosen star rating, tell the + delegate we're done editing. + """ + self.editingFinished.emit() + + def starAtPosition(self, x): + """ Calculate which star the user's mouse cursor is currently + hovering over. + """ + star = (x / (self.starRating.sizeHint().width() / + self.starRating.maxStarCount)) + 1 + if (star <= 0) or (star > self.starRating.maxStarCount): + return -1 + + return star diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/stardelegate/starrating.py b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/stardelegate/starrating.py new file mode 100644 index 0000000..d40b382 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/itemviews/stardelegate/starrating.py @@ -0,0 +1,100 @@ + +############################################################################# +## +## Copyright (C) 2010 Hans-Peter Jansen +## Copyright (C) 2011 Arun Srinivasan +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from math import (cos, sin, pi) + +from PySide2.QtGui import (QPainter, QPolygonF) +from PySide2.QtCore import (QPointF, QSize, Qt) + +PAINTING_SCALE_FACTOR = 20 + + +class StarRating(object): + """ Handle the actual painting of the stars themselves. """ + + def __init__(self, starCount=1, maxStarCount=5): + self.starCount = starCount + self.maxStarCount = maxStarCount + + # Create the star shape we'll be drawing. + self.starPolygon = QPolygonF() + self.starPolygon.append(QPointF(1.0, 0.5)) + for i in range(1, 5): + self.starPolygon.append(QPointF(0.5 + 0.5 * cos(0.8 * i * pi), + 0.5 + 0.5 * sin(0.8 * i * pi))) + + # Create the diamond shape we'll show in the editor + self.diamondPolygon = QPolygonF() + diamondPoints = [QPointF(0.4, 0.5), QPointF(0.5, 0.4), + QPointF(0.6, 0.5), QPointF(0.5, 0.6), + QPointF(0.4, 0.5)] + self.diamondPolygon.append(diamondPoints) + + def sizeHint(self): + """ Tell the caller how big we are. """ + return PAINTING_SCALE_FACTOR * QSize(self.maxStarCount, 1) + + def paint(self, painter, rect, palette, isEditable=False): + """ Paint the stars (and/or diamonds if we're in editing mode). """ + painter.save() + + painter.setRenderHint(QPainter.Antialiasing, True) + painter.setPen(Qt.NoPen) + + if isEditable: + painter.setBrush(palette.highlight()) + else: + painter.setBrush(palette.windowText()) + + yOffset = (rect.height() - PAINTING_SCALE_FACTOR) / 2 + painter.translate(rect.x(), rect.y() + yOffset) + painter.scale(PAINTING_SCALE_FACTOR, PAINTING_SCALE_FACTOR) + + for i in range(self.maxStarCount): + if i < self.starCount: + painter.drawPolygon(self.starPolygon, Qt.WindingFill) + elif isEditable: + painter.drawPolygon(self.diamondPolygon, Qt.WindingFill) + painter.translate(1.0, 0.0) + + painter.restore() diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/layouts/__pycache__/basiclayouts.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/layouts/__pycache__/basiclayouts.cpython-310.pyc new file mode 100644 index 0000000..d771ac9 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/layouts/__pycache__/basiclayouts.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/layouts/__pycache__/dynamiclayouts.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/layouts/__pycache__/dynamiclayouts.cpython-310.pyc new file mode 100644 index 0000000..c6fef25 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/layouts/__pycache__/dynamiclayouts.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/layouts/__pycache__/flowlayout.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/layouts/__pycache__/flowlayout.cpython-310.pyc new file mode 100644 index 0000000..d0ebde2 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/layouts/__pycache__/flowlayout.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/layouts/basiclayouts.py b/venv/Lib/site-packages/PySide2/examples/widgets/layouts/basiclayouts.py new file mode 100644 index 0000000..565ce72 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/layouts/basiclayouts.py @@ -0,0 +1,134 @@ + +############################################################################ +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the widgets/layouts/basiclayout example from Qt v5.x""" + +from PySide2 import QtWidgets + + +class Dialog(QtWidgets.QDialog): + NumGridRows = 3 + NumButtons = 4 + + def __init__(self): + super(Dialog, self).__init__() + + self.createMenu() + self.createHorizontalGroupBox() + self.createGridGroupBox() + self.createFormGroupBox() + + bigEditor = QtWidgets.QTextEdit() + bigEditor.setPlainText("This widget takes up all the remaining space " + "in the top-level layout.") + + buttonBox = QtWidgets.QDialogButtonBox(QtWidgets.QDialogButtonBox.Ok | QtWidgets.QDialogButtonBox.Cancel) + + buttonBox.accepted.connect(self.accept) + buttonBox.rejected.connect(self.reject) + + mainLayout = QtWidgets.QVBoxLayout() + mainLayout.setMenuBar(self.menuBar) + mainLayout.addWidget(self.horizontalGroupBox) + mainLayout.addWidget(self.gridGroupBox) + mainLayout.addWidget(self.formGroupBox) + mainLayout.addWidget(bigEditor) + mainLayout.addWidget(buttonBox) + self.setLayout(mainLayout) + + self.setWindowTitle("Basic Layouts") + + def createMenu(self): + self.menuBar = QtWidgets.QMenuBar() + + self.fileMenu = QtWidgets.QMenu("&File", self) + self.exitAction = self.fileMenu.addAction("E&xit") + self.menuBar.addMenu(self.fileMenu) + + self.exitAction.triggered.connect(self.accept) + + def createHorizontalGroupBox(self): + self.horizontalGroupBox = QtWidgets.QGroupBox("Horizontal layout") + layout = QtWidgets.QHBoxLayout() + + for i in range(Dialog.NumButtons): + button = QtWidgets.QPushButton("Button %d" % (i + 1)) + layout.addWidget(button) + + self.horizontalGroupBox.setLayout(layout) + + def createGridGroupBox(self): + self.gridGroupBox = QtWidgets.QGroupBox("Grid layout") + layout = QtWidgets.QGridLayout() + + for i in range(Dialog.NumGridRows): + label = QtWidgets.QLabel("Line %d:" % (i + 1)) + lineEdit = QtWidgets.QLineEdit() + layout.addWidget(label, i + 1, 0) + layout.addWidget(lineEdit, i + 1, 1) + + self.smallEditor = QtWidgets.QTextEdit() + self.smallEditor.setPlainText("This widget takes up about two thirds " + "of the grid layout.") + + layout.addWidget(self.smallEditor, 0, 2, 4, 1) + + layout.setColumnStretch(1, 10) + layout.setColumnStretch(2, 20) + self.gridGroupBox.setLayout(layout) + + def createFormGroupBox(self): + self.formGroupBox = QtWidgets.QGroupBox("Form layout") + layout = QtWidgets.QFormLayout() + layout.addRow(QtWidgets.QLabel("Line 1:"), QtWidgets.QLineEdit()) + layout.addRow(QtWidgets.QLabel("Line 2, long text:"), QtWidgets.QComboBox()) + layout.addRow(QtWidgets.QLabel("Line 3:"), QtWidgets.QSpinBox()) + self.formGroupBox.setLayout(layout) + + +if __name__ == '__main__': + + import sys + + app = QtWidgets.QApplication(sys.argv) + dialog = Dialog() + sys.exit(dialog.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/layouts/dynamiclayouts.py b/venv/Lib/site-packages/PySide2/examples/widgets/layouts/dynamiclayouts.py new file mode 100644 index 0000000..5ae7113 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/layouts/dynamiclayouts.py @@ -0,0 +1,170 @@ + +############################################################################ +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the widgets/layouts/dynamiclayouts example from Qt v5.x""" + +from PySide2.QtCore import Qt, QSize +from PySide2.QtWidgets import (QApplication, QDialog, QLayout, QGridLayout, + QMessageBox, QGroupBox, QSpinBox, QSlider, + QProgressBar, QDial, QDialogButtonBox, + QComboBox, QLabel) + +class Dialog(QDialog): + def __init__(self): + super(Dialog, self).__init__() + + self.rotableWidgets = [] + + self.createRotableGroupBox() + self.createOptionsGroupBox() + self.createButtonBox() + + mainLayout = QGridLayout() + mainLayout.addWidget(self.rotableGroupBox, 0, 0) + mainLayout.addWidget(self.optionsGroupBox, 1, 0) + mainLayout.addWidget(self.buttonBox, 2, 0) + mainLayout.setSizeConstraint(QLayout.SetMinimumSize) + + self.mainLayout = mainLayout + self.setLayout(self.mainLayout) + + self.setWindowTitle("Dynamic Layouts") + + def rotateWidgets(self): + count = len(self.rotableWidgets) + if count % 2 == 1: + raise AssertionError("Number of widgets must be even") + + for widget in self.rotableWidgets: + self.rotableLayout.removeWidget(widget) + + self.rotableWidgets.append(self.rotableWidgets.pop(0)) + + for i in range(count//2): + self.rotableLayout.addWidget(self.rotableWidgets[count - i - 1], 0, i) + self.rotableLayout.addWidget(self.rotableWidgets[i], 1, i) + + + def buttonsOrientationChanged(self, index): + self.mainLayout.setSizeConstraint(QLayout.SetNoConstraint) + self.setMinimumSize(0, 0) + + orientation = Qt.Orientation(int(self.buttonsOrientationComboBox.itemData(index))) + + if orientation == self.buttonBox.orientation(): + return + + self.mainLayout.removeWidget(self.buttonBox) + + spacing = self.mainLayout.spacing() + + oldSizeHint = self.buttonBox.sizeHint() + QSize(spacing, spacing) + self.buttonBox.setOrientation(orientation) + newSizeHint = self.buttonBox.sizeHint() + QSize(spacing, spacing) + + if orientation == Qt.Horizontal: + self.mainLayout.addWidget(self.buttonBox, 2, 0) + self.resize(self.size() + QSize(-oldSizeHint.width(), newSizeHint.height())) + else: + self.mainLayout.addWidget(self.buttonBox, 0, 3, 2, 1) + self.resize(self.size() + QSize(newSizeHint.width(), -oldSizeHint.height())) + + self.mainLayout.setSizeConstraint(QLayout.SetDefaultConstraint) + + def show_help(self): + QMessageBox.information(self, "Dynamic Layouts Help", + "This example shows how to change layouts " + "dynamically.") + + def createRotableGroupBox(self): + self.rotableGroupBox = QGroupBox("Rotable Widgets") + + self.rotableWidgets.append(QSpinBox()) + self.rotableWidgets.append(QSlider()) + self.rotableWidgets.append(QDial()) + self.rotableWidgets.append(QProgressBar()) + count = len(self.rotableWidgets) + for i in range(count): + self.rotableWidgets[i].valueChanged[int].\ + connect(self.rotableWidgets[(i+1) % count].setValue) + + self.rotableLayout = QGridLayout() + self.rotableGroupBox.setLayout(self.rotableLayout) + + self.rotateWidgets() + + def createOptionsGroupBox(self): + self.optionsGroupBox = QGroupBox("Options") + + buttonsOrientationLabel = QLabel("Orientation of buttons:") + + buttonsOrientationComboBox = QComboBox() + buttonsOrientationComboBox.addItem("Horizontal", Qt.Horizontal) + buttonsOrientationComboBox.addItem("Vertical", Qt.Vertical) + buttonsOrientationComboBox.currentIndexChanged[int].connect(self.buttonsOrientationChanged) + + self.buttonsOrientationComboBox = buttonsOrientationComboBox + + optionsLayout = QGridLayout() + optionsLayout.addWidget(buttonsOrientationLabel, 0, 0) + optionsLayout.addWidget(self.buttonsOrientationComboBox, 0, 1) + optionsLayout.setColumnStretch(2, 1) + self.optionsGroupBox.setLayout(optionsLayout) + + def createButtonBox(self): + self.buttonBox = QDialogButtonBox() + + closeButton = self.buttonBox.addButton(QDialogButtonBox.Close) + helpButton = self.buttonBox.addButton(QDialogButtonBox.Help) + rotateWidgetsButton = self.buttonBox.addButton("Rotate &Widgets", QDialogButtonBox.ActionRole) + + rotateWidgetsButton.clicked.connect(self.rotateWidgets) + closeButton.clicked.connect(self.close) + helpButton.clicked.connect(self.show_help) + + +if __name__ == '__main__': + import sys + + app = QApplication(sys.argv) + dialog = Dialog() + dialog.exec_() diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/layouts/flowlayout.py b/venv/Lib/site-packages/PySide2/examples/widgets/layouts/flowlayout.py new file mode 100644 index 0000000..970d5ac --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/layouts/flowlayout.py @@ -0,0 +1,160 @@ + +############################################################################ +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the widgets/layouts/flowlayout example from Qt v5.x""" + +import sys +from PySide2.QtCore import Qt, QMargins, QPoint, QRect, QSize +from PySide2.QtWidgets import (QApplication, QLayout, QPushButton, + QSizePolicy, QWidget) + + +class Window(QWidget): + def __init__(self): + super(Window, self).__init__() + + flowLayout = FlowLayout(self) + flowLayout.addWidget(QPushButton("Short")) + flowLayout.addWidget(QPushButton("Longer")) + flowLayout.addWidget(QPushButton("Different text")) + flowLayout.addWidget(QPushButton("More text")) + flowLayout.addWidget(QPushButton("Even longer button text")) + + self.setWindowTitle("Flow Layout") + + +class FlowLayout(QLayout): + def __init__(self, parent=None): + super(FlowLayout, self).__init__(parent) + + if parent is not None: + self.setContentsMargins(QMargins(0, 0, 0, 0)) + + self._item_list = [] + + def __del__(self): + item = self.takeAt(0) + while item: + item = self.takeAt(0) + + def addItem(self, item): + self._item_list.append(item) + + def count(self): + return len(self._item_list) + + def itemAt(self, index): + if index >= 0 and index < len(self._item_list): + return self._item_list[index] + + return None + + def takeAt(self, index): + if index >= 0 and index < len(self._item_list): + return self._item_list.pop(index) + + return None + + def expandingDirections(self): + return Qt.Orientations(Qt.Orientation(0)) + + def hasHeightForWidth(self): + return True + + def heightForWidth(self, width): + height = self._do_layout(QRect(0, 0, width, 0), True) + return height + + def setGeometry(self, rect): + super(FlowLayout, self).setGeometry(rect) + self._do_layout(rect, False) + + def sizeHint(self): + return self.minimumSize() + + def minimumSize(self): + size = QSize() + + for item in self._item_list: + size = size.expandedTo(item.minimumSize()) + + size += QSize(2 * self.contentsMargins().top(), + 2 * self.contentsMargins().top()) + return size + + def _do_layout(self, rect, test_only): + x = rect.x() + y = rect.y() + line_height = 0 + spacing = self.spacing() + + for item in self._item_list: + style = item.widget().style() + layout_spacing_x = style.layoutSpacing(QSizePolicy.PushButton, + QSizePolicy.PushButton, + Qt.Horizontal) + layout_spacing_y = style.layoutSpacing(QSizePolicy.PushButton, + QSizePolicy.PushButton, + Qt.Vertical) + space_x = spacing + layout_spacing_x + space_y = spacing + layout_spacing_y + next_x = x + item.sizeHint().width() + space_x + if next_x - space_x > rect.right() and line_height > 0: + x = rect.x() + y = y + line_height + space_y + next_x = x + item.sizeHint().width() + space_x + line_height = 0 + + if not test_only: + item.setGeometry(QRect(QPoint(x, y), item.sizeHint())) + + x = next_x + line_height = max(line_height, item.sizeHint().height()) + + return y + line_height - rect.y() + + +if __name__ == '__main__': + app = QApplication(sys.argv) + mainWin = Window() + mainWin.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/layouts/layouts.pyproject b/venv/Lib/site-packages/PySide2/examples/widgets/layouts/layouts.pyproject new file mode 100644 index 0000000..85eb227 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/layouts/layouts.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["basiclayouts.py", "dynamiclayouts.py", "flowlayout.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/__pycache__/application.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/__pycache__/application.cpython-310.pyc new file mode 100644 index 0000000..1ec4b87 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/__pycache__/application.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/__pycache__/application_rc.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/__pycache__/application_rc.cpython-310.pyc new file mode 100644 index 0000000..f35261d Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/__pycache__/application_rc.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/application.py b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/application.py new file mode 100644 index 0000000..8c4626f --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/application.py @@ -0,0 +1,275 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2 import QtCore, QtGui, QtWidgets + +import application_rc + +class MainWindow(QtWidgets.QMainWindow): + def __init__(self): + super(MainWindow, self).__init__() + + self.curFile = '' + + self.textEdit = QtWidgets.QTextEdit() + self.setCentralWidget(self.textEdit) + + self.createActions() + self.createMenus() + self.createToolBars() + self.createStatusBar() + + self.readSettings() + + self.textEdit.document().contentsChanged.connect(self.documentWasModified) + + self.setCurrentFile('') + self.setUnifiedTitleAndToolBarOnMac(True) + + def closeEvent(self, event): + if self.maybeSave(): + self.writeSettings() + event.accept() + else: + event.ignore() + + def newFile(self): + if self.maybeSave(): + self.textEdit.clear() + self.setCurrentFile('') + + def open(self): + if self.maybeSave(): + fileName, filtr = QtWidgets.QFileDialog.getOpenFileName(self) + if fileName: + self.loadFile(fileName) + + def save(self): + if self.curFile: + return self.saveFile(self.curFile) + + return self.saveAs() + + def saveAs(self): + fileName, filtr = QtWidgets.QFileDialog.getSaveFileName(self) + if fileName: + return self.saveFile(fileName) + + return False + + def about(self): + QtWidgets.QMessageBox.about(self, "About Application", + "The Application example demonstrates how to write " + "modern GUI applications using Qt, with a menu bar, " + "toolbars, and a status bar.") + + def documentWasModified(self): + self.setWindowModified(self.textEdit.document().isModified()) + + def createActions(self): + self.newAct = QtWidgets.QAction(QtGui.QIcon(':/images/new.png'), "&New", + self, shortcut=QtGui.QKeySequence.New, + statusTip="Create a new file", triggered=self.newFile) + + self.openAct = QtWidgets.QAction(QtGui.QIcon(':/images/open.png'), + "&Open...", self, shortcut=QtGui.QKeySequence.Open, + statusTip="Open an existing file", triggered=self.open) + + self.saveAct = QtWidgets.QAction(QtGui.QIcon(':/images/save.png'), + "&Save", self, shortcut=QtGui.QKeySequence.Save, + statusTip="Save the document to disk", triggered=self.save) + + self.saveAsAct = QtWidgets.QAction("Save &As...", self, + shortcut=QtGui.QKeySequence.SaveAs, + statusTip="Save the document under a new name", + triggered=self.saveAs) + + self.exitAct = QtWidgets.QAction("E&xit", self, shortcut="Ctrl+Q", + statusTip="Exit the application", triggered=self.close) + + self.cutAct = QtWidgets.QAction(QtGui.QIcon(':/images/cut.png'), "Cu&t", + self, shortcut=QtGui.QKeySequence.Cut, + statusTip="Cut the current selection's contents to the clipboard", + triggered=self.textEdit.cut) + + self.copyAct = QtWidgets.QAction(QtGui.QIcon(':/images/copy.png'), + "&Copy", self, shortcut=QtGui.QKeySequence.Copy, + statusTip="Copy the current selection's contents to the clipboard", + triggered=self.textEdit.copy) + + self.pasteAct = QtWidgets.QAction(QtGui.QIcon(':/images/paste.png'), + "&Paste", self, shortcut=QtGui.QKeySequence.Paste, + statusTip="Paste the clipboard's contents into the current selection", + triggered=self.textEdit.paste) + + self.aboutAct = QtWidgets.QAction("&About", self, + statusTip="Show the application's About box", + triggered=self.about) + + self.aboutQtAct = QtWidgets.QAction("About &Qt", self, + statusTip="Show the Qt library's About box", + triggered=qApp.aboutQt) + + self.cutAct.setEnabled(False) + self.copyAct.setEnabled(False) + self.textEdit.copyAvailable.connect(self.cutAct.setEnabled) + self.textEdit.copyAvailable.connect(self.copyAct.setEnabled) + + def createMenus(self): + self.fileMenu = self.menuBar().addMenu("&File") + self.fileMenu.addAction(self.newAct) + self.fileMenu.addAction(self.openAct) + self.fileMenu.addAction(self.saveAct) + self.fileMenu.addAction(self.saveAsAct) + self.fileMenu.addSeparator() + self.fileMenu.addAction(self.exitAct) + + self.editMenu = self.menuBar().addMenu("&Edit") + self.editMenu.addAction(self.cutAct) + self.editMenu.addAction(self.copyAct) + self.editMenu.addAction(self.pasteAct) + + self.menuBar().addSeparator() + + self.helpMenu = self.menuBar().addMenu("&Help") + self.helpMenu.addAction(self.aboutAct) + self.helpMenu.addAction(self.aboutQtAct) + + def createToolBars(self): + self.fileToolBar = self.addToolBar("File") + self.fileToolBar.addAction(self.newAct) + self.fileToolBar.addAction(self.openAct) + self.fileToolBar.addAction(self.saveAct) + + self.editToolBar = self.addToolBar("Edit") + self.editToolBar.addAction(self.cutAct) + self.editToolBar.addAction(self.copyAct) + self.editToolBar.addAction(self.pasteAct) + + def createStatusBar(self): + self.statusBar().showMessage("Ready") + + def readSettings(self): + settings = QtCore.QSettings("Trolltech", "Application Example") + pos = settings.value("pos", QtCore.QPoint(200, 200)) + size = settings.value("size", QtCore.QSize(400, 400)) + self.resize(size) + self.move(pos) + + def writeSettings(self): + settings = QtCore.QSettings("Trolltech", "Application Example") + settings.setValue("pos", self.pos()) + settings.setValue("size", self.size()) + + def maybeSave(self): + if self.textEdit.document().isModified(): + ret = QtWidgets.QMessageBox.warning(self, "Application", + "The document has been modified.\nDo you want to save " + "your changes?", + QtWidgets.QMessageBox.Save | QtWidgets.QMessageBox.Discard | + QtWidgets.QMessageBox.Cancel) + if ret == QtWidgets.QMessageBox.Save: + return self.save() + elif ret == QtWidgets.QMessageBox.Cancel: + return False + return True + + def loadFile(self, fileName): + file = QtCore.QFile(fileName) + if not file.open(QtCore.QFile.ReadOnly | QtCore.QFile.Text): + QtWidgets.QMessageBox.warning(self, "Application", + "Cannot read file %s:\n%s." % (fileName, file.errorString())) + return + + inf = QtCore.QTextStream(file) + QtWidgets.QApplication.setOverrideCursor(QtCore.Qt.WaitCursor) + self.textEdit.setPlainText(inf.readAll()) + QtWidgets.QApplication.restoreOverrideCursor() + + self.setCurrentFile(fileName) + self.statusBar().showMessage("File loaded", 2000) + + def saveFile(self, fileName): + error = None + QtWidgets.QApplication.setOverrideCursor(QtCore.Qt.WaitCursor) + file = QtCore.QSaveFile(fileName) + if file.open(QtCore.QFile.WriteOnly | QtCore.QFile.Text): + outf = QtCore.QTextStream(file) + outf << self.textEdit.toPlainText() + if not file.commit(): + error = "Cannot write file %s:\n%s." % (fileName, file.errorString()) + else: + error = "Cannot open file %s:\n%s." % (fileName, file.errorString()) + QtWidgets.QApplication.restoreOverrideCursor() + + if error: + QtWidgets.QMessageBox.warning(self, "Application", error) + return False + + self.setCurrentFile(fileName) + self.statusBar().showMessage("File saved", 2000) + return True + + def setCurrentFile(self, fileName): + self.curFile = fileName + self.textEdit.document().setModified(False) + self.setWindowModified(False) + + if self.curFile: + shownName = self.strippedName(self.curFile) + else: + shownName = 'untitled.txt' + + self.setWindowTitle("%s[*] - Application" % shownName) + + def strippedName(self, fullFileName): + return QtCore.QFileInfo(fullFileName).fileName() + + +if __name__ == '__main__': + + import sys + + app = QtWidgets.QApplication(sys.argv) + mainWin = MainWindow() + mainWin.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/application.pyproject b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/application.pyproject new file mode 100644 index 0000000..0e04139 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/application.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["application.qrc", "application.py", "application_rc.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/application.qrc b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/application.qrc new file mode 100644 index 0000000..0a776fa --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/application.qrc @@ -0,0 +1,10 @@ + + + images/copy.png + images/cut.png + images/new.png + images/open.png + images/paste.png + images/save.png + + diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/application_rc.py b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/application_rc.py new file mode 100644 index 0000000..780faeb --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/application_rc.py @@ -0,0 +1,608 @@ +# Resource object code (Python 3) +# Created by: object code +# Created by: The Resource Compiler for Qt version 5.15.2 +# WARNING! All changes made in this file will be lost! + +from PySide2 import QtCore + +qt_resource_data = b"\ +\x00\x00\x04\xa3\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x00\x04gAMA\x00\x00\xd6\xd8\xd4OX2\ +\x00\x00\x00\x19tEXtSoftware\ +\x00Adobe ImageRead\ +yq\xc9e<\x00\x00\x045IDATX\xc3\xe5\ +\x97\xcd\x8fTE\x14\xc5\x7f\xb7\xea\xd6{\xaf\xdbn\xc7\ +\xf9@\x9d\x89FM4\x99D\x8d\x1aH\x98\xc4\x8c\x1f\ +\x1b\xfe\x02L\x5c\xf1\x07\x18\x16.M\x5ckX\xc3\x8e\ +\xc4\x8d\x1b\x17\xce\x82htA\x5c\x18\x0d\xe2\xc4\xc6\x00\ +=`PQ\x19`\x02\xa2\x0e\x0c\x83\xd3\xfd^\xf7\x94\ +\x8b\xaa\xee\xf9`\xe6\x0d\x84Q\x16VR\xa9\xce{\xb7\ +\xeb\x9e:\xf7\xd4\xa9z\xea\xbd\xe7~6\xe5>\xb7>\ +\x80]\xbbv\xbd\x03\xec\xfd\x8f\xf2N5\x1a\x8d\x03\xeb\ +\x19\xd8\xbb\xef\xbd\xa3;\x1f\x1fv\x00\x9c<:\xcf\xcc\ +\x977X\x9c\xef\xdcS\xa6\xda\xa0\xf2\xdck\x03\xbc\xb8\ +g\x10\x80\x8b\x7f\x16|\xf8\xee\x1e\x80\xdb\x00p\xfc\xec\ +\x1c\xdf?0\x04x.\xfd\xb8\xc0\xfe\xb7\xceo\xcbr\ +\x0f\x1dy\x9a\x0b#\x96\xd3\x9f\x1fd\xfc\xd5}\x9bk\ +@E\xb0\x16@xp,#\xcb\xb2m\x0100\x96\ +a\x8dP\x1b|\x14#%\x22\x14+\xd8\x18\x91\xd5\x95\ +s\xe7\xce\x83*\xb8\x04\xd2\x14\xb2\x0c\xd2,\x8cI\x0a\ +I\x12\xdew:\x90\xe7\x90\xb7\xa1\xd5\x82v+\x8em\ +(r\xb2\xfa8\xd6\x0a\xe3\xaf\xbcIk\xf1\xfa\xe6\x00\ +\xac\x15\xac\x15\x04\xb0F\xd8\xbd{\xe7\x16k\xeb\x86\xae\ +\x80Z\xa8V\x81\xeamQ\x8d\xaf\x04\xb5\x82\xf7\xa0\xa6\ +\x84\x01g\x055\x82\x08\xa8\x0a\x95,\xc3# \x1e\x08\ +\xc0\xf0\x1e/\x02\xde#\x12&\x15|\x88#\xc4!\x1e\ +\xd0\xaf\x16\xaa\x1b\x8b\xf6\xd8'a\ +a\xbd\x1c%% \x00\xf0\x81\x8d4M\xa3:\xc3\xb3\ +\x98\x11\x89l\x07\xdac\x09V\x98_)F\xfca\xcd\ +r\x7fa\x1d-\xd1\x80:\x09TI\x18O4/\xe0\ +\x9d\x85\xc4!\x89\xc3g\x09\x92i\xd8\x11\x89\xe2\x13\x87\ +X\x8b\xefv\x91\xbc\x80\xbc\x03\xed\x02\xdfj#\xed\x02\ +\xf2\x02\x9fwP\x1dE\xd5 x:\xebTx\x9b\x06\ +\x9c3x\x0f\x03\x8f$\xbc\xfe\xf2\xf3wh\xe86h\ +\xa4\xbe\xf1\xeb\xc6\xfc\xdf\xb1\x04R^\x82DM_\x84\ +\x8f\x0d\xa58\xe7\xb6\xc5\x88\x9e\x18K\xb9v\xb3\x03\x08\ +\x9dR\x11\xaa\x90\xb8P\xefZ\xc50}\xb1\xcb@\xc5\ +\xb0\x0e\xf4&\xadW\xf9U.\xe1\xe1\xc6\xd22\xf5\xcc\ +p}\xc9\x84-\xe9J\x19\x10\x9c\x1a\xc0s\xe5f\x97\ ++7\xbb\xacQW?\xd7\xaad~\xc5'\xa2)\xac\ +\x05\x15\xc3\x9c\x0b\xb5w\xa6l\x17\xa8\xc1\xa9 \xc8\x1a\ +5\xaf\x9b5\x1a\x8fY1\x9e\xfe{\xe9\xef\x14\x00\xf1\ +\x82\xef\x9bX0+WV\x02U!\xd1\x90\xfc\xe7S\ +\xdf\xf2\xeb\x99\x13,-\xde\xb8\xa7\xfaWj\x03<\xf5\ +\xecN\x9eya\x02\x0f\xa83[1\x10\x03|\x87\xf7\ +\xf7\xbf\xc1\xc2\xc2\x02\xb7n\xdd\xa2(\x0aD\x04k-\ +\xd6ZT\x15U\xc59\x87\xaab\xad\xc5\x98\xf0\xdf\xe5\ +\xe5e\xf2<\xef\xf7#\xcd\xf9\xb8\xf2-\x18pVP\ +\x17\x18\xdc1:\xb6rO8~\x9c\xe9\xe9i\x8c1\ +x\xef\x99\x98\x98`rr\xf2\x8eY\xd81:\xd6\xdf\ +\x86\xae\xd4\x09Up6\xac\xa2V\xaf\xf7k933\ +\xc3\xd0\xd0\x10\xd6Z\xbc\xf74\x9b\xcd\xbb\x02P\xab\xd7\ +p\xd1\x88\xb4\xd4\x88\x14\x9c\x0b'\x5c\xa0*\x00\xa8V\ +\xabdY\xd6\xa7\xb87\xdeis\x1a\xa9\x17AK\xad\ +8\x1e\xc7\xbd#\xb4\xd7\x8c1\x88D\xdf\x8f:\xb8\xab\ +\x9b\xaf5\xa8\x0d\xf3\xf6\x18.=\x8e\x83)m\xe3\xd5\ +\xdb\x12\xa9\xf7\xe5Vl\xad\xf4\x91\x0e\x8e\x0c\xc3\xf2\xef\ +\xdb\x02\xe0\xa1\x91a\xd4\xc2\xb5+\x97Y\x9c\xbf\xbe\x05\ +\x036\xf8\xc0`\xad\x02\x0b\xdb\xc3\xc0P\xad\xc2\xec\xc5\ +K\x9c\xfd\xee\x1b\xce\x9f\x9c\x9e\x03\xa66\x04`$^\ +J\x05\x12\x0b\xed\x91'\xa9=\x0co\x1f8\xc8f\xc7\ +\x81':\xf1*\xe75\x1e2\x81\x14(\xbap\xf9\xea\ +U\xce4\x8e\xd1\xfc\xfa\x8b\xb9\xd9\x1fN\x1d\x02\x0eo\ +\x08\xe0\xb3\x8f>\xe0\xa7\xd3'W\x99\xe9\xda\xa3\x86U\ +\xe6\xbb\x1e\x04\x1b<_\x1do|w\xee\x8f\xd9_\x0e\ +\x01\x87\x1b\x8d\xc6_\x1b\x01\x98\x9a\xfe\xf4\xe3\x7f\xf5s\ +l}\xf25\x00\xe2\xb7\xda\x81\xff\xdd\xd7\xf1?M\xf0\ +K\xb9\xe8F\x89\xaf\x00\x00\x00\x00IEND\xaeB\ +`\x82\ +\x00\x00\x08\x19\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x00\x04gAMA\x00\x00\xd6\xd8\xd4OX2\ +\x00\x00\x00\x19tEXtSoftware\ +\x00Adobe ImageRead\ +yq\xc9e<\x00\x00\x07\xabIDATX\xc3\xad\ +W[P\x93g\x1a\xf6\xca\xce\xec\xcc\xf6b/\xbc\xd9\ +\xe9\xce\xecn\xbd\xda\xd9\x9b\xb5\xce\xba;{\xb0\xad\xcc\ +z\xb1\xce\xce:\xb3vTpu\xdb\xe2\x81\xd6\xb6T\ +\x04\xbb\xa5 m\xc1\x82\x06\x08\x07QB\x80\x80\x80\x02\ +!\x81\x10\x92@H\x10s$!gr\x80\x04B \ +\x9c\x09G\xb5Tx\xf6\xfb~\x13\x160X\x8b}g\ +\x9e\xf9/\x92\xfc\xcf\xfb>\xcf\xfb\xbe\xdf\x97]\x00v\ +\xfd\x98 \xf1\x0b\x82\x14\x02\x03\xc1u\x82\x03\xcf\xfd\xfe\ +\x8fH\xbc\x9b \xe1W\xaf\xef\xb5*\x8c\xd6e\xdb\x02\ +`\x19\x1e[\x09'\xf13\xfa\x19\x81\x22\xfc\xdc>v\ +H~\x8a\xa0\xb9\xb6Y\x1c2\xcf\xadB9\xfe\x1dD\ +\xf6Q\xd8\xc7\xe6\xe8\x87\x86={\xf6XSR\xae,\ +\xca::\x10N\xe2\xe5I\xc3\xc41\x04\xb7>I\xf9\ +,`\x9b]YSM\x03M\xb6\x114\xeb\xfb 1\ +y`\x19\x9d\xc5\xbb\xef\xbe?\xc5\xab\xbe\x83\xf1\x89)\ +LO\xcf\xae\x92\xef\xd7\xbct\x02\x11\x9f\x0f\xbe\x1d\xe3\ +\xb2\x04CO\xb43@\x8b{\x06\xcd=.4\xeb\xec\ +\xa8W\xf6 \x87S\x852^5C\xbc\xb0\xf4\x90\x81\ +\xc1`\x5c&\xbfK|\xe1\x04H\x1c$8A\xfd\xdd\ +\xeas'\xf1\xb9'\x04H\x87\x97\xc1\xd7\xbb \x22U\ +7\xdc7\xa2\xb8N\x88,V>\xccV\xdb:q\x04\ +,\x16k,\xfc\xce\xe7'\x10\x916\x93\x95?F}\ +\xa5\xfe\x12\xc4o\xf4Y1\xb6\x02~\xef Z{\x9c\ +\xe0?0\xa1L(CF\x0e\x1b\xb2\x0e\xf9&\xd2\xf9\ +\xc5e\xcc-,!4\xbf\x88\xbd{\xf7Z\xc9;~\ +\xbam\x02$~C\x90F=5\x13iu\xb3\x80\xd2\ +?\x0f\xcb\xc4\xe2\x9aP\xa1Z\xb4l\xf1Y\xa0\xb6\xa0\ +\xa6]\x8d/\xb2sq\xb7\x9e\xff\x0c1%\x9d\x09\xcd\ +cbj\x06\x83C\x81'\xe4\xdd\xbc-\xd3\xb0;\x92\ +\x033&\xd4S\xb5\xd3\xfbXO\x88\xc5\x03!\x88,\ +CP\xbaF\xd0\xed\x09B\xe5\x9bB\x9bs\xfc\xa9\xcf\ +Z\x1b\xee*t\xc8\xbc\xc9E\x09\xa7l\x93\xcf\x9b\x88\ +'\xa7\x11\x18\x1d\xc3\x80o\x08\xa2\xd6\xd6%\xc2Q\xdb\ +(\x12\x87\xc6\x1f\xaf\x82/b\x94M\x89$\x90\x22\xea\ +R-\x9aB\xab\xe8\x18y\x04\xa1\xc5\xcf\x10St\xf6\ +\x0d\xa3\xd3\xe1\x87\xd4<\x80\x16\xbd\x03\x0d]\x06\x14\xd5\ +\x0a\x90\x91\x95\x0d/y\xf1\xc6\xaa\xa9\xd4\xb3s\x0bL\ +\xc5\x94\xd8\xdd\xef\x85\xc9b\x05\xb7\xbc\x12\xa5\xe5\x95K\ +\x13\xf3\xcb\xab#\x0f\x017\xd9\x11\xe6\xd9\x15\x84\x97\x15\ +\x13\x06\xcb<\xd0h\xf2\xa3\xdd\xee_'\x96;\x86 \ +\xb3x\xd7}\xe6\x08\xa4\xf8<3\x1b*\x8d6\xaa\xdc\ +S3!\x8c\x8e\x8d3\x15\xd3&\xe47\x09\xf1\xc1\xc5\ +\x8fQs\xaf\x01\xbee`\xfc\x11\xa0#\x13#\xf2\xce\ +\xa1\xbe]\xb9\xb8Q\x01\x83\x81ttM\xa7\x1e\x0ag\ +\x80\xa9\xb8\xdd\xea\x83\xd8\xe8B\x93\xca\xcc\xf8|\xe5\xcb\ +,\x88\xda$Q\x89\xa7g\xe7\x18\x1b\x86\x86G`w\ +8I\x82:$|\xf8!\xae\xb3\x0b\xe1\x99\x5c\x80o\ +\x09\xd0\x90\xde\xe1\x0f,\x81\xab\x1f\xc4}\xef\x04\xdd\x07\ +\x1da\xeb\xff\x9f\xc0\x1d\xb9\x16\x1d\xf6!H\xcc\xfdO\ +}\xee\xd4\x22\x9dU\x84\xaa\x9a\xbaM>G\xe4\x8e\xf8\ +<<\x12\x84\xd3\xdd\x0f\xbd\xc1\x88\xc2\xe2b\x9c~/\ +\x1e=\x03\x01\xf4/\x02\x83\x84\xbc\xc5\xff-\xee:C\ +(Q\x91\xf7\xf6\x05\xf1N\xdc\xbf}\x843i\xe3 \ +\x18\xf43\xab\xe0\xc9Th58\xd1\xd8\xdd\x0b\x9eX\ +\x89\xac\x5c\xf63>G\xaa\x9e\x9c\x9ee\xe4\xee\xf7\x0e\ +\xa2\xd7lAC\x03\x1f'b\xe3 \xe9\xd6\xc0E\xcf\ +\x01R\x90$\xb8\x86\xb2\x9e\x00n\xb4\xdbP\xd1\x1bD\ +\x85\xce\x8bJ~\x0bm\xbe\x9b['\xd1\xa0\x99\xf8\x16\ +e\x22\x05\xee)\xf4(\x13\xc8\x90x5\x0b\x1a\xad>\ +\xaa\xdcc\x13\x93\xf0\x0d\x0d\xc3f\xef\x83\xb4]\x8e\xc4\ +K\x97\x90\xc3\xca\xc3\xd4c\xc0NzI1N\xfa\x89\ +\x94\x7f[;\x84|\x85\x13%j\x1fJ\xd5\x03\xe8\xf2\ +0\xa3(\x22\xf8\xf93\x09t\x8f.\xa1\xa8\xbe\x15\xa5\ +|\x09\xb2J*\xf0\xcf\xe3qQ\xe5\xf6\x07F\xd1\xe7\ +\xf2@\xab7 \xfdj\x06\x92\xbfH\x83\xcd7\x02'\ +\xa9\xda@\x1aL\xe0{\x88R\x9d\x1fE\xdd\xfd\x0cq\ +A\x97\x1b\xc5\xdd\x1e\x88\x9cA\xfc\xf9\xcd\xb7]\x84\xeb\ +l\xb4C\xd0(\xf7N#\xa7\xfc\x1e\xb2K\xab\xf1Q\ +\xeaWH\xfeo\xea\xfaXQ\xb9G\x82\xe3\xf0\x0c\xf8\ +`4\x99Q\xc9\xab\xc2\xfbg\xcfA\xfe@\x03?\xe9\ +n\xb2\x8d\x19\xb9oi\x06\x19\xd2\x9b*/r\xe5\x0e\ +\xe4u\xf6\xa1\xf0\xbe\x1b\x1c\x95\x1b\xf9\x9c\xca)\xc2S\ +\xb8\xdd)\xdc+v\x04\x90Q\xc8\xc5\x95ky8\x11\ +\x9f\x80\x9b\xb7n3c\x15\x91\xdbjs@\x22m\xc7\ +\x85\x84\x0fPt\xbb\x0c\xf3+\x80\x9f4X\xf7$ \ +\x1c|\x84J\xd3\x188\xfaa\x86\x9cV\xfdU\xb3\x1e\ +\xac\x0e;\xb8:\x1f\xd9!\x1ez/\xe0\x13\xbc\xba]\ +\x02&\xbe\xc1\x83\x94o\xd88\x9f\x9c\x8a\x03\x7f=\x04\ +c\xaf\x99\xe9n*\xb7F\xd7\x83\xa4\xcb\xc9H\xff:\ +\x8b\x8c\xd5\xc7\xd1\xd83\xf881\x09\x86^\x13\x1a\x9b\ +\x04\xf8\xdd\x1b\xfbQO\xd4\xf1\x90\x99\xee\x9a\x00\xaa\xad\ +\x93`+]\x0c9\xf5\xbc\xf0\xbeg\xbd\xea\xcc\x16=\ +JU\x1e\x08m\x01\x94\xd4\xf1C\xe1eS@\xf0\xca\ +\xf7%`+nj\xc7\xa9\x84D\xc4\x1c9\x8a\xdc|\ +6ZZ\xc58\x14\x13\x83/95\xc8\x14j\x98\xe6\ +\xa2\xd5\xd2'\xf5\x9azL\x13\xa1Id\xb7\x99\x90\xdb\ +nF\xb9\xda\x8d\x06\xa5v9,9=\xf9N\x13\xec\ +\xd9r\xd4G\x0d;\xabF\x88c\xff9\x8f\xdf\xee\xfb\ +=\x1a\xf9\x02\x9c\xbf\x90\x80\x93\xf1\x17p\xa3\xad\x07\x19\ +\xc4OJ\x14\xe9n\xbaX\xa8\xef,\xfa\x94\x98P(\ +\xb7@\xe9\x0e<\xf9W\xec)*w-\xc1g\x04\xfb\ +\xb6\xb9\xe4D\x8d\xbe\xcc\xb2Z\xfc\xe3\xe4\x19\x1c<\xf4\ +7\xb0r\xf3\xb0\xef\xc0\x1fP \xd1!\x89'e*\ +\xa6K\x85>\xbf!\xd5F\xe4.\x90[!\xb0\x0c\xae\ +\xe5\xdc\xe2\xd2\x11\x13\x13\xe4\x87o<\xaf<\xe7\x96\x15\ +5\x9ciE\xe5\xf8\xfb\xb1X\x1c?\x19\x877\xf6\xef\ +\xc7\x8d:\x11\x92\xab\xa4\x0c!\xedp\xea5U!\x8b\ +4[\xc9\x037*4n\xd4I:\x17\xc3rs\x08\ +\x8em\x95\xfb\x87$\xe0Jesp\xe4\xf8)\x1c>\ +|\x98\x8cc.2\x05*\x5c\x22\xd5\xd3]~M\xdc\ +\x0b6\xe9tv\xa7\x1dw\x8c\xe4\x88\xb6\xf9\x9e\x84\xb7\ +\x1a\x95\xfb\x22\xbdI\xfd\x80\x0bm\xf4\x042JxL\ +\x0f\x9cKI\xc3\xb5\xa6.|\xc2me6Y\xf1\x83\ +\x01\x5c\x97\x9a\xc1Q{ \xf3\x04\xd7\xce%&\x056\ +\xc8\xfd\xc7\x9d\xc8\x1d\xd5\x82\xdc\x1a\x01\xce^NE\x81\ +X\x85x\xf6]\x5c\xa9U\x90\xaa\xfb\xc0\x96\xdbP\xad\ +u\xe3\xaeTA/\x10\xca\x0dr\xbf\xba\xd3j\xa3\x05\ +\xb7\xa2Q\xf8\x1d\xafC\x8dO\xb9-\x88\xcb\xe6\xe1\x9a\ +H\x8f\xaa\x1e/\x9a5\xe6\xc7\x7fz\xf3-Wx\xac\ +\xa8\xdc\xaf\xbd\xac\xdc\xd1\xe2\x08\xdd\x05\x5cu\x1f\xde\xcb\ +\xafE\xb9v\x002g`\xf5\xc2\xa7\x97\xa9\xdc\xf7\x08\ +\xd2\xa9\xdc;\xf8\x03\xf3\xc2\xf1\x13\x82\xca\x1c\xee\x9dP\ +\x0b9\x94\xb8\x0d\xc2\xc8\x16\xa3\x17\x87\xc3/\x22\xf7\x0e\ +\xff\xdam\x8a\xdda\x99\xd5\x1b\xb6\xd8k\xbb^2\xbe\ +/\x89\xff\x01f\xb9_\xfc\x11\x80=\xcf\x00\x00\x00\x00\ +IEND\xaeB`\x82\ +\x00\x00\x05+\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x00\x04gAMA\x00\x00\xd6\xd8\xd4OX2\ +\x00\x00\x00\x19tEXtSoftware\ +\x00Adobe ImageRead\ +yq\xc9e<\x00\x00\x04\xbdIDATX\xc3\xed\ +WkL\x93W\x18>#q\xc92\xe9\x16\x97\xa8T\ +e8\x9d\x02\x15\xf6\x03\x872\x93\x01f,[p\xc4\ +0\xff`\xa2.\x1a:\x1dN\x03\xba1\x89[\xb3\x80\ +\xd9\x0c\x84\x02\x19X\x1c\x14\x8b\x85\xb2\x82\x95^\xe4f\ +\x0b\x8e1\xf8\xc3F\xcb-\x81\x15\xdc\xa8\xc2\x1c\x1b\xb7\ +ji\x91\xf2\xee\xbc\x87\xaf\x0c\xdc\xb8\x0da\xd9\xb2\x93\ +<\xed\x97\xf3}\xfd\xde\xe7\xbc\xef\xf3^J\x00\x80\xfc\ +\x93 \xff\x0a\x02t\x09(D\x14\xd9\x14q\x14\x01+\ +F\x80\xae\xddd\xdd\xc6f\x22L\xf8\x95\xc4\x8bG\xc8\ +\xa1\xd3\xf7\xc8\x8e\x97;82a+A \x85\x9c\xbe\ +0H.\xdd\x80\x19@2\xabyM\xf4\xbe\xfbr\x13\ +hd\x06\x91\x04^\xa3Q\xf4\x06\xee\x85G\xf5\xd0\xbd\ +\x83\xcbM \x9b\x9d\xf6@t/\xbd\x162= \x89\ +?H\xa5,\x1b\x01\x8c1y\xc1\xbb\x9d\x88K\xc6\xd7\ +\xc6&\x0e\xa0\x10\xb9\xfdB\xfe\xc5+6F\x8c\x12\x5c\ +N\x02\x93\xa7\xa7\xa7\x0d\xcc\xd39\xb9\x98c6\x14\x0a\ +\xd2\xe4\xa3+A \x8c)\x9e*\xdf7G\xeb\xdc{\ +\xb5\xcc\x89\x9e@D\x96T\x83+,\x0b6FH\x08\ +\x13\xf5d*{.T\x03\x01\xf8\x037\xbf\xc0\x0e4\ +*T\xdfb\x88R\xd5,X\x03t\x1d\x16\x08\x04z\ +EU\xf5\xc8\xa0mt\xc2\xd4s\xf7!\xbesQ\x95\ +\x90\xae\x8f\xd0\x13\xcf\xe5\x94\x83\x87\xb4\x02\x9e\xcc.\x03\ +\xd4\x06\xdd\xaf\x99\xcb\xb0\xaf\xaf\xaf>\xbf\xd2`\xb5\xdb\ +\xed\x80\xf8y\xe4>\xc4^\xab\xb4\xb9\x88/\x86\x80'\ +\xd3\xc0g\xf9\x8e\x19\xf5`\xd7^3\xbav\xdas\xee\ +h\xd8\xc7\xc7G\x9f\xab\xab\xb0\x0e\x0f\x0d\xc1\x10\x87\xb2\ +\xf6.\xe7\x967\xf7wsa\xd8\xbd\xe8^\x80/f\ +\x9a\xa0\x86\xdf\xa96B\xf7\xf0\x03\xd8\x19\x9f\xd4\xcf\xa5\ +\xe7\x1a\x8a\x98-~\xfem\x97T\x1ak__\x1f\xb8\ +\xd0\xd1s\x07br\x15VN\xc4\x87\x97\xd4\x8c0\x14\ +\xe9\x15\xb7\x1e8\x1c\x0e@\xa4\xd6\x191\x9e\x85\x9b\x05\ +~m\xa9%\x1a[\x97\xd9\x0c\xe6.\x0a\xf3$\x14\xdf\ +6\x8e{\xbd\x1e\xd1\xcdB\xc8\x09o\xa9\x04<\xd1\xbd\ +V\xab\x15\x10w\x7f\x1b\x84\xf3\x92\x5c\xbbR\xa9\x84\xfa\ +\xfaz0\x99L\x0cu\xdf5\xc1Q\xb1d\x18\xc9Q\ +D>\xb6v\xcc\xb4@O\x93_~\xd3\xd6\xdf\xdf\x0f\ +2\x99\x0cD\x22\x11\xa8T*\x90J\xa5\xa0\xd1h \ +K[9\xbe\xe9\x95\xe0\x1f\xb8S\xafy,\xf3\x00\x97\ +\x8e\x22\x9e\xc7\x86\xe6S)\x19\xf6\x82\x82\x02\xe6\xe2\xa0\ +\xa0 \xe0\xf1x`\xb1X@[^\x01\xfb\xcf&\x0c\ +-\xa6S\xceg\x94\xcf\x09L\x83\xe2[{\xe6\xc2`\ +\x9a\xb2\x14\x14\x0a\x05\x88\xc5b\xc8\xcc\xcc\x84\xa2\xa2\x22\ +P\xab\xd5\xd0\xd9\xd9\xc9`\xec\xfe\xc9\xb9\xc9\xdb\xa7u\ +.\xb7\xcfK\x80\xae\xb7\xd8)p\x0e\xc0j\x97\xacx\ +\x88\xca\x7f\x82\xe2)\x89\x0e>\x97+![\x96\x0f\x07\ +c\xe3G\x84\x1f&\xd8\x92rd\x8eo\x1a\xbf\x07\xa3\ +\xd1\x08-\xad-\xf0\xcb\xc0 \x1c8\xf1\xbe\x05\xb3b\ +\xc1\x04\x5ci\x84\x85\x85\x84F\xdc&\xe72\xac,\xcf\ +3\xb5\x13\xec;\xe3\xba\xd33\xaf\x82\xe5\xfez\x89\x06\ +\x9e\xde\xfcb\x1b\xf7<\x92\x8d{f\xabO[\xca5\ +\xedXCC=444\x80\xa5\xb7\x172\x14\xc5\xc3\ +\xf3\xe9\xc0e<\x92\xe5(\x9e6]\xe5\x9c*2x\ +}\xf4\x83.Zl\x121\x0c\x1b%\xeaq\xf7/\xcb\ +'\xef\x05\x87_\xfe\xd3\xe4D\x0bLh\xf4\xc9>u\ +\x95\x1e\x0c\x06\x03\xb4\xb7\xb7\xc3\xd7\xc6\x961\xae\x81\x09\ +f\xf16m8h\xed\xf7\x08\x1e*>\ +]\xe5X\xaa\xf1GZ\xf5\xb6Y\x0b\x11\x1d\xb3C\xc9\ +\x918\x099\xf9\xa9\x96!\xfa\x5c\x1a\x0d\xcf\xb3\xff\xff\ +7\xfcO\x13\xf8\x1d\xe7\x87\x19\xb9D\xc3\x01\xcf\x00\x00\ +\x00\x00IEND\xaeB`\x82\ +\x00\x00\x05:\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x00\x04gAMA\x00\x00\xd6\xd8\xd4OX2\ +\x00\x00\x00\x19tEXtSoftware\ +\x00Adobe ImageRead\ +yq\xc9e<\x00\x00\x04\xccIDATX\xc3\xb5\ +\x97]L[e\x1c\xc6wo\xbc\xd9\xe5\x12I q\ +\xd7&\xe3N\x13\xb8p\xd1\x85D\xbdP\xe3\x10\x18\xe5\ ++.&J\x04'\x86\xaa\x8b\x99\xe0\xd0\xa2l\x19\x86\ +9\x17\xdc\x1a\x16\x98\x80@l\xa6C\xca +\x83\x1e\ +(\xcc\xda\xd1\x96\xd2\xd2J{\xfa\x01\xa5\xd0\xef\x16\x1e\ +\xdf\xff\xdb\x1d\xc7\xcc\x04*\x87\x93<9o!\x9c\xe7\ +\xf7<\xefG\x0f\x87\x00\x1c\xcaF\xcf\xbd\xfa\xe9\xbbL\ +Z&a\x0fj`\xca\xd9\xe9y\xd9\x9a?]P\xf2\ +\xa5\xc1\xe9\x8f\xa7W\xc3@0\x02\x84\xa2\x19\xad\xc72\ +\x8a'\x81X\x22s\xbfyk\xdaK\x10r\x02\x1c{\ +\xe7\xac\xda\x1c\xd8\xc8\x98\x12@\x84\x99\x85\xe3\x19\x911\ +)\x1aKa%\x94D8\x9aBs\x87\xc6\xbe\x13\xc4\ +\xff\x02\x90\x12\x93y$\xf1\xc8X\x92\xcf\x1f\x84]\x8c\ +\xc2\xe5\x09\x22\x12K\xa3\xf4\xc3\xefM4uY\x01\xb0\ +\xeb\xd86\xd5\x90\x9e:\xfc\xcc\xb9\xe7_.\x11?V\ +\x9eEEU\x0d*\x99\xde\xaf\xad\xc3\x9d\xb1\x89\xc7\x00\ +\xac\xb6%\xfc\xb9\xe8\x87k\x15X\xf6\x04\x10\x08\xc6\xd2\ +\xaf\x9c\xbep\x9fA\x1c\xd9\x15\x80]\x87\x99\x1a\x8a\x8a\ +\x8a\xcc\x92Z[[\xdd\xa4\xafU\xad\xfe\xafT\xdf\xa6\ +\x06\x06\x06195\x85\xd9\xb99\xe8&&PPP\ +\x80!\xcdo|\xdeI\xa6\xf9\x05\xcc\x98\x5c\x1c\xc0\xe1\ +OA\xf4\x85\xf0C\xaf\xce\xcd\x00j\xf6\x02PCf\ +\xd8\xe5\x8a\xc7\xe3\xf0z\xbdH\xa7\xd3\x98\x9c\x9cDe\ +e5fg\x8d\xbc\x81\x07f\x1bt\xd3\x16\x0e@2\ +-x\xf0\xdd\x8dQ\x8f\xac\x00\xe1p\x18F\xa3\x91\x8f\ +S\xa9\x14~\xea\xedE\xe3'\x9fa\x86A8\x96\xdc\ +Pwu\xe3LC#\xce5\x9d\xc7\xed\x91q\x5c\xbc\ +>,/\xc0\xc6\xc6\x06\xf4z\xfdc@}}\xfdP\ +2\x88\xd0F\x1cf\x9b\x0b\x82\xc1\x88\xa9\x19\x13\xac\x0e\ +\x11\x97\xbadn\x80\x00\xa6\xd8:\xd8~E\x22\x11\x94\ ++*0\xae\x13@\xe7\x04mW\xda\xaa4\xbe|S\ +\xe65@f:\x9d\x0e\xc3\xc3\xc3\xe8e\xf5\xf7\xf7\xf7\ +C\xab\xd5\xa2\xaa\xba\x06cw\xf5\x90\x0e*w\x90\xed\ +\x04\xb6\x0e\xda\xbbe\x06\xa0y\xb7\xdb\xed\x18\x1a\x1aB\ +gg'zzz8PIi\x19ni\xf5\x10\xd7\ +\x00o\x08\xb0\xf9\x00g\x00\xb8\xd0%3\xc0\xd6\xd6\x16\ +\xdf\x09\x81@\x00\xa2(\xc2\xef\xf7cmm\x0d\xa7\x14\ +\x95\xd0\xfc\xae\xe7\xa9\xc9|\xc1\x0b\x98=@\x9b\xdc\x00\ +\xdbA677\xf9v\xa4V\x14\x15\xd5\xe8\xfbU\xe0\ +\xa9\x1d\x81G\x00\xe7;\x0f\x00\x80\xcc%\x80$3O\ +$\x12(+\xaf\xe2\x00\x7f\xb8\x00\x8b\x98\x01\xa06Z\ +\xd5\x070\x05\xff\x98'\x93<=MI\xc9\xa9J\x0e\ +\xa0\xb7\xb3\x03\x89=\xc5\xf8\x170\xb1\x00|q\xf5\x00\ +\x00\xa4\xea\xc9\x98\x14\x8b\xc5P\xa6\xa8\x82zH\xc0\x98\ +\x19\xb8k\x05\xe6\x9c\x99\xfb\xe7Wd\x04\x90\xd2Sj\ +\x02\x88F\xa3\xdc<\x14\x0a\xa1\xb8\xb4\x02\xd7\x06\x05\xdc\ +f\x87\xe4\xa0\x01\x1cd\xc4\x04(;d\x06H=\x9c\ +s\x12\x99\xd3\xb9@ \xc5eU\xb8\xd8-\xa0\x7f:\ +c\xae}\x90i\xe0\xa3v\x99\x00\xfe]=\xa5&\xad\ +\xae\xaer\x88\xb7J*p\xb9W\xc0=\x1b\xb8~\x9e\ +\x01\xee\xcc\x03g.\xed\x13@\xaa\x9dD\x8b\x8e\x92\xd3\ +qL\xdf\x01+++X__\xe7\x10'Y\x03\xdf\ +t\x09PO\x00\xbf\xcce\x1a\xb82\x064\xec\xa7\x01\ +\xc9X\xda\xebdNi)9\x1dD\x04@\xf5\xd3\xcf\ +\xde|[\x81\x96\xeb\x02O~u\x1c\xb8q\x0f\xf8q\ +,\x9e~\xbdNm\xa67\xaa\xac\x00\x9ed,m7\ +2%\x00\xd1#\xf2\xe4\x12\xcc\x1b'\x15h\xef\x11\xa0\ +\xbcf[\x7fO5\xe2\xc9xG\x00\x95\ +J\xc5\x01\xa4\x15.\xcd7\x19RR:\xf7)\xb5\xc3\ +\xe1\xe0\x22\xe3\xc5\xc5E\x0e\xf5\xe2\xf1\x97\x5c\xf4\x1e\xb9\ +\x93\xe9\xae\x00---n\xe9`\xa1\xd4\xd2\x97\x0d\x8d\ +\x97\x97\x97\xe1\xf3\xf9`\xb3\xd9\xf8}ii\x89C\x10\ +\x00\x8d\x0b\x0b\x0b\xcd\xb2\x00\xd0\xa2\x92R\x93\x11\x8d\xe9\ +N\xdfxT;5`\xb5Zy\xf5\xd4\x0a\xfd\xce`\ +0$\xf2\xf2\xf2\xee\xb3g\x1c\xd9\x17@SS\x93[\ +\x9agJO\x22\x13\xaa\x9a\xc6\x16\x8b\x997@\x9fG\ +GG#mmm\xde\xfc\xfc|\x13\xfb\xdbA\xa6\xb2\ +\xbd\x9a\xff'@ss3\x9f\x02JG\x10T?U\ +???\xcf\xeb\xd6h4\x91\xba\xba:\xe7\xc3\xb4]\ +L\x1f0\x1d\xcd\xc6xG\x00\xa5R\xe9v:\x9d\xbc\ +bJJo>\x94\xb4\xbe\xbe\xde\x99\x93\x93#\x99\x16\ +gSuV\x00\x8d\x8d\x8dn\x8b\xc5\x82\x81\x81\x81H\ +mm\xad377WV\xd3\xdd\x00\xf8\x7fFL\xc2\ +A\x99n\xd7\xdfC9V\x18\x85p\xc8\x04\x00\x00\x00\ +\x00IEND\xaeB`\x82\ +\x00\x00\x03T\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x00\x04gAMA\x00\x00\xd6\xd8\xd4OX2\ +\x00\x00\x00\x19tEXtSoftware\ +\x00Adobe ImageRead\ +yq\xc9e<\x00\x00\x02\xe6IDATX\xc3\xd5\ +\x97\xcdN\x13a\x14\x86\xeb5\x94\x95{q\xe1\xd2\xc4\ +\xe0\x05\xb8\xe2\x0e\x5c\xb8\xf4\x02\x5c\xb10\xea\x05\x18\x96\ +&bX\xb8\xb0\x91X \xd1\x9d\xbf\x89\xa4\x14\xb1R\ +\xa4HE\x94\xfe\xd0\x02C\xff\xa6\x9d\x19\xa6e\x80\xe3\ +y{\xfa\x85QJ\x82\xc9!\x86I\xde\x9c3\xa7\xf3\ +\xcd\xfb\x9c\xf3M\x9bN\x84\x88\x22\xffS\x91s\x01\xc0\ +\xc7\xd5\x90n\xff\xa5\xfb\xac\xc7==d\x0d\xa9\x02\xf0\ +12<<\xbcj4::\xba\x19V<\x1e\xaf&\ +\x93\xc9V:\x9dv\x13\x89Dk`` \xcdkn\ +h\x02\xa48\xd2\xe1\xe1q\x99\xba\xef\xb7\xc9\xb2,\xda\ +\xdf\xdf'\x86\xf1x\xcd\x18\xeb\x8a\x1a@?\xf3\xb0\x1c\ +\xc7\xa5Lf\xb9\x0b\x14\x04\x01\xc5b\xb1:\xaf{p\ +\x1a\x88S\x01\x1c\x1c\x10ww\xb2l\xdb\xa1\xf9\xf9\xcf\ +d\x0e\xd7u\xe9\xf9\xc4D\x17B\x05\x00&{\xc1\xc9\ +\xaa7\x1cJ\xce\xcdS\xf8p]\x0f\x8b\x17T\x00\x82\ +\x10@gO\x14\xce\xed\xa6G\x1fgf\xe9\xf5\x9b\xb7\ +\x14\x9f\x9c\xa4\xa9\xa9iz\xf7\xfe\x03E\xa3\xd1e^\ +\x7fA\x05\xc0\xef\x10\xed\xb6%\x86\x85\x9a\xe3\x05\x94]\ +\xcd\xd1\xe4\xf4+z2\xfe\x94\x9e\xc5^\xd0Lb\x0e\ +\x8b\x17U\x00\xda\x81\x18\xf5\x13 <\xff\x90j\xcd6\ +\x157\xab\x94/nS\x89c\x8d\xb7\x85\xd7~Q\x01\ +\xf0y\xcc\xcd]\x1e\xb5\xc7{\xdb\xee\x9f;\xbe\xe4\x88\ +]\xb8\xbd\xee\xe2\x94\xca3\xe0u\xe4\xc6uWb\xd8\ +\x109\xea\xe63D\xd4\x01\xa7\x06\xe0\xf4:\xad9\x22\ +\x98\x98hr\x80\x98kPS\x9d\x00\x00*-\xb91\ +\xe2NS\x8c\x10\x0d\x04\xf2m\xfb(\xb6|E\x00\x9b\ +;\xdbj\xfci\x8e\xfb\ +\xc5S(\xf0C\xb8fI\xf7k\xf9R\x87\xd7\xbeT\ +\x01\xc8U\x8f\xbaN\xadK\x0e\x90\xaf\x85\xde\xb7\xc2\x92\ +=O\xa6\xb3\xde\xa3\xb1q\xeb\xda\xd0\xf5\x15\x98\xb3n\ +\xa9\x00l4\xa4k\x18\xff\xe0\x11\x7fZ\x17S\xd4\x13\ +\x0bYo\xe4\xee\xbd\xe2\xa5\xc1\xcbK|m\x8cu\x87\ +5\xa8\xfa\xb7\x1c\xdde\xd9<\x8f\x1f\x19\xfe\x9e\xcf\x1e\ +7\xbd\xc9\xbax&oF\x00h\xf2\xff\x81\x99\x94\x9e\ +\xe9?\xbf\x19\x01B\xd3\xf4\xfc\xbd\x9c\x9e\xa5~\x03Q\ +l%\xa1\x92\x95\x0aw\x00\x00\x00\x00IEND\xae\ +B`\x82\ +\x00\x00\x06m\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x064IDATx^\xad\x97[lT\xc7\ +\x1d\xc6\x7fs\xce\xd9\x8b\xbd\xf6\xfa\x16\xa0\xbe\x00\x0e\xb2\ +ic$BJ!\x22\xa1-\x95b\xa5/\xeeKh\ ++\x95\xa6U\xa5\xc6`U\xaa\xda\xb4\xaa\xfaV\x09U\ +\xca\x03\x94'\xda\x07\x84\x14)\xad\xc4\x8b\xa5R\x83y\ +\x08\xc5\x189\x0ei\xd3\x84\x9a\x9bcj\xec\xb2\x04\x1b\ +;\xbb\xf6z\x8f\xbd\xbb\xde\xb3g\xa6\xc3h\x85\xe5r\ +l\x88\xc9'}\xfa\x9f\x9d\x87\xfd~\xf3\x9f\x99s\x11\ +J)\x82$\x84x\x05x\x9e\xc7kH)\xf5w\xd6\ +(' \xb8C\xbb\x01h\x97R\xbe\xc6cdY\xd6\ +\x07\x1a\xf6\xbb@\xb7\x069\xff\x14\x00&\xfc\xb7\xed\xf5\ +\xe2`]DDn\xce\x89\x8a+W\xaeP]S\x8d\ +@\x00\xa0P\x08e(A)f\xd3i^\xa9\x17/\ +\xbc\xb4Nl;\xf1\x1f\xb9G\x83|[CL;\x8f\x85D\x952\xe2\xb6\xc4\ +\xb6\x04!!p>Sl\x8c;\x80D*\x04\xf0\x9c\ +\x10\x02\xe0\xcb@\x05P\x0f4`\xc4Hi\x9f$\x02\ +\x01N\x9c8!\x00\x81\x05\xd2\x87\x96\x96g\x09em\ +\x14\xe5(\xa5\xb4A\x08XW\x19%\xe2\xd8DB\x16\ +\xc3\x13s\x5c\xbc=A\xf7X\x8e\x5c$\xbe\xa9\xbd}\ +\xf7\xef-\xcbZ\xdc\xb1cGYUU\x95\xd3\xd8\xd8\ +\x18~\xe0\x86\x86\x86\xd0\xa5K\x97\xdc\xae\xae\xae\x08\xf0\ +\xd6\xaa\x1d\x00\x13DU,\xc2s\xd51\xf2\x9eO\xa1\ +(\x91Ja\x09A\xd8\xb1\x88\x86l\xe6r\x05\x12\xa2\ +\x8e?\x9f\xff+\x0dM\x1b\x01\x22\xc0f\x96\x84\xef\xfb\ +x\x9eGuu\xb5\x9ePK\xf4\xea\xd5\xab\x87\x84\x10\ +(\xa5\xdeZ\x11\xc0\xb2A\x00\xb6-\x90\xda\xb6\x148\ +\x08\xa4\x12X\xc2\x8c\x1b\x8fL\xb9\xec{\xf5;\xd47\ +6\x11|/\xc1\x84g2\x19\xca\xcb\xcb\xcdf>v\ +\xec\xd8&\xbd\x7f\x0e.A,\x01\xd0\xd9\xd9\xa9\x0e\x1d\ +:\xa4l!\x08Y\x10\xb6-\x1c\xc7\xc6BP\xb4\xcd\ +\x1a\x1b\x00\xc7\xb2\x888\x96\xae\x02`Yx\x10\xc0\xdc\ +\xdc\x1c555\x06 \x1a\x8dr\xe4\xc8\x91\xcd\xc0\x03\ +\x88\x1b\x1a\xa2\xc7b\xb9\xb0mt0f\x8d\xcb#6\ +\xb1\xa8\xa3\xc7,2\x8b\x1e\x93\x99\x1cc\xa9y\xee\xcc\ +.\xe8\xdfEr\xf9<\xab\xc8,A6\x9b5\xa7f\ +\xe9\xffm\x0e\x1c8\xb0\x1e\xe8\x00X\x06\xa0\xb4t\x16\ +\x8e\x0d\xe1\x90\xc0S\x8a\xb1\xa4\xcb\x8d\x8c\x83\xd3\xb2\x97\ +\xa6}\xaf\xb3\xb5\xe3\x17\xac\xdb\xfb:\x0d/\xb4s\xfb\ +\xce$\xfd\xfd\xfd$\x93I\x94R\xe6\xfa\xf8\xf1\xe3\xe8\ +\xba\xac3\xe7\xce\x9d\xe3\xe8\xd1\xa3\x1c>|\x98\xde\xde\ +^\x12\x89\x84\x04,\xa1\x15\xdc\x01\xed\xff\xce\xe6\xf8\xe7\ +\x94Ok\xc7\xcf\xf8\xe6/\xdf&\xf6\xf57\x99|\xa6\ +\x83k\xfe.\xae\xf1-dk\x17\xad{\x7fN^V\ +s\xfaog\xd1wM\xee\xdc\x9d\xe2\x1b\xafvr\xfd\ +\xfau\x03\xa0gk\xd6?\x16\x8b\x99\xebx<\x8e\xe3\ +8%8\x04\xc0#\x00\x96%\x98\xcaA:\xde\xca\xfe\ +\xdf\xbdM\xd5\xae\xd7(\x84b\x08\xdbBY\x82lA\ +r\x7ff\x91O\xeef\x18\xb8\xear\xfa\x1fad\xd5\ +^\xae\x8f\xdcg2\xd7\xc6\x85\x0f\xee\x9b\x00\xed\x87\xa1\ +\xcd\xcd\xcd\xb4\xb5\xb5\x19755\xa1\xa1\x14 \x83\x1f\ +F\x16\xdcq\x15\xdf\xff\xe9o\xa8l\xd8H\xe2\xec;\ +L\x8f^\xc3\x89\x94\xb1\xb5y\x07\x9b[\xb6\xf3Iy\ +%c\x09\x97\xcff\xf2\xdc\x9d\xce2\xa1\xed\x88\x0dL\ +'\xe7\xd8\xb7+\xca\xfa%\x003{=k\xea\xea\xea\ +\x00\xccu*\x952\x00J+\x10\xa0\xb9Zp\xe1\x9d\ +c(,\xca\xe6\xc6\xd9\x10\x8fR\x94\x92{\xc3}$\ +e\x05\xdb\xda\x7fLM\xdb\xcb|<\x9cf\xd2_\xc0\ +\xcdx,\xcck/x \x00\xb5t:B\xa1\x90\x09\ +-\xdd\xea\x1f\x8e\x01*\xf8>`\xc1\xc6\xb8\xa0P\x1c\ +#\x1c\x8bS\xb7\xa5\x96\x92xv}\x05\xe9\xac\xc7h\ +\xff\x9f\x98\xae\xbcL\xcb\xf6\x83\xb8\x0ba\xbc\x82\xa4X\ +\x94x\xda!\xc7B-\xaa\x80\xe3i\xa0\x96\xd5\x15\x01\ +\x00\xd6\xc7C\x84\xca#\xfc\xbfjc!\x9e\xa9\x0cs\ +\xe1\xdf\x83\xec\xd9\xf9\x13\xca\xa3\x0e\xb92G\x03(\x03\ +ak\x00\x16K!\xa5\x1c%0*\x15\xa4\x5c\x05@\ +X\xa5*\xcc\xf5#\xfapl\x86\xf1Y\x8f\xef\xfd\xfa\ +\x8f\xdc\xca\xd4\xe0D\x5c\xa2\x11\x1b\xcf\x93\x14=\x07\xd3\ +\x01\xa5\x90R\xf2PjY\x01V\x05\x10\x08L\x0d\x04\ +\x18\x9dv\xf9\xd5_\x86\x18\xbd\xb7\x80=\x93g\xd3\xba\ +2\xf2y_\xbbh\xea\xce\xaf\xd4p\xf9\xdd\xe0%\x00\ +\x9ex\x09L\xb8\x10<\xa2\xd6/U\xf2\x87\x1f>\xcf\ +\xf5O3D\x1b\xb7\xb1\xf3\xc5\x97Y\x12\x5cN`\x8e\ +\xdbS\x01(\xc0\x12%\x00m\xd4R}\xb1\xb5\x96\xdd\ +[\xe2t\xbf\x97\xa5j\xf7W\xf9\xd1\x1bo\x10\xa0\xb5\ +\x03\x98\xb57\xd5\xd8\x08\x01\xd2\xcbSpSx\xf33\ +\x14\xb3i\x0a\x19\x1f%\xfd\xd5\x82\xd6\x08\xf0\xf0)\xe7\ +\xe3\xe73\x14\xe6u\xa8\x0e\xd6\x00\xcb\xf7\x89\x10\xc13\ +}\xfa\xd7r\x8c\xb2\x137\x03\xc7\x01\xb2\x1e\xfe\xad\x94\ +\xcco\xf7DT\x03\xd8_p\x07\x08\x92\x09\xfd\xd7=\ +?\xfd~B\xa6\xcf\xdf\xf6\xef\x02\xeev;\xfc\x92\x06\ +\xa8\xe3s\xcau]\x1fpW\xed\x00@2\xab\x0a\x1f\ +~*\xd3\xbd\xb7\xfc\xd4\xcdi9\x05\xf4\x03\x97th\ +\xbf\x10\xa2\xd3\xb6\xed\xaf}\x9e%XXX\xf0\x07\x06\ +\x06\xd2'O\x9e\x9c\x06\xba\x83\x00>\x1aI\xca\xad\xe3\ +\xb3*\xd7;\xe2\xa7nL\xcb\xd1R\xe8Y\x1dt\x8b\ +\x00=\x09\xc0\xd0\xd0\x90\xdb\xd3\xd3\x93\xd2N\xcf\xce\xce\ +\x9e.\xbd\x1d\xdf\x08\x02\xe8\xee\xea)\x00\x8c\x04\x84\x06\ +\x85\xaf\x08055U\xd0/\x22\xa9S\xa7N%\xc7\ +\xc7\xc7/\x03g\x81~\x1d\xec\xae\xb8\x09K\xdfv\xda\ +O&\x85\x01@\x08@aZ\xfc\xde\xe0`\xba\xbb\xbb\ +;\xa5\xdf\x8a\xcc$\xd0^\xeds\xcda\xed\x9aw3\ +n\x11`p\xf0\xfdt___\xfa\xcc\x993\xa6\xc5\ +\xa5\xd0\x8fx\x02\x89\xb5\x9ec!D\x18x\x13\xd8O\ +is\x06\xb4\xf8\xb1\xfa\x1f\xbd\xfa*_\xf2\xd8\x15\x9d\ +\x00\x00\x00\x00IEND\xaeB`\x82\ +" + +qt_resource_name = b"\ +\x00\x06\ +\x07\x03}\xc3\ +\x00i\ +\x00m\x00a\x00g\x00e\x00s\ +\x00\x08\ +\x08\xc8Xg\ +\x00s\ +\x00a\x00v\x00e\x00.\x00p\x00n\x00g\ +\x00\x08\ +\x06\xc1Y\x87\ +\x00o\ +\x00p\x00e\x00n\x00.\x00p\x00n\x00g\ +\x00\x07\ +\x0a\xc7W\x87\ +\x00c\ +\x00u\x00t\x00.\x00p\x00n\x00g\ +\x00\x08\ +\x06|Z\x07\ +\x00c\ +\x00o\x00p\x00y\x00.\x00p\x00n\x00g\ +\x00\x07\ +\x04\xcaW\xa7\ +\x00n\ +\x00e\x00w\x00.\x00p\x00n\x00g\ +\x00\x09\ +\x0a\xa8\xbaG\ +\x00p\ +\x00a\x00s\x00t\x00e\x00.\x00p\x00n\x00g\ +" + +qt_resource_struct = b"\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x02\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00h\x00\x00\x00\x00\x00\x01\x00\x00\x171\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00R\x00\x00\x00\x00\x00\x01\x00\x00\x11\xf3\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00(\x00\x00\x00\x00\x00\x01\x00\x00\x04\xa7\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00|\x00\x00\x00\x00\x00\x01\x00\x00\x1a\x89\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00>\x00\x00\x00\x00\x00\x01\x00\x00\x0c\xc4\ +\x00\x00\x01~*kP\x18\ +" + +def qInitResources(): + QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +def qCleanupResources(): + QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +qInitResources() diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/images/copy.png b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/images/copy.png new file mode 100644 index 0000000..2aeb282 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/images/copy.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/images/cut.png b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/images/cut.png new file mode 100644 index 0000000..54638e9 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/images/cut.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/images/new.png b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/images/new.png new file mode 100644 index 0000000..12131b0 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/images/new.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/images/open.png b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/images/open.png new file mode 100644 index 0000000..45fa288 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/images/open.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/images/paste.png b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/images/paste.png new file mode 100644 index 0000000..c14425c Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/images/paste.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/images/save.png b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/images/save.png new file mode 100644 index 0000000..daba865 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/application/images/save.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/dockwidgets/__pycache__/dockwidgets.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/dockwidgets/__pycache__/dockwidgets.cpython-310.pyc new file mode 100644 index 0000000..ff59e53 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/dockwidgets/__pycache__/dockwidgets.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/dockwidgets/__pycache__/dockwidgets_rc.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/dockwidgets/__pycache__/dockwidgets_rc.cpython-310.pyc new file mode 100644 index 0000000..ab14a37 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/dockwidgets/__pycache__/dockwidgets_rc.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/dockwidgets/dockwidgets.py b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/dockwidgets/dockwidgets.py new file mode 100644 index 0000000..53f6f78 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/dockwidgets/dockwidgets.py @@ -0,0 +1,303 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the widgets/mainwindows/dockwidgets example from Qt v5.x, originating from PyQt""" + +from PySide2.QtCore import QDate, QFile, Qt, QTextStream +from PySide2.QtGui import (QFont, QIcon, QKeySequence, QTextCharFormat, + QTextCursor, QTextTableFormat) +from PySide2.QtPrintSupport import QPrintDialog, QPrinter +from PySide2.QtWidgets import (QAction, QApplication, QDialog, QDockWidget, + QFileDialog, QListWidget, QMainWindow, QMessageBox, QTextEdit) + +import dockwidgets_rc + + +class MainWindow(QMainWindow): + def __init__(self): + super(MainWindow, self).__init__() + + self.textEdit = QTextEdit() + self.setCentralWidget(self.textEdit) + + self.createActions() + self.createMenus() + self.createToolBars() + self.createStatusBar() + self.createDockWindows() + + self.setWindowTitle("Dock Widgets") + + self.newLetter() + + def newLetter(self): + self.textEdit.clear() + + cursor = self.textEdit.textCursor() + cursor.movePosition(QTextCursor.Start) + topFrame = cursor.currentFrame() + topFrameFormat = topFrame.frameFormat() + topFrameFormat.setPadding(16) + topFrame.setFrameFormat(topFrameFormat) + + textFormat = QTextCharFormat() + boldFormat = QTextCharFormat() + boldFormat.setFontWeight(QFont.Bold) + italicFormat = QTextCharFormat() + italicFormat.setFontItalic(True) + + tableFormat = QTextTableFormat() + tableFormat.setBorder(1) + tableFormat.setCellPadding(16) + tableFormat.setAlignment(Qt.AlignRight) + cursor.insertTable(1, 1, tableFormat) + cursor.insertText("The Firm", boldFormat) + cursor.insertBlock() + cursor.insertText("321 City Street", textFormat) + cursor.insertBlock() + cursor.insertText("Industry Park") + cursor.insertBlock() + cursor.insertText("Some Country") + cursor.setPosition(topFrame.lastPosition()) + cursor.insertText(QDate.currentDate().toString("d MMMM yyyy"), + textFormat) + cursor.insertBlock() + cursor.insertBlock() + cursor.insertText("Dear ", textFormat) + cursor.insertText("NAME", italicFormat) + cursor.insertText(",", textFormat) + for i in range(3): + cursor.insertBlock() + cursor.insertText("Yours sincerely,", textFormat) + for i in range(3): + cursor.insertBlock() + cursor.insertText("The Boss", textFormat) + cursor.insertBlock() + cursor.insertText("ADDRESS", italicFormat) + + def print_(self): + document = self.textEdit.document() + printer = QPrinter() + + dlg = QPrintDialog(printer, self) + if dlg.exec_() != QDialog.Accepted: + return + + document.print_(printer) + + self.statusBar().showMessage("Ready", 2000) + + def save(self): + filename, _ = QFileDialog.getSaveFileName(self, + "Choose a file name", '.', "HTML (*.html *.htm)") + if not filename: + return + + file = QFile(filename) + if not file.open(QFile.WriteOnly | QFile.Text): + QMessageBox.warning(self, "Dock Widgets", + "Cannot write file %s:\n%s." % (filename, file.errorString())) + return + + out = QTextStream(file) + QApplication.setOverrideCursor(Qt.WaitCursor) + out << self.textEdit.toHtml() + QApplication.restoreOverrideCursor() + + self.statusBar().showMessage("Saved '%s'" % filename, 2000) + + def undo(self): + document = self.textEdit.document() + document.undo() + + def insertCustomer(self, customer): + if not customer: + return + customerList = customer.split(', ') + document = self.textEdit.document() + cursor = document.find('NAME') + if not cursor.isNull(): + cursor.beginEditBlock() + cursor.insertText(customerList[0]) + oldcursor = cursor + cursor = document.find('ADDRESS') + if not cursor.isNull(): + for i in customerList[1:]: + cursor.insertBlock() + cursor.insertText(i) + cursor.endEditBlock() + else: + oldcursor.endEditBlock() + + def addParagraph(self, paragraph): + if not paragraph: + return + document = self.textEdit.document() + cursor = document.find("Yours sincerely,") + if cursor.isNull(): + return + cursor.beginEditBlock() + cursor.movePosition(QTextCursor.PreviousBlock, QTextCursor.MoveAnchor, + 2) + cursor.insertBlock() + cursor.insertText(paragraph) + cursor.insertBlock() + cursor.endEditBlock() + + def about(self): + QMessageBox.about(self, "About Dock Widgets", + "The Dock Widgets example demonstrates how to use " + "Qt's dock widgets. You can enter your own text, click a " + "customer to add a customer name and address, and click " + "standard paragraphs to add them.") + + def createActions(self): + self.newLetterAct = QAction(QIcon.fromTheme('document-new', QIcon(':/images/new.png')), "&New Letter", + self, shortcut=QKeySequence.New, + statusTip="Create a new form letter", triggered=self.newLetter) + + self.saveAct = QAction(QIcon.fromTheme('document-save', QIcon(':/images/save.png')), "&Save...", self, + shortcut=QKeySequence.Save, + statusTip="Save the current form letter", triggered=self.save) + + self.printAct = QAction(QIcon.fromTheme('document-print', QIcon(':/images/print.png')), "&Print...", self, + shortcut=QKeySequence.Print, + statusTip="Print the current form letter", + triggered=self.print_) + + self.undoAct = QAction(QIcon.fromTheme('edit-undo', QIcon(':/images/undo.png')), "&Undo", self, + shortcut=QKeySequence.Undo, + statusTip="Undo the last editing action", triggered=self.undo) + + self.quitAct = QAction("&Quit", self, shortcut="Ctrl+Q", + statusTip="Quit the application", triggered=self.close) + + self.aboutAct = QAction("&About", self, + statusTip="Show the application's About box", + triggered=self.about) + + self.aboutQtAct = QAction("About &Qt", self, + statusTip="Show the Qt library's About box", + triggered=QApplication.instance().aboutQt) + + def createMenus(self): + self.fileMenu = self.menuBar().addMenu("&File") + self.fileMenu.addAction(self.newLetterAct) + self.fileMenu.addAction(self.saveAct) + self.fileMenu.addAction(self.printAct) + self.fileMenu.addSeparator() + self.fileMenu.addAction(self.quitAct) + + self.editMenu = self.menuBar().addMenu("&Edit") + self.editMenu.addAction(self.undoAct) + + self.viewMenu = self.menuBar().addMenu("&View") + + self.menuBar().addSeparator() + + self.helpMenu = self.menuBar().addMenu("&Help") + self.helpMenu.addAction(self.aboutAct) + self.helpMenu.addAction(self.aboutQtAct) + + def createToolBars(self): + self.fileToolBar = self.addToolBar("File") + self.fileToolBar.addAction(self.newLetterAct) + self.fileToolBar.addAction(self.saveAct) + self.fileToolBar.addAction(self.printAct) + + self.editToolBar = self.addToolBar("Edit") + self.editToolBar.addAction(self.undoAct) + + def createStatusBar(self): + self.statusBar().showMessage("Ready") + + def createDockWindows(self): + dock = QDockWidget("Customers", self) + dock.setAllowedAreas(Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea) + self.customerList = QListWidget(dock) + self.customerList.addItems(( + "John Doe, Harmony Enterprises, 12 Lakeside, Ambleton", + "Jane Doe, Memorabilia, 23 Watersedge, Beaton", + "Tammy Shea, Tiblanka, 38 Sea Views, Carlton", + "Tim Sheen, Caraba Gifts, 48 Ocean Way, Deal", + "Sol Harvey, Chicos Coffee, 53 New Springs, Eccleston", + "Sally Hobart, Tiroli Tea, 67 Long River, Fedula")) + dock.setWidget(self.customerList) + self.addDockWidget(Qt.RightDockWidgetArea, dock) + self.viewMenu.addAction(dock.toggleViewAction()) + + dock = QDockWidget("Paragraphs", self) + self.paragraphsList = QListWidget(dock) + self.paragraphsList.addItems(( + "Thank you for your payment which we have received today.", + "Your order has been dispatched and should be with you within " + "28 days.", + "We have dispatched those items that were in stock. The rest of " + "your order will be dispatched once all the remaining items " + "have arrived at our warehouse. No additional shipping " + "charges will be made.", + "You made a small overpayment (less than $5) which we will keep " + "on account for you, or return at your request.", + "You made a small underpayment (less than $1), but we have sent " + "your order anyway. We'll add this underpayment to your next " + "bill.", + "Unfortunately you did not send enough money. Please remit an " + "additional $. Your order will be dispatched as soon as the " + "complete amount has been received.", + "You made an overpayment (more than $5). Do you wish to buy more " + "items, or should we return the excess to you?")) + dock.setWidget(self.paragraphsList) + self.addDockWidget(Qt.RightDockWidgetArea, dock) + self.viewMenu.addAction(dock.toggleViewAction()) + + self.customerList.currentTextChanged.connect(self.insertCustomer) + self.paragraphsList.currentTextChanged.connect(self.addParagraph) + + +if __name__ == '__main__': + + import sys + + app = QApplication(sys.argv) + mainWin = MainWindow() + mainWin.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/dockwidgets/dockwidgets.pyproject b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/dockwidgets/dockwidgets.pyproject new file mode 100644 index 0000000..2df1146 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/dockwidgets/dockwidgets.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["dockwidgets.qrc", "dockwidgets.py", "dockwidgets_rc.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/dockwidgets/dockwidgets.qrc b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/dockwidgets/dockwidgets.qrc new file mode 100644 index 0000000..968feac --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/dockwidgets/dockwidgets.qrc @@ -0,0 +1,8 @@ + + + images/new.png + images/print.png + images/save.png + images/undo.png + + diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/dockwidgets/dockwidgets_rc.py b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/dockwidgets/dockwidgets_rc.py new file mode 100644 index 0000000..c2d4dac --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/dockwidgets/dockwidgets_rc.py @@ -0,0 +1,464 @@ +# Resource object code (Python 3) +# Created by: object code +# Created by: The Resource Compiler for Qt version 5.15.2 +# WARNING! All changes made in this file will be lost! + +from PySide2 import QtCore + +qt_resource_data = b"\ +\x00\x00\x06\xc4\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x00\x04gAMA\x00\x00\xd9\x04\xdc\xb2\xda\x02\ +\x00\x00\x06{IDATX\xc3\xadWiLTW\ +\x14v!b\x95\x04\x97\xa8%\x18R\x1b\x0d\x11E\x04\ +\xaa\xa4I\xb5VMli\xb0h\xa3\xb6\xc5\xb2F\xfd\ +\xa3,aQH$\x08d\xc2\x12\xd0\x22B\x11YD\ +@@\xf6\x91}S6\x09\xb2\xa9\x08\x0e$\x0cb\x01\ +\x83\x02\x82\x0b\x08\xa9_\xcf\xb9\x991\xa3\x80\x9d\xb4\xf3\ +\x92/\xf3\xde\xbc{\xce\xf7\xdds\xce=\xf7\xbey\xf3\ +T.;\xbb\xe8/\x1c\x1d#\x1d\x1d\x1d#\x02\x1d\x1c\ +.H\xd2\xd3\xab%\x97.\x15VGF\xde\xacML\ +\xac\xa8\xad\xaaj\xbf/\x956A\x89+WJ\xdb\x8d\ +\x8d\xf7|I\xa6\xf3\xe7i\xe8Zho\xffG\xa1\xfc\ +\xf1sL\xff\x0d\xb5\x10\x10\x98\xd3\x88\x82\xed\ +\xdb\x0f\xac=\xeb\x97\x89\xde\x17P\x0b\xf9\xe52\x18\x18\ +\x18\xc7\x91\xe9\xe7\x1a\x8b\x82\xadmXyc\xf78d\ +\xcf\xf1\xaf\xe0q\x16\x16\x07[\xc8\xee+\x82\x96F\x14\ +\xd8\xd8\x04\xfb\xa4\x15\xc9\xd0:\x08\xb5`\xe7\x18\xf4\x9c\ +\xcc~!,\xd1\x88\x00KK\xaf\x8d\xa1\x97\xaa\xd0\xf0\ +\x17\xd4B\x08\x8d%3\x7f\xc2\x0a\x8d-I\x17\xf7\xa4\ +\xfeJ9\xa0\x0e\x22\x92\x9a\xa0\xa7g(\xd5\xe4j\x98\ +G\xcd\xa8(\xbf\xfd-\x8a\xba1'\x0a\xba\x80\xdcN\ + \xb6t\x00\x86\x86;\xea\xc9\xccTcu`g\x17\ +\x1e\xc4\x8e\xb3:\x80\x8c6 \xad\x09Hi\x00\x92\xea\ +\x80\x84j \xa6\x1c\xc8l\x04J\x1e\x00\xf5\xed\xe3h\ +j\xea\x80\xaf\xaf\xef+25\xf8\xdf\xe4\x12\x89D.\ +\x95\x96 \xabp\x00\xa9R\x08\x94\x101qP\xf3\x01\ +z\x9e\x8cahh\x08\xbd\xbd\xbdx\xf8\xf0!\x1e<\ +x ~\x13\x13\x13\xb1{\xf7\xee\xdaC\x87\x0e\x05X\ +ZZn\xe4T\xfe'\x01\xa1\xa1\xa1}\x13\x13\x13\x98\ +\x9c\x9c\xc4\xd4\xd4\x14\xba\xba\xbap\xe7\xce\x1d\xdc\xbe}\ +\x1b\xf9\xf9\xf9())AUU\x15\xea\xeb\xeb\xd1\xdc\ +\xdc,\x040\x92\x92\x92p\xe3\xc6\x0d\xe4\xe5\xe5\x89\xfb\ +\x13'N\xdc\xdd\xb1c\x87\x99\xdaB\xec\xec\xec\x96\xd9\ +\xda\xda~\x17\x12\x12\xd2\xce3T\xa2\xb0\xb0P8V\ +%\xcf\xca\xcaBBB\x02\xc2\xc3\xc3\x11\x17\x17\x87\xab\ +W\xaf\x0a\x81}}}\xe8\xe9\xe9\x116uuu8\ +}\xfa\xf4\x84\xb9\xb9\xf9o\xe4^\xfb\x93\xe4G\x8f\x1e\ +\xb5\xa7\xc1/\xa2\xa2\xa2\x10\x1d\x1d\x8d\x8c\x8c\x0c\xc4\xc6\ +\xc6\x2277\x17999\x88\x8c\x8c\x04\x09\x03\xbf\xbf\ +v\xed\x1a***D\xd8GFF0<<\x8cg\ +\xcf\x9e\x09\xb1O\x9f>\xc5\xe0\xe0 \x06\x06\x06PP\ +P\x80\x86\x86\x06xxxLn\xda\xb4\xc9i\xcev\ +mcc\xb3+,,L\x84\xba\xa3\xa3\x03\xf7\xee\xdd\ +\x13\xbfr\xb9\x5c\x08\xb8|\xf9\xb2\xf8\xef\xd5\xabW\x18\ +\x1f\x1f\xc7\xd8\xd8\x18FGG?I\xde\xdd\xdd\x8d\xca\ +\xcaJ\x11\xb9\xb6\xb66\x1c8p`\x88\xa8\xbe\x99u\ +\x95\x1c9r$O&\x93\x89\xd0\xa9\x8a`C&\xe2\ +\xfc\x96\x95\x95}\x92\x9c\xc5666\x8a\xd0s\x0d0\ +ykk\xab(T\xf6\x1b\x14\x14\x04\x13\x13\x93\xbcY\ +{\x05Um\x0d\xabV\xe6OU\x04;aB\xbe\xe7\ +\x9c*\xc9y\xb6\xf7\xef\xdf\x17\xa9\xe0\xda`\x81--\ +-\x82\xf0\xc9\x93'x\xfc\xf81\x1e=z$\x8a\xb4\ +\xa6\xa6\x06\xc1\xc1\xc1\xa0Z\xe8 \xba\xefg\xa4\x82\xc2\ +S\xdb\xd9\xd9\x89\xb9D\xb4\xb7\xb7\x8b\x99s\xf1q\x11\ +J\xa5R\x14\x17\x17\x8bwL\xa6\x0c;\x93\xb2`&\ +\xe4H0n\xde\xbc)\x0a\xd4\xdd\xdd\x1d[\xb7n\x95\ +\x11\xdd\xef\x04\x9d\x0f\x04\xec\xdf\xbf\xbf\x96\x0aP8\x9d\ +K\x04?\xf3\xcc\xf9\x9dj\xce\x95K\x94\x0b\x8eW\x06\ +\xd7Lvv\xb6(d???899\xe1\xd8\xb1\ +c\xf0\xf6\xf6\xe6\x14\xb0\x00\xfb\x19\x02\xa8i\x14\x14\x15\ +\x15!&&\x06\xce\xce\xceHII\x11\x8eUEp\ +\x1d01\xcf\x92C\xcdb\xd3\xd2\xd2p\xfd\xfau\xb1\ +b\x92\x93\x93q\xfe\xfcy\xaex\xb8\xba\xba\x82z\x09\ +233\xe1\x1b\xef\x0c\xef\xaa\xc3B\x84\xb1\xb1\xf1\xec\ +\x02\xf6\xed\xdb\x17t\xf7\xee]Qd\xfd\xfd\xfdHO\ +O\x87\x97\x97\x97XzL\xa6\x14\xc1\xa1\x8f\x8f\x8f\x17\ +M\x86\x09yu\x04\x04\x04\x88\xf021\x17\x1a\x0b\xe2\ +4\x95\x97\x97\x8b\x94\xf9%\xba\xc2+\xe7W\xee\x07\xd8\ +\xbcy\xf3\xec\x02\xf6\xee\xdd+a\xa27o\xde\x08\x11\ +\x1cj\x9e);c!\x11\x11\x11\x22\xaf\x1cb\x9e\xe5\ +\xb9s\xe7D\xa4\x98\x98\x9fy\x1c\x8b\xe3\x9c\xab\x92\xb3\ +\x0d\xe7\x9f{\x01\x17\xa1\x91\x91\xd1\xec\x02\xa8\x7fKx\ +\xc9MOO\x7f \x82\xf3\xcc5\xc1\x85\xe4\xe9\xe9\x89\ +\xe3\xc7\x8f\xc3\xc7\xc7G\x84\x97\xa3\xa0\xcc\xb9*9\xa7\ +\x92\xdf]\xb8p\x01T[\x5c\xf9\xe2\xff3g\xce\xd0\ +\x8ei8\xbb\x80\x9d;wJX\xe9\xbbw\xef\xe6\x14\ +\xc1\xc5\xc7ME\x99\xf3\x8f\xc9\xb9~\x02\x03\x03\x85P\ +\xda\x15\xdf\xb7h\x1e\xcfM\xce\xcd\xcd\x0d\xa6\xa6\xa6}\ +D\xe74C\xc0\x86\x0d\x1b\xf4i\x89dP?x\xcb\ +a\x9bK\x04\x13\xa9\x92s$N\x9d:\x05jd\xa0\ +}\x04...\x1f\x90s\x0b\xe7\x0d\x8bmyS\xa3\ +1\xc3D\xe7F\xd0\x9dq\x10\xe5}\x5cWW\xd7c\ +\xcb\x96-rv\xcaE\xf7\xb1\x88\xd2\xd2\xd2\xf7\xe4\x1c\ +\x0d\xda\xe9`mm=+97-\xb6\xe1\xab\xa9\xa9\ +\x09'O\x9e\x1c%\xff|h\xf1\x98\xeb\xe86_\xa1\ +\xcc|\xcd\x9a5\xd1fff#\xfe\xfe\xfe\xc2\x89R\ +\x04w=e\xd8\xb3\xb3\xcb \x91dQ\x04|\xde\x93\ +\xf3\xe6\xc5\xdd\xf1\xe5\xcb\x97\xc2&55\x15\x94\xde\xc1\ +\xa5K\x97\xd6\x92\xdfT\xc2Y\xc5~\xb0\xe8\x93\xe7A\ +\xc2j\xc2\x9eu\xeb\xd6\x95\xec\xda\xb5k\x8aw@v\ +x\xeb\xd6-\xb1\x13\xf2\x0a\xb0\xb2\xb2\xa6\xa2\xf4\xc3\xc5\ +\x8b\xd5\xb4J\x8a\xa9[v\x89\xd9r\xb8I\xcc4E\ +\xb2o\xf1\xe2\xc5\x95\xe4\xe7*\xc1\x95\xf0\xb5\xc2\xef\x22\ +u\xcf%<\xd0@[[\xdbq\xfd\xfa\xf5mVV\ +V\xa0-\x1b\xdb\xb6m\x03=\x0f\xaeZ\xb5\xaaYG\ +G\xa7\xd2\xc4\xc4|\x88\x85\xa4\xa6\xe6\xc2\xc1\xc1aB\ +OOO\xa6\xa5\xa5U@\xb6\x7f\x12N(\xce\x89+\ +\xfe\xcfY\x91+\xd6h\xf9\xf2\xe5\x81\xfa\xfa\xfa\x8d\x0b\ +\x16,(\xa2\xe7D\x82;\xe1\x07\x8e\xd4\xca\x95+\xe3\ +V\xaf^\xdd@\xf7Y\x84p\xc57\x82\xa1\x22\xa5\x0b\ +5\xf2\xb5\xa4\x98\x05\x87\xf1 \x0b\x22,S\x9cr\xb4\ +\x14\x9fe\xdf\x12~T\x1cJ\x97\xa8\xf3\xc5\xfc\x0f\xd1\ +\xc2G\xb4c\xf2\xc9\xfc\x00\x00\x00\x00IEND\xae\ +B`\x82\ +\x00\x00\x07f\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x07-IDATx^\xb5V]o\x1cW\ +\x19~\xce\xc7|\xec\x97\xd7n\x9c8\xc6\x89\x03I\x9a\ +&M!\xaa\x08\x95\xb8@\xca%\x08\x89\xfb\x8a+\xee\ +\xb8AHH !!\x047\x5c\xf1\x03\xb8\x00\xa9p\ +\x83\xa2\x0aQ\x22\x017 \x15\xd1\xa0\xe6\xb3\xadS+\ +I\x9b\xa4\xb1\xe3\x8f\xb5\xbd;\x9bY\xef\xcc\xce\xce\xcc\ +9\x87\xf3\x1e-+\xd3:\xf5\x02\xe2X\x8f\xde9\xc7\ +\x1a?\xcf\xfb\xbc\xefy\xc7\xcc\x18\x83\xffu]\xbc\xf8\ +m\x0e T\xaa\xa8h]\xd6\x19\xe3\x14\xa7t\xa9\xea\ +Z\x95\x15\xad\xf4\x941hz\x15\xb9\xba\xbc|\xf9M\ +\x00\x99\xe5\xd5\x00 \xf7\x12\x5c\xf8\xc2\xb7\xbe\x94\xa5\x83\ +S@Yc\xe0u?\x0ckBzU\x18V\x07P\ +c\x8c\xd5\x00\xd4\xc1\x10Z\xd0Y\x08\x98\x0a\x98\x0e\xb5\ +1\x81\x86\xf64+=K*\x99'\xc5\xdc\xe9\xe7\xd9\ +\xd9\x17\xcf\xf2\xc6\xcc\x0c\x13\xcd\x19\xf1\x97_\xbd\xf6\x00\ +\xc0\xab\x16\x14\xe3O\x088<\x7f\xf8\x97_\xfc\xca\xcb\ +/e\xdaSyQ\xb0;7\xdfb\x1f\xdc}\x17^\ +\xe0\x81\x0b0\xce\x01!\xb8\x83\xe7\x09\x16\x04\x92\x85\xa1\ +\x8f\x8aE\xb5\x1a\xda\x18\xa2^\xab\xa2V\xab`\xee\xe8\ +\x02N_\xf82\xael\x7f\x16\xed\xf6\x03\xf0\xd62\x94\ +*\xe7\x01\xbcb\xd1\xd9W\xc0\xc9s\xa7\xce\x7f\xe3{\ +\xaf\xf2\xdf\xfdc\xc8?\xba\xf9\x16\xe6\x16$~\xf8\xdd\ +\x1f\xa1T@\x18\x04\xf0=\x89j\xa5\x820\x0c\x10\xf8\ +\x9e\xdd\xfb\x90R@\x08\x01\xce\x18\x98\x05\x18 \xa5\xe7\ +\xce\xb3\x5c\xe1'W;xx{\x09\xcf\x9bw\xe1\xab\ +\x5c\x00 \x11\xa1\x05>!`7\xc9\xb37o\x0fk\ +\xbf\xf9\xeb\x0a:\xd7\x96\xf0\xcdS\x06_\xff\xea\xd7\xb0\ +\xb1\xbe\x8e~\xd2G\x96\x0d\xa1\x94BY\x14\xc8\x87C\ +h\xada\x8cq\xb1,\xcb1\xe8\xcc\x89\x11>N\x1e\ +:\x89\xf5\x13\xaf\xa0\x9a\xe7(W\xaf\x01\x00#\xec+\ +\x80^T\xf4\xc7\x94q/GOc\xdcx\xfb*\xd6\ +6\xb7Q\x14\x85#\xe3\x9c\xec\xa7\x0c%\xc1eO\x8b\ +D\xd0\xa2\xdf\xfb\xbeo\xcbPC\xb5\xd1\x84\xfc@!\ +\xacV!\x94@\xb9\x87k_\x01$Z\x0a\x8e\xc0\x13\ +\x80d\x08\xc3\x0a\x16\x17\x17\xc1\xbd\x902'\x01DH\ +\xd9\x8dA\xcb\xed9\x07\xed8\xf5\x87\xf4\x5c?\x88\xa0\ +\x0a\xc9\x13\x04\x82\xc1\xe3@~\x90\x00\x80Ap\x06_\ +p\x80\x19\xd4m\x16s\x9f9\x8a$+\x9c\xfdE1\ +\x1cYn\xe0~\x94\x866\xe4\x9cv\x0e9\x94\x05T\ +\xa9\xe0\x16\xb7B*/\xc2\xf72'\x1c\x07:`A\ +\xdc\xbe\xc7 }\x89\xa8\x1b\xe1\xf6\xf5\x9b\xd8\xdc\x89\xc8\ +\xe2\xb1\xbdA\x10P\x19\xe8\x99\x1a\x93\x1c\xb0D\x15\xb2\ +\x9f\x88\xdcy\xd5\xda\xeeY\x07~\xfdF\x8c@\x0a\x97\ +\x18\xd8\x81\x0e\x18H\xce\xe0Ia#P\xaf\xd7\xf1\xc2\ +\xf9\xcfc\xb6\x13\x8d\xad\xfe\xb7\x12\xb87\x00\xce\xc8\xb1\ +q\x1c\x97\x85\x1a2\x94\x02\xa1\xa7!\x05;\xd8\x01\x22\ +\x90\x92#\xb0\x90\x8cQ#Y\xd4Q\x14\xa5C\xa9J\ +\xa8Q\x97\x13@\x11\xb0gd}\x89\xe10GY\x94\ +P\xda\xf5\x0b\x0c\x97\xa8\x86\xc7\x10\xf8\x8a\x12\x9b\xac\x04\ +\x94y\xe8\xb9FD\xa7\xbd\x83{\xcbKhw{.\ +s\xcf\xf7\xdd<\xa8\x84\x15\x04\x81\x0f?\x08!=9\ +\xb6\x9e@7\xc3se\xe1\xa0\xf5\xfb\xf5mW\x02\x8f\ +\xcc9H\x00)\xf0\x84s\xc0\x92y\x98=d\xa7\xd9\ +\x99s89\xba~\xd25\xe7~\x99\x18\x17\xb42\xc8\ +J N4\xb2B!\xb7\xfbj@%0\x936!\ +\x83\xeb\x01\x01Tg\xe60\x7f\xa6\x09\xe9yn6d\ +\x85Aw\xa0\x90\xe4\x06i\xae\xd1\xb7\xb1?\xd4\xd8\xcd\ +4zC\xe3blAgin\xa0\x0c\x5c\x89:\x03\ +\x8df5\x04\x04\x0e\x16\xc0\x19)\x05|\xa1\xec\xf5;\ +\x81;\x9a\xe1\xfbWv0[\x15\x18\x94\x06\x89%\x1c\ +\x14\x06y9\x82\x02JcP\x8e\x9e\x15\x18\xc08\x04\ +\x97`\xe4\x96.\x1dosJ\xa0\xa0\xfd$s\x80j\ +\x15p\x86\xe9\xa9\x06J\x0e\xdco\x15\xb8\x8b\x02\xca\xd0\ +\xb0\x11`BB\xba\x9asp\xc9\xc0\x8d\x86`9\xbc\ +\xb2\x0f=\xe8#\xdd\x8d0\xe8E(\x8b\x1cSGO\ +b\xfe\xd8\x09T|\x01#0\xc95\x84\xb3?\xf4\x05\ +\x187\x90\x9e\xef\xb2(\xb3\x14&\xddE\x96\xc6\xc8z\ +\x16I\x17\xc3$\x86\xca\xfa\x10j\x80\x9a\xd4\x98\xaeI\ +\x1cnVq\xee\xb9\x06\xe6N7p\xe4\xd04\x9a3\ +\x1aot|\xd7W\x1eM\xca\xc9F1\x09\x90\x964\ +\xc6\xfa;\x7fB\xda\xfa\x10S\x15\x89C\x8d\x10\x0b\xd3\ +5\xcc\x1fmbv\xba\x8e\x99\xc6\x09\x1c\x9d\x9d\xc6\x9c\ +\xc5sSuT+\x81k\xd4R)\xa4\x83\x0c\xbb\xfd\ +\x04\xbd\xfe\x10\x8b&\xc0@\x0b\xe4\x93\xcc\x01\x0e'\xc0\ +Z\xe6c;j\xe1\xe2\x91\x1c?\xfd\xf1w\xb0\xb1\xb9\ +\x85\xcd\x8du\xb4Z-D\xdd6\x9a\xd08s\xfc8\ +\x820t\x9f\xe1$\xcb\xa9\xeb\xdd\x1c1\xc6\x8cF\xb2\ +\x86a@=\x14\xd0\x05G:\x89\x00\x8c\x1c\xf0\x03\x09\ +fJW\x0e\xc6\x04\xee}\xf8\x08\x97/_\xc6`0\ +p#vjj\x0a\xc7N|\xce\xcd\x81O[D\x19\ +\xd0\xb5\x06\x0d\xb6\xfd\x9b\xf0c\xa7\xcc\x91\x06\xa3A\xc4\ +\x19w\x83e}}\x9d\xc8\xdd\x97\xf1\xb8\xcd\x9c\xbe\x03\ +\x93.\x9f&\xab\xcf\xe0\xfb\xf2`\x01\x9c\x8d&\xa1\xe4\ +\xeeE\xce\x01\x03C\x84\xf4\xb1q\x1f\x19!\x04\xed\xc9\ +\xee\xc9\x04\xf8\x1c\x013(\xd2\x0e\x98\x19\xdb\xc0\x9e\xe1\ +\x80\x13\xe0\xc8}\xc1]}a\xc6\xdf\x89q\x8d\xff\x93\ +\x15H\xa0\xfb\xf0\x06V\x97\xdeG\xb7\xbb\xb2\x0e`h\ +Q>S\x80\x10\x80'\xb9\x05\x95\xc0i\xfd\xaf\x17\xe9\ +g\xfd\x16\xee\xfe\xed\x0f\xb8\x7f\xeb\xc1\xf6\xda\xda\x8d\xeb\ +\x00V,z\xfb\xdf\x02>jB\xc9 \xe5\xbf2\x06\ +\x14]\xad4\xa5> \xfbi\xff\xa9%\x10\x82\xbb\x9a\ +kSb\xe5\xfa\x9fq\xef\xdarou\xe5\xd6\xad\xa2\ +HH\xc0{\x16\xdd}\x05\xc00g\x89 !\x16\x9c\ +3h\xad1;;\x8bK\x97.aaa\x01\xd3\xd3\ +\xd3h4\x1a\xee?c)\x85\x8d\x9e{\xe6\x5c \xcf\ +K<}\x9a\x98v\xbb\xc7\xda\xed\x18\xbd\xdd\x0cw\xaf\ +=\x1a>y|\xe7N\x92l\xbd\x0d\xe0\x9a\xc5G\x16\ +\xf93\x07Q\xa3\x0a\xcc\x1f\x06\xe2\xc3M\x84\xba\x81\xbc\ +\xc8q\xe1\xc2K8\x7f\xfe\x05K\x90C)\xedf\x7f\ +\xb7\x9b\x22Ib\xc4q\x86(J\xcc\xf6vWmm\ +\xed\x0c\xdb\xed\xad~\xaf\x17\xc5i\xda\xe9\xc6\xf1V{\ +u\xf5\xe1\xd6`\xb0\xfb\x00\x00e\x7f\xdf\xa2o\xec\xda\ +W\x80\xe7K\x7f\xd0Oq\xf5\xb7\xafac\xed\x09\xce\ +\xce\x1f1\x0f\x1fm\xe3\xf1J\x8bEQ\xdf\x92&&\ +\x8av\xcbN'\xca\xba\xdd\x9d~\x1c\xb7\xe38\xde\x89\ +\xba\xdd\xcdv\xbb\xbd\xd1N\xd3^D\x04\x16\xb1Eo\ +\x14\x9fZ\xb4,6i?&\xdfO\xc0\xe3Gk\x1b\ +?\xff\xc1/\x16\xef\xbe\xf7~\x91&Y\xb1\x94\xdf\xcb\ +\xae\xbc\xfe\xf7~\xad\x86\xdd~?\xeaF\xd1F{g\ +gm{8\x1c\x10\xc1\xee\x98d\x0c\xb7O,2\x8b\ +\xe1\x9e\x98[\xde\xf2\xc0Ixo\xe9\xf6\xcfz\xbd'\ +/\xa7\x83V}0\x88\x22\xadKR\xdf'\xec!|\ +:zN\x1d\xc1\x98dL\xa4p\xf0\xda_\xc0\xc3G\ +\x7f|\x1d\xc0;\x16\xcdQ&\xbd\xbdY|\x8cHO\ +\xc81\xb9\x80\x11\xe1\xf2h>\x14#\x22\x83\xff\xe3\xfa\ +'\x0a\xd7w\xe2\xf8Nm\x80\x00\x00\x00\x00IEN\ +D\xaeB`\x82\ +\x00\x00\x06\xe8\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x00\x04gAMA\x00\x00\xd6\xd8\xd4OX2\ +\x00\x00\x00\x19tEXtSoftware\ +\x00Adobe ImageRead\ +yq\xc9e<\x00\x00\x06zIDATX\xc3\xed\ +W\x09LTW\x14\x1dj\xed\xa6Mii\xb5.\x15\ +\xf7\x1d\xb1 \x8a\x0a(*\xb2\xa9\x88\xc0 (\x22\xae\ +\xe00\x08nl#B\x01\xc5qAvq\xa1\x0a(\ +\xe2Z\xc0\x0aZ\x91`\xc0\x15\xad\x88h\xcd\x18\xd4\xaa\ +\xd4Z\xb1.\xe8\x8c\x0a\x9e\x9e\x0f?\x8dR)\x9a\x9a\ +6i\x9c\xe4d23\xff\xdds\xef9\xf7\xde\xffG\ +\x02@\xf2_B\xf26\x81\xffe\x02fR\x85\x91\x99\ +4Xf\xea\x14\x14o\xea\x18\x98f\xea\x18\x90>\xd4\ +~\xc1\xaa\x81\xb6\xde\x93%\x12\xc9\xc7D3\xc9\x9b~\ +\x0d\x9b\x18\xd2\x97\xc4\x11\xc3\x9c\x17\x17{,\xdc|9\ +`\xf9\xe1\xdb\xa1\xd1\x17\xab\x15+\xae\xa8\x15\xcb\xaf\xa8\ +\x03\xa3\xce<\x90)v\xdf\x1al\xe7\x97o`1]\ +\xc6#\x9f\x10\xef\xbe\x01\xe2\xc5\x96$M\x9947Y\ +\x15\x91Pv7\x0c\x8c\x06\xdc\x02I$\x03L\xa6\ +\x01\x86\x93\x01=)\xd0\xdb\x1e\xe8fK\x8c\x06\xfa\xd9\ +\x00\xd29\xc0\x82\xf0\x22u\xaf\xc1\x13r\x18\xc6\xe0\xf5\ +\x89\x9d\x17\xeb\x12\x8aI\xbe\xc9\xaa\x95\x1bI\xbc\x06p\ +\x0d\x02,\xe4\xc0PVlL\x0cd\x12\x83\xbc\x09\x92\ +\xe9{\x00=]\x80Nc\x00]\x0b`\x88\x13\x10\x10\ +\xa5~6\xd0VV\xc9pN\xafE>|b\x88\xdc\ +\xc6#\xaa,<\xbe\xa4*<\x19\x98\xba\x84\x15\xfb\x01\ +fs\x89\xf9\x94[\x01\xd8G\x01\x93\xa9\xc6\xd48&\ +\xc6\xf7q\xdfP\x11_\xa0\xef\x14\xa0\xab\x1d`\xe4\x0c\ +\xcc\xa5E\xe6N\x01w\x19\xd2\xf7\xb5\xaa\x96-\xd9q\ +5&]S\xebM\x92\xf1\x01\xf4\x96\xa4#\xfc\x01\x9b\ +\x08\x92\x92p~:\xb0|/\xb0\xbe\x10\xd8T\x04$\ +\xfc\x00\xf8o\xa5\xec+\xa8\x0e\x13\xed\xc3^\x18\xcc^\ +\xf0]\xc6\xe4\xbc\xe3\xab\x19Z\xf1\x0a\xe4\x0a'\xa1\xea\ +\xc8\xc4\x92\xaa\x88u$\x0ac\xd5$\x1dE\xbfm\x22\ +\xd9l\x09\xf4t\x1b\x10{\x08\xc8*\x03\xb6\x1eT\xd5\ +\x84\xc4\xeeQ{,\x88{\x18\xb9.O\xb3\xbd\x84\x92\ +gP\x09^kLkF\xd1*E,\xed\x19#\xbf\ +\xc7\xf0K\xfe\x1c\x1f\x8e\x861\xbf\xf8\x88\xd0z^r\ +\x07\xcf\x98\x0b\xb1i75\xf3\xe9\xb5S\x08`I\x99\ +\xadY\xb14\x06\x90\xb1b\xe5\x01`W)\xb0\xad@\ +U3\xc6#\xf4A_\xd3\x89W;\xf4\x1aZ\xac\xd3\ +\xae\xfbN6\xda\xb1\xb5\xbbJ4\x89\xf9\xb4$\x91}\ +\x12T\x1fcU\x9a\xfa\x99\x91\xb5\xe7\xed:\x05\x04\xf2\ +\xc4\xd4\xb2\xdf\x0d-gm\xea\xd2\xdfb\xbc\xb8(\xb4\ +\x98X\xf0\x0c\xff\xd4\x8a\xd8-\x9aZ/%\xbd\xe5A\ ++\xfai\xbf\x0a\xf0Ha\x159@\xca1 \xfb\xf4\ +\x9dZY\xe8\x86G\x02\xf1\x97\x9d\xf4\xf3yv9\xe1\ +E\x8cc<\x7f\xdf\xc8\xf4\xdf2O\x02>\xa9L\x9a\ +q|\xe3\x81\xc8\xa4\x13O\xba\x1b\x8d9\xcfk\xfc\x04\ +\x05J\x0b\x8f0\xabu\xa7\x1f\xe9\x9b\xbbe\xe9\x99\xb9\ +\xc8\xb9\xc1\xb6\xf9E\xe4\x5cWn\x06\xa6\xd1o;\xca\ +n\xcbw\x97$@\x9e\x09\xac,\x00\xf6\x94\x03i\xfb\ +\xcb\x9e\x8ep\xf6\xbf\xdf\xa1\xb7I\x09\x83\xad!<\x09\ +s\xa23\xf1Y\xff\x11\xee\x16^!)\xd7w\xfdH\ +\x1b\xb6S1Z\x18\x9fE\x05\xddB\x1fh\xb7\xea\xb8\ +\x9b\xd7\xb8\x08\x0dV\x96\xcb\x80+\xf9\xa3\x97\xe2\x94\xda\ +x\x9c\xef\x85\xf0\xa4\xeb\x1a\x7fz\xeb\xb6\x94\xcb\x84r\ +\xdb\x0b]\xfd-\x83\xb0\xc1\xd6\x1e\x07\xf2\xca\xd5\xcf\x16\ +)\xb7p\x96\xed+>o\xdfc_\x9d\x97\x12\x89\x1d\ +\xd1\xf5\xf9Uk\xe2\xb0h\xda\xb2\x0d\xfb\x7f\xcdd\x1f\ +\x84\x91X\xf9\x1d\x10\x9et\xf8qW\x03+\xa1\xfa0\ +\xc2X\xb0\xe0\xdc\xae\x5c`N(;\xdb\x07p\x5cT\ +]\xebBR\x07b\x1c\xbbUJ\xc9fm\x01B\xe9\ +u*+\xc9-\xbbS;Q\xae\xac\xee\xd4oD)\ +\x03\xc4\x103\x89!D\xeb\x86\xabU\xb8\x17d\x1c\xbc\ +X\x9d\xce\xa4\xe38\x11i\x07\xef\xd4\x9a;\xf9\xdfo\ +\xa1\xdd:\x93?\xbb\x12m\xeb\x12\xd8\xb9\x9f\xber\xa6\ +M\xbc\x00S\x8e\x8bUX}\xd5\x93\xd6\x03\x9e\x94n\ +);<\x93\x92\xe7\x9c\xbaQ#J~\x92\x87\x95\x84\ +\x83Xu\x0b\xe2\x9d\x86\xf7\x06\xa9<\xe6B\xf1e6\ +({`\xe7Q\xf53G/e\xb5x6\x980$\ +>\xa8K`\x0f\x09f+\xebgz$\x95\xb0g\x87\ +O\xa1\xff>\x94,\x923\x9dA\xf2\xb5Y'\x9e\x8c\ +$y\xbbn\x03\x8f\xf0`$1\x96h\xdf\xd8\x0dE\ +h\xee\xf4\xbc\xb2\xbb\x85* \xff\x020/r\x8bZ\ +TMH\xdc\x96\xf8\xa2n\xe2\x84\x04r\x8a\xd9\x9d\xdc\ +lvL\xc2\x81\x92O\xe5xy\xd3\xb3\x10\xf6F\xf2\ +\x19Vp\xecF\x0d\x1b\xb4R\xbb\x95n\x8e\xb8<\xac\ +\x886\x8d\x91\x0b\xbb\xc3\xc3?YU\xfe\x0bp\xfa*\ +\xf7\xc4\xd2\xad\x8fD\xdfW\x13\x13^H\x5cH \xef\ +\x14\xc7\x8a\xdd\xed\xbe\x11\x98\xc1\xa51\x97\xcd\x16LU\ +\xa28fk\x0a\xea\xc9\xdbw\x1fT\xc8\xcb\x17\x0a\xd6\ +\x8a\xd9\xbf\xbcr\xa7 \x1d&\xb0\xf3P\xe9MMy\ +%\xc9\xa3\xb6>\x14\xc9\x85~\x11\xee\x80\xba/\x9c\x15\ +\x12(\xa2Dq\x5c\x16A\x9c\xed\xc5l\xb6e\x5c\xa3\ +\xd1\xec\xdc\xb5\xdcl\x99\x97\xb8R\xb3N>\xee=d\ +\xc2Q\x9d\xb6\xdd<\xc5\xec\x1b}\xa0`\xbc9q\x19\ +E\xb7J*4\xb5\xce\xb2\x15\xf7\xba\x19Z\x97\x8b#\ +\xeaLt$\x9a7k\x13_\x0b\xf71\xd1*\xedWy\xeek\ +&&\xd1Fl\xb0\xbfC\x9b&\x9ej\xb5\xea\x96\x8b\ +D\xd2\x92x\xef%I\xfe\xfb\xaf\xb7\xff\x8c\xde&\xd0\ +\x14\xfe\x00\xc6\x8fm_Q\xaa\x96$\x00\x00\x00\x00I\ +END\xaeB`\x82\ +\x00\x00\x03\xd1\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x00\x04gAMA\x00\x00\xd6\xd8\xd4OX2\ +\x00\x00\x00\x19tEXtSoftware\ +\x00Adobe ImageRead\ +yq\xc9e<\x00\x00\x03cIDATX\xc3\xc5\ +\x97\xcdo\x1bU\x14\xc5\x7fwf\x92\x89\xd3|\xd4\xad\ +\x17\x09 \xd2MUQ\x10\x08Q\x84\xca\x0a\x09\xd8 \ +\xc4\xa2R\x17,*$(k6,\x90\xfa\x1f\xc0\x82\ +\x0d\xa8;\x04,\xd8\x82\x10\xaa\xdaE\x05d\x07\x08\x04\ +\xa14@\x85\x11n!\xb5\x13\x9c\xe6\xc3\xb5\xd3y\xef\ +]\x16\xf3\xec\x8c\x9d\xc4\xa6\xf5T\x1d\xe9J\x1ei<\ +\xe7\xdcs\xce\xbb\xef\x8d\xa8*\xf7\xf2\x0a\xb8\xc7W\xf4\ +\x7f\x1ez\xff5y\xf2\xe6\x16\x91U\xa40\xca\x13\xc6\ +\x12\xaa\x22\x00Q\xc0L\x180\xeb\x94\xc0:\x1a\xd55\ +>{\xfbs\xe6\x81\xa6\xaa\xbaA\xef\x96A\x16\x9c}\ +]\xce<\xf8\xc8\x0b\xaf:\xa7\xa1\xaa\x06\x0f\x1c}v\ +\xdc9\x15T\x05`\xaa4\x17\x8d\x17\xef\x1f\x09\xc2\x82\ +\x98\xad\x86~\xf1\xde\x89\xeaw\x8b\xff\xbe\xfb\xe1W|\ +\x02\xd4U\xd5\xf6\x05P\xd5\xbeu\xf64?\xaa\xaa\xaa\ +:_\xb6\xab\x9cZm\xb5nj\xb5\xba\xa4\xc6\x18\xbd\ +\xb2\xf0u\xf2\xe6\x8b|\xfb\xfc\xa3\xbc\x02\x14\xdbM\xee\ +U\x033\xe0\x94\x10,`|9\xd2\xfb\xb4\x04\x8b1\ +\xb7X^\xae\x11\x86!\x87\x1ez::\xf9\xc6\x07\x8f\ +\x1d\x9e\xe1\xe5\x97\x8e\xf1\x1c0!\x22r\xc7!L\xbd\ +\xd6.\xd0\xb4\x1c\xe0P,\xaa\x09\xcdf#\x0dU\x14\ +\xf1\xf0\xf1\x93\xa3\xa7\xdf\xfa\xf8\x99\xb9\x12\xa7\x80C@\ +a\xc8U\x90\x02\x81E1\x9e@\x02\x18\xc4\x93\xc9\xe6\ +m\xdf\xbe\x09\x8e\x96\xd2\x09\xa7\xcd\xdf\x82\xde^\ +\xa5\x13\xc6\x14z\xfby\xbd\x1b\x0a$;\xe4\xee\xf6\x5c\ +\xbb\x16g\xce\x0a\xec\x9c\x84\xba\xebs\xd9\xddC\xf3\x1f\ +D\x83b\xd7\xfd\xfb.\x0c\xa2\xac\xf3\xfd\x94h\x0f\xec\ +\x5c\x97a\xba\x15\x0f:\xe1\xc7\xc08Pdm%p\ +\x1bMZ\xb9mF;-\x80\xf4H9\x860\x8dR\ +\xa4VY\xb1\x95\xc5\xcb\xf6\xa7/?J\xae,\xfe\xd0\ +\xb8t\x95?\x80U`kH\x05\xd4\x1f@\x15%\x04\ +\x0a\x08S(\x07\xa8UV\xed\xc2\xfc\xb9\xe4\xd7o>\ +5\xe5ry\xfd\xef:\xcb\xdf\xff\xc9o\xe5*e\xe0\ +\x1ap\x19X\x1f2\x03\xa0\x8c\xa1L\x03\x07=\xe8\x85\ +\x0e\xe8/\xd7\xa8\x5c\xaa\xf0\xfb\xd2\x0d\xfe\x02j\xc0\x12\ +\xf0\x8f?\x86\xd5\x81\xcd!\x158B\xad\xb2l\x17\xe6\ +\xcf\xef\x05z\x1d\xb8\xeaA\xeb\xc0\x86\x07\xdd\xd2\x01_\ +>\x03\x09\xac79\xf7\xce\xa9\xc2\xf4\xf5\x1b\xd8\x9f+\ +,\xed\x01\xba\xe2en\x00\x89\xde\xc6\x17\xef\xc0O3\ +\x11)\x01\xc7\x80\xc3\xc0-\x0f8\x14\xe8\xed\x12\x18\x01\ +\xa6\xfd\xd1\xdazi\x87\x02\xcd^\xff\x01\xf9h\x10\x8e\ +\x11Wv$\x00\x00\x00\x00IEND\xaeB`\x82\ +\ +" + +qt_resource_name = b"\ +\x00\x06\ +\x07\x03}\xc3\ +\x00i\ +\x00m\x00a\x00g\x00e\x00s\ +\x00\x09\ +\x00W\xb8g\ +\x00p\ +\x00r\x00i\x00n\x00t\x00.\x00p\x00n\x00g\ +\x00\x08\ +\x08\xc8Xg\ +\x00s\ +\x00a\x00v\x00e\x00.\x00p\x00n\x00g\ +\x00\x08\ +\x04\xb2X\xc7\ +\x00u\ +\x00n\x00d\x00o\x00.\x00p\x00n\x00g\ +\x00\x07\ +\x04\xcaW\xa7\ +\x00n\ +\x00e\x00w\x00.\x00p\x00n\x00g\ +" + +qt_resource_struct = b"\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x02\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00@\x00\x00\x00\x00\x00\x01\x00\x00\x0e2\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00V\x00\x00\x00\x00\x00\x01\x00\x00\x15\x1e\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00*\x00\x00\x00\x00\x00\x01\x00\x00\x06\xc8\ +\x00\x00\x01~*kP\x18\ +" + +def qInitResources(): + QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +def qCleanupResources(): + QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +qInitResources() diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/dockwidgets/images/new.png b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/dockwidgets/images/new.png new file mode 100644 index 0000000..dd795cf Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/dockwidgets/images/new.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/dockwidgets/images/print.png b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/dockwidgets/images/print.png new file mode 100644 index 0000000..2afb769 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/dockwidgets/images/print.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/dockwidgets/images/save.png b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/dockwidgets/images/save.png new file mode 100644 index 0000000..46eac82 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/dockwidgets/images/save.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/dockwidgets/images/undo.png b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/dockwidgets/images/undo.png new file mode 100644 index 0000000..eee23d2 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/dockwidgets/images/undo.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/__pycache__/mdi.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/__pycache__/mdi.cpython-310.pyc new file mode 100644 index 0000000..54bff58 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/__pycache__/mdi.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/__pycache__/mdi_rc.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/__pycache__/mdi_rc.cpython-310.pyc new file mode 100644 index 0000000..cb5c224 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/__pycache__/mdi_rc.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/images/copy.png b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/images/copy.png new file mode 100644 index 0000000..2aeb282 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/images/copy.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/images/cut.png b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/images/cut.png new file mode 100644 index 0000000..54638e9 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/images/cut.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/images/new.png b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/images/new.png new file mode 100644 index 0000000..12131b0 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/images/new.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/images/open.png b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/images/open.png new file mode 100644 index 0000000..45fa288 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/images/open.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/images/paste.png b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/images/paste.png new file mode 100644 index 0000000..c14425c Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/images/paste.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/images/save.png b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/images/save.png new file mode 100644 index 0000000..daba865 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/images/save.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/mdi.py b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/mdi.py new file mode 100644 index 0000000..9daca82 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/mdi.py @@ -0,0 +1,451 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the widgets/draganddrop/draggabletext example from Qt v5.x, originating from PyQt""" + +from PySide2.QtCore import (QFile, QFileInfo, QPoint, QSettings, QSignalMapper, + QSaveFile, QSize, QTextStream, Qt) +from PySide2.QtGui import QIcon, QKeySequence +from PySide2.QtWidgets import (QAction, QApplication, QFileDialog, QMainWindow, + QMdiArea, QMessageBox, QTextEdit, QWidget) + +import mdi_rc + + +class MdiChild(QTextEdit): + sequenceNumber = 1 + + def __init__(self): + super(MdiChild, self).__init__() + + self.setAttribute(Qt.WA_DeleteOnClose) + self.isUntitled = True + + def newFile(self): + self.isUntitled = True + self.curFile = "document%d.txt" % MdiChild.sequenceNumber + MdiChild.sequenceNumber += 1 + self.setWindowTitle(self.curFile + '[*]') + + self.document().contentsChanged.connect(self.documentWasModified) + + def loadFile(self, fileName): + file = QFile(fileName) + if not file.open(QFile.ReadOnly | QFile.Text): + QMessageBox.warning(self, "MDI", + "Cannot read file %s:\n%s." % (fileName, file.errorString())) + return False + + instr = QTextStream(file) + QApplication.setOverrideCursor(Qt.WaitCursor) + self.setPlainText(instr.readAll()) + QApplication.restoreOverrideCursor() + + self.setCurrentFile(fileName) + + self.document().contentsChanged.connect(self.documentWasModified) + + return True + + def save(self): + if self.isUntitled: + return self.saveAs() + else: + return self.saveFile(self.curFile) + + def saveAs(self): + fileName, _ = QFileDialog.getSaveFileName(self, "Save As", self.curFile) + if not fileName: + return False + + return self.saveFile(fileName) + + def saveFile(self, fileName): + error = None + QApplication.setOverrideCursor(Qt.WaitCursor) + file = QSaveFile(fileName) + if file.open(QFile.WriteOnly | QFile.Text): + outstr = QTextStream(file) + outstr << self.toPlainText() + if not file.commit(): + error = "Cannot write file %s:\n%s." % (fileName, file.errorString()) + else: + error = "Cannot open file %s:\n%s." % (fileName, file.errorString()) + QApplication.restoreOverrideCursor() + + if error: + QMessageBox.warning(self, "MDI", error) + return False + + self.setCurrentFile(fileName) + return True + + def userFriendlyCurrentFile(self): + return self.strippedName(self.curFile) + + def currentFile(self): + return self.curFile + + def closeEvent(self, event): + if self.maybeSave(): + event.accept() + else: + event.ignore() + + def documentWasModified(self): + self.setWindowModified(self.document().isModified()) + + def maybeSave(self): + if self.document().isModified(): + ret = QMessageBox.warning(self, "MDI", + "'%s' has been modified.\nDo you want to save your " + "changes?" % self.userFriendlyCurrentFile(), + QMessageBox.Save | QMessageBox.Discard | QMessageBox.Cancel) + + if ret == QMessageBox.Save: + return self.save() + + if ret == QMessageBox.Cancel: + return False + + return True + + def setCurrentFile(self, fileName): + self.curFile = QFileInfo(fileName).canonicalFilePath() + self.isUntitled = False + self.document().setModified(False) + self.setWindowModified(False) + self.setWindowTitle(self.userFriendlyCurrentFile() + "[*]") + + def strippedName(self, fullFileName): + return QFileInfo(fullFileName).fileName() + + +class MainWindow(QMainWindow): + def __init__(self): + super(MainWindow, self).__init__() + + self.mdiArea = QMdiArea() + self.mdiArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded) + self.mdiArea.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded) + self.setCentralWidget(self.mdiArea) + + self.mdiArea.subWindowActivated.connect(self.updateMenus) + self.windowMapper = QSignalMapper(self) + self.windowMapper.mapped[QWidget].connect(self.setActiveSubWindow) + + self.createActions() + self.createMenus() + self.createToolBars() + self.createStatusBar() + self.updateMenus() + + self.readSettings() + + self.setWindowTitle("MDI") + + def closeEvent(self, event): + self.mdiArea.closeAllSubWindows() + if self.mdiArea.currentSubWindow(): + event.ignore() + else: + self.writeSettings() + event.accept() + + def newFile(self): + child = self.createMdiChild() + child.newFile() + child.show() + + def open(self): + fileName, _ = QFileDialog.getOpenFileName(self) + if fileName: + existing = self.findMdiChild(fileName) + if existing: + self.mdiArea.setActiveSubWindow(existing) + return + + child = self.createMdiChild() + if child.loadFile(fileName): + self.statusBar().showMessage("File loaded", 2000) + child.show() + else: + child.close() + + def save(self): + if self.activeMdiChild() and self.activeMdiChild().save(): + self.statusBar().showMessage("File saved", 2000) + + def saveAs(self): + if self.activeMdiChild() and self.activeMdiChild().saveAs(): + self.statusBar().showMessage("File saved", 2000) + + def cut(self): + if self.activeMdiChild(): + self.activeMdiChild().cut() + + def copy(self): + if self.activeMdiChild(): + self.activeMdiChild().copy() + + def paste(self): + if self.activeMdiChild(): + self.activeMdiChild().paste() + + def about(self): + QMessageBox.about(self, "About MDI", + "The MDI example demonstrates how to write multiple " + "document interface applications using Qt.") + + def updateMenus(self): + hasMdiChild = (self.activeMdiChild() is not None) + self.saveAct.setEnabled(hasMdiChild) + self.saveAsAct.setEnabled(hasMdiChild) + self.pasteAct.setEnabled(hasMdiChild) + self.closeAct.setEnabled(hasMdiChild) + self.closeAllAct.setEnabled(hasMdiChild) + self.tileAct.setEnabled(hasMdiChild) + self.cascadeAct.setEnabled(hasMdiChild) + self.nextAct.setEnabled(hasMdiChild) + self.previousAct.setEnabled(hasMdiChild) + self.separatorAct.setVisible(hasMdiChild) + + hasSelection = (self.activeMdiChild() is not None and + self.activeMdiChild().textCursor().hasSelection()) + self.cutAct.setEnabled(hasSelection) + self.copyAct.setEnabled(hasSelection) + + def updateWindowMenu(self): + self.windowMenu.clear() + self.windowMenu.addAction(self.closeAct) + self.windowMenu.addAction(self.closeAllAct) + self.windowMenu.addSeparator() + self.windowMenu.addAction(self.tileAct) + self.windowMenu.addAction(self.cascadeAct) + self.windowMenu.addSeparator() + self.windowMenu.addAction(self.nextAct) + self.windowMenu.addAction(self.previousAct) + self.windowMenu.addAction(self.separatorAct) + + windows = self.mdiArea.subWindowList() + self.separatorAct.setVisible(len(windows) != 0) + + for i, window in enumerate(windows): + child = window.widget() + + text = "%d %s" % (i + 1, child.userFriendlyCurrentFile()) + if i < 9: + text = '&' + text + + action = self.windowMenu.addAction(text) + action.setCheckable(True) + action.setChecked(child is self.activeMdiChild()) + action.triggered.connect(self.windowMapper.map) + self.windowMapper.setMapping(action, window) + + def createMdiChild(self): + child = MdiChild() + self.mdiArea.addSubWindow(child) + + child.copyAvailable.connect(self.cutAct.setEnabled) + child.copyAvailable.connect(self.copyAct.setEnabled) + + return child + + def createActions(self): + + self.newAct = QAction(QIcon.fromTheme("document-new", QIcon(':/images/new.png')), "&New", self, + shortcut=QKeySequence.New, statusTip="Create a new file", + triggered=self.newFile) + + self.openAct = QAction(QIcon.fromTheme("document-open", QIcon(':/images/open.png')), "&Open...", self, + shortcut=QKeySequence.Open, statusTip="Open an existing file", + triggered=self.open) + + self.saveAct = QAction(QIcon.fromTheme("document-save", QIcon(':/images/save.png')), "&Save", self, + shortcut=QKeySequence.Save, + statusTip="Save the document to disk", triggered=self.save) + + self.saveAsAct = QAction("Save &As...", self, + shortcut=QKeySequence.SaveAs, + statusTip="Save the document under a new name", + triggered=self.saveAs) + + self.exitAct = QAction("E&xit", self, shortcut=QKeySequence.Quit, + statusTip="Exit the application", + triggered=QApplication.instance().closeAllWindows) + + self.cutAct = QAction(QIcon.fromTheme("edit-cut", QIcon(':/images/cut.png')), "Cu&t", self, + shortcut=QKeySequence.Cut, + statusTip="Cut the current selection's contents to the clipboard", + triggered=self.cut) + + self.copyAct = QAction(QIcon.fromTheme("edit-copy", QIcon(':/images/copy.png')), "&Copy", self, + shortcut=QKeySequence.Copy, + statusTip="Copy the current selection's contents to the clipboard", + triggered=self.copy) + + self.pasteAct = QAction(QIcon.fromTheme("edit-paste", QIcon(':/images/paste.png')), "&Paste", self, + shortcut=QKeySequence.Paste, + statusTip="Paste the clipboard's contents into the current selection", + triggered=self.paste) + + self.closeAct = QAction("Cl&ose", self, + statusTip="Close the active window", + triggered=self.mdiArea.closeActiveSubWindow) + + self.closeAllAct = QAction("Close &All", self, + statusTip="Close all the windows", + triggered=self.mdiArea.closeAllSubWindows) + + self.tileAct = QAction("&Tile", self, statusTip="Tile the windows", + triggered=self.mdiArea.tileSubWindows) + + self.cascadeAct = QAction("&Cascade", self, + statusTip="Cascade the windows", + triggered=self.mdiArea.cascadeSubWindows) + + self.nextAct = QAction("Ne&xt", self, shortcut=QKeySequence.NextChild, + statusTip="Move the focus to the next window", + triggered=self.mdiArea.activateNextSubWindow) + + self.previousAct = QAction("Pre&vious", self, + shortcut=QKeySequence.PreviousChild, + statusTip="Move the focus to the previous window", + triggered=self.mdiArea.activatePreviousSubWindow) + + self.separatorAct = QAction(self) + self.separatorAct.setSeparator(True) + + self.aboutAct = QAction("&About", self, + statusTip="Show the application's About box", + triggered=self.about) + + self.aboutQtAct = QAction("About &Qt", self, + statusTip="Show the Qt library's About box", + triggered=QApplication.instance().aboutQt) + + def createMenus(self): + self.fileMenu = self.menuBar().addMenu("&File") + self.fileMenu.addAction(self.newAct) + self.fileMenu.addAction(self.openAct) + self.fileMenu.addAction(self.saveAct) + self.fileMenu.addAction(self.saveAsAct) + self.fileMenu.addSeparator() + action = self.fileMenu.addAction("Switch layout direction") + action.triggered.connect(self.switchLayoutDirection) + self.fileMenu.addAction(self.exitAct) + + self.editMenu = self.menuBar().addMenu("&Edit") + self.editMenu.addAction(self.cutAct) + self.editMenu.addAction(self.copyAct) + self.editMenu.addAction(self.pasteAct) + + self.windowMenu = self.menuBar().addMenu("&Window") + self.updateWindowMenu() + self.windowMenu.aboutToShow.connect(self.updateWindowMenu) + + self.menuBar().addSeparator() + + self.helpMenu = self.menuBar().addMenu("&Help") + self.helpMenu.addAction(self.aboutAct) + self.helpMenu.addAction(self.aboutQtAct) + + def createToolBars(self): + self.fileToolBar = self.addToolBar("File") + self.fileToolBar.addAction(self.newAct) + self.fileToolBar.addAction(self.openAct) + self.fileToolBar.addAction(self.saveAct) + + self.editToolBar = self.addToolBar("Edit") + self.editToolBar.addAction(self.cutAct) + self.editToolBar.addAction(self.copyAct) + self.editToolBar.addAction(self.pasteAct) + + def createStatusBar(self): + self.statusBar().showMessage("Ready") + + def readSettings(self): + settings = QSettings('Trolltech', 'MDI Example') + pos = settings.value('pos', QPoint(200, 200)) + size = settings.value('size', QSize(400, 400)) + self.move(pos) + self.resize(size) + + def writeSettings(self): + settings = QSettings('Trolltech', 'MDI Example') + settings.setValue('pos', self.pos()) + settings.setValue('size', self.size()) + + def activeMdiChild(self): + activeSubWindow = self.mdiArea.activeSubWindow() + if activeSubWindow: + return activeSubWindow.widget() + return None + + def findMdiChild(self, fileName): + canonicalFilePath = QFileInfo(fileName).canonicalFilePath() + + for window in self.mdiArea.subWindowList(): + if window.widget().currentFile() == canonicalFilePath: + return window + return None + + def switchLayoutDirection(self): + if self.layoutDirection() == Qt.LeftToRight: + QApplication.setLayoutDirection(Qt.RightToLeft) + else: + QApplication.setLayoutDirection(Qt.LeftToRight) + + def setActiveSubWindow(self, window): + if window: + self.mdiArea.setActiveSubWindow(window) + + +if __name__ == '__main__': + + import sys + + app = QApplication(sys.argv) + mainWin = MainWindow() + mainWin.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/mdi.pyproject b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/mdi.pyproject new file mode 100644 index 0000000..7df26fd --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/mdi.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["mdi_rc.py", "mdi.py", "mdi.qrc"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/mdi.qrc b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/mdi.qrc new file mode 100644 index 0000000..0a776fa --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/mdi.qrc @@ -0,0 +1,10 @@ + + + images/copy.png + images/cut.png + images/new.png + images/open.png + images/paste.png + images/save.png + + diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/mdi_rc.py b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/mdi_rc.py new file mode 100644 index 0000000..780faeb --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/mainwindows/mdi/mdi_rc.py @@ -0,0 +1,608 @@ +# Resource object code (Python 3) +# Created by: object code +# Created by: The Resource Compiler for Qt version 5.15.2 +# WARNING! All changes made in this file will be lost! + +from PySide2 import QtCore + +qt_resource_data = b"\ +\x00\x00\x04\xa3\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x00\x04gAMA\x00\x00\xd6\xd8\xd4OX2\ +\x00\x00\x00\x19tEXtSoftware\ +\x00Adobe ImageRead\ +yq\xc9e<\x00\x00\x045IDATX\xc3\xe5\ +\x97\xcd\x8fTE\x14\xc5\x7f\xb7\xea\xd6{\xaf\xdbn\xc7\ +\xf9@\x9d\x89FM4\x99D\x8d\x1aH\x98\xc4\x8c\x1f\ +\x1b\xfe\x02L\x5c\xf1\x07\x18\x16.M\x5ckX\xc3\x8e\ +\xc4\x8d\x1b\x17\xce\x82htA\x5c\x18\x0d\xe2\xc4\xc6\x00\ +=`PQ\x19`\x02\xa2\x0e\x0c\x83\xd3\xfd^\xf7\x94\ +\x8b\xaa\xee\xf9`\xe6\x0d\x84Q\x16VR\xa9\xce{\xb7\ +\xeb\x9e:\xf7\xd4\xa9z\xea\xbd\xe7~6\xe5>\xb7>\ +\x80]\xbbv\xbd\x03\xec\xfd\x8f\xf2N5\x1a\x8d\x03\xeb\ +\x19\xd8\xbb\xef\xbd\xa3;\x1f\x1fv\x00\x9c<:\xcf\xcc\ +\x977X\x9c\xef\xdcS\xa6\xda\xa0\xf2\xdck\x03\xbc\xb8\ +g\x10\x80\x8b\x7f\x16|\xf8\xee\x1e\x80\xdb\x00p\xfc\xec\ +\x1c\xdf?0\x04x.\xfd\xb8\xc0\xfe\xb7\xceo\xcbr\ +\x0f\x1dy\x9a\x0b#\x96\xd3\x9f\x1fd\xfc\xd5}\x9bk\ +@E\xb0\x16@xp,#\xcb\xb2m\x0100\x96\ +a\x8dP\x1b|\x14#%\x22\x14+\xd8\x18\x91\xd5\x95\ +s\xe7\xce\x83*\xb8\x04\xd2\x14\xb2\x0c\xd2,\x8cI\x0a\ +I\x12\xdew:\x90\xe7\x90\xb7\xa1\xd5\x82v+\x8em\ +(r\xb2\xfa8\xd6\x0a\xe3\xaf\xbcIk\xf1\xfa\xe6\x00\ +\xac\x15\xac\x15\x04\xb0F\xd8\xbd{\xe7\x16k\xeb\x86\xae\ +\x80Z\xa8V\x81\xeamQ\x8d\xaf\x04\xb5\x82\xf7\xa0\xa6\ +\x84\x01g\x055\x82\x08\xa8\x0a\x95,\xc3# \x1e\x08\ +\xc0\xf0\x1e/\x02\xde#\x12&\x15|\x88#\xc4!\x1e\ +\xd0\xaf\x16\xaa\x1b\x8b\xf6\xd8'a\ +a\xbd\x1c%% \x00\xf0\x81\x8d4M\xa3:\xc3\xb3\ +\x98\x11\x89l\x07\xdac\x09V\x98_)F\xfca\xcd\ +r\x7fa\x1d-\xd1\x80:\x09TI\x18O4/\xe0\ +\x9d\x85\xc4!\x89\xc3g\x09\x92i\xd8\x11\x89\xe2\x13\x87\ +X\x8b\xefv\x91\xbc\x80\xbc\x03\xed\x02\xdfj#\xed\x02\ +\xf2\x02\x9fwP\x1dE\xd5 x:\xebTx\x9b\x06\ +\x9c3x\x0f\x03\x8f$\xbc\xfe\xf2\xf3wh\xe86h\ +\xa4\xbe\xf1\xeb\xc6\xfc\xdf\xb1\x04R^\x82DM_\x84\ +\x8f\x0d\xa58\xe7\xb6\xc5\x88\x9e\x18K\xb9v\xb3\x03\x08\ +\x9dR\x11\xaa\x90\xb8P\xefZ\xc50}\xb1\xcb@\xc5\ +\xb0\x0e\xf4&\xadW\xf9U.\xe1\xe1\xc6\xd22\xf5\xcc\ +p}\xc9\x84-\xe9J\x19\x10\x9c\x1a\xc0s\xe5f\x97\ ++7\xbb\xacQW?\xd7\xaad~\xc5'\xa2)\xac\ +\x05\x15\xc3\x9c\x0b\xb5w\xa6l\x17\xa8\xc1\xa9 \xc8\x1a\ +5\xaf\x9b5\x1a\x8fY1\x9e\xfe{\xe9\xef\x14\x00\xf1\ +\x82\xef\x9bX0+WV\x02U!\xd1\x90\xfc\xe7S\ +\xdf\xf2\xeb\x99\x13,-\xde\xb8\xa7\xfaWj\x03<\xf5\ +\xecN\x9eya\x02\x0f\xa83[1\x10\x03|\x87\xf7\ +\xf7\xbf\xc1\xc2\xc2\x02\xb7n\xdd\xa2(\x0aD\x04k-\ +\xd6ZT\x15U\xc59\x87\xaab\xad\xc5\x98\xf0\xdf\xe5\ +\xe5e\xf2<\xef\xf7#\xcd\xf9\xb8\xf2-\x18pVP\ +\x17\x18\xdc1:\xb6rO8~\x9c\xe9\xe9i\x8c1\ +x\xef\x99\x98\x98`rr\xf2\x8eY\xd81:\xd6\xdf\ +\x86\xae\xd4\x09Up6\xac\xa2V\xaf\xf7k933\ +\xc3\xd0\xd0\x10\xd6Z\xbc\xf74\x9b\xcd\xbb\x02P\xab\xd7\ +p\xd1\x88\xb4\xd4\x88\x14\x9c\x0b'\x5c\xa0*\x00\xa8V\ +\xabdY\xd6\xa7\xb87\xdeis\x1a\xa9\x17AK\xad\ +8\x1e\xc7\xbd#\xb4\xd7\x8c1\x88D\xdf\x8f:\xb8\xab\ +\x9b\xaf5\xa8\x0d\xf3\xf6\x18.=\x8e\x83)m\xe3\xd5\ +\xdb\x12\xa9\xf7\xe5Vl\xad\xf4\x91\x0e\x8e\x0c\xc3\xf2\xef\ +\xdb\x02\xe0\xa1\x91a\xd4\xc2\xb5+\x97Y\x9c\xbf\xbe\x05\ +\x036\xf8\xc0`\xad\x02\x0b\xdb\xc3\xc0P\xad\xc2\xec\xc5\ +K\x9c\xfd\xee\x1b\xce\x9f\x9c\x9e\x03\xa66\x04`$^\ +J\x05\x12\x0b\xed\x91'\xa9=\x0co\x1f8\xc8f\xc7\ +\x81':\xf1*\xe75\x1e2\x81\x14(\xbap\xf9\xea\ +U\xce4\x8e\xd1\xfc\xfa\x8b\xb9\xd9\x1fN\x1d\x02\x0eo\ +\x08\xe0\xb3\x8f>\xe0\xa7\xd3'W\x99\xe9\xda\xa3\x86U\ +\xe6\xbb\x1e\x04\x1b<_\x1do|w\xee\x8f\xd9_\x0e\ +\x01\x87\x1b\x8d\xc6_\x1b\x01\x98\x9a\xfe\xf4\xe3\x7f\xf5s\ +l}\xf25\x00\xe2\xb7\xda\x81\xff\xdd\xd7\xf1?M\xf0\ +K\xb9\xe8F\x89\xaf\x00\x00\x00\x00IEND\xaeB\ +`\x82\ +\x00\x00\x08\x19\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x00\x04gAMA\x00\x00\xd6\xd8\xd4OX2\ +\x00\x00\x00\x19tEXtSoftware\ +\x00Adobe ImageRead\ +yq\xc9e<\x00\x00\x07\xabIDATX\xc3\xad\ +W[P\x93g\x1a\xf6\xca\xce\xec\xcc\xf6b/\xbc\xd9\ +\xe9\xce\xecn\xbd\xda\xd9\x9b\xb5\xce\xba;{\xb0\xad\xcc\ +z\xb1\xce\xce:\xb3vTpu\xdb\xe2\x81\xd6\xb6T\ +\x04\xbb\xa5 m\xc1\x82\x06\x08\x07QB\x80\x80\x80\x02\ +!\x81\x10\x92@H\x10s$!gr\x80\x04B \ +\x9c\x09G\xb5Tx\xf6\xfb~\x13\x160X\x8b}g\ +\x9e\xf9/\x92\xfc\xcf\xfb>\xcf\xfb\xbe\xdf\x97]\x00v\ +\xfd\x98 \xf1\x0b\x82\x14\x02\x03\xc1u\x82\x03\xcf\xfd\xfe\ +\x8fH\xbc\x9b \xe1W\xaf\xef\xb5*\x8c\xd6e\xdb\x02\ +`\x19\x1e[\x09'\xf13\xfa\x19\x81\x22\xfc\xdc>v\ +H~\x8a\xa0\xb9\xb6Y\x1c2\xcf\xadB9\xfe\x1dD\ +\xf6Q\xd8\xc7\xe6\xe8\x87\x86={\xf6XSR\xae,\ +\xca::\x10N\xe2\xe5I\xc3\xc41\x04\xb7>I\xf9\ +,`\x9b]YSM\x03M\xb6\x114\xeb\xfb 1\ +y`\x19\x9d\xc5\xbb\xef\xbe?\xc5\xab\xbe\x83\xf1\x89)\ +LO\xcf\xae\x92\xef\xd7\xbct\x02\x11\x9f\x0f\xbe\x1d\xe3\ +\xb2\x04CO\xb43@\x8b{\x06\xcd=.4\xeb\xec\ +\xa8W\xf6 \x87S\x852^5C\xbc\xb0\xf4\x90\x81\ +\xc1`\x5c&\xbfK|\xe1\x04H\x1c$8A\xfd\xdd\ +\xeas'\xf1\xb9'\x04H\x87\x97\xc1\xd7\xbb \x22U\ +7\xdc7\xa2\xb8N\x88,V>\xccV\xdb:q\x04\ +,\x16k,\xfc\xce\xe7'\x10\x916\x93\x95?F}\ +\xa5\xfe\x12\xc4o\xf4Y1\xb6\x02~\xef Z{\x9c\ +\xe0?0\xa1L(CF\x0e\x1b\xb2\x0e\xf9&\xd2\xf9\ +\xc5e\xcc-,!4\xbf\x88\xbd{\xf7Z\xc9;~\ +\xbam\x02$~C\x90F=5\x13iu\xb3\x80\xd2\ +?\x0f\xcb\xc4\xe2\x9aP\xa1Z\xb4l\xf1Y\xa0\xb6\xa0\ +\xa6]\x8d/\xb2sq\xb7\x9e\xff\x0c1%\x9d\x09\xcd\ +cbj\x06\x83C\x81'\xe4\xdd\xbc-\xd3\xb0;\x92\ +\x033&\xd4S\xb5\xd3\xfbXO\x88\xc5\x03!\x88,\ +CP\xbaF\xd0\xed\x09B\xe5\x9bB\x9bs\xfc\xa9\xcf\ +Z\x1b\xee*t\xc8\xbc\xc9E\x09\xa7l\x93\xcf\x9b\x88\ +'\xa7\x11\x18\x1d\xc3\x80o\x08\xa2\xd6\xd6%\xc2Q\xdb\ +(\x12\x87\xc6\x1f\xaf\x82/b\x94M\x89$\x90\x22\xea\ +R-\x9aB\xab\xe8\x18y\x04\xa1\xc5\xcf\x10St\xf6\ +\x0d\xa3\xd3\xe1\x87\xd4<\x80\x16\xbd\x03\x0d]\x06\x14\xd5\ +\x0a\x90\x91\x95\x0d/y\xf1\xc6\xaa\xa9\xd4\xb3s\x0bL\ +\xc5\x94\xd8\xdd\xef\x85\xc9b\x05\xb7\xbc\x12\xa5\xe5\x95K\ +\x13\xf3\xcb\xab#\x0f\x017\xd9\x11\xe6\xd9\x15\x84\x97\x15\ +\x13\x06\xcb<\xd0h\xf2\xa3\xdd\xee_'\x96;\x86 \ +\xb3x\xd7}\xe6\x08\xa4\xf8<3\x1b*\x8d6\xaa\xdc\ +S3!\x8c\x8e\x8d3\x15\xd3&\xe47\x09\xf1\xc1\xc5\ +\x8fQs\xaf\x01\xbee`\xfc\x11\xa0#\x13#\xf2\xce\ +\xa1\xbe]\xb9\xb8Q\x01\x83\x81ttM\xa7\x1e\x0ag\ +\x80\xa9\xb8\xdd\xea\x83\xd8\xe8B\x93\xca\xcc\xf8|\xe5\xcb\ +,\x88\xda$Q\x89\xa7g\xe7\x18\x1b\x86\x86G`w\ +8I\x82:$|\xf8!\xae\xb3\x0b\xe1\x99\x5c\x80o\ +\x09\xd0\x90\xde\xe1\x0f,\x81\xab\x1f\xc4}\xef\x04\xdd\x07\ +\x1da\xeb\xff\x9f\xc0\x1d\xb9\x16\x1d\xf6!H\xcc\xfdO\ +}\xee\xd4\x22\x9dU\x84\xaa\x9a\xbaM>G\xe4\x8e\xf8\ +<<\x12\x84\xd3\xdd\x0f\xbd\xc1\x88\xc2\xe2b\x9c~/\ +\x1e=\x03\x01\xf4/\x02\x83\x84\xbc\xc5\xff-\xee:C\ +(Q\x91\xf7\xf6\x05\xf1N\xdc\xbf}\x843i\xe3 \ +\x18\xf43\xab\xe0\xc9Th58\xd1\xd8\xdd\x0b\x9eX\ +\x89\xac\x5c\xf63>G\xaa\x9e\x9c\x9ee\xe4\xee\xf7\x0e\ +\xa2\xd7lAC\x03\x1f'b\xe3 \xe9\xd6\xc0E\xcf\ +\x01R\x90$\xb8\x86\xb2\x9e\x00n\xb4\xdbP\xd1\x1bD\ +\x85\xce\x8bJ~\x0bm\xbe\x9b['\xd1\xa0\x99\xf8\x16\ +e\x22\x05\xee)\xf4(\x13\xc8\x90x5\x0b\x1a\xad>\ +\xaa\xdcc\x13\x93\xf0\x0d\x0d\xc3f\xef\x83\xb4]\x8e\xc4\ +K\x97\x90\xc3\xca\xc3\xd4c\xc0NzI1N\xfa\x89\ +\x94\x7f[;\x84|\x85\x13%j\x1fJ\xd5\x03\xe8\xf2\ +0\xa3(\x22\xf8\xf93\x09t\x8f.\xa1\xa8\xbe\x15\xa5\ +|\x09\xb2J*\xf0\xcf\xe3qQ\xe5\xf6\x07F\xd1\xe7\ +\xf2@\xab7 \xfdj\x06\x92\xbfH\x83\xcd7\x02'\ +\xa9\xda@\x1aL\xe0{\x88R\x9d\x1fE\xdd\xfd\x0cq\ +A\x97\x1b\xc5\xdd\x1e\x88\x9cA\xfc\xf9\xcd\xb7]\x84\xeb\ +l\xb4C\xd0(\xf7N#\xa7\xfc\x1e\xb2K\xab\xf1Q\ +\xeaWH\xfeo\xea\xfaXQ\xb9G\x82\xe3\xf0\x0c\xf8\ +`4\x99Q\xc9\xab\xc2\xfbg\xcfA\xfe@\x03?\xe9\ +n\xb2\x8d\x19\xb9oi\x06\x19\xd2\x9b*/r\xe5\x0e\ +\xe4u\xf6\xa1\xf0\xbe\x1b\x1c\x95\x1b\xf9\x9c\xca)\xc2S\ +\xb8\xdd)\xdc+v\x04\x90Q\xc8\xc5\x95ky8\x11\ +\x9f\x80\x9b\xb7n3c\x15\x91\xdbjs@\x22m\xc7\ +\x85\x84\x0fPt\xbb\x0c\xf3+\x80\x9f4X\xf7$ \ +\x1c|\x84J\xd3\x188\xfaa\x86\x9cV\xfdU\xb3\x1e\ +\xac\x0e;\xb8:\x1f\xd9!\x1ez/\xe0\x13\xbc\xba]\ +\x02&\xbe\xc1\x83\x94o\xd88\x9f\x9c\x8a\x03\x7f=\x04\ +c\xaf\x99\xe9n*\xb7F\xd7\x83\xa4\xcb\xc9H\xff:\ +\x8b\x8c\xd5\xc7\xd1\xd83\xf881\x09\x86^\x13\x1a\x9b\ +\x04\xf8\xdd\x1b\xfbQO\xd4\xf1\x90\x99\xee\x9a\x00\xaa\xad\ +\x93`+]\x0c9\xf5\xbc\xf0\xbeg\xbd\xea\xcc\x16=\ +JU\x1e\x08m\x01\x94\xd4\xf1C\xe1eS@\xf0\xca\ +\xf7%`+nj\xc7\xa9\x84D\xc4\x1c9\x8a\xdc|\ +6ZZ\xc58\x14\x13\x83/95\xc8\x14j\x98\xe6\ +\xa2\xd5\xd2'\xf5\x9azL\x13\xa1Id\xb7\x99\x90\xdb\ +nF\xb9\xda\x8d\x06\xa5v9,9=\xf9N\x13\xec\ +\xd9r\xd4G\x0d;\xabF\x88c\xff9\x8f\xdf\xee\xfb\ +=\x1a\xf9\x02\x9c\xbf\x90\x80\x93\xf1\x17p\xa3\xad\x07\x19\ +\xc4OJ\x14\xe9n\xbaX\xa8\xef,\xfa\x94\x98P(\ +\xb7@\xe9\x0e<\xf9W\xec)*w-\xc1g\x04\xfb\ +\xb6\xb9\xe4D\x8d\xbe\xcc\xb2Z\xfc\xe3\xe4\x19\x1c<\xf4\ +7\xb0r\xf3\xb0\xef\xc0\x1fP \xd1!\x89'e*\ +\xa6K\x85>\xbf!\xd5F\xe4.\x90[!\xb0\x0c\xae\ +\xe5\xdc\xe2\xd2\x11\x13\x13\xe4\x87o<\xaf<\xe7\x96\x15\ +5\x9ciE\xe5\xf8\xfb\xb1X\x1c?\x19\x877\xf6\xef\ +\xc7\x8d:\x11\x92\xab\xa4\x0c!\xedp\xea5U!\x8b\ +4[\xc9\x037*4n\xd4I:\x17\xc3rs\x08\ +\x8em\x95\xfb\x87$\xe0Jesp\xe4\xf8)\x1c>\ +|\x98\x8cc.2\x05*\x5c\x22\xd5\xd3]~M\xdc\ +\x0b6\xe9tv\xa7\x1dw\x8c\xe4\x88\xb6\xf9\x9e\x84\xb7\ +\x1a\x95\xfb\x22\xbdI\xfd\x80\x0bm\xf4\x042JxL\ +\x0f\x9cKI\xc3\xb5\xa6.|\xc2me6Y\xf1\x83\ +\x01\x5c\x97\x9a\xc1Q{ \xf3\x04\xd7\xce%&\x056\ +\xc8\xfd\xc7\x9d\xc8\x1d\xd5\x82\xdc\x1a\x01\xce^NE\x81\ +X\x85x\xf6]\x5c\xa9U\x90\xaa\xfb\xc0\x96\xdbP\xad\ +u\xe3\xaeTA/\x10\xca\x0dr\xbf\xba\xd3j\xa3\x05\ +\xb7\xa2Q\xf8\x1d\xafC\x8dO\xb9-\x88\xcb\xe6\xe1\x9a\ +H\x8f\xaa\x1e/\x9a5\xe6\xc7\x7fz\xf3-Wx\xac\ +\xa8\xdc\xaf\xbd\xac\xdc\xd1\xe2\x08\xdd\x05\x5cu\x1f\xde\xcb\ +\xafE\xb9v\x002g`\xf5\xc2\xa7\x97\xa9\xdc\xf7\x08\ +\xd2\xa9\xdc;\xf8\x03\xf3\xc2\xf1\x13\x82\xca\x1c\xee\x9dP\ +\x0b9\x94\xb8\x0d\xc2\xc8\x16\xa3\x17\x87\xc3/\x22\xf7\x0e\ +\xff\xdam\x8a\xdda\x99\xd5\x1b\xb6\xd8k\xbb^2\xbe\ +/\x89\xff\x01f\xb9_\xfc\x11\x80=\xcf\x00\x00\x00\x00\ +IEND\xaeB`\x82\ +\x00\x00\x05+\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x00\x04gAMA\x00\x00\xd6\xd8\xd4OX2\ +\x00\x00\x00\x19tEXtSoftware\ +\x00Adobe ImageRead\ +yq\xc9e<\x00\x00\x04\xbdIDATX\xc3\xed\ +WkL\x93W\x18>#q\xc92\xe9\x16\x97\xa8T\ +e8\x9d\x02\x15\xf6\x03\x872\x93\x01f,[p\xc4\ +0\xff`\xa2.\x1a:\x1dN\x03\xba1\x89[\xb3\x80\ +\xd9\x0c\x84\x02\x19X\x1c\x14\x8b\x85\xb2\x82\x95^\xe4f\ +\x0b\x8e1\xf8\xc3F\xcb-\x81\x15\xdc\xa8\xc2\x1c\x1b\xb7\ +ji\x91\xf2\xee\xbc\x87\xaf\x0c\xdc\xb8\x0da\xd9\xb2\x93\ +<\xed\x97\xf3}\xfd\xde\xe7\xbc\xef\xf3^J\x00\x80\xfc\ +\x93 \xff\x0a\x02t\x09(D\x14\xd9\x14q\x14\x01+\ +F\x80\xae\xddd\xdd\xc6f\x22L\xf8\x95\xc4\x8bG\xc8\ +\xa1\xd3\xf7\xc8\x8e\x97;82a+A \x85\x9c\xbe\ +0H.\xdd\x80\x19@2\xabyM\xf4\xbe\xfbr\x13\ +hd\x06\x91\x04^\xa3Q\xf4\x06\xee\x85G\xf5\xd0\xbd\ +\x83\xcbM \x9b\x9d\xf6@t/\xbd\x162= \x89\ +?H\xa5,\x1b\x01\x8c1y\xc1\xbb\x9d\x88K\xc6\xd7\ +\xc6&\x0e\xa0\x10\xb9\xfdB\xfe\xc5+6F\x8c\x12\x5c\ +N\x02\x93\xa7\xa7\xa7\x0d\xcc\xd39\xb9\x98c6\x14\x0a\ +\xd2\xe4\xa3+A \x8c)\x9e*\xdf7G\xeb\xdc{\ +\xb5\xcc\x89\x9e@D\x96T\x83+,\x0b6FH\x08\ +\x13\xf5d*{.T\x03\x01\xf8\x037\xbf\xc0\x0e4\ +*T\xdfb\x88R\xd5,X\x03t\x1d\x16\x08\x04z\ +EU\xf5\xc8\xa0mt\xc2\xd4s\xf7!\xbesQ\x95\ +\x90\xae\x8f\xd0\x13\xcf\xe5\x94\x83\x87\xb4\x02\x9e\xcc.\x03\ +\xd4\x06\xdd\xaf\x99\xcb\xb0\xaf\xaf\xaf>\xbf\xd2`\xb5\xdb\ +\xed\x80\xf8y\xe4>\xc4^\xab\xb4\xb9\x88/\x86\x80'\ +\xd3\xc0g\xf9\x8e\x19\xf5`\xd7^3\xbav\xdas\xee\ +h\xd8\xc7\xc7G\x9f\xab\xab\xb0\x0e\x0f\x0d\xc1\x10\x87\xb2\ +\xf6.\xe7\x967\xf7wsa\xd8\xbd\xe8^\x80/f\ +\x9a\xa0\x86\xdf\xa96B\xf7\xf0\x03\xd8\x19\x9f\xd4\xcf\xa5\ +\xe7\x1a\x8a\x98-~\xfem\x97T\x1ak__\x1f\xb8\ +\xd0\xd1s\x07br\x15VN\xc4\x87\x97\xd4\x8c0\x14\ +\xe9\x15\xb7\x1e8\x1c\x0e@\xa4\xd6\x191\x9e\x85\x9b\x05\ +~m\xa9%\x1a[\x97\xd9\x0c\xe6.\x0a\xf3$\x14\xdf\ +6\x8e{\xbd\x1e\xd1\xcdB\xc8\x09o\xa9\x04<\xd1\xbd\ +V\xab\x15\x10w\x7f\x1b\x84\xf3\x92\x5c\xbbR\xa9\x84\xfa\ +\xfaz0\x99L\x0cu\xdf5\xc1Q\xb1d\x18\xc9Q\ +D>\xb6v\xcc\xb4@O\x93_~\xd3\xd6\xdf\xdf\x0f\ +2\x99\x0cD\x22\x11\xa8T*\x90J\xa5\xa0\xd1h \ +K[9\xbe\xe9\x95\xe0\x1f\xb8S\xafy,\xf3\x00\x97\ +\x8e\x22\x9e\xc7\x86\xe6S)\x19\xf6\x82\x82\x02\xe6\xe2\xa0\ +\xa0 \xe0\xf1x`\xb1X@[^\x01\xfb\xcf&\x0c\ +-\xa6S\xceg\x94\xcf\x09L\x83\xe2[{\xe6\xc2`\ +\x9a\xb2\x14\x14\x0a\x05\x88\xc5b\xc8\xcc\xcc\x84\xa2\xa2\x22\ +P\xab\xd5\xd0\xd9\xd9\xc9`\xec\xfe\xc9\xb9\xc9\xdb\xa7u\ +.\xb7\xcfK\x80\xae\xb7\xd8)p\x0e\xc0j\x97\xacx\ +\x88\xca\x7f\x82\xe2)\x89\x0e>\x97+![\x96\x0f\x07\ +c\xe3G\x84\x1f&\xd8\x92rd\x8eo\x1a\xbf\x07\xa3\ +\xd1\x08-\xad-\xf0\xcb\xc0 \x1c8\xf1\xbe\x05\xb3b\ +\xc1\x04\x5ci\x84\x85\x85\x84F\xdc&\xe72\xac,\xcf\ +3\xb5\x13\xec;\xe3\xba\xd33\xaf\x82\xe5\xfez\x89\x06\ +\x9e\xde\xfcb\x1b\xf7<\x92\x8d{f\xabO[\xca5\ +\xedXCC=444\x80\xa5\xb7\x172\x14\xc5\xc3\ +\xf3\xe9\xc0e<\x92\xe5(\x9e6]\xe5\x9c*2x\ +}\xf4\x83.Zl\x121\x0c\x1b%\xeaq\xf7/\xcb\ +'\xef\x05\x87_\xfe\xd3\xe4D\x0bLh\xf4\xc9>u\ +\x95\x1e\x0c\x06\x03\xb4\xb7\xb7\xc3\xd7\xc6\x961\xae\x81\x09\ +f\xf16m8h\xed\xf7\x08\x1e*>\ +]\xe5X\xaa\xf1GZ\xf5\xb6Y\x0b\x11\x1d\xb3C\xc9\ +\x918\x099\xf9\xa9\x96!\xfa\x5c\x1a\x0d\xcf\xb3\xff\xff\ +7\xfcO\x13\xf8\x1d\xe7\x87\x19\xb9D\xc3\x01\xcf\x00\x00\ +\x00\x00IEND\xaeB`\x82\ +\x00\x00\x05:\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x00\x04gAMA\x00\x00\xd6\xd8\xd4OX2\ +\x00\x00\x00\x19tEXtSoftware\ +\x00Adobe ImageRead\ +yq\xc9e<\x00\x00\x04\xccIDATX\xc3\xb5\ +\x97]L[e\x1c\xc6wo\xbc\xd9\xe5\x12I q\ +\xd7&\xe3N\x13\xb8p\xd1\x85D\xbdP\xe3\x10\x18\xe5\ ++.&J\x04'\x86\xaa\x8b\x99\xe0\xd0\xa2l\x19\x86\ +9\x17\xdc\x1a\x16\x98\x80@l\xa6C\xca +\x83\x1e\ +(\xcc\xda\xd1\x96\xd2\xd2J{\xfa\x01\xa5\xd0\xef\x16\x1e\ +\xdf\xff\xdb\x1d\xc7\xcc\x04*\x87\x93<9o!\x9c\xe7\ +\xf7<\xefG\x0f\x87\x00\x1c\xcaF\xcf\xbd\xfa\xe9\xbbL\ +Z&a\x0fj`\xca\xd9\xe9y\xd9\x9a?]P\xf2\ +\xa5\xc1\xe9\x8f\xa7W\xc3@0\x02\x84\xa2\x19\xad\xc72\ +\x8a'\x81X\x22s\xbfyk\xdaK\x10r\x02\x1c{\ +\xe7\xac\xda\x1c\xd8\xc8\x98\x12@\x84\x99\x85\xe3\x19\x911\ +)\x1aKa%\x94D8\x9aBs\x87\xc6\xbe\x13\xc4\ +\xff\x02\x90\x12\x93y$\xf1\xc8X\x92\xcf\x1f\x84]\x8c\ +\xc2\xe5\x09\x22\x12K\xa3\xf4\xc3\xefM4uY\x01\xb0\ +\xeb\xd86\xd5\x90\x9e:\xfc\xcc\xb9\xe7_.\x11?V\ +\x9eEEU\x0d*\x99\xde\xaf\xad\xc3\x9d\xb1\x89\xc7\x00\ +\xac\xb6%\xfc\xb9\xe8\x87k\x15X\xf6\x04\x10\x08\xc6\xd2\ +\xaf\x9c\xbep\x9fA\x1c\xd9\x15\x80]\x87\x99\x1a\x8a\x8a\ +\x8a\xcc\x92Z[[\xdd\xa4\xafU\xad\xfe\xafT\xdf\xa6\ +\x06\x06\x06195\x85\xd9\xb99\xe8&&PPP\ +\x80!\xcdo|\xdeI\xa6\xf9\x05\xcc\x98\x5c\x1c\xc0\xe1\ +OA\xf4\x85\xf0C\xaf\xce\xcd\x00j\xf6\x02PCf\ +\xd8\xe5\x8a\xc7\xe3\xf0z\xbdH\xa7\xd3\x98\x9c\x9cDe\ +e5fg\x8d\xbc\x81\x07f\x1bt\xd3\x16\x0e@2\ +-x\xf0\xdd\x8dQ\x8f\xac\x00\xe1p\x18F\xa3\x91\x8f\ +S\xa9\x14~\xea\xedE\xe3'\x9fa\x86A8\x96\xdc\ +Pwu\xe3LC#\xce5\x9d\xc7\xed\x91q\x5c\xbc\ +>,/\xc0\xc6\xc6\x06\xf4z\xfdc@}}\xfdP\ +2\x88\xd0F\x1cf\x9b\x0b\x82\xc1\x88\xa9\x19\x13\xac\x0e\ +\x11\x97\xbadn\x80\x00\xa6\xd8:\xd8~E\x22\x11\x94\ ++*0\xae\x13@\xe7\x04mW\xda\xaa4\xbe|S\ +\xe65@f:\x9d\x0e\xc3\xc3\xc3\xe8e\xf5\xf7\xf7\xf7\ +C\xab\xd5\xa2\xaa\xba\x06cw\xf5\x90\x0e*w\x90\xed\ +\x04\xb6\x0e\xda\xbbe\x06\xa0y\xb7\xdb\xed\x18\x1a\x1aB\ +gg'zzz8PIi\x19ni\xf5\x10\xd7\ +\x00o\x08\xb0\xf9\x00g\x00\xb8\xd0%3\xc0\xd6\xd6\x16\ +\xdf\x09\x81@\x00\xa2(\xc2\xef\xf7cmm\x0d\xa7\x14\ +\x95\xd0\xfc\xae\xe7\xa9\xc9|\xc1\x0b\x98=@\x9b\xdc\x00\ +\xdbA677\xf9v\xa4V\x14\x15\xd5\xe8\xfbU\xe0\ +\xa9\x1d\x81G\x00\xe7;\x0f\x00\x80\xcc%\x80$3O\ +$\x12(+\xaf\xe2\x00\x7f\xb8\x00\x8b\x98\x01\xa06Z\ +\xd5\x070\x05\xff\x98'\x93<=MI\xc9\xa9J\x0e\ +\xa0\xb7\xb3\x03\x89=\xc5\xf8\x170\xb1\x00|q\xf5\x00\ +\x00\xa4\xea\xc9\x98\x14\x8b\xc5P\xa6\xa8\x82zH\xc0\x98\ +\x19\xb8k\x05\xe6\x9c\x99\xfb\xe7Wd\x04\x90\xd2Sj\ +\x02\x88F\xa3\xdc<\x14\x0a\xa1\xb8\xb4\x02\xd7\x06\x05\xdc\ +f\x87\xe4\xa0\x01\x1cd\xc4\x04(;d\x06H=\x9c\ +s\x12\x99\xd3\xb9@ \xc5eU\xb8\xd8-\xa0\x7f:\ +c\xae}\x90i\xe0\xa3v\x99\x00\xfe]=\xa5&\xad\ +\xae\xaer\x88\xb7J*p\xb9W\xc0=\x1b\xb8~\x9e\ +\x01\xee\xcc\x03g.\xed\x13@\xaa\x9dD\x8b\x8e\x92\xd3\ +qL\xdf\x01+++X__\xe7\x10'Y\x03\xdf\ +t\x09PO\x00\xbf\xcce\x1a\xb82\x064\xec\xa7\x01\ +\xc9X\xda\xebdNi)9\x1dD\x04@\xf5\xd3\xcf\ +\xde|[\x81\x96\xeb\x02O~u\x1c\xb8q\x0f\xf8q\ +,\x9e~\xbdNm\xa67\xaa\xac\x00\x9ed,m7\ +2%\x00\xd1#\xf2\xe4\x12\xcc\x1b'\x15h\xef\x11\xa0\ +\xbcf[\x7fO5\xe2\xc9xG\x00\x95\ +J\xc5\x01\xa4\x15.\xcd7\x19RR:\xf7)\xb5\xc3\ +\xe1\xe0\x22\xe3\xc5\xc5E\x0e\xf5\xe2\xf1\x97\x5c\xf4\x1e\xb9\ +\x93\xe9\xae\x00---n\xe9`\xa1\xd4\xd2\x97\x0d\x8d\ +\x97\x97\x97\xe1\xf3\xf9`\xb3\xd9\xf8}ii\x89C\x10\ +\x00\x8d\x0b\x0b\x0b\xcd\xb2\x00\xd0\xa2\x92R\x93\x11\x8d\xe9\ +N\xdfxT;5`\xb5Zy\xf5\xd4\x0a\xfd\xce`\ +0$\xf2\xf2\xf2\xee\xb3g\x1c\xd9\x17@SS\x93[\ +\x9agJO\x22\x13\xaa\x9a\xc6\x16\x8b\x997@\x9fG\ +GG#mmm\xde\xfc\xfc|\x13\xfb\xdbA\xa6\xb2\ +\xbd\x9a\xff'@ss3\x9f\x02JG\x10T?U\ +???\xcf\xeb\xd6h4\x91\xba\xba:\xe7\xc3\xb4]\ +L\x1f0\x1d\xcd\xc6xG\x00\xa5R\xe9v:\x9d\xbc\ +bJJo>\x94\xb4\xbe\xbe\xde\x99\x93\x93#\x99\x16\ +gSuV\x00\x8d\x8d\x8dn\x8b\xc5\x82\x81\x81\x81H\ +mm\xad377WV\xd3\xdd\x00\xf8\x7fFL\xc2\ +A\x99n\xd7\xdfC9V\x18\x85p\xc8\x04\x00\x00\x00\ +\x00IEND\xaeB`\x82\ +\x00\x00\x03T\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x00\x04gAMA\x00\x00\xd6\xd8\xd4OX2\ +\x00\x00\x00\x19tEXtSoftware\ +\x00Adobe ImageRead\ +yq\xc9e<\x00\x00\x02\xe6IDATX\xc3\xd5\ +\x97\xcdN\x13a\x14\x86\xeb5\x94\x95{q\xe1\xd2\xc4\ +\xe0\x05\xb8\xe2\x0e\x5c\xb8\xf4\x02\x5c\xb10\xea\x05\x18\x96\ +&bX\xb8\xb0\x91X \xd1\x9d\xbf\x89\xa4\x14\xb1R\ +\xa4HE\x94\xfe\xd0\x02C\xff\xa6\x9d\x19\xa6e\x80\xe3\ +y{\xfa\x85QJ\x82\xc9!\x86I\xde\x9c3\xa7\xf3\ +\xcd\xfb\x9c\xf3M\x9bN\x84\x88\x22\xffS\x91s\x01\xc0\ +\xc7\xd5\x90n\xff\xa5\xfb\xac\xc7==d\x0d\xa9\x02\xf0\ +12<<\xbcj4::\xba\x19V<\x1e\xaf&\ +\x93\xc9V:\x9dv\x13\x89Dk`` \xcdkn\ +h\x02\xa48\xd2\xe1\xe1q\x99\xba\xef\xb7\xc9\xb2,\xda\ +\xdf\xdf'\x86\xf1x\xcd\x18\xeb\x8a\x1a@?\xf3\xb0\x1c\ +\xc7\xa5Lf\xb9\x0b\x14\x04\x01\xc5b\xb1:\xaf{p\ +\x1a\x88S\x01\x1c\x1c\x10ww\xb2l\xdb\xa1\xf9\xf9\xcf\ +d\x0e\xd7u\xe9\xf9\xc4D\x17B\x05\x00&{\xc1\xc9\ +\xaa7\x1cJ\xce\xcdS\xf8p]\x0f\x8b\x17T\x00\x82\ +\x10@gO\x14\xce\xed\xa6G\x1fgf\xe9\xf5\x9b\xb7\ +\x14\x9f\x9c\xa4\xa9\xa9iz\xf7\xfe\x03E\xa3\xd1e^\ +\x7fA\x05\xc0\xef\x10\xed\xb6%\x86\x85\x9a\xe3\x05\x94]\ +\xcd\xd1\xe4\xf4+z2\xfe\x94\x9e\xc5^\xd0Lb\x0e\ +\x8b\x17U\x00\xda\x81\x18\xf5\x13 <\xff\x90j\xcd6\ +\x157\xab\x94/nS\x89c\x8d\xb7\x85\xd7~Q\x01\ +\xf0y\xcc\xcd]\x1e\xb5\xc7{\xdb\xee\x9f;\xbe\xe4\x88\ +]\xb8\xbd\xee\xe2\x94\xca3\xe0u\xe4\xc6uWb\xd8\ +\x109\xea\xe63D\xd4\x01\xa7\x06\xe0\xf4:\xad9\x22\ +\x98\x98hr\x80\x98kPS\x9d\x00\x00*-\xb91\ +\xe2NS\x8c\x10\x0d\x04\xf2m\xfb(\xb6|E\x00\x9b\ +;\xdbj\xfci\x8e\xfb\ +\xc5S(\xf0C\xb8fI\xf7k\xf9R\x87\xd7\xbeT\ +\x01\xc8U\x8f\xbaN\xadK\x0e\x90\xaf\x85\xde\xb7\xc2\x92\ +=O\xa6\xb3\xde\xa3\xb1q\xeb\xda\xd0\xf5\x15\x98\xb3n\ +\xa9\x00l4\xa4k\x18\xff\xe0\x11\x7fZ\x17S\xd4\x13\ +\x0bYo\xe4\xee\xbd\xe2\xa5\xc1\xcbK|m\x8cu\x87\ +5\xa8\xfa\xb7\x1c\xdde\xd9<\x8f\x1f\x19\xfe\x9e\xcf\x1e\ +7\xbd\xc9\xbax&oF\x00h\xf2\xff\x81\x99\x94\x9e\ +\xe9?\xbf\x19\x01B\xd3\xf4\xfc\xbd\x9c\x9e\xa5~\x03Q\ +l%\xa1\x92\x95\x0aw\x00\x00\x00\x00IEND\xae\ +B`\x82\ +\x00\x00\x06m\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x064IDATx^\xad\x97[lT\xc7\ +\x1d\xc6\x7fs\xce\xd9\x8b\xbd\xf6\xfa\x16\xa0\xbe\x00\x0e\xb2\ +ic$BJ!\x22\xa1-\x95b\xa5/\xeeKh\ ++\x95\xa6U\xa5\xc6`U\xaa\xda\xb4\xaa\xfaV\x09U\ +\xca\x03\x94'\xda\x07\x84\x14)\xad\xc4\x8b\xa5R\x83y\ +\x08\xc5\x189\x0ei\xd3\x84\x9a\x9bcj\xec\xb2\x04\x1b\ +;\xbb\xf6z\x8f\xbd\xbb\xde\xb3g\xa6\xc3h\x85\xe5r\ +l\x88\xc9'}\xfa\x9f\x9d\x87\xfd~\xf3\x9f\x99s\x11\ +J)\x82$\x84x\x05x\x9e\xc7kH)\xf5w\xd6\ +(' \xb8C\xbb\x01h\x97R\xbe\xc6cdY\xd6\ +\x07\x1a\xf6\xbb@\xb7\x069\xff\x14\x00&\xfc\xb7\xed\xf5\ +\xe2`]DDn\xce\x89\x8a+W\xaeP]S\x8d\ +@\x00\xa0P\x08e(A)f\xd3i^\xa9\x17/\ +\xbc\xb4Nl;\xf1\x1f\xb9G\x83|[CL;\x8f\x85D\x952\xe2\xb6\xc4\ +\xb6\x04!!p>Sl\x8c;\x80D*\x04\xf0\x9c\ +\x10\x02\xe0\xcb@\x05P\x0f4`\xc4Hi\x9f$\x02\ +\x01N\x9c8!\x00\x81\x05\xd2\x87\x96\x96g\x09em\ +\x14\xe5(\xa5\xb4A\x08XW\x19%\xe2\xd8DB\x16\ +\xc3\x13s\x5c\xbc=A\xf7X\x8e\x5c$\xbe\xa9\xbd}\ +\xf7\xef-\xcbZ\xdc\xb1cGYUU\x95\xd3\xd8\xd8\ +\x18~\xe0\x86\x86\x86\xd0\xa5K\x97\xdc\xae\xae\xae\x08\xf0\ +\xd6\xaa\x1d\x00\x13DU,\xc2s\xd51\xf2\x9eO\xa1\ +(\x91Ja\x09A\xd8\xb1\x88\x86l\xe6r\x05\x12\xa2\ +\x8e?\x9f\xff+\x0dM\x1b\x01\x22\xc0f\x96\x84\xef\xfb\ +x\x9eGuu\xb5\x9ePK\xf4\xea\xd5\xab\x87\x84\x10\ +(\xa5\xdeZ\x11\xc0\xb2A\x00\xb6-\x90\xda\xb6\x148\ +\x08\xa4\x12X\xc2\x8c\x1b\x8fL\xb9\xec{\xf5;\xd47\ +6\x11|/\xc1\x84g2\x19\xca\xcb\xcb\xcdf>v\ +\xec\xd8&\xbd\x7f\x0e.A,\x01\xd0\xd9\xd9\xa9\x0e\x1d\ +:\xa4l!\x08Y\x10\xb6-\x1c\xc7\xc6BP\xb4\xcd\ +\x1a\x1b\x00\xc7\xb2\x888\x96\xae\x02`Yx\x10\xc0\xdc\ +\xdc\x1c555\x06 \x1a\x8dr\xe4\xc8\x91\xcd\xc0\x03\ +\x88\x1b\x1a\xa2\xc7b\xb9\xb0mt0f\x8d\xcb#6\ +\xb1\xa8\xa3\xc7,2\x8b\x1e\x93\x99\x1cc\xa9y\xee\xcc\ +.\xe8\xdfEr\xf9<\xab\xc8,A6\x9b5\xa7f\ +\xe9\xffm\x0e\x1c8\xb0\x1e\xe8\x00X\x06\xa0\xb4t\x16\ +\x8e\x0d\xe1\x90\xc0S\x8a\xb1\xa4\xcb\x8d\x8c\x83\xd3\xb2\x97\ +\xa6}\xaf\xb3\xb5\xe3\x17\xac\xdb\xfb:\x0d/\xb4s\xfb\ +\xce$\xfd\xfd\xfd$\x93I\x94R\xe6\xfa\xf8\xf1\xe3\xe8\ +\xba\xac3\xe7\xce\x9d\xe3\xe8\xd1\xa3\x1c>|\x98\xde\xde\ +^\x12\x89\x84\x04,\xa1\x15\xdc\x01\xed\xff\xce\xe6\xf8\xe7\ +\x94Ok\xc7\xcf\xf8\xe6/\xdf&\xf6\xf57\x99|\xa6\ +\x83k\xfe.\xae\xf1-dk\x17\xad{\x7fN^V\ +s\xfaog\xd1wM\xee\xdc\x9d\xe2\x1b\xafvr\xfd\ +\xfau\x03\xa0gk\xd6?\x16\x8b\x99\xebx<\x8e\xe3\ +8%8\x04\xc0#\x00\x96%\x98\xcaA:\xde\xca\xfe\ +\xdf\xbdM\xd5\xae\xd7(\x84b\x08\xdbBY\x82lA\ +r\x7ff\x91O\xeef\x18\xb8\xear\xfa\x1fad\xd5\ +^\xae\x8f\xdcg2\xd7\xc6\x85\x0f\xee\x9b\x00\xed\x87\xa1\ +\xcd\xcd\xcd\xb4\xb5\xb5\x19755\xa1\xa1\x14 \x83\x1f\ +F\x16\xdcq\x15\xdf\xff\xe9o\xa8l\xd8H\xe2\xec;\ +L\x8f^\xc3\x89\x94\xb1\xb5y\x07\x9b[\xb6\xf3Iy\ +%c\x09\x97\xcff\xf2\xdc\x9d\xce2\xa1\xed\x88\x0dL\ +'\xe7\xd8\xb7+\xca\xfa%\x003{=k\xea\xea\xea\ +\x00\xccu*\x952\x00J+\x10\xa0\xb9Zp\xe1\x9d\ +c(,\xca\xe6\xc6\xd9\x10\x8fR\x94\x92{\xc3}$\ +e\x05\xdb\xda\x7fLM\xdb\xcb|<\x9cf\xd2_\xc0\ +\xcdx,\xcck/x \x00\xb5t:B\xa1\x90\x09\ +-\xdd\xea\x1f\x8e\x01*\xf8>`\xc1\xc6\xb8\xa0P\x1c\ +#\x1c\x8bS\xb7\xa5\x96\x92xv}\x05\xe9\xac\xc7h\ +\xff\x9f\x98\xae\xbcL\xcb\xf6\x83\xb8\x0ba\xbc\x82\xa4X\ +\x94x\xda!\xc7B-\xaa\x80\xe3i\xa0\x96\xd5\x15\x01\ +\x00\xd6\xc7C\x84\xca#\xfc\xbfjc!\x9e\xa9\x0cs\ +\xe1\xdf\x83\xec\xd9\xf9\x13\xca\xa3\x0e\xb92G\x03(\x03\ +ak\x00\x16K!\xa5\x1c%0*\x15\xa4\x5c\x05@\ +X\xa5*\xcc\xf5#\xfapl\x86\xf1Y\x8f\xef\xfd\xfa\ +\x8f\xdc\xca\xd4\xe0D\x5c\xa2\x11\x1b\xcf\x93\x14=\x07\xd3\ +\x01\xa5\x90R\xf2PjY\x01V\x05\x10\x08L\x0d\x04\ +\x18\x9dv\xf9\xd5_\x86\x18\xbd\xb7\x80=\x93g\xd3\xba\ +2\xf2y_\xbbh\xea\xce\xaf\xd4p\xf9\xdd\xe0%\x00\ +\x9ex\x09L\xb8\x10<\xa2\xd6/U\xf2\x87\x1f>\xcf\ +\xf5O3D\x1b\xb7\xb1\xf3\xc5\x97Y\x12\x5cN`\x8e\ +\xdbS\x01(\xc0\x12%\x00m\xd4R}\xb1\xb5\x96\xdd\ +[\xe2t\xbf\x97\xa5j\xf7W\xf9\xd1\x1bo\x10\xa0\xb5\ +\x03\x98\xb57\xd5\xd8\x08\x01\xd2\xcbSpSx\xf33\ +\x14\xb3i\x0a\x19\x1f%\xfd\xd5\x82\xd6\x08\xf0\xf0)\xe7\ +\xe3\xe73\x14\xe6u\xa8\x0e\xd6\x00\xcb\xf7\x89\x10\xc13\ +}\xfa\xd7r\x8c\xb2\x137\x03\xc7\x01\xb2\x1e\xfe\xad\x94\ +\xcco\xf7DT\x03\xd8_p\x07\x08\x92\x09\xfd\xd7=\ +?\xfd~B\xa6\xcf\xdf\xf6\xef\x02\xeev;\xfc\x92\x06\ +\xa8\xe3s\xcau]\x1fpW\xed\x00@2\xab\x0a\x1f\ +~*\xd3\xbd\xb7\xfc\xd4\xcdi9\x05\xf4\x03\x97th\ +\xbf\x10\xa2\xd3\xb6\xed\xaf}\x9e%XXX\xf0\x07\x06\ +\x06\xd2'O\x9e\x9c\x06\xba\x83\x00>\x1aI\xca\xad\xe3\ +\xb3*\xd7;\xe2\xa7nL\xcb\xd1R\xe8Y\x1dt\x8b\ +\x00=\x09\xc0\xd0\xd0\x90\xdb\xd3\xd3\x93\xd2N\xcf\xce\xce\ +\x9e.\xbd\x1d\xdf\x08\x02\xe8\xee\xea)\x00\x8c\x04\x84\x06\ +\x85\xaf\x08055U\xd0/\x22\xa9S\xa7N%\xc7\ +\xc7\xc7/\x03g\x81~\x1d\xec\xae\xb8\x09K\xdfv\xda\ +O&\x85\x01@\x08@aZ\xfc\xde\xe0`\xba\xbb\xbb\ +;\xa5\xdf\x8a\xcc$\xd0^\xeds\xcda\xed\x9aw3\ +n\x11`p\xf0\xfdt___\xfa\xcc\x993\xa6\xc5\ +\xa5\xd0\x8fx\x02\x89\xb5\x9ec!D\x18x\x13\xd8O\ +is\x06\xb4\xf8\xb1\xfa\x1f\xbd\xfa*_\xf2\xd8\x15\x9d\ +\x00\x00\x00\x00IEND\xaeB`\x82\ +" + +qt_resource_name = b"\ +\x00\x06\ +\x07\x03}\xc3\ +\x00i\ +\x00m\x00a\x00g\x00e\x00s\ +\x00\x08\ +\x08\xc8Xg\ +\x00s\ +\x00a\x00v\x00e\x00.\x00p\x00n\x00g\ +\x00\x08\ +\x06\xc1Y\x87\ +\x00o\ +\x00p\x00e\x00n\x00.\x00p\x00n\x00g\ +\x00\x07\ +\x0a\xc7W\x87\ +\x00c\ +\x00u\x00t\x00.\x00p\x00n\x00g\ +\x00\x08\ +\x06|Z\x07\ +\x00c\ +\x00o\x00p\x00y\x00.\x00p\x00n\x00g\ +\x00\x07\ +\x04\xcaW\xa7\ +\x00n\ +\x00e\x00w\x00.\x00p\x00n\x00g\ +\x00\x09\ +\x0a\xa8\xbaG\ +\x00p\ +\x00a\x00s\x00t\x00e\x00.\x00p\x00n\x00g\ +" + +qt_resource_struct = b"\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x02\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00h\x00\x00\x00\x00\x00\x01\x00\x00\x171\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00R\x00\x00\x00\x00\x00\x01\x00\x00\x11\xf3\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00(\x00\x00\x00\x00\x00\x01\x00\x00\x04\xa7\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00|\x00\x00\x00\x00\x00\x01\x00\x00\x1a\x89\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00>\x00\x00\x00\x00\x00\x01\x00\x00\x0c\xc4\ +\x00\x00\x01~*kP\x18\ +" + +def qInitResources(): + QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +def qCleanupResources(): + QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +qInitResources() diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/painting/__pycache__/concentriccircles.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/painting/__pycache__/concentriccircles.cpython-310.pyc new file mode 100644 index 0000000..bafd42f Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/painting/__pycache__/concentriccircles.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/painting/basicdrawing/__pycache__/basicdrawing.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/painting/basicdrawing/__pycache__/basicdrawing.cpython-310.pyc new file mode 100644 index 0000000..e7ba103 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/painting/basicdrawing/__pycache__/basicdrawing.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/painting/basicdrawing/__pycache__/basicdrawing_rc.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/painting/basicdrawing/__pycache__/basicdrawing_rc.cpython-310.pyc new file mode 100644 index 0000000..7b50f73 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/painting/basicdrawing/__pycache__/basicdrawing_rc.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/painting/basicdrawing/basicdrawing.py b/venv/Lib/site-packages/PySide2/examples/widgets/painting/basicdrawing/basicdrawing.py new file mode 100644 index 0000000..f92da1b --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/painting/basicdrawing/basicdrawing.py @@ -0,0 +1,349 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the widgets/painting/basicdrawing example from Qt v5.x, originating from PyQt""" + +from PySide2.QtCore import QPoint, QRect, QSize, Qt, qVersion +from PySide2.QtGui import (QBrush, QConicalGradient, QLinearGradient, QPainter, + QPainterPath, QPalette, QPen, QPixmap, QPolygon, QRadialGradient) +from PySide2.QtWidgets import (QApplication, QCheckBox, QComboBox, QGridLayout, + QLabel, QSpinBox, QWidget) + +import basicdrawing_rc + + +class RenderArea(QWidget): + points = QPolygon([ + QPoint(10, 80), + QPoint(20, 10), + QPoint(80, 30), + QPoint(90, 70) + ]) + + Line, Points, Polyline, Polygon, Rect, RoundedRect, Ellipse, Arc, Chord, \ + Pie, Path, Text, Pixmap = range(13) + + def __init__(self, parent=None): + super(RenderArea, self).__init__(parent) + + self.pen = QPen() + self.brush = QBrush() + self.pixmap = QPixmap() + + self.shape = RenderArea.Polygon + self.antialiased = False + self.transformed = False + self.pixmap.load(':/images/qt-logo.png') + + self.setBackgroundRole(QPalette.Base) + self.setAutoFillBackground(True) + + def minimumSizeHint(self): + return QSize(100, 100) + + def sizeHint(self): + return QSize(400, 200) + + def setShape(self, shape): + self.shape = shape + self.update() + + def setPen(self, pen): + self.pen = pen + self.update() + + def setBrush(self, brush): + self.brush = brush + self.update() + + def setAntialiased(self, antialiased): + self.antialiased = antialiased + self.update() + + def setTransformed(self, transformed): + self.transformed = transformed + self.update() + + def paintEvent(self, event): + rect = QRect(10, 20, 80, 60) + + path = QPainterPath() + path.moveTo(20, 80) + path.lineTo(20, 30) + path.cubicTo(80, 0, 50, 50, 80, 80) + + startAngle = 30 * 16 + arcLength = 120 * 16 + + painter = QPainter(self) + painter.setPen(self.pen) + painter.setBrush(self.brush) + if self.antialiased: + painter.setRenderHint(QPainter.Antialiasing) + + for x in range(0, self.width(), 100): + for y in range(0, self.height(), 100): + painter.save() + painter.translate(x, y) + if self.transformed: + painter.translate(50, 50) + painter.rotate(60.0) + painter.scale(0.6, 0.9) + painter.translate(-50, -50) + + if self.shape == RenderArea.Line: + painter.drawLine(rect.bottomLeft(), rect.topRight()) + elif self.shape == RenderArea.Points: + painter.drawPoints(RenderArea.points) + elif self.shape == RenderArea.Polyline: + painter.drawPolyline(RenderArea.points) + elif self.shape == RenderArea.Polygon: + painter.drawPolygon(RenderArea.points) + elif self.shape == RenderArea.Rect: + painter.drawRect(rect) + elif self.shape == RenderArea.RoundedRect: + painter.drawRoundedRect(rect, 25, 25, Qt.RelativeSize) + elif self.shape == RenderArea.Ellipse: + painter.drawEllipse(rect) + elif self.shape == RenderArea.Arc: + painter.drawArc(rect, startAngle, arcLength) + elif self.shape == RenderArea.Chord: + painter.drawChord(rect, startAngle, arcLength) + elif self.shape == RenderArea.Pie: + painter.drawPie(rect, startAngle, arcLength) + elif self.shape == RenderArea.Path: + painter.drawPath(path) + elif self.shape == RenderArea.Text: + painter.drawText(rect, Qt.AlignCenter, + "PySide 2\nQt %s" % qVersion()) + elif self.shape == RenderArea.Pixmap: + painter.drawPixmap(10, 10, self.pixmap) + + painter.restore() + + painter.setPen(self.palette().dark().color()) + painter.setBrush(Qt.NoBrush) + painter.drawRect(QRect(0, 0, self.width() - 1, self.height() - 1)) + + +IdRole = Qt.UserRole + +class Window(QWidget): + def __init__(self): + super(Window, self).__init__() + + self.renderArea = RenderArea() + + self.shapeComboBox = QComboBox() + self.shapeComboBox.addItem("Polygon", RenderArea.Polygon) + self.shapeComboBox.addItem("Rectangle", RenderArea.Rect) + self.shapeComboBox.addItem("Rounded Rectangle", RenderArea.RoundedRect) + self.shapeComboBox.addItem("Ellipse", RenderArea.Ellipse) + self.shapeComboBox.addItem("Pie", RenderArea.Pie) + self.shapeComboBox.addItem("Chord", RenderArea.Chord) + self.shapeComboBox.addItem("Path", RenderArea.Path) + self.shapeComboBox.addItem("Line", RenderArea.Line) + self.shapeComboBox.addItem("Polyline", RenderArea.Polyline) + self.shapeComboBox.addItem("Arc", RenderArea.Arc) + self.shapeComboBox.addItem("Points", RenderArea.Points) + self.shapeComboBox.addItem("Text", RenderArea.Text) + self.shapeComboBox.addItem("Pixmap", RenderArea.Pixmap) + + shapeLabel = QLabel("&Shape:") + shapeLabel.setBuddy(self.shapeComboBox) + + self.penWidthSpinBox = QSpinBox() + self.penWidthSpinBox.setRange(0, 20) + self.penWidthSpinBox.setSpecialValueText("0 (cosmetic pen)") + + penWidthLabel = QLabel("Pen &Width:") + penWidthLabel.setBuddy(self.penWidthSpinBox) + + self.penStyleComboBox = QComboBox() + self.penStyleComboBox.addItem("Solid", Qt.SolidLine) + self.penStyleComboBox.addItem("Dash", Qt.DashLine) + self.penStyleComboBox.addItem("Dot", Qt.DotLine) + self.penStyleComboBox.addItem("Dash Dot", Qt.DashDotLine) + self.penStyleComboBox.addItem("Dash Dot Dot", Qt.DashDotDotLine) + self.penStyleComboBox.addItem("None", Qt.NoPen) + + penStyleLabel = QLabel("&Pen Style:") + penStyleLabel.setBuddy(self.penStyleComboBox) + + self.penCapComboBox = QComboBox() + self.penCapComboBox.addItem("Flat", Qt.FlatCap) + self.penCapComboBox.addItem("Square", Qt.SquareCap) + self.penCapComboBox.addItem("Round", Qt.RoundCap) + + penCapLabel = QLabel("Pen &Cap:") + penCapLabel.setBuddy(self.penCapComboBox) + + self.penJoinComboBox = QComboBox() + self.penJoinComboBox.addItem("Miter", Qt.MiterJoin) + self.penJoinComboBox.addItem("Bevel", Qt.BevelJoin) + self.penJoinComboBox.addItem("Round", Qt.RoundJoin) + + penJoinLabel = QLabel("Pen &Join:") + penJoinLabel.setBuddy(self.penJoinComboBox) + + self.brushStyleComboBox = QComboBox() + self.brushStyleComboBox.addItem("Linear Gradient", + Qt.LinearGradientPattern) + self.brushStyleComboBox.addItem("Radial Gradient", + Qt.RadialGradientPattern) + self.brushStyleComboBox.addItem("Conical Gradient", + Qt.ConicalGradientPattern) + self.brushStyleComboBox.addItem("Texture", Qt.TexturePattern) + self.brushStyleComboBox.addItem("Solid", Qt.SolidPattern) + self.brushStyleComboBox.addItem("Horizontal", Qt.HorPattern) + self.brushStyleComboBox.addItem("Vertical", Qt.VerPattern) + self.brushStyleComboBox.addItem("Cross", Qt.CrossPattern) + self.brushStyleComboBox.addItem("Backward Diagonal", Qt.BDiagPattern) + self.brushStyleComboBox.addItem("Forward Diagonal", Qt.FDiagPattern) + self.brushStyleComboBox.addItem("Diagonal Cross", Qt.DiagCrossPattern) + self.brushStyleComboBox.addItem("Dense 1", Qt.Dense1Pattern) + self.brushStyleComboBox.addItem("Dense 2", Qt.Dense2Pattern) + self.brushStyleComboBox.addItem("Dense 3", Qt.Dense3Pattern) + self.brushStyleComboBox.addItem("Dense 4", Qt.Dense4Pattern) + self.brushStyleComboBox.addItem("Dense 5", Qt.Dense5Pattern) + self.brushStyleComboBox.addItem("Dense 6", Qt.Dense6Pattern) + self.brushStyleComboBox.addItem("Dense 7", Qt.Dense7Pattern) + self.brushStyleComboBox.addItem("None", Qt.NoBrush) + + brushStyleLabel = QLabel("&Brush Style:") + brushStyleLabel.setBuddy(self.brushStyleComboBox) + + otherOptionsLabel = QLabel("Other Options:") + self.antialiasingCheckBox = QCheckBox("&Antialiasing") + self.transformationsCheckBox = QCheckBox("&Transformations") + + self.shapeComboBox.activated.connect(self.shapeChanged) + self.penWidthSpinBox.valueChanged.connect(self.penChanged) + self.penStyleComboBox.activated.connect(self.penChanged) + self.penCapComboBox.activated.connect(self.penChanged) + self.penJoinComboBox.activated.connect(self.penChanged) + self.brushStyleComboBox.activated.connect(self.brushChanged) + self.antialiasingCheckBox.toggled.connect(self.renderArea.setAntialiased) + self.transformationsCheckBox.toggled.connect(self.renderArea.setTransformed) + + mainLayout = QGridLayout() + mainLayout.setColumnStretch(0, 1) + mainLayout.setColumnStretch(3, 1) + mainLayout.addWidget(self.renderArea, 0, 0, 1, 4) + mainLayout.setRowMinimumHeight(1, 6) + mainLayout.addWidget(shapeLabel, 2, 1, Qt.AlignRight) + mainLayout.addWidget(self.shapeComboBox, 2, 2) + mainLayout.addWidget(penWidthLabel, 3, 1, Qt.AlignRight) + mainLayout.addWidget(self.penWidthSpinBox, 3, 2) + mainLayout.addWidget(penStyleLabel, 4, 1, Qt.AlignRight) + mainLayout.addWidget(self.penStyleComboBox, 4, 2) + mainLayout.addWidget(penCapLabel, 5, 1, Qt.AlignRight) + mainLayout.addWidget(self.penCapComboBox, 5, 2) + mainLayout.addWidget(penJoinLabel, 6, 1, Qt.AlignRight) + mainLayout.addWidget(self.penJoinComboBox, 6, 2) + mainLayout.addWidget(brushStyleLabel, 7, 1, Qt.AlignRight) + mainLayout.addWidget(self.brushStyleComboBox, 7, 2) + mainLayout.setRowMinimumHeight(8, 6) + mainLayout.addWidget(otherOptionsLabel, 9, 1, Qt.AlignRight) + mainLayout.addWidget(self.antialiasingCheckBox, 9, 2) + mainLayout.addWidget(self.transformationsCheckBox, 10, 2) + self.setLayout(mainLayout) + + self.shapeChanged() + self.penChanged() + self.brushChanged() + self.antialiasingCheckBox.setChecked(True) + + self.setWindowTitle("Basic Drawing") + + def shapeChanged(self): + shape = self.shapeComboBox.itemData(self.shapeComboBox.currentIndex(), + IdRole) + self.renderArea.setShape(shape) + + def penChanged(self): + width = self.penWidthSpinBox.value() + style = Qt.PenStyle(self.penStyleComboBox.itemData( + self.penStyleComboBox.currentIndex(), IdRole)) + cap = Qt.PenCapStyle(self.penCapComboBox.itemData( + self.penCapComboBox.currentIndex(), IdRole)) + join = Qt.PenJoinStyle(self.penJoinComboBox.itemData( + self.penJoinComboBox.currentIndex(), IdRole)) + + self.renderArea.setPen(QPen(Qt.blue, width, style, cap, join)) + + def brushChanged(self): + style = Qt.BrushStyle(self.brushStyleComboBox.itemData( + self.brushStyleComboBox.currentIndex(), IdRole)) + + if style == Qt.LinearGradientPattern: + linearGradient = QLinearGradient(0, 0, 100, 100) + linearGradient.setColorAt(0.0, Qt.white) + linearGradient.setColorAt(0.2, Qt.green) + linearGradient.setColorAt(1.0, Qt.black) + self.renderArea.setBrush(QBrush(linearGradient)) + elif style == Qt.RadialGradientPattern: + radialGradient = QRadialGradient(50, 50, 50, 70, 70) + radialGradient.setColorAt(0.0, Qt.white) + radialGradient.setColorAt(0.2, Qt.green) + radialGradient.setColorAt(1.0, Qt.black) + self.renderArea.setBrush(QBrush(radialGradient)) + elif style == Qt.ConicalGradientPattern: + conicalGradient = QConicalGradient(50, 50, 150) + conicalGradient.setColorAt(0.0, Qt.white) + conicalGradient.setColorAt(0.2, Qt.green) + conicalGradient.setColorAt(1.0, Qt.black) + self.renderArea.setBrush(QBrush(conicalGradient)) + elif style == Qt.TexturePattern: + self.renderArea.setBrush(QBrush(QPixmap(':/images/brick.png'))) + else: + self.renderArea.setBrush(QBrush(Qt.green, style)) + + +if __name__ == '__main__': + + import sys + + app = QApplication(sys.argv) + window = Window() + window.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/painting/basicdrawing/basicdrawing.pyproject b/venv/Lib/site-packages/PySide2/examples/widgets/painting/basicdrawing/basicdrawing.pyproject new file mode 100644 index 0000000..9ecbfad --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/painting/basicdrawing/basicdrawing.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["basicdrawing_rc.py", "basicdrawing.qrc", "basicdrawing.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/painting/basicdrawing/basicdrawing.qrc b/venv/Lib/site-packages/PySide2/examples/widgets/painting/basicdrawing/basicdrawing.qrc new file mode 100644 index 0000000..9d8a23a --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/painting/basicdrawing/basicdrawing.qrc @@ -0,0 +1,6 @@ + + + images/brick.png + images/qt-logo.png + + diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/painting/basicdrawing/basicdrawing_rc.py b/venv/Lib/site-packages/PySide2/examples/widgets/painting/basicdrawing/basicdrawing_rc.py new file mode 100644 index 0000000..cb8caf6 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/painting/basicdrawing/basicdrawing_rc.py @@ -0,0 +1,135 @@ +# Resource object code (Python 3) +# Created by: object code +# Created by: The Resource Compiler for Qt version 5.15.2 +# WARNING! All changes made in this file will be lost! + +from PySide2 import QtCore + +qt_resource_data = b"\ +\x00\x00\x03X\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00\x10\x08\x02\x00\x00\x00\xf8b\xea\x0e\ +\x00\x00\x00\x04gAMA\x00\x00\xb1\x8e|\xfbQ\x93\ +\x00\x00\x00 cHRM\x00\x00z%\x00\x00\x80\x83\ +\x00\x00\xf9\xff\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\ +\x00\x00:\x97\x00\x00\x17o\x97\xa9\x99\xd4\x00\x00\x02\xe3\ +IDAT8\xcbE\x94\xcb\x8d\x1eE\x10\xc7\x7fU\ +\xd53\xb3\xf6j\x9d\x09I\x90\x04\x0e\x05\x09\x99x\xe0\ +\xc4\xc1\x12\x07B \x04\x08\xc1\x96\xd7\xcb\xb7\xf3\xcd\xf4\ +\xa3\xaa8L[\xees\xbd\xfa\xff\x92\xcf\xff\xfc\xa6\x86\ +\x1a(* dB\x92A\x048\x1e\xa4\x93A89\ +@\x11A\x94\x8cY\x93WABb+e\xc3\x16\xac\ + \x85\xf7?\xbd/\x08\xf5\xf6o\xd9P%\x0c5\xc4\ +H\xc7;1\x18\x8d\x18\xa4\x13Nt| \x82\x16\x80\ +t\xdc\xf1F\x0c\xc2\x11\x00\xa4\xb0\xbc\xe1\xe1\x09\xdb\xf8\ +\xf5\xc3\x87\x0c\x8a\x1a\xaa\xd4\x97\xbf\xcb\x82.\xf3\x04\x9c\ +\xa8\xd4\x9d~\xa7\x9f\xf3\xd8\xd1\xf0\x93p\xb4 \x82w\ +\xfa\xc1h\x10D\x02\xa8b\x0b\xeb#\xfd\x1d\x7f\xfe\xf5\ +1\x02Q\x8a\x16\xd4\x10\xa5\xdd>ja{\x22 \x06\ +}\xe7\xfc\xc2\xf9\x1f\xc73\xf5u\x82\xd0vFE\x94\ +\x18x\xa7\xef\x8c\x8e*\xde\xc9\xc4\x0a\xdb;\x1e\x9eX\ +\x1e\xf1\x0e\x01PD\x10\xc3\x0aa\x94\x07\xca\x86.\x84\ +\x93\x01L2\xc6\x81\x0f\xd2i\x07^\x01\xc4\x88\x81\x18\ +\x0c\xbc3\x1a\xd1\xf1B\xd9h\x85Lb\x90I\x06\xe5\ +\xc2T\x0cQlE\x0b\x19d\xe2\x83v\xe7\xf8J\xdb\ +Ihw\xc6\x9d\xd1\x89A\x06\xb6 J?!\x18\x8d\ +\xbe\x93I\x11\xbca\x1b\xfd\xa0\xef\x8c\x13\xef\x17\x07\x05\ +QD\x11!\x9cQ\xa97\xce\x17\x8e\xaf\xd4\xdb\xe4`\ +\x9c\xdc\xbf\x90\x17\xb7\x83\xf5\x11Q\xfa}v\x89\x92\x8e\ +\x08\x11x\x87\xa4\x9f\xf4\x93Q/\x88\x14\xb9x\x1b\x8c\ +\xca\xf9\xc2\xf1\xc2\xf1<\xfb\xc9\x89\xd5hx\xbb\xb4B\ +\x0c\x80QQ\xa3l,o!'n^Q\x9d\xda\x8d\ +\xa0D\x00\x98\x12+\x80W\xfaI\xbbQo\xb4W2\ +\x09g\x1cd\xa0\x85~\xc7;Z\xe8\x8a\x15\xc89\xb7\ +\xac\x08\x88R\x1e\xa6\x823A )\x17\x99b\xa8\x11\ +\x8ew\xbc\x11A8u\xa7\x1fS\x91\xa3~\xf7\x97w\ +2\x88\x95p`\xee6\xc3\x16\x96G2\xbeA\xa7 \ +\x14Q\x08b\xd0\x0eT\x19\x95\xe8Lb\x8cLFe\ +\x1c\xd4\x1d?I\x07!\x83\x14\xa2\x91I\xef\xa0\xaco\ +\x91\x85d\xb2}\xad\xbc\x0e*\x99x\xa7\xed\xec\x9f\xb0\ +\x85\x18\x93\x0f5\xcaJ7\x86S_i\xfb4\xd4%\ +A5\x10F#\x1d5\xfa\x1d5\xb2\x93\x81(j\x13\ +\x15[(1\xe8\x07\xf7g\xf6O\xacO\xa8\xe1\x8dQ\ +!\xb0\x82\x95\xefn\xb8\xac$B\x0f`\xc6Cy\x83\ +m\x84\xd3O\x00\xdb\xe6\xee\xebD+\x94p|\xf0\xc7\ +\xef\x1f#\xd8\x9e\xa6K\x11\xa2\xd1v\xda\x9d\xfaJ\xbb\ +1*\x97\xf5/Ef\x80 \x8a\x1eX\xc5\xf6\xc9\xa2\ +\x1a\xba\x00\x94o\x9bJ8\xbf\xfc\xfc\xe12\x9e\xad\x88\ +\xccT\xf1A\xdd\x89+\xf2\xeaL\xba\xab\x87+h\xa1\ +\xac\xe8\x82tTA\xd0\x05U\x00QtA\x8dL\xe4\ +\xc7\x1f@g\x16^\xc0]\xef\x92S\xe6\x84>\x06\x04\ +W]\x06\xe4\xfcAY\xbf\xb5\x08Wn\x8a\xce9\x97\ +\xe4\xfe\x07\xb6\x84\x15$\x5c\xbcO\xce\x00\x00\x00\x00I\ +END\xaeB`\x82\ +\x00\x00\x02\x15\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00P\x00\x00\x00P\x04\x03\x00\x00\x00|?\xef\x9e\ +\x00\x00\x00\x15PLTE\xa3\xc2\x00\xf4\xf8\xe1\x8a\xa1\ +\x09\x14\x14\x18?G\x16\xd3\xe2\x86p\x82\x0e\xfd\x17\x22\ +9\x00\x00\x00\x09pHYs\x00\x00\x00H\x00\x00\x00\ +H\x00F\xc9k>\x00\x00\x01\xa6IDATH\xc7\ +\xedVKn\x840\x0cEf\xc49\xa2I\xd55\x22\ +\x11k\xd4Hs\x0eT\x10\xf7?B\x0b\xc4L\xfc\x83\ +\xd9u\xd1\xf1\x0a\xa2\x97\x17\xdb\xb1\x9fSUo\xfbk\ +\xbb/\xcb\xfd\x1a\x05s\x0a\xbf\x16\x1f\xee\x1c\xd7l\xb0\ +\x0d:\x9e\xe2Ba\xe3\x8b\xb8\x13$$\x0a\x8c\x96\x9f\ +S`\xd6\xeb\xb8[\x106\xa8\xc0$\x81\xf1EB\x9d\ +\x12\x09\xe3cY\xe6dSbj\xf6+\x81\xd9\xa4\xf4\ +\x19\x87\xff\x1fV\xe0\x89\xaf\xe7d9=\x14'\xd2?\ +\xa8'\x7f\xc9\xbd\x9dz\xf2\x93n\xc45\x167\xb0\xdd\ +~u\xb6VJ\xe3F\xd7`\xfb\x06\xc5\xc9\x9a\x9e\xe2\ +\xf7\xf8\x93tr\x22K\x90\xe9k\x99\xc9D\x0e\xf1\x19\ +\xd0\xc8hR\x99D\xc0\x02\x07\x91r [\xf3m\xb6\ +l\xffQ\x11=%\x5c\x9d\x9cx~\x080\x13v\xf8\ +9\xf04v\x94\xd0a\xd6\x04\xb0\x15\x84\xfb\xba\x01\x84\ +\xb2\xa9u\xe0P\x12\xf6\xd5\x05#\x84k\xc6\xb6 \xcc\ +\x9473j\xa0\xca#\xa2>\xf2\xe8\xa9\x9ex\x15\x18\ +\x09\xa1~3x\xd75\x93(q\xd7\xb8\x02T\x1f\x81\ +6RY\x8f\x9bS\x1d\xe6R\xa9G\xacp(\x98B\ +\x98d\x85\x1f=\xb3wK\x11<\xeb\x99\xa3\x0bas\ +\x1eL\xe5{\xf6\xb5\xef*\x9aO\xa7)\x85\xcb\x1aQ\ +PFU{:\xae\x82R{\x1av\x0e\x98\xe2\xcc\xf5\ +\x11)-\xc5=\x90\xb35\xbeP\xc3{\xaa\xe1\xa66\ +\xb3\xa9\xa0Q\xaas\xe6\x94\x92\xdbx1\x84O\xa6\xd7\ +\xa4\xe2\xe2\x0b\xf3z\xb2\xc6a\x93d\x85\xc7\x8b\xb7\xc7\ +\x1e\x84\xb7F6\x7f\xa5\x80A\xb8\xda\x92\xdf=\xf9b\ +\x87\xb3\x97\xd4\xe7\xf7\xf1\x92\x02\xf7~Y\xfe?\xfb\x01\ +\xbd\xf6\xdd\x91\xa2\xf3\xda\xd4\x00\x00\x00\x00IEND\ +\xaeB`\x82\ +" + +qt_resource_name = b"\ +\x00\x06\ +\x07\x03}\xc3\ +\x00i\ +\x00m\x00a\x00g\x00e\x00s\ +\x00\x09\ +\x0f\x9e\x84G\ +\x00b\ +\x00r\x00i\x00c\x00k\x00.\x00p\x00n\x00g\ +\x00\x0b\ +\x05R\xbf'\ +\x00q\ +\x00t\x00-\x00l\x00o\x00g\x00o\x00.\x00p\x00n\x00g\ +" + +qt_resource_struct = b"\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00*\x00\x00\x00\x00\x00\x01\x00\x00\x03\x5c\ +\x00\x00\x01~*kP\x18\ +\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x01~*kP\x18\ +" + +def qInitResources(): + QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +def qCleanupResources(): + QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +qInitResources() diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/painting/basicdrawing/images/brick.png b/venv/Lib/site-packages/PySide2/examples/widgets/painting/basicdrawing/images/brick.png new file mode 100644 index 0000000..ab5e383 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/painting/basicdrawing/images/brick.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/painting/basicdrawing/images/qt-logo.png b/venv/Lib/site-packages/PySide2/examples/widgets/painting/basicdrawing/images/qt-logo.png new file mode 100644 index 0000000..9c27cf6 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/painting/basicdrawing/images/qt-logo.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/painting/concentriccircles.py b/venv/Lib/site-packages/PySide2/examples/widgets/painting/concentriccircles.py new file mode 100644 index 0000000..ff13292 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/painting/concentriccircles.py @@ -0,0 +1,146 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the widgets/painting/concentriccircles example from Qt v5.x, originating from PyQt""" + +from PySide2.QtCore import QRect, QRectF, QSize, Qt, QTimer +from PySide2.QtGui import QColor, QPainter, QPalette, QPen +from PySide2.QtWidgets import (QApplication, QFrame, QGridLayout, QLabel, + QSizePolicy, QWidget) + + +class CircleWidget(QWidget): + def __init__(self, parent=None): + super(CircleWidget, self).__init__(parent) + + self.floatBased = False + self.antialiased = False + self.frameNo = 0 + + self.setBackgroundRole(QPalette.Base) + self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) + + def setFloatBased(self, floatBased): + self.floatBased = floatBased + self.update() + + def setAntialiased(self, antialiased): + self.antialiased = antialiased + self.update() + + def minimumSizeHint(self): + return QSize(50, 50) + + def sizeHint(self): + return QSize(180, 180) + + def nextAnimationFrame(self): + self.frameNo += 1 + self.update() + + def paintEvent(self, event): + painter = QPainter(self) + painter.setRenderHint(QPainter.Antialiasing, self.antialiased) + painter.translate(self.width() / 2, self.height() / 2) + + for diameter in range(0, 256, 9): + delta = abs((self.frameNo % 128) - diameter / 2) + alpha = 255 - (delta * delta) / 4 - diameter + if alpha > 0: + painter.setPen(QPen(QColor(0, diameter / 2, 127, alpha), 3)) + + if self.floatBased: + painter.drawEllipse(QRectF(-diameter / 2.0, + -diameter / 2.0, diameter, diameter)) + else: + painter.drawEllipse(QRect(-diameter / 2, + -diameter / 2, diameter, diameter)) + + +class Window(QWidget): + def __init__(self): + super(Window, self).__init__() + + aliasedLabel = self.createLabel("Aliased") + antialiasedLabel = self.createLabel("Antialiased") + intLabel = self.createLabel("Int") + floatLabel = self.createLabel("Float") + + layout = QGridLayout() + layout.addWidget(aliasedLabel, 0, 1) + layout.addWidget(antialiasedLabel, 0, 2) + layout.addWidget(intLabel, 1, 0) + layout.addWidget(floatLabel, 2, 0) + + timer = QTimer(self) + + for i in range(2): + for j in range(2): + w = CircleWidget() + w.setAntialiased(j != 0) + w.setFloatBased(i != 0) + + timer.timeout.connect(w.nextAnimationFrame) + + layout.addWidget(w, i + 1, j + 1) + + timer.start(100) + self.setLayout(layout) + + self.setWindowTitle("Concentric Circles") + + def createLabel(self, text): + label = QLabel(text) + label.setAlignment(Qt.AlignCenter) + label.setMargin(2) + label.setFrameStyle(QFrame.Box | QFrame.Sunken) + return label + + +if __name__ == '__main__': + + import sys + + app = QApplication(sys.argv) + window = Window() + window.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/painting/painting.pyproject b/venv/Lib/site-packages/PySide2/examples/widgets/painting/painting.pyproject new file mode 100644 index 0000000..ed24e12 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/painting/painting.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["concentriccircles.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/richtext/__pycache__/orderform.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/__pycache__/orderform.cpython-310.pyc new file mode 100644 index 0000000..ba08162 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/__pycache__/orderform.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/richtext/__pycache__/syntaxhighlighter.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/__pycache__/syntaxhighlighter.cpython-310.pyc new file mode 100644 index 0000000..f913c75 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/__pycache__/syntaxhighlighter.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/richtext/orderform.py b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/orderform.py new file mode 100644 index 0000000..7c0d273 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/orderform.py @@ -0,0 +1,296 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the widgets/richtext/orderform example from Qt v5.x""" + +from PySide2 import QtCore, QtGui, QtWidgets, QtPrintSupport + + +class MainWindow(QtWidgets.QMainWindow): + def __init__(self): + super(MainWindow, self).__init__() + + fileMenu = QtWidgets.QMenu("&File", self) + newAction = fileMenu.addAction("&New...") + newAction.setShortcut("Ctrl+N") + self.printAction = fileMenu.addAction("&Print...", self.printFile) + self.printAction.setShortcut("Ctrl+P") + self.printAction.setEnabled(False) + quitAction = fileMenu.addAction("E&xit") + quitAction.setShortcut("Ctrl+Q") + self.menuBar().addMenu(fileMenu) + + self.letters = QtWidgets.QTabWidget() + + newAction.triggered.connect(self.openDialog) + quitAction.triggered.connect(self.close) + + self.setCentralWidget(self.letters) + self.setWindowTitle("Order Form") + + def createLetter(self, name, address, orderItems, sendOffers): + editor = QtWidgets.QTextEdit() + tabIndex = self.letters.addTab(editor, name) + self.letters.setCurrentIndex(tabIndex) + + cursor = editor.textCursor() + cursor.movePosition(QtGui.QTextCursor.Start) + topFrame = cursor.currentFrame() + topFrameFormat = topFrame.frameFormat() + topFrameFormat.setPadding(16) + topFrame.setFrameFormat(topFrameFormat) + + textFormat = QtGui.QTextCharFormat() + boldFormat = QtGui.QTextCharFormat() + boldFormat.setFontWeight(QtGui.QFont.Bold) + + referenceFrameFormat = QtGui.QTextFrameFormat() + referenceFrameFormat.setBorder(1) + referenceFrameFormat.setPadding(8) + referenceFrameFormat.setPosition(QtGui.QTextFrameFormat.FloatRight) + referenceFrameFormat.setWidth(QtGui.QTextLength(QtGui.QTextLength.PercentageLength, 40)) + cursor.insertFrame(referenceFrameFormat) + + cursor.insertText("A company", boldFormat) + cursor.insertBlock() + cursor.insertText("321 City Street") + cursor.insertBlock() + cursor.insertText("Industry Park") + cursor.insertBlock() + cursor.insertText("Another country") + + cursor.setPosition(topFrame.lastPosition()) + + cursor.insertText(name, textFormat) + for line in address.split("\n"): + cursor.insertBlock() + cursor.insertText(line) + + cursor.insertBlock() + cursor.insertBlock() + + date = QtCore.QDate.currentDate() + cursor.insertText("Date: %s" % date.toString('d MMMM yyyy'), + textFormat) + cursor.insertBlock() + + bodyFrameFormat = QtGui.QTextFrameFormat() + bodyFrameFormat.setWidth(QtGui.QTextLength(QtGui.QTextLength.PercentageLength, 100)) + cursor.insertFrame(bodyFrameFormat) + + cursor.insertText("I would like to place an order for the following " + "items:", textFormat) + cursor.insertBlock() + cursor.insertBlock() + + orderTableFormat = QtGui.QTextTableFormat() + orderTableFormat.setAlignment(QtCore.Qt.AlignHCenter) + orderTable = cursor.insertTable(1, 2, orderTableFormat) + + orderFrameFormat = cursor.currentFrame().frameFormat() + orderFrameFormat.setBorder(1) + cursor.currentFrame().setFrameFormat(orderFrameFormat) + + cursor = orderTable.cellAt(0, 0).firstCursorPosition() + cursor.insertText("Product", boldFormat) + cursor = orderTable.cellAt(0, 1).firstCursorPosition() + cursor.insertText("Quantity", boldFormat) + + for text, quantity in orderItems: + row = orderTable.rows() + + orderTable.insertRows(row, 1) + cursor = orderTable.cellAt(row, 0).firstCursorPosition() + cursor.insertText(text, textFormat) + cursor = orderTable.cellAt(row, 1).firstCursorPosition() + cursor.insertText(str(quantity), textFormat) + + cursor.setPosition(topFrame.lastPosition()) + + cursor.insertBlock() + + cursor.insertText("Please update my records to take account of the " + "following privacy information:") + cursor.insertBlock() + + offersTable = cursor.insertTable(2, 2) + + cursor = offersTable.cellAt(0, 1).firstCursorPosition() + cursor.insertText("I want to receive more information about your " + "company's products and special offers.", textFormat) + cursor = offersTable.cellAt(1, 1).firstCursorPosition() + cursor.insertText("I do not want to receive any promotional " + "information from your company.", textFormat) + + if sendOffers: + cursor = offersTable.cellAt(0, 0).firstCursorPosition() + else: + cursor = offersTable.cellAt(1, 0).firstCursorPosition() + + cursor.insertText('X', boldFormat) + + cursor.setPosition(topFrame.lastPosition()) + cursor.insertBlock() + cursor.insertText("Sincerely,", textFormat) + cursor.insertBlock() + cursor.insertBlock() + cursor.insertBlock() + cursor.insertText(name) + + self.printAction.setEnabled(True) + + def createSample(self): + dialog = DetailsDialog('Dialog with default values', self) + self.createLetter('Mr Smith', + '12 High Street\nSmall Town\nThis country', + dialog.orderItems(), True) + + def openDialog(self): + dialog = DetailsDialog("Enter Customer Details", self) + + if dialog.exec_() == QtWidgets.QDialog.Accepted: + self.createLetter(dialog.senderName(), dialog.senderAddress(), + dialog.orderItems(), dialog.sendOffers()) + + def printFile(self): + editor = self.letters.currentWidget() + printer = QtPrintSupport.QPrinter() + + dialog = QtPrintSupport.QPrintDialog(printer, self) + dialog.setWindowTitle("Print Document") + + if editor.textCursor().hasSelection(): + dialog.addEnabledOption(QtPrintSupport.QAbstractPrintDialog.PrintSelection) + + if dialog.exec_() != QtWidgets.QDialog.Accepted: + return + + editor.print_(printer) + + +class DetailsDialog(QtWidgets.QDialog): + def __init__(self, title, parent): + super(DetailsDialog, self).__init__(parent) + + self.items = ("T-shirt", "Badge", "Reference book", "Coffee cup") + + nameLabel = QtWidgets.QLabel("Name:") + addressLabel = QtWidgets.QLabel("Address:") + addressLabel.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop) + + self.nameEdit = QtWidgets.QLineEdit() + self.addressEdit = QtWidgets.QTextEdit() + self.offersCheckBox = QtWidgets.QCheckBox("Send information about " + "products and special offers:") + + self.setupItemsTable() + + buttonBox = QtWidgets.QDialogButtonBox(QtWidgets.QDialogButtonBox.Ok | QtWidgets.QDialogButtonBox.Cancel) + + buttonBox.accepted.connect(self.verify) + buttonBox.rejected.connect(self.reject) + + mainLayout = QtWidgets.QGridLayout() + mainLayout.addWidget(nameLabel, 0, 0) + mainLayout.addWidget(self.nameEdit, 0, 1) + mainLayout.addWidget(addressLabel, 1, 0) + mainLayout.addWidget(self.addressEdit, 1, 1) + mainLayout.addWidget(self.itemsTable, 0, 2, 2, 1) + mainLayout.addWidget(self.offersCheckBox, 2, 1, 1, 2) + mainLayout.addWidget(buttonBox, 3, 0, 1, 3) + self.setLayout(mainLayout) + + self.setWindowTitle(title) + + def setupItemsTable(self): + self.itemsTable = QtWidgets.QTableWidget(len(self.items), 2) + + for row, item in enumerate(self.items): + name = QtWidgets.QTableWidgetItem(item) + name.setFlags(QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable) + self.itemsTable.setItem(row, 0, name) + quantity = QtWidgets.QTableWidgetItem('1') + self.itemsTable.setItem(row, 1, quantity) + + def orderItems(self): + orderList = [] + + for row in range(len(self.items)): + text = self.itemsTable.item(row, 0).text() + quantity = int(self.itemsTable.item(row, 1).data(QtCore.Qt.DisplayRole)) + orderList.append((text, max(0, quantity))) + + return orderList + + def senderName(self): + return self.nameEdit.text() + + def senderAddress(self): + return self.addressEdit.toPlainText() + + def sendOffers(self): + return self.offersCheckBox.isChecked() + + def verify(self): + if self.nameEdit.text() and self.addressEdit.toPlainText(): + self.accept() + return + + answer = QtWidgets.QMessageBox.warning(self, "Incomplete Form", + "The form does not contain all the necessary information.\n" + "Do you want to discard it?", + QtWidgets.QMessageBox.Yes, QtWidgets.QMessageBox.No) + + if answer == QtWidgets.QMessageBox.Yes: + self.reject() + + +if __name__ == '__main__': + + import sys + + app = QtWidgets.QApplication(sys.argv) + window = MainWindow() + window.resize(640, 480) + window.show() + window.createSample() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/richtext/richtext.pyproject b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/richtext.pyproject new file mode 100644 index 0000000..e91a989 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/richtext.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["syntaxhighlighter.py", "orderform.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/richtext/syntaxhighlighter.py b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/syntaxhighlighter.py new file mode 100644 index 0000000..9be2994 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/syntaxhighlighter.py @@ -0,0 +1,210 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the widgets/richtext/syntaxhighlighter example from Qt v5.x""" + +from PySide2 import QtCore, QtGui, QtWidgets + + +class MainWindow(QtWidgets.QMainWindow): + def __init__(self, parent=None): + super(MainWindow, self).__init__(parent) + + self.setupFileMenu() + self.setupHelpMenu() + self.setupEditor() + + self.setCentralWidget(self.editor) + self.setWindowTitle("Syntax Highlighter") + + def about(self): + QtWidgets.QMessageBox.about(self, "About Syntax Highlighter", + "

The Syntax Highlighter example shows how to " \ + "perform simple syntax highlighting by subclassing the " \ + "QSyntaxHighlighter class and describing highlighting " \ + "rules using regular expressions.

") + + def newFile(self): + self.editor.clear() + + def openFile(self, path=None): + if not path: + path = QtWidgets.QFileDialog.getOpenFileName(self, "Open File", + '', "C++ Files (*.cpp *.h)") + + if path: + inFile = QtCore.QFile(path[0]) + if inFile.open(QtCore.QFile.ReadOnly | QtCore.QFile.Text): + text = inFile.readAll() + + try: + # Python v3. + text = str(text, encoding='ascii') + except TypeError: + # Python v2. + text = str(text) + + self.editor.setPlainText(text) + + def setupEditor(self): + font = QtGui.QFont() + font.setFamily('Courier') + font.setFixedPitch(True) + font.setPointSize(10) + + self.editor = QtWidgets.QTextEdit() + self.editor.setFont(font) + + self.highlighter = Highlighter(self.editor.document()) + + def setupFileMenu(self): + fileMenu = QtWidgets.QMenu("&File", self) + self.menuBar().addMenu(fileMenu) + + fileMenu.addAction("&New...", self.newFile, "Ctrl+N") + fileMenu.addAction("&Open...", self.openFile, "Ctrl+O") + fileMenu.addAction("E&xit", qApp.quit, "Ctrl+Q") + + def setupHelpMenu(self): + helpMenu = QtWidgets.QMenu("&Help", self) + self.menuBar().addMenu(helpMenu) + + helpMenu.addAction("&About", self.about) + helpMenu.addAction("About &Qt", qApp.aboutQt) + + +class Highlighter(QtGui.QSyntaxHighlighter): + def __init__(self, parent=None): + super(Highlighter, self).__init__(parent) + + keywordFormat = QtGui.QTextCharFormat() + keywordFormat.setForeground(QtCore.Qt.darkBlue) + keywordFormat.setFontWeight(QtGui.QFont.Bold) + + keywordPatterns = ["\\bchar\\b", "\\bclass\\b", "\\bconst\\b", + "\\bdouble\\b", "\\benum\\b", "\\bexplicit\\b", "\\bfriend\\b", + "\\binline\\b", "\\bint\\b", "\\blong\\b", "\\bnamespace\\b", + "\\boperator\\b", "\\bprivate\\b", "\\bprotected\\b", + "\\bpublic\\b", "\\bshort\\b", "\\bsignals\\b", "\\bsigned\\b", + "\\bslots\\b", "\\bstatic\\b", "\\bstruct\\b", + "\\btemplate\\b", "\\btypedef\\b", "\\btypename\\b", + "\\bunion\\b", "\\bunsigned\\b", "\\bvirtual\\b", "\\bvoid\\b", + "\\bvolatile\\b"] + + self.highlightingRules = [(QtCore.QRegularExpression(pattern), keywordFormat) + for pattern in keywordPatterns] + + classFormat = QtGui.QTextCharFormat() + classFormat.setFontWeight(QtGui.QFont.Bold) + classFormat.setForeground(QtCore.Qt.darkMagenta) + pattern = QtCore.QRegularExpression(r'\bQ[A-Za-z]+\b') + assert pattern.isValid() + self.highlightingRules.append((pattern, classFormat)) + + singleLineCommentFormat = QtGui.QTextCharFormat() + singleLineCommentFormat.setForeground(QtCore.Qt.red) + pattern = QtCore.QRegularExpression('//[^\n]*') + assert pattern.isValid() + self.highlightingRules.append((pattern, singleLineCommentFormat)) + + self.multiLineCommentFormat = QtGui.QTextCharFormat() + self.multiLineCommentFormat.setForeground(QtCore.Qt.red) + + quotationFormat = QtGui.QTextCharFormat() + quotationFormat.setForeground(QtCore.Qt.darkGreen) + pattern = QtCore.QRegularExpression('".*"') + assert pattern.isValid() + self.highlightingRules.append((pattern, quotationFormat)) + + functionFormat = QtGui.QTextCharFormat() + functionFormat.setFontItalic(True) + functionFormat.setForeground(QtCore.Qt.blue) + pattern = QtCore.QRegularExpression(r'\b[A-Za-z0-9_]+(?=\()') + assert pattern.isValid() + self.highlightingRules.append((pattern, functionFormat)) + + self.commentStartExpression = QtCore.QRegularExpression(r'/\*') + assert self.commentStartExpression.isValid() + self.commentEndExpression = QtCore.QRegularExpression(r'\*/') + assert self.commentEndExpression.isValid() + + def highlightBlock(self, text): + for pattern, format in self.highlightingRules: + match = pattern.match(text) + while match.hasMatch(): + index = match.capturedStart(0) + length = match.capturedLength(0) + self.setFormat(index, length, format) + match = pattern.match(text, index + length) + + self.setCurrentBlockState(0) + + startIndex = 0 + if self.previousBlockState() != 1: + match = self.commentStartExpression.match(text) + startIndex = match.capturedStart(0) if match.hasMatch() else -1 + + while startIndex >= 0: + match = self.commentEndExpression.match(text, startIndex) + if match.hasMatch(): + endIndex = match.capturedStart(0) + length = match.capturedLength(0) + commentLength = endIndex - startIndex + length + else: + self.setCurrentBlockState(1) + commentLength = len(text) - startIndex + + self.setFormat(startIndex, commentLength, + self.multiLineCommentFormat) + match = self.commentStartExpression.match(text, startIndex + commentLength) + startIndex = match.capturedStart(0) if match.hasMatch() else -1 + + +if __name__ == '__main__': + + import sys + + app = QtWidgets.QApplication(sys.argv) + window = MainWindow() + window.resize(640, 512) + window.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/richtext/syntaxhighlighter/__pycache__/syntaxhighlighter.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/syntaxhighlighter/__pycache__/syntaxhighlighter.cpython-310.pyc new file mode 100644 index 0000000..5e32dfd Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/syntaxhighlighter/__pycache__/syntaxhighlighter.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/richtext/syntaxhighlighter/__pycache__/syntaxhighlighter_rc.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/syntaxhighlighter/__pycache__/syntaxhighlighter_rc.cpython-310.pyc new file mode 100644 index 0000000..1c45190 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/syntaxhighlighter/__pycache__/syntaxhighlighter_rc.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/richtext/syntaxhighlighter/examples/example b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/syntaxhighlighter/examples/example new file mode 100644 index 0000000..db8e7b1 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/syntaxhighlighter/examples/example @@ -0,0 +1,79 @@ +TEMPLATE = app +LANGUAGE = C++ +TARGET = assistant + +CONFIG += qt warn_on +QT += xml network + +PROJECTNAME = Assistant +DESTDIR = ../../bin + +FORMS += finddialog.ui \ + helpdialog.ui \ + mainwindow.ui \ + settingsdialog.ui \ + tabbedbrowser.ui \ + topicchooser.ui + +SOURCES += main.cpp \ + helpwindow.cpp \ + topicchooser.cpp \ + docuparser.cpp \ + settingsdialog.cpp \ + index.cpp \ + profile.cpp \ + config.cpp \ + finddialog.cpp \ + helpdialog.cpp \ + mainwindow.cpp \ + tabbedbrowser.cpp + +HEADERS += helpwindow.h \ + topicchooser.h \ + docuparser.h \ + settingsdialog.h \ + index.h \ + profile.h \ + finddialog.h \ + helpdialog.h \ + mainwindow.h \ + tabbedbrowser.h \ + config.h + +RESOURCES += assistant.qrc + +DEFINES += QT_KEYWORDS +#DEFINES += QT_PALMTOPCENTER_DOCS +!network:DEFINES += QT_INTERNAL_NETWORK +else:QT += network +!xml: DEFINES += QT_INTERNAL_XML +else:QT += xml +include( ../../src/qt_professional.pri ) + +win32 { + LIBS += -lshell32 + RC_FILE = assistant.rc +} + +macos { + ICON = assistant.icns + TARGET = assistant +# QMAKE_INFO_PLIST = Info_mac.plist +} + +#target.path = $$[QT_INSTALL_BINS] +#INSTALLS += target + +#assistanttranslations.files = *.qm +#assistanttranslations.path = $$[QT_INSTALL_TRANSLATIONS] +#INSTALLS += assistanttranslations + +TRANSLATIONS = assistant_de.ts \ + assistant_fr.ts + + +unix:!contains(QT_CONFIG, zlib):LIBS += -lz + + +target.path=$$[QT_INSTALL_BINS] +INSTALLS += target diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter.py b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter.py new file mode 100644 index 0000000..089c434 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter.py @@ -0,0 +1,154 @@ + +############################################################################ +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the widgets/richtext/syntaxhighlighter example from Qt v5.x""" + +import sys +import re +from PySide2.QtCore import (QFile, Qt, QTextStream) +from PySide2.QtGui import (QColor, QFont, QKeySequence, QSyntaxHighlighter, + QTextCharFormat) +from PySide2.QtWidgets import (QApplication, QFileDialog, QMainWindow, + QPlainTextEdit) + +import syntaxhighlighter_rc + + +class MainWindow(QMainWindow): + def __init__(self, parent=None): + QMainWindow.__init__(self, parent) + + self._highlighter = Highlighter() + + self.setup_file_menu() + self.setup_editor() + + self.setCentralWidget(self._editor) + self.setWindowTitle(self.tr("Syntax Highlighter")) + + def new_file(self): + self._editor.clear() + + def open_file(self, path=""): + file_name = path + + if not file_name: + file_name, _ = QFileDialog.getOpenFileName(self, self.tr("Open File"), "", + "qmake Files (*.pro *.prf *.pri)") + + if file_name: + inFile = QFile(file_name) + if inFile.open(QFile.ReadOnly | QFile.Text): + stream = QTextStream(inFile) + self._editor.setPlainText(stream.readAll()) + + def setup_editor(self): + variable_format = QTextCharFormat() + variable_format.setFontWeight(QFont.Bold) + variable_format.setForeground(Qt.blue) + self._highlighter.add_mapping("\\b[A-Z_]+\\b", variable_format) + + single_line_comment_format = QTextCharFormat() + single_line_comment_format.setBackground(QColor("#77ff77")) + self._highlighter.add_mapping("#[^\n]*", single_line_comment_format) + + quotation_format = QTextCharFormat() + quotation_format.setBackground(Qt.cyan) + quotation_format.setForeground(Qt.blue) + self._highlighter.add_mapping("\".*\"", quotation_format) + + function_format = QTextCharFormat() + function_format.setFontItalic(True) + function_format.setForeground(Qt.blue) + self._highlighter.add_mapping("\\b[a-z0-9_]+\\(.*\\)", function_format) + + font = QFont() + font.setFamily("Courier") + font.setFixedPitch(True) + font.setPointSize(10) + + self._editor = QPlainTextEdit() + self._editor.setFont(font) + self._highlighter.setDocument(self._editor.document()) + + def setup_file_menu(self): + file_menu = self.menuBar().addMenu(self.tr("&File")) + + new_file_act = file_menu.addAction(self.tr("&New...")) + new_file_act.setShortcut(QKeySequence(QKeySequence.New)) + new_file_act.triggered.connect(self.new_file) + + open_file_act = file_menu.addAction(self.tr("&Open...")) + open_file_act.setShortcut(QKeySequence(QKeySequence.Open)) + open_file_act.triggered.connect(self.open_file) + + quit_act = file_menu.addAction(self.tr("E&xit")) + quit_act.setShortcut(QKeySequence(QKeySequence.Quit)) + quit_act.triggered.connect(self.close) + + help_menu = self.menuBar().addMenu("&Help") + help_menu.addAction("About &Qt", qApp.aboutQt) + + +class Highlighter(QSyntaxHighlighter): + def __init__(self, parent=None): + QSyntaxHighlighter.__init__(self, parent) + + self._mappings = {} + + def add_mapping(self, pattern, format): + self._mappings[pattern] = format + + def highlightBlock(self, text): + for pattern, format in self._mappings.items(): + for match in re.finditer(pattern, text): + start, end = match.span() + self.setFormat(start, end - start, format) + + +if __name__ == '__main__': + app = QApplication(sys.argv) + window = MainWindow() + window.resize(640, 512) + window.show() + window.open_file(":/examples/example") + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter.pyproject b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter.pyproject new file mode 100644 index 0000000..e42b221 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter.pyproject @@ -0,0 +1,4 @@ +{ + "files": ["syntaxhighlighter_rc.py", "syntaxhighlighter.py", + "syntaxhighlighter.qrc"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter.qrc b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter.qrc new file mode 100644 index 0000000..e5f9abf --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter.qrc @@ -0,0 +1,5 @@ + + + examples/example + + diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter_rc.py b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter_rc.py new file mode 100644 index 0000000..b3864f4 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter_rc.py @@ -0,0 +1,148 @@ +# Resource object code (Python 3) +# Created by: object code +# Created by: The Resource Compiler for Qt version 5.15.2 +# WARNING! All changes made in this file will be lost! + +from PySide2 import QtCore + +qt_resource_data = b"\ +\x00\x00\x06\xca\ +T\ +EMPLATE = app\x0d\x0aL\ +ANGUAGE = C++\x0d\x0aT\ +ARGET = \ +assistant\x0d\x0a\x0d\x0aCON\ +FIG += qt\ + warn_on\x0d\x0aQT \ + += xml n\ +etwork\x0d\x0a\x0d\x0aPROJEC\ +TNAME = A\ +ssistant\x0d\x0aDESTDI\ +R = .\ +./../bin\x0d\x0a\x0d\x0aFORM\ +S += finddialog.\ +ui \x5c\x0d\x0a he\ +lpdialog.ui \x5c\x0d\x0a \ + mainwindo\ +w.ui \x5c\x0d\x0a \ +settingsdialog.u\ +i \x5c\x0d\x0a tab\ +bedbrowser.ui \x5c\x0d\ +\x0a topicch\ +ooser.ui\x0d\x0a\x0d\x0aSOUR\ +CES += main.cpp \ +\x5c\x0d\x0a helpw\ +indow.cpp \x5c\x0d\x0a \ + topicchoose\ +r.cpp \x5c\x0d\x0a \ + docuparser.cpp \ +\x5c\x0d\x0a setti\ +ngsdialog.cpp \x5c\x0d\ +\x0a index.c\ +pp \x5c\x0d\x0a pr\ +ofile.cpp \x5c\x0d\x0a \ + config.cpp \ +\x5c\x0d\x0a findd\ +ialog.cpp \x5c\x0d\x0a \ + helpdialog.\ +cpp \x5c\x0d\x0a m\ +ainwindow.cpp \x5c\x0d\ +\x0a tabbedb\ +rowser.cpp\x0d\x0a\x0d\x0aHE\ +ADERS += \ +helpwindow.h \x5c\x0d\x0a\ + topiccho\ +oser.h \x5c\x0d\x0a \ + docuparser.h \x5c\ +\x0d\x0a settin\ +gsdialog.h \x5c\x0d\x0a \ + index.h \x5c\x0d\ +\x0a profile\ +.h \x5c\x0d\x0a fi\ +nddialog.h \x5c\x0d\x0a \ + helpdialog\ +.h \x5c\x0d\x0a ma\ +inwindow.h \x5c\x0d\x0a \ + tabbedbrow\ +ser.h \x5c\x0d\x0a \ + config.h\x0d\x0a\x0d\x0aRES\ +OURCES += assist\ +ant.qrc\x0d\x0a\x0d\x0aDEFIN\ +ES += QT_KEYWORD\ +S\x0d\x0a#DEFINES += \ +QT_PALMTOPCENTER\ +_DOCS\x0d\x0a!network:\ +DEFINES +\ += QT_INTERNAL_NE\ +TWORK\x0d\x0aelse:QT +\ += network\x0d\x0a!xml:\ + DEFINES \ + += QT_IN\ +TERNAL_XML\x0d\x0aelse\ +:QT += xml\x0d\x0aincl\ +ude( ../../src/q\ +t_professional.p\ +ri )\x0d\x0a\x0d\x0awin32 {\x0d\ +\x0a LIBS += -ls\ +hell32\x0d\x0a RC_F\ +ILE = assistant.\ +rc\x0d\x0a}\x0d\x0a\x0d\x0amacos {\ +\x0d\x0a ICON = ass\ +istant.icns\x0d\x0a \ + TARGET = assist\ +ant\x0d\x0a# QMAKE_\ +INFO_PLIST = Inf\ +o_mac.plist\x0d\x0a}\x0d\x0a\ +\x0d\x0a#target.path =\ + $$[QT_INSTALL_B\ +INS]\x0d\x0a#INSTALLS \ ++= target\x0d\x0a\x0d\x0a#as\ +sistanttranslati\ +ons.files = *.qm\ +\x0d\x0a#assistanttran\ +slations.path = \ +$$[QT_INSTALL_TR\ +ANSLATIONS]\x0d\x0a#IN\ +STALLS += assist\ +anttranslations\x0d\ +\x0a\x0d\x0aTRANSLATIONS \ + = assista\ +nt_de.ts \x5c\x0d\x0a \ + as\ +sistant_fr.ts\x0d\x0a\x0d\ +\x0a\x0d\x0aunix:!contain\ +s(QT_CONFIG, zli\ +b):LIBS += -lz\x0d\x0a\ +\x0d\x0a\x0d\x0atarget.path=\ +$$[QT_INSTALL_BI\ +NS]\x0d\x0aINSTALLS +=\ + target\x0d\x0a\ +" + +qt_resource_name = b"\ +\x00\x08\ +\x0e\x84\x7fC\ +\x00e\ +\x00x\x00a\x00m\x00p\x00l\x00e\x00s\ +\x00\x07\ +\x0c\xe8G\xe5\ +\x00e\ +\x00x\x00a\x00m\x00p\x00l\x00e\ +" + +qt_resource_struct = b"\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x16\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x01~*kP\x18\ +" + +def qInitResources(): + QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +def qCleanupResources(): + QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +qInitResources() diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/richtext/textobject/__pycache__/textobject.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/textobject/__pycache__/textobject.cpython-310.pyc new file mode 100644 index 0000000..b7020f6 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/textobject/__pycache__/textobject.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/richtext/textobject/files/heart.svg b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/textobject/files/heart.svg new file mode 100644 index 0000000..ba5f050 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/textobject/files/heart.svg @@ -0,0 +1,55 @@ + + + + + +Heart Left-Highlight +This is a normal valentines day heart. + + +holiday +valentines + +valentine +hash(0x8a091c0) +hash(0x8a0916c) +signs_and_symbols +hash(0x8a091f0) +day + + + + +Jon Phillips + + + + +Jon Phillips + + + + +Jon Phillips + + + +image/svg+xml + + +en + + + + + + + + + + + + + + + diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/richtext/textobject/textobject.py b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/textobject/textobject.py new file mode 100644 index 0000000..b828ea3 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/textobject/textobject.py @@ -0,0 +1,129 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the widgets/richtext/textobject example from Qt v5.x""" + +from PySide2 import QtCore, QtGui, QtWidgets, QtSvg + + +class SvgTextObject(QtCore.QObject, QtGui.QTextObjectInterface): + + def intrinsicSize(self, doc, posInDocument, format): + renderer = QtSvg.QSvgRenderer(format.property(Window.SvgData).toByteArray()) + size = renderer.defaultSize() + + if size.height() > 25: + size *= 25.0 / size.height() + + return QtCore.QSizeF(size) + + def drawObject(self, painter, rect, doc, posInDocument, format): + renderer = QtSvg.QSvgRenderer(format.property(Window.SvgData).toByteArray()) + renderer.render(painter, rect) + + +class Window(QtWidgets.QWidget): + + SvgTextFormat = QtGui.QTextFormat.UserObject + 1 + + SvgData = 1 + + def __init__(self): + super(Window, self).__init__() + + self.setupGui() + self.setupTextObject() + + self.setWindowTitle(self.tr("Text Object Example")) + + def insertTextObject(self): + fileName = self.fileNameLineEdit.text() + file = QtCore.QFile(fileName) + + if not file.open(QtCore.QIODevice.ReadOnly): + QtWidgets.QMessageBox.warning(self, self.tr("Error Opening File"), + self.tr("Could not open '%1'").arg(fileName)) + + svgData = file.readAll() + + svgCharFormat = QtGui.QTextCharFormat() + svgCharFormat.setObjectType(Window.SvgTextFormat) + svgCharFormat.setProperty(Window.SvgData, svgData) + + cursor = self.textEdit.textCursor() + cursor.insertText(u"\uFFFD", svgCharFormat) + self.textEdit.setTextCursor(cursor) + + def setupTextObject(self): + svgInterface = SvgTextObject(self) + self.textEdit.document().documentLayout().registerHandler(Window.SvgTextFormat, svgInterface) + + def setupGui(self): + fileNameLabel = QtWidgets.QLabel(self.tr("Svg File Name:")) + self.fileNameLineEdit = QtWidgets.QLineEdit() + insertTextObjectButton = QtWidgets.QPushButton(self.tr("Insert Image")) + + self.fileNameLineEdit.setText('./files/heart.svg') + QtCore.QObject.connect(insertTextObjectButton, QtCore.SIGNAL('clicked()'), self.insertTextObject) + + bottomLayout = QtWidgets.QHBoxLayout() + bottomLayout.addWidget(fileNameLabel) + bottomLayout.addWidget(self.fileNameLineEdit) + bottomLayout.addWidget(insertTextObjectButton) + + self.textEdit = QtWidgets.QTextEdit() + + mainLayout = QtWidgets.QVBoxLayout() + mainLayout.addWidget(self.textEdit) + mainLayout.addLayout(bottomLayout) + + self.setLayout(mainLayout) + + +if __name__ == '__main__': + + import sys + + app = QtWidgets.QApplication(sys.argv) + window = Window() + window.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/richtext/textobject/textobject.pyproject b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/textobject/textobject.pyproject new file mode 100644 index 0000000..ed41358 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/richtext/textobject/textobject.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["textobject.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/__pycache__/eventtrans.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/__pycache__/eventtrans.cpython-310.pyc new file mode 100644 index 0000000..fb8b9b2 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/__pycache__/eventtrans.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/__pycache__/factstates.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/__pycache__/factstates.cpython-310.pyc new file mode 100644 index 0000000..c4eea0e Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/__pycache__/factstates.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/__pycache__/pingpong.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/__pycache__/pingpong.cpython-310.pyc new file mode 100644 index 0000000..a8180ed Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/__pycache__/pingpong.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/__pycache__/rogue.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/__pycache__/rogue.cpython-310.pyc new file mode 100644 index 0000000..99a599f Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/__pycache__/rogue.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/__pycache__/trafficlight.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/__pycache__/trafficlight.cpython-310.pyc new file mode 100644 index 0000000..7e7935a Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/__pycache__/trafficlight.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/__pycache__/twowaybutton.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/__pycache__/twowaybutton.cpython-310.pyc new file mode 100644 index 0000000..722fdc9 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/__pycache__/twowaybutton.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/eventtrans.py b/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/eventtrans.py new file mode 100644 index 0000000..183f117 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/eventtrans.py @@ -0,0 +1,92 @@ + +############################################################################# +## +## Copyright (C) 2010 velociraptor Genjix +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2.QtWidgets import * +from PySide2.QtCore import * + +class MainWindow(QMainWindow): + def __init__(self): + super(MainWindow, self).__init__() + button = QPushButton(self) + button.setGeometry(QRect(100, 100, 100, 100)) + + machine = QStateMachine(self) + s1 = QState() + s1.assignProperty(button, 'text', 'Outside') + s2 = QState() + s2.assignProperty(button, 'text', 'Inside') + + enterTransition = QEventTransition(button, QEvent.Enter) + enterTransition.setTargetState(s2) + s1.addTransition(enterTransition) + + leaveTransition = QEventTransition(button, QEvent.Leave) + leaveTransition.setTargetState(s1) + s2.addTransition(leaveTransition) + + s3 = QState() + s3.assignProperty(button, 'text', 'Pressing...') + + pressTransition = QEventTransition(button, QEvent.MouseButtonPress) + pressTransition.setTargetState(s3) + s2.addTransition(pressTransition) + + releaseTransition = QEventTransition(button, QEvent.MouseButtonRelease) + releaseTransition.setTargetState(s2) + s3.addTransition(releaseTransition) + + machine.addState(s1) + machine.addState(s2) + machine.addState(s3) + + machine.setInitialState(s1) + machine.start() + + self.setCentralWidget(button) + self.show() + +if __name__ == '__main__': + import sys + + app = QApplication(sys.argv) + mainWin = MainWindow() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/factstates.py b/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/factstates.py new file mode 100644 index 0000000..bd71b20 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/factstates.py @@ -0,0 +1,111 @@ + +############################################################################# +## +## Copyright (C) 2010 velociraptor Genjix +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2.QtWidgets import * +from PySide2.QtCore import * + +class Factorial(QObject): + xChanged = Signal(int) + def __init__(self): + super(Factorial, self).__init__() + self.xval = -1 + self.facval = 1 + def getX(self): + return self.xval + def setX(self, x): + if self.xval == x: + return + self.xval = x + self.xChanged.emit(x) + x = Property(int, getX, setX) + def getFact(self): + return self.facval + def setFact(self, fac): + self.facval = fac + fac = Property(int, getFact, setFact) + +class FactorialLoopTransition(QSignalTransition): + def __init__(self, fact): + super(FactorialLoopTransition, self).__init__(fact, SIGNAL('xChanged(int)')) + self.fact = fact + def eventTest(self, e): + if not super(FactorialLoopTransition, self).eventTest(e): + return False + return e.arguments()[0] > 1 + def onTransition(self, e): + x = e.arguments()[0] + fac = self.fact.fac + self.fact.fac = x * fac + self.fact.x = x - 1 + +class FactorialDoneTransition(QSignalTransition): + def __init__(self, fact): + super(FactorialDoneTransition, self).__init__(fact, SIGNAL('xChanged(int)')) + self.fact = fact + def eventTest(self, e): + if not super(FactorialDoneTransition, self).eventTest(e): + return False + return e.arguments()[0] <= 1 + def onTransition(self, e): + print(self.fact.fac) + +if __name__ == '__main__': + import sys + app = QCoreApplication(sys.argv) + factorial = Factorial() + machine = QStateMachine() + + compute = QState(machine) + compute.assignProperty(factorial, 'fac', 1) + compute.assignProperty(factorial, 'x', 6) + compute.addTransition(FactorialLoopTransition(factorial)) + + done = QFinalState(machine) + doneTransition = FactorialDoneTransition(factorial) + doneTransition.setTargetState(done) + compute.addTransition(doneTransition) + + machine.setInitialState(compute) + machine.finished.connect(app.quit) + machine.start() + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/pingpong.py b/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/pingpong.py new file mode 100644 index 0000000..84c5cab --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/pingpong.py @@ -0,0 +1,96 @@ + +############################################################################# +## +## Copyright (C) 2010 velociraptor Genjix +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2.QtWidgets import * +from PySide2.QtCore import * + +class PingEvent(QEvent): + def __init__(self): + super(PingEvent, self).__init__(QEvent.Type(QEvent.User+2)) +class PongEvent(QEvent): + def __init__(self): + super(PongEvent, self).__init__(QEvent.Type(QEvent.User+3)) + +class Pinger(QState): + def __init__(self, parent): + super(Pinger, self).__init__(parent) + def onEntry(self, e): + self.p = PingEvent() + self.machine().postEvent(self.p) + print('ping?') + +class PongTransition(QAbstractTransition): + def eventTest(self, e): + return e.type() == QEvent.User+3 + def onTransition(self, e): + self.p = PingEvent() + machine.postDelayedEvent(self.p, 500) + print('ping?') +class PingTransition(QAbstractTransition): + def eventTest(self, e): + return e.type() == QEvent.User+2 + def onTransition(self, e): + self.p = PongEvent() + machine.postDelayedEvent(self.p, 500) + print('pong!') + +if __name__ == '__main__': + import sys + app = QCoreApplication(sys.argv) + + machine = QStateMachine() + group = QState(QState.ParallelStates) + group.setObjectName('group') + + pinger = Pinger(group) + pinger.setObjectName('pinger') + pinger.addTransition(PongTransition()) + + ponger = QState(group) + ponger.setObjectName('ponger') + ponger.addTransition(PingTransition()) + + machine.addState(group) + machine.setInitialState(group) + machine.start() + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/rogue.py b/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/rogue.py new file mode 100644 index 0000000..755b847 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/rogue.py @@ -0,0 +1,202 @@ + +############################################################################# +## +## Copyright (C) 2010 velociraptor Genjix +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2.QtWidgets import * +from PySide2.QtGui import * +from PySide2.QtCore import * + +class MovementTransition(QEventTransition): + def __init__(self, window): + super(MovementTransition, self).__init__(window, QEvent.KeyPress) + self.window = window + def eventTest(self, event): + if event.type() == QEvent.StateMachineWrapped and \ + event.event().type() == QEvent.KeyPress: + key = event.event().key() + return key == Qt.Key_2 or key == Qt.Key_8 or \ + key == Qt.Key_6 or key == Qt.Key_4 + return False + def onTransition(self, event): + key = event.event().key() + if key == Qt.Key_4: + self.window.movePlayer(self.window.Left) + if key == Qt.Key_8: + self.window.movePlayer(self.window.Up) + if key == Qt.Key_6: + self.window.movePlayer(self.window.Right) + if key == Qt.Key_2: + self.window.movePlayer(self.window.Down) + +class Custom(QState): + def __init__(self, parent, mw): + super(Custom, self).__init__(parent) + self.mw = mw + + def onEntry(self, e): + print(self.mw.status) + +class MainWindow(QMainWindow): + def __init__(self): + super(MainWindow, self).__init__() + self.pX = 5 + self.pY = 5 + self.width = 35 + self.height = 20 + self.statusStr = '' + + database = QFontDatabase() + font = QFont() + if 'Monospace' in database.families(): + font = QFont('Monospace', 12) + else: + for family in database.families(): + if database.isFixedPitch(family): + font = QFont(family, 12) + self.setFont(font) + + self.setupMap() + self.buildMachine() + self.show() + def setupMap(self): + self.map = [] + qsrand(QTime(0, 0, 0).secsTo(QTime.currentTime())) + for x in range(self.width): + column = [] + for y in range(self.height): + if x == 0 or x == self.width - 1 or y == 0 or \ + y == self.height - 1 or qrand() % 40 == 0: + column.append('#') + else: + column.append('.') + self.map.append(column) + + def buildMachine(self): + machine = QStateMachine(self) + + inputState = Custom(machine, self) + # this line sets the status + self.status = 'hello!' + # however this line does not + inputState.assignProperty(self, 'status', 'Move the rogue with 2, 4, 6, and 8') + + machine.setInitialState(inputState) + machine.start() + + transition = MovementTransition(self) + inputState.addTransition(transition) + + quitState = QState(machine) + quitState.assignProperty(self, 'status', 'Really quit(y/n)?') + + yesTransition = QKeyEventTransition(self, QEvent.KeyPress, Qt.Key_Y) + self.finalState = QFinalState(machine) + yesTransition.setTargetState(self.finalState) + quitState.addTransition(yesTransition) + + noTransition = QKeyEventTransition(self, QEvent.KeyPress, Qt.Key_N) + noTransition.setTargetState(inputState) + quitState.addTransition(noTransition) + + quitTransition = QKeyEventTransition(self, QEvent.KeyPress, Qt.Key_Q) + quitTransition.setTargetState(quitState) + inputState.addTransition(quitTransition) + + machine.setInitialState(inputState) + machine.finished.connect(qApp.quit) + machine.start() + + def sizeHint(self): + metrics = QFontMetrics(self.font()) + return QSize(metrics.width('X') * self.width, metrics.height() * (self.height + 1)) + def paintEvent(self, event): + metrics = QFontMetrics(self.font()) + painter = QPainter(self) + fontHeight = metrics.height() + fontWidth = metrics.width('X') + + painter.fillRect(self.rect(), Qt.black) + painter.setPen(Qt.white) + + yPos = fontHeight + painter.drawText(QPoint(0, yPos), self.status) + for y in range(self.height): + yPos += fontHeight + xPos = 0 + for x in range(self.width): + if y == self.pY and x == self.pX: + xPos += fontWidth + continue + painter.drawText(QPoint(xPos, yPos), self.map[x][y]) + xPos += fontWidth + painter.drawText(QPoint(self.pX * fontWidth, (self.pY + 2) * fontHeight), '@') + def movePlayer(self, direction): + if direction == self.Left: + if self.map[self.pX - 1][self.pY] != '#': + self.pX -= 1 + elif direction == self.Right: + if self.map[self.pX + 1][self.pY] != '#': + self.pX += 1 + elif direction == self.Up: + if self.map[self.pX][self.pY - 1] != '#': + self.pY -= 1 + elif direction == self.Down: + if self.map[self.pX][self.pY + 1] != '#': + self.pY += 1 + self.repaint() + def getStatus(self): + return self.statusStr + def setStatus(self, status): + self.statusStr = status + self.repaint() + status = Property(str, getStatus, setStatus) + Up = 0 + Down = 1 + Left = 2 + Right = 3 + Width = 35 + Height = 20 + +if __name__ == '__main__': + import sys + app = QApplication(sys.argv) + mainWin = MainWindow() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/state-machine.pyproject b/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/state-machine.pyproject new file mode 100644 index 0000000..dafb204 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/state-machine.pyproject @@ -0,0 +1,4 @@ +{ + "files": ["pingpong.py", "trafficlight.py", "twowaybutton.py", + "eventtrans.py", "rogue.py", "factstates.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/trafficlight.py b/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/trafficlight.py new file mode 100644 index 0000000..3be9b45 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/trafficlight.py @@ -0,0 +1,139 @@ + +############################################################################# +## +## Copyright (C) 2010 velociraptor Genjix +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2.QtWidgets import * +from PySide2.QtGui import * +from PySide2.QtCore import * + +class LightWidget(QWidget): + def __init__(self, color): + super(LightWidget, self).__init__() + self.color = color + self.onVal = False + def isOn(self): + return self.onVal + def setOn(self, on): + if self.onVal == on: + return + self.onVal = on + self.update() + @Slot() + def turnOff(self): + self.setOn(False) + @Slot() + def turnOn(self): + self.setOn(True) + def paintEvent(self, e): + if not self.onVal: + return + painter = QPainter(self) + painter.setRenderHint(QPainter.Antialiasing) + painter.setBrush(self.color) + painter.drawEllipse(0, 0, self.width(), self.height()) + + on = Property(bool, isOn, setOn) + +class TrafficLightWidget(QWidget): + def __init__(self): + super(TrafficLightWidget, self).__init__() + vbox = QVBoxLayout(self) + self.redLight = LightWidget(Qt.red) + vbox.addWidget(self.redLight) + self.yellowLight = LightWidget(Qt.yellow) + vbox.addWidget(self.yellowLight) + self.greenLight = LightWidget(Qt.green) + vbox.addWidget(self.greenLight) + pal = QPalette() + pal.setColor(QPalette.Background, Qt.black) + self.setPalette(pal) + self.setAutoFillBackground(True) + +def createLightState(light, duration, parent=None): + lightState = QState(parent) + timer = QTimer(lightState) + timer.setInterval(duration) + timer.setSingleShot(True) + timing = QState(lightState) + timing.entered.connect(light.turnOn) + timing.entered.connect(timer.start) + timing.exited.connect(light.turnOff) + done = QFinalState(lightState) + timing.addTransition(timer, SIGNAL('timeout()'), done) + lightState.setInitialState(timing) + return lightState + +class TrafficLight(QWidget): + def __init__(self): + super(TrafficLight, self).__init__() + vbox = QVBoxLayout(self) + widget = TrafficLightWidget() + vbox.addWidget(widget) + vbox.setContentsMargins(0, 0, 0, 0) + + machine = QStateMachine(self) + redGoingYellow = createLightState(widget.redLight, 1000) + redGoingYellow.setObjectName('redGoingYellow') + yellowGoingGreen = createLightState(widget.redLight, 1000) + yellowGoingGreen.setObjectName('redGoingYellow') + redGoingYellow.addTransition(redGoingYellow, SIGNAL('finished()'), yellowGoingGreen) + greenGoingYellow = createLightState(widget.yellowLight, 3000) + greenGoingYellow.setObjectName('redGoingYellow') + yellowGoingGreen.addTransition(yellowGoingGreen, SIGNAL('finished()'), greenGoingYellow) + yellowGoingRed = createLightState(widget.greenLight, 1000) + yellowGoingRed.setObjectName('redGoingYellow') + greenGoingYellow.addTransition(greenGoingYellow, SIGNAL('finished()'), yellowGoingRed) + yellowGoingRed.addTransition(yellowGoingRed, SIGNAL('finished()'), redGoingYellow) + + machine.addState(redGoingYellow) + machine.addState(yellowGoingGreen) + machine.addState(greenGoingYellow) + machine.addState(yellowGoingRed) + machine.setInitialState(redGoingYellow) + machine.start() + +if __name__ == '__main__': + import sys + app = QApplication(sys.argv) + widget = TrafficLight() + widget.resize(110, 300) + widget.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/twowaybutton.py b/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/twowaybutton.py new file mode 100644 index 0000000..27ed58e --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/state-machine/twowaybutton.py @@ -0,0 +1,70 @@ + +############################################################################# +## +## Copyright (C) 2010 velociraptor Genjix +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2.QtWidgets import * +from PySide2.QtCore import * + +if __name__ == '__main__': + import sys + app = QApplication(sys.argv) + button = QPushButton() + machine = QStateMachine() + + off = QState() + off.assignProperty(button, 'text', 'Off') + off.setObjectName('off') + + on = QState() + on.setObjectName('on') + on.assignProperty(button, 'text', 'On') + + off.addTransition(button, SIGNAL('clicked()'), on) + # Let's use the new style signals just for the kicks. + on.addTransition(button.clicked, off) + + machine.addState(off) + machine.addState(on) + machine.setInitialState(off) + machine.start() + button.resize(100, 50) + button.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/systray/__pycache__/main.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/systray/__pycache__/main.cpython-310.pyc new file mode 100644 index 0000000..471cc78 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/systray/__pycache__/main.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/systray/__pycache__/rc_systray.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/systray/__pycache__/rc_systray.cpython-310.pyc new file mode 100644 index 0000000..dd74875 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/systray/__pycache__/rc_systray.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/systray/__pycache__/window.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/systray/__pycache__/window.cpython-310.pyc new file mode 100644 index 0000000..76d5365 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/systray/__pycache__/window.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/systray/images/bad.png b/venv/Lib/site-packages/PySide2/examples/widgets/systray/images/bad.png new file mode 100644 index 0000000..c8701a2 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/systray/images/bad.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/systray/images/heart.png b/venv/Lib/site-packages/PySide2/examples/widgets/systray/images/heart.png new file mode 100644 index 0000000..cee1302 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/systray/images/heart.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/systray/images/trash.png b/venv/Lib/site-packages/PySide2/examples/widgets/systray/images/trash.png new file mode 100644 index 0000000..4c24db9 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/systray/images/trash.png differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/systray/main.py b/venv/Lib/site-packages/PySide2/examples/widgets/systray/main.py new file mode 100644 index 0000000..4fad002 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/systray/main.py @@ -0,0 +1,58 @@ +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +import sys + +from PySide2.QtWidgets import QApplication, QMessageBox, QSystemTrayIcon + +from window import Window + +if __name__ == "__main__": + app = QApplication() + + if not QSystemTrayIcon.isSystemTrayAvailable(): + QMessageBox.critical(None, "Systray", "I couldn't detect any system tray on this system.") + sys.exit(1) + + QApplication.setQuitOnLastWindowClosed(False) + + window = Window() + window.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/systray/rc_systray.py b/venv/Lib/site-packages/PySide2/examples/widgets/systray/rc_systray.py new file mode 100644 index 0000000..2d59adc --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/systray/rc_systray.py @@ -0,0 +1,2581 @@ +# Resource object code (Python 3) +# Created by: object code +# Created by: The Resource Compiler for Qt version 5.15.0 +# WARNING! All changes made in this file will be lost! + +from PySide2 import QtCore + +qt_resource_data = b"\ +\x00\x00d\xb4\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x02\xe8\x00\x00\x02\xe8\x08\x06\x00\x00\x00*Z\x00\x90\ +\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x09pHYs\x00\x00\x0d\xd7\x00\x00\x0d\xd7\x01B(\ +\x9bx\x00\x00\x00\x07tIME\x07\xdc\x03\x09\x08\x1e\ +4hf\xd9|\x00\x00\x00\x06bKGD\x00\xff\x00\ +\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00d4IDATx\ +\xda\xec\x9d\x07\xb8U\xc5\xb9\xbf\xf7i\x1c\x0e\xe7\xd0\xcb\ +\x01Tz\x95\xa6 \xbd\x8b\x14E@\x10Q\x14\xa4\x05\ +\x14\x14\x14AAD\xaaT\xe9\xe7h\xd4\xab&\xc6$\ +\xb6\xc4DM\xa2&\x1a{\x895\xb1w\x05\xd9k\xa7\ +\xdc\x14M\x8c\xc66\xf7\x1b\xf6J\x82W\x84\xb5\xf6\xd9\ +k\xd6\xac\xb5\xdf\xf7y\xde\xe7\xb9\xf7\x7f\xff\xf7F\xcf\ +\x9e\xf9\xe6\xb7g\xcf|\x93H\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00@.Q(\xd6um\x22\xb6\x12;\x8a=\xc4\ +>\xe2q\xe2(\xf1x\xf7\xbf\xd6\xf6u\xff\xe7\xda\xa3\ +\xdc\xff\x9dz\xee\xff-\x00\x80\xaaRM\xac\xef\xd6\x96\ +\xee\xfb\xd5\x9b~\xfb\xd5\xa1\xd1\xe2\x08\xf7\xbf\xee\xed\xfe\ +\xcf\xdb\xbb\xff;\x8d\xf7\xabk\xf9\xfc9\x01\x00\xc0\x06\ +j\x8a\xdd\xc4\x93\xc4\x05\xe2*\xb1B\xfc\x81x\x8f\xf8\ +\x94\xf8\x8e\xf8\x81\xa8\xb2\xec?\xc5\xdf\x8bo\x8a\x0f\x8a\ +7\x89;\xc5\xe5\xe2,q\x8c\xbb\x90\xd6\xe3c\x02\xc8\ +)\x1a\x89\xbd\xc4\xb1\xe2\x1cq\x85[\x97n\x13\x1f\x16\ +\xdf\x12\xff(~\x1c@]\xfa\x8b[\x93~#\xfeB\ +\xfc\xbe[\x97V\x8a\xe7\xbau\xa9\x93X\x83\x8f\x09\x00\ +\x00\xaaB\xb3Dz\xf7h\xb6\xb8^\xbc\xd9]|\xfe\ +\x14\xc0\xe2\x16\x94\x1f\x8a/\x88w\x8a\xbb\xc4\x0b\xc4\x13\ +\xc4\xe6|\xbc\x00\x91C\xefT\xb7\x16\xc7\x89\x17\x8aW\ +\x88?\x17_\x16?\x8aP]J\x89\x8f\xbb\x1b\x1ak\ +\xc5\x99\xe2\xb1\x89\xf4/\x8c\x00\x00\x00\xfb\xa8\x9eH\xef\ +8\xebEB\xef\xf8<\x90H\xef\x06\xa9\x98\xfb\x81\xbb\ +H^\x93H\xff\x0a\xa0\x7f\xc6\xae\xc3p\x00\xb0\x82\x86\ +\x89\xf4\xd1\xb7E\xe2\xf5\x89\xf4\xafr\xff\xc8\x81\xba\xa4\ +w\xf8\x7f%^.N\x15\xbb\x8aE\x0c\x07\x00\x80x\ +\x93\x97H\xff\xcc\xaaw\xc5\xbf#\xbe$~\x96\x03\x8b\ +\x9eW\xbf\x14_\x17otC\xbb>\x0b_\xca\xb0\x01\ +\x08\x94Z\xe2 q\xb1x\x8b\xf8.\xb5\xe8+\xfeK\ +|\xde\xddL\x98&\xb6e\xc8\x00\x00D\x1b}\x09J\ +\x9f}\xdc(>\x9a#;PA\xf8\xb6x\xb5x\xa6\ +x\x04\xc3\x0a\xa0J\xb4H\xa4\xcf\x88\x7f\xcf\x9d[\xd4\ +\x18\xff\xfe\xdd\xad\xe9\x1b\xdd\x1a\xcf\xaf\x7f\x00\x00\x16\xa3\ +;\x13\xe8\xb3\x8c\x9b\xc5\xa7\x13\xec\x8e\x07\xe1\xe7\xe2\xb3\ +\x89\xf4O\xd0\xfaXLu\x86\x1d\xc0A)sC\xa4\ +\xbe\xb0\xa9\x7f\xb5\xfb\x92:\x92u?\x11\x1fK\xa4\xcf\ +\xb4\xeb_\xfe\x0a\x18v\x00\x00\xe1\xa2\xcf\x8f/I\xa4\ +\xcf-\x06\xd1\x9d\x00\x0f\x1d\xd8\x9fqw\xb2t`\xa7\ +\x15$\xb0Q\x90\x9e\x0b\x1b\xdd\xb9\xf1\x05u\xc2\xb8\x1f\ +\xb9k\xc2y\x09.\xc5\x03\x00\x18A\x9f#\xd7\xad\xc4\ +6\x89/\xb2\x10Y\xe7\x1eq\x878 A\x7fd\xc8\ +\x1d\x0a\xddP~U\x22\xdd\x06\x95Z`\x8f_\xb8_\ +\x94V\x8b]\x18\xaa\x00\x00\xd9\xe5\x98D\xfa\xe8\x0a\x17\ +\xa8\xa2\xa3#V\x8aC\x13\xfc\xe4\x0c\xf1C\xef\x94\xeb\ +\x07\xc6\xae\x15\xff\x97\xf9\x1e\x19_u\xc3z'\x860\ +\x00@f\xe8\x17\xee\xf4\xcf\xc4\x5c\xa4\x8aG\xfb4\x1d\ +\xd6\xf5\xf9\xd0<\x866D\x14\xfd\xab\xd0\xb0D\xba\xf5\ +\xe1\xdf\x98\xd7\x91W\xf7\x90\xd7\x8f)udh\x03\x00\ +\x1c\x9c\x96\x89\xf4E\x9f7Y\ +\x7f\xde\xa9\ +\xef\xce\x943\x1d\x01\xc0$\xba\xe8\x5c\xe1\xee\x16P\x8c\ +\xd1\x06?I\xa4/\xfe5dz\xe6,\xfaK\xda\xf5\ +\xee\x976\xe6\x04\xda\xe0?\xc4\x8d\x89t\xc7 \x00\x80\ +\xc0\xa8\x96H\xb7%\xe3\x11\x0f\xb4\xf9\xd2\xd6j\xb1\x8c\ +\xe9\x9a3\xd4w\xbf\x9c}\xc2\xf8GK\xfd\xbd8[\ +,`\xba\x02@\xb6\x19\x9fH\xf7\xa6\xa6\xd8b\x14\xdc\ ++NI\xa4\x1f\xc7\x82x\xa2\x1f\x18:G\xfc3\xe3\ +\x1d#\xe2\xef\xc4c\x99\xba\x00\x90\x0dtk\xb2_S\ +X1\xa2>&\x1e\xc34\x8e\x1dC\xc5\x17\x18\xdf\x18\ +Q\xf5\xcb\xa4m\x99\xc6\x00\x90\x09\xfa\x9c\xb9\xeeeN\ +g\x16\x8cC\xc7\x17}\x99\xb91\xd3:\xf2\xe8~\xd3\ +\xb71\xa61\x06\xea;\x5c[\x13\xb82\xb8U\x03\xb1\xbd8@\x9c \xce\x16\x97\ +\x89\xdb\xc5k\xdd\x9ar\xb7\xf8\xa8[k\x0eV\x8b\x9e\ +\xd9\xafn\xdd\xbb_=\xbbI\xbcB\x5c+.\x14\xcf\ +\x14O\x10\xfb\x88\xad\xc5b>\x0b\xaf:\xe2D\xa68\ +\x00\x1c\x0c\xa9\xe9\x89\x87(\x98_\xb5\x898D\x9c!\ +\xaep\xc3\xf2/\xc4\x17D\xc7\x12\xdf\x16\xef\x17\xaf\x17\ +W\xba_\x14\x06\x89\x87\xf1\xf9\x1d\xc8\x07\x12\xfc\xbc\x1c\ +%\xba\x8b\xcf1n\xffk\xbe\xd8L:~\x8b\xa1\x9e3\xe3(\x1f\x811^\xfcs\ +\x9c~\xc1\xeb\xeb^p|\x95\xba\x10\xba\xbf\x16\xcf\x13\ +[\xc4\xaf.\xbd\x9fH\xbf\xa4\x0b\x00\x11\xa6\x9axe\ +\x5c\x0aSC\xf7<\xf4\x83,>\xd6\xfa\x98\xb8(^\ +gC\xbf\x14+\x13\x5c\xd4\xca&\xa5q\xaaK-\xdd\ +3\xe5O3\xff\xad\xf5\x1e\xb7_|\xedx\xbd\x8e\xbc\ +:A;F\x80H\xa2\x7f\x9e\x7f\x22\x0e\xbbR\x83\xdc\ +\xc7\x81v\xb3\xd0D\xeal\xa8\xbe\xc8u\x5c|\xda7\ +\xea\xc7\x8d\xca)+U\xa6\x83\xf8j\xd4\xc7\x83n\x87\ +8\xd6\xed\xe3\xcd]\x97h]|\xd7\xefA\xf4\x8aO\ +P\xff\x99X\x97\xb2\x02\x10\x1d\x86\x88\x7f\x88r\xe1)\ +w{\x01?\xc1\xa2\x12y\xf5\xce\xe2\x05\xf1\xd8U\xdf\ ++\xf6\xa3\xbcd\x8c>\xd2\xf2a\xd4w\xcb\x97\xd3\xa6\ +5\x16>\xe8\xb6\xdd\xad\x1b\xfd\xba\xf4\x96\xd8\x8d\xf2\x02\ +`7\xfa\xe7\xae\x8d\x89\xf4\xcf\xf2\x91,6\xc7\xb8;\ +\xaf{\xa3\xfc\xd8Fa\xa1J\xd5\xae\xadRM\x9b*\ +\xa7m[\xe5t\xeb\xa6\x92\xfd\xfa)g\xc4\x08\xe5\x8c\ +\x1b\x97v\xd2$\xe5L\x9e\xac\x9c)S\x943k\xd6\ +\xd7L\x9dqF\xfa\x7f\xae=\xe9$\xe5\x8c\x1c\xa9\x9c\ +\xc1\x83\x95\xd3\xab\x97r\xbavM\xff\xdfm\xdcX9\ +\xc5\xc5\x91\xf9\xbb\xecu?\xdb\x81\xd1^\x0c?O\xa4\ +{\x13\xf3\xd3\xb2w\xf4\xf1\xa0\xab\xa3\xfa\x99\xe7\xb9\x17\ +>\x7fJ\xa8\x8d\xa5\xbb\xdd]\xf5\x88_,\xd5\x9d\xd9\ +\xce\xa3\xd4\x00\xd8IM\xf1\xd6\xa8\x16\x18}\x8c\xe5\xe6\ +\x08\x05p\xa7\xbc\x5c9G\x1e\xa9\x9cA\x83\x943~\ +\xbcrf\xcfV\xce\xd2\xa5\xca\xd9\xb2E9W\x5ca\ +\xd4\xe4\xd6\xad\xcaY\xbe\x5c9\xf3\xe7+g\xeaT\xe5\ +\x8c\x1a\xa5\x9c\x1e=\x94\xd3\xac\x99rJJ\xac\xfc\x1b\ +\xea\xb0s\xbc{\x84)\xa2c\xf6\x87b\x0d\xca\xce!\ +\xd1\x1d'\xee\x8e\xe2g\xac\x8f\xb1\x9c,\xfe\x92\x10\x9b\ +\x13\xea\x0d\x84\xeb\xdcM\xa2\x08\x07\xf5+\x12\xe9\xbbg\ +\x00`\x09m\xc4W\xa2VLt{>\xfd\x9c\xf3}\ +6\x17\xee:u\x94\xd3\xa9\xd3\xbe\xdd\xef\xd4\xcc\x99\xfb\ +\x82p\xaa\xa2\xc2x\x08\xaf\x92\x1b7*\xe7\xfc\xf3\xd3\ +\xbb\xf6\xfd\xfb+\xa7E\x0b\x95\xaaV\xcd\x8a\xbf\xef\xc3\ +n\x08\x8a\xe89\xf5g\x13\xb4b<\x18\xfa\xbc\xf9\x9b\ +Q\xfb\x5c\xab\xb9\xafVr\xe93w\xd5\xbd\xd5GE\ +\xf7\xbd\x87\xc7\xc5\xc6\x94\x1f\x80\xf0\xd1\xaf\x82\xfe)J\ +\x05D\xef\x9a\x8e\x17\x1f\xb5\xad0\x97\x95)\xa7sg\ +\xe5\x8c\x19\xa3\x9c\x05\x0b\x94\xb3ys\xb4\x82\xb8\x1f+\ ++\x95\xb3b\xc5\xbe\x1d\xf7}\xc7o\xf4q\x99\xbc\xbc\ +P\xbb\xbfL\x8afOu\xf9\xc7O\xf4\xa2\x0c}\x8d\ +\x91\xe2_\xa3\xf4Y\x16\xbb\x9d>xL\x08\xff\xed/\ +\xdd\xe3M\x11\x0c\xe9\xef\x89\x9d)C\x00\xe1qZ\x22\ +\xfd\xf2ad\xcer\x9e\xe0\xf6\xa7\xb5\xa1\xf8\xa6\x9a4\ +Q\xa9\x81\x03URBjj\xe5\xca\xf8\x86q\xaf\xea\ +/$g\x9f\xad\x9ca\xc3\x94s\xc4\x11\xa1\x04v\xdd\ +\xd7\xfe\xa4\xe8\x1d}\xd1s\xf0t\xca\xd1\x7f\xd0ga\ +?\x8f\xd2Q\x96\xa9\xe2\xf3\x04R\xfc\x06\x7f\xe6\x1e\xc3\ +\x8cXH\xff\x9b8\x9cr\x04`\x1e\xfd\x1cyd.\ +\x83\xeav{\xf7\x86]h\xf5\xb1\x8e\xae]UJ_\ +\xbc\x5c\xbb\x96@\xee%\xb0\x7f\xeb[\xca\x91/1N\ +\xc3\x86F?+}\xeciX\xf4\xfa\xa5_\x9a\xe35\ +I_\x9c\xad\x88\xd2\x86\xc18\xf7\xd7\x1bB(z\xf1\ +v\xb1w\xb4\xea\xd2\xa7\xe2l\xe2\x12\x80\x19tG\x84\ +\xeb\xa3R \x8et{\x05\x87VT\x1b4H\xef\x08\ +\xcf\x9f\xafR;w\x12\xba\xab\xa2\xbe\x88:f\x8cJ\ +\xea\xcb\xa7\x86v\xd7\x7f\x12\xbd\x17J\xf5\xa3F\x059\ +X\x97\x8a\xc5\x9b\xa3\xf29\x0d\xe0\xf2'V\xc1\xeb\xa2\ +\xf7B\xa9\xee\xee\x96G|\x02\x08\x8e:\xe2\xfdQ(\ +\x08\xfa\xd5\xcf\xcb\xdd\x07kB\xb9\xd8y\xec\xb1\xca\xb9\ +\xf0BBuP^v\x99rN9E9-[\x06\ +\x1e\xd6\xf5C0\x15\xd1\xea\xa3~\xbbX\x92cu\xe9\ +\x81(|6\xba\x8f\xf9w\x09\x98\x98\xa5\xf6\x8c\x97\x8a\ +\xb5\xa2S\x97n\xcd\xb1\xba\x04`\x8c\xfa\x89t\xd7\x08\ +\xeb; \x9c#\xben\xba\xf5\xa1\xbe\xe0\xa9[\x1e.\ +\x5c\x98\xbe\x00I\x886fj\xf5j\xe5\x8c\x1e\xad\x9c\ +F\x8d\x02\xfd\x8c\xdf\x16\x17\x89%\xd1X\x0c\x1fM\xa4\ +[\x0c\xc6\x1d\xdd\xc5\xe6\x05\xdb?\x0f\x1d\xa2V\xf1\x1a\ +1\x06\xe0\x8b\xe2\x99\xd1\xe9D\xa5\xebRm\xe2\x14@\ +\xf6h\x22\xbeh\xfb\xe4\x1f->i\xb28\xe6\xe7\xa7\ +[ \xce\x99\xa3\x9c]\xbb\x08\xcb6\x84\xf5\x0b/\xdc\ +w\xf16\xc8\xfe\xebOG\xa7\xb3\xc2+\xee\xdc\x8d+\ +\xed\xc5\xf7m\xff\x1c\xc6\xf3\xf2'\x1a\xf0~\xf7\xe8T\ +\x04\xea\xd23b\x03b\x15@\xd5i+\xee\xb6\xfdg\ +\xe3\x1f\x9b\xec\xbe\xa2_\xe8<\xe5\x14\x95\xd2\xfd\xbd\x09\ +\xc5v\xaa\xcf\xfb\xebWQ\xbbtI\x7f\x91\x0a`\x1c\ +\xdc&\xb6\x8aF\xbb\xb3\xd61\xacK=\xc5\xbf\xd8\xfc\ +\xb7o\xcf\xeb\x9f\x18\x82\xfa\xb5\xe4\xc6\xf6\xd7\xa5\xd7\xc4\ +#\x88W\x00U\xdb\xa1\xdac\xeb$\xd7]\x10\xce\x10\ +_3Q\xf8\xf49\xe7\xce\x9dU\xea\x9cs8\xc2\x12\ +\xb5]\xf5K/U\xa9\xc1\x83\xd3]t\xb2<.\xde\ +\x10g\xd9\xdf\x96\xf1\x1d\xb1e\x8c\xea\xd2Q\xe2\x1fm\ +\xfd{\xeb\xb6\x89\xe7\x89\xef\x10\x161$\x7f'\x8e\xb5\ +?\xa4\xbfAH\x07\xc8\x8cn\xe2\x1fl\x9d\xdc-\xdc\ +\x1dL#\xad\x11\x87\x0eU\xce\x9a5\x84\xdd\x88\x9b\xdc\ +\xba5\xfd\xcbG\xbdzY\x1f'\xfa\x17\x9c\xe6v/\ +\x86\xfa\x8bv;v\xce\x83\xef\x1aEw\x16\xb4\xc5\xef\ +\x88\xe5\xfc\xc2\x07\x10+\xfa\xd8\xba\x08\xea\x9d\xca\xb3\xdc\ +\x0b{\x81\x16\xb7\x1a5Tj\xe4H\x95\xda\xb0\x81p\ +\x1b\xb7\x1d\xf5\x9d;U\xea\x8c3T2\xcb\x97J\xdf\ +\x12g\xd8\xfd<\xb7~u4\xca\xaf\xfb\x0d\x10?\xb0\ +u\xd7\xfc\x02.\x81\xa2\x85\xea_\x98O\xb5;\xa4'\ +\xc5\x0e\xc4.\x80C\xd3[\xfc\xd0\xc6\x89\xdc\xd8DO\ +\xf3\x9a5\x953a\x82r\xb6m#\xcc\xc6\xdd\x8a\x0a\ +\x95\x9c>]9M\x9adu\x0c\xfd\xc8\xee\xdd\xf4?\ +\x89]\x22X\x97\x06\x89\x1f\xb1k\x8e\x98\x99\xd7\x88u\ +\xec\xadK\xef\xc7\xec\x18\x1e@ \xc7Z\xac\xdc9\xd7\ +\x1dZ^\x09\xb2\x80\xd5\xae\xad\x1c\xfd\xc2'\x8f\x09\xe5\ +\xa6\xfa!)\xddS=K\xe3\xe9M\xbbw\xad~\x9f\ +H\xdf/a\xd3\xa0\x8aw`\xcef\xd7\x1c#\xe4\xb3\ +b\x7f\xbb\xef\xca\x1cN\x0c\x03\xf8:G\x8b\x7f\xb5m\ +\xd2\xd6\x16\xaf\x0e\xb2h\xe9v|'\x9e\x98>\x9fL\ +P\xcdm++UJw~i\xd80\xabg@\xeb\ +\xda\xb9\x18\xea\xfb%GF\xe4X\xcb?l\xfc5\xef\ +G\x04>\x8c\xa0\xfa\xe1\xb5\xcd\xf6\xbe\xe7\xa0;\xc65\ +'\x8e\x01\xfc\x97\x16\x09\x0b\xfb\x09\xeb'\xd6\x1f\x0b\xaa\ +P\x15\x15)g\xe4H\xe5l\xd9B0\xc5\xaf\xaa{\ +\xdaO\x9a\x94>\xee\x94\x85\xb1\xa6{\xf3w\xb7\xf7\x82\ +V3\x8b\xebRg\xf7H\x8eU\x7f\xb7\xc1\xe2o\x09\ +z\x18q\xef\x16[\xdbY\x97\xf4\xc3c\xf5\x89e\x00\ +\x89DS\xf1-\xdb&\xe9\xb7\x82\xfa\xe9X\xb7K\xec\ +\xd1C9k\xd7\x12D\xf1\xd0]_\x8e?>\xfde\ +.\x0b\xcfr\xcf\xb0\xb7\x1f\xb1\x8d\x8f\x86\xb4J\xa4/\ +\xb5ZuA}\xb1\xbb\x03I\xc0\xc38\xa8\x9b-L\ +\xb0\xb3.=\x9d\xe0\xc5Q\xc8q\xf4\xc2\xfc\xb2M\x13\ +\xb3\x86xeP\x05\xa9M\x1b\xe5,]J\xf8D\x7f\ +]_\xd6\xafWN\xef\xde\xe9/wU\x1c\x83;\xc5\ +b\xfb\x16\xc3\xdf\x88\xa5\x16\xd5\xa5\x86\x89t\x8fdk\ +\xfeF\xb5\xc4\xef\x11\xe80\xa6^\xe6v\x22\xb2\xac.\ +=jY]\x020F\x89\xf8\x84M\x13\xb2\xa5\xfb\x5c\ +q\x10\x17@\x93S\xa7\xf2\xc0\x10V\xcdy\xf3\xb2r\ +>\xfd^\xf1p\xfb\x16\xc3_\x88E\x16\xd4\xa52\xf1\ +)\x9b\xfe6\x1d\xc4\xc7\x09q\x18s\xef\xb0\xb3g\xfa\ +\x9db\x01q\x0dr\x89|\xf1v\x9b&\xe2\x88 ^\ +\x04\xd5;\x9e\x83\x06)\x87\x0b\xa0\x98\xc5\x1e\xea\xce\xe8\ +\xd1*YXX\xa5\xb1\xf9\x92x\xac}\x8b\xe1\x0db\ +^\x88uI\x7fA\xb8\xc7\xa6\xbf\xc9x\xb7#\x0f\x01\ +\x0esA}\xb7\xa2\x8f}u\xa9\x92\xc8\x06\xb9\xc4v\ +\x9b&\xe0\x1cqo\xb6\x8bM\xf3\xe6\xcaY\xb6\x8cP\ +\x89\xc1\xb8f\x8dJv\xe8P\xa51\xfa\xbe8\xcb\xbe\ +\xc5pc\x88u\xe9\x06[\xfe\x0e\xba\x85\xe2E\x9c7\ +\xc7\x1c\xf4=\xf1d\xfb\xea\xd2\x22b\x1b\xe4\x02\x17\xda\ +2\xe9\xf4\x99\xb7\xed\xd9.0\xc5\xc5\xe9\xe7\xdc+*\ +\x08\x91\x18\xbc\xba-cYY\x95\xc6\xecv\xfb\xce\x7f\ +\x9e\x13B]Ze\xcb\xbf\x7fM\xf1\xfb\x045\xccq\ +\xd7\xb8\x17\xa3-\x99\x97_\x8aS\x89o\x10g\xc6\x89\ +\x9f\xdb0\xe1\xca\xc4\x1b\xb3\x5cP\xf4C3\xa9K/\ +%4\xa2Y/\xbb\xac\xca\xbb\xe9?\x10K\xedY\x0c\ +\xff%\x0e1X\x97&\x88_\xd8\xf0\xef^_\xbc\x8b\ +p\x86\xb8\xcf]vm\x1e\xfcS\xecG\x8c\x838\xd2\ +_\xfc\xd8\x86\x89v\x84\xf8`6\x0b\x89>\x0f|\xca\ +)\x5c\x02\xc5p\x9d6-\xfd\x0bN\x86\xe3\xf8\x01\xb1\ +\xa9=\x8b\xe1\x07\x89t\x1f\xf2\xa0\xe9kK]\xd2=\ +\xa1\x7fC(C\xfc\x8a?\x13\x1b\xdaS\x97\xfe&v\ +!\xceA\x9c\xd0\xcf\xe7\xa6l\x98`\x9d\xc4\xe7\xb2Y\ +@\x1a5R\xceE\x17\x11\x0e\xd1\x9a\xb3\xe9N\xabV\ +\x19\x8f\xe7'\xdcnF\x96,\x86\xaf\x8au\x02\xacK\ +\xfa\x0d\x86\xbd6\xfc\xbbv\x14\x9f'\x8c!\x1e\xd0G\ +\xc4\x16\xf6\xd4\xa5\xd7\x03\xaeK\x00\xc6(NX\xd2N\ +\xf1\x98lwj\xe9\xde]9\x97_N(\xc4\xc0^\ +\x14Mm\xd8\xa0\x9c\xe5\xcbUr\xe1B\xe5\xcc\x99\xa3\ +\x9c3\xceP\xa9\xf1\xe3\x953n\xdc\xben.\xa9\x11\ +#\x943|\xb8r\x06\x0c\xf8\xaf\x03\x07\xaaT\xf5\xea\ +\x19\x8f\xeb\x17\xedzy\xf4\xdeD0m\xcet\x9b\xd7\ +gl\xf8w\xec\x1bD\x07)\xc4\x98\xa9\xbf\xc0\xb6\xb3\ +\xa7.\xdd\x95Hw\xa3\x03\x884\xdf\xb6aB\xf5\xcf\ +f\xbb2\xfd\xb2\xe3\x94)\x04H\xac\x9a[\xb6\xec{\ +\xb8*5{\xb6rt\xe8\x96`\xed\x1cy\xa4J6\ +jT\xa5\x80\x9d\x0d\xdf\xb0\xab\xdd\xd9\xfa\x00\xea\x92\x15\ +\x1d[F\x89\xef\x12\xbe\x10=\xb7\x87\xedlO]Z\ +A\xbc\x83(s\xb6\x0d\x13\xe9\x04\xf7\xa9\xf3\xac\x14\x89\ +\x06\x0d\x94s\xf1\xc5\x84K\xf4\xd7\xbb\x5c\xbf \xab\x1f\ +\xab\x1a6L9\xed\xdbW\xb9\xf3\x8a\xa9vg#\xed\ +Y\x0c'e\xb1.\x9do\xc3\xbf\xd3\xa9n\xabK\x82\ +\x17\xa2w\xdf\x12\x07\xd8\xd3\xd9\xe5db\x1eD\x11\x99\ +C\x89O\xc3\x9eD\xa7ds\x11\xec\xd4\x89#-x\ +\xf00\xae\xdbk\xea0~\xea\xa9\xca\xe9\xd5K9M\ +\x9a\xa8d~~d\x17\xc3\xdd\xee\x17\x5c\x0b\x16\xc3\xbf\ +\x8b\x9d\xb2P\x97\x06\x89\x9f\x85\xfd\xef3\x83\x1e\xe7\x88\ +\x19\xfb\xb68\xc4\x8e\xba\xf4\xa1\xd8\x91\xb8\x07Q\xa2\xbe\ +\xf8^\xd8\x93G\xbf\xc2\xb7'[/\x82\x8e\x1eM\x97\ +\x16\xfc\xba\xfa\x0b\xdb\xd9g+g\xe4H\xe5\xb4m[\ +\xa5.*6\x87\xf4\xe3\xedX\x0c_\x14K\xabP\x97\ +\x1a\x89\xef\x87\xfd\xef1%\x88\x87\xd1\x10s\xccw\xec\ +y\x0d\xf9y\xb1\x06\xb1\x0f\xa2\x80\xbe\xd0uo\xd8\x93\ +fL\xb6v\xcek\xd4P\xce\xbcy\x04QL\xab\xbf\ +\xa4\xe9\x1d\xf2\xb1c\x95\xd3\xba\xb5r\x22\xbc;\xee7\ +\xa4\x8f\xb2c1\xfca\x86uI_\xe8\xba/\xec\x7f\ +\xfe\xa9\xec\x9c#f\xb5.\x1dgG]\xfa\x1e\xd1\x0f\ +\xa2\xc0\xea\xb0'\xcb\xf0l\x9d9\xaf_\x9f\x87\x87P\ +9\xdb\xb6)\xe7[\xdfRN\xdf\xbe*U\xbbvN\ +/\x86\x96\xecX\xcd\xcc\xa0.-\x0f\xfb\x9f{\x12;\ +\xe7\x88\x81\xec\xa4\xf7\xb7\xa3.\xcd&\xfe\x81\xcd\xf4\x0b\ +\xfb|\xe7`\xf7r[\x95'~\x9b6\xca\xd9\xbc\x99\ +p\x9a\xa3&\xb7nM?\xfc\xa3_\xe8\xcc\x91]r\ +\xaf\x8b\xa1\x05\x17\xb4\xfe!\xb6\xf7Q\x97\x06\x86]\x97\ +\xc6r!\x141\xd0\xaeS\xdd\xed\xa8K\xed\x88\x81`\ +#\xb5\xc4\xb7\xc3\x9c }\xdc\xcb#U\x9e\xf0={\ +\xa6;o\x10Ts\xcb\xed\xdb\xd3\xa1\xbcK\x97t+\ +M\x16\xbeo\xec\xa2\xd0+\xfc\xc5\xf0\xb9D\xfa\x8d\x05\ +/\xf7a\xf6\x84\xf9\xcf:\x22\x9b]\xa4\x10\xf1\x80\xbe\ +*\x1e\x19~]zZ,\x22\x0e\x82m|7\xcc\x89\ +\xd1\xc3\xfd\x16]\xe5\x89>t(\x97As\xad\xf3\xca\ +\x8a\x15\xfb\xda\x1f&#\xd0\xfa\xd0\xa6\xc5\xb0C\xf8\x8b\ +\xe1\xb6C\xd4\xa4<\xf1\xce0\xff\x19{\xb9\xbf:0\ +f\x10\x83\xf7\x05\xb1u\xf8ui\x1dq\x10l\xe2\x94\ +0'D[70T\xb9S\xcb\x84\x09\x04\xd6\x5c\x09\ +\xe5;v(\xe7\xcc3UJ\x1feba\xcb\xc8\xe7\ +\xc4\xc3\xc2\xefC<\xea uiv\x98u\xa9}6\ +\xea\x12\x22\xfa\xf2\x19\xb1<\xdc\xba\xf4\xb9{\xac\x0e \ +tZ\x88\x7f\x0bk24I\xa4\x9f\x00\xaej8O\ +\x9dv\x1a\xc15\x17\x82\xb9\xbe\xf4;h\x90rJJ\ +X\xcc\xb2\xe0\xe3b\xa3p\x17\xc3?\x8a\xe5\x07\xa8K\ +m\xc4\x8f\xc2\xfa\xe7j)\xbe\xc8\xf8@\x0c\xc5\x07\xc5\ +Z\xe1\xd6\xa5\xbd\xee\xf1:\x80\xd0\xd0\xad\xcb\xee\x0fk\ +\x12T\x17\xef\xaa\xead.(P\xce\xcc\x99\x84\xd78\ +\xab\x1f\x0f\x9a5+\xdd\x16\x91\xc5+\xeb\xea9Xl\ +W\xebE}\xb4%\xb4\x96\x8ae\xe2\xfd\x8c\x0b\xc4P\ +\xbdA,\x08\xb7.\xddHD\x840Y\x10\xd6\xe0\x97\ +o\x06\xea\xea\xaaNb}\x11p\xee\x5c\x02l\x9c/\ +}\x9er\x8aJ6h\xc0\x82\x15\xb0W\x8ay\xe1.\ +\x86\xa7\xecW\x97\xe6\x86\xf5\xcf\xa1\x03\xc1\xf7\x18\x0f\x88\ +V\xb8.\xfc\xf3\xe8'\x12\x13!\x0c\x9a%\xd2\xcfo\ +\x872\xf0/\xa9\xe2\xc4M\x16\x16*\xe7\xac\xb3\x08\xb1\ +q\x0d\xe6'\x9d\xa4\x9cZ\xb5X\xa4\x0c\xba0\xdc\x85\ +\xf0Obc\xb1e\x98u\xe92\xc6\x01\xa2U~+\ +\xdc\xba\xa4;H\xd5\x22.\x82i~\x1e\xd6\xa0\x9f\x9c\ +\x8d\x9d\xf3\xf9\xf3\x09\xb2q\xbc\xf89n\x9crJK\ +Y\x98BP\xbf\x909&\xdc\xc5\xf0\x16\xf1\xd7a\xfd\ +\xe7\xcf`\x0c Z\xa7~\x7f`x\xb8u\xe9\x0a\xe2\ +\x22\x98\xe4\xf4\xb0\x06{\xf7\xaa>D\xa4\xcf\x9c\xb3s\ +\x1e\xaf`\xae{\xd6\xeb`^\xb3&\x0b\x92\x05\x0f\x19\ +u\x0e\xffge\xe3\x0e\xe4!\x22Dk}Ml\x11\ +^}\xf8\x22AW\x170\x84\xbe\x99\xfc\x870\x06z\ +\x03\xb7\x85R\x95Z)N\x99B\xa8\x8d\x93s\xe6(\ +\xa7qc\x16!\x8b|R\xac\x93C\xe1\x5c\xb7\x9a|\ +\x89\xcf\x1d\xd1j\xf5\xc5\xed\x1a\xe1\xd5\x09\xf9\x8e\x90\xa8\ +N|\x84\xa0\xf9a\x18\x03\xbc\xa8\xaa\x1d[t8\x9f\ +:\x95@\x1b\x17\x17-R\xc9f\xcdXx,\xf56\ +\xb10\x07\xc2y\x09\x1d[\x10#\xe3w\xc2\xbd\xcc~\ +9\xf1\x11\x82dxX\x0b\xe1\xa5U\x9d\x9c\xfa\x08\x04\ +\xc16\xfa\xc7Y6nTN\xff\xfe\xca\xc9\xcfg\xc1\ +\xb1\xdc\xc59\x10\xd07\xf39#ri\xd4\x9b\x9f\x8a\ +\xdd\x88\x91\x10\x04\xd5\xc4\xd7\xc3\x18\xd8c\xdc\x0bh\x19\ +O\xca\xa1C\x09\xb7q8g\xae;\xb3T\xaf\xce\x22\ +\x13\x11\xf7\x8aCb\x1c\xce'\xf1\x19#F\xce\xddb\ +\xef\xf0\xea\xc6#\x89\xf4;\x0d\x00YeQ\x18\x03\xba\ +\x8d\xf8fU&d\xaf^\xca\xa9\xac$\xe4F9\x9c\ +\x9f{\xaer\xea\xd7gq\x89\xa0\xbfK\x84\xfe\xd2h\ +`u\xe9->_\xc4H\xfa[\xb1<\xbc\xfaq\x1a\ +q\x12\xb2\x89\xac\xb1\x89\xbf\x85q\xee\xfc\xde\xaaL\xc4\ +v\xed\x94\xa3w^\x09\xb9\xd1\x0c\xe6\x9b6)\xa7{\ +w\x16\x94\x88{K\x22\xfd\xb0X\x5c\xc2y1\xe7\xce\ +\x11#\xef\x0f\xc3;\x8f\xbe[,!VB\xb6\xb8>\ +\x8c\x85peU&`y\xb9r6o&\xe8FQ\ +\xfd\x8b\xc7\xe4\xc9\xca\xa9Q\x83\x85$&.\x8aQ@\ +\xdf\xca\xe7\x89\x18\x0b\xe7\x86WG\xd6\x12+!\x1b\xe8\ +K\x0d\x9f\x9b\x1e\xc0}\xdd3\xac\x19M<\xfdP\xcd\ +\x8a\x15\x04\xdd(\xba~\xbdr\xbave\xf1\x88\x99{\ +\xc4\x1e1\x08\xe7#\xf8,\x11c\xe3\xbbb\x87pj\ +\xc9G\xe2\xe1\xc4K\xa8*\x0f\x98\x1e\xbc\xb5\xc4\xa73\ +\x9dt\xba\xbb\xc7\x82\x05\x04\xdd(:w\xaeJ\x96\x95\ +\xb1p\xc4\xd4G\xdd\xb6\x84Q\x0d\xe7\xf5\xdc\xb3\xab|\ +\x96\x88\xf1\xea\x8f^-\x9c\x9a\xf2\x03\xe2%T\x85\x93\ +\xc3X\x08\xaf\xac\xca\x84\x9b8\x91\xa0\x1b5\xb7mS\ +N\xef\xde,\x169\xe0\xba\x08\x07\xf4\xab\xf8\xfc\x10c\ +\xe9\xaapj\xca\x97b?b&dB\x91\xf8\x96\xe9\ +A{RU&Z\x9f>\x84\xdd\xa8]\x04]\xbc\x98\ +\x0e-9\xa4n\x97: \x82\xe1|\x1c\x9f\x1db\xac\ +\xebR\xffpj\xcb\x13DM\xc8\x849a\xfc\x84\xfc\ +b\xa6\x93\xacI\x93\xf4N,\xa17:N\x9a\xa4\x9c\ +\xa2\x22\x16\x88\x1cS\x1f_\xab\x19\xa1p\xae\xdb\xb1\xbd\ +\xcc\xe7\x86\x18k\x1f\x13\xab\x87Sc\xc6\x107\xc1\x0f\ +\xc5\xe2\x1e\xd3\x03uW\xa6\x93K\x9f[^\xbb\x96\xc0\ +\x1b\x15\xb7lQN\x97.,\x0a\x1cu\x89\x84\xd7\xf0\ +y!\xe6\x84\xcb\xc2\xa91\xcf%x\xbc\x08|0\xdf\ +\xf4 \x1dR\x95\x895g\x0e\xa17*\xae\x5c\xa9\x9c\ +\xa6MY\x0cr\x5c\xdd\xa1\xa9{\x04\xc2\xf9p>+\ +\xc4\x9c\xea6\xd5)\x9cZs2\xb1\x13\xbc\xa0\x1b\xe8\ +;&\x07g\x0d\xf17\x99N\xaa\xc1\x83\x09\xbdQq\ +\xe6L\xe5\x14\x17\xb3\x10\xe0\x7f\xba'\x14Y\x1c\xceK\ +\xab\xd2M\x0a\x11#\xe9\xddb\x81\xf9z\xf3\xa2\x98O\ +\xfc\x84C\xb1\xc8\xf4B\xb8*\xd3\xc9\xa4\x1f#\xda\xbe\ +\x9d\xe0\x1b\x85\x87\x87F\x8dRN^\x1e\x0b\x00~\xc5\ +s,\x0e\xe8\xab\xf9|\x10s\xd2\xb3\xc2\xa99\x93\x89\ +\x9fp0\xca\xc4?\x9a\x1c\x94G\x8a\xefg2\x89\x8a\ +\x8aT\xf2\x92K\x08\xbf\xb6\xbbu\xabr:v\xa4\xe8\ +\xe3\x01}Glna8\xef\x9ai]B\xc4\xc8\xfb\ +\x96\xd8\xc4|\xddyM, \x86\xc27\xb1\xd4\xf4B\ +\xf8\xa3L'\xd1\xf8\xf1\x84_\xdb\xbd\xec2\xce\x9b\xe3\ +!\xbd\xde\xb2p\x9e'\xde\xc5\xe7\x82\x98\xd3V\x86S\ +\x7f\xa6\x11C\xe1\x9b:\xb7\x18={>:\xc3\x89\x93\ +j\xd3F9\x15\x15\x04`\x9b\xfb\x9b\xafX\xa1\x9c\x06\ +\x0d(\xf4\xe8\xc9\x81\x16\x05\xf4\x09|\x1e\x88\xf4F\x17\ +{\x84\xb3\x8b\xceYt\xf8\x1a\xb3L\x0eD\xf96\xa0\ +\x9e\xcc$\x9cW\xaf\xae\x92\xb4T\xb4\xdb\xb9s\xb9\x0c\ +\x8a\xbe|@,\xb4 \x9c\xeb\x0b\xeb\xcf\xf1y \xa2\ +\xf8s1\xdf|\x1d\x1aK\x1c\x85\xfd\xd1=8_6\ +9\x08\xe7g:i&L \x00\xdb\xec\xacY*Y\ +XHqG\xdf\xce\xb0 \xa0/\xe1s@\xc4\xfd\x9c\ +d\xbe\x0e=L$\x85\xfd9\xd1\xe4\x00\xd4/\xf3\xbd\ +\x91\xc9di\xdd:\xdd\x11\x84 l\xef\xcb\xa0tj\ +\xc1\x0c\xd5\xafu\xd6\x0a1\x9c\xebKa\xef\xf29 \ +\xe2~>\xef\xb6\x5c5\x5c\x8fz\x11K\xe1\xdfJ\x94\xe4\ +\xef\x8e\x88\x89\x83?^d\xf8\xd7\xbd\xbf\x8b\xb5\x89\xa9\ +\xb9\xcbZ\x93\xdf\x08\xaf\xcd\xa4\xadb\xd7\xae\x04a\x1b\ +\xfb\x9c\x8f\x1bG\xd1\xc6\xc0\xdcn\xb0.}\x8f\xbf7\ +\x22\xda\xf9\xeb\xde\xb9\xc4\xd4\xdc\xa4HL\x99\x1ahG\ +e\xb0K\xa5\xdb\xf5\xa5V\xaf&\x10\xdb\xa6nuI\ +\xb1\xc6\x00\xd5\xbf\xb4\xb54P\x97\xba\xf1\xb7FDK\ +\x7f\xdd\x13_ \xaa\xe6&F[+^\x97\xc9\x848\ +\xf6X\xc2\xb0m\x9e~:\xddZ\xd0\x88\x1b\x0d\xd4\xa5\ +\xab\xf9;#\xa2\x0f\xd7\x9b\xdfE?\x86\xb8\x9a{\xdc\ +a\xb2C\xc2^\xbf\x13\xa1F\x0d\xe5l\xdeL \xb6\ +\xc99sT2?\x9f\x22\x8dF|\xcf\xedM\x1eT\ +]j\x97I]B\xc4\x9c\xf6\x1d\xb1\xbe\xd9\x80~5\ +q5\xb78L\xfc\xcc\xd4\x00\xdb\x94\xc9D\x988\x91\ +@l\x91\xc9\x85\x0b\xd3\xbd\xe8)\xd0h\xd0\xcb\x02\xac\ +KW\xf0\xf7E\xc4\x0c\x5cd6\xa0\x7f(\x96\x11[\ +s\x87U\xa6\x06W\xb9\xbb\x13\xe6k\x024h\xa0\x9c\ +]\xbb\x08\xc6\xb6\xb8l\x99r\xaaW\xa70c(\xbb\ +\xe8\xe5\x01\xd4\xa5V\xec\x9e#b\x86\xbe\x920\xfe\xba\ +\xe8\xd9\xc4\xd6\xdc\xa0@|\xdf\xd4\xc0\xba(\x93\x090\ +e\x0a\xa1\xd8\x16\xd7\xadS\xa9:u(\xca\x18\x9a\x17\ +'x5\x14\x11\xedr\x86\xd9\x80\xfe,\xd157\x18\ +ajPU\x17_\xf4;\xf0\xcb\xcb\x95SQA0\ +\xb6\xc1m\xdb\x94s\xc4\x11\x14c\x0c}\xb7\xaa,\x8b\ +u\xa9\x91\xf8.\x7fWD\xac\x82\x8f\x8a\xf9fCz\ +g\xe2k\xfc\xb9\xd1\xd4\x80\x9a\x91\xc9\xc0\x9f6\x8d`\ +lC\x9fs\xf9\x92\x94\xea\xd4\x89B\x8cVxN\x16\ +\xeb\xd2\xa5\xfc=\x111\x0b\x9eh6\xa0o$\xbe\xc6\ +\x9bb\xf1\xaf&\x06S\x9e\xf8\x88\xcf\xc1\x9el\xd4h\ +_0$ [\x10\xd0G\x8e\xa4\x00\xa35>'\x16\ +e\xa1.\xd5\x12_\xe3\xef\x89\x88Y\xf0'f\x03\xfa\ +\x9bD\xd8xs\x92\xa9\xc14$\x83\xc1\x9e\x9c>\x9d\ +plI;Ez\x9d\xa3mN\xcdB]:\x9f\xbf\ +#\x22f\xd1NfCzObl|\xf9\xbe\xa9\x81\ +tU&g\xcf++\x09\xc7a\xbbt)\xed\x14\xd1\ +J\x1f\xa9\xe2\x99\xcfb\xf1\xb7\xfc\x1d\x111\x8b\xae6\ +\x1b\xd07\x11c\xe3I\xa9\xf8\x91\x89A\xd4 \x91~\ +\x12\xd7\xcf O\x9dv\x1a\xe18l\xf5\xc3P\xf5\xeb\ +St\xd1Z\xc7\x9a\xbe\x13\x83\x88x\x10\xf5\x91\xb9\x12\ +s\x01}\x8f\x98G\x9c\x8d\x1f\x13M}\xcb\x9b\xe7\xf7\ +hKY\x99J\xed\xd8A@\x0e\xd3\x8a\x0a\x95\xec\xd0\ +\x81\x82\x8bV{\x9f{\xbf\xc5oM\xd2\xe7\xd7\x9f\xe1\ +\xef\x87\x88\x018\xc1\xec.z?\xe2l\xfc\xb8\xcd\xd4\ +\xe5\xd0G\xfd\x0ep}!\x91\x90\x1c\xae\xe3\xc6Qh\ +1\x12\x0e\xcd\xa0.M\xe4\xef\x86\x88\x01\xf9#\xb3\x01\ +}'q6^\x94\x88\xff01xz\xf9\x1d\xdcE\ +E*\xb5i\x13\x019\xcc\x8e-\x8b\x17\xabd~>\ +\x85\x16#\xe1-\x19l\x1a\xdc\xc7\xdf\x0d\x11\x032)\ +6\xe7\x98\x0bd\xc8\xf1\xa6\xbe\xddm\xf5;\xb8\x07\x0c\ + $\x87\xe9\xd6\xad\xcai\xd0\x80\x22\x8b\x91\xb2\x9b\x8f\ +\x9at,\x7f/D\x0c\xd8\x0b\xcd\xee\xa2\x1fE\xac\x8d\ +\x0f\x15&\x06M\xb5Lz\x0c/[FH\x0eS\xfd\ +\x05\x89\xe2\x8a\x11\xf3z\x1fu\xe9g\xfc\xbd\x101`\ +\x9f\xc8\xf0~L\x86^B\xac\x8d\x0f\xef\x98\x184\xc3\ +\xfd\x0e\xea\x96-\x09\xc8a:s&\x85\x15#\xfb\x93\ +r{\x0f5\xa97\x7f+D\xb4\xf0\x97\xbd*\xfa\x08\ +\xb16\x1e\xb46\xf5\xb3\xcb\x0e\xbf\x03z\xca\x14Br\ +H&\xd7\xaeUNI\x09E\x15#\xeb\x16\x0f5\xe9\ +;\xfc\x9d\x10\xd1\x90\x97\x98\x0b\xe8\x9f\x8a\xb5\x88\xb7\xd1\ +g\x81\x89\x01S]|\xc3\xcf`..VI}\xfe\ +\x99\xb0\x1c\x8e]\xbbRP1\xd2\xea\xb7\x16\x0e?H\ +M\xea\xcc\xdf\x08\x11\x0d\xfa\x8c\xd9c.\x13\x89\xb7\xd1\ +\xe7\x17&\x06\xcb\xf1>\x07rj\xe0@BrXN\ +\x9fN1\xc5X\xb8\xe6 5\xe9\x0a\xfe>\x88h\xd8\ +\x1e\xe6\x02\xfa\xb5\xc4\xdbhSl\xaa\xbdb\xa5\xdf\x81\ +\xac\x9f\x94',\x9bw\xe3F\xe5\x94\x96RH1\x16\ +\xea_\xed\xea\x1c\xa0\x1e\x1d\x9e\xf0\xff\x9a1\x22bU\ +]a.\xa0\xef&\xe2F\x9b\xe1&\x06\x8a~\xa5\xef\ +u?\x83\xb8iS\x82rX\xf6\xe9C\x11\xc5X\xb9\ +\xf0\x005i-\x7f\x17D\x0c\xc1'\xcd\xb6[\xecD\ +\xcc\x8d.\x1bL\x0c\x92~~\x07\xf1I'\x11\x94\xc3\ +\xb8\x18z\xd6Y\x14P\x8c\x9d/\x8a%\xfb\xd5\xa3z\ +\xe2\xdb\xfc]\x101$[\x9b\x0b\xe8\xf3\x89\xb9\xd1\xe5\ +1\x13\x83\xe4R\xbf\xe7\xcfW\xaf&0\x9bv\xfbv\ +\xe5\xd4\xafO\xf1\xc4X:g\xbfz\xb4\x94\xbf\x07\x22\ +\x86\xe8Y\xe6\x02\xfa\xad\xc4\xdchR]\xfc\xc4\xc4 \ +\xf9\xb5\x9f\xc1\xdb\xa2\x05a9\x0cG\x8e\xa4pbl\ +}\xd6=jW\xcb\xefq;D\xc4,{\xb3\xb9\x80\ +\x9e$\xeaF\x93\xbe&\x06H\xe3D\xfa\xd1\x10\xcf\x83\ +w\xc2\x04\xc2\xb2i\xd7\xacQNQ\x11\x85\x13c\xed\ +Dw\xe7\x8a\xbf\x05\x22\x86\xe9;\x89t\xebiC!\ +\xbd9q7z,218N\xf33p\xf3\xf2\x94\ +\xb3n\x1d\x81\xd9\xf4\xd9\xf3\xee\xdd)\x9a\x18{\x1fp\ +w\xd2\xf9[ b\xd8\x1ek.\xa0O&\xeeF\x8f\ +\xdbM\x0c\x8ek\xfc\x0c\xdaV\xad\x08\xcc\xa6]\xb8\x90\ +b\x89\x88\x88h\xd0\xb5\xe6\x02z%q7z\xfc>\ +\xe8\x81Q \xbeF\xf7\x16{\xad\xacT\xa9\x96-)\ +\x96\x88\x88\x88\x06}\xc4\x5c@\x7f\x9e\xb8\x1b-\xda\x99\ +\x18\x18\x9d\xfc\x0e\xdaK.!4\x9b<\xda\xc2\x8b\xa1\ +\x88\x88\x88\xa1Xn&\xa0\x7f!\xd6!\xf6F\x87\xa9\ +&\x02\xfa4?\x83\xb5^=B\xb3AS;w\xaa\ +\x94\xfe\x9bS$\x11\x11\x11\x8d{\xbc\xb9]\xf4\xe1\xc4\ +\xde\xe8\xb0\xcd\xc4\xa0\xb8\xd2\xcf`\x1d0\x80\xe0lr\ +\xf7|\xd2$\x0a$\x22\x22bH\xae2\x17\xd0/\x22\ +\xf6F\x87_\x99\x18\x14O\xfb\x19\xacs\xe6\x10\x9c\x0d\ +>J\x94\xaa]\x9b\x02\x89\x88\x88\x18\x92?7\x17\xd0\ +o$\xf6rA\xf4?\x96\xfb\x19\xa8\x85\x85*\xb9u\ ++\xc1\xd9\x94\xe3\xc7S\x1c\x11\x11\x11Ctw\xc2X\ +?t.\x8aF\x84\xc6&\xbe\xb1\x8d\xf53P\xdb\xb6\ +%4\x1b\xdc=O\xd6\xacIqDDD\x0c\xd9\xbe\ +f\x02\xfa\xa7b5\xe2\xaf\xfd\x1cg\x22\xa0\xaf\xf23\ +HO8\x81\xe0l\xca\xb1c)\x8a\x88\x88\x88\x168\ +\xcf\xdc1\x97N\xc4_\xfb1\xf2\x82\xe8m~\x06\xe9\ +\x82\x05\x04gC\xbb\xe7Ni)E\x11\x11\x11\xd1\x02\ +\xaf4\x17\xd0O'\xfe\xda\xcfwM\x0c\x86W<\x0e\ +\xced~~:8\x12\xa0\x83\xf7\xb4\xd3(\x88\x88\x88\ +\x88\x96\xf8\x80\xb9\x80\xbe\x81\xf8k?\xcfXuA\xf4\ +\x88#\x08\xce\x86^\x0du\x1a5\xa2 \x22\x22\x22Z\ +tQ\xb4\xc8L@\xbf\x8b\xf8k?\x7f\x0fz \x0c\ +\xf63@\x87\x0c!<\x9b\xe8{~\xd6Y\x14CD\ +DD\xcb\xech&\xa0\xbfE\xfc\xb5\x9b\x86&~J\ +\x99\xebgp\xce\x9cI\x806\xa1\xee\x94C!DD\ +D\xb4\xca\x93\xcdur) \x06\xdbKo\x13\x01\xbd\ +\xc2\xc7\xc0L\xae]Kx\x0e\xda\x8b/\xa6\x08\x22\x22\ +\x22Z\xe8rs\xe7\xd0\x9b\x13\x83\xed\xe5T\x13\x83\xe0\ +W^\x07\xa6\xee(B\x80\x0e\xde\xbe})\x82\x88\x88\ +\x88\x16\xfa}s\x01}\x101\xd8^\x96\x04=\x00\xf2\ +\xc4\xb7\xbd\x0e\xcc\xf6\xed\x09\xcfA{\xf9\xe5\xca)*\ +\xa2\x08\x22\x22\x22Z\xe8\x93\xe6\x02\xfa4b\xb0\xbd\x5c\ +\x1d\xf4\x00h\xe4g`\x0e\x1dJ\x80\x0e\xfar\xe8\xa4\ +I\x14@DDDK\xddc\xae\x93\xcb*b\xb0\xbd\ +\xdc\x1b\xf4\x00\xe8\xe1g`N\x99B\x88\x0e\xda\xc3\x0e\ +\xa3\x00\x22\x22\x22Zl33\x01\xfd\x06b\xb0\xbd\xbc\ +\x11\xf4\x008\xc9\xc7\x80L-YB\x80\x0e\xd2\x8b.\ +\xa2\xf0!\x22\x22Zn\x7f3\x01\xfd!b\xb0\x9d\xe4\ +\x89\x1f\x07=\x00\xce\xf5: \xf3\xf3Uj\xc7\x0eB\ +t\x90\xf6\xefO\xe1CDD\xb4\xdcS\xcd\x04\xf4\xf7\ +\x88\xc2vR\xd7\xc4%\x84M^\x07\xa4~\xd5\x92\x10\ +\x1d\x9c\xdb\xb7+\xa7\xa4\x84\xc2\x87\x88\x88h\xb9\x8b\xcd\ +\x04\xf4O\x88\xc2v\xd2\xc6D@\xbf\xc9\xeb\x80\xec\xd4\ +\x89\x10\x1d\xa4\xfa\x01(\x8a\x1e\x22\x22\xa2\xf5\xee2\xd7\ +\xc9\xa5\x8c8l\x1f}L|\xf8\x0f{=\x7f>x\ +0!:H\x8f:\x8a\xa2\x87\x88\x88\x18\x01\x7fd.\ +\xa0\xb7 \x0e\xdb\xc7\x89&>\xfc\x97\xbd\x0e\xc8\xf1\xe3\ +\x09\xd1A\xb9u+\xbd\xcf\x11\x11\x11#\xe2\x03\xe6\x02\ +\xfa1\xc4a\xfb\x98\x16\xf4\x07_ \xee\xf5\xba\x83>\ +{6A:(\xa7O\xa7\xe0!\x22\x22F\xc4\xdf\x9a\ +\x0b\xe8#\x89\xc3\xf6\xb1(\xe8\x0f\xbe\x9e\x9f\x01\xb9t\ +)A: S]\xbbR\xf0\x10\x11\x11#\xe2\xeeD\ +\xfa%v\x03\x01\xfd\x0c\xe2\xb0}\xac\x0f\xfa\x83o\xed\ +g@n\xdeL\x98\x0e\xc2-[T\xb2\xb0\x90\x82\x87\ +\x88\x88\x18!k\x99\x09\xe8\x0b\x88\xc3\xf6qu\xd0\x1f\ +|O\xaf\xc7[\xaaW'H\x07\xb5{N\xf7\x16D\ +D\xc4\xc8\xd9\xc2L@_M\x1c\xb6\x8f\xdb\x82\xfe\xe0\ +Gx\x1c\x84Iz\xa0\x07g\xcf\x9e\x14:DD\xc4\ +\x88y\xb4\x99\x80^A\x1c\xb6\x8f_\x04\xfd\xc1\x9f\xea\ +u \xb6lI\x90\x0e\xc2\xcaJ\xe5\x94\x95Q\xe8\x10\ +\x11\x11#\xe603\x01\xfdz\xe2\xb0}\xdc\x17\xf4\x07\ +?\xcb\xeb@\xec\xd2\x850\x1d\x84\x17^H\x91CD\ +D\x8c\xa0c\xcd\x04\xf4\x1f\x10\x87\xed\xe3\xe1\xa0?\xf8\ +y^\x07b\x9f>\x84\xe9 \x1c=\x9a\x22\x87\x88\x88\ +\x18A'\x9a\x09\xe8\xb7\x11\x87\xed\xe37A\x7f\xf0\xe7\ +y\x1d\x88\xc3\x86\x11\xa6\x83\xb8 \xaa\x8f\x0eQ\xe4\x10\ +\x11\x11#\xe7\xe9f\x02\xfa\x9d\xc4a\xfbx>\xe8\x0f\ +~\xb1\xd7\x818v,\x81:\xdb\xea\xb6\x95\xf9\xf9\x14\ +9DD\xc4\x08:\xc3L@\xbf\x978l\x1f/\x07\ +\xfd\xc1/\xf3:\x10O?\x9d@\x9dm\xe7\xcc\xa1\xc0\ +!\x22\x22F\xd49f\x02\xfa\x03\xc4a\xfbx+\xe8\ +\x0f~\x95\xc7A\xb8\xafW7\xa1:\xab&\x8f;\x8e\ +\x02\x87\x88\x88\x18Q\xcf5\x13\xd0\x1f'\x0e\xdb\xc7\x9e\ +\xa0?\xf8u^\x07\xa2\xde\xed%Ts\xfe\x1c\x11\x11\ +\x11\xf7y\x81\x99\x80\xfe\x0cq\xd8>RA\x7f\xf0\x97\ +{\x1d\x88s\xe7\x12\xaa\xb3\xe9\xf6\xed\xca)(\xa0\xc0\ +!\x22\x22F\xd4%f\x02\xfa\x0b\xc4a\xfbp\x82\xfe\ +\xe07{=\xe22\x7f>\xa1:\x9b\xc7[\x16.\xa4\ +\xb8!\x22\x22F\xd8\x0b\xcd\x04\xf4\xdf\x12\x87s\xf0\x88\ +\xcbz\xaf\x03Q\x07J\x82u\xf6\x8e\xb7\x8c\x1bGq\ +CDD\xe4\x88\x0bG\x5c\x22\xc8;A\x7f\xf0k\xbd\ +\x0e\xc4\xc5\x8b\x09\xd6\xd9\x0c\xe8]\xbbR\xdc\x10\x11\x11\ +#\xec\x023\x01\xfd\x09\xe2\xb0}\xbc\x11\xf4\x07\xbf\xd2\ +\xeb@\x5c\xba\x94`\x9dMk\xd7\xa6\xb8!\x22\x22F\ +\xd8yf\x02\xfa#\xc4a\xfbx%\xe8\x0f~\xb9\xd7\ +\x81\xb8l\x19\xa1:\x9b\x0f\x14Q\xd8\x10\x11\x11\xe9\x83\ +\x9e\xa0\x0fz\x14y1\xe8\x0f~);\xe8\xe6=\xef\ +<\x0a\x1b\x22\x22b\xc4\x9di&\xa0\xff\x928l\x1f\ +\xcf\x07\xfd\xc1/\xf6:\x10/\xba\x88`\x9d-O9\ +\x85\xc2\x86\x88\x88\x18q\xcf4\x13\xd0\x7fA\x1c\xb6\x8f\ +\xa7\x83\xfe\xe0/\xf0\xdaf\x91K\xa2\xd9k\xb1\xd8\xaf\ +\x1f\x85\x0d\x11\x111\xe2N6\x13\xd0\xef \x0e\xdb\xc7\ +\xe3A\x7f\xf0s=\x0e\xc2$m\x16\xb3g\x8b\x16\x14\ +6DD\xc4\x88;\xd6L@\xbf\x8d8l\x1f\xbf\x0a\ +\xfa\x83\x9f\xeau \x9e\x7f>\xc1:\x1bVV*\xa7\ +\xb8\x98\xc2\x86\x88\x88\x18q\x8f5\x13\xd0\xaf'\x0e\xdb\ +\xc7O\x82\xfe\xe0'x=\xe2\xc2K\xa2\xd9q\xdd:\ +\x8a\x1a\x22\x22b\x0c\xeci&\xa0\xef$\x0e\xdb\xc7\x8d\ +A\x7f\xf0#\xbc\x06\xf4s\xce!\x5cg\xc3\x0b.\xa0\ +\xa8!\x22\x22\xc6\xc0\x8ef\x02\xfae\xc4a\xfb\xb82\ +\xe8\x0f~\x80\xd7\x80>{6\xe1:\x1bN\x9bFQ\ +CDD\x8c\x81\xcd\xcc\x04\xf4%\xc4a\xfb\xd8\x1c\xf4\ +\x07\x7f\xb4\xd7K\xa2S\xa7\x12\xae\xb3\xe1\xe8\xd1\x145\ +DD\xc4\x18X\xcfL@\x9fK\x1c\xb6\x8f\x15A\x7f\ +\xf0\xed\xbc\x0e\xc4I\x93\x08\xd7\xd9\xb0o_\x8a\x1a\x22\ +\x22b\x0c\xacf&\xa0O%\x0e\xdb\xc7\x05A\x7f\xf0\ +M\xbd\x1eq\x197\x8ep\x9d\x0d\xdb\xb6\xa5\xa8!\x22\ +\x22F\xdcw\xcc\x84s\xed8\xe2\xb0}\xcc\x09\xfa\x83\ +/\xf1:\x18G\x8d\x22\x5cg\xc3\xfa\xf5)l\x88\x88\ +\x88\x11\xf77\xe6\x02\xfa\xb1\xc4a\xfb\x98d\xe2\xc3\x7f\ +\xdb\xcb`\x1c:\x94p\x9d\x8dWD\x0b\x0b)l\x88\ +\x88\x88\x11\xf7\xe7\xe6\x02z7\xe2\xb0}\x0c5\xf1\xe1\ +?\xe5e0\xea\xe7\xe9\x09\xd8Us\xdb6\x8a\x1a\x22\ +\x22b\x0c\xbc\xc1\x5c@oL\x1c\xb6\x8f.&>\xfc\ +\xbb\xbd\x0c\xc6n\xdd\x08\xd8Uu\xcd\x1a\x8a\x1a\x22\x22\ +b\x0c\xdcb&\x9c\x7f!\x16\x10\x87\xed\xa3\xb1\x89\x80\ +\xfe}/\x97D\xdb\xb4!`W\xd5%K(j\x88\ +\x88\x881p\xa9\x99\x80\xfeG\xa2\xb0\x9d\x14\x89_\x06\ +=\x00vy\x19\x8c\xe5\xe5\x04\xec*\x9a:\xf7\x5c\x8a\ +\x1a\x22\x22b\x0c\xfc\x96\x99\x80\xfe\x12Q\xd8^\xfe\x1a\ +\xf4\x00X\xe5e0\x96\x96\x12\xb2\xab\xea\xf4\xe9\x145\ +DD\xc4\x188\xceL@\xff51\xd8^\xde\x08z\ +\x00\xcc\xf32\x18\xf3\xf2\x94SQA\xc8\xae\x8a\xa7\x9c\ +BQCDD\x8c\x81=\xcd\x04\xf4\x9b\x89\xc1\xf6\xf2\ +X\xd0\x03\xe0$\x8f\x831\xb5i\x13!\xbb*\x8e\x19\ +CQCDD\x8c\x81\x8d\xcd\x04\xf4\x9d\xc4`{\xf9\ +i\xd0\x03\xa0\x97\xd7\x01\xb9|9!\xbb*\x1e\x7f<\ +E\x0d\x11\x111\xe2\xee\x16\xf3\xcd\x04\xf4\xa5\xc4`{\ +\xb9\x22\xe8\x01\xd0\xd4\xeb\xa0\x5c\xb0\x80\x90]\x95K\xa2\ +#FP\xd8\x10\x11\x11#\xee\xe3\x09c=\xd0O#\ +\x06\xdb\xcb\xd2\xa0\x07@\x81\xb8\xc7\xcb\xa0\x9c:\x95\xa0\ +]\x15\x8f=\x96\xc2\x86\x88\x88\x18qo5\x17\xd0\xfb\ +\x10\x83\xed\xe5t\x13\x83\xe0\x19/\x83r\xf4hBv\ +Uv\xd0\x07\x0f\xa6\xb0!\x22\x22F\xdcm\xe6\x02z\ +\x13b\xb0\xbd\x0c21\x08\xee\xf20 \x93\xfd\xfa\x11\ +\xb4\xab\xe0\xbe\xbf\x1f\x85\x0d\x11\x111\xd2^`&\x9c\ +\x7f\x22\xe6\x13\x83\xed\xa5\x85\x89\x80~\x95\x97A\xd9\xb1\ +#A\xbb*\xf6\xeeMaCDD\x8c\xb8c\xcd\x04\ +\xf47\x89\xc0v\xa3_\x13\xfd\x22\xe8\x81p\x91\x97A\ +\xd9\xa4\x09!\xbb*G\x5cz\xf6\xa4\xb0!\x22\x22F\ +\xdc\x8ef\x02\xfa}D`\xfb\xd9\x1b\xf4@\x98\xe8a\ +@\xa6\xaaW'h\xb3\x83\x8e\x88\x88\x98\xb3\xbe/\x16\ +\x9b\x09\xe8\xd7\x11\x7f\xed\xe7\xf1\xa0\x07Bw\xaf\x83s\ +\xe3F\x826g\xd0\x11\x11\x11i\xb1\x18\xac\x97\x10\x7f\ +\xed\xe7\x07A\x0f\x84\xda^\x07\xe7\x05\x17\x10\xb63u\ +\xd0 \x8a\x1b\x22\x22b\x84\xbd\xc1\x5c@?\x99\xf8k\ +?+L\x0c\x86\x17\xbc\x0c\xce3\xce hg\xea\xd0\ +\xa1\x147DD\xc4\x08\xbb\xdc\x5c@\xefH\xfc\xb5\x9f\ +\xc9&\x06\xc3\x1d^\xce\xa1\xeb\xd70\x09\xdb\x99\x1dq\ +9\xee8\x8a\x1b\x22\x22b\x84=\xcdL8\xffL\xac\ +F\xfc\xb5\x9f\x1e&\x02\xfav/\x83\xb3[7\xc2v\ +\xa6\x8e\x1cIqCDD\x8c\xb0\x9d\xcd\x04\xf4\xd7\x88\ +\xbe\xd1\xa0\xa6\xf8e\xd0\x03\xe2,/;\xe8\xb4Z\xcc\ +\xdcq\xe3(n\x88\x88\x88\x11u\xb7Xd&\xa0\xff\ +\x84\xe8K\xab\xc5\xff8\xc0\xcb\x00-*RNE\x05\ +a;\x93>\xe8\x93'S\xe0\x10\x11\x11#\xea\xdd\xe6\ +\xce\x9f\xaf#\xf6F\x87\x07\x83\x1e\x10\xf5\xbc\x0e\xd2\xe5\ +\xcb\x09\xdc\x998k\x16\x05\x0e\x11\x111\xa2n1\x17\ +\xd0\xcf$\xf6F\x87kL\x0c\x8a\xe7\xbc\x0c\xd2\x193\ +\x08\xdb\x998\x7f>\x05\x0e\x11\x111\xa2N3\x17\xd0\ +\x8f&\xf6F\x87\x85&\x06\xc5\x8dtr\x09\xce%K\ +(p\x88\x88\x88\x11\xb5\xbb\x99p\xfe\x09\x1d\x5c\xa2\xc5\ +\xb1&\x02\xfa\xc5^\x06i\xc7\x8e\x84\xedL\x5c\xbd\x9a\ +\x02\x87\x88\x88\x18\xd1\x0b\xa2\xd5\xcd\x04\xf4g\x88\xbc\xd1\ +\xa2\xbe\x89\x80>\xd6\xcb@\xad]\x9b\xb0\x9d\x89[\xb6\ +P\xe4\x10\x11\x11#\xe8\xcf\xcd\x1do\xb9\x86\xc8\x1b=\ +\xf6\x04=0Zy\x1c\xa8\xa9\x8d\x1b\x09\xdc\x99tr\ +\xa9^\x9dB\x87\x88\x88\x181W\x99\x0b\xe8s\x89\xbb\ +\xd1\xe3\xae\xa0\x07F\x9e\xf8\xb2\x97\x80~\xee\xb9\x04\xee\ +L,/\xa7\xd0!\x22\x22F\xcc\xd1\xe6\x02zo\xe2\ +n\xf4\xb8\xcc\xc4\xe0\xf8\x9e\x97\xc1z\xc2\x09\x84\xedL\ +l\xdf\x9eB\x87\x88\x88\x181\x1b\x99\x09\xe7\x9f\x89%\ +\xc4\xdd\xe81\xd1D@?\x8f\x8b\xa2\xc1\xd9\xbb7\x85\ +\x0e\x11\x111B>nn\xf7\xfc\x05\xa2n4ik\ +b\x80xzQ\xb4\xa4D9\x95\x95\x04n\xbfg\xd0\ +G\x8e\xa4\xd8!\x22\x22F\xc8\x1d\xe6\x02\xfauD\xdd\ +h\x92'\xfe%\xe8\x01R&\xbe\xefe\xd0\xaeXA\ +\xe8\xf6\xeb\xa4I\x14;DD\xc4\x08y\x9a\xb9\x80>\ +\x93\xa8\x1b]\xee11H\xee\xf32h\xa7L!p\ +\xfb\xddA?\xe7\x1c\x8a\x1d\x22\x22b\x84<\xcc\x5c@\ +oG\xcc\x8d.\xabL\x0c\x92\xf5^\x06\xed\xc0\x81\x84\ +n\xbf\xaeZE\xb1CDD\x8c\x88\x8f\x98\x0b\xe7\x7f\ +pOJ@D\x19eb\xa0\x9c\xe8e\xe0\xea\x96\x81\ +\x84n\x7fVT\xa8da!E\x0f\x11\x111\x02\xae\ +3\x17\xd0\x7fL\xc4\x8d6u\xc5/\x83\x1e(\xf2\x1f\ +\xa2\xf6z\x19\xbc\xeb\xd6\x11\xba\xe9\x85\x8e\x88\x88\x18K\ +G\x9a\x0b\xe8\x17\x10q\xa3\xcf\xcb&\x06\xcb=^\x06\ +\xef\xb4i\x04n\xbf\xe7\xd0\xbbv\xa5\xe8!\x22\x22Z\ +\xeen\xb7q\x86\xa1\x80~\x0c\xf16\xfa\x5cob\xb0\ +\xac\xf02\x80\xfb\xf6%t\xfbu\xd80\x0a\x1f\x22\x22\ +\xa2\xe5\xdea.\x9c\xffC,\x22\xdeF\x9f9&\x06\ +\xcc0/\x03\xb8A\x03\x02\xb7_O?\x9d\xc2\x87\x88\ +\x88h\xb9\xe7\x99\x0b\xe8w\x13m\xe3\xc1\x91&\x06L\ +\xa9\xfb\xf3\xce\xa1\x06pj\xf5jB\xb7\x1f/\xba\x88\ +\xc2\x87\x88\x88h\xb9\x1d8\x7f\x0e>\xd1mxR&\ +\x06\xcd\x8f\xbd\x0c\xe2\xc9\x93\x09\xdd~\xdc\xbe]9y\ +y\x14?DDDK}\xdc\x5c8\xd7v&\xda\xc6\ +\x87\x1f\x98\x184\xf3\xbc\x0c\xe4\xce\x9d\x09\xddtrA\ +DD\x8c\x8d\xab\xcc\x85\xf3$\xfd\xcf\xe3\xc5\x0c\x13\x03\ +\xa7\x8d\x97\x81\x5cT\x94\xde\x15&x{6\xd9\xbd;\ +\x05\x10\x11\x11\xd1R{\x99\x0b\xe8\xd7\x13i\xe3EK\ +S?\xbd\xfc\xc6\xcb`\x9e7\x8f\xe0\xed\xc7\xb1c)\ +\x80\x88\x88\x88\x16\xfa\xb2X`.\xa0\x9fA\xa4\x8d\x1f\ +o\x9b\x18<\xeb\xbc\x0c\xe8!C\x08\xdd~<\xfbl\ +\x8a \x22\x22\xa2\x85n7\x17\xce\xf5\xc3\x93\xe5\xc4\xd9\ +\xf8\xf1?\xb6\xb4[L\xd5\xabG\xe8\xf6\xe3\xc6\x8d\x14\ +ADDD\x0b\x1dd.\xa0?G\x94\x8d'\x93M\ +\x0c\xa0\xea\xe2\x9b^\x06\xf5\xf2\xe5\x04o?\xd6\xafO\ +!DDD\xb4\xc8\xdf\x89\x85\xe6\x02\xfaJ\xa2l<\ +\xa9'~nb\x10Uz\x19\xd8\xc7\x1fO\xe8\xf6a\ +\xaagO\x8a!\x22\x22\xa2E\xae5\xdb^\xb1\x0bQ\ +6\xbee\xd5e\xd1\xf1\xe3\x09\xdf^\x1c2\x84\xa2\x89\ +\x88\x88h\xc0af\x03\xfa\xcd\xc4S\xd0l15\xe8\ +N\xf72\x11\xf4\xcepe%\x01\xfcP\xce\x9bG\xd1\ +DDD\x0c\xd8\xfb\xcd\xb6V\xd4\x0e'\x9a\x82\xa6\xab\ +\xa9AWC|\xcd\xcb\x84\x98=\x9b\x00~\xa8v\x8b\ +;w*\xa7zu\x8a'\x22\x22b\x80\x9el6\x9c\ +\xbf\x97\xa0\xf79\xec\xc7s\xa6\x06\xdfj/\x13\xa2U\ ++B\xb8\x07\x93\xfa\x05V\x8a'\x22\x22b \xfeF\ +,4\x1b\xd0W\x12Ia\x7f\xce75\xf8\x8e\x10\xf7\ +x\x99\x18\x8b\x17\x13\xc2\x0f\xe5\x8c\x19\x14PDD\xc4\ +\x80\x9ci6\x9c\xffKlL$\x85\xfdi$~f\ +j\x10^\xe5\xa5\xa3\x8b\xde\x1d&\x84\x1f\xdc-[\x94\ +SXH\x11EDD\xcc\xb2/\x8a%f\x03\xfa\xf7\ +\x89\xa3p ~jj\x10v\xf729\x0a\x0a\x94s\ +\xd9e\x84\xf0C\x1ds\xe9\xd0\x81B\x8a\x88\x88\x98e\ +\x17\x9a\x0d\xe7\xda>DQ8\x10\xa3L\x0e\xc4;\xbc\ +L\x90\xc1\x83\x09\xe1\x87r\xf2d\x0a)\x22\x22b\x16\ +\xd5\x0d-j\x99\x0d\xe7O\x11C\xe1\x9b\xd0\xb7\x86\xdf\ +25\x18\x8f\xf70AR\xd5\xaa\xf1p\xd1\xa1\xba\xb9\ +\xac_\xaf\x9c\xbc<\x0a*\x22\x22btw\xcf\xa7\x12\ +C\xe1`\x5cdj0\x16\x88\x8fy9\x8b~\xdcq\ +\x04\xf1C\xd9\xae\x1d\x05\x15\x11\x111\x0b\xbe,\xd64\ +\x1b\xce\xff \x16\x13A\xe1`4H\xa4\x9f\x9852\ +(O\xf52Y\xd8E?\xf4.:\xc7\x5c\x10\x11\x11\ +\xb3\xe2|\xf3\xbb\xe7k\x89\x9f\xe0\x85\x1bM\x0d\xca\x22\ +\xf1I/\x13\xe6\xf8\xe3\x09\xe2\x07S\x7f\x81\xd1\x97j\ +)\xac\x88\x88\x88U\xea\xdcRj6\x9c\xebM\xd1&\ +DO\xf0B?\x93\xdf\x1c\xa7z\x994\xa5\xa5*\xb9\ +u+A\xfc`v\xecHqEDD\xac\x82s\xcd\ +\xef\x9e_M\xec\x04?\xbd\xdf\xed.g8\xa0\xf7 nB\ +&\x9cor\xa0N\xf62\x89\xf4\xb3\xf6k\xd6\x10\xc4\ +\xbf\xc9\xb3\xce\xa2\xd0\x22\x22\x22\xfa\xb4\xbf\xf9p\xfe\x0b\ +b&dJm\xf1C\x93g\xd1\x1f\xf72\x91\xfa\xf6\ +%\x88\x7fS\xbb\xc5\x8a\x0a\x95\xacY\x93b\x8b\x88\x88\ +\xe8\xd1[\xcd\x87s\xedq\xc4L\xa8\x0a;L\x0e\xd8\ +\x09^&\x93n'\xb8b\x05\x81\xfc\x9b\x1c<\x98\x82\ +\x8b\x88\x88\xe8\xc1\xa4\xd8\xd5|8\x7f\x8ax\x09U\xa5\ +\x95{\xcb\xd8\xc8\xa0\xcdw\xcf\x81\x1djB\xa5:u\ +\x22\x88\x7f\x93\x17_L\xd1EDD\xf4\xe0\x15\xe1\xec\ +\x9e\x9f@\xbc\x84lp\x83\xc9\x81;\xd2\xe3\xa4J\x9d\ +{.a\xfc\x9b<\xec0\x0a/\x22\x22\xe2A|K\ +lb>\x9c?I\xac\x84l\xd1A\xfc\xc2\xe4\x00\xbe\ +\xc3\xcb\xe4j\xdcx\xdf\x99k\x02\xf9\x01<\xf9d\x8a\ +/\x22\x22\xe2A\x05\x18\x11\x11\xf1k>\x9a0\xfe\ +(\x91\xf6A\xe2$d\x9b\x8e\xa6w\xd1\xb7{9\xe6\ +R\xbb\xb6r\xb6m#\x94\x1f\xe8e\xd1\xa3\x8e\xa2\x08\ +#\x22\x22\x1e\xc0\x11\xe1\xec\x9e\x0f%NB\x10\xdca\ +r \xebsao{\x99hC\x87\x12\xc8\x0f\xe4\x82\ +\x05\x14aDDD;\xda*>L\x8c\x84\xa08J\ +\xfc\xd2\xe4\x80>\xdf\xcbd\xcb\xcfOw.!\x94\x7f\ +\xd5\xcaJ\x95l\xd4\x88b\x8c\x88\x88\xb8\xdf\xc5\xd0\xc3\ +\xcd\x87\xf3/\xdc\x0c\x05\x10\x18w\x9b\x1c\xd45\xc4\xe7\ +\xbcL\xbaV\xad\xf6\x05R\x82\xf9\xff;\x8b>~<\ +\x05\x19\x11\x11\xd1\xf5\x82pv\xcfo#>B\xd0\xf4\ +0\xbd\x8b>\xc9\xeb\xc4\x9b:\x95P\xfe\xff\xdd\xb4I\ +%\x0b\x0b)\xca\x88\x88\x98\xf3>,V3\x1f\xce?\ +\x15\xdb\x12\x1f\xc1\x047\x99\xfe\xf6y\x9b\x97\xc9W\xab\ +\x96r\xb6l!\x94\xff\x7f\xbbw\xa70#\x22bN\ +\xab;\xc3u\x0fg\xf7|;\xb1\x11L\xd1\xd6\xfdF\ +hl\x80\xb7\x13w{\x99\x84\x83\x06\x11\xc8\xff\xbf\xe7\ +\x9dGqFD\xc4\x9cvc8\xe1\xfc\xcfb]b\ +#\x98\xe4;\xa6\x07\xfae^&a^\x9er\xe6\xcf\ +'\x94\xf3\xb2(\x22\x22\xe2>_\x10\xeb\x86\x13\xd0\x97\ +\x13\x17\xc14-\xc4\x7f\x99\x1c\xe8\xb5\xc4\xdfy\x99\x8c\ +\x8d\x1a\xa9\xd4\x8e\x1d\x84\xf2\xfd=\xe3\x0c\x8a4\x22\x22\ +\xe6\xa4'\x86\x13\xce\xf7\x8a\xa5\xc4E\x08\x83]\xa6\x07\ +\xfc)^'\xe4\x88\x11\x84\xf2\xfd\xbb\xb9\xe8/,\xa5\ +\xa5\x14jDD\xcc)\xaf\x0e'\x9ckO'&B\ +X4\x12?0=\xe8o\xf60!\x93\xba7\xfa\x92\ +%\x84\xf3\xfdC\xba\xfe\xd2B\xb1FD\xc4\x1c\xf1%\ +\xb1A8\xe1\xfc\x111\x8f\x98\x08a\xb2\xd8\xf4\xc0?\ +L|\xc3\xcb\xe4l\xde\x5c\xa5**\x08\xe7\xffv\xf5\ +\xea\xf4\x19}\x8a6\x22\x22\xe6\x80#\xc2\x09\xe7\xba\x89\ +\xc6\x91\xc4C\x08\x9b\xea\xe2{\xa6'\xc0\x5c\xaf\x13t\ +\xcc\x18\x82\xf9\xfe\xbb\xe8]\xbbR\xb4\x11\x111\xf6^\ +\x1f\xde\xd1\x96+\x89\x86`\x0b\x93MO\x80B\xf1^\ +\xafG].\xba\x88p\xee\x9a\x5c\xb8\x90\xc2\x8d\x88\x88\ +\xb1\xf6E\xb1Qxm\x15\xeb\x13\x0b\xc1\x16\xf49\xab\ +'MO\x84.\xe2\x1e/\x93\xb5qc\xe5\xd0\xd5\xe5\ +\xbf\xb6hA\x01GD\xc4\xd8:*\xbc\xdd\xf3yD\ +B\xb0\x8d\xfe\xe2\x97\xa6'\xc3R\xaf\x13v\xf8p\x82\ +\xf9\xbf\x8f\xb9\xcc\x9cI\x01GD\xc4X\xba-\xbcp\ +\xfe\x94X@\x1c\x04\x1b\xb9\xd9\xf4\x84(\x12\x7f\xe5\xf1\ +\xa8K\xea\xc2\x0b\x09\xe8\xda]\xbb\x94S\xa7\x0e\x85\x1c\ +\x11\x11c\xe5\x13bY8\xe1\xfcs\xb1;1\x10l\ +\xa5\x5c\xfc\xab\xe9\x89\xd1F|\xc7\xcb\xe4\xad[W9\ +\x9b7\x13\xd0\xb5\x13&P\xcc\x11\x1116\xee\x16\xbb\ +\x86\xb7{\xbe\x99\x08\x08\xb6\xb38\x8c\xc91\xdf\xeb$\ +>\xfah\xc2\xb9\xbe,\xbau\xabrJJ(\xea\x88\ +\x88\x18\x0b/\x0e/\x9c\xeb\x17Ck\x12\xff\xc0v\xf4\ +\xf9\xab\xdf\x9a\x9e \xf9\xe2\x8f=N\xe2}g\xb0\x09\ +\xe9\xca\x19:\x94\xa2\x8e\x88\x88\x91\xf7.\xb7\xbb[H\ +\x01\xfdx\xa2\x1fD\x85\xa1aL\x92\xd6\xe2\xdb^&\ +sq\xb1J\xad\x5c\xc9e\xd1\x0d\x1b\x94STDq\ +GD\xc4\xc8\xaa\x1f.l\x19^8\xff\x19\x91\x0f\xa2\ +\xc6\x0f\xc3\x98,g{\x9d\xd4\xadZ\xf1\xca\xa8>\xea\ +\xd2\xaf\x1f\x05\x1e\x11\x11#\xeb\xc4\xf0\xc2\xf9\x07b3\ +\xe2\x1eD\x8d\xa6\xe2\x87a\x1cu\xb9\xcd\xeb\xc4\x1e2\ +\x84\x80\xbev\xadr\x0a\x0b)\xf2\x88\x88\x189w\x86\ +\x17\xce\xb5g\x11\xf5 \xaa,\x0ac\xd24\x11_\xf1\ +:\xc1\xa7M\xe3,z\xdf\xbe\x14zDD\x8c\x94\x8f\ +\x8a\xa5\xe1\x85\xf3\xfb\x12\xe9G\x1a\x01\x22I\xa1\xf8L\ +\x18\x93g\xb4\xd7I^\x5c\xac\x9c\xe5\xcbs\xfb,\xfa\ +\xea\xd5\xfb\xfa\xc4S\xf0\x11\x111\x0a\xea\xfbfG\x86\ +\x17\xce\xff.\xb6$\xe2A\xd4\xe9 ~\x12\xc6$Z\ +\xefu\xb2\x97\x97+G\xb7\x1d\xcc\xe5]\xf4c\x8e\xa1\ +\xe8#\x22b$\x1c\x1b\xee\xd1\x96\xd9D;\x88\x0b\xeb\ +\xc2\x98D5\xc4\x87\xbdN\xf8\x1e=r;\xa0\xeb_\ +\x11\xf2\xf2(\xfc\x88\x88h\xb5\x97\x87\x1b\xce\x1f\x14\xf3\ +\x89u\x10\x17\xaa\x8b\xaf\x851\x99:xm\xbd\xa8\x9d\ +4)\xb7Cz\xb7n\x14\x7fDD\xb4\xd6{\xc5\xe2\ +p\x8f\xb6\xb4&\xd2A\xdc\x18(~\x11\xc6\xa4:\xd5\ +\xeb\xe4/(P\xce\xa2E\xb9\x1b\xd0\x97.e\x17\x1d\ +\x11\x11\xad\xf4U\xb1Y\xb8\xbb\xe7\xb3\x88r\x10W\xae\ +\x08kb\xed\xf4Z\x04\xea\xd6U\xa9M\x9br\xf7\xc2\ +h\xa7N,\x04\x88\x88h\x95Iqx\xb8\xe1\xfc\xa7\ +D8\x883e\xe2\xdba\x9dG\x7f\xd0k1h\xdf\ +^9\xb9\xfa\x88\xd1\xe2\xc5,\x06\x88\x88h\x95\x8b\xc3\ +\x0d\xe7\xbf\x17\x1b\x12\xe1 \xee\x0c\x0e\xeb\xa8K{?\ +\xe7\xd1\xc7\x8c\xc9\xdd]\xf46mX\x10\x10\x11\xd1\x0a\ +\xbf\x9bH?B\x18b@?\x91\xe8\x06\xb9\xc2\xce\xb0\ +&\xda\x04\xafE!/O%\xa7O\xcf\xcd\x90\xbe`\ +\x01\x8b\x02\x22\x22\x86\xeeCb\xcdp\xc3\xf9\xd5D6\ +\xc8%j\x88o\x845\xe1\xd6x-\x0e\xd5\xaa)\xe7\ +\xe2\x8bss\x17\xbdeK\x16\x07DD\x0c\xcd\xd7\xc4\ +\xd6\xe1\x86\xf3\xb7\xc4R\x22\x1b\xe4\x1a\xfd\xc3:\xeaR\ +$\xfe\xc4k\x91\xa8UK9\x97]\x96{!\xfd\x82\ +\x0bX \x10\x111\x14\xf7\x8a\xc7\x85\x1b\xce\xff%\xf6\ +$\xaaA\xae\xb2)\xac\xc9\xd7H|\xdek\xb18\xfc\ +p\xe5l\xdfNG\x17DDD\x03.\x087\x9ck\ +\x17\x13\xd1 \x97\xd1\xafq=\x10\xd6\x04\xec$\xbe\xe3\ +\xb5`\xe8G|*+s+\xa4/[F_tD\ +D4\xea\xc6\xf0\xc3\xf9O\xc4<\x22\x1a\xe4:\xfaU\ +\xae\x0f\xc3\x9a\x883|\x14\x8d\xd4\xc8\x91\xb9w\xd4\xa5\ +G\x0f\x16\x0cDD4\xa2>~Z-\xdcp.\xff\ +\x18\x89FD3\x804g\x86\xf9my\x87\x9f\x90~\ +\xc6\x19\xb9\x15\xd0W\xaeL\xbf\xb0\xca\xc2\x81\x88\x88\x01\ +\xfa\xb8X/\xdcp\xae\xef\xc5\x0d#\x92\x01|\x95\x9b\ +\xc2\x9a\x94\xfa\xdb\xfaO\xbd\x16\x11\x1dV\xcf??\xb7\ +B\xfa\x80\x01,\x1e\x88\x88\x18\x98\xaf\x84\xdf\xb1E\xbb\ +\x9e(\x06\xf0u\xea\x88\xef\x8551\xeb\x8bOz-\ +&\xa5\xa5*\xb5zu\xee\x5c\x16]\xbf^\xa5t\xcb\ +I\x16\x11DD\xcc\xb2\xbb\xc5\xfe\xe1\x87\xf3\x87\xc4B\ +\xa2\x18\xc0\x81\x19 ~\x1e\xd6\x04\xd5/\x8d\xbe\xee\xa3\ +\xb3Kr\xeb\xd6\xdc\xd9E\x1f:\x94\x85\x04\x11\x11\xb3\ +\xee\xa9\xe1\x87\xf3\x94\xd8\x84\x08\x06pp\x96\x879Q\ +\xfb\xb8\xdf\xe6=\x15\x966m\x94\xb3cGn\x04\xf4\ +\xcb/WN\x8d\x1a,&\x88\x88\x985\x17\x85\x1f\xce\ +u\xbf\xf3\xdeD/\x80CS \xfe:\xcc\x09;\xcb\ +\xcf\xa5\xd1\xae]U\xaa\xa2\x227B\xfa\x981,(\ +\x88\x88\x98\x15\xaf\x11\xf3\xc3\x0f\xe8\x17\x11\xbb\x00\xbc\xd3\ +P\xdc\x1b\xe6\xa4]\xe3\xa7\xd0\xe8K\x94\xb9\x10\xd0\xb7\ +oW\xc9\x9a5YX\x10\x11\xb1J\xde\x96H\xbf\xea\ +\x1dr8\xbf\x91\xb8\x05\xe0\x9f\xe3\x12\xe9\x96G\xa1L\ +\x5c]8n\xf1SpN8!7B\xfa)\xa7\xb0\ +\xb8 \x22b\xc6>\x95H\xbf\xe6\x1dr8\x7fS\xac\ +M\xd4\x02\xc8\x8c\xd5aN`\x99\xb9\xea\x11?\x85G\ +\x87\xd7\xb8\x07\xf4\x9d;\x95\xd3\xa0\x01\x8b\x0c\x22\x22\xfa\ +\xf65\xb1C\xf8\xe1\x5c?\x8e\xd8\x89\x88\x05P\xb5\xf3\ +\xe8\xf7\x879\x91[\xba\xfdY\xbd\x14\x9ed~\xber\ +\xe6\xce\x8d\x7fH\x9f:\x95\x85\x06\x11\x11}\xf9\x8e\xd8\ +;\xfcp\xfe\xa58\x9ex\x05Pu\x1a$B\xec\x8f\ +\xae\xed'\xbe\xeb\xb5\x08\x15\x16*g\xfe\xfcx\x07\xf4\ +\xcaJ\xe5\xb4j\xc5\x82\x83\x88\x88\x9e\xdc#\x0e\x0f?\ +\x9c+\xf7\x97y\x00\xc8\x12=\xc4\x8f\xc3\x9c\xd4'\x88\ +\xef{-F\xd5\xab+\xe7\xe2\x8b\xe3\x1d\xd2\x17/V\ +N^\x1e\x0b\x0f\x22\x22\x1e\xfc\xd7eq\x92\x1d\xe1\xfc\ +\x0e1\x9fH\x05\x90]&\x87=\xb9Ov\x0b\x8d\xa7\ +\xa2T\xbb\xb6r\xd6\xac\x89uHOv\xef\xce\xe2\x83\ +\x88\x88\x07u\x9a\x1d\xe1\xfc\x05\xb1\x8c(\x05\x10\x0cW\ +\x85=\xc9\x17\xf9\xe9\x91\xde\xa4\x89Jm\xda\x14\xdf\x90\ +\xbejU\xfaH\x0f\x0b\x10\x22\x22\x1e\xc0\xe5v\x84\xf3\ +\xbf\x88\xed\x89P\x00\xc1Q(>\x14\xf6d_\xe5\xa7\ +@\x95\x97\xab\xd4\xc6\x8d\xf1\x0d\xe9#F\xb0\x08!\x22\ +\xe2\xd7\x5ccG8\xd7\xc7c\xfb\x13\x9f\x00\x82\xe7p\ +\xf1\x0faN\xf8\x02\xf1:?\x85\xea\xb0\xc3\x94\xb3y\ +s<\x8f\xb9l\xdd\xaa\x9cZ\xb5X\x8c\x10\x11\xf1?\ +^/\x16\xda\x11\xd0g\x10\x9b\x00\xcc1D\xfcW\x98\ +\x93\xbeX\xfc\x89\x9f\x82u\xc4\x11\xca\xb9\xfc\xf2x\xee\ +\xa2O\x9e\xcc\x82\x84\x88\x88\xfb\xfc\xb1\xbbFZ\x10\xce\ +7\x10\x97\x00\xcc3)\x91\xeeg\x1a\xda\xe4/\x13\xef\ +\xf5S\xb8Z\xb6T\xce\xb6m\xf1\x0b\xe8\x15\x15\xcai\ +\xda\x94\x85\x09\x111\xc7\xbdS,\xb1#\x9c\x7fO\xcc\ +#*\x01\x84\xc3\xba\xb0\x8b@}\xf1Q?\x05\xac}\ +{\x95\xda\xb1#~!}\xc1\x02\x16'D\xc4\x1c\xf6\ +!\xb1\xae\x1d\xe1\xfc\xd7b5\x22\x12@x\xe8\x97F\ +\xef\x0c\xbb\x18\xb4\x11_\xf6S\xc8:vT\xa9\x9d;\ +\xe3\x17\xd2;wf\x91BD\xccA\x9f\x15\x9b\xd9\x11\ +\xce\xdf\x13\x1b\x13\x8f\x00\xc2\xa7D\xfcM\xd8E\xa1\xab\ +\xf8\x86\x9f\x82\xd6\xad\x9brv\xed\x8aU@O\xadX\ +\xa1\x9c\x82\x02\x16+D\xc4\x1cR\x16`u\x18\xed\x14\ +\x01\xe0\x004\x17\x7f\x1fvq8.\x91~\xce\xd8s\ +a;\xfah\x95\xd2\xe7\xb7\xe3\xb4\x8b>x0\x0b\x16\ +\x22b\x8e\xf8\x82\xd8\xd6\x8ep\xfe\x998\x8a8\x04`\ +\x1fG\x8b\xff\x08\xbbH\x8c\xf2\x19\xd2S\x03\x07*\xa7\ +\xb22>\x01]\xf7|/)a\xe1BD\x8c\xb9\xcf\ +\x8b\xad\xec\x08\xe7\xb4S\x04\xb0\x9c\x09\xe2\x17a\x17\x8a\ +\x13\xc5\xf7\xfd\x14\xbac\x8eIwB\x89\xcbQ\x97\xd3\ +Nc\xf1BD\x8c\xb1/\x89\x1d\xed\x09\xe7\xb4S\x04\ +\x88\x00\xcbm(\x18\xa7\x8a{\xfd\x14\xbc\x1e=\xe2s\ +\xdcE\xff\x22\xd0\xa2\x05\x8b\x18\x22b\x0c}E<\xd2\ +\x9ep\xfe\xc3\x04\xed\x14\x01\x22\x81\x9e\xa8\xb7\xdaP8\ +\xe6\xf9-|q\x0a\xe9K\x96('/\x8f\xc5\x0c\x11\ +1F\xbe)\xf6\xb4'\x9c?%\x96\x11{\x00\xa2C\ +u\xf1q\x1b\x0a\xc8\x1c\x9f\xc5/\xd9\xbd{|B\xfa\ +\x80\x01,h\x88\x881Qw*\xebaO8\x7f^\ +\xacM\xdc\x01\x88\x1eM\xc5wm($\xcb\xfd\x16\xc2\ +\xa3\x8f\x8eG\x0b\xc6\xcd\x9bU\xb2\xac\x8c\x85\x0d\x111\ +\xe2\xcab\xaa\x06\xd9\x13\xce\xdf\x17\x9b\x11s\x00\xa2K\ ++1eCA\xb9\xc4\xefN\xfaQG\xc5#\xa4\x9f\ +q\x06\x8b\x1b\x22b\x84}G\x1chO8\xd7kz\ +k\xe2\x0d@\xf4\xe9\x22\xfe5\xec\xa2\x92'\xae\xf7[\ +\x18;w\x8e\xfe\x8b\xa3\xfa\xc2h\xcb\x96,r\x88\x88\ +\x11\xdd9\x1flO8\xd7kyWb\x0d@|8\ +^\xfc4\xec\xe2R ^\xe1\xb7@v\xea\xa4\x9c\x1d\ +;\xa2\x1d\xd2\x97.UN~>\x8b\x1d\x22b\x84\xd4\ +oz\x8c\xb5'\x9c\xffK\x1cA\x9c\x01\x88\x1f\xa7&\ +,\xe8\x91\x9e\x9fAHO\xc5!\xa4\xf3\xc2(\x22b\ +\xa4v\xce\x8f\xb5'\x9c\xebWB\xc7\x12c\x00\xe2\xcb\ +E6\x14\x9b\x22\xf1\x1a\xbf!\xbdk\xd7h\x1fw\xd9\ +\xbcY9\x5c\x18ED\xb4\xde\xdd\x89\xf4\xab\xd8\x09{\ +<\x87\xf8\x02\x10\x7f6\xd8Pp\xf4q\x97\xed~C\ +z\x9b6\xca\xd9\xb2%\xba!\xfd\xcc3Y\xfc\x10\x11\ +-\xefs\xde\xd7\xaep\xbe\x94\xd8\x02\x90\x1b\xe8\x87\x8c\ +\xae\xb5\xa1\xf0\xe8\x8b\xa3\x1b\xfc\x16\xd0#\x8eP\xa9M\ +\x9b\xa2{a\xb4m[\x16ADDK\xc3y\x1f\xbb\ +\xc2\xf9\x16\x22\x0b@nQ \xdenKH\xf7\xdd\xdd\ +\xa5qc\xe5\xac[\x17\xcd\x90\xbe|\xb9r\x0a\x0aX\ +\x0c\x11\x11-{\x84\xa8\x97]\xe1\xfc:wC\x0d\x00\ +r\x8c\x9a\xe236\x14\xa2\xfc\x0c\x8e\xbb8\xe5\xe5\xd1\ +\x0d\xe9C\x87\xb2 \x22\x22Z\xe2[b\x7f\xbb\xc2\xf9\ +\xbdb5b\x0a@\xeeR_|\xc5\x96\x9d\xf4\xb5~\ +\xcf\xa4\xd7\xae\xad\x92\x97\x5c\x12\xb9\x80\x9e\xd2\x1di\x1a\ +6daDD\x0cYY\x00UW\xbb\xc2\xf9\xcf\x09\ +\xe7\x00\xa0\xd1\xaf\x8d:\xb6\x84\xf4M~\x0bli\xa9\ +r.\xbc0z\xbb\xe8\xe7\x9f\xaf\x9c\xbc<\x16HD\ +\xc4\x90|]\xeciW8\x7fL,#\x96\x00\xc0\xbf\ +i#&m)RK\xfd\x16\xda\x92\x12\xe5,Z\x14\ +\xbd\x9d\xf4>}X$\x11\x11C\xf0%\xb1\x93]\xe1\ +\xfc!\xb1\x06q\x04\x00\xfe?G\x89\x7f\x89\xecq\x97\ +j\xd5\x94s\xee\xb9\xd1\xeb\x8d^\xb3&\x8b%\x22\xa2\ +A_\x15\xbb\xd9\x15\xce\x9f\x17\xeb\x12C\x00\xe0\x9b\xe8\ +%~`KH_\x95IH\x9f7/R!=9\ +u*\x0b&\x22\xa2\xc1\x9ds\xcb\xce\x9c\xbf(6 \ +~\x00\xc0\xa1\x18(~dK\xf1Z\xee\xb7\x00\xe7\xe7\ ++\xe7\xf4\xd3\xa3\xb5\x93\xde\xa5\x0b\x0b'\x22b\xc0>\ +/\xb6\xb3+\x9c\xbf*\x96\x13;\x00\xc0+\xfd\xc4\xbf\ +\xdbR\xc4f\x88I?\x85X_\xbe\x1c=::\xbb\ +\xe8k\xd7*\xa7\xb8\x98\x05\x14\x111 \x1f\x11\x0f\xb3\ ++\x9c\xbf$6$n\x00\x80_\x8e\x13?\xb6\xa5\x98\ +M\x11\xf7\xfa-\xcaC\x86\xa4_\xef\x8cBP?\xf9\ +d\x16QD\xc4\x00\xfc\x95\xd8\xc0\xaep\xfe\x0a;\xe7\ +\x00P\x15F\x89\x9f\xd8R\xd4N\x12w\xfb-\xce\xbd\ +z)g\xd7.\xfb\x03\xba\xfe\x22\xd1\xb2%\x8b)\x22\ +b\x16\xbdS\xaceW8\x7f[<\x9cx\x01\x00U\ +e\x82\xf8\x99-\xc5m\xb8\xf8\xae\xdf\x22\xdd\xb9\xb3r\ +\xb6o\xb7?\xa4\xebG\x97\x0a\x0aXT\x11\x11\xb3\xe0\ +Mb\x0d\xbb\xc2\xb9,_\x89f\xc4\x0a\x00\xc8\x16s\ +\xc4/m)r#\xc4\xf7\xfc\x16\xeb\x16-\xd2m\x0d\ +m\x0f\xe9#F\xb0\xb0\x22\x22V\xd1\x1f\x88%v\x85\ +\xf3?\x88\x1d\x89\x13\x00\x90m\xce\xb3\xa8\xd0\xa9\x81\xe2\ +[~\x8bv\x93&\xcaY\xb7\xce\xee\xc7\x8bv\xeeT\ +Ny9\x0b,\x22b\x86^#\x16\xd9\x15\xce\xffW\ +\xecN\x8c\x00\x80\xa0\xb8\xd8\xa6\x90\xae\x9fh~\xcdg\ +\xe1N6j\xa4\x9c5k\xec\xdeE\xd7\x0f.\xe9N\ +4,\xb4\x88\x88\xbe\xdc.\x16\xd8\x15\xce\xff(v#\ +>\x00@\xd0\x5chSH\xef\xe2><\xe1\xebA\xa3\ +:uTR\x9f\xf7\xb6\xb9\xf5b\xbf~,\xb6\x88\x88\ +>\xd4/P\xe7\xd9\x15\xce\x7f/v&6\x00\x80)\ +\x16&,:\x93\xde\xce}\x80\xc2W1/.V\xa9\ +s\xce\xb17\xa4o\xdf\xae\x92\x0d\x1a\xb0\xe8\x22\x22z\ +\xf0B\xbb\x82\xb9V\xfe\xb18s\x0e\x00\xe6\x99%~\ +aK1\xd4\x0fP<\xe6\xb7\xa8\x17\x16\xaa\xe4\xf4\xe9\ +\xf6\x86\xf4\xf3\xce\xe3\xa8\x0b\x22\xe2A\xdc#\x9ej_\ +8\xd7\xad\x14\x9b\x13\x13\x00 ,\xe6\xd9\xb4\x93\xdeD\ +|\xd8o\x81\xd7\x01\xf8\xa4\x93\xec\xbd4:p \x8b\ +0\x22\xe2\x01\xd4\xefb\x9cl_8\x97\xef\x0c\x896\ +\xc4\x03\x00\x08\x9b\xc9\x09\x8b\xfa\xa4\xeb\x07)~\x92I\ +\xb1\x1f:\xd4\xceWGu\xffv\x8e\xba \x22~\xc5\ +\xd7\xc5\xfe\xf6\x85\xf37\xc5#\x88\x05\x00`\x0b\xa7\xda\ +\x14\xd2\xab\x89\xd7fR\xf4{\xf6T\x8ensh[\ +H_\xb0\x80\xa3.\x88\x88\xae/\x8a\xdd\xec\x0b\xe7/\ +\x8b\x8d\x89\x03\x00`\x1b\x93l\x0a\xe9\xba\xcd\xd6\xd6L\ +\x8a\x7f\xfb\xf6\xca\xd9\xba\xd5\xbe\x90\xde\xbf?\x0b3\x22\ +\xe6\xbcO\x8bm\xec\x0b\xe7\xf2\x9d!QN\x0c\x00\x00\ +[\x99(~jK\xd1\xd4\xed\xb6\x96g\xb2\x084m\ +j\xdf\x83F\xf2\xa5!U\xaf\x1e\x0b4\x22\xe6\xac\xf7\ +\x8b\xe5\xf6\x85\xf3\x17\xc4F,\xff\x00`;'\xdb\x14\ +\xd2\xb5\xb3\xf4\x03E~\x17\x83\xfa\xf5\x95\xb3b\x05G\ +]\x10\x11-\xf0.\xb1\x8e}\xe1\xfc\xb7bC\x96}\ +\x00\x88\x0aV\x9dI\xd7N\x17\xf7\xfa]\x14JK\x95\ +\xb3h\x91]!\x9d\x07\x8c\x101\xc7\xbc\xddm\x00`\ +Y8\x7fZl\xc0r\x0f\x00\x1cw\xa9\xa2c\xdd\xb6\ +\x5c\xbe\x16\x87\x92\x92\xf4\xce\xb5-\x01}\xf3f\x95\xaa\ +]\x9bE\x1b\x11s\xc2\x1b\xc4\xea\xf6\x85\xf3\x87\xc5Z\ +,\xf3\x00\x10UN\x12?\xb1\xa9\xb0\x0e\x12\xdf\xf4\xbb\ +H\xe4\xe7\xab\xd4i\xa7\xd9\x13\xd2\xe7\xcf\xe7\xa8\x0b\x22\ +\xc6\xde\x1db\xa1}\xe1\xfc\x1e\xb1\x06\xcb;\x00D\x9d\ +\xe1\xe2?l*\xb0G\x89/e\xf2\xa0\xd1\x981\xf6\ +\x84\xf4^\xbdX\xc0\x111\xb6\xaer/\xfa[\x16\xce\ +o\x17\x8bY\xd6\x01 .\xf4\x17\xffjS\xa1m\xe3\ +\xb6\xeb\xf2\xbdp\xe8`lC\xaft\xfd\x80Q\xc3\x86\ +,\xe4\x88\x18+\xf5\x85\xfey\xf6\x05s\xed\x8db!\ +\xcb9\x00\xc4\x8d\xa3\xc5?\xdaTp\x1b\x8a\xf7f\xda\ ++}\xcb\x96\xf0C\xba\xbe\xc0\x9a\x9f\xcf\xa2\x8e\x88\xb1\ +P\xdf\x11\x9ahg8\xff\xb6\x98\xcf2\x0e\x00q\xa5\ +\xa5\xf8\x96M\x85\xb7\xc4\xbd\x84\xe4{1i\xd2D%\ +\xd7\xae\x0d?\xa4\x8f\x18\xc1\xc2\x8e\x88\x91\xf75\xb1\x9f\ +\x9d\xe1|\x09K7\x00\xe4\x02M\x12\xe9W\xd7\xac)\ +\xc0\xfa\xd5\xd1M\x19,(\xfb\xba\xa9,]\x1an@\ +\xdf\xb5K9\xcd\x9b\xb3\xc0#bd}Flo_\ +0\xffR<\x97%\x1b\x00r\x09\xfd\xea\xda\xf3\xb6\xed\ +\x94\x9c\x93\xc9\xe2R\x5c\xac\x9cy\xf3B\x0d\xe9\xa9K\ +/UNQ\x11\x0b=\x22F\xce\x87\xc5\xc3\xed\x0b\xe7\ +_\x88sX\xaa\x01 \x17\xa9#>j[H?U\ +\xdc\xe3\xf7R\x93>\x07>yr\xb8;\xe9\x13'\xb2\ +\xd8#b\xa4\xfc\xa9X\xdb\xbep\xae\xdf\xef\x98\xcc\x12\ +\x0d\x00\xb9\x8c\xee%{\xafm!}\x84\xf8v&m\ +\x18G\x8fVNee8\x01]\xff\xe7\x1ey$\x8b\ +>\x22F\xc2k\xc4j\xf6\x85\xf3\x8f\xc5\x13Y\x9a\x01\ +\x00\xd2!\xfdn\xdbBz\x7f\xf7\xd2\x92\xef\x85\xa7O\ +\x9f\xf4\xb9\xf00B\xfa\xbau\xca)-e\xf1GD\ +\xab\xdd%\x16\xd9\x17\xce?\x12G\xb3$\x03\x00\xfc\x97\ +j\xe2\x8fl\x0b\xe9\x1d\xc5\xe73Y\x80:tP\xce\ +\xd6\xad\xe1\x84\xf4\x193\x08\x00\x88h\xad\xcb\xed|\x80\ +\xe8/b?\x96b\x00\x80\x03\x87\xf4\x9bm\x0b\xe9\xfa\ +\xf2\xd2C\x99,DM\x9b\xa6w\xb4\xc3\x08\xe9\xc7\x1c\ +C\x10@D\xab\xdc+~\xcb\xce6\x8a\xf2\x8f\x96\xe8\ +\xcc\x12\x0c\x00\xf0\xcd\xe8\x87 \xae\xb0\xad\x80\xd7\x15\xef\ +\xcc\xa4\x0dc\x9d:\xcaY\xb6\xcc|@\xdf\xb2E\xa5\ +\xea\xd5#\x14 \xa2\x15\xbe+\x8e\xb13\x9c\xbf&6\ +g\xe9\x05\x00\xf0\xc6J\xdb\x0ayu\xf1\xbb\x99,N\ +%%\xca9\xff|\xf3!}\xc1\x82\xf4\xc5U\xc2\x01\ +\x22\x86\xe8\xabbo;\xc3\xf9\xd3bC\x96[\x00\x00\ +\x7fL\x15?\xb3\xa9\xa0\xebs\x93\x8b2Y\xa4t\x8f\ +\xf2\xd9\xb3\xcd\xf7G\x1f<\x98\x80\x80\x88\xa1\xf9\xa8\xd8\ +\xdc\xcep\xfe\xb3D\xbaA\x01\x00\x00d\xc0\x18\xf1\x9f\ +\xb6\x15\xf7Y\xeey\xca\x8c\xda0\x9a\x0c\xe8;w*\ +\xe7\x88#\x08\x0a\x88h\xdc;\xdd\xe3\x81\x16\x86\xf3k\ +\xc5\x02\x96W\x00\x80\xaa1H\xfc\x9bmE~T&\ +\xbd\xd2\xb5}\xfb\xaaTE\x85\xd1WFS\xd5\xaa\x11\ +\x18\x10\xd1\x987\x885\xec\x0c\xe7\x9b\xc4<\x96U\x00\ +\x80\xec\xd0)\x91\xbeioU\xb1\xef.\xbe\x90\xc9\x02\ +\xd6\xb1\xa3J\x1al\xc3\x98\xd2\xaf\x9c\x12\x1a\x10\xd1\x80\ +\x92\x80U\x81}\xc1\xfcK\xf1<\x96R\x00\x80\xec\xd3\ +R|\xc3\xb6\x90\xde\xdc=g\xe9{!k\xd5J9\ +\x9b7\x9b{e\xb4S'\xc2\x03\x22\x06\xea9v\xee\ +\x9a\xeb\xbbLg\xb2\x84\x02\x00\x04G\xb9\xf8\x9cm\x0b\ +\x80>gyG&\x0bZ\xfd\xfa\xcaY\xb1\xc2LH\ +\xbf\xfcrZ/\x22b \xee\x16O\xb53\x9c\xeb;\ +LcX:\x01\x00\x82\xa7\x9e\xf8\x84m\x0bA\x99\xf8\ +\x83L\x16\xb7\xd2R\xe5\x5cp\x81\x99\x90\xae\xdb=\xe6\ +\xe7\x13(\x101\xab=\xceO\xb07\x9c\x9f\xc8\x92\x09\ +\x00`\x8e\xd2D\xbaM\x96U\x0bB\xa1\xb85\x83\x05\ +.YX\xa8\x9cY\xb3\xcc\x84\xf4\xe1\xc3\x09\x15\x88\x98\ +\x15_\x11{\xd9\x19\xce\xff,\xf6c\xa9\x04\x000\x8f\ +n\x93u\xb5\x85\x0b\x83Z\xa8C\xb7\xdf\xc5.?_\ +%'M\x0a>\xa0\xef\xda\xa5\x9c\x16-\x08\x17\x88X\ +%\x9f\x12\xdb\xda\x19\xcew\x8b\x1dY\x22\x01\x00\xc2\xc5\ +\xbaWG\xb5\x93\xdcs\x99\xbe\x17\xbe\xa1C\xd3\x97:\ +\x83\xec\xea\xb2z\xb5JU\xafN\xc8@\xc4\x8c\xfc\x95\ +Xng8\x7fA<\x8ce\x11\x00\xc0\x0e\xa6\x88\x9f\ +\xda\xb6X\xf4\x10_\xcad\x01<\xfah\xe5\xec\xd8\x11\ +\xecN\xfa\x94)\x04\x0dD\x8cS\x8f\xf3_$\xd2\xc7\ +\x1f\x01\x00\xc0\x22\x86\x89\x1f\xd8\xb6h\xb4\x10\x1f\xcfd\ +!l\xdf^9[\xb6\x04\x1b\xd2{\xf4 p \xa2\ +g7\xda\xd9\xe3\xfc\xdf\xaf\x83\x16\xb2\x0c\x02\x00\xd8I\ +\x97\x84\x85\x0f\x1a5\x12\xef\xc9\xe4\xf2h\xb3f*\xb5\ +qcp\x01}\xd3&\xe5\xd4\xaeM\xf0@\xc4\x83\xd7\ +\x22{{\x9ckW%x\x1d\x14\x00\xc0z\xf4\x83F\ +\xaf\xd9\xb6\x88\xd4p\x7f\x1a\xf6\xbd8\xea\x00\xbdlY\ +p\xe7\xd1/\xbcP9\x05\x05\x84\x10D\x8cZ\x8f\xf3\ +/\xc4\x05,y\x00\x00\xd1A\xf7J\x7f\xcc\xb6\x05E\ +\xff4\xbc!\x93E\xb2\xa4$\xdd\xc3<\xa8\x9d\xf4\xb1\ +c\x09\x22\x88\xf85\xdf\x10\x07\xd9\x19\xce?\x16'\xb0\ +\xd4\x01\x00D\x0f+{\xa5kg\x89{\xfd.\x96\x85\ +\x85*9}z0\x01]w\x8d\xe9\xd8\x91@\x82\x88\ +\xff\xf1wb7;\xc3\xf9\xdf\xc4\xa1,q\x00\x00\xd1\ +E\xf7J\xbf\xc6\xc6\x90>\xc6}\x81\xcf\xd7\xa2\x99\x97\ +\xa7\x9c\xd1\xa3\x83\x09\xe9\xfa\xac;\xe7\xd1\x11Q|D\ +lfg8\x7f_\xec\xcc\xd2\x06\x00\x10}\xf2\xc5m\ +6\x86\xf4c\xc573Y@\x87\x0c\x09\xa6W\xba>\ +F\x93\x9fO@A\xcca\x7fio\x8f\xf3w\xc4\xf6\ +,i\x00\x00\xf1bQ\x22}\xa9\xc8\xaaE\xa7\x8b\xf8\ +|&\x0bi\xb7n*\x15D\xaf\xf4\xe3\x8f'\xa4 \ +\xe6\xa87\x8bev\x86\xf3g\xc5\xc6,c\x00\x00\xf1\ +d\xac\xf8\x91m\x8bO\xb9\xbbk\xe5w1M\xb5l\ +\x99n\x95\x98\xed\xf3\xe8\xba\x07;a\x05\x91\x1e\xe7v\ +x\xa7X\x83\xe5\x0b\x00 \xde\x0c\x14\xffl\xdb\x22T\ +[\xbc=\x93\x85\xb5aC\xe5\xacZ\x95\xdd\x90\xben\ +\x9dr\xca\xca\x08-\x889\xe2r1\xcf\xcep\xfe]\ +\xb1\x88e\x0b\x00 7\xe8\x90H\x9fg\xb4j1\xaa\ +&^\x9b\xc9\x02[\xab\x96r\x96.\xcdnH\x9f7\ +/})\x95\xf0\x82\x18\xeb\x07\x88\xe6\xda\xfb\x00\xd1\xba\ +\x04\x0f\x10\x01\x00\xe4\x1c\xbaW\xfa\xc3\xb6-Jz\x17\ +\xeb\x92L\x16\xdb\xe2\xe2t\xa8\xcefH\x1f6\x8c\x10\ +\x83\x18S\xdf\x11G\xd9\x19\xcc?\x15\xcfd\x89\x02\x00\ +\xc8]\x8a\xc5\x9bl\xdc=\xca\xa4WzRw`9\ +\xfd\xf4\xec\x05\xf4]\xbb\x94\xa3\xcf\xb9\x13f\x10c\xe5\ +Kb\x0f;\xc3\xf9\x07\xe2q,M\x00\x00\xa0\x7fB\ +\xddhcH?\xde\xdd\xe5\xf2\xdd+}\xc2\x84\xec\x85\ +\xf4\x95+U\xaazuB\x0dbL|Zlgg\ +8\xdf+veI\x02\x00\x80\xfd9/aa\x1bF\ +\xbd\xcb\xf5b&\x0b\xf1q\xc7e\xafW\xfa\xcc\x99\x04\ +\x1b\xc4\x18x\x9f\xbd=\xce_\x15[\xb2\x0c\x01\x00\xc0\ +\x81\x18/\xfe\xd3\xb6\xc5\xab\x85\xf8X\x86\xbd\xd2\x9dl\ +\xf5J\xe7<:b\xa4\xd5]\xa2j\xd9\x19\xce\x1fI\ +\xa4\xef\x04\x01\x00\x00|#}\xc4?\xda\xb6\x885\x14\ +\xef\xcedan\xdbV9[\xb6T9\xa0\xa7**\ +\x94\xd3\xba5A\x071\x82^\xe5v\x89\xb20\x9c\xdf\ +\x9aH\xdf\x05\x02\x00\x008$\xad\xc5\xd7m[\xccj\ +\x887d\xf2\xa0Q\xd3\xa6\xe9\xde\xe6Y\xe8\x8f\x9e\xa4\ +?:b\xa4\x5cg\xef\x03DW\x88\x05,7\x00\x00\ +\xe0\x87\xfa\xe2\xa3\xb6-jz\xa1\xdd\x90\xc9B]\xbf\ +\xberV\xac\xa8zH_\xb0@9\xba[\x0c\xc1\x07\ +\xd1\xfa\x1e\xe7\xb3\xec\x0c\xe6_&\xd2w~\x00\x00\x00\ +2\xa2\xa6x\xafm\x0b\x9c\xee\x95\xbe$\x93E\xbb\xb4\ +T9\x8b\x16U=\xa4\x9fp\x02\x01\x08\xd1b\xdf\x17\ +\xcf\xb43\x9c\x7f.\x9e\xc5\xd2\x02\x00\x00UE?3\ +}\xbd\x85\x0b\x9d\x9a\x22\xee\xf1\xbbxW\xabV\xf5\x07\ +\x8dtw\x98\x8e\x1d\x09B\x88<@\xe4\xc7\x8f\xc4\xb1\ +,)\x00\x00\x90M\xacl\xc38@|-\x93\x07\x8d\ +\xce8\xa3j\x97F7mRN\x9d:\x04\x22D\x8b\ +|A\xecfo\x8f\xf3.,#\x00\x00\x10\x04'\x8b\ +\x1f\xdb\xb6\xf8u\x10\x9f\xc9\xe4A\xa3\xd1\xa3\xab\xb6\x93\ +\xbex\xb1r\x0a\x0b\x09F\x88\x16\xa8[\xb16\xb7\xb7\ +\xc7y\x0b\x96\x0f\x00\x00\x08\x92~\xe2\x9fl[\x04\xf5\ +\xe3#\xbf\xcada\x1f5\xaaj\x0f\x1a\x8d\x1dK8\ +B\x0c\xd9{\xdcV\xac\x16\x86sz\x9c\x03\x00\x801\ +\x8e\x14\xdf\xb3m1,\x13\x7f\x98\xc9\x02\xdf\xb3\xa7r\ +v\xed\xca\xfc<\xfaQG\x11\x92\x10C\xf2\xfbn\x0b\ +V\x0b\xc39=\xce\x01\x00\xc08\x8d\xc5gl[\x14\ +\x8b\xc4\x8aL\x16\xfa\xa3\x8fV\xa9\x9d;3\x0b\xe9\x9b\ +7+\xa7^=\xc2\x12\xa2a\xb7\x8a\x85v\x86\xf3\xca\ +\x04=\xce\x01\x00 $J\xc5\x9f\xd9\xb68\xea6\x8c\ +\x8b2y\xd0\xa8M\x9b\xcc_\x1d]\xb6L\xa5t\x87\ +\x18B\x13\xa2\x11\x17\xb9s\xdd\xb2\xfa\xa3/\xd2\xd3\xe3\ +\x1c\x00\x00BG\xef\x12}\xdb\xc2\x1d,59\x836\ +\x8c\xfa\xd5\xd1\xd4\xfa\xf5\x99\x85\xf4\xe9\xd3\x09N\x88\x01\ +\xbbW\x9ci\xe7\xae\xf9\xa7\xe2T\x96\x04\x00\x00\xb0\x85\ +e\xdb\xe2\xaa\xfb&_\xe17,\ +\xe4\xe5)g\xc2\x04\xff\x8f\x18u\xeaD\xd0B\xcc\xc0\ +\x1f\x8b\xb5\xec\x0c\xe7\xdf\x13\x8b(\xef\x00\x00\x10e\xf4\ +Kz7\xd9\xb6\xc8f\xd4+]\x87\xf4\xf1\xe3\xfd]\ +\x1a\xdd\xb4I9u\xeb\x12\xb8\x10}\xf8m\xf7\xd11\ +\x0b\xc3\xf9\x12J:\x00\x00\xc4\x05\xdd\x86q\x93\x85\x8b\ +\xad\x9a\xe1\xf6U\xf6\x15 \x86\x0f\xe7\x11#\xc4\x80\x5c\ +i\xe7\x03D\x9f\x893(\xe5\x00\x00\x10G\xf4\x0b{\ +_\xd8\x16\xd2\x8f\xcf\xa0Wzj\xe0\xc0\xf4\x11\x16\xaf\ +!}\xda4\xc2\x17\xe2!<\xc7\xce]\xf3\x7f\x8ac\ +)\xdf\x00\x00\x10g&\xb8\x0b\x9eU\x8bp?\xf15\ +\xbf\x81b\xd0 \x7f!\xbdwoB\x18\xe27\xbc\x0e\ +:\xcd\xcep\xfe'\xb17e\x1b\x00\x00r\x81\xbe\xee\ +\xc2g\xd5b\xdcA|\xceo\xb8\xe8\xd1C9\xbbv\ +y\x0b\xe8\xf2\xff/\xd5\xa6\x0d\x81\x0cq?\xf5\xafW\ +\xa3\xec\x0c\xe7\xbb\xc5\x8e\x94k\x00\x00\xc8%\x8e\x14\xdf\ +\xb3mQ>B|\xd4o\xc8\xe8\xdcY9;vx\ +\xbb4\xbaa\x83J\xd5\xa9C0C\x14_\x17\xfb\xdb\ +\x19\xce\x9f\x17\x9bP\xa6\x01\x00 \x17\xd1\x0b\xe0\xb3\xb6\ +-\xceu\xc5\xbb\xfc\x86\x8dv\xed\x94\xb3m\x9b\xb7\x9d\ +\xf4\xc5\x8bU\xb2\xb0\x90\x80\x869\xed\x8bb7;\xc3\ +\xf9Cb\x1d\xca3\x00\x00\xe42\xfa\xb1\x8f_\xd8\xb6\ +H\xd7\xc8\xe0A\xa3}\xc7W\xb6n\xf5\x16\xd2'O\ +&\xa4a\xce\xfa\xb4\xd8\xc6\xcep~K\x22\xdd\x1a\x16\ +\x00\x00 \xe7\xd1\x0b\xe2\xcd\xb6-\xd6\xd5\xc4\xff\xf1\x1b\ +>\x9a5S\xce\xe6\xcd\xdeB\xfa\x80\x01\x845\xcc9\ +\x1f\x13\x9b\xd9\x19\xce\xaf\x13\x0b)\xc7\x00\x00\x00\xffE\ +\xf7J_e\xdb\xa2\xad\xfb1_\xe27\x844i\xa2\ +\x9c\xf5\xeb=]\x1au\xb84\x8a9\xe4\x1dbm\xfb\ +\x82\xf9\x97\x09\x1e \x02\x00\x008(V\xf6J_(\ +&\xfd\x84\x91\xf2r\xe5\xac[w\xe8K\xa3\x1b7*\ +\x87K\xa3\x98\x03\xfeX\xaci_8\xff\x5c\x9cG\xd9\ +\x05\x00\x0084'\x8b\x1f\xdb\x16\xd2'\x89{|\x86\ +\xf4\x94\x87\x9d\xf4\xe4\xc2\x85\xca)( \xc4al\xd5\ +\xf79J\xec\x0b\xe7\x1f\xbb\xb5\x06\x00\x00\x00<\xd2S\ +\xfc\xbdm!}\x80\xf8\x86\x9fpR\xaf\x9erV\xaf\ +>\xf4q\x973\xcf$\xc8a,\xdd.\x16\xd8\x17\xce\ +\xff\xe8\xd6\x18\x00\x00\x00\xf0IK\xf15\xdbB\xfaQ\ +\xe2K~\xba\xbbHHOy\x09\xe9\x03\x07\x12\xe80\ +V\xaev\xefqX6\x87\xdf\x14[S^\x01\x00\x00\ +2\xa7\x9e\xf8\x88m!\xbd\xad\xf8\xac\x9f\xb0R\xb7\xae\ +rV\xad:\xf4\xa5\xd1\xb6m\x09v\x18\x0b\xcf\xb1\xb3\ +S\xcbsbc\xca*\x00\x00@\xd5\xd1m\x18o\xb1\ +m\xb1?\xdc\xef\xab\xa3\xfa2\xe8!B:\x97F1\ +\xea&\xed\x0d\xe7\xf7&\xd2\xef.\x00\x00\x00@\x96(\ +\x10+m[\xf4\x1b\x8a\xbf\xf4\x13`j\xd5R\xce\xf2\ +\xe5\x07\xdfI_\xbaT9EE\x84=\x8c\x9c{\xc5\ +3\xed\x0c\xe77\x89\xd5(\xa3\x00\x00\x00\xc1\xb0\xca\xb6\ +\xc5\xbf\x8e\xf83?;\x8c5k\x1e:\xa4O\x9bF\ +\xe0\xc3H\xf9\xbe8\xd9\xcep~\xa5\xfb\x05\x1f\x00\x00\ +\x00\x02d\xaa\xf8/\x9bB@\xa9x\x93\x9f@#!\ +=y\xc9%\x07?\xee2x0\xc1\x0f#\xe1nq\ +\xac\x9d\xe1|%\xe5\x12\x00\x00\xc0\x1c#\xc4\xbf\xdb\x14\ +\x06\x8a\xc4\xab|\x86t\xe7`!\x9dK\xa3\x18\x01\xdf\ +\x11\x87\xd9\x17\xcc\xf5cg\xe7P&\x01\x00\x00\xccs\ +\x8c\xf8\x07\x9b\x82\x81\xee\xf7\xbc\xc9\xcfq\x97\xb22\xe5\ +,[v\xf0K\xa3\xba\x03\x0cA\x10-\xf4u\xb1\xaf\ +}\xe1\x5c\xff\xba6\x99\xf2\x08\x00\x00\x10\x1e\xcd\xc5W\ +-\x0b\x08\xfb\xbaXx\x0e:5j\xa8\xd4\x92%\x07\ +\xbd4\x9a\xaaV\x8d@\x88V\xf9\xbc\xd8\xce\xbep\xfe\ +\x818\x98\xb2\x08\x00\x00\x10>\xba\xaf\xf1s\xb6\x85\xf4\ +9n\xcb9\xcf\xc7]\x0evqt\xf2dB!Z\ +\x15\xce\xdb\xdb\x17\xce\xff,\xf6\xa5\x1c\x02\x00\x00\xd8C\ +-\xf1>\xdbB\xfa\xa9nw\x0bO\xc1\xa7\xac\xec\xe0\ +\x17G\x87\x0c!\x1cb\xe8>-\xb6\xb0/\x9c\xcbw\ +\xe1Dg\xca \x00\x00\x80}\xe8Vj\xffc[H\ +\x1f.\xbe\x9b\x85\x9d\xf4TE\x85r\xda\xb5#$b\ +h>(6\xb2/\x9c\xffNlB\xf9\x03\x00\x00\xb0\ +\x97\xbc\x84\x85\xbd\xd2\xfb\x89oz\x0dB\xf5\xea)g\ +\xed\xda\x03\xef\xa2\xaf_\xcfK\xa3\x18\x8a\xbfv\x1f\xe6\ +\xb2ln=&\xd6\xa5\xec\x01\x00\x00D\x83\xf9\x89t\ +\xab5k\xc2D/\xb7\xeb\x85\xa7@\xa4;\xb7\xacY\ +s\xe0\x90\xae\xbb\xbepi\x14\x0dz\xbf\xd8\xc0\xbep\ +~\xb7XJ\xa9\x03\x00\x00\x88\x16\x13\xc4\x8fm\x0a\x15\ +]\xc5\x97<\x86\xa2\xd4\xc1v\xd2\xe7\xccQN^\x1e\ +\xe1\x11\x03\xf7\xe7bm\xfb\xc2\xf9\xcdb5J\x1c\x00\ +\x00@4\x19\x9aH\xb7^\xb3&\x5c\xb4s\xbb`x\ +\x0aH\x8d\x1a\xa9\x94>\xd6r\xa0\x90>z4\x01\x12\ +\x03\xf5.\xb1\x96}\xe1\xfc\xdb\x89\xf4}\x13\x00\x00\x00\ +\x880}\xc4\xbf\xd8\x142:\x88\xbf\xf5\x1a\x94\xca\xcb\ +Uj\xc3\x86\xaf\x07\xf4\xcaJ\xe5\xf4\xe8A\x90\xc4@\ +\xbc\xdb\xce\x9d\xf3\xcb\x13\xe9{&\x00\x00\x00\x10\x03:\ +\x8a{l\x0a\x1b\x87\x8b\x8f{\x0dLM\x9b*g\xf3\ +\xe6\xafwv\xd9\xb1C9\xcd\x9a\x11(1\xab\xde*\ +\xd6\xb0+\x98\x7f)\x9eK\x19\x03\x00\x00\x88\x1f\xcd\xc4\ +\xd7l\x0a\xe9\x8d\xdc\xee\x18\x9e\x82\xd3\xe1\x87\x1f0\xa4\ +\xef;\xa7\xae\xdb3\x12,1\x0b\xde,\x96\xd8\x15\xce\ +?\x13\xa7R\xbe\x00\x00\x00\xe2KS\xf1\x05\x9bBz\ +\xb9\xdb_\xdaS\x80j\xd1B9[\xb7~=\xa4/\ +Z\xa4\x92\x85\x85\x04L\x8c\xdb\xce\xb9\x0e\xe7gR\xb6\ +\x00\x00\x00\xe2O\x99\xf8K\x9bBz-\xf7B\x9e\xa7\ + \xd5\xaa\x95r\xb6m\xfbzH\x9f:\x95\x90\x89\x19\ +{\x9dXdW8\xff\xa7x\x02\xe5\x0a\x00\x00 w\ +(\x16\x7fdSH\xd7;\x97\xb7x\x0dT\x9d;+\ +g\xd7\xae\xaf\x87\xf4\xfe\xfd\x09\x9b\xe8\xdb\xff\xb1/\x9c\ +\xeb\xceK\x83(S\x00\x00\x00\xb9\x87\xee\xa3|\x93M\ +!\xbd\xd4=f\xe0)Xu\xeb\xa6R\x15\x15_\xbd\ +4\xaa\xff\xfb\xf6\xed\x09\x9d\xe8\xd9\xeb\xed\x0b\xe7\x7f\x15\ +\xfbS\x9e\x00\x00\x00r\x17\xdd\xb2m\xb3M!]\x87\ +\xa5k\xbd\x06\xac\x01\x03\xbe\xbe\x8b\xae/\x926lH\ +\xf8\xc4C\xfam\xb1\xc0\xaep\xbe7\x91\xee\xb8\x04\x00\ +\x00\x00\x90X\x92H\xb7r\xb3\x22\xa8\xe8\xd0t\xa5\xd7\ +\xa05j\xd4\xd7\xdb/\xaeX\xa1\x9c\x92\x12B(F\ +i\xe7\xfc-\xb1\x05\xa5\x08\x00\x00\x00\xf6gZ\x22\xdd\ +5\xc2\x9a\x90~\x85\xd7\xc05a\xc2\xd7w\xd2\xcf:\ +K9yy\x84Q\xfc\x9a\xdf\xb1/\x9c\xeb\xceJM\ +(A\x00\x00\x00p N\x12?\xb6)\xa4Wz\x09\ +]:\x88O\x99\xf2\xf5\x90>f\x0c\x81\x14\xbf\xe2w\ +\xed\x0b\xe7O\x8a\xf5(=\x00\x00\x00p0\x86\x8a\x1f\ +\xda\x14\xd2+\xbc\x84\xaf\xfc|\xe5\xcc\x9e\xfd\xd5\x80^\ +Y\xa9\x9cc\x8e!\x98\xe2>o\xb0/\x9c?\x22\xd6\ +\xa6\xe4\x00\x00\x00\x80\x17\x06\x8a\x7f\xb3%\xc8\x14\xb9\xad\ +\xf0\x0e\x19\xc2\x8a\x8a\x94\xb3p\xe1WC\xfa\x8e\x1d\xca\ +i\xde\x9c\x80\x9a\xe3\xfe\xc8\xbe\x17B\x1f\x12kRj\ +\x00\x00\x00\xc0\x0f\xba\x9bD2a\xd1N\xfaN/a\ +\xaczu\xe5,]\xfa\xd5K\xa3\xeb\xd7\xabT\x9d:\ +\x04\xd5\x1c\xf5F\xb1\x9a]\xe1\xfc\x8eD\xfa-\x02\x00\ +\x00\x00\x00\xdf\xb4\x13\xf7\xd8\x14\xd2wx\x08d\xc9\xb2\ +2\xe5\xe8N.\xfb\x87\xf4\xc5\x8bU\xb2\xb0\x90\xc0\x9a\ +c\xea\xbe\xfa\xd5\xed\x0a\xe7\xb7'\xd2o\x10\x00\x00\x00\ +\x00dL[q\xb7-\x01\xa7\xd0\xed_}\xc8pV\ +\xb7\xaer.\xbb\xec\xab\xc7]\xce<\x93\xd0\x9aC\xde\ +)\x96\xd9\x15\xce\xe5\x1f\x89\x9ds\x00\x00\x00\xc8\x0e\xcd\ +\xc47\x12\x89\x88\xb5`l\xd2$\xfdp\xd1\xfe!\xfd\ +\xd8c\x09\xaf9\xe0]bM\xbb\xc2\xf9\x8f\x13\xec\x9c\ +\x03\x00\x00@\x96\xd1\xad\xe0~cK\xe0\xc9\x13\xd7{\ +\x09k\xed\xda\xa9\xd4\xce\x9d\xff\x0d\xe8\xbbv\xed\xfb\x7f\ +#\xc4r!\xd4\xa0\xd7\x8b\x05\x94\x10\x00\x00\x00\x08\x82\ +:\xe2c\x91\x0b\xe9]\xba(\xa7\xa2\xe2\xbf!\xfd\xf2\ +\xcbU\xb2Q#\xc2l\x0c\xbd]\xacaW8\xaf\x14\ +\xf3(\x1d\x00\x00\x00\x10$\xb5m\x0a\xe9\xf9\x1e/\x8e\ +:\xc3\x86}\xf5\xa8\x8b\xbeDZRB\xa8\x8d\x91\xf7\ +\x8a\xb5\xed\x0a\xe7\xd7\x8a\xf9\x94\x0c\x00\x00\x000A\xa9\ +x\x9fM!\xdd\xd3\x8b\xa3\x13'~5\xa4\x9f{n\ +\xfa\x81#\xc2m\xe4}@\xackW8\xbf2\xc1\xce\ +9\x00\x00\x00\x18F_x\xbb\xcd\xa6\x90\xbe\xebPA\ +./\xef\xeb\xaf\x8d\x9et\x12\x017\xe2>(\xd6\xb7\ ++\x9c\xaf\xa1<\x00\x00\x00@X\xe8\x8bo\xdf\xb1%\ +\x18\xe9\xee.Wzymt\xd1\xa2\xaf\x86\xf4\xbe}\ +\x09\xba\x11\xf5I\xb1\xb1]\xe1|\x09e\x01\x00\x00\x00\ +\xc2F\xff\x8c\xbf\xcb\xa6\x90~\xd5\xa1\x82]i\xa9J\ +\xad\x5c\xf9\xdf\x80\xbec\x87rZ\xb4 \xf0F\xcc\xe7\ +\xc5\x16\x84s\x00\x00\x00\x80\x03\xa2/\xc2]aKP\ +*\x16o9T\xc0k\xd0@9\x1b7\xfe\xf7\xa5\xd1\ +\x0d\x1b\x94S\xa7\x0e\xc17\x22\xbe&v\xb6+\x9c\xaf\ +\xa6\x0c\x00\x00\x00\x80m\xe8\x9d\xf4u\xb6\x04&\xdd\x07\ +\xfb\xc7\x87\x0az\xcd\x9b\xab\xffk\xef\xfec\xed\xae\xeb\ +;\x8e\x7fo\x7f\xd1\xd6\xda\x9f\x16\x1a\x1bhK\xaf\xa6\ +\x19\xb8D\xaa-m\x88s\xcd\xbaF\x94\x15\x9dT\xc6\ +\xa6\x80\xa3\xb9\x13\x7f\xc4\x94\x8b\xd8\xc9\xc0\x16*k\xb5\ ++\xed\xed6\xdc2\xe6\xb6f,\xe0d\xd9\x961A\ +\x13\xc1X\x7f!n\xc8HQA\x84\xdes\x8d\x1a\xa3\ +\x9bf*\xb4_\xdf\xdf\x9d\xe3N[\xee\xbd\xed\xed\xfd\ +\xf1\xf9\x9cs\x1e\x8f\xe4\xf5o\xd3\x9c\xf3=\xc9\xb3\xa7\ +\xdf\xf3\xf9\xd6\xf6\xeci~\x93\xfe\xfe\xf7\x97\x03\xd3\xa6\ +\x09\xe0\xcc\xf7\xcd\xd8\xab\xf3\x8a\xf3\x9d>\xfe\x00@\xce\ +\xae\xcf%\x9c\xa6\xc7\xee\x19\xe9\x19\xe9W^)\x823\ +\x8f\xf3W\xf9A(\x00\xc0\x88\xf5\x16\xad\xf4M\xfa\xba\ +u\xc7\xffht\xfdz1\x9c\xe1\x9e\x8e\xbd&\xaf8\ +\xbf\xd5G\x1d\x00h%7\xe5\x12R\xd5\xc3k\xee\x1f\ +\xc9\x19\xe9\xfb\xf7\x97\xb5\xf3\xcf\x17\xc5\x19\xedp\xec\xcd\ +y\xc5y\xf5\xc3h\xe7\x9c\x03\x00-gK.A5\ +;v\xdf0\x01\xd8_=\xb0\xe8\x1d\xefhF\xfa\xae\ +]em\xe1Bq\x9cI\x9co\xca+\xceo\xf3\xd1\ +\x06\x00Z\xd9{cGs\x89\xf4O\x9e\xec\x8c\xf4\xf7\ +\xbd\xaf\x19\xe9\xdb\xb7\x97\xb5Y\xb3Dr\xe2]\x9dW\ +\x9c\xff\xb1\x8f4\x00\xd0\x0e\xfe \x97H_\xd0x,\ +\xfc\x90A8gNY\xdb\xb1\xa3\x19\xe9\xef~w\xfd\ +\xdbu\xa1\x9cd[\xdc\xd6\x02\x000nzr\x89\xf4\ +\x85\xb1\x07\x87\x89\xc2\x81\xee\xee\xb2\xb6wo3\xd27\ +n\x14\xcb\x09vc^q\xde'\xce\x01\x80vt]\ +.\xc1uN\xec\xcb\xc3\x05\xe2\xaaU\xc7\x9f\xec\xb2f\ +\x8dh\x9e\xc0\xed\x8fM\xca'\xce?V\xd4\x1f\xc6\x05\ +\x00\xd0\x966\xc7\x8e\xe4\x10^K\x1a\x8f\x8b\x1f2\x14\ +/\xbd\xb4\x19\xe8\xb7\xdf^\xd6\x96.\x15\xcf\x13\xb0;\ +c\x93\xf3\x89\xf3?+|s\x0e\x00t\x80kr\x89\ +\xf4\x15\xb1\xc7\x87\x8a\xc5\xae\xae\xb2\xbf\xa7\xa7\x19\xe9\x1f\ +\xfaP\xfd\x1eu\x11=n\xfb\xe7\xc6\x03\xa62\x89\xf3\ +;\xc49\x00\xd0I~?\x97H_\xd9xB\xe5\xa0\ +\xf7\xa3O\x9f^\xd6>\xf0\x81f\xa4_w]Y\x9b\ +2EL\x8f\xc3\x1e\x8a\xcds[\x0b\x00@R\xef,\ +2\xf9\xe1\xe8\xebb\xcf\x0e\x15\x8f\x0b\x16\x94\x03;w\ +6#}\xd3&A=\xc6{4\xb64\x9f8\xbf'\ +6\xc5\xc7\x13\x00\xe8To/2\xf9&\xfd\x8d\x8d\x87\ +\xe2\x0c\x1a\x91\xcb\x97\x1fw\xb2K\xff\xda\xb5\xc2z\x8c\ +v\xa8q\xabQ&q~wl\xb2\x8f%\x00\xd0\xe9\ +\xdeUd\xf2M\xfaU\xc3\xc5du\x92K#\xd0\x07\ +\xaaX\xf7\xa3\xd1Q\xef\xe9\xd8\xda|\xe2\xfc\xbe\xd84\ +\x1fG\x00\x80\xba\xf7f\x12ie\xef0A\xd9_\xdd\ +\xde\xe2G\xa3c\xb2\xea\x7f+~+\x9f8\x7f(6\ +\xd3\xc7\x10\x00\xe0x\xd9\x9c\x93\xbem\xa8@\xaf\x9e*\ +\xfa\x9e\xf74\xbfI\xef\xed\xf5\xa3\xd1\xd3\xdc\x95\xf9\xc4\ +\xf9\xc3\xb19>~\x00\x00\x83\xdb\x99C\xb4U\xe7p\ +\xff\xd5Pq9sfY\xbb\xf9\xe6f\xa4_~\xb9\ +\xe0\x1e\xe1\xb6\xe7\x13\xe7\xdf\x8c\xbd\xd4\xc7\x0e\x00`x\ +;r\x88\xb7\xa9\xb1\x03CE\xe6\xe2\xc5\xe5@\xf5\xf0\ +\xa2_\xde\xeeR=yTx\x9f\xd2\xf6\xc4\xba\xf2\x88\ +\xf3\xa7b\x8b}\xdc\x00\x00NM\x16\xdf\xa4\xcf\x88\xfd\ +\xd3P\xb1\xb9re3\xd0\xf7\xed+\x07\xba\xbb\x05\xf8\ +Iv\xa0\xf1\x0f\x9f\x0c\xde\xdb\xf8\xeb\x14\xcb}\xcc\x00\ +\x00N]\xf5\x04\xc7?\xcd!\xd2g\xc7\x1e\x18*:\ +/\xbb\xacy\xab\xcbm\xb7\x95\x03s\xe7\x0a\xf1!\xf6\ +/\x8d\x7f\xf0d\xf0\x9e~?v\xbe\x8f\x18\x00\xc0\xe9\ +E\xfa\x1d9D\xfaY\xb1/\x0c\x16\x9e\x93'\x97\xb5\ +-[\x9a\xdf\xa4\xf7\xf6\x96\xfd~4\xfa\x82}66\ +?\x8f8\xff\xef\xd8\xab}\xb4\x00\x00N_\xf5\xd0\x98\ +\xbbs\x88\xf4\x97\xc5\x1e\x1f,@\xe7\xcf/k\xbbv\ +5#\xbd\xfaV]\x94\xff\xff\x1e\x8b-\xcf#\xce\x7f\ +\x1a\xfbM\x1f)\x00\x80\xd1\x9b\x1a\xbb7\x87H_\x1d\ +\xfb\xd6`!\xfa\xf2\x97\x97\xb5\xbe\xbef\xa4_x\xa1\ +8o<\x88hU\x1eq\xfe\x5c\xec\x8d>J\x00\x00\ +c\xa7\xfa&\xfd\x1fr\x88\xf4\xf5\xb1g\x07\x0b\xd2\x0d\ +\x1b\x9a\x81^\x9d\xf0r\xf6\xd9\x1d\xff \xa27\xe4\x13\ +\xe7o\xf2\x11\x02\x00\x18{\xd3c\x0f\xe4\x10\xe9\xd7\x0e\ +\x16\xa5]]em\xf3\xe6f\xa4Wg\xa5\xcf\x98\xd1\ +\xb1\x81~C\x1eq~4v\xad\x8f\x0e\x00\xc0\xf8\x99\ +Q\xd4\x1f\xcb\x9e<\xfen\x1e,L#\xc8\x07\xb6m\ +kFzOO=\xdc;,\xce\xf7\xe5s\xd6\xf9u\ +>2\x00\x00\xe3\xafz,\xfb#\xa9\xe3oR\xec/\ +\x86x\x88Qm\xcf\x9ef\xa4\xaf[\xd7Qq\xfe\xf1\ +|\xce:\xdf\xed\xa3\x02\x000q\xce\x8c=\x91:\x02\ +\xcf\x18\xeaAF\x17]\xd4<\x1f}\xef\xde\xb2\xb6d\ +IG\xc4\xf9\xc1\xd8\xbc<\xe2\xfco\x8b\xfa1\x9d\x00\ +\x00L\xa0s\x8b\xfa\x13!\x93\xc6\xe0\xbc\xc69\xdf/\ +\x08\xd6+\xaeh~\x8b~\xeb\xade\xedE/j\xeb\ +8?\x14\xeb\xce#\xce\xef/\xea'\xff\x00\x00\x90\xc0\ ++b?H\x1d\x85\xe7\xc4\xfe\xf3\x84`\xad\x1eX4\ +p\xc3\x0d\xcdo\xd2\xab\x1f\x90\xb6i\x9c?\x13{M\ +\x1eq\xfe\xd5\xd8l\x1f\x0b\x00\x80\xb4\xd6\x15\xf5\x87\xd0\ +$\x8d\xc3U\x83\x9d\x91\xbepaY\xfb\xc8G\x9a\xdf\ +\xa4\xaf^\xdd\x96\x81\xbe9\x8f8?\x1c;\xc7\xc7\x01\ +\x00 \x0f\xaf\x8f\xfd}l\x08\xafYS\x0f\xf4\xb7\xbd\ +-\xbb@\xef\xcd\xe3G\xa1\xefr\xd9\x02\x00\xb4\xb7\xde\ +\xd4\xd1\xb9,\xf6\xf8\xb11|\xcd5e\xff-\xb7d\ +\x15\xe7\x07b\x93\xd3\xc7\xf9G]\xae\x00\x00\x9d\xa1/\ +u\xa4_\x14{\xe6\x97A#}j\xe3!\ +@9\x04\xfa\x1f\xa6\x8f\xf3\xea\x94\x9d\x95.K\x00\x80\ +\xce\x96\xfc\x8c\xf4\x85\xb1\x87\x13\xc7\xf9]\x8dc \x13\ +\xbe\x0eGb\xbf\xedr\x04\x00\xa0\x92\xfc\x8c\xf4\xf3b\ +O&\x8a\xf3\xaf\xc4^\x92\xfe\xdb\xf3\xad.C\x00\x00\ +\x8eU\x9d\x91\xfe\x5c\xcaH}S\x828\x7f:v\x81\ +\xe3\x14\x01\x00\xc8\xd4\x96\xc4\xa1Z\xde2\xc1\x81\xde\x93\ +>\xce?W\xd4\x7f\xb0\x0b\x00\x00\x83\xda\x972X\xa7\ +\xc4>>Aq~G\xac+m\x9c\x7f+\xb6\xd0%\ +\x07\x00\xc0p&\xc5\xeeM\x19\xe9sc_\x18\xe78\ +\xffLlf\xda8\xffQl\x85\xcb\x0d\x00\x80S1\ +#\xf6\xa5\x22\xf1\x8fF\x9f\x1a\xa78\xffzly\xfa\ +\x13[6\xba\xcc\x00\x00\x18\x89\x97\x16\xf5\x87\xe6$\x0b\ +\xd9\xdf\x1d\xa7@\xbf4\xfd}\xe7\xdb\x5c^\x00\x00\x9c\ +\x8e\xea\xa19?I\x19\xb3\xbb\xc78\xce\xff$}\x9c\ +\xdf\x13\xebri\x01\x00p\xba\xde\x1c;\x9a*h\xcf\ +\x88\xdd7Fq~\x7f\xe3\xcfK\x18\xe7_\x8b\xcdr\ +I\x01\x000Z\x1fL\x18\xb5\xe5\xe2\xd8c\xa3\x8c\xf3\ +'b\xcb\xd2\xc6\xf9\xf7\x8a\xfaS[\x01\x00`\xd4\xaa\ +\x93]>\x912\xd2\xd7\xc7\x0e\x8f\x22\xd07\xa5\xffQ\ +\xe8%.#\x00\x00\xc6Ruk\xc6\xa3)#\xbd\xf7\ +4\xe3\xbc/\xfd}\xe7;\x5c>\x00\x00\x8c\x87\xead\ +\x97\xfeT\xa1;)v`\x84q\xfe`\xfa\xf3\xce\xff\ +\xb5\xa8\xff\x0f\x04\x00\x00\x8c\x8b\xb5\xb1\x9f\x16\x09\x1fb\ +\xf4\xc5S\x8c\xf3\xea\x1c\xf5\x15i\xe3\xfc\x1b\xb1\xb9.\ +\x19\x00\x00\xc6\xdb\x95\x09\xa3\xb7|e\xec\xdb\xa7\x10\xe8\ +W\xa7\x8d\xf3\x1f\xc7^\xe1R\x01\x00`\xa2\xf4\xa5\x8c\ +\xf4\x9e\x93\xc4\xf9\x9d\xe9\xef;\xff\x1d\x97\x08\x00\x00\x13\ +iJ\xec\xd3\xa9\x02\xb8+\xf6\x97C\xc4\xf9\x97bs\ +\xd2\xc6\xf9>\x97\x07\x00\x00)\xcc/\xea\xf7Y'\x09\ +\xe1\xd9\xb1\x83'\xc4\xf9\xb3\xb1\xd5i\xe3\xfc\xc1\xd8T\ +\x97\x06\x00\x00\xa9\x5c\x10\xfb\xdfTA|\xc1\x09\xf7\xa3\ +oM\x1b\xe7\xdf\x8f\x9d\xed\x92\x00\x00 \xb5\xab\x13F\ +\xf1\xff\xfd\x18\xb4\x8a\xf3\x7f\x8fMI\xf7\xf78\x1a\xbb\ +\xd8\xa5\x00\x00@.nO\x19\xe9\xbbbK\xd2~{\ +\xbe\xcd%\x00\x00@N\xa6\xc5>_$\xfc\xd1h\xc2\ +8\x7f\xa8\xa8\xffh\x16\x00\x00\xb2rV\xecp\x91\xfe\ +\x88\xc3\x89\x5c\xf5d\xd53\xbd\xf5\x00\x00\xe4\xea\xc2\xd8\ +\xcf:$\xce\x9f\x8f\xfd\x9a\xb7\x1c\x00\x80\xdc\xbd\xb3C\ +\x02\xfdFo5\x00\x00\xad\xe2\xce6\x8f\xf3\xfbb\x93\ +\xbc\xcd\x00\x00\xb4\x8aY\xb1Cm\x1a\xe7\xdf\x89-\xf2\ +\x16\x03\x00\xd0j\xce\x8f\xfd\xa4\xcd\xe2\xbc:\xef|\x83\ +\xb7\x16\x00\x80V\xb5\xa9\xcd\x02}\x87\xb7\x14\x00\x80V\ +\xd7\xd7&q~\xb0p\xde9\x00\x00m`j\xecs\ +-\x1e\xe7?\x8c-\xf3V\x02\x00\xd0.\xce\x8e}\xaf\ +\x85\x03\xfd2o!\x00\x00\xed\xe6u\xb1#-\x18\xe7\ +\x7f\xed\xad\x03\x00\xa0]\xedj\xb18\x7f26\xc7\xdb\ +\x06\x00@\xbb\xaa\xeeG\xffb\x8b\xc4\xf9s\xb1U\xde\ +2\x00\x00\xda\xdd\xb9E\xfdG\x97\xb9\x07\xfaM\xde*\ +\x00\x00:E\xee\xe7\xa3;R\x11\x00\x80\x8e\xf3\xd1L\ +\xe3\xfc\x7fb\xcb\xbd=\x00\x00t\x9a3b_\xc90\ +\xd0\xdf\xea\xad\x01\x00\xa0Su\xc7~\x94Q\x9c\xdf\xe5\ +-\x01\x00\xa0\xd3\xbd%\x938\xffvl\xae\xb7\x03\x00\ +\x00\x8a\xe2\xef\x13\xc7\xf9\xd1\xa2\xfe %\x00\x00 \xcc\ +\x8b=\x930\xd0\xef\xf0\x16\x00\x00\xc0\xf1^\x1b;\x92\ + \xce\x9f\x8a\xbd\xd8\xcb\x0f\x00\x00/\xb4m\x82\xe3\xfc\ +\xf9\xd8\x1a/;\x00\x00\x0c\xaez8\xd0\xc1\x09\x0c\xf4\ +]^r\x00\x00\x18\xde\xb9\xc5\xc4\x1c\xbd\xf8\xb5\xa2~\ +\x16;\x00\x00p\x12W\x8ds\x9c\xff<\xf6J/3\ +\x00\x00\x9c\xba\xbb\xc61\xd0\xb7{y\x01\x00`d^\ +\x12\xeb\x1f\x878\x7f\xacpk\x0b\x00\x00\x9c\x96\xea\xe1\ +AG\x8b\xb1=\xb5e\x95\x97\x15\x00\x00N\xdf\xde1\ +\x0c\xf4[\xbc\x9c\x00\x000:\xd5\xed(\x8f\x8eA\x9c\ +W\x7f\xc64/'\x00\x00\x8c^u\xe2\xca\xcf\x0a\xa7\ +\xb6\x00\x00@6\xb6\x8e\x22\xd0o\xf3\xf2\x01\x00\xc0\xd8\ +\x9a\x14\xfbL\xe1\xd4\x16\x00\x00\xc8\xc6\xb2bdO\x19\ +\xadNmY\xede\x03\x00\x80\xf1\xf3\xf6\x11\x04\xfa.\ +/\x17\x00\x00\x8c\xbf\xbbO!\xce\xff\xabpk\x0b\x00\ +\x00L\x88\xea)\xa3\x03\xc5\xf0\xb7\xb6\x5c\xe8e\x02\x00\ +\x80\x89\xb3\xa1\x18\xfa)\xa3\xbb\xbd<\x00\x000\xf1\xfe\ +|\x908\xffzl\x86\x97\x06\x00\x00&\xde\xcc\xd8\xa1\ +\xe2\xf8[[\xd6xY\x00\x00 \x9d\x95E\xfdI\xa1\ +U\xa0\xef\xf5r\x00\x00@z\x1f\x8c}\xa3\xa8\x7f\xa3\ +\x0e\x00\x00$6-v\x81\x97\x01\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x0e\xf2\x0b@\ +;\x84\xc7\x9dY\x0c\xd3\x00\x00\x00\x00IEND\xae\ +B`\x82\ +\x00\x00\x09\xc0\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x9c\x00\x00\x00\xb2\x08\x03\x00\x00\x00\x80\xc0V9\ +\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x09pHYs\x00\x00\x0d\xd7\x00\x00\x0d\xd7\x01B(\ +\x9bx\x00\x00\x00\x07tIME\x07\xdc\x03\x09\x08\x1d\ +0D&N\xa6\x00\x00\x02\xd3PLTE\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x02\x01\x00\x03\x02\ +\x00\x04\x02\x00\x05\x03\x00\x06\x03\x00\x06\x04\x00\x07\x04\x00\ +\x08\x05\x00\x09\x05\x00\x0a\x06\x00\x0b\x07\x00\x0c\x07\x00\x0d\ +\x08\x00\x0e\x08\x00\x0f\x09\x00\x10\x0a\x00\x11\x0a\x00\x12\x0b\ +\x00\x13\x0b\x00\x14\x0c\x00\x15\x0d\x00\x16\x0d\x00\x17\x0e\x00\ +\x18\x0e\x00\x19\x0f\x00\x1a\x10\x00\x1b\x10\x00\x1c\x11\x00\x1d\ +\x11\x00\x1e\x12\x00\x1f\x13\x00 \x13\x00!\x14\x00\x22\x14\ +\x00#\x15\x00$\x16\x00%\x16\x00&\x17\x00'\x17\x00\ +(\x18\x00)\x19\x00*\x19\x00+\x1a\x00,\x1a\x00-\ +\x1b\x00.\x1c\x00/\x1c\x000\x1d\x001\x1d\x002\x1e\ +\x003\x1f\x004\x1f\x005 \x006 \x007!\x00\ +8\x22\x009\x22\x00:#\x00;#\x00<$\x00=\ +%\x00>%\x00?&\x00@&\x00A'\x00B(\ +\x00C(\x00D)\x00E)\x00F*\x00G+\x00\ +I,\x00J,\x00K-\x00L.\x00M.\x00N\ +/\x00O/\x00P0\x00Q1\x00R1\x00S2\ +\x00U3\x00W4\x00X5\x00Y5\x00Z6\x00\ +[7\x00\x5c7\x00]8\x00^8\x00_9\x00`\ +:\x00a:\x00c;\x00e=\x00g>\x00h>\ +\x00i?\x00j@\x00k@\x00lA\x00mA\x00\ +nB\x00oC\x00pC\x00qD\x00sE\x00t\ +F\x00uF\x00vG\x00wG\x00yI\x00zI\ +\x00{J\x00|J\x00|K\x00}K\x00~L\x00\ +\x7fL\x00\x80M\x00\x81M\x00\x82N\x00\x83O\x00\x84\ +O\x00\x86P\x00\x87Q\x00\x88R\x00\x8aS\x00\x8bS\ +\x00\x8eU\x00\x8fV\x00\x91W\x00\x93X\x00\x94Y\x00\ +\x95Y\x00\x96Z\x00\x98[\x00\x99\x5c\x00\x9c^\x00\x9d\ +^\x00\x9e_\x00\x9f_\x00\xa0`\x00\xa1a\x00\xa2a\ +\x00\xa3b\x00\xa4b\x00\xa5c\x00\xa6d\x00\xa7d\x00\ +\xaaf\x00\xacg\x00\xadh\x00\xafi\x00\xb0j\x00\xb1\ +j\x00\xb2k\x00\xb3k\x00\xb4l\x00\xb5m\x00\xb6m\ +\x00\xb8n\x00\xbap\x00\xbbp\x00\xbcq\x00\xbdq\x00\ +\xber\x00\xbfs\x00\xc0s\x00\xc1t\x00\xc2t\x00\xc3\ +u\x00\xc5v\x00\xc7w\x00\xc8x\x00\xc9y\x00\xcay\ +\x00\xcbz\x00\xccz\x00\xce|\x00\xcf|\x00\xd0}\x00\ +\xd1}\x00\xd2~\x00\xd3\x7f\x00\xd4\x7f\x00\xd5\x80\x00\xd6\ +\x80\x00\xd7\x81\x00\xd8\x82\x00\xd9\x82\x00\xda\x83\x00\xdb\x83\ +\x00\xdc\x84\x00\xdd\x85\x00\xde\x85\x00\xdf\x86\x00\xe0\x86\x00\ +\xe1\x87\x00\xe2\x88\x00\xe3\x88\x00\xe4\x89\x00\xe5\x89\x00\xe6\ +\x8a\x00\xe7\x8b\x00\xe8\x8b\x00\xe9\x8c\x00\xea\x8c\x00\xeb\x8d\ +\x00\xec\x8e\x00\xed\x8e\x00\xee\x8f\x00\xef\x8f\x00\xf0\x90\x00\ +\xf1\x91\x00\xf2\x91\x00\xf3\x92\x00\xf4\x92\x00\xf5\x93\x00\xf6\ +\x94\x00\xf7\x94\x00\xf8\x95\x00\xf9\x95\x00\xfa\x96\x00\xfb\x97\ +\x00\xfc\x97\x00\xfd\x98\x00\xfe\x98\x00\xff\x99\x00\xff\xff\xff\ +s\xb6\xc7\xfa\x00\x00\x00\x08tRNS\x00\x09\x0e\x1b\ +(=\x5cr\xeeu#\xcb\x00\x00\x00\x01bKGD\ +\xf05\xb8\xefT\x00\x00\x06RIDATx\xda\xed\ +\x9c\xf9_\x94U\x14\xc6\xad\xacf\x18mTP\xc0\x04\ +\xc4\x85E\x05\xc1\x0d\xc9P\xd1\xc8\x5cZ\x15\xb5\xc5$\ +\xca4\xcb4\xcbJ\xcd\xca\xd2\xd4RJ\xcd\xca4\xb2\ +\x12\xcd\xcaL\xb1 \x90\x08DS@\xf6M\xf6\x01F\ +\x99a\xe6\x9d\x7f!\xd6\x98\xe5]\xeer\xee0\x9f\xbc\ +\xcf\xcf\x9c\xf7~\x99y\xdf\xf7\x9e\xf3\x9cs\xa7_?\ +...........W\xd5\x1dw\xbb\ +\x88\xfa\x8b\xc0\xdd\xa9r\x11\xdd\xc5\xe1n)\xb8dc\ +\x9f\xaa@\x16.\xc5\xd2\xa7*\xe3p\x1c\x8e\xc3\xc1\xc1\ +\x99]\x18\xae0\xe4G\xe2\xa5u\x8c\xe1\xcaBT\xda\ +S\x84lY\xbe;\x98\xc2U\x84\xb6\xff\xcd\x903D\ +l\x17\x86\xabT\x9b\x19\xc2U\x85un~\xee\xbf\x11\ +\xb0\xa5{w\x84\xbe\xcd\x0c\xae6\xa2{kv?\x8b\ +\xcd\x96\xe6\xdd\x15\xbaI`\x03W\x17\xf9_\xe2\xe0~\ +\x0e\x93\xedO\xaf\x9e\xd0\x97\x05\x16pM\xd1Vi\x8d\ +\xc7y,\xb6T\xaf\xde\xd0\x97\xcc\xf0p\xcdsm\x92\ +.\xcfT\x0c\xb6d\x0f\xeb\xd0\xb86h\xb8\x96\x18\xbb\ +\x94\xd0+\x0d\x99\xed\x9c\x87m\xe8\xb3m\xb0p7\x1f\ +qHX\xbd\xd2\x11\xd9\xcez\xd8\x87>c\x84\x84k\ +}L$\x9d\xf6\xbe\x80\xc4v\xc6\xdd1tI+\x1c\ +\x9cq\xb9h\xb2\xef\x9d\x81\xc0\xf6\xab\xbbX\xe8\xe37\ +\xa1\xe0\xda\x9e\x96(E|\xb2\x15\xd9N\x0f\x11\x0f}\ +\xf4\x06\x0c\x9c\xf9y\xc9B\xc9\xf7\xa2\x02\xdb\xc9AR\ +\xa1\xf3\x9a \xe0\xcc/\xca\x94q~9\xb2l'\xb4\ +\xd2\xa11:z8a\x8dl\x91\xe9wI\x86-I\ ++\x17\x1aUG\x0d\xf7\x9aB\x09<\xf2\xb2$\xdbq\ +\xad|\xe8\x8cZJ\xb87\x14\x0bt\xff\x7f$\xd8~\ +\x18\xa8\x14\x1aYM\x05\xf7\x1e\x82}06_\x94-\ +Q\xa3\x1c:\xa9\x9c\x02n'\x92\xb9\x11pM\x84\xed\ +\x1b\x0dJhX\x191\xdc.D\xeb%\xb0\xc0\x81\xed\ +\x88\x06-4\xb8\x80\x10\xeecdc(\xb0\xd0\x8e\xed\ +k\x0djhP>\x11\xdc~5\xbam\x15Td\xc3\ +vX\x83\x1e\x1a\x90G\x00w\x10\x83M\xa5\x0a\xb5\xbe\ +y\xbet\xc3\x09\xf5\xcf\xc1\x86;\x8a\xb5@;]9\ +\xd1G\xde\xf9\x22\xcf\xc6\x84K\xd4\xa805\xb1\xa2;\ +\xf435n\xa8\xef\xdfxp\xcb\xf0\xed\xd2\xc8:\x82\ +\xef\xb4{\x9f\xc5\x833.\xc5_\x22\xbc\xb2=0A\ +\x8d\x1f\x18Q\x8dy\xcf\x19b\x09\x16\xa9\xb1\xec#`\ +\x8b\xaa\xc7~Z\x0dK\xf0\x97\x99\xfe.\x81{>\xb3\ +\x9e\xe0=gX\xec\x14g\x7fV\x03\xd1\x0eqc\x91\ +\x13\xd8f7\x12\xee\xad\xfa\x85\xcc\xd9\xa2\x1b\x89\xb3\x12\ +\xfd\x02\xc6l\x0f\xb5P\xe4s\xfa\xf9L\xd9\xe6\xb7P\ +e\xc2-\xf3\x18\xb2-l\xa1\xac!t\xd1\xcc\xd8\x16\ +\xe9\xa9K\xc3\xc6Y\x8c\xd8\x1e\xd6\x03\x14\xd5\x8d3\x99\ +\xb0\x89\xf9%\x04vDC\x14\x03\xb6\xd8V #\xa7\ +\xe1~p\xb6\xa5\x060\x0b\xacf\x1a0\xdbr\x03\xa0\ +yX=\x15\x94\xedI\x03\xa8\xedz}\x0a \xdbS\ +\xa0\xcef\x07\xddd0\xb6\xe7L\xe0V\x7f\xd5$ \ +\xb6x\x13\x83&Ie8\x08\xdb\x0b&&\xed\xa5\xd2\ +\x09\x00l\xabL\x8c\x1as%\xe3\xa9\xd9V\x9b\x99\xb5\ +4\x8b\xc7Q\xb2\xad\x13\x186\x83\x8b\x83\xa9\xd8^\x15\ +\x98\xb6\xd1\xf3\xc6P\xb0m\x10\x18\x0f \xe4\x92\xd3m\ +Tb\xa3\x1f\xdd\xc8\x1dM\xc8\xf6\xba\x22\x1b\xc0\x5c\xc9\ +\xd5QDl[\x9d3\xf4\xf2\xd7=\x04l\xdb\x9c3\ +\x91\xd3\xfc \xc9\x07\xb7\xc9)pM1d\xb7\xdc\x9b\ +N\x80kz\x80\xf4a\xdd\xce\x1cN7\x97\xfc5\xf7\ +!c\xb8z\xaaZg'S\xb8:\xcaJ\xe7#\x86\ +p\xb53h\x93\x92]\xec\xc6\x85\xee\xa3O\xe7\xf60\ +\x82\xab\x89\x04\xc85\xd5\x09L\xe0\xaa\xa7\x83d\xe9\xea\ +O\x19\xc0U@\xd57\xea\xfd\xe0p\x15\xe1*(\xa9\ +\x0f\x00\xc3\x95\x87\x01\xd6\xd4\xea\x83\xa0pe\x13A\xdd\ +\x08\xb7\xc3\x80p\xa5\xa1\xc0>\x8e\xdb\x110\xb8\xc2`\ +\x15\xb44G\x81\xe0\x0a\x82\x18x\x87\x9aD\x10\xb8k\ +\x81L\x5cW\xcd\xb7\x00p\xf9l\xd8\xda\xe9\x8eQ\xc3\ +\xe5\x050s\xfa\x07&Q\xc2\xe5\x8ee\xd8#\xd1\x9e\ +\xa0\x82\xbb\xe4\xcf\xb4\xbb\xa4=I\x01\x973\x92q_\ +\xce~\x08\x1f\x03\xee\xa2\x1f\xf3\x8e\xe6\xa0\x9f\x08\xe1\xb2\ +\xd9\xb3\xd9\x1f\x11@\x86\xcb\xf2\xc5_j0\xfe\xf8\x81\ +\xcd\x10>*\x5c\xc7\xf1\x05\x5cy\xa6\x10\x0cnX\x0f\ +\xe1#\xc2\xa5{\xe3\xb3\x0d\xcf\xb0X\xf6\xe1\x87y$\ +c\xc2\xa5\x11\xb0\xdd\xdb9\xd3\xbc\x97\x80\xee<\x1e\xdc\ +\x1a\x92\xef\xb4+t;~\xe8\x846,8\xd3j\xdc\ +\x05Fd\xf6\xfc\xfb\x9f`\x87fa\xdes\xc2z\xbc\ +\x05|2{o\xeb\x0f0o\x87L\xec\xa7U\xd8\x88\ +\xb3\x80\xbf\xcd\xb4\xf0\xfb8\xa1\xc3RI^\xc2\xef\xa0\ +/0\xcanVx\x1bz\xe8\xd0\x14\xb2\xed\x0b\xf9\xd6\ +\x1e}\xc5>\xbd\xd8\x8a\xfc\xa4\xfeA\xba\xf1\xef!e\ +\xb3X\xb6 n)\xa7\xc9S&\xa4a\xdc1W\xc5\ +\xca\x81\xcdH\xfb\xfe/4\xc9\xe6\x01\xe5\xed(\xb8P\ +\xb4\x90\x126 \xe4\xc2\xc7\xe9\xd2\xf4\xcf\x95&0\xc7\ +\x15I\x14\xc8\xca/\xa3\x01\xdf\xd3\x168_\xc8\xd3\x8d\ +/\x964>\x84u\xd8\x955vixl\x80\xdc\xc6\ +S,ch\x09\xaf\xc8\xb2}\x05QT\x7f'}\xae\ +!\xa4D\xd6\xa8\x14\xd6\xca\xb89\x87`\xec\x88S\x83\ +%\x16\x08-U0\xa0\xcd\xab$\xe1\x12\xa0\x8c\x9c\x9f\ +\xc5\xcfGM\xaeTl,H\x9e|\xda\x0bg\x81%\ +\x0f\x15\xb9\xfe\x94*\x84\x86\x91)^\x94m\x07\xa4y\ +\xf8\xfb0\x87\xebO\xbd\x8et\x9a\xcf\x14\x87\xd1B$\ +\xb4]S<\xed\xae?\x0d\x8d\xad\x9dn\xa5\x03\xdb\x16\ +h\xc3:c\x84\xcd\xf5#\xaa\x91O\x90\x9aV\xd8\xb1\ +\xbd\x05o\xf5g\xfaX]\xdfjd[Y\xc6e\xa8\ +\xe3\x1b\xe4M\x92\xcb\xbd\xeds\xeb\x91m\x04\x19\xac\x8f\ +\x08\xac\x15\x98\xb4\x97\xae\xf4\x0cF\xcc\xc6c\xb39\x22\ +\x10of\xd4\x98+\xec\x1a\xc8\xb1\x1d\xd9F\xa3\xeb\x19\ +\xc2\x8f31ki\x16u\x8cZ\xcd\xd1Y\xf0\xd5\xfa\ +D'\xdb\x0a\x13\xc3fpI\xa8\xc3\xc86\xa2:\x8f\ +\x08\xc4\x1a\x99\xb6\xd1\x8bW6Z\xc8\xa4_\xa0Zl\ +`?WB(\xdd\xfaf\x8b\xcb\xc29g\x22\x87\xc3\ +q8\x0e\xe7\x02p\xbb\x93\xfaT\x87d\xe1\x5cA\x1c\ +\xee\x96\x81\xbb\xad\xbf\x8b\xe8v\xfe\x83\xac\x5c\x5c\x5c\x5c\ +\x5c\x5c\x5c\x5c\x5c\x5c\x5c\xffC\xfd\x0b\x99\xa5\x5c~G\ +q`B\x00\x00\x00\x00IEND\xaeB`\x82\ +\x00\x00/`\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x01[\x00\x00\x01\x5c\x08\x06\x00\x00\x00f\xca\x1dU\ +\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x09pHYs\x00\x00\x0d\xd7\x00\x00\x0d\xd7\x01B(\ +\x9bx\x00\x00\x00\x07tIME\x07\xdc\x03\x09\x08\x1f\ +%\x1b\xcd\xc8\xcf\x00\x00\x00\x06bKGD\x00\xff\x00\ +\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00.\xe0IDATx\ +\xda\xed\x9d\x09t\x15U\xb6\xfe\xaf\xb6C\xdb-\xdc\x9b\ +\x00b\xdb\xb4\xa2\xb6\xf6\xa0\xdd\xb6\xa2>q\xa0\xaa\x92\ +0*\x8a \xa2\x88\x8a8\xb7-\x88\xa08a\xa7E\ +Q[[\x14'\x22!u+\x84\x00\x81\x10H \x10\ +\xa6@\x98\xc7\x80!\xcc\x90\x90\x89\x84\x04\x12\x12\x12\x12\ +\x02\xa9W\xbb\x82\x1aHn\x86\x9b[u\xeb\xd4\xf9~\ +\xff\xf5\xad\xf7_\xbd^?\xaa\xce>\xe7\xcb\xb9\xa7\xf6\ +\xd9\xdb\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x18@\x07Y\xbc2P\x11\xba\x06\xc8B_\x97,\ +\x0eu\xb9\xc5QNE\xfcX\xfb\x9f\xe1\x9a\xe24\xa5\ +\xb8\xdcB\xba\xa6\x03\xb5\x12\x0b5\x1d\xd3\xfe\xff\xc7\xb5\ +\xff\xa9\xd6\x97\xfe\x9f\x1f\xab\xfd\xdf\xfb\xe9\xbf\xa3\xff\xf7\ +Wj\xff\xd9\x1cM\x93\x9dni<\xfd;\xf4\xef\xd1\ +\xbf\x1b(\x8bw\xd1s \x1a\x00\x00v\x09\xebrq\ +\x80\x12\xfcw\xcd\xe0\x06\xe8\x06\xe7\x16\xbfq*\xc2\x82\ +Z\x03\x14+\x1a6L\xbf\xa9\xe2\xecs\xcd\xd7\xf4\xb5\ +K\x91^w\xc9R\xff\x00\xb9\xdb\xdf\xe8=\x10L\x00\ +\x80\xffQ\x1d\x17\x04\xba\xa5\x9b\x9c\xb20P\xdb1\x86\ +jf\x95\xa0)\xcfbf\xdaZ\xe5\xe9\xef\xa5\xbd\x1f\ +\xbd'\xbd/\xbd7\x82\x0f\x000\x8e\x89\xbd/\x0d\x8c\ +\x08\xba\xdb\xe9\x16Gk\xe63W\xdb\x11\xe6\xda\xccX\ +\x9b)\xfd\xbd\xe9\xb8c\x14\x1d\x878b\x06^\x82\xc9\ +\x01\x00\xf0\x9a6Jp;\x97[z0\xc0-|\xaa\ +\x19\xcb*\xcddO\xf2i\xae\x8d\xeb\xec\xb8\xa4\xd0\xb9\ +3\x9d\x07\xb7\x0d\xef\x19\x88\xd9\x03\x00ht\xe7Jf\ +\xa1\x99k\xd8\xd9\x0fS0S\xefw\xbf\xf4\x91\xee+\ +\xcd\x80Ch\x5c1\xb9\x00\xe0\x9c\xc0(\xb1\x93\xb63\ +{V3\x88Yg\xbf\xe8\xc3(}o\xbcG\xb5?\ +`3]\xb24\xac\x9d\x12\xf4{\xcc:\x00\xf89\x1e\ +\xb8\xb1\xf6\x83\x96\xfe\x15\x1efh\xbe\xf9\xa6\xd3\xf8\xb7\ +\x95\xbb\xdd\x80\xd9\x08\x80\xcdp\xba\x83\xae\x87\xc1Z\xd7\ +x\x9d\x11!\xd7a\x96\x02\xc0(\x9db\xba^\xe6r\ +KOi\x8bz\xa9\xa6\xd306K\x8b\xe2\xb38@\ +\x11\x87t\x96\xc5_c\xf6\x02\xc0\xc2.V\x11C\x02\ +\x14)\x06\xd9\x03\xcc\xaa\xd4\xa5H\x91\xfa\xc75\x00\x80\ +\xe5\xcea\xdbi\x8bs\x8cf\xb0;aV\xf6:f\ +\xa0\xb8\x22\x9d\x0c\x00?\xe3\x92\xc5\xce\x94b\xe4\xb9n\ +\x00d\x13\x95h\x9a\xe0\x0a\x0f\xba\x06\xb3\x1e\x00\x93\x8f\ +\x0aj\xaf\xc7\x0ag`D\x5c\xedt)\xde\x09\x01\x91\ +\xe2\xbdX\x05\x00\x18E\xb2xQ\xed\x07/a\x0bL\ +\x07\xd2\xb4\x99\xe6\x83#f\xe0\xaf\xb08\x00\xf0\x05\xa1\ +\xa1\x17\x06\xc8\xd2`\xa4mA\x1e\x94\xa6\xfd\xd2\x19D\ +\xf3\x04\x8b\x05\x00o\xd0v,N\xb7\xf4\x82\xb6\x982\ +`(P3j4\xec\xc2N\x17\x80\x96\xa0:.\xd0\ +\xcb\x16b'\x0by\xa7\x1d4\x7fP\x0a\x12\x80Fp\ +EJ\x82\xb6XV\xc30 \x1f|L[\x89\x0fi\ +\x00\x9c\x07u\x068{\xd3\x0b&\x01\xf9ZK4\xd3\ +\xbd\x19\xab\x0cp\xcd\xe5\x11\xf7u\xa8-i(V\xc3\ +\x14 \x03u\x8a\xe6Y\x9bh\xb1=V\x1d\xe0\xed\xe3\ +\xd7%t3\x08e\x0d!\xb3\xcb=\xba\x14q\x04\xa5\ +\x11b\x11\x02\xfb\x1f\x19\xb8\xa5{\xb4\x89\x9f\x8a\x85\x0f\ +\xf93G\x97:\x0cc5\x02[B\xf5\x0b\xa8@\x0c\ +\x16:d\x11\xd5P\xc1\x1b\xd4]\x00\xb6\xe2l\xa9\xc3\ +|,p\xc8\x82\xf9\xb9\x87\x9d\x8a\xf8\x08V)`\x1a\ +j;s\xb6\xc57\x166\xc3\xfaG\xec\xe3\xeaK\xab\ +\xc6\xab\x13\xd2\xa2\xd5y\x99+\xd5-\x85\xbb\xd4\xbd%\ +\x87\xd4\x8c\xd2\xad\x06\xb8\ +%\xd6\xde3\x01m{\x00\xa3g\xb3\xc2\xe3\xda\x04.\ +\x84Y\xb1\xa9\xee\x0b^Q\xbf\xdf9[\xcd9Q\xa0\ +zCQe\x89\xaa\xec\x9d\xaf>\xbcx\xb4\x1a\xa8\xb0\ +b\xbcB\x81\xd3-=\x8a\xd5\x0b\x989\x9b\xd5&\xee\ +\x1c\x18\x16{\x22S|v\xe58}\xa7\xeaKh\xf7\ +;r\xdd\x17\xea\x15\x91!l\x8c\x85\x22\xc4\xd2<\xc6\ +j\x06\xd6\xdd\xcd\xcaR\x1f\x9c\xcd\xb2\xa9\x9e\x89\xff\xf2\ +\xb9\xc9\x9e\xcf~\xcdt\x07-}\x9b\x99\xb3\xdc@Y\ +\xec\x85U\x0d\xac\xc5\xc4\xde\x97\xd6\x16\xf1\x16k`\x5c\ +l\xa9\xe3\xd4\xee\xea\xa4\x9d\xb1j\x8d\xf6\xff\xcc\x82\xce\ +};G\xf7e#cA\x9b\xd7\x94\x17\x8eE\x0e\xfc\ +\x0e\xb5\xa4\xd6&\xe4\x06\x18\x17{\xbaqf\x7fuC\ +\xc1\x0e\xd5\x1f\xd0\x07\xb6\xdb\xe7\x0cae\x97\xbb\x16\x1d\ +\x80\x81_q)\xe2\xd3h\xac\xc8\xa6\xba\xce}F\xcd\ +\xf6\xf2\xe3\x97\xaf(\xae*U\xfb.\x1a\xc9\xca\x98\x95\ +\xe9\xd5\xc4\x000\x95\xb0.\x17\x9f\xadi\x00\xe3bP\ +\xdd\xe2\x9fWK\xaa\xcaT+Pu\xa6Z\x1d\xb0\xe4\ +Mv.B\xd0\xb1\x02\xae\xfb\x023\xf8\xed\xe4\xe0\x8e\ +T\xbe\x0e\xa6\xc5\xea\xd1\xc1\xc3^\xa7s\x19E\xe9\xa9\ +r\xf5\xce\xb8\xa7Y\x1a\xc7\xe4\xcb#{\x5c\x017\x00\ +\xc6\x9d\xcf*Awj\x13-\x1b\xa6\xc5\xa6\xda+\xc1\ +\xea\xea\xfcm\xaa\x15\xa13\xdc?L\xeb\xc3\xd2xf\ +\xb5\x95\x85;\xe0\x0a\xc0\xe7P\xb2\xb76\xc1N\xc0\xb4\ +\xd8\xd5'\xdb\xdc\xaa\x95\x99\xb6o!kcZ\xe6\x92\ +\xa5\xfep\x07\xe0\x1bBC/<\x9b\xd6\x05\xc3bX\ +\xf4\xe5\xbf\xf2t\x95\xa5\xcd\x96\xd2\xcf\xee_8\x82\xbd\ +\x826\xb2\x18\x8a6<\xa0Ut\x8a\xe9z\x19*u\ +\xd9C\x0b\xb2V\xab,\x90~\xec\x00C\xd7{\xebH\ +\x16\xdd\xc8\xc7\x05^A]\x14(\xbf\x10F\xc5\xbe\xee\ +\x8b\x7f\xce\xd4K\x0b\xade\xc8\xf2\xb1\xac\x8e\xf5jt\ +\x83\x00-\xa2\xcd\x14\xe9O\xda\xc4\xd9\x0f\xa3\xb2\x87\xe8\ +,\x94%\xd6\xe4ogy\xbc\xf7\xd1E\x1f\xb8\x08h\ +\x12\x97\xd2\xedV\xba\x17\x0e\x93\xb2\x87~\x1f\xd5[-\ +;U\xce\x94\xd9\xd2.\xfc\x96\xd9\x8f\xb3\xdc~'7\ +@\x09\xfe;\xdc\x04x\xce8\x88\x08\x0aB\xc6\x81\xbd\ +D?\xc9Y\xe4\xbdM\xdf\xb1>\xf6%\x81\x11Aw\ +\xc3U@}\xa3\x95\x85\xee\xda_\xe4r\x18\x94\xbd4\ +yW\x1c\x93f\xbb$g\xbd\x1d\xc6\xff\x84S\x11C\ +\xe0.\xa0\xce\xd1\x81\xf4\x9061*aN\xf6\x93\xd1\ +e\x13\x8d\x82\xae\x13\xdb$\x06\xda\xba\x92\x1e\x84\xcb\x00\ +\xba\xac0@\xdb\xd1V\xc1\x98\xec'jMS^}\ +Re\x15\xbaZl\x93\x16\xeaU\xb8\xfc\xc0\xfd\x8eV\ +x\x18Fk_\xfdqF?\x95eB\xe6\xbfl\xa3\ +xh\xebL\xfb\x05\x09\xd7\xe1sGK\xd7oO\xc3\ +\x94\xec\xab[c\x073m\xb6\x03\x16\xbfa\xb7\x98\x9c\ +F\x99F\xce\xd0~^\xde\x8f\x1d\xad\xfdu\xf7\xbca\ +L\x9b-\xc3\x97\x1b\x1a\xdd\xe1R\xfb(\xb8\x10\x0fG\ +\x07\xb2(jA\xaf\x80\x19\xf1\xd1\x82\x9ce\xfa/\x1e\ +m\xd7\xd8T\xb8\x22%\x01nd\xe7\x1dm\xa4x/\ +\xf2hqf\x8b3[K\xecp\x8f\xa3D\xa3}\xcf\ +h\xbbP\xa25L\x88\xafl\x84R\xc6n\x8f\xd5\x85\ +\xfeX\xd8\x88\x895\x98\x9cPS\ +\xa2\x82\xdc9'\x0a,e\xb4t\xa5\xf8\xce\xb8\xa7\x11\ +\x1f\x0f\x1f\xcc\xa8J\x1f\x5c\xce\x0aF\x1b\xd9\xedZ-\ +(\xc70)\xa1\x96\xd4\xb9=\x5c^d\x09\xa3\xa5\x1c\ +\xe0\xe0\xf9/!.\x8d\xab0 2\xe4j\xb8\x9d?\ +\x09\xebr\xb1\x16\x88\xcd\x98\x8cPK\xd5u\xee3j\ +\xb6\x9fw\xb8\xc5U\xa5j\xdfE#\x11\x8f\xe6]x\ +X\xe3H\x16/\x82\xe9\xe1\x9c\x16b\xf2H\xa1\xbf\xba\ +\xa1`\x87\xdf\xceh)C\x02qh\x89\xa4\xf7\xe1z\ +\xfe0\xdaHI\xc0\xc5\x05\xa8\xb5j\xa7\x04\xa9\xa1\x9b\ +\xc3\xd4Sg\xaaMK\xef\x9a\xb43V\xed8\xb5\x07\ +\xc6\xbf\xe5\xaa\x0eT\x84\xaep?\x13\x09\x8c\xea\xddV\ +\x1b\xf8\x83\x98|\x90\xaf\xd43\xf1_\x86\xb7=\xdf\x7f\ +<[\x1d\xb4\xf4m\x8cw\xeb>\x98\x1d\xa0\xf5\x0f\x17\ +4kW\xabH\x91\x98t\x90\xaf\x15\xa8H\xea\xb3+\ +\xc7\xf9\xdct\xf7i&;r\xdd\x17\xea\x15\x91!\x18\ +g\xdf\x1c'D\xc0\x05\xcd0ZY\xec\x87\xc9\x06\x19\ +\xad\xee\x0b^Q\xbf\xdf9\xdb\xeb41*\xfe\xad\xec\ +\x9d\xaf>\xbcx\xb4n\xe2\x18S_\x17\xac\x11\xfa\xc2\ +\x0d\x0d\xe4\xf2\xc8\x1eWh\x03]\x84\xc9\x06\x99)j\ +\x1c\xf9\xd2\xaa\xf1\xea7\xe91\xea\xb2\xdcM\xea\x81\xd2\ +\x1c5\xa34\xef\x1c\xa5\x1c\xde\xaa\x17*\x1f\xb1\xf6s\ +\xf5\xff\xe6>\xad\xb7\xe4\xc1\xd8\x19\xaa\xfc\xb6\xe1=\x03\ +\xe1\x8a8>\x80 \x08\xf5o\xd9\xa4m\xa4\xd4\x13\x13\ +\x0c\x82\xa0:\xaaq*b\x08\xdc\xd1\x87t\x88\x11/\ +G5/\xa8\xb5\xea\x1c\xdd\xb7IQ\xee-\x1d\x1b4\ +%\xaa\x91+&\xbc\xd0\xa8\xa8\x15y\xbf\xa4QMj\ +\xf0\xb2w\xd5\xa1+B\x1b\xd5\x93\xc9c\x11\xc3\x86\xb5\ +\xafSL\xd7\xcb\xe0\x92>\xfb(&\xfc\x0f\x93\xea\x5c\ +\xfd%\xe6\x11u\xd4\xba\x09\xea\x84\xb4h\x8f\xfa*m\ +\xba*\xefIhR3\xf6'\xa9q\x19\xc9M\x8a:\ +\x08$\xe7mnTk\xf2\xb7\xeb_\xf3\x9b\x12}\xa1\ +?\xff\xdc\xf3|e\x95\xe5\xeb\xb7\xac\x9aR\xe5\xe9S\ +*\x0f\xfcm\xf6 \xcc\xfd\x06\xa4\xedn?\x86K\xfa\ +\x22\xa7V\x11\xba\xe2\xf2B\xe3\x1fo\xde\xda\xf0\xb5\xba\ +\xbe \x8d\xa9n\x04\xa0\xe5|\xf1c\x14\xe6\xbc\x87\xcb\ +\x0e(6\xdeZT\xc7\x05N\xb7\xb8\x0e\x93\xa9y\xa2\ +\xcaQ\x1fl\x99lxr>\xf0\x0f\x85'\x8b\xd5\xdf\ +E\xf5\xc4\x5co\xf8\xb2\xc3J\x18f\xebrj\x87b\ +\x12y\xa7\xeb\xa6?\xa8\xa7+-\xca^\xabV\x99t\ +\x15\x15\x18O\xe8\x96\x1f0\xbf=\xe6\xdeJ\x83\xe1\x9a\ +\xde_\xc9\xcd\xc7$j\xbd\xae\x8a\xea\xa5>\xb6\xec\x1d\ +\xfdl\x96\xb5\xb6\xde\xe0\x5cJ\xaa\xca\xd4k\xa2\x1f\xc0\ +\xbcnX9\x1d#{\xfc\x16\xee\xd9B\x9c\xb2\xf0\x11\ +&\x8f\xefE\x05P\xc8x\xe9\xc3\xd8\x11\xedg)`\ +\x8fO\xb6\xb91\x97=I\x16C\xe1\x9e-1\xda\xc8\ +n\xd7\xa2C\xae9\x15\xafz%\xbe\xaaW\xa1\xca+\ +/\x84\x8b1\x02uv\xb8vz_\xcc\xe1\x86U\xe1\ +\x0a\x0f\xba\x06.\xda\xdc\xb3Z\xb78\x0b\x93\xc6|\xdd\ +5w\xa8\xbek\xa2Z\xab\x00\x99\x09\xec\xa6\x82\x09\xd3\ +\xe0\xa2\xcdN\xf5B?1+\x18/\xd5yEJ\x99\ +5)\xaf>\xa9\xf7S\xc3\x5cm\xb8o\x993R\xbc\ +\x1dn\xda\xf4\xaev5&\x8b\xf5\x8c\xf7\xc3\xadS\xd4\ +mE{\xe1r\x16\xe2\xeb\x1d31?=k)\xdc\ +\xb4\xb1\xb3ZE\x0c\xc1$\xb1\xb6\xae\x9f\xfe\x10R\xca\ +,\x02\x8d?5\xaf\xc4\xbc\xf4\xf8\xb1L\x84\xabz\xb8\ +\xc0\xa0\x0d\xd0FL\x12\xb6j\x0d\xd0\xbd}\xa4\x94\xf9\ +\x8f\x99\x07\x16c.z\xd6j\x18k\x03\x04\xc8R\x1f\ +L\x0evu\xe5\xd4\x9eH)\xf3\x03gjj\xd4n\ +\xf1\xcfc\x0ez\xae\x9b\x80\xaa`\xf5w\xb5\xc2\x16L\ +\x0e\xfb\xa5\x94\x1d./\x82#\x1a\xcc\xe2\xec\xf5\x98w\ +\x9e\xcc\xd6-\xae\x85\xc1\xd6\xfd(\xa6H\x0fab\xd8\ +\xb7\xaf\x17\x95\x1b\xacM)\xcb\x823\x1a\xc4\x83I#\ +1\xdf<]\xe3U\x84\xdep\xd9_2\x10pV\xcb\ +aJ\x19\xf0\x1d\x9b\x0bw\xa1\x15\x0f\xcen\x9b\xc8@\ +\x88\x08\x0a\xc2d\xe0S\x7f\x9f\xfd\xd8\xcf\xe5!\xe9\xec\ +\x11\xb4\x8e!\xcbQ`\xbc\x91\x06\x91\xf7\xc1l\x15a\ +\x01&\x03\xf4\xc7\x19\xfd\x90R\xd6J\xe8\x98\xa6\xbd\x12\ +\x8c\xf9\xd4p\x1a\xd8\x5c\xbeo\x8bE\x04\xff\x15\xb7\xc5\ +\xa0\xc6R\xcaNTW\xc0E[\xc0\xf05\x9fa\x0e\ +y\xe8W\xd6N\x16\xff\xcco\xba\x97\x22\xfd\x80I\x00\ +5'\xa5\x8c\x8c\x97\xca\x0b\x82\xc6\xa1\xec\x0f\x14\x18\xf7\ +\x94\x99 }\xc7\xa5\xd1v\x90\xc5+\xb5\x01\xa8\xc4$\ +\x80\xbcI)\xcb\xaf@J\x99'\xe8\x03$\xe6K\x83\ +5\x13\xca\xdbD\x8b\xed\xf9\xcb@\x90\xc5P\x04\x1f\xf2\ +EJ\x195\x8f\x04\xbf@\xbf\x00P\x82\xd1\xd3\xd9\xad\ +0\x96/\xa7\x0d\xebr\xb1\xf6\xe2y\x08>\xe4\xeb\xf2\ +\x90\xe8\xbfV\xcb\x97i\xd31/\ +\xa4\xd1\x99\xb5\x94\xf0\x22\xe2^_\xd9\x8e\x98\x81\xbf\xb2\ +\xf1Y\xad\xf4 \x82\xec\x1b\xdd0\xa3_\xa3\xd7Z3\ +\xcb\xf2\xd4\xaf\xd2\xa6\xab\xc1\x9a\xf1\xa2@I}\xf5^\ +8\x9c\x9b\xdd\xed\xb2\xdcM\x889o\xd5\xc0\xb4\x17\x9c\ +\x8d \xfbF\xe3\xb6\x867{\xb1e\x9f(P\xbfM\ +\x8f\xd1/\x04\xe0\xee\xfc/J\xca^\xc7\x8d\xe1\xd2\x1f\ +\x17\xc4\xbc\xde\x87\xb2\xe9\xf6\xbc\x9a\x1b\x16\xe2\xc4\x8d1\ +\xdf\xe8\x8a\xc8\x10\xafoPU\xd7\x9c\xd6\x7fBOH\ +\x8bV\xfb%\x8d\xd2\xffo\xf1:\x8eB\xc2\xf3\xdc\xa4\ +\x86-\xc9A\x81\xf1\x86n\x94u\x88\x11/\xb7\xe1\x8d\ +1\xe1I\x04\xd77\x1a\xb6\xe2?>[\x84\x85'\x8b\ +\xf5\xb3\xdf77L\xd4w\xbe\x9d\xa6\xf5\xe1j,\xe3\ +3S\xb8\xd9\xdd\xf6\xc1\xee\xb6\x81\xd2\x8b\xe2cv<\ +B\x88Gp}\xf3qgk\xd1nC?\xa8\x1c(\ +\xcdQ\xe32\x92\xd5\xffl\x99\xac>\xb2d\x8cz\xf3\ +\xacG\xf5\xba\x04f\x5c\xc1\xbd-\xf6\x09S\xc7\xf3\xde\ +\xf8g\xb9\xd9\xdd\xae\xc8\xdb\x825T_sle\xb4\ +m\xc3{\x06j[\xf6*\x04\xb6\xf5\xa2\x0aX\xfe\x80\ +>\xc6\x91\x09/\xcf\xdd\xa47u\x0c\xdd\xf2\x83\xbe\xc3\ +\x0eY\xf0O\xf5\xf69C\x9a\x9dvvu\xf4\xfd\xfa\ +\xcd\xa6\xbb\xe7\x0d\xd3\x8b]\x8f\xdd\xf4\xbd\x1a\xb1'^\ +\xddP\xb0\xe3\xe7\x0e\xbdf\xa7\xb0-\xc8Z\xcd\xcd\xee\ +\xf6\xfe\x85#\xb0\x8e\xce=\xb7=\x19\x18\xd5\xbb\xad\x9d\ +\x8a\xce\x0cE`\xed\x9f\xb2D\xdd\x16\x8a\xabJ=\xaa\ +\xb9\x98}Q\x83\xba\xd3\xf2\xb2\xbb]\x99\xb7\x15k\xa9\ +\xde\xba\x12\x9f@7\x06\xe8\x1c\x0d^\xf6.\x17\x86\xd0\ +}\xc1+\xa6\x8f\xed\xd2\xdc\x8d\xdc\xecn{&\xfe\x0b\ +\xeb\xe9\xdc\x0fe\xf3\x90\x85\x00\x9d\x93\x81\xb0\xbb8\x93\ +\x0b3\xb8g\xde0\xd3\xc7\xb7\xef\xa2\x91\xdc\x98\xed\xaa\ +\xc3\xa9XS\xe7\x1d%\xd8\x22+\xc1\xe9\x96\x1eE@\ +[\xaf\x0f\xb6L\xe6\xe6\xc6\xd35\xd1\x0f\xf8\xe5\x88&\ +\xfd\xd8\x01n\x0c\x972O\xb0\xaelV\x09\xcc\xe5\x96\ +\x22\x10\xcc\xd6\xe9\x1f\xb1\x8f\xab'OWra\x02{\ +K\x0e\xf9m\x9c\xa9:\x18n\x95\xf1zn+\x84\xb1\ +\xed\xb4\xaa\xe3\x02\xd4Bh\xfd\x8eku\xfe6nL\ +\x80\xb2\x1c\xfc5\xd6\x1d\x22C\xd4\xdc\xf2#\xdc\x8c5\ +u\xba\xc0\x1a\xabS+\x81\xe9]\xed\x14\xe9\x16\x04\xb1\ +uz\x91\xa3\xdd\x16\xddn\xfbK\xcc#\xcc\x5c\x83f\ +\x9d9\x19\xc9Xcu\xf3\xbc\xdd\xd2M\xec~\x1c\x93\ +\xc5\xb7\x10D\xefug\xdc\xd3jy\xf5In\x16\xbf\ +\x15Z\xb9P\xb1q\xear\xc0\xcb\x1f7\xeaj\x81\xb5\ +\xf6\xb3F\xb1\x9c_\xbb\x02\x01\xf4N\xd4\x8ez[\xd1\ +^n\x8c\xf6`i\xaeeZp\xcf:\xb0\x94\x9bq\ +\xffa\xd7\x1c\xac\xb7_\xb4\x84\xe5\x94\xafj\x04\xd0\xbb\ +sZ\xfa\x89\xc7\x0b\xd4\x0d\x96.\x16Xe\xfc\x1fX\ +\xf4\x1a7c_Q]\x89N\xbc\xbf\xe4\xdbV1\x99\ +\x02F\xb5\x22\x11<\xefD\x15\xb9x\x81\x8eIz$\ +\xbeb\xb9?vt5\x99\x17\xde\xd9\xf8-\xd6\xddO\ +9\xb7\x8a\x18\xc2^~\xad,|\x84\xe0\xb5\x5cTw\ +\x96\x17\xe8\xcb\xff\xdd~\xb8\xc0\x80\x0fe\xf5\x8fp\xa8\ +\x08\x10\xd6\x9f\xbe\xbb\xfd\x0f\xcek98:\xe0iG\ +K;G+7#\xa4\xac\x88\xd35g\xb8\x89\xc7\xc0\ +\xa5c\xb0\x0ek\xb5\x94-\xa7\x8d\x19x\x89\xf6\xd0\x15\ +\x08\x5c\xf3\xf3;\xa7\xefO\xe2faG\xef_\xc4D\ +\xdd\x5c\x9e\xea%\xcc\xcb\x5c\x89\xb5X\xab\x13\x8ed\xf1\ +\x22vJ**Aw\x22h\xcd\xbf\x1d\xc6K\xd6A\ +A\xc5Q\xbd#0+\xb1y!\xe5#n\xcc\x96\xd2\ +\xdd\xfcqM\xda\x9a\xb5\x12\xa4.\x0c]\xd1\x15F\x22\ +hM\xeb\xd1\xa5o\xe9\x9d\x12x\x80n\xc1Q\x1d[\ +\x96\xe2C\xb5w\x1bk\xaai7^[\xfb9\xd6\xa5\ +.i8\x1a;\xdaD\x94H\xceK\xb3AJ-\xa2\ +E\xccj\x87\xdf\xe4\xbc\xcd\xdc\x98\xed\x9a\xfc\xedX\x9f\ +\xb5u\x12f\xb2d\xb69\x08Z\xc3\xb7\x93\xe8#\xd8\ +\x89\xea\x0a.\x16\xef\x9e\x92LK\xe5\xcfz#J\x8b\ +\xe2\x05*\xfe~\x836G\xb1V\x85CL\x18\xed\xe5\ +\x91=\xae@\xb0\xce\x15u\x1e\xa0\x9b:\xbc\x5c\xbd\xa5\ +2\x89\x93w\xc5\xa9WN\xed\xc9|\xec(5\x8d'\ +\xa8\x16\x07\xd6\xac\xa8\xb6Q\x82\xdb\xb1P\xbf6\x18\xc1\ +\xfa%\xcb`S\xe1N\xae\x16+\x1d\x1b<\x95\xfc\xbe\ +\xadR\xf2\x8a*K\xb8\x89\xdf\x8c\xfdIX\xbb$Y\ +\x14\xf1q\x8c1Q3C^\xa0l\x03)\xe1E\xdb\ +\xc5\x90\xa7\x86\x90y\xe5\x85X\xb7\xba\xd9\x0a\xaf\xa2X\ +8c\xa26\xe0\xb4\xdb\xb3;\xb4\xfb\xbbk\xeeP[\ +\xc6\xf0\xb3\xed\x91\x5c\xfd:\xa1,\x0c\xee?\x92)\xd2\ +\x0f,|\x1c\xdb\x0c\x93=W\xd4\xae\xdb\xde9\x9a\xa7\ +l]\x88\xfa\xb9\x94q\x5c\x99\xadU\xafP\x9bj\xb6\ +\xb2\xb8\xde\xdaN\x9b,^D\xcd\xd3`\xb0\xe7\xaa\xbd\ +\x12\xac\xae\xcd\xdfn\xdb\xc59>5\xc2\xd6\xf1\x0b\x99\ +\xff2Wf\xdb\x7f\xf1h\xac[\xbaI\x16\x1az\xa1\ +e\xbd\xb6\x9d,\xfe\x19A\xf2\x9c\xf6\x95Y\x96g\xbb\ +\x85I5\x0e\xa8\xf3\xaf\x9dcwG\xdcS\x5c\x99\xad\ +?Z\xc9[\xf3&Y\xd0\xf5V.>\xd3\x0fAj\ +\xfc2CF\xa9\xbd\x0c\xf7\xed\x8d\xdf\xd8>nt\xf3\ +\xcd\xee\x19$9'\x0a\xd4\x1f\x8f\xee\xd3\xebAt\x9c\ +\xda\x1d\xebU?\xb7\x15\x1f\xb0\xae\xd9*\xd2\xeb\x08R\ +\xe3\xfas\xcc\x00u\xd3\x91t\xdb,\xd4[c\x07\xdb\ +>f\xb7\xc5>\xc1L<(\x97;[3N\xaa\xb7\ +A\xc6I]'\xc2v\xc6\xaa\x1f\xa7\xca\xea\xe8\xf5_\ +\xaa\xc3V~\xa0\xf6K\x1a\xa5\xe7~\xd3\x1f\x11;\xe4\ +BsymW3\xdb\x89\x08P\xf3\xf2o\xbfJ\x9b\ +\xce|\x09?\xba\x09\xc7\xea5\xdc\x96\x88\x8a\xe7\x98\xcd\ +\xa93\xd5j~E\x91\x9aZ\xb4G]\x94\xbdV\xcf\ +\x7f\x9d\xa4\x99\xe6'\xdb\xdc\xea[\x1b\xbe\xd6\xdb\xae\x93\ +iR\x06\x08\xfd\x01\x87i\x1ab\xb6_X9\x13!\ +\x1e\x01j\xbe\x84\x84\xe7\xd5U\x87S\x995[\xdaA\ +\xf1\x10\xa7w[ye\xf7\xe4\xe9J=\x7f5\xfd\xd8\ +\x01=\xde\xf1\x99)\xaa\xb2w\xbe~u\xfb\xfd\xcd\x93\ +\xd4W\xd7\xfcW}b\xf9{j\x9f\x85\xc3\xd5\xaes\ +\x9f\xd1\xcd\xd3\xee\xe7\xe0\x8ch\x8e\x95\xcd6\x0d\x01\xf2\ +\xcet#\xf7.P\xcbN\x95\xfb\xd5\x95\xbb\xb1\xfd\x83\x81E\x8b\x18V\xa9\x15\xcd\xb6\ +\x1a\x95\x9f\x80\xd1|\xbfs\xb6)1O8\x94\xc2\xd9\ +yx\x15\x8c\xb5\xe1c\x84*k9mh\xe8\x85v\ +\x1ep\xaaI\xca\xdb\xc7\x12\xabB\xb5t\xcd\x88\xf9\xbe\ +\xe3\xd9\x5c\x8dkn\xf9\x11\x18k\xc3\xaaq\xa8\x8e\x0b\ +,\xe3\xb5\x9de\xf1\xd7v\x1f\xf4%9\xeb\xe1t~\ +\x86\x8a\xc2\x98\xd1.\x86\xea\x08\xb3\xde\x1f\xae\xa5l?\ +\x8a\xba\x08\x9e\xe4\x88\x19x\x89e\xcc60\xaaw[\ +\xbb\x0f\xf8\x1dqO\xa9%Uep\ +\x90\x9dM\xfd:\xc5K\x00\xa8\xf1\x220\x07\xea\x8fe\ +v|\xf7\x94dr7\xce\xc3\xd7|\x06ce\x22\xf5\ +\xcb\xe6\x97\x1a\xce\xd73+B\xe1\x82&A\x1f&\xcd\ +\x8c-e;\xf8\xaa\x85\x01ce\xa7\x10\x8d}K,6\xa4\ +\xac\xb2|\xb8\xa1\xc1\xec8v\xc0\xf4\xb8~\x9c*s\ +9\xd6WG\xdf\x0fcmX\x07Q<\xdc\xcf\xa2|\ +[`,\x8b\xb3\xd7\x9b\x1e\xd7\xd8\x8c\xe5\xdc\x8d3\xd5\ +\x09\x86\xa9\xb2U<|%OA\xa06-\xc0X\x22\ +\xf6\xc4\x9b\x1e\xd7\x9d\xc5\x07\xb9\x1b\xe7\xbc\xf2B\x98\xaa\ +g-\xb7\x9e\xd9*B,OA\x18\xbd\xfeK\xb8\xa1\ +\xc1|\xb8u\x8a\xb97\x85\x94`\xb5\x8a\xc3L\x84\x1f\ +\x8f\xee\x83\xa9z\xea\xae\xabH1\x963[\xed\xa1~\ +\xe0)\x08\xfd\x92F\xc1\x0d\x0d\xe6\xe5U\x1f\x9b^\xff\ +\x82G\xe8H\x0c\xc6\xda\xb0\x9cn\xf1{\x0bf#H\ +\xe3y\x0a\xc2M\xb3\x1e\x85\x1b\x1a\xcc\x83I#M\x8d\ +\xe9\x93\xc9c\xb9\x1cg\xba\x11\x09c\xf5\xa8qV\xcc\ +\xb3\x1d\xc5\xd5\xcf\x0b\xb7\xa4\x9e\xa8\xae\x80#\x1a\x085\ +\xda43\xa6tl\xc1#\xdf\xa5\xcf\x82\xa9z\x92,\ +\xbef=\xb3\x95\xc5\xa1\xbc\x05\x82j\x80\x02\xe3\xa0|\ +f3\xe39\xeb\xc0R.\xc7\xf9\x03\xd4Eh\xc4l\ +\x85'\xadwf+\x0b}y\x0bD\xec\xc1epD\ +\x838Zy\xdc\xf4x\xa6\x1d\xdd\xcf\xe5X\x8fX\xfb\ +9L\xd5\xd3/XY\xeac\xbd3\xdb\x88\xa0\xdbx\ +\x0b\xc4'\xdb\xdcpE\x9b|!o\xa7\x04\xe9}\xb8\ +xd\xf0\xb2wa\xac\x9e4E\xba\xc5rf\xdb6\ +\xbcg o\x81xv\xe58\xb8\xa2A,\xccZc\ +j,\xe9|\x98Wz$\xa2.\x82'Qc\x04\x87\ +\x15\xd1\x1e\xae\x84\xa7@\x08\x09\xcf\xc3\x15\x0db\xca\xee\ +\xb9\xa6\xc6\x92vw\xf8\x10\x09\x9dW\x17\xe1\xa8\xc3\xaa\ +\xb8\x14q\x1bO\xc1\xa0\x8aT5*\x0a\xd2\x18\x81\xd9\ +\xc5\xac\xe9\xdf\xe3\x95k\xa2\x1f\x80\xb16l\xb6[\xac\ +k\xb6\xb28\x97\xb7\x80P\x0bh\xe0{^\x5c5\xde\ +\xd48\xce\xd8\x9f\xc4\xe58\xd3\x8d9\x98\xaaG\xcd\xb6\ +\xb2\xd9~\xc9[@V\xe4m\x813\x1a\xc0\x03\x8b^\ +35\x8e\xa9E{\xb8\x1c\xe7\xc3\xe5E0U\xcf\xfa\ +\xdc\xcaf\xfb\x1ao\x01\x09\xdf=\x17\xceh\x00\xb7\xc6\ +\x0e6\xef#\x88\x22\xe9\xad\xd2y\x84\xd2\xdd`\xaa\x9e\ +..\x89\xafX\xd9l\xfb\xf1\x16\x901\x1b&\xc2\x19\ +}\x0c\x9d\x83w\x9c\xda\xdd\xb4\x18\xfe#\xf6qn\xc7\ +z9\xea\x224R\x84F|\xc0\xb2f\xdbV\xeev\ +\x03o\x01\x19\xb0\xf8\x0d\xb8\xa3\x8f9r\xb2\xd8\xd4\x18\ +\x0eZ\xfa6\xb7cM\xb7\xe6`\xac\x1e\xaf\xeav\xb6\ +\xac\xd9\x9emi~\x82\xa7\x80\xfcm\xf6 \xb8\xa3\x8f\ +\xd9V\xb4\xd7\xd4\x18\xfe{\xf3$n\xc7\xfa\xfb\x9d\xb3\ +a\xaa\x0dg\x22\x1c\xb7\x5c\x0b\xf3\x06\x8a\x88o\xe0*\ +\xe9\x99\xe3\xf3>\xa3X\x90\xb5\xda\xd4\x18N\xdb\xb7\x90\ +\xdb\xb1\x1e\xb75\x1c\xc6\xda\x90\x14a\x8d\xc3\xeah\x0f\ +:\x99\xb7\xc0P\xaf,\xe0;~\xd85\xc7\xd4\xf8m\ +.\xdc\xc5\xedX\xbf\x86\xba\x08\xec\xd4\xb1\xado\xb6\xd2\ +p\xde\x02\x13\x97\x91\x0c\x87\xf4!\xa1\x9b\xc3P*\xd3\ +$\x9eX\xfe\x1e\xcc\xb5\xe1\x0e\x0d\xff\xb4\xbe\xd9\xca\xa2\ +\xc8[`>\xdb\x1e\x09\x87\xf4!\xcf\xa5\x8c\xc3\x99\xbb\ +I\xf4L\xfc\x17\xcc\xb5\xc1j_\xc2}\x967[\x1e\ +\x0b\xd2\xbc\x90\xf2\x11\x1c\xd2\x87\xf4^8\xdc\xb4\xd8=\ +\xb2d\x0c\xd7c};\xea\x224\xa4\x9a\x80\xb0\x10\xa7\ +\x83\x05\xb4\x87\xcd\xe1)8A\xf3_\x82C\xfa\x90[\ +f?nZ\xec\xde\xdb\xf4\x1d\xd7c\xdd9\xba/\xcc\ +\xb5~&\xc2!\x07+\x04\xc8\xe2\x0c\x9e\x82\xd3iZ\ +\x1f\x14\xa4\xf1\x11gjj\xd4+\x22CL\x8b]\xe4\ +\xde\x05\xdc\x8e\xf5\xa93\xd5\xfa\x995\xcc\xf5\xbc\x8fc\ +\x8a0\x8d\x19\xb3u\xc9\xc2\xab\xbc\x05(\xbf\xa2\x08N\ +\xe9\x03\x0a*\x8e\x9a\x1a\xb7\x8dGvp;\xd64g\ +a\xae\x8c~\x1c\xe3\xb9k\xc3\xaa\xc3\xa9pJ\x1f\xb0\ +\xa5p\x97\xa9\x99\x08\xa5\xa7\xca\xb9\x1dkJY\x84\xb9\ +2\xd2\x9d\xc1#1\x03\x7f\xa5=t)O\x01\x8a\xd8\ +\x13\x0f\xa7\xf4\x01\x09\x87RL\x8b\xd9_c\x06r=\ +\xd6T\xb1\x0e\xe6ZO%t\x13\xd6\xc1\x12\xdaC/\ +\xe5)H\xefl\xfc\x16N\xe9\x03&\xed\x8c5-f\ +\xfd\x17\x8f\xe6z\xacg\x1fD]\x84\xfa)_\xe2\x22\ +\x07k\xb8\xdc\xc2\x7fx\x0a\xd2\xc0\xa5c\xe0\x94>\xe0\ +\xfd\xcd\x93L\x8b\xd9\xdb\x1b\xbf\xc1\x1f6\x18\xec\xf9\xad\ +\xcb\xc72g\xb6\x01\x8a\xd0\x9b\xa7 \xf1\x5c\xa6\xcf\x97\ +\x0c[\xf9\x01\xb7G?\x85'\x8bM\xfd\xf7>J\x8d\ +\x80\xb9\xd6\xcbD\x10C\x983\xdb\x8e\x91=~\xab=\ +|%O\x05ixm\x85\xedK\xcc\xbc\xd1\xb4\xae\xe0\ +G\xcb\xbcw\xe5\xe9S\xea}\xf1\xcf\xe9mj\xccb\ +\xe4\xda\xff\xc1`\xcf\xcd\xaf-\xef,\x8b\xbfv\xb0\x88\ +\xf6\x02Kx\x0a\xd6\xae\xe2\x0c\xb8e+\xb9y\xd6\xa3\ +\xa6\xc5\xab\xb8\xaa\xd42\xef\xfd\xbf\x1f\xa3LOE{\ +2y,\x0c\xf6\xdc\xe23\x89\x0eV\xd1^`\x14O\ +\xc1\x8a\xcfL\x81[\xb6\x82\xd35g\xd4\xf6J\xb0)\ +\xb1\xfa\xd3\xcc\x01\x96y\xef\x83\xa5\xb9\xea\x95S{\xea\ +\xcf5\xe1\xc7i\xa6\xfd\xbb\xbd\x12_\x85\xc9\x9e#i\ +8\xb3f\x1b\x18\x11\xfcW\x9e\x82\xf5\x85\xb6;\x01\xde\ +cf\xf3\xc1\x87\x92^\xb7\xcc{SV\x84?>\xb4\ +\xde\x11\xf7$\x0c\xb6\x8e\xda(\xc17:X\xc6\xa5\x88\ +\x99\xbc\x04\xeb\xe5U\x1f\xc31[\xc1\xa6\xc2\x9d\xa6\xc5\ +\xeaM\x8b\xf4\x8e\x8b\xcdX~\xces\xfdaZ\x1f}\ +\x87o\x06\xd7NG]\x84:\xda\xef`\x9d\x00\xb7\x10\ +\xc6K\xc0B\xe6\xbf\x0c\xc7l\x05s3W\x98\x16\xab\ +)\x16\xe8\x8a\x5cRU\xa6\xde8\xb3\xbf_\xda\xaa\xa3\ +.\xc2y\xe7\xb5\xb2\xf0-\xf3f\xebR\x84\x87y\x09\ +\xd85\xd1\x0f\xc01[\xc1w\xe9\xb3\xb8\xba^My\ +\xbe\x0d=\x1b\xf5\x053\x1a\xb3kP0P\xbf\xb6/\ +\xfb;\xdb\xb0\x10'O)`GL\xce\x95\xb4\x13\xef\ +n\xfc\xd6\xb48\x1d\xad<\xee\xd7w\xa5\xac\x03J\x17\ +l\xe8\xd9\xa8{\x82\xd1\xa4\xa3.B\xdd,\x84\x93\x1d\ +b\xc4\xcb\x1dv@{\xa18^\x02\xb76\x7f;\x5c\ +\xd3K\x86\xae\x085%F\x7f\x9c\xd1\xcf\xefY\x17T\ +\x03\xb9\xb1\xe73\xbad\xe7\xca\xbc\xad0\xda_4\xcb\ +a\x17\x02di0/\x81S\xf6\xce\x87kzI\xf7\ +\x05\xaf\x98\x12\xa3\xbe\x8bF\xfa\xf5=\xbfM\x8fi\xf2\ +\x19\xd3\x0dn\x22\x1a{p\x19L\xf6\x97\xf3\xda\x81\xb6\ +1[\xda\xa2k/U\xc1C\xe0\xc6n\xfa\x1e\xae\xe9\ +%T\x85\xcb\x8c\x18\x8d^\xff\xa5\xdf\xde\xf1P\xd9a\ +\xf5wQ=\x9b|\xc6\xc9\xbb\xe2\x0c}\x0e\xd4E\xf8\ +YeW\x85\xf5\xfd\x8d\xc3N\xb8\x14!\x96\x87\xe0\x0d\ +Z\xfa6\x5c\xd3\x0b\xaakN\xab\xed\x94 Sb\x14\ +\xee\xc7L\x84\xe6v\xb3}fE\xa8\xa1\xcf\xf1\xe1\xd6\ +)0\xda\xda*_3\x1cv\xc3\xa9\x88\x83x\x08^\ +\x979C\xe0\x9c^\x90s\xa2\xc0\xb4\x18\xad\xce\xdf\xe6\ +\x97w\x5c\x90\xb5\xba\xd9\xcfH)aF\xf2\xda\xda\xcf\ +a\xb6\xfa\xc71i\x80\xed\xcc\x96\xb6\xea\xda\xcb\x9d\xb0\ +{\xf0\xe8\xba\xa9\x99\xc5D\xec\x02}\x9d7+FE\ +\x95%\xa6\xbf\xdf\x89\xea\x0a\xf5\xa6\x16\xd6}\xd8w<\ +\xdb\xb0\xe7\x19\xb2\x1cu\x11\x5cn\xe18\xb3\x85g\x9a\ +\x91\x950\x9b\x87 \xee-9\x04\xf7l!s2\x92\ +M\x89\xcd\x0d~\xcaD\xa0.\xbe-}V\xf7\x9e\x04\ +\xc3\x9e\xc7\xcc\xeaj\x16N\xf9\x9a\xee\xb0+m#\xa5\ +\x9e<\x04\x91~.\x82\x96\xf1\xf5\x8e\x99\xa6\xc4\xe6\x81\ +E\xaf\x99\xfen\xdb\x8f\xee\xf5\xaa\xc0\xce\x0b)\x1f\x19\ +\xf6Lt\xdc\xc5\xbd\xd9F\x04\x05\xd9\xd6l\xa9\xb7\x8f\ +\xf6\x92\x19v\x0f\xe2\x97i\xd3\xe1\x9e-\xc4\xd3m*\ +\xd63\x11\x9a\xca\xa9\xf5W\x8f\xb4\xab\xa3\xef\xe7\xddl\ +\xf79T\xc7\x05\x0e;Cm'\xec\x1e\xc8\x7f\xad\xf9\ +\x14\xee\xd9B\x9eJ~\xdf\x96\x99\x08T\x83\xa15\xcf\ +K\xa9b\xbe\x86\x0a\x95s\x9f\x85\xe0\x16\xdev\xd8\x9d\ +vJ\xd0\xef\xb5\x97=m\xe7@\xf6H|\x05\xee\xd9\ +B\x82\xbd\xdc\xfdY9\x13\x81JFR\x15\xaf\xd6<\ +\xef\xf4\xfdI>\x7f\xae\xdc\xf2#\xbc\x9b\xed\xa9\x0e\xb2\ +x\xa5\x83\x07\xb4\x97M\xb0s0\xfd}\x1d\x94E\xfe\ +\x12\xf3\x88)\xb11\xb3\xcf\x97/\xfa\xa9\xbd\xba\xe6\xbf\ +\x86\x9c!sn\xb6q\x0e^p\xb9\xa5\x07\xed\x1eP\ +\x7f\x17:a\x09*\xf7\xe7\xa9(\x0b\xab\x7f\x04\x93\xb2\ +\xd7\xf9\xe4\x99o\x8b}\xc2\xe7\xcf\xb64w#\xe7G\ +\x08\xd2\xfd\xdc\x98\xad#\xac\xcb\xc5\xdaK\xe7\xd99\xa0\ +\x1b\x0av\xc0E\x9b\x09\x9dK\xda)\x13\xe1\xe4\xe9J\ +\xf5\xd6\xd8\xc1>{n:\x8e\xf0%3\xf6'\xf1l\ +\xb69\x8ed\xf1\x22\x07O\x04\xc8\xe2[v\x0ej\xd4\ +\xbeD\xb8h3Y\x93\xbf\xdd\x94\x98\x8cZ7\xc1\x94\ +\xf7\x19\xb75\xdc\xa7\xcfMEcXL\xb3\xb3h\xd1\ +\x997\x1c\xbc\xe1\x9cvo\x00\x15\x81\xb0kPC7\ +\x87\xc1E\x9bI\xcc\x81%\xb6\xc9D\xd8]\x9c\xa9^\ +\x11\x19\xe2\xd3\xe7~\xdd\xc7\x7f$hnrj\xb6%\ +\x81Q\xbd\xdb:xD{\xf9\xaf\xed\x1a\xd8\xc1\xcb\xde\ +\x85\x8b6\x13\xea(k\x87\xee\x0cT\x83\xb6\xf7\xc2\xe1\ +>\x7f\xee\xbb\xe6\x0e\xf5\xe9sRj\x22\xa7\xdds\xbf\ +p\xf0\x8a3\xb2\xdb\xb5vM\x03\xbb#\xee)\xb8h\ +3\xa1\x9f\xf7v\xc8D\xa0\xa3#\x83>\xe8\xf8\xb4\x03\ +\x08U\xa6\xe3\xd0l\xab]\xe1A\xd78x\xc6\xae\xa5\ +\x17\xe9\xa7$\x95\x0d\x04\xd6X\xfcFg\x22\x90\x91\x1b\ +\xd9\xad6>3\x85\xb9\x9cf\x94R\xb4\x18\x81\x11A\ +w\xdb5\xc0\xfb\x0d\xac\xdad'\xee\x8d\x7f\xd6\xf0X\ +\xdc\xbfp\x84\xa1\xef\xf0\xcf\xd5\x9f\x18\xfa\xfcom\xf8\ +\xdag\xcfz\xcb\xec\xc7\xf9\xfb0\x16)\xde\xee\x00\xfa\ +\xd9\xedF;\x06xQ\xf6Z8i30rGh\ +F&\x02\xf5\xf32\xba-x\xb7\xf8\xe7}\xf6\xbcW\ +E\xf5\xe2\xcdlW\xc3em^\x0dl\xe2\x8e\x19p\ +\xd2&\xa0:\xaff\xc4\xc2\xa863Tg\xe0v\x13\ +*h\xd1\xa5\x8f\x92\xaa\xb2V?oy\xf5I\xfe\xce\ +k\x15A\x82\xcb\x9e\xb3\xbb\x15V\xda-\xc8\xc3\xd7|\ +\x067m\x02\xaa\xfd\xcbr&\xc2g\xdb#\x99\xfa\xa5\ +d\xd6\x05\x12\x0bi9\xdc\xb5\xfe\x872\xc9n\x81\xa6\ +4 \xd08\xcbr7\x99\x12\x8b#\x06d\x22\xec-\ +\xc9R;N\xedn\xda|z\x7f\xf3\xa4V?\xf3\xe6\ +\xc2]\x5c\x99-}\x13\x82\xbb6|v\xbb\xdcN\x81\ +\xbe\x01\x05i\x9a$r\xef\x02f3\x11\x1e^<\xda\ +\xd4\xf9\x142\xff\xe5V?3\xed\x8e9*\xa3\x98\x04\ +W\xe5(3\xa1\xb8\xaa\x14\x8e\xda\x08\x1f\xa7\xcaLf\ +\x22\xcc>\xb8\xd4/\xfd\xed\xcaN\x95[2\x17\xd8\x82\ +\xaaA\x06BS5\x13\xb4\xbfFv\x0a\xfa\xa6\xc2\x9d\ +p\xd4Fxe\xb5\xf1\xb7\x99|}\xdd\x95\xfe\x80\xde\ +8\xf3a\xbf\xcc\xa7\xe5\xb9\x9bZ\xf5\xec\x13\xd2\xa2y\ +1\xdb\xf9p\xd3\xa6v\xb7\x8a\xd0\x95\xfe*\xd9%\xe8\ +F\x14\x7f\xb6\x13\xfd\x92F\x19\x1e\x83\xb0\x9d\xb1>}\ +\xe677L\xf4\xdb|\x1a\x9f\x1a\xd1\xaag\xf7\xa6\xf1\ +$\x83]s\xcf`W\xdb\xfc\xcc\x04\xc5.\x81\xff`\ +\xcbd8j#\xdc\x11\xf7\xa4\xe11H9\xbc\xd5g\ +\xcfK\xa53\xcd\xa8\xbdk\xd4G\xd7\x17W\x8d\xe7a\ +W\x1b\x0e\x17m&\xbf\x9d\x1c\xdc\x91z\xba\xdb!\xf0\ +O&\x8f\x85\xa36\xc2\xef\xa2z2\x93\x89@E\xce\ +\xef\x9e7\xcc\xaf\xf3\x89\xb2\x1f*OWy\xfd\x0e\x03\ +\x16\xbfa\xfb\xca^\x97G\xf6\xb8\x02.\xda\xb2\xcc\x84\ +\xf7\xec\x10|_Wl\xb2\x13\xd4\xcd\xc2\xe8\xf1\xbf~\ +\xfaC>{\xde\xaf\xd2\xa6[bN\xb5\xa6\x8f\x9a\x90\ +\xf0\xbc\xbd\xaf\xe5\xba\xa57\xe1\x9e-\xa4\xb3,\xfe\xda\ +\x0em\xcfi'B\xed\xacA}\xcc\xe8\x85\xd5\xc7G\ +\xb9\xce\x19\xa5y\xa6\xec\xc2\x9b\xa3O\xb7)^\xbf\x07\ +\xb5G\xb7\xb1\xd9\xeeu\xc4\x0c\xbc\x04\xee\xe9\x05NE\ +\x1cd\x87I@\x0b\x15\xd4'1k\x0d3\x99\x08\x03\ +\x96\xbci\x99\xf9D\x1f\x15\xbd\xc5\xccK\x18\xa6K\x16\ +\xfb\xc15\xbdEu\x5c\xe0t\x8b\xebX\x9f\x04Kr\ +\xd6\xc3Y\x1b\x80\xea\x15\x18=\xf6?\xec\x9a\xd3\xea\xe7\ +\x9c\x97\xb9\xd2R\xf3\x89v\xd8Ug\xaa[\xfc\x1e\xc7\ +\xabN\xd89\x03a%\x0c\xb3\xb5y\xb7\x91\xe2\xcd\xda\ +@V\xb1<\x11\xbeM\x8f\x81\xb36\x80\x19\xedYZ\ +\x9b\x89@\xc5_\xfe4s\x80\xe5\xe6\xd4\xc6#-o\ +(J%?\xedyN+\x9el\xa3\x04\xdf\x08\xb7\xf4\ +I\xdd\x04\xe9\x03\x96'\xc3\xc8\xb5\xff\x83\xb36\xc0\xb3\ ++\xc7\x19>\xf6\x05\x15\xc7\x98\xcd\xa9mLt9\xc1\ +\x9b\xb45\x9b\xeel\xdf\x83K\xfa\x8a\x89\xbd/\xd5v\ +\xb7\xe9\xacN\x06\xb3Zh\xb3F\xaf\xc4W-\x9d\x89\ +\xb0\xe9H\xba_sj\x1b\xd3\xc0\xa5cZ\xfc>\xf3\ +\x0f\xad\xb2\xa3\xd1\xa6r\xd7\x9a\xdc\xf0\x9be\xb2x\x17\ +\xdd\x0caqB\xd0\xcfPP\x9f\x9bg=j\xd9L\ +\x04jit\x8f\x9fsj\x1b\xd3\x1f\xa6\xf5iq\x96\ +\x8b\xbc'\xc1nF{\xba\xad\x12t'\xdc\xd1\x88\xec\ +\x04\xb7\xf8=\xab\x13\xa3\xb4\x95\x05D\xec\x06\x19\x05\x15\ +V\xb1j&\xc2w\xe9\xb3,?\xa7R\x8b\xf6\xb4\xe8\ +\x9d\xcc\xac\xbdkNQpi\x22\x5c\xd1\xa8\xddmT\ +\xef\xb6\xda g\xb381\xb6\x16\xed\x86\xc3\xd6!\xb7\ +\xfc\x88e3\x11rN\x14\xa8\x9d\xb4\x9d\xa3\xdd>\xbc\ +\x8e\xb1\xe8\xf9\xb3\x97:\xd81\xb2\xc7o\xe1\x8aF~\ +,\x93\xc5~,N\x8e\x99\x07\x16\xc3a\xeb@_\xd3\ +\x8d\x1es\xea\x0d\xe6\x0dO,\x7f\x8f\x899E\xcfi\ +\xb5\x0f\x92\xe6u\xcb\x15\xfa\xc2\x0dM9N\x90\xbec\ +mr|\xb8u\x0a\x1c\xb6\x0es2\x92-\x99\x89\xb0\ + k53s\x8a\x1ae\x9e\xa9\xa9i\xf6\xbb=\x94\ +\xf4\xba]rj\xbf\x82\x0b\x9a{\x957\x8d\xa5\x092\ +tE(\x1c\xb6\x0e\xd4\x0c\xd3j\x99\x08\xd4|\xf2&\ +\x83?\xda\xf9Z;\x8b\x0f6\xfb\xfd\xee\xb6\xf0\x07\xbf\ +\x16\x18\xedv\xcaN\x82\x0b\x9a\x9a{\xdb\xedV\x96.\ +;\xd0\x97m`\xde\xf9\xa17\xa5\x08\xdf\xdd\xf8-s\ +\xe6\xd3\x92\xae\xc17\xce\xec\xcf\xfc\xe5\x85@\xb7t\x13\ +\xdc\xcf?\xb5\x13\xc6\xb02Q\xae\x9c\xda\xb3E?\xf9\ +\xec\xce\x90\xe5c\x8d\xbdH\xb2\xee\x8b\x16=\xcf\xb6\xa2\ +\xbdj;%\x889\x03z\xa6\x99\xbf\x98h\xee\xb1\xf8\ +~\xe7e\x1f\xbc\x0e\xd7\xf3\x17\xa1\xa1\x17\xba\x14a\x19\ ++\x93%\xab,\x1f.{\x161\xe1\x05\xcbtg\xa0\ +44)\xe1E&\x0d\x88v\xab\xcd\xa1\xa8\xb2\x84\xf5\ +]m\x22\xd5J\x81\xe9\xf9sw\x1b\xd9\xedZ-\x18\ +\xc7X\x980\xcbZ\xd9?\xcaNP\xe7a\xabd\x22\ +P\x8a\x18\xcbF\xb4\xefxv\x93\xef\xb8\xa7$\x93\xe5\ +w,\x0c\x88\x0c\xb9\x1ang\x05\xc3\x8d\x08\x0a\xd2\x02\ +Rm\xf5I3\xc9\xc7\xbd\xb0X\x85:\x0d\x04\xb8%\ +\x833\x11\x8e6\xebY\xf2\xca\x0b\xf5\xdbX,\x9b\xad\ +{OB\x93\xefI\x05\xc7\x19}\xbfS\xd4u\x1b.\ +g\xadt\xb07\xad>qF\xf9\xb8\xcb+\xab\x1c(\ +\xcd1t\x9c\xaf\x9b\xfe`\xb3\x9f\x85\xb2DX\xffB\ +O}\xc5\x9a\x22\xce\x84T;\x9c\xd3\xf2\x82\xea\xb8 \ +\xc0-\xcc\xb4\xf2\xc4\xa1\xc5m\xa7\x8a\x7f\x84\ +\x9b\xb1q~;\xc0\xaa\xe5\x18\xa9\xc9!\xef\xbc\xb6\xf6\ +sC\xc7xE\xde\x96F\xff\xfd\x1f\x8f\xee3\xbc\xe2\ +\x98\xd9zu\xcd\x7f\x1b}\xe7\xa7\x93\xff\xcd\xca\xd1\xc1\ +\x19\x97\x22=\x04\x17c\xcbp_\xb0\xe2d\x9a}p\ +)\xf7f\xfb\xc8\x921~\xcbD\xa0\xe4\xfe\xe0\xf9/\ +\xd9\xae\x88\xf6m\xb1O4:\xe6T\xdb\x97\x89|Z\ +E|\x0e\xee\xc5 .Y\xfc\xd2j\x93\xe9\xe3T\x99\ +{\xb3\xbdk\xeeP\xbfe\x22D\xec\x89\xb7m\xd3\xc3\ +\xc3\xe5E\x1e\xdf\xfb\xce\xb8\xa7Yx\x87\xcf\xe1Z\xac\ +B7\xcc\xdcb\x9c\x95&\xd4\xb0\x95\x1fpo\xb6F\ +\xd6\x8am,\x13\x81\xcc\xe8\xea\xe8\xfbmk\xb6\xb1\x07\ +\x97y|w\xfa#d\xed\x14/!\x96\xd6+L\x8b\ +a:\xc5t\xbd,@\x16\xd7[eRu\x8b\x7f\x9e\ +k\xa35\xba\x9dvc\xcd5\x9fK\x19g[\xa3m\ +\xac3\x05\xb5\xf81\xfa\x12I+\xaf\xe2\xae\xa5u\x0a\ +\xb7\xb2\x01\x81Qb'-\xa89V\x98XWE\xf5\ +RkT~\x0b\xd2PI@\x7f\xdc\xd2[\x9c\xbd\xde\ +\xd6FK\xa2\xe3\x99\x86\xa03l\x0b?wV\xfb)\ +\xdd\xaf\x82K\xd9\x08J%\xd1\x02\x9bg\x85\x09F-\ +ax\xc5h\xd3k(\x13\xe1\xe4\xe9J\xfd\x03\x92\xdd\ +\xcd\x96v\xafGN\x16\xd7{\xff\x1d\xc7\x0eX5\xf3\ + \xd7\xe9\x0e\xba\x1e\xeedC\x02\x22\xc5\x9b\xb5 \x17\ +\xf9{\x92%\xe7m\xe6\xd6l\x8d\xfe@\x95_Q\xff\ +#\x11u\xc9\xb0\xbb\xd1\xfe\xa4\xf8\xcc\x94z\xefO\xf3\ +\xcd\x82\xcf\x9aO9\xf1p%{g(\xfc\xc3\xdfU\ +\xc2ZR\xf0\xd9n\x8c\xdb\x1anh\x9b\x98\xf3\xd9]\ +\x9c\xa9^\x11\x19\xc2\x8d\xd9\xbe\xb5\xe1\xebzc@\xe9\ +\x86\x16\xdb\xd1\x1euM\x91n\x81\x1b\xf1p\x86\xab\x08\ +]\xb5\xa0\x97\xf9k\xb2\xbd\xb9a\x22\xb7f\xfb\xd2\xaa\ +\xf1\x86\x8dk\xaf\xc4W\xcf\xf9\xb7\xe8l\xbc7#\xf9\ +\xa5F~\x80\xfd~\xe7l+=ci\xa0,\xde\x05\ +\x17\xe2\x08\xa7[\x0a\xa66\x1b\xfe\x98p\xfd\x17\x8f\xe6\ +\xd6l\x1fX\xf4\x9ai\x99\x08S\xf7&re\xb4\xa4\ +@ERK\xaa\xcaL\xfb5\xd1\xd2\xb66T\x0e\x15\ +\xee\xc3\xe3\x91\x82\x22<\xec\x8f>f\x7f\x9b=\x88[\ +\xb3\xbd5v\xb0)\x99\x08\xf4\xa1\x88\x8e\x15x3[\ +RR\xf6\xbas\xc6|\x84\xc1\xd7\xa3\x9bytP\x85\ +k\xb8\xbc\x1bn\xa4$\x98}\xa4@\xbb\x8f\x8a\xeaJ\ +\xee\x8c\x96~\xd6w\x9c\xda\xdd\xb0qM8\xf4\xcb\xc7\ +\xa1\xe1k>\xe3\xd2hITd\xa7.O,\x7f\xcf\ +\xefG\x07.wP7\xb8\x0d\xa0,\x85{\xb5\xbf\xbc\ +\xc7\xcd\x9c\x80iG\xf7sg\xb6\x05\x15\xc7\x0c\x1d\xd3\ +\xbe\x8bF\xea\xad\x87\xc6\xa7FX:\x89\xdf\x8cR\x9e\ +Ks6\xe8\xedr\x16d\xad\xd6\xdb\xba\xfb\xf1yJ\ +\xb4X\xdc\x03\x97\x01u\xcfp\xbb\x98\x99\x166'#\ +\x99;\xb3\xddR\xb8\x8b[\x03\xe4T\x85\xce\x88\xa0\xdb\ +\xe0.\xc0SZ\xd8\x11\xb3\xaa\xebS\x87Y\x9e\xd4e\ +\xce\x10\x18\x10?\xca\x0b\x8c\x08\xfe+\x5c\x054\xf2\xd1\ +\xac\xdb\xadN\xb7x\x18\x8b\x05\x82\xbc\xbf\x19\x16\xa0\x04\ +\xff\x1dn\x02\x9a\xa4\xfd\xd4\xfb~\xa7M\x9a\xcdX4\ +\x10\xd4bm\xec \x8bW\xc2E@\xb3\xa1\xfeG\xda\ +\xc4\x89\xc7\xe2\x81\xa0fJ\x16\xe7\xa2o\x18\xf0\x8e\x98\ +\x81\xbfr)\xd2D,$\x08j\xd2hC\xa9\xc35\ +L\x03\xb4\xf2\x1cW\x1c\xa1M\xa8\xd3XT\x10TO\ +\xd5NYx\x1e.\x01|\x99\x1a\xf6\xa86\xb1N`\ +qA\xd0\xcf*s\xc9R\x7f\xb8\x03\xf09m\xe5n\ +7h\x13l\x07\x16\x19\x04\x89ih7\x0e\x0c\xa5C\ +\x8cx\xb96\xd1fc\xb1A\xbc*@\x91bh\x1d\ +\xc0\x0d\x80\xf1\xa8\x8e\x0b\x9c\x8a8\x06\xe7\xb8\x10o\xe7\ +\xb3\xf4\xfd\x02\x1f\xc2\x80\xe9\x04\xcab/\x7f\x17\x22\x87\ + \x93.*\x14P\xd1&\xacz\xe0\xe7s\x5ca\x03\ +\x16#dWQ\xf7[gD\xc8uX\xed\xc0\xff\x84\ +\x86^X\x9b\x1ef~m\x5c\x082\xb6\x06-\x8e\x0d\ +\x80%w\xb9\xc2\x1d\xda\x04\xdd\x83E\x0a\xb1\xff\x11L\ +\xdcM\x95\xf0\xb0\xaa\x81e\xe9\x14\xd3\xf52\xcdp\xbf\ +\xc2\x82\x85\x18\xde\xd1~E\xf3\x18\xab\x190A\x80[\ +x\x9c\xeayb\xe1B,}\x04\xa3\xcb;X\xbd\x80\ +=\xc3\x0d\x0bqj\xa6\x1b\xa6M\xe4\x1a,d\xc8\xc2\ +&{\x86v\xb34_\xb1j\x01\xdb\xa6+\x0b\xf7\xd1\ +\x19\x18\x165d\xc1L\x83]\xd4\x16\x0a\xab\x14\xd8\xea\ +,7@\x16?\xc1E\x08\xc82\x99\x06\xb2\x18\xdaY\ +\x16\x7f\x8d\xd5\x09lz\x96+\xdd\xa3M\xf6T,v\ +\xc8\x8f\xda\x1c(\x8bwa5\x02\xfbC\xd7}ea\ +\xa0K\x113\xb1\xf0!\x13\x95\x11 \x0b}\xb1\x00\x01\ +w\x5c\x15\xd6\xf77gk,\x94\xc1\x08 \x03UJ\ +\xf3\x0c\xe9\x5c\x80{\xda)A\xbfw)R$\xb2\x16\ + _g\x19P6L\xfb)\xdd\xaf\xc2*\x03\xa0\x0e\ +T\xe8C[$\xaba\x12\x90\x0f\x8cv%\xb2\x0c\x00\ +h\xdeG\xb4\xe50\x0c\xa8\xc5R\x84e\x81\x8a\xd0\x15\ +\xab\x08\x80\x16\xe0T\xc4\x10j\x0d\x0d\x13\x81\xb0\x93\x05\ +\xc0hBC/\x0c\x90\xa5\xc1\xdabJ\x87\xa1@\x0d\ +\xb5\xa7\xd1\xfe(\x0f\xa2y\x82\xc5\x02\x80\xaf\x8e\x17\xb4\ +\x9d\x8b\xb6\xb8\x12\xf0!\x8d{Q\xfc\x13\xb0\x93\x05\xc0\ +`\xce\x16,\xff\xca\xe9\x16O\xc2x\xb8R\x05\xc5\x1d\ +\x8d\x16\x010\x19\x97,v\xae-\xe7(\x1c\x87\x11\xd9\ +Z%\x9a&\xb8\xc2\x83\xae\xc1\xac\x07\xc0\x9fL\xec}\ +\xa9~#\xcd-.\xc1\x11\x83\xad\x8e\x0a\x96P\x5c\x1d\ +1\x03/\xc1$\x07\xc0\x82G\x0c\xb5\x05o\x84\x02\x18\ +\x16\x93\xca\xa2\x0218*\x00\x80\x11j;FHO\ +\x9d\xdd\xedV\xc3\xc4\xac\xdd\x22<\xc0-$\x05(\xe2\ +\x10T\xe1\x02\x80a\xa8\x06\x03\x15 9{%\xf8\x04\ +\xcc\xcd\x12:A\xf1\xa0\xb8P|0K\x01\xb0\x19m\ +\x94\xe0vNE|\x8evR\xd8\xf1\x9a\xaeSN\xb7\ +\xb8\xd0%K\xc3\xda\x86\xf7\x0c\xc4l\x04\x80\xa3\xa3\x86\ +\xda[j\xc2W(\xf7h`'\x04Y\xfc\x84\xc6\x19\ +U\xb7\x00\x00:\xce\x88\x90\xeb4\xd3\x1dQ{\xce+\ +T\xc1,\xbdR%]8p\xba\xa5\x17h<1\xab\ +\x00\x00M\x1e7\xb8\xdc\xd2\x83\x01n\xe1S\xcd\x00\x00\x00\x00\x00\x01\x00\x00n|\ +\x00\x00\x01r\x0e\xc2\x8cW\ +" + +def qInitResources(): + QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +def qCleanupResources(): + QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +qInitResources() diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/systray/systray.pyproject b/venv/Lib/site-packages/PySide2/examples/widgets/systray/systray.pyproject new file mode 100644 index 0000000..eadfb0d --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/systray/systray.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["main.py", "window.py", "systray.qrc"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/systray/systray.qrc b/venv/Lib/site-packages/PySide2/examples/widgets/systray/systray.qrc new file mode 100644 index 0000000..a8b6535 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/systray/systray.qrc @@ -0,0 +1,7 @@ + + + images/bad.png + images/heart.png + images/trash.png + + diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/systray/window.py b/venv/Lib/site-packages/PySide2/examples/widgets/systray/window.py new file mode 100644 index 0000000..ca65f04 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/systray/window.py @@ -0,0 +1,273 @@ +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2.QtCore import Slot +from PySide2.QtGui import QIcon +from PySide2.QtWidgets import (QAction, QCheckBox, QComboBox, QDialog, + QGridLayout, QGroupBox, QHBoxLayout, QLabel, + QLineEdit, QMenu, QMessageBox, QPushButton, + QSpinBox, QStyle, QSystemTrayIcon, QTextEdit, + QVBoxLayout) + +import rc_systray + + +class Window(QDialog): + def __init__(self, parent=None): + super(Window, self).__init__(parent) + + self.iconGroupBox = QGroupBox() + self.iconLabel = QLabel() + self.iconComboBox = QComboBox() + self.showIconCheckBox = QCheckBox() + + self.messageGroupBox = QGroupBox() + self.typeLabel = QLabel() + self.durationLabel = QLabel() + self.durationWarningLabel = QLabel() + self.titleLabel = QLabel() + self.bodyLabel = QLabel() + + self.typeComboBox = QComboBox() + self.durationSpinBox = QSpinBox() + self.titleEdit = QLineEdit() + self.bodyEdit = QTextEdit() + self.showMessageButton = QPushButton() + + self.minimizeAction = QAction() + self.maximizeAction = QAction() + self.restoreAction = QAction() + self.quitAction = QAction() + + self.trayIcon = QSystemTrayIcon() + self.trayIconMenu = QMenu() + + self.createIconGroupBox() + self.createMessageGroupBox() + + self.iconLabel.setMinimumWidth(self.durationLabel.sizeHint().width()) + + self.createActions() + self.createTrayIcon() + + self.showMessageButton.clicked.connect(self.showMessage) + self.showIconCheckBox.toggled.connect(self.trayIcon.setVisible) + self.iconComboBox.currentIndexChanged.connect(self.setIcon) + self.trayIcon.messageClicked.connect(self.messageClicked) + self.trayIcon.activated.connect(self.iconActivated) + + self.mainLayout = QVBoxLayout() + self.mainLayout.addWidget(self.iconGroupBox) + self.mainLayout.addWidget(self.messageGroupBox) + self.setLayout(self.mainLayout) + + self.iconComboBox.setCurrentIndex(1) + self.trayIcon.show() + + self.setWindowTitle("Systray") + self.resize(400, 300) + + def setVisible(self, visible): + self.minimizeAction.setEnabled(visible) + self.maximizeAction.setEnabled(not self.isMaximized()) + self.restoreAction.setEnabled(self.isMaximized() or not visible) + super().setVisible(visible) + + def closeEvent(self, event): + if not event.spontaneous() or not self.isVisible(): + return + if self.trayIcon.isVisible(): + QMessageBox.information(self, "Systray", + "The program will keep running in the system tray. " + "To terminate the program, choose Quit in the context " + "menu of the system tray entry.") + self.hide() + event.ignore() + + @Slot(int) + def setIcon(self, index): + icon = self.iconComboBox.itemIcon(index) + self.trayIcon.setIcon(icon) + self.setWindowIcon(icon) + self.trayIcon.setToolTip(self.iconComboBox.itemText(index)) + + @Slot(str) + def iconActivated(self, reason): + if reason == QSystemTrayIcon.Trigger: + pass + if reason == QSystemTrayIcon.DoubleClick: + self.iconComboBox.setCurrentIndex( + (self.iconComboBox.currentIndex() + 1) % self.iconComboBox.count() + ) + if reason == QSystemTrayIcon.MiddleClick: + self.showMessage() + + @Slot() + def showMessage(self): + self.showIconCheckBox.setChecked(True) + selectedIcon = self.typeComboBox.itemData(self.typeComboBox.currentIndex()) + msgIcon = QSystemTrayIcon.MessageIcon(selectedIcon) + + if selectedIcon == -1: # custom icon + icon = QIcon(self.iconComboBox.itemIcon(self.iconComboBox.currentIndex())) + self.trayIcon.showMessage( + self.titleEdit.text(), + self.bodyEdit.toPlainText(), + icon, + self.durationSpinBox.value() * 1000, + ) + else: + self.trayIcon.showMessage( + self.titleEdit.text(), + self.bodyEdit.toPlainText(), + msgIcon, + self.durationSpinBox.value() * 1000, + ) + + @Slot() + def messageClicked(self): + QMessageBox.information(None, "Systray", + "Sorry, I already gave what help I could.\n" + "Maybe you should try asking a human?") + + def createIconGroupBox(self): + self.iconGroupBox = QGroupBox("Tray Icon") + + self.iconLabel = QLabel("Icon:") + + self.iconComboBox = QComboBox() + self.iconComboBox.addItem(QIcon(":/images/bad.png"), "Bad") + self.iconComboBox.addItem(QIcon(":/images/heart.png"), "Heart") + self.iconComboBox.addItem(QIcon(":/images/trash.png"), "Trash") + + self.showIconCheckBox = QCheckBox("Show icon") + self.showIconCheckBox.setChecked(True) + + iconLayout = QHBoxLayout() + iconLayout.addWidget(self.iconLabel) + iconLayout.addWidget(self.iconComboBox) + iconLayout.addStretch() + iconLayout.addWidget(self.showIconCheckBox) + self.iconGroupBox.setLayout(iconLayout) + + def createMessageGroupBox(self): + self.messageGroupBox = QGroupBox("Balloon Message") + + self.typeLabel = QLabel("Type:") + + self.typeComboBox = QComboBox() + self.typeComboBox.addItem("None", QSystemTrayIcon.NoIcon) + self.typeComboBox.addItem( + self.style().standardIcon(QStyle.SP_MessageBoxInformation), + "Information", + QSystemTrayIcon.Information, + ) + self.typeComboBox.addItem( + self.style().standardIcon(QStyle.SP_MessageBoxWarning), + "Warning", + QSystemTrayIcon.Warning, + ) + self.typeComboBox.addItem( + self.style().standardIcon(QStyle.SP_MessageBoxCritical), + "Critical", + QSystemTrayIcon.Critical, + ) + self.typeComboBox.addItem(QIcon(), "Custom icon", -1) + self.typeComboBox.setCurrentIndex(1) + + self.durationLabel = QLabel("Duration:") + + self.durationSpinBox = QSpinBox() + self.durationSpinBox.setRange(5, 60) + self.durationSpinBox.setSuffix(" s") + self.durationSpinBox.setValue(15) + + self.durationWarningLabel = QLabel("(some systems might ignore this hint)") + self.durationWarningLabel.setIndent(10) + + self.titleLabel = QLabel("Title:") + self.titleEdit = QLineEdit("Cannot connect to network") + self.bodyLabel = QLabel("Body:") + + self.bodyEdit = QTextEdit() + self.bodyEdit.setPlainText("Don't believe me. Honestly, I don't have a clue." + "\nClick this balloon for details.") + + self.showMessageButton = QPushButton("Show Message") + self.showMessageButton.setDefault(True) + + messageLayout = QGridLayout() + messageLayout.addWidget(self.typeLabel, 0, 0) + messageLayout.addWidget(self.typeComboBox, 0, 1, 1, 2) + messageLayout.addWidget(self.durationLabel, 1, 0) + messageLayout.addWidget(self.durationSpinBox, 1, 1) + messageLayout.addWidget(self.durationWarningLabel, 1, 2, 1, 3) + messageLayout.addWidget(self.titleLabel, 2, 0) + messageLayout.addWidget(self.titleEdit, 2, 1, 1, 4) + messageLayout.addWidget(self.bodyLabel, 3, 0) + messageLayout.addWidget(self.bodyEdit, 3, 1, 2, 4) + messageLayout.addWidget(self.showMessageButton, 5, 4) + messageLayout.setColumnStretch(3, 1) + messageLayout.setRowStretch(4, 1) + self.messageGroupBox.setLayout(messageLayout) + + def createActions(self): + self.minimizeAction = QAction("Minimize", self) + self.minimizeAction.triggered.connect(self.hide) + + self.maximizeAction = QAction("Maximize", self) + self.maximizeAction.triggered.connect(self.showMaximized) + + self.restoreAction = QAction("Restore", self) + self.restoreAction.triggered.connect(self.showNormal) + + self.quitAction = QAction("Quit", self) + self.quitAction.triggered.connect(qApp.quit) + + def createTrayIcon(self): + self.trayIconMenu = QMenu(self) + self.trayIconMenu.addAction(self.minimizeAction) + self.trayIconMenu.addAction(self.maximizeAction) + self.trayIconMenu.addAction(self.restoreAction) + self.trayIconMenu.addSeparator() + self.trayIconMenu.addAction(self.quitAction) + + self.trayIcon = QSystemTrayIcon(self) + self.trayIcon.setContextMenu(self.trayIconMenu) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/threads/__pycache__/thread_signals.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/threads/__pycache__/thread_signals.cpython-310.pyc new file mode 100644 index 0000000..2c52e16 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/threads/__pycache__/thread_signals.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/threads/thread_signals.py b/venv/Lib/site-packages/PySide2/examples/widgets/threads/thread_signals.py new file mode 100644 index 0000000..d630404 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/threads/thread_signals.py @@ -0,0 +1,100 @@ + +############################################################################# +## +## Copyright (C) 2020 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +import sys +from PySide2.QtCore import QObject, QThread, Signal, Slot +from PySide2.QtWidgets import QApplication, QPushButton, QVBoxLayout, QWidget + + +# Create a basic window with a layout and a button +class MainForm(QWidget): + def __init__(self): + QWidget.__init__(self) + self.setWindowTitle("My Form") + self.layout = QVBoxLayout() + self.button = QPushButton("Click me!") + self.button.clicked.connect(self.start_thread) + self.layout.addWidget(self.button) + self.setLayout(self.layout) + + # Instantiate and start a new thread + def start_thread(self): + instanced_thread = WorkerThread(self) + instanced_thread.start() + + # Create the Slots that will receive signals + @Slot(str) + def update_str_field(self, message): + print(message) + + @Slot(int) + def update_int_field(self, value): + print(value) + + +# Signals must inherit QObject +class MySignals(QObject): + signal_str = Signal(str) + signal_int = Signal(int) + + +# Create the Worker Thread +class WorkerThread(QThread): + def __init__(self, parent=None): + QThread.__init__(self, parent) + # Instantiate signals and connect signals to the slots + self.signals = MySignals() + self.signals.signal_str.connect(parent.update_str_field) + self.signals.signal_int.connect(parent.update_int_field) + + def run(self): + # Do something on the worker thread + a = 1 + 1 + # Emit signals whenever you want + self.signals.signal_int.emit(a) + self.signals.signal_str.emit("This text comes to Main thread from our Worker thread.") + + +if __name__ == "__main__": + app = QApplication(sys.argv) + window = MainForm() + window.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/__pycache__/part1.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/__pycache__/part1.cpython-310.pyc new file mode 100644 index 0000000..6c685eb Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/__pycache__/part1.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/__pycache__/part2.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/__pycache__/part2.cpython-310.pyc new file mode 100644 index 0000000..a870d99 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/__pycache__/part2.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/__pycache__/part3.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/__pycache__/part3.cpython-310.pyc new file mode 100644 index 0000000..0bb19a9 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/__pycache__/part3.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/__pycache__/part4.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/__pycache__/part4.cpython-310.pyc new file mode 100644 index 0000000..74c2d89 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/__pycache__/part4.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/__pycache__/part5.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/__pycache__/part5.cpython-310.pyc new file mode 100644 index 0000000..dee4261 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/__pycache__/part5.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/__pycache__/part6.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/__pycache__/part6.cpython-310.pyc new file mode 100644 index 0000000..fffdbdf Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/__pycache__/part6.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/__pycache__/part7.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/__pycache__/part7.cpython-310.pyc new file mode 100644 index 0000000..b9e20b1 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/__pycache__/part7.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/addressbook.pyproject b/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/addressbook.pyproject new file mode 100644 index 0000000..13d739e --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/addressbook.pyproject @@ -0,0 +1,4 @@ +{ + "files": ["part3.py", "part1.py", "part5.py", "part2.py", + "part7.py", "part6.py", "part4.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/part1.py b/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/part1.py new file mode 100644 index 0000000..8958730 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/part1.py @@ -0,0 +1,74 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2 import QtCore, QtWidgets + + +class AddressBook(QtWidgets.QWidget): + def __init__(self, parent=None): + super(AddressBook, self).__init__(parent) + + nameLabel = QtWidgets.QLabel("Name:") + self.nameLine = QtWidgets.QLineEdit() + + addressLabel = QtWidgets.QLabel("Address:") + self.addressText = QtWidgets.QTextEdit() + + mainLayout = QtWidgets.QGridLayout() + mainLayout.addWidget(nameLabel, 0, 0) + mainLayout.addWidget(self.nameLine, 0, 1) + mainLayout.addWidget(addressLabel, 1, 0, QtCore.Qt.AlignTop) + mainLayout.addWidget(self.addressText, 1, 1) + + self.setLayout(mainLayout) + self.setWindowTitle("Simple Address Book") + + +if __name__ == '__main__': + import sys + + app = QtWidgets.QApplication(sys.argv) + + addressBook = AddressBook() + addressBook.show() + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/part2.py b/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/part2.py new file mode 100644 index 0000000..6eac33b --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/part2.py @@ -0,0 +1,180 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2 import QtCore, QtWidgets + + +class SortedDict(dict): + class Iterator(object): + def __init__(self, sorted_dict): + self._dict = sorted_dict + self._keys = sorted(self._dict.keys()) + self._nr_items = len(self._keys) + self._idx = 0 + + def __iter__(self): + return self + + def next(self): + if self._idx >= self._nr_items: + raise StopIteration + + key = self._keys[self._idx] + value = self._dict[key] + self._idx += 1 + + return key, value + + __next__ = next + + def __iter__(self): + return SortedDict.Iterator(self) + + iterkeys = __iter__ + + +class AddressBook(QtWidgets.QWidget): + def __init__(self, parent=None): + super(AddressBook, self).__init__(parent) + + self.contacts = SortedDict() + self.oldName = '' + self.oldAddress = '' + + nameLabel = QtWidgets.QLabel("Name:") + self.nameLine = QtWidgets.QLineEdit() + self.nameLine.setReadOnly(True) + + addressLabel = QtWidgets.QLabel("Address:") + self.addressText = QtWidgets.QTextEdit() + self.addressText.setReadOnly(True) + + self.addButton = QtWidgets.QPushButton("&Add") + self.submitButton = QtWidgets.QPushButton("&Submit") + self.submitButton.hide() + self.cancelButton = QtWidgets.QPushButton("&Cancel") + self.cancelButton.hide() + + self.addButton.clicked.connect(self.addContact) + self.submitButton.clicked.connect(self.submitContact) + self.cancelButton.clicked.connect(self.cancel) + + buttonLayout1 = QtWidgets.QVBoxLayout() + buttonLayout1.addWidget(self.addButton, QtCore.Qt.AlignTop) + buttonLayout1.addWidget(self.submitButton) + buttonLayout1.addWidget(self.cancelButton) + buttonLayout1.addStretch() + + mainLayout = QtWidgets.QGridLayout() + mainLayout.addWidget(nameLabel, 0, 0) + mainLayout.addWidget(self.nameLine, 0, 1) + mainLayout.addWidget(addressLabel, 1, 0, QtCore.Qt.AlignTop) + mainLayout.addWidget(self.addressText, 1, 1) + mainLayout.addLayout(buttonLayout1, 1, 2) + + self.setLayout(mainLayout) + self.setWindowTitle("Simple Address Book") + + def addContact(self): + self.oldName = self.nameLine.text() + self.oldAddress = self.addressText.toPlainText() + + self.nameLine.clear() + self.addressText.clear() + + self.nameLine.setReadOnly(False) + self.nameLine.setFocus(QtCore.Qt.OtherFocusReason) + self.addressText.setReadOnly(False) + + self.addButton.setEnabled(False) + self.submitButton.show() + self.cancelButton.show() + + def submitContact(self): + name = self.nameLine.text() + address = self.addressText.toPlainText() + + if name == "" or address == "": + QtWidgets.QMessageBox.information(self, "Empty Field", + "Please enter a name and address.") + return + + if name not in self.contacts: + self.contacts[name] = address + QtWidgets.QMessageBox.information(self, "Add Successful", + "\"%s\" has been added to your address book." % name) + else: + QtWidgets.QMessageBox.information(self, "Add Unsuccessful", + "Sorry, \"%s\" is already in your address book." % name) + return + + if not self.contacts: + self.nameLine.clear() + self.addressText.clear() + + self.nameLine.setReadOnly(True) + self.addressText.setReadOnly(True) + self.addButton.setEnabled(True) + self.submitButton.hide() + self.cancelButton.hide() + + def cancel(self): + self.nameLine.setText(self.oldName) + self.nameLine.setReadOnly(True) + + self.addressText.setText(self.oldAddress) + self.addressText.setReadOnly(True) + + self.addButton.setEnabled(True) + self.submitButton.hide() + self.cancelButton.hide() + + +if __name__ == '__main__': + import sys + + app = QtWidgets.QApplication(sys.argv) + + addressBook = AddressBook() + addressBook.show() + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/part3.py b/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/part3.py new file mode 100644 index 0000000..d425c11 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/part3.py @@ -0,0 +1,245 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2 import QtCore, QtWidgets + + +class SortedDict(dict): + class Iterator(object): + def __init__(self, sorted_dict): + self._dict = sorted_dict + self._keys = sorted(self._dict.keys()) + self._nr_items = len(self._keys) + self._idx = 0 + + def __iter__(self): + return self + + def next(self): + if self._idx >= self._nr_items: + raise StopIteration + + key = self._keys[self._idx] + value = self._dict[key] + self._idx += 1 + + return key, value + + __next__ = next + + def __iter__(self): + return SortedDict.Iterator(self) + + iterkeys = __iter__ + + +class AddressBook(QtWidgets.QWidget): + def __init__(self, parent=None): + super(AddressBook, self).__init__(parent) + + self.contacts = SortedDict() + self.oldName = '' + self.oldAddress = '' + + nameLabel = QtWidgets.QLabel("Name:") + self.nameLine = QtWidgets.QLineEdit() + self.nameLine.setReadOnly(True) + + addressLabel = QtWidgets.QLabel("Address:") + self.addressText = QtWidgets.QTextEdit() + self.addressText.setReadOnly(True) + + self.addButton = QtWidgets.QPushButton("&Add") + self.submitButton = QtWidgets.QPushButton("&Submit") + self.submitButton.hide() + self.cancelButton = QtWidgets.QPushButton("&Cancel") + self.cancelButton.hide() + self.nextButton = QtWidgets.QPushButton("&Next") + self.nextButton.setEnabled(False) + self.previousButton = QtWidgets.QPushButton("&Previous") + self.previousButton.setEnabled(False) + + self.addButton.clicked.connect(self.addContact) + self.submitButton.clicked.connect(self.submitContact) + self.cancelButton.clicked.connect(self.cancel) + self.nextButton.clicked.connect(self.next) + self.previousButton.clicked.connect(self.previous) + + buttonLayout1 = QtWidgets.QVBoxLayout() + buttonLayout1.addWidget(self.addButton, QtCore.Qt.AlignTop) + buttonLayout1.addWidget(self.submitButton) + buttonLayout1.addWidget(self.cancelButton) + buttonLayout1.addStretch() + + buttonLayout2 = QtWidgets.QHBoxLayout() + buttonLayout2.addWidget(self.previousButton) + buttonLayout2.addWidget(self.nextButton) + + mainLayout = QtWidgets.QGridLayout() + mainLayout.addWidget(nameLabel, 0, 0) + mainLayout.addWidget(self.nameLine, 0, 1) + mainLayout.addWidget(addressLabel, 1, 0, QtCore.Qt.AlignTop) + mainLayout.addWidget(self.addressText, 1, 1) + mainLayout.addLayout(buttonLayout1, 1, 2) + mainLayout.addLayout(buttonLayout2, 3, 1) + + self.setLayout(mainLayout) + self.setWindowTitle("Simple Address Book") + + def addContact(self): + self.oldName = self.nameLine.text() + self.oldAddress = self.addressText.toPlainText() + + self.nameLine.clear() + self.addressText.clear() + + self.nameLine.setReadOnly(False) + self.nameLine.setFocus(QtCore.Qt.OtherFocusReason) + self.addressText.setReadOnly(False) + + self.addButton.setEnabled(False) + self.nextButton.setEnabled(False) + self.previousButton.setEnabled(False) + self.submitButton.show() + self.cancelButton.show() + + def submitContact(self): + name = self.nameLine.text() + address = self.addressText.toPlainText() + + if name == "" or address == "": + QtWidgets.QMessageBox.information(self, "Empty Field", + "Please enter a name and address.") + return + + if name not in self.contacts: + self.contacts[name] = address + QtWidgets.QMessageBox.information(self, "Add Successful", + "\"%s\" has been added to your address book." % name) + else: + QtWidgets.QMessageBox.information(self, "Add Unsuccessful", + "Sorry, \"%s\" is already in your address book." % name) + return + + if not self.contacts: + self.nameLine.clear() + self.addressText.clear() + + self.nameLine.setReadOnly(True) + self.addressText.setReadOnly(True) + self.addButton.setEnabled(True) + + number = len(self.contacts) + self.nextButton.setEnabled(number > 1) + self.previousButton.setEnabled(number > 1) + + self.submitButton.hide() + self.cancelButton.hide() + + def cancel(self): + self.nameLine.setText(self.oldName) + self.addressText.setText(self.oldAddress) + + if not self.contacts: + self.nameLine.clear() + self.addressText.clear() + + self.nameLine.setReadOnly(True) + self.addressText.setReadOnly(True) + self.addButton.setEnabled(True) + + number = len(self.contacts) + self.nextButton.setEnabled(number > 1) + self.previousButton.setEnabled(number > 1) + + self.submitButton.hide() + self.cancelButton.hide() + + def next(self): + name = self.nameLine.text() + it = iter(self.contacts) + + try: + while True: + this_name, _ = it.next() + + if this_name == name: + next_name, next_address = it.next() + break + except StopIteration: + next_name, next_address = iter(self.contacts).next() + + self.nameLine.setText(next_name) + self.addressText.setText(next_address) + + def previous(self): + name = self.nameLine.text() + + prev_name = prev_address = None + for this_name, this_address in self.contacts: + if this_name == name: + break + + prev_name = this_name + prev_address = this_address + else: + self.nameLine.clear() + self.addressText.clear() + return + + if prev_name is None: + for prev_name, prev_address in self.contacts: + pass + + self.nameLine.setText(prev_name) + self.addressText.setText(prev_address) + + +if __name__ == '__main__': + import sys + + app = QtWidgets.QApplication(sys.argv) + + addressBook = AddressBook() + addressBook.show() + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/part4.py b/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/part4.py new file mode 100644 index 0000000..e4b1d16 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/part4.py @@ -0,0 +1,299 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2 import QtCore, QtWidgets + + +class SortedDict(dict): + class Iterator(object): + def __init__(self, sorted_dict): + self._dict = sorted_dict + self._keys = sorted(self._dict.keys()) + self._nr_items = len(self._keys) + self._idx = 0 + + def __iter__(self): + return self + + def next(self): + if self._idx >= self._nr_items: + raise StopIteration + + key = self._keys[self._idx] + value = self._dict[key] + self._idx += 1 + + return key, value + + __next__ = next + + def __iter__(self): + return SortedDict.Iterator(self) + + iterkeys = __iter__ + + +class AddressBook(QtWidgets.QWidget): + NavigationMode, AddingMode, EditingMode = range(3) + + def __init__(self, parent=None): + super(AddressBook, self).__init__(parent) + + self.contacts = SortedDict() + self.oldName = '' + self.oldAddress = '' + self.currentMode = self.NavigationMode + + nameLabel = QtWidgets.QLabel("Name:") + self.nameLine = QtWidgets.QLineEdit() + self.nameLine.setReadOnly(True) + + addressLabel = QtWidgets.QLabel("Address:") + self.addressText = QtWidgets.QTextEdit() + self.addressText.setReadOnly(True) + + self.addButton = QtWidgets.QPushButton("&Add") + self.editButton = QtWidgets.QPushButton("&Edit") + self.editButton.setEnabled(False) + self.removeButton = QtWidgets.QPushButton("&Remove") + self.removeButton.setEnabled(False) + self.submitButton = QtWidgets.QPushButton("&Submit") + self.submitButton.hide() + self.cancelButton = QtWidgets.QPushButton("&Cancel") + self.cancelButton.hide() + + self.nextButton = QtWidgets.QPushButton("&Next") + self.nextButton.setEnabled(False) + self.previousButton = QtWidgets.QPushButton("&Previous") + self.previousButton.setEnabled(False) + + self.addButton.clicked.connect(self.addContact) + self.submitButton.clicked.connect(self.submitContact) + self.editButton.clicked.connect(self.editContact) + self.removeButton.clicked.connect(self.removeContact) + self.cancelButton.clicked.connect(self.cancel) + self.nextButton.clicked.connect(self.next) + self.previousButton.clicked.connect(self.previous) + + buttonLayout1 = QtWidgets.QVBoxLayout() + buttonLayout1.addWidget(self.addButton) + buttonLayout1.addWidget(self.editButton) + buttonLayout1.addWidget(self.removeButton) + buttonLayout1.addWidget(self.submitButton) + buttonLayout1.addWidget(self.cancelButton) + buttonLayout1.addStretch() + + buttonLayout2 = QtWidgets.QHBoxLayout() + buttonLayout2.addWidget(self.previousButton) + buttonLayout2.addWidget(self.nextButton) + + mainLayout = QtWidgets.QGridLayout() + mainLayout.addWidget(nameLabel, 0, 0) + mainLayout.addWidget(self.nameLine, 0, 1) + mainLayout.addWidget(addressLabel, 1, 0, QtCore.Qt.AlignTop) + mainLayout.addWidget(self.addressText, 1, 1) + mainLayout.addLayout(buttonLayout1, 1, 2) + mainLayout.addLayout(buttonLayout2, 3, 1) + + self.setLayout(mainLayout) + self.setWindowTitle("Simple Address Book") + + def addContact(self): + self.oldName = self.nameLine.text() + self.oldAddress = self.addressText.toPlainText() + + self.nameLine.clear() + self.addressText.clear() + + self.updateInterface(self.AddingMode) + + def editContact(self): + self.oldName = self.nameLine.text() + self.oldAddress = self.addressText.toPlainText() + + self.updateInterface(self.EditingMode) + + def submitContact(self): + name = self.nameLine.text() + address = self.addressText.toPlainText() + + if name == "" or address == "": + QtWidgets.QMessageBox.information(self, "Empty Field", + "Please enter a name and address.") + return + + if self.currentMode == self.AddingMode: + if name not in self.contacts: + self.contacts[name] = address + QtWidgets.QMessageBox.information(self, "Add Successful", + "\"%s\" has been added to your address book." % name) + else: + QtWidgets.QMessageBox.information(self, "Add Unsuccessful", + "Sorry, \"%s\" is already in your address book." % name) + return + + elif self.currentMode == self.EditingMode: + if self.oldName != name: + if name not in self.contacts: + QtWidgets.QMessageBox.information(self, "Edit Successful", + "\"%s\" has been edited in your address book." % self.oldName) + del self.contacts[self.oldName] + self.contacts[name] = address + else: + QtWidgets.QMessageBox.information(self, "Edit Unsuccessful", + "Sorry, \"%s\" is already in your address book." % name) + return + elif self.oldAddress != address: + QtWidgets.QMessageBox.information(self, "Edit Successful", + "\"%s\" has been edited in your address book." % name) + self.contacts[name] = address + + self.updateInterface(self.NavigationMode) + + def cancel(self): + self.nameLine.setText(self.oldName) + self.addressText.setText(self.oldAddress) + self.updateInterface(self.NavigationMode) + + def removeContact(self): + name = self.nameLine.text() + address = self.addressText.toPlainText() + + if name in self.contacts: + button = QtWidgets.QMessageBox.question(self, "Confirm Remove", + "Are you sure you want to remove \"%s\"?" % name, + QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) + + if button == QtWidgets.QMessageBox.Yes: + self.previous() + del self.contacts[name] + + QtWidgets.QMessageBox.information(self, "Remove Successful", + "\"%s\" has been removed from your address book." % name) + + self.updateInterface(self.NavigationMode) + + def next(self): + name = self.nameLine.text() + it = iter(self.contacts) + + try: + while True: + this_name, _ = it.next() + + if this_name == name: + next_name, next_address = it.next() + break + except StopIteration: + next_name, next_address = iter(self.contacts).next() + + self.nameLine.setText(next_name) + self.addressText.setText(next_address) + + def previous(self): + name = self.nameLine.text() + + prev_name = prev_address = None + for this_name, this_address in self.contacts: + if this_name == name: + break + + prev_name = this_name + prev_address = this_address + else: + self.nameLine.clear() + self.addressText.clear() + return + + if prev_name is None: + for prev_name, prev_address in self.contacts: + pass + + self.nameLine.setText(prev_name) + self.addressText.setText(prev_address) + + def updateInterface(self, mode): + self.currentMode = mode + + if self.currentMode in (self.AddingMode, self.EditingMode): + self.nameLine.setReadOnly(False) + self.nameLine.setFocus(QtCore.Qt.OtherFocusReason) + self.addressText.setReadOnly(False) + + self.addButton.setEnabled(False) + self.editButton.setEnabled(False) + self.removeButton.setEnabled(False) + + self.nextButton.setEnabled(False) + self.previousButton.setEnabled(False) + + self.submitButton.show() + self.cancelButton.show() + + elif self.currentMode == self.NavigationMode: + if not self.contacts: + self.nameLine.clear() + self.addressText.clear() + + self.nameLine.setReadOnly(True) + self.addressText.setReadOnly(True) + self.addButton.setEnabled(True) + + number = len(self.contacts) + self.editButton.setEnabled(number >= 1) + self.removeButton.setEnabled(number >= 1) + self.nextButton.setEnabled(number > 1) + self.previousButton.setEnabled(number >1 ) + + self.submitButton.hide() + self.cancelButton.hide() + + +if __name__ == '__main__': + import sys + + app = QtWidgets.QApplication(sys.argv) + + addressBook = AddressBook() + addressBook.show() + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/part5.py b/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/part5.py new file mode 100644 index 0000000..cb666ff --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/part5.py @@ -0,0 +1,359 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2 import QtCore, QtWidgets + + +class SortedDict(dict): + class Iterator(object): + def __init__(self, sorted_dict): + self._dict = sorted_dict + self._keys = sorted(self._dict.keys()) + self._nr_items = len(self._keys) + self._idx = 0 + + def __iter__(self): + return self + + def next(self): + if self._idx >= self._nr_items: + raise StopIteration + + key = self._keys[self._idx] + value = self._dict[key] + self._idx += 1 + + return key, value + + __next__ = next + + def __iter__(self): + return SortedDict.Iterator(self) + + iterkeys = __iter__ + + +class AddressBook(QtWidgets.QWidget): + NavigationMode, AddingMode, EditingMode = range(3) + + def __init__(self, parent=None): + super(AddressBook, self).__init__(parent) + + self.contacts = SortedDict() + self.oldName = '' + self.oldAddress = '' + self.currentMode = self.NavigationMode + + nameLabel = QtWidgets.QLabel("Name:") + self.nameLine = QtWidgets.QLineEdit() + self.nameLine.setReadOnly(True) + + addressLabel = QtWidgets.QLabel("Address:") + self.addressText = QtWidgets.QTextEdit() + self.addressText.setReadOnly(True) + + self.addButton = QtWidgets.QPushButton("&Add") + self.editButton = QtWidgets.QPushButton("&Edit") + self.editButton.setEnabled(False) + self.removeButton = QtWidgets.QPushButton("&Remove") + self.removeButton.setEnabled(False) + self.findButton = QtWidgets.QPushButton("&Find") + self.findButton.setEnabled(False) + self.submitButton = QtWidgets.QPushButton("&Submit") + self.submitButton.hide() + self.cancelButton = QtWidgets.QPushButton("&Cancel") + self.cancelButton.hide() + + self.nextButton = QtWidgets.QPushButton("&Next") + self.nextButton.setEnabled(False) + self.previousButton = QtWidgets.QPushButton("&Previous") + self.previousButton.setEnabled(False) + + self.dialog = FindDialog() + + self.addButton.clicked.connect(self.addContact) + self.submitButton.clicked.connect(self.submitContact) + self.editButton.clicked.connect(self.editContact) + self.removeButton.clicked.connect(self.removeContact) + self.findButton.clicked.connect(self.findContact) + self.cancelButton.clicked.connect(self.cancel) + self.nextButton.clicked.connect(self.next) + self.previousButton.clicked.connect(self.previous) + + buttonLayout1 = QtWidgets.QVBoxLayout() + buttonLayout1.addWidget(self.addButton) + buttonLayout1.addWidget(self.editButton) + buttonLayout1.addWidget(self.removeButton) + buttonLayout1.addWidget(self.findButton) + buttonLayout1.addWidget(self.submitButton) + buttonLayout1.addWidget(self.cancelButton) + buttonLayout1.addStretch() + + buttonLayout2 = QtWidgets.QHBoxLayout() + buttonLayout2.addWidget(self.previousButton) + buttonLayout2.addWidget(self.nextButton) + + mainLayout = QtWidgets.QGridLayout() + mainLayout.addWidget(nameLabel, 0, 0) + mainLayout.addWidget(self.nameLine, 0, 1) + mainLayout.addWidget(addressLabel, 1, 0, QtCore.Qt.AlignTop) + mainLayout.addWidget(self.addressText, 1, 1) + mainLayout.addLayout(buttonLayout1, 1, 2) + mainLayout.addLayout(buttonLayout2, 2, 1) + + self.setLayout(mainLayout) + self.setWindowTitle("Simple Address Book") + + def addContact(self): + self.oldName = self.nameLine.text() + self.oldAddress = self.addressText.toPlainText() + + self.nameLine.clear() + self.addressText.clear() + + self.updateInterface(self.AddingMode) + + def editContact(self): + self.oldName = self.nameLine.text() + self.oldAddress = self.addressText.toPlainText() + + self.updateInterface(self.EditingMode) + + def submitContact(self): + name = self.nameLine.text() + address = self.addressText.toPlainText() + + if name == "" or address == "": + QtWidgets.QMessageBox.information(self, "Empty Field", + "Please enter a name and address.") + return + + if self.currentMode == self.AddingMode: + if name not in self.contacts: + self.contacts[name] = address + QtWidgets.QMessageBox.information(self, "Add Successful", + "\"%s\" has been added to your address book." % name) + else: + QtWidgets.QMessageBox.information(self, "Add Unsuccessful", + "Sorry, \"%s\" is already in your address book." % name) + return + + elif self.currentMode == self.EditingMode: + if self.oldName != name: + if name not in self.contacts: + QtWidgets.QMessageBox.information(self, "Edit Successful", + "\"%s\" has been edited in your address book." % self.oldName) + del self.contacts[self.oldName] + self.contacts[name] = address + else: + QtWidgets.QMessageBox.information(self, "Edit Unsuccessful", + "Sorry, \"%s\" is already in your address book." % name) + return + elif self.oldAddress != address: + QtWidgets.QMessageBox.information(self, "Edit Successful", + "\"%s\" has been edited in your address book." % name) + self.contacts[name] = address + + self.updateInterface(self.NavigationMode) + + def cancel(self): + self.nameLine.setText(self.oldName) + self.addressText.setText(self.oldAddress) + self.updateInterface(self.NavigationMode) + + def removeContact(self): + name = self.nameLine.text() + address = self.addressText.toPlainText() + + if name in self.contacts: + button = QtWidgets.QMessageBox.question(self, "Confirm Remove", + "Are you sure you want to remove \"%s\"?" % name, + QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) + + if button == QtWidgets.QMessageBox.Yes: + self.previous() + del self.contacts[name] + + QtWidgets.QMessageBox.information(self, "Remove Successful", + "\"%s\" has been removed from your address book." % name) + + self.updateInterface(self.NavigationMode) + + def next(self): + name = self.nameLine.text() + it = iter(self.contacts) + + try: + while True: + this_name, _ = it.next() + + if this_name == name: + next_name, next_address = it.next() + break + except StopIteration: + next_name, next_address = iter(self.contacts).next() + + self.nameLine.setText(next_name) + self.addressText.setText(next_address) + + def previous(self): + name = self.nameLine.text() + + prev_name = prev_address = None + for this_name, this_address in self.contacts: + if this_name == name: + break + + prev_name = this_name + prev_address = this_address + else: + self.nameLine.clear() + self.addressText.clear() + return + + if prev_name is None: + for prev_name, prev_address in self.contacts: + pass + + self.nameLine.setText(prev_name) + self.addressText.setText(prev_address) + + def findContact(self): + self.dialog.show() + + if self.dialog.exec_() == QtWidgets.QDialog.Accepted: + contactName = self.dialog.getFindText() + + if contactName in self.contacts: + self.nameLine.setText(contactName) + self.addressText.setText(self.contacts[contactName]) + else: + QtWidgets.QMessageBox.information(self, "Contact Not Found", + "Sorry, \"%s\" is not in your address book." % contactName) + return + + self.updateInterface(self.NavigationMode) + + def updateInterface(self, mode): + self.currentMode = mode + + if self.currentMode in (self.AddingMode, self.EditingMode): + self.nameLine.setReadOnly(False) + self.nameLine.setFocus(QtCore.Qt.OtherFocusReason) + self.addressText.setReadOnly(False) + + self.addButton.setEnabled(False) + self.editButton.setEnabled(False) + self.removeButton.setEnabled(False) + + self.nextButton.setEnabled(False) + self.previousButton.setEnabled(False) + + self.submitButton.show() + self.cancelButton.show() + + elif self.currentMode == self.NavigationMode: + if not self.contacts: + self.nameLine.clear() + self.addressText.clear() + + self.nameLine.setReadOnly(True) + self.addressText.setReadOnly(True) + self.addButton.setEnabled(True) + + number = len(self.contacts) + self.editButton.setEnabled(number >= 1) + self.removeButton.setEnabled(number >= 1) + self.findButton.setEnabled(number > 2) + self.nextButton.setEnabled(number > 1) + self.previousButton.setEnabled(number >1 ) + + self.submitButton.hide() + self.cancelButton.hide() + + +class FindDialog(QtWidgets.QDialog): + def __init__(self, parent=None): + super(FindDialog, self).__init__(parent) + + findLabel = QtWidgets.QLabel("Enter the name of a contact:") + self.lineEdit = QtWidgets.QLineEdit() + + self.findButton = QtWidgets.QPushButton("&Find") + self.findText = '' + + layout = QtWidgets.QHBoxLayout() + layout.addWidget(findLabel) + layout.addWidget(self.lineEdit) + layout.addWidget(self.findButton) + + self.setLayout(layout) + self.setWindowTitle("Find a Contact") + + self.findButton.clicked.connect(self.findClicked) + self.findButton.clicked.connect(self.accept) + + def findClicked(self): + text = self.lineEdit.text() + + if not text: + QtWidgets.QMessageBox.information(self, "Empty Field", + "Please enter a name.") + return + else: + self.findText = text + self.lineEdit.clear() + self.hide() + + def getFindText(self): + return self.findText + + +if __name__ == '__main__': + import sys + + app = QtWidgets.QApplication(sys.argv) + + addressBook = AddressBook() + addressBook.show() + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/part6.py b/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/part6.py new file mode 100644 index 0000000..559cc35 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/part6.py @@ -0,0 +1,424 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +import pickle + +from PySide2 import QtCore, QtWidgets + + +class SortedDict(dict): + class Iterator(object): + def __init__(self, sorted_dict): + self._dict = sorted_dict + self._keys = sorted(self._dict.keys()) + self._nr_items = len(self._keys) + self._idx = 0 + + def __iter__(self): + return self + + def next(self): + if self._idx >= self._nr_items: + raise StopIteration + + key = self._keys[self._idx] + value = self._dict[key] + self._idx += 1 + + return key, value + + __next__ = next + + def __iter__(self): + return SortedDict.Iterator(self) + + iterkeys = __iter__ + + +class AddressBook(QtWidgets.QWidget): + NavigationMode, AddingMode, EditingMode = range(3) + + def __init__(self, parent=None): + super(AddressBook, self).__init__(parent) + + self.contacts = SortedDict() + self.oldName = '' + self.oldAddress = '' + self.currentMode = self.NavigationMode + + nameLabel = QtWidgets.QLabel("Name:") + self.nameLine = QtWidgets.QLineEdit() + self.nameLine.setReadOnly(True) + + addressLabel = QtWidgets.QLabel("Address:") + self.addressText = QtWidgets.QTextEdit() + self.addressText.setReadOnly(True) + + self.addButton = QtWidgets.QPushButton("&Add") + self.editButton = QtWidgets.QPushButton("&Edit") + self.editButton.setEnabled(False) + self.removeButton = QtWidgets.QPushButton("&Remove") + self.removeButton.setEnabled(False) + self.findButton = QtWidgets.QPushButton("&Find") + self.findButton.setEnabled(False) + self.submitButton = QtWidgets.QPushButton("&Submit") + self.submitButton.hide() + self.cancelButton = QtWidgets.QPushButton("&Cancel") + self.cancelButton.hide() + + self.nextButton = QtWidgets.QPushButton("&Next") + self.nextButton.setEnabled(False) + self.previousButton = QtWidgets.QPushButton("&Previous") + self.previousButton.setEnabled(False) + + self.loadButton = QtWidgets.QPushButton("&Load...") + self.loadButton.setToolTip("Load contacts from a file") + self.saveButton = QtWidgets.QPushButton("Sa&ve...") + self.saveButton.setToolTip("Save contacts to a file") + self.saveButton.setEnabled(False) + + self.dialog = FindDialog() + + self.addButton.clicked.connect(self.addContact) + self.submitButton.clicked.connect(self.submitContact) + self.editButton.clicked.connect(self.editContact) + self.removeButton.clicked.connect(self.removeContact) + self.findButton.clicked.connect(self.findContact) + self.cancelButton.clicked.connect(self.cancel) + self.nextButton.clicked.connect(self.next) + self.previousButton.clicked.connect(self.previous) + self.loadButton.clicked.connect(self.loadFromFile) + self.saveButton.clicked.connect(self.saveToFile) + + buttonLayout1 = QtWidgets.QVBoxLayout() + buttonLayout1.addWidget(self.addButton) + buttonLayout1.addWidget(self.editButton) + buttonLayout1.addWidget(self.removeButton) + buttonLayout1.addWidget(self.findButton) + buttonLayout1.addWidget(self.submitButton) + buttonLayout1.addWidget(self.cancelButton) + buttonLayout1.addWidget(self.loadButton) + buttonLayout1.addWidget(self.saveButton) + buttonLayout1.addStretch() + + buttonLayout2 = QtWidgets.QHBoxLayout() + buttonLayout2.addWidget(self.previousButton) + buttonLayout2.addWidget(self.nextButton) + + mainLayout = QtWidgets.QGridLayout() + mainLayout.addWidget(nameLabel, 0, 0) + mainLayout.addWidget(self.nameLine, 0, 1) + mainLayout.addWidget(addressLabel, 1, 0, QtCore.Qt.AlignTop) + mainLayout.addWidget(self.addressText, 1, 1) + mainLayout.addLayout(buttonLayout1, 1, 2) + mainLayout.addLayout(buttonLayout2, 2, 1) + + self.setLayout(mainLayout) + self.setWindowTitle("Simple Address Book") + + def addContact(self): + self.oldName = self.nameLine.text() + self.oldAddress = self.addressText.toPlainText() + + self.nameLine.clear() + self.addressText.clear() + + self.updateInterface(self.AddingMode) + + def editContact(self): + self.oldName = self.nameLine.text() + self.oldAddress = self.addressText.toPlainText() + + self.updateInterface(self.EditingMode) + + def submitContact(self): + name = self.nameLine.text() + address = self.addressText.toPlainText() + + if name == "" or address == "": + QtWidgets.QMessageBox.information(self, "Empty Field", + "Please enter a name and address.") + return + + if self.currentMode == self.AddingMode: + if name not in self.contacts: + self.contacts[name] = address + QtWidgets.QMessageBox.information(self, "Add Successful", + "\"%s\" has been added to your address book." % name) + else: + QtWidgets.QMessageBox.information(self, "Add Unsuccessful", + "Sorry, \"%s\" is already in your address book." % name) + return + + elif self.currentMode == self.EditingMode: + if self.oldName != name: + if name not in self.contacts: + QtWidgets.QMessageBox.information(self, "Edit Successful", + "\"%s\" has been edited in your address book." % self.oldName) + del self.contacts[self.oldName] + self.contacts[name] = address + else: + QtWidgets.QMessageBox.information(self, "Edit Unsuccessful", + "Sorry, \"%s\" is already in your address book." % name) + return + elif self.oldAddress != address: + QtWidgets.QMessageBox.information(self, "Edit Successful", + "\"%s\" has been edited in your address book." % name) + self.contacts[name] = address + + self.updateInterface(self.NavigationMode) + + def cancel(self): + self.nameLine.setText(self.oldName) + self.addressText.setText(self.oldAddress) + self.updateInterface(self.NavigationMode) + + def removeContact(self): + name = self.nameLine.text() + address = self.addressText.toPlainText() + + if name in self.contacts: + button = QtWidgets.QMessageBox.question(self, "Confirm Remove", + "Are you sure you want to remove \"%s\"?" % name, + QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) + + if button == QtWidgets.QMessageBox.Yes: + self.previous() + del self.contacts[name] + + QtWidgets.QMessageBox.information(self, "Remove Successful", + "\"%s\" has been removed from your address book." % name) + + self.updateInterface(self.NavigationMode) + + def next(self): + name = self.nameLine.text() + it = iter(self.contacts) + + try: + while True: + this_name, _ = it.next() + + if this_name == name: + next_name, next_address = it.next() + break + except StopIteration: + next_name, next_address = iter(self.contacts).next() + + self.nameLine.setText(next_name) + self.addressText.setText(next_address) + + def previous(self): + name = self.nameLine.text() + + prev_name = prev_address = None + for this_name, this_address in self.contacts: + if this_name == name: + break + + prev_name = this_name + prev_address = this_address + else: + self.nameLine.clear() + self.addressText.clear() + return + + if prev_name is None: + for prev_name, prev_address in self.contacts: + pass + + self.nameLine.setText(prev_name) + self.addressText.setText(prev_address) + + def findContact(self): + self.dialog.show() + + if self.dialog.exec_() == QtWidgets.QDialog.Accepted: + contactName = self.dialog.getFindText() + + if contactName in self.contacts: + self.nameLine.setText(contactName) + self.addressText.setText(self.contacts[contactName]) + else: + QtWidgets.QMessageBox.information(self, "Contact Not Found", + "Sorry, \"%s\" is not in your address book." % contactName) + return + + self.updateInterface(self.NavigationMode) + + def updateInterface(self, mode): + self.currentMode = mode + + if self.currentMode in (self.AddingMode, self.EditingMode): + self.nameLine.setReadOnly(False) + self.nameLine.setFocus(QtCore.Qt.OtherFocusReason) + self.addressText.setReadOnly(False) + + self.addButton.setEnabled(False) + self.editButton.setEnabled(False) + self.removeButton.setEnabled(False) + + self.nextButton.setEnabled(False) + self.previousButton.setEnabled(False) + + self.submitButton.show() + self.cancelButton.show() + + self.loadButton.setEnabled(False) + self.saveButton.setEnabled(False) + + elif self.currentMode == self.NavigationMode: + if not self.contacts: + self.nameLine.clear() + self.addressText.clear() + + self.nameLine.setReadOnly(True) + self.addressText.setReadOnly(True) + self.addButton.setEnabled(True) + + number = len(self.contacts) + self.editButton.setEnabled(number >= 1) + self.removeButton.setEnabled(number >= 1) + self.findButton.setEnabled(number > 2) + self.nextButton.setEnabled(number > 1) + self.previousButton.setEnabled(number >1 ) + + self.submitButton.hide() + self.cancelButton.hide() + + self.loadButton.setEnabled(True) + self.saveButton.setEnabled(number >= 1) + + def saveToFile(self): + fileName,_ = QtWidgets.QFileDialog.getSaveFileName(self, + "Save Address Book", '', + "Address Book (*.abk);;All Files (*)") + + if not fileName: + return + + try: + out_file = open(str(fileName), 'wb') + except IOError: + QtWidgets.QMessageBox.information(self, "Unable to open file", + "There was an error opening \"%s\"" % fileName) + return + + pickle.dump(self.contacts, out_file) + out_file.close() + + def loadFromFile(self): + fileName,_ = QtWidgets.QFileDialog.getOpenFileName(self, + "Open Address Book", '', + "Address Book (*.abk);;All Files (*)") + + if not fileName: + return + + try: + in_file = open(str(fileName), 'rb') + except IOError: + QtWidgets.QMessageBox.information(self, "Unable to open file", + "There was an error opening \"%s\"" % fileName) + return + + self.contacts = pickle.load(in_file) + in_file.close() + + if len(self.contacts) == 0: + QtWidgets.QMessageBox.information(self, "No contacts in file", + "The file you are attempting to open contains no " + "contacts.") + else: + for name, address in self.contacts: + self.nameLine.setText(name) + self.addressText.setText(address) + + self.updateInterface(self.NavigationMode) + + +class FindDialog(QtWidgets.QDialog): + def __init__(self, parent=None): + super(FindDialog, self).__init__(parent) + + findLabel = QtWidgets.QLabel("Enter the name of a contact:") + self.lineEdit = QtWidgets.QLineEdit() + + self.findButton = QtWidgets.QPushButton("&Find") + self.findText = '' + + layout = QtWidgets.QHBoxLayout() + layout.addWidget(findLabel) + layout.addWidget(self.lineEdit) + layout.addWidget(self.findButton) + + self.setLayout(layout) + self.setWindowTitle("Find a Contact") + + self.findButton.clicked.connect(self.findClicked) + self.findButton.clicked.connect(self.accept) + + def findClicked(self): + text = self.lineEdit.text() + + if not text: + QtWidgets.QMessageBox.information(self, "Empty Field", + "Please enter a name.") + return + + self.findText = text + self.lineEdit.clear() + self.hide() + + def getFindText(self): + return self.findText + + +if __name__ == '__main__': + import sys + + app = QtWidgets.QApplication(sys.argv) + + addressBook = AddressBook() + addressBook.show() + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/part7.py b/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/part7.py new file mode 100644 index 0000000..f32a2a6 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/tutorials/addressbook/part7.py @@ -0,0 +1,476 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +import pickle + +from PySide2 import QtCore, QtWidgets + + +class SortedDict(dict): + class Iterator(object): + def __init__(self, sorted_dict): + self._dict = sorted_dict + self._keys = sorted(self._dict.keys()) + self._nr_items = len(self._keys) + self._idx = 0 + + def __iter__(self): + return self + + def next(self): + if self._idx >= self._nr_items: + raise StopIteration + + key = self._keys[self._idx] + value = self._dict[key] + self._idx += 1 + + return key, value + + __next__ = next + + def __iter__(self): + return SortedDict.Iterator(self) + + iterkeys = __iter__ + + +class AddressBook(QtWidgets.QWidget): + NavigationMode, AddingMode, EditingMode = range(3) + + def __init__(self, parent=None): + super(AddressBook, self).__init__(parent) + + self.contacts = SortedDict() + self.oldName = '' + self.oldAddress = '' + self.currentMode = self.NavigationMode + + nameLabel = QtWidgets.QLabel("Name:") + self.nameLine = QtWidgets.QLineEdit() + self.nameLine.setReadOnly(True) + + addressLabel = QtWidgets.QLabel("Address:") + self.addressText = QtWidgets.QTextEdit() + self.addressText.setReadOnly(True) + + self.addButton = QtWidgets.QPushButton("&Add") + self.editButton = QtWidgets.QPushButton("&Edit") + self.editButton.setEnabled(False) + self.removeButton = QtWidgets.QPushButton("&Remove") + self.removeButton.setEnabled(False) + self.findButton = QtWidgets.QPushButton("&Find") + self.findButton.setEnabled(False) + self.submitButton = QtWidgets.QPushButton("&Submit") + self.submitButton.hide() + self.cancelButton = QtWidgets.QPushButton("&Cancel") + self.cancelButton.hide() + + self.nextButton = QtWidgets.QPushButton("&Next") + self.nextButton.setEnabled(False) + self.previousButton = QtWidgets.QPushButton("&Previous") + self.previousButton.setEnabled(False) + + self.loadButton = QtWidgets.QPushButton("&Load...") + self.loadButton.setToolTip("Load contacts from a file") + self.saveButton = QtWidgets.QPushButton("Sa&ve...") + self.saveButton.setToolTip("Save contacts to a file") + self.saveButton.setEnabled(False) + + self.exportButton = QtWidgets.QPushButton("Ex&port") + self.exportButton.setToolTip("Export as vCard") + self.exportButton.setEnabled(False) + + self.dialog = FindDialog() + + self.addButton.clicked.connect(self.addContact) + self.submitButton.clicked.connect(self.submitContact) + self.editButton.clicked.connect(self.editContact) + self.removeButton.clicked.connect(self.removeContact) + self.findButton.clicked.connect(self.findContact) + self.cancelButton.clicked.connect(self.cancel) + self.nextButton.clicked.connect(self.next) + self.previousButton.clicked.connect(self.previous) + self.loadButton.clicked.connect(self.loadFromFile) + self.saveButton.clicked.connect(self.saveToFile) + self.exportButton.clicked.connect(self.exportAsVCard) + + buttonLayout1 = QtWidgets.QVBoxLayout() + buttonLayout1.addWidget(self.addButton) + buttonLayout1.addWidget(self.editButton) + buttonLayout1.addWidget(self.removeButton) + buttonLayout1.addWidget(self.findButton) + buttonLayout1.addWidget(self.submitButton) + buttonLayout1.addWidget(self.cancelButton) + buttonLayout1.addWidget(self.loadButton) + buttonLayout1.addWidget(self.saveButton) + buttonLayout1.addWidget(self.exportButton) + buttonLayout1.addStretch() + + buttonLayout2 = QtWidgets.QHBoxLayout() + buttonLayout2.addWidget(self.previousButton) + buttonLayout2.addWidget(self.nextButton) + + mainLayout = QtWidgets.QGridLayout() + mainLayout.addWidget(nameLabel, 0, 0) + mainLayout.addWidget(self.nameLine, 0, 1) + mainLayout.addWidget(addressLabel, 1, 0, QtCore.Qt.AlignTop) + mainLayout.addWidget(self.addressText, 1, 1) + mainLayout.addLayout(buttonLayout1, 1, 2) + mainLayout.addLayout(buttonLayout2, 2, 1) + + self.setLayout(mainLayout) + self.setWindowTitle("Simple Address Book") + + def addContact(self): + self.oldName = self.nameLine.text() + self.oldAddress = self.addressText.toPlainText() + + self.nameLine.clear() + self.addressText.clear() + + self.updateInterface(self.AddingMode) + + def editContact(self): + self.oldName = self.nameLine.text() + self.oldAddress = self.addressText.toPlainText() + + self.updateInterface(self.EditingMode) + + def submitContact(self): + name = self.nameLine.text() + address = self.addressText.toPlainText() + + if name == "" or address == "": + QtWidgets.QMessageBox.information(self, "Empty Field", + "Please enter a name and address.") + return + + if self.currentMode == self.AddingMode: + if name not in self.contacts: + self.contacts[name] = address + QtWidgets.QMessageBox.information(self, "Add Successful", + "\"%s\" has been added to your address book." % name) + else: + QtWidgets.QMessageBox.information(self, "Add Unsuccessful", + "Sorry, \"%s\" is already in your address book." % name) + return + + elif self.currentMode == self.EditingMode: + if self.oldName != name: + if name not in self.contacts: + QtWidgets.QMessageBox.information(self, "Edit Successful", + "\"%s\" has been edited in your address book." % self.oldName) + del self.contacts[self.oldName] + self.contacts[name] = address + else: + QtWidgets.QMessageBox.information(self, "Edit Unsuccessful", + "Sorry, \"%s\" is already in your address book." % name) + return + elif self.oldAddress != address: + QtWidgets.QMessageBox.information(self, "Edit Successful", + "\"%s\" has been edited in your address book." % name) + self.contacts[name] = address + + self.updateInterface(self.NavigationMode) + + def cancel(self): + self.nameLine.setText(self.oldName) + self.addressText.setText(self.oldAddress) + self.updateInterface(self.NavigationMode) + + def removeContact(self): + name = self.nameLine.text() + address = self.addressText.toPlainText() + + if name in self.contacts: + button = QtWidgets.QMessageBox.question(self, "Confirm Remove", + "Are you sure you want to remove \"%s\"?" % name, + QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) + + if button == QtWidgets.QMessageBox.Yes: + self.previous() + del self.contacts[name] + + QtWidgets.QMessageBox.information(self, "Remove Successful", + "\"%s\" has been removed from your address book." % name) + + self.updateInterface(self.NavigationMode) + + def next(self): + name = self.nameLine.text() + it = iter(self.contacts) + + try: + while True: + this_name, _ = it.next() + + if this_name == name: + next_name, next_address = it.next() + break + except StopIteration: + next_name, next_address = iter(self.contacts).next() + + self.nameLine.setText(next_name) + self.addressText.setText(next_address) + + def previous(self): + name = self.nameLine.text() + + prev_name = prev_address = None + for this_name, this_address in self.contacts: + if this_name == name: + break + + prev_name = this_name + prev_address = this_address + else: + self.nameLine.clear() + self.addressText.clear() + return + + if prev_name is None: + for prev_name, prev_address in self.contacts: + pass + + self.nameLine.setText(prev_name) + self.addressText.setText(prev_address) + + def findContact(self): + self.dialog.show() + + if self.dialog.exec_() == QtWidgets.QDialog.Accepted: + contactName = self.dialog.getFindText() + + if contactName in self.contacts: + self.nameLine.setText(contactName) + self.addressText.setText(self.contacts[contactName]) + else: + QtWidgets.QMessageBox.information(self, "Contact Not Found", + "Sorry, \"%s\" is not in your address book." % contactName) + return + + self.updateInterface(self.NavigationMode) + + def updateInterface(self, mode): + self.currentMode = mode + + if self.currentMode in (self.AddingMode, self.EditingMode): + self.nameLine.setReadOnly(False) + self.nameLine.setFocus(QtCore.Qt.OtherFocusReason) + self.addressText.setReadOnly(False) + + self.addButton.setEnabled(False) + self.editButton.setEnabled(False) + self.removeButton.setEnabled(False) + + self.nextButton.setEnabled(False) + self.previousButton.setEnabled(False) + + self.submitButton.show() + self.cancelButton.show() + + self.loadButton.setEnabled(False) + self.saveButton.setEnabled(False) + self.exportButton.setEnabled(False) + + elif self.currentMode == self.NavigationMode: + if not self.contacts: + self.nameLine.clear() + self.addressText.clear() + + self.nameLine.setReadOnly(True) + self.addressText.setReadOnly(True) + self.addButton.setEnabled(True) + + number = len(self.contacts) + self.editButton.setEnabled(number >= 1) + self.removeButton.setEnabled(number >= 1) + self.findButton.setEnabled(number > 2) + self.nextButton.setEnabled(number > 1) + self.previousButton.setEnabled(number >1 ) + + self.submitButton.hide() + self.cancelButton.hide() + + self.exportButton.setEnabled(number >= 1) + + self.loadButton.setEnabled(True) + self.saveButton.setEnabled(number >= 1) + + def saveToFile(self): + fileName,_ = QtWidgets.QFileDialog.getSaveFileName(self, + "Save Address Book", '', + "Address Book (*.abk);;All Files (*)") + + if not fileName: + return + + try: + out_file = open(str(fileName), 'wb') + except IOError: + QtWidgets.QMessageBox.information(self, "Unable to open file", + "There was an error opening \"%s\"" % fileName) + return + + pickle.dump(self.contacts, out_file) + out_file.close() + + def loadFromFile(self): + fileName,_ = QtWidgets.QFileDialog.getOpenFileName(self, + "Open Address Book", '', + "Address Book (*.abk);;All Files (*)") + + if not fileName: + return + + try: + in_file = open(str(fileName), 'rb') + except IOError: + QtWidgets.QMessageBox.information(self, "Unable to open file", + "There was an error opening \"%s\"" % fileName) + return + + self.contacts = pickle.load(in_file) + in_file.close() + + if len(self.contacts) == 0: + QtWidgets.QMessageBox.information(self, "No contacts in file", + "The file you are attempting to open contains no " + "contacts.") + else: + for name, address in self.contacts: + self.nameLine.setText(name) + self.addressText.setText(address) + + self.updateInterface(self.NavigationMode) + + def exportAsVCard(self): + name = str(self.nameLine.text()) + address = self.addressText.toPlainText() + + nameList = name.split() + + if len(nameList) > 1: + firstName = nameList[0] + lastName = nameList[-1] + else: + firstName = name + lastName = '' + + fileName = QtWidgets.QFileDialog.getSaveFileName(self, "Export Contact", + '', "vCard Files (*.vcf);;All Files (*)")[0] + + if not fileName: + return + + out_file = QtCore.QFile(fileName) + + if not out_file.open(QtCore.QIODevice.WriteOnly): + QtWidgets.QMessageBox.information(self, "Unable to open file", + out_file.errorString()) + return + + out_s = QtCore.QTextStream(out_file) + + out_s << 'BEGIN:VCARD' << '\n' + out_s << 'VERSION:2.1' << '\n' + out_s << 'N:' << lastName << ';' << firstName << '\n' + out_s << 'FN:' << ' '.join(nameList) << '\n' + + address.replace(';', '\\;') + address.replace('\n', ';') + address.replace(',', ' ') + + out_s << 'ADR;HOME:;' << address << '\n' + out_s << 'END:VCARD' << '\n' + + QtWidgets.QMessageBox.information(self, "Export Successful", + "\"%s\" has been exported as a vCard." % name) + + +class FindDialog(QtWidgets.QDialog): + def __init__(self, parent=None): + super(FindDialog, self).__init__(parent) + + findLabel = QtWidgets.QLabel("Enter the name of a contact:") + self.lineEdit = QtWidgets.QLineEdit() + + self.findButton = QtWidgets.QPushButton("&Find") + self.findText = '' + + layout = QtWidgets.QHBoxLayout() + layout.addWidget(findLabel) + layout.addWidget(self.lineEdit) + layout.addWidget(self.findButton) + + self.setLayout(layout) + self.setWindowTitle("Find a Contact") + + self.findButton.clicked.connect(self.findClicked) + self.findButton.clicked.connect(self.accept) + + def findClicked(self): + text = self.lineEdit.text() + + if not text: + QtWidgets.QMessageBox.information(self, "Empty Field", + "Please enter a name.") + return + + self.findText = text + self.lineEdit.clear() + self.hide() + + def getFindText(self): + return self.findText + + +if __name__ == '__main__': + import sys + + app = QtWidgets.QApplication(sys.argv) + + addressBook = AddressBook() + addressBook.show() + + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/widgets/__pycache__/hellogl_openglwidget_legacy.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/widgets/__pycache__/hellogl_openglwidget_legacy.cpython-310.pyc new file mode 100644 index 0000000..1b4fc01 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/widgets/__pycache__/hellogl_openglwidget_legacy.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/widgets/__pycache__/tetrix.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/widgets/widgets/__pycache__/tetrix.cpython-310.pyc new file mode 100644 index 0000000..8064060 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/widgets/widgets/__pycache__/tetrix.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/widgets/hellogl_openglwidget_legacy.py b/venv/Lib/site-packages/PySide2/examples/widgets/widgets/hellogl_openglwidget_legacy.py new file mode 100644 index 0000000..8745b4e --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/widgets/hellogl_openglwidget_legacy.py @@ -0,0 +1,288 @@ + +############################################################################ +## +## Copyright (C) 2017 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################ + +"""PySide2 port of the opengl/legacy/hellogl example from Qt v5.x modified to use a QOpenGLWidget to demonstrate porting from QGLWidget to QOpenGLWidget""" + +import sys +import math +from PySide2 import QtCore, QtGui, QtWidgets + +try: + from OpenGL import GL +except ImportError: + app = QtWidgets.QApplication(sys.argv) + messageBox = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Critical, "OpenGL hellogl", + "PyOpenGL must be installed to run this example.", + QtWidgets.QMessageBox.Close) + messageBox.setDetailedText("Run:\npip install PyOpenGL PyOpenGL_accelerate") + messageBox.exec_() + sys.exit(1) + + +class Window(QtWidgets.QWidget): + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) + + self.glWidget = GLWidget() + + self.xSlider = self.createSlider(QtCore.SIGNAL("xRotationChanged(int)"), + self.glWidget.setXRotation) + self.ySlider = self.createSlider(QtCore.SIGNAL("yRotationChanged(int)"), + self.glWidget.setYRotation) + self.zSlider = self.createSlider(QtCore.SIGNAL("zRotationChanged(int)"), + self.glWidget.setZRotation) + + mainLayout = QtWidgets.QHBoxLayout() + mainLayout.addWidget(self.glWidget) + mainLayout.addWidget(self.xSlider) + mainLayout.addWidget(self.ySlider) + mainLayout.addWidget(self.zSlider) + self.setLayout(mainLayout) + + self.xSlider.setValue(170 * 16) + self.ySlider.setValue(160 * 16) + self.zSlider.setValue(90 * 16) + + self.setWindowTitle(self.tr("QOpenGLWidget")) + + def createSlider(self, changedSignal, setterSlot): + slider = QtWidgets.QSlider(QtCore.Qt.Vertical) + + slider.setRange(0, 360 * 16) + slider.setSingleStep(16) + slider.setPageStep(15 * 16) + slider.setTickInterval(15 * 16) + slider.setTickPosition(QtWidgets.QSlider.TicksRight) + + self.glWidget.connect(slider, QtCore.SIGNAL("valueChanged(int)"), setterSlot) + self.connect(self.glWidget, changedSignal, slider, QtCore.SLOT("setValue(int)")) + + return slider + + +class GLWidget(QtWidgets.QOpenGLWidget): + xRotationChanged = QtCore.Signal(int) + yRotationChanged = QtCore.Signal(int) + zRotationChanged = QtCore.Signal(int) + + def __init__(self, parent=None): + QtWidgets.QOpenGLWidget.__init__(self, parent) + + self.object = 0 + self.xRot = 0 + self.yRot = 0 + self.zRot = 0 + + self.lastPos = QtCore.QPoint() + + self.trolltechGreen = QtGui.QColor.fromCmykF(0.40, 0.0, 1.0, 0.0) + self.trolltechPurple = QtGui.QColor.fromCmykF(0.39, 0.39, 0.0, 0.0) + + def xRotation(self): + return self.xRot + + def yRotation(self): + return self.yRot + + def zRotation(self): + return self.zRot + + def minimumSizeHint(self): + return QtCore.QSize(50, 50) + + def sizeHint(self): + return QtCore.QSize(400, 400) + + def setXRotation(self, angle): + angle = self.normalizeAngle(angle) + if angle != self.xRot: + self.xRot = angle + self.emit(QtCore.SIGNAL("xRotationChanged(int)"), angle) + self.update() + + def setYRotation(self, angle): + angle = self.normalizeAngle(angle) + if angle != self.yRot: + self.yRot = angle + self.emit(QtCore.SIGNAL("yRotationChanged(int)"), angle) + self.update() + + def setZRotation(self, angle): + angle = self.normalizeAngle(angle) + if angle != self.zRot: + self.zRot = angle + self.emit(QtCore.SIGNAL("zRotationChanged(int)"), angle) + self.update() + + def initializeGL(self): + darkTrolltechPurple = self.trolltechPurple.darker() + GL.glClearColor(darkTrolltechPurple.redF(), darkTrolltechPurple.greenF(), darkTrolltechPurple.blueF(), darkTrolltechPurple.alphaF()) + self.object = self.makeObject() + GL.glShadeModel(GL.GL_FLAT) + GL.glEnable(GL.GL_DEPTH_TEST) + GL.glEnable(GL.GL_CULL_FACE) + + def paintGL(self): + GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT) + GL.glLoadIdentity() + GL.glTranslated(0.0, 0.0, -10.0) + GL.glRotated(self.xRot / 16.0, 1.0, 0.0, 0.0) + GL.glRotated(self.yRot / 16.0, 0.0, 1.0, 0.0) + GL.glRotated(self.zRot / 16.0, 0.0, 0.0, 1.0) + GL.glCallList(self.object) + + def resizeGL(self, width, height): + side = min(width, height) + GL.glViewport(int((width - side) / 2),int((height - side) / 2), side, side) + + GL.glMatrixMode(GL.GL_PROJECTION) + GL.glLoadIdentity() + GL.glOrtho(-0.5, +0.5, -0.5, +0.5, 4.0, 15.0) + GL.glMatrixMode(GL.GL_MODELVIEW) + + def mousePressEvent(self, event): + self.lastPos = QtCore.QPoint(event.pos()) + + def mouseMoveEvent(self, event): + dx = event.x() - self.lastPos.x() + dy = event.y() - self.lastPos.y() + + if event.buttons() & QtCore.Qt.LeftButton: + self.setXRotation(self.xRot + 8 * dy) + self.setYRotation(self.yRot + 8 * dx) + elif event.buttons() & QtCore.Qt.RightButton: + self.setXRotation(self.xRot + 8 * dy) + self.setZRotation(self.zRot + 8 * dx) + + self.lastPos = QtCore.QPoint(event.pos()) + + def makeObject(self): + genList = GL.glGenLists(1) + GL.glNewList(genList, GL.GL_COMPILE) + + GL.glBegin(GL.GL_QUADS) + + x1 = +0.06 + y1 = -0.14 + x2 = +0.14 + y2 = -0.06 + x3 = +0.08 + y3 = +0.00 + x4 = +0.30 + y4 = +0.22 + + self.quad(x1, y1, x2, y2, y2, x2, y1, x1) + self.quad(x3, y3, x4, y4, y4, x4, y3, x3) + + self.extrude(x1, y1, x2, y2) + self.extrude(x2, y2, y2, x2) + self.extrude(y2, x2, y1, x1) + self.extrude(y1, x1, x1, y1) + self.extrude(x3, y3, x4, y4) + self.extrude(x4, y4, y4, x4) + self.extrude(y4, x4, y3, x3) + + Pi = 3.14159265358979323846 + NumSectors = 200 + + for i in range(NumSectors): + angle1 = (i * 2 * Pi) / NumSectors + x5 = 0.30 * math.sin(angle1) + y5 = 0.30 * math.cos(angle1) + x6 = 0.20 * math.sin(angle1) + y6 = 0.20 * math.cos(angle1) + + angle2 = ((i + 1) * 2 * Pi) / NumSectors + x7 = 0.20 * math.sin(angle2) + y7 = 0.20 * math.cos(angle2) + x8 = 0.30 * math.sin(angle2) + y8 = 0.30 * math.cos(angle2) + + self.quad(x5, y5, x6, y6, x7, y7, x8, y8) + + self.extrude(x6, y6, x7, y7) + self.extrude(x8, y8, x5, y5) + + GL.glEnd() + GL.glEndList() + + return genList + + def quad(self, x1, y1, x2, y2, x3, y3, x4, y4): + GL.glColor(self.trolltechGreen.redF(), self.trolltechGreen.greenF(), self.trolltechGreen.blueF(), self.trolltechGreen.alphaF()) + + GL.glVertex3d(x1, y1, +0.05) + GL.glVertex3d(x2, y2, +0.05) + GL.glVertex3d(x3, y3, +0.05) + GL.glVertex3d(x4, y4, +0.05) + + GL.glVertex3d(x4, y4, -0.05) + GL.glVertex3d(x3, y3, -0.05) + GL.glVertex3d(x2, y2, -0.05) + GL.glVertex3d(x1, y1, -0.05) + + def extrude(self, x1, y1, x2, y2): + darkTrolltechGreen = self.trolltechGreen.darker(250 + int(100 * x1)) + GL.glColor(darkTrolltechGreen.redF(), darkTrolltechGreen.greenF(), darkTrolltechGreen.blueF(), darkTrolltechGreen.alphaF()) + + GL.glVertex3d(x1, y1, -0.05) + GL.glVertex3d(x2, y2, -0.05) + GL.glVertex3d(x2, y2, +0.05) + GL.glVertex3d(x1, y1, +0.05) + + def normalizeAngle(self, angle): + while angle < 0: + angle += 360 * 16 + while angle > 360 * 16: + angle -= 360 * 16 + return angle + + def freeResources(self): + self.makeCurrent() + GL.glDeleteLists(self.object, 1) + +if __name__ == '__main__': + app = QtWidgets.QApplication(sys.argv) + window = Window() + window.show() + res = app.exec_() + window.glWidget.freeResources() + sys.exit(res) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/widgets/tetrix.py b/venv/Lib/site-packages/PySide2/examples/widgets/widgets/tetrix.py new file mode 100644 index 0000000..134eec4 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/widgets/tetrix.py @@ -0,0 +1,498 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the widgets/widgets/tetrix example from Qt v5.x""" + +import random + +from PySide2 import QtCore, QtGui, QtWidgets + + +NoShape, ZShape, SShape, LineShape, TShape, SquareShape, LShape, MirroredLShape = range(8) + + +class TetrixWindow(QtWidgets.QWidget): + def __init__(self): + super(TetrixWindow, self).__init__() + + self.board = TetrixBoard() + + nextPieceLabel = QtWidgets.QLabel() + nextPieceLabel.setFrameStyle(QtWidgets.QFrame.Box | QtWidgets.QFrame.Raised) + nextPieceLabel.setAlignment(QtCore.Qt.AlignCenter) + self.board.setNextPieceLabel(nextPieceLabel) + + scoreLcd = QtWidgets.QLCDNumber(5) + scoreLcd.setSegmentStyle(QtWidgets.QLCDNumber.Filled) + levelLcd = QtWidgets.QLCDNumber(2) + levelLcd.setSegmentStyle(QtWidgets.QLCDNumber.Filled) + linesLcd = QtWidgets.QLCDNumber(5) + linesLcd.setSegmentStyle(QtWidgets.QLCDNumber.Filled) + + startButton = QtWidgets.QPushButton("&Start") + startButton.setFocusPolicy(QtCore.Qt.NoFocus) + quitButton = QtWidgets.QPushButton("&Quit") + quitButton.setFocusPolicy(QtCore.Qt.NoFocus) + pauseButton = QtWidgets.QPushButton("&Pause") + pauseButton.setFocusPolicy(QtCore.Qt.NoFocus) + + startButton.clicked.connect(self.board.start) + pauseButton.clicked.connect(self.board.pause) + quitButton.clicked.connect(qApp.quit) + self.board.scoreChanged.connect(scoreLcd.display) + self.board.levelChanged.connect(levelLcd.display) + self.board.linesRemovedChanged.connect(linesLcd.display) + + layout = QtWidgets.QGridLayout() + layout.addWidget(self.createLabel("NEXT"), 0, 0) + layout.addWidget(nextPieceLabel, 1, 0) + layout.addWidget(self.createLabel("LEVEL"), 2, 0) + layout.addWidget(levelLcd, 3, 0) + layout.addWidget(startButton, 4, 0) + layout.addWidget(self.board, 0, 1, 6, 1) + layout.addWidget(self.createLabel("SCORE"), 0, 2) + layout.addWidget(scoreLcd, 1, 2) + layout.addWidget(self.createLabel("LINES REMOVED"), 2, 2) + layout.addWidget(linesLcd, 3, 2) + layout.addWidget(quitButton, 4, 2) + layout.addWidget(pauseButton, 5, 2) + self.setLayout(layout) + + self.setWindowTitle("Tetrix") + self.resize(550, 370) + + def createLabel(self, text): + lbl = QtWidgets.QLabel(text) + lbl.setAlignment(QtCore.Qt.AlignHCenter | QtCore.Qt.AlignBottom) + return lbl + + +class TetrixBoard(QtWidgets.QFrame): + BoardWidth = 10 + BoardHeight = 22 + + scoreChanged = QtCore.Signal(int) + + levelChanged = QtCore.Signal(int) + + linesRemovedChanged = QtCore.Signal(int) + + def __init__(self, parent=None): + super(TetrixBoard, self).__init__(parent) + + self.timer = QtCore.QBasicTimer() + self.nextPieceLabel = None + self.isWaitingAfterLine = False + self.curPiece = TetrixPiece() + self.nextPiece = TetrixPiece() + self.curX = 0 + self.curY = 0 + self.numLinesRemoved = 0 + self.numPiecesDropped = 0 + self.score = 0 + self.level = 0 + self.board = None + + self.setFrameStyle(QtWidgets.QFrame.Panel | QtWidgets.QFrame.Sunken) + self.setFocusPolicy(QtCore.Qt.StrongFocus) + self.isStarted = False + self.isPaused = False + self.clearBoard() + + self.nextPiece.setRandomShape() + + def shapeAt(self, x, y): + return self.board[(y * TetrixBoard.BoardWidth) + x] + + def setShapeAt(self, x, y, shape): + self.board[(y * TetrixBoard.BoardWidth) + x] = shape + + def timeoutTime(self): + return 1000 / (1 + self.level) + + def squareWidth(self): + return self.contentsRect().width() / TetrixBoard.BoardWidth + + def squareHeight(self): + return self.contentsRect().height() / TetrixBoard.BoardHeight + + def setNextPieceLabel(self, label): + self.nextPieceLabel = label + + def sizeHint(self): + return QtCore.QSize(TetrixBoard.BoardWidth * 15 + self.frameWidth() * 2, + TetrixBoard.BoardHeight * 15 + self.frameWidth() * 2) + + def minimumSizeHint(self): + return QtCore.QSize(TetrixBoard.BoardWidth * 5 + self.frameWidth() * 2, + TetrixBoard.BoardHeight * 5 + self.frameWidth() * 2) + + def start(self): + if self.isPaused: + return + + self.isStarted = True + self.isWaitingAfterLine = False + self.numLinesRemoved = 0 + self.numPiecesDropped = 0 + self.score = 0 + self.level = 1 + self.clearBoard() + + self.linesRemovedChanged.emit(self.numLinesRemoved) + self.scoreChanged.emit(self.score) + self.levelChanged.emit(self.level) + + self.newPiece() + self.timer.start(self.timeoutTime(), self) + + def pause(self): + if not self.isStarted: + return + + self.isPaused = not self.isPaused + if self.isPaused: + self.timer.stop() + else: + self.timer.start(self.timeoutTime(), self) + + self.update() + + def paintEvent(self, event): + super(TetrixBoard, self).paintEvent(event) + + painter = QtGui.QPainter(self) + rect = self.contentsRect() + + if self.isPaused: + painter.drawText(rect, QtCore.Qt.AlignCenter, "Pause") + return + + boardTop = rect.bottom() - TetrixBoard.BoardHeight * self.squareHeight() + + for i in range(TetrixBoard.BoardHeight): + for j in range(TetrixBoard.BoardWidth): + shape = self.shapeAt(j, TetrixBoard.BoardHeight - i - 1) + if shape != NoShape: + self.drawSquare(painter, + rect.left() + j * self.squareWidth(), + boardTop + i * self.squareHeight(), shape) + + if self.curPiece.shape() != NoShape: + for i in range(4): + x = self.curX + self.curPiece.x(i) + y = self.curY - self.curPiece.y(i) + self.drawSquare(painter, rect.left() + x * self.squareWidth(), + boardTop + (TetrixBoard.BoardHeight - y - 1) * self.squareHeight(), + self.curPiece.shape()) + + def keyPressEvent(self, event): + if not self.isStarted or self.isPaused or self.curPiece.shape() == NoShape: + super(TetrixBoard, self).keyPressEvent(event) + return + + key = event.key() + if key == QtCore.Qt.Key_Left: + self.tryMove(self.curPiece, self.curX - 1, self.curY) + elif key == QtCore.Qt.Key_Right: + self.tryMove(self.curPiece, self.curX + 1, self.curY) + elif key == QtCore.Qt.Key_Down: + self.tryMove(self.curPiece.rotatedRight(), self.curX, self.curY) + elif key == QtCore.Qt.Key_Up: + self.tryMove(self.curPiece.rotatedLeft(), self.curX, self.curY) + elif key == QtCore.Qt.Key_Space: + self.dropDown() + elif key == QtCore.Qt.Key_D: + self.oneLineDown() + else: + super(TetrixBoard, self).keyPressEvent(event) + + def timerEvent(self, event): + if event.timerId() == self.timer.timerId(): + if self.isWaitingAfterLine: + self.isWaitingAfterLine = False + self.newPiece() + self.timer.start(self.timeoutTime(), self) + else: + self.oneLineDown() + else: + super(TetrixBoard, self).timerEvent(event) + + def clearBoard(self): + self.board = [NoShape for i in range(TetrixBoard.BoardHeight * TetrixBoard.BoardWidth)] + + def dropDown(self): + dropHeight = 0 + newY = self.curY + while newY > 0: + if not self.tryMove(self.curPiece, self.curX, newY - 1): + break + newY -= 1 + dropHeight += 1 + + self.pieceDropped(dropHeight) + + def oneLineDown(self): + if not self.tryMove(self.curPiece, self.curX, self.curY - 1): + self.pieceDropped(0) + + def pieceDropped(self, dropHeight): + for i in range(4): + x = self.curX + self.curPiece.x(i) + y = self.curY - self.curPiece.y(i) + self.setShapeAt(x, y, self.curPiece.shape()) + + self.numPiecesDropped += 1 + if self.numPiecesDropped % 25 == 0: + self.level += 1 + self.timer.start(self.timeoutTime(), self) + self.levelChanged.emit(self.level) + + self.score += dropHeight + 7 + self.scoreChanged.emit(self.score) + self.removeFullLines() + + if not self.isWaitingAfterLine: + self.newPiece() + + def removeFullLines(self): + numFullLines = 0 + + for i in range(TetrixBoard.BoardHeight - 1, -1, -1): + lineIsFull = True + + for j in range(TetrixBoard.BoardWidth): + if self.shapeAt(j, i) == NoShape: + lineIsFull = False + break + + if lineIsFull: + numFullLines += 1 + for k in range(TetrixBoard.BoardHeight - 1): + for j in range(TetrixBoard.BoardWidth): + self.setShapeAt(j, k, self.shapeAt(j, k + 1)) + + for j in range(TetrixBoard.BoardWidth): + self.setShapeAt(j, TetrixBoard.BoardHeight - 1, NoShape) + + if numFullLines > 0: + self.numLinesRemoved += numFullLines + self.score += 10 * numFullLines + self.linesRemovedChanged.emit(self.numLinesRemoved) + self.scoreChanged.emit(self.score) + + self.timer.start(500, self) + self.isWaitingAfterLine = True + self.curPiece.setShape(NoShape) + self.update() + + def newPiece(self): + self.curPiece = self.nextPiece + self.nextPiece.setRandomShape() + self.showNextPiece() + self.curX = TetrixBoard.BoardWidth // 2 + 1 + self.curY = TetrixBoard.BoardHeight - 1 + self.curPiece.minY() + + if not self.tryMove(self.curPiece, self.curX, self.curY): + self.curPiece.setShape(NoShape) + self.timer.stop() + self.isStarted = False + + def showNextPiece(self): + if self.nextPieceLabel is not None: + return + + dx = self.nextPiece.maxX() - self.nextPiece.minX() + 1 + dy = self.nextPiece.maxY() - self.nextPiece.minY() + 1 + + pixmap = QtGui.QPixmap(dx * self.squareWidth(), dy * self.squareHeight()) + painter = QtGui.QPainter(pixmap) + painter.fillRect(pixmap.rect(), self.nextPieceLabel.palette().background()) + + for int in range(4): + x = self.nextPiece.x(i) - self.nextPiece.minX() + y = self.nextPiece.y(i) - self.nextPiece.minY() + self.drawSquare(painter, x * self.squareWidth(), + y * self.squareHeight(), self.nextPiece.shape()) + + self.nextPieceLabel.setPixmap(pixmap) + + def tryMove(self, newPiece, newX, newY): + for i in range(4): + x = newX + newPiece.x(i) + y = newY - newPiece.y(i) + if x < 0 or x >= TetrixBoard.BoardWidth or y < 0 or y >= TetrixBoard.BoardHeight: + return False + if self.shapeAt(x, y) != NoShape: + return False + + self.curPiece = newPiece + self.curX = newX + self.curY = newY + self.update() + return True + + def drawSquare(self, painter, x, y, shape): + colorTable = [0x000000, 0xCC6666, 0x66CC66, 0x6666CC, + 0xCCCC66, 0xCC66CC, 0x66CCCC, 0xDAAA00] + + color = QtGui.QColor(colorTable[shape]) + painter.fillRect(x + 1, y + 1, self.squareWidth() - 2, + self.squareHeight() - 2, color) + + painter.setPen(color.lighter()) + painter.drawLine(x, y + self.squareHeight() - 1, x, y) + painter.drawLine(x, y, x + self.squareWidth() - 1, y) + + painter.setPen(color.darker()) + painter.drawLine(x + 1, y + self.squareHeight() - 1, + x + self.squareWidth() - 1, y + self.squareHeight() - 1) + painter.drawLine(x + self.squareWidth() - 1, + y + self.squareHeight() - 1, x + self.squareWidth() - 1, y + 1) + + +class TetrixPiece(object): + coordsTable = ( + ((0, 0), (0, 0), (0, 0), (0, 0)), + ((0, -1), (0, 0), (-1, 0), (-1, 1)), + ((0, -1), (0, 0), (1, 0), (1, 1)), + ((0, -1), (0, 0), (0, 1), (0, 2)), + ((-1, 0), (0, 0), (1, 0), (0, 1)), + ((0, 0), (1, 0), (0, 1), (1, 1)), + ((-1, -1), (0, -1), (0, 0), (0, 1)), + ((1, -1), (0, -1), (0, 0), (0, 1)) + ) + + def __init__(self): + self.coords = [[0,0] for _ in range(4)] + self.pieceShape = NoShape + + self.setShape(NoShape) + + def shape(self): + return self.pieceShape + + def setShape(self, shape): + table = TetrixPiece.coordsTable[shape] + for i in range(4): + for j in range(2): + self.coords[i][j] = table[i][j] + + self.pieceShape = shape + + def setRandomShape(self): + self.setShape(random.randint(1, 7)) + + def x(self, index): + return self.coords[index][0] + + def y(self, index): + return self.coords[index][1] + + def setX(self, index, x): + self.coords[index][0] = x + + def setY(self, index, y): + self.coords[index][1] = y + + def minX(self): + m = self.coords[0][0] + for i in range(4): + m = min(m, self.coords[i][0]) + + return m + + def maxX(self): + m = self.coords[0][0] + for i in range(4): + m = max(m, self.coords[i][0]) + + return m + + def minY(self): + m = self.coords[0][1] + for i in range(4): + m = min(m, self.coords[i][1]) + + return m + + def maxY(self): + m = self.coords[0][1] + for i in range(4): + m = max(m, self.coords[i][1]) + + return m + + def rotatedLeft(self): + if self.pieceShape == SquareShape: + return self + + result = TetrixPiece() + result.pieceShape = self.pieceShape + for i in range(4): + result.setX(i, self.y(i)) + result.setY(i, -self.x(i)) + + return result + + def rotatedRight(self): + if self.pieceShape == SquareShape: + return self + + result = TetrixPiece() + result.pieceShape = self.pieceShape + for i in range(4): + result.setX(i, -self.y(i)) + result.setY(i, self.x(i)) + + return result + + +if __name__ == '__main__': + + import sys + + app = QtWidgets.QApplication(sys.argv) + window = TetrixWindow() + window.show() + random.seed(None) + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/widgets/widgets/widgets.pyproject b/venv/Lib/site-packages/PySide2/examples/widgets/widgets/widgets.pyproject new file mode 100644 index 0000000..b4e3ef6 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/widgets/widgets/widgets.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["tetrix.py", "hellogl_openglwidget_legacy.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/xml/dombookmarks/__pycache__/dombookmarks.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/xml/dombookmarks/__pycache__/dombookmarks.cpython-310.pyc new file mode 100644 index 0000000..f72a63e Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/xml/dombookmarks/__pycache__/dombookmarks.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/xml/dombookmarks/dombookmarks.py b/venv/Lib/site-packages/PySide2/examples/xml/dombookmarks/dombookmarks.py new file mode 100644 index 0000000..20ec09e --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/xml/dombookmarks/dombookmarks.py @@ -0,0 +1,262 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +"""PySide2 port of the xml/dombookmarks example from Qt v5.x""" + +from PySide2 import QtCore, QtGui, QtWidgets, QtXml + + +class MainWindow(QtWidgets.QMainWindow): + def __init__(self, parent=None): + super(MainWindow, self).__init__(parent) + + self.xbelTree = XbelTree() + self.setCentralWidget(self.xbelTree) + + self.createActions() + self.createMenus() + + self.statusBar().showMessage("Ready") + + self.setWindowTitle("DOM Bookmarks") + self.resize(480, 320) + + def open(self): + fileName = QtWidgets.QFileDialog.getOpenFileName(self, + "Open Bookmark File", QtCore.QDir.currentPath(), + "XBEL Files (*.xbel *.xml)")[0] + + if not fileName: + return + + inFile = QtCore.QFile(fileName) + if not inFile.open(QtCore.QFile.ReadOnly | QtCore.QFile.Text): + QtWidgets.QMessageBox.warning(self, "DOM Bookmarks", + "Cannot read file %s:\n%s." % (fileName, inFile.errorString())) + return + + if self.xbelTree.read(inFile): + self.statusBar().showMessage("File loaded", 2000) + + def saveAs(self): + fileName = QtWidgets.QFileDialog.getSaveFileName(self, + "Save Bookmark File", QtCore.QDir.currentPath(), + "XBEL Files (*.xbel *.xml)")[0] + + if not fileName: + return + + outFile = QtCore.QFile(fileName) + if not outFile.open(QtCore.QFile.WriteOnly | QtCore.QFile.Text): + QtWidgets.QMessageBox.warning(self, "DOM Bookmarks", + "Cannot write file %s:\n%s." % (fileName, outFile.errorString())) + return + + if self.xbelTree.write(outFile): + self.statusBar().showMessage("File saved", 2000) + + def about(self): + QtWidgets.QMessageBox.about(self, "About DOM Bookmarks", + "The DOM Bookmarks example demonstrates how to use Qt's " + "DOM classes to read and write XML documents.") + + def createActions(self): + self.openAct = QtWidgets.QAction("&Open...", self, shortcut="Ctrl+O", + triggered=self.open) + + self.saveAsAct = QtWidgets.QAction("&Save As...", self, shortcut="Ctrl+S", + triggered=self.saveAs) + + self.exitAct = QtWidgets.QAction("E&xit", self, shortcut="Ctrl+Q", + triggered=self.close) + + self.aboutAct = QtWidgets.QAction("&About", self, triggered=self.about) + + self.aboutQtAct = QtWidgets.QAction("About &Qt", self, + triggered=qApp.aboutQt) + + def createMenus(self): + self.fileMenu = self.menuBar().addMenu("&File") + self.fileMenu.addAction(self.openAct) + self.fileMenu.addAction(self.saveAsAct) + self.fileMenu.addAction(self.exitAct) + + self.menuBar().addSeparator() + + self.helpMenu = self.menuBar().addMenu("&Help") + self.helpMenu.addAction(self.aboutAct) + self.helpMenu.addAction(self.aboutQtAct) + + +class XbelTree(QtWidgets.QTreeWidget): + def __init__(self, parent=None): + super(XbelTree, self).__init__(parent) + + self.header().setSectionResizeMode(QtWidgets.QHeaderView.Stretch) + self.setHeaderLabels(("Title", "Location")) + + self.domDocument = QtXml.QDomDocument() + + self.domElementForItem = {} + + self.folderIcon = QtGui.QIcon() + self.bookmarkIcon = QtGui.QIcon() + + self.folderIcon.addPixmap(self.style().standardPixmap(QtWidgets.QStyle.SP_DirClosedIcon), + QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.folderIcon.addPixmap(self.style().standardPixmap(QtWidgets.QStyle.SP_DirOpenIcon), + QtGui.QIcon.Normal, QtGui.QIcon.On) + self.bookmarkIcon.addPixmap(self.style().standardPixmap(QtWidgets.QStyle.SP_FileIcon)) + + def read(self, device): + ok, errorStr, errorLine, errorColumn = self.domDocument.setContent(device, True) + if not ok: + QtWidgets.QMessageBox.information(self.window(), "DOM Bookmarks", + "Parse error at line %d, column %d:\n%s" % (errorLine, errorColumn, errorStr)) + return False + + root = self.domDocument.documentElement() + if root.tagName() != 'xbel': + QtWidgets.QMessageBox.information(self.window(), "DOM Bookmarks", + "The file is not an XBEL file.") + return False + elif root.hasAttribute('version') and root.attribute('version') != '1.0': + QtWidgets.QMessageBox.information(self.window(), "DOM Bookmarks", + "The file is not an XBEL version 1.0 file.") + return False + + self.clear() + + # It might not be connected. + try: + self.itemChanged.disconnect(self.updateDomElement) + except: + pass + + child = root.firstChildElement('folder') + while not child.isNull(): + self.parseFolderElement(child) + child = child.nextSiblingElement('folder') + + self.itemChanged.connect(self.updateDomElement) + + return True + + def write(self, device): + indentSize = 4 + + out = QtCore.QTextStream(device) + self.domDocument.save(out, indentSize) + return True + + def updateDomElement(self, item, column): + element = self.domElementForItem.get(id(item)) + if not element.isNull(): + if column == 0: + oldTitleElement = element.firstChildElement('title') + newTitleElement = self.domDocument.createElement('title') + + newTitleText = self.domDocument.createTextNode(item.text(0)) + newTitleElement.appendChild(newTitleText) + + element.replaceChild(newTitleElement, oldTitleElement) + else: + if element.tagName() == 'bookmark': + element.setAttribute('href', item.text(1)) + + def parseFolderElement(self, element, parentItem=None): + item = self.createItem(element, parentItem) + + title = element.firstChildElement('title').text() + if not title: + title = "Folder" + + item.setFlags(item.flags() | QtCore.Qt.ItemIsEditable) + item.setIcon(0, self.folderIcon) + item.setText(0, title) + + folded = (element.attribute('folded') != 'no') + self.setItemExpanded(item, not folded) + + child = element.firstChildElement() + while not child.isNull(): + if child.tagName() == 'folder': + self.parseFolderElement(child, item) + elif child.tagName() == 'bookmark': + childItem = self.createItem(child, item) + + title = child.firstChildElement('title').text() + if not title: + title = "Folder" + + childItem.setFlags(item.flags() | QtCore.Qt.ItemIsEditable) + childItem.setIcon(0, self.bookmarkIcon) + childItem.setText(0, title) + childItem.setText(1, child.attribute('href')) + elif child.tagName() == 'separator': + childItem = self.createItem(child, item) + childItem.setFlags(item.flags() & ~(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEditable)) + childItem.setText(0, 30 * "\xb7") + + child = child.nextSiblingElement() + + def createItem(self, element, parentItem=None): + item = QtWidgets.QTreeWidgetItem() + + if parentItem is not None: + item = QtWidgets.QTreeWidgetItem(parentItem) + else: + item = QtWidgets.QTreeWidgetItem(self) + + self.domElementForItem[id(item)] = element + return item + + +if __name__ == '__main__': + + import sys + + app = QtWidgets.QApplication(sys.argv) + mainWin = MainWindow() + mainWin.show() + mainWin.open() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/xml/dombookmarks/dombookmarks.pyproject b/venv/Lib/site-packages/PySide2/examples/xml/dombookmarks/dombookmarks.pyproject new file mode 100644 index 0000000..9a68855 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/xml/dombookmarks/dombookmarks.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["jennifer.xbel", "frank.xbel", "dombookmarks.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/xml/dombookmarks/frank.xbel b/venv/Lib/site-packages/PySide2/examples/xml/dombookmarks/frank.xbel new file mode 100644 index 0000000..f498a5e --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/xml/dombookmarks/frank.xbel @@ -0,0 +1,230 @@ + + + + + Literate Programming + + Synopsis of Literate Programming + + + Literate Programming: Propaganda and Tools + + + Literate Programming by Henrik Turbell + + + Literate Programming Library + + + Literate Programming Basics + + + Literate Programming Overview + + + POD is not Literate Programming + + + Computers That We Can Count On + + + Literate Programming - Issues and Problems + + + Literate Programming - Wiki Pages + + + What is well-commented code? + + + Bibliography on literate programming - A searchable bibliography + + + Program comprehension and code reading bibliography + + + Elucidative Programming + + + AVL Trees (TexiWeb) + + + Literate Programming on Wikiverse + + + Physically Based Rendering: From Theory to Implementation + + + + Useful C++ Links + + STL + + STL Reference Documentation + + + STL Tutorial + + + STL Reference + + + + Qt + + Qt 2.3 Reference + + + Qt 3.3 Reference + + + Qt 4.0 Reference + + + Trolltech Home Page + + + + IOStreams + + IO Stream Library + + + Binary I/O + + + I/O Stream FAQ + + + + gdb + + GDB Tutorial + + + Debugging with GDB + + + GDB Quick Reference Page (PDF) (Handy) + + + + Classes and Constructors + + Constructor FAQ + + + Organizing Classes + + + + + Software Documentation or System Documentation + + The Almighty Thud + + + Microsoft Coding Techniques and Programming Practices + + + Software and Documentation + + + The Source Code is the Design + + + What is Software Design? + + + How To Write Unmaintainable Code + + + Self Documenting Program Code Remains a Distant Goal + + + Place Tab A in Slot B + + + UML Reference Card + + + + TeX Resources + + The TeX User's Group + + + MikTeX website + + + MetaPost website + + + HEVEA is a quite complete and fast LATEX to HTML translator + + + + Portable Document Format (PDF) + + Adobe - The postscript and PDF standards + + + Reference Manual Portable Document Format + + + Adobe Acrobat Software Development Kit + + + + Literature Sites + + Guide to Special Collections (Columbia University) + + + Literary Criticism on the Web from the Internet Public Library + + + Victorian Web. + + + Voice of the Shuttle. + + + Modernist Journals Project + + + Museum of American Poetics + + + Modern American Poetry + + + FindArticles.com + + + Literary History + + + Literary Encyclopedia + + + + The University of California Press + + + Wright American Fiction, 1851-1875 + + + Documenting the American South: Beginnings to 1920 + + + Electronic Text Center at the University of Virginia + + + The Schomburg Center for Research in Black Culture + + + Alex Catalog of Electronic Texts. + + + diff --git a/venv/Lib/site-packages/PySide2/examples/xml/dombookmarks/jennifer.xbel b/venv/Lib/site-packages/PySide2/examples/xml/dombookmarks/jennifer.xbel new file mode 100644 index 0000000..1f7810b --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/xml/dombookmarks/jennifer.xbel @@ -0,0 +1,93 @@ + + + + + Qt Resources + + Trolltech Partners + + Training Partners + + + Consultants and System Integrators + + + Technology Partners + + + Value Added Resellers (VARs) + + + + Community Resources + + QtForum.org + + + The Independent Qt Tutorial + + + French PROG.Qt + + + German Qt Forum + + + Korean Qt Community Site + + + Russian Qt Forum + + + Digitalfanatics: The QT 4 Resource Center + + + QtQuestions + + + + Qt Quarterly + + + Trolltech's home page + + + Qt 4.0 documentation + + + Frequently Asked Questions + + + + Online Dictionaries + + Dictionary.com + + + Merriam-Webster Online + + + Cambridge Dictionaries Online + + + OneLook Dictionary Search + + + + The New English-German Dictionary + + + TU Chemnitz German-English Dictionary + + + + Trésor de la Langue Française informatisé + + + Dictionnaire de l'Académie Française + + + Dictionnaire des synonymes + + + diff --git a/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/__pycache__/schema.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/__pycache__/schema.cpython-310.pyc new file mode 100644 index 0000000..c3136ad Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/__pycache__/schema.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/__pycache__/schema_rc.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/__pycache__/schema_rc.cpython-310.pyc new file mode 100644 index 0000000..4cb7614 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/__pycache__/schema_rc.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/__pycache__/ui_schema.cpython-310.pyc b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/__pycache__/ui_schema.cpython-310.pyc new file mode 100644 index 0000000..7197843 Binary files /dev/null and b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/__pycache__/ui_schema.cpython-310.pyc differ diff --git a/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/files/contact.xsd b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/files/contact.xsd new file mode 100644 index 0000000..3e1b570 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/files/contact.xsd @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/files/invalid_contact.xml b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/files/invalid_contact.xml new file mode 100644 index 0000000..42f1edd --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/files/invalid_contact.xml @@ -0,0 +1,11 @@ + + John + Doe + Prof. + + Sandakerveien 116 + N-0550 + Oslo + Norway + + diff --git a/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/files/invalid_order.xml b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/files/invalid_order.xml new file mode 100644 index 0000000..8ffc5fd --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/files/invalid_order.xml @@ -0,0 +1,13 @@ + + 234219 +
+ 21692 + 3 +
+
+ 24749 + 9 +
+ 2009-01-23 + yes +
diff --git a/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/files/invalid_recipe.xml b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/files/invalid_recipe.xml new file mode 100644 index 0000000..4d75af6 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/files/invalid_recipe.xml @@ -0,0 +1,14 @@ + + Cheese on Toast + + + diff --git a/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/files/order.xsd b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/files/order.xsd new file mode 100644 index 0000000..405cafe --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/files/order.xsd @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/files/recipe.xsd b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/files/recipe.xsd new file mode 100644 index 0000000..bbbafd9 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/files/recipe.xsd @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/files/valid_contact.xml b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/files/valid_contact.xml new file mode 100644 index 0000000..53c04d4 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/files/valid_contact.xml @@ -0,0 +1,11 @@ + + John + Doe + 1977-12-25 + + Sandakerveien 116 + N-0550 + Oslo + Norway + + diff --git a/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/files/valid_order.xml b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/files/valid_order.xml new file mode 100644 index 0000000..f83c36c --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/files/valid_order.xml @@ -0,0 +1,18 @@ + + 194223 +
+ 22242 + 5 +
+
+ 32372 + 12 + without stripes +
+
+ 23649 + 2 +
+ 2009-01-23 + true +
diff --git a/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/files/valid_recipe.xml b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/files/valid_recipe.xml new file mode 100644 index 0000000..f6499ba --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/files/valid_recipe.xml @@ -0,0 +1,13 @@ + + Cheese on Toast + + + diff --git a/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/schema.py b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/schema.py new file mode 100644 index 0000000..d3c22c1 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/schema.py @@ -0,0 +1,286 @@ + +############################################################################# +## +## Copyright (C) 2013 Riverbank Computing Limited. +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Qt for Python examples of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:BSD$ +## You may use this file under the terms of the BSD license as follows: +## +## "Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in +## the documentation and/or other materials provided with the +## distribution. +## * Neither the name of The Qt Company Ltd nor the names of its +## contributors may be used to endorse or promote products derived +## from this software without specific prior written permission. +## +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2 import QtCore, QtGui, QtWidgets, QtXmlPatterns + +import schema_rc +from ui_schema import Ui_SchemaMainWindow + + +try: + # Python v2. + unicode + + def encode_utf8(ba): + return unicode(ba, encoding='utf8') + + def decode_utf8(qs): + return QtCore.QByteArray(str(qs)) + +except NameError: + # Python v3. + + def encode_utf8(ba): + return str(ba.data(), encoding='utf8') + + def decode_utf8(qs): + return QtCore.QByteArray(bytes(qs, encoding='utf8')) + + +class XmlSyntaxHighlighter(QtGui.QSyntaxHighlighter): + + def __init__(self, parent=None): + super(XmlSyntaxHighlighter, self).__init__(parent) + + self.highlightingRules = [] + + # Tag format. + format = QtGui.QTextCharFormat() + format.setForeground(QtCore.Qt.darkBlue) + format.setFontWeight(QtGui.QFont.Bold) + pattern = QtCore.QRegularExpression(r'(<[a-zA-Z:]+\b|<\?[a-zA-Z:]+\b|\?>|>|/>|)') + assert pattern.isValid() + self.highlightingRules.append((pattern, format)) + + # Attribute format. + format = QtGui.QTextCharFormat() + format.setForeground(QtCore.Qt.darkGreen) + pattern = QtCore.QRegularExpression('[a-zA-Z:]+=') + assert pattern.isValid() + self.highlightingRules.append((pattern, format)) + + # Attribute content format. + format = QtGui.QTextCharFormat() + format.setForeground(QtCore.Qt.red) + pattern = QtCore.QRegularExpression("(\"[^\"]*\"|'[^']*')") + assert pattern.isValid() + self.highlightingRules.append((pattern, format)) + + # Comment format. + self.commentFormat = QtGui.QTextCharFormat() + self.commentFormat.setForeground(QtCore.Qt.lightGray) + self.commentFormat.setFontItalic(True) + + self.commentStartExpression = QtCore.QRegularExpression("") + assert self.commentEndExpression.isValid() + + def highlightBlock(self, text): + for pattern, format in self.highlightingRules: + match = pattern.match(text) + while match.hasMatch(): + index = match.capturedStart() + length = match.capturedLength(0) + self.setFormat(index, length, format) + match = pattern.match(text, index + length) + + self.setCurrentBlockState(0) + + startIndex = 0 + if self.previousBlockState() != 1: + match = self.commentStartExpression.match(text) + startIndex = match.capturedStart(0) if match.hasMatch() else -1 + + while startIndex >= 0: + match = self.commentEndExpression.match(text, startIndex) + endIndex = match.capturedStart(0) if match.hasMatch() else -1 + if match.hasMatch(): + endIndex = match.capturedStart(0) + length = match.capturedLength(0) + commentLength = endIndex - startIndex + length + else: + self.setCurrentBlockState(1) + commentLength = text.length() - startIndex + + self.setFormat(startIndex, commentLength, self.commentFormat) + match = self.commentStartExpression.match(text, startIndex + commentLength) + startIndex = match.capturedStart(0) if match.hasMatch() else -1 + + +class MessageHandler(QtXmlPatterns.QAbstractMessageHandler): + + def __init__(self): + super(MessageHandler, self).__init__() + + self.m_description = "" + self.m_sourceLocation = QtXmlPatterns.QSourceLocation() + + def statusMessage(self): + return self.m_description + + def line(self): + return self.m_sourceLocation.line() + + def column(self): + return self.m_sourceLocation.column() + + def handleMessage(self, type, description, identifier, sourceLocation): + self.m_description = description + self.m_sourceLocation = sourceLocation + + +class MainWindow(QtWidgets.QMainWindow, Ui_SchemaMainWindow): + + def __init__(self): + QtWidgets.QMainWindow.__init__(self) + + self.setupUi(self) + + XmlSyntaxHighlighter(self.schemaView.document()) + XmlSyntaxHighlighter(self.instanceEdit.document()) + + self.schemaSelection.addItem("Contact Schema") + self.schemaSelection.addItem("Recipe Schema") + self.schemaSelection.addItem("Order Schema") + + self.instanceSelection.addItem("Valid Contact Instance") + self.instanceSelection.addItem("Invalid Contact Instance") + + self.schemaSelection.currentIndexChanged[int].connect(self.schemaSelected) + self.instanceSelection.currentIndexChanged[int].connect(self.instanceSelected) + self.validateButton.clicked.connect(self.validate) + self.instanceEdit.textChanged.connect(self.textChanged) + + self.validationStatus.setAlignment(QtCore.Qt.AlignCenter | QtCore.Qt.AlignVCenter) + + self.schemaSelected(0) + self.instanceSelected(0) + + def schemaSelected(self, index): + self.instanceSelection.clear() + + if index == 0: + self.instanceSelection.addItem("Valid Contact Instance") + self.instanceSelection.addItem("Invalid Contact Instance") + elif index == 1: + self.instanceSelection.addItem("Valid Recipe Instance") + self.instanceSelection.addItem("Invalid Recipe Instance") + elif index == 2: + self.instanceSelection.addItem("Valid Order Instance") + self.instanceSelection.addItem("Invalid Order Instance") + + self.textChanged() + + schemaFile = QtCore.QFile(':/schema_%d.xsd' % index) + schemaFile.open(QtCore.QIODevice.ReadOnly) + schemaData = schemaFile.readAll() + self.schemaView.setPlainText(encode_utf8(schemaData)) + + self.validate() + + def instanceSelected(self, index): + if index == -1: + return + + index += 2 * self.schemaSelection.currentIndex() + instanceFile = QtCore.QFile(':/instance_%d.xml' % index) + instanceFile.open(QtCore.QIODevice.ReadOnly) + instanceData = instanceFile.readAll() + self.instanceEdit.setPlainText(encode_utf8(instanceData)) + + self.validate() + + def validate(self): + schemaData = decode_utf8(self.schemaView.toPlainText()) + instanceData = decode_utf8(self.instanceEdit.toPlainText()) + + messageHandler = MessageHandler() + + schema = QtXmlPatterns.QXmlSchema() + schema.setMessageHandler(messageHandler) + schema.load(schemaData, QtCore.QUrl()) + + errorOccurred = False + if not schema.isValid(): + errorOccurred = True + else: + validator = QtXmlPatterns.QXmlSchemaValidator(schema) + if not validator.validate(instanceData): + errorOccurred = True + + if errorOccurred: + self.validationStatus.setText(messageHandler.statusMessage()) + self.moveCursor(messageHandler.line(), messageHandler.column()) + background = QtCore.Qt.red + else: + self.validationStatus.setText("validation successful") + background = QtCore.Qt.green + + styleSheet = 'QLabel {background: %s; padding: 3px}' % QtGui.QColor(background).lighter(160).name() + self.validationStatus.setStyleSheet(styleSheet) + + def textChanged(self): + self.instanceEdit.setExtraSelections([]) + + def moveCursor(self, line, column): + self.instanceEdit.moveCursor(QtGui.QTextCursor.Start) + + for i in range(1, line): + self.instanceEdit.moveCursor(QtGui.QTextCursor.Down) + + for i in range(1, column): + self.instanceEdit.moveCursor(QtGui.QTextCursor.Right) + + extraSelections = [] + selection = QtWidgets.QTextEdit.ExtraSelection() + + lineColor = QtGui.QColor(QtCore.Qt.red).lighter(160) + selection.format.setBackground(lineColor) + selection.format.setProperty(QtGui.QTextFormat.FullWidthSelection, True) + selection.cursor = self.instanceEdit.textCursor() + selection.cursor.clearSelection() + extraSelections.append(selection) + + self.instanceEdit.setExtraSelections(extraSelections) + + self.instanceEdit.setFocus() + + +if __name__ == '__main__': + + import sys + + app = QtWidgets.QApplication(sys.argv) + window = MainWindow() + window.show() + sys.exit(app.exec_()) diff --git a/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/schema.pyproject b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/schema.pyproject new file mode 100644 index 0000000..697e58d --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/schema.pyproject @@ -0,0 +1,4 @@ +{ + "files": ["schema.qrc", "schema.py", "schema.ui", "ui_schema.py", + "schema_rc.py"] +} diff --git a/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/schema.qrc b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/schema.qrc new file mode 100644 index 0000000..eb7ddfd --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/schema.qrc @@ -0,0 +1,13 @@ + + + files/contact.xsd + files/recipe.xsd + files/order.xsd + files/valid_contact.xml + files/invalid_contact.xml + files/valid_recipe.xml + files/invalid_recipe.xml + files/valid_order.xml + files/invalid_order.xml + + diff --git a/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/schema.ui b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/schema.ui new file mode 100644 index 0000000..b67f444 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/schema.ui @@ -0,0 +1,71 @@ + + + SchemaMainWindow + + + + 0 + 0 + 417 + 594 + + + + XML Schema Validation + + + + + + + XML Schema Document: + + + + + + + + + + + + + XML Instance Document: + + + + + + + + + + + + + Status: + + + + + + + not validated + + + + + + + Validate + + + + + + + + + + diff --git a/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/schema_rc.py b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/schema_rc.py new file mode 100644 index 0000000..00d6244 --- /dev/null +++ b/venv/Lib/site-packages/PySide2/examples/xmlpatterns/schema/schema_rc.py @@ -0,0 +1,360 @@ +# Resource object code (Python 3) +# Created by: object code +# Created by: The Resource Compiler for Qt version 5.15.2 +# WARNING! All changes made in this file will be lost! + +from PySide2 import QtCore + +qt_resource_data = b"\ +\x00\x00\x01\x84\ +\x00\ +\x00\x06-x\x9c\xbdT\xb1n\xc20\x10\xdd+\xf1\x0f\ +\x96?\x80@\xbb!R\xe6J\xad:\xb4CW\xe3\x9c\ +\xc0Rl\x07\xfbL\xc2\xdf\xd76\x90\xa6\xa9\x13\xc2R\ +\x0fQt\xf7\xde\xf3\xdd\xe5\xe5\xd6\x9bF\x96\xe4\x08\xc6\ +\x0a\xadr\xba\x9c/\xe8\xe6y\xf6\xb0nl\xb1\xb2|\ +\x0f\x92\x11\x0fPv\xe5\x039\xdd#V\xab,\xab\xeb\ +z^?\xcd\xb5\xd9e\x8f\x8b\xc52\xfbz{\xfd\x88\ +X\xea\xa9\xb3\x07\xe2O\x14\x80\x12$($\x8aI\xc8\ +\xa9\x01.*\x08\x10r9\x11\xc4\xb5\xacJh>O\ +\x15tRm\xda\xc2\xc1\x81\xe2\xfd\xdc\xc0\x1d(\xb0\x04\ +J\xd0\x8b\xe54\xd2\xd1\x08\xb5\xa3\xd94\xba\x87\x1a(\ +\x84\x0f\x5c5~\x22\xa1@J$k\xde9w\xc6\xe6\ +\xd4\xa9\xadv\xaa\x80b\xaa:\x0a\xd9\xd6\x16\xde\xa3\xe2\ +D\xae\x04\xdc\xeb\x82&\xc0\x13\x06y\xcfPo\xd4a\ +\x11\xaa\xc4|\xa7\xcf\xa5\xd5\xce&\x14r\x06\x8d7v\ +\xc6\x5c\xaa\xec;h\xe8\x92!\xe1\xbeX\xc7\xcc\x1d\xf0\ +\x1f\xb7\xc4/\xd976C?\x9b\xad\xc3+<\xb9\x1dD(l\xc8\x19\x01a \xb4\ +\xca\xd1\xaf7\xb2e\xf6w\xfbc\xbf\x13('\xc1\xb0\ +H<\xb2\xd2\x05\xf3\x03\xd7\xaa\xb0\x83\xbe\x1e\xe2I\xa1\ +|/\xf7\xf3\xf6\xda\xffP\xe9\x0d\x91\xf5zK\x1b?\ +5\x9ds\xaa\x9d\xf0\xa8\x01.2q\xb7\xfb\xc07\x9f\ +\x0c\xc2%\ +\x00\x00\x02c\ +<\ +recipe>\x0d\x0a Cheese on To\ +ast\x0d\x0a \ + \x0d\x0a \x0d\x0a