from tkinter import ttk
from tkinter import *
import tkinter
import yaml
from yaml.loader import SafeLoader
import glob
import re 
import subprocess
from PIL import Image, ImageTk
import tempfile
import sys
import cv2


CONFIG_FILE='conf.yaml'

class Conf:
    def __init__(self):
        self.video_in = '/dev/video0'
        self.video_out = '/dev/video20'
        self.res = '720x1280'
        self.background = 'background.jpg'
        self.srv='http://192.168.49.110:8080'
        self.hologram_effect=False
        self.soft_edge_mask=True

    def read(self,fn):
        with open(fn) as f:
            data = yaml.load(f, Loader=SafeLoader)
            if 'video_in' in data:
                self.video_in=data['video_in']
            if 'video_out' in data:
                self.video_out=data['video_out']
            if 'res' in data:
                self.res=data['res']
            if 'background' in data:
                self.background=data['background']
            if 'srv' in data:
                self.srv=data['srv']
            if 'hologram_effect' in data:
                self.hologram_effect=data['hologram_effect']
            if 'soft_edge_mask' in data:
                self.soft_edge_mask=data['soft_edge_mask']

    def write(self,fn):
        with open(fn, 'w') as f:
            data = yaml.safe_dump({'video_in':self.video_in,
                'video_out':self.video_out,
                'res':self.res,
                'background':self.background,
                'srv':self.srv,
                'hologram_effect':self.hologram_effect,
                'soft_edge_mask':self.soft_edge_mask,}, f, sort_keys=False, default_flow_style=False)

conf = Conf()
conf.read(CONFIG_FILE)

def getDevices():
    return glob.glob("/dev/video*")

def getBackground():
    return glob.glob("*.jpg")+glob.glob("*.png")+glob.glob("*.mp4")

def checkOutVideo(dev):
    if not conf.video_out in getDevices():
        num=re.findall(r'\d+', dev)[-1]
        subprocess.call(['sudo', 'modprobe', '-r',  'v4l2loopback'])
        subprocess.call(['sudo', 'modprobe', 'v4l2loopback', 'devices=1', 'video_nr='+str(num), 'card_label="v4l2loopback"', 'exclusive_caps=1'])

checkOutVideo(conf.video_out)

def captureImgFromCam(cam):
    height, width = 100,150
    global im_pil
    try:
        cap = cv2.VideoCapture(cam)
        cap.set(cv2.CAP_PROP_FRAME_WIDTH, width)
        cap.set(cv2.CAP_PROP_FRAME_HEIGHT, height)
        cap.set(cv2.CAP_PROP_FPS, 30)
        for i in range(15):
           _, frame = cap.read()
        img = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
        cap.release() 
        im_pil = Image.fromarray(img)
    except:
        im_pil = Image.new('RGB', (height, width))
        cap.release()
    
captureImgFromCam(conf.video_in)

