├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── config.yml │ ├── feature_request.md │ └── bug_report.md └── dependabot.yml ├── requirements.txt ├── README.md ├── LICENSE └── guava.py /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | custom: 'https://paypal.me/karimawi' 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Discord Profile 4 | url: https://discord.com/users/609230785769111554 5 | about: If you have any problems, my DM's are open -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea or a feature you think is good to add to Guava 4 | title: '' 5 | labels: enhancement 6 | assignees: '' 7 | 8 | --- 9 | 10 | 11 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # To get started with Dependabot version updates, you'll need to specify which 2 | # package ecosystems to update and where the package manifests are located. 3 | # Please see the documentation for all configuration options: 4 | # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates 5 | 6 | version: 2 7 | updates: 8 | - package-ecosystem: "pip" # See documentation for possible values 9 | directory: "/" # Location of package manifests 10 | schedule: 11 | interval: "weekly" 12 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help improve Guava 4 | title: '' 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Guava Version** 27 | - Version [e.g. 1.0.1 - Beta] 28 | 29 | **Additional context** 30 | Add any other context about the problem here. 31 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | ahk==0.14.2 2 | aiohttp==3.8.4 3 | aiohttp-retry==2.8.3 4 | aiosignal==1.3.1 5 | appopener==1.7 6 | async-timeout==4.0.2 7 | attrs==23.1.0 8 | certifi==2022.12.7 9 | charset-normalizer==3.1.0 10 | coverage==7.2.5 11 | easygui==0.98.3 12 | flake8==6.0.0 13 | frozenlist==1.3.3 14 | gmail==0.6.3 15 | idna==3.4 16 | Jinja2==3.1.2 17 | MarkupSafe==2.1.2 18 | mccabe==0.7.0 19 | mock==5.0.2 20 | multidict==6.0.4 21 | nose==1.3.7 22 | notify-py==0.3.42 23 | pip-conflict-checker==0.6.0 24 | psutil==5.9.5 25 | pycodestyle==2.10.0 26 | pyflakes==3.0.1 27 | PyJWT==2.6.0 28 | pyperclip==1.8.2 29 | pytz==2023.3 30 | pywin32==306 31 | requests==2.30.0 32 | tinydb==4.7.1 33 | tkextrafont==0.6.3 34 | twilio==8.1.0 35 | urllib3==2.0.2 36 | wget==3.2 37 | yarl==1.9.2 38 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

Guava Guava

2 |
3 | 4 | > ⚠ **[Repository Archived] UPDATE 27th of August 2023:** A couple of days ago Riot Games added a new captcha verification system to their login auth flow, I went back and forth with some tools and libraries trying to find a solution to the problem that doesn't take a full year to login, but unfortunately the best thing I could find is captcha solving services which as you might be thinking are paid API keys that I can't afford, and still they take up to 20 seconds to solve the captcha, so until Riot removes this captcha thing or goes to a different approach that doesn't completely kill my login algorithm, this repository will be archived, I'm very upset writing this since I wrote a ton of new features and UI changes that were very close to being finished and now they're of no use, farewell, Guava. And thank you for using it. 5 |
6 | 7 | 8 | > ⚠ **Important Notice 30th of April 2023:** I wrote this program as a "fun" project to practice some Tkinter for our Python course at uni, didn't think it would get any attention or be actually used by people, so I didn't take the time to write it in an organized/object-oriented manner, it's mostly jank and spaghetti so, it's getting a rewrite as soon as possible, all the known bugs will be fixed, the code would be more readable and organized in more than one file, a handful of QoL features will be added like summoner details, login shortcuts, list reorder and much more, I started. Still, it's going to take a while, since I'm most of the time either studying for college or in campus, my free time is limited, but I'll try my best. Thanks for using Guava 💛 9 |
10 | 11 |

12 | 13 | Version 14 | 15 | 16 | Chat 17 | 18 | 19 | Download 20 | 21 | 22 | License 23 |
24 |
25 | Guava 26 |
27 |

28 | An account manager & switcher for League of Legends
built with Python using Tkinter, features a sleek and modern GUI and a ton of functionality. 29 |
30 |
31 | Features | 32 | FAQ | 33 | Installation | 34 | Libraries 35 |

36 | 37 |