class UI:
    def listener_video_in(self,event):
        conf.video_in=event.widget.get()
        captureImgFromCam(conf.video_in)
        conf.write(CONFIG_FILE)
        global im_pil
        self.photo_cam=ImageTk.PhotoImage(im_pil.resize((150, 100), Image.ANTIALIAS))
        self.canvas_cam.itemconfig(self.image_container_cam, image = self.photo_cam)

    def listener_video_out(self,event):
        conf.video_out=event.widget.get()
        conf.write(CONFIG_FILE)

    def listener_background(self,event):
        conf.background=event.widget.get()
        conf.write(CONFIG_FILE)
        if  not conf.background.endswith('.mp4'):
            self.photo_background=ImageTk.PhotoImage(Image.open(conf.background).resize((150, 100), Image.ANTIALIAS))
        else:
            capFile = cv2.VideoCapture(conf.background)
            _, frame = capFile.read()
            self.photo_background = ImageTk.PhotoImage(image = Image.fromarray(frame).resize((150, 100), Image.ANTIALIAS))
        self.canvas_background.itemconfig(self.image_container_background, image = self.photo_background)

    def listener_res(self,event):
        conf.res=self.sv_res.get()
        conf.write(CONFIG_FILE)
    
    def listener_srv(self,event):
        conf.srv=self.sv_srv.get()
        conf.write(CONFIG_FILE)

    def listener_bt_start(self):
        print("start")
        if self.proc is not None:
            self.proc.terminate()
        self.proc= subprocess.Popen('python3 main.py ' + conf.video_in +' '+ conf.video_out+' '+ conf.background+' '+ conf.res +' '+ conf.srv+' '+ str(conf.soft_edge_mask) + ' ' + str(conf.hologram_effect), shell=True)


    def listener_bt_stop(self):
        print("stop")
        if self.proc is not None:
            self.proc.terminate()
            self.proc = None

    def listener_softmask(self):
        conf.soft_edge_mask= not conf.soft_edge_mask
        conf.write(CONFIG_FILE)


    def listener_hologram_effect(self):
        conf.hologram_effect= not conf.hologram_effect
        conf.write(CONFIG_FILE)

    def __init__(self):
        self.proc=None
        app = Tk() 
        app.geometry('250x400')
        if ( sys.platform.startswith('win')): 
            app.iconbitmap(ICON_REC_PATH)
        else:
            logo = ImageTk.PhotoImage(file=ICON_REC_PATH)
            app.call('wm', 'iconphoto', app._w, logo)

        row_=0
        Label(app, text = "VIDEO_IN").grid(row=row_,column=0)
        combo_video_in = ttk.Combobox(app, values=getDevices())
        combo_video_in.grid(row=row_,column=1)
        combo_video_in.current(getDevices().index(conf.video_in) if conf.video_in in getDevices() else 0)
        combo_video_in.bind("<<ComboboxSelected>>", self.listener_video_in)

        row_+=1
        global im_pil
        self.photo_cam = ImageTk.PhotoImage( im_pil.resize((150, 100), Image.ANTIALIAS) )
        self.canvas_cam = Canvas(app, width=150, height=100)
        self.image_container_cam = self.canvas_cam.create_image(0, 0, anchor='nw', image=self.photo_cam)
        self.canvas_cam.grid(row=row_, column=1)

        row_+=1
        Label(app, text = "VIDEO_OUT").grid(row=row_,column=0)
        combo_video_out = ttk.Combobox(app, values=getDevices())
        combo_video_out.grid(row=row_,column=1)
        combo_video_out.current(getDevices().index(conf.video_out) if conf.video_in in getDevices() else 0)
        combo_video_out.bind("<<ComboboxSelected>>", self.listener_video_out)

        row_+=1
        Label(app, text = "BACKGROUND").grid(row=row_,column=0)
        combo_background = ttk.Combobox(app, values=getBackground())
        combo_background.grid(row=row_, column=1)
        combo_background.current(getBackground().index(conf.background) if conf.background in getBackground() else 0)
        combo_background.bind("<<ComboboxSelected>>", self.listener_background)

        row_+=1
        #self.photo_background = ImageTk.PhotoImage( Image.open(conf.background).resize((150, 100), Image.ANTIALIAS))
        #self.canvas_background = Canvas(app, width=150, height=100)
        #self.image_container_background = self.canvas_background.create_image(0, 0, anchor='nw', image=self.photo_background)
        #self.canvas_background.grid(row=row_, column=1)
        if  not conf.background.endswith('.mp4'):
            self.photo_background=ImageTk.PhotoImage(Image.open(conf.background).resize((150, 100), Image.ANTIALIAS))
        else:
            capFile = cv2.VideoCapture(conf.background)
            _, frame = capFile.read()
            self.photo_background = ImageTk.PhotoImage(image = Image.fromarray(frame).resize((150, 100), Image.ANTIALIAS))
        self.canvas_background = Canvas(app, width=150, height=100)
        self.image_container_background = self.canvas_background.create_image(0, 0, anchor='nw', image=self.photo_background)
        self.canvas_background.grid(row=row_, column=1)

        row_+=1
        Label(app, text = "RESOLUTION").grid(row=row_,column=0)
        self.sv_res = StringVar(app,conf.res)
        self.sv_res.trace("w", lambda name, index, mode, sv=self.sv_res: self.listener_res(self.sv_res))
        e = Entry(app, textvariable=self.sv_res).grid(row=row_,column=1)



        row_+=1
        Label(app, text = "SERVER").grid(row=row_,column=0)
        self.sv_srv = StringVar(app,conf.srv)
        self.sv_srv.trace("w", lambda name, index, mode, sv=self.sv_srv: self.listener_srv(self.sv_srv))
        e = Entry(app, textvariable=self.sv_srv).grid(row=row_,column=1)


        row_+=1
        Label(app, text = "EFFECTS").grid(row=row_,column=0)
        f1 = Frame(app)
        var_soft_edge_mask = IntVar()
        var_soft_edge_mask.set(1 if conf.soft_edge_mask else 0)
        self.cb_softmask = Checkbutton(f1, text="soft mask",
                 variable=var_soft_edge_mask,
                 onvalue=1, offvalue=0,
                 command=self.listener_softmask)
        var_hologram_effect = IntVar()
        var_hologram_effect.set(1 if conf.hologram_effect else 0)
        self.cb_hologram_effect= Checkbutton(f1, text="hologram",
                 variable=var_hologram_effect,
                 onvalue=1, offvalue=0,
                 command=self.listener_hologram_effect)
        f1.grid(row=row_,column=1,sticky=NSEW)
        self.cb_softmask.pack(side="top")
        self.cb_hologram_effect.pack(side="top")
        row_+=1
        img_start = ImageTk.PhotoImage(file = ICON_REC_PATH)
        bt_start=Button(app, text = 'start', image = img_start, compound=tkinter.LEFT,command = self.listener_bt_start).grid(row=row_,column=0)
        img_stop = ImageTk.PhotoImage(file = ICON_PAUSE_PATH)
        bt_stop=Button(app, text = 'stop', image = img_stop, compound=tkinter.LEFT,command = self.listener_bt_stop).grid(row=row_,column=1)

        app.mainloop()

ICON_REC=(
b'\x00\x00\x01\x00\x01\x00\x10\x10\x00\x00\x01\x00 \x00h\x04\x00\x00'
b'\x16\x00\x00\x00(\x00\x00\x00\x10\x00\x00\x00 \x00\x00\x00\x01\x00 '
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff0\x00\x00\xff\x96'
b'\x00\x00\xff\xd8\x00\x00\xff\xf4\x00\x00\xff\xf4\x00\x00\xff\xd8'
b'\x00\x00\xff\x96\x00\x00\xff0\x00\x00\x00\x00\x00\x00\x00\x00\x00'
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
b'\x00\xff\x08\x00\x00\xff\x98\x00\x00\xff\xfc\x00\x00\xff\xff\x00'
b'\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00'
b'\x00\xff\xff\x00\x00\xff\xfc\x00\x00\xff\x98\x00\x00\xff\x08\x00'
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x08\x00'
b'\x00\xff\xbc\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00'
b'\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00'
b'\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xbc\x00'
b'\x00\xff\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x92\x00'
b'\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00'
b'\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00'
b'\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00'
b'\x00\xff\x94\x00\x00\x00\x00\x00\x00\xff*\x00\x00\xff\xfc\x00\x00'
b'\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00'
b'\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00'
b'\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00'
b'\xff\xfc\x00\x00\xff,\x00\x00\xff\x90\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\x90\x00\x00\xff\xd0\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\xd2\x00\x00\xff\xf0\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\xf2\x00\x00\xff\xee\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\xf0\x00\x00\xff\xce\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\xce\x00\x00\xff\x8a\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\x8a\x00\x00\xff$\x00\x00\xff\xfa\x00\x00\xff\xff'
b'\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff'
b'\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff'
b'\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xfa'
b'\x00\x00\xff$\x00\x00\x00\x00\x00\x00\xff\x88\x00\x00\xff\xff\x00'
b'\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00'
b'\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00'
b'\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\x88\x00'
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x04\x00\x00\xff\xb0\x00'
b'\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00'
b'\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00'
b'\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xb0\x00\x00\xff\x04\x00'
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x04\x00'
b'\x00\xff\x86\x00\x00\xff\xfa\x00\x00\xff\xff\x00\x00\xff\xff\x00'
b'\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00'
b'\x00\xff\xf8\x00\x00\xff\x84\x00\x00\xff\x04\x00\x00\x00\x00\x00'
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
b'\x00\x00\x00\x00\x00\xff"\x00\x00\xff\x84\x00\x00\xff\xc8\x00\x00'
b'\xff\xe8\x00\x00\xff\xe6\x00\x00\xff\xc6\x00\x00\xff\x82\x00\x00'
b'\xff \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
b'\x00\xf8\x1f\x00\x00\xe0\x07\x00\x00\xc0\x03\x00\x00\x80\x01\x00'
b'\x00\x80\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x01\x00'
b'\x00\x80\x01\x00\x00\xc0\x03\x00\x00\xe0\x07\x00\x00\xf8\x1f\x00\x00'
b'\x00\x80\x01\x00\x00\xc0\x03\x00\x00\xe0\x07\x00\x00\xf8\x1f\x00\x00'
)
_, ICON_REC_PATH = tempfile.mkstemp()
with open(ICON_REC_PATH, 'wb') as icon_file:
    icon_file.write(ICON_REC)