38 | 39 | --- 40 | 41 | ## Features 42 | 43 | **Modern, Easy to Use GUI Where You Can:** 44 | - Add as many accounts as you want 45 | - Edit or delete them whenever 46 | - Import & Export Accounts 47 | - Easily Copy Account Credentials To Send Anywhere 48 | 49 | **Everything is locally stored on your device, you can take a look at the code.** 50 | 51 |
52 |
53 | 54 | ## FAQ 55 | 56 | **Does Guava Support Valorant?**
57 | Unfortunately, my pc (which is a laptop) is really crap, I can't install or run the game, and I can't do it without having the game even if both games have the same client, some elements are different, like the Valorant Riot Client is all red, also I would want to kill existing processes of the game and for that I'd need to actually run it to get all of the processes names, tl;dr I'll add it once I have proper testing setup for it, whether I upgrade my device or use someone else's, but until that, Guava just supports League of Legends. 58 | 59 | **Is Guava secure?**
60 | As far as the code goes, there's nothing malicious, you can check it for yourself or ask someone who knows if you don't know how, as far as getting banned in game or smth like that, don't worry, it's far from possible to get banned from something like an account switcher, it does read your screen and is a script so you'd wonder it would get detected by league and you get banned, but the image recognition part pretty much ends right after the main client opens, and if you want you can also set Guava to exit itself after logging in. 61 |
62 |
63 | 64 | ## Installation 65 | 66 | These will link you to the latest builds found in the [releases](https://github.com/karimawii/Guava/releases/) tab of this repository, 67 | you can then find the .msi installer. 68 | 69 | as for manual installation, just download the source code, install the modules and run the Python file. 70 | 71 |
72 | 73 | > ⚠ This project is made to work for Windows computers, it will not work as intended on any other OS.
74 |
75 | 76 | > ⚠ Guava is still in beta, it's expected to have some bugs, please let me know if you encounter any by opening an [issue](https://github.com/karimawii/Guava/issues/new/choose) 77 | 78 |
79 |
80 | 81 | ## Libraries 82 | 83 | GUI: 84 | - [Tkitner](https://github.com/python/cpython/tree/main/Lib/tkinter) 85 | - [TkExtraFont](https://github.com/TkinterEP/python-tkextrafont) 86 | - [EasyGUI](https://github.com/robertlugg/easygui) 87 | - [notify-py](https://github.com/ms7m/notify-py) 88 | 89 | DB: 90 | - [TinyDB](https://github.com/msiemens/tinydb) 91 | - [wget](https://github.com/steveeJ/python-wget) 92 | 93 | User Input Simulation: 94 | - [AHK Python Wrapper](https://github.com/spyoungtech/ahk) 95 | - [AppOpener](https://github.com/athrvvvv/AppOpener) 96 | - [Pyperclip](https://github.com/asweigart/pyperclip) 97 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright 2023 Karim Walid Mohamed 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /guava.py: -------------------------------------------------------------------------------- 1 | import AppOpener as app 2 | import ctypes 3 | import os 4 | import shutil 5 | import threading 6 | import time 7 | import webbrowser 8 | from sys import exit 9 | import sys 10 | from tkinter import * 11 | import easygui 12 | import pyperclip as ppc 13 | import wget 14 | import subprocess 15 | import ahk_binary 16 | from ahk import AHK 17 | from ahk.directives import NoTrayIcon 18 | from notifypy import Notify 19 | from tinydb import Query, TinyDB 20 | from tkextrafont import Font 21 | 22 | cwd = os.path.dirname(os.path.realpath(__file__)) 23 | 24 | configdb = TinyDB(r'settings.json', sort_keys=True, indent=4, separators=(',', ': ')) 25 | db = TinyDB(r'accounts.json', sort_keys=True, indent=4, separators=(',', ': ')) 26 | applist = list(app.give_appnames()) 27 | accounts = Query() 28 | 29 | if configdb.contains(Query().running == 'true') == False and configdb.contains(Query().running == 'false') == False: 30 | configdb.upsert({'running':'true'}, Query().running.exists()) 31 | elif configdb.contains(Query().running == 'true') == True: 32 | exit() 33 | else: 34 | configdb.upsert({'running':'true'}, Query().running.exists()) 35 | 36 | url0 = "https://drive.google.com/uc?export=download&id=1CmELERq2Pq4zGi_oPDNwYOzy0R2x5SpB" 37 | url1 = "https://drive.google.com/uc?export=download&id=1YLJMURfcO4yPTxCW2lmhr7Pkxba8jM1D" 38 | url2 = "https://drive.google.com/uc?export=download&id=1SHejgNbp5LsFANrSffr4hCaaBtuPmzvJ" 39 | url3 = "https://drive.google.com/uc?export=download&id=1CZgsRY3BPtGChEWCwINiULvQO2yQKa4A" 40 | url4 = "https://drive.google.com/uc?export=download&id=1d66qqUIYdqWKCICTw8lABV2SoRPVb5sg" 41 | url5 = "https://drive.google.com/uc?export=download&id=1n774SKKjA8VtGZkYflb98UUs21QTwlnx" 42 | url6 = "https://drive.google.com/uc?export=download&id=1ktFA5obTGVxhRJ5vvIHfWUFB0WtmMAbi" 43 | url7 = "https://drive.google.com/uc?export=download&id=1pHi8rjcw9gOVLZX_RGwqmbrpOa3BzmCV" 44 | url8 = "https://drive.google.com/uc?export=download&id=1kC6IDFBEyZQ7URAvqGGEcN4s_gq8TEog" 45 | url9 = "https://drive.google.com/uc?export=download&id=18uT0ygBO46rziwWsBA-3MGnoDjZcMMHj" 46 | url10 = "https://drive.google.com/uc?export=download&id=1ihEH4AyRz-Xj2G1ZwZmEB-5NtKGBNC8W" 47 | 48 | # if os.path.isfile(r'AutoHotkey.exe') == False: 49 | # response = wget.download(url0, r"AutoHotkey.exe") 50 | # else: 51 | # pass 52 | 53 | # AHK(executable_path = cwd+r"\AutoHotkey.exe") 54 | 55 | if os.path.isfile(r'guavaicon.ico') == False: 56 | response = wget.download(url10, r"guavaicon.ico") 57 | notification = Notify() 58 | notification.title = "Installing Assets" 59 | notification.message = "Installing Important Data For The First Time, Please Wait!" 60 | notification.icon = "guavaicon.ico" 61 | notification.application_name = "Guava" 62 | notification.send() 63 | 64 | if os.path.isfile(r'Nexa Bold.ttf') == False: 65 | response = wget.download(url1, r"Nexa Bold.ttf") 66 | else: 67 | pass 68 | 69 | if os.path.isfile(r'Nexa Light.ttf') == False: 70 | response = wget.download(url2, r"Nexa Light.ttf") 71 | else: 72 | pass 73 | 74 | if os.path.isfile(r'Quicksand-Medium.ttf') == False: 75 | response = wget.download(url3, r"Quicksand-Medium.ttf") 76 | else: 77 | pass 78 | 79 | if os.path.isfile(r'Quicksand-SemiBold.ttf') == False: 80 | response = wget.download(url4, r"Quicksand-SemiBold.ttf") 81 | else: 82 | pass 83 | 84 | if os.path.isfile(r'playbtn.png') == False: 85 | response = wget.download(url5, r"playbtn.png") 86 | else: 87 | pass 88 | 89 | if os.path.isfile(r'riotlogo.png') == False: 90 | response = wget.download(url6, r"riotlogo.png") 91 | else: 92 | pass 93 | 94 | if os.path.isfile(r'error.mp3') == False: 95 | response = wget.download(url7, r"error.mp3") 96 | else: 97 | pass 98 | 99 | if os.path.isfile(r'notif.mp3') == False: 100 | response = wget.download(url8, r"notif.mp3") 101 | else: 102 | pass 103 | 104 | if os.path.isfile(r'success.mp3') == False: 105 | response = wget.download(url9, r"success.mp3") 106 | else: 107 | pass 108 | 109 | 110 | if configdb.contains(Query().copy_format_type == 'discord') == False and configdb.contains(Query().copy_format_type == 'plain') == False and configdb.contains(Query().copy_format_type == 'custom') == False: 111 | configdb.insert({'copy_format_type':'discord'}) 112 | configdb.insert({'copy_format':'```\nUsername: %u%\nPassword: %p%\n```'}) 113 | 114 | def centerwind(win): 115 | """ 116 | centers a tkinter window 117 | :param win: the main window or Toplevel window to center 118 | """ 119 | win.update_idletasks() 120 | width = win.winfo_width() 121 | frm_width = win.winfo_rootx() - win.winfo_x() 122 | win_width = width + 2 * frm_width 123 | height = win.winfo_height() 124 | titlebar_height = win.winfo_rooty() - win.winfo_y() 125 | win_height = height + titlebar_height + frm_width 126 | x = win.winfo_screenwidth() // 2 - win_width // 2 127 | y = win.winfo_screenheight() // 2 - win_height // 2 128 | win.geometry('{}x{}+{}+{}'.format(width, height, x, y)) 129 | win.deiconify() 130 | 131 | def findapp(appname:str): 132 | appname = appname.replace(' ','') 133 | applist = list(app.give_appnames()) 134 | strippedlist = str(applist).replace('[','').replace(']','').replace("'",'').replace(',','\n').replace(' ','') 135 | 136 | try: 137 | os.remove(r'apps.txt') 138 | except: 139 | pass 140 | 141 | with open(r'apps.txt','w') as apps: 142 | apps.write(strippedlist) 143 | apps.close() 144 | 145 | with open(r'apps.txt','r') as apps: 146 | finalapplist = apps.readlines() 147 | apps.close() 148 | 149 | for i in range(len(finalapplist)): 150 | if finalapplist[i].replace('\n','') == appname: 151 | os.remove(r'apps.txt') 152 | return True 153 | 154 | os.remove(r'apps.txt') 155 | return False 156 | 157 | root = Tk() 158 | ahk = AHK() 159 | ahk = AHK(directives=[NoTrayIcon]) 160 | root.geometry("401x501") 161 | guavaicon = PhotoImage(data='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') 162 | root.configure(bg='#2C2C2C') 163 | root.title("Guava") 164 | root.resizable(0,0) 165 | root.iconphoto(True, guavaicon) 166 | myappid = 'karimawi.guava.version.1.0' # arbitrary string 167 | ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid) 168 | centerwind(root) 169 | root.lift() 170 | 171 | sidebar = Frame(root, width=73,height=501,bg="#1E1E1E") 172 | 173 | #fonts 174 | 175 | font1 = Font(file='Nexa Bold.ttf', family="Nexa") 176 | font2 = Font(file='Nexa Light.ttf', family="Nexa") 177 | font3 = Font(file='Quicksand-Medium.ttf', family="Quicksand") 178 | font4 = Font(file='Quicksand-SemiBold.ttf', family="Quicksand") 179 | 180 | #fonts 181 | 182 | #root assets 183 | accountsicon = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAIsSURBVHgB7VXLbcJAEF0buNNBnApC7nzsCpJUgDsgqQBcQaACoILQgW0Qd0pwOuCOgLxnzaKV5diAcyASI9m7zAzz5m+l7vTfyTpHKQzDZq1W84/HY9OyrKTb7c7ydDzP25bZKgVcrVYDAI0z7GS/38O+l/DHcrn8wvFq27bfbrfnRfbsIuF6vW4ZYAvcAzwJ7g4iDhmVyGK+DofDDDz3akBEMeRJIKTxrdfrjfA8ghUJ6CvlkI2hM+EdvP7VgKCWeL4wmTAey+mcDNm21nFUBcBEzqbJROM8yLk1nHDUGVQvEjISGHWRpikaI2g0GtFutxtA5FOOlKdRoW7MxKf8rbBpSrsUQCEON8eZgDUVnbRLwZuD56sqgGLQx9Fn2hDxBpFNMBKRliNCB0cLvIW6NSqMkHNWr9c5i47ZFIySDdPpdCL1F4DYLi4AOIOuKqYET4QUB3rrkKQEUzg1glPBr4CyM9ltvsGOaBgOfJ/+ZFlPUs+WoffBBSCA70q6VlZglAuoOxLGOF8TDPy4aCGzWTDwIwD3s6BxHJPPLHHvPms7VjYN3JUA8swUlZER0VaMJ5kATiNkbpp0b8Kr4BIwkuxSDnyTXwzNZ23FZk/zUkDZ+g49zPvWnUP8Usj1RfOkdkylq78serU5fLF2zL26jlKDiOa0d6VMysDYaEB2YQJlMoeqGkV8yX6d8k7biHaTOqS1pON8VYG4DFC3me5IRsjxYbov7Ys73S79AJnXPFtRQT9GAAAAAElFTkSuQmCC') 184 | addbtnicon = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAACkAAAApCAYAAACoYAD2AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAALTSURBVHgBzZm/btpQFMYPBkFG3qDuxp+BdEDqVmfrVgQPkHTsVPUJIFtH3qDpDog8QZ2tEkOTBcTmRyAjEn/6fdZ1ZIIdfOEC/knI92Jb/nR8zrn3HGdkTxqNRtGyrEYmk/mE6eV6vS5ibAfnMfcw9zD0MH5YrVbucDj0ZA8yOhcrYTd4+BdMHdHHheDfg8HgTuemxCJbrdZ3HDr4FeVwaN3bpGJ3ioT17Gw2+0v2s9wuvOVyebXLDbJvnYT1rvF6hxiW5Dj47lMul+eTyeRv3EWxIpvNZhu+18XwQo7LBZ7zGUIFQh+iLogUqQR25ITgeU6c0C2RDBDc8FPOAIVWKhUPQp82/g9PVJD8EzMRvC8zBNOHcDBZ4bNw4j9yXoGkqLLJCy+vG37IJH0j6cCGfz4HER+2ZFsMsFgsZD6fy6HAYG2ucBz7IpUVbTHAeDyW6XQqBvBzKAe+SAi8FkPQiiYsSdQeQSxGtBxnyTOBozY1liMphttBS+0HUwv10SdtSTeXFvZ1tqSbYk439TBymWJ2RfBoNIr8v1AoSLVaFawqkhDbEk1yuRzrF9kX3suEr/VM0YQWqNVqsecDC9brdTEFfdKTdOMxBc0k3XgW6uEnSTe+JV1JMWws0JJDSTHsfFjYptMnXTFEPp/3f4bwWzN+CoJJ71kEiQFKpZJOon4TtmR49JM5THqHg5Eo54rChG8AL2jD+CL5ymHJW0kR7BUF442SFjU3q0VHzo/X7/ffB5ONtRv17lcx9NoPgHX3VfiPDZGMJJj5h5wRut3rLttWGKLWfcRWim7gyImhwF6vt9XiicwVKEvdUwtVAjtR52ITmhL6jOFHOW77bwYX+4ZA6cZdkKjTyx6RqebBK1wG665Ob+KeObscOLQNiZ2p19tNcrHW1weiWjLseDiiD78+3HOFU3uGRGiLDFBu4Kg1/x2rzojvOBTyqL7jDHWEhfkPKEMpFL4ok8gAAAAASUVORK5CYII=') 185 | addbtniconactive = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAACkAAAApCAYAAACoYAD2AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMfSURBVHgBzZm/b9NAFMe/70Ldoa2UicKEGZAYnXaKitR2rApq8xe03UG0G0xJNjaQYCf9CyiCNmxJRX9sxGxILN4QnSoBA65yxzuHgJ0mjp04jT9S5OZyF3377v24eyEMyJualTUyWEdGLALK4qEsv0zfFIcIjlLkAPLQdVEvLNsOBoDiTNbCJiewCUFrSmEJMWHRdaXU7uqCXYm1LurEDyfzj5tSlnhFFsPjsPXLUcX2FVmtWaaapNeDWC4Cjuuq5X5uIMI+rJ7Ob8gJaoxIoMY0DGocnFjbYZN6iqwezxWllJWEtjeMLAfX8+rpXLHXhK7b7QmEKuGKEYJKK/lP5c7xSyK9AFHyBcaEEGpzJW/v+scCInWQaB+8gi0O45yDKecPpoBPSoNqYxaoyU5yNvEP/BO5f2xtIlgxxobOJv6I91mSikiAXz+a+P7NxbBwxBd1hdN/eyKTtOLDrS94+ugrEiA7oUsw/ookRRtIiDO2YhKW1HBKWvOeXtmjkVWUodC+qbdcSCOdAttkDKzzduvzYHrJAIuClDKRasgS7I8m0k2W9o9zKs4KHblPOMWcDRjBszcNvKzcxdR0JvIagZhMz/CXx/q3OuC1PznhxyG2JfuxutDwnvy9SAptSQfpxhGcMM+RYjiwHbak+owUwynSESRRR7o5FG4Te0gxrkBd8DH9nFRy1rx+w8Asv5KA/bFeyNvONf2Gb4ZvCbSEBHj26g6mYyTqMNgfvQuZl8wvLlDhRyJRrivK1EwiIp12G8YTqbecG0llpIr/egJX2oOjXC0lB2C2YuN2+02gdlNGbQFjTu5cXFyhlv1DAZHcOXB41g7GiOJtLuSDXbZLpyDtrFKOxz85y5Tv37MvtXh69ifffbRKfFtL5C4eBS3wwYJd6vZZaBP1/ZG1TeQJHV3rRR9wSO2EdX37d3pPuYkluUc0ghYMn8DqFxysnT7YSeSeeavL4VnVxLCw9VQP/+tGrF8fNFos92k2aIB8qi0nuAT/nkKlkLMjp7rYItu03ABLrX463aLWrdP0TXH0gZp92kaTf8eZwV4cYX7+AANgMwsKI6rmAAAAAElFTkSuQmCC') 186 | removebtnicon = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAACkAAAApCAYAAACoYAD2AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANFSURBVHgBzZk9bxpBEIaHA9mWJVtEcmWKQBegcbp0OXfpgoDeuEyV5BcYd+nCP4jTA8K/ILhLF7uBkquoQDoXFCABeee0i47P210+H8m6XW5P93pmdnd2LkSGZDKZqGVZmVAo9BHdq/F4HEU7Lu+j76DvoOmg/TQajeq1Ws0hA0I6g4WwAl7+GV2b9KlD8O9qtfqg85CyyFwu9xWXIv6itD5s3XtVsYEiYb14OBz+RWaWC8IZDofXQWEQXnUT1ruBe2tovqPt4IVPMpnsN5vNv8sGLRWZzWbvEHslNE9ou5zgPZ8glCD0adGAhSKFwCLtELzPXiZ0TiRPEDzwg/YAC02lUg6Evkz97u+ISfKPNjODTXExmd77J5Plv4sg/kP7FchExWoyYeJuxCEv0gU6DOKIz1c54yfuhsiWf1vTodPpUL/fX3jv+PiYLi4uyAB2ewJudyNCYMFUINNqtVbeNxTpraG4ljyREHhDa5BIJFZa0hSRI5RCYka3VB9c5VpVdEIALn8TgUlt0iDItaqoiuR0MCLyQWWka9vttte/vLxUes4/XicEWB/HZJw0kBbodrueWO4HvVT+UzwuFouRJlcW8ro4bQCOVf5b1l+DaGSdpcePjFVp6dn+GsQtMuTo6Mi7DgaDwLFyjHxGF2ORu4Rj0qHDxrEQky4ZIGe0ysIuxxi627FwHn6hw8azZJ0OGC4sRGDJ2mySqYJ0nXQl70R+/H05xiTZ4MqHxfka2nVaE14P/WvibN8QrzTjpWow6SMfgnSePj8/97Y63h6DkGNOT09JBy7J8NXLzLnGI9I1rfMN7yqqWx9bdTYkAnAqlUpiIpLJ5/PfoPwnaeK6LvV6vZVj2OpnZ2ekA7TcylrR1JEWZ24+Ldq0fyZWZKa2RWTBt7gYLe4bhA9g1/4fpkTyTIKZv9MewQS+n62yzZVZcNZ9TqfTHAY27RgWWC6X50o8CwtWjUajvmuhQmBx0b2lpT8h9BXND7Td8p+LEPuCiVJaNkCp0ss1ok1l8DPUebIGVXqVa+Zc5cDlbkNiXeHekspgra8PjCjJcMXDJn3468MjkoYHkTMooS1SIsLAFnv+Wz51LviOw0KexXecmo4wP/8Byn5vdk8tMgEAAAAASUVORK5CYII=') 187 | removebtniconactive = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAACkAAAApCAYAAACoYAD2AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAO1SURBVHgBzZnPTxNBFMffbMs28UdSNaH0IkuMR80WTg0mlIQLoIFe9QDoHyA9c6A9cC5/gcDFqxiFesC0hF+eZL2aGFYvAokGLyasYcc3u91mt7TbndlC+STNZnffkm/ej3kzDwKCvCmrcTkCkxCRhgCoio/i+FNcJjohoFNKdABz0zCgkh3WdBCA8BgzYbEumAaJTFAKGeAERVcopSvjg9oy13dBDT/sDrw8M808fhGH8Ojo/UJQsS1FlsqqQmNkScRzAdANgw63SgPJ72Vpb2DK7CL7FySQocgy2V/fVWf9jJqKLO30z5umudym8PoRx+Iqlvb655sZNAy3JRBoHi4ZSSL50fTnQv3zcyKtAqHmInQISaLTo2ltxf3MI5IVCcvBSwixHydYTCl3MXly0pRJucMCGfEYribuBzWRazvqNHg7Rsdgq4m74mvhXttJHYCgyI31X3D002j4LpGUYWTsDgjAwt6HYT+J2gLDebG48MP3vaDIeBdrwQCLlkhCyRTl6uJecnO96MnThu8SyRiIgkvSBF4WiVXRMjkI+qFfaIPCkwIY8ltRU+Zrea1CG5SgIiMyTGK4rf0gBMUJ7etXh9b90+c9gb5z2/OkQARgKEooVXjycWTstnXdKP2GYww78wgLnx8sPZhIZvfsRRL4IKqEAhVoAyxX2a/ZfQjirLoVaANOrjq5Vn8fAkUCQRI9doiPA1T60aFt090jgwjCIi8TJlKHq40uYTM/AQG6qxV9dHja0va42o0SAuHGwtbRk/QLXGFwidQlYkIFrjabUeMMVnESscT7pRM6p4+zTuTGfe/YdCf5w21IUImy/dr6dqqCsc9ACJxO1OxeBNRUyaY13dqq4cnwLQGS4fkDD/tvWq3uI7bHVmxUbe7dvwY8YD5aBzKra1vDJ3u7xnW+KS58x9bXWiSDdZ7c3F3gQB8f3O+riWS831ZnCSFF4OTT1h/49vWvrw3z+oPUDeCDzjizIs/+B3OzHDY320TNiwxPWyQROoMXocW9bWBzMSQ67H7kEYmTAx2tctBBKI4Es2nvlO3cBoPlgWnSAnQAXGUKjx9p50Y8Tffk77bUPJ7Wmk662g0T+GRQyzd653twqFY8E3pxoxe2wSE05zf1bT3p3cMjr4kzogsYweAOrPIPi7U+B+sJfASzpxyWVxUIC3qPNsm/RnDPLZhYnMxOEYH1lHlOwhZ8eh2Wsykt8FInPFyx0wAy9jyd9BL71Km4THS2ocac1uAM/49zE1Z5hLn5D/AEd/CQzLybAAAAAElFTkSuQmCC') 188 | removebtndisabled = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAACkAAAApCAYAAACoYAD2AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANuSURBVHgBzVm7UttAFL2WzRtmnBqYiC6lUwDuIjo68geYMlWGLwjuUvoPgD+AL0B0BoqYL0ANDCUZZhgbBpxzFK1HtiV7d/08M8t6tSvpaO9zLxmxRKFQyM/MzHx3HOdbs9ks4FIezY0tCXA9wHzw8fFx+fb25tdqtUAskDFZTGK5XK6UyWT20DwxBEj76E5vbm5ODG7TJ7m5ufkT3RHI5WVwcJfLumT7ksTuuRDrsc3OaSB4fX3d6acG2V6TW1tb+9CpMxD8IqNBPpvNltbW1hr39/fVtEWpJEHwF7oKCM7LaMHn766urgqIXiYtSCQZETyS8cJLI9pFkgaC3fstkwGJBiB6G7/YZjiRkfwZkgXb4gnG9DVuTE58dnZ29mLCBAkGieP4hZa4IWY66ZJMAcDDhcX/VRbfEjeM5U7aw5o2Go2GvL+/J87Bxcjc3JxYgGLfgNifchxxF20JEs/Pzz3nLUnmcV8JfSUkCYe9jzAltlheXhYkEYlzeLbYAs/cE/pqWjQM5k73xl6i1YWJCkDkn3KwJE8M0E+0utAlyXQwF+WDogsl2peXl3C8uLiodV98vYkKkB910hUDzM//D+X1ej0ky3G/l1I9SJLrdD9KAe8oONhFV4YA6ipb2tgWDC7GO5kGpatK1zrHA8C19g+0UELH0pV7UveYwt6JjREkGch0IyDJJ7GAEl1apIlDqYSNuMNjMfpbmWLw3O5EZ+GpBQsLDioLZ2IB5cCVKBmJ2BTiY6USNskGVMR3mK/BYfoyIBh5VDRKGtuAUq5Wq0GYqmE3zvGVnskDEPjDnuGxH9QaC8M55Z8wM4+KT3em5xtGFd3Qx8izsrIiBgiur683+CP8tMfHx/r6+jrftmvyFL4YBaxwh7izaY1JxcLCgsmjKerDh4eHGn+3HWm3t7cvMOnJ5NHaRaLN3CDuA5C0cu7DAt8P+9iJX2sjSUtCdygTBAiWIx4tdJkb9QClDqqBJ+NHGWLuKvEk+gQcyv0JECXBo6SJVMdFoqwiQEeKoyz/RTbwA1XfStqavpXeYrHoIqxdyJAy+DgYUeC+Djp1sBMmNXPWili3dGVARBZcvrq6quisN/rvA0GyUcXDE0Nw59DOkXic+L6v7eqMSSpQDRDzPRb80T5Hp043tiRAY/JSY7q1tLR0ZkIsjn8pJ3nV5Onq/AAAAABJRU5ErkJggg==') 189 | editbtnicon = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAACkAAAApCAYAAACoYAD2AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAPTSURBVHgBzVnNTttAEJ444V8I58Sx5oAUQEL01lvNjVsjeADosaeqTxC49Zg3KL0DCk/QcOutwIEfgRSLA1IlfsJ/gyDpfKt1ZCd2vHachE+ydm3vaj7PzszOjhMUEdlsVtc0LZtIJD7y7VytVtO5b9jv+d7ie4u7Fvd3qtVqsVAoWBQBiTCDJbEVFv6Jb00KjyIT/rm1tbUeZpIyyaWlpa/crPKlU/uAdtdUyQaSZO0ZyWTyB0XTXBCs19fX+SAzSLZ6ydpb5uUtcDdDnYEwn6mpqcrh4eFvv0G+JBcXF3Nse3nuDlJnMchyFpgoMdEdrwGeJCXBVeoiWJ7pR7SJJByEJ3ynHgBEp6enLSa653ruvJFO8ofi8eCoKLMzvXc6k+Z8y0b8i3pLENBlNKmjvtxshwjSK/Q2YLB93tge79RkjjqESqVCJycndHR0RI+Pj0pzWGE57HDoC01G0SIEPz090fPzs+sCUqmUa9zx8TE9PDyI91dXVzQ2NkZ9fX1BIhCa/kKbKcl6mRQBTZydndHd3Z3vmNnZWRoYGKgTRDs0NEQjIyN0cXEhNJrJZGh4eLilLJkj5BPSo0ukAKdQnuMpBM8nJyebCIIUNFwqlQRRXdfFuCCwp6dT7NEmKeL8/FwITafTZBiGa1n9PsZJ8OXlpW6TLFxJJtJBTeaDSoBQYHx8PBJBPAfJ/v5+mpiYIBWAH7zboJigShDPYbOKmNM4rzMoBnSIIKBrzpT/DRIEDI1igCpBeL5t12HQNkmQgGCbSCsNnp6e0v7+fmiisEmL2oC9yyBmqi6xPUcRVoptskxt4Pb2VrSIe9if7+/vBdE2bLCZJJ+H9zhgzlFE2MHZuU3GSBAQmixyR3nvbgR2HzgECGHJR0dH4yIngMICNFloTDLDALsPrk4BlQ+N03TYZFFlgr0VRgkjgO0w0LwiRGlGSGWVbuMQFDQDmcv19bVINADVZYUjXV5e1kNVUIpmAyUZtOIghgxYpmuB5xs71YoCaHBmZkb146zNzU2RhQi9cxL6jydjDReCZsJRIAQhB63qhXnIfFS1z1r8xln5LvquIy2fuXFaNKn3qGsRcG2LrJ3P3LQV3GMAzt3zzgcukvAkqJl6CHbgtcYqW1MsgB2wfcIMTOoyQHBjY6OpxOMZsA4ODordJioJrnq9842qkugNdz9QZ8t/ZTaxL+woeb8BSpVe1IjiyOA9UISzBlV6lWvmqHJwk4uJbFkub15lcKi/D4AsySBrMik88Pdhm5OGdZkzKCE0SRvSDEy557/DqdPjPw6I7Mr/OIUwxJz4D8RcNU2wlYoUAAAAAElFTkSuQmCC') 190 | editbtniconactive = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAACkAAAApCAYAAACoYAD2AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAQ4SURBVHgBxZlPSBRRHMd/b3YdMY32ktnJ0TKCCNa6tBilx+iPCtVV61yUnawIVyLqZlGnoNJDnYKMyu0guOK/m05JJ8EmCPwDhpESbuy8fr+3usysuztvZnfcD4x/3r7hfX3v9+/9ZOCRdyPhkBqANggopwF4GIdC+GiWKQZjYHDODABzNJGAeHuLboAHmJvJJKy8DDpBYa2cQzO4BEXHOecDZ5v0flfvyU78PHn8RtI0o/hGCArHwN3vlRXrKDI2EtZ4OXvlZeckMBIJ3uJkBkq+D2NTxzvMMjbjk0BCU1U2MzQZvplvUk6RsYljPaZp9hfpePMRQufqi00d68k1IetxC4HAo7DDKAqLnolM92aObxMpHISbj6FEKArvPBPRB6xjNpHkJGSDO3DE+VhFZ2q0OpPNJk2VjZRYIBEqx2hiHUiL/DQR7gR7xigZFE2sHm/ZSdYDPrG0kID73fPQfW0O5uf+Sr2DHt9DGY5+DtIXL7tIC9OTyb79qnis87qvz8Hy5lwS+uhZA9Q3VDgtESqjFAzwWIhknHVwyQRJO/H8yU+YnVnLOefl2yNCqFVg/cEKqD9UAcNDv6SFYkhqFSKFRzO5jCKO7fa8WLSyKpB1ERrPJpBEVe4OiDkk9PWLBbj3qD7vemSbdORBU5VPeW9eLohFT5zaA7fu1KYXzfbHZBO4/ieZtsn1taTUmgEV2tBxqB6UY8sG2y5VexJI4yRyX40KXXdrQQZc5bTCONegSMgKfIjjVufKDwsr6DAaFAF/BApCFCc1KBAfBRKaAkVAVmAVen622OpEwSJJBAkkIU47SOHr6sVvroWSSAMKYHlxQ3yvw5gpe8TL7kQaQQyYq8zVndHO1+lU5qG4R/l5Vl8TQguwQRvo2AamRf6F3Bw8shWcrWmyWAIJDJFGkJkQx4jZAR6JnAqJVFiDguoadsHRxqqiiLMwGkwkYRA7Ea/AI62X94rHLxIKxBUs01cZx92UgEIIsbTpLG5ZWkw5zK6qgNR8tMd4e0Q3RKmGN8P3DFiz00sn8Ginxn5jobEofq+uKQcZyKmGYyvpUHXgkGMtKUB7FBcy4dei+aSy7wDO95u+Bz9EqeUFst2n/YdlbdY42zRTlxZJfBwP32SM9cm8TSKHh1bADQcwjl64XO3CqfiVrV6RLUIOjTeOcOZbS8UN6V0kbGmRBfgV/LYKpQSTS0LhLdYhm0jsHBg4qwtKCMeWYHvE3mXbVmCQHZgm74USgFGm99xJfVuLJ2fW/jAWjuJtzbe7eCYk8HyTHs32Wd7SYtPjSah/rRe0QQyIXfm6vs6d3im88prYI/KhBYMVWPwfOmumDWYiXaSluhxiVzUoFNw9nsP+suG6kiSx2KfpYB7iKe2cgil4oxL62xt16VDnudxNmQE0p/rprJalbp2aZYqRKqiZDkn8P85uGHQjzMp/GIsnGBBGlAsAAAAASUVORK5CYII=') 191 | editbtndisabled = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAACkAAAApCAYAAACoYAD2AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAPISURBVHgBzVm7UttAFL2WDZjhpdACE6VL6RSAu4iOjvwBpkyV4QvAXUr+APgD+AJEZ6CI+QLUwNBhw8DEPHPOjtYjv9DKknHOzCJrH9qz97m7ZKRPFAoFe2Rk5IdlWd/f3t4KqLJRnFAXH/U+2v3X19fjp6cnr1qt+tIHMnE6k1gulytlMpk1FFdiAqQ9PPbPzs72YgwzJ7m4uPgLj22QsyU5KOWyKdlIkpCeA7Xu9iM5A/iPj48rUWaQfa9xaWlpHTZ1AIJfZTCws9lsaX5+vnF5eVnp1aknSRDcwmMHBPMyWPD7q3NzcwKix906dCUZENyWj4Xbi2gHSToIpPdbhgMS9UH0PFzZ4jiBk/xJyYP7RQ3O9C3sTFa4dXR09GjIBAkmid1wRVPdUDODdEn+A4CHA4+va4+3Qg1bMiC8vLzI7e2t1Ot1eX5+NhqDYL/FDCeaJKUorXk3EsjHgnzcUUionSDJwc5Uewyi9tjYWIk/coqpZa2DuclANcH9/b2asBdmZ2f5zSZBLghBW5D3pdFoqLqZmRn1/h4wbk0Yq+nRcJgLMUB4UphH10lYPz093UHQtm3Vdnd3p4hiTtUvCtDApxw8yRVDPDw8qEk5wdTUlJo0ajFhgtSWVrWp5oLtoPVdDMFJifHx8b4I1mo11U5TmJycFBOQHx3HkZRgSpD2yHYT4FsFCx9wJAUMgiDB5JKKJAdFMIBjSQowJajDUlwkJklvJUESiJIgs87NzU3TAeOQ9CUB9ISMmaYqjilNn9G4JgmgMw/JUVJ85+8ENtgCdSzG81wSQAdnkmN+TpMgwXN7jmdhqGld+gSzD9VMQix8J8m0wIsFCxI4kARg9mEOnpiYkHw+nypBAgv3LGzTa5CEZzJAp8K43qmhHaZXSm0HtVypVJTjcPAhJOBGDaIqaXfcqhGmUuOiuPPRoSpqixbCPv+oJQWXTxcm5xu91eoHlCBjqaFD+aenp1/4Q/W+vr7+u7CwwJlXo0Zit6ykQS/WzmJSOI47H1OPx/c3r66uqmpx4Ybl5eUjNLoyfDSlSLQYFdSxAZKJgntScH5oaiVc10KSnoTHpgwRIFgOeDTRYSC0A1x10Axc+XiUoeaOK56uVoxDuTcEoiS43a2hp6uRKG8RYCPFQV7/BT7wE7e+O736RIb+YrHoIAgfSYpnIQ1mFISkjXYbbEecO/NScBXjSEIEHlw+OTnZMekf678PBMkGNx6uxAQlh3KIoL7neZ5xqItNUoNmgJzv8sIf5XNw6nRCXXwUbl6q3G5hl3QQh1gY/wC+zk56bxi4QwAAAABJRU5ErkJggg==') 192 | copybtnicon = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAACkAAAApCAYAAACoYAD2AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAOlSURBVHgBzZm/TttQFMZPEgsQCGQkBAgEdQakAgvdutVs3RoBO3TsVPUJgK1b8walO6DwBA1bt8ICSAy1QCCYCEIgBfGn3+deW05x4mvHCfykyNfxdfz53HvPPeckIwkpFApmNpstZDKZdzideXx8NNG2vOs4d3DuoOmgvf3w8FAulUqOJCATp7MStoSHf8CpLfEpQ/CPzc3NtTg3aYucn5//jMMKPqY0D627qis2UiSsZ+Vyue+SzHJROPf397NR0yDX6CKst4jhLaH5WlqDO30mJyer+/v7v+p1qitybm5uGXOviGaXtJYuPOc9hAqEbod1CBWpBK5IG8Hz7HpCn4jkAsENX+UZoNCpqSkHQndrvg+eqEXyW9JZwUmpYDG9CS6mbPAqJvFPeV6BxFTexMcfbsxDOukleRlYmJ+X3or3hxsi/wS3tTCq1aqcn5/Lzc2NRGGapgwPD0sTcNjzGPaKoQQu6Qjc29uTu7s70eHq6krwEBkdHZWEuD4Ux6IrEgIXo+6gBSmwv79fBgYGBPOmbl9a+ujoyBXaDCpGKBpc0aKx5XlDPDQ0JL29vdImbBXUZG1JmUZWjgvDQUPFg6nS2dnpTonu7m5pFurjnLQkZWjJfD4vKTFjIK6zoFaahav/5OREbm9vG/ajlUdGRtyjJqYR5Xp0iOOeuOL5mZ6e1p27liEpcHp66rsnrv5G0DXRU5ydnWn70FRE0pJExz1R2OHhodau5WGorM6K7Gj8e5/gjyfxl94QczfSxOGcrOj0pDu5uLhwh8uD+/PExIS0GMdAPrwLhzkT1ZMrkm9/fX3tf9fX1ydtwLVkGY3IvZuMjY1Ju2FhIQtLluQFw8pHlvEa2mV5mbilGTd9gEm3JAV0Y01dWJLh0fUrMOkaXMOyJMxvuPK5i9Cpe64qDL7E8fGxf08EjleGcX+RQ76wsLAK5d8kAXTidE/0oQcHB5H9Ozo6Incm1oq8dk1kgZyb2aItCdDJf+jIe3p6ZHBwsKHFgbOxseGHUTU94Qc/Js27GdWMj49LCjABmw1+UZN3cyXBzF/kGYHfXv2/yvYkVkKuu4MwitPAljZDgevr609KPKEBHWLDcruFKoErYdfqRp1K6CWab6W15b8KptgnLJRivQ5alV7WiNKI4EMoc7FGVXq1kxtWOXBYTklsRQ1vUadz7AxMlWQYNdkSH/77sMUdTsUMWiROE9U0sFn4xOkrlXVa3nUV8VPIjvofpxRHWJC/T4aZo/PlhasAAAAASUVORK5CYII=') 193 | copybtniconactive = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAACkAAAApCAYAAACoYAD2AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAQsSURBVHgBzZlLbBNXFIb/O3YmIg9htSoQqRKTVEHdFNlhQ0RbiNQuoK3iLGilZpGkiF15ZIeEEI5YwI7nCgSYBUiwITzDLkYQssNGbBAhMAtQIKsgIIiJPJdzxtiMk3henmA+KYoyviP9Pvee/9xzIhCQy6PxmBpBEhFlIyDj9ChGP5ptiS4EdCmFDpi3DQOZnq6cjgAIP4tZWH0d+qGIbimxCT4h0Rkp5bk/NuTSvt7zuvDWvXW78qaZojdiqB6doj/kVayryJHRuCbrxdkgkfOAbhiyy+0YKE4fjoyv6zPrRHaJBDKaqorszXvx3U6LKoocGevYb5pmOqTtdSJGyXV4ZLxjf6UFi263JRAyhS+MoojU5s77Q/OfLxBpJYg0j6BGKIrs39yZO2d/ViaSk4TP4BfYYidmKJkS9mQqO5OmKkZrLJCJ1ZOb2B+URN4Yi/ejvGLUDHYTe8aXtvvGWOIZXES+mjJw9dI0Jifew431vyxH8p8VqALe9lba9ploQaB7FFngjoFHePcmDy88zL7Fu7d59G5rQUBidVyCgSOWSCFFn3SpPVcogixw/a/L8fuWb9HYFKm4dnJiFqeOvrCEVgNZUrcl0spo4V5Rnn7a4uTWFfipo8lxrUQ48NnkS41iquGXvCaHKPsloiJJ223dBxEmK1tU/LblG7S1N6Ba6OtujAopNenrVukOn9fBvasRDiIeJYEaQoCz/8LpKbx6aTiu4yj/+1+L9dsjMc5uDVXix54eZgv2dDz9o6ND2NCiCIELZ6ZK9pT829nATx59bjnF8MVpzx4aikiOJGPZU8LZnnq3rcKBPc9KluYFFqnDw5YXbWXyyWzJC9a6+OViNDQV4sLVyCN6lAxzRnjI7tY1yzB+57VVSYpwfd53qA1LCSW2Tl9LPuA0d1vcSxk5S99+8vHnbVrb0YylhixSjwoTGXLMPi8vbN/5PWrAbcXIYxhfMYaCjML3NSEpml8hdB4zPZ053bqZU2d4BSHgI2M9QefRasgsP5ibQ1pVwX1voP6mrX2ZVUXOk6k3OFQR/hInjz0vveOCXhzDlMzn+t34biHEYQSAzXzP/xOYdqnbRVauUnHwRLtL/ZYDC0QyN+8mRqUIdr/00v9wrf5hTQO6t36HxmbHuk1RzLYW/ygriyIiB6RJfXeAbeeobN8VgkVRcTEissv+qKzvpsmBTqsGUUMkjQR7OsunbAsGVnwOTFMOoQaQywz9+XNuwYinYtW+dieeom6t4qQrbFjgXxtyqcU+c7xafMr4wNbkCTqDZIiDTlNf90nvOLW8Js2IlmAEQzewzBwl6/wzOB/PLVhhymFFVUO1UPRkhfO3GL77RBZLk9k+EcBPOXIKleAPjUj3JHIzXt8L3MwWjgE2FebpYrUodJ2abYleuFCLHPL0f5xmDPsRZucjAK6koDNsxFoAAAAASUVORK5CYII=') 194 | copybtndisabled = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAACkAAAApCAYAAACoYAD2AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAOoSURBVHgBzVi7UttAFL2WBZjHgF0DE9GldArAXURHR/4AU6bK8AWBLqX/APgD+AJEZ6CI8wWogaG0YQCbZ87ZkTwytqyVLGPOzLK2dC0d7uPc3c1IQhSLxfzY2NgPwzC+v729FXEpj2EFTFxcd3HffX19PXl6enJqtZorCZCJY0xipmmWM5nMBoYtMQHSDqaD8/Pz/Rg/0ye5vLz8C9MOyOVlcNDLu7pkI0nCexbCupfEcxpwHx8f16LSINvv5srKyiZy6hAEv8pwkM9ms+WFhYXW5eVlNcwolCQI/sZUAcGcDBd8/vr8/LyA6Ekvg54kPYI78rGww4h2kWSBwHt/ZDQgURdE/wUvdhSOVyR/U6rgpKijmL4Fi8kI3h0fHz8eMUGCTWIveKEdboSZIl2WTwDwsFDxDb/i2+FGsVxIZ1vrwsvLizw8PKg5CoiKTE5OygBg2JcQ9rrJb/SiDsF6vc7WJjpAr1a2U1NTkhD5iYmJMuaKIgnB3ox6ebPZVC+lh3K5HEMSavv8/Cx3d3eK6CDAwmSDJDOsaLz4IuoHjUZDvXRubk6Q2H1taUd72tF+ECDkBQMPsiVl9PNyXHA5aHrrQUkT6McqJTgPCvJjTlqSMujJmZkZSQPIy6IJL1qSAnTlCZ5RFa/rZTaXVDyZRJ4KhYJu7lqmpID7+/u2PEUJOKWJEkWv62poKiSRN2omwSh5IrGbmxtFVBdcYLg6hn5o+HCGK6lQ+8+JoSguPVnXscQukcKqwuWD4Z2dnZVhgttikuQCsxhlzDDxvw+GKSq0aYD7dkqQgxBs6vxgenpaPho8WDCQW4fyiQE9dQyu1+BJRz4hGOVqteqq7QPE+EhSgC9FKeKAfxRJFMM+WGtVeS+w8gmKui9PvUar1ZLb21tlq9EWXf8YRlleX183FxcXW/i4LgnAF1Ke6EkSCRu0oUKwf3MBwjkMsNu+urqq8XNH81xdXT3GTVsSgP2bq/d+nYRCTq+zM0X0bffs7GzJ/2K+e8gWvJFo301vpiFRTDs8ay14rcPfrCRM2zJCIAV2PR5tdGUv8wBHHYyFLR+PXYS564inZ4lhU+6MgCgJ7vS6EaoDJMpTBORIaZjHf570/YTcVMJsIpfGpVLJQjEdyxD2QuwoKJKt9zn4HnHOzHlWxHNLSwYEvccCOT09rejYx94gk6x34mFLTNBzGEcQ8n3HcbQ7XOJdPNMAAm7zwB/ji7frtAImLgYXLzUut6Chh3GIBfEflV3nByNZ5jwAAAAASUVORK5CYII=') 195 | copybtnsuccess = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAACkAAAApCAYAAACoYAD2AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAOQSURBVHgBzZk/TBNRGMC/964if5YCskiUitFEJyASMCZSNhNNJAEjnSgGjUzq5mJKnRw0wdWglAlIJMrgxMB1AzHQwcSBwSNBFxRLAKHS3uf37kppS0vvyl3b30Lv7j36y3vvu/e9rwzyxD3qdW6X8y7OpA5g2ASITgDmOmiBCl0r4q+KGJRAlec8AQXygJlpLMS2TnKvxPltcQnmkVVUxxY87wJmOhmWbJu4/wgBh6iDE44No9GN+Y3K5pRsH/e6kDlGIb+Ry/X1CsO9zlzLgB/1sH3yQZ/KHEtgi6AAXcgdS20TA4+PaiVle9A+OeBDxGEa6nKwF/H/b9TfaYEf7xeDmRpklNQFYQgKCA2GO5vooTUpAoSmYRiKBGPcO3f3zVjKveQLESRiDVoTwXnCIMzUaHNyMKUEDrITs0UV1CTAGX+bJEhIto7f84pog9LAnRzxCUna3nxQSjDwiR1OfNQkS2wUdWjadyocXvFRk+SM90FpInIEYPFt7zsUgMjaJmyvrEPNlQbDfSp2otU8BtwNBUAIfnv+CZZfzsC28ttwPy0d5Ix1gM3sC0bWtqCu4yJUuWoN9xX5Kk9NVK0nXbBx8Lqp/pQeNnE7o/q4ggIGzGnbSFohqIMuDjZgnaBOXpIiOoUIFEBQwPVTnXFif//B16cf4iKbWQWrWxssERRHDI7AwmCSyoZaTSRZNFmw0lUDjQ+terOhItV3N19ljDUZ7cJPSHDq2nkIh1Zh9+cG/PmyQlK1sPxqJiF46dktcFSVgTWgLJ3uaXaSZJeZbumiv4LL2jKwXpAmG/E139tVP0IeSJVlcNl3U5t6gR2COqqsHR8owZyFPI+tYgTXF1agmpIG6wVBnu8d6dRfQSpMQ56IEa3ruGCHIE21qh3INMlIJBpAANNRbi+ozMXLMJpkqD8QpqqXH0oICpiET8qR9jhr01pQme99e27/KmVbZBjtL/a0U2oWZhjrTL6XIikO5BzVJ1BEKDXzp1fZDtWCVqeWQme6W6ht4aed6k/+z56RF+n3MxasVqcW5UKLxgWHMj3LWvoTomd7mjZUOlDaWf4Ta5AjH5z3jGQtkhms9EqzNmXwsgjWXJVewzXzdqpyIGM+K2S1CKYAoS3PUInR1K8PAl1Wq3i4wTwyqOp0RUQNyLSBGO1kWnIfsQzoDeamNeumVK9BP3Uy10ELVERCTSMWol8aglWUbZkRS+Y/BdeeFKL/AeIAAAAASUVORK5CYII=') 196 | infobtnicon = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJ3SURBVHgB5VbbddpAEB0JFUAHUSqIUwFLB4THt0kFuANEB1BBzD8QOkCpIHIFljugAB6+14w4K4TRWtaf7znLLtJq7tzRaGdEvho8142dTsf4vt/yPM8cj8cQc6i3thgJ/ie73W6+Xq8TF3ulxCRsNBpjLI24Id7v9xM4EEsVYhA2oXAMJQ96icrmajiB4VT3hUEQhIjCEKOVRQLr6eFwoANbZ2Iag8q/WN6REMZmCOP0PSM2+v1+BNKx/k3g5K/MyZvEVArSjZKmeLB97cFboOOI1kbVJ2oj57R/+RDD+xlSgs8gzG0oT2lLbebgXXhqVK2A9HsV0gt7fGX/sWxCfXuxWMTZvZxizV7BpkkZabfbHXLc2kMbUD3j2nrveeLBYMDwGowUnkVSAjj3h6NsH0I+ldMXYZB4pkCMrB3qMhYHQMFvjrJ9TCqQz9UJk10Pzh74/g/OUDEXB6xWq0dxBGzHmEaw3Tpfs+7fqVfPUjN44OgyvEbc5A+UvIgDkFjPvV7PyUkrUcPsWiAVYRWJSjgr1o+dSr5JzeD3rMttgRgKUs54xz+lfoQ6JwViKP6nDhipGTiY7jlD1FOBWFOe8z0LhdQIiDI6PxaI9RzlYB1+kJqAnBlrIsZ2d5I7q3lG6zyyEuIqNBnTW3toA7Yi2/aZ63Izvk2erSP5RFnMSK2aPFsul7koFuoxyCI5ZR9L2qZMuQNpojZzcGl9GNYIJ9pEygmZHyPt05rykdbHNgLySE5hJ1I5NXosIqnd7NFBNHwtNnxKSMyo9EPNng3WUC3iRtwQM5HsbqMScQY2CjgAhliyfPIVvCljdvPUw+ABFJcRfl28AkcETJO5oIjcAAAAAElFTkSuQmCC') 197 | infobtniconactive = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAALWSURBVHgB5VZNTttAFH5vbAJqu8gN6p4Ahx1CFckSIRY5AekJwg1IbpCcoOQELCrEElcV6g7cE+DeIItuoPG8vjczUW2cxEPIjk+azGQ8ft+85/cH8NaAvge//YjbYagOiahNBBFvReYBwRQVpCwqJdKT44M09ZFXSyyEQYDnTNYGDyBCkuc0PPmcJivPLXtweRM3t7cVE9KZ2WDNAGmS5yx4C9LufpqZcz/jKJxBxIQ9RDwEZwlejx4f9bDbSafexNc3caQbeMnLWAg10Xj2AUbd1mIhRbCFBkrhufubPj1Rl8mzWmLRtNHAG0MKkD0p6sy188U1W0FrIyNy5J3nmqvnL4l5X0MqOOJ3FL8rMkSWk1lCSWNxJDaT3BSY9NM6pEU4ze952dSaOkWHK2kcoP02GmhYR3p1G/dkrDojmjPh2MgOsKS1KgiKCU3IZCcH6QBqgV/tWI3ZDEY8TSUcxaIVYq2hZ1eUgBfoix2rIU7FWk8cW3u+H84XbOZdsheYgAc4Q12AJ1jbhKd+YOPc3WH+EI0ng3qPD7BhbG1B6i4QVYgZTfk53rv/DR64um09yPA5e/TfUaP5XgjrI4JXoKhxJj9Xd62PsGFIPLvltEKMZInxD7Vgw+CQimRmP0orxDnRdzMHfuXvJVBKnRpiol8VYkZiN/BUCgVsFNR2ZBcVYsmjaOOtGTbgDDaE69s9SZURmzkpdielXM3mHtpN7LPWUY3MzI3lpFLXgQayptzKnqNSjzmfjrhC9UWoq6MZrAHXTJiazORjzv8lK1bqMXvggCcxSSQNgYfmK0lF1uydkVnC4tbH1lHb+sjtFA6O9u+GUANxyp0d1dc592loMmHKdb27qMSubPbCEAbO7AJ+GROt9WQWQlZs9oK/EJvWV1PPEUpNH4umy/o0r/aWO8ZzRL/4lkrE8bp+e/sc0ijw1CPCXZRP4DRjZEzGwySgpI7w7eIfPhlVtfZlHfUAAAAASUVORK5CYII=') 198 | settingsbtnicon = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAKXSURBVHgBrVZJdtpAEG3ArINvIK947PAN4ARRGPb4BMAJDCcAnwCyZohyAnMDs2Np+QRR1kz5X6p2ZEVD94vrPb1u9VC/q+p3dZWUpbiuWyuXy0N037bb7VJZSslmMcBaAFuUSiVHhvzr9Tq1ATYC7Pf7zcvlMkO3JUN7ANViwN75fB57nucX6coFFPc9QvFIhgL0p+v1es6fTqczQPMYA14CeJoHXMma6Ha7Q4B5UNaSoSco+wb37fSaw+Gwr9frP7HuFr9Nfui7jUbjN+eUiYWMU6VSmYkCyg5KxqvVKlVBbJ8j+1wZ8sXNXiqgbFiov3HyYd0D3LdTFlLk5rJeCLAfAhbGCYvubcEoZCy+O+oAsXwMDUR3KDe6I6xTAGrjNJnuI5HQhF/eOhx2AnZ7YPeLrP8IqAXx+pUFxAsvjA0VgFgBDrqEUrosSO45Ho8BrPuoXxkIwbDxGWATgomraB29MuKcWF4oRoC8iypiLYnUZow2m8093H8n4LwOo08DBMiALeMbJxKZB6AHWTM0sbIQkGlNRTHbp2UQHkCsZIy/FOkrBGTgpZt5elgXrgF5btX/AkIC+Zxer9dKTjJhqCi+Qd41MQYk3eGyJ/bRLgRAg/G5epbf78pAbkwWwVVzUP8ruk20r7h/yedpD0JNTHQZsZRWkqHo0lK6tylgOg220y5+mvxjoQT+LQ0UDe/aiMwVMgV5QNVqtQZ96YCaaUy0yPhMwNMsRQZPVZgGAfb+cOu5d5fycVVR4B2mMMTpVZ4aKxEiveg0iG8nuiPDkhsA5IIQM9t6Ja3ugY5x8onLrGlM65WiuicpmTWNSb1iUvckxahMTKtXlFwP+Teqe4wBtaS42brusQKMA8Mi53Q6zU0vvJY/h7SA1Ecy5LoAAAAASUVORK5CYII=') 199 | settingsbtniconactive = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAALmSURBVHgBpVZRbtpAEJ1xkKFRpdAbODcw7RcKrcJnmkQNJ0h6AuAEgRNAThB6gkRtEf0japPmr+wNQk5Q/ppYsNuZtU2Jje11MxLyaneYtzNvZnYQcsrF2C2XSlZTSnm/vyMGkFMwj/KXH+6uZeE5LZ1gawqgunmAjQCHY9fFIvaUgt1gS9CvHAIj4uXjo2w36mKaZSsVkMNXLFqnSqmW3lAwU+TRQU309UVu3BMycQpLj3HgebKbBpwI+O3nm+ZCyg5psCcgQZ3NN6HTqIjZqt7o1nUWC+iQl8fB1jQtzDHAgKceLV3tlIIrRNUmAwJShIGVhJ4CPAqBcaHa79+Jy7WAozH9oYjnKzxNpVQfD9+KK8ghWWFeAn69rkwQySviSSoK30voR8OXRyhSHYrUcQAs9ncmFd4vhAoYcAWo6oe15PBxIkEJyraEclqYKTId8pbCiROAwPYq4FJe4O8kIF3wC8pY6RsYXldmaOGASoJDFouGZVG0ZGQPDITBbBvHxGmYtVPiWvCaS4bPtOcGYgTItQh+1nIi1YmP7YPapGJZaht0GYBbsKFlYssIkLw44a9nEb8rWbtXFTqTfUPYNPEyE5CIZ8/YkGhU4x0kuADvl+0t3MqylwnIxAfLxNsTn77OH/UKngv48KCN8c/hLhQ954ah65d0srqRESCnO/F0ppXpaSKenPCMLyApQ3lNvfYTGEjBRGk+h75twwdaulQCd8ObypPniURwYzexZZSl7KXnqbr21OfL1WDcBqXqepuqbtoG4x76xN+vA6UP11qLM9fjZCrBLA1Iynii/QPkm+tWjhej29eDveqvbpKhrOR40gb952F5qWVIrQ3VoAJn4h1uYcTTnf/U5BNOJOJ5ErZBfk+pYTTC89gD/Pm7e7SxoR9gRysYzivr5h4CbUff08QRw3ReyZp7opI6RGXNK6ZzjzHgKnB0XgFYlofx3GMMGEo8zPnnnlyAq8BUY87/zD1/AaDpo9Q+PaIDAAAAAElFTkSuQmCC') 200 | accountslabelbg = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAAJYAAAAoCAYAAAAcwQPnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAIeSURBVHgB7dy/btpQFMfx42uE2oU/C0KCwW9Qxm6hb9C8AX2SJFPnbhnbsVPnTiVjp7pvcAeQGJGnCAmTcyyMEvKHhNw75fuRnGtfR1nyk8/1FZxEDhgOh2Pn3MlmsxknSZLpVCZ4i5aagVzHvCzLH/P5PH/ql5PHbligNEhneowF2KMhm+pxMZvNpg/dT/cnOqrX633VQF1un1DAPZYNPSatVqujFe3vtbpz//ZFv9/Pms3mLz0dCfB8+Wq1Ol0sFr6ecPWJPakIFY40suxYhuqJXSm08qfDZwGO09dwvSuK4rddVKVw++b3R4BX0jfGT7agr0phmqZnAgRgOwnVOBgMRhqsfwIEYk8tp6GaCBCQLqvGTh9dHwQISDdOT5z+YHsBQdnmqS3eOwKElTkBIiBYiIJgIQqChSgIFqIgWIiCYCEKgoUoCBaiIFiIgmAhCoKFKAgWoiBYiIJgIQoLlhcgrKV9NNkLEJA1D7GPJl8JEJBm6r8ry3IqQECNRuO7s2+tajmcChCAtTfy3ufVW+F6vb4QIADrmWVj1RSkKArfbre7evpRgCPpsuqbVsBLO9/tYznnznXIBThOrmur8/piFyyti0sN16kQLrxcbtmxDNUTd1pFLlW32/2pdfK9UBbxDFb+0jT9oqFa3J5/srmttTeybskC7DnU3DY59AeyLBtpKifWPGTb54Gv5L9NXv//XnNwZXufjwWqdgMqcrgxGMjgfQAAAABJRU5ErkJggg==') 201 | lstbximg = PhotoImage(data='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') 202 | lstbximgshort = PhotoImage(data='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') 203 | mainwindnote = PhotoImage(data='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') 204 | mainwindnoteclose = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAABmSURBVHgBzZHRCcAwCERvhIzgCI5w+y+RUawFCyVVMP3KgT+a9yQJcErUS4rZ8GIF3gPzmolAom+xIDXPRCBF/5P1ILtgJrAd8AkXmF1Q/m5+g1t3FvRee2SwovfPRBFW5hAojsgFVFcvVB/o3K0AAAAASUVORK5CYII=') 205 | rednoteclose = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAC6SURBVHgBzZLbDcMgDEV5LMAIGYER0lEyWUehEuI7HYEROgCP2hVUruP2t7EUAdec69hCqVNESsmHEBYpB7qLMa5UM3ODiVrrbq0N3ADPoO+9d8z5A1xKuUMyw3ahBgMMqI/8YzKaVzDGBK01ghnWDYDrBFtrF4gswoLBKyTw47dn4AW4uFENzxz8Wnn2SOQMw/xdmQ8HAWmIB5iDo8cbrszASZWdEqY6ZvA2gM8rKcB1pc68JfpA/htPi7Oiuz/kxKYAAAAASUVORK5CYII=') 206 | rednote = PhotoImage(data='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') 207 | counterbg10to99 = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAACUAAAA4CAYAAAB61jFGAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAS9SURBVHgB7VlBbxtFFH67tuU6SiSjNhKXiuUQYeVS91ZBEtsSSNza/oIsv6BwAI6Jj3AhuXFzcuTU0AMSopLXiVJxw0gcbCWHBS4cjGRxaLBc2/2+6ay9cePEs0lstfInjWcyO973+Zs3773diMwww9XCkogol8vpWCzm9nq9tGVZ/tra2s5ZawqFQlMMEYnUwcHBI5DZGpr2O50OOBR8/rG/v/8Y3QPbtt2VlZVdMYAthjg8PMyGCO1hXETzMXagXJnq6GsVfnS73R3M5cUAxqSgxgZ7ksGWPczlcpto72PK08Qe8DqubWHNNseYWxcDGJMCsvyAAnvhSRCo6N7p39y2gzWOGCAKKV/36fAknP093fcdO0zQBHExBBWB4Ty2pARnLiYSCa/dbj/CJZfXsb1KHfgRFf1Of83I0SOdPpApo8vL64SL9DG9Rp0+zO1izhUDRI5TMOqiW+cWQbkqFNpGOPCC61DKQZfF3J68DTBWinEoHo8zVjlhR6ZadPLV1VVPLomxSSGK50GCMSp/wVIfzcN2FoPoTujtLoH4JogX5TKkdI7jKXJD0x6Ng+Sf/RtZ1h3tX9nQui8YRDWpz0WfRp2OPIlKKjhpMMj4s42guXVekqWDI2hugtz6MLFKpcJ5qs08eXfUfawLCLnoSsxtIFMIb8cYPyZQpqkJ+EM/sh8+hnFRRFd5Dr+uaEKI0LmPQTPNSiGYp6/pe+ZGfXckKZ3tHbTmWbXSOGCFoIf3gzntS9y2fKiiOIXz0ozDD/oSfUGiQRmFKn3j2iXCNqpiQIqny8cN+cUNuRw8fuh8WOKY94Zq1bMWn+vo+iS5cgkwoMKPdoKTRqUYOri1pn46wwwzXDcuTMiZTCaPjimBvSOGTybKCMICwkCVDaFg9+joqBqJlCYzTv0UBR5asVareTIOKcdx0qlUagO/ille5ixLPrRtycRichv9Lcu8rG/0evIv2uGLF1LrdtVYGbesrZOTk6Lv+82RpKAOS9zHLNRI5pN4XD4GmbkIRM7DE5D7sd1WY24p7D2Eav5rpKhQMpkskxDV+DKZjKTKuKB637ZaSjUSa7VahUCxfunCLZsUIYL3/wp2bqKnXdoPrinL2qlZEco3N25cO6EwqFgRij1/5WcFOn+glGJ5P5GYKCGC9ui3YR7W0tJSFk8rv/EiVZoGqNLXIbVsPFi6HH1gR3kBczVQYWegVt6G59/h6KO48QuYK0VmIErODh4eb8p0cXtAyqFSqqi/NcXtU/YHB8yZLpMRICmfgwZy0jTRGOTDZp/UX3pyWghIMeWQlHqrW+90ZJp4hiQtr0j9TlKemsT2PZ+iWjXtPnwetHWh5ZHQL5rtpMEyRtdYHqvS4PSpNyFPsYWNCatFe08GYigeKrY3Gg1/cXHxnXavdw+veeXuNRR2owixpjoR5Uvb9Xr9+z4pYn5+/lck5k+x4N1JEDujyPus2Wz+f4oUJ6DWz1iQJ7GnWtLMIFFeCei7P+HeJfjRf5oQy+Hj4+N/gjWnLGIbmwsLCz/gXxsp/HmvjhPxDKr9jT6lVZuL+ODA0+WRDNofGLNC55ZRoTAh4s14xBrG8vJyFu+XXL6SZkURJHBD+LoxUHujyAR4CT10jbdXCFnXAAAAAElFTkSuQmCC') 208 | counterbg1to9 = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAABwAAAA4CAYAAADuMJi0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAASVSURBVHgB7Vg9bxtHEN3jB2gKEsDAFpDGyKUQQqgx3RmJJB6BBEgV279AzC9wUiStxDJpInXpJJWprLgIEMQAjxJkpGSAFCSk4pI0KRjgkMIyQZP0e6fZ45qieBR5/gI0wHKXu3vz9s3OzuydUlfyros1yaRqtZpLJpPlfr+fsyzLW1tb2x01p1Qq+VG6IgEPDw8fAGhrqNvrdrvQX/L45+Dg4CGqe4lEoryysrI3Tl9i3ODR0VHBANtHu4LioW2DcZWsZKzGn16vt4s+Z2pAsNhgTSCY8X6xWNxE+RBdroDe4zjGtjBnm230rU8NCCnIyvfNTiivSW2HihIJPcdWMwB6UufMTjjOB1L7xiJsNYGkxg2SCZQ6MNMOHKOSTqfdTqfzAENljsPkASvsGy3xgzw21mkivRRAVVTOiMVUuKcyJ/BS9O2hr6xmARSFZVTrNBsY18FsG0fC1eNgaKMqoG9fvW0yliHPWSqV4lm0TacgSzrM6uqqq+IARHRxAMAz6Kjx4qG4MHFFRx2KbMEOFrWJRVUuBJSYSW8rG90uFWMBf4UPWdYt2c+CMe9rBgAB/EqJ10oIdEcCao+EMp6vbRz4rXEBmc6CA78J4PVh0Fqtxn5aiXH3ttZjDZuBsRJAJdNEUWIw8kW5N0QgPEJmpAniJlZVuQwYRWIpD3yOGUP3c29FZ1H3BYAS9W2ucFSum0SYKaR5V/fJ3tGUjs4sOrTZ/OHe0fZqOgkUgk0Yd2WblIFR14D0Qg+T2bmhZhOXPxJfd9imbrCtBwvSs8TjymoGYTDAvu1qjyRDHh+a+7J+cSVX8uZkooyfz+cdVAxPrG0pwTGA29dZ4Pp7x8fH9Shd1gRAk+RFLS5KpdFouOoygLZt57LZ7AZWziyg5ixLfZxIqHwyqW6ivmGdPdbq99V/KEfPn6tGrxe0A6WWtXV6elrxPM+PBAQrXiceMrkS6LNUSn0KoDkr2vqPAPxzpxO0aWbouA+23oWAZJbJZKoEI4tvMpmQzaRC1t+32wFbgrbb7ZLJ9KWbN804CxiFz3yLZ6+jpi7qVKMYioMwQ6vvrl2bCswUMq2A6dOzfS1pRzqX8e+m0zODUaiDe2/qDgGXlpaYuxxO+iKVUnEJHU6czRELngHisltm/VEi6mXqchIcpwFLJwSEN91i/UmM7LTkBySKIaC+0F5X8cvNAaAdAvLrBOsbMZs00DlwQDsEfJ2iAT3+tBAP45bWIL765wD/lsFXAcgwZwIGXyWa3a6KW54goAvgHyagGwzCpE9jZtmQbdKvAgGgxDmXYL/JiuIQpirJka6+DZheGrzpPIZZWzGwpI5Hg8WHb8Fh3Gm1Wt7i4uJ7nX7/Dj5TqNsTJt2LwJgTT1Wwd9vNZvPHc4CU+fn53/HK/Tkmvj8t6IgE/KXv+89GAnIALH/FRIegj8Uk+WQyEoj7/wvm72Df/hcwXjFOTk7+Need0wTT+gsLCz/hM1cWf+804WVPwPYf1FlhO2dcouiFLoFQ/kSbNxqakcyGwShvxzVxWJaXlwt47yvzcwkziw726ixCsTBwuOOAtLwAX3+FnF8lKEUAAAAASUVORK5CYII=') 209 | copyhoverlbl = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAADgAAAAaCAYAAADi4p8jAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAQvSURBVHgB3VhbbExRFF1nZlylIyaebSK0pYlEMOOLNOgkfCDSSoSED6/EF8EXIoIP4UNoPRKRaOqDxCNRpEhUqpUqH9qJR4J6jEd0jGBQxKSda+9T55pHZ3rGc8ZK7sy9++x75qyz197nnAH+c4hUjafr3S7DjnLYbdMBsxQmXPSGC/8ePho6XZGGOSW+6lSOPRJkYjk5tjWRLnNthhBKBb/NJqpnTWnZ1lNjAsEL9e6CiCHq6bYA2QV/OGx653l9/mhjDMHaercbfYhc5kctGUKUSl6SrU8ZLIIycn1EaxaTUwhRJD0qkjZllbLMfnIMl0FcuI7wgyR4oWnSFqSZc58+duHRgy+41dIh7zMMBQ4Da/lGSrS2yfMEmgSZzKG9L1B3/m2MvWzBUKxcMwIZBJZqoaO2yb0UmuRetYexYXWbJLl4RT7Ge5zSfv3qewRefkWGwWU3UO4glfIirvXGsap2BIlk1alxGJ5vWHZFVIEnoOZEELdbO+TzjNmD6BpstV9vDCFA/RQV98fl82/wKhDGBOqjbOEw5DrtMT7lZFOoI9/u/gZDB9TTdJtpmm5ogmXJg40mFw+O8qpl93DmxGuMLu4nffdsf4bVS+9ZPtco4seqAthIamAwqRryZ59PHV2Wz9mTr2P6vkUTFp8aqSFKHUJAiyAPnFE4pl9KP46yIEHsqx5rTQTP+IZVbag5HrQiwkQ27yjC5GkD5fPjti+S4KXaNzFR+0W4bPjNaG58j/GTnAkSLqJoKsky+FmRU8/sF+3zGyAJhnQ8ecAsJZ0BDMtLlDC/q+SXDE4Nn3ShTZBRtnCorJi3W5KTjI8Ug+XNEuS2aFs0GbmuPoz1iUfwe5qkAZ990fI8jxBCKw9HU9VrqHuHM5T8wQD/mMD9u59lJaw++BKzy4dQpPvKAsLtuU6HJHZg13NJZt2mUXAOsKOZJonfu3njA0aMzJE+vLY+oe/12wqlD1fWxjo194KKVhCNl0NSSbpVlFaHiw4RwRWqp0t03Flm+4+MxaHKF3IHoyoa23ldZHAeMZGjh9utdrbt3F8ck5d8P4FyVVXS4STraJ+ZROIO/QZPFhCw8jhNNAh5qDUE72TS3oeqypps2UjWvnv7U9whGfN6ytLsoOgm6yO6fdn8u3K95AnUgH9OSWuhg3bdoXNX3ZV0aNyCNJFqPdRpZ+SSHPmKxyOSawVNxOSpA7tlTdWZc3DRvnzoIALzCH87+KOzExWGIWVagL8AzmXRi08eTQ5LkouajGCchHuBf26Jbyvf/DgPNtN5MELnQWT5kcmkTbadzoNT4s6Ds6TB9CKNZSPjQORoG+VV5BiJ/8l0RzI7/5OxxZJjJE0FKjxbqfD8tbz8aVDUIqZZ2elExTyPL0F9veU6+Lxomigl14m6G/M/CilDTiNxBV2RhvAA1PRETOEbpT/TI6BYwcEAAAAASUVORK5CYII=') 210 | edithoverlbl = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAADgAAAAaCAYAAADi4p8jAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAN2SURBVHgB3ZhPSBRRHMd/b3bdTEdaktSFoG3JYzZ6SiR0wYtJoBAEdsiMbpV2s39kROAtlU5KYQcPeUkJ9SKsm4l10cHoZOgGhv8oVlyRFndev9/TWd2/Lbs7tusHxnnz5r3nfPf35/0BOOKweC/fuxSrxQQNYJKqAXgNcLBiDyv8f1T8dLw0d32V2h+vYVSBJCw3V2rVArwtQwTFwyNJrL+ucuZZtJcRAsdcil2zMBcW7ZBdePx+7mx0qp6DlSECR1yKAjkoLvOtFgsvhpIT3VbVK4ICheVy2GwWi9PxoiXLdUtKeq1wy+wXR1gtqIXyCD0IgWNTFU8hyZjb2gzA6rI/4ooHvX/evgBbvkDwmcZJI3azBdqoYKY/GvBmSJL2u/OwML8dUd/UUgLXb9mi9lld8cPnyQ3woah82QQtV79Bbd1JuP/4jHg/N+ODYptFXMkiAWtFK3aZR6aUZkghY/rQCufL5QgxjnPHEx7jSacDikr2xfT1LIn+uuAksZos0IAWFJM4pEIxfhyJjAVZZHhwTbgkWSW87cryH2FJctXx0V9BFx94vQy1lwuTtqQJoFrinCtgIPTBD9CNt/YsTWJ7e36GtBkeXMf6TVH+OusTdxJJ5cUo7p84rMbMGKQscPrTBsxhHOmQRTtflYrywJsVtALG16NddyNXbr8zHxRyELIU9buJY5UpcqouSljNkAZI0MVLJ/afbcfEnZLPGlqi9mFhSPuGa6eiCjQAIdBLBUgBSgixMiZRFBZDeXJafteEoHnQCwahJweKw4N8mTTsX4ajmjHJuBljdkgBmtfGR3+H1FFCIYHkjpREKEs6SvPQNTdh6N163PFkbLvwfRumP25AWYUs+iYHV81MgwnMpzcgSehjKJ7CY6qpxYZuWwK3750Wz317mZPilRJOb/cSyAWm4Bh63BI0NdAU8fLFD5F0HKWJz6lhuJnY1FrYIoCx61Baivn25sFDwlNfNXtWwlW3V9N4NxhMfoHpMMXR8vMt3cVie2cHuvDmgaOD50qV2kEFIZCsKEncCQZm1EOD435wV4sguB+sq6QNYpaLRHHA8Niicv/YIvJMZhp39lqWnslIoeKImMeGHyaVDjytounDDpkMWk3jvHtHhq7GcjXC+9i/+tN+kXOowaYX0rEwTxnhhhRGbAICmttfAEPRhOn8BWsCWb1Wdh8kAAAAAElFTkSuQmCC') 211 | removehoverlbl = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAADgAAAAaCAYAAADi4p8jAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAQTSURBVHgB3VhNaBNdFL0zifns5xSDYrUgtg0qgqiJK0NRWxC0ihhBKuhCreBO/Fn5i4qK7rS6U2h1oWARrEgsglKrFF21ISKItTWKUG2xBIwKsZ3nPTe+mCaTKC60yYFh3rzfe+65982bISpxGIUab3X6vR4XhchlriRSdaTIyyO89O8RYdP5srvW1UauFOroSBDEJk8299hjau8EIVQIMdM0rjQEe044NeYQ7Oj0V9seo5OL1VRciCWTqn5jfSSWWTmOYLjT76dJTG7iq5YPcU6leg7biK5IExTlJhm9RUxOI85KBrSSpq6VsCx+coDXw1ywj+BBCHZ0Lz1GxZdzhVDt9tBeFCREw92B11RaBAGEao073O3fTg7kLjW/o9ttw+PqNjTOoF17ZlORwOvyUIhDFC/xXCQSY7SqYRrUlavl5kK6f3eEr4/pPp8/jdGHwaTcnZDdlq8v6nFlIruf03P2mGy4iFa6lVJ+o+B5JoWZlR7yzStLTzrQ95UO7O6jKZaLhrhuS9Ms2rqzkqK9CbrM6qMefT6zo/YdniPOwTNw9IyPFi21ZK5zp9+k661yF525OE/WalwTpYutC8g3v0zaLl14RxWzPLLGtZZBun1jOGdMLow6k8n585GCitq70Z4EPWPjV62dLm0nDw7Q/kNV1MrKQl2E8zPuo8nDkLZ7iym0eQaTeMskq+Q5uGJqOgqus6FT2EDModtAGFgUsOh+R6of1oeDsDbGPgiPOI5xgNdNBQBCUAmASsuWTxVPQSWESHvbkFwpZxH1931hj/8vfWAgUDO3TMraw1AB8wIw+gKrBJLAlqZKalwdFdXhoJMHBuT+9HGcyU2TOa61JGQtOBhAXx0B+QjGUXBqDTKhfUeq0l7cvf0F9b/8ShaHnzYiEz4m0/8q72I5QBh/SfzMrURGnsEpSIn2G0Os5Aid5TDUqOH6UGPFuHnywfxB8JeA9+Dp4fdJKUOJaM+nlCFMbIDVo9/I5UwgvJBbevNByGI+bTAceL3lPc3ktXQELA6USypgffRVilJrOyNi8ibTVYhQJuA1hCQMOHrWJyG2rrZXNoShwW9SD3UzPWqVu7Pm/S9dxisHKjVtei5zgChyVQMEQETnPYBQDW2ukDFY+xSHqmXlyzQVMcKP+D3oMlrpD6G372xn/I054BDn3VND7TDko9Zj4CRTCufQTMRY4RqTT91x21bNVGKwSV3FXQ7bo6N0nm8xKh3E1tdGjqMgBKGiaap6+s0ddUJD8SE7xUWQ/h5sCOIDschJMjky+LdF8Odvi9x/Mk/4y94u0n8y5nhyQN5X853H/uP8t2obTXSirJqtVPOoRec3BiI50ffLswe+F/m0UMddlxQ6mP81SBgijYyHNGZ3Jcup3YmYxnfReNyjXAnaawAAAABJRU5ErkJggg==') 212 | addhoverlbl = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAADgAAAAaCAYAAADi4p8jAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAODSURBVHgB3ZhfSFNRHMd/924tww2H0WwQtASfwrrzbUjpQB9UQoXqoR6yojdLe1MiMkrwTYXeIrEHBSVICfXFmEtkPbmLEgTCXEH4j2LiJBrunn6/Y3dN98ft3v5sfuDived+Hed7fr/zO+dcgEOOkO7la49kNRmgCQxiFQCrBgZW/A8r/H9k7DpeirehUh5MJ0xqkIwVFIhtSpS154ihdARFURisc80/TvYyweCUR3IoJsGDtw7IL4KRCHM3u+VgfOMegxMeSYIjaC73o5aKEE4lN6atrDbEDPLIHRH8eWxOJYSRdKqRFNVWnpb5b46wmtAL1RF64Aan5ioegc45t70VhbWVSMb6sdF1GBtZ161JgcNogna64QYVYC2gk467S9Db/Slj/fjoBiwvfU+ref9u80BNKkQQ2iiK4sSc1AI6oxfATtC16A/D4nwYcgSrwQRNRvRKizjoYRxTqeSkCcLhKPhmQ1BeYd7zntKX0o0GgKipL074jUw02WIAqDIyxiRBAM3QvJue/Ab3H5yGtdUfMD6yAddv26HQbIhpWm9+5AZqsdM0CL3dn3dfSJBWU2gx8IHTjlBtRHMS6GDRv8U74bpYxJ+HX6zywkAmienJr7COgzDw6iyU2Hc7W1N/HDpal2K/kYlGI1YRdDI0sMpTkiJGV7nTzAuIChUKalM7TtBzadmxrDQaseIcpNVf2/q3gPOFRt4X3oSFyx942zamF11UbNS5mCzN4lM42XOqtmyhCIZAI28xtajzjVdOQE1dMb/onkZ+aGCFa2wYFd/sJjetQvNWLSaqhp73awIal4g4ZCoyXkEQHJAl8cVlf8Wj4vC8/wvvcONVG9c96QjAtVt23jb8y7yKqqE5d+feqZgm3rA2mCwKCsyABtTikqyc12KBsOE7SlOaVw97SvmAdOJm4GlnAM45LXyO2exHuZ40Pc/KIIxVNF7julAU02jEK/BDrUlYBvj7+1AyaaZiZDHo0mRIsKHSf0bEXXdIUVg//AMoUgd1PBNNJuD28yX95cvEzg704Z8gHB6ClyrlLrrhBimKosjcoKOi5gwMz4O7Xjixhb7ORQfEPDeJ5kDAzxau358tEr/J+PBkr+TpNxlxrzki5Tb7zazUhV+rbkCuG8WoKYz175ihr9kpJ2TfgecIOi8yBtUoPa93Y/5H4GlI00iYgajijVhgLJkxlZ9glJYH8OznngAAAABJRU5ErkJggg==') 213 | infohoverlbl = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAADgAAAAaCAYAAADi4p8jAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANQSURBVHgB3ZhdSFNhGMf/52ydLCeNJE0MMkPopppdNaR0kBcqoUIY1EVi1FWm3ikYGRV5l1Z3EthNkDcZYd4Yc4rYlQ4jCM21oDCNZOKmMNw5Pc9rZ003F/sQN39wOOf9Opz/eT7eD2CXI0VrfG23mBUDamCQSwGtDBrMNMKMncdJn06X6qgqcfZG6xhRIAvLyJCb1IDWnCKCouGWZam3wjpxL1JjmMBBu6VAVSQ7PRYgvXD7/Zqt1uZ0h1ZuEDhgt1iwh8SlvtW2wkOhZCO3deoVQYHCcnukyTQWp+MhSxbrlpT1WuGW6S+OMSukhfMIF4TAwbEzdxFnzM3P+RErPKan+ztab81g6N1vbAMFRgXN/CAEqtDqEQdTk140XPqE2enVmMY9aHNhfGQJuYcV+LwqtgMZUhNb0TgwZqlHghlzxRuIqb9rZhU3buej5nIOthGzQUGNkbTyJI5k8JEsOju9Aut5M14+n8P8Tz9y8xTcbDqCTJNBCBsf8QT7+ujHXKjMFn18ywH09y2IeubsuQMor8oW4+KFRpYaNU2zSBKSwtTEMt70/cL7wUWcKjZRjlYoxhbF/2tpPyo+foja8Feg68sqjhftF+XWxhkhsrzyILwkvOfJD/GezmdFCYiUyowkzoIkwlZpf1QorKLD8dZC9+q6Q+KqKpkkq+YL6zGPH34T4p72ngiOq67LQWP9Z/S/WsDV63mIE7OMJMMfGCouRySS6DHKrnuSLB46rrBon6jjtgQQAj3YYdglQ8XpmMg1fTEmsM2khECeLj6MLm2oY5edpRiNJDwGnDIlGQd2GI4xnvzvt7ooUXlFzOpJ50pD3PFHaE5ZUjGMOGEX4gyXmbWe5XLz9oZlPK5jC4XCcWkyGYNljrU7nYUi3tpIGC8EGM6gCVrQIYlNrSJ9pUJKrEP1pV+Cwhg3ZetjMq26PaqqdSNF2JyF44WWny/4LqaJtTV00c2N3YP7Yomzgx+EQLaiLGs2pEBGTRiN9oPrWgTBib7CyhvENBdJ4iDRsYX137FF+JnMOO3s1TQ9k5E3imO2XGa/HbV00GnVNaS6ULKaqmndayZ01RY7w7zvv/sI3i9qGsqo6+lkL8zjQrghh5E0jIDq8GehP5IwnT9rT0x064m7/gAAAABJRU5ErkJggg==') 214 | settingshoverlbl = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAADgAAAAaCAYAAADi4p8jAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAARjSURBVHgB3VhbSFRdFF7njM3fZYaGfjSD4Df/jCC0GZ8cpFLoIYvSoAzqoRv01P3JKKioyLeuLxWZLwYJkRWTRYWpiD7lUASBZRaFaRQnGouGnNP6lu65njMSdJnpgwP77L3P3utb69tr732I/nJo6RqvtXk9TgfVkENfQmRWkEke/sJDfx5BNp2fSPuK8mBjuo6WBEFs8mR9V2TU3J0hhNJhQNe1xir/w8NWjSkEW9u8BRGn1sbFAsouDITDZuXqyuBAfGUCwUCb10uTmFzmR80OBi+lSpZtUFVECUrkJmm9WUxOweBI+lQkdVUrssx+coDHyVyQR/AiBFu7Sg9S9q25dCjIcdJuFESigS7fC7IhOPJplEKhUZo5y0k/CxhzmttBvxiQ6hw90OXdRBbkYETd9j6qXfaItqx5Ik/TxcEJRx0aDFNPx8eEunu33tMIOwno7/siY/4GeBxOqmGJYhNPRXenQcNsbPPtEkSY9uz/T97jATJwRDwe936ilubhhLoTx15RaLxfYdEUOtM4P2U+q7GS6+PbUR5KsicZrJElOaZpejWL7R4f57EslZSKfS55VNuJYy8lGsDS5TNo267ZdJ2JnT/1RupWlPfS8TNFtG9Hn7xDAUurZtD6rbNEGc13SiSy15vfxYhwlOv5m+JSV8oc/sXTuf8HcXZPh0HnTr+hmflOGn4bpm07Z1MZt6dCq8hhcl6LFjb6XxkQhoFY2SKPTAJcbhikEp+b6s8WiSFH9/WLfDew8UA3SxQRx7qFAiBJGI7oYT0ruaroHOdx0BeEQBoEMQecC0cAF06/jtoGu6rX5lLNujwZAyRt4Mmxa8GEl64uoJ7Oj2ywwZF5zWVDDAcBtD9iOQIwWHl6mssR/V7exxWg1BAKJcoQ9aovHAnjlZOgAIVVa/Oo5cpYtItL3aKWF8++JDjejqCBgl2PskXT5QGBHZueihQB/2JPVLJiaP7Py7IKn+OcMRJXrq7NFZvgfDh+aPCrRNMK2AcNqwZ8CNmphYykA80jQvAYogpSIPm873OCASgnJ4zhCRJCMjAHkpWScVNDLIMfqeuPEt2wNV+I2iCoc5Jpt2qprs3jjBiSNYiEcT/wgQ7UF0obooj1pNqwLShpFhZNlYy5mdsU6Zp1uVTHyUbJLybjfxL2V5c7tmIwB3If5sBY+dxX4f95U0VNqG9qeBtVVSrMoBbo4H3QoV2y6ZF2o/8Vh4Dk8RXutr6nG7wGGzgvKCC66ec2N2tyqXVqOMlk1DkUax7biSIAMns5wZXZJ5RkDLC65sgOeLPTe4gvjQcpw4AI9j8by86Fc6f80PEuQubhleXBQ0JwPIq99PccuCV6KMhtgu9Ohq6blWSTUbMKJh+yx7gIovfBKj8uiFlOksmRxr8t/LHfFqn/ZLr5Zh/J0n8yeiI5wPa34Xji2UiZTpSjFjHNU99cdHK1L5iiPm2i73FfNE2q4K4L7Q7mvxUiQywj7QGNRtrDbmqxIqbwHWFdIRTP75uEAAAAAElFTkSuQmCC') 215 | accountsiconbg = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAAEkAAABJCAYAAABxcwvcAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACnSURBVHgB7dABAcAgEAAhtzTfv6A20AsAEfhmZi+u/sWTpEBSICmQFEgKJAWSAkmBpEBSICmQFEgKJAWSAkmBpEBSICmQFEgKJAWSAkmBpEBSICmQFEgKJAWSAkmBpEBSICmQFEgKJAWSAkmBpEBSICmQFEgKJAWSAkmBpEBSICmQFEgKJAWSAkmBpEBSICmQFEgKJAWSAkmBpEBSICmQFEgKJAWSggON7wIJd2Y2ZQAAAABJRU5ErkJggg==') 216 | mp3path = r'success.mp3' 217 | errormp3path = r'error.mp3' 218 | notifmp3path = r'notif.mp3' 219 | 220 | #toplevel assets 221 | cancelbtnicon = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAC1SURBVHgB7ZTBDcMgDEUNLJKOkg0QeyKxQUYpiwCtD70gHPylKkok3jE4/0WODdFicXeMdBBCeBtjqJSyp5QyKfDeb9bag9+LMb5GNXaSsTnnDg4ivey0VhTWWvfWWtZIO1nmrki1YkuloL69mhq1cBaIylRCKZifozK1cCT9/l9CZZBwICVUxszW4u+ohYOWZgL29Mf9hubStbh08ZEgpFYcGuSr+ay/e8VcOkc9DJ10sXgwH1tO18TpQg4aAAAAAElFTkSuQmCC') 222 | cancelbtnactive = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADQSURBVHgB7ZQxDsMgDEUhQ8/R3iAZq045eaaqY3KDcoyqQ1McMbTIxt/Jkkj8BWSMnwB/nKuq2ru8tHDvuieN73nu+2kKDtDQtueT9wPNb+N44XIapcZSgAo5HFbMFYFNPFkcAgLNYCHtZSVeKekRC31+CnHXy8GuhScoAjWoFQYBJSjFrTAYyEFT2AQzARmos8JImi3+9AJjJcEnzBskhZe55XOAgJLPNMusApZaH/GpCYj4zAr1W2BroGKXWkxNa/nfK+VqtoB9lkGrqg6sL/O9yRZxZdqzAAAAAElFTkSuQmCC') 223 | submitbtnicon = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAAC4AAAAuCAYAAABXuSs3AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAEHSURBVHgB7dZBCoJAFMbxp12gI7jMW9gNRC+Qx2hVx2hXy0Awj1A3cKfLuoEXEHuPDIawxeg4Unw/GBhB4c84jBIBAAAAAPw8h2YURdHOcZywaZp1nue1zrMuzaSL3vPU47EkTbOEK9G167qy2nfSZH2rfEanaVrQAFbDTUULa+Emo4WVcNPRYvLwKaLFpKeKEi0SU9FiQQPEcXzxfX9VluXt2z1qdNu2SZZlZzJIOzwMQ49f+YGjAo6nvvie6BMZph1eVVXNwQ/5VPfF24gWg7YKhxZ98baixahThUM3HHrsLq88AplMHS0GrfibuvL0+lmyEi1GhQsl3uPorY1oAAAAAIA/8QTZkZAvUqSycAAAAABJRU5ErkJggg==') 224 | submitbtnactive = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAAC4AAAAuCAYAAABXuSs3AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAEcSURBVHgB7dWxTcNAFMbx71xRMkJGiNwFGlJGSAg2wBMwQswITAAbQANuaUI6dBvACKkjcQ+/BCLLkSKdc3dWou9XnWRb/uvpfAaIiIiIiA6eQY+qWT51kOvlUsY3Y7vweTZDT/6iSwgGOMEpPPUS3ohewNTTHtlveEq+VdrRl+fWooOk4aGiVbLwkNEqSXjoaBU9PEa0inqqbKJrP5kUoaJVp/C3j/y5mufTXfc0owEprs7sCwLy3irVfDhwznzpOstMORl93m/d04quJ/2EwLwnPln9LKTQtXNStiefIlp1/jhfZ8Pb+vFHXf9PPlW02utUacYbg3cRXKyvxI1evQ97asavxY9WQc5xjRcxd8bIQ4poIiIiIqIj8QuV3KYU0AmZBgAAAABJRU5ErkJggg==') 225 | eyeicon = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAF/SURBVHgB3ZIxcoJQEIZ92FmRLl30BvbqxJxAbxBzgmDBDNAEG6ALN5DcAE8gBUMrdOmiXbqQhoIZIP8yecwbIhlrmXksb9/u9/5dtte72od1HWiaNmeMLSRJkmlfVdWpLMvAcZzgIhABkLwF5FgURQJXTH74hvDdAzjEWtu27XeCDMN4QdAK66nrZl3XlzCvgHqWZW24vy9ACKBgPQASc7+qquPJZHIbRdEn7cMwfJ9Opzt8urPZLMU+aRShnCGk79EDghwF+BZmCXgK66OctXA2htlnWTZyXTeValn9PskNRAj1CoA55N8AMMJFc1LHz+GPcb4bDAZK3UN6wUF/5iT2AomkIuV7isGFcivmC+auKc00TTnP80O7NDTWoz9FQIASKFsJiqkdH8gZUQ4TkhQkPbdhv+OQUincpyiKjJIO+HyD32wUCQ0k5yPWBgFe78zD50yE/AHxQCijgaS++FRSHciYDMAC+zHN2b8DeeZmgtbNxJR/w/hdg3rFzw/RCtKxq30oZwAAAABJRU5ErkJggg==') 226 | crosseyeicon = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAFpSURBVHgBzVPLbYNAEF1AcOASOgipIKQDuwI7FYQOshck4AIc+BxJB04FJBXErsDpIKGDPXGEvHEAbRAoUqxIHmk1muHN2zezA2MXbZxzi/3RFDnwfd9VVTVq23ZdFMUnYlvTtIi+ISfgDnmev/xKRBaGYQXnEFmfWp2AimLhkk3XdTbCJMuy3SIRSCIAXRS9ItwMyiYYB5gKmB3IkiGvSgCXSHDWAHCknqHgjdqTifDtnTCEDYKA/1BEYCqaKgD5Ec6aU9bXHJumuSnLUpwUIUHMexkM4Aq3WkvKeuyTaZpcbo1epJaBKKacQCvxEhnsuj/fRIZhlHAPnuc58iww0APa+4B/xBEyWRzHpHaLtpORCElBCV3XK/nWfuj3NNw0Te9kZVSDeJzd9PljUsZm9kTCjHsmz3RuIYc9YfC0xTW8QHwLNURgz+2ZwhaMXg0FREq/yRV8jUJ62f2gHrGDeMvOtXN+8v+3L8pF34kxOl1kAAAAAElFTkSuQmCC') 227 | entrybgimg = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAAMoAAAAkCAYAAADIK6VaAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAH9SURBVHgB7d0xbuJAFMbxN+Nqu+wN3CHRLOV2cW7AStBnb5AbJLlB0qVMykigcIM4J4jTIErKlBwA23nPshEJ2Eyb8P9JxiMbOj49z9g8nBwwHA4T7/2pcy4pyzLWfSzA97fSLdPvc7Zerx9ms1nW9WbXdsICEkXRpQ4TAX6+NM/zaw1Muu/kTlA0ICdaQS41aRcCHBm9aropisICs9o+/ikoGpJYq8iTDgcCHK9Mq8s/DcuyObAJilUSDcmzEBLAWFjOmsrim6N2uSWEBGgM6kxUqopST9yfBcAnOlc/m0wmaVVR6tUtAF/o5L7KhhuPxwOd5b8KgL2sqni92XIuAFppIbGb7v6PAGilFeXU5iisdAHdYgvKiQDoEnsBcBBBAQIQFCAAQQECEBQgAEEBAhAUIABBAQIQFCAAQQECEBQggC/LcikAuqy8c24pALpkVlFeBECroije7IdbqQBopcXk3luHCR2nAmCf1PoSV6teOk+5FgA7mmxE9jKfz5f9fv+3Dv8KgMbtdDq9s8HmPkqe51e6ywSAyepMVDZBsR6r1phYCAvQNOnedLSPts8uFotVr9d71JWwX8JlGI7TrYbkv4bkfftg6x8JjUajpG4nmQjw86U2ca9XgXe4Q5+uW66e69Aa5VkPMNob4duzR7fsqRTd7IZ72haQxgf9jKfeGD5aYwAAAABJRU5ErkJggg==') 228 | entrylabelbgimg = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAAV0AAAA1CAYAAADiWDg0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAKKSURBVHgB7du/btNcGMDhY7uqvm/pn6Wq1Ay5AzJ+G/nuAO6gXElhYmZjhJGJmYkwMmHuwEMqdawyoUq1eU9EqoIoVBCf6XmkxM5xkvEn681JlX5jMpnM67p+OAzDvKqqaSxNEwAbl9HHNo5t3/evz8/P21+9ubrrQo5tRPYsHvMEwL1EgBfxeLZcLhc/u978uHAQjo6OnkdsX367swXgnnI343G6t7d3EFOCj1/Cd9dvvzg+Pp7u7u6+jdNZAuBvtVdXV48vLi66zUK9Ocl3uIILsFWz3NXc183CzXghjxTi8CgBsE3HEd5/VqvVu/xiPV74tkPhfQJgFH3f/59/XFuPF5qmOUsAjCbvBlsfT05OZhHdTwmAUeW73TqCe5oAGF2Mced13PI+SACMbhiGh3U82SIGUED+40T+Ie0gAVDCtE4AFCO6AAWJLkBBogtQkOgCFCS6AAWJLkBBogtQkOgCFCS6AAWJLkBBogtQkOgCFCS6AAWJLkBBogtQkOgCFCS6AAWJLkBBogtQkOgCFCS6AAWJLkBBogtQkOgCFCS6AAWJLkBBogtQUI5ulwAo4bKuqqpLAIxuGIa2jqcPCYDRRW8/133fLxIAo9vZ2XlVL5fLRYwYFgmA0cRd7qLruna9e+H6+vpZAmA0Ed11Z5v8tFqtuv39/cM4/S8BsFUxxn0RU4WX+fxmn25d10/j0CYAtqmNWe7TzYub6Mas4TLC+zgJL8C2tLmrua+bheb21ctweHj4JmYP/yajBoA/lkcKTdM8ieBe3F6v7vrAZDKZxwfOIsDzBMC95F0K+UezvDPsZ9er333BdDqdRbFPq6p6EF80i6WDBMBGF23sopEf8v8e7ortxleIhLhLYRHN/AAAAABJRU5ErkJggg==') 229 | aboutbgimg = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAAUcAAADoCAYAAAB8dCbkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAATESURBVHgB7dq9bhxVAEDh2d0ogiaxm8hSXPgNcEkX8wbkDcKTJKmo6VJCSUVNhVNSsbzBFo7k0nKFIsXLHSu2DJyQOtnvk3Z+7uxueTR37iymjzg8PDxZLpdPttvtyWKxOBpDRxPAp+didGw99uurq6uf3rx5s/6/Ly8+dGGO4ojh8/E5mQA+MyOUp+Pz8uzs7LSur/49sDc8evTo+xHFV+/vFAE+O3PfxufZgwcP9sbs+Pe/hn9cv3tycHBwdP/+/V/G4fEEsDvWb9++fXp+fr65GVjeHMx3jMII7KjjuX9zB28GbqfV81R67L6dAHbTwQjkF5eXl7/OJ9fT6vcr0r9NADturGR/My/SXE+rV6vV8wmAeaHmuoeLx48fH484/jEBcG2+e1yOMD6bALg1HjOeLMct5FcTALe22+2T5dh4dQfgjvkF8XlBZm8C4K6j5QTAf4gjQBBHgCCOAEEcAYI4AgRxBAjiCBDEESCII0AQR4AgjgBBHAGCOAIEcQQI4ggQxBEgiCNAEEeAII4AQRwBgjgCBHEECOIIEMQRIIgjQBBHgCCOAEEcAYI4AgRxBAjiCBDEESCII0AQR4AgjgBBHAGCOAIEcQQI4ggQxBEgiCNAEEeAII4AQRwBgjgCBHEECOIIEMQRIIgjQBBHgCCOAEEcAYI4AgRxBAjiCBDEESCII0AQR4AgjgBBHAGCOAIEcQQI4ggQxBEgiCNAEEeAII4AQRwBgjgCBHEECOIIEMQRIIgjQBBHgCCOAEEcAYI4AgRxBAjiCBDEESCII0AQR4AgjgBBHAGCOAIEcQQI4ggQxBEgiCNAEEeAII4AQRwBgjgCBHEECOIIEMQRIIgjQBBHgCCOAEEcAYI4AgRxBAjiCBDEESCII0AQR4AgjgBBHAGCOAIEcQQI4ggQxBEgiCNAEEeAII4AQRwBgjgCBHEECOIIEMQRIIgjQBBHgCCOAEEcAYI4AgRxBAjiCBDEESCII0AQR4AgjgBBHAGCOAIEcQQI4ggQxBEgiCNAEEeAII4AQRwBgjgCBHEECOIIEMQRIIgjQBBHgCCOAEEcAYI4AgRxBAjiCBDEESCII0AQR4AgjgBBHAGCOAIEcQQI4ggQxBEgiCNAEEeAII4AQRwBgjgCBHEECOIIEMQRIIgjQBBHgCCOAEEcAYI4AgRxBAjiCBDEESCII0AQR4AgjgBBHAGCOAIEcQQI4ggQxBEgiCNAEEeAII4AQRwBgjgCBHEECOIIEMQRIIgjQBBHgCCOAEEcAYI4AgRxBAjiCBDEESCII0AQR4AgjgBBHAGCOAIEcQQIcxw3EwB3XSwXi8VmAuDWdrtdL8fm9QTArdHFP5dXV1enEwC37t279+Py7OzsdEytTycA5rvG081ms75erX737t3LCYA5jtc9XM2by8vLzcOHD/fH4dcTwI4ajxl/GLPpV/Px7XuOy+XyxditJ4DdtB7PGl/cnNzGccyxL0Ygn04CCeye9dy/uYM3A6u7Vy+G/f39n8ec+8vJFBvYAfNUerVafTfCeH53fPGhHxweHp6MHzwfoTyZAD4z86r0vPgyv7FT1xcf+4Ojo6PjUdZni8Xiq/FHx2NobwL49GxGwzajZa/n97s/FMUbfwO+Pbmx6CqreAAAAABJRU5ErkJggg==') 230 | scrolltrough = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAAAUAAAAtCAYAAABmkKG+AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAABZSURBVHgB7dOxDYBACIXhd8gIFJYWDGBp6QqO4GSO4o1wA5EoF60u11zPn5DA15MWj5kvALtPMbNjEpHbjw1fMxGtSVUfNBE6BQYGDmNurJD/4lmXH3L9zReJ9xKAB0KqBgAAAABJRU5ErkJggg==') 231 | logosimg = PhotoImage(data='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') 232 | flag = PhotoImage(data='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') 233 | socialsnversionbg = PhotoImage(data='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') 234 | github = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAIGSURBVHgBrVWBdYIwEA3IAHYDnKB1AAUmKCPIBOoE6AR2A3WC6gSgDlBHYIOygNr/ecEXIkHh9b8XSC65f8kld2eJBiRJ0nccZ3q73Xw017IsV07laGe0/eVy2QVBkJk4LAOx2+v11uj64jVsYGhZZ8jWBafTaQrynxbkxIQ6x+Nx1mgA5DFc8YVuX7QHdVbkUIWWQj6V5P+B+Xg8LriKE9DnIF8oCzZYQOMR5BkF/KPxYlNVxjXw/xv6S0U/Jic7Dj/wXyyqbjnwAyMbGuNrwgXm6hYp47+Uw/+ZMt2XjyRwpKWJqKJyBzq5Qabfm89N2LAUikfkoiXgprMus217xjv41OSpdE0r4EQpdVUZAtOjgQ9t7V50x1YbuzSg+661exrg2jXCLkFmBA1kmuxddIenjfM6A2H5xjvA18ZnGxF40IQMkpVoCQQadVxNvLe4WxD+ciRTQZ95H439+Wg0SpuIkcNYK+Ka3TM2Bpa0nsgFOwgjGPxWFPiqlmXyUnbMAGU6MLmT+SyypaVIEoXMSxyXCY0EGKc1u0tN5NDNWYDYLwzISlRmw6JoeJ43wKKAmRLzD2mgLj+VgHvv1e0eB3RBmXJxioTVCfVYGHKVEeRQ3VkJNOx6gd9cyOqExbyb9Qu8hVuoKzlErYHyJHDLEApb8TrS6/U61B/CU7BWoIUN80+D8g9fGgwD3VyUCgAAAABJRU5ErkJggg==') 235 | githubhoverlabel = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAADwAAAARCAYAAACBzs+aAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJwSURBVHgB5VchbyJBFH4LDTkFRUAQkOxZzJ0EdxiQrYA/QII+EvB3q2pISjUJugLRymJaiQOFI90QBLIFRUig75v0baZ0dyltTbdfMtmZeR/vzffezOxC9M1g7E6k0+k/hmGccDvloUlfE6Ptdjtar9fWfD63dYMj+JgRjUb/cbdOAQILby+XS+uBgbES/Cz2lru/KZgYLRaLAkSHMUomk2f8OKXgIhWJRH6w6BsjlUqZPLinb4DNZlMIx+Pxc76gPLdyLpejcrlM2WyWEokETSYTXGzE2SI+BrRarZR9PB77BqtWqzQcDn1j4IkGX/D72eDz/HjkJ7ZYLCpx7XbbmYNIafV6XdnAERsS4QbYAHBns9kLG+Z6vZ6aRx/iu92uE0fnix89jhTAK7YgFAqdhMjnokJVEVgHnCIRsGUyGRUMi0AFsVA0QJ5SNQAc8DudjrNwL4AHPuIIv9VqvYojHIwrlQrtgXnkZ9UXhWpCYKPRUOPBYOBsPyRBEgOeF/TkYZHwIcDC4Sefz1OtVlNJRTw9Aai07DYRit/0+/29sQUQbJPHB4ZsMQn0FocCtwr6bXkkA3HwRLXAsyzrBV+q+gGMIPia2183K86VZF4WrAPJkPOzC3CxwFKppCqG3QBfEIV+s9l0C+lchoiNBGMHIYa+gyQebKgy/OI3+y5OCDbwKcmH+XYf0686h+BQPzpfLsn3+mSdP8NMtGOxWJzHOT/yZ70mDvWzy9+94d04buB38MV0Or1Un5amaR7zRKA/Lbm6Bdu2H/BaItXhCe5eUMCAyopYjF/9PeRqm0z6z91f9HUrbnO7Zh1XfATudMMTca9EnzNEZgsAAAAASUVORK5CYII=') 236 | discord = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAABgAAAATCAYAAACKsM07AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAGESURBVHgBrVXdcYMwDDbwwmO6Ad2APvLCzwRtJmiZIMcEzQjNBG03oBNgYICyQRmBBYB+cuxeAib0Dn93OmzJ1mfJsmBsBUVR7NgGWDqHjuO8YBhBYtL1fX9PX9d1BVkQBK1c940p6TjkC+t4kiTtIkFd14dxHI9y0xq6hXVZGIZvMwKcyMOJfth2dIjkQUViKy2cvzIzoNS9q4mIAKmJkZqCGQSiQBAJFxHA+TMzDJURy2DuZ0AUdzacxzojomroskgwzTVLcirfG3aK4olSFOmMwzDskcOGBE5Sdi5LBaqUjCplwa4QEYGnMbSXDwbjbkqwYhdAFnwi8NkcHu7mT0/3NDmIJ3VLdgHLsnZWVVUj06OFnOT4oHGwZj+T3CAwAkqRLncdMwQbzk5TJXJHBKkUriOUOg7JIHvsaTT+M9Eq6JJs2z5i0dWLRvlRqeZyDXVO1T07WTmk92XbvgSn0qVKu2rXigjDCGQcbTdl/0BZlh/4PEI+8X5y6kGrm7b+yRR+AfEpxTv+zkq3AAAAAElFTkSuQmCC') 237 | discordhoverlabel = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAADwAAAARCAYAAACBzs+aAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAIgSURBVHgB5Ve9bsJADHbSgDpBuyAGhNIVhnYMW1lYYeAJeIHmDYCpa3gB1LEDQzuWhY6MWWBthBgYEYxIUH+nOjrxE4o6VIRPOsW+85392c5BiC4MxvZELpd7NAyjyqPGqk3nCX+z2fir1ao9m80CfSEkfMNIpVJNFl2KEZi4t1wu23MGdEX4h+yAxQeKJ/zFYlEG6StomUzmmR81ii+yyWTymkl/GNls1mbliy4A6/W6bCYSiWaUkeM4O3Pc/lQoFEIdMl92dAoqlQrV63VqNBrh3lPP2HfmEdQsvo0j31sEBQyHQ0UUh06nUzUnuqwLJAHj8Zi4jZSMARvoYuN5npJButvtqvNghyTDFn7gH3v6/b6ahw1ksRVAxlwUTNOsmhRxUcEBgpIqg5w4lmT0er0dxyAjdpAxQOBQBUBM9mEPzpRE4BwkTjoKMvzKWUiG+CsWi3QEthm1KgEgc5I9ybYECujVlUoCskev7D7ATtZhK22OOQz40asuAHnsFX+j0YiOweIR0J4/GBKEnm29xTCkpTGkPRGE67ohyUNEsVdeF0Bvdak4ABvYIg7EsH2e+MOzVCqF8R6Ab+TzeUT6RL+EXo3/wB/9vxj4K8kv84AuAMzz7oqzFaTT6VvWHYox+De4M5lMXtWlxcxb/PApvvAty2pBUISDIJgz6TKLHYoZUFlwA0foO5+HNoONWize0/l+TAQ83pnHG9/4n/rCN2nXIEDRy3oqAAAAAElFTkSuQmCC') 238 | paypal = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAABYAAAAYCAYAAAD+vg1LAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHfSURBVHgBnZU/joJAGMU/EOOfGCUxdiZLYWWDa2elHmFPsNkTyCYeQHsLj7CeRC2s1yNIa2EgVhr/7BsC7ACDjrxkgvPNzC9vHl9EoZjG4/FSURSDnuh+v+/YwN7FbDZbxdcVfmJZVkfTtF96XXPAv/mCyk9yuZxB2WThppNUsEwEDzTCjXUhGJn1Kbv0fD5vBBONX4FjPb77crnQ4XCgNKmqSoVCgUqlEgH8X+c3wXEnftBxHDoej6nDdV3a7/dk2zYNh8PPBJjlI3J8Pp9JRo1GgyqVirVerycRMNqsIzpwOp1IRt1u13vC3CgChhLg2+3mjWeqVqvUbDaDqb7ZbN5CMPI1KKPbXq/nwQMhPjcE4wpmFvBgMKB2u02cwR1eoqNxYAPFyCHWaiKx9mIwlivv1Oes2NMDs44QRdFqtaher4fzYrHogVgHpOl6vS5CcFpHmKZJtVqNXtAPYlixH17GcKuLdr0CBWMLt9Ng7oGRS8JxPLsHQAdjiraE2eEuqGv+ogl45EC5XE4DMQgDOBhbHsZL8x0b8QVRDOy6/X5/QhIK+lg2CpskpaLVDNFCShRbkgXP53P2UfxAHF/8EEWBujRYERWXy2UH37/ERxXt9I6XJQVXSVL+f4C04z/HIMXdxAcPNgAAAABJRU5ErkJggg==') 239 | paypalhoverlabel = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAADwAAAARCAYAAACBzs+aAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAIxSURBVHgB5ZexbhpBEIb3LoBSoVSIAiHS0iQlZWhoTcETwAPEPMHhKq39AigPQJGUoXFKymug9UlQUFpQIoHnW3nQ+nwHxrIscf6l1c4ys//eP7O73BnzweDFf6hUKj88z7uQ1pZhzZwnwt1uF242m6vlchm5jr3gL4JisRiIeWkyBBF+vV6vr+4FjK3gR7G3Yn432US4Wq2aiP7EqFQq/ZKubbKLcqFQ+Cyi/3nlcrkmgzvzAbDdbpu5fD4fxB2tVsvIFjeSETMejw+SNBoNLjobPxqN7Jw4l3LU63XbwGQyMYvFwpwK1tH+FfPbvtzGz84tD8XDA8QgSpOg4tRHI3Y4HO5jOp2OnYOtsS4vjRj1Y8OjnO44vnav13si/tDcOHzfv/BNwkUFkVZOH5SKdLvdJ4KJ0Z6FqC49glRwGjQGTmwV1e/39z7dDbPZzARBYCs6n8/34lmL3eMWhTG/p6Dmp3kgp2qQQYIYFk6LJUbjwLGjoEdGtyUJRSCCFJpoYqbTaSIPHMQon8uZBARHSSQ6CZFUQTPOWCvjClahWmWynQR8uuV5UECsinPvAJLGOvjd3eauCxcxacWIIfSq1eq1GD+PRWoGgZ7dQ1U/BS73qf5jc2P47fEqKYf51pwAqvNWYt8TovOrfdN6aZXPGfIffCNH4NJeWqJ8IF1ososwl8sNMKzgKIruRXRTzBuTMVBZtKGR8bPPw5pAggZifjPn+zERSfsrOv7INv7vOh4AHsg3Eg4OVeAAAAAASUVORK5CYII=') 240 | 241 | #settings assets 242 | toggleon = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAACIAAAARCAYAAAC4qX7BAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAALESURBVHgBrZZPSBRRHMe/783O/tN113SjUEhLsChMD1l0yovQUlAQRKCdOvbnJt0KT/0hiOwciEF482B63E5SSn+UPSiZKChS7ubujDv7Z2be6zcbih4Sp53PaWbe+z2+b36/3/c9hl0kk/CZoc5W22aXJcN1IXCGMTTCG3K01hSz5XvB2fhM+eva4x5Y24Ns+2Fioi2AaOQuCbgNiQ5USTjYhPpIJ+pqTkL1RVAqp6Ebi8jkZlA0M7NcwQh+668TicXSjhBHBIvWPRSQA/Qawi6BbuE8gMboeZw+PkAColDonTEfpBSwbYNE/MLCyitsZD8agPlMbmpPHDHMSUfB1/VAcgw6G0EVcO5HW/MdtBy9BZ9S8895pq1jZX0Ui2tvDFsUHtWUYi+58Hc1CY7+akU4xKMXcOzIzX1FOKhKpCI2Hu0OccH6zVC2lZekuEp5OIsq8asNaG+5X6mHg+CIPdU6wIKhpo6SiQSnH5qABzTGziGoHnYV46caOhTpAlPYNU61cREeEAm3QVHcZVfhQdTVtoORTXBq1Sg8IKDGqTu4qxjGlL+pJK9yhKThAaalUYvarmKclnb8hYTkOBVqCh6g5edhi6KrGFsY0PM/nMcpbnM5Bg/Y1L/BMnOuYorln0hr0xBgE5zbcpJJzNF3iSowimtILT+FZecPNN8iU5tfGUK5nJm1mBjnYWt2iax9hMYKqJJMdhrL6+9gWTr2F5GneaNIZz8ZUsq3sWJsVRkehui7UftZ+P2cMdZN81T8J06xbupz0IzvdNi1gzO1cs7QupUxsvNKcaaWBuXqxnjBEsXnirb1orf3i7nn9BWx2ntMsj544LQBctoGMrlI+ASC/jh1lY7c1kKllozC6pykLHBta2jP6btNMnnJl0W2OaDyK7S/BF0JHLPzxGccm6AiTFEqxsgzJsNW/VJPz4ed+8gfvtIkg1ApqJ0AAAAASUVORK5CYII=') 243 | toggleoff = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAACIAAAARCAYAAAC4qX7BAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAKjSURBVHgBrZZPaxNBGMafmZ002WabBLtkG1qQQguCsVUEDz0IuQgG/948WD+B1pt4s3gSRRD1C5T6AXqo8RhPvfXQmkOhUpDaprFpkzTZzWazO+NspKUerAnZHwxZyLy7777zPs+7BKfI5+dZwkiPU8+7yUHvg4g0BNERAEKIGgFZASWfBSXLtdK3nUxm3j3+nxxfbG7mwqZjPhYcj8ID0anooA5VTUChIbRdG7Z9hIb5q3PdN4SsESIWdweKH7OTc62TRHK59+HU+dRzIpRnMS2pjqauEMYG5H5FLuK/Dbhw0XaaKJYKqJt74JyjTyy5Xhe3i6+y2bkW8Y8jrl98SonyciR5YVAfnpRVYP+M9rw2yoffUdrfkMl46BOZDH9RLSff0bhxaVSe3WxMMwb1cxNnJuGjKCHowxPQNAMBoAJ01jAOxqlwvNuMhadTI+nOQ7rB75uxkcuQvYQ+8VtjqtV2s5Qykh3SkgiF1J7uoLAQotFABAVBlXsUAjNqOCZVxXoK9vdHwgkEgdRDmsrfOJPV8NXRWzAB6/Io/4uATgVE2fOcjkR7ixXSU5oIiJqsCClYdlX6RG9S5J4rTa6OQBBYoRxiyTL3pT+0eop1ZTXq0mmDgHORo8zjX2zHWt/ZXROcu10F+qa2u1eQyQRj944ILdNKZWOLcL541Cg19w82Ow85O/s/zurbfABYEN4nu5r4qSwsfOV371xf1WJRalqH12y7FlLVOCj1BUVPZo2QPeQPvO2dVRxWf/Q7a3xlNMHxpqjuvb1x9UH7r+nbsOtPQJSHTAlPD0WTUCMxMBaBJ6vQbFbRsMpwHBP9I9blWtQipQ+Tp6fvMfl8niUS1TFO2reIdFzCMSN3xBEERJTlt01BJrBEZF9WKsZWJpM5acrfYfspQAZFd0gAAAAASUVORK5CYII=') 244 | tabsgeneral = PhotoImage(data='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') 245 | tabsdata = PhotoImage(data='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') 246 | tabscopy = PhotoImage(data='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') 247 | importlistboxbg = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAAR0AAAC2CAYAAADkxlniAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAQDSURBVHgB7dsxbttWHMfxR2rq5t5AmwEv0dgtyg1swNrTG/QGbm7QbB3bsYCM6gZhT1B1MTx67KgDSFQfBcl1kDgJEuk3fT4ArQdSXr/485FqymdcXl5O27Z92TTNdLvdjuvnuAD8b1WPZW3Dcr1e/75YLJaf+nLz3IUhNqPR6KYupwXgy3WbzeZNjU/3sYsfRKfG5qxONje1Wj8VgK9U74x+6ft+iM/q6fn3olODM67TzZ91OSkA325Zp56rGp6Hw4nH6AwTTg3OuyI4wHEN4Xl1mHjaw9nhlqoIDnB8k31fdnaTzn7T+F0BOJG6T/xqPp93u0ln/5QK4GTqxvKuM81sNpvUHea/C8CJDdNOu16vXxeAgDrgDC8bty8KQECddF4OezqeWAEp4yE6ZwUgY9wWgCDRAaJEB4gSHSBKdIAo0QGiRAeIEh0gSnSAKNEBokQHiBIdIEp0gCjRAaJEB4gSHSBKdIAo0QGiRAeIEh0gSnSAKNEBokQHiBIdIEp0gCjRAaJEB4gSHSBKdIAo0QGiRAeIEh0gSnSAKNEBokQHiBIdIEp0gCjRAaJEB4gSHSBKdIAo0QGiRAeIEh0gSnSAKNEBokQHiBIdIEp0gCjRAaJEB4gSHSBKdIAo0QGiRAeIEh0gSnSAKNEBokQHiBIdIEp0gCjRAaJEB4gSHSBKdIAo0QGiRAeIEh0gSnSAKNEBokQHiBIdIEp0gCjRAaJEB4gSHSBKdIAo0QGiRAeIEh0gSnSAKNEBokQHiBIdIEp0gCjRAaJEB4gSHSBKdIAo0QGiRAeIEh0gSnSAKNEBokQHiBIdIEp0gCjRAaJEB4gSHSBKdIAo0QGiRAeIEh0gSnSAKNEBokQHiBIdIEp0gCjRAaJEB4gSHSBKdIAo0QGiRAeIEh0gSnSAKNEBokQHiBIdIEp0gCjRAaJEB4gSHSBKdIAo0QGiRAeIEh0gSnSAKNEBokQHiBIdIEp0gCjRAaJEB4gSHSBKdIAo0QGiRAeIEh0gSnSAKNEBokQHiBIdIEp0gCjRAaJEB4gSHSBKdIAo0QGiRAeIEh0gSnSAKNEBokQHiBIdIEp0gKh2u90+FICMVds0zUMByFgOk85fBSCg7/t/2qorAAF1yPmtnc/nXV13BeC0usVisdw9var7Om8KwAkdOjMa/tzd3T1cXFx8X5c/FIDje3t7e/vrsHh8T2ez2fxcP5YF4LiW+77sPEan3mut6oWrIjzA8QzBuRr6cjgxenr1/v5+dX5+/kd9ovVdcasFfJu3NTg/1uD8+/Rk89y3r6+vp/Xx1k1dTgvAl+uGTeP9k/EPNJ/779lsNun7/nVdvqjHpB5nBWBv+CnV8MuGegwvGnfPxebgP+5yqQIxUL6KAAAAAElFTkSuQmCC') 248 | importhoverlbl = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAADgAAAAaCAYAAADi4p8jAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMASURBVHgB5VjdahpBFD5uJIFAgiEhCQRCehcSsKngdfUNRPS67RO0b9D0DZInaHqtiG9ge+1FVRC8ECqCgj/ggqAI/vR8p45szLqufzGmHwy7M2dm9nznnJkzs0SvHA4rYSAQcGmaFnA4HO8Hg4GPny5udtH6kUJhnX7FYrEHq46mBIfEPjOhL/QyCFmhwEQfmOg3M+ETgkzugsklmNwFbRYKvV7PH4/HC8bGRwTD4fBNv99P0Mv32iTo7Bx/JBJJqYYRQXhua2vrN20uOQWdPflOeVJTrQhL2nxygIsdlcA+gooQDAaDXzdwzVkB+wg2yH8hygT/vDKCAEL1jcbkPtohVywWpawTrVaLms2m3e6SwzUkcTu92RrU7XYftaHe6XQm1o1A+/h4OzK0K1mj0aBarUZ2AW5Oft7QjMjn88QLWayJjzudTjo+PqZqtSrK7u3t0eXlpRglnU7TwcGBKIf6yckJnZ+fyzzwCOZSJI2ybDYr8+i6Lt/Ce6VSERnaPB6PHVV9cxFUVr26uhKloUy73Sa32y2KZjIZUR6KQb69vS0KQZbL5Wh3d5eOjo6E3OHhIZ2dnYkM9VKpJHWMQ8GcRqCfMoINuDSaE7AoPLezsyMFdUDVoZwCFFay09NT8abyvlEGD8I7CjCCETAYCvrOQlCnBYGPWsFI1moM+k2ba1ZofFBdmOA0IOwAhBfWEdYkvAAy47Jxr43DzFgWSDlx5bCbA1VoqDBUQKgaLT/uBZ6fksmkvCMMFQlsRFiT5XL5iczMk/v7+1Sv12XNX19fkx2CjmEe/E4rgNpwvF7vaKuHMcz6gZCZbBGw8z5pfHuI0xLW4TRA+UkEEA3LJsco4DKs8albZ6b3tAJAcZuhtHRwVP7AU9IEe/GOSRZoBUDOWwMK0Wj0Fi9CEF5kkn56hlB9BuCQ7VeVUaLHBRG3YdpsknKjN/62+L/+yRgRCoVuOWw/bABRnXW85zR0h6U2LnRMGz3Mkz5+fUtzHMxXAOz6IPUThxSkOTNiCn8BS9WGFWpdKj4AAAAASUVORK5CYII=') 249 | importhover = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAACkAAAApCAYAAACoYAD2AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAO9SURBVHgBzZlNTBNBFMffTKXEiEkvJpCQuJp4NClwIpgAR4IGuGgCBxCiNwVueGobwxm9alQ46IGLJQr1oGkJX55olZskuBoTPowEA4S4pju+N7XN9mu73W1pf0kzm903yT9v3nsz88rAJq/DXo/bBb3g4u0AwouvPPhTDCYqY6AKwVQAfVHTINLXGVPBBqwYYxJWWwNDwFmPENABRYKiI0KIme622HRR86wavlttGY3ruh9neMA5Kno/YFVsQZGhsFcRteyFHc9ZQNU00VkoDLjZx9Bay6Bew6JlEkgobjeLLqx6x8yM8ooMrTT7dF2fLtHymuHB5JoKrTX78hnkXG4pEIQfThnOmb+rdT2Q+T5LpEwQoT+CCsG5GOpqjc0Y36WJpCShGDyFJTbjAJOpyZhMaTGpu1m4wgIJTy1WE+OLlMj5Fe8QpO8YFYOqiTHjDZ5kPnDI+4Vf0N0WlaNTMON9tMPRsxRZKi/ubmtpo0M8NbQFw3+RTLBBqEKwJPXIUW57rGw7iiMoNmnJue6uToFJXG7oxeWm82D14gJo50wIBaoa5uUYjwrY4PgwDk8f/4CN9SNTu8/4neyOj+JgEw9ltwI22N3RIDj7EybubWJd3M9pQ/XyAX4nu60vJ2AThYNNLl85CwMjDfJ5avJbllASODX5XT4PDDfA1eY6sAubX2kS4IBXz3fg5bNt+UzCtzZPUmNSYP9IPTiBPKmCA/qH61MeTQorpUBE5VgwD6xaB2f35NKaCU2ST+DDia2U562Aia2iJ8UnqxPmMAEo9nLtzST07mgjnKtzyTGXQJr3cek3fAjtg1WwRKpnmA4RrJgl2bt7bl6QvxKzyLU4BKGK0ThEOB7TD5hAb1YhGI+RvtaYKusk3gznipm8Z/O8uBE9lCPFrRUwHuWFTF7EZPPJzb4CmN9vKHGe4BbnlDv3G6H3VsHYVfGUf4kepCdpybGRFCg0i5KCSo1VT2SSzHwLAoF6RcmntCvtwnJTuEoOwCkvEml7N3OJ2zhYLu5lATcXjYtO46s0kdg5UNFqHCqIwGXua03vsmWdgqhnqOuF47McYJUJXL8Wy2rx5O1Pvlny+vG25vgubhUSeKMt5s/1zbSJ+nbZO8aYFFq+1gsdcJgYN+v6Fu70rmETS8ceURlaMHgCi/zFZM2MwUws98wTXQ7pVQWcgt4TeeIvF0X9+0CQWOzTDDIb9ZQ8x3EL/nMOpvuaYpZLXdEikyTCADoS/XR2kSVunYrBRKUDNcZ0DOL4P855CBYjzMg/VkKJHOD9xgQAAAAASUVORK5CYII=') 250 | importbtn = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAACkAAAApCAYAAACoYAD2AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANNSURBVHgBzZk9T9tQFIZPHAaEhJQNBIK6W4GFbt1qtm6N4AdAx05Vf0Fg68g/KN0BhV/QsFViKCyAxICFxIBEJKNIkRLlg/e9uo4cYif+SuJHiu699r3ym+Nz7sdxTmJSLBYLhmEUc7ncZzQ3u91uAXXTvY+2jbaNqo36eafTqZTLZVtikIvSWQvbw8O/omlJdCoQ/Of09PQoyqDQInd2dn6g2MevIMmhdQ/Cih0pEtYz8/n8b4lnuVHY7XZ7a5Qb5IfdhPV28XrLqH6Q8aDcZ21trXFzc/MvqFOgyO3t7RJ87xDVWRkvs3jOFwgVCD336+ArUgvclwmC51lBQgdEMkAw4JdMAQpdX1+3IfSq77q3oYPkv6QTwXFxEEwfvcFkeO/Cif/KdAWSgp5NevReN/yQk/SeZAMT/vniRrzXkiVJyPPzs1xcXKgyKTBYiSsc60qktqIpCWk0Gn1lQtQcyooSCYG7kkH0HkEMRrSMZ8lLA0tvagxLMgy3g4beD2YW6qNPmpJtNg3s60yJQavVkoeHB6nVakP78T77YRWRmBSMuFNPs9mUp6cnub29DZwXeZ332a9er0tMTENiMjc3J8vLy6p+f38/IJRtXidLS0syPz8vcZmRBPDh5PHxUQmicOI4Ts9y7OP+mbjQJ21JgFeEKyxNgcCmTzphe9O33FcYJHTYNXJ3d6csH0kkzsNXYXtTJH3Nb22mqNXVVcE2S5V+AjmOrlCtViUC9gwsWUEllbV7YWFB/dKEiQVasiwZhpkPA9t0+mRFsolKzah5EiY9izKSE3kc3NWJfhsGpmRYqoMYt0MYyLAder5h4HCJS8rKyoosLi6O6mafnJy8Z0VZkq8cAXQwahSDglEb1hJvcSM/hEBasaen70iLMzdPi5ZMn54VSd/ajZ3KNxShJ/cxwXP3lvdCn0hGEsz8U6YI3e5tlm3AuXDWvdzY2KAbWDJhKPD4+HggxeMbAdfX15VJC9UC9/3uBYapFvqC6icZb/rPgYt9R6AcBnUIlelljiiN5IEPFQbrqExv6Jw5sxwoSimJdfTrPQzTOdLXB6JTMtw1WRIdfn04w6bhSO8ZQhFZpIt2A4uJTzTf8dTp8x2HQi71d5xyFGFeXgGRXnuZTWIyPQAAAABJRU5ErkJggg==') 251 | formattabplain = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAASAAAAAWCAYAAABg10GEAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAK+SURBVHgB7dzNahphFAbgM2MggQSUZBFIIJEIgoKQZXe1dyDivrmDNlcQvYPkDuxexSy7qr0CAy7cqqCgICgqKPjT80oMaVqhpfU7m/eB+XXcuHg93zdzxpMtUqlUyPf9G8/z3q9Wq2vdhoWcmM/n0uv1ZDAYyGQykel0KvTnDg8P5ejoSE5OTtYLmXjCslgsHstq20Xe2xPPwfNJA+ezHoaEnEHwtNtt6XQ66336dwcHB3JxcSGnp6dCZhpaxORKpVL+7Qc/BZCGT1jD5xurHfdQ5dRqNVY7O3J2diaRSETIjobQvYbQ7etzgc0Ow8cOw2f3RqORzGYzDskMaba8i8fj4Xq9/rg59xJA+kGV4WOjWq0yfBzAfBqGtsfHx0JmrmOxWEhD6CsOfKzS6fQdw8dGs9lk+DiE+bXhcChkB/PLmUwmiX0fQy89kRVyDsHTarWE3ELoky2dD7rDVqd9/KSQCf4T28DvzruM5pLrO+5a/XwUMtHtdoVs9Pt9IVta/KR8LYXCQiZwV4ZsjMdjIVt4wNnn5LMdTj7bWSwWQra0Agr6QkRkBEOwhpAJtAmQjUAgIGRruVwOMQR7EjKBpkmygWZVsoXsQQX0XchEMBgUshEKsc/amlZAFV9Xed0fCDmHDu29vT0ht/C77+/vC5nKl8vlhq+rgVZBD0LOIXzQpU1uXV5eCtnSu5A5bNd3wbQKuudktI3z83NORjuE8GH1Y0vnfnKofrC/DiBUQRpCHxhC7qEKSiQSDCEHMPTCy8nI1JdCoZDdHLw8B4REYgjZQPgwhHYLlWY0GhUy9VAsFm9en/B+d1Umk8luulXJLXTHs1v7/0GoX11d8UVkthq63Gr4/PJuaG/bN57fkJhEsyr6xdiy4Q5aNNCxjWZV9IuxZePvIHTwiAOGXHzUwQZGUpoZFV0w5Kpsu+4HjO8eSG6bfa8AAAAASUVORK5CYII=') 252 | formattabdiscord = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAASEAAAAWCAYAAACPFSq6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJSSURBVHgB7dy/ihpRFAbwM9e/oKgoqCDoYCFoZZku5g2msN99g2yeYPUNsm9gehW3TBVTpYyd7diIjbCiFsqMk3NkV2QTYSHrTHG/H1zn3nFsP86544xBF2RYOBy+VUp95GWTh0nwZolEgpLJJOVyueMA0NBEhuu6jyN26SLj9QkJn2g0+pmnd7Ik+G/xeJzK5TIVCgUC0JTteV53OBz2Xn8ROl9w/pgcQL94avGIE7wLx3FouVwej9lslgA0lDEMw6rX65npdPr9/ItTCD0H0A9C23U16/Wadrsd2jPQFgfRh0ajYXIQPb6cO4VQKpX6TQigq9tut6iIQHfN84pIyUc+n78nBJBv5vM5rVYrAtAVV0R37Xa7JXMlbRgfOwS+ms1mBKAz3qiW4odUJBJpEfhOKiFpywA01rIsKyPt2A1BIOSOGYDOlFKW4t7MJAjEZrMhAJ1xS9aUSsgkCITrugSgM66E0ooAAAIkIWQTBCIUChGAzg6Hw0pCaEIQCHnAFUBnvCc9UZxEPwkCkcng+WDQG+fPWDmO0+P5E4Gv5In6WCxGABrrjUYjWz0xXjwQ+KpSqRCAzvjucFeOx7tj+/3+K2GD2jcSQKiCQGe8F9SVKkjmxxCSaojv138iBNHVSRsmLzgD0Ni3fr/feVmc/ie0WCxsBNF1lUolqtVqBKCxh8FgcHt+wvjXVfl8vsOHe4J3Ia93rVareJkZ6Mzm8YUD6K93TRuXflEsFk3eOGrx9Ob5+TKT4M0keNLp9LH9kiOAbjzPszk7xjyk/Rpfuu4PASimkfscM+QAAAAASUVORK5CYII=') 253 | formattabcustom = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAASAAAAAWCAYAAABg10GEAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAI0SURBVHgB7dyxasJQFAbgkxsFq4MOioOLq4PQsVvtG1hxr2/Q9glsn6DtG9g3sE9Q+waCi2MUFI0OEVQURHuOVGlLHQqaDOf/QHITkyXC77k3udeiA4rFYsIYU7Es63Kz2ZzzNksASqxWK3JdlzzPo9lsRovFguBfmpwbTc6NN76P9UMnWb8PfAXPLV94x7sJAlBEgqfX61G/39+24SgcDqPH0WhU+/3FjwDi8Mly+Lyj2gGNpMpptVqodk6EQ+iZQ+j++zF710D4gGYIn9PjbLmIRqPZ+Xz+tjtm9g2EDyiG8PEHZ0wllUo97fa3AVQqlaoIH9Cq0+kgfHwk48vJZLIgbSNdLz7wQAAKSfB0u10Cf3HmVGXLPS9TIAClJpMJgf84gAoJZrhxQwBKDYdDgmCEw+Gi4UdjWQJQarlcEgTm3GDwGTTD4HNwOHvihgAAAiJdMIcAlIpEIgTB4OyZSBesSQBKxWIxgsA0pQL6IACl4vE4QTBs226Y9Xpd47ZHAAql02kKhUIEvqsNBgPHbrfbi1wudyYvBhGAMsYY4j9hvJDoM77v19Pp1Ns+BeMf4BmD0aBVJpPBYLS/HqX6kcZ+PSAsxwGaYTkO37y6rlvZ7ezfA6rX6w5XQleohEAjqYDy+TwqoRPibHn5Hj7C+uvEcrn8wCdXCUAhmR0vS3TA0Tj8uf9rbWjr0BVfXbKCTFaV+WLomoEm0hWTgWmZrCrzxdA1+zdZB7rBn9fxeNw4dNInGPP3ET/ageAAAAAASUVORK5CYII=') 254 | exporthoverlbl = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAADgAAAAaCAYAAADi4p8jAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAM3SURBVHgB5VjdahpBFD5uFgKBhA35JSEhgqIo2NQXqL6BiF63fYL2DZq+QfIETa8V8Q1sr72oCILihaIogl6IgqD40/NNnGU1aleqNqYfLDM7Z2bnfOecmTOzRK8clkXCQCCgKYoSsFgs70ajkY9LjZs1+vdI4WGdfsZiscdFHWcSHBP7xIQ+08sgtAhFJvrIRL/OEj4jyORumFyCyd3QdqE4GAz88Xi8aGycIBgOh2+Hw2GCXr7X5qHJzvFHIpGUbNAJwnM7Ozu/aHvJSTTZk2+lJxXZirCk7ScHaOyoBPYRvAiCwWDwyxauuUXAPoIN8ilEmWDhlREEEKpWlcl9MEsuk8lQp9OZaHO73bS3t0frRrfbpXa7TcfHx2aHiByuIombHcEWIavVanqSfr9PqqqKEmN3d3dpluLALJlxXK/Xo2q1ugxBAjeVy1v6S6TTabq4uBCTQ2F42uv1Ui6XE96F5SVZh8MhFEa/QqGgR4RRViqVRBvGod/19bXoCySTSXI6nbS/v29GNd/SBBuNBrVaLVE/ODgQpEAOSkE5KHJ5eSnksD4el8slCJTLZSGHgvAG2jwezzMZxmAOhD9kEhgjjWASmkJLAh8HMTxyIpA8OTmhbDZLR0dHdHZ2pvdHXSp5enqqewyGgmGMMngM5OQ3jeTkXEuQEwTxhSYtkf8QGrPWAeceUU5vQghNCam87G98N9ZXCYUPqs1lBkARrAv5APBGvV4X4QWClUpF74+wQj8QRf3w8FC0Y23WarUJmaZpuqHmwWgwE0ipuHKYTROYHGtNbgIA1gmUw0YA79rtdsrn83R+fi7kCClsOjAM5FdXV6Id/fAdbFAAZNih5TzG8ARgENZV9MecJkM1ZRnnwW+0BkAZKA3l4al5qQCYJrQKsEE+Knx7iNPTOlwr5lkcxNZBjlHEZVjhU3eTmT7QGmCz2czmq5WDo/I7SpEm2Iv3TLJIK8YmjnBzUIxGo3eoCILwIpP00wZCdQPAIdsvX/REjwsibsO03STFjd742+L/+idjRCgUuuOwfb8FRJus4wOnm3sstWmh5U+jx3nSx9U3tIKbxwqAXR+kfuCQgjQ3i5jEbwG9mpu35/AZAAAAAElFTkSuQmCC') 255 | exporthover = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAACkAAAApCAYAAACoYAD2AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAPQSURBVHgBzZnfS1NhGMef951OysRR+AsCp+VlsOmNYqVCQVqhXmRQF1rRXaDeBV24/QVZt6LNC4Xqolnpugg2yx9dtWV3hnRuQjGIQVY02Xl7nnPQzja3nR+b2wf03c6eA9+97/PrPGNgkhdBl8Nugz6w8Q4A4cJLDvxzakwkxkASgkkA8mIsBqH+rogEJmBGjElYWSkMAWe9QkAnGARFh4QQ05fbIz5D9+k1fLPSMhyXZQ/e4QDrSLj7Xr1is4oMBF1OUcaemNk5HUixmOjK5gY804eB1ZZBuZSF8ySQcNrtLLyw4hrJZJRWZGC5eUyWZV+OjjcTDgyuh4HV5rF0BgcetyIQhAcOGc6Zp7vtozf5eopIJUCEPA4FgnMx1N0WmdZeSxBJQUI+eAhHnIkoBpNbG0wJPinbWbDAAglHGWYT7YV9kfPLriFIrBgFg7KJNuL3j3t+2f0VdIj0P9uG2akt+PUzDkYpr7BB77UquHmnTo85HXsDHnuUqwL17eIcCpx49M2UQILuoy/of7qtx9xRSiUYKaF/TLBBoaNAvl34oayjD+rhQs9xMMrn8A7cv/cFXj7/Dn3Xq7PaY0rqxWWcK2WP6asoOzvqDp5xHwMzVNfaDdmTb1JTw2V73kpeTrDZoQ99kvrB4sUG0MGZEE7IERT5A5fW9AaGTpirBP3Rqdf8Ys8J2Fj/DTV1qb41M7UJs5NbyuuJx5gB0H+TUw3dRwHX2HQUDOBgmB8FWEQrUMuN27V6c2JGOFhEK7Dx9BF1bVJXyokzk5tgFUsitQIpd7aer1Ret56rVN4TuRBKIiUwwRomZq3A5ORO77VCN9b/gEmkEkyYUWbomVHlFB5p30AV7p4jbXInoRQsH95FobbOWCLfAwNbwrIoPlGYg0HKj9ng7vDJrHb0BcxWKAJTpMSZDCEobhZ5LA5+KGJiHEKc+jUminM30R9D/W0RSUlB+GQ4B0UI+qPyQKaI3N0FHy5RKC6kvTGMIpKOHAdJXrBITV1ZwmqN/3oSMuTCkjuotwHOM7iL4Ya9NwllkdnELSj0sWNxiXHRpb2UIBInBxJajUIBEXjM/W2JU7aUBoOcVZat+6cZMMt4r5yNpIx40lbtV+9dHnxaSzvpyjUk8Gp7xHPQZxlbi9dLrhHGFKH5G72gD2JCHM009c0+6V3FIZaMM6I8jGCwAwvtYrAm+2Ayups0dcqh7KoTrIK7J9L430EY7iRJLE5mB5mJfEo7x7EE/y0HX787ojvVmWh3VVQ3gE51ns7qmfrU6dSYSGpDzSIQx99xKsBvRJiWf1+Xf40B4dLKAAAAAElFTkSuQmCC') 256 | exportbtn = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAACkAAAApCAYAAACoYAD2AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANwSURBVHgBzZnNTttAFIVvnIg/CclICBBI1NkV2NBddzW77hrBA0CXXVV9AmDXZd6gdA8oPEHDrrvABtjVAoEAIRGEQKrET8+xxqmT2GTGSYg/CWbGHicnd+bembnOSEIKhYJtWVYhk8l8QHP++fnZRt0J7qPtoe2h6qG++/T0VC6VSp4kIGPSWQlbwZd/QtMVc8oQ/HN7e3vD5CFtkUtLS19RrOHPlvahddd1xbYUCes52Wz2hySzXCu8x8fHhVbTIPvSTVhvGcNbQvWtdAd/+szMzPw9PDz8HdcpVuTi4uIq5l4R1QHpLgP4no8QKhC6G9UhUqQSuCavCL7PjRPaJJIOgge+Sw+g0NnZWQ9C9+uuhxvKSSrSGQ9OShXO9C7sTFb4LibxL+mtQGKraFKjNtyYhwzSK5IOHMzPm8Dja8MNkX/Cy1ocFxcXcnZ2Jg8PD2JKLpeTsbExmZqa0unOYc9j2KuWEriiK/D4+DiRQMLn+APPz891uvsxlJUc/0Hgss5TV1dXfpnP52V0dFRMub29laOjI7m8vJSJiYmW/dUeoWjRo0VzyYP5/XJ4eFiS0NfXJ4a4alNjuZJiuB201H4wtVAfHceRDkHHqlQquo6hy3wO+zoHarV601nu7u6kv7+/6R699vT01K+fnJz487cx1PA5fsbQ0JAYYOd0Qk/A5ORk5PWwwPA10iiUkcEQx5I2CQscHBz0y8BSUeKT0JbIsAhaaGRkxK/btl2zWCeEWjzVSQIYmMMCG4M722Gh9/f3khCPc7IqCeCQjo+P+9aLC+4USme5vr5OEsj/i8R5eB8Bc14MwXZKpqenW/bjD0i6Qik8BvOypBgmFixYsiQphpkPi/s11MuSTvzUjB+CYNIdSSFMybD0RcKkGygSeXkX8YI0jC+SQw4HWpc2Cdb0qLXdFOaKgnrdzgJnbp4WXek93tbWVm2Rr1sWsXP5LL0fdh7AFsIX6kTSk2Dmb9JDOO0as2xNaRacdffm5uY4DVx5ZShwc3OzKcUTmbA6ODgov7ZQJXAt6l5s6k8JvUH1vXQ3/VfFFPsCRynGddDK9DJHZLKDN6BMZ22V6dXOmTPLgWK1Q2KraniLOp2N3j4QlZJhxsMVc/j2YYcrnNozaGEsMkBNA5eJTzTfqFOnE9xX73EoZE+9xymZCAvzD9A0d76ciBYHAAAAAElFTkSuQmCC') 257 | copyformatentrybg = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAAR8AAAAsCAYAAABczrz6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAI/SURBVHgB7d0/jtNAFIDxN3ZFF27gLlKadUm33hskUtwvN+AGYW/AdpRQIjnCN1hzAkwTpUxJ6QP4D28sOwqEsFoRzzTfT/JmZGfbT8/jRDHyjOVymQRBcGuMSbqui/Q1EgA4V+lRaiPKuq4/53le/uvN5tIFG50wDDe6TAQAXq5omuZBI1T87eJZfDQ6M510NlqvdwIA/0nvmD60bWsjVJ2e/y0+Gp5Ip52vuowFAK6n1ClopQE6jCeO8bETj4bnSQgPgGnYAN2NE1AwnrW3WkJ4AEwnHjrT6yefYXP5SQBgYrqffJdlWdFPPsNTLQCYnG5A970xaZrGuhP9XQDAETv9BHVd3wsAOKQDj/3wcnAjAOCQTj63ds+HJ1wAXItsfGYCAG5FgQCAB8QHgBfEB4AXxAeAF8QHgBfEB4AXxAeAF8QHgBfEB4AXxAeAF8QHgBfEB4AXxAeAF8QHgBfEB4AXxAeAF8QHgBfEB4AXxAeAF0HXdQcBALeqwBhzEABwq7STzzcBAIfatv1hfzSwEABwSIeeT0GWZYWuCwEAN4o8z8v+aZfu+zwIADgw9ia0f3a73WGxWLzW5RsBgOk8brfbj3Zx/JxP0zTv9aUUAJhGOXSmd4yP3oNVemElBAjA9dnwrGxnxhPh6dX9fl/N5/Mv+gTslXALBuA6HjU8bzU8P09PmkvvXq/XiT4O2+gyEQB4ucJuLg9P1M+Y5/47TdO4bdt7Xd7oEesxEwD4g/2qlv3GhB72g8vFpeiMfgHJzqfuxjF4XwAAAABJRU5ErkJggg==') 258 | #reused 259 | # submitbtnicon 260 | # submitbtnactive 261 | 262 | #msgb assets 263 | errormsgb = PhotoImage(data='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') 264 | infomsgb = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAAcIAAACxCAYAAABX2b2eAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAgkSURBVHgB7d09aJz3HcDx/53kYgdasB0MFtZiUwdiQVzSDmnUJbK32EOhWgpNt9BOAS8dWujUrWuhm9OtyhZ5s7KZZKlBhTgQgdVBrrwkMniwPVSn6idFsV5Olu7R3XOn+30+EEz8cpYWf/k9z/+lMTExsVYAIKlmAYDEhBCA1IQQgNSEEIDUhBCA1IQQgNSEEIDUhBCA1IQQgNSEEIDUhBCA1IQQgNSEEIDUhBCA1IQQgNSEEIDUhBCA1IQQgNSEEIDUhBCA1IQQgNSEEIDUhBCA1IQQgNSEEIDUhBCA1IQQgNSEEIDURssxcv5Co1x6o1HOjzfL2Hgpp06Vcvps4/tff/FsrayslPLkm1KWl1plcWFt4z8A2E9jYmJioEsxth6/Kz9plsn3GuXka41Sxf0vWuXL+Vb5al4UAdhpYEN48XKjXL8xsvFjtzz5dq3cvdMq9z9vFQAIAxfCk6+VcvNXI+Xtn/fu9WUE8e9//d/6jwWA5AYqhDH9ffC7kcqPQDs1tz4d3p1dLQDkNTAhvHajWa6/P1Lqtvxorfzjb6ZDgKwGYvvEjemRvkQwxGKcD2+NltNnCwAJ9X0irDIJvnhWyr++aJUH8631iW5z20SIqJ0f31xk02nYvDcEyKmvIawSwcWFVpm53doI16u8O9UsN6c7++x4TBoxjNACkMPIuXPn/lz64M2rzfLLX3cWqrnZ9Qh+vFpePD/49y79Z21j3+DVnzXL6IlyKD/8UaP84ESjfP3AfkOALPryjjAeW96c7uyvjknw7p3OVnjGhPfpTGd/JibJN6/Ws2oVgP7rSwjjcej2o9EOIx6HthP7DmPbxX4b7+NUmYcdHrM2/cHoxucCMPxqP2s0psFON8vHwph27wRjtenk1MvP2m/By9zsarl06/Df6qn1CP7ivZGOJ1AAjp/aJ8Iq2yS+mt87De6OYIgpM7ZC7J7m4uDtThfAxCNSUyHA8Ks1hFWmwbDyzc7/j4ltdwRf/h2N8tN39v7ayredPR7dmgoBGG61hrDqpvknKzsjFtcxvUq794/PD7HSdLd3p1zXCDDsav2X/uIb1VZjju0K30ELbZ4/6872h1PfLcQBYHjVFsI48aXTlaJbpn878v0UuHk906u/7HaX8cYlvlVcuWoqBBhmta0avfTj6pNVBPSjPx3uS40VprtDGO8mx8YrTqPjJkKAYVbbuFP1sWgnYtvE7MzeFaYXL1f/Ng96HwnA8VZbCHt9x2BEcPOc0L3T4EGPUl8l3hNWfaQLwOCrLYRnzpSeiT2Cmxvp974brHKKzW6uaAIYXrWF8PTrvZuqPv1ktW0E43aLKvsWdxNCgOF17JdExuKY+5/vfS8YAezXZb8AHB/HPoTtIjh2IQ7OFkEADlZbCHtx2W0skGm3VeI3v+/urhC31gMMr9pC2K3TXrZbXtr7mbFVoturPJ+7sR5gaNUWwrgkt+ufudT+3WC37T7rFIDhUV8Il7ofk3YrRasepbafx0trPXmsC8BgqC2EiwvdD+HY+N4v/0yXH4v+95FpEGCY1RbCx4+6P1m9/U5zxx6/2DfY7ct0210KDMDwqO3Q7VhwEtPVpS5eaxTHn/3hLyc2ps3YMtGLY9weLpgIAYZZrfsI52ZXSy/E1Uy9iGBs1vd+EGC41RrCmNyO0568e3MeiwIMu9pPlrnb5alwcaG18Zlxwkw3IxvRfmyhDMDQq+0d4Zb7648bJ6eaXbnwdm52PYJ3Xob19NlW+eiPo11ZMDNzuzePcQEYLH05a3R25uiRielvewQ3f26tKxPnvc9abfcoAjB8+hLCeOx477OjBWu/UB31BJvNwHo3CJBF326fmJ1pHWlrwvkL7R+tjl2o/sh164LfF89MgwBZ9PUapk9ur1Ze4BJ7CK/f2HnVUmyun7xW/Vv658erHokCJNOYmJjo67/8cVPEh7dGK98CH2eBfjnfKqdfb5aJt6pvqo/FMbGQB4Bc+h7CcNQYHkU8Do1J0FFqADkNRAhDPOq89n6zTE7Vd7N8PJaNd4IehwLkVfs+wv3EWaSxgGZ5afPdX6+nw9giEatDLYwByG1gJsLt4lHp5FSjJ9Ph5kk0rZ5cCwXA8TOQIdwSQbzy1noQrx1tQoz3gA/XAxhToAACsN1Ah3C7uGHiytVmOT9eyqXLB2+RiPd+sU9x8etWefDv4hEoAG0dmxDuFhvn40zRWGRz8tTmz8Xil5j+VlaED4DDGZjFMp1adjMEAF3Q15NlAKDfhBCA1IQQgNSEEIDUhBCA1IQQgNSEEIDUhBCA1IQQgNSEEIDUhBCA1IQQgNSEEIDUhBCA1IQQgNSEEIDUhBCA1IQQgNSEEIDUhBCA1IQQgNSEEIDUhBCA1IQQgNSEEIDUhBCA1IQQgNSEEIDURp8+fVoAICsTIQCpCSEAqQkhAKkJIQCpCSEAqQkhAKkJIQCpCSEAqQkhAKkJIQCpCSEAqQkhAKkJIQCpCSEAqQkhAKkJIQCpCSEAqQkhAKkJIQCpCSEAqQkhAKkJIQCpCSEAqQkhAKkJIQCpCSEAqQkhAKkJIQCpCSEAqQkhAKkJIQCpCSEAqQkhAKkJIQCpCSEAqQkhAKkJIQCpCSEAqQkhAKkJIQCpCSEAqQkhAKkJIQCpCSEAqQkhAKkJIQCpCSEAqQkhAKkJIQCpCSEAqQkhAKkJIQCpCSEAqQkhAKkJIQCpCSEAqQkhAKkJIQCpCSEAqQkhAKkJIQCpCSEAqQkhAKkJIQCpCSEAqQkhAKkJIQCpCSEAqQkhAKkJIQCp/R/ALv6txh3C5gAAAABJRU5ErkJggg==') 265 | msgbbtn = PhotoImage(data='iVBORw0KGgoAAAANSUhEUgAAAIAAAAAsCAYAAACt4LBeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAALtSURBVHgB7Zy/ctpAEMZXB4VLypRyF4bCdpcuKl1iiT7OE2RcusLu0vkR4nQpQCFdusidu5AG6KI8QeTSM/zJt/jEiAAy4PEY3e1vRqNFiIb9bu9u7/YcegL1er2Cm1cul99OJhMX16HjOPysQsJzkOCK+Y7/uTscDm9gR51OJ6EtcWgL4HivVCo1YR6SOHsX6IxGo88QQoc2ZCMBBEFQRyu/gvpcEnaRGP65DMPwet0frCUAtHgXLf4TTI+EItBFRDhBQIgfe7H02Ato9R+UUl9gviahKLyCz06r1ep9v9+/zXsxVwC+7zcR7j/C3COhaOzBd8cQAUEEN6teWikA7fwLEgoNfOjliWCpAMT5ZpEnggUBcJ+vw75gEFoEd/+PCeZmAXq0/5Nkbm8qCWYHR9nZgcp+C+d/JXG+yVT0dH7GTADo90/pIbMnmI3HCb30QzYCNEmwhavUmAqAFSHpXatwG42Gx0YaAd6RYBVYM5hGfIeXdDEw+EuCbfCMYF/B+R4JNjLdy6HG47FHgpVwcgiLRuqABCuB710eBErix14OWAAuCbZSkQhgNxVFgtWwALbeUiwUnkQhIyQCsJdYcYEBCbaScCLoDwlWAt//4kRQRIKVoPuPFBYEIpKBoK1EShcWyjjAPr6x76d5AAwEL0mwCkT+a77PdgX7vv9bdgVZQ9xut/fZmGUC4fwzEqyAK4hTe64uIAiCHyQVwKbTRes/Sj/MrQWgX3hPMiMwGd4GdpJ9MFcaNhgMklqtdg/zmATjQDd/Hobh9+yzhdrAXq93CxFw1+CRYAw802u1Wgs1n0urgyGCSERgDtr5F8u+W3k+gIjADPKcz+SeEKJFcAfzDckpIUWDj5I7Xxb2s2xySBRXDkvxaDGIeEa3ziFRGx0TpyuIm5Ix3FliXGeY5699XuBWB0Xq8mKuJ6yT8NJMF/N0Xx/RhmwlgBRdV+jRw0CRC0x4h7FLstP4uUh4C5/excUbeTjUP+mo2H+lrvq95RsvjQAAAABJRU5ErkJggg==') 266 | 267 | ###commands 268 | 269 | def msgb(title:str,type:str,msg:str,optionright:str,optionleft:str = None): 270 | 271 | msgbwind = Toplevel() 272 | msgbwind.grab_set() 273 | msgbwind.geometry("450x175") 274 | msgbwind.configure(bg='#2C2C2C') 275 | msgbwind.title(title) 276 | msgbwind.resizable(0,0) 277 | centerwind(msgbwind) 278 | 279 | msgbimg = Label(msgbwind,bg="#2C2C2C",borderwidth=0) 280 | 281 | if type == 'error': 282 | msgbimg.config(image=errormsgb) 283 | msgbimg.place(x=0,y=0) 284 | msgberrording = threading.Thread(target=ahk.sound_play, args=(errormp3path,)) 285 | msgberrording.start() 286 | elif type == 'info': 287 | msgbimg.config(image=infomsgb) 288 | msgbimg.place(x=0,y=0) 289 | msgbding = threading.Thread(target=ahk.sound_play, args=(notifmp3path,)) 290 | msgbding.start() 291 | 292 | def btn1click(): 293 | msgbwind.destroy() 294 | return optionleft 295 | 296 | def btn2click(): 297 | msgbwind.destroy() 298 | return optionright 299 | 300 | if optionleft == None: 301 | pass 302 | else: 303 | btn1 = Button(msgbwind,bg='#1E1E1E',fg='#C2C2C2' 304 | ,image=msgbbtn,borderwidth=0,activebackground='#1E1E1E' 305 | ,text=optionleft,font=('Nexa Bold',12),justify=CENTER 306 | ,activeforeground='#C2C2C2',command=btn1click,compound=CENTER).place(x=175,y=115) 307 | 308 | btn2 = Button(msgbwind,bg='#1E1E1E',fg='#C2C2C2',image=msgbbtn,borderwidth=0,activebackground='#1E1E1E' 309 | ,text=optionright,font=('Nexa Bold',12),justify=CENTER 310 | ,activeforeground='#C2C2C2',command=btn2click,compound=CENTER).place(x=310,y=115) 311 | 312 | msglbl = Label(msgbwind,bg="#2C2C2C",font=('Nexa Light', 10) 313 | ,text=msg,fg="#C2C2C2",wraplength=320,justify=LEFT).place(x=80,y=33) 314 | 315 | 316 | 317 | def note(msg:str,color:str = 'yellow',timer:int = 5000): 318 | try: 319 | root.nametowidget('note1').destroy() 320 | root.nametowidget('noteclosebtn').destroy() 321 | except: 322 | pass 323 | 324 | if color == 'red': 325 | ncolor = rednote 326 | ncloseclr = rednoteclose 327 | bgcolor = '#C53131' 328 | fgcolor = '#C2C2C2' 329 | errording = threading.Thread(target=ahk.sound_play, args=(errormp3path,)) 330 | errording.start() 331 | else: 332 | ncolor = mainwindnote 333 | ncloseclr = mainwindnoteclose 334 | bgcolor = '#B5C531' 335 | fgcolor = '#000000' 336 | notifding = threading.Thread(target=ahk.sound_play, args=(notifmp3path,)) 337 | notifding.start() 338 | 339 | def endnote(): 340 | note1.destroy() 341 | noteclosebtn.destroy() 342 | 343 | def destroy_note(): 344 | lstbximglabel.config(image=lstbximg) 345 | lstbx.config(height= 14) 346 | 347 | root.after(500,destroy_note) 348 | 349 | 350 | lstbx.config(height= 12) 351 | 352 | lstbximglabel.config(image=lstbximgshort) 353 | note1 = Label(root,name='note1',bg="#2C2C2C",font=('Quicksand SemiBold', 9) 354 | ,justify=LEFT,image=ncolor,text=msg,fg=fgcolor,compound=CENTER) 355 | root.nametowidget('note1').place(x=105,y=422) 356 | noteclosebtn = Button(root,name='noteclosebtn',bg=bgcolor,image=ncloseclr 357 | ,borderwidth=0,activebackground=bgcolor,command=endnote) 358 | noteclosebtn.place(x=325,y=437) 359 | 360 | root.after(timer,endnote) 361 | 362 | def addwind(): 363 | addwindow = Toplevel() 364 | addwindow.grab_set() 365 | addwindow.geometry("394x290") 366 | addwindow.configure(bg='#2C2C2C') 367 | addwindow.title("Guava - Add an account") 368 | addwindow.resizable(0,0) 369 | centerwind(addwindow) 370 | 371 | #render entry boxes 372 | 373 | #name 374 | namelblbg = Label(addwindow,image=entrylabelbgimg,bg="#2C2C2C").place(x=28.5-7,y=20) 375 | nameentrybg = Label(addwindow,image=entrybgimg,bg="#1E1E1E").place(x=168.5-7,y=28.5) 376 | namelbl = Label(addwindow,bg="#1E1E1E",font=('Nexa Light', 11) 377 | ,text='Name',fg="#C2C2C2").place(x=43-7,y=36) 378 | 379 | name_var = StringVar() 380 | name_entry = Entry(addwindow,textvariable = name_var,show=None,font = ('Nexa Light',11) 381 | ,width=17,relief=FLAT,bg='#535353',fg='#C2C2C2',insertbackground='#C2C2C2') 382 | name_entry.place(x=175,y=37) 383 | name_entry.focus_set() 384 | 385 | #username 386 | usrnamelblbg = Label(addwindow,image=entrylabelbgimg,bg="#2C2C2C").place(x=28.5-7,y=20+65) 387 | usrnameentrybg = Label(addwindow,image=entrybgimg,bg="#1E1E1E").place(x=168.5-7,y=28.5+65) 388 | usrnamelbl = Label(addwindow,bg="#1E1E1E",font=('Nexa Light', 11) 389 | ,text='Username',fg="#C2C2C2").place(x=43-7,y=36+65) 390 | 391 | usrname_var = StringVar() 392 | usrname_entry = Entry(addwindow,textvariable = usrname_var,show=None,font = ('Nexa Light',11) 393 | ,width=17,relief=FLAT,bg='#535353',fg='#C2C2C2',insertbackground='#C2C2C2') 394 | usrname_entry.place(x=175,y=102) 395 | 396 | #password 397 | passwlblbg = Label(addwindow,image=entrylabelbgimg,bg="#2C2C2C").place(x=28.5-7,y=20+130) 398 | passwentrybg = Label(addwindow,image=entrybgimg,bg="#1E1E1E").place(x=168.5-7,y=28.5+130) 399 | passwlbl = Label(addwindow,bg="#1E1E1E",font=('Nexa Light', 11) 400 | ,text='Password',fg="#C2C2C2").place(x=43-7,y=36+130) 401 | 402 | passw_var = StringVar() 403 | passw_entry = Entry(addwindow,textvariable = passw_var,font = ('Nexa Light',11) 404 | ,width=15,relief=FLAT,bg='#535353',fg='#C2C2C2',insertbackground='#C2C2C2') 405 | passw_entry.place(x=175,y=167) 406 | 407 | def pass_setting(): 408 | 409 | def showpass(): 410 | configdb.upsert({'always_showpass':'true'}, Query().always_showpass.exists()) 411 | eyebtn.config(image=eyeicon,command=hidepass) 412 | passw_entry.config(show='') 413 | addwindow.update() 414 | 415 | def hidepass(): 416 | configdb.upsert({'always_showpass':'false'}, Query().always_showpass.exists()) 417 | eyebtn.config(image=crosseyeicon,command=showpass) 418 | passw_entry.config(show='•') 419 | addwindow.update() 420 | 421 | if configdb.contains(Query().always_showpass == 'true') == True: 422 | passw_entry.config(show='') 423 | eyebtn = Button(addwindow,image=eyeicon,bg="#535353",borderwidth=0 424 | ,activebackground="#535353",command=hidepass,relief=FLAT) 425 | addwindow.update() 426 | else: 427 | passw_entry.config(show='•') 428 | eyebtn = Button(addwindow,image=crosseyeicon,bg="#535353",borderwidth=0 429 | ,activebackground="#535353",command=showpass,relief=FLAT) 430 | addwindow.update() 431 | 432 | eyebtn.place(x=334,y=168) 433 | 434 | pass_setting() 435 | 436 | def submit(): 437 | name = name_var.get() 438 | username = usrname_var.get() 439 | password = passw_var.get() 440 | 441 | def empty(): 442 | 443 | if name == '' and username == '' and password == '': 444 | return '"Name", "Username" and "Password"' 445 | elif name == '' and username == '': 446 | return '"Name" & "Username"' 447 | elif name == '' and password == '': 448 | return '"Name" & "Password"' 449 | elif username == '' and password == '': 450 | return '"Username" & "Password"' 451 | elif name == '': 452 | return '"Name"' 453 | elif username == '': 454 | return '"Username"' 455 | elif password == '': 456 | return '"Password"' 457 | 458 | 459 | if name == '' or username == '' or password == '': 460 | msg1 = "{} Can't be empty".format(empty()) 461 | msgb(title="Guava - Invalid Credentials",type='error',msg=msg1,optionright='Ok') 462 | else: 463 | for item in db: 464 | if item['name'] == name: 465 | msg2 = 'There\'s already an account with the name "{}", please choose another name or delete the existing one.'.format(name) 466 | msgb(title="Guava - Invalid Name",msg=msg2,type='error',optionright='Ok') 467 | break 468 | elif item['username'] == username: 469 | msg3 = 'There\'s already an account with the username "{}" added as "{}", please use that to login, or use the edit function if you want to change the stored password.'.format(username,item['name']) 470 | msgb(title="Guava - Account already added",msg=msg3,type='error',optionright='Ok') 471 | addwindow.destroy() 472 | notemsg = 'Operation Canceled!' 473 | note(notemsg) 474 | break 475 | else: 476 | db.insert({'name':name,'username':username,'password':password}) 477 | addwindow.destroy() 478 | notemsg = 'Account added successfully!' 479 | note(notemsg) 480 | fetch() 481 | 482 | return 483 | 484 | def enterkey(event): 485 | 486 | if addwindow.focus_get() == name_entry: 487 | usrname_entry.focus_set() 488 | elif addwindow.focus_get() == usrname_entry: 489 | passw_entry.focus_set() 490 | elif addwindow.focus_get() == passw_entry: 491 | submit() 492 | 493 | addwindow.bind('', enterkey) 494 | 495 | submit_btn = Button(addwindow,image=submitbtnicon,bg="#2C2C2C",borderwidth=0 496 | ,activebackground="#2C2C2C",command=submit,relief=FLAT) 497 | 498 | def submit_btn_hover(event): 499 | submit_btn.config(image=submitbtnactive) 500 | 501 | def submit_btn_unhover(event): 502 | submit_btn.config(image=submitbtnicon) 503 | 504 | submit_btn.bind('',submit_btn_hover) 505 | submit_btn.bind('',submit_btn_unhover) 506 | 507 | submit_btn.place(x=334,y=220) 508 | 509 | def cancel(): 510 | addwindow.destroy() 511 | notemsg = 'Operation Canceled!' 512 | note(notemsg) 513 | 514 | cancel_btn = Button(addwindow,image=cancelbtnicon,bg="#2C2C2C",borderwidth=0 515 | ,activebackground="#2C2C2C",command=cancel,relief=FLAT) 516 | 517 | def cancel_btn_hover(event): 518 | cancel_btn.config(image=cancelbtnactive) 519 | 520 | def cancel_btn_unhover(event): 521 | cancel_btn.config(image=cancelbtnicon) 522 | 523 | cancel_btn.bind('',cancel_btn_hover) 524 | cancel_btn.bind('',cancel_btn_unhover) 525 | 526 | cancel_btn.place(x=300,y=230) 527 | 528 | def editwind(): 529 | if lstbx.size() == 0: 530 | return 531 | else: 532 | if lstbx.curselection() == (): 533 | note('Select an account first!','red') 534 | return 535 | else: 536 | selectindex = lstbx.curselection()[0] 537 | editname = lstbx.get(selectindex,last=None) 538 | account = db.get(accounts.name == editname) 539 | if account['name'] == editname: 540 | oldname = account['name'] 541 | oldusername = account['username'] 542 | oldpassw = account['password'] 543 | acc_doc_id = account.doc_id 544 | else: 545 | print('Account not found in db') 546 | return 547 | 548 | editwindow = Toplevel() 549 | editwindow.grab_set() 550 | editwindow.geometry("394x290") 551 | editwindow.configure(bg='#2C2C2C') 552 | editwindow.title('Guava - Editing "{}"'.format(oldname)) 553 | editwindow.resizable(0,0) 554 | centerwind(editwindow) 555 | 556 | #render entry boxes 557 | 558 | #name 559 | namelblbg = Label(editwindow,image=entrylabelbgimg,bg="#2C2C2C").place(x=28.5-7,y=20) 560 | nameentrybg = Label(editwindow,image=entrybgimg,bg="#1E1E1E").place(x=168.5-7,y=28.5) 561 | namelbl = Label(editwindow,bg="#1E1E1E",font=('Nexa Light', 11) 562 | ,text='Name',fg="#C2C2C2").place(x=43-7,y=36) 563 | 564 | name_var = StringVar() 565 | name_entry = Entry(editwindow,textvariable = name_var,show=None,font = ('Nexa Light',11) 566 | ,width=17,relief=FLAT,bg='#535353',fg='#C2C2C2',insertbackground='#C2C2C2') 567 | name_entry.insert(0,oldname) 568 | name_entry.place(x=175,y=37) 569 | name_entry.focus_set() 570 | 571 | #username 572 | usrnamelblbg = Label(editwindow,image=entrylabelbgimg,bg="#2C2C2C").place(x=28.5-7,y=20+65) 573 | usrnameentrybg = Label(editwindow,image=entrybgimg,bg="#1E1E1E").place(x=168.5-7,y=28.5+65) 574 | usrnamelbl = Label(editwindow,bg="#1E1E1E",font=('Nexa Light', 11) 575 | ,text='Username',fg="#C2C2C2").place(x=43-7,y=36+65) 576 | 577 | usrname_var = StringVar() 578 | usrname_entry = Entry(editwindow,textvariable = usrname_var,show=None,font = ('Nexa Light',11) 579 | ,width=17,relief=FLAT,bg='#535353',fg='#C2C2C2',insertbackground='#C2C2C2') 580 | usrname_entry.insert(0,oldusername) 581 | usrname_entry.place(x=175,y=102) 582 | 583 | #password 584 | passwlblbg = Label(editwindow,image=entrylabelbgimg,bg="#2C2C2C").place(x=28.5-7,y=20+130) 585 | passwentrybg = Label(editwindow,image=entrybgimg,bg="#1E1E1E").place(x=168.5-7,y=28.5+130) 586 | passwlbl = Label(editwindow,bg="#1E1E1E",font=('Nexa Light', 11) 587 | ,text='Password',fg="#C2C2C2").place(x=43-7,y=36+130) 588 | 589 | passw_var = StringVar() 590 | passw_entry = Entry(editwindow,textvariable = passw_var,font = ('Nexa Light',11) 591 | ,width=15,relief=FLAT,bg='#535353',fg='#C2C2C2',insertbackground='#C2C2C2') 592 | passw_entry.insert(0,oldpassw) 593 | passw_entry.place(x=175,y=167) 594 | 595 | def pass_setting(): 596 | 597 | def showpass(): 598 | configdb.upsert({'always_showpass':'true'}, Query().always_showpass.exists()) 599 | eyebtn.config(image=eyeicon,command=hidepass) 600 | passw_entry.config(show='') 601 | editwindow.update() 602 | 603 | def hidepass(): 604 | configdb.upsert({'always_showpass':'false'}, Query().always_showpass.exists()) 605 | eyebtn.config(image=crosseyeicon,command=showpass) 606 | passw_entry.config(show='•') 607 | editwindow.update() 608 | 609 | if configdb.contains(Query().always_showpass == 'true') == True: 610 | passw_entry.config(show='') 611 | eyebtn = Button(editwindow,image=eyeicon,bg="#535353",borderwidth=0 612 | ,activebackground="#535353",command=hidepass,relief=FLAT) 613 | editwindow.update() 614 | else: 615 | passw_entry.config(show='•') 616 | eyebtn = Button(editwindow,image=crosseyeicon,bg="#535353",borderwidth=0 617 | ,activebackground="#535353",command=showpass,relief=FLAT) 618 | editwindow.update() 619 | 620 | eyebtn.place(x=334,y=168) 621 | 622 | pass_setting() 623 | 624 | def submit(): 625 | name = name_var.get() 626 | username = usrname_var.get() 627 | password = passw_var.get() 628 | 629 | def empty(): 630 | 631 | if name == '' and username == '' and password == '': 632 | return '"Name", "Username" and "Password"' 633 | elif name == '' and username == '': 634 | return '"Name" & "Username"' 635 | elif name == '' and password == '': 636 | return '"Name" & "Password"' 637 | elif username == '' and password == '': 638 | return '"Username" & "Password"' 639 | elif name == '': 640 | return '"Name"' 641 | elif username == '': 642 | return '"Username"' 643 | elif password == '': 644 | return '"Password"' 645 | 646 | 647 | if name == '' or username == '' or password == '': 648 | msg1 = "{} Can't be empty".format(empty()) 649 | msgb(title="Guava - Invalid Credentials",msg=msg1,type='error',optionright='Ok') 650 | elif name == oldname and username == oldusername and password == oldpassw: 651 | editwindow.destroy() 652 | notemsg = 'Operation Canceled!' 653 | note(notemsg) 654 | else: 655 | db.update({'name':name,'username':username,'password':password},doc_ids = [acc_doc_id]) 656 | editwindow.destroy() 657 | notemsg = 'Account edited successfully!' 658 | note(notemsg) 659 | fetch() 660 | 661 | return 662 | 663 | def enterkey(event): 664 | 665 | if editwindow.focus_get() == name_entry: 666 | usrname_entry.focus_set() 667 | elif editwindow.focus_get() == usrname_entry: 668 | passw_entry.focus_set() 669 | elif editwindow.focus_get() == passw_entry: 670 | submit() 671 | 672 | editwindow.bind('', enterkey) 673 | 674 | submit_btn = Button(editwindow,image=submitbtnicon,bg="#2C2C2C",borderwidth=0 675 | ,activebackground="#2C2C2C",command=submit,relief=FLAT) 676 | 677 | def submit_btn_hover(event): 678 | submit_btn.config(image=submitbtnactive) 679 | 680 | def submit_btn_unhover(event): 681 | submit_btn.config(image=submitbtnicon) 682 | 683 | submit_btn.bind('',submit_btn_hover) 684 | submit_btn.bind('',submit_btn_unhover) 685 | 686 | submit_btn.place(x=334,y=220) 687 | 688 | def cancel(): 689 | editwindow.destroy() 690 | notemsg = 'Operation Canceled!' 691 | note(notemsg) 692 | 693 | cancel_btn = Button(editwindow,image=cancelbtnicon,bg="#2C2C2C",borderwidth=0 694 | ,activebackground="#2C2C2C",command=cancel,relief=FLAT) 695 | 696 | def cancel_btn_hover(event): 697 | cancel_btn.config(image=cancelbtnactive) 698 | 699 | def cancel_btn_unhover(event): 700 | cancel_btn.config(image=cancelbtnicon) 701 | 702 | cancel_btn.bind('',cancel_btn_hover) 703 | cancel_btn.bind('',cancel_btn_unhover) 704 | 705 | cancel_btn.place(x=300,y=230) 706 | return 707 | 708 | def remove(): 709 | if lstbx.size() == 0: 710 | return 711 | else: 712 | if lstbx.curselection() == (): 713 | note('Select an account first!','red') 714 | return 715 | else: 716 | selectindex = lstbx.curselection()[0] 717 | delname = lstbx.get(selectindex,last=None) 718 | for item in db: 719 | if item['name'] == delname: 720 | msg4 = 'Are you sure you want to delete "{}", this action cannot be reverted.'.format(delname) 721 | 722 | msgbwind = Toplevel() 723 | msgbwind.grab_set() 724 | msgbwind.geometry("450x175") 725 | msgbwind.configure(bg='#2C2C2C') 726 | msgbwind.title('Guava - Delete Confirmation') 727 | msgbwind.resizable(0,0) 728 | centerwind(msgbwind) 729 | 730 | msgbimg = Label(msgbwind,bg="#2C2C2C",borderwidth=0) 731 | msgbimg.config(image=infomsgb) 732 | msgbimg.place(x=0,y=0) 733 | msgbding = threading.Thread(target=ahk.sound_play, args=(notifmp3path,)) 734 | msgbding.start() 735 | 736 | def btn1click(): 737 | db.remove(accounts.name == delname) 738 | fetch() 739 | notemsg = 'Account removed successfully!' 740 | note(notemsg) 741 | msgbwind.destroy() 742 | 743 | def btn2click(): 744 | notemsg = 'Operation Canceled!' 745 | note(notemsg) 746 | 747 | btn1 = Button(msgbwind,bg='#1E1E1E',fg='#C2C2C2' 748 | ,image=msgbbtn,borderwidth=0,activebackground='#1E1E1E' 749 | ,text='Yes',font=('Nexa Bold',12),justify=CENTER 750 | ,activeforeground='#C2C2C2',command=btn1click,compound=CENTER).place(x=175,y=115) 751 | 752 | btn2 = Button(msgbwind,bg='#1E1E1E',fg='#C2C2C2',image=msgbbtn,borderwidth=0,activebackground='#1E1E1E' 753 | ,text='No',font=('Nexa Bold',12),justify=CENTER 754 | ,activeforeground='#C2C2C2',command=btn2click,compound=CENTER).place(x=310,y=115) 755 | 756 | msglbl = Label(msgbwind,bg="#2C2C2C",font=('Nexa Light', 10) 757 | ,text=msg4,fg="#C2C2C2",wraplength=320,justify=LEFT).place(x=80,y=33) 758 | 759 | def openurl(site:str): 760 | if site == 'github': 761 | webbrowser.open('https://github.com/karimawii/Guava', new=0, autoraise=True) 762 | elif site == 'paypal': 763 | webbrowser.open('https://paypal.me/karimawi', new=0, autoraise=True) 764 | elif site == 'discord': 765 | if findapp('discord') == True: 766 | disurl = 'discord://' 767 | else: 768 | disurl = '' 769 | webbrowser.open(disurl+'https://discord.com/users/609230785769111554', new=0, autoraise=True) 770 | return 771 | 772 | def info(): 773 | 774 | infowindow = Toplevel() 775 | infowindow.grab_set() 776 | infowindow.geometry("394x411") 777 | infowindow.configure(bg='#2C2C2C') 778 | infowindow.title("Guava - Info") 779 | infowindow.resizable(0,0) 780 | centerwind(infowindow) 781 | 782 | #socials 783 | socialsbglbl = Label(infowindow,image=socialsnversionbg,bg='#2C2C2C',borderwidth=0).place(x=31,y=345) 784 | 785 | #github 786 | def github_hover(event): 787 | githublbl.place(x=27,y=322) 788 | 789 | def github_unhover(event): 790 | githublbl.place_forget() 791 | 792 | githubbtn = Button(infowindow,image=github,bg='#1E1E1E',borderwidth=0,activebackground='#1E1E1E' 793 | ,command=lambda: openurl('github')) 794 | githublbl = Label(infowindow,image=githubhoverlabel,bg='#2C2C2C',borderwidth=0) 795 | githubbtn.bind('',github_hover) 796 | githubbtn.bind('',github_unhover) 797 | githubbtn.place(x=51-7,y=351) 798 | #github 799 | 800 | #paypal 801 | def paypal_hover(event): 802 | paypallbl.place(x=67,y=322) 803 | 804 | def paypal_unhover(event): 805 | paypallbl.place_forget() 806 | 807 | paypalbtn = Button(infowindow,image=paypal,bg='#1E1E1E',borderwidth=0,activebackground='#1E1E1E' 808 | ,command=lambda: openurl('paypal')) 809 | paypallbl = Label(infowindow,image=paypalhoverlabel,bg='#2C2C2C',borderwidth=0) 810 | paypalbtn.bind('',paypal_hover) 811 | paypalbtn.bind('',paypal_unhover) 812 | paypalbtn.place(x=91-7,y=351) 813 | #paypal 814 | 815 | #discord 816 | def discord_hover(event): 817 | discordlbl.place(x=107,y=322) 818 | 819 | def discord_unhover(event): 820 | discordlbl.place_forget() 821 | 822 | discordbtn = Button(infowindow,image=discord,bg='#1E1E1E',borderwidth=0,activebackground='#1E1E1E' 823 | ,command=lambda: openurl('discord')) 824 | discordlbl = Label(infowindow,image=discordhoverlabel,bg='#2C2C2C',borderwidth=0) 825 | discordbtn.bind('',discord_hover) 826 | discordbtn.bind('',discord_unhover) 827 | discordbtn.place(x=131-7,y=353) 828 | #discord 829 | 830 | #version 831 | versionlbl = Label(infowindow,bg="#1E1E1E",font=('Nexa Light',11),text='v1.0.0 - Beta',justify=CENTER,fg="#C2C2C2") 832 | versionlbl.place(x=240,y=351.5) 833 | #socials 834 | 835 | #flag 836 | flaglbl = Label(infowindow,image=flag,bg='#2C2C2C',borderwidth=0).place(x=167,y=311) 837 | 838 | y_offset = 40 839 | aboutframe = Frame(infowindow,width=307,height=205,bg='#1E1E1E',relief=SUNKEN,borderwidth=0) 840 | aboutbg = Label(infowindow,image=aboutbgimg,bg='#2C2C2C',borderwidth=0).place(x=31,y=40+y_offset) 841 | aboutframe.place(x=45,y=55+y_offset) 842 | aboutframe.lift() 843 | 844 | logosframe = Frame(infowindow,width=327,height=57,bg='#1E1E1E',relief=SUNKEN,borderwidth=0) 845 | logosframe.place(x=32,y=15) 846 | logos = Label(logosframe,image=logosimg,bg='#2C2C2C',width=327,height=57).place(x=0,y=0) 847 | 848 | def trough_link(event): 849 | # print(v.get()[0]) 850 | y_add = v.get()[0]*275.5555555555555 851 | trough.place_configure(x=349,y=50+y_offset+y_add) 852 | return 853 | 854 | v=Scrollbar(aboutframe, orient='vertical',activebackground='#1E1E1E',bg='#1E1E1E',bd=0 855 | ,highlightbackground='#1E1E1E',highlightcolor='#1E1E1E' 856 | ,troughcolor='#1E1E1E',width=0,relief=FLAT, 857 | highlightthickness=0,elementborderwidth=0,command=trough_link) 858 | v.place(x=1000,y=0) 859 | v.lower() 860 | 861 | trough = Label(infowindow,image=scrolltrough,bg='#1E1E1E',name='trough') 862 | trough.place(x=349,y=50+y_offset) 863 | 864 | 865 | about=Text(aboutframe, font=("Nexa Light",10), yscrollcommand=v.set 866 | ,width=37,height=13,selectbackground='#1E1E1E',selectforeground='#C2C2C2' 867 | ,bg='#1E1E1E',fg='#C2C2C2',wrap=WORD,borderwidth=0,relief=FLAT) 868 | 869 | about.tag_configure("about_tag", justify='center') 870 | 871 | 872 | mytext = "Hey, my name is Karim, the developer of Guava and I'm from Egypt.\n\nI created this project because.. well I play League of Legends but also, I wanted to git gud in coding as well, I may be good at creating modern UI designs and styling stuff, but when it comes to coding my code used to come out not so pretty.\n\nSo I started looking for projects I can do that can heavily challenge my abilities and at the same time be something that I’m passionate about so I don’t quit (lmao).\n\nThat’s why I started developing guava, we were learning Tkinter in the Python course in college, so I wondered what else can I do with it, turns out, not much in today’s standards, since this library is so old, it looks kinda crap, but it has so much funcion in it and I could very well feel the potential, I wanted to push it to the limits, and design a GUI that looks modern and functions well, that’s where Guava came to my mind.\n\nBtw don’t ask me why I named it Guava, idk, I just like the fruit, maybe cause it has a lot of seeds in it just like the switcher can contain a lot of accounts (wow so dumb), I really have no idea, I also love yellow so why not.\n" 873 | about.insert(END, mytext) 874 | about.config(state='disabled',cursor='') 875 | 876 | 877 | v.config(command=about.yview) 878 | about.tag_add("about_tag", "1.0", "end") 879 | about.place(x=0,y=0) 880 | about.lift() 881 | about.bind('',trough_link) 882 | 883 | 884 | return 885 | 886 | def copy(): 887 | if lstbx.size() == 0: 888 | return 889 | else: 890 | if lstbx.curselection() == (): 891 | note('Select an account first!','red') 892 | return 893 | else: 894 | selectindex = lstbx.curselection()[0] 895 | copyname = lstbx.get(selectindex,last=None) 896 | copyaccount = db.get(accounts.name == copyname) 897 | copyname = copyaccount['name'] 898 | copyusrname = copyaccount['username'] 899 | copypassw = copyaccount['password'] 900 | 901 | for item in configdb: 902 | try: 903 | Cformat = configdb.get(Query().copy_format == item['copy_format']) 904 | currentCformat = Cformat['copy_format'] 905 | except: 906 | pass 907 | 908 | format = currentCformat.replace('%u%',copyusrname).replace('%p%',copypassw).replace('%U%',copyusrname).replace('%P%',copypassw).replace('\\n','\n') 909 | ppc.copy(format) 910 | 911 | copybtn.unbind('') 912 | copybtn.unbind('') 913 | copybtn.config(image=copybtnsuccess) 914 | 915 | ding = threading.Thread(target=ahk.sound_play, args=(mp3path,)) 916 | ding.start() 917 | copylbl.place_forget() 918 | 919 | def returncopy(): 920 | copybtn.config(image=copybtnicon) 921 | copybtn.bind('',copybtn_onEnter) 922 | copybtn.bind('',copybtn_onLeave) 923 | return 924 | 925 | root.after(2500,returncopy) 926 | 927 | 928 | return 929 | 930 | def settings(): 931 | 932 | settwindow = Toplevel() 933 | settwindow.grab_set() 934 | settwindow.geometry("360x336") 935 | settwindow.configure(bg='#2C2C2C') 936 | settwindow.title("Guava - Settings") 937 | settwindow.resizable(0,0) 938 | centerwind(settwindow) 939 | 940 | 941 | #GENERAL 942 | def generaltab(): 943 | for i in range(1,15): 944 | try: 945 | settwindow.nametowidget('datatab'+str(i)).destroy() 946 | settwindow.nametowidget('datatab'+str(i)).destroy() 947 | except: 948 | pass 949 | 950 | for i in range(1,15): 951 | try: 952 | settwindow.nametowidget('copytab'+str(i)).destroy() 953 | settwindow.nametowidget('copytab'+str(i)).destroy() 954 | except: 955 | pass 956 | 957 | SettTabs.config(image=tabsgeneral) 958 | Gtab_btn.config(bg='#1E1E1E',activebackground='#1E1E1E') 959 | Dtab_btn.config(bg='#535353',activebackground='#535353') 960 | Ctab_btn.config(bg='#535353',activebackground='#535353') 961 | 962 | #name widgets 963 | 964 | def toggle_check(): 965 | if configdb.contains(Query().disable_startup_msg == 'true') == True: 966 | DSMtog.config(image=toggleon) 967 | else: 968 | DSMtog.config(image=toggleoff) 969 | 970 | if configdb.contains(Query().always_showpass == 'true') == True: 971 | ALStog.config(image=toggleon) 972 | else: 973 | ALStog.config(image=toggleoff) 974 | 975 | if configdb.contains(Query().exit_after_login == 'true') == True: 976 | EALtog.config(image=toggleon) 977 | else: 978 | EALtog.config(image=toggleoff) 979 | 980 | def toggle_tog(togname:str): 981 | 982 | if togname == 'DSM': 983 | if configdb.contains(Query().disable_startup_msg == 'true') == True: 984 | configdb.upsert({'disable_startup_msg':'false'}, Query().disable_startup_msg.exists()) 985 | else: 986 | configdb.upsert({'disable_startup_msg':'true'}, Query().disable_startup_msg.exists()) 987 | 988 | elif togname == 'ALS': 989 | if configdb.contains(Query().always_showpass == 'true') == True: 990 | configdb.upsert({'always_showpass':'false'}, Query().always_showpass.exists()) 991 | else: 992 | configdb.upsert({'always_showpass':'true'}, Query().always_showpass.exists()) 993 | 994 | elif togname == 'EAL': 995 | if configdb.contains(Query().exit_after_login == 'true') == True: 996 | configdb.upsert({'exit_after_login':'false'}, Query().exit_after_login.exists()) 997 | else: 998 | configdb.upsert({'exit_after_login':'true'}, Query().exit_after_login.exists()) 999 | 1000 | toggle_check() 1001 | 1002 | 1003 | DSMtog = Button(settwindow,name='generaltab1',bg='#1E1E1E',borderwidth=0,activebackground='#1E1E1E' 1004 | ,activeforeground='#1E1E1E',command=lambda: toggle_tog('DSM')) 1005 | DSMlbl = Label(settwindow,name='generaltab2',text='Disable Startup Message' 1006 | ,font=('Nexa Light',11),justify=LEFT,bg='#1E1E1E',fg='#C2C2C2').place(x=30,y=63) 1007 | DSMdesclbl = Label(settwindow,name='generaltab3',text='disables the “Double click to login” message\nthat appears when Guava starts' 1008 | ,font=('Nexa Bold',7),justify=LEFT,bg='#1E1E1E',fg='#535353').place(x=30,y=85) 1009 | 1010 | ALStog = Button(settwindow,name='generaltab4',bg='#1E1E1E',borderwidth=0,activebackground='#1E1E1E' 1011 | ,activeforeground='#1E1E1E',command=lambda: toggle_tog('ALS')) 1012 | ALSlbl = Label(settwindow,name='generaltab5',text='Always Show Passwords' 1013 | ,font=('Nexa Light',11),justify=LEFT,bg='#1E1E1E',fg='#C2C2C2').place(x=30,y=63+90) 1014 | ALSdesclbl = Label(settwindow,name='generaltab6',text='will always show passwords when editing or\nadding accounts, this is also linked to the “eye”\nicon on both pop-ups' 1015 | ,font=('Nexa Bold',7),justify=LEFT,bg='#1E1E1E',fg='#535353').place(x=30,y=85+90) 1016 | 1017 | EALtog = Button(settwindow,name='generaltab7',bg='#1E1E1E',borderwidth=0,activebackground='#1E1E1E' 1018 | ,activeforeground='#1E1E1E',command=lambda: toggle_tog('EAL')) 1019 | EALlbl = Label(settwindow,name='generaltab8',text='Close After Login' 1020 | ,font=('Nexa Light',11),justify=LEFT,bg='#1E1E1E',fg='#C2C2C2').place(x=30,y=63+90+95) 1021 | EALdesclbl = Label(settwindow,name='generaltab9',text='will close Guava after the login is successful' 1022 | ,font=('Nexa Bold',7),justify=LEFT,bg='#1E1E1E',fg='#535353').place(x=30,y=85+90+95) 1023 | 1024 | toggle_check() 1025 | 1026 | DSMtog.place(x=280,y=0+30+30+20) 1027 | ALStog.place(x=280,y=20+130+20) 1028 | EALtog.place(x=280,y=40+230-30+20) 1029 | 1030 | 1031 | #DATA 1032 | def datatab(): 1033 | for i in range(1,15): 1034 | try: 1035 | settwindow.nametowidget('generaltab'+str(i)).destroy() 1036 | settwindow.nametowidget('generaltab'+str(i)).destroy() 1037 | except: 1038 | pass 1039 | 1040 | for i in range(1,15): 1041 | try: 1042 | settwindow.nametowidget('copytab'+str(i)).destroy() 1043 | settwindow.nametowidget('copytab'+str(i)).destroy() 1044 | except: 1045 | pass 1046 | 1047 | SettTabs.config(image=tabsdata) 1048 | Dtab_btn.config(bg='#1E1E1E',activebackground='#1E1E1E') 1049 | Gtab_btn.config(bg='#535353',activebackground='#535353') 1050 | Ctab_btn.config(bg='#535353',activebackground='#535353') 1051 | 1052 | #name widgets 1053 | 1054 | def importfunc(): 1055 | settwindow.withdraw() 1056 | root.withdraw() 1057 | restorefilepath = easygui.fileopenbox(title='Guava - Choose Restore File',default='C:\\*.json',filetypes='*.json') 1058 | root.deiconify() 1059 | root.lift() 1060 | settwindow.deiconify() 1061 | settwindow.lift() 1062 | 1063 | if restorefilepath == None: 1064 | return 1065 | else: 1066 | importdb = TinyDB(restorefilepath, sort_keys=True, indent=4, separators=(',', ': ')) 1067 | 1068 | importlstbx = Listbox(settwindow,name='datatab10',bg = "#535353", font =('Nexa Light',9),justify=CENTER 1069 | ,fg="black",highlightthickness=0,selectmode=SINGLE,width = 35 1070 | ,height= 10,activestyle=NONE,borderwidth=0,border=0,relief=FLAT 1071 | ,selectborderwidth=0,disabledforeground='#C2C2C2') 1072 | 1073 | importlstbx.delete(0,END) 1074 | impcurrentsize = 0 1075 | 1076 | for item in importdb: 1077 | impcurrentsize += 1 1078 | importlstbx.insert(0,item['name']) 1079 | 1080 | if impcurrentsize == 0: 1081 | settwindow.destroy() 1082 | note('Invalid JSON Format') 1083 | return 1084 | 1085 | else: 1086 | def finalimport(): 1087 | msg4 = 'PLEASE EXPORT YOU CURRENT LIST FIRST!\nDo you want to add {} accounts to your existing list, or do you want to completely replace your list with this list'.format(impcurrentsize) 1088 | 1089 | msgbwind = Toplevel() 1090 | msgbwind.grab_set() 1091 | msgbwind.geometry("450x175") 1092 | msgbwind.configure(bg='#2C2C2C') 1093 | msgbwind.title('Guava - Import Confirmation') 1094 | msgbwind.resizable(0,0) 1095 | centerwind(msgbwind) 1096 | 1097 | msgbimg = Label(msgbwind,bg="#2C2C2C",borderwidth=0) 1098 | msgbimg.config(image=infomsgb) 1099 | msgbimg.place(x=0,y=0) 1100 | msgbding = threading.Thread(target=ahk.sound_play, args=(notifmp3path,)) 1101 | msgbding.start() 1102 | 1103 | def btn1click(): 1104 | failedaccs = 0 1105 | for item in importdb: 1106 | try: 1107 | dupname = db.get(accounts.name == item['name']) 1108 | except: 1109 | dupname = None 1110 | pass 1111 | 1112 | try: 1113 | dupusrname = db.get(accounts.username == item['username']) 1114 | if dupusrname['username'] == item['username']: 1115 | failedaccs += 1 1116 | except: 1117 | dupusrname = None 1118 | pass 1119 | 1120 | if dupname != None and dupusrname == None: 1121 | importname = item['name']+'(1)' 1122 | importusrname = item['username'] 1123 | importpassw = item['password'] 1124 | 1125 | db.insert({'name':importname,'username':importusrname,'password':importpassw}) 1126 | 1127 | elif dupname == None and dupusrname == None: 1128 | importname = item['name'] 1129 | importusrname = item['username'] 1130 | importpassw = item['password'] 1131 | 1132 | db.insert({'name':importname,'username':importusrname,'password':importpassw}) 1133 | 1134 | if failedaccs == 0: 1135 | notemsg = '{} accounts added successfully!'.format(impcurrentsize) 1136 | note(notemsg) 1137 | msgbwind.destroy() 1138 | settwindow.destroy() 1139 | elif failedaccs > 0: 1140 | msgbmsg = '{} accounts were imported, {} failed to import due to them having the same username as ones from the existing list'.format(impcurrentsize-failedaccs,failedaccs) 1141 | msgb(type='info',msg=msgbmsg,title='Guava - Import Completed!',optionright='Ok') 1142 | msgbwind.destroy() 1143 | settwindow.destroy() 1144 | msgbwind.destroy() 1145 | 1146 | fetch() 1147 | 1148 | def btn2click(): 1149 | shutil.copyfile(restorefilepath,r'accounts.json') 1150 | notemsg = 'Accounts replaced successfully!' 1151 | note(notemsg) 1152 | msgbwind.destroy() 1153 | settwindow.destroy() 1154 | fetch() 1155 | 1156 | btn1 = Button(msgbwind,bg='#1E1E1E',fg='#C2C2C2' 1157 | ,image=msgbbtn,borderwidth=0,activebackground='#1E1E1E' 1158 | ,text='Add',font=('Nexa Bold',12),justify=CENTER 1159 | ,activeforeground='#C2C2C2',command=btn1click,compound=CENTER).place(x=175,y=115) 1160 | 1161 | btn2 = Button(msgbwind,bg='#1E1E1E',fg='#C2C2C2',image=msgbbtn,borderwidth=0,activebackground='#1E1E1E' 1162 | ,text='Replace',font=('Nexa Bold',12),justify=CENTER 1163 | ,activeforeground='#C2C2C2',command=btn2click,compound=CENTER).place(x=310,y=115) 1164 | 1165 | msglbl = Label(msgbwind,bg="#2C2C2C",font=('Nexa Light', 10) 1166 | ,text=msg4,fg="#C2C2C2",wraplength=320,justify=LEFT).place(x=80,y=30) 1167 | 1168 | def cancel(): 1169 | settwindow.destroy() 1170 | notemsg = 'Operation Canceled!' 1171 | note(notemsg) 1172 | 1173 | cancel_btn = Button(settwindow,name='datatab9',image=cancelbtnicon,bg="#1E1E1E",borderwidth=0 1174 | ,activebackground="#1E1E1E",command=cancel,relief=FLAT) 1175 | 1176 | def cancel_btn_hover(event): 1177 | cancel_btn.config(image=cancelbtnactive) 1178 | 1179 | def cancel_btn_unhover(event): 1180 | cancel_btn.config(image=cancelbtnicon) 1181 | 1182 | cancel_btn.bind('',cancel_btn_hover) 1183 | cancel_btn.bind('',cancel_btn_unhover) 1184 | 1185 | cancel_btn.place(x=140+100,y=261) 1186 | 1187 | submimport_btn = Button(settwindow,name='datatab8',image=submitbtnicon,bg="#1E1E1E",borderwidth=0 1188 | ,activebackground="#1E1E1E",command=finalimport,relief=FLAT) 1189 | 1190 | def submimport_btn_hover(event): 1191 | submimport_btn.config(image=submitbtnactive) 1192 | 1193 | def submimport_btn_unhover(event): 1194 | submimport_btn.config(image=submitbtnicon) 1195 | 1196 | submimport_btn.bind('',submimport_btn_hover) 1197 | submimport_btn.bind('',submimport_btn_unhover) 1198 | 1199 | submimport_btn.place(x=170+100,y=250.5) 1200 | 1201 | 1202 | importlstbx.config(state=DISABLED) 1203 | importlstbx.place(x=40,y=65) 1204 | 1205 | def exportfunc(): 1206 | settwindow.withdraw() 1207 | root.withdraw() 1208 | backupdirpath = easygui.diropenbox(title='Guava - Choose Backup Destination',default=r'C://') 1209 | root.deiconify() 1210 | root.lift() 1211 | settwindow.deiconify() 1212 | settwindow.lift() 1213 | copies = 0 1214 | 1215 | for i in range(1,101): 1216 | if os.path.isfile(backupdirpath+r'\backup ({}).json'.format(str(i))) == True: 1217 | copies += i+1 1218 | else: 1219 | break 1220 | 1221 | if os.path.isfile(backupdirpath+r'\backup.json') == True and os.path.isfile(backupdirpath+r'\backup (1).json') == False: 1222 | bkpname = r'\backup (1).json' 1223 | elif copies != 0: 1224 | bkpname = r'\backup ({}).json'.format(copies) 1225 | elif copies == 0: 1226 | bkpname = r'\backup.json' 1227 | 1228 | shutil.copyfile(r'accounts.json',backupdirpath+bkpname) 1229 | notemsg = 'Accounts backuped successfully!' 1230 | note(notemsg) 1231 | return 1232 | 1233 | importlstbxbglbl = Label(settwindow,name='datatab7',bg="#1E1E1E",image=importlistboxbg).place(x=35,y=52) 1234 | importlstbxlbl = Label(settwindow,name='datatab6',bg="#535353" 1235 | ,fg='#767373',text="Imports List",font=('Nexa Bold', 12)).place(x=135,y=110+10) 1236 | importlstbxlbl2 = Label(settwindow,name='datatab5',bg="#535353" 1237 | ,fg='#767373',text="(There's nothing imported yet!)",font=('Nexa Bold', 8)).place(x=100,y=133+10) 1238 | 1239 | importtkbtn = Button(settwindow,name='datatab3',image=importbtn,bg="#1E1E1E",borderwidth=0 1240 | ,activebackground="#1E1E1E",command=importfunc) 1241 | importtklbl = Label(settwindow,name='datatab4',image=importhoverlbl,bg="#1E1E1E") 1242 | 1243 | def importtkbtn_onEnter(event): 1244 | importtkbtn.config(image=importhover) 1245 | importtklbl.place(x=140,y=261) 1246 | importtklbl.lift() 1247 | 1248 | def importtkbtn_onLeave(event): 1249 | importtkbtn.config(image=importbtn) 1250 | importtklbl.place_forget() 1251 | 1252 | importtkbtn.bind('',importtkbtn_onEnter) 1253 | importtkbtn.bind('',importtkbtn_onLeave) 1254 | 1255 | importtkbtn.place(x=35,y=255) 1256 | 1257 | 1258 | exporttkbtn = Button(settwindow,name='datatab1',image=exportbtn,bg="#1E1E1E",borderwidth=0 1259 | ,activebackground="#1E1E1E",command=exportfunc) 1260 | exporttklbl = Label(settwindow,name='datatab2',image=exporthoverlbl,bg="#1E1E1E") 1261 | 1262 | def exporttkbtn_onEnter(event): 1263 | exporttkbtn.config(image=exporthover) 1264 | exporttklbl.place(x=140,y=261) 1265 | exporttklbl.lift() 1266 | 1267 | def exporttkbtn_onLeave(event): 1268 | exporttkbtn.config(image=exportbtn) 1269 | exporttklbl.place_forget() 1270 | 1271 | exporttkbtn.bind('',exporttkbtn_onEnter) 1272 | exporttkbtn.bind('',exporttkbtn_onLeave) 1273 | 1274 | exporttkbtn.place(x=35+50,y=255) 1275 | 1276 | #COPY 1277 | def copytab(): 1278 | for i in range(1,15): 1279 | try: 1280 | settwindow.nametowidget('generaltab'+str(i)).destroy() 1281 | settwindow.nametowidget('generaltab'+str(i)).destroy() 1282 | except: 1283 | pass 1284 | 1285 | for i in range(1,15): 1286 | try: 1287 | settwindow.nametowidget('datatab'+str(i)).destroy() 1288 | settwindow.nametowidget('datatab'+str(i)).destroy() 1289 | except: 1290 | pass 1291 | 1292 | SettTabs.config(image=tabscopy) 1293 | Ctab_btn.config(bg='#1E1E1E',activebackground='#1E1E1E') 1294 | Dtab_btn.config(bg='#535353',activebackground='#535353') 1295 | Gtab_btn.config(bg='#535353',activebackground='#535353') 1296 | 1297 | #name widgets 1298 | copyformattitle = Label(settwindow,name='copytab1',bg='#1E1E1E',borderwidth=0,text='Copy Format',font=('Nexa Light', 12),fg='#C2C2C2').place(x=130,y=60) 1299 | copyformattitle = Label(settwindow,name='copytab2',bg='#1E1E1E',borderwidth=0 1300 | ,text='Edit the format of text that gets copied\n using the copy button',font=('Nexa Bold', 7),fg='#535353').place(x=90,y=85) 1301 | 1302 | formatentrybglbl = Label(settwindow,name='copytab3',bg='#1E1E1E',borderwidth=0,image=copyformatentrybg).place(x=35,y=118) 1303 | formatvar = StringVar() 1304 | formatentry = Entry(settwindow,name='copytab4',textvariable = formatvar,font = ('Nexa Light',13) 1305 | ,width=24,relief=FLAT,bg='#535353',fg='#C2C2C2',insertbackground='#C2C2C2',disabledbackground='#535353',disabledforeground='#C2C2C2') 1306 | 1307 | formatswitchbg = Label(settwindow,name='copytab5',bg='#1E1E1E',borderwidth=0) 1308 | 1309 | for item in configdb: 1310 | try: 1311 | Cformat = configdb.get(Query().copy_format == item['copy_format']) 1312 | currentCformat = Cformat['copy_format'] 1313 | except: 1314 | pass 1315 | 1316 | def formatcheck(custom:str = currentCformat): 1317 | if configdb.contains(Query().copy_format_type == 'discord') == False and configdb.contains(Query().copy_format_type == 'plain') == False and configdb.contains(Query().copy_format_type == 'custom') == False: 1318 | configdb.insert({'copy_format_type':'discord'}) 1319 | configdb.insert({'copy_format':'```\nUsername: %u%\nPassword: %p%\n```'}) 1320 | 1321 | if configdb.contains(Query().copy_format_type == 'discord') == True: 1322 | configdb.upsert({'copy_format':'```\nUsername: %u%\nPassword: %p%\n```'}, Query().copy_format.exists()) 1323 | formatswitchbg.config(image=formattabdiscord) 1324 | formatentry.insert(0,'```\nUsername: %u%\nPassword: %p%\n```'.replace('\n','\\n')) 1325 | formatentry.config(state=DISABLED,cursor='no') 1326 | customtabbtn.config(bg='#535353',activebackground='#535353') 1327 | discordtabbtn.config(bg='#161616',activebackground='#161616') 1328 | plaintabbtn.config(bg='#535353',activebackground='#535353') 1329 | 1330 | elif configdb.contains(Query().copy_format_type == 'plain') == True: 1331 | configdb.upsert({'copy_format':'Username: %u%\nPassword: %p%'}, Query().copy_format.exists()) 1332 | formatswitchbg.config(image=formattabplain) 1333 | formatentry.insert(0,'Username: %u%\nPassword: %p%'.replace('\n','\\n')) 1334 | formatentry.config(state=DISABLED,cursor='no') 1335 | discordtabbtn.config(bg='#535353',activebackground='#535353') 1336 | plaintabbtn.config(bg='#161616',activebackground='#161616') 1337 | customtabbtn.config(bg='#535353',activebackground='#535353') 1338 | 1339 | elif configdb.contains(Query().copy_format_type == 'custom') == True: 1340 | 1341 | if custom == '' or custom == ' ': 1342 | msgb(title='Guava - No Input Provided',type='error',msg='Copy Format is Empty!',optionright='Ok') 1343 | else: 1344 | configdb.upsert({'copy_format':custom}, Query().copy_format.exists()) 1345 | formatswitchbg.config(image=formattabcustom) 1346 | formatentry.delete(0,END) 1347 | formatentry.insert(0,custom.replace('\n','\\n')) 1348 | discordtabbtn.config(bg='#535353',activebackground='#535353') 1349 | customtabbtn.config(bg='#161616',activebackground='#161616') 1350 | plaintabbtn.config(bg='#535353',activebackground='#535353') 1351 | def customcheck(): 1352 | def customtabsubmit(): 1353 | entrystring = formatvar.get() 1354 | configdb.upsert({'copy_format':entrystring}, Query().copy_format.exists()) 1355 | settwindow.destroy() 1356 | 1357 | submit_btn = Button(settwindow,name='copytab6',image=submitbtnicon,bg="#1E1E1E",borderwidth=0 1358 | ,activebackground="#1E1E1E",command=customtabsubmit,relief=FLAT) 1359 | 1360 | copytabinstructions = Label(settwindow,name='copytab11',bg='#1E1E1E',borderwidth=0 1361 | ,text='*Use %u% for username, %p% for password and \n for a new line (aka Enter ⏎)',font=('Nexa Bold', 8),justify=LEFT,fg='#535353').place(x=40,y=205) 1362 | 1363 | def submit_btn_hover(event): 1364 | submit_btn.config(image=submitbtnactive) 1365 | 1366 | def submit_btn_unhover(event): 1367 | submit_btn.config(image=submitbtnicon) 1368 | 1369 | submit_btn.bind('',submit_btn_hover) 1370 | submit_btn.bind('',submit_btn_unhover) 1371 | 1372 | submit_btn.place(x=275,y=260) 1373 | 1374 | return 1375 | customcheck() 1376 | def customtab(): 1377 | configdb.upsert({'copy_format_type':'custom'}, Query().copy_format_type.exists()) 1378 | formatswitchbg.config(image=formattabcustom) 1379 | formatentry.config(state=NORMAL,cursor='') 1380 | formatentry.delete(0,END) 1381 | configdb.upsert({'copy_format':currentCformat}, Query().copy_format.exists()) 1382 | formatentry.insert(0,currentCformat.replace('\n','\\n')) 1383 | formatentry.focus_set() 1384 | discordtabbtn.config(bg='#535353',activebackground='#535353') 1385 | customtabbtn.config(bg='#161616',activebackground='#161616') 1386 | plaintabbtn.config(bg='#535353',activebackground='#535353') 1387 | 1388 | def customtabsubmit(): 1389 | entrystring = formatvar.get() 1390 | formatcheck(entrystring) 1391 | settwindow.destroy() 1392 | 1393 | submit_btn = Button(settwindow,name='copytab6',image=submitbtnicon,bg="#1E1E1E",borderwidth=0 1394 | ,activebackground="#1E1E1E",command=customtabsubmit,relief=FLAT) 1395 | 1396 | copytabinstructions = Label(settwindow,name='copytab11',bg='#1E1E1E',borderwidth=0 1397 | ,text='*Use %u% for username, %p% for password and \n for a new line (aka Enter ⏎)',font=('Nexa Bold', 8),justify=LEFT,fg='#535353').place(x=40,y=205) 1398 | 1399 | def submit_btn_hover(event): 1400 | submit_btn.config(image=submitbtnactive) 1401 | 1402 | def submit_btn_unhover(event): 1403 | submit_btn.config(image=submitbtnicon) 1404 | 1405 | submit_btn.bind('',submit_btn_hover) 1406 | submit_btn.bind('',submit_btn_unhover) 1407 | 1408 | submit_btn.place(x=275,y=260) 1409 | 1410 | return 1411 | 1412 | def discordtab(): 1413 | configdb.upsert({'copy_format_type':'discord'}, Query().copy_format_type.exists()) 1414 | try: 1415 | settwindow.nametowidget('copytab6').destroy() 1416 | settwindow.nametowidget('copytab11').destroy() 1417 | except: 1418 | pass 1419 | formatentry.config(state=NORMAL,cursor='') 1420 | formatentry.delete(0,END) 1421 | formatswitchbg.config(image=formattabdiscord) 1422 | discordtabbtn.config(bg='#161616',activebackground='#161616') 1423 | plaintabbtn.config(bg='#535353',activebackground='#535353') 1424 | customtabbtn.config(bg='#535353',activebackground='#535353') 1425 | formatcheck() 1426 | return 1427 | 1428 | def plaintab(): 1429 | configdb.upsert({'copy_format_type':'plain'}, Query().copy_format_type.exists()) 1430 | try: 1431 | settwindow.nametowidget('copytab6').destroy() 1432 | settwindow.nametowidget('copytab11').destroy() 1433 | except: 1434 | pass 1435 | formatentry.config(state=NORMAL,cursor='') 1436 | formatentry.delete(0,END) 1437 | formatswitchbg.config(image=formattabplain) 1438 | discordtabbtn.config(bg='#535353',activebackground='#535353') 1439 | plaintabbtn.config(bg='#161616',activebackground='#161616') 1440 | customtabbtn.config(bg='#535353',activebackground='#535353') 1441 | formatcheck() 1442 | return 1443 | 1444 | customtabbtn = Button(settwindow,name='copytab7',bg='#535353',fg='#767373',borderwidth=0,activebackground='#535353' 1445 | ,text='Custom',font=('Nexa Bold',8),justify=CENTER,activeforeground='#767373',command=customtab) 1446 | 1447 | discordtabbtn = Button(settwindow,name='copytab8',bg='#535353',fg='#767373',borderwidth=0,activebackground='#535353' 1448 | ,text='Discord',font=('Nexa Bold',8),justify=CENTER,activeforeground='#767373',command=discordtab) 1449 | 1450 | plaintabbtn = Button(settwindow,name='copytab9',bg='#535353',fg='#767373',borderwidth=0,activebackground='#535353' 1451 | ,text='Plain Text',font=('Nexa Bold',8),justify=CENTER,activeforeground='#767373',command=plaintab) 1452 | 1453 | formatcheck() 1454 | formatentry.place(x=43,y=127) 1455 | formatswitchbg.place(x=35,y=170) 1456 | discordtabbtn.place(x=60,y=171) 1457 | plaintabbtn.place(x=60+90,y=171) 1458 | customtabbtn.place(x=60+192,y=171) 1459 | 1460 | 1461 | #Tab Buttons 1462 | SettTabs = Label(settwindow,bg="#2C2C2C",borderwidth=0) 1463 | Gtab_btn = Button(settwindow,bg='#535353',fg='#767373',borderwidth=0,activebackground='#535353' 1464 | ,text='General',font=('Nexa Bold',9),justify=CENTER,activeforeground='#767373',command=generaltab) 1465 | Dtab_btn = Button(settwindow,bg='#535353',fg='#767373',borderwidth=0,activebackground='#535353' 1466 | ,text='Data',font=('Nexa Bold',9),justify=CENTER,activeforeground='#767373',command=datatab) 1467 | Ctab_btn = Button(settwindow,bg='#535353',fg='#767373',borderwidth=0,activebackground='#535353' 1468 | ,text='Copy',font=('Nexa Bold',9),justify=CENTER,activeforeground='#767373',command=copytab) 1469 | 1470 | generaltab() 1471 | Gtab_btn.place(x=35,y=16) 1472 | Dtab_btn.place(x=128,y=16) 1473 | Ctab_btn.place(x=128+83,y=16) 1474 | SettTabs.pack(anchor=CENTER,pady=16) 1475 | 1476 | 1477 | 1478 | def login(event): 1479 | 1480 | if lstbx.curselection() == (): 1481 | return 1482 | if lstbx.curselection() != (): 1483 | 1484 | riotindex = lstbx.curselection()[0] 1485 | riotname = lstbx.get(riotindex,last=None) 1486 | account = db.get(accounts.name == riotname) 1487 | 1488 | if account['name'] == riotname: 1489 | loginname = account['name'] 1490 | loginusername = account['username'] 1491 | print(loginusername) 1492 | loginpassw = account['password'] 1493 | else: 1494 | print('Account not found in db') 1495 | return 1496 | 1497 | lstbx.config(state=DISABLED,cursor='no') 1498 | note('Logging in...!') 1499 | 1500 | si = subprocess.STARTUPINFO() 1501 | si.dwFlags |= subprocess.STARTF_USESHOWWINDOW 1502 | 1503 | subprocess.call("taskkill /f /im RiotClientCrashHandler.exe", startupinfo=si) 1504 | subprocess.call("taskkill /f /im RiotClientCrashHandler.exe", startupinfo=si) 1505 | subprocess.call("taskkill /f /im RiotClientServices.exe", startupinfo=si) 1506 | subprocess.call("taskkill /f /im RiotClientServices.exe", startupinfo=si) 1507 | subprocess.call("taskkill /f /im RiotClientUx.exe", startupinfo=si) 1508 | subprocess.call("taskkill /f /im RiotClientUx.exe", startupinfo=si) 1509 | subprocess.call("taskkill /f /im RiotClientUxRender.exe", startupinfo=si) 1510 | subprocess.call("taskkill /f /im RiotClientUxRender.exe", startupinfo=si) 1511 | subprocess.call("taskkill /f /im LeagueClient.exe", startupinfo=si) 1512 | subprocess.call("taskkill /f /im LeagueClient.exe", startupinfo=si) 1513 | subprocess.call("taskkill /f /im LeagueClientUx.exe", startupinfo=si) 1514 | subprocess.call("taskkill /f /im LeagueClientUx.exe", startupinfo=si) 1515 | 1516 | if findapp('league of legends') == True: 1517 | app.open('league of legends') 1518 | 1519 | found = 0 1520 | done = 0 1521 | logged_in = 0 1522 | 1523 | for i in range(60): 1524 | root.update() 1525 | riotwin = ahk.win_get(title = "Riot Client") 1526 | time.sleep(0.5) 1527 | try: 1528 | if riotwin.exist: 1529 | riotwin.activate() 1530 | riotwinLoc = riotwin.rect 1531 | riotwinX = riotwinLoc[0] 1532 | riotwinY = riotwinLoc[1] 1533 | riotwinX2 = riotwinX + (riotwinLoc[2] // 2) 1534 | riotwinY2 = riotwinY + riotwinLoc[3] 1535 | found = 1 1536 | break 1537 | except: 1538 | try: 1539 | leaguewin = ahk.win_get(title = "League of Legends") 1540 | if leaguewin.exist: 1541 | note('Please log out first!','red') 1542 | break 1543 | except: 1544 | pass 1545 | pass 1546 | 1547 | for i in range(60): 1548 | if found == 1: 1549 | root.update() 1550 | time.sleep(0.5) 1551 | riotlogo = ahk.image_search(image_path=r'riotlogo.png', 1552 | color_variation=70,upper_bound= [riotwinX,riotwinY],lower_bound = [riotwinX2,riotwinY2]) 1553 | if riotlogo != None: 1554 | #username 1555 | ahk.mouse_move(riotlogo[0]+55,riotlogo[1]+175,speed=0) 1556 | ahk.click() 1557 | ahk.type(loginusername) 1558 | #password 1559 | ahk.mouse_move(riotlogo[0]+55,riotlogo[1]+220,speed=0) 1560 | ahk.click() 1561 | ahk.type(loginpassw) 1562 | #loginbtn 1563 | ahk.mouse_move(riotlogo[0]+65,riotlogo[1]+530,speed=0) 1564 | ahk.click() 1565 | logged_in = 1 1566 | break 1567 | else: 1568 | logged_in = 0 1569 | note('Riot Client window not found','red') 1570 | break 1571 | 1572 | for i in range(60): 1573 | if logged_in == 1: 1574 | root.update() 1575 | time.sleep(0.5) 1576 | 1577 | playbtn = ahk.image_search(image_path=r'playbtn.png', 1578 | color_variation=70,upper_bound= [riotwinX,riotwinY],lower_bound = [riotwinX2,riotwinY2]) 1579 | 1580 | if playbtn != None: 1581 | ahk.mouse_move(playbtn[0]+120,playbtn[1]+23,speed=0) 1582 | ahk.click() 1583 | 1584 | try: 1585 | leaguewin = ahk.win_get(title = "League of Legends") 1586 | if leaguewin.exist: 1587 | note('Logged in successfully!') 1588 | done = 1 1589 | break 1590 | else: 1591 | break 1592 | except: 1593 | pass 1594 | else: 1595 | break 1596 | if done == 1: 1597 | if configdb.contains(Query().exit_after_login == 'true') == True: 1598 | configdb.upsert({'running':'false'}, Query().running.exists()) 1599 | exit() 1600 | else: 1601 | configdb.upsert({'exit_after_login':'false'}, Query().exit_after_login.exists()) 1602 | pass 1603 | else: 1604 | pass 1605 | else: 1606 | note('Game Not Found!','red') 1607 | 1608 | lstbx.config(state=NORMAL,cursor='') 1609 | return 1610 | 1611 | ###commands 1612 | 1613 | 1614 | #accicon 1615 | def count(no:int,x_offset:int = 0): 1616 | try: 1617 | root.nametowidget('counter').destroy() 1618 | except: 1619 | pass 1620 | 1621 | if no == 100: 1622 | finalcount = '99+' 1623 | 1624 | else: 1625 | finalcount = str(no) 1626 | 1627 | invisforcount = Label(name='counter',text=finalcount,font=('Quicksand SemiBold',8),bg='#C53131' 1628 | ,fg='#C2C2C2',borderwidth=0,justify=CENTER,anchor=CENTER) 1629 | # default = 0 1630 | # dbl digit = -2 1631 | # 99+ = -4 1632 | invisforcount.place(x=31+x_offset,y=43) 1633 | 1634 | accountsbglbl = Label(image=accountsiconbg,bg="#1E1E1E",borderwidth=0).place(x=0,y=0) 1635 | accountsiconlbl = Label(image=accountsicon,bg="#282828",width=69,height=73) 1636 | accountsiconlbl.place(x=0,y=0) 1637 | 1638 | 1639 | #accicon 1640 | 1641 | ######addbtn 1642 | 1643 | addbtn = Button(image=addbtnicon,bg="#1E1E1E",width=69,height=43,borderwidth=0,activebackground="#1E1E1E",command=addwind) 1644 | addlbl = Label(image=addhoverlbl,bg="#1E1E1E") 1645 | 1646 | def addbtn_onEnter(event): 1647 | addbtn.config(image=addbtniconactive) 1648 | addlbl.place(x=6,y=310) 1649 | addlbl.lift() 1650 | 1651 | def addbtn_onLeave(event): 1652 | addbtn.config(image=addbtnicon) 1653 | addlbl.place_forget() 1654 | 1655 | addbtn.bind('',addbtn_onEnter) 1656 | addbtn.bind('',addbtn_onLeave) 1657 | addbtn.place(x=0,y=83+5) 1658 | 1659 | #####addbtn 1660 | 1661 | #####rmvbtn 1662 | 1663 | removebtn = Button(image=removebtnicon,bg="#1E1E1E",width=69,height=43,borderwidth=0,activebackground="#1E1E1E",command=remove) 1664 | rmvlbl = Label(image=removehoverlbl,bg="#1E1E1E") 1665 | def removebtn_onEnter(event): 1666 | removebtn.config(image=removebtniconactive) 1667 | rmvlbl.place(x=6,y=310) 1668 | rmvlbl.lift() 1669 | 1670 | def removebtn_onLeave(event): 1671 | removebtn.config(image=removebtnicon) 1672 | rmvlbl.place_forget() 1673 | 1674 | 1675 | removebtn.place(x=0,y=136+5) 1676 | 1677 | #####rmvbtn 1678 | 1679 | #####edtbtn 1680 | 1681 | editbtn = Button(image=editbtnicon,bg="#1E1E1E",width=69,height=43,borderwidth=0,activebackground="#1E1E1E",command=editwind) 1682 | editlbl = Label(image=edithoverlbl,bg="#1E1E1E") 1683 | def editbtn_onEnter(event): 1684 | editbtn.config(image=editbtniconactive) 1685 | editlbl.place(x=6,y=310) 1686 | editlbl.lift() 1687 | 1688 | def editbtn_onLeave(event): 1689 | editbtn.config(image=editbtnicon) 1690 | editlbl.place_forget() 1691 | 1692 | editbtn.place(x=0,y=190+5) 1693 | 1694 | #####edtbtn 1695 | 1696 | #####copybtn 1697 | 1698 | copybtn = Button(image=copybtnicon,bg="#1E1E1E",width=69,height=43,borderwidth=0 1699 | ,activebackground="#1E1E1E",command=copy) 1700 | copylbl = Label(image=copyhoverlbl,bg="#1E1E1E") 1701 | 1702 | def copybtn_onEnter(event): 1703 | copybtn.config(image=copybtniconactive) 1704 | copylbl.place(x=6,y=310) 1705 | copylbl.lift() 1706 | 1707 | def copybtn_onLeave(event): 1708 | copybtn.config(image=copybtnicon) 1709 | copylbl.place_forget() 1710 | 1711 | copybtn.place(x=0,y=195+43+11) 1712 | 1713 | #####copybtn 1714 | 1715 | ####infbtn 1716 | 1717 | infobtn = Button(image=infobtnicon,bg="#1E1E1E",width=69,height=43,borderwidth=0,activebackground="#1E1E1E",command=info) 1718 | infolbl = Label(image=infohoverlbl,bg="#1E1E1E") 1719 | 1720 | def infobtn_onEnter(event): 1721 | infobtn.config(image=infobtniconactive) 1722 | infolbl.place(x=6,y=310) 1723 | infolbl.lift() 1724 | 1725 | 1726 | def infobtn_onLeave(event): 1727 | infobtn.config(image=infobtnicon) 1728 | infolbl.place_forget() 1729 | 1730 | infobtn.bind('',infobtn_onEnter) 1731 | infobtn.bind('',infobtn_onLeave) 1732 | 1733 | infobtn.place(x=0,y=380+5) 1734 | 1735 | ####infbtn 1736 | 1737 | ####setbtn 1738 | 1739 | settingsbtn = Button(image=settingsbtnicon,bg="#1E1E1E",width=69,height=43,borderwidth=0,activebackground="#1E1E1E",command=settings) 1740 | settingslbl = Label(image=settingshoverlbl,bg="#1E1E1E") 1741 | 1742 | def settingsbtn_onEnter(event): 1743 | settingsbtn.config(image=settingsbtniconactive) 1744 | settingslbl.place(x=6,y=310) 1745 | settingslbl.lift() 1746 | 1747 | def settingsbtn_onLeave(event): 1748 | settingsbtn.config(image=settingsbtnicon) 1749 | settingslbl.place_forget() 1750 | 1751 | settingsbtn.bind('',settingsbtn_onEnter) 1752 | settingsbtn.bind('',settingsbtn_onLeave) 1753 | 1754 | settingsbtn.place(x=0,y=440) 1755 | 1756 | ####setbtn 1757 | 1758 | sidebar.pack(side=LEFT) 1759 | 1760 | accountslbl = Label(root,bg="#2C2C2C",font=('Nexa Bold',20),image=accountslabelbg,text='Accounts',fg="#C2C2C2",compound=CENTER) 1761 | accountslbl.pack(anchor=N,pady=25) 1762 | 1763 | lstbximglabel = Label(root,bg="#2C2C2C",image=lstbximg) 1764 | lstbximglabel.place(x=108,y=96-11) 1765 | 1766 | lstbx = Listbox(root,bg = "#535353", font =('Nexa Light',14),justify=CENTER,fg="#C2C2C2",highlightthickness=0,selectmode=SINGLE, 1767 | width = 21,height= 12,selectbackground="#B5C531" 1768 | ,activestyle=NONE,borderwidth=0,highlightcolor="black" 1769 | ,selectforeground="black",border=0 1770 | ,relief=FLAT,selectborderwidth=0,exportselection=False) 1771 | lstbx.bind('',login) 1772 | lstbx.pack(anchor=CENTER) 1773 | 1774 | def fetch(): 1775 | 1776 | lstbx.delete(0,END) 1777 | currentsize = 0 1778 | 1779 | for item in db: 1780 | currentsize += 1 1781 | try: 1782 | lstbx.insert(0,item['name']) 1783 | except: 1784 | pass 1785 | 1786 | if lstbx.size() == 0: 1787 | removebtn.config(image=removebtndisabled,cursor='no',command=None,relief=SUNKEN) 1788 | removebtn.unbind('') 1789 | removebtn.unbind('') 1790 | 1791 | editbtn.config(image=editbtndisabled,cursor='no',command=None,relief=SUNKEN) 1792 | editbtn.unbind('') 1793 | editbtn.unbind('') 1794 | 1795 | copybtn.config(image=copybtndisabled,cursor='no',command=None,relief=SUNKEN) 1796 | copybtn.unbind('') 1797 | copybtn.unbind('') 1798 | else: 1799 | 1800 | editbtn.config(cursor='') 1801 | editbtn.bind('',editbtn_onEnter) 1802 | editbtn.bind('',editbtn_onLeave) 1803 | 1804 | removebtn.config(cursor='') 1805 | removebtn.bind('',removebtn_onEnter) 1806 | removebtn.bind('',removebtn_onLeave) 1807 | 1808 | copybtn.config(cursor='') 1809 | copybtn.bind('',copybtn_onEnter) 1810 | copybtn.bind('',copybtn_onLeave) 1811 | 1812 | 1813 | if currentsize == 0: 1814 | accountsiconlbl.config(image=accountsicon) 1815 | try: 1816 | root.nametowidget('counter').destroy() 1817 | except: 1818 | pass 1819 | pass 1820 | elif currentsize >= 1 and currentsize <= 9: 1821 | accountsiconlbl.config(image=counterbg1to9) 1822 | count(currentsize) 1823 | elif currentsize >= 10 and currentsize <= 99: 1824 | accountsiconlbl.config(image=counterbg10to99) 1825 | count(currentsize,-2) 1826 | elif currentsize >= 100: 1827 | accountsiconlbl.config(image=counterbg10to99) 1828 | count(100,-4) 1829 | 1830 | 1831 | fetch() 1832 | 1833 | if lstbx.size() != 0: 1834 | def notelmao(): 1835 | note('Double Click To Login!') 1836 | 1837 | if configdb.contains(Query().disable_startup_msg == 'true') == True or configdb.contains(Query().disable_startup_msg == 'false') == True: 1838 | if configdb.contains(Query().disable_startup_msg == 'true') == True: 1839 | pass 1840 | else: 1841 | root.after(1000,notelmao) 1842 | else: 1843 | configdb.insert({'disable_startup_msg':'false'}) 1844 | else: 1845 | pass 1846 | 1847 | def on_closing(): 1848 | configdb.upsert({'running':'false'}, Query().running.exists()) 1849 | exit() 1850 | 1851 | root.protocol("WM_DELETE_WINDOW", on_closing) 1852 | 1853 | root.mainloop() 1854 | --------------------------------------------------------------------------------