ICON_PAUSE=(
b'\x00\x00\x01\x00\x01\x00\x10\x10\x00\x00\x01\x00 \x00h\x04\x00\x00'
b'\x16\x00\x00\x00(\x00\x00\x00\x10\x00\x00\x00 \x00\x00\x00\x01\x00 '
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff'
b'\xb6\x00\x00\xff\xf6\x00\x00\xff\xf6\x00\x00\xff\xf6\x00\x00\xff'
b'\xc6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
b'\x00\x00\x00\xff\xbe\x00\x00\xff\xf6\x00\x00\xff\xf6\x00\x00\xff'
b'\xf6\x00\x00\xff\xbe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff'
b'\xee\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
b'\x00\x00\x00\xff\xf8\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\xf6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff'
b'\xf2\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
b'\x00\x00\x00\xff\xfa\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\xfa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff'
b'\xf2\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff'
b'\x00\x00\x00\xff\xfc\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff'
b'\xf4\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff'
b'\x02\x00\x00\xff\xfc\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff'
b'\xf4\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\xff\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x02'
b'\x00\x00\xff\xfc\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff'
b'\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xf6'
b'\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff'
b'\x00\x00\xff\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x02\x00'
b'\x00\xff\xfc\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00'
b'\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xf6\x00'
b'\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00'
b'\x00\xff\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x02\x00\x00'
b'\xff\xfc\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00'
b'\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xf6\x00\x00'
b'\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00'
b'\xff\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x02\x00\x00\xff'
b'\xfc\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff'
b'\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xf6\x00\x00\xff'
b'\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\n'
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x02\x00\x00\xff\xfc'
b'\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff'
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xf4\x00\x00\xff\xff'
b'\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\n\x00'
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x02\x00\x00\xff\xfc\x00'
b'\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00'
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xf4\x00\x00\xff\xff\x00'
b'\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\x08\x00'
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x02\x00\x00\xff\xfc\x00'
b'\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xfc\x00'
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xf2\x00\x00\xff\xff\x00'
b'\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\x08\x00'
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x00\x00\xff\xfc\x00'
b'\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xfc\x00'
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xf2\x00\x00\xff\xff\x00'
b'\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\x06\x00'
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xfa\x00'
b'\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xfa\x00'
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xee\x00\x00\xff\xff\x00'
b'\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\x02\x00'
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xf8\x00'
b'\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\xff\xf6\x00'
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xae\x00\x00\xff\xf4\x00'
b'\x00\xff\xf4\x00\x00\xff\xf4\x00\x00\xff\xbc\x00\x00\x00\x00\x00'
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xb4\x00'
b'\x00\xff\xf4\x00\x00\xff\xf4\x00\x00\xff\xf2\x00\x00\xff\xb6\x00'
b'\x00\x00\x00\x83\xc1\x00\x00\x83\xc1\x00\x00\x83\xc1\x00\x00\x83'
b'\xc1\x00\x00\x83\xc1\x00\x00\x83\xc1\x00\x00\x83\xc1\x00\x00\x83'
b'\xc1\x00\x00\x83\xc1\x00\x00\x83\xc1\x00\x00\x83\xc1\x00\x00\x83'
b'\xc1\x00\x00\x83\xc1\x00\x00\x83\xc1\x00\x00\x83\xc1\x00\x00\x83'
b'\xc1\x00\x00')
_, ICON_PAUSE_PATH = tempfile.mkstemp()
with open(ICON_PAUSE_PATH, 'wb') as icon_file:
    icon_file.write(ICON_PAUSE)
ui=UI()
